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 }
9f470a729 .collab-logo-${s} .cb-bg {
9f470a730 transition: filter 0.6s ease;
9f470a731 }
9f470a732 .collab-logo-${s}:hover .cb-bg,
9f470a733 .hover-row:hover .collab-logo-${s} .cb-bg {
9f470a734 filter: brightness(0.9);
9f470a735 }
9f470a736 .collab-logo-${s} .cb-top {
9f470a737 transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
9f470a738 }
9f470a739 .collab-logo-${s}:hover .cb-top,
9f470a740 .hover-row:hover .collab-logo-${s} .cb-top {
9f470a741 transform: translate(-1.5px, -2px);
9f470a742 }
9f470a743 .collab-logo-${s} .cb-bottom {
9f470a744 transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1) 0.05s;
9f470a745 }
9f470a746 .collab-logo-${s}:hover .cb-bottom,
9f470a747 .hover-row:hover .collab-logo-${s} .cb-bottom {
9f470a748 transform: translate(1.5px, 2px);
9f470a749 }
9f470a750 `}</style>
9f470a751
9f470a752 <circle cx="32" cy="32" r="32" fill="var(--accent)" className="cb-bg" />
bf6031c53 {/* Top-left bubble — tail points left */}
bf6031c54 <path
9f470a755 className="cb-top"
bf6031c56 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"
bf6031c57 fill="white"
bf6031c58 />
bf6031c59 {/* Bottom-right bubble — mirrored, tail points right */}
bf6031c60 <path
9f470a761 className="cb-bottom"
bf6031c62 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"
bf6031c63 fill="white"
bf6031c64 opacity="0.65"
bf6031c65 />
bf6031c66 </svg>
bf6031c67 );
bf6031c68}