Files
Momento/memento-note/lib/theme-script.ts
Antigravity 556a0b2f3f feat(credits): solde IA unique (option M), packs Stripe et polish billing
Un pot de crédits global (BASIC 100 / PRO 1 000 / BUSINESS 4 000) remplace
les seaux par fonction côté débit. Packs one-shot S/M/L, admin sans seaux
legacy, usage multi-features, hints de coût, anti-flash thème et hydratation
admin. Inclut aussi le pipeline slides renforcé et la page publique polishée.
2026-07-16 20:43:18 +00:00

40 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Script inline exécuté avant lhydratation : même logique que `applyDocumentTheme`.
*/
import { normalizeThemeId } from './apply-document-theme'
export function getThemeScript(serverTheme: string = 'light', serverAccentColor: string | null = null) {
const fallback = normalizeThemeId(serverTheme)
const defaultAccent = serverAccentColor || '#A47148'
return `
(function() {
try {
var fallback = ${JSON.stringify(fallback)};
var stored = localStorage.getItem('theme-preference');
var raw = stored || fallback;
if (raw === 'slate') raw = 'light';
var allowed = { light:1, dark:1, auto:1, sepia:1, midnight:1, rose:1, green:1, lavender:1, sand:1, ocean:1, sunset:1, blue:1 };
var theme = allowed[raw] ? raw : 'light';
var root = document.documentElement;
try {
document.cookie = 'memento-theme=' + encodeURIComponent(theme) + '; path=/; max-age=31536000; SameSite=Lax';
if (!stored) localStorage.setItem('theme-preference', theme);
} catch (e) {}
var wantsDark = theme === 'dark' || theme === 'midnight' || (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches);
if (wantsDark) root.classList.add('dark');
else root.classList.remove('dark');
if (theme === 'auto' || theme === 'dark' || theme === 'light') root.removeAttribute('data-theme');
else {
root.setAttribute('data-theme', theme);
}
root.setAttribute('data-applied-theme', theme);
var accentStored = localStorage.getItem('accent-color');
var effectiveAccent = accentStored || ${JSON.stringify(defaultAccent)};
root.style.setProperty('--color-brand-accent', effectiveAccent);
} catch (e) {
console.error('Theme script error', e);
}
})();
`.trim()
}