import { AlignLeft, Home } from "lucide-react"; import Link, { type LinkProps } from "next/link"; import { useRouter } from "next/navigation"; import type { ReactNode } from "react"; import { IconMatrix } from "~/components/IconComponents"; import { LangToggle } from "~/components/navbar/lang-toggle"; import { UserHeaderSection } from "~/components/navbar/login-button"; import { ASvg, LogoSvg } from "~/components/svgs"; import { Button } from "~/components/ui/button"; import { Separator } from "~/components/ui/separator"; import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, } from "~/components/ui/sheet"; import { useMediaQuery } from "~/hooks/use-media-query"; import { cn } from "~/lib/utils"; import { useTranslation } from "~/providers/I18nProvider"; import { useSession } from "~/providers/SessionProvider"; import { ThemeSwitch } from "./theme-toggle"; type MobileNavProps = { pathname: string; open: boolean; setOpen: (status: boolean) => void; userOpen: boolean; setUserOpen: (status: boolean) => void; }; export function MobileNav({ pathname, open, setOpen, userOpen, setUserOpen, }: MobileNavProps) { const session = useSession(); const { t } = useTranslation(); const verySmallScreen = useMediaQuery("(max-width: 280px)"); return ( <> Mobile Menu This is the mobile menu
{" "} Home
{pathname.startsWith("/area-riservata") && ( <> {session?.user && ( )} )}
{t.nav.mainNav.map((item) => ( {" "} {item.title} ))}
{verySmallScreen ? ( ) : ( )} ); } interface MobileLinkProps extends LinkProps { onOpenChange?: (open: boolean) => void; children: ReactNode; className?: string; disabled?: boolean; } function MobileLink({ href, onOpenChange, className, children, disabled, ...props }: MobileLinkProps) { const router = useRouter(); return ( { if (disabled) { e.preventDefault(); e.stopPropagation(); onOpenChange?.(false); } else { router.push(href.toString()); onOpenChange?.(false); } }} {...props} > {children} ); } type AreaRiservataLinksProps = { isAdmin: boolean; setOpen?: (status: boolean) => void; pathname: string; }; const AreaRiservataLinks = ({ isAdmin, setOpen, pathname, }: AreaRiservataLinksProps) => { const { t } = useTranslation(); return (
{isAdmin ? t.nav.areaRiservataAdminNav.map((item) => { if (item.items !== undefined) { return (
{item.title}
    {item.items.map((item) => { return ( {item.title} ); })}
); } return ( {item.title} ); }) : t.nav.areaRiservataUserNav.map((item) => ( {item.title} ))}
); }; export const ARMinimizableLinks = ({ isAnimating, isAdmin, pathname, minimized, }: { isAnimating: boolean; isAdmin: boolean; pathname: string; minimized: boolean; }) => { const { t } = useTranslation(); return (
{isAdmin ? t.nav.areaRiservataAdminNav.map((item) => { if (item.items !== undefined) { return (
{!minimized && item.title}
    {item.items.map((item) => { return ( {item.title} ); })}
); } return ( {!minimized && item.title} ); }) : t.nav.areaRiservataUserNav.map((item) => ( {!minimized && item.title} ))}
); };