• Tokens

  • Colours

  • Typography

  • Icons

  • Spacing & Radius

  • Buttons

  • Input Field

  • Badge

  • Dropdown

  • Alerts

Building PL Prepaid Design System

Creating a scalable, token-driven design system for a fintech prepaid card product — from audit to platform adoption.

Company

Pine Labs

Role

Senior UX Designer

2025 - 2026

Scope

Design System · Component Architecture · Documentation · Design–Engineering Collaboration

Overview

Background

Pine Labs Prepaid is a comprehensive prepaid and consumer engagement ecosystem for businesses. It offers solutions spanning gift cards and prepaid programs, loyalty and rewards, digital wallets, marketplaces, B2C platforms such as Woohoo, and commute solutions such as Bharat Yatra. Together, these products help businesses manage stored value, rewards, distribution, and consumer experiences across online and offline channels.

System Scope

A complete token-driven design system for Pine Labs’ prepaid product — covering colour architecture, typography, spacing, elevation, and 18 component families from buttons to data tables. Every element is accessibility-tested, documented, and production-ready.

Component Categories Designed & Coded

Buttons

Dropdowns

Toggles

Avatars

Alerts

Notifications

Tabs

Tables

Empty States

Chips

Input Fields

Checkbox & Radio

Tooltips

Tags

Toast

Badges

Button Groups

Pagination

Breadcrumbs

Modals

18

Component Families

160+

Design Tokens

300+

Variant Configurations

98%

WCAG AA Compliance

6 mo

Zero to Production

Discovery

Visual Fragmentation over 5 Years

With 3 decentralized product design teams shipping features independently, the core experience fractured. Designers spent time reinventing layouts, and engineers spent up to 40% of their sprints custom-styling components like dropdowns and action buttons from scratch.

Friction metrics identified:

47

Button styles shipped

12

Shades of Brand Green

40%

Developer sprint waste

“We use separate open-source libraries across different products, so we don’t have a single master library. Components are built as requested for each project.”

— Engineering Lead

“Visual inconsistency in our product pages is eroding user trust. Users ask if they are two different sites.”

— Product Manager

Competitive Benchmarking Grid

Polaris (Shopify)

Dense Admin Layouts

Excellent merchants data layout; inspired our density tokens.

Carbon (IBM)

Technical Data Density

Highly structured state naming; inspired our token naming system.

Material Design

Flexible Platform Reach

Too generic for fintech, but helped establish our Android layout grids.

Lightning (Salesforce)

High Utility Controls

Heavy enterprise logic; helped shape our filtering systems.

Process & Planning

Atomic Build Order

We prioritized components by frequency of use and dependency chain - building the most reused, least dependent pieces first.

Phase 1 - Primitives

Month 1-2

Buttons (5 hierarchies × 5 sizes × 4 states), Checkbox/Radio, Toggle switches.

Phase 2 - Form Controls

Month 2-3

Input fields (text, textarea, verification code), Dropdowns (standard, filter, input dropdown with search).

Phase 3 - Feedback

Month 3-4

Alerts (4 types), Toast notifications, Notification banners, Badges, Tags/Chips.

Phase 4 - Navigation

Month 4-5

Tabs, Breadcrumbs, Pagination, Button groups.

Phase 5 - Complex Patterns

Month 5-6

Tables (with sort, frozen headers), Modals, Empty states, Avatars, Tooltips.

Library Stats

Component families

18

Variant configurations

300+

Months to production

6

COLOUR MODES

2

Solving the Variant Explosion

Our button alone needed 300 configurations. Instead of 300 separate frames, we used Figma’s component properties:

• Boolean props - toggle leading/trailing icons, error, link style

• Instance swap - swap icon components dynamically

• Variant props - hierarchy, size, state

300 frames → 1 component

Token Architecture

Separating Value from Intent

Instead of hardcoding colors, we built a 2-tier token hierarchy. This decoupled basic CSS values from functional design intent. When brand colors change, updates take seconds, not sprints.

Real-world Validation

“When we changed our primary brand green to Pine Green during refinement, it propagated across 340+ component files in Figma automatically in under 5 minutes.”

2-Tier Hierarchy Spec

1. Primitives (Values)

Raw value definitions

pinegreen-600: #005656

accent-600: #0172CB

2. Semantic Aliases (Intent)

Role & usage definition

color.foreground.primary

color.text.link

Components

v0.1 — TOO RIGID

Month 1

Forced everything into strict nested structures. Designers bypassed the library because it stifled creative exploration on specific layout options.

v0.5 — TOO FLEXIBLE

Month 2-3

Detached and broken buttons returned. Designers had too much freedom to overwrite sizes and styles, leading back to visual fragmentation.

v1.0 — THE SWEET SPOT

Month 4-6

Established clear constraints. Strict spacing and global colors, but with customizable slot areas for flexible layout exploration.

Internal Alignment and Objections Overcome

Cultural Frictions

• Color naming wars: Spent 3 weeks aligning engineering and design on a semantic palette naming convention.

• Dropdown disaster: Component was too complex, requiring 6 nested sub-components and 3 redesigns.

• Spacing theology: Deep arguments over whether 4px base grids are more flexible than 8px.

Resolving Pushback

• Eng: “No time to refactor.” We demonstrated a 40% reduction in average UI sprint development time.

• PM: “Users won’t notice.” A/B testing revealed a 12% improvement in client check-out conversion.

• CEO: “Why not Material?” Showed that custom styling matches our brand value, preventing generic look.

Creating trust through absolute precision.

The system is now adopted by 100% of our active product development lines, facilitating continuous design-to-code syncing.

Testing

TESTING METHODOLOGY / 4 PILLARS

Visual regression testing

Chromatic snapshots on every PR, catching unintended style drift instantly across themes and component state changes.

Accessibility audit

WCAG 2.1 AA compliance — contrast ratios, focus rings, keyboard navigation, and screen reader labels verified programmatically and manually.

Cross-browser validation

Verified across Chrome, Safari, Firefox, and Edge on desktop; optimized for iOS Safari and Android Chrome on web targets.

Developer usability testing

5 engineers completed product screens solely using DS components to measure first-time developer ergonomics and build speeds.

Real-world QA Resolutions

01 / Accessibility Fail

Focus ring colors failed AA contrast on dark backgrounds. Redesigned to an innovative dual-ring system (inner white + outer brand green).

02 / Keyboard Traps

The dropdown component trapped keyboard focus on mobile web. Implemented 3 key interactive navigation patterns previously omitted.

03 / Dataset Stress

Our raw table component struggled under 200+ rows. Created a frozen-header viewport variant with virtual list scrolling to ensure stable fps.

Usability & Coverage Metrics

98%

WCAG AA Compliance across core atoms

0

Visual regressions shipped in 4 months

67%

Faster dev build speed in sandboxed testing

Governance

2-TIER CONTRIBUTION ECOSYSTEM

Tier 1 / Command

Core Design System Team

2 dedicated designers and 1 frontend steward who maintain, update, and manage global tokens, base components, and official documentation.

Tier 2 / Propose

Ecosystem Contributors

Product designers across vertical squads who submit changes, propose net-new components, or optimize variants using the official RFC template.

Tier 3 / Apply

System Consumers

Everyone else inside product lines. Consumers rely on published nodes, import packages natively, and report production edge-cases.

The RFC Lifecycle Flow

1

Proposal

2

Review

3

Feasibility

4

Build

5

Publish

Our Versioning follows strict Semantic specs (major.minor.patch). Breaking releases provide a step-by-step upgrade guide. Major changes deploy quarterly; minor updates publish monthly.

Decision Log Excerpt

v1.2.0

Added advanced Prepaid Input Dropdown component (RFC-007)

v1.3.0

Deprecated old toast variations in favor of structured Banners

v1.4.0

Propagated accessible Dynamic Type scaling across mobile endpoints

System Rituals

• Bi-weekly design system sync (30 min) to review inflight proposals.

• Monthly component health metrics and performance checks.

• Quarterly executive adoption reviews with PM partners.

07 / DOCUMENTATION & ADOPTION

Documentation & Hand-off

Interactive Anatomy

Labeled component blueprints explicitly explaining slot layouts.

Documented padding, spacer dimensions, and token mapping rules.

Design guidelines illustrating both active and focus states.

Usage Guidelines

Explicit ‘Do vs Don’t’ interactive examples showing spacing constraints.

Guidelines indicating when to opt for specific visual variants.

Standard placement rules on mobile viewports and dialog popups.

Props & Variants

Storybook mappings aligning Figma component names to code endpoints.

Detailed props tabular list including types, defaults, and usage contexts.

Integrated design-to-code testing with automated Playground widgets.

3-Phase Adoption Strategy

Phase 1: Seed / Months 1–2

Piloted the initial release with 1 product squad focused purely on card activation flows. Discovered and resolved 22 early API integration edge cases.

Phase 2: Grow / Months 3–4

Expanded component deployment across 3 major teams covering payments, user onboarding and profile management systems.

Phase 3: Scale / Months 5–6

Achieved full organization-wide migration. Deprecated legacy design systems, with all new design sprints running on the official system.

Business Adoption Impact

78%

Adoption within 6 months

-52%

Reduced design-to-dev handoff delay

-34%

Reduction in core UI bug tickets

Learnings

01

Start with tokens, not components.

Tokens are the DNA. Components are the organs. Get your base design-to-code properties mapped cleanly first, and components will practically form themselves.

02

Sell the system to engineers first.

Figma updates please designers, but clean code adoption saves actual sprint money. Find engineering advocates early and work directly on Storybook.

03

Perfect is the enemy of shipped.

Our first release was incomplete, but shipping early sparked the direct cross-team discussions we needed to iron out structural issues.

04

Name things for intent, not appearance.

Using ‘comp.button.primary.fill’ is completely robust. Hardcoding colors like ‘mint-400’ directly breaks on the first brand overhaul.

05

Document the why, not just the what.

Anatomy drawings are helpful, but the rationales detailing usage contexts are what actually helped developers implement design patterns.

What I would do differently:

• Codify contribution guidelines on day one rather than waiting until Month 4.

• Integrate end-to-end automated visual regression testing from the start.

• Build a weekly design system digest to boost organizational visibility.

A design system is never finished.

It is a living product that grows with the team, the brand, and the users it serves. Adopting it yields immediate consistency.

Thank you for dropping by!

Crafted with 💬