import type { LivestreamStore } from "@streamplace/core"; import { AlertCircle, AlertTriangle, Info, X } from "lucide-react"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useStore } from "zustand"; interface Problem { code: string; severity: string; message: string; link?: string; } function ProblemIcon({ severity }: { severity: string }) { switch (severity) { case "error": return ; case "warning": return ; case "info": return ; default: return ; } } function severityBg(severity: string): string { switch (severity) { case "error": return "bg-red-500/10 border-red-500/20"; case "warning": return "bg-amber-500/10 border-amber-500/20"; case "info": return "bg-blue-500/10 border-blue-500/20"; default: return "bg-(--color-bg-elevated) border-(--color-border)"; } } /** * Displays stream optimization warnings from the LivestreamStore. * Renders as a card widget for the dashboard control panel. */ export function ProblemsWidget({ store }: { store: LivestreamStore }) { const { t } = useTranslation("common"); const problems = useStore(store, (s) => s.problems); const [dismissed, setDismissed] = useState(false); if (problems.length === 0 || dismissed) { return null; } return (

{t("stream-optimization", { defaultValue: "Stream Optimization" })}

{problems.length > 0 && ( {problems.length} )}
{problems.map((problem: Problem) => (
{problem.code}
{problem.message}
{problem.link && ( Learn more )}
))}
); }