clad-ui v0.4.0
Intro
Clad UI Design System is a system of design tokens, guidelines, theming solution and components library that helps Chotot front end and mobile engineers build consistent UIs faster and more satisfyingly.
Why the name Clad UI?
Clad is the short form of classified ads, which is the main product of our group, besides, clad also mean βto be dressed or to be coatedβ
What Clad UI Design System is
- A unified solution for styling components for Chotot Web user-facing platforms
- A theme specifications that define primitive Clad UI design tokens
- A collection of reusable components from atomic inputs to composite components
- A workbench (a.k.a kitchen sink) to preview all available components and their usage guide
- A set of CLI tools to assist generate new components...
What Clad UI Design System is NOT
- A base framework for doing Chotot web apps (refer to Next.js framework)
- An end user-facing web app
- Any full web page
Colophon (A.K.A prerequisites to this design system)
Building components:
- π Storybook for UI component development and auto-generated docs
- βοΈ React declarative component-centric UI. React is also our core UI library of Front End development
- π Linaria which enable CSS-in-JS styling and extract all CSS to external CSS file.
- π System UI Theme Specification as a standard design token format with theme-aware
css
props helper - β¬οΈ MDX (part of Storybook) for seamless React / JSX documentation
Maintaining the system:
- π Babel and module resolver plugin for transpiling modern JS and static theming
- π¦ NPM for packaging and distribution
- π§Ά yarn as package manager's CLI
- π§ͺ Jest as test runner for unit testing
- π react-testing-library to assist unit testing React components
- π₯ Gitlab CI: Continuous integration
TODO:
- β Chromatic to prevent UI bugs in components (by Storybook maintainers)
Getting started
Refer to Overview > Getting-started document.
Frequently Asked Questions
1. Does this design system work with create-react-app
?
Yes. Since our solution introduce a custom Babel plugin and Webpack loader, it's not possible to use clad-ui
with non-configurable react-scripts
. You have to eject react-scripts
to be able to customize Babel and webpack config or use react-app-rewired
.
Technical Debts
1. Linaria lack an object serializer that assist snapshot testing.
Currently, snapshots contains only rendered HTML and hashed class names. Ideally, snapshots should contain rendered HTML and associated CSS combined as component's signature.
Β© 2020-2021 Chotot.vn. Apache-2.0 license.