Designing motion that feels inevitable
Springs, easing and the small details that make an interface feel alive instead of animated.
Search components and blocks
Editorial sections for articles, posts and updates.
A blog grid with capsule category tabs. The tabs reuse the motion Tabs component with a sliding pill; switching category filters the grid with a layout animation, so remaining cards glide into their new slots while others scale out and new ones spring in. Cover photos fade in from a blur as they load, zoom slowly on hover, and each card lifts with a spring while its arrow nudges forward.
pnpm dlx shadcn@latest add @ditherui/blog-sectionNotes on design, engineering and shipping.
Springs, easing and the small details that make an interface feel alive instead of animated.
A walkthrough of layoutId, spring tuning and why the pill never teleports.
Progress, approvals and honest status lines: the UI patterns behind reliable AI agents.
New blocks, a faster docs site and a handful of templates you have been asking for.
Tokens first, hex never. How we keep every component themeable from one stylesheet.
Batching state, stable keys and cheap animations for long-running generations.
className / ...section propsReact.ComponentProps<"section">—