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.Package | Content | Version |
---|---|---|
foundations | CSS/SCSS/Tailwind styles and assets | |
components | CSS/SCSS styles for components | |
ngx-components | Native Angular components | |
react-components | Native React components | |
v-components | Native Vue components |
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.
We maintain a status overview for all components.
Consistent & Compliant
DB UI Mono is part of DB UX Design System Core, 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.
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 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.
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!
npm install
npm run build
npm run start
Please mind the conventions for git commits.
All versions in all package.json
files are set to 0.0.0
, we change those during release process in CI/CD.
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 [email protected]. We're particularly keen to add as many examples to the behaviours as possible, to further clarify them.
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.
TODO: Elaborate on testing setup
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.
- testing:
docker-compose -f ./e2e/docker-compose.yml up
- update screenshots:
docker-compose -f ./e2e/docker-compose.regenerate.yml up
Contributions are very welcome, please refer to the contribution guide.
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.
This project is licensed under Apache-2.0, Copyright 2024 by DB Systel GmbH.