Glin UI
Primitive / Moleculebeta

Stagger List

Reveals child items one after another with configurable stagger and direction using the active animation engine.

Edit on GitHub
  1. 1Create your workspace
  2. 2Invite your team
  3. 3Connect a repository
  4. 4Ship your first release

Installation

Install from
pnpm dlx @glinui/cli@latest add stagger-list

Prefer the package?

Usage

Motion engine

  • Design tokens
  • Primitives
  • Blocks
// pnpm add motion (separate dependency, optional)
// Once at your app entry:
import "@glinui/motion/register/motion"
import { StaggerList } from "@glinui/ui"
export function Demo() {
return (
<StaggerList engine="motion" as="ul" step={80} className="space-y-2">
<li>Design tokens</li>
<li>Primitives</li>
<li>Blocks</li>
</StaggerList>
)
}

GSAP engine

  • Design tokens
  • Primitives
  • Blocks
// pnpm add gsap (separate dependency under GreenSock's own license, not bundled by GLINUI)
// Once at your app entry:
import "@glinui/motion/register/gsap"
import { StaggerList } from "@glinui/ui"
export function Demo() {
return (
<StaggerList engine="gsap" as="ul" step={80} className="space-y-2">
<li>Design tokens</li>
<li>Primitives</li>
<li>Blocks</li>
</StaggerList>
)
}

Static (animations off)

  • Design tokens
  • Primitives
  • Blocks
import { StaggerList } from "@glinui/ui"
export function Demo() {
return (
<StaggerList motion="none" as="ul" step={80} className="space-y-2">
<li>Design tokens</li>
<li>Primitives</li>
<li>Blocks</li>
</StaggerList>
)
}

Accessibility

  • Content is in the DOM and visible to assistive tech before and after the animation.
  • Animation never gates meaning: the static state is identical to the final animated state.
  • List semantics are preserved: render with as="ul" and li children.

Reduced Motion

Under prefers-reduced-motion the engine drops travel, blur and scale and only fades opacity. motion="none" renders the final state immediately and never loads an animation library.

Affected properties

opacitytransformfilter

API Reference

PropTypeRequiredDefaultDescription
asStaggerListTagNo"div"Element to render.
stepnumberNo60Delay between children in ms.
orderStaggerDirectionNo"forward"Order children appear in.
variant / direction / distancesee Reveal--Treatment applied to each child.
duration / delay / spring / once / threshold / immediatesee Reveal--Same behavior as Reveal.
engineEngineNameNo"css"Animation engine. css is built in with zero dependencies; motion and gsap are opt-in (import "@glinui/motion/register/<name>" and install the package). Falls back to MotionEngineProvider, then data-glin-engine on <html>, then css.
motionMotionLevelNo"system"none renders the final state with no animation, subtle animates opacity only, system follows prefers-reduced-motion.
childrenReact.ReactNodeNo-Auto-generated from TypeScript source.
delaynumberNo-Auto-generated from TypeScript source.
directionRevealDirectionNo-Auto-generated from TypeScript source.
distancenumberNo-Auto-generated from TypeScript source.
durationnumberNo-Auto-generated from TypeScript source.
immediatebooleanNofalseAuto-generated from TypeScript source.
oncebooleanNotrueAuto-generated from TypeScript source.
springSpringInputNo-Auto-generated from TypeScript source.
thresholdnumberNo-Auto-generated from TypeScript source.
variantRevealVariantNo"slide"Auto-generated from TypeScript source.

Source

Import directly from the package or browse the source on GitHub. Click any file to view it.

Import

import { StaggerList } from "@glinui/ui"

Source Files

Dependencies

@glinui/ui@glinui/motion

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/stagger-list.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-10-08T01:41:21.546Z · Full index: /docs/api-metadata

Primary Props Type

StaggerListProps

StaggerListProps

PropTypeRequiredDefaultDescription
asStaggerListTagNo"div"-
childrenReact.ReactNodeNo--
delaynumberNo--
directionRevealDirectionNo--
distancenumberNo--
durationnumberNo--
engineEngineNameNo-Engine override: `css` (default), `motion`, `gsap` or a registered custom engine.
immediatebooleanNofalse-
motionMotionLevelNo-Motion override. `none` renders the static final state, `subtle` is opacity only.
oncebooleanNotrue-
orderStaggerDirectionNo"forward"Order the children appear in. Default `forward`.
springSpringInputNo--
stepnumberNo60Delay between children in ms. Default 60.
thresholdnumberNo--
variantRevealVariantNo"slide"-