import { useShallow } from "zustand/react/shallow"; import { useMachineStore } from "../stores/useMachineStore"; import { useUIStore } from "../stores/useUIStore"; import { WorkflowStepper } from "./WorkflowStepper"; import { ErrorPopoverContent } from "./ErrorPopover"; import { getStateVisualInfo } from "../utils/machineStateHelpers"; import { CheckCircleIcon, BoltIcon, PauseCircleIcon, ExclamationTriangleIcon, ArrowPathIcon, XMarkIcon, } from "@heroicons/react/24/solid"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Popover, PopoverTrigger } from "@/components/ui/popover"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; export function AppHeader() { const { isConnected, machineInfo, machineStatus, machineStatusName, machineError, error: machineErrorMessage, isPairingError, isCommunicating: isPolling, disconnect, } = useMachineStore( useShallow((state) => ({ isConnected: state.isConnected, machineInfo: state.machineInfo, machineStatus: state.machineStatus, machineStatusName: state.machineStatusName, machineError: state.machineError, error: state.error, isPairingError: state.isPairingError, isCommunicating: state.isCommunicating, disconnect: state.disconnect, })), ); const { pyodideError } = useUIStore( useShallow((state) => ({ pyodideError: state.pyodideError, })), ); // Get state visual info for header status badge const stateVisual = getStateVisualInfo(machineStatus); const stateIcons = { ready: CheckCircleIcon, active: BoltIcon, waiting: PauseCircleIcon, complete: CheckCircleIcon, interrupted: PauseCircleIcon, error: ExclamationTriangleIcon, }; const StatusIcon = stateIcons[stateVisual.iconName]; return (
{/* Machine Connection Status - Responsive width column */}

Respira

{isConnected && machineInfo?.serialNumber && ( • {machineInfo.serialNumber}

Serial: {machineInfo.serialNumber}

{machineInfo.macAddress && (

MAC: {machineInfo.macAddress}

)} {machineInfo.totalCount !== undefined && (

Total stitches:{" "} {machineInfo.totalCount.toLocaleString()}

)} {machineInfo.serviceCount !== undefined && (

Stitches since service:{" "} {machineInfo.serviceCount.toLocaleString()}

)}
)} {isPolling && (

Auto-refreshing machine status

)}
{isConnected ? ( <> {machineStatusName}

{stateVisual.description}

) : (

Not Connected

)} {/* Error indicator - always render to prevent layout shift */} {/* Error popover content */} {(machineErrorMessage || pyodideError) && ( )}
{/* Workflow Stepper - Flexible width column */}
); }