// App entry — composes everything, manages sticky CTA, hosts TweaksPanel. const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "green", "density": "regular", "stickyCta": true, "showBadges": true, "chatStyle": "rich", "palette": ["#1fba68", "#2f7be5", "#ff8a3d"] }/*EDITMODE-END*/; function StickyCTA({ show }) { return (
LINEで申し込む LINEで問い合わせ
); } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [stickyShow, setStickyShow] = React.useState(false); // Sticky CTA appears after scrolling past the hero React.useEffect(() => { const onScroll = () => { setStickyShow(window.scrollY > 480); }; window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); // Apply density React.useEffect(() => { document.body.setAttribute('data-density', t.density); }, [t.density]); // Apply accent palette React.useEffect(() => { const root = document.documentElement; const map = { green: { green: '#1fba68', greenInk: '#0e8a48', greenSoft: '#e7f7ef' }, teal: { green: '#0ea5a3', greenInk: '#0a807e', greenSoft: '#daf2f1' }, indigo: { green: '#5469d4', greenInk: '#3c4ea8', greenSoft: '#e7eafa' }, }; const c = map[t.accent] || map.green; root.style.setProperty('--c-green', c.green); root.style.setProperty('--c-green-ink', c.greenInk); root.style.setProperty('--c-green-soft', c.greenSoft); }, [t.accent]); return ( <>