29 lines
965 B
TypeScript
29 lines
965 B
TypeScript
import { useState } from 'react';
|
|
import type { ReactNode } from 'react';
|
|
import AppSidebar from './AppSidebar';
|
|
import AppHeader from './AppHeader';
|
|
|
|
interface LayoutProps {
|
|
children: ReactNode;
|
|
}
|
|
|
|
function Layout({ children }: LayoutProps) {
|
|
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
|
|
|
|
return (
|
|
<div className="flex h-screen overflow-hidden bg-[#F4F7F6] font-sans">
|
|
<AppSidebar isOpen={isSidebarOpen} onClose={() => setIsSidebarOpen(false)} />
|
|
|
|
{/* Main Content Area Wrapper */}
|
|
<div className="flex-1 flex flex-col overflow-hidden bg-white rounded-[12px] shadow-[0px_0px_10px_rgba(0,0,0,0.05)] border border-gray-100/50 relative z-10 my-2 mr-2 ml-1">
|
|
<AppHeader onMenuClick={() => setIsSidebarOpen(true)} />
|
|
<main className="flex-1 overflow-y-auto overflow-x-hidden px-4 py-4 bg-white rounded-b-[12px]">
|
|
{children}
|
|
</main>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default Layout;
|