All files / src/stores useThemeStore.ts

100% Statements 7/7
100% Branches 2/2
100% Functions 6/6
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                      2x   2x     2x     1x 2x       2x        
import { create } from 'zustand';
import { persist, createJSONStorage } from 'zustand/middleware';
import type { PaletteMode } from '@mui/material';
 
interface ThemeState {
  mode: PaletteMode;
  toggle: () => void;
  setLight: () => void;
  setDark: () => void;
}
 
export const useThemeStore = create<ThemeState>()(
  persist(
    (set) => ({
      mode: 'light',
      toggle: () =>
        set((state) => ({
          mode: state.mode === 'light' ? 'dark' : 'light',
        })),
      setLight: () => set({ mode: 'light' }),
      setDark: () => set({ mode: 'dark' }),
    }),
    {
      name: 'theme-mode',            
      storage: createJSONStorage(() => localStorage)
    }
  )
);