DS0
Foundations

Motion

DS0 uses a consistent motion system for animations and transitions across all components.

Philosophy

Motion in DS0 follows a purposeful approach — every animation communicates meaning. Transitions guide attention, provide feedback, and create spatial continuity.

Duration Scale

TokenValueUse Case
--ds0-motion-instant0msState changes with no animation
--ds0-motion-fast100msMicro-interactions (hover, focus)
--ds0-motion-normal200msComponent transitions (expand, collapse)
--ds0-motion-slow300msOverlays, drawers, page transitions
--ds0-motion-deliberate500msAttention-grabbing animations

Easing Curves

TokenValueUse Case
--ds0-ease-defaultcubic-bezier(0.4, 0, 0.2, 1)General-purpose
--ds0-ease-incubic-bezier(0.4, 0, 1, 1)Elements exiting the viewport
--ds0-ease-outcubic-bezier(0, 0, 0.2, 1)Elements entering the viewport
--ds0-ease-springcubic-bezier(0.34, 1.56, 0.64, 1)Playful, bouncy transitions

Usage

// Tailwind classes
<div className="transition-all duration-200 ease-out">Smooth entry</div>

// CSS custom properties
.drawer {
  transition: transform var(--ds0-motion-slow) var(--ds0-ease-out);
}

Accessibility

DS0 respects the prefers-reduced-motion media query. When users enable reduced motion:

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

All component animations gracefully degrade to instant state changes.

On this page