import { Link } from "react-router-dom"; import { useDashboard } from "../hooks/useDashboard"; import Clock from "../components/Clock"; import WeatherCard from "../components/WeatherCard"; import HourlyForecast from "../components/HourlyForecast"; import NewsGrid from "../components/NewsGrid"; import ServerCard from "../components/ServerCard"; import HomeAssistant from "../components/HomeAssistant"; import TasksCard from "../components/TasksCard"; import MqttCard from "../components/MqttCard"; import { RefreshCw, Wifi, WifiOff, AlertTriangle, Settings } from "lucide-react"; export default function Dashboard() { const { data, loading, error, connected, refresh } = useDashboard(); return (
{error && (

{error}

)}

Daily Briefing

{loading && !data ? ( ) : data ? ( <>
{data.servers.servers.map((srv) => ( ))}
{(data.mqtt?.connected || (data.mqtt?.entities?.length ?? 0) > 0) && (
)}
) : null}
); } function LiveIndicator({ connected }: { connected: boolean }) { return (
{connected &&
}
{connected ? "Live" : "Offline"} {connected ? : }
); } function LoadingSkeleton() { return (
{Array.from({ length: 4 }).map((_, i) => )}
{Array.from({ length: 8 }).map((_, i) => )}
); } function SkeletonCard({ className = "" }: { className?: string }) { return (
); }