{"version":3,"file":"AppProvider.mjs","sources":["../../../../src/components/AppProvider/AppProvider.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\n\nimport { getWindow } from 'ssr-window'\n\nimport { AlphaTokenProvider } from '~/src/components/AlphaTokenProvider'\nimport { BetaTokenProvider } from '~/src/components/BetaTokenProvider'\nimport { FeatureProvider } from '~/src/components/FeatureProvider'\nimport { TokenProvider } from '~/src/components/TokenProvider'\nimport { WindowProvider } from '~/src/components/WindowProvider'\n\nimport { type AppProviderProps } from './AppProvider.types'\n\nconst defaultWindow = getWindow()\n\n/**\n * `AppProvider` is a required wrapper component that provides context for the app.\n * @example\n *\n * ```tsx\n * import React from 'react'\n * import { createRoot } from 'react-dom/client'\n * import { AppProvider } from '@channel.io/bezier-react'\n *\n * const container = document.getElementById('root')\n * const root = createRoot(container)\n *\n * root.render(\n *   <AppProvider themeName=\"light\">\n *     <App />\n *   </AppProvider>,\n * )\n * ```\n */\nexport function AppProvider({\n  children,\n  themeName = 'light',\n  features = [],\n  window = defaultWindow,\n}: AppProviderProps) {\n  useEffect(\n    function updateRootThemeDataAttribute() {\n      const rootElement = window.document.documentElement\n      // TODO: Change data attribute constant to import from bezier-tokens\n      rootElement.setAttribute('data-bezier-theme', themeName)\n      return function cleanup() {\n        rootElement.removeAttribute('data-bezier-theme')\n      }\n    },\n    [window, themeName]\n  )\n\n  return (\n    <WindowProvider window={window}>\n      <FeatureProvider features={features}>\n        <TokenProvider themeName={themeName}>\n          <AlphaTokenProvider themeName={themeName}>\n            <BetaTokenProvider themeName={themeName}>\n              {children}\n            </BetaTokenProvider>\n          </AlphaTokenProvider>\n        </TokenProvider>\n      </FeatureProvider>\n    </WindowProvider>\n  )\n}\n"],"names":["defaultWindow","getWindow","AppProvider","children","themeName","features","window","useEffect","updateRootThemeDataAttribute","rootElement","document","documentElement","setAttribute","cleanup","removeAttribute","_jsx","WindowProvider","FeatureProvider","TokenProvider","AlphaTokenProvider","BetaTokenProvider"],"mappings":";;;;;;;;;AAcA,MAAMA,aAAa,GAAGC,SAAS,EAAE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAAC;EAC1BC,QAAQ;AACRC,EAAAA,SAAS,GAAG,OAAO;AACnBC,EAAAA,QAAQ,GAAG,EAAE;AACbC,EAAAA,MAAM,GAAGN;AACO,CAAC,EAAE;AACnBO,EAAAA,SAAS,CACP,SAASC,4BAA4BA,GAAG;AACtC,IAAA,MAAMC,WAAW,GAAGH,MAAM,CAACI,QAAQ,CAACC,eAAe;AACnD;AACAF,IAAAA,WAAW,CAACG,YAAY,CAAC,mBAAmB,EAAER,SAAS,CAAC;IACxD,OAAO,SAASS,OAAOA,GAAG;AACxBJ,MAAAA,WAAW,CAACK,eAAe,CAAC,mBAAmB,CAAC;KACjD;AACH,GAAC,EACD,CAACR,MAAM,EAAEF,SAAS,CACpB,CAAC;EAED,oBACEW,GAAA,CAACC,cAAc,EAAA;AAACV,IAAAA,MAAM,EAAEA,MAAO;IAAAH,QAAA,eAC7BY,GAAA,CAACE,eAAe,EAAA;AAACZ,MAAAA,QAAQ,EAAEA,QAAS;MAAAF,QAAA,eAClCY,GAAA,CAACG,aAAa,EAAA;AAACd,QAAAA,SAAS,EAAEA,SAAU;QAAAD,QAAA,eAClCY,GAAA,CAACI,eAAkB,EAAA;AAACf,UAAAA,SAAS,EAAEA,SAAU;UAAAD,QAAA,eACvCY,GAAA,CAACK,eAAiB,EAAA;AAAChB,YAAAA,SAAS,EAAEA,SAAU;AAAAD,YAAAA,QAAA,EACrCA;WACgB;SACD;OACP;KACA;AAAC,GACJ,CAAC;AAErB;;;;"}