0f19b9089d
Split-pane role editor with tri-state channel overrides (roles/members). CSS-var themes (Gruvbox default + 9 IDE palettes) in top bar and settings.
72 lines
2.5 KiB
HTML
72 lines
2.5 KiB
HTML
<!doctype html>
|
|
<html lang="en" data-theme="gruvbox">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
<script>
|
|
// Apply saved theme before paint (migrates legacy light/dark).
|
|
(function () {
|
|
try {
|
|
var t = localStorage.getItem('dumpster-theme');
|
|
if (t === 'light') t = 'gruvbox-light';
|
|
else if (t === 'dark' || !t) t = 'gruvbox';
|
|
var ok = {
|
|
gruvbox: 1,
|
|
'gruvbox-light': 1,
|
|
'one-dark': 1,
|
|
dracula: 1,
|
|
nord: 1,
|
|
'tokyo-night': 1,
|
|
catppuccin: 1,
|
|
'solarized-dark': 1,
|
|
monokai: 1,
|
|
'github-dark': 1,
|
|
};
|
|
if (!ok[t]) t = 'gruvbox';
|
|
document.documentElement.setAttribute('data-theme', t);
|
|
document.documentElement.classList.add(t === 'gruvbox-light' ? 'light' : 'dark');
|
|
} catch (e) {
|
|
document.documentElement.setAttribute('data-theme', 'gruvbox');
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
<!-- PWA Meta Tags -->
|
|
<meta name="theme-color" content="#282828" media="(prefers-color-scheme: dark)" />
|
|
<meta name="theme-color" content="#282828" />
|
|
<meta name="color-scheme" content="dark light" />
|
|
<meta name="description" content="A chaotic, self-hosted Discord-like platform" />
|
|
|
|
<!-- Apple -->
|
|
<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="Dumpster" />
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
|
|
<!-- Favicon -->
|
|
<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="icon" type="image/png" href="/favicon.png" />
|
|
|
|
<!-- Manifest -->
|
|
<link rel="manifest" href="/manifest.json" />
|
|
|
|
<!-- Splash screens for iOS (apple-touch-startup-image) -->
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
|
|
<title>Dumpster</title>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
<script>
|
|
// Register service worker
|
|
if ('serviceWorker' in navigator) {
|
|
window.addEventListener('load', () => {
|
|
navigator.serviceWorker.register('/sw.js').catch(() => {});
|
|
});
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|