// Shared chrome: theme tokens, base styles, nav, footer
const TWEAK_DEFAULTS_SHARED = /*EDITMODE-BEGIN*/{
"theme": "dark",
"accent": "bordeaux"
}/*EDITMODE-END*/;
var ACCENTS_SITE = {
bordeaux: { c: "#7A1F2B", c2: "#a93341", deep: "#4d1119", name: "Bordeaux" },
ink: { c: "#1E3A8A", c2: "#3d62b5", deep: "#0f1d44", name: "Tinte" },
graphite: { c: "#3a4554", c2: "#5b6878", deep: "#1f2937", name: "Graphit" },
sage: { c: "#3F6B3A", c2: "#5e8d57", deep: "#1f3520", name: "Salbei" },
amber: { c: "#B8602B", c2: "#d18244", deep: "#5c3015", name: "Bernstein" },
};
var VERVE_DOWNLOAD_URL = "https://vervewriter.de/downloads/Verve-latest.dmg";
var VERVE_DOWNLOAD_EVENT_URL = "";
function applyTheme(tweaks) {
document.documentElement.setAttribute("data-theme", tweaks.theme);
const a = ACCENTS_SITE[tweaks.accent] || ACCENTS_SITE.bordeaux;
document.documentElement.style.setProperty("--accent", a.c);
document.documentElement.style.setProperty("--accent-2", a.c2);
document.documentElement.style.setProperty("--accent-deep", a.deep);
}
function trackVerveDownload(source) {
if (typeof window.plausible === "function") {
window.plausible("Download", { props: { item: "Verve-latest.dmg", source } });
}
if (window.umami && typeof window.umami.track === "function") {
window.umami.track("Download", { item: "Verve-latest.dmg", source });
}
if (!VERVE_DOWNLOAD_EVENT_URL) return;
const payload = JSON.stringify({
event: "download",
item: "Verve-latest.dmg",
source,
path: window.location.pathname,
at: new Date().toISOString(),
});
if (navigator.sendBeacon) {
navigator.sendBeacon(VERVE_DOWNLOAD_EVENT_URL, new Blob([payload], { type: "application/json" }));
return;
}
fetch(VERVE_DOWNLOAD_EVENT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: payload,
keepalive: true,
}).catch(() => {});
}
function SiteNav({ active }) {
const links = [
{ href: "warum-verve.html", label: "Warum Verve" },
{ href: "features.html", label: "Funktionen" },
{ href: "ki.html", label: "KI" },
{ href: "datenschutz.html", label: "Datenschutz" },
];
return (
);
}
function SiteFooter() {
return (
);
}
// Apple-style hero card: big screenshot + text under it
function FeatureCard({ eyebrow, title, sub, route, focusMode = false, hideInspector = true, dark = true, accent = "bordeaux", children, tall = false }) {
const wrapRef = React.useRef(null);
const [scale, setScale] = React.useState(1);
React.useEffect(() => {
function update() {
const el = wrapRef.current;
if (!el) return;
setScale(Math.max(0.18, Math.min(1, (el.clientWidth - 32) / 1280)));
}
update();
window.addEventListener("resize", update);
return () => window.removeEventListener("resize", update);
}, []);
return (
{eyebrow}
{title}
{sub}
{children && {children}
}
);
}
Object.assign(window, { TWEAK_DEFAULTS_SHARED, ACCENTS_SITE, VERVE_DOWNLOAD_URL, VERVE_DOWNLOAD_EVENT_URL, applyTheme, trackVerveDownload, SiteNav, SiteFooter, FeatureCard });