50 lines
2.4 KiB
HTML
50 lines
2.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" class="dark">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="icon" type="image/svg+xml" href="/brand/favicon.svg">
|
|
<link rel="alternate icon" href="/brand/favicon.ico">
|
|
<link rel="apple-touch-icon" href="/brand/apple-touch-icon.png">
|
|
<meta name="theme-color" content="#101417">
|
|
<meta name="description" content="Calm command for household money.">
|
|
<meta property="og:title" content="Bill Tracker">
|
|
<meta property="og:description" content="Calm command for household money.">
|
|
<meta property="og:image" content="/brand/social-preview.png">
|
|
<meta property="og:image:type" content="image/png">
|
|
<meta property="og:image:width" content="1200">
|
|
<meta property="og:image:height" content="630">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Bill Tracker">
|
|
<meta name="twitter:description" content="Calm command for household money.">
|
|
<meta name="twitter:image" content="/brand/social-preview.png">
|
|
<meta name="mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
<meta name="apple-mobile-web-app-title" content="Bill Tracker">
|
|
<title>Bill Tracker</title>
|
|
<script>
|
|
// Pre-bundle theme apply — avoids a light/dark flash. Mirrors applyTheme in
|
|
// client/contexts/ThemeContext.tsx (theme 'system' follows the OS).
|
|
(function () {
|
|
try {
|
|
var s = localStorage.getItem('bt-theme');
|
|
if (s === 'dark-purple') s = 'dark';
|
|
var theme = (s === 'light' || s === 'dark' || s === 'system') ? s : 'dark';
|
|
var resolved = theme === 'system'
|
|
? ((window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light')
|
|
: theme;
|
|
var root = document.documentElement;
|
|
if (resolved === 'dark') root.classList.add('dark'); else root.classList.remove('dark');
|
|
var m = document.querySelector('meta[name="theme-color"]');
|
|
if (m) m.setAttribute('content', resolved === 'dark' ? '#101417' : '#f8faf9');
|
|
} catch (e) { /* localStorage/matchMedia unavailable — keep default */ }
|
|
})();
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="/client/main.tsx"></script>
|
|
</body>
|
|
</html>
|