List page

A list page shows every record of one kind and gives a row to open each one. It is the most common way into the product.

When to use one

Use a list page when a customer arrives without knowing which record they want, and the way to find it is to narrow the set.

Do not use one to show how a single record changed over time. That belongs in the detail page's tab body. Do not use one as an overview. A list answers which record to open, and an overview answers whether anything needs attention.

Anatomy

Wireframe of a list page. Below the application header and navigation, the page bar carries the name of the set. Under it a filter bar runs left to right: four scope dropdowns, a focused name field in the middle, then ordering, export and an overflow button at the right. Below that a card titled Issues holds a table whose columns are a select box, the record and its namespace, status controls, two measure columns, when it was last seen, and assignees. The first row is hovered and has a colored bar down its left edge.

The header and the navigation are the same on every page and are described on /foundations/layout.md. The regions below are the page's own, in this order.

RegionWhat it holdsRule
1Page barThe set, namedOne name, nothing else. An action belongs here only if it applies to the whole set rather than to a row
2Filter barThree jobs in one row, left to right: what is in scope, which record to find, how the rows are orderedPut every filter in the URL. A filtered view can then be pasted into a chat and opened by someone else
3CardThe table, in a card that names what the rows areThe page bar names the section and the card names the collection. A page that keeps those separate can grow a second collection without being renamed
4Column headerThe columns, and which one is sortingThe first column identifies the record and is the widest. Sorting marks itself in the header, not only in the order of the data
5RowOne record: what it is, the scope it came from, its state, and who owns itThe whole row opens the record. Change state from the row, so triaging a set does not mean opening every record in it
6Measure columnsA number with a bar beneath itThe bar makes rows comparable at a glance and the number makes the bar checkable. Use both

The filter bar design is changing

The filter bar drawn and described on this page is the one that ships today, and it is being redesigned. The rules hold: scope, search and ordering in one row, and every filter in the URL. The controls themselves, their order and their labels are the part that will move.

States

A list has four states and they are not interchangeable. The wrong one sends a customer to fix the wrong thing.

StateWhat it saysWhat happens next
Nothing has ever arrivedThis application has reported no records of this kindInstall, configure, or wait. Do not offer the filter as the cause
The filter excluded everythingRecords exist, and none matchWiden the filter. Keep it on screen, and name it in the wording
LoadingThe query is runningWait. Hold the height the rows will occupy, so the page does not jump when they land
The query failedSomething brokeRetry. Say what failed, and keep the filter bar usable so a narrower query can be tried

The first two states are easy to confuse. They look the same on screen and lead to opposite actions, so write them as two different screens and never share wording.

What travels into the record

Two page outlines side by side. On the left a list page with filter chips and rows, on the right a detail page with a breadcrumb, a title, tabs, a wide tab body and a right-hand stack of cards whose last one is an occurrence list. An arrow from left to right is labeled "open a row" and carries a box reading the scope, the filter intact, and the place in the list. A dashed arrow returns right to left, labeled "breadcrumb, back".

The scope set on the list follows the customer into the record. Narrowing to one namespace is a deliberate choice, and a record that drops the scope shows different numbers than the list did.

Travels into the recordStays on the list
The scope the whole set was narrowed to, such as the namespace or the time rangeThe ordering
Enough of the filter to rebuild the list on the way backThe name filter
Which row was opened, so the list returns to itThe row selection

The right-hand column still has to survive the round trip. The breadcrumb on the record is the way back, and it returns to the list as it was: same filter, same order, same place in the rows. The record's own anatomy is on /page-types/detail.md.