---
name: "@stealth"
slug: "stealth"
description: "Components that feel alive. A micro-interaction-rich React library: rich motion on every interaction, production-ready with full keyboard, screen reader and reduced-motion support."
category: "Animated components"
tags: ["accessibility", "animation", "auth", "buttons", "cards", "editor", "forms", "hooks", "icons", "loaders", "media", "navigation", "onboarding", "overlays", "pro-available"]
framework: "react"
license: null
author: null
website: "https://www.stealth.pm/ui"
github: null
registry: "https://www.stealth.pm/r/registry.json"
pro: true
pro_url: "https://www.stealth.pm/ui/pricing-table"
github_stars: null
component_count: 250
generated_at: "2026-10-10T06:32:55.998Z"
---

# @stealth

Components that feel alive. A micro-interaction-rich React library: rich motion on every interaction, production-ready with full keyboard, screen reader and reduced-motion support.

## Links

- Website: https://www.stealth.pm/ui
- Registry JSON: https://www.stealth.pm/r/registry.json
- Directory page: https://sh4dcn.vercel.app/registry/stealth
- This file: https://sh4dcn.vercel.app/md/stealth.md
- Pro / pricing: https://www.stealth.pm/ui/pricing-table

## Install

```sh
# add the whole registry (shadcn CLI)
npx shadcn@latest add https://www.stealth.pm/r/registry.json
pnpm dlx shadcn@latest add https://www.stealth.pm/r/registry.json
bunx shadcn@latest add https://www.stealth.pm/r/registry.json
# fetch the raw registry index
curl -s https://www.stealth.pm/r/registry.json
```

## Components (250)

