# Bulk Action Wishlist block

> Wishlist List View With Multi-Select Bulk Actions, Stock Status, and Price-Drop Signal Badges

Saved-items wishlist as selectable rows with thumbnail, brand, variant, stock dot, and price. Select-all toolbar morphs into bulk Add to Cart, Remove, Clear; per-row Notify Me. ReUI Badge, shadcn Checkbox, Button, Item. Account and saved-items pages.

- Type: Pro block
- Category: [Wishlist](https://web.dev.reui.io/blocks/ecommerce/wishlist.md)
- Page: https://web.dev.reui.io/blocks/ecommerce/wishlist/wishlist-1
- MCP: `get_block("wishlist-1")`
- Built with: Badge, Breadcrumb, Button, Checkbox, Empty, Item
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

Checkbox rows with a select all toolbar that swaps to bulk remove and add to cart, under a signal count and savings summary

## Agent notes

- `getItemSignal` derives the badge from `originalPrice`, `restockedAt` and `stock` on each `WISHLIST_ITEMS` entry, so map your product fields to those
- `handleAddToCart`, `handleBulkAddToCart` and `handleAddAllReadyToCart` only add ids to `addedToCart`; no cart request is made
- `handleNotify` only adds the id to `notifyRequested` and swaps the button for a confirmation; no restock alert is saved

## When not to use

- A stack of KPI rows with trend badges and nothing to add to a cart: use [Order KPI List](https://web.dev.reui.io/blocks/application/list/list-1.md) (`get_block("list-1")`)
- Saved products shown as photo cards filtered by status tabs: use [Restock Alert Wishlist](https://web.dev.reui.io/blocks/ecommerce/wishlist/wishlist-2.md) (`get_block("wishlist-2")`)

## Install

```bash
npx shadcn@latest add @reui/wishlist-1
```

## About Wishlist blocks

### When to use

- A saved items page in a shopper account, with prices, savings and add to cart on each product
- Price drop, back in stock and low stock badges that flag which saved products to buy now
- Named collections or priority groups that sort saved products by occasion, recipient or intent to buy

### When not to use

- A dashboard side panel of metrics, transactions or integrations, with nothing to buy: use the [List blocks](https://web.dev.reui.io/blocks/application/list.md)
- A lone price drop or low stock label on a product tile you already render: use [Badge](https://web.dev.reui.io/components/badge.md) (`get_component("badge")`)
- A back office table of records narrowed by field, operator and value chips: use the [Filtering blocks](https://web.dev.reui.io/blocks/data-grid/filtering.md)

### Agent notes

- Every root seeds `useState` with the demo constants in components/data.tsx and saves nothing; load and persist the list through your own wishlist API
- Every Share control is a stub, a button with no `onClick` or the no-op `handleShare`; wire it to your share link or clipboard flow
- Each page.tsx adds a `min-h-svh` wrapper and each root sets its own max width and `h1`; drop the wrapper and keep one `h1` in your storefront layout

Every ReUI item has a twin like this one; the index is https://web.dev.reui.io/llms.txt. Agents with the ReUI MCP (https://web.dev.reui.io/docs/mcp) get the same guidance from the getters named above.
