web-humas-fe/components/layout/admin-layout.tsx

45 lines
1.1 KiB
TypeScript
Raw Normal View History

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";
2025-01-30 11:34:29 +00:00
import SidebarMobile from "./sidebar/sidebar-mobile";
2024-04-19 13:26:27 +00:00
interface Props {
children: React.ReactNode;
}
export const AdminLayout = ({ children }: Props) => {
2025-01-30 11:34:29 +00:00
const [isOpen, setIsOpen] = useState(false);
2024-04-19 13:26:27 +00:00
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>
2025-05-25 16:41:08 +00:00
<div className="!h-auto md:!h-screen flex items-center flex-row !overflow-y-hidden">
2024-04-19 13:26:27 +00:00
<Sidebar sidebarData={isOpen} updateSidebarData={updateSidebarData} />
2025-01-30 11:34:29 +00:00
<SidebarMobile
sidebarData={isOpen}
updateSidebarData={updateSidebarData}
/>
<div className={`w-full h-full flex flex-col overflow-hidden`}>
2024-04-19 13:26:27 +00:00
<Breadcrumb />
{children}
</div>
</div>
</SidebarProvider>
);
2024-11-05 06:15:40 +00:00
};