2024-04-19 13:26:27 +00:00
|
|
|
"use client";
|
|
|
|
|
|
|
|
|
|
import { useEffect, useState } from "react";
|
2024-11-05 06:15:40 +00:00
|
|
|
import Sidebar from "./sidebar/sidebar";
|
|
|
|
|
import { SidebarProvider } from "./sidebar/sidebar-context";
|
2024-04-19 13:26:27 +00:00
|
|
|
import { Breadcrumb } from "../ui/breadcrumb";
|
|
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
|
children: React.ReactNode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const AdminLayout = ({ children }: Props) => {
|
|
|
|
|
const [isOpen, setIsOpen] = useState(true);
|
|
|
|
|
const updateSidebarData = (newData: boolean) => {
|
|
|
|
|
setIsOpen(newData);
|
|
|
|
|
};
|
2024-11-05 06:15:40 +00:00
|
|
|
|
|
|
|
|
const [hasMounted, setHasMounted] = useState(false);
|
|
|
|
|
|
|
|
|
|
// Hooks
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setHasMounted(true);
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
// Render
|
|
|
|
|
if (!hasMounted) return null;
|
2024-04-19 13:26:27 +00:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<SidebarProvider>
|
|
|
|
|
<div className="flex items-center justify-between h-screen p-4">
|
|
|
|
|
<Sidebar sidebarData={isOpen} updateSidebarData={updateSidebarData} />
|
|
|
|
|
<div className={`h-full w-full flex flex-col gap-4`}>
|
|
|
|
|
<Breadcrumb />
|
|
|
|
|
{children}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</SidebarProvider>
|
|
|
|
|
);
|
2024-11-05 06:15:40 +00:00
|
|
|
};
|