⚠️ This addon is officially deprecated ⚠️
Since it's release, addon-styling has been a great way to get your styles configured in Storybook. However, as the addon quickly evolved, it became clear that it was trying to do too much. It was trying to be a configuration tool, a theming tool, and a housed bulky code mods as well. This made it difficult to maintain and added a lot of dependencies that most users didn't need.
To address this, I've split the addon into two separate addons, @storybook/addon-styling-webpack
and @storybook/addon-themes
. These addons are much more focused and will allow us to iterate on them more quickly.
@storybook/addon-styling-webpack
will be specifically for configuring your Webpack based Storybooks with popular tools like Tailwind, Post CSS, SCSS, Less, and Vanilla-extract.
@storybook/addon-themes
will be focused on providing and switching between multiple themes in Storybook regardless of what building tool that you use.
I've also moved the codemods to a separate package so that they can be used through npx
/ yarn dlx
/ pnpm dlx
without having a bulky codemod staying in your node_modules
.
I've added a migration guide to help you migrate to the new addons. If you have any questions, please feel free to reach out to me on Twitter or the support channel in the Storybook Discord.
All the best, Shaun Evening
@storybook/addon-styling
Get started in Storybook 7 faster with popular styling tools.
Using Storybook 6? Check out the release-0-3
branch
To get started, install the package as a dev dependency
yarn:
yarn add -D @storybook/addon-styling
npm:
npm install -D @storybook/addon-styling
pnpm:
pnpm add -D @storybook/addon-styling
Then, include the addon in your .storybook/main.js
file
module.exports = {
stories: [
"../stories/**/*.stories.mdx",
"../stories/**/*.stories.@(js|jsx|ts|tsx)",
],
addons: [
"@storybook/addon-essentials",
+ "@storybook/addon-styling"
],
};
For tool-specific setup, check out the recipes below
@emotion/styled
@mui/material
bootstrap
cssModules
less
postcss
sass
styled-components
tailwind
vuetify@3.x
Don't see your favorite tool listed? Don't worry! That doesn't mean this addon isn't for you. Check out the "Writing a custom decorator" section of the api reference.
If you want to override your theme for a particular component or story, you can use the theming.themeOverride
parameter.
import React from "react";
import { Button } from "./Button";
export default {
title: "Example/Button",
component: Button,
parameters: {
theming: {
themeOverride: "light", // component level override
},
},
};
const Template = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: "Button",
};
export const PrimaryDark = Template.bind({});
PrimaryDark.args = {
primary: true,
label: "Button",
};
PrimaryDark.parameters = {
theming: {
themeOverride: "dark", // Story level override
},
};
If you'd like to contribute to this addon, THANK YOU, I'd love your help 🙏
yarn start
runs babel in watch mode and starts Storybookyarn build
build and package your addon codenext
version on npm, and the development branch where most work occurslatest
version on npm and the stable version that most users usenext
branch, which depends on the next
version of Storybook.next
NPM tag.pick
will get cherry-picked back to the main
branch and will generate a release on the latest
npm tag.