"use client";
import copy from "copy-to-clipboard";
import { animate, cubicBezier } from "motion";
import { AnimatePresence, motion } from "motion/react";
import Link from "next/link";
import { useCallback, useEffect, useRef, useState } from "react";
import FirecrawlIcon from "@/components/shared/firecrawl-icon/firecrawl-icon";
import Logo from "@/components/shared/header/_svg/Logo";
import { useHeaderContext } from "@/components/shared/header/HeaderContext";
import { cn } from "@/utils/cn";
import Download from "./_svg/Download";
import Guidelines from "./_svg/Guidelines";
import Icon from "./_svg/Icon";
export default function HeaderBrandKit() {
const [open, setOpen] = useState(false);
const { dropdownContent, clearDropdown } = useHeaderContext();
useEffect(() => {
document.addEventListener("click", () => {
setOpen(false);
});
}, [open]);
useEffect(() => {
if (dropdownContent) {
setOpen(false);
}
}, [dropdownContent]);
return (
{
e.preventDefault();
setOpen(!open);
if (!open) {
clearDropdown(true);
}
}}
>
{open && }
);
}
const Menu = ({ setOpen }: { setOpen: (open: boolean) => void }) => {
const backgroundRef = useRef(null);
const timeoutRef = useRef(null);
const onMouseEnter = useCallback((e: React.MouseEvent) => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
const t = e.target as HTMLElement;
const target =
t instanceof HTMLButtonElement
? t
: (t.closest("button") as HTMLButtonElement);
if (backgroundRef.current) {
animate(backgroundRef.current, { scale: 0.98, opacity: 1 }).then(() => {
if (backgroundRef.current) {
animate(backgroundRef.current!, { scale: 1 });
}
});
animate(
backgroundRef.current,
{
y: target.offsetTop - 4,
},
{
ease: cubicBezier(0.1, 0.1, 0.25, 1),
duration: 0.2,
},
);
}
}, []);
const onMouseLeave = useCallback(() => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
timeoutRef.current = window.setTimeout(() => {
if (backgroundRef.current) {
animate(backgroundRef.current, { scale: 1, opacity: 0 });
}
}, 100);
}, []);
return (
);
};
const Button = (attributes: React.ButtonHTMLAttributes) => {
return (
);
};