Docs Platform

Reveal

A visual entrance wrapper. The machine owns a one-way hidden → shown latch. IntersectionObserver, delay, and reduced-motion live in ui-headless-core/reveal/controller.

Live machine

The shipped revealMachine: START begins observing, then intersection, backstop, or a manual REVEAL shows the content — and it never un-reveals.

reveal · live via createService

Waiting below the fold

States · walked from the machine

hiddenshown

Transitions from here · click to send

Context

{
  "observing": false,
  "backstopPending": false
}

Log · newest first

No events yet — use the component above or send a transition.

Explore the layers

Machine (@grassroot/ui-machines/reveal). Headless: five adapters plus mountReveal. Styled: five @grassroot/ui-* Reveal wrappers. Spec: packages/ui-headless/core/src/reveal/reveal.spec.md.

Behaviour contract

Oracle: frozen reduceReveal. No keys, no pointer, no ARIA role. Root carries data-state="hidden" | "shown".

Anatomy

root only. There is no trigger or overlay.