web/index.html
Rama master · réplica de lectura del repositorio original.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta name="theme-color" content="#060709" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="manifest" href="/manifest.webmanifest" />
<title>Nexul</title>
<script>
// One coalesced theme write before first paint: no flash, no double
// apply. Dark-first ("The Midnight Console"): the persisted store wins,
// otherwise the app boots dark. The persisted store uses the same
// "theme" localStorage key as zustand/persist, so toggle writes stay
// in sync with this bootstrap.
// ponytail: named-theme color overrides (Ember/Ocean/Grove) still
// apply post-mount via themeStore's rehydration, not here — a brief
// flash of Console's colors is an accepted corner for a settings
// feature; duplicate the palette in this script if that flash matters.
try {
var stored = JSON.parse(localStorage.getItem("theme") || "{}");
var mode = stored.state && stored.state.appearanceMode;
var theme = stored.state && stored.state.theme;
var isDark;
if (mode === "light") isDark = false;
else if (mode === "dark") isDark = true;
else if (mode === "system") isDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
// No stored preference → boot dark (the console is the brand).
else isDark = theme ? theme === "dark" : true;
document.documentElement.classList.toggle("dark", isDark);
// The status bar takes the canvas colour of the mode; themePalettes keeps it in step after mount.
if (!isDark) document.querySelector('meta[name="theme-color"]').setAttribute("content", "#edeef1");
} catch (e) {
document.documentElement.classList.add("dark");
}
</script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>