# Restock Alert Wishlist block

> Saved-items wishlist grid with price-drop and restock signal badges plus status tabs

Ecommerce wishlist that flags saved products with price-drop, restock, almost-gone, or unavailable badges, filters by status tabs, and bulk-adds in-stock items to cart. ReUI Badge, shadcn Tabs, Item, Button. Saved items, favorites, watchlist.

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

## Best for

Portrait 4:5 photo cards that gray out unavailable items, with status tabs that disable at zero and a Restock Alert On state

## Agent notes

- `getItemSignal` turns `stock`, `originalPrice` and `restockedAt` on each `WISHLIST_ITEMS` entry into the badge, so map your product fields to those
- `handleAddToCart`, `handleAddAllReadyToCart` and `handleNotify` only fill the `addedToCart` and `notifyRequested` sets; no cart or alert request is sent
- `FILTER_OPTIONS` drives the status tabs, and a tab whose entry in `counts` is 0 is disabled, so a new filter needs a `counts` key too

## When not to use

- A library of workflow records split by state tabs that also needs column filters: use [Automation Library](https://web.dev.reui.io/blocks/data-grid/filtering/data-grid-filtering-2.md) (`get_block("data-grid-filtering-2")`)
- Saved rows picked in bulk, with a select all bar to remove or add several together: use [Bulk Action Wishlist](https://web.dev.reui.io/blocks/ecommerce/wishlist/wishlist-1.md) (`get_block("wishlist-1")`)

## Install

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

## 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.
