/* Pentai landing — Tweaks. Controls the static HTML via CSS vars + body classes. */
const HERO_SUB_DEFAULT = "Pentai brings homework tracking, activity scheduling, shopping lists, and household management into one elegant app — built for busy families who need smart, effortless coordination.";
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"palette": ["#2495A0", "#5BA886", "#FA8E52"],
"headlineFont": "DM Serif",
"surface": ["#FAF7F2", "#F2EDE4", "#EDE5D8"],
"cardRadius": 24,
"gradientHeadlines": false,
"floatPhone": true,
"grain": true,
"badgeStyle": "light",
"heroSub": HERO_SUB_DEFAULT
}/*EDITMODE-END*/;
const FONT_MAP = {
"Cormorant": "'Cormorant Garamond', serif",
"DM Serif": "'DM Serif Display', serif",
"Nunito": "'Nunito', sans-serif"
};
function PentaiTweaks() {
const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
// Accent palette → cool / mid / warm families + the signature gradient
React.useEffect(() => {
const r = document.documentElement.style;
const [cool, mid, warm] = t.palette;
r.setProperty('--teal', cool);
r.setProperty('--teal-light', cool);
r.setProperty('--brand-teal', cool);
r.setProperty('--amber', warm);
r.setProperty('--amber-light', warm);
r.setProperty('--brand-amber', warm);
r.setProperty('--brand-grad', `linear-gradient(115deg, ${cool} 0%, ${mid} 48%, ${warm} 100%)`);
}, [t.palette]);
// Surface tone
React.useEffect(() => {
const r = document.documentElement.style;
const [c1, c2, c3] = t.surface;
r.setProperty('--cream', c1);
r.setProperty('--cream-2', c2);
r.setProperty('--cream-3', c3);
}, [t.surface]);
React.useEffect(() => {
document.documentElement.style.setProperty('--display-font', FONT_MAP[t.headlineFont] || FONT_MAP.Cormorant);
}, [t.headlineFont]);
React.useEffect(() => {
document.documentElement.style.setProperty('--card-radius', t.cardRadius + 'px');
}, [t.cardRadius]);
React.useEffect(() => {
document.body.classList.toggle('solid-headlines', !t.gradientHeadlines);
}, [t.gradientHeadlines]);
React.useEffect(() => {
document.body.classList.toggle('no-float', !t.floatPhone);
}, [t.floatPhone]);
React.useEffect(() => {
document.body.classList.toggle('no-grain', !t.grain);
}, [t.grain]);
React.useEffect(() => {
document.body.classList.toggle('badges-light', t.badgeStyle === 'light');
}, [t.badgeStyle]);
React.useEffect(() => {
const el = document.querySelector('.hero-sub');
if (el) el.textContent = t.heroSub;
}, [t.heroSub]);
return (
setTweak('palette', v)} />
setTweak('gradientHeadlines', v)} />
setTweak('headlineFont', v)} />
setTweak('surface', v)} />
setTweak('cardRadius', v)} />
setTweak('floatPhone', v)} />
setTweak('grain', v)} />
setTweak('badgeStyle', v)} />
setTweak('heroSub', v)} />
);
}
ReactDOM.createRoot(document.getElementById('tweaks-root')).render();