Search

Search components and blocks

Sign in

Blog Blocks

Editorial sections for articles, posts and updates.

Blog Section

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-section

From the blog

Notes on design, engineering and shipping.

Designing motion that feels inevitable
Design6 min

Designing motion that feels inevitable

Springs, easing and the small details that make an interface feel alive instead of animated.

Sep 28Read
How we built a shared-layout tab bar
Engineering8 min

How we built a shared-layout tab bar

A walkthrough of layoutId, spring tuning and why the pill never teleports.

Sep 21Read
Shipping agents your users can actually trust
AI7 min

Shipping agents your users can actually trust

Progress, approvals and honest status lines: the UI patterns behind reliable AI agents.

Sep 14Read
Roadmap: what is landing this quarter
Product4 min

Roadmap: what is landing this quarter

New blocks, a faster docs site and a handful of templates you have been asking for.

Sep 09Read
Color systems that survive dark mode
Design5 min

Color systems that survive dark mode

Tokens first, hex never. How we keep every component themeable from one stylesheet.

Aug 30Read
Streaming UI without the jank
Engineering9 min

Streaming UI without the jank

Batching state, stable keys and cheap animations for long-running generations.

Aug 22Read

Install

$ pnpm dlx shadcn@latest add @ditherui/blog-section

Props

className / ...section propsReact.ComponentProps<"section">—

Suggested components