File tree Expand file tree Collapse file tree 3 files changed +37
-5
lines changed
Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Original file line number Diff line number Diff line change 6464 </p >
6565 {:else }
6666 <img
67- class =" relative rounded-2xl outline outline-1 outline-offset-[-1px] outline -base-content/15"
67+ class =" rounded-2xl inner-border inner-border -base-content/15"
6868 src ={quib .cover }
6969 alt =" "
7070 />
Original file line number Diff line number Diff line change 66 import RocketIcon from ' $lib/components/icons/rocket.svelte' ;
77 import TopIcon from ' $lib/components/icons/top.svelte' ;
88 import { cn } from ' $lib/functions/classnames' ;
9+ import { createViewStore } from ' $lib/stores/view.svelte' ;
910
10- let active_mapping = $state <{
11+ const viewStore = createViewStore ();
12+
13+ let active_mapping = $derived <{
1114 filter: keyof typeof mapping .filters ;
1215 view: keyof typeof mapping .view ;
1316 }>({
1417 filter: ' best' ,
15- view: ' card '
18+ view: viewStore . state
1619 });
1720
1821 const mapping = {
2528 view: {
2629 card: {
2730 icon: CardIcon ,
28- onclick : () => ( active_mapping . view = ' card' )
31+ onclick : () => viewStore . update ( ' card' )
2932 },
3033 compact: {
3134 icon: CompactIcon ,
32- onclick : () => ( active_mapping . view = ' compact' )
35+ onclick : () => viewStore . update ( ' compact' )
3336 }
3437 }
3538 };
Original file line number Diff line number Diff line change 1+ import { browser } from '$app/environment' ;
2+
3+ type ViewState = 'card' | 'compact' ;
4+
5+ const default_view : ViewState = 'card' ;
6+
7+ const stored_view_state : ViewState = browser
8+ ? ( ( localStorage . getItem ( 'view' ) as ViewState ) ?? default_view )
9+ : default_view ;
10+
11+ let view_state = $state < ViewState > ( stored_view_state ) ;
12+
13+ $effect . root ( ( ) => {
14+ $effect ( ( ) => {
15+ // auto sync to localStorage on state update
16+ localStorage . setItem ( 'view' , view_state ) ;
17+ } ) ;
18+ } ) ;
19+
20+ export function createViewStore ( ) {
21+ return {
22+ get state ( ) {
23+ return view_state ;
24+ } ,
25+ update ( view : ViewState ) {
26+ view_state = view ;
27+ }
28+ } ;
29+ }
You can’t perform that action at this time.
0 commit comments