A token-first UI kit for a wholesale fashion B2B platform — exported as 98 CSS variables, spanning every surface from data tables to product cards.
Everything in the system flows upward from primitive tokens. No component ever references a raw hex value — only named semantic tokens. This makes global changes (themes, brand updates) a single-source operation.
Primitive tokens name raw values. Semantic tokens assign purpose. The Linesheet system exports both layers as CSS variables — 98 total across Mode 02 (Variation B), covering base, badge, chart, sidebar, and sonner states.
Inter is used across all UI — navigation, labels, data, inputs, and headings. Weight and tracking do the work of differentiation: 900 for display, 700 for headings, 400 for body. No decorative typefaces, no arbitrary size decisions.
| Role | Sample | Spec | Typeface | Used for |
|---|---|---|---|---|
| H1 | Large Titles | 32px / 800 / −0.04em | Inter | Page headers, brand moments |
| H2 | Mid-Level Titles | 22px / 600 / −0.01em | Inter | Section headers, panel titles |
| H3 | Subtitles | 16px / 600 / 0 | Inter | Card titles, table labels |
| body | Body text for product descriptions and list content | 14px / 400 / 0 | Inter | General UI copy, descriptions |
| price | $24.00 | 16px / 700 | Inter | Wholesale price, primary CTA value |
| label | SECTION LABEL | 11px / 700 / 0.08em | Inter | Navigation labels, column headers |
A design system is a series of constrained decisions. Documenting them prevents revisiting the same debate and helps new contributors understand the boundaries.
Every component references only semantic tokens — never primitives. Below: four components from the Linesheet kit, each with token annotations showing exactly which variable governs which visual property.
--sidebar-background → Gray 900 (#1A1A1A)--sidebar-accent → Primary (#E11074)--sidebar-foreground → 25% white alpha--badge-green → Green 300 (light tint)--badge-green-accent → Green 600 (full saturation)--table-header → warm surface--color-primary — price is a primary CTA signal--color-input → border token; on focus → --color-ring pink outline--color-primary — consistent with all primary actionsPatterns are reusable compositions of components — a modal + form + table working together as a single user flow. The linesheet creation flow combines all three.
The two-layer token model was the key unlock. By separating primitive values from semantic meaning, the system supports future sub-brand theming (TheEdit, AsiaDirect) without touching any component code — only the semantic layer needs to change.