Skip to main content
Design System Case Study

Ictinus Design System

291Tokens
50+Components
4Tiers

A comprehensive token-based design system powering the music industry's most complex interfaces. Built from the ground up with a 4-tier token architecture spanning 291 variables across light and dark themes.

Orfium
V5.1.1
Light + Dark
40+ Pages
Ictinus design system interactive components illustration showing form input, toggle switch, button, and chip components with animated cursor interactions

Origin &
Evolution

291Tokens
50+Components
4Token Tiers
9Color Palettes
2Theme Modes
40+Figma Pages

Ictinus was born from the need to unify a fragmented design language across Orfium's growing product ecosystem. Initially built to serve music copyright professionals, experts navigating dense, data-heavy interfaces for rights management, royalty tracking, and asset monitoring, the system needed to balance information density with clarity.

As Orfium expanded its reach beyond music rights into the broader entertainment industry, Ictinus evolved alongside it. What started as a shared color palette became a fully governed, token-driven system capable of powering diverse product verticals while maintaining a coherent visual language.

Version 5.1.1 represents the culmination of this evolution, a 4-tier token architecture separating raw values from semantic meaning, enabling multi-theme support, cross-platform consistency, and the flexibility to serve both the precision of copyright tools and the expressiveness of entertainment platforms.

Company Orfium
Industry Music & Entertainment
Collections 4 Token Tiers
Themes Light + Dark
Version V5.1.1
Contributors Katerina Miliaraki, Jen Anastasopoulou (Design) · Panagiotis Vourtsis, Kostas Danochristos (Engineering)

Token Architecture

A 4-tier token system that separates raw values from semantic meaning, enabling scalable theming and component-level control.

01

Global

Raw, immutable values. Color palettes, spacing steps, sizing scale, border primitives.

139 tokens
9 Color Palettes 23 Sizing Steps 13 Spacing Steps 7 Border Radii
02

Dimension

Semantic aliases for spatial values. Maps raw sizing/spacing to purpose-driven names.

31 tokens
Icon Sizes Spacing Scale Border Radius Border Width
03

Semantic

Context-aware color tokens with Light & Dark mode variants. The theming engine.

87 tokens
Background Colors Text Colors Border Colors Palette Colors
04

Component

Component-specific tokens. Fixed dimensions and aliases tailored to individual UI elements.

34 tokens
Button Sizes Field Heights Avatar Sizes Badge Sizes

Color Foundation

9 color palettes with 10-step ramps, each progressing from lightest tint to deepest shade. These raw values feed into the semantic layer.

Blue

10 stepsPrimary · Brand
1#E9EFFB
2#DAE4FB
3#B8CCFA
4#8EAAEC
5#5E8DF8
6#175BF5
7#194DCC
8#173DA0
9#173382
10#12204E

Red

10 stepsError · Caution
1#FFEBF1
2#FFD6E5
3#FFB2CE
4#FF80AD
5#FF4D8D
6#D4165F
7#BF1250
8#831650
9#601649
10#33123A

Orange

10 stepsWarning
1#FFF0D1
2#FFE2A8
3#FFC95C
4#F5A300
5#D67D00
6#9E4214
7#8B391D
8#66301E
9#4D2A24
10#29201E

Purple

10 stepsUpsell · Visited
1#F3EBFF
2#EBDBFF
3#D8BDFF
4#BD8FFF
5#A566FF
6#7531DE
7#5F33AC
8#492A89
9#38246E
10#211A47

Teal

10 stepsSuccess
1#DCF9F2
2#BFF4E7
3#86EAD1
4#3CDDB4
5#1EBE96
6#107962
7#11695B
8#0F514C
9#104042
10#0E2834

Light Blue

10 stepsFocus · Info
1#E1F5FE
2#BEE4FA
3#81D4FA
4#4FC3F7
5#29B6F6
6#03A9F4
7#039BE5
8#0288D1
9#0277BD
10#01579B

Green

10 stepsSuccess Alt
1#EAF5EA
2#CDE5CB
3#AED5AB
4#8FC58A
5#79B972
6#64AD5A
7#5A9E51
8#4E8C45
9#427B3B
10#2D5D28

Cool Gray

10 stepsNeutral · Text
1#F2F4FF
2#DDE0EE
3#CACCDB
4#B6B8CD
5#A2A5BC
6#8E91AB
7#7A7D9B
8#52567A
9#262C59
10#111530

White

3 stepsBackground
1#FFFFFF
2#F7F7F7
3#EFEFEF

Spacing & Sizing

A predictable, non-linear scale that ensures visual consistency. Spacing values control rhythm between elements, while sizing defines physical dimensions.

Spacing Scale

13 tokens · 0–44px

spacing/00
spacing/11
spacing/22
spacing/34
spacing/48
spacing/512
spacing/616
spacing/720
spacing/824
spacing/932
spacing/1036
spacing/1140
spacing/1244

Sizing Scale

23 tokens · 0–140px

