Pro
Dust remove
Removes an item by turning it to dust: the row breaks into small grains that drift up and away from one side to the other, then the space it held closes. The grains are copies of the row, so it needs no canvas or screenshot.
pnpm dlx shadcn@latest add @caliper/dust-removeWhen to use
Use it for
- Deleting a message, notification or card where the removal should feel final.
- Clearing a single item in a list people watch.
Skip it when
- Bulk deletes; dozens of rows breaking at once is noise.
- Removals people may want back without an undo nearby.
Decisions
Why it is built this way, so you know what to keep when you change your copy.
Behaviour
- Keep it until it is gone
- Set
removed, keep the item in your list, and drop it inonRemoved, which fires after the dust and after the space has closed. - A sweep
- Grains leave left to right with scatter, rising and drifting the way they go, so the row reads as blown away rather than exploding.
- Said once
- Pass
announceand it is said politely as the removal starts; under reduced motion the row fades and closes.
Installation
pnpm dlx shadcn@latest add @caliper/dust-remove
Adds its 2 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.
Usage
Import it from your copy of the source. The example behind the preview comes with the source.
import { DustRemove } from "@/components/ui/dust-remove"
The worked example comes with Pro
The 65-line example behind the preview opens here, ready to copy.
- 576 Pro parts, blocks and page templates, all with source
- $199 once, with a year of updates. What you have stays yours
- A full refund within 14 days if it is not for you
API reference
DustRemove
component
Also accepts the native props of its root element and a ref.
Accessibility
It is built on native elements, so roles and focus come from the browser. Changes that matter are announced through a live region.
No custom key handling; Tab and the native activation keys do the work.
Motion
It checks prefers-reduced-motion itself and settles immediately instead of travelling. Every state is still reachable.
Related
- Presence listA list where an added row opens from nothing and a removed row closes, so a live feed or a queue changes without jumping. The first render is immediate.
- Swipe actionsRow actions revealed by swiping, with a keyboard route to the same actions.
- ToastA short, dismissible message that confirms an action, with an optional undo.