/* FreeSize — app shell + mount */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "dark": false, "accent": "oklch(0.575 0.108 220)", "density": "regular", "showCounts": true }/*EDITMODE-END*/; function deriveAccent(c) { return { "--accent": c, "--accent-2": `color-mix(in oklch, ${c} 84%, black)`, "--accent-soft": `color-mix(in oklch, ${c} 14%, var(--surface))`, "--accent-soft-2": `color-mix(in oklch, ${c} 26%, var(--surface))`, "--accent-border": `color-mix(in oklch, ${c} 46%, var(--surface))`, }; } function App() { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); const [view, setView] = React.useState("scan"); React.useEffect(() => { document.documentElement.setAttribute("data-theme", t.dark ? "dark" : "light"); }, [t.dark]); const accentVars = deriveAccent(t.accent); const nav = { view, setView }; return (
{/* shared svg defs for app icon gradient */}
{/* generic OS-neutral titlebar */}
FreeSize
{/* active view — each view renders its own merged app-bar (brand + controls + tabs) */}
{view === "scan" ? : }
setTweak("dark", v)} /> setTweak("accent", v)} /> setTweak("density", v)} /> setTweak("showCounts", v)} />
); } ReactDOM.createRoot(document.getElementById("root")).render();