@@ -5,6 +5,23 @@ import { Manrope, Space_Grotesk } from 'next/font/google';
55import { Providers } from '../src/components/Providers' ;
66import { themeStylesheet } from '../src/design/theme' ;
77
8+ const themeInitScript = `
9+ (function() {
10+ try {
11+ const storageKey = 'fs-theme';
12+ const stored = localStorage.getItem(storageKey);
13+ const mode = stored === 'light' || stored === 'dark' || stored === 'system' ? stored : 'system';
14+ const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
15+ const resolved = mode === 'system' ? (prefersDark ? 'dark' : 'light') : mode;
16+ document.documentElement.dataset.theme = resolved;
17+ document.body.dataset.theme = resolved;
18+ } catch (_) {
19+ document.documentElement.dataset.theme = 'light';
20+ document.body.dataset.theme = 'light';
21+ }
22+ })();
23+ ` ;
24+
825export const metadata : Metadata = {
926 title : 'FairShare | Smart Group Expense Sharing' ,
1027 description : 'Track shared expenses, simplify debts, and settle quickly with FairShare.' ,
@@ -24,6 +41,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
2441 < html lang = "en" data-theme = "light" className = { `${ manrope . variable } ${ spaceGrotesk . variable } ` } >
2542 < head >
2643 < style id = "fs-theme-vars" > { themeStylesheet } </ style >
44+ < script dangerouslySetInnerHTML = { { __html : themeInitScript } } />
2745 </ head >
2846 < body className = "min-h-screen" >
2947 < Providers >
0 commit comments