Adds user-controlled theme selection independent of OS preference: - useTheme composable: sets data-theme="dark"|"light" on <html>, persisted to localStorage as snipe:theme. Follows the same pattern as useSnipeMode. - theme.css: [data-theme="dark"] and [data-theme="light"] explicit attribute selectors override @media (prefers-color-scheme: light). Media query updated to :root:not([data-theme="dark"]) so it has no effect when the user has forced dark on a light-OS machine. - App.vue: restoreTheme() called in onMounted alongside restoreSnipeMode. - SettingsView: Appearance section with System/Dark/Light segmented button group. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| uno.config.ts | ||
| vite.config.ts | ||