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 type | Status | Stock part | Priority |
|---|---|---|---|---|
| Table Decided by the table lane: headless engine, Notion-like surface ours, 36 KB gz, 22/22 checks. | table (Bases) | built | TanStack 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. | pivot | built | grammar.pivot() + TanStack@tanstack/table-core@9.3.1 | now |
| List Same virtualiser as the table, another row template; 0 KB extra. | list (Bases) | built | TanStack 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) | built | TanStack 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: | built | PhotoSwipephotoswipe@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. | chart | built | Vega-Lite + vega-embedvega@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. | kpi | built | <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) | built | Pragmatic 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. | calendar | built | Event 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. | timeline | built | vis-timelinevis-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) | built | MapLibre GL + PMTilesmaplibre-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: | built | TanStack 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. | graph | built | React 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. | record | built | The lane's peek, generalisednone (ours) | now |
| Form / editor No framework-free stock form fits; native inputs over the dataset's own property schema, submits as proposals. | record + edit: true | built | Native inputs over the property schemanone (ours) | later |
| Compare (side by side) No maintained compare component exists; it is the table on transposed rows, plus a 4 KB image slider. | compare | built | TanStack Table on transposed rows@tanstack/table-core@9.3.1, img-comparison-slider@8.0.7 | soon |