manager to persist a users color mode preference in
omit if you don't render server-side
for SSR: choose cookieStorageManager
Chakra UI + Storybook
Use the official Storybook Addon for Chakra UI to configure Storybook to
automatically wrap your stories with the <ChakraProvider /> and add a color
mode toggle.
Installation#
npm i -D @chakra-ui/storybook-addon
yarn add -D @chakra-ui/storybook-addon
pnpm add -D @chakra-ui/storybook-addon
The Storybook addon is only compatible with storybook >6.4
Usage#
Add the addon to your configuration in .storybook/main.js:
module.exports = {addons: ['@chakra-ui/storybook-addon'],features: {emotionAlias: false,},}
You can specify global parameters for the addon in .storybook/preview.js.
These options are the same as the props to ChakraProvider (without
children).
// .storybook/preview.jsconst theme = require('../path/to/your/theme')export const parameters = {chakra: {theme,},}
colorModeManager
colorModeManagerStorageManagerlocalStorageManagerdisableEnvironment
disableEnvironmentDisabled the use of automatic window and document detection. This removed the injected `<span/>` element
booleanenvironment
environmentThe environment (window and document) to be used by
all components and hooks.
By default, we smartly determine the ownerDocument and defaultView
based on where ChakraProvider is rendered.
EnvironmentportalZIndex
portalZIndexCommon z-index to use for Portal
numberundefinedresetCSS
resetCSSIf true, CSSReset component will be mounted to help
you reset browser styles
booleantruetheme
themea theme. if omitted, uses the default theme provided by chakra
Dict<any>Troubleshooting Storybook#
If you're facing an issue where Storybook isn't working with Chakra UI, here's a work around 👇
In your .storybook/main.js file, you'll need to config the features and
webpackFinal properties like so:
module.exports = {stories: ['../**/*.stories.mdx', '../**/*.stories.@(js|jsx|ts|tsx)'],addons: ['@storybook/addon-links', '@storybook/addon-essentials'],framework: '@storybook/react',features: { emotionAlias: false },webpackFinal: async (config) => {config.module.rules.push({test: /\.mjs$/,include: /node_modules/,type: 'javascript/auto',})return config},}