Support Web Components
This a component library based on vcc-ui created to standardize the creation and
articulation of support article data provided via an API in JSON. Meaning when the new API provides content in JSON,
it will have a structure that maps to these components. That way the data from the backend will dictate the structure
and not the actual components. Although all components can and should be used where suitable also in other contexts.
The components can be viewed in this Storybook
The component are organized based on the Atomic design principles by Brad Frost.
Development
Getting Started
npm install
npm run dev
to run storybooknpm test
to run tests
Publish
The library is automatically published to Github packages and NPM when
a new tag in the format v.X.X.X
is pushed to Github.
The steps to publish are:
- build
- bump version. se
npm version mayor|minor|patch
to bump version
Use npm version mayor|minor|patch
to bump version an
Usage
The library is published as an NPM package and also a Github package.
Install from NPM package registry
Run npm install @volvo-cars/ced-os-react-components
.
Install from Github package registry
To be able to install the package from the Github registry some configuration and Github authentication is needed.
Add a file called .npmrc
to your project and paste the lines below into it to configure NPM to load @volvo-cars packages from the Github registry. The second line
references an environment variable on your machine: VCC_GITHUB_PACKAGES_TOKEN
.
@volvo-cars:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=${VCC_GITHUB_PACKAGES_TOKEN}
The value of VCC_GITHUB_PACKAGES_TOKEN should be a
Github Personal Access token
with at least "read:packages" permissions.
If you use the dotenv package in your project it's also possible to define the
variable in the .env
file. In which case you need to do dotenv npm install
Example usage
JSONArticle
The main entrypoint
// ...
import { JSONArticle } from '@volvo-cars/ced-os-react-components';
const Article = ({ articleId, content }) => {
return (
<View paddingTop={[3, 6]} paddingBottom={[3, 6]}>
<JSONArticle data-article-id={articleId} data={content} />
</View>
);
};