Angular and Ionic component library implementing the BePower design system. Components are standalone, use native Shadow DOM encapsulation, and expose shared foundations for colors, typography, spacing, sizes, and shadows.
- Node.js
v24.17.0, defined in.nvmrc - npm
11.13.0, defined by thepackageManagerfield inpackage.json
GitHub Actions also reads .nvmrc, so local development and CI use the same Node.js version.
nvm use
npm ciRun the interactive component documentation locally:
npm run storybookStorybook imports the library sources directly and does not require a build of dist/ui-kit.
Generate the static Storybook website with:
npm run storybook:buildThe output is written to storybook-static/ui-kit.
Run the complete Vitest suite once:
npm testAdditional commands:
npm run test:watch
npm run test:coverage
npm run test:typecheckThe tests run directly against the library sources in memory and do not build or modify
dist/ui-kit. Coverage reports are generated in coverage/; the configured thresholds require
100% statements, branches, functions, and lines for the measured runtime code.
Build the publishable package:
npm run buildThe package is written to dist/ui-kit.
Use watch mode when a local consumer is linked to the generated package:
npm run watchWatch mode continuously rebuilds dist/ui-kit, so it should not be run at the same time as tasks
that expect the linked output to remain unchanged.
Source SVG files are stored in icons/. Import or update the generated TypeScript icon registry
with:
npm run icons:importSee the icon importing guide for file naming and variant conventions.
Pull requests run unit tests, generate the LCOV report, and execute the SonarQube Cloud scanner through the test and coverage workflow.
The CI scanner reads sonar-project.properties, which defines the source scope, analysis
exclusions, and the LCOV report generated in coverage/lcov.info. Automatic Analysis must remain
disabled in SonarQube Cloud while this workflow is active.
Build the library, then publish the generated package:
npm run build
npm publish ./dist/ui-kitKeep the leading ./ in the package path; otherwise npm may interpret dist/ui-kit as a remote
package reference.
- Pull requests and pushes to
mainrun tests, coverage, and SonarQube Cloud checks. - Pushes to
mainbuild and deploy Storybook to GitHub Pages.