sizing/00
sizing/14
sizing/28
sizing/312
sizing/416
sizing/520
sizing/624
sizing/728
sizing/832
sizing/936
sizing/1040
sizing/1144
sizing/1248
sizing/1352
sizing/1456
sizing/1560
sizing/1672
sizing/1780
sizing/1888
sizing/1992
sizing/20100
sizing/21120
sizing/22140

Border System

Unified border radii and widths that maintain visual cohesion across all components.

Border Radius

borderRadius/12px
borderRadius/24px
borderRadius/38px
borderRadius/416px
borderRadius/536px
borderRadius/648px
borderRadius/79999px

Border Width

borderWidth/11px, Default
borderWidth/22px, Active
borderWidth/34px, Focused

Semantic Colors

Context-aware tokens that automatically adapt between Light and Dark themes. Each semantic token aliases a global color, flipping intelligently per mode.

Primary text on background
Secondary text for descriptions
Primary Button
Secondary
Tertiary
Brand Success Warning Error Pending
Form field
Input value

Background Colors

TokenLightDarkAlias
backgroundColor/default#FFFFFF#111530white/1 → coolGray/10
backgroundColor/alt#F2F4FF#262C59coolGray/1 → coolGray/9
backgroundColor/inverted#111530#F2F4FFcoolGray/10 → coolGray/1

Text Colors

TokenLightDarkAlias
textColor/default/primary#111530#F2F4FFcoolGray/10 → coolGray/1
textColor/default/secondary#262C59#CACCDBcoolGray/9 → coolGray/3
textColor/default/active#194DCC#8EAAECblue/7 → blue/4
textColor/default/error#BF1250#FF80ADred/7 → red/4
textColor/default/warning#8B391D#F5A300orange/7 → orange/4
textColor/default/success#427B3B#3CDDB4green/9 → teal/4
textColor/default/visited#5F33AC#BD8FFFpurple/7 → purple/4

Border Colors

TokenLightDarkAlias
borderColor/interactive/default#8EAAEC#175BF5blue/4 → blue/6
borderColor/interactive/active#175BF5#5E8DF8blue/6 → blue/5
borderColor/interactive/error#BF1250#FF80ADred/7 → red/4
borderColor/interactive/focused#A566FF#A566FFpurple/5 → purple/5
borderColor/interactive/success#1EBE96#3CDDB4teal/5 → teal/4
borderColor/interactive/warning#D67D00#F5A300orange/5 → orange/4

Indicator Colors

TokenLightDarkPurpose
indicatorsColor/brand#5E8DF8#175BF5Active states, selections
indicatorsColor/success#1EBE96#107962Confirmations, valid states
indicatorsColor/warning#F5A300#D67D00Caution, attention needed
indicatorsColor/error#FF4D8D#D4165FErrors, destructive actions
indicatorsColor/pending#BD8FFF#A566FFIn-progress, loading

Palette Tokens

Each semantic palette provides muted, base, and contrast tiers for layered UI treatment.

Primary

Muted
Base
Contrast

Error

Muted
Base
Contrast

Warning

Muted
Base
Contrast

Success

Muted
Base
Contrast

Upsell

Muted
Base
Contrast

Primary Alt

Muted
Base
Contrast

Dimension Tokens

The semantic dimension layer maps global primitives to purpose-driven names, bridging raw values to contextual usage.

Icon Sizing

sem/sizing/icon/xs
12px→ sizing/3
sem/sizing/icon/sm
16px→ sizing/4
sem/sizing/icon/md
20px→ sizing/5
sem/sizing/icon/lg
24px→ sizing/6
sem/sizing/icon/xl
36px→ sizing/9

Semantic Spacing

sem/spacing/none
0px→ spacing/0
sem/spacing/2xs
2px→ spacing/2
sem/spacing/xs
4px→ spacing/3
sem/spacing/sm
8px→ spacing/4
sem/spacing/md
12px→ spacing/5
sem/spacing/lg
16px→ spacing/6
sem/spacing/xl
20px→ spacing/7
sem/spacing/2xl
24px→ spacing/8
sem/spacing/3xl
32px→ spacing/9
sem/spacing/4xl
44px→ spacing/12

Semantic Border

sem/borderRadius/sm
2px→ borderRadius/1
sem/borderRadius/md
4px→ borderRadius/2
sem/borderRadius/lg
8px→ borderRadius/3
sem/borderRadius/xl
16px→ borderRadius/4
sem/borderRadius/circle
9999px→ borderRadius/7
sem/borderWidth/default
1px→ borderWidth/1
sem/borderWidth/active
2px→ borderWidth/2
sem/borderWidth/focused
4px→ borderWidth/3

Iconography

149 icons across 8 categories, organized for interactive and decorative use. Every icon ships in the published Figma library with 4 standardized sizes.

01

Color Application

Interactive icons (e.g. icon buttons) must use a textColor token to ensure AA compliance. Decorative icons may use any global color token.

02

Usage Rules

Interactive icons use the dedicated InteractiveIcon component with built-in sizing. Decorative icons are picked directly from the iconography library and set to preferred size.

03

Sizing Scale

XS 12px
S 16px
M 20px
L 24px
15 User & Status
9 Data & Finance
18 Navigation
20 Generic
29 Basic Actions
24 Toggled Actions
8 Audio Controls
26 Music Business

Components & Patterns Overview

50+ components organized across 5 Storybook categories, following atomic design principles. Click a category to explore its components.

Navigation

Top & Side Navigation; Primary app navigation with responsive collapse
Text Link; Inline and standalone text links with visited states
List Item; Configurable list rows with normal and compact heights
Floating Menu; Context menus and dropdowns
Breadcrumbs; Hierarchical path navigation
Tabs; Horizontal and vertical tab patterns
Stepper; Multi-step process navigation
Tabs component Tabber component Side Navigation

Inputs

Button; 4 variants (Primary, Secondary, Tertiary, Caution) across multiple states
Controls; Switch, Checkbox, Radio with consistent sizing tokens
Date Picker; Calendar date selection with field and popup
Form Fields; Text inputs, textareas, selects with validation states
Slider; Range selection with single and dual handles
Form Field component Dropdown Menus

Button Variants

The button component demonstrates the full power of the token architecture; semantic color tokens mapped to 4 variants across multiple states.

Primary

Normal
Hover
Pressed

Secondary

Normal
Hover
Pressed

Tertiary

Normal
Hover
Pressed

Caution

Normal
Hover
Pressed

Data Display

Table; Sortable data tables with configurable columns
Avatar; 6 sizes from 20px to 88px using component tokens
Tag; Labeling and categorization in normal and small sizes
List Item component

Feedback

Progress Indicator; Linear and circular progress with 4px track height token
Tooltip; Contextual help overlays with configurable placement
Usage guidelines Component usage examples

Surfaces

Sidesheet; Slide-in panels for secondary content
Card; Content containers with configurable borders and padding
Modal; Overlay dialogs for focused interactions
Side Navigation panel Surface usage examples

Music Industry Patterns

Purpose-built components and patterns designed for the unique demands of music copyright management, royalty tracking, and asset monitoring.

Asset Identification

Track-level metadata cards, ISRC displays, and ownership chain visualizations for rights holders to quickly identify and manage their catalog.

Royalty Dashboards

Dense data visualizations for revenue splits, payment timelines, and earnings breakdown across territories and platforms.

Audio Controls

Inline audio players, waveform previews, and playback controls integrated directly into data tables for reference listening during dispute resolution.

Conflict Resolution

Side-by-side comparison views, claim status workflows, and multi-party negotiation interfaces for managing copyright disputes.

Design Principles

The governance model, conventions, and strategies that keep the system coherent, accessible, and scalable across teams.

01

Token Naming Convention

A strict {tier}/{category}/{property}/{variant} naming schema. Semantic tokens use sem/, component tokens use comp/. Slashes create natural groupings in Figma's variable panel. No abbreviations except established ones (sm, md, lg, xl).

02

Theming Strategy

Light and Dark modes are achieved purely through semantic token swapping; global raw values never change. Adding a new theme (e.g., High Contrast) requires zero component modifications. Define the mapping, and every component inherits automatically.

03

Alias Architecture

Every component token aliases a global primitive, never a raw value. This creates a traceable chain: comp/button/normal/size → sizing/9 → 36px. Changing one global value cascades everywhere. No orphaned values, no magic numbers.

04

Documentation Standard

Each component page follows a fixed structure: Token table, Component anatomy, Description, When to use / When not to use, Properties reference, and Interactive examples. This consistency lowers the learning curve and ensures comprehensive documentation.

05

Scale Progression

Sizing and spacing use a non-linear 4px-base progression. Values densify at small increments (4, 8, 12, 16) for padding and gaps, then expand at larger values (72, 80, 100, 140) for component dimensions. Tight control where detail matters, generous flexibility at macro scale.

06

Governance & Review

New tokens require justification via a structured request process. Every addition must fit the existing scale. Component tokens must alias globals; hardcoded values are flagged during reviews. A quarterly audit ensures token hygiene: unused tokens are deprecated, duplicates consolidated.

07

Accessibility First

Every color combination is validated against WCAG 2.1 AA (4.5:1 for text, 3:1 for large text). Focus states use a dedicated purple token (borderColor/interactive/focused) visible in both themes. Keyboard navigation and screen reader expectations are first-class requirements.

08

Adoption & Migration

Adoption is driven through enablement rather than enforcement. A Storybook instance provides a living reference. Migration tooling includes lint rules flagging hardcoded values. Training sessions and a shared Slack channel ensure questions are resolved within hours.

Reflection

Building Ictinus taught me that a design system's true power lies not in its components, but in its token architecture. The 4-tier system (Global, Dimension, Semantic, Component) creates a single source of truth that makes theming trivial and consistency automatic.

The most impactful decision was enforcing semantic aliases throughout. When every component references tokens by meaning rather than value, you unlock the ability to reshape an entire product's visual identity by changing a handful of global primitives. That's the promise of design tokens, fully realized.

Version 5.1.1 represents years of iteration, pruning, and governance. The 291 tokens we have today aren't the result of addition; they're the result of relentless subtraction, ensuring every token earns its place in the system.