thomaswilson-sveltekit/src/routes/+layout.svelte

64 lines
1.5 KiB
Svelte
Raw Normal View History

2024-03-17 09:37:49 +00:00
<script lang="ts">
2024-03-17 09:33:22 +00:00
import "../styles/thomaswilson.css";
2024-03-17 22:01:32 +00:00
import {
colourSchemeStore,
colourSchemes,
darkColourScheme,
lightColourScheme,
} from "../stores/colourSchemeStore.ts";
2024-03-17 09:33:22 +00:00
import { browser } from "$app/environment";
2024-03-17 22:01:32 +00:00
import { onMount } from "svelte";
2024-03-17 09:33:22 +00:00
2024-03-17 22:01:32 +00:00
onMount(() => {
const prefersDarkmode: boolean = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
const colourSchemeName: string | null =
localStorage.getItem("colourScheme");
const colourScheme = colourSchemes?.[colourSchemeName];
2024-03-17 09:33:22 +00:00
2024-03-17 22:01:32 +00:00
if (colourScheme) {
colourSchemeStore.set(colourScheme);
} else if (prefersDarkmode) {
colourSchemeStore.set(darkColourScheme);
} else {
colourSchemeStore.set(lightColourScheme);
2024-03-17 09:33:22 +00:00
}
});
2024-03-17 22:01:32 +00:00
colourSchemeStore.subscribe((value) => {
if (!browser) return;
2024-03-17 22:01:32 +00:00
document.documentElement.style.setProperty(
"--colour-scheme-background",
value.background
);
// document.documentElement.style.setProperty(
// "--colour-scheme-back""
// )
2024-03-17 22:01:32 +00:00
document.documentElement.style.setProperty(
"--colour-scheme-text",
value.text
);
document.documentElement.style.setProperty(
"--colour-scheme-background-accent",
value.backgroundAccent
);
document.documentElement.style.setProperty(
"--colour-scheme-text-accent",
value.textAccent
);
});
</script>
2022-05-27 19:35:55 +00:00
<svelte:head>
2024-03-17 09:33:22 +00:00
<title>Thomas Wilson</title>
2022-05-27 19:35:55 +00:00
</svelte:head>
<slot />