Select rows, then confirm exactly what gets deleted right in the header, with undo.
Import it and pass your content. The props that matter most are listed next.
"use client";
import { BulkDelete } from "@/components/ui/notchset/bulk-delete";
type File = { id: string; name: string; owner: string; size: string; mb: number };
export function AlbumFiles({ files, trash, restore }: { files: File[]; trash: (ids: string[]) => Promise<void>; restore: (ids: string[]) => void }) {
return (
<BulkDelete
title="Braies shoot"
items={files.map((f) => ({ id: f.id, name: f.name, meta: f.owner.toUpperCase(), size: f.size, mb: f.mb }))}
onDelete={trash}
onUndo={restore}
/>
);
}title / items–
string / { id, name, meta, size, mb, thumb? }[]The list and its rows; thumb is an image URL, or "doc" / "sheet" for an icon tile.
selected / defaultSelected / onSelectedChange–
string[]Controlled or uncontrolled selection.
onDelete–
(ids) => PromiseDeletes the ids. Reject with an Error to show its message and keep the selection.
undoMs / onUndo–
number / (ids) => voidHow long Undo stays (default 5000) and what it restores.
empty–
ReactNodeShown when every row is gone.
BulkDeletedata-slot="bulk-delete"
The card: header, delete control and rows.
Controldata-slot="bulk-delete-control"
DELETE, then the question, the progress, the result and Undo.
components/ui/notchset/bulk-delete.tsx
pnpm dlx shadcn@latest add https://beautiful-ui.dev/r/bulk-delete.jsonpnpm dlx shadcn@latest add https://beautiful-ui.dev/r/radix-nova/bulk-delete.jsonFree, no account or key. Use the command for your project's primitives: a radix-*, new-york or default style in components.json is Radix, a base-* style is Base UI. With the @beautiful-ui registry added, @beautiful-ui/<name> picks for you.
The CLI adds the styles to the CSS file named in components.json (tailwind.css). Check that it points at your global stylesheet, that the project uses Tailwind CSS v4, and that the file is imported in your root layout. Installed by hand: paste styles.css into that file.
Give your coding assistant the Markdown guide instead of screenshots.
https://beautiful-ui.dev/api/mcp (setup)v1.0.0 · 2026-10-03
First release