mirror of
https://github.com/hexolan/stocklet.git
synced 2026-03-27 03:54:11 +00:00
feat: openapi-fetch typing
feat: base page layout for implementation todo: fix light/dark mode toggling
This commit is contained in:
10
web/src/components/Footer.svelte
Normal file
10
web/src/components/Footer.svelte
Normal file
@@ -0,0 +1,10 @@
|
||||
<script lang="ts">
|
||||
import LightDarkMode from './LightDarkMode.svelte';
|
||||
</script>
|
||||
|
||||
<footer class="border-t border-surface-300-600 bg-surface-100-800">
|
||||
<div class="mx-auto flex w-full max-w-7xl items-center justify-between px-4 py-6 text-sm text-surface-700-300">
|
||||
<span>Stocklet</span>
|
||||
<LightDarkMode />
|
||||
</div>
|
||||
</footer>
|
||||
26
web/src/components/LightDarkMode.svelte
Normal file
26
web/src/components/LightDarkMode.svelte
Normal file
@@ -0,0 +1,26 @@
|
||||
<script lang="ts">
|
||||
import { Switch } from '@skeletonlabs/skeleton-svelte';
|
||||
|
||||
let checked = $state(false);
|
||||
|
||||
$effect(() => {
|
||||
const mode = localStorage.getItem('mode') || 'light';
|
||||
checked = mode === 'dark';
|
||||
});
|
||||
|
||||
const onCheckedChange = (event: { checked: boolean }) => {
|
||||
const mode = event.checked ? 'dark' : 'light';
|
||||
document.documentElement.setAttribute('data-mode', mode);
|
||||
localStorage.setItem('mode', mode);
|
||||
checked = event.checked;
|
||||
};
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<script>
|
||||
const mode = localStorage.getItem('mode') || 'light';
|
||||
document.documentElement.setAttribute('data-mode', mode);
|
||||
</script>
|
||||
</svelte:head>
|
||||
|
||||
<Switch {checked} {onCheckedChange}></Switch>
|
||||
Reference in New Issue
Block a user