Design System

One token library, one component set, one shared language built to unify every enterprise product

Design Systems

Enterprise · Foundations

Type

Product Designer

Scope

8 weeks

Platform

2 Enginners, 1 PM, me

Domain

Web

Enterprise Design System

One token library, one component set, one shared language built to unify every enterprise product and make inconsistency structurally impossible.

Role

UX Designer — End-to-end

Tools

Figma Variables · Auto Layout

Timeline

6–8 months

Serves

RMS · PeopleAssist AI · SDI + all downstream products

Coverage

20+ Components · Foundations · Core Components · Data · Templates

First thing first — "reasons" — why it was needed?

Across the enterprise product suite, every designer was solving the same foundational problems independently choosing their own colours, sizing their own buttons, naming their own components. Every developer was rebuilding the same dropdown from scratch. The same status colour meant different things in different tools. Every sprint absorbed time that should have gone to product problems, not infrastructure decisions already made somewhere else.

Being a growing team, we didn't have a proper design system in place so we built one. It's what now keeps our visual hierarchy and data alignment consistent across every screen.

UX Audit

Overall Colour Contrast and Visual Hierarchy

No Visual Hierarchy Inconsistent typography in page & section titles, table titles, filters, and tabs reduces clarity and weakens visual hierarchy. Misplaced status elements make it harder for users to identify key information quickly.

Colour Contrast & Overuse of Red Screens lacked sufficient colour contrast, affecting readability and accessibility. Primary colour (red) was heavily used across statuses, alerts, and CTAs it should be reserved for highlighting priority actions where user attention and interaction are required.


Best Practices

  • Consider colour saturation: bright colours naturally stand out, so use them for important items; less-saturated colours for items of lesser importance. Reserve warm bright colours, like red, for warnings or errors.

  • Don't use too many colours: limit colour use to 2 primary and 2 secondary colours per screen.

  • Don't use too many contrast variations: use no more than 3 contrast variations for complex designs.

  • Do not rely only on colour to communicate visual hierarchy people with colour blindness may not perceive differences between certain colour combinations.

UX Audit — Tables

Header Styling Variations

Some tables had highlighted headers while others didn't, making it hard to distinguish structure. Violated Consistency & Standards (Jakob's Law) users expect uniform patterns.

Inconsistent Row Heights

Uneven row heights disrupted scanning and created visual noise. Violated Aesthetic and Minimalist Design consistent row height creates rhythm and predictability.

Inconsistent Data Alignment

Data was left-aligned in some tables and centre-aligned in others. Left-aligned text supports faster scanning, especially for text-heavy or mixed-data tables.

Best Practices

  • Standardise header design: uniform header backgrounds, font weights, and spacing improve recognition and reduce confusion.

  • Fix row heights: apply consistent row height across tables for better visual flow and scannability.

  • Align headers and data: ensure proper alignment so users can intuitively associate column titles with their content.

  • Use left alignment for most data: right alignment should be reserved for numerical, centre for symmetrical data only (e.g. status icons).

Goal

Build a clean, reusable and easily accessible system which makes components consistent throughout the product.

We didn't want people to detach components and use them separately so we created scalable, tokenised components that enforce consistency by architecture, not by agreement.

Colour Palette

Every colour has a semantic role

We followed the WCAG colour contrast ratio of 4.5:1 for smaller text and 3:1 for larger text for better accessibility. No component ever references a raw hex value every colour passes through the semantic token layer.

  • Brand Blue #2A8C8C - Primary · Actions · Links

  • Deep Blue #1B2A3B - Hero · Sidebar · Headings

  • Yellow #E8A020 - Accent · Logo · Highlights

  • White #FFFFFF - Surfaces · Cards · Base

  • Orange #C4621A - Warning · Escalation

  • Purple #6E4FC4 - System · Automated

  • Green #3D8B5E - Success · Confirmed

  • Red #C23B3B - Error · Critical only

  • Dark Grey #2E3440 - Primary text · Labels

⚠️ Secondary colours limited to ≤20% of visual space per screen. Red reserved exclusively for errors — never as a data series or decorative element.

Primitive → Semantic → Component Token Architecture

Layer 1 · Primitive Tokens - brand-blue-500 · brand-blue-700 · brand-yellow · brand-green · brand-red · brand-orange

Layer 2 · Semantic Tokens - color/action/primary · color/status/success · color/status/error · color/status/warning · color/system/auto · color/surface/disabled

Layer 3 · Component Tokens - button/primary/bg · chip/success/bg · input/error/border · alert/warning/fill · flow-node/system/fill · button/disabled/bg

Typography

Inter + DM Sans

