"use client"; import { useStore } from "@/store/useStore"; import { Button } from "@/components/ui/button"; import { HyperViewLogo, DiscordIcon } from "./icons"; import { CENTER_PANEL_DEFS, useDockviewApi } from "./DockviewWorkspace"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; import { ChevronDown, RotateCcw, Check, PanelLeft, PanelBottom, PanelRight, Settings, Search, } from "lucide-react"; import { useState } from "react"; import { cn } from "@/lib/utils"; const PANEL_CONFIG = CENTER_PANEL_DEFS; const DISCORD_URL = process.env.NEXT_PUBLIC_DISCORD_URL ?? "https://discord.gg/Qf2pXtY4Vf"; export function Header() { const { datasetInfo, leftPanelOpen, rightPanelOpen, bottomPanelOpen } = useStore(); const dockview = useDockviewApi(); const [datasetPickerOpen, setDatasetPickerOpen] = useState(false); const handlePanelToggle = (panelId: string) => { if (!dockview?.api) return; const panel = dockview.api.getPanel(panelId); if (panel) { panel.api.close(); return; } dockview.addPanel(panelId); }; // Check which panels are currently open const openPanels = new Set( PANEL_CONFIG.map((p) => p.id).filter((id) => dockview?.api?.getPanel(id)) ); return (
{/* Left side: Logo + View menu */}
{/* Logo */}
{/* View dropdown */} {dockview && ( {/* Panel toggles - no section header, similar to Rerun */} {PANEL_CONFIG.map((panel) => { const Icon = panel.icon; const isOpen = openPanels.has(panel.id); return ( handlePanelToggle(panel.id)} className="flex items-center justify-between h-7 text-[12px] leading-[16px]" > {panel.label} {isOpen && } ); })} {/* Spacer */}
{/* Reset layout */} dockview.resetLayout()} className="flex items-center gap-2 h-7 text-[12px] leading-[16px]" > Reset Layout )}
{/* Center: Dataset picker (VS Code style command palette trigger) */}
No datasets found. {/* Currently only show the loaded dataset */} {datasetInfo && ( setDatasetPickerOpen(false)} className="text-[12px] leading-[16px]" > {datasetInfo.name} {datasetInfo.num_samples.toLocaleString()} samples )}
{/* Right side: Discord + Panel toggles + Settings */}
{/* Discord link */} {/* Separator */}
{/* Left panel toggle */} {/* Bottom panel toggle */} {/* Right panel toggle */} {/* Separator */}
{/* Settings button */}
); }