First step of the booking wizard. Today this is plain `cmdk`. Pick whichever feels right; library trade-offs listed under each.
Wizard step 0 — Pick a campaignRealistic Rodeo Leads campaign names belowAll four are searchable + keyboard-navigable
Reminder for context: This list is what an agent sees when clicking Book Appointment on a Campaign Calls row whose order can't be auto-resolved. It's also the first step when booking from anywhere else. Today's plain list is what you said feels weak.
A Current lib cmdk Command, polished
Same library you have today (`cmdk`) with proper density, group headers, item subtitles, and a real loading skeleton. No new deps. This is the "polish what's there" path.
Pros
Zero deps
Smallest diff
Already used elsewhere
Cons
Still "vanilla" feel
Manual polish for every detail
Acme Solar
✓
Acme Corp — Solar 2026 Q2
Acme Solar · APPOINTMENTS
128 of 300 left
Acme Corp — Solar Refi Spring
Acme Solar · APPOINTMENTS
42 left
Pacific Coast
Pacific Coast — Residential Solar
Pacific Coast · APPOINTMENTS
213 left
B Current lib shadcn Combobox preset
Same `cmdk` engine, but wrapped in shadcn's Combobox preset (closed trigger button → opens popover with cmdk inside). Feels more like a proper form field. Still zero new deps — shadcn primitives already in your codebase.
Pros
Looks like form input
Closed state saves vertical space
Zero new deps
Cons
Extra click to open
Slightly more state plumbing
Acme Corp — Solar 2026 Q2 · Acme Solar
✓
Acme Corp — Solar 2026 Q2
Acme Solar · 128 left
Bright Future — Roofing California
Bright Future · 64 left
Sunset Ridge HOA — Inspection Drive
Sunset Ridge HOA · 7 left
Pacific Coast — Window Replacement
Pacific Coast · 213 left
C + New dep react-select
Heavyweight, polished, customizable. Best-in-class for forms with rich item content, async loading, multi-select, and grouping. Adds ~25 KB gzipped. Look-and-feel matches Salesforce/Airtable-style enterprise UIs out of the box.
Pros
Enterprise polish
Async + virtualized
Mature a11y
Cons
+25 KB gzipped
Heavier theming
Different style language than rest of app
Acme Corp — Solar 2026 Q2 ✕
Acme Corp — Solar 2026 Q2 128 left
Acme Corp — Solar Refi Spring 42 left
Bright Future — Roofing California 64 left
Pacific Coast — Window Replacement 213 left
Sunset Ridge HOA — Inspection Drive 7 left
Texas Foundation — Concrete Lifting 19 left
D Current lib Linear-style command palette
Same `cmdk` engine but Linear/Raycast feel: dark, dense, sticky group headers, keyboard hints in the footer, ⌘K-style aesthetic. Fits the "agent power-user tool" persona. Still no new deps.
Pros
Power-user feel
Visible kbd hints
Fast scanning
Cons
Dark UI breaks app's light theme
Heavier custom CSS
↑↓↵
Acme Solar — 2 active
✓
Acme Corp — Solar 2026 Q2
APPOINTMENTS · started Apr 12
128 / 300
Acme Corp — Solar Refi Spring
APPOINTMENTS · started Mar 28
42 / 100
Bright Future — 1 active
Bright Future — Roofing California
APPOINTMENTS · started Apr 1
64 / 200
Pacific Coast — 2 active
Pacific Coast — Window Replacement
APPOINTMENTS · started Mar 15
213 / 500
Reply with A / B / C / D — or "B but apply Linear's grouping idea", etc.