Managers are admin-side staff accounts (list, create, edit) with status tabs, search, and pagination. Stats tiles may be partially placeholder—see list section for current behavior.
| Goals | Non-goals |
|---|
| CRUD manager records within org policy | Replace HRIS or full IAM |
| Clarify which stats are live vs placeholder | Document Laravel admin_users schema fully |
- List: All / Active / Inactive / Blocked tabs; debounced search (~400ms); 10 rows per page.
- Total stat uses list meta total; other tiles may show — until implemented.
- Open Managers list → filter by status → find user.
- Create → submit form → return to list.
- Edit → update role/status → save.
- Grant least privilege roles; audit blocked state for offboarding.
- Master vs zone admin rules mirror Admin overview.
| ID | Scenario | Expected |
|---|
| MG1 | List loads | Rows + pagination |
| MG2 | Create manager | Record appears with expected role |
| MG3 | Block user | Login prevented per backend |
| Path | Purpose |
|---|
/dashboard/managers | Staff list |
/dashboard/managers/create | Create manager |
/dashboard/managers/:id/edit | Edit manager |
- Status tabs — All, Active, Inactive, Blocked (passed to the API as lowercase status when not “All”).
- Search — debounced (400ms); pagination — 10 rows per page.
- Stats — Total employees uses the list meta total; other stat tiles still show — as placeholders in the current UI.
- Extra filters — the Filters control is disabled (“Coming soon”).
- Table — columns for staff name, phone, role name, zone (or “Global” when no zone id), and actions (edit links to
/dashboard/managers/:id/edit).
“Managers” here means admin-side staff (Laravel admin-style users) managed through fetchAdminManagersList, not vendor POS users. Role and zone assignment align with Roles and Zones.