db-ui / mono

DB UX Design System Monorepo - Provides Design Tokens and components for Web UIs
https://db-ui.github.io/mono/
Apache License 2.0
68 stars 9 forks source link
a11y accessibility angular components css design-system html mitosis nextjs react scss tailwindcss vue

DB UI Mono (Beta) 🚂💖

Part of DB UX Design System Core Main pipeline Apache 2.0 license badge code style: prettier XO code style PRs Welcome Contributor Covenant

DB UI Mono provides robust HTML UI components, reusable visual styles, and powerful tooling to help developers, designers, and content authors build, maintain, and scale best of class digital experiences.

We’re not designing pages anymore. We’re designing systems of components.
Stephen Hay. Cited in a talk by Brad Frost at beyond tellerrand conference.

Packages

Package Content Version
foundations CSS/SCSS/Tailwind styles and assets @db-ui/foundations on Npmjs
components CSS/SCSS styles for components @db-ui/components on Npmjs
ngx-components Native Angular components @db-ui/ngx-components on Npmjs
react-components Native React components @db-ui/react-components on Npmjs
v-components Native Vue 3 components @db-ui/v-components on Npmjs
web-components Web Components @db-ui/web-components on Npmjs

How to use

Install your preferred package via npm or yarn e.g. npm i @db-ui/react-components.

Afterwards you need to add the specific CSS or SCSS files to provide the styles of DB UX Design System. For a detailed overview look at our examples.

Components

We maintain a status overview for all components.

Core principals

Consistent & Compliant DB UI Mono is part of [DB UX Design System Core](https://marketingportal.extranet.deutschebahn.com/marketingportal/Design-Anwendungen/DB-UX-Design-System/Design-fuer-Apps-Web/UI-Komponenten), that are the guidelines for any Personenverkehr Customer and Deutsche Bahn Enterprise website and web applications.
Accessible DB UI Mono leverages semantic HTML, ARIA roles, states and properties to apply our styles wherever possible, thus enforcing correct, accessible markup. And we're quality checking this in partnership with the [Team Digital Accessibility](https://db.de/8pei5n).
Declarative DB UI Mono uses declarative selectors instead of visual helpers to ensure our HTML class names and structure are human read- and understandable, lean, performant and so much easier to update.
Evergreen As [DB UX Design System](https://marketingportal.extranet.deutschebahn.com/marketingportal/Design-Anwendungen/DB-UX-Design-System/Design-fuer-Apps-Web/UI-Komponenten) evolves, so does DB UI Mono, meaning apps only need to keep their DB UI Mono package updated to ensure the latest look and feel.

Things to keep in mind

Developed for and driven by the community

This is mainly a platform providing the space and technology for a common basis of curated components; their development is mainly driven by the community and adapted out of the work done in projects and through the huge amount of feedback that we're gaining out of the community. So please support us in any way possible, this is greatly appreciated!

Migration

From DB UI Core or DB UI Elements to DB UI Mono

We're providing a detailed migration for each component next to the documentation of each component: https://db-ui.github.io/mono/review/main/components/action/button/migration

In between DB UI Mono versions

Check our migration docs for breaking changes:

  1. Alpha âž¡ Beta (0.0.xâž¡0.x.x)
  2. v0.2 âž¡ v0.3
  3. v0.3 âž¡ v0.4

How to start develop / contribute

npm install
npm run build
npm run start

Please mind the conventions for git commits.

Versions

All versions in all package.json files are set to 0.0.0, we change those during release process in CI/CD.

Give us your feedback!

This is only the first version of our framework and we really want your feedback - either within the DB UI Channel by Web Dev Community in Microsoft Teams (only available DB internally), or directly at db-ux-designsystem@deutschebahn.com. We're particularly keen to add as many examples to the behaviours as possible, to further clarify them.

Deutsche Bahn brand

As we'd like to perfectly support our users and customers on their digital journey, the usage of Deutsche Bahn brand and trademarks are bound to clear guidelines and restrictions even when being used with the code that we're providing with this product; Deutsche Bahn fully reserves all rights and ownership regarding the Deutsche Bahn brand, even though that we're providing the code of DB UI products free to use and release it under the Apache 2.0 license. Please have a look at our brand portal at https://marketingportal.extranet.deutschebahn.com/ for any further questions and whom to contact on any brand issues. As these assets and visual guidelines are retrieved from our Deutsche Bahn Marketingportal, you'll agree with the "Allgemeine Nutzungsbedingungen für das DB-Marketingportal" (german) in case of using them.

For any usage outside of Deutsche Bahn websites and applications you must remove or replace any Deutsche Bahn brand and design assets as well as protected characteristics and trademarks. We're even also planning to provide a neutral theme that would make it much easier for you to use our product without the trademarks by Deutsche Bahn.

This especially relates to the files in the directories /source/fonts/, source/images and source/samples and source/favicon.ico as well.

Development

Tests

TODO: Elaborate on testing setup

Component Tests

Visual regression tests

Playwright is used to create and compare screenshots of each individual component.

To update screenshots just run the following (you need Docker installed and available on your shell):

npm run regenerate:screenshots

If you want to generate the screenshots manually, do the following:

npm run build

# unix
docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.30.0-focal /bin/bash

#windows - allow file sharing (windows pop up)
docker run --rm --network host -v ${PWD}:/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.30.0-focal /bin/bash

npm install

cd output/${frameworkFolder}

npx playwright test --update-snapshots

You can also use docker-compose to test or regenerate screenshots.

Contributions

Contributions are very welcome, please refer to the contribution guide.

Code of conduct

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone – have a look at our Contributor Covenant Code of Conduct.

License

This project is licensed under Apache-2.0, Copyright 2024 by DB Systel GmbH.