# Maintenance Team Leader (Web) — Screen Inventory

> Source: `docs/design/SCREEN_LIST.md` "Maintenance Team Leader (MTL)" block (7 role screens) + the shared Auth screens (Module 0) the role passes through on login + the shared Profile utility landing. Surface = Web (Next.js, 1440×900). GZ scope = `own` (Ahmedabad-1).
> **Pixel target:** the `screens/*.html` mockups at 1440px. **States:** `states/`. **Modals:** `modals/`.

---

## Auth (shared — built in Wave 0, included here as the entry path)

| Screen ID | Screen | Purpose | States / modals | Mockup |
|---|---|---|---|---|
| `AUTH-LOGIN` | Login | Email/phone + password sign-in | error (bad creds), locked (rate-limited), loading | `screens/01-login.html` |
| `MTL-DASH` (router) | Role-resolved Dashboard | Post-login → MTL Dashboard via `/me` role resolve | loading | `screens/02-dashboard.html` |

> `AUTH-FORGOT / AUTH-OTP / AUTH-RESET / AUTH-LOGOUT / SH-NOTIF / SH-PROFILE` are Wave-0 shared screens; this pack mocks `01-login.html` + a `09-profile.html` to show the role's entry + utility-cluster landing. The full shared-auth set ships once in Wave 0 and is reused by every role.

## Maintenance Team Leader (MTL) — role screens (7)

| # | Screen ID | Screen | Purpose | States / modals | Mockup |
|---|---|---|---|---|---|
| 1 | `MTL-DASH` | Maintenance Dashboard | WO health: New/Routed, Assigned, In-progress, Held-source, Returned, Closed today, Overdue WOs; + WO queue preview | loading, empty, drilldown | `screens/02-dashboard.html` |
| 2 | `MTL-WO-QUEUE` | Work-Order Queue | DataTable of routed A-item WOs (WO# · source checklist/ride · A-item · `wo-*` state · technician · age/SLA · actions); filter chips | loading, no-results, empty, error | `screens/03-wo-queue.html` |
| 3 | `MTL-WO-DETAIL` | Work-Order Detail | One WO: source checklist + A-item + issue photos + reason history + WorkOrder-variant ApprovalTimeline + action bar | photo-lightbox, action bar, HELD banner | `screens/04-wo-detail.html` |
| 4 | `MTL-WO-ASSIGN` | Assign to Technician | Assign / reassign a WO to a Technician (technician picker with load badges) | assign-technician, reassign-confirm | `screens/05-wo-assign.html` |
| 5 | `MTL-WO-REVIEW` | Review Returned / Done WO | Review a Technician's DONE(fixed)/RETURNED(reason); close internally, reassign, or escalate | photo-lightbox, close-confirm, reassign-confirm, escalate-to-SM | `screens/06-wo-review.html` |
| 6 | `MTL-WO-ESCALATE` | Escalate / Outsource Report | Compose the outsource / action-needed report to the Store Manager (only outsource reaches SM) | escalate-outsource-confirm, photo-lightbox | `screens/07-wo-escalate.html` |
| 7 | `MTL-TEAM` | Maintenance Team | Technicians reporting to this MTL + their open WO load (read-only) | filter, search, empty | `screens/08-team.html` |
| — | `SH-PROFILE` (utility) | Profile / Settings | Own profile, role, reports-to, logout (utility-cluster landing) | — | `screens/09-profile.html` |

## States (this pack)

| State | File | Where it appears |
|---|---|---|
| Loading (skeleton) | `states/loading.html` | `MTL-DASH`, `MTL-WO-QUEUE`, any table |
| Empty (no data) | `states/empty.html` | `MTL-WO-QUEUE` (no routed WOs), `MTL-TEAM` |
| No-results (after filter) | `states/no-results.html` | `MTL-WO-QUEUE` (filtered to nothing) |
| Error (generic + retry) | `states/error.html` | any data screen |
| 401 (session expired) | `states/session-expired.html` | any (redirect to login) |
| 403 (forbidden action) | `states/forbidden.html` | out-of-GZ WO or role-denied action (own-scope boundary) |

## Modals / drawers (this pack)

| Modal / drawer | File | Trigger |
|---|---|---|
| Assign technician (picker) | `modals/assign-technician.html` | Assign on `MTL-WO-DETAIL` / `MTL-WO-ASSIGN` |
| Escalate / outsource confirm | `modals/escalate-outsource-confirm.html` | Send on `MTL-WO-ESCALATE` (→ `OUTSOURCED`) |
| Reassign confirm | `modals/reassign-confirm.html` | Reassign a returned WO on `MTL-WO-REVIEW` / `MTL-WO-DETAIL` |
| Photo evidence lightbox | `modals/photo-lightbox.html` | photo thumbnail on `MTL-WO-DETAIL` / `MTL-WO-REVIEW` / `MTL-WO-ESCALATE` |

---

## Counts

- **9 screen mockups** (login + dashboard + 7 MTL role screens, profile reuses one numbering slot; `01`–`09`) — covering the 7 `MTL-*` role screens + the auth entry + profile.
- **6 state variants** · **4 modals/drawers**.
- **Total HTML artifacts in this pack: 9 screens + 6 states + 4 modals = 19 HTML files** (PNG render is a later step).

> The MTL pack is the **maintenance branch** counterpart of the cascade. It is intentionally lean (work-order centric) and reuses the OH pack's shell, DataTable, ApprovalTimeline (work-order variant), and photo-lightbox patterns. The Technician (`technician-mobile`) pack is the mobile downstream that does the physical fix.
