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";
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: 320px)");
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 = ({
isAdmin,
setOpen,
pathname,
minimized,
}: {
isAdmin: boolean;
setOpen?: (status: boolean) => void;
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}
))}
);
};