import React, { useEffect, useState } from "react"; import { http } from "../lib/api"; import { toast } from "sonner"; import { History, RotateCcw, Sparkles, ChevronDown, ChevronRight } from "lucide-react"; export default function EmoIdentityPanel() { const [loading, setLoading] = useState(true); const [sections, setSections] = useState({}); const [editable, setEditable] = useState([]); const [limits, setLimits] = useState({}); const [versions, setVersions] = useState([]); const [openSection, setOpenSection] = useState(null); const load = async () => { setLoading(true); try { const [cur, saves] = await Promise.all([ http.get("/admin/emo-identity"), http.get("/admin/emo-identity/versions"), ]); setSections(cur.data.sections || {}); setEditable(cur.data.editable || []); setLimits(cur.data.limits || {}); setVersions(saves.data.versions || []); } catch (e) { toast.error(e?.response?.data?.detail || "Chargement identité impossible"); } finally { setLoading(false); } }; useEffect(() => { load(); }, []); const restore = async (versionId) => { if (!window.confirm("Restaurer cette version ? Une autobackup sera créée avant.")) return; try { await http.post("/admin/emo-identity/restore", { version_id: versionId }); toast.success("Version restaurée"); load(); } catch (e) { toast.error(e?.response?.data?.detail || "Restauration échouée"); } }; if (loading) { return

Chargement…

; } return (
Auto-édition · {limits.max_edits_per_day || 12} max/jour
{editable.map((key) => { const meta = sections[key] || {}; const isOpen = openSection === key; return (
{isOpen && meta.preview && (
                  {meta.preview}
                
)}
); })}
Sauvegardes ({versions.length})
{versions.length === 0 ? (

Aucune sauvegarde pour l'instant.

) : ( versions.map((v) => (
{v.kind} · {(v.reason || "").slice(0, 48)} {v.created_at ? new Date(v.created_at).toLocaleString("fr-FR") : ""}
)) )}
); }