import React, { Dispatch, SetStateAction } from "react"; import { useTranslation } from "react-i18next"; import { motion, AnimatePresence, Variants } from "framer-motion"; import * as SOLID from "@heroicons/react/24/solid"; import Button from "../components/Button"; import content from "../json/content.json"; import { MenuState } from "../App"; import Lang from "../components/Lang" type NavbarProps = { state: MenuState; setState: Dispatch>; isOpen: boolean; }; const navVariants: Variants = { initial: { scaleY: 0.8, scaleX: 0.1, opacity: 0.7 }, animate: { scaleY: 1, scaleX: 1, opacity: 1, transition: { duration: 0.3, ease: [0.42, 0, 0.58, 1] } }, }; const exitVariants: Variants = { initial: { scaleY: 1, scaleX: 5, opacity: 0.7 }, animate: { scaleY: 1, scaleX: 1, opacity: 1, transition: { duration: 0.3, ease: [0.42, 0.66, 0.58, 1] } }, }; export default function Navbar({ state, setState, isOpen }: NavbarProps) { const { t } = useTranslation(); const handleClick = (key: keyof MenuState) => { setState(prev => ({ ...prev, [key]: true })); }; const closeWindows = () => { setState(prev => { const newState: MenuState = {} as MenuState; for (const key in prev) newState[key as keyof MenuState] = false; return newState; }); }; const mainButton = content.navbar.buttons[0]; return ( {isOpen ? ( ) : ( {content.navbar.buttons.slice(1).map((btn, i) => { const Icon = (SOLID as Record)[btn.icon]; return (
{t(btn.label)}
); })}
)}
); }