Zanichelli's design system is widely documented on Zeroheight at this link.
yarn add @zanichelli/albe-web-components
yarn start
yarn generate component my-component
NB: component name must have a dash (
-
)
yarn link
yarn link @zanichelli/albe-web-components
yarn test
yarn test --spec {componentPath}
yarn test.e2e
There are some tools installed to help keeping uniformity of code style:
Install the related official extensions in your IDE to get live errors and warning while coding.
yarn prettier-check
yarn prettify
yarn lint.eslint
yarn lint.stylelint
yarn lint-fix.eslint
yarn lint-fix.stylelint
In this repository we follow the Conventional Commits Specification and we use standard-version to update the CHANGELOG.md when publishing a new version of the package to NPM.
Standard-version automatically detects the type of the update (patch, minor or major) following the Semantic Versioning specification.
Publish a new version on NPM registry
- Make sure you are logged in NPM
- Make sure you built the components with
yarn build
- Run standard-version:
yarn release
Specify a version
If you want to select a version or the update type, you can use the --release-as
flag:
yarn release --release-as minor
yarn release --release-as 1.1.0
In general, you can pass any flag supported by standard-version, please refer to their CLI usage documentation.
Publish the new release on GitHub
You need to manually create the GitHub release in order to update the Storybook documentation.
- storybook-addon-stencil - custom Storybook plugin for Stencil
- @storybook/addon-controls
- @storybook/addon-docs
- @storybook/addon-viewport
# Start Storybook
yarn start-storybook
local development with Storybook comes with live reloading.
# Build the library
yarn build
# Build Storybook
yarn build-storybook
yarn build
- Modern browsers
- Chromium Edge and Safari 10 with polyfills
Edge |
Firefox |
Chrome |
Safari |
---|---|---|---|
> 16.16 | > 48 | > 69 | > 10.0 |
The library provides a global css variables export. You can import the styles by ES6 import:
import "@zanichelli/albe-web-components/www/build/web-components-library.css";
or via link tag:
// using jsDelivr
<link
type="text/css"
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@zanichelli/albe-web-components/www/build/web-components-library.css"
/>
// using unpkg
<link
type="text/css"
rel="stylesheet"
href="https://unpkg.com/@zanichelli/albe-web-components/www/build/web-components-library.css"
/>
You can use the library by importing the custom elements from npm package:
import {defineCustomElements} from "@zanichelli/albe-web-components/loader";
defineCustomElements(window);
or via a script tag:
// using jsDelivr
<script src="https://cdn.jsdelivr.net/npm/@zanichelli/albe-web-components/dist/web-components-library/web-components-library.esm.js"></script>
// using unpkg
<script src="https://unpkg.com/@zanichelli/albe-web-components/dist/web-components-library/web-components-library.esm.js"></script>
Then use the relative tag as a usual component in your markup.
<section>
<z-button variant="primary">Click me!</z-button>
</section>
Albe's Web Components come with automatically generated React bindings. This means that you can use Web Components in a React application without the need to wrap component references, with full intellisense support thanks to TypeScript definition files for bindings.
Import components reference from the React submodule:
import React from "react";
import ReactDOM from "react-dom";
import "@zanichelli/albe-web-components/www/build/web-components-library.css";
import {defineCustomElements} from "@zanichelli/albe-web-components/loader";
import {ZButton} from "@zanichelli/albe-web-components/react";
defineCustomElements(window);
ReactDOM.render(<ZButton>Click me</ZButton>, document.getElementById("root"));
Each component is structured as follows:
File name | Description |
---|---|
index.tsx |
Markup and UI logics |
styles.css |
Styles |
index.spec.ts |
Tests |
index.mdx |
Storybook's markdown |
index.stories.ts |
Storybook's CSF stories |
readme.md |
Auto-generated documentation |