sh4dcnv2 · atlas
← libraries

@pulld

Typed, accessible, theme-aware React/Tailwind components installable by the shadcn CLI or your AI coding agent. Free atoms plus composed Pro blocks.

125 components pro available react shadcn-cli

Install this registry

shadcn (npm) npx shadcn@latest add https://pulld.pages.dev/r/registry.json
pnpm pnpm dlx shadcn@latest add https://pulld.pages.dev/r/registry.json
bun bunx shadcn@latest add https://pulld.pages.dev/r/registry.json
fetch registry curl -s https://pulld.pages.dev/r/registry.json

Components

125 total
Copy Button ui

A one-click copy control: a square icon button that writes a string to the clipboard, swaps its clipboard icon for a tick, announces "Copied" to a screen reade…

npx shadcn@latest add https://pulld.pages.dev/r/copy-button.json
Kbd ui

Inline keyboard key rendered as a real <kbd> element and styled as a bordered monospace keycap — a drop-in for a bare <kbd> tag that otherwise renders as unsty…

npx shadcn@latest add https://pulld.pages.dev/r/kbd.json
Empty State ui

The centred placeholder a screen shows when it has nothing to draw — a dashed panel with an optional icon, a heading, one line of explanation, and room for a c…

npx shadcn@latest add https://pulld.pages.dev/r/empty-state.json
Stat Card ui

The single-number tile at the top of a dashboard: a label, one big value, and an optional percentage change with an up or down arrow — green when the number mo…

npx shadcn@latest add https://pulld.pages.dev/r/stat-card.json
Theme Toggle ui

The one-button light/dark switch you drop in a navbar, header or settings row — click it and the whole app flips theme, and the choice survives a reload. Reach…

npx shadcn@latest add https://pulld.pages.dev/r/theme-toggle.json
Avatar Stack ui

A facepile in one prop: pass a list of people and a maximum, get a row of overlapping circular avatars with everything past the maximum collapsed into a "+N" b…

npx shadcn@latest add https://pulld.pages.dev/r/avatar-stack.json
Password Input ui

A password field with the show/hide eye already built in — the one control every sign-up form needs and shadcn/ui does not ship. It is a drop-in replacement fo…

npx shadcn@latest add https://pulld.pages.dev/r/password-input.json
Spinner ui

An inline loading indicator that announces itself: a spinning lucide Loader2 inside a role="status" live region with a screen-reader-only label, so a pending o…

npx shadcn@latest add https://pulld.pages.dev/r/spinner.json
Code Block ui

A read-only code panel: a bordered, scrollable box that shows a snippet with a copy button in the corner and an optional uppercase language label. Reach for it…

npx shadcn@latest add https://pulld.pages.dev/r/code-block.json
Loading Button ui

Submit button that shows a spinner, announces itself, and refuses to fire twice while an async action is in flight. Set loading={true} for the duration of the …

npx shadcn@latest add https://pulld.pages.dev/r/loading-button.json
Confirm Button ui

Inline two-step confirmation on the button itself, with no modal and no dialog state to wire up: the first click arms it — the label swaps to "Confirm?" and th…

npx shadcn@latest add https://pulld.pages.dev/r/confirm-button.json
Command Palette ui

A ready-made ⌘K command palette: one component you drop in, open with a keyboard shortcut, and fill with actions. Reach for it the moment a nav bar stops being…

npx shadcn@latest add https://pulld.pages.dev/r/command-palette.json
Toast ui

A complete toast / notification system in one file: call `toast()` — or `toast.success` / `.error` / `.info` / `.warning` / `.loading` / `.promise` — from anyw…

npx shadcn@latest add https://pulld.pages.dev/r/toast.json
Search Input ui

Search field with a leading magnifier and a trailing clear (✕) that appears as soon as there is text, empties the field, and puts focus back so typing can cont…

npx shadcn@latest add https://pulld.pages.dev/r/search-input.json
Number Input ui

A number field with − and + stepper buttons either side of it. Reach for it wherever someone adjusts a number by one rather than typing it: a quantity picker i…

npx shadcn@latest add https://pulld.pages.dev/r/number-input.json
OTP Input ui

A one-time passcode field split into separate digit boxes — the "enter the 6-digit code we sent you" screen. Reach for it on any challenge step where a short n…

npx shadcn@latest add https://pulld.pages.dev/r/otp-input.json
Tag Input ui

A multi-value text field: what gets typed becomes a removable chip, and the value the form sees is a plain string[]. Enter or a comma commits the draft, Backsp…

npx shadcn@latest add https://pulld.pages.dev/r/tag-input.json
Copy Field ui

Read-only field that shows a value with a copy button docked at its right edge: one click copies, and focusing or clicking anywhere in the field selects the wh…

npx shadcn@latest add https://pulld.pages.dev/r/copy-field.json
Segmented Control ui

A row of 2–4 mutually exclusive choices drawn as one moving pill on a shared track — the iOS-style segmented control, and what most dashboards use to switch a …

npx shadcn@latest add https://pulld.pages.dev/r/segmented-control.json
Step Indicator ui

Horizontal stepper that shows where someone is in a fixed sequence — numbered circle markers joined by a connecting line, each drawn as complete (filled, with …

npx shadcn@latest add https://pulld.pages.dev/r/step-indicator.json
Rating ui

A star rating that works both ways: as an input that collects a score, and read-only as a display of one. Reach for it wherever a number between 0 and 5 is rea…

npx shadcn@latest add https://pulld.pages.dev/r/rating.json
Timeline ui

A vertical timeline: a list of events drawn as dots on a connecting line, each with an optional timestamp, title, description and icon. Reach for it wherever t…

npx shadcn@latest add https://pulld.pages.dev/r/timeline.json
Announcement Bar ui

A dismissible bar pinned above your header for a message the whole site needs to see: a launch or new release, a promo, sale or free-shipping offer, a schedule…

npx shadcn@latest add https://pulld.pages.dev/r/announcement-bar.json
File Dropzone ui

A drag-and-drop file upload area that is also a real file picker: drop files onto it, or click it — or focus it and press Enter or Space — to open the native c…

npx shadcn@latest add https://pulld.pages.dev/r/file-dropzone.json
Progress Ring ui

A circular progress indicator: an SVG ring that fills clockwise from twelve o'clock, with the percentage — or any icon or short label you pass — sitting in the…

npx shadcn@latest add https://pulld.pages.dev/r/progress-ring.json
Pricing Card ui

A single pricing plan card — one tier's box, with its name, its price, what it includes and the button that takes it. Reach for it wherever a plan has to be ch…

npx shadcn@latest add https://pulld.pages.dev/r/pricing-card.json
Feature Card ui

An icon + heading + one line of copy, as the repeating tile in the features or benefits section of a landing or marketing page — a “why us” grid, “what’s inclu…

npx shadcn@latest add https://pulld.pages.dev/r/feature-card.json
Gauge ui

A semicircular (half-circle) gauge or dial that shows one measurement inside a known range, drawn as an SVG arc that fills from the left and animates to its ne…

npx shadcn@latest add https://pulld.pages.dev/r/gauge.json
Time Ago ui

Auto-updating relative timestamp — "3 minutes ago", "just now", "in 2 days" — that re-renders on its own timer so the label stays true without a reload. Reach …

npx shadcn@latest add https://pulld.pages.dev/r/time-ago.json
Multi Select ui

A searchable multi-select: choose several options from a list you define, each shown as a removable badge in the trigger. Reach for it wherever a field stores …

npx shadcn@latest add https://pulld.pages.dev/r/multi-select.json
Countdown ui

A live countdown timer to a future moment — it re-renders every second, ticks down, never goes negative, and fires an onComplete callback once when it reaches …

npx shadcn@latest add https://pulld.pages.dev/r/countdown.json
Inline Edit ui

Click-to-edit text that stays where it is: a value shown as plain text with a pencil affordance that swaps to an input in the same spot when activated, commits…

npx shadcn@latest add https://pulld.pages.dev/r/inline-edit.json
Autosize Textarea ui

A textarea that grows as you type and stops at a maximum height, then scrolls. Reach for it wherever a fixed-height box is the wrong shape: a chat, message or …

npx shadcn@latest add https://pulld.pages.dev/r/autosize-textarea.json
Currency Input ui

A money input that shows a grouped, currency-formatted amount ($1,234.50) when idle and the raw number while you're editing, so the cursor never fights the tho…

npx shadcn@latest add https://pulld.pages.dev/r/currency-input.json
Floating Label Input ui

A text input whose label sits inside the field like a placeholder, then shrinks and floats up to straddle the top border the moment the field is focused or hol…

npx shadcn@latest add https://pulld.pages.dev/r/floating-label-input.json
Bulk Action Bar ui

The bar that appears once rows are selected in a table or list — it shows "3 items selected", holds your bulk actions (delete, archive, export, assign, move, a…

npx shadcn@latest add https://pulld.pages.dev/r/bulk-action-bar.json
Save Status ui

The small inline "Saving… / Saved 2 minutes ago / Couldn't save · Retry" indicator that sits beside an autosaving surface, and the announcement that goes with …

npx shadcn@latest add https://pulld.pages.dev/r/save-status.json
Form Error Summary ui

The block that appears above a form after a failed submit — "There are 3 problems with your submission" followed by one link per error that jumps focus straigh…

npx shadcn@latest add https://pulld.pages.dev/r/form-error-summary.json
Type-to-Confirm ui

The confirmation step in front of an irreversible action: the person has to type the resource's own name ("acme-prod") before the destructive button turns on. …

npx shadcn@latest add https://pulld.pages.dev/r/type-to-confirm.json
Keyboard Shortcuts ui

The help sheet that opens when the user presses ? — a modal listing every keyboard shortcut in the app, grouped by area, with the key caps drawn per platform. …

npx shadcn@latest add https://pulld.pages.dev/r/keyboard-shortcuts.json
Upload List ui

The list of files under a dropzone or file picker — one row each with the file name, its size, a progress bar while it uploads, an error with a retry button wh…

npx shadcn@latest add https://pulld.pages.dev/r/upload-list.json
Bento Grid ui

The asymmetric panel grid behind most modern feature sections: a set of cards on one grid where a few cells are deliberately two columns wide or two rows tall,…

npx shadcn@latest add https://pulld.pages.dev/r/bento-grid.json
Tree View ui

The nested list you can open, close and walk with the arrow keys: a file explorer or file tree, a folder or directory tree, a category or taxonomy picker, an o…

npx shadcn@latest add https://pulld.pages.dev/r/tree-view.json
Sortable List ui

Drag-to-reorder list: grab a row's grip handle and drop it in a new place — and do the same thing from the keyboard, which is the half that is normally missing…

npx shadcn@latest add https://pulld.pages.dev/r/sortable-list.json
Infinite Scroll ui

The footer of a list that keeps going: an invisible sentinel that loads the next page as it scrolls into view, plus a Load more button that always does the sam…

npx shadcn@latest add https://pulld.pages.dev/r/infinite-scroll.json
Virtual List ui

A long list that only puts the rows you can see into the DOM: five thousand rows render as about thirty nodes, so the page stops taking seconds to paint and sc…

npx shadcn@latest add https://pulld.pages.dev/r/virtual-list.json
Read More ui

Long text clamped to a few lines with a Show more / Show less toggle that appears only when the text is genuinely too long. Use it wherever text is usually sho…

npx shadcn@latest add https://pulld.pages.dev/r/read-more.json
Middle Truncate ui

One line of text with the middle removed so that both ends stay readable, fitted to whatever width the container actually gives it. Use it for file names — whe…

npx shadcn@latest add https://pulld.pages.dev/r/middle-truncate.json
Table of Contents ui

A table of contents for the page the reader is on, with the section they are currently reading highlighted as they scroll. Use it for the "On this page" rail b…

npx shadcn@latest add https://pulld.pages.dev/r/toc.json
Date Input ui

A date field you type into, one segment at a time, that emits an ISO "YYYY-MM-DD" string. Use it for date of birth and signup forms, booking and check-in/check…

npx shadcn@latest add https://pulld.pages.dev/r/date-input.json
Sparkline ui

An inline SVG trend line — a sparkline — that shows the shape of a series in about the space of a line of text. Use it when you need a chart small enough to li…

npx shadcn@latest add https://pulld.pages.dev/r/sparkline.json
Slug Input ui

A URL slug field that fills itself in from a title and then gets out of the way. Use it wherever a record needs a URL: the permalink or slug field in a blog po…

npx shadcn@latest add https://pulld.pages.dev/r/slug-input.json
Password Strength ui

A password strength meter for a sign-up, registration, change-password or reset-password form — the bar under the password field that says Weak or Strong, plus…

npx shadcn@latest add https://pulld.pages.dev/r/password-strength.json
Diff View ui

A line-by-line diff of two strings — the before/after view a screen needs when it has to show what changed: a config or settings change, a record edited in an …

npx shadcn@latest add https://pulld.pages.dev/r/diff-view.json
Calendar Heatmap ui

A year of daily counts as a grid of shaded squares — the GitHub-style contribution graph, drawn for whatever your app counts per day: commits, deploys, orders,…

npx shadcn@latest add https://pulld.pages.dev/r/calendar-heatmap.json
ANSI Log ui

Renders raw terminal output — escape sequences and all — as styled, theme-aware HTML. Reach for it wherever a process's own output has to be shown inside a pag…

npx shadcn@latest add https://pulld.pages.dev/r/ansi-log.json
Cron Expression ui

Turns a cron expression into a sentence anyone can read, and lists the next times it fires. Reach for it wherever a schedule is shown rather than edited: a sch…

npx shadcn@latest add https://pulld.pages.dev/r/cron-expression.json
Ratio Bar ui

One horizontal bar that shows how a whole is divided up, with a legend that names every part — the GitHub-style language / storage bar. Reach for it whenever t…

npx shadcn@latest add https://pulld.pages.dev/r/ratio-bar.json
Scroll Progress ui

A bar that fills as the reader scrolls — the reading indicator across the top of an article, and the "how much is left?" cue on anything long. Use it on blog p…

npx shadcn@latest add https://pulld.pages.dev/r/scroll-progress.json
Duration Input ui

A text field that takes a length of time written the way people actually write one — 90m, 1h30m, 1h 30m, 2d 4h 15m, 1:30, 1.5h, 500ms, "90 minutes" — reads it …

npx shadcn@latest add https://pulld.pages.dev/r/duration-input.json
Color Picker ui

A colour picker built from a hex/rgb/hsl text box and native hue, saturation and lightness sliders, with optional alpha and preset swatches. Reach for it where…

npx shadcn@latest add https://pulld.pages.dev/r/color-picker.json
JSON Viewer ui

Renders a parsed JSON value as a collapsible, type-coloured tree you can read and navigate. Reach for it wherever a page has to show a payload the reader did n…

npx shadcn@latest add https://pulld.pages.dev/r/json-viewer.json
Image Comparison ui

A before/after slider: two images stacked in the same box with a divider you drag across them, so the second is revealed over the first instead of sitting next…

npx shadcn@latest add https://pulld.pages.dev/r/image-comparison.json
Time Zone Select ui

A time zone picker: every IANA zone the browser knows, grouped by region and labelled with the UTC offset it is actually on — "New York (UTC-04:00)", "Kolkata …

npx shadcn@latest add https://pulld.pages.dev/r/timezone-select.json
Month Picker ui

A month picker: a year of twelve months as a grid, with arrows on the year, that hands back a plain "YYYY-MM" string — "2026-08" — and never a day or a time zo…

npx shadcn@latest add https://pulld.pages.dev/r/month-picker.json
Time Input ui

A time field you type into, one segment at a time, that hands back a plain 24-hour clock string — "09:30", or "09:30:15" with seconds — and never a date and ne…

npx shadcn@latest add https://pulld.pages.dev/r/time-input.json
Weekly Hours ui

A week of opening hours in one editor: seven rows, each a switch plus an opening and a closing time, handing back a plain object keyed by weekday. Reach for it…

npx shadcn@latest add https://pulld.pages.dev/r/weekly-hours.json
Country Select ui

A country picker: all 249 ISO 3166-1 countries, named in the reader's own language, sorted the way that language sorts, and searchable by local name, English n…

npx shadcn@latest add https://pulld.pages.dev/r/country-select.json
Currency Select ui

A currency picker: every ISO 4217 currency the runtime knows, named in the reader's own language, sorted the way that language sorts, and searchable by local n…

npx shadcn@latest add https://pulld.pages.dev/r/currency-select.json
Language Select ui

A UI language picker: every language named in its own language — 日本語, Deutsch, العربية, 한국어 — with its name in the page's language beside it, its BCP-47 tag, a…

npx shadcn@latest add https://pulld.pages.dev/r/language-select.json
Phone Input ui

An international phone number field: a searchable country picker, that country's calling code shown as a live prefix, and one E.164 string ("+819012345678") co…

npx shadcn@latest add https://pulld.pages.dev/r/phone-input.json
Password Generator ui

A password generator: a read-only field holding the generated password, a Generate control, a copy button, and switches for length, character classes and look-…

npx shadcn@latest add https://pulld.pages.dev/r/password-generator.json
Network Status ui

An offline banner that is right about being offline: it tells someone the page has lost the network, and — the harder half — only tells them it is back once th…

npx shadcn@latest add https://pulld.pages.dev/r/network-status.json
Recovery Codes ui

The sheet of two-factor backup codes, with the three ways off the screen that people actually use: copy, download as a .txt, and print. Reach for it wherever a…

npx shadcn@latest add https://pulld.pages.dev/r/recovery-codes.json
Unsaved Changes Guard ui

A leave guard for a form with unsaved changes: it holds the departure, asks whether the work should be discarded, and lets it through only when the answer is y…

npx shadcn@latest add https://pulld.pages.dev/r/unsaved-changes-guard.json
CSV Export Button ui

A button that turns rows into a CSV file the browser saves — with the two things the inline version gets wrong already handled: the spreadsheet formulas hiding…

npx shadcn@latest add https://pulld.pages.dev/r/csv-export-button.json
Idle Timeout ui

An inactivity timeout with a warning before it fires: it watches for the user going away, puts up a "you will be signed out in 1:59" dialog with a live countdo…

npx shadcn@latest add https://pulld.pages.dev/r/idle-timeout.json
Character Counter ui

The "42 left" that sits under a field with a limit — a bio, a post box, a product description, an SMS body, a subject line — counting the characters a person c…

npx shadcn@latest add https://pulld.pages.dev/r/char-counter.json
Scroll Shadow ui

A scrolling box whose edges fade out while there is more content past them, and stop fading the moment there is not — the cue that tells a reader a wide table …

npx shadcn@latest add https://pulld.pages.dev/r/scroll-shadow.json
Mention Input ui

The comment box where typing `@` opens a list of people and picking one types their handle in — the completion that lives inside the prose, anchored under the …

npx shadcn@latest add https://pulld.pages.dev/r/mention-input.json
Signature Pad ui

The box at the bottom of a form where somebody signs with a finger, a mouse or a stylus — and, beside it, the field where somebody who cannot draw types their …

npx shadcn@latest add https://pulld.pages.dev/r/signature-pad.json
Image Crop ui

The step that comes straight after a photo is chosen: the picture sits behind a frame of the shape the product needs, and you drag it about and pinch or scroll…

npx shadcn@latest add https://pulld.pages.dev/r/image-crop.json
Sort Header ui

One sortable column heading for a table you already have: press it and the rows re-order, press it again for the other direction, press it a third time and the…

npx shadcn@latest add https://pulld.pages.dev/r/sort-header.json
QR Code ui

A scannable QR code, drawn as SVG, for putting a link, a Wi-Fi network or a 2FA secret on screen where a phone can pick it up. Reach for it wherever something …

npx shadcn@latest add https://pulld.pages.dev/r/qr-code.json
Share Button ui

A share control that opens the device's native share sheet and quietly degrades to copying the link where that sheet does not exist. Reach for it wherever a pa…

npx shadcn@latest add https://pulld.pages.dev/r/share-button.json
Print Button ui

Prints one region of the page — an invoice, a receipt, an order confirmation, a ticket or boarding pass, a packing slip, a report or dashboard panel, a chart, …

npx shadcn@latest add https://pulld.pages.dev/r/print-button.json
Masked Input ui

Holds a text field to one fixed shape while it is typed — a postal or ZIP code, a product or licence key, a serial, model or part number, an employee, member, …

npx shadcn@latest add https://pulld.pages.dev/r/masked-input.json
Fullscreen Button ui

A button that shows one element — a chart, a data table, a map, a video player, a preview pane — full-screen on its own, and keeps telling the truth about it a…

npx shadcn@latest add https://pulld.pages.dev/r/fullscreen-button.json
Wake Lock Toggle ui

A toggle that stops the screen going dark while somebody is looking at it but not touching it, and — unlike every version written by hand — keeps on being true…

npx shadcn@latest add https://pulld.pages.dev/r/wake-lock-toggle.json
Geolocation Button ui

A "use my current location" button that is right about why it didn't. It asks the device for a position and, when that is refused, works out which of four unre…

npx shadcn@latest add https://pulld.pages.dev/r/geolocation-button.json
Highlight Text ui

Text with the parts matching a search query highlighted, built so that neither the text nor the query can break it — and both of them routinely arrive from a U…

npx shadcn@latest add https://pulld.pages.dev/r/highlight-text.json
Image Zoom ui

A frame that zooms whatever is inside it — wheel, trackpad pinch, double click or the buttons — and lets you drag it around once it no longer fits. Reach for i…

npx shadcn@latest add https://pulld.pages.dev/r/image-zoom.json
Speech Input ui

A press-to-dictate microphone button that fills a text field by voice, and stops claiming to listen the moment the browser has stopped. Reach for it beside any…

npx shadcn@latest add https://pulld.pages.dev/r/speech-input.json
Date Range Preset ui

A row of date-range presets — Today, Last 7 days, Month to date, Last month, Year to date — with a custom from/to range behind the last option, that answers wi…

npx shadcn@latest add https://pulld.pages.dev/r/date-range-preset.json
Camera Capture ui

A take-a-photo control that opens the device camera inline, shows a live preview, captures a still to a Blob, and — the part every hand-rolled version gets wro…

npx shadcn@latest add https://pulld.pages.dev/r/camera-capture.json
Filter Chips ui

The row of pills above a list that says which filters are in force — one chip per applied condition, each with a × that takes off only that condition, plus a c…

npx shadcn@latest add https://pulld.pages.dev/r/filter-chips.json
Product Tour ui

A guided tour of the real screen: a card that walks through your own UI, dimming the page and lighting up the one control each step is about, with Back and Nex…

npx shadcn@latest add https://pulld.pages.dev/r/product-tour.json
Pull To Refresh ui

A list that reloads when it is pulled down from the top, the way a native app does, plus a Refresh button that always does the same job. The indicator follows …

npx shadcn@latest add https://pulld.pages.dev/r/pull-to-refresh.json
Sticky Table Header ui

Keeps a long table's header row visible while the rows scroll, and freezes up to three leading columns while it scrolls sideways — Excel's freeze panes, for an…

npx shadcn@latest add https://pulld.pages.dev/r/sticky-table-header.json
Paste Area ui

A region that takes whatever is on the clipboard — a screenshot, an image, a file, a table copied out of a spreadsheet, or plain text — and hands it over as ty…

npx shadcn@latest add https://pulld.pages.dev/r/paste-area.json
Swipe Actions ui

A list row that slides sideways under a thumb to reveal what can be done to it — archive, delete, mark read, pin, snooze — with a button on the row that reveal…

npx shadcn@latest add https://pulld.pages.dev/r/swipe-actions.json
Shortcut Recorder ui

The settings field that records a keyboard shortcut: the user presses the combination they want and it is captured as a value you can store. Use it on a keyboa…

npx shadcn@latest add https://pulld.pages.dev/r/shortcut-recorder.json
Audio Recorder ui

A voice-note recorder: press to record, watch the input level move while it does, stop, play it back, and get a Blob you can upload — and, the part every hand-…

npx shadcn@latest add https://pulld.pages.dev/r/audio-recorder.json
Nested Checkbox ui

The checkbox list with parents and children that agree with each other: tick every child and the parent fills in, tick the parent and the whole branch follows,…

npx shadcn@latest add https://pulld.pages.dev/r/nested-checkbox.json
Drag Select ui

Rubber-band selection: drag from the empty space around a list, a grid or a board and everything the rectangle touches is selected, with the container scrollin…

npx shadcn@latest add https://pulld.pages.dev/r/drag-select.json
JSON Input ui

A textarea for editing JSON by hand that says exactly where the mistake is — line, column and a caret you can jump to. Reach for it wherever a page has to let …

npx shadcn@latest add https://pulld.pages.dev/r/json-input.json
Column Resizer ui

Drag the line between two column headings to set that column's width, in a <table> you already have — with the widths kept where you put them, a keyboard path …

npx shadcn@latest add https://pulld.pages.dev/r/column-resizer.json
Media Scrubber ui

The playback position bar for an <audio> or <video> element you already have — the filled progress, the buffered-ahead shading, a draggable thumb, keyboard see…

npx shadcn@latest add https://pulld.pages.dev/r/media-scrubber.json
Table Row Expander ui

Opens one row of a table and slides the detail for that row in underneath it, spanning the full width of the table. Reach for it wherever a row is a summary of…

npx shadcn@latest add https://pulld.pages.dev/r/table-row-expander.json
Number Range Input ui

Two number boxes that behave as one field: a low end, a high end, and a single verdict over the pair. Reach for it wherever a page asks for "from X to Y" in nu…

npx shadcn@latest add https://pulld.pages.dev/r/number-range-input.json
Split Button ui

One default action with its variants folded under the arrow beside it: a wide button that does the obvious thing, and a narrow one next to it that opens a menu…

npx shadcn@latest add https://pulld.pages.dev/r/split-button.json
Repeatable Fields ui

A set of identical field rows with an "add another" button under them and a remove button on each: the caller renders one row's fields, this owns the list, the…

npx shadcn@latest add https://pulld.pages.dev/r/repeatable-fields.json
Transfer List ui

Two lists side by side and the controls that move rows between them — the dual-listbox or "pick list" pattern: what is available on the left, what has been cho…

npx shadcn@latest add https://pulld.pages.dev/r/transfer-list.json
Toolbar Overflow ui

A row of controls that folds whatever will not fit into a menu at its end — the pattern usually called priority+. Reach for it wherever a row of buttons has to…

npx shadcn@latest add https://pulld.pages.dev/r/toolbar-overflow.json
Overflow Tooltip ui

Text that reveals itself in a tooltip only when it is actually cut off — measured, not guessed. Reach for it wherever a string has to fit a box somebody else s…

npx shadcn@latest add https://pulld.pages.dev/r/overflow-tooltip.json
Breadcrumb Overflow ui

A breadcrumb trail that measures itself and folds its middle into a menu when the row runs out of width, keeping the root you came from and the page you are on…

npx shadcn@latest add https://pulld.pages.dev/r/breadcrumb-overflow.json
Tab Scroller ui

A horizontally scrolling strip for a row of tabs that does not fit, which keeps the selected tab in view and puts an arrow at each end while there is more that…

npx shadcn@latest add https://pulld.pages.dev/r/tab-scroller.json
Draft Restore ui

The "you have an unsent draft — restore it?" notice that belongs above a form, and the localStorage bookkeeping behind it: it keeps what is being typed, offers…

npx shadcn@latest add https://pulld.pages.dev/r/draft-restore.json
Install Prompt ui

An install button for a web app that appears only when there is genuinely something to install, and knows the difference between an app that cannot be installe…

npx shadcn@latest add https://pulld.pages.dev/r/install-prompt.json
Animated Number ui

A number that counts to its value instead of appearing at it, for a figure meant to be looked at: a dashboard KPI or metric tile, a results, votes, signups, do…

npx shadcn@latest add https://pulld.pages.dev/r/animated-number.json
Error Boundary ui

Catches a render error from anywhere below it and shows a fallback in place of that part of the page, instead of letting React take the whole application down …

npx shadcn@latest add https://pulld.pages.dev/r/error-boundary.json
Lazy Image ui

An <img> wrapper that holds its place in the layout from the first frame and defers its own fetch, for a page with more pictures than the screen: an article bo…

npx shadcn@latest add https://pulld.pages.dev/r/lazy-image.json
Selection Toolbar ui

A small toolbar that appears over text the moment it is selected, carrying your own actions: quote, copy, highlight, share, comment, define, translate, or "ask…

npx shadcn@latest add https://pulld.pages.dev/r/selection-toolbar.json
Read Aloud ui

A listen button that reads a passage aloud one sentence at a time, and reports only what the speech engine has actually confirmed. Reach for it wherever there …

npx shadcn@latest add https://pulld.pages.dev/r/read-aloud.json
Tab Title Badge ui

A tab-title badge: it puts "(3)" in front of the page title while the reader is in another tab, takes it back off the moment they return, and never steals the …

npx shadcn@latest add https://pulld.pages.dev/r/tab-title-badge.json