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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x | 'use client'; import { parseCookies, setCookie } from 'nookies'; import { create } from 'zustand'; import { persist, devtools } from 'zustand/middleware'; import { type SelectedLanguageMenuState } from '../types/index'; const COOKIE_PATH = '/'; /** * @module SelectedLanguageMenuStore * @author Munir Mardinli * * Zustand store for managing the selected language in the application menu. * Persists the selection between sessions using cookies and localStorage. * * @property {string} selectedLanguage - Currently selected language code * @property {Function} setSelectedLanguage - Updates the selected language * * @example * // Access the store in a React component * import { useSelectedLanguageMenuStore } from './selectedLanguageMenuStore'; * const lang = useSelectedLanguageMenuStore(state => state.selectedLanguage); * * @example * // Change the selected language * const setSelectedLanguage = useSelectedLanguageMenuStore(state => state.setSelectedLanguage); * setSelectedLanguage('en'); */ export const useSelectedLanguageMenuStore = create<SelectedLanguageMenuState>()( devtools( persist( (set) => ({ /** * Currently selected language code * @type {string} * @default 'de' */ selectedLanguage: (() => { // Server-side rendering fallback Eif (typeof window !== 'undefined') { const cookies = parseCookies(); return cookies?.["languageMenu"] || 'de'; } return 'de'; })(), /** * Updates the selected language and persists it * @param {string} language - Language code to set (e.g. 'en', 'de') * @returns {void} */ setSelectedLanguage: (language: string) => { // Set cookie for server-side access setCookie(null, 'languageMenu', language, { path: COOKIE_PATH, // Typically '/' }); // Update local state set({ selectedLanguage: language }); }, }), { name: 'selected-language', // localStorage key }, ), { name: 'selectedLanguageStore' }, // DevTools name ), ); |