{"version":3,"file":"useInitialTheme.cjs","sources":["../../../src/hooks/useInitialTheme.ts"],"sourcesContent":["'use client';\n\nimport { useState, useEffect } from 'react';\nimport { THEMES } from '@/theme/theme.core';\nimport type { ThemeName } from '@/theme/theme.types';\nimport { CUI_THEME_STORAGE_KEY } from '@/utils/localStorage';\nimport { THEME_ATTRIBUTE, getRootElement } from '@/utils/dom';\n\nexport interface UseThemeParams {\n  defaultTheme?: ThemeName;\n  storageKey?: string;\n  attribute?: string;\n}\n\nexport const useInitialTheme = ({\n  defaultTheme = 'light',\n  storageKey = CUI_THEME_STORAGE_KEY,\n  attribute = THEME_ATTRIBUTE,\n}: UseThemeParams = {}) => {\n  // WARNING: This is intentional due to SSR state\n  const [theme, setTheme] = useState<ThemeName | null>(() => {\n    if (typeof document !== 'undefined') {\n      const el = getRootElement();\n\n      if (!el) {\n        console.warn('Failed to get root html');\n        return null;\n      }\n\n      const attr = el.getAttribute(attribute);\n\n      if (attr === THEMES.Light || attr === THEMES.Dark) {\n        return attr;\n      }\n    }\n\n    return defaultTheme;\n  });\n\n  // `mounted` gates against SSR/hydration mismatches: it flips true only after\n  // the client-side effect runs, letting consumers defer theme-dependent output\n  // until the stored theme has been reconciled.\n  const [mounted, setMounted] = useState(false);\n\n  useEffect(() => {\n    try {\n      const stored = localStorage.getItem(storageKey);\n\n      if (\n        stored &&\n        (stored === THEMES.Light || stored === THEMES.Dark) &&\n        stored !== theme\n      ) {\n        setTheme(stored);\n      }\n    } catch {\n      console.warn('localStorage not available');\n    }\n\n    setMounted(true);\n  }, [storageKey, attribute, theme]);\n\n  return {\n    theme,\n    mounted,\n  };\n};\n"],"names":["CUI_THEME_STORAGE_KEY","THEME_ATTRIBUTE","useState","getRootElement","THEMES","useEffect"],"mappings":";;;;;;;;;AAcO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,YAAA,GAAe,OAAA;AAAA,EACf,UAAA,GAAaA,oCAAA;AAAA,EACb,SAAA,GAAYC;AACd,CAAA,GAAoB,EAAC,KAAM;AAEzB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAA2B,MAAM;AACzD,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,MAAM,KAAKC,kBAAA,EAAe;AAE1B,MAAA,IAAI,CAAC,EAAA,EAAI;AACP,QAAA,OAAA,CAAQ,KAAK,yBAAyB,CAAA;AACtC,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,IAAA,GAAO,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA;AAEtC,MAAA,IAAI,IAAA,KAASC,iBAAA,CAAO,KAAA,IAAS,IAAA,KAASA,kBAAO,IAAA,EAAM;AACjD,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,YAAA;AAAA,EACT,CAAC,CAAA;AAKD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIF,eAAS,KAAK,CAAA;AAE5C,EAAAG,eAAA,CAAU,MAAM;AACd,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA;AAE9C,MAAA,IACE,MAAA,KACC,WAAWD,iBAAA,CAAO,KAAA,IAAS,WAAWA,iBAAA,CAAO,IAAA,CAAA,IAC9C,WAAW,KAAA,EACX;AACA,QAAA,QAAA,CAAS,MAAM,CAAA;AAAA,MACjB;AAAA,IACF,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA;AAAA,IAC3C;AAEA,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,UAAA,EAAY,SAAA,EAAW,KAAK,CAAC,CAAA;AAEjC,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA;AAAA,GACF;AACF;;"}