/* global React, ReactDOM, TweaksPanel, useTweaks, TweakSection, TweakRadio, TweakToggle, TweakColor */ const { useState, useEffect } = React; const PALETTES = { forest: { '--green': '#2f4a3a', '--green-deep': '#1f3225', '--gold': '#a8895a', '--gold-warm': '#d4b170', '--paper': '#f7f2e8', '--paper-warm': '#efe7d4', '--paper-deep': '#e6dbc2', '--ink': '#1a1a14', '--ink-soft': '#5b574c', '--line': '#d8cfb9' }, oxblood: { '--green': '#7a2e2a', '--green-deep': '#5a1e1a', '--gold': '#b08c54', '--gold-warm': '#e0bd80', '--paper': '#faf3e6', '--paper-warm': '#f1e6cf', '--paper-deep': '#e8d9ba', '--ink': '#1c1410', '--ink-soft': '#5e524a', '--line': '#dccfb1' }, navy: { '--green': '#1f3a5f', '--green-deep': '#142640', '--gold': '#a8895a', '--gold-warm': '#d4b170', '--paper': '#f6f1e6', '--paper-warm': '#ece5d2', '--paper-deep': '#dfd5be', '--ink': '#13181e', '--ink-soft': '#525a66', '--line': '#d4cab4' }, }; function App() { const [tweaks, setTweak] = useTweaks(/*EDITMODE-BEGIN*/{ "palette": "forest", "heroMode": "slideshow", "showCountdown": true, "stickyCta": true, "serif": "Cormorant Garamond" }/*EDITMODE-END*/); // CMS-Inhalte aus Supabase laden (Admin-Bereich: admin.html) const [news, setNews] = useState(null); const [events, setEvents] = useState(null); useEffect(() => { // News laden window._sb.from('news').select('*').order('created_at', { ascending: false }) .then(({ data }) => { if (data && data.length) { // Spaltenname is_lead โ†’ lead (erwartet von sections.jsx) setNews(data.map(n => ({ ...n, lead: n.is_lead }))); } }).catch(() => {}); // Events laden window._sb.from('events').select('*').order('date', { ascending: true }) .then(({ data }) => { if (!data || !data.length) return; // Spalten mappen: description โ†’ desc, is_primary โ†’ primary const items = data.map(e => ({ ...e, desc: e.description, primary: e.is_primary })); const today = new Date(); today.setHours(0, 0, 0, 0); const upcoming = items.filter(e => new Date(e.date) >= today); setEvents(upcoming.length ? upcoming : items); }).catch(() => {}); }, []); // Apply palette useEffect(() => { const p = PALETTES[tweaks.palette] || PALETTES.forest; Object.entries(p).forEach(([k, v]) => document.documentElement.style.setProperty(k, v)); }, [tweaks.palette]); // Apply serif useEffect(() => { document.documentElement.style.setProperty('--serif', `'${tweaks.serif}', 'Cormorant Garamond', Georgia, serif`); }, [tweaks.serif]); return ( <>