import { useMemo } from 'react'; import { useSession } from '../context/SessionContext.jsx'; function StatusBadge({ label, tone = 'muted' }) { const styles = tone === 'success' ? 'bg-emerald-900 text-emerald-100' : tone === 'warn' ? 'bg-amber-900 text-amber-100' : 'bg-slate-800 text-slate-200'; return ( {label} ); } function EntityRow({ entity, connected, onToggle }) { const unavailable = entity.state === 'unavailable' || !entity.available; const isOn = entity.state === 'on'; const statusTone = unavailable ? 'warn' : isOn ? 'success' : 'muted'; const statusLabel = unavailable ? 'Unavailable' : isOn ? 'On' : 'Off'; const disableToggle = !connected || unavailable; return (
{entity.name || entity.id}
{!connected && ยท Offline}
); } export default function HomeAssistantControls() { const { session, homeAssistantToggle } = useSession(); const ha = session?.homeAssistant; const entities = useMemo(() => ha?.entities || [], [ha?.entities]); if (!ha?.enabled) { return (

Light Controls

Not configured on the server.

); } if (entities.length === 0) { return (

Light Controls

No lights or switches configured.

); } const connected = Boolean(ha?.connected); return (

Home Assistant

{entities.length}
{entities.map((entity) => ( ))}
); }