feat: use CSS prefers-color-scheme for dark mode (no JS)
- Remove inline JS that sets data-theme from localStorage - Use @media (prefers-color-scheme: dark) in CSS for automatic dark mode - Remove JS-dependent theme toggle from preferences - Theme now follows system preference automatically Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8f2fd671f1
commit
056d2d1175
3 changed files with 3 additions and 31 deletions
|
|
@ -24,7 +24,7 @@
|
||||||
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
|
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-theme="dark"] {
|
@media (prefers-color-scheme: dark) {
|
||||||
--bg: #0f0f0f;
|
--bg: #0f0f0f;
|
||||||
--bg-secondary: #1a1a1a;
|
--bg-secondary: #1a1a1a;
|
||||||
--bg-tertiary: #242424;
|
--bg-tertiary: #242424;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{{define "base"}}
|
{{define "base"}}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en" data-theme="light">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
<link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml">
|
<link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml">
|
||||||
<link title="samsa" type="application/opensearchdescription+xml" rel="search" href="/opensearch.xml">
|
<link title="samsa" type="application/opensearchdescription+xml" rel="search" href="/opensearch.xml">
|
||||||
<meta name="samsa" content="samsa">
|
<meta name="samsa" content="samsa">
|
||||||
<script>var s=document.documentElement;s.setAttribute('data-theme',localStorage.getItem('samsa-theme')||'light');</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header class="site-header">
|
<header class="site-header">
|
||||||
|
|
|
||||||
|
|
@ -4,16 +4,12 @@
|
||||||
<h1 class="preferences-title">Preferences</h1>
|
<h1 class="preferences-title">Preferences</h1>
|
||||||
|
|
||||||
<form class="preferences-form" method="POST" action="/preferences">
|
<form class="preferences-form" method="POST" action="/preferences">
|
||||||
<input type="hidden" name="theme" id="theme-input" value="light">
|
|
||||||
|
|
||||||
<section class="pref-section">
|
<section class="pref-section">
|
||||||
<h2 class="pref-section-title">Appearance</h2>
|
<h2 class="pref-section-title">Appearance</h2>
|
||||||
<div class="pref-row">
|
<div class="pref-row">
|
||||||
<label>Theme</label>
|
<label>Theme</label>
|
||||||
<div class="theme-buttons">
|
<span class="theme-info">Follows system preference</span>
|
||||||
<button type="button" class="theme-btn active" data-theme="light">Light</button>
|
|
||||||
<button type="button" class="theme-btn" data-theme="dark">Dark</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -109,29 +105,6 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(function() {
|
(function() {
|
||||||
// Theme buttons
|
|
||||||
var themeInput = document.getElementById('theme-input');
|
|
||||||
var themeButtons = document.querySelectorAll('.theme-btn');
|
|
||||||
|
|
||||||
// Load saved theme
|
|
||||||
var savedTheme = localStorage.getItem('samsa-theme') || 'light';
|
|
||||||
themeInput.value = savedTheme;
|
|
||||||
document.querySelectorAll('.theme-btn').forEach(function(btn) {
|
|
||||||
btn.classList.toggle('active', btn.dataset.theme === savedTheme);
|
|
||||||
});
|
|
||||||
document.documentElement.setAttribute('data-theme', savedTheme);
|
|
||||||
|
|
||||||
themeButtons.forEach(function(btn) {
|
|
||||||
btn.addEventListener('click', function() {
|
|
||||||
var theme = btn.dataset.theme;
|
|
||||||
themeInput.value = theme;
|
|
||||||
themeButtons.forEach(function(b) { b.classList.remove('active'); });
|
|
||||||
btn.classList.add('active');
|
|
||||||
document.documentElement.setAttribute('data-theme', theme);
|
|
||||||
localStorage.setItem('samsa-theme', theme);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Load saved engine preferences
|
// Load saved engine preferences
|
||||||
var savedEngines = JSON.parse(localStorage.getItem('samsa-engines') || 'null');
|
var savedEngines = JSON.parse(localStorage.getItem('samsa-engines') || 'null');
|
||||||
if (savedEngines) {
|
if (savedEngines) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue