web/app/components/collab-logo.tsxblame
View source
9f470a71"use client";
9f470a72
9f470a73import { useId } from "react";
9f470a74
bf6031c5interface Props {
bf6031c6 size?: number;
bf6031c7}
bf6031c8
bf6031c9export function CollabLogo({ size = 24 }: Props) {
9f470a710 const id = useId();
9f470a711 const s = id.replace(/:/g, "");
9f470a712
bf6031c13 return (
9f470a714 <svg
9f470a715 className={`collab-logo-${s}`}
9f470a716 width={size}
9f470a717 height={size}
9f470a718 viewBox="0 0 64 64"
9f470a719 fill="none"
9f470a720 >
9f470a721 <style>{`
9f470a722 .collab-logo-${s} {
9f470a723 cursor: pointer;
9f470a724 transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
9f470a725 }
9f470a726 .collab-logo-${s}:hover,
9f470a727 .hover-row:hover .collab-logo-${s} {
9f470a728 transform: translateY(-2px);
9f470a729 }
9f470a730 .collab-logo-${s} .cb-bg {
9f470a731 transition: filter 0.6s ease;
9f470a732 }
9f470a733 .collab-logo-${s}:hover .cb-bg,
9f470a734 .hover-row:hover .collab-logo-${s} .cb-bg {
9f470a735 filter: brightness(0.9);
9f470a736 }
9f470a737 .collab-logo-${s} .cb-top {
9f470a738 transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
9f470a739 }
9f470a740 .collab-logo-${s}:hover .cb-top,
9f470a741 .hover-row:hover .collab-logo-${s} .cb-top {
9f470a742 transform: translate(-1.5px, -2px);
9f470a743 }
9f470a744 .collab-logo-${s} .cb-bottom {
9f470a745 transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1) 0.05s;
9f470a746 }
9f470a747 .collab-logo-${s}:hover .cb-bottom,
9f470a748 .hover-row:hover .collab-logo-${s} .cb-bottom {
9f470a749 transform: translate(1.5px, 2px);
9f470a750 }
9f470a751 `}</style>
9f470a752
9f470a753 <circle cx="32" cy="32" r="32" fill="var(--accent)" className="cb-bg" />
bf6031c54 {/* Top-left bubble — tail points left */}
bf6031c55 <path
9f470a756 className="cb-top"
bf6031c57 d="M9 16 C9 11, 14 8, 21 8 L35 8 C42 8, 47 11, 47 16 L47 24 C47 29, 42 32, 35 32 L19 32 L13 37 L13 32 C10 31, 9 29, 9 24 Z"
bf6031c58 fill="white"
bf6031c59 />
bf6031c60 {/* Bottom-right bubble — mirrored, tail points right */}
bf6031c61 <path
9f470a762 className="cb-bottom"
bf6031c63 d="M55 35 C55 30, 50 27, 43 27 L29 27 C22 27, 17 30, 17 35 L17 43 C17 48, 22 51, 29 51 L45 51 L51 56 L51 51 C54 50, 55 48, 55 43 Z"
bf6031c64 fill="white"
bf6031c65 opacity="0.65"
bf6031c66 />
bf6031c67 </svg>
bf6031c68 );
bf6031c69}