A message list with checkboxes. Selecting rows swaps the header for a washed bulk toolbar.
FreeWeb and MobileMotion
Preview
npx shadcn add @fetaui/inbox-bulk-actionsPlayground
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
Selected
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
5,000 messages, windowed
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
- HaldenDeployment failed on main: type error in billing
- Brightfold3 issues were assigned to you this week
- Jonas WeberBillingContract for the Q4 retainer, signed copy attached
- FieldnoteYour weekly usage summary
- NorthwindBillingYour invoice for October is ready
- Maya ChenProductRe: Pricing page copy, last pass before launch
Icons animation
Motion
Installation
Terminal· bash
npx shadcn add @fetaui/inbox-bulk-actions
Accessibility
- Every checkbox names its sender.
- The bulk bar is a labelled toolbar.
- Select all goes indeterminate for a partial selection.
Motion
- The header crossfades into the bulk bar with a 4 px slide over 200 ms.
- The panel fades in and rises 8 px over 400 ms, once.
- Rows fade in over 240 ms with a 40 ms stagger.
- Numbers and bars tween over 240 ms by writing text and transforms, so React does not render per frame.
- With reduced motion, the panel appears in place and values swap at once.
Responsive behavior
- Past 50 messages the list scrolls in a window and only nearby rows render.
- Mobile stacks the subject under the sender and drops labels and Mark read.
- 760 wide on Web and 358 on Mobile, filling narrower parents.
- Collapses by its own width with a container query, so it adapts in a sidebar too.
- Touch targets stay at 44 on Mobile.
Performance
- Past 50 messages the list renders a window of rows with spacers for the rest.
- The filtered list is memoized, and scroll updates wait for an animation frame.
Note for AI
Give your coding assistant the Markdown reference instead of screenshots.
- Import InboxBulkActions and the InboxMessage type. Props: messages, title, defaultSelected, onArchive, onMarkRead, onDelete, animated.
- Selecting rows swaps the header for the bulk toolbar. Callbacks receive ids.
- Removals and read state are local, so update messages on your side.
Related
Data TableComponentSort, search, filter, page and act in bulk on one set of records, with Data Table Header and Table Toolbar on the tray.CheckboxComponentToggles between checked and not checked, with an indeterminate value for parents of a list.Dropdown MenuComponentA list of actions behind a button, with shortcuts, toggles, submenus and a red destructive action at the end.ItemComponentA row that shows one thing: media, a title, a description and an optional action.