diff --git a/app/(public)/creators/page.tsx b/app/(public)/creators/page.tsx index 43b06ef..9a89538 100644 --- a/app/(public)/creators/page.tsx +++ b/app/(public)/creators/page.tsx @@ -9,8 +9,6 @@ import { Users, Code2, Palette, - BrainCircuit, - Award, GraduationCap, } from "lucide-react"; import { FaGithub, FaLinkedin, FaTwitter, FaInstagram } from "react-icons/fa"; @@ -138,8 +136,6 @@ export default function TeamPage() { className="grid gap-6 md:grid-cols-2 lg:grid-cols-3" > {teamMembers.map((member) => { - const Icon = member.icon; - return ( ) => ( + + + + +); + +const LinkedinIcon = (props: React.SVGProps) => ( + + + + + +); + +const TwitterIcon = (props: React.SVGProps) => ( + + + +); + +const InstagramIcon = (props: React.SVGProps) => ( + + + + + +); + +const SocialDropdown = ({ + icon: Icon, + label, + links, + size = "sm", + hoverClass, +}: { + icon: React.ElementType; + label: string; + links: { name: string; url: string }[]; + size?: "sm" | "md"; + hoverClass?: string; +}) => { + const [isOpen, setIsOpen] = useState(false); + const dropdownRef = useRef(null); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if ( + dropdownRef.current && + !dropdownRef.current.contains(event.target as Node) + ) { + setIsOpen(false); + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => document.removeEventListener("mousedown", handleClickOutside); + }, []); + + const baseClasses = + size === "md" + ? "group flex h-[36px] w-[36px] items-center justify-center rounded-full border border-slate-200 dark:border-white/[0.08] bg-white dark:bg-white/[0.01] text-slate-500 dark:text-slate-400 shadow-sm dark:shadow-[inset_0_1px_1px_rgba(255,255,255,0.02)] transition-all duration-300 ease-out hover:-translate-y-0.5 " + : "group flex h-[32px] w-[32px] items-center justify-center rounded-full border border-slate-200 dark:border-white/[0.08] bg-white dark:bg-white/[0.01] text-slate-500 dark:text-slate-400 shadow-sm dark:shadow-[inset_0_1px_1px_rgba(255,255,255,0.02)] transition-all duration-300 ease-out hover:-translate-y-0.5 "; + + const btnClasses = + baseClasses + + (hoverClass || + "hover:border-blue-500/40 dark:hover:border-blue-500/40 hover:bg-blue-50 dark:hover:bg-blue-500/5 hover:text-blue-600 dark:hover:text-blue-400 hover:shadow-md dark:hover:shadow-[0_0_15px_rgba(59,130,246,0.2),inset_0_1px_1px_rgba(255,255,255,0.1)]"); + + const iconClasses = + size === "md" + ? "h-[17px] w-[17px] transition-transform duration-300 group-hover:scale-105" + : "h-[16px] w-[16px] transition-transform duration-300 group-hover:scale-105"; + + return ( +
+ + + {isOpen && ( + + )} +
+ ); +}; export default function Footer() { return ( -