@ai-matrx/records-ui 0.93.133 → 0.93.142

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,54 +1,20 @@
1
1
  import * as react from 'react';
2
- import { ReactNode, ComponentType, RefObject } from 'react';
2
+ import { ReactNode, KeyboardEvent, ReactElement, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RecordDocument, RowAction, ReadRow, StoreFilter, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, DeclarableFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
5
- import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1 } from '@ai-matrx/records/react';
6
- import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDataTableDrillConfig, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
4
+ import { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, DeclarableFieldKind, NewerFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
5
+ import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
6
+ import { W as WhatYouMayDo, O as ObjectAction } from './objectActions-BSbblgf-.cjs';
7
+ export { A as ACTION_CHECKING_ACCESS_REASON, a as ACTION_NOT_HERE_REASON, b as ACTION_NO_ACCESS_REASON, c as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, d as OBJECT_ACTION_GROUPS, e as ObjectActionDropdownEntry, f as ObjectActionGroup, g as ObjectActionGroupDef, h as ObjectActionIcon, i as ObjectActionSection, T as TableActionHost, j as TableActionSubject, k as TableActionsInput, l as dropdownActionIds, m as groupObjectActions, n as levelNeededFor, r as rightsReason, t as tableActions, o as tableLink, p as toDropdownEntries, w as whatYouMayDo, q as whatYouMayDoWithTable, s as withExtensions } from './objectActions-BSbblgf-.cjs';
8
+ import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient } from '@ai-matrx/records/react';
9
+ import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDataTableDrillConfig, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
7
10
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
8
11
  import { RecordsClient, ParsedImport } from '@ai-matrx/records/core';
9
12
  export { DEFAULT_FIELDS, DeclareResult, NewFieldSpec, NewTableSpec, addFields, declareTable, fieldDeclarationFor, tokenFor } from '@ai-matrx/records/core';
10
13
  import { GuessedFieldType, TableShape } from './table-shape.cjs';
11
14
  export { ColumnGuess, FEWEST_KEY_VALUE_PAIRS, FEWEST_LIST_ITEMS, TableShapeKind, TableShapeSplit, cellWords, guessColumn, hasTableShape, parseDelimited, readTableShape, readTableShapes, shapeOfGrid, shapeOfValue, shapeTextOfNode } from './table-shape.cjs';
15
+ export { ColumnValuesEditor, ColumnValuesEditorProps, ColumnValuesText, DATA_BINDING_MISSING, DATA_BINDING_SHAPES, DataBinding, DataBindingPicker, DataBindingPickerProps, DataBindingShape, RecordNameText, RecordPicker, RecordPickerProps, TableAnywhere, TableNameText, TablePicker, TablePickerProps, TableScope, TableScopeProps, TablesAnywhere, bindingPlaceholdersFor, defaultBindingTemplate, emptyDataBinding, isCompleteDataBinding, isDataBinding, useTablesAnywhere } from './pickers.cjs';
12
16
  import { MatrxColumnDef } from '@ai-matrx/design-system/data-table/types';
13
17
 
14
- /** The six things a person does to a record or a table, as the screens offer them. */
15
- type Capability = "read" | "comment" | "write" | "remove" | "share" | "structure";
16
- interface WhatYouMayDo {
17
- /** The word the store answered, or null when it answered nothing. */
18
- level: PermissionLevel | null;
19
- /**
20
- * Whether the store has ANSWERED yet. `false` is a third state and not a
21
- * refusal: a screen that drew "you may not" while the answer was in flight
22
- * would blink every control off on every reload, which is its own lie.
23
- */
24
- known: boolean;
25
- read: boolean;
26
- comment: boolean;
27
- write: boolean;
28
- remove: boolean;
29
- share: boolean;
30
- structure: boolean;
31
- /** Why this person may not do that, in one sentence naming the way in. */
32
- why: (what: Capability) => string;
33
- }
34
- /** What each rung of the ladder is called where a person reads it. */
35
- declare const LEVEL_WORD: Record<PermissionLevel, string>;
36
- /**
37
- * WHAT ONE LEVEL LETS A PERSON DO. `level` null and `known` true means the
38
- * store said "nothing" — a real answer. `known` false means it has not said.
39
- */
40
- declare function whatYouMayDo(level: PermissionLevel | null, known?: boolean): WhatYouMayDo;
41
- /** Nothing offered, because nothing is known yet. */
42
- declare const NOT_ANSWERED_YET: WhatYouMayDo;
43
- /**
44
- * REC-27. The nine Tables the platform ships are not administered from a
45
- * person's screen whatever level they hold on them — so the structure controls
46
- * are absent for a kernel Table and say why, and everything else follows the
47
- * level as usual.
48
- */
49
- declare const KERNEL_REASON: string;
50
- declare function whatYouMayDoWithTable(table: Table | null | undefined, level: PermissionLevel | null, known: boolean): WhatYouMayDo;
51
-
52
18
  /** One named piece of grounding, shaped the way the platform's context slice takes them. */
53
19
  interface RecordChatEntry {
54
20
  key: string;
@@ -721,6 +687,15 @@ interface RecordsUiHost {
721
687
  run: () => void;
722
688
  }) => void;
723
689
  error: (message: string) => void;
690
+ /**
691
+ * OPTIONAL. THE REVERSIBLE ACTION (`@ai-matrx/kit/reversible`): something this package did
692
+ * that can be undone — a table archived — handed to the host's one announcer, which acts it
693
+ * out at the person's level (taught the first time, a long Undo toast the next few, an ordinary
694
+ * one after) and answers ⌘Z. The package says WHAT happened and HOW to undo it; where the
695
+ * thing went (`foundAt`) is the host's routes. Unbound, the package falls back to `success`
696
+ * with an Undo button.
697
+ */
698
+ reversible?: (announcement: ReversibleAnnouncement) => void;
724
699
  };
725
700
  /** Density for every table this package renders. */
726
701
  density?: "condensed" | "normal" | "spacious";
@@ -1182,13 +1157,6 @@ declare function refusalForAPerson(error: RecordsError): PlainRefusal;
1182
1157
  */
1183
1158
  declare function refusalLineForAPerson(error: RecordsError): string;
1184
1159
 
1185
- /**
1186
- * A token (`records_ui_view`, `long_text`, `v78_widget2`) as a person would
1187
- * write it. Used ONLY as a last resort, when the thing carries no label at all
1188
- * — a raw token on a screen is the defect, and a humanised token is the least
1189
- * bad honest answer, because it still names the same thing.
1190
- */
1191
- declare function humanize(token: string): string;
1192
1160
  /** The name of one Field, as a header, a form label or a peek's term. */
1193
1161
  declare function fieldName(field: Field): string;
1194
1162
  /** The name of one Table, as a card, a heading or a breadcrumb. */
