Views

Every view reads the same row model and the same .base file; type: picks one. 16 of 16 are built; the rest are planned, each with its stock library already chosen and installed (docs/VIEWS.md). A planned type in a .base file draws the table with a one-line notice.

View.base typeStatusStock partPriority
Table
Decided by the table lane: headless engine, Notion-like surface ours, 36 KB gz, 22/22 checks.
table (Bases)builtTanStack Table v9 + Virtual
@tanstack/table-core@9.3.1, @tanstack/virtual-core@3.19.7
now
Pivot
A transform before the table: same menus and drill-down, no new library.
pivotbuiltgrammar.pivot() + TanStack
@tanstack/table-core@9.3.1
now
List
Same virtualiser as the table, another row template; 0 KB extra.
list (Bases)builtTanStack Virtual
@tanstack/virtual-core@3.19.7
later
Cards / gallery
`lanes` give grid now and masonry later in one virtualiser; 0 KB extra. Live in the report.
cards (Bases)builtTanStack Virtual (lanes) + CSS
@tanstack/virtual-core@3.19.7
now
Image / media grid
Cards plus a lightbox; the mature MIT one, 12 CSS variables. lightGallery is GPL, Fancybox paid.
cards + lightbox:builtPhotoSwipe
photoswipe@5.4.4
soon
Chart
The `chart:` block is Vega-Lite: the grammar agents and Altair already write; every chart type asked. 283 KB gz, lazy. Live in the report.
chartbuiltVega-Lite + vega-embed
vega@6.4.0, vega-lite@6.5.0, vega-embed@7.3.0
now
KPI card / stat
The survey's kit as the SPEC renamed it; a 60-line SVG sparkline, no chart engine. Tremor is React + Tailwind and stale.
kpibuilt<data-kpi> + <data-value> + <data-sparkline>
none (ours)
soon
Kanban / board
Bases' own type since 1.14. Headless drag (7 KB) that never moves a node, so edits are proposals and columns virtualise. Live in the report.
kanban (Bases)builtPragmatic drag and drop (+ hitbox)
@atlaskit/pragmatic-drag-and-drop@4.0.0, @atlaskit/pragmatic-drag-and-drop-hitbox@3.0.0, @tanstack/virtual-core@3.19.7
soon
Calendar
Framework-free, MIT, resource and timeline views free, 29 CSS variables. FullCalendar and Schedule-X paywall what we'd use.
calendarbuiltEvent Calendar (vkurko)
@event-calendar/build@5.18.1
later
Timeline / Gantt
Lanes of runs on a zoomable axis is its whole job; dual Apache/MIT. Frappe Gantt only if dependencies are ever needed.
timelinebuiltvis-timeline
vis-timeline@8.5.5
later
Map
The engine Obsidian's own Maps plugin uses, with its ten keys as-is; basemap self-hosted (PMTiles), never a tile CDN.
map (Bases)builtMapLibre GL + PMTiles
maplibre-gl@6.16.0, pmtiles@4.5.0
later
Tree / hierarchy
TanStack sub-rows on the table and list views; 0 KB extra. Not a new type.
table / list + tree:builtTanStack Table sub-rows
@tanstack/table-core@9.3.1
soon
Graph / network
Zach's call; also his Block View chassis. A React island: 128 KB gz with React, 61 KB where React is already loaded.
graphbuiltReact Flow (@xyflow/react)
@xyflow/react@12.12.0, react@19.3.1, react-dom@19.3.1, @dagrejs/dagre@3.1.3
soon
Record / peek / detail page
The lane's peek, generalised into the one record surface every view opens.
recordbuiltThe lane's peek, generalised
none (ours)
now
Form / editor
No framework-free stock form fits; native inputs over the dataset's own property schema, submits as proposals.
record + edit: truebuiltNative inputs over the property schema
none (ours)
later
Compare (side by side)
No maintained compare component exists; it is the table on transposed rows, plus a 4 KB image slider.
comparebuiltTanStack Table on transposed rows
@tanstack/table-core@9.3.1, img-comparison-slider@8.0.7
soon