What is @storybook/blocks?
@storybook/blocks is a package designed to enhance the Storybook experience by providing a set of reusable blocks for building and organizing stories. It allows developers to create more structured and maintainable storybooks with ease.
What are @storybook/blocks's main functionalities?
Creating Stories
This feature allows you to create and organize stories for your components. The code sample demonstrates how to define a story for a Button component using the Story and Meta blocks.
import { Story, Meta } from '@storybook/blocks';
export default {
title: 'Example/Button',
component: Button,
} as Meta;
const Template: Story<ButtonProps> = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Button',
};
Adding Controls
This feature allows you to add controls to your stories, enabling dynamic interaction with component properties. The code sample shows how to add a color control for the backgroundColor property of a Button component.
import { Story, Meta } from '@storybook/blocks';
export default {
title: 'Example/Button',
component: Button,
argTypes: {
backgroundColor: { control: 'color' },
},
} as Meta;
const Template: Story<ButtonProps> = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Button',
};
Documentation
This feature allows you to add documentation to your stories, making it easier for other developers to understand and use your components. The code sample demonstrates how to configure documentation for a Button component using DocsPage and DocsContainer.
import { Meta, Story, DocsPage, DocsContainer } from '@storybook/blocks';
export default {
title: 'Example/Button',
component: Button,
parameters: {
docs: {
container: DocsContainer,
page: DocsPage,
},
},
} as Meta;
const Template: Story<ButtonProps> = (args) => <Button {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Button',
};
Other packages similar to @storybook/blocks
react-docgen
react-docgen is a CLI and library for extracting information from React components for documentation generation. It focuses on generating documentation from React components' source code, making it a good alternative for creating detailed component documentation.
docz
docz is a tool for creating beautiful and highly customizable documentation sites for your React components. It provides a similar experience to Storybook but with a stronger emphasis on creating full-fledged documentation sites.
Storybook Doc Blocks
Portable documentation components for building design systems in Storybook.
Blocks development
To bootstrap, in the monorepo root:
yarn start
To develop this package, in the monorepo root:
yarn build blocks --watch
To run storybook, in this directory:
yarn storybook