DOCUMENT CHECKLIST: Per-document status rows for an admissions checklist
COMPOSES: .badge-eligibility-* (status pill) | .file-upload (action slot) | .btn-tertiary (view) | .empty-state | .callout
One row per required or optional document — name + meta, a status pill, and an action
(upload / re-upload / view). No new Stimulus controller: upload behavior comes entirely
from the composed .file-upload instance in each row's action slot.
Status pill mapping: received → .badge-eligibility-eligible
(success) · required → .badge-eligibility-unknown (neutral, not yet
provided) · rejected → .badge-eligibility-not-eligible (warning trio,
needs resubmission) · optional → .badge-eligibility-info (magenta, no
strict requirement). Every pill carries its own text label, never color alone.
Proof of address
Birth certificate
Photo ID
Medical information form
<ul class="doc-checklist"><li class="doc-checklist-item"><i class="fa-regular fa-file-lines …"></i><div><p class="doc-checklist-name">…</p><p class="doc-checklist-meta">…</p></div><span class="doc-checklist-status badge-eligibility badge-eligibility-eligible">Received</span><div class="doc-checklist-action"><button class="btn btn-tertiary btn-sm" aria-label="View {document name}">…</button></div></li></ul>
All-complete state: every row shows the received pill; a
.callout above the list confirms completion in plain language rather than
relying on the pills alone to communicate "you're done."
All documents received. Thank you — there's nothing more to upload for this application. We'll be in touch once the panel has reviewed everything.
Proof of address
Birth certificate
Photo ID
Empty state: before the school has set a document list for this
application (or on a course with no document requirements at all), the checklist
composes .empty-state instead of rendering an empty .doc-checklist.
The school hasn't requested any documents for this application. We'll let you know here if that changes.
<div class="empty-state"><i class="fa-regular fa-folder-open empty-state-icon"></i><h3 class="empty-state-title">No documents required yet</h3><p class="empty-state-text">…</p></div>