import { FolderGit2, PanelLeft, PanelRight, Search, Bell, Settings, ChevronDown } from "lucide-react"; import { COLORS, FONT } from "./theme"; import type { WorkspaceView } from "./layoutTypes"; import { leafIds } from "./layoutTypes"; /** Human-readable descriptor of the active workspace layout (mock until a real preset id is tracked). */ function describeLayout(w: WorkspaceView | null): string { if (!w || !w.layout) return "no layout"; const n = leafIds(w.layout).length; return n === 1 ? "1 pane" : `${n} panes`; } function IconBtn({ icon, onClick, active, title }: { icon: React.ReactNode; onClick?: () => void; active?: boolean; title?: string }) { return ( ); } export function TopBar({ active, eventsOpen, onToggleEvents, onShowEvents, sidebarOpen, onToggleSidebar, unread, onOpenSettings, }: { active: WorkspaceView | null; eventsOpen: boolean; onToggleEvents: () => void; onShowEvents: () => void; sidebarOpen: boolean; onToggleSidebar: () => void; unread: number; onOpenSettings: () => void; }) { return (
{/* Left: sidebar toggle, flush to the left edge. */} } onClick={onToggleSidebar} active={sidebarOpen} title="Toggle Sidebar" /> {/* Workspace breadcrumb */}
{active?.name ?? "spacesh"} {active && ( <> / {describeLayout(active)} )}
{/* Right cluster */}
} title="Search (mock)" />
} onClick={onShowEvents} active={eventsOpen} title="Open activity log" /> {unread > 0 && ( {unread > 99 ? "99+" : unread} )}
} onClick={onToggleEvents} active={eventsOpen} title="Toggle Event Center" /> } onClick={onOpenSettings} title="Settings" />
); }