Skip to content

Commit

Permalink
add setThemeSet to set both light and dark theme simultaneously
Browse files Browse the repository at this point in the history
  • Loading branch information
mayank1513 committed Dec 8, 2023
1 parent 6f17cce commit 9849240
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ export function useThemeSwitcher(props: ThemeSwitcherProps) {
const restoreTransitions = disableAnimation(props.themeTransition);

const resolvedData = resolveTheme(media.matches, themeState, props);
const { resolvedColorScheme, resolvedTheme } = resolvedData;
themeState.setResolved({ resolvedColorScheme, resolvedTheme });
themeState.setResolved(resolvedData);
updateDOM(resolvedData, media.matches, props.targetSelector);

restoreTransitions();
Expand Down
8 changes: 5 additions & 3 deletions lib/nextjs-themes/src/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ export type ThemeStoreType = {

export type ThemeStoreActionsType = {
setTheme: (theme: string) => void;
setDarkTheme: (defaultDarkTheme: string) => void;
setLightTheme: (defaultLightTheme: string) => void;
setDarkTheme: (darkTheme: string) => void;
setLightTheme: (lightTheme: string) => void;
setThemeSet: (themeSet: { darkTheme: string; lightTheme: string }) => void;
setColorSchemePref: (colorSchemePref: ColorSchemeType) => void;
setForcedTheme: (forcedTheme?: string) => void;
setForcedColorScheme: (forcedColorScheme?: ColorSchemeType) => void;
Expand All @@ -43,7 +44,8 @@ export const useTheme = create<ThemeStoreType & ThemeStoreActionsType>()(
setForcedTheme: forcedTheme => set({ ...get(), forcedTheme }),
setForcedColorScheme: forcedColorScheme => set({ ...get(), forcedColorScheme }),
setColorSchemePref: colorSchemePref => set({ ...get(), colorSchemePref }),
setResolved: resolved => set({ ...get(), ...resolved }),
setResolved: ({ resolvedColorScheme, resolvedTheme }) => set({ ...get(), resolvedColorScheme, resolvedTheme }),
setThemeSet: ({ lightTheme, darkTheme }) => set({ ...get(), lightTheme, darkTheme }),
}),
{ name: "nextjs-themes", exclude: [/forced/, /resolved/], storage: "cookies" },
),
Expand Down

0 comments on commit 9849240

Please sign in to comment.