A design system is a collection of reusable components, guidelines, and standards that help teams build consistent and scalable products. It serves as a single source of truth for both designers and developers, eliminating guesswork and reducing inconsistency across a product.
In architecture, design systems have long existed as building codes, material standards, and spatial guidelines. The same principles now apply to digital product design — a well-documented system ensures that every element, from a button to a full page layout, follows deliberate and repeatable rules.
Design systems are not just style guides. They include design tokens, component libraries, usage documentation, accessibility standards, and governance processes. When properly maintained, they dramatically accelerate product development and improve quality.
The relationship between architecture and digital design systems is more than metaphorical. Both disciplines require systems thinking — the ability to see how individual parts relate to the whole, and how changes to one element ripple through the entire structure.
design-system: components + guidlines + standards + tokens
- Components
- Guidlines
- Design Tokens
- Accessiblity Standards
- Goverance Documentation
Typography is the foundation of visual communication in any design system. It establishes hierarchy, readability, and brand voice across all touchpoints — from marketing pages to complex data dashboards.
A well-defined type scale ensures consistent sizing relationships throughout a product. Most design systems use a modular scale based on a ratio such as 1.25 or 1.5, creating a harmonious progression from the smallest label to the largest display heading.
Font families should be limited to two at most — one for headings and one for body text. Using more than two typefaces creates visual noise and slows down page rendering due to additional font loading.
Line height, letter spacing, and paragraph spacing are just as important as font size. These properties determine readability at scale and should be tokenized for consistent application across all components.
--font-size-base: 16px / --line-height-body: 1.5 / --font-weight-bold: 700
- Display
- Heading 1
- Heading 2
- Body regular
- Body Small
- Caption
- Label
- Overline
Color tokens are named variables that store color values. They allow teams to update colors globally without manually changing every instance across a codebase. A single token update can propagate changes across hundreds of components instantly.
Tokens are organized into three tiers. Global tokens define the raw color palette — every color available in the system. Semantic tokens assign meaning to global tokens, such as assigning a global blue to the role of primary action color. Component tokens reference semantic tokens for specific component-level use cases.
Color contrast is a critical consideration when defining tokens. Every color pairing used for text and background must meet WCAG 2.1 AA contrast requirements at minimum, with AAA compliance recommended for body text.
Dark mode support is built into a token-based color system from the start. By referencing semantic tokens rather than raw hex values, components automatically adapt when the token values are swapped for their dark mode equivalents.
--color-primary: #3a86ff / --color-error: #e63946 / --color-success: #2a9d8f
- Primary
- Secondary
- Neutral Error
- Warning
- Success
- Info
- Overlay
Consistent spacing creates visual rhythm and breathing room throughout a layout. Most design systems use an 8px base grid, where all spacing values are multiples of 8. This creates a mathematical harmony that is visually satisfying and easy to implement.
In architecture, spatial proportion follows similar rules. The golden ratio and modular grids have guided building design for centuries — from the Parthenon to Le Corbusier's Modulor system. Digital grids are the architectural floor plans of the screen.
Column grids define how content is arranged horizontally. A 12-column grid is standard for desktop layouts because 12 is divisible by 2, 3, 4, and 6, giving designers maximum flexibility. Mobile layouts typically use a 4-column grid.
Spacing tokens should cover the full range from micro spacing used within components to macro spacing used between sections. A clear naming convention — such as xs, sm, md, lg, xl — makes tokens intuitive to apply without memorizing pixel values.
--spacing-xs: 4px / --spacing-sm: 8px / --spacing-md: 16px / --spacing-lg: 32px / --spacing-xl: 64px
- 4px
- 8px
- 16px
- 24px
- 32px
- 48px
- 64px
- 96px
Components are the building blocks of a design system. Each component is designed once and reused consistently across the entire product. This single-source-of-truth approach means that fixing a bug or updating a style in one component propagates the change everywhere it is used.
Like architectural details — a window assembly, a stair section, a curtain wall joint — components are documented with specifications, states, and usage guidelines. A button component, for example, must document its default, hover, active, focused, disabled, and loading states.
Components exist in a hierarchy. Atoms are the smallest indivisible elements — a color swatch, an icon, a type style. Molecules combine atoms into simple functional units like a search input. Organisms combine molecules into complex interface sections like a navigation bar.
Component documentation should include when to use the component, when not to use it, accessibility requirements, content guidelines, and responsive behavior. Incomplete documentation leads to inconsistent implementation regardless of how well the component itself is designed.
Button variant="primary" size="md" disabled={false} /
- Button
- Input
- Card
- Modal
- toast
- Tooltip
- Dropdown
- Navigation
- Table
- Badge
Icons are visual symbols that communicate actions, objects, and concepts at a glance. A consistent icon library strengthens the visual language of a product and reduces cognitive load by replacing text labels with universally understood symbols.
Icons should follow a unified grid, stroke weight, and corner radius to feel cohesive across the entire system. Most icon systems are drawn on a 24x24px artboard with a 2px stroke weight and consistent padding within the grid.
Every icon must have an accessible text label associated with it. An icon used as a button must have an aria-label attribute so screen readers can communicate its purpose to users who cannot see the visual symbol.
Icon sets should be delivered as SVG files to ensure sharp rendering at any size. SVG icons can be styled with CSS, allowing color and size to be controlled through design tokens rather than hardcoded values.
Icon name="close" size="24" aria-label="Close dialog" /
- Action icons
- Navigation icons
- Status icons
- Social icons
- Utility icons
- Directional icons
Elevation communicates hierarchy and depth in a user interface. Elements with higher elevation appear closer to the user and draw more visual attention. Elevation is used to indicate interactive elements, floating panels, modals, and overlays.
Shadows are the primary visual cue for elevation. A consistent shadow scale ensures depth feels intentional and systematic rather than arbitrary. Shadows should become larger and more diffuse as elevation increases, mimicking the behavior of light in the physical world.
In architecture, elevation and shadow have always been fundamental design tools. The play of light and shadow across a facade communicates depth, materiality, and structural hierarchy. The same principles translate directly to digital surfaces.
Elevation tokens should define both the shadow values and the surface colors associated with each level. In Material Design, for example, elevated surfaces in dark mode lighten slightly as elevation increases, providing an additional visual cue beyond shadow alone.
--shadow-sm: 0 1px 3px rgba(0,0,0,0.08) / --shadow-md: 0 4px 12px rgba(0,0,0,0.12) / --shadow-lg: 0 8px 24px rgba(0,0,0,0.16)
- Level 0 - flat
- Level 1 - card
- Level 2 - dropdown
- Level 3 - modal
- Level 4 - overlay
Border styles and corner radii define the personality and character of a design system. Sharp corners feel precise, technical, and authoritative. Rounded corners feel approachable, friendly, and modern. The choice between them is a fundamental brand decision.
Consistent border tokens prevent visual inconsistency across components and ensure the system feels unified at every scale. A card, an input field, and a button should all reference the same radius token for their shared corner style.
Border width tokens define the weight of dividing lines, input outlines, and focus rings. A consistent border weight hierarchy — from hairline separators to bold focus indicators — communicates structure and hierarchy without relying on color alone.
Focus rings are a critical accessibility feature that must be designed intentionally. They should be highly visible, using a combination of color and border width that meets contrast requirements even for users with color vision deficiencies.
--radius-sm: 4px / --radius-md: 8px / --radius-lg: 16px / --radius-full: 9999px / --border-width-default: 1px
- Raidus extra small
- Radius small
- Radius medium
- Radius large
- Raidus full
- Border hairline
- Border default
- Border bold
Motion design guides the user's attention, communicates state changes, and makes interfaces feel alive and responsive. Purposeful animation improves usability by providing feedback, maintaining spatial context, and reducing perceived wait times.
Animation tokens define duration, easing curves, and delay values so transitions feel consistent across all components and interactions. Without tokens, animation values become scattered and inconsistent, creating a jarring experience as users move through the product.
Easing curves determine the character of movement. Ease-out curves — which start fast and slow down — feel natural for elements entering the screen because they mimic how objects in the physical world decelerate as they come to rest. Ease-in curves work for elements leaving the screen.
Accessibility requires that animation be optional. Users who have set their operating system to reduce motion must be respected. The prefers-reduced-motion media query allows designers to disable or simplify animations for users who are sensitive to motion.
--duration-fast: 150ms / --duration-base: 250ms / --ease-out
- Fade
- Slide
- Scale
- Expand
- Collapse
- Skeleton loading
- Page transition
- Miro-interaction
Accessibility ensures that products are usable by everyone, including people with visual, motor, auditory, and cognitive disabilities. It is not an optional enhancement — it is a fundamental design requirement and a legal obligation in many jurisdictions.
Design systems should encode accessibility standards directly into components so that teams build inclusively by default rather than as an afterthought. When accessibility is baked into the system, every team using the system inherits compliant components automatically.
Color contrast is one of the most measurable aspects of accessibility. WCAG 2.1 requires a minimum contrast ratio of 4.5:1 for normal text and 3:1 for large text against its background. Design tokens should be validated against these requirements at the system level.
Keyboard navigation must be fully supported across all interactive components. Users who cannot use a mouse must be able to access every feature through keyboard alone. This requires deliberate focus management, logical tab order, and visible focus indicators.
aria-label="Close dialog" role="button" tabindex="0" aria-expanded="false"
- Color contrast 4.5:1
- Keyboard navigation
- Visible focus states
- Screen reader support
- Alt text for images
- Captions for video
- Skip navigation links
- Error identification
Responsive design ensures that interfaces adapt gracefully to any screen size, from mobile phones to large desktop monitors. A design system defines breakpoints and layout rules for every context, ensuring a consistent experience regardless of device.
Like architecture that must function at both the urban scale and the human scale, responsive design requires thinking about the experience at every level of zoom. A navigation component that works beautifully on desktop must degrade gracefully to a hamburger menu on mobile.
Breakpoints should be defined as tokens rather than hardcoded values scattered throughout the codebase. This allows the system to respond to changes in device landscape — when new screen sizes emerge, a single token update can cascade through the entire system.
Content priority changes at different breakpoints. Information that is visible at all times on desktop may need to be hidden, collapsed, or reorganized on mobile. Responsive design is not just about making things fit — it is about making deliberate decisions about what matters most at each scale.
--breakpoint-sm: 480px / --breakpoint-md: 768px / --breakpoint-lg: 1024px / --breakpoint-xl: 1280px
- Mobile 320px
- Moblie 480px
- Tablet 768px
- Desktop 1024px
- Wide 1280px
- Ultrawide 1440px
Dark mode is no longer an optional feature — it is an expected system behavior. Users increasingly prefer dark interfaces for extended use, and operating systems now expose a system-level preference that applications are expected to respect.
Design tokens make dark mode manageable by separating color values from their semantic meaning. Instead of hardcoding a hex value like #ffffff for a background, a semantic token like --color-background references the appropriate value for the current color scheme.
A well-structured token system allows a single component to adapt to light and dark contexts without any structural changes to the code. The component references semantic tokens, and the token values are swapped at the theme level when dark mode is activated.
Dark mode is not simply inverting colors. Dark backgrounds should use dark grays rather than pure black to avoid harsh contrast. Text on dark surfaces should use off-white rather than pure white. Shadows become less effective in dark mode and should be supplemented with surface color changes to communicate elevation.
--color-background: var(--color-neutral-900) / --color-surface: var(--color-neutral-800) / --color-on-surface: var(--color-neutral-100)
- Background
- Surface
- On-surface text
- Border subtle
- Border default
- Overlay
- Shadow
- Interactive states
Design handoff is the process of transferring design specifications to developers for implementation. Poor handoff is one of the most common sources of inconsistency between design intent and final product. A well-documented design system dramatically reduces this friction.
Clear handoff documentation includes component specifications, token references, interaction notes, accessibility requirements, and edge cases — everything a developer needs to build accurately without guessing or making assumptions.
Modern handoff tools like Figma allow designers to expose token values, spacing measurements, and component properties directly within the design file. When a design system is properly structured in Figma, developers can inspect any element and find the exact token name rather than a raw pixel value.
Handoff is not a one-time event — it is an ongoing conversation. Developers frequently encounter edge cases and technical constraints that require design decisions. A healthy handoff process includes regular communication, shared documentation, and a clear process for raising and resolving questions.
component: Button / variant: primary / size: md / state: hover / token: --color-primary-hover
- Component specifications
- Token references
- Interaction notes
- Accessibility requirements
- Edge case documentation
- Animation specifications
- Responsive behavior
- Content guidelines