Section

@sushindustries/ui

Kicker, heading and body, revealing top-down with an 80ms offset.

4 min read
View as MarkdownEdit on GitHub

Section is a page section: a kicker, a heading and a body, wrapped in a container and revealed top-down as the reader scrolls to it. Reach for it as one of a page's top-level blocks whenever content should resolve as a sequence instead of arriving as one block.

Viewport width
Phone22remthe floor, the narrowest this promises to work at
tanstacktanstack add https://adamjurek.com/r/tanstack/section.jsonshadcnpnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/section.json

Why it is built this way

The heading and the body reveal separately, offset by 80 milliseconds. That gap is the whole trick - short enough that it does not read as a deliberate sequence, long enough that the two halves do not land on the same frame and arrive as one flat block instead.

Install

tanstack add https://adamjurek.com/r/tanstack/section.json
shell
pnpm dlx shadcn@latest add https://adamjurek.com/r/shadcn/section.json
shell
pnpm add @sushindustries/ui @sushindustries/atoms
shell

What you get

Version0.1.0
Categorylayout · Page structure
Filessection.tsx
DependenciesNone
Also installsrevealRevealFades and rises its children the first time they reach the viewport. Never un-reveals.@sushindustries/ui · motion
Tagsheading, scroll, no-deps

No runtime dependencies

It brings nothing with it beyond the stylesheet.

UsesRevealRevealFades and rises its children the first time they reach the viewport. Never un-reveals.@sushindustries/ui · motion