Something went wrong

Thank you for being patient! We're working hard on resolving the issue

Why a Standalone Library - Lona Docs Log in

Why a Standalone Library

@tento-lona/sheets carries the row taxonomy, render pipeline, and backend interface — but it has zero dependency on @tento-lona. This split is intentional.

Dependency direction

@tento-core       (data structures, algorithms — dep-free utilities)
       ↑
@tento-lona/sheets      (data model + render pipeline — NO DOM, NO SDK client)
       ↑
@tento-lona           (SDK client: LonaSdk, RowClient, indices, prefs)
       ↑
@tento-lona/sheets-ui    (DOM platform impl: Sheet web component, plugins, gestures)
       ↑
lona-so            (application: app-specific UI, LonaApi, feature flags)

A consumer can pick the level it needs:

  • A test or fixture writer that round-trips wire data uses @tento-lona/sheets alone.
  • A renderer back-end (CLI, TUI, native canvas) consumes @tento-lona/sheets plus its own platform layer — no SDK client needed.
  • An app like lona-so opens an SDK client (@tento-lona) and composes the DOM front-end (@tento-lona/sheets-ui) on top.

What stays here

  • IdentitySheet, SheetRow, RowKey, RowId, RowLocalId
  • Wire vocabularyDtype, CellEntry, CellValue, CellStyle, Cardinality, the canonical encodings (EVENT_V1, TASK_V1, WEATHER_V1, SLOT_V1)
  • BackendsBackend interface plus TestBackend, NormalizingBackend, CanonicalBackend, HttpBackend
  • Row-type registryROW_TYPE_SPECS, reconcileAttributes, resolveChildren, dataPresetToChildSpecs
  • Alias templatesALIAS_TEMPLATES, expandAliasInstance, resolveAliasActiveLayout, the built-in alias factories
  • System rowsbuildSystemRows, HEADERS_STATIC, FOOTERS_STATIC
  • Render pipelinePerTypeSpec, RenderScene, buildScene, diffScene, TreeWatcher, LayoutEngine, RenderPlan, plugin data providers, TuiReconciler
  • Pure chart dataLinearYScaler, castData, formatValue, GraphData, ChartPointerStore, DiscreteConvolution

What stays in @tento-lona

  • SDK runtimeLonaSdk.Client, RowClient, CellHandle, RangeCellHandle, RowsAccessor
  • Domain clientsCalendarClient, EventsClient, TasksClient, ChatAgentClient, SchedulingLinksClient, SyncClient
  • PreferencesPreferencesClient and the per-feature stores
  • IndicesEventsIndex, TasksIndex, DataIndex, RegressionIndex (cache-backed accessors over the canonical cells the rows-side Sheet exposes)
  • View modelSheetViewModel, RowTree, buildRowTree

If a name clearly belongs to "data model" or "render pipeline" but sits in @tento-lona, it's a migration candidate — open an issue.

See also