47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { ScrollViewStyleReset } from 'expo-router/html';
|
|
import { type PropsWithChildren } from 'react';
|
|
|
|
import { lightColors, darkColors } from '@/src/core/colors';
|
|
|
|
export default function Root({ children }: PropsWithChildren) {
|
|
const lightBg = lightColors.background;
|
|
const darkBg = darkColors.background;
|
|
|
|
return (
|
|
<html lang="de">
|
|
<head>
|
|
<meta charSet="utf-8" />
|
|
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `
|
|
(function() {
|
|
try {
|
|
let isDark = false;
|
|
let stored = localStorage.getItem('theme-storage');
|
|
if (stored) {
|
|
let parsed = JSON.parse(stored);
|
|
if (parsed && parsed.state) {
|
|
isDark = parsed.state.isDark;
|
|
}
|
|
} else {
|
|
isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
}
|
|
|
|
let color = isDark ? '${darkBg}' : '${lightBg}';
|
|
document.documentElement.style.setProperty('background-color', color, 'important');
|
|
|
|
} catch (e) {
|
|
console.error('Splash script failed', e);
|
|
}
|
|
})();
|
|
`,
|
|
}}
|
|
/>
|
|
<ScrollViewStyleReset />
|
|
</head>
|
|
<body>{children}</body>
|
|
</html>
|
|
);
|
|
} |