Skip to main content

Component · Data

Data Table

Scalable table chrome; SelectAll is request-only over projected rows.

Kind
widget
Input
interactive
Canvas
120×40

Live preview

Loading terminal preview.

Static terminal poster. Choose Run live to start the Rust demo.

Ghosttydata-table/toolbar
Loading terminal poster…
○ loading posterNo input — rendered state only
Data Table · exact mounted Rust story

01 · Purpose

What it is for

Scalable table chrome; SelectAll is request-only over projected rows.

Best fit: Data · data · widget

02 · Behavior

What the mounted story proves

  1. 01

    DataTable

    Representative 120×40 terminal state.

  2. 02

    Passive paint

    No keyboard or pointer action is claimed by this representative story.

  3. 03

    Evidence stays explicit

    3 covered · 9 partial · 5 missing axes.

03 · Implement

Install, then start from exact code

Install

cargo add termrock --git https://github.com/tailrocks/termrock.git --rev 5283c2acf9154d0cfcd37b1ffe821c00faf90ea2

Add TermRock once. Keep domain effects in the host application.

Minimal implementation

Exact Rust setup used by data-table/toolbar.

Open to load code.

04 · Adapt

Variants and composition

Variants

Use the preview Variant menu when alternate registered stories exist. Each selection mounts a fresh configuration.

Composition

Data · data · widget

05 · Reference

API, tokens, accessibility

API

DataTableOpen source ↗

Tokens

DesignSystemInspect exact story code for roles and capability projection.

Accessibility

Input contract mountedNo input claim in the representative story.

Contract

Evidence in progress3/23 axes covered

06 · Go deeper

Advanced guidance

Authored implementation guidance

Raised muted headers and recipe-owned selection/hover washes keep dense data scannable without neon slabs or ad-hoc row focus colors.

Purpose. Multi-column interactive grids at professional scale: sort/filter chrome, pin/resize/reorder hooks, row/cell/range selection, inline edit, copy, context actions, and 1M-row logical datasets without allocating the universe.

TermRock owns chrome and interaction geometry. You own query, sort execution, filter execution, and project(start..end).

For static / moderate-size presentation without virtualization kits, use Table.

When to use / when not

Use DataTablePrefer
DB results, k8s/ops tables, large lists—
Sort/filter/resize/edit outcomesHost executes
10k–1M logical rowsVirtualWindow projection only
Simple vertical navList
Moderate static gridTable
HierarchyTree
ModeKeys
Cell (default)Arrows move cell; edges h-scroll
RowVertical row focus; ←/→ h-scroll
RangeShift-extend rectangular selection

Cycle with \. Fullscreen promotion: Ctrl+F → FullscreenRequested.

Anatomy

toolbar? · sticky header (sort + resize handles) · pin-start | scroll body | pin-end · selection gutter · group bands · footer (count / partial / filter / nav / edit)

Ownership boundary

TermRock owns reusable terminal rendering and interaction state. The host owns domain data, policy, persistence, authorization, and side effects.

Evidence status

3 covered, 9 partial, and 5 missing contract axes. Missing evidence is not a behavior claim.