- {children}
+ {/* Desktop sidebar — hidden on mobile */}
+
+
+
+ );
+}
diff --git a/frontend/components/shared/Sidebar.tsx b/frontend/components/shared/Sidebar.tsx
index f56ff5f..f3f92ed 100644
--- a/frontend/components/shared/Sidebar.tsx
+++ b/frontend/components/shared/Sidebar.tsx
@@ -11,6 +11,7 @@ import {
Settings,
Landmark,
LogOut,
+ X,
} from "lucide-react";
import { useQueryClient } from "@tanstack/react-query";
import { cn } from "@/lib/utils";
@@ -26,7 +27,7 @@ const NAV = [
{ href: "/settings", label: "Admin", icon: Settings, adminOnly: true },
];
-export function Sidebar() {
+export function Sidebar({ onClose }: { onClose?: () => void }) {
const pathname = usePathname();
const router = useRouter();
const qc = useQueryClient();
@@ -43,7 +44,12 @@ export function Sidebar() {
+
+
+
+ {/* Mobile slide-in drawer */}
+ {drawerOpen && (
+
+
);
}
diff --git a/frontend/components/shared/MobileHeader.tsx b/frontend/components/shared/MobileHeader.tsx
new file mode 100644
index 0000000..d3f9f2e
--- /dev/null
+++ b/frontend/components/shared/MobileHeader.tsx
@@ -0,0 +1,16 @@
+"use client";
+import { Menu, Landmark } from "lucide-react";
+
+export function MobileHeader({ onMenuClick }: { onMenuClick: () => void }) {
+ return (
+ setDrawerOpen(false)} />
+
-
+ )}
+
+ {/* Content column */}
+
+ setDrawerOpen(false)} />
+
+ setDrawerOpen(true)} />
+
+
+
+ {children}
+
+
+
+ PocketVeto
+
+