Skip to content
Sanding Space
Sanding Space
Introduction
  • Principles
    • Sand the Back
    • Details Compound
    • Taste Is Trainable
    • Prototype in the Material
    • Every State Is Designed
    • Speed Is a Feeling
    • Honor the Platform
    • Know When to Stop
  • Foundations
    • Spacing Is a Scale
    • Concentric Corners
    • Optical Alignment
    • A Type Scale
    • Line Length and Leading
    • Perceptual Color
    • Contrast Is Not a Checkbox
    • Depth in Light and Dark
    • Icons Match the Text
  • Interaction
    • Button Press
    • Hover Is a Hint
    • The Safe Triangle
    • Hit Targets Are Bigger Than They Look
    • Focus Is a State Too
    • The Keyboard Is an Input
    • Inputs That Don't Fight You
    • Disabled Buttons Explain Nothing
    • Undo Beats Confirm
  • Motion
    • Motion Has a Job
    • Timing: Duration and Easing
    • Enter and Exit Aren't Mirrors
    • Grow From the Source
    • Springs Can Be Interrupted
    • Things Don't Teleport
    • Edges Should Give
    • Reduced Motion Isn't No Motion
    • Animate the Cheap Properties
  • Components
    • Toast
    • Dropdown Menu
    • Tabs
    • Drawer
  • Systems
    • Tokens Have Layers
    • Theming Without Rewriting
    • Components Are APIs
    • Composition Over Configuration
    • Variants, Not Overrides
    • Density Is a Mode
    • Behavior and Style Are Separate
    • Catch It Before It Ships
  • Product
    • Defaults Are Decisions
    • Empty States Are Onboarding
    • Progressive Disclosure
    • Write the Interface
    • Make the Common Path Fast
    • Never Lose Work
    • The URL Is State
    • Ship Behind a Flag
ResourcesAbout
Sanding Space
Introduction
  • Principles
    • Sand the Back
    • Details Compound
    • Taste Is Trainable
    • Prototype in the Material
    • Every State Is Designed
    • Speed Is a Feeling
    • Honor the Platform
    • Know When to Stop
  • Foundations
    • Spacing Is a Scale
    • Concentric Corners
    • Optical Alignment
    • A Type Scale
    • Line Length and Leading
    • Perceptual Color
    • Contrast Is Not a Checkbox
    • Depth in Light and Dark
    • Icons Match the Text
  • Interaction
    • Button Press
    • Hover Is a Hint
    • The Safe Triangle
    • Hit Targets Are Bigger Than They Look
    • Focus Is a State Too
    • The Keyboard Is an Input
    • Inputs That Don't Fight You
    • Disabled Buttons Explain Nothing
    • Undo Beats Confirm
  • Motion
    • Motion Has a Job
    • Timing: Duration and Easing
    • Enter and Exit Aren't Mirrors
    • Grow From the Source
    • Springs Can Be Interrupted
    • Things Don't Teleport
    • Edges Should Give
    • Reduced Motion Isn't No Motion
    • Animate the Cheap Properties
  • Components
    • Toast
    • Dropdown Menu
    • Tabs
    • Drawer
  • Systems

    How do I make it scale?

    • Tokens Have Layers
    • Theming Without Rewriting
    • Components Are APIs
    • Composition Over Configuration
    • Variants, Not Overrides
    • Density Is a Mode
    • Behavior and Style Are Separate
    • Catch It Before It Ships
  • Product
    • Defaults Are Decisions
    • Empty States Are Onboarding
    • Progressive Disclosure
    • Write the Interface
    • Make the Common Path Fast
    • Never Lose Work
    • The URL Is State
    • Ship Behind a Flag
ResourcesAbout

Systems

Getting one screen right is craft. Getting the hundredth screen right, built by someone who wasn't in the room for the first, is a system. This section is about writing your decisions down so they last: in tokens, in component APIs and in rules that other people can follow without having to ask you.

A good system makes the right thing easy and the wrong thing obvious. Themes become a token swap instead of a second stylesheet. Components are designed like APIs, because other people will have to learn them. And when the system starts to drift, one small override at a time, someone notices before it ships.

Tokens Have Layers (coming soon)

A color value, what it means, and where it's used are three different decisions. Keep them apart.

Theming Without Rewriting (coming soon)

Light, dark and a second brand should be a token swap, not a second stylesheet.

Components Are APIs (coming soon)

Props are an interface other people have to learn. Design them like one.

Composition Over Configuration (coming soon)

A component that takes thirty props is a component nobody can extend.

Variants, Not Overrides (coming soon)

Every one-off className tweak is a variant the system doesn't know about yet.

Density Is a Mode (coming soon)

Some screens need room to breathe and some need to fit a lot. Make it a setting, not a fork.

Behavior and Style Are Separate (coming soon)

Build the hard part once, then dress it any way you want.

Catch It Before It Ships (coming soon)

Systems drift one small change at a time. Make drift visible before anyone has to notice it.