diff --git a/src/components/AppHeader.tsx b/src/components/AppHeader.tsx index 41b9036..2f1fe20 100644 --- a/src/components/AppHeader.tsx +++ b/src/components/AppHeader.tsx @@ -15,6 +15,12 @@ import { 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() { @@ -61,145 +67,171 @@ export function AppHeader() { const StatusIcon = stateIcons[stateVisual.iconName]; return ( -
-
- {/* Machine Connection Status - Responsive width column */} -
-
-
-
-
-

- Respira -

- {isConnected && machineInfo?.serialNumber && ( - - • {machineInfo.serialNumber} - - )} - {isPolling && ( - - )} -
-
- {isConnected ? ( - <> - - - - {machineStatusName} - - - ) : ( -

Not Connected

- )} - - {/* Error indicator - always render to prevent layout shift */} - - - - - - {/* Error popover content */} - {(machineErrorMessage || pyodideError) && ( - + +
+
+ {/* 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 */} -
- + {/* Workflow Stepper - Flexible width column */} +
+ +
-
-
+ + ); }