Files
marketplaces/docs/ADMIN_REVIEW.md
sdarbinyan 08976de55a docs(admin): add RC1 UI polish review
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 00:07:27 +04:00

4.1 KiB

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 <tr>. 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 <label> wrapped only the input with no text content at all (empty accessible name), got adminCategories.toggleVisibility
  • Orders: adminOrders.selectAllRows / selectRow (row label includes order number)
  • Reviews: adminModeration.selectAllRows (row checkbox already had a label via review.customerName, only select-all was missing)

All new keys added across en/ru/hy.

Remaining backlog

  • Settings: src/app/features/backoffice/settings/ contains only a .gitkeep — no component, no route. Nothing to polish until the feature is built. (Same situation as Checkout in the storefront pass.)
  • Dashboard, Customers, Reports, Transactions, Analytics, Monitoring, Media, and Diagnostics were already in good shape at review time — consistent use of shared components, existing :focus-visible coverage on their buttons, empty/loading states already using app-empty-state/app-skeleton. No action items logged for these; re-review if they're touched again after backend integration lands new UI.
  • The select-all/row-checkbox accessible-name gap was fixed everywhere it was found in this pass (Products/Categories/Orders/Reviews). If any future admin list page is built from the same table pattern, carry the aria-label over from day one rather than relying on a follow-up audit to catch it.
  • No docs/DESIGN.md exists for either the storefront or admin area. If literal design-system enforcement (type ramp, radius scale, color palette) is wanted going forward, author that file — impeccable hook findings are currently checked against a document that doesn't exist.