woocommerce/plugins/woocommerce-blocks/docs/contributors/storybook-and-components.md

57 lines
2.7 KiB
Markdown

# Storybook & Components <!-- omit in toc -->
## Table of contents <!-- omit in toc -->
- [Where are our components?](#where-are-our-components)
- [How to run Storybook locally and test components](#how-to-run-storybook-locally-and-test-components)
- [How to add a story for a component](#how-to-add-a-story-for-a-component)
This repo includes [Storybook](https://storybook.js.org) tooling so we can test and develop components in isolation. The storybook is automatically built and published to [GitHub pages](https://woocommerce.github.io/woocommerce-blocks/) on every push to the main branch.
## Where are our components?
We have components in a few folders, for different contexts.
- [`assets/js/base/components`](../../assets/js/base/components)
- [`assets/js/editor-components`](../../assets/js/editor-components)
- [`assets/js/icons`](../../assets/js/icons)
**`assets/js/base/components`** are used in front-end code, as well as editor & admin.
These components help us build consistent interfaces across the front end (shopper) experience and elsewhere.
Because they can be used in the front end and editor, components in this folder should:
- Perform efficiently - i.e. not adversely affect page performance/experience.
- Have lean dependencies - i.e. not bloat the payload unnecessarily.
- Look consistent in common themes; ideally should allow themes to adjust appearance as necessary.
**`assets/js/editor-components`** are used in the editor UI for our blocks.
They allow us to build a consistent and powerful UI for merchants for authoring content relating to Woo data - e.g. selecting products or product attributes. Because they are focused on the editor, they can rely on known editor dependencies and optimise styling for the editor only.
**`assets/js/icons`** is a suite of icons and SVG images that we use in our interfaces.
For more info about individual components, refer to [Storybook](https://woocommerce.github.io/woocommerce-blocks/) or individual readme files.
## How to run Storybook locally and test components
- `npm run storybook`
- Point your browser at port 6006, e.g. <http://localhost:6006>
- Play with components 🎛!
## How to add a story for a component
- Add a `stories` folder alongside the component.
- Add stories in `.js` files in this folder.
If you're stuck, copy source of an existing story to get started.
<!-- FEEDBACK -->
---
[We're hiring!](https://woocommerce.com/careers/) Come work with us!
🐞 Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/storybook-and-components.md)
<!-- /FEEDBACK -->