UNPKG

@atlaskit/app-provider

Version:

A top level provider for the Design System.

45 lines (44 loc) 2.16 kB
import React from 'react'; import { AppProviderThemingEnabledContext } from './app-provider-theming-enabled-context'; import { InsideAppProviderContext } from './inside-app-provider-context'; import RouterLinkProvider from './router-link-provider'; import { useScrollbarHarmonisation } from './scrollbar-harmonisation/use-scrollbar-harmonisation'; import { ThemeProvider } from './theme-provider'; import { useIsInsideAppProvider } from './use-is-inside-app-provider'; /** * __App provider__ * * An app provider provides app level configuration such as global theming. * * Place it at the root of your application. */ export function AppProvider(_ref) { var children = _ref.children, _ref$defaultColorMode = _ref.defaultColorMode, defaultColorMode = _ref$defaultColorMode === void 0 ? 'light' : _ref$defaultColorMode, defaultTheme = _ref.defaultTheme, routerLinkComponent = _ref.routerLinkComponent, UNSAFE_isThemingDisabled = _ref.UNSAFE_isThemingDisabled; var isInsideAppProvider = useIsInsideAppProvider(); useScrollbarHarmonisation(); if (isInsideAppProvider) { throw new Error('App provider should not be nested within another app provider.'); } var routerLinkProvider = /*#__PURE__*/React.createElement(RouterLinkProvider, { routerLinkComponent: routerLinkComponent }, children); return /*#__PURE__*/React.createElement(InsideAppProviderContext.Provider, { value: true }, UNSAFE_isThemingDisabled ? routerLinkProvider : /*#__PURE__*/React.createElement(AppProviderThemingEnabledContext.Provider, { value: true }, /*#__PURE__*/React.createElement(ThemeProvider, { defaultColorMode: defaultColorMode, defaultTheme: defaultTheme }, routerLinkProvider))); } /* eslint-disable-next-line @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */ /** * @deprecated Use `import { AppProvider } from '@atlaskit/app-provider/app-provider'` instead. */ // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports -- VOLTC-139 tracks removal of this deprecated default export shim. export default AppProvider;