diff --git a/src/lib/client/stores/navIcons.ts b/src/lib/client/stores/navIcons.ts new file mode 100644 index 0000000..4d6f3fb --- /dev/null +++ b/src/lib/client/stores/navIcons.ts @@ -0,0 +1,43 @@ +/** + * Navigation icon style store (emoji vs lucide icons) + */ + +import { writable } from 'svelte/store'; +import { browser } from '$app/environment'; + +export type NavIconStyle = 'emoji' | 'lucide'; + +function createNavIconStore() { + let initialStyle: NavIconStyle = 'lucide'; + if (browser) { + const stored = localStorage.getItem('navIconStyle') as NavIconStyle | null; + if (stored && (stored === 'emoji' || stored === 'lucide')) { + initialStyle = stored; + } + } + + const { subscribe, set } = writable(initialStyle); + + function setStyle(style: NavIconStyle) { + set(style); + if (browser) { + localStorage.setItem('navIconStyle', style); + } + } + + function toggle() { + if (browser) { + const current = localStorage.getItem('navIconStyle') as NavIconStyle | null; + const newStyle = current === 'emoji' ? 'lucide' : 'emoji'; + setStyle(newStyle); + } + } + + return { + subscribe, + setStyle, + toggle + }; +} + +export const navIconStore = createNavIconStore(); diff --git a/src/lib/client/ui/navigation/pageNav/group.svelte b/src/lib/client/ui/navigation/pageNav/group.svelte index cf801a5..e4552f6 100644 --- a/src/lib/client/ui/navigation/pageNav/group.svelte +++ b/src/lib/client/ui/navigation/pageNav/group.svelte @@ -1,17 +1,19 @@
- + {#if isOpen && hasItems && children}
diff --git a/src/lib/client/ui/navigation/pageNav/groupHeader.svelte b/src/lib/client/ui/navigation/pageNav/groupHeader.svelte index 5c0184a..4cbf6eb 100644 --- a/src/lib/client/ui/navigation/pageNav/groupHeader.svelte +++ b/src/lib/client/ui/navigation/pageNav/groupHeader.svelte @@ -1,15 +1,18 @@ @@ -24,6 +27,9 @@ ? 'bg-neutral-200 hover:bg-neutral-300 dark:bg-neutral-800 dark:hover:bg-neutral-700' : ''}" > + {#if icon} + + {/if} {label} diff --git a/src/lib/client/ui/navigation/pageNav/pageNav.svelte b/src/lib/client/ui/navigation/pageNav/pageNav.svelte index c1aa5c2..9b8dbc2 100644 --- a/src/lib/client/ui/navigation/pageNav/pageNav.svelte +++ b/src/lib/client/ui/navigation/pageNav/pageNav.svelte @@ -2,8 +2,12 @@ import Group from './group.svelte'; import GroupItem from './groupItem.svelte'; import Version from './version.svelte'; + import { Home, Sliders, Palette, Microscope, Tag, Clock, Settings } from 'lucide-svelte'; + import { navIconStore } from '$stores/navIcons'; export let collapsed: boolean = false; + + $: useEmoji = $navIconStore === 'emoji';