feat(admin): add AdminShell with breakpoint-aware layout

This commit is contained in:
Tyler
2026-06-17 14:20:11 -06:00
parent 6075d22a84
commit 9edbfc2e1b
+55
View File
@@ -0,0 +1,55 @@
import { ReactNode } from "react";
import AdminSidebar from "@/components/admin/AdminSidebar";
import MobileTabBar from "@/components/admin/MobileTabBar";
import OfflineBanner from "@/components/admin/OfflineBanner";
import { useMediaQuery } from "@/lib/use-media-query"; // see Task 1.9
interface AdminShellProps {
userRole: string | null;
brandIds?: string[];
activeBrandId?: string | null;
brands: { id: string; name: string; slug: string }[];
enabledAddons?: Record<string, boolean>;
children: ReactNode;
}
export function AdminShell(props: AdminShellProps) {
const isDesktop = useMediaQuery("(min-width: 1024px)");
if (isDesktop) {
return (
<>
<AdminSidebar
userRole={props.userRole}
brandIds={props.brandIds}
activeBrandId={props.activeBrandId}
brands={props.brands}
enabledAddons={props.enabledAddons}
/>
<div
id="page-content"
className="min-h-screen lg:pl-60 outline-none"
style={{ backgroundColor: "var(--color-surface)" }}
>
{props.children}
</div>
</>
);
}
return (
<>
<OfflineBanner />
<div
id="page-content"
className="min-h-screen pb-20 outline-none"
style={{ backgroundColor: "var(--color-surface)" }}
>
{props.children}
</div>
<MobileTabBar />
</>
);
}
export default AdminShell;