import { useState } from 'react' import { useNMEA } from '../../hooks/useNMEA.js' const isDev = import.meta.env.DEV function formatTime() { return new Date().toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' }) } export default function TopBar() { const { sog, heading, connected } = useNMEA() const [time, setTime] = useState(formatTime()) // Clock tick useState(() => { const t = setInterval(() => setTime(formatTime()), 5000) return () => clearInterval(t) }) return (
⚓ Bordanlage {isDev && DEV · MOCK DATA}
{connected && sog != null && ( {sog.toFixed(1)} kn )} {connected && heading != null && ( {Math.round(heading)}° HDG )} {!connected && ( No signal )}
{time}
) } const styles = { bar: { height: 52, background: 'var(--surface)', borderBottom: '1px solid var(--border)', display: 'flex', alignItems: 'center', padding: '0 16px', gap: 16, flexShrink: 0, }, left: { display: 'flex', alignItems: 'center', gap: 10, flex: 1 }, center: { display: 'flex', gap: 20, alignItems: 'center' }, right: { flex: 1, display: 'flex', justifyContent: 'flex-end' }, logo: { fontWeight: 700, fontSize: 15, color: 'var(--accent)', letterSpacing: '0.04em' }, devBadge: { fontSize: 10, fontWeight: 600, padding: '2px 7px', background: '#f59e0b22', color: 'var(--warning)', border: '1px solid var(--warning)', borderRadius: 4, letterSpacing: '0.06em', }, stat: { display: 'flex', alignItems: 'baseline', gap: 3 }, val: { fontFamily: 'var(--font-mono)', fontSize: 16, color: 'var(--text)' }, unit: { fontSize: 10, color: 'var(--muted)' }, time: { fontFamily: 'var(--font-mono)', fontSize: 14, color: 'var(--muted)' }, }