Lists
Browse surfaces — filters, density, empty/loading/error states baked into compounds.
Data surfaces · fixture-only
Object explorer
ObjectList + ListSurface for registry-driven tables with consistent row chrome.
Workshop: /objects, /projects, /files — all list routes should use these compounds.
Fixture data only — behaviour matches production chrome
Empty registry
Show EmptyState inside ListSurface when count is zero — never a bare "No results".
Workshop: New client instances with no seeded modules.
Fixture data only — behaviour matches production chrome
Filter chips
Popover/toggle chips for list filters (S12).
ListRowDensity
HoverCard preview + context menu on dense rows.
ListSurface states
loading · empty · error · ready
Loading
Empty
No customers yet
Create your first record.
Error
Could not load list
API unreachable.
Ready
Populated list body
ObjectRow + ObjectTile
ProjectList
FileList
ObjectList (table)
| Name | Status |
|---|---|
| Acme Corp | Active |