/* ===================== TWEAKS PANEL ===================== */
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"navMode": "multi",
"accentTone": "green-dominant",
"heroChips": true,
"density": "comfortable",
"ctaCopy": "Find your starting point"
}/*EDITMODE-END*/;
function TweaksPanel() {
const [open, setOpen] = React.useState(false);
const [available, setAvailable] = React.useState(false);
const [t, setT] = React.useState(TWEAK_DEFAULTS);
// Apply tweaks live
React.useEffect(() => {
const root = document.documentElement;
// accent tone
if (t.accentTone === "navy-dominant") {
root.style.setProperty("--green-deep", "#1b3f73");
root.style.setProperty("--green", "#2a558f");
root.style.setProperty("--green-spring", "#3d77c4");
root.style.setProperty("--green-bright", "#8ab4e3");
} else if (t.accentTone === "orange-dominant") {
root.style.setProperty("--green-deep", "#c66a14");
root.style.setProperty("--green", "#ed7b1f");
root.style.setProperty("--green-spring", "#f39c20");
root.style.setProperty("--green-bright", "#fbd28a");
} else {
root.style.removeProperty("--green-deep");
root.style.removeProperty("--green");
root.style.removeProperty("--green-spring");
root.style.removeProperty("--green-bright");
}
// density
document.body.dataset.density = t.density;
// nav mode
try { localStorage.setItem("smbe_nav_mode", t.navMode); } catch (e) {}
// hero chips
document.querySelectorAll(".hc-chip").forEach((el) => {
el.style.display = t.heroChips ? "" : "none";
});
// cta copy
const ctas = document.querySelectorAll('[data-cta-find]');
ctas.forEach((el) => { el.textContent = t.ctaCopy; });
// single-page mode: convert internal nav links to anchors
if (t.navMode === "single") {
document.querySelectorAll('a[href*="tiers/"], a[href*="case-studies/"], a[href*="contact.html"]').forEach((a) => {
const href = a.getAttribute("href");
if (href.includes("tiers/")) a.setAttribute("href", "#tiers");
else if (href.includes("case-studies/")) a.setAttribute("href", "#cases");
else if (href.includes("contact.html")) a.setAttribute("href", "#contact");
});
}
}, [t]);
// Edit mode protocol
React.useEffect(() => {
const onMsg = (e) => {
if (!e.data) return;
if (e.data.type === "__activate_edit_mode") setOpen(true);
if (e.data.type === "__deactivate_edit_mode") setOpen(false);
};
window.addEventListener("message", onMsg);
window.parent.postMessage({ type: "__edit_mode_available" }, "*");
setAvailable(true);
return () => window.removeEventListener("message", onMsg);
}, []);
const update = (key, val) => {
const next = { ...t, [key]: val };
setT(next);
window.parent.postMessage({ type: "__edit_mode_set_keys", edits: { [key]: val } }, "*");
};
const close = () => {
setOpen(false);
window.parent.postMessage({ type: "__edit_mode_dismissed" }, "*");
};
if (!open) return null;
return (
Tweaks
Try variations live
Navigation
{[
{ v: "multi", l: "Multi-page", s: "Tiers, cases, contact as separate pages" },
{ v: "single", l: "Single page", s: "Everything on this scroll" },
].map((o) => (
))}
Accent palette
{[
{ v: "green-dominant", colors: ["#0e7a3d", "#5bba42", "#f39c20"] },
{ v: "navy-dominant", colors: ["#1b3f73", "#3d77c4", "#f39c20"] },
{ v: "orange-dominant", colors: ["#c66a14", "#f39c20", "#fbd28a"] },
].map((s) => (
))}
Hero floating chips
{t.heroChips ? "Showing" : "Hidden"}
Hero CTA copy
update("ctaCopy", e.target.value)}
/>
Try: "Take the 30-sec quiz", "See our work", "Let's chat"
Density
{["compact", "comfortable", "spacious"].map((o) => (
))}
Tweaks save automatically.
);
}
/* styles for the panel inline */
const tweakStyleEl = document.createElement("style");
tweakStyleEl.textContent = `
.tw-panel {
position: fixed;
right: 20px;
bottom: 20px;
width: 340px;
max-height: 80vh;
overflow-y: auto;
background: white;
border: 1px solid var(--line-strong);
border-radius: 18px;
box-shadow: 0 24px 60px rgba(11,31,58,0.2);
z-index: 1000;
padding: 22px;
font-family: var(--font-body);
font-size: 14px;
color: var(--ink);
}
.tw-head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.tw-title { font-family: var(--font-display); font-size: 20px; font-weight: 600; }
.tw-sub { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.tw-close { width: 28px; height: 28px; border-radius: 50%; background: var(--paper-2); font-size: 20px; line-height: 1; color: var(--ink-3); }
.tw-close:hover { background: var(--paper-3); color: var(--ink); }
.tw-section { margin-bottom: 22px; }
.tw-label { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-3); margin-bottom: 10px; }
.tw-radio { display: flex; flex-direction: column; gap: 6px; }
.tw-radio.compact { flex-direction: row; }
.tw-radio.compact .tw-radio-opt { text-align: center; padding: 8px 10px; flex: 1; }
.tw-radio-opt { text-align: left; padding: 10px 14px; background: var(--paper); border: 1.5px solid var(--line); border-radius: 10px; transition: border-color 0.2s; }
.tw-radio-opt:hover { border-color: var(--line-strong); }
.tw-radio-opt.on { border-color: var(--green-deep); background: rgba(91,186,66,0.06); }
.tw-radio-l { font-weight: 600; font-size: 13px; text-transform: capitalize; }
.tw-radio-s { font-size: 11px; color: var(--ink-3); margin-top: 2px; }
.tw-swatches { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.tw-swatch { padding: 10px; border: 1.5px solid var(--line); border-radius: 10px; background: var(--paper); transition: border-color 0.2s; }
.tw-swatch:hover { border-color: var(--line-strong); }
.tw-swatch.on { border-color: var(--green-deep); background: rgba(91,186,66,0.06); }
.tw-swatch-dots { display: flex; gap: 4px; justify-content: center; margin-bottom: 6px; }
.tw-swatch-dots span { width: 14px; height: 14px; border-radius: 50%; display: inline-block; }
.tw-swatch-l { font-size: 10px; color: var(--ink-3); text-align: center; text-transform: capitalize; }
.tw-toggle-row { display: flex; justify-content: space-between; align-items: center; }
.tw-toggle { width: 40px; height: 22px; border-radius: 12px; background: var(--line-strong); position: relative; transition: background 0.2s; }
.tw-toggle.on { background: var(--green-deep); }
.tw-toggle-knob { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: white; transition: transform 0.2s; }
.tw-toggle.on .tw-toggle-knob { transform: translateX(18px); }
.tw-input { width: 100%; padding: 10px 12px; font-family: inherit; font-size: 13px; background: var(--paper); border: 1.5px solid var(--line); border-radius: 10px; outline: none; }
.tw-input:focus { border-color: var(--green-deep); background: white; }
.tw-help { font-size: 11px; color: var(--ink-3); margin-top: 6px; }
.tw-foot { font-size: 11px; color: var(--ink-3); text-align: center; padding-top: 12px; border-top: 1px solid var(--line); }
body[data-density="compact"] section { padding-top: 80px !important; padding-bottom: 80px !important; }
body[data-density="spacious"] section.hero, body[data-density="spacious"] section.journey,
body[data-density="spacious"] section.industries, body[data-density="spacious"] section.cases,
body[data-density="spacious"] section.process, body[data-density="spacious"] section.proof-band,
body[data-density="spacious"] section.contact-teaser { padding-top: 160px !important; padding-bottom: 160px !important; }
`;
document.head.appendChild(tweakStyleEl);
window.TweaksPanel = TweaksPanel;