Composable Provider
Next.js uses the App component to initialize pages. In Composable UI, the composable-ui/src/pages/_app.tsx provides the configurations for Next.js to initialize the pages. All settings required for _app.tsx file are configured in the composable-ui/src/components/composable.tsx file, which references other configurations for Composable UI components.
Composable configures the following for Composable UI:
Chakra UI- Internationalization support with
react-intl - A global React Context managed in
ComposableProvider - React-query development tools to improve developer experience with the
react-querylibrary
import * as React from 'react'
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
import { ChakraProvider } from '@chakra-ui/react'
import { IntlConfig } from '@composable/types'
import { ComposableProvider } from './composable-provider'
import { IntlProvider } from './intl-provider'
The ComposableProvider component exposes a global context to grant access to cart, menu, and locale states:
interface ComposableContext {
accountDrawer: UseDisclosureReturn
cartDrawer: UseDisclosureReturn
locale: string
menuDrawer: UseDisclosureReturn
setLocale: (locale: string) => void
}
Components in Composable UI can access the ComposableContext by leveraging the useComposable hook, for example:
const { accountDrawer, menuDrawer, locale, setLocale } = useComposable()