Component catalog
Find components by type and feeling. Explore live examples, shortlist your options, and copy your picks to your agent.
Filter by feeling, motion, usage or library · 1 active
370 total results · 183 with visual previews · 187 on source sites
loop · cursor · state — medium♥ The user explicitly asked to keep Kinetic Field in the homepage examples. Retain its pointer-responsive particle forms and controls.


shadcn table in a card with toolbar: search, faceted filter, actions slot, sortable columns, row selection and pagination. Badge columns are server-safe; `cell` renderers need a client page.
- Interactive demo · switch to Live view
Temporary page an agent installs in a consumer project to render candidate variants of the user's own component side by side, with their theme and content: <DesignLab title> + <LabOption id label notes chosen>. Lands at app/design-lab/page.tsx + components/design-lab.tsx; the user says which option they want, the agent applies it and removes both files.

Dashboard KPI tiles: label, big value, delta chip (invertible for churn/latency) and an SVG sparkline in --chart-1.


Starter page → app/dashboard/page.tsx. Use existing compatible tokens, or install a theme only when requested; it pulls in 3 @oc blocks. Preview: /templates/template-saas-dashboard.

Writes DESIGN.md to the project root + theme tokens + fonts. Read design-systems/brutalist-mono/DESIGN.md first.

Writes DESIGN.md to the project root + theme tokens + fonts. Read design-systems/linear-dark/DESIGN.md first.
enter — medium♥ The user singled out the dither chart as an interesting component to feature on the homepage. Use the real pixelated data visualization with selectable chart styles and clearly labeled sample data. — Pixelated Canvas charts with line, donut, bar and other data shapes. Good for distinctive dashboards and product illustrations; keep its data text alternative, label demo data and provide controls outside the canvas. Hosted local demo preserves the upstream component and install command.

'New feature →' pill above a hero headline (compound badge). Token-based.

Shiki code block with tabs, line numbers, highlight/diff/focus transformers and copy. Theme-aware chrome; diff colours are semantic emerald/rose. Heavy: shiki + react-icons.

Figma-style colour picker (saturation/hue/alpha/eyedropper/format). Surfaces use tokens; the colour gradients are intrinsic.

GitHub-style contribution heatmap; levels use fill-muted-foreground/N, so it inherits the theme.


drag — subtle
drag — subtle


media-chrome video player styled with Tailwind. Colourless controls inherit theme.
enter — subtle
enter — subtlePer-word/char/line text entrance with ~10 presets (blurIn, slideUp, scaleUp…). Inherits colour — good default for hero headlines over Aceternity's text effects.
press · state — mediumCard that morphs into a dialog (shared layout) — the signature motion-primitives piece for galleries/case studies. Only the backdrop has colour (white/black 40%); you style the card with tokens.

Command palette (command + dialog) with search — pair with comp-25 as the trigger and bind ⌘K yourself.

Avatar upload with crop dialog + zoom slider. Uses Origin's cropper primitive and use-file-upload hook.
hover · enter — mediumScramble → reveal text on hover or in view (motion). Dev-tool/brutalist brands.
enter · loop — subtle


loop — subtleThree small AI waiting indicators (dots, sweep bar, 3×3 pixel grid) sharing one cycle length so they can be mixed on a page, with an optional elapsed-seconds counter, aria-live and an sr-only label. Drawn in currentColor — set the text colour and it follows the theme. Lighter than canvas orbs for inline 'working…' states; use oc/agent-status for the primary agent indicator.

Syntax-highlighted block with tabs (react-syntax-highlighter).
enter — mediumGibberish → text reveal. Technical/dev-tool and brutalist brands.
press · state — subtleButton with loading → success states built in.
enter — subtle
Mount <Agentation /> only in development (see skills/setup-project). Free for internal use; commercial license only if you redistribute it in a product.
loop · state — mediumImport BoxModel from "anatomy-figures/box-model" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport Debounce from "anatomy-figures/debounce" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport HashMap from "anatomy-figures/hash-map" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport LruCache from "anatomy-figures/lru-cache" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport MessageQueue from "anatomy-figures/message-queue" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport RateLimiter from "anatomy-figures/rate-limiter" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport Watch from "anatomy-figures/watch" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
enter · state — subtleRow-level diff table for agent-proposed data changes. Requires the Beautiful UI foundation.css, which redefines --accent (collides with shadcn).
enter · hover — subtleCompact chips for tool calls an agent made. Requires the Beautiful UI foundation.css, which redefines --accent (collides with shadcn).
loop · state — subtle
loop · state — subtleOur default agent-activity indicator; wrapped by @oc/agent-status. Canvas 2D, no WebGL. Also: thinking-orbs-native (RN) and SwiftUI.
loop · hover — medium
drag — medium
Free tier: search + limited daily installs. Install a found item with: npx shadcn@latest add "https://21st.dev/r/<author>/<slug>?api_key=$API_KEY_21ST".
press — mediumA grid of cells that ripple when clicked.
loop — expressiveAnimated text component with colorful curved lines rendered on canvas, clipped to the text shape.
hover · cursor · enter — mediumA cool card with amazing hover effect, reveals encrypted text and a mixed gradient.
press — mediumA layout effect that animates the grid item on click, powered by framer motion layout
cursor · enter — subtleMouse-driven parallax effect, perfect for hero sections. Images blur fade in and move at different depths.
state · press — subtleTabs to switch content, click on a tab to check background animation.
loop · state — mediumImport BTree from "anatomy-figures/b-tree" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.
loop · state — mediumImport BinarySearch from "anatomy-figures/binary-search" (default export). MIT; React 18+. Its --anatomy-* tokens need mapping to your project's theme. Isometric does not imply freely rotating 3D. Live interaction is on the source site; our thumbnail is a still screenshot.