ServiceDesign systems built to ship features, not to win Dribbble.

A design system is the shared foundation that lets a team ship the next ten features without it looking like ten different products. Tokens, primitives, patterns, and, most importantly , the rules for combining them. Done right, it's the highest-leverage design work a SaaS team can invest in.

Lumixel Studio designs systems for fintech, healthcare, cybersecurity, and B2B SaaS companies. We build foundations engineers actually use, not 200-page Notion documents nobody reads. The system lives in Figma with proper variants and component logic, paired with a short principles document that captures the trade-offs behind every decision.

Lumixel designs production design systems for SaaS, fintech, healthcare, and B2B software, tokens, primitives, patterns, and rules, in 6-week senior-led sprints from $15K to $50K+, built to ship features rather than win Dribbble.

01 / 13

What a real design system covers.

Most things called “design systems” are actually component libraries with no underlying rules. A real system has four layers, each load-bearing:

  • Tokens. Colour, type, spacing, radius, shadow, motion, defined once, used everywhere. Tokens enable theming, dark mode, and density variants without rewriting components.
  • Primitives. Button, input, select, checkbox, radio, toggle, badge, avatar, the composable units. Each with proper variants for state (default, hover, focus, disabled, loading) and intent (primary, secondary, destructive).
  • Patterns. Form, table, modal, drawer, toast, command menu, empty state, page header, the multi-primitive compositions that solve specific problems. Patterns are where most systems quietly collapse, because they require judgment about when to use which.
  • Rules. The principles and guardrails for when to extend the system, when to break it, when to add a new primitive vs. compose an existing one. Without rules, the system fragments within a quarter of being handed off.

02 / 13

Design system vs component library vs style guide.

These get used interchangeably. They're different:

  • Style guide is a static document, brand colours, type scales, logo usage. Useful for designers, of limited use to engineers.
  • Component library is a set of pre-built UI components, buttons, inputs, modals. Usually delivered as Figma plus a React (or other framework) package. Helps consistency but doesn't prevent fragmentation.
  • Design system is all of the above plus tokens, patterns, and the rules for using them. The difference is the rules, without them, the components drift within months of release.

We build design systems. If you need a static style guide, an internal communications team can do that. If you need a component library and don't have one, shadcn is a perfectly good starting point and we'll happily extend it.

03 / 13

When you need a design system, and when you don't.

Three signs you're ready:

  • Your product has more than 30 screens, and new features are starting to feel inconsistent with old ones.
  • Your engineering team is shipping new components on every feature instead of reusing existing ones, usually because the existing ones don't quite fit.
  • You're adding a second surface (admin, mobile, partner portal) and the lack of shared foundation is starting to show.

If you have fewer than 20 screens and a single platform, you probably don't need a design system yet, you need a tight component library and a clear set of conventions. We'll tell you that on the discovery call.

04 / 13

How we build design systems.

Same 6-week shape. System-specific emphasis:

Week 1. Audit the existing product, what primitives exist, what's consistent, what's drifting. Define the token system (colour, type, spacing, radius, motion). Make the framework call: extend shadcn / Material / Radix, or build custom.

Weeks 2–5. Build the system in Figma , tokens wired through, every primitive with full variants, every pattern documented. We design real screens from the system as we build it, to pressure-test every component against actual product surfaces.

Week 6. Engineering handoff. Walkthrough with your engineering team. Maintenance plan, including who owns the system after we leave and what the rules are for adding to it.

05 / 13

What you get on Friday of Week 6.

  • Figma design system file with tokens, primitives, patterns, and full variant coverage.
  • Token definitions exportable to JSON or CSS variables, ready for your engineering team to wire into the stack.
  • Component documentation , when to use each primitive, when to compose, when to extend, when to add new.
  • Pattern library , form, table, modal, empty state, page header, navigation, command menu, with usage rules.
  • Design principles document , three to five rules of thumb that govern the whole system.
  • Maintenance plan , ownership, change process, deprecation rules.

06 / 13

Recent design system work.

  • Benchmark, fintech SaaS where the engagement was as much design system as feature work. Component foundation for a product expecting to ship monthly without losing coherence.
  • Karaz Health, one shared component set across four clinical surfaces (Doctor, Nurse, Educator, Patient), web and mobile.
  • FePay, fintech design system with role-aware components and compliance- specific patterns.

More on selected work.

07 / 13

Token system deep-dive, semantic vs raw.

The token system is the foundation everything else rests on. Done right, it enables dark mode, density variants, and theming without rewriting components. Done wrong, it locks the system into one visual style forever.

Raw tokens (primitives) are the values themselves, specific hex colours, exact pixel sizes, named font weights. They exist but are rarely used directly.

Semantic tokens describe the role, color-surface-primary, color-text-muted, space-component-padding. They reference raw tokens but are what components actually consume.

Component tokens are the most specific layer, button-primary-background, input-border-color. They reference semantic tokens, and they're what makes component-level theming possible without rewriting primitives.

Dark mode, density variants, and product theming all become possible (and cheap) when the token system has the right layering. They become impossible (and expensive) when it doesn't. Week 1 of a design system engagement is mostly about getting this structure right.

