MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-403

6.11.6 Triage inbox UI — queue + detail + actions (paginated)

Done
Description

Estimate: 65m · Depends on: 6.11.1, 6.11.5

Build the admin triage inbox per the 6.11.1 design, over the 6.11.3 queue read + the 6.11.5 actions service. A paginated/infinite queue list (kind icon, title, submitter [member avatar, or avatar + a "Public" chip for a signed-in non-member], age, snippet) + a detail pane (full body, comments, attachments, attribution) + the action bar wiring Accept, Promote (the backlog / sprint / epic / story parent + position picker), Decline, Mark duplicate / Merge (the canonical-item picker), and Snooze (the time picker). It uses ONLY shipped components/ui/* primitives + --el-* / [data-display-style] tokens (no Tier-0 --color-*, no raw spacing/radius), renders the empty state ("No items to triage"), and is paginated (finding #57). The promote/merge pickers reuse the existing item-picker / parent-picker primitives.

Watch the Radix-portal-in-dialog gotcha if the promote/merge picker is a popover rendered inside a modal (gate the portal on not-in-dialog).

Acceptance criteria

  • The inbox renders the queue (paginated/infinite, newest-first), the detail pane, and every action from 6.11.1, matching the design asset.
  • Accept / promote / decline / merge / snooze call the 6.11.5 service and reflect the result (the item leaves the queue on a terminal action); the promote picker offers backlog / sprint / epic / story + position.
  • Only --el-* + [data-display-style] tokens + shipped components/ui/*; the empty + loading + error states render; AA contrast holds for the "Public" chip + the destructive Decline.
  • A promoted item disappears from the queue and (verified in 6.11.9) appears in the tree.

Context refs

  • 6.11.1 (design asset — required), 6.11.5 (the actions service), 6.11.3 (the queue read).
  • motir-core/components/ui/* + app/globals.css token layers; the existing item-picker / parent-picker primitives.
  • motir-core/CLAUDE.md § colour + shape tokens; the portal-popover-in-Radix-Dialog gotcha note.