From c780decdc32cda441917a95248e82745335e8fb3 Mon Sep 17 00:00:00 2001 From: karim Date: Sun, 31 May 2026 11:58:47 +0200 Subject: [PATCH] =?UTF-8?q?cms:=20Sveltia-Einfl=C3=BCsse=20im=20Admin=20(S?= =?UTF-8?q?uche,=20fixierte=20Action-Leiste,=20Status-Chips,=20Vorschau-To?= =?UTF-8?q?ggle)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sidebar-Suche, Gruppen mit Zähler, zweizeilige Einträge mit Datum - Editor-Kopf fixiert mit Speichern/Vorschau/Publizieren + Entwurf/Veröffentlicht-Chip - Vorschau-Pane ein-/ausblendbar - schwarze Topbar + Newsreader-Serif + Creme + Terracotta = Site-Look Co-Authored-By: Claude Opus 4.8 --- cms/admin/src/App.jsx | 211 +++++++++++++++++++++------------------ cms/admin/src/styles.css | 84 +++++++++------- 2 files changed, 160 insertions(+), 135 deletions(-) diff --git a/cms/admin/src/App.jsx b/cms/admin/src/App.jsx index 01cec75..c26fe09 100644 --- a/cms/admin/src/App.jsx +++ b/cms/admin/src/App.jsx @@ -70,6 +70,7 @@ function Login() { function Dashboard({ email }) { const [entries, setEntries] = useState([]); const [current, setCurrent] = useState(null); + const [query, setQuery] = useState(''); const [msg, setMsg] = useState(null); async function refresh() { @@ -80,15 +81,16 @@ function Dashboard({ email }) { useEffect(() => { if (!msg) return; const t = setTimeout(() => setMsg(null), 4000); return () => clearTimeout(t); }, [msg]); async function open(entry) { - try { - const e = await api.read(entry.path); - setCurrent(fromRead(e)); - } catch (err) { setMsg({ type: 'err', text: err.message }); } + try { setCurrent(fromRead(await api.read(entry.path))); } + catch (err) { setMsg({ type: 'err', text: err.message }); } } - // Nach Typ gruppieren. + const q = query.trim().toLowerCase(); + const filtered = q + ? entries.filter((e) => e.title.toLowerCase().includes(q) || (e.section || '').includes(q)) + : entries; const groups = { beitrag: [], seite: [], rubrik: [] }; - for (const e of entries) (groups[e.kind] || groups.seite).push(e); + for (const e of filtered) (groups[e.kind] || groups.seite).push(e); return (
@@ -96,22 +98,29 @@ function Dashboard({ email }) { OPENBUREAU Redaktion - {email} + {email}