Skip to content

Work / Scrvio / Wiki / Surfaces

admin-users

Surfacecanonicalverified 2026-10-04

SURFACE.WEB.ADMIN-USERS

Summary

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