+++ title = "quotesdb/ui: admin moderation tab (paginated reports, per-quote modal with delete/hide)" priority = 5 status = "done" ticket_type = "feature" dependencies = ["6c5904", "cb8de0"] +++ ## Summary Add a Moderation tab to the admin page showing a paginated list of reported quotes. Clicking a report opens a detail modal with the quote and all reports, plus action buttons. ## Tab: Moderation - Only visible on the admin page after auth is unlocked - Paginated list (10/page) of quotes with at least one report - Each row shows: quote text (truncated), author, report count, most recent report date - Clicking a row opens a Report Detail Modal ## Report Detail Modal - Shows the full quote (text, author, source, date, tags) - Lists all reports below: reason (or "No reason given"), reported date - Action buttons: - "Delete Quote" — calls DELETE /api/admin/reports/:quote_id/quote, closes modal, refreshes list - "Hide Quote" — calls POST /api/admin/reports/:quote_id/hide, shows success, refreshes list - "Dismiss Reports" — calls DELETE /api/admin/reports/:quote_id/reports, closes modal, refreshes list - Close/Cancel button ## Depends on - 6c5904 (admin moderation API endpoints) - cb8de0 (admin auth-first flow) ## Acceptance Criteria - [ ] Moderation tab visible on /admin after unlock - [ ] Paginated list of reported quotes - [ ] Report detail modal with quote + reports - [ ] Delete, Hide, Dismiss actions work and refresh list - [ ] Loading and error states handled ## Validation ```sh cargo fmt && cargo check && cargo clippy trunk build ```