Patterns · Exact data
Data behind a surface
Every research surface is a reading of a dataset. The dataset itself stays reachable — as a bounded panel, from the surface's own chrome, without pushing the page down.
One control, a panel that fits the viewport
Desktop opens a right-hand panel; a narrow viewport opens a bottom sheet. Focus is trapped, Escape closes it, and the trigger gets focus back. The chart never unmounts.
Where it belongs
Under a surface whose primary job is a visual, and only when exact rows are genuinely useful.
Use it
- A plotted series whose exact values a reader may need to check.
- A step/regime history where the runs matter as much as the shape.
- Any surface whose table is inspection, not the reading itself.
Do not use it
- When the table is the visualisation — keep it on the page.
- When the chart already prints the only column there is.
- As a place to hide a second data path: the rows are the same ones the chart drew.
Import it from @luc/ui/data; it composes the same Sheet the mobile navigation uses, so there is no second overlay language.