@ai-matrx/records-ui 0.43.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, ValueEnvelope, WorkInboxKind, RuleExpression, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, ValueEnvelope, WorkInboxKind, RuleExpression, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -95,7 +95,7 @@ interface RecordChatContext {
95
95
  tableName: string;
96
96
  /** The record's own title, for the panel's one-row header and the chip. */
97
97
  title: string;
98
- /** What the scope chip says: `About: Acme Industrial`. */
98
+ /** What the scope chip says: `About: Fairhaven Steelworks`. */
99
99
  chip: string;
100
100
  /** The grounding, already read through the read door. */
101
101
  entries: RecordChatEntry[];
@@ -645,6 +645,19 @@ interface GridEditing {
645
645
  * this file's header describes.
646
646
  */
647
647
  commit: (move?: "next" | "previous" | null) => void;
648
+ /**
649
+ * WRITE ONE CELL OUTRIGHT, with no editor ever opening.
650
+ *
651
+ * LIMITS-FIX 2026-09-21. Every other cell in this grid is a value you TYPE, so it has an
652
+ * open state, a draft and a commit. A tick box is not: the control IS the value, and a
653
+ * person ticking it expects it saved, the way it is in Airtable and in every spreadsheet
654
+ * in the world. Routing that through begin → type → commit would have meant three state
655
+ * updates before one click could be written, which is precisely the stale-draft class
656
+ * this file's header is about. So a checkbox writes straight through the same queued,
657
+ * versioned, optimistic write path every other cell uses — the refusal, the conflict and
658
+ * the "Try again" beside it are identical.
659
+ */
660
+ setCell: (rowId: Uuid$1, key: string, value: unknown) => void;
648
661
  /** Write the attempted value again, after re-reading the version. */
649
662
  retry: (rowId: Uuid$1, key: string) => void;
650
663
  /** Drop the edit and show what the other person wrote. */
@@ -985,14 +998,14 @@ type PlainFieldType = "text" | "long_text" | "number";
985
998
  * `"relation"` for one since long before that. Only the menu did not offer it,
986
999
  * so the guide's section 3 told a person to pick a kind that did not exist.
987
1000
  *
988
- * It is NOT a fourteenth parity type. `custom.parity_field_types()` ships
989
- * thirteen and a relation is a BEHAVIOUR — the same behaviour `member` and
1001
+ * It is NOT a parity type of its own. `custom.parity_field_types()` ships
1002
+ * fourteen (the fourteenth is `checkbox`) and a relation is a BEHAVIOUR — the same behaviour `member` and
990
1003
  * `attachment` are made of — so it sits beside the three plain ones as its own
991
1004
  * word, and `parityTypesWithNoExplanation()` is unaffected by it in both
992
1005
  * directions: it does not appear there, and it cannot hide a real gap there.
993
1006
  */
994
1007
  type RelationFieldType = "relation";
995
- /** What a person picks in the panel: one of the thirteen, one of the three, or a link. */
1008
+ /** What a person picks in the panel: one of the fourteen, one of the three, or a link. */
996
1009
  type PickableFieldType = ParityFieldType | PlainFieldType | RelationFieldType;
997
1010
  interface FieldTypeChoice {
998
1011
  id: PickableFieldType;
@@ -1006,7 +1019,7 @@ interface FieldTypeChoice {
1006
1019
  declare const FIELD_TYPE_CHOICES: FieldTypeChoice[];
1007
1020
  declare const FIELD_TYPE_GROUPS: FieldTypeChoice["group"][];
1008
1021
  declare function fieldTypeChoice(id: string): FieldTypeChoice | undefined;
1009
- /** The three that are a plain behaviour rather than one of the thirteen. */
1022
+ /** The three that are a plain behaviour rather than one of the fourteen. */
1010
1023
  declare function isPlainFieldType(id: string): id is PlainFieldType;
1011
1024
  /**
1012
1025
  * The one that is a relation a person aims themselves. It is neither plain nor
@@ -1453,6 +1466,12 @@ interface ViewBarProps {
1453
1466
  seed?: SavedViewSpec[] | undefined;
1454
1467
  className?: string | undefined;
1455
1468
  }
1469
+ /**
1470
+ * What the bar says when this organization's saved-view Table cannot be levelled. It
1471
+ * names the ONE thing that is missing (the remembered layouts) and nothing else, because
1472
+ * everything else on the page still works and a longer sentence would suggest otherwise.
1473
+ */
1474
+ declare const SAVED_VIEWS_UNAVAILABLE: string;
1456
1475
  declare function ViewBar({ tableId, activeViewId, onActiveView, seed, className }: ViewBarProps): react.JSX.Element;
1457
1476
 
1458
1477
  /** One proposed change, in the proposer's words plus the exact act it asks for. */
@@ -2299,6 +2318,7 @@ interface TablesHomeProps {
2299
2318
  }
2300
2319
  declare function TablesHome({ onOpenTable, className }: TablesHomeProps): react.JSX.Element;
2301
2320
 
2321
+ type Rail = "none" | "settings" | "inbox" | "import" | "field" | "record" | "new-record" | "forms" | "bookings" | "checklists" | "notifications" | "portals" | "who-changed";
2302
2322
  interface TablePageProps {
2303
2323
  tableId: Uuid$1;
2304
2324
  /** Rows per page for every layout. */
@@ -2330,6 +2350,19 @@ interface TablePageProps {
2330
2350
  * it always has.
2331
2351
  */
2332
2352
  activeDashboardId?: Uuid$1 | null | undefined;
2353
+ /**
2354
+ * THE RECORD A LINK NAMED, OPENED ON ARRIVAL.
2355
+ *
2356
+ * 🚨 THE DEAD LINK THIS CLOSES (lane SCREENS-2, 2026-09-20). `ActionInbox` has always
2357
+ * handed its host `onOpenRecord(recordId, tableId)`, and the app has always routed that to
2358
+ * `/data-v2/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
2359
+ * checklist step, an assignment or an agent's proposal landed you on the table with the
2360
+ * record still shut, which is the inbox not finishing the sentence it started. Measured in
2361
+ * the real app on a dental practice's onboarding steps.
2362
+ *
2363
+ * Absent, nothing changes: the page opens exactly as it did.
2364
+ */
2365
+ activeRecordId?: Uuid$1 | null | undefined;
2333
2366
  className?: string | undefined;
2334
2367
  }
2335
2368
  /**
@@ -2371,7 +2404,112 @@ declare const DEFAULT_VIEW_NAME = "All records";
2371
2404
  * it: the bar above saves a view, and from then on the layout is remembered.
2372
2405
  */
2373
2406
  declare const VIEW_NOT_SAVED_YET: string;
2374
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, className, }: TablePageProps): react.JSX.Element;
2407
+ /**
2408
+ * THE TWO WAYS TO LOOK AT ONE TABLE'S RECORDS, and they are not two places in
2409
+ * the app. The views show the records; the canvas counts them — same table,
2410
+ * same door, same page, one control between them. A dashboard that lived
2411
+ * somewhere else in the product would be a second answer to "how is the work
2412
+ * going", reached by knowing where to click.
2413
+ */
2414
+ type MainView = "records" | "dashboards";
2415
+ /**
2416
+ * WHAT THE PAGE IS SHOWING — the middle and the right-hand panel, as ONE answer.
2417
+ *
2418
+ * 🚨 THE DEFECT THIS CLOSES (lane LIMITS-FIX-UI, 2026-09-21). That row of buttons was
2419
+ * TWO state machines wearing one coat. `main` decided the middle of the page, `rail`
2420
+ * decided the panel, and nothing joined them — so Ridgeline Physical Therapy's owner
2421
+ * pressed Dashboards, then Checklists, and her ten patients vanished:
2422
+ *
2423
+ * crew B2 — "The 'Dashboards' tab stayed highlighted/active in the toolbar while the
2424
+ * right-side panel showed 'Checklists' content instead, AND the main grid area
2425
+ * collapsed to the Dashboards empty state with no rows and no 'New record' button
2426
+ * visible at all — the grid itself disappeared."
2427
+ *
2428
+ * Reproduced headless on the live app: `aria-pressed` was "true" on Dashboards, ABSENT
2429
+ * on Checklists, no grid in the document, no New record. Absent on Checklists because
2430
+ * the nine rail buttons carried no pressed state AT ALL: the only tab that ever looked
2431
+ * chosen was the one that was not.
2432
+ */
2433
+ interface Surface {
2434
+ main: MainView;
2435
+ rail: Rail;
2436
+ }
2437
+ /** Which button in the row was pressed. Exactly one of the two, always. */
2438
+ type SurfacePress = {
2439
+ rail: Rail;
2440
+ main?: never;
2441
+ } | {
2442
+ main: MainView;
2443
+ rail?: never;
2444
+ };
2445
+ /**
2446
+ * THE ONE FUNCTION THAT DECIDES BOTH, so a tab can never contradict the page.
2447
+ *
2448
+ * Two rules, and they are the whole of it:
2449
+ * · pressing the button that is already chosen closes it — the gesture everybody expects;
2450
+ * · OPENING A PANEL BRINGS THE RECORDS BACK. A panel is read BESIDE the records (the
2451
+ * checklists ON these patients, the forms that write to them), so opening one over an
2452
+ * empty dashboard canvas is a person asking for the table, not asking to lose it.
2453
+ * Opening the DASHBOARDS over a panel leaves the panel exactly where it was, because
2454
+ * that direction takes nothing away.
2455
+ */
2456
+ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface;
2457
+ /**
2458
+ * Is THIS button the chosen one? Every control in the row asks it, so every control in
2459
+ * the row tells a person and their screen reader the same true thing — `aria-pressed`
2460
+ * and the pressed look come from one answer rather than nine independent guesses.
2461
+ */
2462
+ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2463
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2464
+
2465
+ /** What the roster can tell us about a user id. `null` when it cannot. */
2466
+ type ResolveName = (userId: Uuid$1) => string | null;
2467
+ /** The honest stand-in when nobody and nothing can put a name to the author. */
2468
+ declare const SOMEBODY = "somebody in this organization";
2469
+ /** The platform's own word for itself. Never "null", never "system_user". */
2470
+ declare const THE_SYSTEM = "the system";
2471
+ /**
2472
+ * WHO, in the words a person reads. One place, so the grid cell, the record
2473
+ * timeline and the column history cannot drift into three different answers.
2474
+ */
2475
+ declare function actorWords(actor: HistoryActor, resolve?: ResolveName | undefined): string;
2476
+ /** How long ago, in the words a person uses out loud. */
2477
+ declare function whenWords(at: string, now?: Date): string;
2478
+ /**
2479
+ * THE WHOLE ANSWER, as one sentence, ending in what to do to see the rest.
2480
+ * `null` is a real state and gets its own sentence: this column has never been
2481
+ * changed on this record since the store started keeping versions, which is not
2482
+ * the same as "we could not find out".
2483
+ */
2484
+ declare function lastChangeSentence(fieldLabel: string, entry: FieldHistoryEntry | null, resolve?: ResolveName | undefined): string;
2485
+ /**
2486
+ * The SHORT form the badge wears once it knows: a name a person recognises at a
2487
+ * glance, in the width of a cell corner. Never a uuid, never an email's domain.
2488
+ */
2489
+ declare function actorBadge(actor: HistoryActor, resolve?: ResolveName | undefined): string;
2490
+
2491
+ /** What a cell knows about who last touched it. */
2492
+ interface WhoChanged {
2493
+ /** The short name for the badge, once known. `null` while nobody has asked. */
2494
+ badge: string | null;
2495
+ /** The whole sentence for the hover. `null` while nobody has asked. */
2496
+ sentence: string | null;
2497
+ /** Ask. Idempotent, cached, and a no-op with no source mounted. */
2498
+ ask: () => void;
2499
+ }
2500
+ /**
2501
+ * Mounted by the grid, once, with the table its cells belong to. Absent — a cell
2502
+ * rendered on its own, a host that binds nothing — every badge simply goes on
2503
+ * asking its question, exactly as before, and nothing throws.
2504
+ */
2505
+ declare function WhoChangedSource({ tableId, labelOf, children, }: {
2506
+ tableId: Uuid$1;
2507
+ /** The Field's own label, so the sentence reads "Primary diagnosis" and not `primary_diagnosis`. */
2508
+ labelOf: (fieldKey: string) => string;
2509
+ children: ReactNode;
2510
+ }): react.JSX.Element;
2511
+ /** What this cell can say about who last changed it. */
2512
+ declare function useWhoChanged(fieldKey: string, recordId: Uuid$1): WhoChanged;
2375
2513
 
2376
2514
  /** One Field a person asked for, in the words a person uses (FLD-1 / FLD-11). */
2377
2515
  interface NewFieldSpec {
@@ -2500,4 +2638,4 @@ interface PipelineBoardProps {
2500
2638
  }
2501
2639
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2502
2640
 
2503
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MyChecklistSteps, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, SERIES_COLORS, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, colorFromTheValue, columnForField, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable };
2641
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, ValueEnvelope, WorkInboxKind, RuleExpression, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, WriteConflict, ParityFieldType, NewFieldDeclaration, ValueEnvelope, WorkInboxKind, RuleExpression, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -95,7 +95,7 @@ interface RecordChatContext {
95
95
  tableName: string;
96
96
  /** The record's own title, for the panel's one-row header and the chip. */
97
97
  title: string;
98
- /** What the scope chip says: `About: Acme Industrial`. */
98
+ /** What the scope chip says: `About: Fairhaven Steelworks`. */
99
99
  chip: string;
100
100
  /** The grounding, already read through the read door. */
101
101
  entries: RecordChatEntry[];
@@ -645,6 +645,19 @@ interface GridEditing {
645
645
  * this file's header describes.
646
646
  */
647
647
  commit: (move?: "next" | "previous" | null) => void;
648
+ /**
649
+ * WRITE ONE CELL OUTRIGHT, with no editor ever opening.
650
+ *
651
+ * LIMITS-FIX 2026-09-21. Every other cell in this grid is a value you TYPE, so it has an
652
+ * open state, a draft and a commit. A tick box is not: the control IS the value, and a
653
+ * person ticking it expects it saved, the way it is in Airtable and in every spreadsheet
654
+ * in the world. Routing that through begin → type → commit would have meant three state
655
+ * updates before one click could be written, which is precisely the stale-draft class
656
+ * this file's header is about. So a checkbox writes straight through the same queued,
657
+ * versioned, optimistic write path every other cell uses — the refusal, the conflict and
658
+ * the "Try again" beside it are identical.
659
+ */
660
+ setCell: (rowId: Uuid$1, key: string, value: unknown) => void;
648
661
  /** Write the attempted value again, after re-reading the version. */
649
662
  retry: (rowId: Uuid$1, key: string) => void;
650
663
  /** Drop the edit and show what the other person wrote. */
@@ -985,14 +998,14 @@ type PlainFieldType = "text" | "long_text" | "number";
985
998
  * `"relation"` for one since long before that. Only the menu did not offer it,
986
999
  * so the guide's section 3 told a person to pick a kind that did not exist.
987
1000
  *
988
- * It is NOT a fourteenth parity type. `custom.parity_field_types()` ships
989
- * thirteen and a relation is a BEHAVIOUR — the same behaviour `member` and
1001
+ * It is NOT a parity type of its own. `custom.parity_field_types()` ships
1002
+ * fourteen (the fourteenth is `checkbox`) and a relation is a BEHAVIOUR — the same behaviour `member` and
990
1003
  * `attachment` are made of — so it sits beside the three plain ones as its own
991
1004
  * word, and `parityTypesWithNoExplanation()` is unaffected by it in both
992
1005
  * directions: it does not appear there, and it cannot hide a real gap there.
993
1006
  */
994
1007
  type RelationFieldType = "relation";
995
- /** What a person picks in the panel: one of the thirteen, one of the three, or a link. */
1008
+ /** What a person picks in the panel: one of the fourteen, one of the three, or a link. */
996
1009
  type PickableFieldType = ParityFieldType | PlainFieldType | RelationFieldType;
997
1010
  interface FieldTypeChoice {
998
1011
  id: PickableFieldType;
@@ -1006,7 +1019,7 @@ interface FieldTypeChoice {
1006
1019
  declare const FIELD_TYPE_CHOICES: FieldTypeChoice[];
1007
1020
  declare const FIELD_TYPE_GROUPS: FieldTypeChoice["group"][];
1008
1021
  declare function fieldTypeChoice(id: string): FieldTypeChoice | undefined;
1009
- /** The three that are a plain behaviour rather than one of the thirteen. */
1022
+ /** The three that are a plain behaviour rather than one of the fourteen. */
1010
1023
  declare function isPlainFieldType(id: string): id is PlainFieldType;
1011
1024
  /**
1012
1025
  * The one that is a relation a person aims themselves. It is neither plain nor
@@ -1453,6 +1466,12 @@ interface ViewBarProps {
1453
1466
  seed?: SavedViewSpec[] | undefined;
1454
1467
  className?: string | undefined;
1455
1468
  }
1469
+ /**
1470
+ * What the bar says when this organization's saved-view Table cannot be levelled. It
1471
+ * names the ONE thing that is missing (the remembered layouts) and nothing else, because
1472
+ * everything else on the page still works and a longer sentence would suggest otherwise.
1473
+ */
1474
+ declare const SAVED_VIEWS_UNAVAILABLE: string;
1456
1475
  declare function ViewBar({ tableId, activeViewId, onActiveView, seed, className }: ViewBarProps): react.JSX.Element;
1457
1476
 
1458
1477
  /** One proposed change, in the proposer's words plus the exact act it asks for. */
@@ -2299,6 +2318,7 @@ interface TablesHomeProps {
2299
2318
  }
2300
2319
  declare function TablesHome({ onOpenTable, className }: TablesHomeProps): react.JSX.Element;
2301
2320
 
2321
+ type Rail = "none" | "settings" | "inbox" | "import" | "field" | "record" | "new-record" | "forms" | "bookings" | "checklists" | "notifications" | "portals" | "who-changed";
2302
2322
  interface TablePageProps {
2303
2323
  tableId: Uuid$1;
2304
2324
  /** Rows per page for every layout. */
@@ -2330,6 +2350,19 @@ interface TablePageProps {
2330
2350
  * it always has.
2331
2351
  */
2332
2352
  activeDashboardId?: Uuid$1 | null | undefined;
2353
+ /**
2354
+ * THE RECORD A LINK NAMED, OPENED ON ARRIVAL.
2355
+ *
2356
+ * 🚨 THE DEAD LINK THIS CLOSES (lane SCREENS-2, 2026-09-20). `ActionInbox` has always
2357
+ * handed its host `onOpenRecord(recordId, tableId)`, and the app has always routed that to
2358
+ * `/data-v2/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
2359
+ * checklist step, an assignment or an agent's proposal landed you on the table with the
2360
+ * record still shut, which is the inbox not finishing the sentence it started. Measured in
2361
+ * the real app on a dental practice's onboarding steps.
2362
+ *
2363
+ * Absent, nothing changes: the page opens exactly as it did.
2364
+ */
2365
+ activeRecordId?: Uuid$1 | null | undefined;
2333
2366
  className?: string | undefined;
2334
2367
  }
2335
2368
  /**
@@ -2371,7 +2404,112 @@ declare const DEFAULT_VIEW_NAME = "All records";
2371
2404
  * it: the bar above saves a view, and from then on the layout is remembered.
2372
2405
  */
2373
2406
  declare const VIEW_NOT_SAVED_YET: string;
2374
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, className, }: TablePageProps): react.JSX.Element;
2407
+ /**
2408
+ * THE TWO WAYS TO LOOK AT ONE TABLE'S RECORDS, and they are not two places in
2409
+ * the app. The views show the records; the canvas counts them — same table,
2410
+ * same door, same page, one control between them. A dashboard that lived
2411
+ * somewhere else in the product would be a second answer to "how is the work
2412
+ * going", reached by knowing where to click.
2413
+ */
2414
+ type MainView = "records" | "dashboards";
2415
+ /**
2416
+ * WHAT THE PAGE IS SHOWING — the middle and the right-hand panel, as ONE answer.
2417
+ *
2418
+ * 🚨 THE DEFECT THIS CLOSES (lane LIMITS-FIX-UI, 2026-09-21). That row of buttons was
2419
+ * TWO state machines wearing one coat. `main` decided the middle of the page, `rail`
2420
+ * decided the panel, and nothing joined them — so Ridgeline Physical Therapy's owner
2421
+ * pressed Dashboards, then Checklists, and her ten patients vanished:
2422
+ *
2423
+ * crew B2 — "The 'Dashboards' tab stayed highlighted/active in the toolbar while the
2424
+ * right-side panel showed 'Checklists' content instead, AND the main grid area
2425
+ * collapsed to the Dashboards empty state with no rows and no 'New record' button
2426
+ * visible at all — the grid itself disappeared."
2427
+ *
2428
+ * Reproduced headless on the live app: `aria-pressed` was "true" on Dashboards, ABSENT
2429
+ * on Checklists, no grid in the document, no New record. Absent on Checklists because
2430
+ * the nine rail buttons carried no pressed state AT ALL: the only tab that ever looked
2431
+ * chosen was the one that was not.
2432
+ */
2433
+ interface Surface {
2434
+ main: MainView;
2435
+ rail: Rail;
2436
+ }
2437
+ /** Which button in the row was pressed. Exactly one of the two, always. */
2438
+ type SurfacePress = {
2439
+ rail: Rail;
2440
+ main?: never;
2441
+ } | {
2442
+ main: MainView;
2443
+ rail?: never;
2444
+ };
2445
+ /**
2446
+ * THE ONE FUNCTION THAT DECIDES BOTH, so a tab can never contradict the page.
2447
+ *
2448
+ * Two rules, and they are the whole of it:
2449
+ * · pressing the button that is already chosen closes it — the gesture everybody expects;
2450
+ * · OPENING A PANEL BRINGS THE RECORDS BACK. A panel is read BESIDE the records (the
2451
+ * checklists ON these patients, the forms that write to them), so opening one over an
2452
+ * empty dashboard canvas is a person asking for the table, not asking to lose it.
2453
+ * Opening the DASHBOARDS over a panel leaves the panel exactly where it was, because
2454
+ * that direction takes nothing away.
2455
+ */
2456
+ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface;
2457
+ /**
2458
+ * Is THIS button the chosen one? Every control in the row asks it, so every control in
2459
+ * the row tells a person and their screen reader the same true thing — `aria-pressed`
2460
+ * and the pressed look come from one answer rather than nine independent guesses.
2461
+ */
2462
+ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2463
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2464
+
2465
+ /** What the roster can tell us about a user id. `null` when it cannot. */
2466
+ type ResolveName = (userId: Uuid$1) => string | null;
2467
+ /** The honest stand-in when nobody and nothing can put a name to the author. */
2468
+ declare const SOMEBODY = "somebody in this organization";
2469
+ /** The platform's own word for itself. Never "null", never "system_user". */
2470
+ declare const THE_SYSTEM = "the system";
2471
+ /**
2472
+ * WHO, in the words a person reads. One place, so the grid cell, the record
2473
+ * timeline and the column history cannot drift into three different answers.
2474
+ */
2475
+ declare function actorWords(actor: HistoryActor, resolve?: ResolveName | undefined): string;
2476
+ /** How long ago, in the words a person uses out loud. */
2477
+ declare function whenWords(at: string, now?: Date): string;
2478
+ /**
2479
+ * THE WHOLE ANSWER, as one sentence, ending in what to do to see the rest.
2480
+ * `null` is a real state and gets its own sentence: this column has never been
2481
+ * changed on this record since the store started keeping versions, which is not
2482
+ * the same as "we could not find out".
2483
+ */
2484
+ declare function lastChangeSentence(fieldLabel: string, entry: FieldHistoryEntry | null, resolve?: ResolveName | undefined): string;
2485
+ /**
2486
+ * The SHORT form the badge wears once it knows: a name a person recognises at a
2487
+ * glance, in the width of a cell corner. Never a uuid, never an email's domain.
2488
+ */
2489
+ declare function actorBadge(actor: HistoryActor, resolve?: ResolveName | undefined): string;
2490
+
2491
+ /** What a cell knows about who last touched it. */
2492
+ interface WhoChanged {
2493
+ /** The short name for the badge, once known. `null` while nobody has asked. */
2494
+ badge: string | null;
2495
+ /** The whole sentence for the hover. `null` while nobody has asked. */
2496
+ sentence: string | null;
2497
+ /** Ask. Idempotent, cached, and a no-op with no source mounted. */
2498
+ ask: () => void;
2499
+ }
2500
+ /**
2501
+ * Mounted by the grid, once, with the table its cells belong to. Absent — a cell
2502
+ * rendered on its own, a host that binds nothing — every badge simply goes on
2503
+ * asking its question, exactly as before, and nothing throws.
2504
+ */
2505
+ declare function WhoChangedSource({ tableId, labelOf, children, }: {
2506
+ tableId: Uuid$1;
2507
+ /** The Field's own label, so the sentence reads "Primary diagnosis" and not `primary_diagnosis`. */
2508
+ labelOf: (fieldKey: string) => string;
2509
+ children: ReactNode;
2510
+ }): react.JSX.Element;
2511
+ /** What this cell can say about who last changed it. */
2512
+ declare function useWhoChanged(fieldKey: string, recordId: Uuid$1): WhoChanged;
2375
2513
 
2376
2514
  /** One Field a person asked for, in the words a person uses (FLD-1 / FLD-11). */
2377
2515
  interface NewFieldSpec {
@@ -2500,4 +2638,4 @@ interface PipelineBoardProps {
2500
2638
  }
2501
2639
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2502
2640
 
2503
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MyChecklistSteps, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, SERIES_COLORS, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, colorFromTheValue, columnForField, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable };
2641
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };