@ai-matrx/records-ui 0.59.0 → 0.61.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
@@ -1165,6 +1165,33 @@ declare function conditionInWords(expr: RuleExpression | Record<string, unknown>
1165
1165
  declare function conditionValue(typed: string): string | number | boolean;
1166
1166
  /** The one condition row. It writes the store's own Rule expression, by Field id. */
1167
1167
  declare function ConditionRow({ lead, expr, fields, onChange, emptyLabel, className }: ConditionRowProps): react.JSX.Element;
1168
+ /**
1169
+ * CAN THE BUILDER DRAW THIS CONDITION? — the question every caller asks before it renders,
1170
+ * and the reason a rule somebody cannot see is never silently saved over.
1171
+ *
1172
+ * Drawable means: nothing; one clause; or an ALL/ANY of clauses, where a member may itself
1173
+ * be one ALL/ANY of clauses and no deeper. `conditionIsSimple` is still the leaf test and
1174
+ * still exported — `ConditionRow` alone is a legitimate mount (the form builder's one row).
1175
+ */
1176
+ declare function conditionIsDrawable(expr: RuleExpression | Record<string, unknown> | null | undefined, depth?: number): boolean;
1177
+ interface ConditionGroupProps {
1178
+ /** The words before the condition: "When", "Ask only when". */
1179
+ lead: string;
1180
+ expr: RuleExpression | Record<string, unknown> | null | undefined;
1181
+ fields: ConditionField[];
1182
+ onChange: (next: RuleExpression | null) => void;
1183
+ /** What the empty option says: "always", "every card". */
1184
+ emptyLabel?: string;
1185
+ /** false inside a nested group — one level of nesting, and the screen says so by omission. */
1186
+ allowNesting?: boolean;
1187
+ className?: string | undefined;
1188
+ }
1189
+ /**
1190
+ * THE ONE CONDITION BUILDER. One clause reads exactly as it always has — a single row, no
1191
+ * joiner, no chrome — and the joiner appears only once there is something to join, so a
1192
+ * person writing one condition never meets a control for a problem they do not have.
1193
+ */
1194
+ declare function ConditionGroup({ lead, expr, fields, onChange, emptyLabel, allowNesting, className, }: ConditionGroupProps): react.JSX.Element;
1168
1195
 
1169
1196
  interface FieldProposalRow {
1170
1197
  id: string;
@@ -1250,6 +1277,13 @@ declare function RecordChip({ title, onRemove, className, }: {
1250
1277
 
1251
1278
  /** Answers "what is the record with this id called", for one Field's values. */
1252
1279
  type LabelLookup = (field: Field$1, id: string) => string | null;
1280
+ /**
1281
+ * HOW LONG A CELL MAY SAY "Loading…" BEFORE IT HAS TO SAY WHAT IT IS WAITING
1282
+ * FOR. One second is the span at which a person stops reading a word as "this
1283
+ * is about to happen" and starts reading it as "this is stuck" — the same line
1284
+ * Nielsen's response-time work draws and the one Linear and Stripe design to.
1285
+ */
1286
+ declare const SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS = 1000;
1253
1287
  /** Which ids a Field's stored value refers to. */
1254
1288
  declare function idsOf(value: unknown): string[];
1255
1289
  declare function isId(value: unknown): boolean;
@@ -1264,10 +1298,16 @@ declare function RecordLabelProvider({ children }: {
1264
1298
  * per cell, and it is why a grid of 200 rows asks the store twice.
1265
1299
  */
1266
1300
  declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelLookup;
1301
+ /**
1302
+ * WHAT THIS COLUMN IS STILL WAITING FOR, or null while "Loading…" is still an
1303
+ * honest word. A cell draws this INSTEAD of "Loading…" once the resolver has
1304
+ * been looking for a second — see `SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS`.
1305
+ */
1306
+ declare function useLabelWait(field: Field$1 | undefined): string | null;
1267
1307
 
1268
1308
  /** The envelope for one key, when the document carries one. */
1269
1309
  declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
1270
- declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup): react.JSX.Element;
1310
+ declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): react.JSX.Element;
1271
1311
  /**
1272
1312
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
1273
1313
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -1278,7 +1318,15 @@ declare function renderValue(field: Field, value: unknown, document?: RecordDocu
1278
1318
  * reads like a value, and the 19 September verdict found it in choice cells,
1279
1319
  * relation cells and as every Kanban column heading.
1280
1320
  */
1281
- declare function scalarText(field: Field, value: unknown, labels?: LabelLookup): string;
1321
+ declare function scalarText(field: Field, value: unknown, labels?: LabelLookup,
1322
+ /**
1323
+ * WHAT THIS COLUMN IS WAITING FOR, once it has been looking long enough to owe
1324
+ * a sentence (`useLabelWait`). "Loading…" is honest for a moment and a lie with
1325
+ * a spinner on it after that: VERIFIER-8 MEDIUM-1 watched a whole relation
1326
+ * column say it for 10-13 seconds while the rest of the grid sat readable
1327
+ * behind it, and nothing on screen said what it was waiting for.
1328
+ */
1329
+ stillWaitingFor?: string | null): string;
1282
1330
  /** The provenance badge a value carries when the store interned a source for it (SCR-27). */
1283
1331
  declare function ProvenanceBadge({ document, fieldKey }: {
1284
1332
  document: RecordDocument | undefined;
@@ -1484,6 +1532,37 @@ declare const VIEW_TABLE: SystemTableSpec;
1484
1532
  * screen and any agent writing a view spec must agree about what is offerable.
1485
1533
  */
1486
1534
  declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1535
+ /**
1536
+ * ─────────────────────────────────────────────────────────────────────────────
1537
+ * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1538
+ *
1539
+ * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1540
+ * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1541
+ * switcher was there, the four buttons worked, and the parameter was read by
1542
+ * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1543
+ * a grid, and nothing on the screen said the view had been dropped. A link that
1544
+ * does not land is the inbox-link defect (`activeRecordId`) and the dashboard
1545
+ * defect (`activeDashboardId`) for the third time, so this is the same shape of
1546
+ * fix: the URL names it, the page opens on it, and the URL FOLLOWS the person
1547
+ * when they pick another.
1548
+ *
1549
+ * The dashboards are a fifth value and not a special case: to the person, "the
1550
+ * dashboard" is one of the ways to look at this table, and a link to it has to
1551
+ * work like a link to the board.
1552
+ */
1553
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1554
+ type PageView = (typeof PAGE_VIEWS)[number];
1555
+ declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1556
+ /**
1557
+ * What a `?view=` value means, or `null` when it means nothing here.
1558
+ *
1559
+ * `null` is NOT "show the grid": the caller is expected to say that the link
1560
+ * named something this table has no view for, because silently substituting a
1561
+ * different view is exactly the defect above wearing a parser.
1562
+ */
1563
+ declare function pageViewFromParam(raw: string | null | undefined): PageView | null;
1564
+ /** The sentence a link that named a view nobody has says. Never silent. */
1565
+ declare function unknownViewLine(raw: string): string;
1487
1566
  /** The one sentence a layout says when the table holds no Field it could use. */
1488
1567
  declare const LAYOUT_NO_FIELD: Record<ViewLayout, string>;
1489
1568
  /** The spec as the one document the store holds. */
@@ -2549,6 +2628,27 @@ interface TablePageProps {
2549
2628
  * Absent, nothing changes: the page opens exactly as it did.
2550
2629
  */
2551
2630
  activeRecordId?: Uuid$1 | null | undefined;
2631
+ /**
2632
+ * WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
2633
+ * `dashboards`, exactly as the host read it out of `?view=`.
2634
+ *
2635
+ * 🚨 THE DEAD LINK THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8
2636
+ * HIGH-2). `?view=kanban` returned 200 and rendered the grid: the parameter
2637
+ * was read by nobody, so a bookmarked or shared board was a grid and nothing
2638
+ * on screen said so. It is the raw string and not a parsed value because a
2639
+ * value this page does not know is a thing the PERSON has to be told about
2640
+ * (`unknownViewLine`), not a parse failure to swallow.
2641
+ *
2642
+ * Absent, the page opens exactly as it did: on the saved view's own layout.
2643
+ */
2644
+ activeView?: string | null | undefined;
2645
+ /**
2646
+ * THE ADDRESS FOLLOWS THE PERSON. Called with the view they just picked — a
2647
+ * layout button or the Dashboards button — so the host can put it in the URL.
2648
+ * Half a deep link is a link that works when you arrive and lies when you
2649
+ * copy it out of the address bar afterwards.
2650
+ */
2651
+ onViewChanged?: ((view: PageView) => void) | undefined;
2552
2652
  className?: string | undefined;
2553
2653
  }
2554
2654
  /**
@@ -2646,7 +2746,36 @@ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface
2646
2746
  * and the pressed look come from one answer rather than nine independent guesses.
2647
2747
  */
2648
2748
  declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2649
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2749
+ /**
2750
+ * WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
2751
+ * See `TablePageProps.activeRecordId` for the defect it closes.
2752
+ */
2753
+ declare function openingRail(activeRecordId: Uuid$1 | null | undefined): {
2754
+ rail: "record" | "none";
2755
+ record: Uuid$1 | null;
2756
+ };
2757
+ /**
2758
+ * WHICH VIEW A LINK OPENS — one pure function, so the dead link can be shown
2759
+ * failing. See `TablePageProps.activeView` for the defect it closes.
2760
+ *
2761
+ * Three answers, and the third is the one that stops it being a silent drop:
2762
+ * · `main` — the records or the dashboards;
2763
+ * · `layout` — the layout the link named, or null for "whatever the saved
2764
+ * view says", which is the no-parameter case;
2765
+ * · `unknown` — the word the link used when this page has no view by that
2766
+ * name. It is RETURNED rather than swallowed, because the
2767
+ * person has to be told their link asked for something that
2768
+ * does not exist here.
2769
+ *
2770
+ * A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
2771
+ * link predates this one and must keep working.
2772
+ */
2773
+ declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid$1 | null | undefined): {
2774
+ main: MainView;
2775
+ layout: ViewLayout | null;
2776
+ unknown: string | null;
2777
+ };
2778
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, className, }: TablePageProps): react.JSX.Element;
2650
2779
 
2651
2780
  /** What the roster can tell us about a user id. `null` when it cannot. */
2652
2781
  type ResolveName = (userId: Uuid$1) => string | null;
@@ -2824,4 +2953,4 @@ interface PipelineBoardProps {
2824
2953
  }
2825
2954
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2826
2955
 
2827
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, 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, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, 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, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, 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_RULES_YET, 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, PortalBuilder, type PortalBuilderProps, 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_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, 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, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsSimple, conditionValue, 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, publiclyAnswerable, 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, whyNotAskable };
2956
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, 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, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, 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, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, 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_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, 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, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, 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, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, 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, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
package/dist/index.d.ts CHANGED
@@ -1165,6 +1165,33 @@ declare function conditionInWords(expr: RuleExpression | Record<string, unknown>
1165
1165
  declare function conditionValue(typed: string): string | number | boolean;
1166
1166
  /** The one condition row. It writes the store's own Rule expression, by Field id. */
1167
1167
  declare function ConditionRow({ lead, expr, fields, onChange, emptyLabel, className }: ConditionRowProps): react.JSX.Element;
1168
+ /**
1169
+ * CAN THE BUILDER DRAW THIS CONDITION? — the question every caller asks before it renders,
1170
+ * and the reason a rule somebody cannot see is never silently saved over.
1171
+ *
1172
+ * Drawable means: nothing; one clause; or an ALL/ANY of clauses, where a member may itself
1173
+ * be one ALL/ANY of clauses and no deeper. `conditionIsSimple` is still the leaf test and
1174
+ * still exported — `ConditionRow` alone is a legitimate mount (the form builder's one row).
1175
+ */
1176
+ declare function conditionIsDrawable(expr: RuleExpression | Record<string, unknown> | null | undefined, depth?: number): boolean;
1177
+ interface ConditionGroupProps {
1178
+ /** The words before the condition: "When", "Ask only when". */
1179
+ lead: string;
1180
+ expr: RuleExpression | Record<string, unknown> | null | undefined;
1181
+ fields: ConditionField[];
1182
+ onChange: (next: RuleExpression | null) => void;
1183
+ /** What the empty option says: "always", "every card". */
1184
+ emptyLabel?: string;
1185
+ /** false inside a nested group — one level of nesting, and the screen says so by omission. */
1186
+ allowNesting?: boolean;
1187
+ className?: string | undefined;
1188
+ }
1189
+ /**
1190
+ * THE ONE CONDITION BUILDER. One clause reads exactly as it always has — a single row, no
1191
+ * joiner, no chrome — and the joiner appears only once there is something to join, so a
1192
+ * person writing one condition never meets a control for a problem they do not have.
1193
+ */
1194
+ declare function ConditionGroup({ lead, expr, fields, onChange, emptyLabel, allowNesting, className, }: ConditionGroupProps): react.JSX.Element;
1168
1195
 
1169
1196
  interface FieldProposalRow {
1170
1197
  id: string;
@@ -1250,6 +1277,13 @@ declare function RecordChip({ title, onRemove, className, }: {
1250
1277
 
1251
1278
  /** Answers "what is the record with this id called", for one Field's values. */
1252
1279
  type LabelLookup = (field: Field$1, id: string) => string | null;
1280
+ /**
1281
+ * HOW LONG A CELL MAY SAY "Loading…" BEFORE IT HAS TO SAY WHAT IT IS WAITING
1282
+ * FOR. One second is the span at which a person stops reading a word as "this
1283
+ * is about to happen" and starts reading it as "this is stuck" — the same line
1284
+ * Nielsen's response-time work draws and the one Linear and Stripe design to.
1285
+ */
1286
+ declare const SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS = 1000;
1253
1287
  /** Which ids a Field's stored value refers to. */
1254
1288
  declare function idsOf(value: unknown): string[];
1255
1289
  declare function isId(value: unknown): boolean;
@@ -1264,10 +1298,16 @@ declare function RecordLabelProvider({ children }: {
1264
1298
  * per cell, and it is why a grid of 200 rows asks the store twice.
1265
1299
  */
1266
1300
  declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelLookup;
1301
+ /**
1302
+ * WHAT THIS COLUMN IS STILL WAITING FOR, or null while "Loading…" is still an
1303
+ * honest word. A cell draws this INSTEAD of "Loading…" once the resolver has
1304
+ * been looking for a second — see `SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS`.
1305
+ */
1306
+ declare function useLabelWait(field: Field$1 | undefined): string | null;
1267
1307
 
1268
1308
  /** The envelope for one key, when the document carries one. */
1269
1309
  declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
1270
- declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup): react.JSX.Element;
1310
+ declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): react.JSX.Element;
1271
1311
  /**
1272
1312
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
1273
1313
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -1278,7 +1318,15 @@ declare function renderValue(field: Field, value: unknown, document?: RecordDocu
1278
1318
  * reads like a value, and the 19 September verdict found it in choice cells,
1279
1319
  * relation cells and as every Kanban column heading.
1280
1320
  */
1281
- declare function scalarText(field: Field, value: unknown, labels?: LabelLookup): string;
1321
+ declare function scalarText(field: Field, value: unknown, labels?: LabelLookup,
1322
+ /**
1323
+ * WHAT THIS COLUMN IS WAITING FOR, once it has been looking long enough to owe
1324
+ * a sentence (`useLabelWait`). "Loading…" is honest for a moment and a lie with
1325
+ * a spinner on it after that: VERIFIER-8 MEDIUM-1 watched a whole relation
1326
+ * column say it for 10-13 seconds while the rest of the grid sat readable
1327
+ * behind it, and nothing on screen said what it was waiting for.
1328
+ */
1329
+ stillWaitingFor?: string | null): string;
1282
1330
  /** The provenance badge a value carries when the store interned a source for it (SCR-27). */
1283
1331
  declare function ProvenanceBadge({ document, fieldKey }: {
1284
1332
  document: RecordDocument | undefined;
@@ -1484,6 +1532,37 @@ declare const VIEW_TABLE: SystemTableSpec;
1484
1532
  * screen and any agent writing a view spec must agree about what is offerable.
1485
1533
  */
1486
1534
  declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1535
+ /**
1536
+ * ─────────────────────────────────────────────────────────────────────────────
1537
+ * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1538
+ *
1539
+ * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1540
+ * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1541
+ * switcher was there, the four buttons worked, and the parameter was read by
1542
+ * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1543
+ * a grid, and nothing on the screen said the view had been dropped. A link that
1544
+ * does not land is the inbox-link defect (`activeRecordId`) and the dashboard
1545
+ * defect (`activeDashboardId`) for the third time, so this is the same shape of
1546
+ * fix: the URL names it, the page opens on it, and the URL FOLLOWS the person
1547
+ * when they pick another.
1548
+ *
1549
+ * The dashboards are a fifth value and not a special case: to the person, "the
1550
+ * dashboard" is one of the ways to look at this table, and a link to it has to
1551
+ * work like a link to the board.
1552
+ */
1553
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1554
+ type PageView = (typeof PAGE_VIEWS)[number];
1555
+ declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1556
+ /**
1557
+ * What a `?view=` value means, or `null` when it means nothing here.
1558
+ *
1559
+ * `null` is NOT "show the grid": the caller is expected to say that the link
1560
+ * named something this table has no view for, because silently substituting a
1561
+ * different view is exactly the defect above wearing a parser.
1562
+ */
1563
+ declare function pageViewFromParam(raw: string | null | undefined): PageView | null;
1564
+ /** The sentence a link that named a view nobody has says. Never silent. */
1565
+ declare function unknownViewLine(raw: string): string;
1487
1566
  /** The one sentence a layout says when the table holds no Field it could use. */
1488
1567
  declare const LAYOUT_NO_FIELD: Record<ViewLayout, string>;
1489
1568
  /** The spec as the one document the store holds. */
@@ -2549,6 +2628,27 @@ interface TablePageProps {
2549
2628
  * Absent, nothing changes: the page opens exactly as it did.
2550
2629
  */
2551
2630
  activeRecordId?: Uuid$1 | null | undefined;
2631
+ /**
2632
+ * WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
2633
+ * `dashboards`, exactly as the host read it out of `?view=`.
2634
+ *
2635
+ * 🚨 THE DEAD LINK THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8
2636
+ * HIGH-2). `?view=kanban` returned 200 and rendered the grid: the parameter
2637
+ * was read by nobody, so a bookmarked or shared board was a grid and nothing
2638
+ * on screen said so. It is the raw string and not a parsed value because a
2639
+ * value this page does not know is a thing the PERSON has to be told about
2640
+ * (`unknownViewLine`), not a parse failure to swallow.
2641
+ *
2642
+ * Absent, the page opens exactly as it did: on the saved view's own layout.
2643
+ */
2644
+ activeView?: string | null | undefined;
2645
+ /**
2646
+ * THE ADDRESS FOLLOWS THE PERSON. Called with the view they just picked — a
2647
+ * layout button or the Dashboards button — so the host can put it in the URL.
2648
+ * Half a deep link is a link that works when you arrive and lies when you
2649
+ * copy it out of the address bar afterwards.
2650
+ */
2651
+ onViewChanged?: ((view: PageView) => void) | undefined;
2552
2652
  className?: string | undefined;
2553
2653
  }
2554
2654
  /**
@@ -2646,7 +2746,36 @@ declare function chooseSurface(current: Surface, pressed: SurfacePress): Surface
2646
2746
  * and the pressed look come from one answer rather than nine independent guesses.
2647
2747
  */
2648
2748
  declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
2649
- declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, className, }: TablePageProps): react.JSX.Element;
2749
+ /**
2750
+ * WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
2751
+ * See `TablePageProps.activeRecordId` for the defect it closes.
2752
+ */
2753
+ declare function openingRail(activeRecordId: Uuid$1 | null | undefined): {
2754
+ rail: "record" | "none";
2755
+ record: Uuid$1 | null;
2756
+ };
2757
+ /**
2758
+ * WHICH VIEW A LINK OPENS — one pure function, so the dead link can be shown
2759
+ * failing. See `TablePageProps.activeView` for the defect it closes.
2760
+ *
2761
+ * Three answers, and the third is the one that stops it being a silent drop:
2762
+ * · `main` — the records or the dashboards;
2763
+ * · `layout` — the layout the link named, or null for "whatever the saved
2764
+ * view says", which is the no-parameter case;
2765
+ * · `unknown` — the word the link used when this page has no view by that
2766
+ * name. It is RETURNED rather than swallowed, because the
2767
+ * person has to be told their link asked for something that
2768
+ * does not exist here.
2769
+ *
2770
+ * A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
2771
+ * link predates this one and must keep working.
2772
+ */
2773
+ declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid$1 | null | undefined): {
2774
+ main: MainView;
2775
+ layout: ViewLayout | null;
2776
+ unknown: string | null;
2777
+ };
2778
+ declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, className, }: TablePageProps): react.JSX.Element;
2650
2779
 
2651
2780
  /** What the roster can tell us about a user id. `null` when it cannot. */
2652
2781
  type ResolveName = (userId: Uuid$1) => string | null;
@@ -2824,4 +2953,4 @@ interface PipelineBoardProps {
2824
2953
  }
2825
2954
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2826
2955
 
2827
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, 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, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, 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, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, 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_RULES_YET, 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, PortalBuilder, type PortalBuilderProps, 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_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, 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, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsSimple, conditionValue, 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, publiclyAnswerable, 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, whyNotAskable };
2956
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, 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, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, 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, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, 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_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, 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, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, 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, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, 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, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, publiclyAnswerable, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };