Blockpass design library & tokens

Standardizing UI foundations across Blockpass's product ecosystem

Company

Role

Product Designer

MY focus

Components, Tokens

Timelime

2024-2025

Introduction

The Blockpass Design Library is a shared Figma library and design token system I built over two years as the sole Product Designer at Blockpass. It includes 29 reusable components, 7 UI templates, and over 400 tokens, serving as the single source of truth across over six products.

The project started from a practical problem: Blockpass's products shared the same tech stack, but none of them shared a unified design language.

The Blockpass Design Library is a shared Figma library and design token system I built over two years as a Product Designer at Blockpass. It includes 29 reusable components, 7 UI templates, and over 400 tokens, serving as the single source of truth across over six products.

The project started from a practical problem: Blockpass's products shared the same tech stack, but none of them shared a unified design language.

Context & Challenges

The Existing Library

Blockpass had a design library, but it had become difficult to manage. After migrating from Ant Design to MUI v5, many components were outdated, key components were missing, there were no tokens, and the file structure made it hard to find or maintain anything reliably. I had to audit the entire library first, categorizing which components were still active and which needed to be deprecated or archived, before I could begin building forward.

The Inconsistency Problem

The inconsistency wasn't just visual — it was operational. Each product had its own Figma file with no shared components or synced styles, so every new screen required manually checking how the same element was used elsewhere.

Development had the same issue. Frontend developers managed a Storybook library, but it only covered a handful of components. Anything new had to be hard-coded from scratch, leading to multiple versions of the same component across products.

This created a cycle of extra review rounds and one-off fixes. Identity verification products need to cover a wide range of use cases, from document submission to compliance dashboards, so the missing components weren't a minor gap. They slowed down every new feature and every new screen risked introducing more drift.

Dev Resistance

Beyond the structural gaps, there was a cultural one. Frontend developers had been working with MUI defaults for a long time and were comfortable with that workflow. Introducing a custom design library meant asking them to change how they built UI, replacing familiar MUI patterns with components and tokens they hadn't used before.

Without developer buy-in, the library risked becoming another unused resource: well-designed in Figma but never adopted in production.

Approach

Building the Component Library

With six-plus products sharing the same tech stack, I couldn't rebuild everything at once. Three principles guided how I approached the system:

  • Start lean, scale intentionally. Avoid adding too many components, styles, or variables upfront. I prioritized by frequency, focusing first on components that appeared most often across products, then used an Effort-Impact Matrix to determine the build order.

  • Align with organizational goals. Every library decision tied back to what Blockpass actually needed: efficiency across a small team, consistency across 6+ products, and clearer design-dev communication.

  • Validate before scaling. Test changes on a small scope before rolling them out universally, reducing the risk of breaking existing product UIs.

Designing a new component followed four steps:

  1. Context: Understand how the component is currently used across products

  2. Define: Clarify its purpose, functionality, and constraints

  3. Audit: Review the existing library for overlaps and ensure relevance

  4. Build: Create the design, collaborate with developers on feasibility, and document usage

The library is organized into four categories: Foundation (colors, typography, icons, spacing, radius, effects, grid), Assets, Components, and Templates (cards, data tables, email templates, empty states, side sheets, and 404 pages).

Component inventory across 8 products, categorized by usage frequency to prioritize the design library roadmap

Components of the design library

Documentation & Guidelines

To address developer resistance to adopting the library, I created detailed documentation for every component. The goal was to make the library self-explanatory, so developers could reference it independently without needing me to walk through every component.

Each component page includes:

  1. Spec: Visual measurements and spacing

  2. Props: Component properties with accepted values and defaults

  3. Usage: When to use, frequency, behavior rules, and accessibility notes

  4. Placement: Where the component appears on screen (varies by component)

  5. Content: Copy guidelines and do/don't examples

This documentation served two audiences: developers used it as a reference when implementing components, and I used it to maintain consistency when designing new features across products.

Basic guidelines and properties of a component

Design Tokens

Components and foundations solved the visual consistency problem, but they didn't solve the handover problem. When a color or spacing value changed, it had to be updated manually across every product and every file. There was no connection between a style choice in Figma and its implementation in code.

Design tokens bridge that gap. They represent design decisions as structured, reusable values that both designers and developers reference from the same source. Three reasons drove this decision:

  • Streamlined handover — tokens give design and development a shared vocabulary, reducing ambiguity during implementation

  • Meaningful relationships — instead of disconnected hex codes and pixel values, tokens connect style choices semantically (e.g., color/content/primary instead of #1A1A1A)

  • Single-source updates — when a value changes, it propagates across the system. No more finding and replacing hard-coded values

I manage tokens using Figma Variables synced through Tokens Studio, then export them as JSON and push to a GitHub repository, keeping design and code in sync.

Figma variables and Token studio plugin

Design tokens documentation

Related Resources

Impact & Reflection

What Shipped

Early adoption showed promising results. The mobile dev team began testing tokens by mapping them to UI elements on existing components, which helped speed up their implementation. In parallel, the token system was pushed to a GitHub repository where PM, frontend developers, and I managed it together.

Then the environment shifted. In 2025, as the market tightened and clients reduced spending, Blockpass restructured and the entire dev team was affected. The mobile team was laid off, and the token testing project was paused.

But progress didn't stop entirely — a number of simpler components were implemented by the remaining frontend developers and are now used in production. Before I left, I recommended the team start testing with structurally simple tokens like spacing and border radius before moving to complex ones like color and typography, to speed up rollout with limited resources.

The system is still fully documented and stored on GitHub — 29 components, 7 templates, and over 400 tokens ready to scale when the team rebuilds.

Reflection

Building a design library as the sole designer in a company going through restructuring taught me that the hardest part isn't designing components — it's sustaining adoption. Early wins with the mobile team proved the system worked, but organizational change can reset progress overnight.

If I could revisit this project, I'd push for earlier cross-team adoption — getting tokens into frontend production alongside mobile, rather than one after another. Having two teams using the system would have made it more resilient to losing one.

This project also reinforced a practical lesson: documentation is adoption. The developer resistance I faced wasn't about the quality of components — it was about clarity. Once I invested in detailed guidelines, the conversation shifted from "why should we change" to "how do we use this."