// Main ops dashboard layout const { Avatar, Card, Btn, Icon } = window.OpsUI; const { KpiCard, ProgressBar, TablesOverview, HourlyRevenueCard, ReservationsCard } = window.OpsCards; const { ShiftsCard, MessagesCard, ComposeModal, EndDayModal } = window.OpsCards2; const { OPS_DATA } = window; function TopBar({ onEndDay }) { const b = OPS_DATA.business; return (
TS
{b.name}
Day open
{b.date} · started at {b.dayStartedAt} · {Math.floor(b.dayDurationMins/60)}h {b.dayDurationMins%60}m running
Reports End day
); } // Compact tablet top bar function TabletTopBar({ onEndDay }) { const b = OPS_DATA.business; return (
{b.name}
Open
{b.date} · {b.dayStartedAt} · {Math.floor(b.dayDurationMins/60)}h {b.dayDurationMins%60}m
End day
); } // KPI strip — 3 cards function KpiStrip({ compact }) { const k = OPS_DATA.kpis; const revPct = (k.revenue / k.revenueGoal) * 100; const covPct = (k.covers / k.coversGoal) * 100; const tablesOpenPct = (k.tablesOpen / k.tablesTotal) * 100; const revDelta = ((k.revenue - k.revenueLastWeek) / k.revenueLastWeek) * 100; const covDelta = ((k.covers - k.coversLastWeek) / k.coversLastWeek) * 100; return (
); } // ---------------------------------------------------------------- DESKTOP LAYOUT function DesktopDashboard() { const [composeOpen, setComposeOpen] = React.useState(false); const [composeText, setComposeText] = React.useState(''); const [composeTo, setComposeTo] = React.useState('Everyone'); const [endDayOpen, setEndDayOpen] = React.useState(false); const openCompose = (preset, to) => { setComposeText(preset || ''); setComposeTo(to || 'Everyone'); setComposeOpen(true); }; return (
setEndDayOpen(true)} />
Today at a glance
Updated 19:08 · auto-refresh
openCompose('', s.name)} />
setComposeOpen(false)} /> setEndDayOpen(false)} onConfirm={() => setEndDayOpen(false)} />
); } // ---------------------------------------------------------------- TABLET LAYOUT function TabletDashboard() { const [composeOpen, setComposeOpen] = React.useState(false); const [composeText, setComposeText] = React.useState(''); const [composeTo, setComposeTo] = React.useState('Everyone'); const [endDayOpen, setEndDayOpen] = React.useState(false); const openCompose = (preset, to) => { setComposeText(preset || ''); setComposeTo(to || 'Everyone'); setComposeOpen(true); }; return (
setEndDayOpen(true)} />
openCompose('', s.name)} />
setComposeOpen(false)} /> setEndDayOpen(false)} onConfirm={() => setEndDayOpen(false)} />
); } window.OpsLayouts = { DesktopDashboard, TabletDashboard };