{"version":3,"file":"useTheme-OIqdWPuL.mjs","sources":["../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts"],"sourcesContent":["'use client';\n\nimport { createContext, useEffect, useState } from 'react';\nimport type { Theme, ThemeContextValue, ThemeProviderProps } from './types';\n\nexport const ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport function ThemeProvider({\n  children,\n  defaultTheme = 'system',\n  storageKey = 'vormir-theme',\n}: ThemeProviderProps) {\n  const [theme, setTheme] = useState<Theme>(defaultTheme);\n  const [systemTheme, setSystemTheme] = useState<'light' | 'dark'>('light');\n\n  useEffect(() => {\n    // Get theme from localStorage\n    const storedTheme = localStorage.getItem(storageKey) as Theme | null;\n    if (storedTheme) {\n      setTheme(storedTheme);\n    }\n\n    // Detect system theme\n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    setSystemTheme(mediaQuery.matches ? 'dark' : 'light');\n\n    const handleChange = (e: MediaQueryListEvent) => {\n      setSystemTheme(e.matches ? 'dark' : 'light');\n    };\n\n    mediaQuery.addEventListener('change', handleChange);\n    return () => mediaQuery.removeEventListener('change', handleChange);\n  }, [storageKey]);\n\n  useEffect(() => {\n    const root = window.document.documentElement;\n    root.classList.remove('light', 'dark');\n\n    const activeTheme = theme === 'system' ? systemTheme : theme;\n    root.classList.add(activeTheme);\n\n    // Store theme preference\n    localStorage.setItem(storageKey, theme);\n  }, [theme, systemTheme, storageKey]);\n\n  const value: ThemeContextValue = {\n    theme,\n    setTheme,\n    systemTheme,\n  };\n\n  return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n","'use client';\n\nimport { useContext } from 'react';\nimport { ThemeContext } from './ThemeProvider';\n\nexport function useTheme() {\n  const context = useContext(ThemeContext);\n  if (context === undefined) {\n    throw new Error('useTheme must be used within a ThemeProvider');\n  }\n  return context;\n}\n"],"names":["ThemeContext","createContext","ThemeProvider","children","defaultTheme","storageKey","theme","setTheme","useState","systemTheme","setSystemTheme","useEffect","storedTheme","mediaQuery","handleChange","e","root","activeTheme","value","jsx","useTheme","context","useContext"],"mappings":";;AAKO,MAAMA,IAAeC,EAA6C,MAAS;AAE3E,SAASC,EAAc;AAAA,EAC5B,UAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,YAAAC,IAAa;AACf,GAAuB;AACrB,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAgBJ,CAAY,GAChD,CAACK,GAAaC,CAAc,IAAIF,EAA2B,OAAO;AAExE,EAAAG,EAAU,MAAM;AAEd,UAAMC,IAAc,aAAa,QAAQP,CAAU;AACnD,IAAIO,KACFL,EAASK,CAAW;AAItB,UAAMC,IAAa,OAAO,WAAW,8BAA8B;AACnE,IAAAH,EAAeG,EAAW,UAAU,SAAS,OAAO;AAEpD,UAAMC,IAAe,CAACC,MAA2B;AAC/C,MAAAL,EAAeK,EAAE,UAAU,SAAS,OAAO;AAAA,IAC7C;AAEA,WAAAF,EAAW,iBAAiB,UAAUC,CAAY,GAC3C,MAAMD,EAAW,oBAAoB,UAAUC,CAAY;AAAA,EACpE,GAAG,CAACT,CAAU,CAAC,GAEfM,EAAU,MAAM;AACd,UAAMK,IAAO,OAAO,SAAS;AAC7B,IAAAA,EAAK,UAAU,OAAO,SAAS,MAAM;AAErC,UAAMC,IAAcX,MAAU,WAAWG,IAAcH;AACvD,IAAAU,EAAK,UAAU,IAAIC,CAAW,GAG9B,aAAa,QAAQZ,GAAYC,CAAK;AAAA,EACxC,GAAG,CAACA,GAAOG,GAAaJ,CAAU,CAAC;AAEnC,QAAMa,IAA2B;AAAA,IAC/B,OAAAZ;AAAA,IACA,UAAAC;AAAA,IACA,aAAAE;AAAA,EAAA;AAGF,SAAO,gBAAAU,EAACnB,EAAa,UAAb,EAAsB,OAAAkB,GAAe,UAAAf,EAAA,CAAS;AACxD;AC/CO,SAASiB,IAAW;AACzB,QAAMC,IAAUC,EAAWtB,CAAY;AACvC,MAAIqB,MAAY;AACd,UAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAOA;AACT;"}