2025-12-03 21:56:50 +00:00
|
|
|
import type { ReactNode } from 'react';
|
|
|
|
|
import { Header } from './Header';
|
|
|
|
|
import { Sidebar } from './Sidebar';
|
|
|
|
|
import { useUIStore } from '@/stores/ui';
|
|
|
|
|
import { cn } from '@/lib/utils';
|
|
|
|
|
|
|
|
|
|
interface LayoutProps {
|
|
|
|
|
children: ReactNode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function Layout({ children }: LayoutProps) {
|
|
|
|
|
const { sidebarOpen } = useUIStore();
|
|
|
|
|
|
|
|
|
|
return (
|
2025-12-13 02:34:34 +00:00
|
|
|
<div className="min-h-screen bg-background">
|
2025-12-03 21:56:50 +00:00
|
|
|
<Header />
|
2025-12-13 02:34:34 +00:00
|
|
|
<div className="flex">
|
2025-12-03 21:56:50 +00:00
|
|
|
<Sidebar />
|
|
|
|
|
<main
|
|
|
|
|
className={cn(
|
|
|
|
|
'flex-1 transition-all duration-200 ease-in-out',
|
2025-12-13 02:34:34 +00:00
|
|
|
sidebarOpen ? 'md:ml-64' : 'ml-0',
|
2025-12-03 21:56:50 +00:00
|
|
|
)}
|
|
|
|
|
>
|
2025-12-13 02:34:34 +00:00
|
|
|
<div className="p-6">{children}</div>
|
2025-12-03 21:56:50 +00:00
|
|
|
</main>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|