diff --git a/apps/infoalloggi/src/components/Layout.tsx b/apps/infoalloggi/src/components/Layout.tsx index 79cb168..f2ab57e 100644 --- a/apps/infoalloggi/src/components/Layout.tsx +++ b/apps/infoalloggi/src/components/Layout.tsx @@ -1,3 +1,4 @@ +import { getCookie } from "cookies-next"; import { ExternalLink, Mail, @@ -14,7 +15,10 @@ import { usePathname } from "next/navigation"; import { useRouter } from "next/router"; import { type ReactNode, useContext } from "react"; import toast from "react-hot-toast"; -import { Sidebar } from "~/components/area-riservata/sidebar"; +import { + SIDEBAR_COOKIE_NAME, + Sidebar, +} from "~/components/area-riservata/sidebar"; import { BannerFactory } from "~/components/banners"; import { Footer, MiniFooter } from "~/components/footer"; import { LoadingPage } from "~/components/loading"; @@ -114,7 +118,10 @@ export const AreaRiservataLayout = ({
{noSidebar ? null : ( - + )} {children} @@ -150,7 +157,10 @@ export const AreaRiservataLayoutUserView = ({ />
- +
diff --git a/apps/infoalloggi/src/components/area-riservata/sidebar.tsx b/apps/infoalloggi/src/components/area-riservata/sidebar.tsx index eb3217e..caec054 100644 --- a/apps/infoalloggi/src/components/area-riservata/sidebar.tsx +++ b/apps/infoalloggi/src/components/area-riservata/sidebar.tsx @@ -1,44 +1,47 @@ -import { getCookie, setCookie } from "cookies-next/client"; +import { setCookie } from "cookies-next/client"; import { add } from "date-fns"; import { motion } from "framer-motion"; import { Expand, Minimize2 } from "lucide-react"; import { usePathname } from "next/navigation"; -import { useEffect, useState } from "react"; +import { useState } from "react"; + import { ARMinimizableLinks } from "~/components/navbar/mobile-nav"; import { Button } from "~/components/ui/button"; import { cn } from "~/lib/utils"; +export const SIDEBAR_COOKIE_NAME = "sidebar_minimized"; export const Sidebar = ({ + defaultOpen, isAdmin, className, }: { + defaultOpen: boolean; isAdmin: boolean; className?: string; }) => { const pathname = usePathname(); + const [isAnimating, setIsAnimating] = useState(false); + const [minimized, setMinimized] = useState(defaultOpen); - const [minimized, setMinimized] = useState(false); - - useEffect(() => { - const defaultOpen = getCookie("sidebar_minimized") === "true"; - setMinimized(defaultOpen); - }, []); const toggleSidebar = (v: boolean) => { + setIsAnimating(true); setMinimized(v); - setCookie("sidebar_minimized", v.toString(), { + setCookie(SIDEBAR_COOKIE_NAME, v.toString(), { expires: add(new Date(), { days: 30 }), }); + setTimeout(() => { + setIsAnimating(false); + }, 300); }; return (