import * as React from 'react'; import { cn } from '@/lib/utils'; export interface DashboardLayoutProps extends React.HTMLAttributes { header?: React.ReactNode; sidebar?: React.ReactNode; ticker?: React.ReactNode; statusBar?: React.ReactNode; /** Chiều rộng sidebar khi expand (collapsed luôn 56px). */ sidebarWidth?: number; /** Có collapse sidebar không. */ sidebarCollapsed?: boolean; children: React.ReactNode; } /** * Layout khung cho toàn bộ trang dashboard / trading terminal. * * Cấu trúc: * ┌─────────────────────────────────────┐ * │ TICKER STRIP (optional, 32px) │ * ├──────────┬─────────────────────────┤ * │ SIDEBAR │ HEADER (48px) │ * │ (56 px ├─────────────────────────┤ * │ hoặc │ MAIN │ * │ expand) │ (scroll-y) │ * ├──────────┴─────────────────────────┤ * │ STATUS BAR (optional, 24px) │ * └─────────────────────────────────────┘ */ export function DashboardLayout({ header, sidebar, ticker, statusBar, sidebarWidth = 200, sidebarCollapsed = true, children, className, ...rest }: DashboardLayoutProps) { const sidebarPx = sidebarCollapsed ? 56 : sidebarWidth; return (
{ticker ? (
{ticker}
) : null}
{sidebar ? ( ) : null}
{header}
{children}
{statusBar ? (
{statusBar}
) : null}
); }