// app.jsx — root composition + Tweaks panel
// TP Seitz landing — production-quality React app
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"accent": "stahlblau",
"heroVariant": "compliance",
"darkSections": true,
"showMobileBar": true
}/*EDITMODE-END*/;
const ACCENT_PRESETS = {
"stahlblau": { signal: "#0C4E97", signalInk: "#F2F6FC", label: "Stahlblau" },
"signal-yellow": { signal: "#F5C200", signalInk: "#1A1500", label: "Signal-Gelb" },
"anthrazit": { signal: "#1C1E23", signalInk: "#FAFAF7", label: "Anthrazit" },
"cobalt": { signal: "#2E5BFF", signalInk: "#F4F6FF", label: "Cobalt" },
"ember": { signal: "#E25A1C", signalInk: "#1A0700", label: "Ember" }
};
function App() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
useMotion();
// Apply accent live via CSS var override + body data-attr (drives dark-section overrides)
React.useEffect(() => {
const a = ACCENT_PRESETS[t.accent] || ACCENT_PRESETS["anthrazit"];
document.documentElement.style.setProperty("--signal", a.signal);
document.documentElement.style.setProperty("--signal-ink", a.signalInk);
document.body.setAttribute("data-accent", t.accent);
}, [t.accent]);
const wizardRef = React.useRef(null);
const scrollToWizard = () => {
const el = document.getElementById("anfrage");
if (el) el.scrollIntoView({ behavior: "smooth", block: "start" });
};
return (
<>
Schicken Sie uns die Eckdaten Ihrer Tore — wir melden uns am gleichen Werktag
mit Termin und Preisrahmen. Keine Verkaufstermine, keine Vertragsbindung, keine
Mindestabnahme.
Eine Stunde Aufwand. Ein Jahr Rückendeckung.