feat: Front cover theme switch

This commit is contained in:
Leni Aniva 2025-02-04 17:15:26 -08:00
parent c04e04667c
commit 4b9a131d35
Signed by: aniva
GPG Key ID: 4D9B1C8D10EA4C50
2 changed files with 17 additions and 2 deletions

View File

@ -1,4 +1,4 @@
import { writable } from 'svelte/store'
import { writable, get } from 'svelte/store'
import { browser } from "$app/environment"
type Theme = 'tokiwa' | 'star'
@ -11,3 +11,11 @@ export const theme = writable(userTheme ?? 'tokiwa')
export function setTheme(newTheme: Theme) {
theme.set(newTheme)
}
export function getThemeObject(key: string, obj: { [key in Theme]: string } | string) {
if (typeof obj === 'object') {
return obj[key];
} else {
return obj;
}
}

View File

@ -1,6 +1,8 @@
<script lang="ts">
import { derived } from 'svelte/store'
import { routes } from "$lib/sitemap.ts"
import { Separator } from "$lib/components/ui/separator/index.js";
import { theme, getThemeObject } from '$lib/theme'
import { Rss } from "lucide-svelte";
import ThemeSwitch from "$lib/components/ThemeSwitch.svelte"
let scrollPosition: number = .5;
@ -38,6 +40,11 @@
};
const iconLinks: [string, string][] = Object.entries(metadata.links).map(
([key, link]) => [iconMap[key], link]);
const frontCover = derived(
theme,
($theme) => getThemeObject($theme, metadata.frontCover)
)
</script>
<svelte:head>
@ -46,7 +53,7 @@
<div
id="background"
style="opacity: {1 - progress}; background-image: url('{metadata.frontCover}')"
style="opacity: {1 - progress}; background-image: url('{$frontCover}')"
>
</div>