From 3a03798060904e0371fac3902a275fd2f83f77c5 Mon Sep 17 00:00:00 2001 From: Joey McKenzie <joey.mckenzie27@gmail.com> Date: Wed, 5 Mar 2025 12:04:23 -0800 Subject: [PATCH 1/2] feat: use shadcn built-in check for sidebar state --- app/Http/Middleware/HandleInertiaRequests.php | 1 + app/Providers/AppServiceProvider.php | 3 ++- resources/js/components/app-shell.tsx | 19 ++++--------------- resources/js/types/index.ts | 1 + 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index c987856b..a1ae694c 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -45,6 +45,7 @@ public function share(Request $request): array 'auth' => [ 'user' => $request->user(), ], + 'sidebarOpen' => $request->cookie('sidebar_state') === 'true', ]; } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b65..2e599786 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -19,6 +20,6 @@ public function register(): void */ public function boot(): void { - // + EncryptCookies::except('sidebar_state'); } } 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<SharedData>().props.sidebarOpen; if (variant === 'header') { return <div className="flex min-h-screen w-full flex-col">{children}</div>; } - return ( - <SidebarProvider defaultOpen={isOpen} open={isOpen} onOpenChange={handleSidebarChange}> - {children} - </SidebarProvider> - ); + return <SidebarProvider defaultOpen={isOpen}>{children}</SidebarProvider>; } diff --git a/resources/js/types/index.ts b/resources/js/types/index.ts index 9929c24d..c3c52232 100644 --- a/resources/js/types/index.ts +++ b/resources/js/types/index.ts @@ -25,6 +25,7 @@ export interface SharedData { name: string; quote: { message: string; author: string }; auth: Auth; + sidebarOpen: boolean; [key: string]: unknown; } From 8aa5dc4ff3254a832e1fa675a8df80da656f7411 Mon Sep 17 00:00:00 2001 From: Joey McKenzie <joey.mckenzie27@gmail.com> Date: Mon, 10 Mar 2025 14:26:08 -0700 Subject: [PATCH 2/2] chore: remove unused import --- app/Providers/AppServiceProvider.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5ccb6d95..452e6b65 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,7 +2,6 @@ namespace App\Providers; -use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider