// Screen 2: Participant List — 4 variations
function ListScreen() {
const data = [
['AP','Aguilar, Phillip','M·47','T2021','2880','2712','168','crit', 102, 'Honolulu'],
['KM','Kahale, Mei','F·32','H2021 U4','2200','2156','44','warn', 98, 'Kailua'],
['NJ','Nakagawa, Joel','M·28','T2021','2880','2534','346','warn', 88, 'Pearl City'],
['LK','Liu, Karina','F·54','H2021 U4','1800','1368','432','soon', 76, 'Honolulu'],
['TR','Tavares, Roy','M·39','T2021','2880','1843','1037','ok', 64, 'Hilo'],
['MS','Makoa, Sela','F·22','CLS 1:1','1500','780','720','ok', 52, 'Kahului'],
['HD','Haku, Daniel','M·61','H2021','2200','902','1298','ok', 41, 'Kailua'],
['OR','Ono, Rae','F·45','T2021','2880','806','2074','ok', 28, 'Honolulu'],
];
return (
<>
② Participants list
Searchable roster. Four density/layout takes — same data, different reading speed.
{/* V1 — Classic table */}
filter ▾
columns ▾
+ add
>}/>
| Name | Service | Auth | Used | Remain | % | Status |
{data.map(([i,n,a,svc,au,u,r,s,p])=>(
|
{n} {a} |
{svc} |
{au} |
{u} |
{r} |
|
|
))}
familiar. low-risk. same mental model as Excel
{/* V2 — Cards with photo + meters */}
{data.slice(0,6).map(([i,n,a,svc,au,u,r,s,p])=>(
))}
warmer · gauges read instantly
{/* V3 — Split list/detail */}
⌕ search…
{data.map(([i,n,a,svc,au,u,r,s,p],idx)=>(
))}
Aguilar, Phillip
M · 47 · Honolulu · ID 47298473
over cap
3 services · 1 staff assigned · last visit 2 days ago
{/* V4 — Kanban by status */}
{[
['crit','Critical',1,[data[0]]],
['warn','At-risk',2,[data[1],data[2]]],
['soon','Running low',1,[data[3]]],
['ok','Healthy',4,[data[4],data[5],data[6],data[7]]],
].map(([s,title,n,items])=>(
))}
great for daily triage stand-ups
>
);
}
window.ListScreen = ListScreen;