## Bulk Actions Bar (S—148)

Select rows with checkboxes (Shift-click for ranges) and a floating action bar rises with the count and bulk actions.

- URL: https://sundaeui.dev/components/bulk-actions-bar
- Category: UI components · Art direction: Refined
- Access: Sundae Pro (authenticated install)
- Stack: React 18+, TypeScript, plain CSS; dependencies: none
- Install: `npx shadcn@latest add https://sundaeui.dev/r/bulk-actions-bar.json`
- Tags: checkbox, bulk-actions, table, list, toolbar, selection

A select-all checkbox in the header goes indeterminate for partial selections. Shift-click selects a range like a mail client.
As soon as anything is selected, an action bar slides up from the bottom of the card with the count, Archive, Delete and a clear button. Escape clears.

### Usage

```tsx
import { BulkActionsBar } from '@/components/sundae/bulk-actions-bar'

<BulkActionsBar />
```

### Props

- `rows` (`{ id: string; title: string; meta?: string }[]`, required): Rows.
- `actions` (`{ id: string; label: string }[]`, required): Bulk actions.
- `onAction` (`(action: string, ids: string[]) => void`): Called with the selection.
- `fill` (`'dark' | 'light'`, default `'dark'`): Surface: dark or light.

### When to use

- Inboxes, file lists, admin tables.

### When not to use

- Lists where people act on one item at a time.

### Accessibility

- Native checkboxes; the header box exposes the mixed state. The action bar is a toolbar labelled with the count.
- Escape clears selection; results are announced.
- Reduced motion removes the movement and keeps every state change.

### Keyboard

- Shift + click: Select a range
- Esc: Clear selection
