{"version":3,"file":"ClickUIProvider.cjs","sources":["../../../src/providers/ClickUIProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n  Provider as TooltipProvider,\n  TooltipProviderProps,\n} from '@radix-ui/react-tooltip';\nimport { ToastProvider } from '@/components/Toast/Toast';\nimport type { ToastProviderProps } from '@/components/Toast/Toast.types';\nimport { THEMES, themes } from '@/theme/theme.core';\nimport type { ThemeName } from '@/theme/theme.types';\nimport { ThemeContext } from '@/theme/ThemeContext';\nimport { ReactNode, useEffect } from 'react';\nimport { setRootThemeAttribute, removeRootThemeAttribute } from '@/utils/dom';\nimport { CUI_THEME_STORAGE_KEY } from '@/utils/localStorage';\nimport { isValidThemeName, getFallbackThemeName } from '@/theme/theme.utils';\n\nimport '@/theme/styles/tokens-light.css';\nimport '@/theme/styles/tokens-dark.css';\nimport '@/theme/styles/global.css';\n\ninterface Props {\n  config?: {\n    tooltip?: Omit<TooltipProviderProps, 'children'>;\n    toast?: Omit<ToastProviderProps, 'children'>;\n  };\n  theme: ThemeName;\n  children: ReactNode;\n  persistTheme?: boolean;\n  storageKey?: string;\n}\n\nexport const ClickUIProvider = ({\n  children,\n  theme,\n  config = {},\n  persistTheme = true,\n  storageKey = CUI_THEME_STORAGE_KEY,\n}: Props) => {\n  const { toast = {}, tooltip = {} } = config;\n  const hasValidTheme = isValidThemeName(theme);\n  const safeTheme = getFallbackThemeName(theme);\n\n  useEffect(() => {\n    if (!hasValidTheme) {\n      console.warn(\n        `[Click UI] Unknown theme! Please use one of ${Object.keys(THEMES).join(', ')} theme instead. Falling back to 'light' theme.`\n      );\n    }\n  }, [theme, hasValidTheme]);\n\n  useEffect(() => {\n    setRootThemeAttribute(safeTheme);\n\n    return () => {\n      removeRootThemeAttribute();\n    };\n  }, [safeTheme]);\n\n  useEffect(() => {\n    if (!persistTheme) {\n      return;\n    }\n\n    try {\n      localStorage.setItem(storageKey, safeTheme);\n    } catch {\n      console.warn('LocalStorage is not available!');\n    }\n  }, [safeTheme, persistTheme, storageKey]);\n\n  return (\n    <ThemeContext.Provider value={themes[safeTheme]}>\n      <ToastProvider {...toast}>\n        <TooltipProvider {...tooltip}>{children}</TooltipProvider>\n      </ToastProvider>\n    </ThemeContext.Provider>\n  );\n};\n"],"names":["CUI_THEME_STORAGE_KEY","isValidThemeName","getFallbackThemeName","useEffect","THEMES","setRootThemeAttribute","removeRootThemeAttribute","ThemeContext","themes","jsx","ToastProvider","TooltipProvider"],"mappings":";;;;;;;;;;;;;;;;;AA+BO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAS,EAAC;AAAA,EACV,YAAA,GAAe,IAAA;AAAA,EACf,UAAA,GAAaA;AACf,CAAA,KAAa;AACX,EAAA,MAAM,EAAE,KAAA,GAAQ,IAAI,OAAA,GAAU,IAAG,GAAI,MAAA;AACrC,EAAA,MAAM,aAAA,GAAgBC,6BAAiB,KAAK,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAYC,iCAAqB,KAAK,CAAA;AAE5C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,+CAA+C,MAAA,CAAO,IAAA,CAAKC,iBAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,8CAAA;AAAA,OAC/E;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,aAAa,CAAC,CAAA;AAEzB,EAAAD,eAAA,CAAU,MAAM;AACd,IAAAE,yBAAA,CAAsB,SAAS,CAAA;AAE/B,IAAA,OAAO,MAAM;AACX,MAAAC,4BAAA,EAAyB;AAAA,IAC3B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAAH,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,OAAA,CAAQ,YAAY,SAAS,CAAA;AAAA,IAC5C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,CAAQ,KAAK,gCAAgC,CAAA;AAAA,IAC/C;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,YAAA,EAAc,UAAU,CAAC,CAAA;AAExC,EAAA,sCACGI,yBAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAOC,iBAAA,CAAO,SAAS,CAAA,EAC5C,QAAA,kBAAAC,cAAA,CAACC,mBAAA,EAAA,EAAe,GAAG,OACjB,QAAA,kBAAAD,cAAA,CAACE,qBAAA,EAAA,EAAiB,GAAG,OAAA,EAAU,QAAA,EAAS,GAC1C,CAAA,EACF,CAAA;AAEJ;;"}