Designed to be both functional and accessible with the aim for WCAG contrast ratio of at least AA. Primary information such as headers will track the strongest contrast. Primary colours are used sparingly.

  • Display · 48–72px - inter · 800 · −0.04em · Line height 1.0 - Hero heading, Hero / Page title

  • H1 · 32px - Inter · 700 · −0.03em · Line height 1.1 - Section heading, Major sections

  • H2 · 24px - Inter · 700 · −0.02em · Line height 1.2 - Sub-section heading, Card titles

  • Body · 16px - DM Sans · 400 · 1.65 line height - Body · Paragraphs

  • Body Sm · 14px - DM Sans · 400 · 1.6 line height - Captions · Helper text

  • Label · 11px - DM Mono · 500 · +0.18em · CAPS - Tags · Chips · Semantic token / status label / overline

Spacing & Grid

8-point base unit

We used a 12-column grid system to make designs responsive 12 is highly divisible (by 2, 3, 4, 6). All spacing elements abide by a rule of 8. This ensures further consistency and alignment for complex layouts, and makes development handoff significantly easier.

  • Spacing Scale (Figma Variables) spacing/xs 4px · spacing/sm 8px · spacing/3 12px · spacing/md 16px · spacing/lg 24px · spacing/xl 32px · spacing/2xl 48px · spacing/3xl 64px · spacing/4xl 96px

  • Grid System 12 columns · 24px gutter · 64px margin

  • Border Radius Tokens radius/xs 2px · radius/sm 6px · radius/md 12px · radius/lg 20px

How We Defined the Components

Naming Convention

Naming convention followed for colour tokenisation of components: Button / Primary / Default / Text each component carries its size/state grid: Default, Hover, Disabled across Primary, Secondary, and Tertiary variants.

  1. For every component we added: variants, states, anatomy, size, style, and detailed measurements (whatever applicable).

  2. References followed: states and sizes from Material Design, Carbon Design System, Goldman Sachs, Salesforce Lightning aligned with our dev team's existing library usage.

UI Components

A Glimpse of What I Built

Status Chips all semantic variants: Confirmed · Action Required · Error · In Progress · System Processing.

Data Table Component left-aligned text, semantic status chips, consistent row heights.

Date Range Picker month view with multi-select capability.

Documentation & Usage Guidelines

Built for the Next Designer

  1. For every component we added: variants, states, anatomy, size, style, and detailed measurements (whatever applicable) so that anyone can use them from day one without breaking consistency.

  2. We took reference from Material Design, Carbon Design System, Ant Design System as our dev team uses the material library — ensuring the design system and component library spoke the same language.

Button — Component Spec

  • Attributes Container height (regular) 44px · Container height (large) 48px · Container height (small) 36px · Container shape: 4px corner radius

  • Label 14px · Medium font size

  • Padding Left/right padding (regular) 24px · (large) 24px · (small) 16px

  • Icons Left icon size 20px · Right icon size 20px

  • Token Bindings Background: color/action/primary · Text: color/surface/white · Border radius: radius/sm


How the "System" Is Maintained

One Folder. Everything Linked.

One folder: "Design System" where we documented all UI components. Each file has a Link Index so that navigation between components is always accessible from a single source of truth.

  • Foundations - Colours · Typography · Spacing · Icons

  • Core Components - Matrix · Heatmap charts

  • Tables - Standard · Expanded · With pagination

  • Templates - Header · Filters · Mega menu · Footer

  • Links Index - Master navigation across all DS files

UI Components — Before & After


UX Research - Behind the Scenes

We Did Intense Secondary Research While Building the System

Brands explored how leading systems handle colour & components: Material Design (Google) · Carbon DS (IBM) · Goldman Sachs DS · Salesforce Lightning · Uber Base DS · Ant Design System.

Goal:

  • How component states and sizes are defined across enterprise systems

  • How tokenisation is structured from primitive to semantic

  • What documentation depth is required for reliable developer adoption

Observation:

  • All leading systems use a primitive → semantic → component token hierarchy not flat colour application

  • Components are only considered complete when every interactive state is documented

  • The systems with highest adoption rely on white space and neutral tones with colour used strategically, not emotionally

Impact — What We Achieved

The Numbers

  • 100% - Consistency throughout all dashboard and product designs across the suite

  • - Collaboration with developers became better complete specs eliminated Slack clarification queries

  • - Increased project delivery speed foundational decisions made once, reused everywhere


My Learnings

What This Project Changed

  • Scalable Component - Built components using atomic design principles atoms → molecules → organisms. So that components can scale to any new product without rebuilding from scratch.

  • Documentation - Added detailed documentation for all components variants, states, anatomy, measurements, and token bindings. So anyone can use them from day one without breaking consistency.

  • Dev Collaboration - Worked closely with developers and explained how Figma Variables map to code tokens so they could build fast, reference once, and never re-ask the same implementation question.

"A design system isn't a project you finish. It's the infrastructure decision you make and then spend every subsequent project either benefiting from, or paying the compound interest on having skipped."

— Charan Raj · Enterprise Design System · 2024

Concept Case Study · Anonymized from real work · Client details available privately on request

Let's Talk

I'm most energized by projects where UX and motion come together complex problems, smart collaborators, and experiences that genuinely improve someone's day.

Comment

CharanRaj

Open to full-time roles and interesting conversations about UX, motion, and hard design problems.

1