Intent before appearance
Tokens and components are named according to their purpose, not their visual value.
Self-Initiated Design System Case Study
A code-backed exploration of how semantic tokens, accessible components, responsive density, and practical documentation can create a dependable foundation for enterprise products.
24
illustrative active workflows02 / SEMANTIC LAYER
action.primary✓ Defined03 / INTENTIONAL OPTIONS
A focused starting point
A separate public exploration, built for this portfolio. No client delivery, company adoption, or production release is implied. All workflow data is illustrative.
01 / The opportunity
Complex products often accumulate one-off interface decisions. Colors become disconnected from meaning, similar components behave differently, and accessibility is addressed only after inconsistencies have already spread.
I created this self-initiated system to explore a more dependable approach: begin with semantic foundations, limit flexibility through a clear component API, and treat documentation and accessibility as part of the component itself.
02 / The operating principles
Tokens and components are named according to their purpose, not their visual value.
Contrast, focus, keyboard behaviour, and non-color feedback begin at the foundation level.
Components support meaningful variation without creating uncontrolled combinations.
Usage, behaviour, content, accessibility, and handoff guidance are designed together.
03 / Foundations
The system begins with a focused set of primitives for color, typography, spacing, radius, and elevation. Semantic tokens then translate those values into reusable interface decisions. This separation allows the visual language to evolve without changing the purpose of every component.
#5B4BDB · Action
#0F766E · Accent
#0B1220 · Text
#15803D · Success
#B45309 · Warning
#C2413B · Critical
Neutrals provide the supporting structure: Canvas #F6F7FB, Surface #FFFFFF, Border #D8DEE9, and secondary text #526071. Dark surfaces use #111827 and #1D2939. Dark-theme accents use lighter companions to preserve contrast.
04 / Color architecture
A primitive stores a value. A semantic token expresses intent. A component token applies that intent to a specific part of the interface.
violet.600action.primarybutton.primary.background| Primitive | Semantic | Component |
|---|---|---|
| white | surface.default | card.background |
| neutral.600 | text.secondary | label.color |
| neutral.600 | border.control | input.border |
| green.700 | status.success | badge.success.text |
| amber.700 | status.warning | alert.warning.text |
| red.700 | status.critical | input.error.text |
| violet.600 | focus.ring | control.focus |
In CSS: --ds-violet-600 → --ds-action-primary → --ds-button-primary-background. Decorative borders use a softer role; input boundaries use a stronger one.
05 / Rhythm and proportion
Expressive headings meet quiet interface text. A four-pixel spacing base keeps the system consistent from a field label to a full workflow.
Shadows indicate depth in light mode; lifted surfaces reinforce it in dark mode. Specimen sizes are reference values; page headings adapt to the viewport.
06 / Adaptive environments
Theme switching should change the environment without changing the importance of information. Both themes therefore use the same semantic roles, component structure, and hierarchy while adapting surfaces, borders, text, and elevation.
Light / same semantic roles
All required checks are complete.
Dark / same semantic roles
All required checks are complete.
07 / Controlled flexibility
Enterprise products must support both focused tasks and information-heavy workflows. Instead of redesigning components for every screen, the system offers two controlled density modes that preserve hierarchy and interaction quality.
Compact mode changes spacing and height only. Labels retain their size; interactive controls retain a minimum 44px height.
08 / Component architecture
Eight reusable building blocks. Each resolves the same token roles and exposes only the choices a workflow needs. These are live HTML controls; try them with a keyboard.
API: emphasis = primary | secondary; disabled = true | false. Use one primary action per decision.
Anatomy: persistent label → editable value → supporting guidance. Choose a name your team can recognise.
Use a native select for a short, mutually exclusive choice. Platform keyboard behaviour is preserved.
The entire label is clickable. Use a checkbox for an independent on/off preference.
Meaning combines an icon, a written label, and a semantic color. Badges are informational, not controls.
Lead with the condition, then explain the next step. Reserve live announcements for dynamically changed messages.
A shared place to inspect pending changes.
Open examplesAnatomy: heading → context → explicit action. The card itself does not compete with its link for focus.
A stable identity and a scannable state. Supporting text remains visible in both density modes.
09 / Behaviour
The same state rules travel with each component. The labelled hover, focus, and active specimens hold a state for comparison; real controls also respond to pointer and keyboard input.
10 / Accessible foundations
Accessibility is more reliable when it is encoded into foundations and components instead of being left to individual screens. The system therefore establishes accessible defaults that remain present wherever the components are reused.
Contrast is evaluated per foreground/background pair, including action labels, supporting text, status text, and focus rings in each theme. These checks are component-level evidence, not a claim of a complete accessibility audit.
11 / From parts to product
A component library becomes credible only when its parts work together. I tested the system through three generic enterprise scenarios to identify gaps in hierarchy, density, states, and responsive behaviour.
Interactive, illustrative scenarios only. Actions update this page; no request is submitted to a service.
Open requests
12
! Review queueActive rules
24
✓ EnabledOwners assigned
8
✓ CoveredExtend the review window from two to three working days for routine workspace access requests.
12 / Documentation and handoff
A scalable component needs more than visual specifications. It also needs clear guidance about purpose, anatomy, properties, behaviour, content, accessibility, and implementation.
Use a primary button to commit a decision. Use a secondary action for a reversible alternative. Avoid competing primary actions in one group.
A field pairs a persistent label, control, and help or error text. Link the message with aria-describedby so the relationship survives visual changes.
Button: primary or secondary. Field: default or invalid. Theme and density are inherited; individual components do not introduce local palettes.
Enter submits a form. Space toggles a checkbox. Arrow keys navigate workflow tabs; Home and End reach the first and last tabs.
Keep labels visible, preserve native semantics, describe errors in text, and retain a visible focus ring. Recheck contrast when changing token values.
Map semantic roles to CSS aliases, document the supported properties, and review the component in a workflow at both densities and themes.
| Token name | Semantic role | Example usage |
|---|---|---|
--ds-action-primary | Main action emphasis | Primary button background |
--ds-surface-default | Content surface | Card and input background |
--ds-focus-ring | Keyboard location | Control outline |
--ds-status-critical | Actionable error | Invalid field and error message |
--ds-space-6 | Related content spacing | Comfortable component gap |
13 / Proposed measurement framework
These are future evaluation criteria, not completed results. Establish a baseline with a pilot team, then review the patterns alongside qualitative feedback.
Share of eligible interface elements using a supported component.
Where teams bypass defaults, and which unmet needs explain it.
Issues by severity, component, and recurrence across workflows.
Recurring ambiguity that should become documentation or a clearer API.
Comparable tasks measured before and after a controlled pilot.
Time from a documented proposal to a reviewed decision.
14 / Reflection
This project reinforced that a design system is not primarily a collection of polished components. Its value comes from the decisions it removes, the behaviours it standardises, and the confidence it gives teams when creating new workflows.
The strongest systems do not offer unlimited flexibility. They provide intentional options, accessible defaults, understandable documentation, and a clear path for responsible change.
Intentional foundations. Dependable products.