Blip Design System (blip-ds) is a design system component library built with Web Components using StencilJS. The project provides UI components that follow Blip's design guidelines and can be used in various web applications.
/src/- Source code of the component library/assets/- Static assets like images and SVGs/components/- Individual web components/globals/- Global styles and variables/pages/- Documentation pages in MDX format for Storybook, including guides, integration docs, and framework-specific usage/snippets/- Reusable code examples demonstrating UI patterns and component combinations as Storybook stories/templates/- Full page layout templates showing how components can be combined into complete interfaces/utils/- Utility functions and helpers/view_components/- View-specific components
/blip-ds-react/- React wrapper components (generated from StencilJS components)
The project uses StencilJS (v2.16.1) as the core technology for building web components. StencilJS is a compiler that generates standard Web Components that can work in any framework or with no framework at all.
Stencil config is located in #file:../stencil.config.ts
React wrapper components are auto-generated using @stencil/react-output-target to allow usage of these components in React applications.
- SASS is used for styling via
@stencil/sass - blip-tokens design tokens are imported for consistent theming
We use stencil unit tests and e2e tests.
Tests are located in each component's directory in a test folder. We prioritize unit tests for component logic and e2e tests for integration scenarios.
Must follow stencil's testing guidelines and use the @stencil/core/testing package.
- Storybook for component documentation and development
npm run dev- Starts development environment with Stencil and Storybooknpm run build- Builds the component librarynpm run build:react- Builds the React wrapper componentsnpm run test- Runs all testsnpm run storybook- Starts Storybook for component developmentnpm run storybook:build- Builds static Storybook documentation
-
When adding new components:
- Create the StencilJS component in
/src/components/ - React wrappers will be auto-generated in
/blip-ds-react/withnpm run build:react - Add Storybook documentation. Use an existing component as a reference for structure and format.
- Ensure unit tests are written in the component's
testfolder - Ensure e2e tests cover integration scenarios
- Review and update documentation as necessary
- Create the StencilJS component in
-
The project follows semantic versioning and uses conventional commits for releases.
-
Design tokens come from the
blip-tokenspackage which should be kept updated.