TBW design system
The tokens, components and patterns every TBW screen is built from. Source in packages/ui and packages/tokens; guidance in docs/design-system.md.
Principles
What 'user friendly' means here, concretely. Check new screens against these.
- 1One clear next stepEvery screen leads with the single action that moves the person forward, as a primary or call-to-action button. Everything else is secondary.
- 2Plain languageWrite like a helpful person at the chapter office. Say what happened and what to do next. No jargon, no blame, no apologies for the system.
- 3Forgiving formsLabels above fields, hints before errors, and nothing typed is ever lost. Optional fields say so; required ones are few.
- 4Status in words and colourA status is always spelled out as well as coloured, so it reads in black and white and to screen readers.
- 5Thumb-sized and keyboard-readyControls are at least 44px tall. Every interactive element shows a gold focus ring.
- 6Brand with restraintNavy carries the interface. Heritage red is kept for the main call to action on public pages; gold marks what's featured.
Colour
Raw scales come from the TBW website's theme. Components use the semantic names below, never the raw scales.
canvasPage backgroundsurfaceCards, panels, inputsborderDividers and outlinesfgBody textfg-mutedSecondary textprimaryMain action, links, selectedctaBrand call to actionhighlightFeatured, focussuccessDone, paid, activewarningNeeds attention soondangerErrors, irreversibleinverseDark brand sectionsType
Montserrat for headings, labels and buttons, as on the TBW website. Source Sans 3 for reading. JetBrains Mono for references and member numbers.
Forms
Wrap every control in Field: it wires up the label, hint and error for screen readers. Use useServerForm so input survives a failed submit.
As people know your business.
Use the CIPC format, for example 2017/123456/07
Feedback
Alerts say what happened and what to do next. Badges always carry words, never colour alone.
Fees are charged in South African rand
Listing saved
Your membership ends in 12 days
The upload didn't go through
Data display
Details
DescriptionList for label/value pairs
- Member number
- TBW-KZN-01007
- Chapter
- KwaZulu-Natal
- Member since
- 1 Nov 2026
- Renews on
- 1 Nov 2027
| Reference | Method | Amount | Status |
|---|---|---|---|
| TBW26-00042 | Bank transfer | R 1 000 | Paid |
No listings yet
Empty states say what will appear here and how to add the first one.
TBW patterns
Compositions specific to TBW. Reuse these rather than rebuilding them per screen.
