Skip to content

Commit 3b7c63a

Browse files
committed
feat: add layout state and setter to user preferences
1 parent c15d00a commit 3b7c63a

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/stores/preferences.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { StateStorage, createJSONStorage, persist } from 'zustand/middleware'
77
import {
88
CardSettingsType,
99
DNDDuration,
10+
Layout,
1011
ListingMode,
1112
SearchEngineType,
1213
SelectedCard,
@@ -16,6 +17,7 @@ import {
1617

1718
export type UserPreferencesState = {
1819
userSelectedTags: Tag[]
20+
layout: Layout
1921
theme: Theme
2022
openLinksNewTab: boolean
2123
onboardingCompleted: boolean
@@ -33,6 +35,7 @@ export type UserPreferencesState = {
3335
}
3436

3537
type UserPreferencesStoreActions = {
38+
setLayout: (layout: Layout) => void
3639
setTheme: (theme: Theme) => void
3740
setPromptEngine: (engine: string) => void
3841
setOpenLinksNewTab: (openLinksNewTab: boolean) => void
@@ -124,6 +127,7 @@ export const useUserPreferences = create(
124127
freecodecampValues: ['javascript'],
125128
},
126129
],
130+
layout: 'cards',
127131
cardsSettings: {},
128132
maxVisibleCards: 4,
129133
theme: 'dark',
@@ -143,6 +147,7 @@ export const useUserPreferences = create(
143147
userCustomCards: [],
144148
DNDDuration: 'never',
145149
advStatus: false,
150+
setLayout: (layout) => set({ layout: layout }),
146151
setPromptEngine: (promptEngine: string) => set({ promptEngine: promptEngine }),
147152
setListingMode: (listingMode: ListingMode) => set({ listingMode: listingMode }),
148153
setTheme: (theme: Theme) => set({ theme: theme }),

src/types/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export type SearchEngine = {
2424
className?: string
2525
}
2626

27+
export type Layout = 'grid' | 'cards'
2728
export type Theme = 'dark' | 'light'
2829
export type ListingMode = 'normal' | 'compact'
2930

@@ -49,6 +50,16 @@ export type Article = BaseEntry & {
4950
flair_text_color?: string
5051
}
5152

53+
export type FeedItem = BaseEntry & {
54+
date: Date
55+
image: string
56+
type: 'post' | 'github'
57+
source: string
58+
stars?: number
59+
forks?: number
60+
description?: string
61+
}
62+
5263
export type Repository = BaseEntry & {
5364
programmingLanguage: string
5465
stars: number

0 commit comments

Comments
 (0)