mirror of
https://github.com/dyzulk/trustlab.git
synced 2026-01-26 13:32:06 +07:00
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { useSidebar } from "@/context/SidebarContext";
|
|
import AppHeader from "@/layout/AppHeader";
|
|
import AppSidebar from "@/layout/AppSidebar";
|
|
import Backdrop from "@/layout/Backdrop";
|
|
import React from "react";
|
|
|
|
import { useAuth } from "@/hooks/useAuth";
|
|
|
|
export default function AdminLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
const { isExpanded, isHovered, isMobileOpen } = useSidebar();
|
|
useAuth({ middleware: 'auth' }); // Fetch user, but strict redirect is disabled in hook
|
|
|
|
// Dynamic class for main content margin based on sidebar state
|
|
const mainContentMargin = isMobileOpen
|
|
? "ml-0"
|
|
: isExpanded || isHovered
|
|
? "lg:ml-[290px]"
|
|
: "lg:ml-[90px]";
|
|
|
|
return (
|
|
<div className="min-h-screen xl:flex font-sans">
|
|
{/* Sidebar and Backdrop */}
|
|
<AppSidebar />
|
|
<Backdrop />
|
|
{/* Main Content Area */}
|
|
<div
|
|
className={`flex-1 transition-all duration-300 ease-in-out ${mainContentMargin}`}
|
|
>
|
|
{/* Header */}
|
|
<AppHeader />
|
|
{/* Page Content */}
|
|
<div className="p-4 mx-auto max-w-(--breakpoint-2xl) md:p-6">{children}</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|