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