import { usePage } from "@inertiajs/react"; import { motion } from "motion/react"; import { type ReactNode, useEffect, useState } from "react"; import AppFooter from "@/back/Components/Layout/AppFooter"; import AppHeader from "@/back/Components/Layout/AppHeader"; import AppSidebar from "@/back/Components/Layout/Sidebar/AppSidebar"; import { ThemeProvider } from "@/back/providers/ThemeProvider"; import AppHead from "@/components/layout/AppHead"; import { SidebarProvider, useSidebar } from "@/components/ui/sidebar"; import { Toaster } from "@/components/ui/toaster"; import { TooltipProvider } from "@/components/ui/tooltip"; interface AuthenticatedLayoutProps { title: string; beforeNode?: ReactNode; afterNode?: ReactNode; children: ReactNode; } function LayoutContent({ title, beforeNode, afterNode, children, }: Omit & { children: ReactNode }) { const { open } = useSidebar(); const [isSm, setIsSm] = useState(() => typeof window !== "undefined" ? window.matchMedia("(max-width: 767px)").matches : false, ); let sidebarVar = "0px"; if (!isSm) { sidebarVar = open ? "var(--sidebar-width)" : "var(--sidebar-width-icon)"; } useEffect(() => { const handler = (e: MediaQueryListEvent) => { setIsSm(e.matches); }; const mediaQuery = window.matchMedia("(max-width: 767px)"); mediaQuery.addEventListener("change", handler); return () => { mediaQuery.removeEventListener("change", handler); }; }, []); return ( <>
{beforeNode}

{title}

{afterNode}
{children}
); } const localCollapsed = localStorage.getItem("vite-ui-collapsed"); export default function AuthenticatedLayout({ title, beforeNode, afterNode, children, }: AuthenticatedLayoutProps) { const isCollapsed = typeof window !== "undefined" ? localCollapsed : null; const { locale } = usePage().props.appEnv as { locale: string; }; return ( {children} ); }