Skip to content

feat(ui): light theme — CSS var refactor + sidebar toggle (v1.18 B) - #49

Merged
argszero merged 1 commit into
mainfrom
feat/ui-ue-round3-theme
Aug 17, 2026
Merged

argszero merged 1 commit into
mainfrom
feat/ui-ue-round3-theme

Conversation

@argszero

Copy link
Copy Markdown
Owner

Summary

Rant 2026-08-17T18:06:09 (UI/UE 第三轮多角度深化), item B — 亮色主题: the UI is currently dark-only; add a light theme via CSS-variable refactor, with a sidebar toggle (sun/moon SVG), localStorage persistence, and prefers-color-scheme respected on first load.

Changes

  • CSS: :root[data-theme="light"] redefines the full color set (--bg/--bg-soft/--bg-card/--bg-hover/--border/--text/--text-dim/--text-mute/--accent/--accent-soft/--accent-text/--ok/--warn/--danger + shadows). Previously hard-coded colors extracted to semantic vars shared by both themes: --table-row-border, --table-stripe, --card-hover-border, --card-shadow, --danger-soft, --danger-text, --spin-track, --overlay;
  • HTML: #theme-toggle button in the sidebar top (sun icon; moon icon shown in light theme via CSS);
  • JS: init reads localStorage["atp-theme"], falling back to prefers-color-scheme; click toggles document.documentElement.dataset.theme + saves + toast feedback;
  • Both themes keep clear contrast for body / secondary text / borders;
  • Docs: docs/user-stories.md v1.18 changelog adds item B; ui/README.md 主题约定 section.

Acceptance

Light theme toggleable with localStorage memory; first load respects system preference.

Tests

  • node --check on app.js — syntax OK
  • Theme logic tests 4/4 PASS (default dark w/o saved+system dark; toggle → light + saved; toggle back → dark + saved)
  • DOM-stub init + shortcuts + field-error smokes — no ReferenceError
  • cargo test — 1 passed
  • cargo fmt --check — clean

@argszero
argszero merged commit 2615631 into main Aug 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant