Files
cadence-ui/DESIGN.md
T

12 KiB

Design System: Cadence UI Material Runtime

Repository: cadence-ui
Status: Active direction as of 2026-03-23

1. Visual Theme & Atmosphere

Cadence UI should feel like a softly lit Material You showcase, not a generic dashboard kit and not a rotating gallery of unrelated skins. The visual language is pastel-tonal, ambient, rounded, and slightly theatrical, borrowing the warmth and optimism of Google's Material You presentations while staying usable as a real product UI system.

The overall mood is luminous and calm. Surfaces should feel like layered slabs of tinted light: cream canvas, lilac containers, sage accents, and soft violet action tones. The system should feel premium without becoming severe, expressive without becoming noisy, and mobile-informed without becoming toy-like.

The experience should evoke the feeling of a polished launch demo:

  • soft environmental glow instead of hard contrast
  • large rounded geometry instead of sharp technical edges
  • tonal surfaces instead of flat white cards
  • gentle spatial motion instead of bouncy micro-interaction clutter
  • one coherent design language instead of multiple competing visual personalities

Key characteristics:

  • Warm cream backgrounds with subtle tinted atmospheric light
  • Rounded "slab" components with generous radii
  • Tonal color relationships derived from a single seed color
  • Pastel purple and sage-green emphasis by default
  • Mobile-product elegance scaled to desktop docs and app surfaces
  • Motion that feels staged, floaty, and spatial rather than mechanical

2. Color Palette & Roles

Cadence UI is dynamic-color first. New screens should be described in terms of roles, not hardcoded one-off fills. The seed color may change, but the role structure should stay stable.

Default Seed Presets

  • Violet Seed (#6750A4) - the default Material baseline. Use when no stronger palette choice exists.
  • Jade Seed (#0B8F83) - cooler, calmer, more aquatic. Good for operational or wellness-like product surfaces.
  • Sunset Seed (#B75A46) - warmer and more human. Good for editorial, consumer, or lifestyle-heavy screens.

Default Tonal Foundation

These are the current default fallback values when the active palette is not overridden:

  • Warm Cream Canvas (hsl(22 18% 96%)) - primary page background
  • Soft Surface Cream (hsl(22 12% 94%)) - general surface background
  • Lilac Mist Surface (hsl(274 18% 92%)) - default tonal container
  • Lilac Lifted Surface (hsl(274 22% 89%)) - elevated tonal container
  • Sage Mist Surface (hsl(117 18% 86%)) - strongest supporting container / accent slab
  • Ink Violet Text (hsl(259 6% 15%)) - primary text and icon color
  • Muted Violet Text (hsl(259 10% 38%)) - secondary text
  • Primary Violet (hsl(264 38% 45%)) - active emphasis and focus color
  • Primary Violet Container (hsl(270 34% 87%)) - filled action and highlighted slab
  • Tertiary Sage (hsl(128 18% 40%)) - supporting accent color
  • Tertiary Sage Container (hsl(112 20% 86%)) - soft secondary accent background
  • Outline Violet Gray (hsl(259 10% 56%)) - structural outline color
  • Outline Variant (hsl(259 10% 84%)) - low-emphasis borders and separators

Role Rules

  • Backgrounds should read as tinted light, never as flat white.
  • Containers should come from surface-container roles, not arbitrary translucent cards.
  • Primary actions should usually use primary-container rather than a fully saturated fill.
  • Secondary emphasis should prefer sage/tertiary-container instead of introducing a new accent.
  • Borders should be whisper-soft or transparent. Hard dividers are the exception, not the default.
  • Errors should use the error container family rather than loud red fills.

Dynamic Color Principle

When generating new screens, treat color like this:

  1. Pick a seed color.
  2. Generate a full tonal family from that seed.
  3. Map the resulting tones to stable semantic roles.
  4. Keep the component geometry and motion language unchanged.

Do not solve personalization by introducing a new skin. Personalization comes from seed-driven tonal shifts, not from changing the entire design language.

3. Typography Rules

Primary Font Family: Google Sans Text / Google Sans / Roboto Flex / Roboto
Display Font Family: Google Sans Display / Google Sans / Roboto Flex / Roboto

The typography should feel friendly, modern, and softly engineered. It should not feel editorial-serif, brutalist, developer-minimal, or luxury-fashion. The character is rounded, high-legibility, and quietly optimistic.

Hierarchy & Weights

  • Display Headlines: Semibold weight, clamp(2.75rem, 4vw, 4.75rem), tight tracking (-0.02em), line-height 1.1
  • Primary Section Headlines: Semibold weight, 2.25rem or 1.75rem, line-height 1.1-1.3
  • Card / Panel Titles: Semibold weight, 1.375rem, line-height 1.3
  • Body Text: Regular weight, 1rem, line-height 1.5
  • Supporting Text: Regular weight, 0.875rem, line-height 1.5
  • Eyebrow / Small Label Text: 0.75rem or 0.875rem, uppercase only when used sparingly, tracking around 0.12em
  • Buttons: Medium to semibold presence through weight and shape, never all-caps shouting

Typography Principles

  • Headline scale should feel heroic but rounded, not sharp or corporate.
  • Body copy should feel quiet and readable, letting color and space carry the emotional load.
  • Eyebrow text is allowed, but only as a small framing device.
  • Avoid serif display typography, condensed newspaper styling, and overly technical monospace accents.
  • Large headlines should often be left-aligned and allowed to breathe.

4. Component Stylings

Buttons

  • Shape: fully pill or near-pill; default radius should feel almost capsule-like
  • Primary Button: use primary-container with darker on-primary-container text
  • Secondary Button: use the sage / tertiary container family
  • Ghost Button: no visible container at rest; reveal a tonal hover plate on interaction
  • Subtle Button: pale lifted slab, close to the surrounding tonal field
  • Hover Behavior: gentle lift (translateY(-1px)), slight scale, soft shadow bloom
  • Press Behavior: subtle compression, never dramatic squash
  • Tone: polished and tactile, not loud, glossy, metallic, or game-like

Cards & Surfaces

  • Corner Radius: large and soft; standard cards should feel more like 28px slabs than desktop cards
  • Borders: usually transparent
  • Depth: use soft diffused shadow and tonal contrast before introducing visible strokes
  • Accent Card: use primary-container tinting, never a neon or glass effect
  • Interactive Cards: lift gently and scale microscopically; feel buoyant, not jumpy

Inputs

  • Shape: rounded but not full-pill in most cases
  • Background: lifted tonal field rather than pure white
  • Border: often transparent by default
  • Focus State: soft violet glow ring plus tonal shadow bloom
  • Placeholder: muted violet-gray
  • Overall Feel: touch-friendly, calm, and integrated into the tonal field

Panels, Dialogs, Popovers

  • Background: elevated tonal container with slightly brighter internal light
  • Border: transparent by default
  • Shadow: deeper than cards, but still diffused and soft
  • Overlay: blurred and dimmed, never harsh black
  • Motion: smooth rise/fade with restrained speed; should feel spatial and deliberate

Switches & Toggles

  • Track: soft tonal channel
  • Checked Track: primary-container, not fully saturated primary
  • Thumb: bright neutral at rest, richer violet when active
  • Behavior: smooth slide with calm easing; no spring snap

Skeletons & Loaders

  • Skeleton Color: muted tonal slab
  • Shimmer: soft highlight pass that feels like light moving over frosted material
  • Spinners: clean and minimal; motion should feel controlled and premium

5. Motion Language

Cadence UI should use one motion language plus a static accessibility fallback. Motion is not a style pack. It is part of how the system communicates state and hierarchy.

Motion Personality

  • Calm, floaty, and spatial
  • Slightly cinematic in hero/showcase moments
  • Never bouncy, elastic, or playful-for-its-own-sake
  • Built on ease-out curves that feel like soft deceleration

Timing Guidance

  • Instant feedback: ~120ms
  • Core state change: ~180ms
  • Larger surface movement: ~280ms
  • Deliberate ambient choreography: ~360ms and above

Approved Motion Patterns

  • Soft rise / fade for surface entry
  • Hover lift with small shadow bloom
  • Press compression with minimal scale-down
  • Slow floating or drifting ambient motion for showcase-only compositions
  • Breathing accent glows or tonal pulses for decorative context

Motion Rules

  • Animate transform, opacity, and shadow; avoid layout-heavy animation
  • Ambient motion belongs in showcase or hero surfaces, not on every control
  • Exit motion should be faster than enter motion
  • Respect reduced/static motion at all times
  • Never use bounce, elastic easing, jitter, or constant busy loops across core UI

6. Layout Principles

Structural Direction

Cadence UI layouts should feel like a mobile-first visual language expanded to desktop. Even on large canvases, interfaces should maintain the rounded, stacked, tonal quality of contemporary mobile surfaces.

Spacing & Rhythm

  • Use generous spacing to create a sense of premium calm
  • Tighten within components, relax between sections
  • Default spacing should feel deliberate, not grid-default or generic Tailwind spacing everywhere
  • Prefer larger top-level section gaps than dense dashboard compression

Alignment

  • Headlines and body content should generally be left-aligned
  • Centering is reserved for hero/showcase moments and empty states
  • Use layered blocks and offset compositions when you need drama, not arbitrary asymmetry

Showcase / Marketing-like Surfaces

For high-visibility demo pages:

  • Use environmental light pools and blurred radial tints
  • Layer device-like slabs or floating cards with overlap
  • Let one hero composition dominate rather than filling the canvas with equal-weight content
  • Create a clear front plane, middle plane, and background glow plane

Product / Application Surfaces

For practical product screens:

  • Use tonal grouping instead of borders to define regions
  • Keep hierarchy obvious in under two seconds
  • Maintain touch-friendly control sizes and generous internal padding
  • Avoid the generic "card grid + icon + heading + paragraph" AI layout pattern

7. Design System Notes for Stitch / AI Generation

When using Stitch or any other AI design generator, this file should be treated as the source of truth for design direction.

Language to Use

Use phrases like:

  • "softly lit Material You showcase"
  • "pastel-tonal slabs with large rounded geometry"
  • "warm cream canvas with lilac and sage tonal containers"
  • "dynamic color derived from a single seed"
  • "ambient spatial motion with restrained hover lift"

Avoid phrases like:

  • "multiple skins"
  • "glassmorphism"
  • "neon"
  • "cyber"
  • "dark dashboard"
  • "minimal monochrome admin panel"
  • "brutalist"

Component Prompt Examples

  • "Create a dashboard hero using large rounded tonal slabs, warm cream background, lilac and sage containers, and softly staged Material motion."
  • "Design a primary action button using a primary-container fill, dark violet text, pill geometry, and a gentle hover lift."
  • "Build a settings card with a large 28px slab radius, transparent border, soft diffused shadow, and a tonal input field embedded into the same color family."
  • "Generate a dialog that feels like an elevated Material container, with blurred overlay, soft entry rise, and large rounded corners."

Iteration Rules

When refining screens:

  1. Change one layer at a time: color, spacing, geometry, or motion.
  2. Preserve the single Material language.
  3. Prefer changing tonal roles before changing component structure.
  4. Prefer changing seed color before inventing a new theme family.
  5. If a screen starts to look like a different design system, pull it back.

Non-Negotiables

  • One visual language
  • Dynamic color from a seed
  • Tonal surfaces over flat white cards
  • Large radii
  • Calm spatial motion
  • Reduced/static fallback

This repository should feel like one memorable system, not a catalog of styling experiments.