Ballmac UI home

Review Center

New

A desk for reviewing what agents made: items with the agent's confidence, a summary and the thing itself, Approve or Request changes with a comment, J, K, A and R keys, and decisions undone with the reason if saving fails.

v1.0.0Updated Oct 25, 2026Ships with a test
What changed

Review desk

3 to review · 1 approved

To review: Release notes for version 2.4

Writer agent · 91% sure

To review: Refund of $340.00 to Maria Lopez

Payments agent · 48% sure

To review: Reply to the press enquiry from The Daily Ledger

Support agent · 77% sure

Approved: Weekly usage report for the leadership team

Analyst agent · 95% sure

Release notes for version 2.4To review

Writer agent · Changelog, 240 words

Eight changes grouped into New, Improved and Fixed, written from the merged pull requests.

91% sure

### New

Added: - Export any report as a PDF from the share menu.

Added: - Filters now remember your last choice.

### Fixed

Removed: - Fixed a bug.

Added: - Fixed totals rounding on invoices over $10,000.

J and K move, A approves, R asks for changes.

Installation

$ pnpm dlx shadcn@latest add @ballmac/review-center

Usage

import { ReviewCenter } from "@/components/ballmac/review-center"

The full example is in the Code tab above.

Examples

All reviewed

Review desk

0 to review · 1 approved · 1 sent back

Approved: Release notes for version 2.4

Writer agent · 91% sure

Sent back: Reply to the press enquiry

Support agent · 77% sure

Release notes for version 2.4Approved

Writer agent

Eight changes grouped into New, Improved and Fixed.

91% sure

J and K move, A approves, R asks for changes.

API reference

PropTypeDefault
items*ReviewItem[]—
titlestring—
selected

The selected item id. Controlled.

string | null—
defaultSelectedstring | null—
onSelectedChange(id: string) => void—
onApprove

Called to approve an item. Reject and the decision is taken back with the message.

(id: string) => void | Promise<void>—
onRequestChanges

Called to send an item back with what should change. Reject and the decision is taken back with the message.

(id: string, comment: string) => void | Promise<void>—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
ListA listbox; each option starts with its state in words, such as 'To review: …'; the selected option has aria-selected and one option is in the tab order
KeyboardJ and K or Up and Down move, Home and End jump, A approves and R asks for changes; the shortcuts are off while typing in the comment box, and Escape closes it
DecisionsAnnounced in a polite live region ('Approved: …'); a failed save is an alert and the decision is taken back
ConfidenceA meter with a spoken value; below 60% it also says 'worth a close look'
CommentA labelled textarea; an empty one is refused with an alert, and Ctrl or Command with Enter sends

Use with AI

items is [{ id, title, agent?, summary, meta?, confidence?: 0-1, status: pending | approved | changes, feedback?, preview?: ReactNode }] (required); title, selected / defaultSelected / onSelectedChange. onApprove(id) and onRequestChanges(id, comment) may be async: the decision shows at once and is taken back with the reason if it rejects. Keys: J and K or the arrow keys move, A approves, R asks for changes, Home and End jump; after a decision it moves to the next item still waiting. Shortcuts are ignored while typing. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Review Center (@ballmac/review-center) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Reviewing drafts, decisions or changes an agent produced before they go out
  • A queue where the reviewer's speed matters

Not for

  • A single yes or no on one action; use approval-card
  • A conversation to take over; use escalation-card
  • Comparing alternative runs; use parallel-attempts

Registry JSON: https://ui.ballmac.com/r/review-center.json

Credits

Free to use in personal and commercial projects.

Ballmac UI Pro

Need the whole screen, not one piece?

150 premium blocks (dashboards, settings, calendars, mail, shops, onboarding), a private shadcn registry and Figma tokens. Blocks that show data come with loading, empty and error states built in.

Not ready? Try three Pro blocks free

Leave your email and the blocks appear right here, ready to copy. Yours to use in any project.