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, applyPolyfills} from "@zanichelli/albe-web-components/loader";
applyPolyfills().then(() => {
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.
You still need to import and run polyfills, then you can import Component references 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, applyPolyfills} from "@zanichelli/albe-web-components/loader";
import {ZButton} from "@zanichelli/albe-web-components/react";
applyPolyfills().then(() => {
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 |