# Admin UI Polish — RC1 Review
Scope: production-ready UI/UX polish pass across the admin area, one page at a time.
Architecture, routing, facades, providers, APIs, and data models were left unchanged
per instructions. No `docs/DESIGN.md` exists in this repo (confirmed during the
storefront pass), so no page could be checked against it literally; polish decisions
here follow the shared component library (`app-button`, `app-table`, `app-empty-state`,
`app-skeleton`, `app-badge`, `app-card`, `app-toggle`) and existing conventions instead.
## Pages reviewed
| Page | Commit | Status |
|---|---|---|
| Dashboard | — | reviewed, no changes needed |
| Marketplace Builder | `fix(admin): polish marketplace-builder` | done |
| Products | `fix(admin): polish products` | done |
| Categories | `fix(admin): polish categories` | done |
| Orders | `fix(admin): polish orders` | done |
| Customers | — | reviewed, no changes needed |
| Reviews (moderation) | `fix(admin): polish reviews` | done |
| Reports | — | reviewed, no changes needed |
| Transactions | — | reviewed, no changes needed |
| Analytics | — | reviewed, no changes needed |
| Monitoring | — | reviewed, no changes needed |
| Media | — | reviewed, no changes needed |
| Settings | — | no implementation exists (see backlog) |
| Diagnostics | — | reviewed, no changes needed (dev-only, excluded from production) |
## Fixes
**Dead code:**
- Marketplace Builder: removed an unused `ButtonComponent` import/registration from
`ProjectEditorHomepageSectionComponent` — it was never referenced in the template
and had been silently flagged by every single build (`NG8113` warning) until now.
**Accessibility — recurring pattern across list pages:**
The admin list pages (Products, Categories, Orders, Reviews) share a common
table-view layout: a "select all" checkbox in the header and a per-row checkbox in
each `
`. In every one of these tables, **the table view's checkboxes had no
accessible name** — a screen reader announced only "checkbox, not checked" with no
indication of what it selects. Notably, the **grid-view equivalent on the same pages
already had `aria-label`** (e.g. product name, category title, customer name), so this
was an inconsistency introduced when the table view was built, not a project-wide gap.
Fixed identically across all four:
- Products: `adminProducts.selectAllRows` / `selectRow`
- Categories: `adminCategories.selectAllRows` / `selectRow` — plus the per-row
**visibility-toggle** checkbox, whose `