Skip to content

Commit b4ee7eb

Browse files
committed
docs: fix theme switcher
1 parent 4fce135 commit b4ee7eb

File tree

2 files changed

+48
-53
lines changed

2 files changed

+48
-53
lines changed

packages/site/src/app.html

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -133,30 +133,6 @@
133133
}
134134
</style>
135135

136-
<!-- SMUI Styles -->
137-
<link
138-
rel="stylesheet"
139-
href="%svelte.assets%/smui.css"
140-
media="(prefers-color-scheme: light)"
141-
/>
142-
<link
143-
rel="stylesheet"
144-
href="%svelte.assets%/smui-dark.css"
145-
media="screen and (prefers-color-scheme: dark)"
146-
/>
147-
148-
<!-- Site Styles -->
149-
<link
150-
rel="stylesheet"
151-
href="%svelte.assets%/site.css"
152-
media="(prefers-color-scheme: light)"
153-
/>
154-
<link
155-
rel="stylesheet"
156-
href="%svelte.assets%/site-dark.css"
157-
media="screen and (prefers-color-scheme: dark)"
158-
/>
159-
160136
<!-- It Matters -->
161137
<link
162138
rel="stylesheet"

packages/site/src/routes/__layout.svelte

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,47 @@
11
<svelte:window on:resize={setMiniWindow} />
2+
3+
<svelte:head>
4+
{#if lightTheme === true}
5+
<!-- SMUI Styles -->
6+
<link rel="stylesheet" href="{assets}/smui.css" />
7+
8+
<!-- Site Styles -->
9+
<link rel="stylesheet" href="{assets}/site.css" />
10+
{:else if lightTheme === false}
11+
<!-- SMUI Styles -->
12+
<link rel="stylesheet" href="{assets}/smui.css" />
13+
<link rel="stylesheet" href="{assets}/smui-dark.css" media="screen" />
14+
15+
<!-- Site Styles -->
16+
<link rel="stylesheet" href="{assets}/site.css" />
17+
<link rel="stylesheet" href="{assets}/site-dark.css" media="screen" />
18+
{:else}
19+
<!-- SMUI Styles -->
20+
<link
21+
rel="stylesheet"
22+
href="{assets}/smui.css"
23+
media="(prefers-color-scheme: light)"
24+
/>
25+
<link
26+
rel="stylesheet"
27+
href="{assets}/smui-dark.css"
28+
media="screen and (prefers-color-scheme: dark)"
29+
/>
30+
31+
<!-- Site Styles -->
32+
<link
33+
rel="stylesheet"
34+
href="{assets}/site.css"
35+
media="(prefers-color-scheme: light)"
36+
/>
37+
<link
38+
rel="stylesheet"
39+
href="{assets}/site-dark.css"
40+
media="screen and (prefers-color-scheme: dark)"
41+
/>
42+
{/if}
43+
</svelte:head>
44+
245
{#if iframe}
346
<slot />
447
{:else}
@@ -62,7 +105,7 @@
62105
<IconButton
63106
toggle
64107
pressed={lightTheme}
65-
on:SMUIIconButtonToggle:change={switchTheme}
108+
on:SMUIIconButtonToggle:change={() => (lightTheme = !lightTheme)}
66109
>
67110
<Icon component={Svg} viewBox="0 0 24 24" on>
68111
<path fill="currentColor" d={mdiWeatherNight} />
@@ -134,6 +177,7 @@
134177
mdiWeatherNight,
135178
} from '@mdi/js';
136179
import TinyGesture from 'tinygesture';
180+
import { assets } from '$app/paths';
137181
import { page } from '$app/stores';
138182
139183
import TopAppBar, { Row, Section, Title } from '@smui/top-app-bar';
@@ -155,34 +199,7 @@
155199
let drawerGesture: TinyGesture;
156200
let mainContentGesture: TinyGesture;
157201
158-
let lightTheme =
159-
typeof window === 'undefined' ||
160-
window.matchMedia('(prefers-color-scheme: light)').matches;
161-
function switchTheme() {
162-
lightTheme = !lightTheme;
163-
164-
let themeLink = document.head.querySelector<HTMLLinkElement>('#theme');
165-
if (!themeLink) {
166-
themeLink = document.createElement('link');
167-
themeLink.rel = 'stylesheet';
168-
themeLink.id = 'theme';
169-
}
170-
themeLink.href = `/smui${lightTheme ? '' : '-dark'}.css`;
171-
document.head
172-
.querySelector<HTMLLinkElement>('link[href="/smui-dark.css"]')
173-
?.insertAdjacentElement('afterend', themeLink);
174-
175-
let siteLink = document.head.querySelector<HTMLLinkElement>('#site');
176-
if (!siteLink) {
177-
siteLink = document.createElement('link');
178-
siteLink.rel = 'stylesheet';
179-
siteLink.id = 'site';
180-
}
181-
siteLink.href = `/site${lightTheme ? '' : '-dark'}.css`;
182-
document.head
183-
.querySelector<HTMLLinkElement>('link[href="/site-dark.css"]')
184-
?.insertAdjacentElement('afterend', siteLink);
185-
}
202+
let lightTheme: boolean;
186203
187204
type DemoSection = {
188205
component?: ItemComponentDev;
@@ -570,6 +587,8 @@
570587
drawerOpen = false;
571588
});
572589
}
590+
591+
lightTheme = window.matchMedia('(prefers-color-scheme: light)').matches;
573592
});
574593
575594
onDestroy(() => {

0 commit comments

Comments
 (0)