// App.tsx import { useEffect, useState } from "react"; import { Logs, type LogEntry } from "./Logs"; import { Covers } from "./Covers"; import "./App.css"; export default function App() { const [theme, setTheme] = useState<"light" | "dark">("dark"); const [logs, setLogs] = useState([]); const [view, setView] = useState<"logs" | "covers">("logs"); const toggleTheme = () => setTheme((prev) => (prev === "dark" ? "light" : "dark")); const mapSSEToLogEntry = (sseData: any, index: number): LogEntry => ({ id: sseData.time || `log-${index}`, level: sseData.level || "info", message: sseData.content || "", }); useEffect(() => { const evtSource = new EventSource("/log-sse"); let idx = 0; evtSource.addEventListener("message", (e: MessageEvent) => { try { const data = JSON.parse(e.data); const newLog = mapSSEToLogEntry(data, idx++); setLogs((prev) => [...prev, newLog]); } catch (err) { console.error("Erreur parsing SSE:", err); } }); return () => { evtSource.close(); }; }, []); return (

PMO-Music

{view === "logs" && } {view === "covers" && }
); }