import { useState, useEffect } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { api, type Printer } from '../../api/client'; interface SpoolBuddyTopBarProps { selectedPrinterId: number | null; onPrinterChange: (id: number) => void; deviceOnline: boolean; } export function SpoolBuddyTopBar({ selectedPrinterId, onPrinterChange, deviceOnline }: SpoolBuddyTopBarProps) { const { t } = useTranslation(); const [currentTime, setCurrentTime] = useState(new Date()); const { data: printers = [] } = useQuery({ queryKey: ['printers'], queryFn: () => api.getPrinters(), }); // Auto-select first printer useEffect(() => { if (!selectedPrinterId && printers.length > 0) { onPrinterChange(printers[0].id); } }, [printers, selectedPrinterId, onPrinterChange]); // Clock useEffect(() => { const timer = setInterval(() => setCurrentTime(new Date()), 30000); return () => clearInterval(timer); }, []); const formatTime = (date: Date) => date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); return (
{/* Logo */}
SpoolBuddy
{/* Printer selector - centered */}
{/* Right side indicators */}
{/* Device LED */}
{deviceOnline ? t('spoolbuddy.status.online', 'Online') : t('spoolbuddy.status.offline', 'Offline')}
{/* Clock */} {formatTime(currentTime)}
); }