@chakra-ui/storybook-addon
Version:
The official Storybook Addon for Chakra UI
99 lines (70 loc) • 2.66 kB
Markdown
Use Chakra UI in your Storybook stories.
This Plugin wraps each of your stories with [`ChakraProvider`][chakraprovider]
which can be configured using Storybook parameters.
```sh
yarn add -D @chakra-ui/storybook-addon
```
```sh
npm i -D @chakra-ui/storybook-addon
```
Add the addon to your configuration in `.storybook/main.js` and disable the
emotion alias (available with Storybook >6.4).
```js
module.exports = {
addons: ["@chakra-ui/storybook-addon"],
features: {
emotionAlias: false,
},
}
```
If you need to customize the props passed to `ChakraProvider` for your stories
(to use a custom `theme`, for example), you'll need to create custom Storybook
parameters.
To set global parameters for this addon, add a `chakra` object to the
`parameters` export in `.storybook/preview.js`:
```js
import myTheme from "../theme"
export const parameters = {
chakra: {
theme: myTheme,
},
}
```
The `chakra` parameters take the same shape as the `props` for `ChakraProvider`.
[][chakraprovider] to see the list of
possible parameters.
Storybook allows you to define parameters at multiple levels: global, component,
and story. We recommend setting default parameters at the global level, and
overriding them at the component or story when necessary. See the
[](https://storybook.js.org/docs/react/writing-stories/parameters)
for more information.
You will be able to toggle your color mode with the button in the toolbar. It
tries to sync with your theme through the localstorage key.
Get controls for the theming props `variant`, `size` and `colorScheme` in your
stories with `getThemingArgTypes(theme, componentName)`.
```tsx
import { Meta, StoryFn } from "@storybook/react"
import { getThemingArgTypes } from "@chakra-ui/storybook-addon"
import { theme } from "<your-theme>"
export default {
title: "Components / Forms / Button",
// get controls for `variant`, `size` and `colorScheme`
argTypes: getThemingArgTypes(theme, "Button"),
} as Meta
interface StoryProps extends ThemingProps<"Button"> {}
export const Basic: StoryFn<StoryProps> = (props) => (
<Button {...props}>Button</Button>
)
```
This will render input fields to choose the theming prop values:

[]:
https://chakra-ui.com/docs/getting-started#chakraprovider-props