What it is
A page whose body is one table of objects of the same kind — campaigns, numbers, calls, integrations — that a reader scans, narrows, and acts on. It is the page a section’s navigation lands on, and usually the page a detail view is reached from. You are building one if the body answers “which of these?” A page that answers “what about this one?” is a detail view.Region vocabulary
This archetype adds no regions. It uses the page frame as published, and the frame’s vocabulary is the vocabulary here.Choose this view when
- The page’s subject is a collection, and the reader’s job is to find or compare members of it.
- Every row is the same kind of object, with the same columns available.
- Acting on a row means either navigating to it or applying an operation to one or many.
Choose something else when
Regions
What fills each region
Contents — the table
A table is the data grid. The system states this in source, in a published guidance story: tables are built with the grid component, not assembled from table primitives. That decision is what makes column behaviour, selection, sorting, and keyboard focus consistent across every list page.
What the system already decides about the grid, from the theme: the surface, the rule between
rows, the type of a column header and a cell, the keyboard focus ring on a cell, and the
selected-row treatment.
Controls — narrowing the list
The composition is Filtering & search; this archetype requires three things of it, settled here rather than left to each page to decide separately:- Search is present whenever the collection can exceed one page. A collection small enough to always fit on one page has nothing for search to narrow — see that page’s own When it doesn’t table.
- Applied filters render as removable chips, per Filtering & search — a list page never applies a filter that isn’t visible as a chip the reader can remove.
- The result count is always stated, in
Controls, regardless of whether any filter is active. “Which of these” is unanswerable without knowing how many there are, and a reader filtering to zero needs to see the count change to know the filter, not the page, produced the empty result — see Empty & zero states.
Header — Right
One primary action, and it creates a member of the collection — see TITAN-VIEW-04. Which surface that action opens is not this archetype’s decision: it’s whatever CRUD: Create’s tree selects for this collection’s object type. A list page composes Create; it does not re-decide it. Bulk actions are not header actions. The design library puts them in a selection bar that appears in the table’s own toolbar when rows are selected — see TITAN-DIV-19 and Bulk selection.Responsive and density behavior
Titan is desktop-first — most surfaces live atlg and xl, and xs/sm are rarely
exercised (see Layout & grid).
What follows is proposed with that in mind: it is meaningfully tested down to md, and
answers the “does it still work at all” question below that rather than a deliberate
phone-first behavior.
Which columns collapse first is a per-page decision, not this archetype’s. The archetype
requires that something collapses before the table forces horizontal scrolling — per
TITAN-VIEW-07, a dropped region is never
the only route to a function, so a collapsed column’s data must stay reachable from the row
even once it’s off the grid.
Accessibility
The page-level decisions are the frame’s, and they apply unchanged — see Views overview → Accessibility. Onemain, one h1 on the
Title, region order matching visual order.
What is specific to this archetype:
- The table’s accessible name is the collection’s name — “Campaigns,” not “Table” — set on
the table region itself, so a screen-reader user landing on it via the
mainlandmark knows what they’ve reached without reading theTitleagain. - Sort state is announced on change, stated as a plain sentence — “Sorted by calls, descending” — not inferred from an arrow glyph on the column header alone, per TITAN-COLOR-03’s general rule that a visual-only signal isn’t sufficient.
- Row selection is announced the way Bulk selection already specifies — a live region stating the count on change. This archetype doesn’t re-decide it.
- The result count is available without traversing the rows — it’s the same count
Controlsstates visually, read from the same live region an applied filter updates, per Controls — narrowing the list above. - A row action’s accessible name includes the row’s identifying value — “Delete Q3 Paid Search,” not “Delete” — so a screen-reader user tabbing through a column of identical row actions can tell them apart without cross-referencing the visual row. Matches the reasoning behind TITAN-CHK-02 for the same column-of-identical-controls problem.
Constraints
Known issues
List view: open issues
Divergences, open decisions, and undocumented gaps for List view.
Composed example
Related
- Views overview — the frame this archetype fills
- Table — what fills the body
- Detail view · Split view — where a row leads
- Filtering & search · Bulk selection · Empty & zero states