| name | type | description | install |
| --- | --- | --- | --- |
| cn | registry:lib | — | `npx shadcn@latest add https://www.stealth.pm/r/cn.json` |
| icons | registry:lib | — | `npx shadcn@latest add https://www.stealth.pm/r/icons.json` |
| motion | registry:lib | — | `npx shadcn@latest add https://www.stealth.pm/r/motion.json` |
| use-controllable-state | registry:lib | — | `npx shadcn@latest add https://www.stealth.pm/r/use-controllable-state.json` |
| tokens | registry:file | — | `npx shadcn@latest add https://www.stealth.pm/r/tokens.json` |
| async-button | registry:ui | Tracks the promise it starts: busy, tick or retry, without ever changing width. | `npx shadcn@latest add https://www.stealth.pm/r/async-button.json` |
| button | registry:ui | Four variants, three sizes, and a loading state that never changes width. | `npx shadcn@latest add https://www.stealth.pm/r/button.json` |
| button-group | registry:ui | Attached buttons with hairlines between and one hover wash that glides. | `npx shadcn@latest add https://www.stealth.pm/r/button-group.json` |
| copy-button | registry:ui | Copies on press, draws a tick, holds its width and reverts on its own. | `npx shadcn@latest add https://www.stealth.pm/r/copy-button.json` |
| hold-to-confirm | registry:ui | Press and hold to commit; the label flips color under the filling edge. | `npx shadcn@latest add https://www.stealth.pm/r/hold-to-confirm.json` |
| icon-button | registry:ui | Square button with a required label, warm tooltips and a sprung squash. | `npx shadcn@latest add https://www.stealth.pm/r/icon-button.json` |
| like-button | registry:ui | Optimistic like with a squash-and-stretch heart, rolling count and honest rollback. | `npx shadcn@latest add https://www.stealth.pm/r/like-button.json` |
| speed-dial | registry:ui | A floating button that fans out labeled actions, nearest first, on a spring. | `npx shadcn@latest add https://www.stealth.pm/r/speed-dial.json` |
| split-button | registry:ui | Main action plus a chevron menu; the choice can become the main action. | `npx shadcn@latest add https://www.stealth.pm/r/split-button.json` |
| toggle-button | registry:ui | Stays on with aria-pressed, and its icon morphs: fills, pins, mutes. | `npx shadcn@latest add https://www.stealth.pm/r/toggle-button.json` |
| toggle-group | registry:ui | Single or multiple toggles; one wash slides, neighboring washes join. | `npx shadcn@latest add https://www.stealth.pm/r/toggle-group.json` |
| two-step-confirm | registry:ui | Asks once in place, springs to fit the question, then quietly takes it back. | `npx shadcn@latest add https://www.stealth.pm/r/two-step-confirm.json` |
| floating-label | registry:ui | Label rests inside as the placeholder and floats up on focus, value or autofill. | `npx shadcn@latest add https://www.stealth.pm/r/floating-label.json` |
| inline-edit | registry:ui | Text that becomes an input in place, saves optimistically, then draws a tick. | `npx shadcn@latest add https://www.stealth.pm/r/inline-edit.json` |
| input | registry:ui | Text field with prefix and suffix slots, a clear that fades in, and Field-aware invalid state. | `npx shadcn@latest add https://www.stealth.pm/r/input.json` |
| masked-input | registry:ui | Formats cards, phones, dates and money as you type, caret held in place. | `npx shadcn@latest add https://www.stealth.pm/r/masked-input.json` |
| mention-input | registry:ui | A textarea where @ suggests people at the caret and names become tokens. | `npx shadcn@latest add https://www.stealth.pm/r/mention-input.json` |
| number-field | registry:ui | Steppers you can hold, a label you can drag, digits that roll into place. | `npx shadcn@latest add https://www.stealth.pm/r/number-field.json` |
| otp-field | registry:ui | Six cells that take paste and autofill, ripple while checking, clear on failure. | `npx shadcn@latest add https://www.stealth.pm/r/otp-field.json` |
| password-field | registry:ui | Reveals with an eye that slashes itself, keeps the caret, warns on Caps Lock. | `npx shadcn@latest add https://www.stealth.pm/r/password-field.json` |
| password-strength | registry:ui | Four bars that fill in order, a checklist that ticks, a settled announcement. | `npx shadcn@latest add https://www.stealth.pm/r/password-strength.json` |
| search-field | registry:ui | Search box whose shortcut hint turns into a clear, with a patient spinner. | `npx shadcn@latest add https://www.stealth.pm/r/search-field.json` |
| tag-input | registry:ui | Chips from Enter, comma or paste; duplicates flash the one already there. | `npx shadcn@latest add https://www.stealth.pm/r/tag-input.json` |
| textarea | registry:ui | Grows with its text between row limits, counts near the limit, sends on ⌘↵. | `npx shadcn@latest add https://www.stealth.pm/r/textarea.json` |
| checkbox | registry:ui | Draws its tick, bends it into a dash when mixed, squashes on press. | `npx shadcn@latest add https://www.stealth.pm/r/checkbox.json` |
| checkbox-card | registry:ui | Selectable cards whose corner check pops in, with a select-all that counts. | `npx shadcn@latest add https://www.stealth.pm/r/checkbox-card.json` |
| checklist | registry:ui | Tasks that strike through, then glide into Completed, with a rolling count. | `npx shadcn@latest add https://www.stealth.pm/r/checklist.json` |
| choice-chips | registry:ui | Filter chips whose check grows the chip open, with rolling counts and clear. | `npx shadcn@latest add https://www.stealth.pm/r/choice-chips.json` |
| color-swatches | registry:ui | Swatch radio group with a ring that grows out and a contrast-aware check. | `npx shadcn@latest add https://www.stealth.pm/r/color-swatches.json` |
| radio-card | registry:ui | Plan-style cards where one selection ring slides to whichever you choose. | `npx shadcn@latest add https://www.stealth.pm/r/radio-card.json` |
| radio-group | registry:ui | One choice from a few, with a dot that springs in and arrow-key roving. | `npx shadcn@latest add https://www.stealth.pm/r/radio-group.json` |
| rating | registry:ui | Star rating with hover preview, half steps, scrubbing and a pop on commit. | `npx shadcn@latest add https://www.stealth.pm/r/rating.json` |
| segmented-control | registry:ui | One pill that springs between segments, with radio semantics and arrow keys. | `npx shadcn@latest add https://www.stealth.pm/r/segmented-control.json` |
| switch | registry:ui | Sprung thumb that stretches while held, and waits on async saves in place. | `npx shadcn@latest add https://www.stealth.pm/r/switch.json` |
| thumbs-feedback | registry:ui | Helpful or not, with reasons on a thumbs down and a drawn thanks. | `npx shadcn@latest add https://www.stealth.pm/r/thumbs-feedback.json` |
| detent-slider | registry:ui | Named stops you can feel: resists near each one, springs into place. | `npx shadcn@latest add https://www.stealth.pm/r/detent-slider.json` |
| dial | registry:ui | Rotary knob with drag, wheel and keys, a bipolar arc and rolling readout. | `npx shadcn@latest add https://www.stealth.pm/r/dial.json` |
| histogram-range | registry:ui | Price filter whose bars light up exactly between the thumbs as they move. | `npx shadcn@latest add https://www.stealth.pm/r/histogram-range.json` |
| media-scrubber | registry:ui | Seek bar with chapters, buffered ranges and a time tip that tracks the pointer. | `npx shadcn@latest add https://www.stealth.pm/r/media-scrubber.json` |
| range-slider | registry:ui | Two thumbs whose labels merge when close, synced with typed min and max. | `npx shadcn@latest add https://www.stealth.pm/r/range-slider.json` |
| slider | registry:ui | Thumb swells on grab, value rides above it, pressed track glides. | `npx shadcn@latest add https://www.stealth.pm/r/slider.json` |
| volume-control | registry:ui | Speaker waves follow the level; mute remembers, wheel nudges, popover tucks away. | `npx shadcn@latest add https://www.stealth.pm/r/volume-control.json` |
| zoom-control | registry:ui | Minus, rolling percentage and plus, with a type-or-pick menu and pinch zoom. | `npx shadcn@latest add https://www.stealth.pm/r/zoom-control.json` |
| async-combobox | registry:ui | Remote search that debounces, aborts stale requests and never jolts the list. | `npx shadcn@latest add https://www.stealth.pm/r/async-combobox.json` |
| cascader | registry:ui | Nested columns that grow in beside each other, with search across every path. | `npx shadcn@latest add https://www.stealth.pm/r/cascader.json` |
| color-picker | registry:ui | Drag, type or sample a color; hue survives grays and recents remember. | `npx shadcn@latest add https://www.stealth.pm/r/color-picker.json` |
| combobox | registry:ui | Filters as you type, sets the matched run in bold and creates what’s missing. | `npx shadcn@latest add https://www.stealth.pm/r/combobox.json` |
| emoji-picker | registry:ui | Search-first emoji grid with arrow keys, skin tones and categories that follow the scroll. | `npx shadcn@latest add https://www.stealth.pm/r/emoji-picker.json` |
| listbox | registry:ui | An inline list where the choice slides between rows and picks merge into blocks. | `npx shadcn@latest add https://www.stealth.pm/r/listbox.json` |
| multi-select | registry:ui | Chips that fit the field with a rolling +N, search, select all and clear. | `npx shadcn@latest add https://www.stealth.pm/r/multi-select.json` |
| phone-field | registry:ui | Formats as you type for the chosen country, and reads it from pasted numbers. | `npx shadcn@latest add https://www.stealth.pm/r/phone-field.json` |
| select | registry:ui | Opens over its trigger with the choice aligned, and the new value slides in from where it was picked. | `npx shadcn@latest add https://www.stealth.pm/r/select.json` |
| transfer-list | registry:ui | Two filterable lists where checked rows fly across and land highlighted. | `npx shadcn@latest add https://www.stealth.pm/r/transfer-list.json` |
| calendar | registry:ui | Locale-true month grid that slides the way you travel and sweeps ranges in. | `npx shadcn@latest add https://www.stealth.pm/r/calendar.json` |
| countdown | registry:ui | Rolling-digit countdown that sleeps off screen and lands in an ended state. | `npx shadcn@latest add https://www.stealth.pm/r/countdown.json` |
| date-field | registry:ui | Typed date in the locale's order, with stepping digits and plain-word errors. | `npx shadcn@latest add https://www.stealth.pm/r/date-field.json` |
| date-picker | registry:ui | Type “next fri” or pick from the calendar; it reads back before committing. | `npx shadcn@latest add https://www.stealth.pm/r/date-picker.json` |
| date-range-picker | registry:ui | Two months, presets that sweep the range in, and a draft until Apply. | `npx shadcn@latest add https://www.stealth.pm/r/date-range-picker.json` |
| relative-time | registry:ui | “3 minutes ago” that wakes only when its words change, digits rolling. | `npx shadcn@latest add https://www.stealth.pm/r/relative-time.json` |
| time-picker | registry:ui | Segmented time field in the locale's order, with rolling digits and a slot list. | `npx shadcn@latest add https://www.stealth.pm/r/time-picker.json` |
| week-strip | registry:ui | Phone-style day selector with a sprung pill, swipeable weeks and event dots. | `npx shadcn@latest add https://www.stealth.pm/r/week-strip.json` |
| agenda | registry:ui | Upcoming events by day with a Now line and a Join that counts down. | `npx shadcn@latest add https://www.stealth.pm/r/agenda.json` |
| availability-editor | registry:ui | Weekly hours with split shifts, copy to other days and overlap checks. | `npx shadcn@latest add https://www.stealth.pm/r/availability-editor.json` |
| booking-slots | registry:ui | Pick a day, then a time that splits in place to reveal Confirm. | `npx shadcn@latest add https://www.stealth.pm/r/booking-slots.json` |
| event-calendar | registry:ui | Month view that packs multi-day bars and chips into lanes, overflowing into a day list. | `npx shadcn@latest add https://www.stealth.pm/r/event-calendar.json` |
| timezone-select | registry:ui | Every IANA zone with live local time, searchable by city, name or offset. | `npx shadcn@latest add https://www.stealth.pm/r/timezone-select.json` |
| week-grid | registry:ui | Time grid where overlaps sit side by side and you drag to create, move or resize. | `npx shadcn@latest add https://www.stealth.pm/r/week-grid.json` |
| autosave-status | registry:ui | Saving, saved, offline and failed states in one pill that springs to fit. | `npx shadcn@latest add https://www.stealth.pm/r/autosave-status.json` |
| avatar-upload | registry:ui | Pick, crop and zoom a photo, then watch a ring close around it. | `npx shadcn@latest add https://www.stealth.pm/r/avatar-upload.json` |
| char-limit-ring | registry:ui | A tiny ring that fills as you type, then counts down and over. | `npx shadcn@latest add https://www.stealth.pm/r/char-limit-ring.json` |
| dropzone | registry:ui | Lights up when files cross the window, seals its dashes, names every rejection. | `npx shadcn@latest add https://www.stealth.pm/r/dropzone.json` |
| error-summary | registry:ui | Lists every problem on submit, links to each field, and thins out as you fix. | `npx shadcn@latest add https://www.stealth.pm/r/error-summary.json` |
| field | registry:ui | Label, control, hint and error that speak up on blur, not on every keystroke. | `npx shadcn@latest add https://www.stealth.pm/r/field.json` |
| inline-validation | registry:ui | Async checks that spin, then draw a tick or strike a cross, without flicker. | `npx shadcn@latest add https://www.stealth.pm/r/inline-validation.json` |
| multi-step-form | registry:ui | Steps slide the way you travel, validate one at a time, and keep every answer. | `npx shadcn@latest add https://www.stealth.pm/r/multi-step-form.json` |
| save-bar | registry:ui | Rises when a form is dirty, nudges before you leave, ticks once saved. | `npx shadcn@latest add https://www.stealth.pm/r/save-bar.json` |
| signature-pad | registry:ui | Smooth, speed-weighted ink with undo, a typed alternative and trimmed PNG/SVG export. | `npx shadcn@latest add https://www.stealth.pm/r/signature-pad.json` |
| upload-list | registry:ui | Per-file progress with smoothed speed and time left, retry, and a tick on finish. | `npx shadcn@latest add https://www.stealth.pm/r/upload-list.json` |
| empty-state | registry:ui | One line, one reason, one action, with an icon that draws itself in. | `npx shadcn@latest add https://www.stealth.pm/r/empty-state.json` |
| error-state | registry:ui | Says what failed and what to do, retries in place, counts every attempt. | `npx shadcn@latest add https://www.stealth.pm/r/error-state.json` |
| infinite-list | registry:ui | A scrolling feed that prefetches pages under skeletons and recovers from failures. | `npx shadcn@latest add https://www.stealth.pm/r/infinite-list.json` |
| load-more | registry:ui | Appends the next page with a stagger, moves focus and never jumps. | `npx shadcn@latest add https://www.stealth.pm/r/load-more.json` |
| progress-bar | registry:ui | Rolling percentage, buffer, stepped segments and a tick that draws on completion. | `npx shadcn@latest add https://www.stealth.pm/r/progress-bar.json` |
| progress-ring | registry:ui | Circular progress with a rolling percentage that closes into a drawn tick. | `npx shadcn@latest add https://www.stealth.pm/r/progress-ring.json` |
| pull-to-refresh | registry:ui | Rubber-band pull with a filling ring, a flipping arrow and a sprung return. | `npx shadcn@latest add https://www.stealth.pm/r/pull-to-refresh.json` |
| skeleton | registry:ui | Bones sized to your text’s line box, lit by one shared slow sweep. | `npx shadcn@latest add https://www.stealth.pm/r/skeleton.json` |
| skeleton-swap | registry:ui | Skeleton to content with a 4px settle and clearing blur, never a flash. | `npx shadcn@latest add https://www.stealth.pm/r/skeleton-swap.json` |
| spinner | registry:ui | Arc, dots and pixel-grid spinners drawn on the icon grid, so they swap for icons. | `npx shadcn@latest add https://www.stealth.pm/r/spinner.json` |
| task-steps | registry:ui | Stages of a long job with live timers, drawn checks and a filling rail. | `npx shadcn@latest add https://www.stealth.pm/r/task-steps.json` |
| top-loader | registry:ui | A thin page bar that trickles, finishes fast and fades; skips fast loads. | `npx shadcn@latest add https://www.stealth.pm/r/top-loader.json` |
| announcement-bar | registry:ui | Slim top bar that rotates messages, holds while read and can be paused. | `npx shadcn@latest add https://www.stealth.pm/r/announcement-bar.json` |
| banner | registry:ui | Region-wide notice that collapses smoothly when dismissed and can remember it. | `npx shadcn@latest add https://www.stealth.pm/r/banner.json` |
| callout | registry:ui | Inline note, tip, warning or danger block with details that unfold in place. | `npx shadcn@latest add https://www.stealth.pm/r/callout.json` |
| connection-status | registry:ui | Offline, reconnecting and back-online in one pill that morphs between them. | `npx shadcn@latest add https://www.stealth.pm/r/connection-status.json` |
| cookie-consent | registry:ui | Compact consent card with equal choices and categories that unfold in place. | `npx shadcn@latest add https://www.stealth.pm/r/cookie-consent.json` |
| count-badge | registry:ui | A count that rolls its digits, pops when it rises and caps at 99+. | `npx shadcn@latest add https://www.stealth.pm/r/count-badge.json` |
| dynamic-island | registry:ui | A live-activity pill that springs open into controls and morphs between activities. | `npx shadcn@latest add https://www.stealth.pm/r/dynamic-island.json` |
| new-items-pill | registry:ui | Holds new feed items behind a rolling count until the reader asks for them. | `npx shadcn@latest add https://www.stealth.pm/r/new-items-pill.json` |
| notification-inbox | registry:ui | A bell that rings on arrival and opens a grouped, keyboard-driven inbox with undo. | `npx shadcn@latest add https://www.stealth.pm/r/notification-inbox.json` |
| promise-toast | registry:ui | One toast follows async work: spinner, live progress, then a tick drawn in place. | `npx shadcn@latest add https://www.stealth.pm/r/promise-toast.json` |
| status-dot | registry:ui | Presence dot whose shape morphs between states, so color is never the only signal. | `npx shadcn@latest add https://www.stealth.pm/r/status-dot.json` |
| toast | registry:ui | Stacked toasts that fan out on hover, swipe away and update in place. | `npx shadcn@latest add https://www.stealth.pm/r/toast.json` |
| alert-dialog | registry:ui | Destructive confirm that holds open while it works and explains failures in place. | `npx shadcn@latest add https://www.stealth.pm/r/alert-dialog.json` |
| bottom-sheet | registry:ui | Drag between peek, half and full; the list scrolls only once it's open. | `npx shadcn@latest add https://www.stealth.pm/r/bottom-sheet.json` |
| dialog | registry:ui | Rises from .97 on the expo curve, scrolls inside with edge hairlines, nudges when refused. | `npx shadcn@latest add https://www.stealth.pm/r/dialog.json` |
| hover-card | registry:ui | Profile and link previews that prefetch on intent and draw the wait. | `npx shadcn@latest add https://www.stealth.pm/r/hover-card.json` |
| morph-dialog | registry:ui | A card that opens into its dialog and folds back into the grid. | `npx shadcn@latest add https://www.stealth.pm/r/morph-dialog.json` |
| morph-popover | registry:ui | A button that grows into its own form and folds back into a tick. | `npx shadcn@latest add https://www.stealth.pm/r/morph-popover.json` |
| popover | registry:ui | Grows out of its trigger along a seamless arrow, flips at edges, opens on hover. | `npx shadcn@latest add https://www.stealth.pm/r/popover.json` |
| sheet | registry:ui | Side panel on the drawer curve that swipes away and resizes with give. | `npx shadcn@latest add https://www.stealth.pm/r/sheet.json` |
| stacked-dialog | registry:ui | Each dialog opened from another pushes it back, dimmed, with a way back. | `npx shadcn@latest add https://www.stealth.pm/r/stacked-dialog.json` |
| action-sheet | registry:ui | Rises from the bottom, swipes away, and holds for slow actions. | `npx shadcn@latest add https://www.stealth.pm/r/action-sheet.json` |
| context-menu | registry:ui | Opens at the pointer on right-click, long-press or Shift+F10. | `npx shadcn@latest add https://www.stealth.pm/r/context-menu.json` |
| dropdown-menu | registry:ui | Grows from its trigger, with one highlight that glides after the pointer. | `npx shadcn@latest add https://www.stealth.pm/r/dropdown-menu.json` |
| menubar | registry:ui | File, Edit, View menus with one pill that slides between them. | `npx shadcn@latest add https://www.stealth.pm/r/menubar.json` |
| overflow-menu | registry:ui | Folds the least important controls into More as it narrows, by priority. | `npx shadcn@latest add https://www.stealth.pm/r/overflow-menu.json` |
| popconfirm | registry:ui | Asks where you pressed, starts on Cancel, and waits out async confirms. | `npx shadcn@latest add https://www.stealth.pm/r/popconfirm.json` |
| row-actions | registry:ui | Quick actions slide in over the row's meta, the rest wait in a menu. | `npx shadcn@latest add https://www.stealth.pm/r/row-actions.json` |
| selection-toolbar | registry:ui | Rises over selected text, glides as it changes, and morphs into a link field. | `npx shadcn@latest add https://www.stealth.pm/r/selection-toolbar.json` |
| tooltip | registry:ui | Waits once, then answers neighbors instantly, or glides one tooltip along a toolbar. | `npx shadcn@latest add https://www.stealth.pm/r/tooltip.json` |
| active-filters | registry:ui | Applied filters as removable chips that close ranks, fold to +N and undo. | `npx shadcn@latest add https://www.stealth.pm/r/active-filters.json` |
| command-pages | registry:ui | Palette pages that slide in, land on the current choice and remember the way back. | `npx shadcn@latest add https://www.stealth.pm/r/command-pages.json` |
| command-palette | registry:ui | ⌘K opens it on the same frame, ranks matches and runs async commands in place. | `npx shadcn@latest add https://www.stealth.pm/r/command-palette.json` |
| faceted-filter | registry:ui | A filter button whose searchable popover ticks values, counts roll, chips collapse to +N. | `npx shadcn@latest add https://www.stealth.pm/r/faceted-filter.json` |
| filter-builder | registry:ui | Filters written as sentences, each word a dropdown, with an all-or-any switch. | `npx shadcn@latest add https://www.stealth.pm/r/filter-builder.json` |
| highlight-match | registry:ui | Marks what matched in search results, accent-blind, with fuzzy mode and snippets. | `npx shadcn@latest add https://www.stealth.pm/r/highlight-match.json` |
| kbd | registry:ui | Keys written for the reader's platform that press down with the real ones. | `npx shadcn@latest add https://www.stealth.pm/r/kbd.json` |
| scoped-search | registry:ui | A search field where from: and in: become tokens with value suggestions. | `npx shadcn@latest add https://www.stealth.pm/r/scoped-search.json` |
| search-dialog | registry:ui | Async search with filter counts that roll, a live preview and stale-safe loading. | `npx shadcn@latest add https://www.stealth.pm/r/search-dialog.json` |
| shortcuts-sheet | registry:ui | Press ? for every shortcut; press any shortcut and its row lights up. | `npx shadcn@latest add https://www.stealth.pm/r/shortcuts-sheet.json` |
| animated-link | registry:ui | Inline link whose underline draws in, retracts ahead and rewinds when interrupted. | `npx shadcn@latest add https://www.stealth.pm/r/animated-link.json` |
| breadcrumbs | registry:ui | A trail that folds its middle into a menu to fit its width. | `npx shadcn@latest add https://www.stealth.pm/r/breadcrumbs.json` |
| page-dots | registry:ui | Carousel dots whose active pill stretches, fills with autoplay time and scrolls when long. | `npx shadcn@latest add https://www.stealth.pm/r/page-dots.json` |
| pagination | registry:ui | Numbered pages with a sliding pill, a rolling range and a steady width. | `npx shadcn@latest add https://www.stealth.pm/r/pagination.json` |
| stepper | registry:ui | Wizard steps whose numbers draw into ticks as the rail fills. | `npx shadcn@latest add https://www.stealth.pm/r/stepper.json` |
| sub-nav | registry:ui | Scrolling link strip with a gliding hover pill, edge fades and arrows. | `npx shadcn@latest add https://www.stealth.pm/r/sub-nav.json` |
| tabs | registry:ui | Sliding underline or pill, panels that crossfade and glide to height. | `npx shadcn@latest add https://www.stealth.pm/r/tabs.json` |
| toc | registry:ui | Scroll-spy contents whose rail steps with nesting and fills as you read. | `npx shadcn@latest add https://www.stealth.pm/r/toc.json` |
| tree-view | registry:ui | A file tree that opens by height, lights its branch and types ahead. | `npx shadcn@latest add https://www.stealth.pm/r/tree-view.json` |
| vertical-tabs | registry:ui | Settings-style side list with a gliding highlight that folds into a select. | `npx shadcn@latest add https://www.stealth.pm/r/vertical-tabs.json` |
| icon-rail | registry:ui | Sidebar that folds to icons in place, with tooltips only when narrow. | `npx shadcn@latest add https://www.stealth.pm/r/icon-rail.json` |
| mega-menu | registry:ui | Site menu with one panel that morphs between triggers and slides content. | `npx shadcn@latest add https://www.stealth.pm/r/mega-menu.json` |
| mobile-menu | registry:ui | Phone menu whose burger turns into the close, with sections that drill in. | `npx shadcn@latest add https://www.stealth.pm/r/mobile-menu.json` |
| navbar | registry:ui | Top bar that compacts on scroll while a pill follows the pointer home. | `npx shadcn@latest add https://www.stealth.pm/r/navbar.json` |
| path-switcher | registry:ui | Team / project breadcrumb where every step is a searchable switcher that eases. | `npx shadcn@latest add https://www.stealth.pm/r/path-switcher.json` |
| resizable-panels | registry:ui | Split panes that drag, resist at their limits and spring shut on double-click. | `npx shadcn@latest add https://www.stealth.pm/r/resizable-panels.json` |
| sidebar | registry:ui | App sidebar whose active pill springs between rows and whose counts roll. | `npx shadcn@latest add https://www.stealth.pm/r/sidebar.json` |
| tab-bar | registry:ui | Phone bottom navigation whose icons fill when active, with rolling badge counts. | `npx shadcn@latest add https://www.stealth.pm/r/tab-bar.json` |
| user-menu | registry:ui | Avatar menu with presence, a sliding theme control and a sign-out that waits. | `npx shadcn@latest add https://www.stealth.pm/r/user-menu.json` |
| workspace-switcher | registry:ui | Searchable workspace menu with number shortcuts, pending switches and a rolling trigger. | `npx shadcn@latest add https://www.stealth.pm/r/workspace-switcher.json` |
| accordion | registry:ui | Stacked sections that grow to fit, with answers find-in-page can still reach. | `npx shadcn@latest add https://www.stealth.pm/r/accordion.json` |
| collapsible | registry:ui | One section that folds away, plus a Show 3 more list that cascades in. | `npx shadcn@latest add https://www.stealth.pm/r/collapsible.json` |
| expandable-card | registry:ui | Cards that open in place to show details while the others make room. | `npx shadcn@latest add https://www.stealth.pm/r/expandable-card.json` |
| interactive-card | registry:ui | The whole card is one link, while buttons inside still get their own clicks. | `npx shadcn@latest add https://www.stealth.pm/r/interactive-card.json` |
| scroll-area | registry:ui | Native scrolling with thin overlay bars and edges that fade in as you scroll. | `npx shadcn@latest add https://www.stealth.pm/r/scroll-area.json` |
| show-more | registry:ui | Clamps long text with a fading last line, offering more only when it overflows. | `npx shadcn@latest add https://www.stealth.pm/r/show-more.json` |
| back-to-top | registry:ui | Arrives after a screen, rings with progress, and hands focus back at the top. | `npx shadcn@latest add https://www.stealth.pm/r/back-to-top.json` |
| hide-on-scroll | registry:ui | Steps aside while you read down, returns on a deliberate scroll up. | `npx shadcn@latest add https://www.stealth.pm/r/hide-on-scroll.json` |
| overflow-scroller | registry:ui | A horizontal row whose edge fades and arrows appear only where content hides. | `npx shadcn@latest add https://www.stealth.pm/r/overflow-scroller.json` |
| reading-progress | registry:ui | Tracks the article, not the page, and counts the minutes down. | `npx shadcn@latest add https://www.stealth.pm/r/reading-progress.json` |
| scroll-reveal | registry:ui | Reveals children once as they scroll in, with a capped stagger that never replays. | `npx shadcn@latest add https://www.stealth.pm/r/scroll-reveal.json` |
| scroll-shadow | registry:ui | Shades only the edges with more to scroll, tied to the scroll itself. | `npx shadcn@latest add https://www.stealth.pm/r/scroll-shadow.json` |
| snap-carousel | registry:ui | Native scroll-snap carousel with sprung paging, mouse drag and dots that follow the scroll. | `npx shadcn@latest add https://www.stealth.pm/r/snap-carousel.json` |
| stacking-cards | registry:ui | Cards that stick and stack as you scroll, the ones behind shrinking and dimming. | `npx shadcn@latest add https://www.stealth.pm/r/stacking-cards.json` |
| sticky-header | registry:ui | Invisible at rest, gains its edge and blur once content slides beneath. | `npx shadcn@latest add https://www.stealth.pm/r/sticky-header.json` |
| virtual-list | registry:ui | A windowed listbox for 10,000 rows with measured heights and sticky group headers. | `npx shadcn@latest add https://www.stealth.pm/r/virtual-list.json` |
| column-manager | registry:ui | Show, hide and drag columns into order while the table rearranges live. | `npx shadcn@latest add https://www.stealth.pm/r/column-manager.json` |
| editable-cells | registry:ui | Spreadsheet cells that edit in place, validate per cell and flash when saved. | `npx shadcn@latest add https://www.stealth.pm/r/editable-cells.json` |
| expandable-rows | registry:ui | Rows open a detail panel that grows from beneath them and scrolls itself into view. | `npx shadcn@latest add https://www.stealth.pm/r/expandable-rows.json` |
| filter-grid | registry:ui | Card grid filtered by chips and search that reflows instead of reshuffling. | `npx shadcn@latest add https://www.stealth.pm/r/filter-grid.json` |
| key-value-list | registry:ui | Details-panel pairs with copy, in-place edit and a wash that marks what changed. | `npx shadcn@latest add https://www.stealth.pm/r/key-value-list.json` |
| row-selection | registry:ui | Shift-click ranges that tick in sequence, and a bulk bar that rises with a rolling count. | `npx shadcn@latest add https://www.stealth.pm/r/row-selection.json` |
| sortable-table | registry:ui | Headers cycle through both directions and back, rows spring into their new order. | `npx shadcn@latest add https://www.stealth.pm/r/sortable-table.json` |
| sticky-columns | registry:ui | Pinned columns, header and totals whose edges shade only while something hides beneath. | `npx shadcn@latest add https://www.stealth.pm/r/sticky-columns.json` |
| table-pagination | registry:ui | Rows per page, rolling range, jump to page, and rows that crossfade the way you paged. | `npx shadcn@latest add https://www.stealth.pm/r/table-pagination.json` |
| table-toolbar | registry:ui | Search, filter, density, view and export in one arrow-key toolbar that reflows. | `npx shadcn@latest add https://www.stealth.pm/r/table-toolbar.json` |
| bar-chart | registry:ui | Columns or ranked rows that grow in, morph on change and glide a tooltip. | `npx shadcn@latest add https://www.stealth.pm/r/bar-chart.json` |
| contribution-graph | registry:ui | A year of daily activity as a keyboard-walkable heatmap with a gliding tooltip. | `npx shadcn@latest add https://www.stealth.pm/r/contribution-graph.json` |
| delta-badge | registry:ui | Signed change with one arrow that turns, tinted by whether the change is good. | `npx shadcn@latest add https://www.stealth.pm/r/delta-badge.json` |
| donut-chart | registry:ui | A gapped ring that sweeps in, lifts a segment and rolls its value. | `npx shadcn@latest add https://www.stealth.pm/r/donut-chart.json` |
| leaderboard | registry:ui | Ranked rows that spring into place, roll their scores and pin you. | `npx shadcn@latest add https://www.stealth.pm/r/leaderboard.json` |
| line-chart | registry:ui | Multi-series lines with a snapping crosshair, full readout and a toggling legend. | `npx shadcn@latest add https://www.stealth.pm/r/line-chart.json` |
| number-ticker | registry:ui | Rolls each digit toward its new value in the direction it moved, tinting briefly. | `npx shadcn@latest add https://www.stealth.pm/r/number-ticker.json` |
| poll-results | registry:ui | Tap to vote, then bars grow and counts roll up from zero. | `npx shadcn@latest add https://www.stealth.pm/r/poll-results.json` |
| sparkline | registry:ui | A tiny trend line that draws in once and scrubs to any point. | `npx shadcn@latest add https://www.stealth.pm/r/sparkline.json` |
| stat-tile | registry:ui | KPI card whose sparkline you scrub to roll the headline to any day. | `npx shadcn@latest add https://www.stealth.pm/r/stat-tile.json` |
| usage-meter | registry:ui | Quota bar split by category that warns near the limit and shows overage honestly. | `npx shadcn@latest add https://www.stealth.pm/r/usage-meter.json` |
| value-flash | registry:ui | Live value that washes green or red on each tick, throttled below three flashes a second. | `npx shadcn@latest add https://www.stealth.pm/r/value-flash.json` |
| avatar | registry:ui | Photo that fades in once loaded, initials that never flash, presence that morphs. | `npx shadcn@latest add https://www.stealth.pm/r/avatar.json` |
| avatar-group | registry:ui | Overlapping faces with true cutouts that fan apart and open the full list. | `npx shadcn@latest add https://www.stealth.pm/r/avatar-group.json` |
| badge | registry:ui | Status and count labels whose text, width and tone change in place. | `npx shadcn@latest add https://www.stealth.pm/r/badge.json` |
| entity-chip | registry:ui | Inline mention of a person, repo or issue with a lazy-loading hover card. | `npx shadcn@latest add https://www.stealth.pm/r/entity-chip.json` |
| heading-anchor | registry:ui | A heading whose # link copies the section URL, ticks and marks the section. | `npx shadcn@latest add https://www.stealth.pm/r/heading-anchor.json` |
| profile-card | registry:ui | A person with presence, local time and stats, and an optimistic follow that rolls back. | `npx shadcn@latest add https://www.stealth.pm/r/profile-card.json` |
| tag | registry:ui | Removable chips that fold away, close the gap and hand focus on. | `npx shadcn@latest add https://www.stealth.pm/r/tag.json` |
| timeline | registry:ui | Activity grouped by day on a rail, where new events grow in at the top. | `npx shadcn@latest add https://www.stealth.pm/r/timeline.json` |
| audio-player | registry:ui | Compact player whose waveform fills as it plays, with drag-to-seek and speed. | `npx shadcn@latest add https://www.stealth.pm/r/audio-player.json` |
| blur-up-image | registry:ui | Holds its space, then brings the full image into focus over a blurred preview. | `npx shadcn@latest add https://www.stealth.pm/r/blur-up-image.json` |
| file-thumbnail | registry:ui | File card by type that keeps the extension visible and shows upload progress. | `npx shadcn@latest add https://www.stealth.pm/r/file-thumbnail.json` |
| gallery-grid | registry:ui | Masonry photos that blur up, select like a photo app and glide when rearranged. | `npx shadcn@latest add https://www.stealth.pm/r/gallery-grid.json` |
| image-compare | registry:ui | A before-and-after divider that follows a drag and springs to a click. | `npx shadcn@latest add https://www.stealth.pm/r/image-compare.json` |
| image-cropper | registry:ui | Crop box with handles, aspect presets, zoom and rotate, exported to a Blob. | `npx shadcn@latest add https://www.stealth.pm/r/image-cropper.json` |
| lightbox | registry:ui | Photos lift out of their thumbnails, swipe between, zoom, and land back where they came from. | `npx shadcn@latest add https://www.stealth.pm/r/lightbox.json` |
| product-gallery | registry:ui | Product photos that crossfade on pick, swipe on touch and magnify under the mouse. | `npx shadcn@latest add https://www.stealth.pm/r/product-gallery.json` |
| video-player | registry:ui | Custom controls over native video, with chapters, subtitles and a morphing play button. | `npx shadcn@latest add https://www.stealth.pm/r/video-player.json` |
| voice-recorder | registry:ui | Records with live input levels, pauses, and plays back before you send. | `npx shadcn@latest add https://www.stealth.pm/r/voice-recorder.json` |
| zoom-pan-image | registry:ui | Pinch, wheel or double-click to zoom where you point, then throw it around. | `npx shadcn@latest add https://www.stealth.pm/r/zoom-pan-image.json` |
| highlight | registry:ui | A marker stroke drawn in reading order, carrying on across line breaks. | `npx shadcn@latest add https://www.stealth.pm/r/highlight.json` |
| link-preview | registry:ui | Unfurled link card and inline hover preview sharing one cached request. | `npx shadcn@latest add https://www.stealth.pm/r/link-preview.json` |
| marquee | registry:ui | Seamless infinite row that eases to a stop under the pointer. | `npx shadcn@latest add https://www.stealth.pm/r/marquee.json` |
| prose | registry:ui | Token-only typography for rendered rich text, with section links and code copy. | `npx shadcn@latest add https://www.stealth.pm/r/prose.json` |
| spoiler | registry:ui | Grain-and-blur cover that dissolves outward from where you press it. | `npx shadcn@latest add https://www.stealth.pm/r/spoiler.json` |
| text-morph | registry:ui | Shared letters slide into their new places while the width springs. | `npx shadcn@latest add https://www.stealth.pm/r/text-morph.json` |
| text-reveal | registry:ui | Words or wrapped lines lift out of a blur once, text left intact. | `npx shadcn@latest add https://www.stealth.pm/r/text-reveal.json` |
| text-scramble | registry:ui | Decodes left to right in fixed time, only where characters changed. | `npx shadcn@latest add https://www.stealth.pm/r/text-scramble.json` |
| truncate | registry:ui | Cuts text at the end or middle and unfolds it in place when cut. | `npx shadcn@latest add https://www.stealth.pm/r/truncate.json` |
| drag-select | registry:ui | Rubber-band selection that scrolls at the edges and honors Shift and ⌘. | `npx shadcn@latest add https://www.stealth.pm/r/drag-select.json` |
| drop-target | registry:ui | Targets say what they take, pull the item in and send refusals home. | `npx shadcn@latest add https://www.stealth.pm/r/drop-target.json` |
| kanban | registry:ui | Cards lean into the drag, land on an insertion line and move by menu too. | `npx shadcn@latest add https://www.stealth.pm/r/kanban.json` |
| long-press | registry:ui | Press and hold with a filling ring, right click and Shift F10 included. | `npx shadcn@latest add https://www.stealth.pm/r/long-press.json` |
| pan-zoom-canvas | registry:ui | An infinite dot-grid canvas that pans, pinches and zooms to the cursor. | `npx shadcn@latest add https://www.stealth.pm/r/pan-zoom-canvas.json` |
| reorder-list | registry:ui | Lifts on press, springs neighbors aside and reorders from the keyboard too. | `npx shadcn@latest add https://www.stealth.pm/r/reorder-list.json` |
| resizable-box | registry:ui | Eight handles, a live size readout, Shift for ratio, Alt from center. | `npx shadcn@latest add https://www.stealth.pm/r/resizable-box.json` |
| sortable-grid | registry:ui | Tiles lift off the grid, leave a slot behind and land where dropped. | `npx shadcn@latest add https://www.stealth.pm/r/sortable-grid.json` |
| swipe-actions | registry:ui | Swipe a row to reveal actions; swipe far and the tray fills to commit. | `npx shadcn@latest add https://www.stealth.pm/r/swipe-actions.json` |
| swipe-deck | registry:ui | A card stack you throw left or right, with undo and matching buttons. | `npx shadcn@latest add https://www.stealth.pm/r/swipe-deck.json` |
| activity-feed | registry:ui | A timeline of who did what, grouped by day, that holds your place as it updates. | `npx shadcn@latest add https://www.stealth.pm/r/activity-feed.json` |
| comment-composer | registry:ui | Grows on focus, @mentions teammates, sends on ⌘↵ and keeps the draft. | `npx shadcn@latest add https://www.stealth.pm/r/comment-composer.json` |
| comment-thread | registry:ui | Threaded comments that fold, resolve with a drawn tick and undo deletes. | `npx shadcn@latest add https://www.stealth.pm/r/comment-thread.json` |
| follow-button | registry:ui | Follow becomes Following with a drawn tick, offers Unfollow only when safe. | `npx shadcn@latest add https://www.stealth.pm/r/follow-button.json` |
| invite-field | registry:ui | Turns typed or pasted addresses into chips, flags bad ones, sends with a role. | `npx shadcn@latest add https://www.stealth.pm/r/invite-field.json` |
| live-cursors | registry:ui | Teammates' pointers glide between network updates; idle names tuck into initials. | `npx shadcn@latest add https://www.stealth.pm/r/live-cursors.json` |
| presence-stack | registry:ui | Live faces that slide in, ping once, fade out and roll the overflow count. | `npx shadcn@latest add https://www.stealth.pm/r/presence-stack.json` |
| reaction-bar | registry:ui | Emoji reactions that pop, roll their counts, say who, and roll back. | `npx shadcn@latest add https://www.stealth.pm/r/reaction-bar.json` |
| share-dialog | registry:ui | Invite by email, manage who has access and set link access in one place. | `npx shadcn@latest add https://www.stealth.pm/r/share-dialog.json` |
| typing-indicator | registry:ui | Who is typing, in words and a dot wave, opening its own height. | `npx shadcn@latest add https://www.stealth.pm/r/typing-indicator.json` |
| attachment-tray | registry:ui | Pending uploads that develop as they finish, retry in place and reorder. | `npx shadcn@latest add https://www.stealth.pm/r/attachment-tray.json` |
| chat-thread | registry:ui | Grouped bubbles with tails, pinned to the latest while new messages rise in. | `npx shadcn@latest add https://www.stealth.pm/r/chat-thread.json` |
| conversation-list | registry:ui | Chat inbox where rows spring to the top, counts roll and swipes commit. | `npx shadcn@latest add https://www.stealth.pm/r/conversation-list.json` |
| jump-to-latest | registry:ui | Follows new messages at the bottom, then counts them when you scroll away. | `npx shadcn@latest add https://www.stealth.pm/r/jump-to-latest.json` |
| message-composer | registry:ui | Grows with its text, takes files and emoji, and turns its mic into send. | `npx shadcn@latest add https://www.stealth.pm/r/message-composer.json` |
| message-status | registry:ui | Delivery ticks that morph from clock to check to read, with a pressable retry. | `npx shadcn@latest add https://www.stealth.pm/r/message-status.json` |
| reply-preview | registry:ui | The quoted message slides up above the composer and jumps back to its original. | `npx shadcn@latest add https://www.stealth.pm/r/reply-preview.json` |
| unread-divider | registry:ui | New-messages line that draws out, counts up and folds away once read. | `npx shadcn@latest add https://www.stealth.pm/r/unread-divider.json` |
| voice-message | registry:ui | A voice note whose waveform fills as it plays and seeks where you drag. | `npx shadcn@latest add https://www.stealth.pm/r/voice-message.json` |

## For AI agents

```text
You are adding components from @stealth to a shadcn-compatible project.
1. Read this file (https://sh4dcn.vercel.app/md/stealth.md) for the component list.
2. Fetch the machine-readable index: https://www.stealth.pm/r/registry.json
3. Install a single component with its install command from the table above.
4. Full structured record: https://sh4dcn.vercel.app/json (library slug: stealth).
```