@@ -1450,11 +1418,13 @@ interface Options {
1450
1418
  * A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
1451
1419
  * the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
1452
1420
  */
1421
+ /** One cell the store took: its value before and after, and the record version that write made. */
1453
1422
  onWritten?: ((write: {
1454
1423
  rowId: Uuid$1;
1455
1424
  key: string;
1456
1425
  before: unknown;
1457
1426
  after: unknown;
1427
+ version?: number;
1458
1428
  }) => void) | undefined;
1459
1429
  /**
1460
1430
  * THE GRID GETS ITS KEYS BACK (merged-grid review 2026-09-26, A1). Bound, an editor that closes
@@ -1563,8 +1533,101 @@ declare function refusalOr(error: RecordsError | null | undefined, code: Records
1563
1533
  */
1564
1534
  declare function asRefusal(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
1565
1535
 
1566
- /** The four ways one saved view can be looked at (SCR-6). */
1567
- declare const VIEW_LAYOUTS: readonly ["grid", "kanban", "calendar", "gallery"];
1536
+ /** Every surface a saved view is drawn by. `sheet` is the spreadsheet surface (G-lanes). */
1537
+ type ViewKeyLayout = "grid" | "kanban" | "calendar" | "gallery" | "sheet" | "timeline";
1538
+ /**
1539
+ * 🚩 THE ONE SWITCH FOR THE TIMELINE'S STORE KEYS (lane VIEWS-AND-FIELDS, sublane TL).
1540
+ *
1541
+ * `vk_a_calendar_keeps_where_a_record_ends_and_a_timeline_is_a_view.sql` (sublane VK) teaches
1542
+ * `custom.view_keys()` the layout `timeline`, the keys `start_field` and `end_field` (calendar +
1543
+ * timeline), and `group_field` for the timeline. Until that migration is on production this stays
1544
+ * `false`, and:
1545
+ * · `timeline` is not a layout the store keeps (`STORE_KEPT_LAYOUTS`), so it is drawn for the visit;
1546
+ * · `start_field` / `end_field` are held for the visit, never sent (`viewSettingsPatch`), and the
1547
+ * Start also rides `date_field`, which the store already keeps;
1548
+ * · the timeline's toolbar says "Kept for this visit only".
1549
+ * Flipped to `true`, VIEW_KEYS below mirrors the migrated registry row for row (the live walk
1550
+ * compares them) and every one of those is kept on the view.
1551
+ */
1552
+ declare const STORE_KEEPS_TIMELINE = true;
1553
+ /** Who may write a key: anyone who may save the view, an input the door rewrites, or the server only. */
1554
+ type ViewKeyWriter = "caller" | "input" | "server";
1555
+ interface ViewKeyDeclaration {
1556
+ /** Where it lives in `platform.saved_view.definition` (dotted under `presentation`). */
1557
+ path: string;
1558
+ /** What the store's guard checks (`custom._view_key_value`). */
1559
+ shape: string;
1560
+ /** The layouts that read it. */
1561
+ layouts: readonly ViewKeyLayout[];
1562
+ writer: ViewKeyWriter;
1563
+ }
1564
+ /**
1565
+ * THE REGISTRY, as `custom.view_keys()` declares it (uichamp_s1_a_view_keeps_every_setting_it_is_given.sql).
1566
+ * Order and content are compared with the store by the live walk.
1567
+ */
1568
+ declare const VIEW_KEYS: readonly ViewKeyDeclaration[];
1569
+ /**
1570
+ * THE LAYOUTS THE STORE KEEPS ON A VIEW. `custom.view_keys()` judges a view's `layout` against its
1571
+ * own list (grid, kanban, calendar, gallery, sheet) and refuses any other word by name. A layout this
1572
+ * package draws before the store keeps it — the timeline, 2026-10-02 — is never sent as a view's or a
1573
+ * look's layout (`viewSettingsPatch`, `viewDocument`): it is drawn for this visit and says so. When the
1574
+ * store's registry admits it, add it here and nothing else changes.
1575
+ */
1576
+ declare const STORE_KEPT_LAYOUTS: readonly string[];
1577
+ /** Whether the store keeps this layout on a saved view. */
1578
+ declare function storeKeepsLayout(layout: string): boolean;
1579
+ /** The keys one layout reads, by path. */
1580
+ declare function viewKeysFor(layout: ViewKeyLayout): string[];
1581
+ /** One sort clause: a Field key and a direction. */
1582
+ interface ViewSortKey {
1583
+ field: string;
1584
+ direction: "asc" | "desc";
1585
+ }
1586
+ /**
1587
+ * EVERY DECLARED KEY OF A VIEW, TYPED. Absent keys are `null` / empty, never guessed.
1588
+ * `presentation` is the parsed look (colour field, pinned fields, row height, grouping with its
1589
+ * sub-groups and shut sections, hidden fields, gallery size, summaries).
1590
+ */
1591
+ interface ViewSettings {
1592
+ layout: "grid" | "kanban" | "calendar" | "gallery";
1593
+ filters: RecordFilter | null;
1594
+ where: RuleExpression | null;
1595
+ groupField: string | null;
1596
+ swimlaneField: string | null;
1597
+ collapsedColumns: string[];
1598
+ measure: string | null;
1599
+ dateField: string | null;
1600
+ /** Timeline: where a record's bar starts (`start_field`). */
1601
+ startField: string | null;
1602
+ /** Calendar and timeline: where a record ends (`end_field`). */
1603
+ endField: string | null;
1604
+ imageField: string | null;
1605
+ sorts: ViewSortKey[];
1606
+ ruleId: string | null;
1607
+ isDefault: boolean;
1608
+ presentation: GridPresentation;
1609
+ movedFrom: Record<string, unknown> | null;
1610
+ }
1611
+ /** THE READER. A stored `definition` (and the row's flat `filters`) in, every declared key out. */
1612
+ declare function viewSettings(definition: Record<string, unknown> | null | undefined, rowFilters?: RecordFilter | null): ViewSettings;
1613
+ /** The settings as the spec names them — what `viewSettingsPatch` takes. */
1614
+ type ViewSettingsPatch = Partial<Omit<ViewSettings, "movedFrom" | "layout">> & {
1615
+ /** Any layout the package draws; one the store does not keep is not sent. */
1616
+ layout?: string;
1617
+ };
1618
+ /**
1619
+ * THE KEYS ONE LAYOUT READS, and nothing else. A layout that does not use a key never sees it:
1620
+ * a calendar is not told the board's swimlanes, a board is not told the grid's pinned fields.
1621
+ */
1622
+ declare function viewSettingsFor(settings: ViewSettings, layout: ViewKeyLayout): Partial<ViewSettings>;
1623
+ /**
1624
+ * THE WRITER'S SHAPE. Only the keys a press changed; a cleared Field is `null` (the door removes
1625
+ * it); lists are sent whole. `presentation` is sent whole because the door judges it as one key.
1626
+ */
1627
+ declare function viewSettingsPatch(patch: ViewSettingsPatch): Record<string, unknown>;
1628
+
1629
+ /** The ways one saved view can be looked at (SCR-6; the timeline, lane VIEWS-AND-FIELDS TL). */
1630
+ declare const VIEW_LAYOUTS: readonly ["grid", "kanban", "calendar", "gallery", "timeline"];
1568
1631
  type ViewLayout = (typeof VIEW_LAYOUTS)[number];
1569
1632
  declare const LAYOUT_LABEL: Record<ViewLayout, string>;
1570
1633
  /**
@@ -1587,8 +1650,9 @@ declare const LAYOUT_LABEL: Record<ViewLayout, string>;
1587
1650
  * · calendar a DATE column (it places each record on a day). Blocking.
1588
1651
  * · gallery a FILE column for the card's picture. NOT blocking: the cards draw without one,
1589
1652
  * so the offer sits above them instead of in place of them.
1653
+ * · timeline a DATE column each bar starts on (the calendar's `dateField`). Blocking.
1590
1654
  * `PAGE_VIEWS`' two extra values (dashboards, archived) and the host's layouts (the Sheet) read
1591
- * nothing a table can lack. This package ships no timeline and no map layout; the day it does,
1655
+ * nothing a table can lack. This package ships no map layout; the day it does,
1592
1656
  * `Record<ViewLayout, …>` below refuses to compile until the new layout names what it needs.
1593
1657
  */
1594
1658
  type ViewNeedKind = "choice" | "date" | "file";
@@ -1656,6 +1720,10 @@ interface SavedViewSpec {
1656
1720
  collapsedColumns?: string[];
1657
1721
  /** Calendar: the Field that places a record in the month. */
1658
1722
  dateField?: string | null;
1723
+ /** Timeline: the Field a record's bar starts on (`start_field`). */
1724
+ startField?: string | null;
1725
+ /** Calendar and timeline: the Field a record ends on (`end_field`). */
1726
+ endField?: string | null;
1659
1727
  /** Gallery: the Field shown large on the card. */
1660
1728
  imageField?: string | null;
1661
1729
  sorts?: ViewSort[];
@@ -1808,7 +1876,7 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, ViewNeedKind | null>;
1808
1876
  * exists, and never a per-table screen. Every Table inherits it the moment it
1809
1877
  * is in this list.
1810
1878
  */
1811
- declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards", "archived"];
1879
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "timeline", "dashboards", "archived"];
1812
1880
  type PageView = (typeof PAGE_VIEWS)[number];
1813
1881
  declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1814
1882
  /**
@@ -2260,12 +2328,27 @@ interface CustomFieldsSectionProps {
2260
2328
  * it returns is called on unmount. The door reads live state on every call.
2261
2329
  */
2262
2330
  agentDoor?: ((door: CustomFieldsAgentDoor) => () => void) | undefined;
2331
+ /**
2332
+ * T1.2 (Doctrine R8): a person who may not change this table's shape makes her own table
2333
+ * instead. The host knows where tables are made; without it the offer is absent.
2334
+ */
2335
+ onMakeOwnTable?: (() => void) | undefined;
2336
+ /**
2337
+ * The name this page gives its records ("Contact"), when the registry's label is not the word a
2338
+ * person reads here. Used in the editor's header and in place of the registry's label inside the
2339
+ * store's sentence.
2340
+ */
2341
+ entityLabel?: string | undefined;
2263
2342
  }
2264
2343
  /** One field an agent (or anyone) asks the section to add. */
2265
2344
  interface CustomFieldAddRequest {
2266
2345
  label: string;
2267
2346
  /** One of `ADDABLE_TYPES[].value`. Defaults to `text`. */
2268
2347
  type?: string | undefined;
2348
+ /** A Choice's choices, one per entry. A Choice may start with none. */
2349
+ options?: string[] | undefined;
2350
+ /** For "Points at another record": the id of the table it points at. */
2351
+ relation_target?: string | undefined;
2269
2352
  }
2270
2353
  type CustomFieldAddResult = {
2271
2354
  ok: true;
@@ -2292,6 +2375,7 @@ interface CustomFieldsAgentState {
2292
2375
  label: string;
2293
2376
  type: string;
2294
2377
  value?: unknown;
2378
+ withheld?: string;
2295
2379
  }>;
2296
2380
  types: ReadonlyArray<{
2297
2381
  value: string;
@@ -2330,8 +2414,20 @@ interface CustomFieldsAgentDoor {
2330
2414
  /** Writes this record's values in ONE `custom.entity_value_write` (a key left out is left alone). */
2331
2415
  setValues: (values: CustomFieldValuesRequest) => Promise<CustomFieldSetResult>;
2332
2416
  }
2417
+ /**
2418
+ * WHAT A PERSON CAN ADD FROM A RECORD PAGE: EVERYTHING A TABLE'S COLUMN CAN BE.
2419
+ *
2420
+ * 🚨 G3 — ONE PALETTE (lane 7 STANDARD-TABLES, wave 1). This used to be a hand-kept list of
2421
+ * eleven types (`ADDABLE_TYPE_IDS`) "that need nothing more than a name", so a CRM contact could
2422
+ * not get a Choice, a Yes / no or a link to another record, and none of the column's governance —
2423
+ * while `custom.entity_field_declare` resolves its spec through the very `custom._field_document_for`
2424
+ * a custom table's column goes through. A standard table and a custom table are one primitive, so
2425
+ * the record page opens the table's own `FieldEditor` and offers `fieldTypes.ts`'s pickable set,
2426
+ * nothing more and nothing less. `a-record-page-adds-a-field-with-the-tables-own-palette.test.tsx`
2427
+ * fails the moment this list and that set differ.
2428
+ */
2333
2429
  declare const ADDABLE_TYPES: {
2334
- value: "number" | "member" | "text" | "long_text" | "currency" | "percent" | "datetime" | "email" | "url" | "phone" | "attachment";
2430
+ value: string;
2335
2431
  label: string;
2336
2432
  }[];
2337
2433
  /**
@@ -2339,7 +2435,7 @@ declare const ADDABLE_TYPES: {
2339
2435
  * never just the first. Pure, so it is tested without a store.
2340
2436
  */
2341
2437
  declare function customFieldRequestProblems(requests: readonly CustomFieldAddRequest[], existingLabels: readonly string[]): string[];
2342
- declare function CustomFieldsSection({ entityToken, recordId, title, className, agentDoor, }: CustomFieldsSectionProps): react.JSX.Element | null;
2438
+ declare function CustomFieldsSection({ entityToken, recordId, title, className, agentDoor, onMakeOwnTable, entityLabel, }: CustomFieldsSectionProps): react.JSX.Element | null;
2343
2439
 
2344
2440
  /** The three behaviours that carry no parity type of their own. */
2345
2441
  type PlainFieldType = "text" | "long_text" | "number";
@@ -2379,7 +2475,15 @@ type RelationFieldType = "relation";
2379
2475
  * `FIELD_TYPE_CHOICES`'s coverage and as a red `kindsWithNoChoice()` below — never as a
2380
2476
  * silence.
2381
2477
  */
2382
- type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference";
2478
+ type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference" | NewerFieldKind;
2479
+ /**
2480
+ * LANE 10 P4: THE NINE NEWER KINDS (rating, duration, created by, last changed by, status, address,
2481
+ * barcode, formatted text, count). Each is listed in `FIELD_TYPE_CATALOGUE` below, so every reader
2482
+ * (Settings, the column panel, every layout) names a column of one by its own word; the MENU offers
2483
+ * one only once `custom.field_kinds()` publishes it (after the chair's apply and
2484
+ * `pnpm records:generate`), so a person is never offered a kind the live store would refuse.
2485
+ */
2486
+ declare function storePublishesKind(kind: string): boolean;
2383
2487
  /**
2384
2488
  * THE STORE'S OWN STAMPS AS COLUMNS (GRID-PRIMITIVES G5; TABLE-PARITY H2 H3, lane
2385
2489
  * DEFAULT-GRID-PARITY). `custom.field_declare` takes these three WORDS and makes each a formula
@@ -2400,6 +2504,11 @@ interface FieldTypeChoice {
2400
2504
  /** The heading it sits under, so seventeen choices read as four short lists. */
2401
2505
  group: "Words" | "Numbers and dates" | "Choices and people" | "Worked out";
2402
2506
  }
2507
+ /**
2508
+ * EVERY KIND THIS PACKAGE CAN NAME AND DRAW, in menu order. The menu (`FIELD_TYPE_CHOICES`) is this
2509
+ * list less the kinds the live store does not take yet; every reader names a column from this one.
2510
+ */
2511
+ declare const FIELD_TYPE_CATALOGUE: FieldTypeChoice[];
2403
2512
  declare const FIELD_TYPE_CHOICES: FieldTypeChoice[];
2404
2513
  declare const FIELD_TYPE_GROUPS: FieldTypeChoice["group"][];
2405
2514
  declare function fieldTypeChoice(id: string): FieldTypeChoice | undefined;
@@ -2453,29 +2562,48 @@ declare function kindsWithNoChoice(): string[];
2453
2562
 
2454
2563
  /** `Day rate` → `day_rate`. Shown, so nothing about it is a surprise. */
2455
2564
  declare function keyFor(label: string): string;
2456
- interface FieldEditorProps {
2457
- tableId: Uuid$1;
2458
- /** The Field being edited. Absent means a new one. */
2459
- field?: Field | undefined;
2565
+ interface FieldEditorCommon {
2566
+ /**
2567
+ * The name the host's page gives this table's records ("Contact"), when the store's own label
2568
+ * is not the word a person reads there. Shown in the header and in place of the store's label
2569
+ * inside its refusal sentence.
2570
+ */
2571
+ tableLabel?: string | undefined;
2460
2572
  onSaved?: (() => void) | undefined;
2461
2573
  onCancel?: (() => void) | undefined;
2462
2574
  /** Called after the store has accepted the removal, so the list can re-read. */
2463
2575
  onRemoved?: (() => void) | undefined;
2464
2576
  className?: string | undefined;
2465
2577
  }
2466
- declare function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }: FieldEditorProps): react.JSX.Element;
2467
2578
  /**
2468
- * WHAT THE PANEL STILL NEEDS BEFORE THE STORE WOULD TAKE THIS, in plain words.
2579
+ * ONE EDITOR FOR BOTH KINDS OF TABLE (lane 7 STANDARD-TABLES, wave 1; Doctrine R13).
2469
2580
  *
2470
- * It answers exactly the questions this panel asked, so every sentence names a
2471
- * control the person is looking at. It is NOT a second copy of the store's
2472
- * rules and it is not allowed to become one: the store decides, and every one
2473
- * of these is something the panel can see is unanswered without asking it.
2581
+ * A column of one of an organization's own tables is named by its Table's uuid (`tableId`). A
2582
+ * custom field of a STANDARD table — a CRM contact, a deal, any registry Entity or Detail — has no
2583
+ * Table record and is named by its registry token (`entityToken`). Both are the same primitive to
2584
+ * a person: the same palette (`fieldTypes.ts`), the same questions, the same governance (who sees
2585
+ * it, whether an assistant reads it, what counts as a good value). The only difference is which
2586
+ * store door takes the declaration — `custom.field_declare` or `custom.entity_field_declare`,
2587
+ * which resolves the spec through the same `custom._field_document_for` — and who may change the
2588
+ * shape: the table's own Owner/Admin level, or the organization's admins
2589
+ * (`custom.entity_field_rights`, whose sentence is shown as it is).
2474
2590
  *
2475
- * Exported so the suite can assert the sentences without driving the whole
2476
- * panel, and so the red twin can assert that removing it puts the contract row
2477
- * id back in front of a person.
2591
+ * A standard table's field is DECLARED here; editing an existing one stays with the record page's
2592
+ * own section (rename, remove), because the edit arms below (choice re-homing, retype, look) are
2593
+ * custom-table doors.
2478
2594
  */
2595
+ type FieldEditorProps = FieldEditorCommon & ({
2596
+ tableId: Uuid$1;
2597
+ entityToken?: undefined;
2598
+ /** The Field being edited. Absent means a new one. */
2599
+ field?: Field | undefined;
2600
+ } | {
2601
+ /** The standard table's registry token (REC-33), e.g. `party`, `crm_deal`. */
2602
+ entityToken: string;
2603
+ tableId?: undefined;
2604
+ field?: undefined;
2605
+ });
2606
+ declare function FieldEditor(props: FieldEditorProps): react.JSX.Element | null;
2479
2607
  declare function whatIsMissing(state: {
2480
2608
  type: PickableFieldType;
2481
2609
  label: string;
@@ -2693,6 +2821,64 @@ interface RelationPickerProps {
2693
2821
  }
2694
2822
  declare function RelationPicker({ field, value, onChange, disabled, id, className, allowCreate }: RelationPickerProps): react.JSX.Element;
2695
2823
 
2824
+ interface PickOrAddItem {
2825
+ id: string;
2826
+ label: string;
2827
+ /** A second line that tells two same-named items apart. */
2828
+ detail?: string | null | undefined;
2829
+ picked: boolean;
2830
+ /** The tooltip; defaults to the label. */
2831
+ title?: string | undefined;
2832
+ /**
2833
+ * The item drawn AS A CHIP in these classes — a choice in the colour its column keeps for it
2834
+ * (`choiceChipLookOf`), so the list reads the way the cell does. Absent: plain words.
2835
+ */
2836
+ chip?: string | undefined;
2837
+ /** Attributes a caller's tests and walks select by (e.g. `data-relation-candidate`). */
2838
+ attrs?: Record<string, string> | undefined;
2839
+ }
2840
+ interface PickOrAddProps {
2841
+ /** The trigger's accessible name, e.g. "Pick for Category". */
2842
+ triggerLabel: string;
2843
+ /** The trigger's visible word, e.g. "Pick", "Change", "Choose". */
2844
+ triggerText: string;
2845
+ triggerId?: string | undefined;
2846
+ open: boolean;
2847
+ onOpenChange: (open: boolean) => void;
2848
+ search: string;
2849
+ onSearch: (search: string) => void;
2850
+ items: PickOrAddItem[];
2851
+ onPick: (id: string) => void;
2852
+ /** Above the list: a refusal, a "Reading…", a ceiling reached. */
2853
+ notice?: ReactNode;
2854
+ /** When the list is empty. */
2855
+ empty?: ReactNode;
2856
+ /** The add line at the foot. Absent = no add line. */
2857
+ add?: {
2858
+ label: string;
2859
+ onAdd: () => void;
2860
+ disabled?: boolean | undefined;
2861
+ } | null | undefined;
2862
+ /** The foot's own state, drawn in place of the add line when there is one (a name box, a "Reading that table…"). */
2863
+ foot?: ReactNode;
2864
+ /** Under the add line: a refusal of the add, with its own doors. */
2865
+ footNote?: ReactNode;
2866
+ /**
2867
+ * ENTER WITH NOTHING TO PICK when the foot is the caller's own (a choice cell's Add / Keep as
2868
+ * typed / Cancel question): what the question's first answer does (grids review 3, 2026-09-30: a
2869
+ * new choice word + Enter did nothing, while Tab then Enter added it). Absent: the add line.
2870
+ */
2871
+ onEnterWithNoMatch?: (() => void) | undefined;
2872
+ }
2873
+ declare function PickOrAdd({ triggerLabel, triggerText, triggerId, open, onOpenChange, search, onSearch, items, onPick, notice, empty, add, foot, footNote, onEnterWithNoMatch, }: PickOrAddProps): react.JSX.Element;
2874
+
2875
+ declare function ExampleTables({ onBuilt, onClose, className, }: {
2876
+ /** Called with the first table the example built, once it is there. */
2877
+ onBuilt: (tableId: Uuid) => void;
2878
+ onClose: () => void;
2879
+ className?: string | undefined;
2880
+ }): react.JSX.Element;
2881
+
2696
2882
  /** What the panel says while the chosen list is empty. */
2697
2883
  declare const ENTITY_REFERENCE_KINDS_MISSING = "Choose at least one kind of thing this column points at.";
2698
2884
  /**
@@ -2797,6 +2983,12 @@ interface FieldEditorControlProps {
2797
2983
  * a choice control adds the words through `fieldUpdate`'s `options_add` and hands back words.
2798
2984
  */
2799
2985
  addsChoices?: boolean | undefined;
2986
+ /**
2987
+ * DRAWN AS A FORM QUESTION (lane VIEWS-AND-FIELDS W1-B item 3): a choice is answered from its
2988
+ * choices laid out — pills for a few, a searchable list for more (`ChoiceAnswer`) — never a
2989
+ * drop-down or a "Choose" button. Every other control ignores it.
2990
+ */
2991
+ asForm?: boolean | undefined;
2800
2992
  }
2801
2993
  /** The label row every editor shares: one line, the label, the unit, the required mark. */
2802
2994
  declare function FieldLabel({ field, htmlFor, children }: {
@@ -2804,7 +2996,7 @@ declare function FieldLabel({ field, htmlFor, children }: {
2804
2996
  htmlFor: string;
2805
2997
  children?: ReactNode;
2806
2998
  }): react.JSX.Element;
2807
- declare function FieldControl({ field, value, onChange, disabled, id, autoOpen, onClose, onCommit, onCancel, addsChoices, initialSearch }: FieldEditorControlProps): string | number | bigint | true | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react.JSX.Element;
2999
+ declare function FieldControl({ field, value, onChange, disabled, id, autoOpen, onClose, onCommit, onCancel, addsChoices, initialSearch, asForm }: FieldEditorControlProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react.JSX.Element | null;
2808
3000
  /** The chip a picked record shows as — REC-2's "a record is a chip" in one place. */
2809
3001
  declare function RecordChip({ title, onRemove, className, }: {
2810
3002
  title: string;
@@ -2820,9 +3012,11 @@ interface ChoiceListRow {
2820
3012
  words: string;
2821
3013
  /** A stable React key for a row that has no id yet. */
2822
3014
  row: string;
3015
+ /** The colour it wears (`display_format.options.choices`); null or absent: none. */
3016
+ color?: StyleColor | null | undefined;
2823
3017
  }
2824
- /** The rows a column's live options start as, in the store's order. */
2825
- declare function choiceRowsFrom(options: readonly StoredRecord[]): ChoiceListRow[];
3018
+ /** The rows a column's live options start as, in the store's order, each in the colour its Field keeps. */
3019
+ declare function choiceRowsFrom(options: readonly StoredRecord[], field?: Field): ChoiceListRow[];
2826
3020
  /**
2827
3021
  * WHAT A SAVE SENDS as `options`, or `undefined` when the list is what the store already holds
2828
3022
  * (so a rename of the column alone does not rewrite its choices).
@@ -2830,12 +3024,15 @@ declare function choiceRowsFrom(options: readonly StoredRecord[]): ChoiceListRow
2830
3024
  declare function choiceListPatch(start: readonly ChoiceListRow[], rows: readonly ChoiceListRow[]): Array<string | FieldOptionEdit> | undefined;
2831
3025
  /** Why this list cannot be saved yet, in the panel's words, or null. */
2832
3026
  declare function whatTheChoiceListIsMissing(rows: readonly ChoiceListRow[] | null): string | null;
2833
- declare function ChoiceListEditor({ field, rows, onRows, onStart, allowOther, rehome, onRehome, }: {
2834
- field: Field;
3027
+ declare function ChoiceListEditor({ field, isNew, rows, onRows, onStart, allowOther, rehome, onRehome, }: {
3028
+ /** The column, when it exists. Absent: a column being made, whose rows the panel holds. */
3029
+ field?: Field | undefined;
3030
+ /** A column being made: no store read, no removal question. */
3031
+ isNew?: boolean | undefined;
2835
3032
  rows: ChoiceListRow[] | null;
2836
3033
  onRows: (next: ChoiceListRow[]) => void;
2837
3034
  /** The list as the store answered it, once — what a save is compared against. */
2838
- onStart: (start: ChoiceListRow[]) => void;
3035
+ onStart?: ((start: ChoiceListRow[]) => void) | undefined;
2839
3036
  /** Whether the column takes other values — the only case "keep the words" is offered. */
2840
3037
  allowOther?: boolean | undefined;
2841
3038
  /**
@@ -2858,7 +3055,7 @@ declare function useChoiceNudge(enabled?: boolean): ChoiceNudge | null;
2858
3055
 
2859
3056
  /** The envelope for one key, when the document carries one. */
2860
3057
  declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
2861
- declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): react.JSX.Element;
3058
+ declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
2862
3059
  /**
2863
3060
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
2864
3061
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -3000,6 +3197,20 @@ type EditorKind = FieldKind;
3000
3197
  * decides anything the core does not.
3001
3198
  */
3002
3199
  declare function editorKindFor(field: Field): EditorKind;
3200
+ /**
3201
+ * WHICH KIND A PERSON PICKED, read back off the Field the store keeps — the ONE reader every
3202
+ * "what does this column hold" answer goes through (the Settings column list, the column panel).
3203
+ *
3204
+ * `editorKindFor` answers which EDITOR to draw, and for two families that is not the kind a
3205
+ * person picked: a Signature is a text Field whose format is `signature` (it draws a line of
3206
+ * text), and the store's stamps — Record number, Created time, Last changed time — are formula
3207
+ * Fields whose `config.system` names the stamp. Read through the editor classifier alone, the
3208
+ * Settings list called a Signature "Text" and a Record number "Worked out from other columns"
3209
+ * (lane 10 W1-A, guard `every-pickable-kind-reads-back-as-itself.test.tsx`).
3210
+ *
3211
+ * `undefined` when the Field is none of the kinds the menu offers.
3212
+ */
3213
+ declare function pickableTypeOf(field: Field): PickableFieldType | undefined;
3003
3214
  /**
3004
3215
  * The type word a person sees in a header or a settings row — and it is the
3005
3216
  * SAME word the field panel offers, read from `FIELD_TYPE_CHOICES`, so a column
@@ -3007,6 +3218,112 @@ declare function editorKindFor(field: Field): EditorKind;
3007
3218
  */
3008
3219
  declare function fieldTypeLabel(field: Field): string;
3009
3220
 
3221
+ /** The one token form, written the way the store's own pattern reads it. */
3222
+ declare function fieldToken(fieldId: Uuid$1): string;
3223
+ /** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
3224
+ interface DocTemplateSpec {
3225
+ name: string;
3226
+ /** The body, tokens and all. */
3227
+ body: string;
3228
+ }
3229
+ /**
3230
+ * A template written in terms of Field KEYS — which is how an agent thinks and
3231
+ * how a person reads — turned into the store's id-based tokens. The agent writes
3232
+ * `{{title}}`; what is stored points at the Field's id, so a rename never
3233
+ * silently empties the document.
3234
+ *
3235
+ * A key this Table does not have is LEFT EXACTLY AS IT IS, so
3236
+ * `custom.doc_unresolved_tokens` names it and the screen shows the store's own
3237
+ * reason — it is never quietly deleted from the body.
3238
+ */
3239
+ declare function bodyFromKeys(body: string, fields: Field[]): string;
3240
+ /** The reverse, for a person reading a stored body: ids shown as the Field's label. */
3241
+ declare function bodyForReading(body: string, fields: Field[]): string;
3242
+ /** VAL-10: a signature is a Value on a text Field whose format is `signature`. */
3243
+ declare function isSignatureField(field: Field): boolean;
3244
+
3245
+ /** The drawing a signature value holds, or null when it holds none (empty, or a signer's name). */
3246
+ declare function drawnSignatureOf(value: unknown): string | null;
3247
+ /** The word a text-only place (a card title, a sentence, an export) writes for a drawn signature. */
3248
+ declare const SIGNED_WORD = "Signed";
3249
+ /** A signature value in words: a drawing is "Signed"; a sealed name stays the name. */
3250
+ declare function signatureWords(value: unknown): string | null;
3251
+ /** A signature as it reads anywhere a value is shown: the drawing, or the signer's name. */
3252
+ declare function SignatureValue({ value, inCell }: {
3253
+ value: unknown;
3254
+ inCell?: boolean | undefined;
3255
+ }): react.JSX.Element;
3256
+ /**
3257
+ * THE ONE SIGNATURE PAD. Draw with a finger, a pen or a mouse; Clear starts again. `onChange`
3258
+ * receives the drawing as a PNG data URL when a stroke ends, and `null` when cleared.
3259
+ */
3260
+ declare function SignaturePad({ value, onChange, disabled, id, className, }: {
3261
+ value: unknown;
3262
+ onChange: (value: string | null) => void;
3263
+ disabled?: boolean | undefined;
3264
+ id?: string | undefined;
3265
+ className?: string | undefined;
3266
+ }): react.JSX.Element;
3267
+
3268
+ /** The facts a picker needs about one table, whichever list it came from. */
3269
+ interface PickerTable {
3270
+ id: string;
3271
+ name: string;
3272
+ kept_by_the_app?: boolean | null | undefined;
3273
+ /** `custom.table_facts`: which feature keeps it (`choices` for a value set). */
3274
+ kept_for?: string | null | undefined;
3275
+ /** `custom.data_home_tables`: the store's one word for what it is (`list` for a value set). */
3276
+ kind?: string | null | undefined;
3277
+ /** The table a value set belongs to (`custom.table_facts.used_in_table_id`). */
3278
+ used_in_table_id?: string | null | undefined;
3279
+ /** A checklist's steps, a booking page's slots, a workflow's states. */
3280
+ work_kind?: unknown;
3281
+ slug?: string | null | undefined;
3282
+ /** When the table was made — what tells two lists apart once their column is gone. */
3283
+ created_at?: string | null | undefined;
3284
+ }
3285
+ /** A value set: the List a choice column keeps its choices in. */
3286
+ declare function isValueSet(table: PickerTable): boolean;
3287
+ /** Anything the app keeps for itself rather than a table a person keeps. */
3288
+ declare function isKeptTable(table: PickerTable): boolean;
3289
+ interface TablePickerEntry<T extends PickerTable> {
3290
+ table: T;
3291
+ id: string;
3292
+ /** Unique among the entries returned. */
3293
+ label: string;
3294
+ /** A value set (shown only with "Show lists", or because it is the chosen one). */
3295
+ isList: boolean;
3296
+ }
3297
+ interface TablePickerEntries<T extends PickerTable> {
3298
+ entries: TablePickerEntry<T>[];
3299
+ /** How many value sets "Show lists" would add — 0 means the control is not worth drawing. */
3300
+ listCount: number;
3301
+ }
3302
+ /**
3303
+ * THE ONE RULE. Tables first (by name), then — with `showLists` — the value sets, each named
3304
+ * "<column> — <owning table>". Any names still equal get " (2)", " (3)" so no two entries match.
3305
+ */
3306
+ declare function tablePickerEntries<T extends PickerTable>(tables: readonly T[], options?: {
3307
+ showLists?: boolean;
3308
+ keep?: string | null | undefined;
3309
+ }): TablePickerEntries<T>;
3310
+ /**
3311
+ * The organization's tables with the store's placement facts folded on (`kept_for`,
3312
+ * `used_in_table_id`), for a picker that reads `tableList()`. A store with no facts door, or one
3313
+ * that did not answer, leaves each table as `tableList()` gave it — its own `kept_by_the_app`.
3314
+ */
3315
+ declare function usePickerTables(): {
3316
+ loading: boolean;
3317
+ data: Array<Table & PickerTable>;
3318
+ };
3319
+ /** The "Show lists" control beside a table picker. Drawn only when there are lists to show. */
3320
+ declare function ShowListsToggle({ count, on, onChange, className, }: {
3321
+ count: number;
3322
+ on: boolean;
3323
+ onChange: (on: boolean) => void;
3324
+ className?: string | undefined;
3325
+ }): react.JSX.Element | null;
3326
+
3010
3327
  /** One Field of a package-owned Table, in the store's own words. */
3011
3328
  interface SystemFieldSpec {
3012
3329
  key: string;
@@ -3078,75 +3395,31 @@ interface TrackedVersion {
3078
3395
  note: (version: number) => void;
3079
3396
  }
3080
3397
 
3081
- /** Every surface a saved view is drawn by. `sheet` is the spreadsheet surface (G-lanes). */
3082
- type ViewKeyLayout = "grid" | "kanban" | "calendar" | "gallery" | "sheet";
3083
- /** Who may write a key: anyone who may save the view, an input the door rewrites, or the server only. */
3084
- type ViewKeyWriter = "caller" | "input" | "server";
3085
- interface ViewKeyDeclaration {
3086
- /** Where it lives in `platform.saved_view.definition` (dotted under `presentation`). */
3087
- path: string;
3088
- /** What the store's guard checks (`custom._view_key_value`). */
3089
- shape: string;
3090
- /** The layouts that read it. */
3091
- layouts: readonly ViewKeyLayout[];
3092
- writer: ViewKeyWriter;
3093
- }
3094
- /**
3095
- * THE REGISTRY, as `custom.view_keys()` declares it (uichamp_s1_a_view_keeps_every_setting_it_is_given.sql).
3096
- * Order and content are compared with the store by the live walk.
3097
- */
3098
- declare const VIEW_KEYS: readonly ViewKeyDeclaration[];
3099
- /** The keys one layout reads, by path. */
3100
- declare function viewKeysFor(layout: ViewKeyLayout): string[];
3101
- /** One sort clause: a Field key and a direction. */
3102
- interface ViewSortKey {
3103
- field: string;
3104
- direction: "asc" | "desc";
3398
+ declare function archiveConfirmSentence(what: string): string;
3399
+
3400
+ interface AnnounceTableArchived {
3401
+ notify: RecordsUiHost["notify"];
3402
+ client: Pick<RecordsClient, "recordRestore">;
3403
+ tableId: Uuid$1;
3404
+ /** The table's name as the store gave it. */
3405
+ name: string;
3406
+ /** Called once the table is back, so the surface can show it again. */
3407
+ onRestored?: (() => void) | undefined;
3105
3408
  }
3106
- /**
3107
- * EVERY DECLARED KEY OF A VIEW, TYPED. Absent keys are `null` / empty, never guessed.
3108
- * `presentation` is the parsed look (colour field, pinned fields, row height, grouping with its
3109
- * sub-groups and shut sections, hidden fields, gallery size, summaries).
3110
- */
3111
- interface ViewSettings {
3112
- layout: "grid" | "kanban" | "calendar" | "gallery";
3113
- filters: RecordFilter | null;
3114
- where: RuleExpression | null;
3115
- groupField: string | null;
3116
- swimlaneField: string | null;
3117
- collapsedColumns: string[];
3118
- measure: string | null;
3119
- dateField: string | null;
3120
- imageField: string | null;
3121
- sorts: ViewSortKey[];
3122
- ruleId: string | null;
3123
- isDefault: boolean;
3124
- presentation: GridPresentation;
3125
- movedFrom: Record<string, unknown> | null;
3409
+ /** Thrown by the undo when the store refuses it; its message is the store's one sentence. */
3410
+ declare class TableRestoreRefused extends Error {
3411
+ readonly refusal: RecordsError;
3412
+ readonly sentence: string;
3413
+ constructor(refusal: RecordsError);
3126
3414
  }
3127
- /** THE READER. A stored `definition` (and the row's flat `filters`) in, every declared key out. */
3128
- declare function viewSettings(definition: Record<string, unknown> | null | undefined, rowFilters?: RecordFilter | null): ViewSettings;
3129
- /** The settings as the spec names them — what `viewSettingsPatch` takes. */
3130
- type ViewSettingsPatch = Partial<Omit<ViewSettings, "movedFrom">>;
3131
- /**
3132
- * THE KEYS ONE LAYOUT READS, and nothing else. A layout that does not use a key never sees it:
3133
- * a calendar is not told the board's swimlanes, a board is not told the grid's pinned fields.
3134
- */
3135
- declare function viewSettingsFor(settings: ViewSettings, layout: ViewKeyLayout): Partial<ViewSettings>;
3136
- /**
3137
- * THE WRITER'S SHAPE. Only the keys a press changed; a cleared Field is `null` (the door removes
3138
- * it); lists are sent whole. `presentation` is sent whole because the door judges it as one key.
3139
- */
3140
- declare function viewSettingsPatch(patch: ViewSettingsPatch): Record<string, unknown>;
3141
-
3142
- declare function archiveConfirmSentence(what: string): string;
3415
+ declare function announceTableArchived({ notify, client, tableId, name, onRestored }: AnnounceTableArchived): void;
3143
3416
 
3144
3417
  /**
3145
3418
  * WHAT A LOOK MAY HOLD — how a person looks, never what the view is: not its name, not whether it
3146
3419
  * is the default (`view_designate`), not its Rule, not the flat filters the digests read, not the
3147
3420
  * order the store writes. The store refuses anything else by name.
3148
3421
  */
3149
- type ViewLook = Partial<Pick<SavedViewSpec, "layout" | "groupField" | "swimlaneField" | "collapsedColumns" | "measure" | "dateField" | "imageField" | "sorts" | "where" | "presentation">>;
3422
+ type ViewLook = Partial<Pick<SavedViewSpec, "layout" | "groupField" | "swimlaneField" | "collapsedColumns" | "measure" | "dateField" | "startField" | "endField" | "imageField" | "sorts" | "where" | "presentation">>;
3150
3423
  /** Only the look's own keys of a press — a name, a default, a Rule or an order is never a look. */
3151
3424
  declare function lookPart(patch: Partial<SavedViewSpec>): ViewLook;
3152
3425
  /** The look as the definition keys the store keeps (`view_look_set`); a cleared key is null. */
@@ -3296,6 +3569,228 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
3296
3569
  };
3297
3570
  declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, openRecordId, onMoved, onNewRecordForm, onAskWhoChanged, pageSize, titleField, filter, onClearFilter, hostLayout, onHostLayoutChange, chooser, openExport, viewId, onOrderPlaced, footer, className, }: ViewSwitcherProps): react.JSX.Element;
3298
3571
 
3572
+ type CalendarMode = "month" | "week" | "day" | "list";
3573
+ interface CalendarViewProps {
3574
+ /** The table the records live in — the undo history's table, and where a new record is made. */
3575
+ tableId: Uuid;
3576
+ rows: readonly ReadRow$1[];
3577
+ /** The column a record's day (and, when it carries one, its time) is read from and written to. */
3578
+ dateField: Field$1;
3579
+ /** The table's columns, for the End and Colour by pickers and the default colour. */
3580
+ fields?: readonly Field$1[] | undefined;
3581
+ /**
3582
+ * THE END COLUMN THE VIEW KEEPS (`end_field`). Left out or null: the table's ONE other date column
3583
+ * when it has exactly one, else none until the person picks.
3584
+ */
3585
+ endKey?: string | null | undefined;
3586
+ /** The person picked an End: the host keeps it on the view (`end_field`). Unbound: kept for this visit. */
3587
+ onEndFieldChange?: ((key: string | null) => void) | undefined;
3588
+ /** Does the host save what `onEndFieldChange` hands it? Default: when it is bound. */
3589
+ endKept?: boolean | undefined;
3590
+ /** The column that names each card (`cardTitleField`). */
3591
+ titleField: Field$1 | undefined;
3592
+ onOpenRecord?: ((recordId: Uuid) => void) | undefined;
3593
+ /** A move landed (or was undone, or refused): the host re-reads the rows it owns. */
3594
+ onMoved?: (() => void) | undefined;
3595
+ /** The person picked a Colour by column: the host keeps it on the view (`presentation.style.colorBy`). */
3596
+ onColorFieldChange?: ((key: string | null) => void) | undefined;
3597
+ /** May this person make records here? Without it the calendar offers no way to add one. */
3598
+ canCreate?: boolean | undefined;
3599
+ /** The view's membership sentence (`useViewRecords().membership`). */
3600
+ note?: string | undefined;
3601
+ /** The table's and the view's colours (`resolveTableStyle`); its `colorBy` is the Colour by column. */
3602
+ style?: TableStyle | undefined;
3603
+ /** How long a record with no End lasts in the week grid, in minutes. A knob; starts at an hour. */
3604
+ defaultMinutes?: number | undefined;
3605
+ /** What a drop or a drag across hours snaps to, in minutes. A knob; starts at 15. */
3606
+ snapMinutes?: number | undefined;
3607
+ /** The day the calendar opens on; today when left out. `YYYY-MM-DD`. */
3608
+ initialDate?: string | undefined;
3609
+ /** The layout it opens in. Left out: Month, or List on a phone-width screen. */
3610
+ initialMode?: CalendarMode | undefined;
3611
+ className?: string | undefined;
3612
+ }
3613
+ /**
3614
+ * THE VALUE A DROP WRITES (pure). A date column gets a bare `YYYY-MM-DD`. A value that carries a time
3615
+ * keeps its time of day on the new day; a drop at a minute writes that minute; a value with no time
3616
+ * dropped on a DATE-AND-TIME column (`moments`) is that day's LOCAL midnight as a full instant —
3617
+ * never the bare day, which the store would read as UTC midnight (the day before, west of Greenwich).
3618
+ */
3619
+ declare function rescheduledValue(before: unknown, toDay: string, toMinute: number | null, moments?: boolean): unknown;
3620
+ /** Lay out one day's timed blocks side by side where they overlap (Google's column packing). */
3621
+ declare function packOverlaps<T extends {
3622
+ start: number;
3623
+ end: number;
3624
+ }>(blocks: readonly T[]): Array<T & {
3625
+ col: number;
3626
+ cols: number;
3627
+ }>;
3628
+ declare function CalendarView({ tableId, rows, dateField, fields, endKey, onEndFieldChange, endKept, titleField, onOpenRecord, onMoved, onColorFieldChange, canCreate, note, style, defaultMinutes, snapMinutes, initialDate, initialMode, className, }: CalendarViewProps): react.JSX.Element;
3629
+
3630
+ type TimelineZoom = "day" | "week" | "month" | "quarter";
3631
+ declare const TIMELINE_ZOOMS: readonly TimelineZoom[];
3632
+ /** The settings a timeline is drawn by, by Field key. */
3633
+ interface TimelineSettings {
3634
+ startKey: string | null;
3635
+ endKey: string | null;
3636
+ groupKey: string | null;
3637
+ colorKey: string | null;
3638
+ }
3639
+ interface TimelineViewProps {
3640
+ /** The table the records live in — the undo history's table. */
3641
+ tableId: Uuid;
3642
+ rows: readonly ReadRow$1[];
3643
+ /** The table's columns: the pickers, the lanes and the colours read them. */
3644
+ fields: readonly Field$1[];
3645
+ /** The column that names each bar (`cardTitleField`). */
3646
+ titleField: Field$1 | undefined;
3647
+ /** The view's Start column (`date_field`). Left out: the table's one date column, else asked. */
3648
+ startKey?: string | null | undefined;
3649
+ /** The End column. Left out: the table's one other date column, else none. */
3650
+ endKey?: string | null | undefined;
3651
+ /** The Group by column (`group_field`). Left out: no lanes. */
3652
+ groupKey?: string | null | undefined;
3653
+ /** The Colour by column. Left out: the view's `style.colorBy`, else the table's one choice column. */
3654
+ colorKey?: string | null | undefined;
3655
+ /** A setting changed: the host keeps what it can on the view. */
3656
+ onSettingsChange?: ((patch: Partial<TimelineSettings>) => void) | undefined;
3657
+ /** False when the host cannot keep the layout or the End on the view: the toolbar says so. */
3658
+ layoutKept?: boolean | undefined;
3659
+ onOpenRecord?: ((recordId: Uuid) => void) | undefined;
3660
+ /** A move landed (or was undone): the host re-reads the rows it owns. */
3661
+ onMoved?: (() => void) | undefined;
3662
+ /** The view's membership sentence (`useViewRecords().membership`). */
3663
+ note?: string | undefined;
3664
+ /** The table's and the view's colours (`resolveTableStyle`). */
3665
+ style?: TableStyle | undefined;
3666
+ initialZoom?: TimelineZoom | undefined;
3667
+ /** The day the timeline opens on; today when left out. `YYYY-MM-DD`. */
3668
+ initialDate?: string | undefined;
3669
+ className?: string | undefined;
3670
+ }
3671
+ /** THE ONE COLUMN THERE IS, or null — a setting picks itself only when nothing else could be meant. */
3672
+ declare function onlyCandidate(candidates: readonly Field$1[]): string | null;
3673
+ /** The columns a timeline can lay lanes out by: a choice, a person, a link, yes / no, or a worked-out column. */
3674
+ declare function groupableFields(all: readonly Field$1[]): Field$1[];
3675
+ declare function TimelineView({ tableId, rows, fields, titleField, startKey, endKey, groupKey, colorKey, onSettingsChange, layoutKept, onOpenRecord, onMoved, note, style, initialZoom, initialDate, className, }: TimelineViewProps): react.JSX.Element;
3676
+
3677
+ /** The colour of each record's card under `colorKey` (null: the table's own decorations only). */
3678
+ declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null, style?: TableStyle | undefined): (row: ReadRow$1) => StyleColor | null;
3679
+
3680
+ /** One cell a change touched: its value before and after, by Field key. */
3681
+ interface TouchedCell {
3682
+ rowId: Uuid$1;
3683
+ key: string;
3684
+ before: unknown;
3685
+ after: unknown;
3686
+ /**
3687
+ * THE RECORD'S VERSION RIGHT AFTER THIS STEP'S WRITE (lane CAL, 2026-10-02). The history keeps the
3688
+ * newest version it knows per record (its own writes, undos and redos), and an undo or redo is
3689
+ * written against THAT — so a change anybody else made since is REFUSED and said, never
3690
+ * overwritten, while a person undoing their own steps in order is never refused by themselves.
3691
+ */
3692
+ version?: number | undefined;
3693
+ }
3694
+ /** What one step of undo holds. */
3695
+ interface GridUndoStep {
3696
+ /** What the person did, in words: "Set Visit status on 20 appointments". */
3697
+ label: string;
3698
+ cells: TouchedCell[];
3699
+ /** Records this change created — undo archives them. */
3700
+ created?: Uuid$1[] | undefined;
3701
+ /** Records this change archived — undo restores them. */
3702
+ archived?: Uuid$1[] | undefined;
3703
+ /** The after-values are the store's own (a row action worked them out), so it cannot be redone. */
3704
+ noRedo?: boolean | undefined;
3705
+ /**
3706
+ * A COLUMN THIS STEP RETIRED (grids review 3, lane H item 1): undo brings it back through
3707
+ * `custom.field_restore` with every value it held, redo retires it again. Before this a column
3708
+ * delete was no step at all, so Cmd-Z after it silently undid the OLDER cell edit beneath it.
3709
+ */
3710
+ retiredField?: {
3711
+ fieldId: Uuid$1;
3712
+ } | undefined;
3713
+ }
3714
+ interface GridUndo {
3715
+ push: (step: GridUndoStep) => void;
3716
+ undo: () => Promise<void>;
3717
+ redo: () => Promise<void>;
3718
+ canUndo: boolean;
3719
+ canRedo: boolean;
3720
+ /** How many steps back / forward, for the buttons. */
3721
+ depth: {
3722
+ back: number;
3723
+ forward: number;
3724
+ };
3725
+ busy: boolean;
3726
+ /** The last thing said: what was done or undone, or the store's refusal. */
3727
+ notice: {
3728
+ says: string;
3729
+ refusal: RecordsError | null;
3730
+ canUndo: boolean;
3731
+ } | null;
3732
+ dismiss: () => void;
3733
+ /**
3734
+ * Say something beside the last step without a step. `sticky` (a paste the store refused, a
3735
+ * read-back that came up short) stays until dismissed; otherwise it leaves by itself.
3736
+ */
3737
+ say: (says: string, sticky?: boolean) => void;
3738
+ }
3739
+
3740
+ /** What one write answered: done (with the version it made), or the store's refusal. */
3741
+ type MoveWritten = {
3742
+ ok: true;
3743
+ version: number | null;
3744
+ } | {
3745
+ ok: false;
3746
+ error: RecordsError;
3747
+ };
3748
+ /**
3749
+ * THE WRITE ITSELF: ONE `recordUpdate`, against the version the caller drew the record at. `null`
3750
+ * means the caller does not know it — the write is then NOT sent, because a write with no version
3751
+ * is a write that can overwrite a colleague (said as a refusal, never silently).
3752
+ */
3753
+ declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate">, recordId: Uuid$1, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
3754
+ interface RecordMoves {
3755
+ /**
3756
+ * Move one record: `patch` is the new values by Field key, `before` the values it held (read from
3757
+ * the row the person dragged), `label` what happened in words ("Rosa Delgado moved to Oct 14").
3758
+ * Answers whether the store took it.
3759
+ */
3760
+ move: (args: {
3761
+ recordId: Uuid$1;
3762
+ patch: Record<string, unknown>;
3763
+ before: Record<string, unknown>;
3764
+ label: string;
3765
+ }) => Promise<boolean>;
3766
+ /** Make one record from a gesture (a click on a day, a drag across hours): ONE write, one undo step. */
3767
+ create: (args: {
3768
+ tableId: Uuid$1;
3769
+ data: Record<string, unknown>;
3770
+ label: string;
3771
+ }) => Promise<Uuid$1 | null>;
3772
+ /** The refusal the store gave the last move, and the record it is about — a badge on that card. */
3773
+ refused: {
3774
+ recordId: Uuid$1;
3775
+ error: RecordsError;
3776
+ changedElsewhere: boolean;
3777
+ } | null;
3778
+ /** Say a sentence in the notice without a step (`sticky`: stays until dismissed). */
3779
+ say: (says: string, sticky?: boolean) => void;
3780
+ /** The package's undo history these moves are steps of. */
3781
+ undo: GridUndo;
3782
+ /** Cmd/Ctrl-Z and Shift-Cmd-Z, for the layout's frame (`onKeyDown`). */
3783
+ onKeyDown: (event: KeyboardEvent) => void;
3784
+ /** The floating notice (what moved, Undo, or the refusal). The frame around it is `relative`. */
3785
+ notice: ReactElement;
3786
+ }
3787
+ declare function useRecordMoves({ tableId, rows, onMoved, }: {
3788
+ tableId: Uuid$1;
3789
+ /** The rows the layout drew — their versions are what a move is written against. */
3790
+ rows: readonly ReadRow[];
3791
+ onMoved?: (() => void) | undefined;
3792
+ }): RecordMoves;
3793
+
3299
3794
  /** What the screen says above the list, so nobody has to be told twice that nothing was destroyed. */
3300
3795
  declare const ARCHIVE_MEANS = "Archiving never destroys anything. A record you remove from the grid waits here until somebody brings it back.";
3301
3796
  /** The sentence a person who may not restore reads INSTEAD of a control they cannot use. */
@@ -3916,9 +4411,18 @@ interface FormBuilderProps {
3916
4411
  * empty builder that needs a second press on "New form" (lane HANDOVER, 2026-09-28).
3917
4412
  */
3918
4413
  startWithOne?: boolean | undefined;
4414
+ /**
4415
+ * MAKE A NEW FORM ON OPEN, whatever the table already has (lane MAKE-HOME, 2026-10-02): a host
4416
+ * whose person pressed "make a form" (the /make hub) gets a new form beside the existing ones,
4417
+ * named for the table and never colliding with one already there — once per mount. Until it is
4418
+ * made the builder shows its loading state, so the host is never handed an older form.
4419
+ */
4420
+ createOnMount?: boolean | undefined;
3919
4421
  className?: string | undefined;
3920
4422
  }
3921
- declare function FormBuilder({ tableId, seed, activeFormId, onActiveForm, startWithOne, className }: FormBuilderProps): react.JSX.Element;
4423
+ /** The table's form name, numbered past any form of that name already on it ("Intake form 2"). */
4424
+ declare function freshFormName(base: string, taken: readonly string[]): string;
4425
+ declare function FormBuilder({ tableId, seed, activeFormId, onActiveForm, startWithOne, createOnMount, className }: FormBuilderProps): react.JSX.Element;
3922
4426
 
3923
4427
  /**
3924
4428
  * The shapes a block can take. There is exactly ONE closed set and it is the
@@ -4062,30 +4566,6 @@ declare function ChartLegendContent({ payload, config, className, }: {
4062
4566
  className?: string | undefined;
4063
4567
  }): react.JSX.Element | null;
4064
4568
 
4065
- /** The one token form, written the way the store's own pattern reads it. */
4066
- declare function fieldToken(fieldId: Uuid$1): string;
4067
- /** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
4068
- interface DocTemplateSpec {
4069
- name: string;
4070
- /** The body, tokens and all. */
4071
- body: string;
4072
- }
4073
- /**
4074
- * A template written in terms of Field KEYS — which is how an agent thinks and
4075
- * how a person reads — turned into the store's id-based tokens. The agent writes
4076
- * `{{title}}`; what is stored points at the Field's id, so a rename never
4077
- * silently empties the document.
4078
- *
4079
- * A key this Table does not have is LEFT EXACTLY AS IT IS, so
4080
- * `custom.doc_unresolved_tokens` names it and the screen shows the store's own
4081
- * reason — it is never quietly deleted from the body.
4082
- */
4083
- declare function bodyFromKeys(body: string, fields: Field[]): string;
4084
- /** The reverse, for a person reading a stored body: ids shown as the Field's label. */
4085
- declare function bodyForReading(body: string, fields: Field[]): string;
4086
- /** VAL-10: a signature is a Value on a text Field whose format is `signature`. */
4087
- declare function isSignatureField(field: Field): boolean;
4088
-
4089
4569
  interface DocTemplateProps {
4090
4570
  /** The Table these templates render. */
4091
4571
  tableId: Uuid;
@@ -4163,9 +4643,16 @@ interface DashboardCanvasProps {
4163
4643
  activeDashboardId?: Uuid | null | undefined;
4164
4644
  /** The one filter bar across the canvas. Merged UNDER each block's own filter. */
4165
4645
  filter?: Record<string, AggregateFilter> | undefined;
4646
+ /**
4647
+ * MAKE A NEW DASHBOARD ON OPEN, whatever the table already has (lane MAKE-HOME, 2026-10-02): the
4648
+ * /make hub's "Dashboard" gets the starter dashboard "New dashboard" makes, once per mount.
4649
+ */
4650
+ createOnMount?: boolean | undefined;
4651
+ /** Told the id of a dashboard this canvas made (the starter, or `createOnMount`'s). */
4652
+ onCreated?: ((dashboardId: Uuid) => void) | undefined;
4166
4653
  className?: string | undefined;
4167
4654
  }
4168
- declare function DashboardCanvas({ tableId, activeDashboardId, filter, className }: DashboardCanvasProps): react.JSX.Element;
4655
+ declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
4169
4656
 
4170
4657
  interface FormsPanelProps {
4171
4658
  tableId: Uuid;
@@ -4378,9 +4865,16 @@ interface BookingBuilderProps {
4378
4865
  form_id: string;
4379
4866
  }) => void) | undefined;
4380
4867
  onClose?: (() => void) | undefined;
4868
+ /**
4869
+ * A NEW PAGE, whatever the table already has (lane MAKE-HOME, 2026-10-02). Without it and without
4870
+ * `bookingId` the builder opens the table's first page; a host whose person pressed "make a
4871
+ * booking page" (the /make hub) passes this, and the first Save makes a second page beside the
4872
+ * old one. After that Save the builder keeps editing the page it just made.
4873
+ */
4874
+ startNew?: boolean | undefined;
4381
4875
  className?: string | undefined;
4382
4876
  }
4383
- declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }: BookingBuilderProps): react.JSX.Element;
4877
+ declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, startNew, className }: BookingBuilderProps): react.JSX.Element;
4384
4878
 
4385
4879
  interface BookingSlotsProps {
4386
4880
  /**
@@ -5183,6 +5677,14 @@ declare function dateText(field: Pick<Field, "type" | "config" | "format">, valu
5183
5677
  declare function calendarDayOf(value: unknown): string | null;
5184
5678
  /** The heading of one calendar day — `Apr 1, 2026` — built on local midnight, never UTC. */
5185
5679
  declare function calendarDayLabel(day: string): string;
5680
+ /** The day key of a moment, on the viewer's calendar. */
5681
+ declare function dayKeyOf(at: Date): string;
5682
+ /** A day key as local midnight. */
5683
+ declare function dayAt(day: string): Date;
5684
+ /** The day `n` days after (or before, when negative) `day`. */
5685
+ declare function addDays(day: string, n: number): string;
5686
+ /** Whole days from `from` to `to` (negative when `to` is earlier). DST-safe: rounds the hour away. */
5687
+ declare function daysBetween(from: string, to: string): number;
5186
5688
 
5187
5689
  /** The word a withheld cell shows in place of a value. Never "—", which means empty. */
5188
5690
  declare const WITHHELD_WORD = "Withheld";
@@ -5298,4 +5800,9 @@ declare function useDrill(args: {
5298
5800
  def: DrillDefinition | null;
5299
5801
  };
5300
5802
 
5301
- export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, 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, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LEVEL_WORD, LOOK_WORDS, type LabelLookup, type LinkRail, MACHINE_IDENTITY, MANUAL_SORT, 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, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, 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, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, type ShownViewReport, SignBlock, type SignBlockProps, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_MENU, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, type TableOpening, TablePage, type TablePageHeaderChrome, type TablePageProps, TableRenameDialog, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, colorFromTheValue, columnDeclarationFor, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, declareView, defaultViewOf, designatedLayoutOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, editorKindFor, ensureSystemTable, entityReferenceSpec, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, footerOf, formDeclareArgs, formFromSummary, formPresentation, formatForField, freeColumnName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isChoiceAddition, isDateField, isEngineerText, isId, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, nextInWords, nextSummaryAt, notAChoiceSentence, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, railFromParam, readLooks, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, renderValue, resolveTableStyle, revokeConsequence, rowName, rowNameIn, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, singularNoun, snoozeChoices, specFromBlock, storeDecidesRights, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tableRightsAt, unknownRailLine, unknownViewLine, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useViewRecords, useWhoChanged, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
5803
+ interface ObjectActionMenuItemsProps {
5804
+ actions: readonly ObjectAction[];
5805
+ }
5806
+ declare function ObjectActionMenuItems({ actions }: ObjectActionMenuItemsProps): react.JSX.Element;
5807
+
5808
+ export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, 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, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, ExampleTables, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, 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, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, RecordValue, RecordsMount, type RecordsMountProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_MENU, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, THE_SYSTEM, TIMELINE_ZOOMS, type TableLane, type TableOpening, TablePage, type TablePageHeaderChrome, type TablePageProps, type TablePickerEntries, type TablePickerEntry, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TrackedVersion, type UseSystemTableState, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, colorFromTheValue, columnDeclarationFor, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, designatedLayoutOf, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, editorKindFor, ensureSystemTable, entityReferenceSpec, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, footerOf, formDeclareArgs, formFromSummary, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isId, isKeptTable, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, moveRecordValue, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, railFromParam, readLooks, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowName, rowNameIn, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureWords, singularNoun, snoozeChoices, specFromBlock, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableRightsAt, unknownRailLine, unknownViewLine, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useViewRecords, useWhoChanged, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };