feat: add theme utility with applyTheme and isDarkMode

Adds src/lib/utils/theme.svelte.ts with applyTheme() (sets data-theme
attribute and meta theme-color) and getIsDarkMode(). Uses a plain
variable instead of $state since Vitest's node environment does not
compile Svelte 5 runes in .svelte.ts files. Adds jsdom dev dependency
and $app/environment alias in vitest config to support DOM-level unit
tests; fixes preferences.test.ts to include the theme default added
in Task 2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Frederic Cabassut
2026-03-21 08:47:20 +01:00
committed by Fred Cabassut
co-authored by Claude Sonnet 4.6
parent 35cd888547
commit 80d18478da
7 changed files with 435 additions and 6 deletions
+2 -1
View File
@@ -4,7 +4,8 @@ import path from 'path';
export default defineConfig({
resolve: {
alias: {
$lib: path.resolve(__dirname, 'src/lib')
$lib: path.resolve(__dirname, 'src/lib'),
'$app/environment': path.resolve(__dirname, 'src/lib/__mocks__/app-environment.ts')
}
},
test: {