Work / Scrvio / Wiki / Surfaces
admin-users
Surfacecanonicalverified 2026-10-04
SURFACE.WEB.ADMIN-USERSSummary
The admin list of every user, with search, suspend and delete.
Raw wireframe
- .context/designs/web/admin/users.html
- .context/designs/web/admin/users-empty.html
Why it is drawn this way
Search is client-side. useUsersQuery loads every user and the page filters by name or email. There is no pagination. The summary line counts filtered against all.
Two empty strings. With a query: "No users found matching your search" (drawn). Without one: "No users in the system". Same card, same Shield icon.
Suspend is one-way. The Suspend button renders only for an active user and sets isActive: false. A suspended row has no reactivate control, though the dialog says "until reactivated".
Neither dialog is destructive. Suspend User and Delete User use ConfirmDialog defaults: "Confirm" / "Cancel", default button. They are drawn on confirm-dialogs, not as screens here, so the row buttons are not links.
Not drawn. Loading is five CardSkeletons (the shape on admin-metrics). Below md the table becomes cards with a labelled Delete button. The error state is an ErrorCard titled "Error loading users".
Related
Sources
- apps/website/src/app/admin/users/page.tsx
- packages/ui/src/components/ui/confirm-dialog.tsx