08 / 13

Component primitives, how we structure variants.

A primitive (Button, Input, Select, etc.) needs variant coverage that maps to how it's actually used. Our default structure:

  • State variants. Default, hover, focus-visible, active, disabled, loading. Every interactive primitive has all six.
  • Intent variants. Primary, secondary, ghost (or tertiary), destructive. Sometimes a fifth (link-style or icon-only).
  • Size variants. Small, medium (default), large. Sometimes xs and xl for specific contexts.
  • Density variants. Comfortable, compact. Reflects the underlying density token system.

For a Button primitive, that's 6 �, 4 �, 3 �, 2 = 144 variants documented in Figma. Mapped 1:1 to the React component your engineering team builds.

09 / 13

Pattern documentation that engineers actually use.

Most design systems fail at the pattern layer. Components ship; patterns get re-invented per feature. What we document, in Figma where the engineering team actually looks:

  • Form patterns. Field layouts, label positions, error messaging rules, validation timing, submit-button behaviour, multi-step form architecture.
  • Table patterns. Sorting, filtering, grouping, pagination, bulk actions, column controls, saved views, empty/loading/error states.
  • Modal and drawer patterns. When to use which, dismissal behaviour, nested modal rules (we generally don't), focus management.
  • Toast and notification patterns. Timing, stacking, dismissal, severity hierarchy, action affordances.
  • Empty-state patterns. When the user has no data, no permission, no results. The first-day-of-a-new-customer state as a designed product surface.
  • Page header and navigation patterns. Breadcrumbs, page titles, action button placement, tab patterns, sub-navigation rules.

Each pattern includes when to use it, when not to, and what to compose it from. So three months later, a new engineer can answer their own question without Slacking the designer.

10 / 13

Dark mode strategy.

Dark mode is a token problem, not a design problem. If the system is built with semantic colour roles (not hard-coded hex values), dark mode comes mostly free, re-map the tokens and the whole system follows.

What we design for explicitly:

  • Surface elevation. Light mode uses shadow for elevation; dark mode uses surface lightness. The token system supports both.
  • Inverse surfaces. Some components (tooltips, command menus, complex toasts) want inverse treatment relative to the current theme. Token system handles this.
  • Brand colours in dark mode. The same brand hex usually feels wrong against dark backgrounds. We define dark-mode brand variants explicitly.
  • Data visualisation. Chart palettes that work in light mode often fail in dark mode. Separate chart palette tokens.

We design with dark mode in mind from Week 1 even when only light mode is launching first, because retrofitting dark mode is exponentially more expensive than designing for it from the start.

11 / 13

Framework comparison, what to extend.

Most design systems shouldn't be built from scratch. We make a framework call in Week 1 based on your stack and ambition:

  • shadcn/ui + Radix. Our most-recommended starting point for new systems. Copy-paste components, you own the code, Radix handles accessibility, easy to extend. Right for most modern React stacks.
  • Radix Primitives directly. For teams that want lower-level control. We design components on top; engineering wires them to Radix primitives.
  • Material 3. Right for Android-first or cross-platform products, particularly if you have an Android-native team already. Heavy to extend off-pattern.
  • Custom from scratch. Right when the design ambition genuinely doesn't fit any existing system, or when the product needs unusual primitives. Expensive to maintain.

The honest framing: most products are best served by extending shadcn or Radix. Custom is the right answer only when extending creates more work than building.

12 / 13

Maintenance and ownership models.

A design system that nobody owns drifts within a quarter. Common ownership models that work:

  • Senior designer + design engineer pair. The designer owns the visual and behavioural decisions; the design engineer owns the React implementation. Joint review of new components.
  • Embedded design system team. Larger organisations: a dedicated 2-3 person team serving all product teams. Right when you have five or more product teams.
  • Federated with strong central guidance. Each product team owns their domain components; the design system team owns primitives. Works for large multi-product companies; risky for smaller teams.
  • Rotating ownership. Different designer each quarter takes the system lead. Bad pattern, the system drifts every time ownership changes.

We help you pick the right model for your team size. For Series A-B teams, the pair model is almost always right.

13 / 13

Pricing for design systems.

Design system engagements typically sit in Standard or Pro because of the breadth of coverage required:

  • Standard, $15K–$30K. Single-platform design system. Tokens, primitives, primary patterns. For teams shipping mostly web or mostly mobile.
  • Pro, $30K–$50K+. Cross-platform design system covering web + mobile + admin. Multi-role components. Compliance-specific patterns for regulated verticals.

Design systems rarely fit Lite tier because coverage breadth matters more than depth, a partial system fragments faster than no system. Above $50K is a custom retainer. See pricing.

FAQ — Common questions about Design System.

A design system is the shared foundation that lets a product team ship features consistently at scale. It includes tokens (colour, type, spacing, radius, motion), primitives (button, input, select, etc.), patterns (form, table, modal, empty state), and the rules for using them. The rules are what distinguish a design system from a component library, without rules, components fragment within months.

Talk to us — Have a project that needs this?

Book a 30-minute discovery call. Free. No slides, no sales.

Book a discovery call