2026-04-11 18:07:57 -05:00
|
|
|
import { useState } from 'react'
|
|
|
|
|
import { Outlet } from 'react-router-dom'
|
|
|
|
|
import { Menu, X } from 'lucide-react'
|
|
|
|
|
import Sidebar from './Sidebar'
|
2026-04-11 11:51:18 -05:00
|
|
|
|
2026-04-05 10:45:21 -05:00
|
|
|
export default function Layout() {
|
|
|
|
|
const [sidebarOpen, setSidebarOpen] = useState(true)
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className="flex h-screen overflow-hidden bg-[#0f1117]">
|
2026-04-11 18:07:57 -05:00
|
|
|
<Sidebar open={sidebarOpen} onToggle={() => setSidebarOpen(v => !v)} />
|
2026-04-11 11:51:18 -05:00
|
|
|
|
|
|
|
|
<div className="flex-1 flex flex-col overflow-hidden min-w-0">
|
2026-04-05 10:45:21 -05:00
|
|
|
{/* Topbar */}
|
2026-04-11 11:51:18 -05:00
|
|
|
<header className="flex items-center gap-4 px-6 py-3 bg-[#1a1d27] border-b border-[#2a2d3e] min-h-[57px] flex-shrink-0">
|
2026-04-05 10:45:21 -05:00
|
|
|
<button
|
|
|
|
|
onClick={() => setSidebarOpen(v => !v)}
|
|
|
|
|
className="text-[#64748b] hover:text-white transition-colors"
|
|
|
|
|
>
|
|
|
|
|
{sidebarOpen ? <X size={18} /> : <Menu size={18} />}
|
|
|
|
|
</button>
|
|
|
|
|
<div className="flex-1" />
|
|
|
|
|
<span className="text-[#64748b] text-xs">
|
|
|
|
|
{new Date().toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' })}
|
|
|
|
|
</span>
|
|
|
|
|
</header>
|
|
|
|
|
|
2026-04-11 18:07:57 -05:00
|
|
|
{/* Page content */}
|
2026-04-05 10:45:21 -05:00
|
|
|
<main className="flex-1 overflow-y-auto p-6">
|
|
|
|
|
<Outlet />
|
|
|
|
|
</main>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|