Theme pairs with dark mode toggle, gear active state, PALETTE_DEFAULT_DARK (#127)
- Collapse the 10 theme cards into 5 pairs: light swatches top row, dark bottom row - Dark mode toggle in settings and topbar (sun/moon inline SVG) - Toggling dark mode switches to the other variant of the selected pair - Persist pair id in localStorage palette-theme, dark flag in palette-dark - Head script resolves base+dark to variant; URL ?theme= accepts both ids and wins - Settings gear highlights like nav tabs on /settings - PALETTE_DEFAULT_DARK env var sets server default dark state (default on) - Server-side resolution helpers + tests
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package web
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestResolvePreset(t *testing.T) {
|
||||
cases := []struct {
|
||||
pair string
|
||||
dark bool
|
||||
want string
|
||||
}{
|
||||
{"", false, "midnight-light"},
|
||||
{"", true, "midnight"},
|
||||
{"midnight", false, "midnight-light"},
|
||||
{"midnight", true, "midnight"},
|
||||
{"smooth", false, "smooth"},
|
||||
{"smooth", true, "smooth-dark"},
|
||||
{"pastel-lavender", true, "pastel-lavender-dark"},
|
||||
{"pastel-peach", false, "pastel-peach"},
|
||||
{"pastel-cloud", true, "pastel-cloud-dark"},
|
||||
{"bogus", true, "midnight"},
|
||||
{"bogus", false, "midnight-light"},
|
||||
// explicit variant ids also resolve (URL ?theme= may pass them)
|
||||
{"smooth-dark", true, "midnight"},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := ResolvePreset(c.pair, c.dark); got != c.want {
|
||||
t.Errorf("ResolvePreset(%q, %v) = %q, want %q", c.pair, c.dark, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultDark(t *testing.T) {
|
||||
for _, off := range []string{"false", "0", "off", "OFF", " false "} {
|
||||
DefaultDark = true
|
||||
SetDefaultDark(off)
|
||||
if DefaultDark {
|
||||
t.Errorf("SetDefaultDark(%q): want dark off", off)
|
||||
}
|
||||
}
|
||||
for _, on := range []string{"true", "1", "on", "anything"} {
|
||||
DefaultDark = false
|
||||
SetDefaultDark(on)
|
||||
if !DefaultDark {
|
||||
t.Errorf("SetDefaultDark(%q): want dark on", on)
|
||||
}
|
||||
}
|
||||
DefaultDark = true
|
||||
}
|
||||
Reference in New Issue
Block a user