Abilian Design System¶
A design system for Abilian's business applications, built on Litestar and Jinja with plain CSS. It has 27 knobs; everything else is derived from them.
Ask most design systems for "less shadow" or "tighter" and there is no single place to answer — a few hundred independent values have to be edited in step. Here, one line does it:
one declaration on :root |
elements whose computed styling changes |
|---|---|
--ads-space-scale: 1.25 |
361 of 501 |
--ads-radius-scale: 0 |
171 of 501 |
--ads-shadow-strength: 0 |
55 of 501 |
--ads-brand: #c2410c |
29 of 501 |
Measured on the component gallery. The brand figure includes every hover, active, tint, wash, border and focus-ring shade, because all of them are color-mix() derivations of the one colour.
What you get¶
- One stylesheet. 16 files reached through
@import, 3,034 lines. No build step, no PostCSS, nonode_modules, no runtime dependency. - A closed vocabulary. 27 knobs → 128 derived tokens → 256 classes. Anything not in the reference does not exist, and
abilian-ds lintsays so. - Both themes in one value. Every colour carries light and dark through
light-dark(). There is nodark:variant anywhere, and so no second styling pass to forget. - Measured parity with Tabler. A harness compares 78 elements property by property against the real thing and reports 0 differences.
- Accessibility with tests behind it, not intentions — contrast in both themes, reflow at 320px, 200% text-only zoom, keyboard traversal, pointer target size, and Windows high contrast, swept across 50 routes.
Thirty seconds¶
Then read Your first page.
Where to go¶
- Getting started — install, adopt, and put a real page on screen.
- Guides — theming, layout, shells, forms, accessibility.
- Developers — how it is built, and how to extend it without breaking the contract.
- Reference — every knob, token, class and command.
Who it is for¶
Teams building business applications — dense, form-heavy, table-heavy, long-lived — on a Python server that renders HTML. If you want a component library for a React SPA, this is the wrong tool. If you have five internal applications that should look like one product and none of them should carry a front-end build, it is the right one.