import { Button } from "@/components/ui/button"; import { HotkeyButton } from "@/components/ui/hotkey-button"; import { Slider } from "@/components/ui/slider"; import { Switch } from "@/components/ui/switch"; import { Label } from "@/components/ui/label"; import { Plus, Bot } from "lucide-react"; import { KeyboardShortcut } from "@/hooks/use-keyboard-shortcuts"; import { ClaudeUsagePopover } from "@/components/claude-usage-popover"; import { useAppStore } from "@/store/app-store"; interface BoardHeaderProps { projectName: string; maxConcurrency: number; runningAgentsCount: number; onConcurrencyChange: (value: number) => void; isAutoModeRunning: boolean; onAutoModeToggle: (enabled: boolean) => void; onAddFeature: () => void; addFeatureShortcut: KeyboardShortcut; isMounted: boolean; } export function BoardHeader({ projectName, maxConcurrency, runningAgentsCount, onConcurrencyChange, isAutoModeRunning, onAutoModeToggle, onAddFeature, addFeatureShortcut, isMounted, }: BoardHeaderProps) { const apiKeys = useAppStore((state) => state.apiKeys); // Hide usage tracking when using API key (only show for Claude Code CLI users) // Also hide on Windows for now (CLI usage command not supported) const isWindows = typeof navigator !== 'undefined' && navigator.platform?.toLowerCase().includes('win'); const showUsageTracking = !apiKeys.anthropic && !isWindows; return (

Kanban Board

{projectName}

{/* Usage Popover - only show for CLI users (not API key users) */} {isMounted && showUsageTracking && } {/* Concurrency Slider - only show after mount to prevent hydration issues */} {isMounted && (
Agents onConcurrencyChange(value[0])} min={1} max={10} step={1} className="w-20" data-testid="concurrency-slider" /> {runningAgentsCount} / {maxConcurrency}
)} {/* Auto Mode Toggle - only show after mount to prevent hydration issues */} {isMounted && (
)} Add Feature
); }