feat(svelte): add ThemeBox component

This commit is contained in:
Stefan Imhoff
2023-02-24 17:01:19 +01:00
parent 8219cf576a
commit 140cb69709
5 changed files with 105 additions and 8 deletions

View File

@@ -0,0 +1,34 @@
<script>
import { onMount, onDestroy } from 'svelte';
let observer;
let isDarkMode = false;
const checkDarkMode = () => {
isDarkMode = document.documentElement.classList.contains('dark');
};
onMount(() => {
checkDarkMode();
observer = new MutationObserver(() => {
checkDarkMode();
});
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class'],
});
});
onDestroy(() => {
observer.disconnect();
});
</script>
<div class={!isDarkMode && 'hidden'}>
<slot name="dark" />
</div>
<div class={isDarkMode && 'hidden'}>
<slot name="light" />
</div>