diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index 6d13c5d1..0a915ef9 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -49,7 +49,8 @@ public function share(Request $request): array 'ziggy' => fn (): array => [ ...(new Ziggy)->toArray(), 'location' => $request->url(), - ] + ], + 'sidebarOpen' => $request->cookie('sidebar_state') === 'true', ]; } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 18d301a4..134581ab 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -14,7 +14,7 @@ health: '/up', ) ->withMiddleware(function (Middleware $middleware) { - $middleware->encryptCookies(except: ['appearance']); + $middleware->encryptCookies(except: ['appearance', 'sidebar_state']); $middleware->web(append: [ HandleAppearance::class, diff --git a/resources/js/components/app-shell.tsx b/resources/js/components/app-shell.tsx index 1e576119..0d5cdb97 100644 --- a/resources/js/components/app-shell.tsx +++ b/resources/js/components/app-shell.tsx @@ -1,5 +1,6 @@ import { SidebarProvider } from '@/components/ui/sidebar'; -import { useState } from 'react'; +import { SharedData } from '@/types'; +import { usePage } from '@inertiajs/react'; interface AppShellProps { children: React.ReactNode; @@ -7,23 +8,11 @@ interface AppShellProps { } export function AppShell({ children, variant = 'header' }: AppShellProps) { - const [isOpen, setIsOpen] = useState(() => (typeof window !== 'undefined' ? localStorage.getItem('sidebar') !== 'false' : true)); - - const handleSidebarChange = (open: boolean) => { - setIsOpen(open); - - if (typeof window !== 'undefined') { - localStorage.setItem('sidebar', String(open)); - } - }; + const isOpen = usePage().props.sidebarOpen; if (variant === 'header') { return
{children}
; } - return ( - - {children} - - ); + return {children}; } diff --git a/resources/js/types/index.d.ts b/resources/js/types/index.d.ts index 2c03ad9c..dacf9547 100644 --- a/resources/js/types/index.d.ts +++ b/resources/js/types/index.d.ts @@ -27,6 +27,7 @@ export interface SharedData { quote: { message: string; author: string }; auth: Auth; ziggy: Config & { location: string }; + sidebarOpen: boolean; [key: string]: unknown; }