StepZen Design System
This npm package includes design tokens, styles and UI components shared across different StepZen web apps: the docs and marketing site stepzen.com, the "My Account" dashboard dashboard.stepzen.com, etc.
This repo includes Storybook as a tool to visualise the contents of the design system, making it available on the web.
The Storybook for the main
branch is automatically published to https://main--62ba1d9d935e74836cf81cae.chromatic.com/.
NOTE: it might take up to an hour after a push to main
before changes appear on https://main--62ba1d9d935e74836cf81cae.chromatic.com/.
How to use
In a NextJS app
Updating and publishing a new version
Manual publishing steps:
git clone git@github.com:steprz/design-system.git --depth 1
cd design-system
npm ci
npm version [new version]
npm run build
npm publish
git push
(to push the version commit)git push --tags
(to push the new version tag)- create a GitHub release from the new version tag
- post a summary to the
#dev-products-frontend
Slack channel
Adding a new global style
Global style sheets set CSS custom properties on the HTML page :root
and / or modify styles of the standard HTML elements such as <h1>
or <body>
.
How to add a new global style to the StepZen design system:
- consider if it would make sense to append the new style to one of the existing
.css
files - if not, create a new
stylesheet-name.css
file under src/styles
(or src/styles/tokens
for new design tokens) - write CSS as usual, assuming it is loaded into apps by a regular
<link rel="stylesheet">
tag - import the new .css file into
src/styles/index.css
with a relative @import()
- create a
[StylesheetName].stories.mdx
file next to the stylesheet-name.css
file (copy from one of the existing similar files) - update the
<Meta title="Design Tokens/Colors" />
tag in the copied file appropriately - describe the new stylesheet so that other engineers on the StepZen team know what it is and how to use it
- publish a new version of the
@stepzen/design-system
package to npm (most likely, this would be a minor) - That's it. All apps using the StepZen design system via
import '@stepzen/design-system/dist/css/index.css'
will get new global styles after bumping the version of their @stepzen/design-system
npm dependency.
Adding a new UI component
TBD
Currently, the design system only includes a dummy sample Button
component which is not intended for actual usage.
Running locally
This repo uses NodeJS 16+ and npm 7+.
npm run build
- (re)create a production design system bundle in the dist/
folder (includes .css
, .js
, and .d.ts
files)npm run storybook
- start a local Storybook server on http://localhost:6006npm run build-storybook
- create a production storybook bundle in the storybook-static/
foldernpx chromatic --project-token=<project-token>
- recreate a production srotybook bundle and publish it to chromatic.com
. Copy the project token from https://www.chromatic.com/manage?appId=62ba1d9d935e74836cf81cae&view=configure. Typically you do not need to do that, since all branches on GitHub are automatically deployed to chromatic.com
by the "Chromatic" GitHub workflow (see .github/workflows/chromatic.yaml
).