Table / data grid
In reviewLive · web
Density
1 selected
| nockerl-design · docs site | Streaming | 137,730 | $2.41 | now | |
|---|---|---|---|---|---|
| api-server · gateway refactor | Idle | 89,210 | $1.58 | 12m | |
| credential-store · allowlist audit | Needs attention | 41,980 | $0.74 | 1h | |
| dueydo · failed deploy | Failed | 15,240 | $0.29 | 3h | |
| Total · 5 sessions | 348,710 | $6.14 |
Showing 1 to 4 of 5
Loading: skeleton rows hold the column grid
| Session | Tokens | Cost | |
|---|---|---|---|
Sorted by updated (asc) · 1 selected · page 1 of 2 · comfortable. The grid is live: change --color-divider and every hairline moves.
Data-alignment canon (per column)
Alignment carries meaning, so it is typed per column, not guessed:
- Text → left (
alignomitted) for names, labels, the reading edge. - Numbers → right (
align: 'end') so tokens, cost, counts line up digit-to-digit for comparison; amonocolumn right-aligns by default (and renders tabular figures). - Status chips / badges → center (
align: 'center') because a pill is a self-contained token that sits centered in its column rather than hugging an edge.
Headers inherit their column’s alignment (the sort arrow leads on the data edge for numbers) and a footer total sits under, and aligned to, its own column (the label left, the numeric totals right).
Parameters
Section titled “Parameters”Cross-platform drift (table vs list vs key-value)
This page is the multi-column grid. The single-column sectioned collection is List; one record’s label→value fields are Key-value. The real divergences between the shipped platforms, tracked in the Review queue:
- No true grid idiom on mobile. The mobile pattern is column-ish weighted rows rather
than a
DataTable(ComposeRow { Modifier.weight(1f) }, VoiceLazyVGridof cards), with mono numeric cells + hairline rules. macOS SwiftUI is the one platform whose framework hands you a realTable(TableColumn+KeyPathComparator). The web grid was designed ORIGINALLY here from the laws + the shared checkbox / divider / pagination / mono vocabulary and now ships asNockerlTablein@dizyx/nockerl-react(v1, with virtualization + inline cell editing a later slice). - Column-header sorting is a web/macOS affordance; Compose’s lists today are pre-sorted by
the caller (
sortedBy { it.name.lowercase() }) with no clickable header arrow. A reusable sort header for Compose is the open extraction item. - Sticky header: the web grid and the SwiftUI
Tablekeep the header pinned; Compose hasstickyHeaderbut no shipped screen uses it yet, so canonizing it is open. - Row selection (ratified): the one selection model is an accent border + accent ink +
the trailing check, with no wash and never a left stripe (Law 6). The web grid pairs it
with a checkbox column; macOS uses the native
Tableselection highlight; Compose carries it on the per-rowclickabletarget.