@ai-matrx/records-ui 0.93.132 → 0.93.140

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";
@@ -1450,11 +1425,13 @@ interface Options {
1450
1425
  * A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
1451
1426
  * the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
1452
1427
  */
1428
+ /** One cell the store took: its value before and after, and the record version that write made. */
1453
1429
  onWritten?: ((write: {
1454
1430
  rowId: Uuid$1;
1455
1431
  key: string;
1456
1432
  before: unknown;
1457
1433
  after: unknown;
1434
+ version?: number;
1458
1435
  }) => void) | undefined;
1459
1436
  /**
1460
1437
  * THE GRID GETS ITS KEYS BACK (merged-grid review 2026-09-26, A1). Bound, an editor that closes
@@ -1563,8 +1540,101 @@ declare function refusalOr(error: RecordsError | null | undefined, code: Records
1563
1540
  */
1564
1541
  declare function asRefusal(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
1565
1542
 
1566
- /** The four ways one saved view can be looked at (SCR-6). */
1567
- declare const VIEW_LAYOUTS: readonly ["grid", "kanban", "calendar", "gallery"];
1543
+ /** Every surface a saved view is drawn by. `sheet` is the spreadsheet surface (G-lanes). */
1544
+ type ViewKeyLayout = "grid" | "kanban" | "calendar" | "gallery" | "sheet" | "timeline";
1545
+ /**
1546
+ * 🚩 THE ONE SWITCH FOR THE TIMELINE'S STORE KEYS (lane VIEWS-AND-FIELDS, sublane TL).
1547
+ *
1548
+ * `vk_a_calendar_keeps_where_a_record_ends_and_a_timeline_is_a_view.sql` (sublane VK) teaches
1549
+ * `custom.view_keys()` the layout `timeline`, the keys `start_field` and `end_field` (calendar +
1550
+ * timeline), and `group_field` for the timeline. Until that migration is on production this stays
1551
+ * `false`, and:
1552
+ * · `timeline` is not a layout the store keeps (`STORE_KEPT_LAYOUTS`), so it is drawn for the visit;
1553
+ * · `start_field` / `end_field` are held for the visit, never sent (`viewSettingsPatch`), and the
1554
+ * Start also rides `date_field`, which the store already keeps;
1555
+ * · the timeline's toolbar says "Kept for this visit only".
1556
+ * Flipped to `true`, VIEW_KEYS below mirrors the migrated registry row for row (the live walk
1557
+ * compares them) and every one of those is kept on the view.
1558
+ */
1559
+ declare const STORE_KEEPS_TIMELINE = true;
1560
+ /** Who may write a key: anyone who may save the view, an input the door rewrites, or the server only. */
1561
+ type ViewKeyWriter = "caller" | "input" | "server";
1562
+ interface ViewKeyDeclaration {
1563
+ /** Where it lives in `platform.saved_view.definition` (dotted under `presentation`). */
1564
+ path: string;
1565
+ /** What the store's guard checks (`custom._view_key_value`). */
1566
+ shape: string;
1567
+ /** The layouts that read it. */
1568
+ layouts: readonly ViewKeyLayout[];
1569
+ writer: ViewKeyWriter;
1570
+ }
1571
+ /**
1572
+ * THE REGISTRY, as `custom.view_keys()` declares it (uichamp_s1_a_view_keeps_every_setting_it_is_given.sql).
1573
+ * Order and content are compared with the store by the live walk.
1574
+ */
1575
+ declare const VIEW_KEYS: readonly ViewKeyDeclaration[];
1576
+ /**
1577
+ * THE LAYOUTS THE STORE KEEPS ON A VIEW. `custom.view_keys()` judges a view's `layout` against its
1578
+ * own list (grid, kanban, calendar, gallery, sheet) and refuses any other word by name. A layout this
1579
+ * package draws before the store keeps it — the timeline, 2026-10-02 — is never sent as a view's or a
1580
+ * look's layout (`viewSettingsPatch`, `viewDocument`): it is drawn for this visit and says so. When the
1581
+ * store's registry admits it, add it here and nothing else changes.
1582
+ */
1583
+ declare const STORE_KEPT_LAYOUTS: readonly string[];
1584
+ /** Whether the store keeps this layout on a saved view. */
1585
+ declare function storeKeepsLayout(layout: string): boolean;
1586
+ /** The keys one layout reads, by path. */
1587
+ declare function viewKeysFor(layout: ViewKeyLayout): string[];
1588
+ /** One sort clause: a Field key and a direction. */
1589
+ interface ViewSortKey {
1590
+ field: string;
1591
+ direction: "asc" | "desc";
1592
+ }
1593
+ /**
1594
+ * EVERY DECLARED KEY OF A VIEW, TYPED. Absent keys are `null` / empty, never guessed.
1595
+ * `presentation` is the parsed look (colour field, pinned fields, row height, grouping with its
1596
+ * sub-groups and shut sections, hidden fields, gallery size, summaries).
1597
+ */
1598
+ interface ViewSettings {
1599
+ layout: "grid" | "kanban" | "calendar" | "gallery";
1600
+ filters: RecordFilter | null;
1601
+ where: RuleExpression | null;
1602
+ groupField: string | null;
1603
+ swimlaneField: string | null;
1604
+ collapsedColumns: string[];
1605
+ measure: string | null;
1606
+ dateField: string | null;
1607
+ /** Timeline: where a record's bar starts (`start_field`). */
1608
+ startField: string | null;
1609
+ /** Calendar and timeline: where a record ends (`end_field`). */
1610
+ endField: string | null;
1611
+ imageField: string | null;
1612
+ sorts: ViewSortKey[];
1613
+ ruleId: string | null;
1614
+ isDefault: boolean;
1615
+ presentation: GridPresentation;
1616
+ movedFrom: Record<string, unknown> | null;
1617
+ }
1618
+ /** THE READER. A stored `definition` (and the row's flat `filters`) in, every declared key out. */
1619
+ declare function viewSettings(definition: Record<string, unknown> | null | undefined, rowFilters?: RecordFilter | null): ViewSettings;
1620
+ /** The settings as the spec names them — what `viewSettingsPatch` takes. */
1621
+ type ViewSettingsPatch = Partial<Omit<ViewSettings, "movedFrom" | "layout">> & {
1622
+ /** Any layout the package draws; one the store does not keep is not sent. */
1623
+ layout?: string;
1624
+ };
1625
+ /**
1626
+ * THE KEYS ONE LAYOUT READS, and nothing else. A layout that does not use a key never sees it:
1627
+ * a calendar is not told the board's swimlanes, a board is not told the grid's pinned fields.
1628
+ */
1629
+ declare function viewSettingsFor(settings: ViewSettings, layout: ViewKeyLayout): Partial<ViewSettings>;
1630
+ /**
1631
+ * THE WRITER'S SHAPE. Only the keys a press changed; a cleared Field is `null` (the door removes
1632
+ * it); lists are sent whole. `presentation` is sent whole because the door judges it as one key.
1633
+ */
1634
+ declare function viewSettingsPatch(patch: ViewSettingsPatch): Record<string, unknown>;
1635
+
1636
+ /** The ways one saved view can be looked at (SCR-6; the timeline, lane VIEWS-AND-FIELDS TL). */
1637
+ declare const VIEW_LAYOUTS: readonly ["grid", "kanban", "calendar", "gallery", "timeline"];
1568
1638
  type ViewLayout = (typeof VIEW_LAYOUTS)[number];
1569
1639
  declare const LAYOUT_LABEL: Record<ViewLayout, string>;
1570
1640
  /**
@@ -1587,8 +1657,9 @@ declare const LAYOUT_LABEL: Record<ViewLayout, string>;
1587
1657
  * · calendar a DATE column (it places each record on a day). Blocking.
1588
1658
  * · gallery a FILE column for the card's picture. NOT blocking: the cards draw without one,
1589
1659
  * so the offer sits above them instead of in place of them.
1660
+ * · timeline a DATE column each bar starts on (the calendar's `dateField`). Blocking.
1590
1661
  * `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,
1662
+ * nothing a table can lack. This package ships no map layout; the day it does,
1592
1663
  * `Record<ViewLayout, …>` below refuses to compile until the new layout names what it needs.
1593
1664
  */
1594
1665
  type ViewNeedKind = "choice" | "date" | "file";
@@ -1656,6 +1727,10 @@ interface SavedViewSpec {
1656
1727
  collapsedColumns?: string[];
1657
1728
  /** Calendar: the Field that places a record in the month. */
1658
1729
  dateField?: string | null;
1730
+ /** Timeline: the Field a record's bar starts on (`start_field`). */
1731
+ startField?: string | null;
1732
+ /** Calendar and timeline: the Field a record ends on (`end_field`). */
1733
+ endField?: string | null;
1659
1734
  /** Gallery: the Field shown large on the card. */
1660
1735
  imageField?: string | null;
1661
1736
  sorts?: ViewSort[];
@@ -1808,7 +1883,7 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, ViewNeedKind | null>;
1808
1883
  * exists, and never a per-table screen. Every Table inherits it the moment it
1809
1884
  * is in this list.
1810
1885
  */
1811
- declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards", "archived"];
1886
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "timeline", "dashboards", "archived"];
1812
1887
  type PageView = (typeof PAGE_VIEWS)[number];
1813
1888
  declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1814
1889
  /**
@@ -2260,12 +2335,27 @@ interface CustomFieldsSectionProps {
2260
2335
  * it returns is called on unmount. The door reads live state on every call.
2261
2336
  */
2262
2337
  agentDoor?: ((door: CustomFieldsAgentDoor) => () => void) | undefined;
2338
+ /**
2339
+ * T1.2 (Doctrine R8): a person who may not change this table's shape makes her own table
2340
+ * instead. The host knows where tables are made; without it the offer is absent.
2341
+ */
2342
+ onMakeOwnTable?: (() => void) | undefined;
2343
+ /**
2344
+ * The name this page gives its records ("Contact"), when the registry's label is not the word a
2345
+ * person reads here. Used in the editor's header and in place of the registry's label inside the
2346
+ * store's sentence.
2347
+ */
2348
+ entityLabel?: string | undefined;
2263
2349
  }
2264
2350
  /** One field an agent (or anyone) asks the section to add. */
2265
2351
  interface CustomFieldAddRequest {
2266
2352
  label: string;
2267
2353
  /** One of `ADDABLE_TYPES[].value`. Defaults to `text`. */
2268
2354
  type?: string | undefined;
2355
+ /** A Choice's choices, one per entry. A Choice may start with none. */
2356
+ options?: string[] | undefined;
2357
+ /** For "Points at another record": the id of the table it points at. */
2358
+ relation_target?: string | undefined;
2269
2359
  }
2270
2360
  type CustomFieldAddResult = {
2271
2361
  ok: true;
@@ -2292,6 +2382,7 @@ interface CustomFieldsAgentState {
2292
2382
  label: string;
2293
2383
  type: string;
2294
2384
  value?: unknown;
2385
+ withheld?: string;
2295
2386
  }>;
2296
2387
  types: ReadonlyArray<{
2297
2388
  value: string;
@@ -2330,8 +2421,20 @@ interface CustomFieldsAgentDoor {
2330
2421
  /** Writes this record's values in ONE `custom.entity_value_write` (a key left out is left alone). */
2331
2422
  setValues: (values: CustomFieldValuesRequest) => Promise<CustomFieldSetResult>;
2332
2423
  }
2424
+ /**
2425
+ * WHAT A PERSON CAN ADD FROM A RECORD PAGE: EVERYTHING A TABLE'S COLUMN CAN BE.
2426
+ *
2427
+ * 🚨 G3 — ONE PALETTE (lane 7 STANDARD-TABLES, wave 1). This used to be a hand-kept list of
2428
+ * eleven types (`ADDABLE_TYPE_IDS`) "that need nothing more than a name", so a CRM contact could
2429
+ * not get a Choice, a Yes / no or a link to another record, and none of the column's governance —
2430
+ * while `custom.entity_field_declare` resolves its spec through the very `custom._field_document_for`
2431
+ * a custom table's column goes through. A standard table and a custom table are one primitive, so
2432
+ * the record page opens the table's own `FieldEditor` and offers `fieldTypes.ts`'s pickable set,
2433
+ * nothing more and nothing less. `a-record-page-adds-a-field-with-the-tables-own-palette.test.tsx`
2434
+ * fails the moment this list and that set differ.
2435
+ */
2333
2436
  declare const ADDABLE_TYPES: {
2334
- value: "number" | "attachment" | "currency" | "datetime" | "email" | "text" | "member" | "percent" | "phone" | "url" | "long_text";
2437
+ value: string;
2335
2438
  label: string;
2336
2439
  }[];
2337
2440
  /**
@@ -2339,7 +2442,7 @@ declare const ADDABLE_TYPES: {
2339
2442
  * never just the first. Pure, so it is tested without a store.
2340
2443
  */
2341
2444
  declare function customFieldRequestProblems(requests: readonly CustomFieldAddRequest[], existingLabels: readonly string[]): string[];
2342
- declare function CustomFieldsSection({ entityToken, recordId, title, className, agentDoor, }: CustomFieldsSectionProps): react.JSX.Element | null;
2445
+ declare function CustomFieldsSection({ entityToken, recordId, title, className, agentDoor, onMakeOwnTable, entityLabel, }: CustomFieldsSectionProps): react.JSX.Element | null;
2343
2446
 
2344
2447
  /** The three behaviours that carry no parity type of their own. */
2345
2448
  type PlainFieldType = "text" | "long_text" | "number";
@@ -2379,7 +2482,15 @@ type RelationFieldType = "relation";
2379
2482
  * `FIELD_TYPE_CHOICES`'s coverage and as a red `kindsWithNoChoice()` below — never as a
2380
2483
  * silence.
2381
2484
  */
2382
- type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference";
2485
+ type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference" | NewerFieldKind;
2486
+ /**
2487
+ * LANE 10 P4: THE NINE NEWER KINDS (rating, duration, created by, last changed by, status, address,
2488
+ * barcode, formatted text, count). Each is listed in `FIELD_TYPE_CATALOGUE` below, so every reader
2489
+ * (Settings, the column panel, every layout) names a column of one by its own word; the MENU offers
2490
+ * one only once `custom.field_kinds()` publishes it (after the chair's apply and
2491
+ * `pnpm records:generate`), so a person is never offered a kind the live store would refuse.
2492
+ */
2493
+ declare function storePublishesKind(kind: string): boolean;
2383
2494
  /**
2384
2495
  * THE STORE'S OWN STAMPS AS COLUMNS (GRID-PRIMITIVES G5; TABLE-PARITY H2 H3, lane
2385
2496
  * DEFAULT-GRID-PARITY). `custom.field_declare` takes these three WORDS and makes each a formula
@@ -2400,6 +2511,11 @@ interface FieldTypeChoice {
2400
2511
  /** The heading it sits under, so seventeen choices read as four short lists. */
2401
2512
  group: "Words" | "Numbers and dates" | "Choices and people" | "Worked out";
2402
2513
  }
2514
+ /**
2515
+ * EVERY KIND THIS PACKAGE CAN NAME AND DRAW, in menu order. The menu (`FIELD_TYPE_CHOICES`) is this
2516
+ * list less the kinds the live store does not take yet; every reader names a column from this one.
2517
+ */
2518
+ declare const FIELD_TYPE_CATALOGUE: FieldTypeChoice[];
2403
2519
  declare const FIELD_TYPE_CHOICES: FieldTypeChoice[];
2404
2520
  declare const FIELD_TYPE_GROUPS: FieldTypeChoice["group"][];
2405
2521
  declare function fieldTypeChoice(id: string): FieldTypeChoice | undefined;
@@ -2453,29 +2569,48 @@ declare function kindsWithNoChoice(): string[];
2453
2569
 
2454
2570
  /** `Day rate` → `day_rate`. Shown, so nothing about it is a surprise. */
2455
2571
  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;
2572
+ interface FieldEditorCommon {
2573
+ /**
2574
+ * The name the host's page gives this table's records ("Contact"), when the store's own label
2575
+ * is not the word a person reads there. Shown in the header and in place of the store's label
2576
+ * inside its refusal sentence.
2577
+ */
2578
+ tableLabel?: string | undefined;
2460
2579
  onSaved?: (() => void) | undefined;
2461
2580
  onCancel?: (() => void) | undefined;
2462
2581
  /** Called after the store has accepted the removal, so the list can re-read. */
2463
2582
  onRemoved?: (() => void) | undefined;
2464
2583
  className?: string | undefined;
2465
2584
  }
2466
- declare function FieldEditor({ tableId, field, onSaved, onCancel, onRemoved, className }: FieldEditorProps): react.JSX.Element;
2467
2585
  /**
2468
- * WHAT THE PANEL STILL NEEDS BEFORE THE STORE WOULD TAKE THIS, in plain words.
2586
+ * ONE EDITOR FOR BOTH KINDS OF TABLE (lane 7 STANDARD-TABLES, wave 1; Doctrine R13).
2469
2587
  *
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.
2588
+ * A column of one of an organization's own tables is named by its Table's uuid (`tableId`). A
2589
+ * custom field of a STANDARD table — a CRM contact, a deal, any registry Entity or Detail — has no
2590
+ * Table record and is named by its registry token (`entityToken`). Both are the same primitive to
2591
+ * a person: the same palette (`fieldTypes.ts`), the same questions, the same governance (who sees
2592
+ * it, whether an assistant reads it, what counts as a good value). The only difference is which
2593
+ * store door takes the declaration — `custom.field_declare` or `custom.entity_field_declare`,
2594
+ * which resolves the spec through the same `custom._field_document_for` — and who may change the
2595
+ * shape: the table's own Owner/Admin level, or the organization's admins
2596
+ * (`custom.entity_field_rights`, whose sentence is shown as it is).
2474
2597
  *
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.
2598
+ * A standard table's field is DECLARED here; editing an existing one stays with the record page's
2599
+ * own section (rename, remove), because the edit arms below (choice re-homing, retype, look) are
2600
+ * custom-table doors.
2478
2601
  */
2602
+ type FieldEditorProps = FieldEditorCommon & ({
2603
+ tableId: Uuid$1;
2604
+ entityToken?: undefined;
2605
+ /** The Field being edited. Absent means a new one. */
2606
+ field?: Field | undefined;
2607
+ } | {
2608
+ /** The standard table's registry token (REC-33), e.g. `party`, `crm_deal`. */
2609
+ entityToken: string;
2610
+ tableId?: undefined;
2611
+ field?: undefined;
2612
+ });
2613
+ declare function FieldEditor(props: FieldEditorProps): react.JSX.Element | null;
2479
2614
  declare function whatIsMissing(state: {
2480
2615
  type: PickableFieldType;
2481
2616
  label: string;
@@ -2693,6 +2828,64 @@ interface RelationPickerProps {
2693
2828
  }
2694
2829
  declare function RelationPicker({ field, value, onChange, disabled, id, className, allowCreate }: RelationPickerProps): react.JSX.Element;
2695
2830
 
2831
+ interface PickOrAddItem {
2832
+ id: string;
2833
+ label: string;
2834
+ /** A second line that tells two same-named items apart. */
2835
+ detail?: string | null | undefined;
2836
+ picked: boolean;
2837
+ /** The tooltip; defaults to the label. */
2838
+ title?: string | undefined;
2839
+ /**
2840
+ * The item drawn AS A CHIP in these classes — a choice in the colour its column keeps for it
2841
+ * (`choiceChipLookOf`), so the list reads the way the cell does. Absent: plain words.
2842
+ */
2843
+ chip?: string | undefined;
2844
+ /** Attributes a caller's tests and walks select by (e.g. `data-relation-candidate`). */
2845
+ attrs?: Record<string, string> | undefined;
2846
+ }
2847
+ interface PickOrAddProps {
2848
+ /** The trigger's accessible name, e.g. "Pick for Category". */
2849
+ triggerLabel: string;
2850
+ /** The trigger's visible word, e.g. "Pick", "Change", "Choose". */
2851
+ triggerText: string;
2852
+ triggerId?: string | undefined;
2853
+ open: boolean;
2854
+ onOpenChange: (open: boolean) => void;
2855
+ search: string;
2856
+ onSearch: (search: string) => void;
2857
+ items: PickOrAddItem[];
2858
+ onPick: (id: string) => void;
2859
+ /** Above the list: a refusal, a "Reading…", a ceiling reached. */
2860
+ notice?: ReactNode;
2861
+ /** When the list is empty. */
2862
+ empty?: ReactNode;
2863
+ /** The add line at the foot. Absent = no add line. */
2864
+ add?: {
2865
+ label: string;
2866
+ onAdd: () => void;
2867
+ disabled?: boolean | undefined;
2868
+ } | null | undefined;
2869
+ /** The foot's own state, drawn in place of the add line when there is one (a name box, a "Reading that table…"). */
2870
+ foot?: ReactNode;
2871
+ /** Under the add line: a refusal of the add, with its own doors. */
2872
+ footNote?: ReactNode;
2873
+ /**
2874
+ * ENTER WITH NOTHING TO PICK when the foot is the caller's own (a choice cell's Add / Keep as
2875
+ * typed / Cancel question): what the question's first answer does (grids review 3, 2026-09-30: a
2876
+ * new choice word + Enter did nothing, while Tab then Enter added it). Absent: the add line.
2877
+ */
2878
+ onEnterWithNoMatch?: (() => void) | undefined;
2879
+ }
2880
+ declare function PickOrAdd({ triggerLabel, triggerText, triggerId, open, onOpenChange, search, onSearch, items, onPick, notice, empty, add, foot, footNote, onEnterWithNoMatch, }: PickOrAddProps): react.JSX.Element;
2881
+
2882
+ declare function ExampleTables({ onBuilt, onClose, className, }: {
2883
+ /** Called with the first table the example built, once it is there. */
2884
+ onBuilt: (tableId: Uuid) => void;
2885
+ onClose: () => void;
2886
+ className?: string | undefined;
2887
+ }): react.JSX.Element;
2888
+
2696
2889
  /** What the panel says while the chosen list is empty. */
2697
2890
  declare const ENTITY_REFERENCE_KINDS_MISSING = "Choose at least one kind of thing this column points at.";
2698
2891
  /**
@@ -2797,6 +2990,12 @@ interface FieldEditorControlProps {
2797
2990
  * a choice control adds the words through `fieldUpdate`'s `options_add` and hands back words.
2798
2991
  */
2799
2992
  addsChoices?: boolean | undefined;
2993
+ /**
2994
+ * DRAWN AS A FORM QUESTION (lane VIEWS-AND-FIELDS W1-B item 3): a choice is answered from its
2995
+ * choices laid out — pills for a few, a searchable list for more (`ChoiceAnswer`) — never a
2996
+ * drop-down or a "Choose" button. Every other control ignores it.
2997
+ */
2998
+ asForm?: boolean | undefined;
2800
2999
  }
2801
3000
  /** The label row every editor shares: one line, the label, the unit, the required mark. */
2802
3001
  declare function FieldLabel({ field, htmlFor, children }: {
@@ -2804,7 +3003,7 @@ declare function FieldLabel({ field, htmlFor, children }: {
2804
3003
  htmlFor: string;
2805
3004
  children?: ReactNode;
2806
3005
  }): 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;
3006
+ 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
3007
  /** The chip a picked record shows as — REC-2's "a record is a chip" in one place. */
2809
3008
  declare function RecordChip({ title, onRemove, className, }: {
2810
3009
  title: string;
@@ -2820,9 +3019,11 @@ interface ChoiceListRow {
2820
3019
  words: string;
2821
3020
  /** A stable React key for a row that has no id yet. */
2822
3021
  row: string;
3022
+ /** The colour it wears (`display_format.options.choices`); null or absent: none. */
3023
+ color?: StyleColor | null | undefined;
2823
3024
  }
2824
- /** The rows a column's live options start as, in the store's order. */
2825
- declare function choiceRowsFrom(options: readonly StoredRecord[]): ChoiceListRow[];
3025
+ /** The rows a column's live options start as, in the store's order, each in the colour its Field keeps. */
3026
+ declare function choiceRowsFrom(options: readonly StoredRecord[], field?: Field): ChoiceListRow[];
2826
3027
  /**
2827
3028
  * WHAT A SAVE SENDS as `options`, or `undefined` when the list is what the store already holds
2828
3029
  * (so a rename of the column alone does not rewrite its choices).
@@ -2830,12 +3031,15 @@ declare function choiceRowsFrom(options: readonly StoredRecord[]): ChoiceListRow
2830
3031
  declare function choiceListPatch(start: readonly ChoiceListRow[], rows: readonly ChoiceListRow[]): Array<string | FieldOptionEdit> | undefined;
2831
3032
  /** Why this list cannot be saved yet, in the panel's words, or null. */
2832
3033
  declare function whatTheChoiceListIsMissing(rows: readonly ChoiceListRow[] | null): string | null;
2833
- declare function ChoiceListEditor({ field, rows, onRows, onStart, allowOther, rehome, onRehome, }: {
2834
- field: Field;
3034
+ declare function ChoiceListEditor({ field, isNew, rows, onRows, onStart, allowOther, rehome, onRehome, }: {
3035
+ /** The column, when it exists. Absent: a column being made, whose rows the panel holds. */
3036
+ field?: Field | undefined;
3037
+ /** A column being made: no store read, no removal question. */
3038
+ isNew?: boolean | undefined;
2835
3039
  rows: ChoiceListRow[] | null;
2836
3040
  onRows: (next: ChoiceListRow[]) => void;
2837
3041
  /** The list as the store answered it, once — what a save is compared against. */
2838
- onStart: (start: ChoiceListRow[]) => void;
3042
+ onStart?: ((start: ChoiceListRow[]) => void) | undefined;
2839
3043
  /** Whether the column takes other values — the only case "keep the words" is offered. */
2840
3044
  allowOther?: boolean | undefined;
2841
3045
  /**
@@ -2858,7 +3062,7 @@ declare function useChoiceNudge(enabled?: boolean): ChoiceNudge | null;
2858
3062
 
2859
3063
  /** The envelope for one key, when the document carries one. */
2860
3064
  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;
3065
+ 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
3066
  /**
2863
3067
  * The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
2864
3068
  * says both change the MEANING — and with an id resolved to the NAME of the
@@ -3000,6 +3204,20 @@ type EditorKind = FieldKind;
3000
3204
  * decides anything the core does not.
3001
3205
  */
3002
3206
  declare function editorKindFor(field: Field): EditorKind;
3207
+ /**
3208
+ * WHICH KIND A PERSON PICKED, read back off the Field the store keeps — the ONE reader every
3209
+ * "what does this column hold" answer goes through (the Settings column list, the column panel).
3210
+ *
3211
+ * `editorKindFor` answers which EDITOR to draw, and for two families that is not the kind a
3212
+ * person picked: a Signature is a text Field whose format is `signature` (it draws a line of
3213
+ * text), and the store's stamps — Record number, Created time, Last changed time — are formula
3214
+ * Fields whose `config.system` names the stamp. Read through the editor classifier alone, the
3215
+ * Settings list called a Signature "Text" and a Record number "Worked out from other columns"
3216
+ * (lane 10 W1-A, guard `every-pickable-kind-reads-back-as-itself.test.tsx`).
3217
+ *
3218
+ * `undefined` when the Field is none of the kinds the menu offers.
3219
+ */
3220
+ declare function pickableTypeOf(field: Field): PickableFieldType | undefined;
3003
3221
  /**
3004
3222
  * The type word a person sees in a header or a settings row — and it is the
3005
3223
  * SAME word the field panel offers, read from `FIELD_TYPE_CHOICES`, so a column
@@ -3007,6 +3225,112 @@ declare function editorKindFor(field: Field): EditorKind;
3007
3225
  */
3008
3226
  declare function fieldTypeLabel(field: Field): string;
3009
3227
 
3228
+ /** The one token form, written the way the store's own pattern reads it. */
3229
+ declare function fieldToken(fieldId: Uuid$1): string;
3230
+ /** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
3231
+ interface DocTemplateSpec {
3232
+ name: string;
3233
+ /** The body, tokens and all. */
3234
+ body: string;
3235
+ }
3236
+ /**
3237
+ * A template written in terms of Field KEYS — which is how an agent thinks and
3238
+ * how a person reads — turned into the store's id-based tokens. The agent writes
3239
+ * `{{title}}`; what is stored points at the Field's id, so a rename never
3240
+ * silently empties the document.
3241
+ *
3242
+ * A key this Table does not have is LEFT EXACTLY AS IT IS, so
3243
+ * `custom.doc_unresolved_tokens` names it and the screen shows the store's own
3244
+ * reason — it is never quietly deleted from the body.
3245
+ */
3246
+ declare function bodyFromKeys(body: string, fields: Field[]): string;
3247
+ /** The reverse, for a person reading a stored body: ids shown as the Field's label. */
3248
+ declare function bodyForReading(body: string, fields: Field[]): string;
3249
+ /** VAL-10: a signature is a Value on a text Field whose format is `signature`. */
3250
+ declare function isSignatureField(field: Field): boolean;
3251
+
3252
+ /** The drawing a signature value holds, or null when it holds none (empty, or a signer's name). */
3253
+ declare function drawnSignatureOf(value: unknown): string | null;
3254
+ /** The word a text-only place (a card title, a sentence, an export) writes for a drawn signature. */
3255
+ declare const SIGNED_WORD = "Signed";
3256
+ /** A signature value in words: a drawing is "Signed"; a sealed name stays the name. */
3257
+ declare function signatureWords(value: unknown): string | null;
3258
+ /** A signature as it reads anywhere a value is shown: the drawing, or the signer's name. */
3259
+ declare function SignatureValue({ value, inCell }: {
3260
+ value: unknown;
3261
+ inCell?: boolean | undefined;
3262
+ }): react.JSX.Element;
3263
+ /**
3264
+ * THE ONE SIGNATURE PAD. Draw with a finger, a pen or a mouse; Clear starts again. `onChange`
3265
+ * receives the drawing as a PNG data URL when a stroke ends, and `null` when cleared.
3266
+ */
3267
+ declare function SignaturePad({ value, onChange, disabled, id, className, }: {
3268
+ value: unknown;
3269
+ onChange: (value: string | null) => void;
3270
+ disabled?: boolean | undefined;
3271
+ id?: string | undefined;
3272
+ className?: string | undefined;
3273
+ }): react.JSX.Element;
3274
+
3275
+ /** The facts a picker needs about one table, whichever list it came from. */
3276
+ interface PickerTable {
3277
+ id: string;
3278
+ name: string;
3279
+ kept_by_the_app?: boolean | null | undefined;
3280
+ /** `custom.table_facts`: which feature keeps it (`choices` for a value set). */
3281
+ kept_for?: string | null | undefined;
3282
+ /** `custom.data_home_tables`: the store's one word for what it is (`list` for a value set). */
3283
+ kind?: string | null | undefined;
3284
+ /** The table a value set belongs to (`custom.table_facts.used_in_table_id`). */
3285
+ used_in_table_id?: string | null | undefined;
3286
+ /** A checklist's steps, a booking page's slots, a workflow's states. */
3287
+ work_kind?: unknown;
3288
+ slug?: string | null | undefined;
3289
+ /** When the table was made — what tells two lists apart once their column is gone. */
3290
+ created_at?: string | null | undefined;
3291
+ }
3292
+ /** A value set: the List a choice column keeps its choices in. */
3293
+ declare function isValueSet(table: PickerTable): boolean;
3294
+ /** Anything the app keeps for itself rather than a table a person keeps. */
3295
+ declare function isKeptTable(table: PickerTable): boolean;
3296
+ interface TablePickerEntry<T extends PickerTable> {
3297
+ table: T;
3298
+ id: string;
3299
+ /** Unique among the entries returned. */
3300
+ label: string;
3301
+ /** A value set (shown only with "Show lists", or because it is the chosen one). */
3302
+ isList: boolean;
3303
+ }
3304
+ interface TablePickerEntries<T extends PickerTable> {
3305
+ entries: TablePickerEntry<T>[];
3306
+ /** How many value sets "Show lists" would add — 0 means the control is not worth drawing. */
3307
+ listCount: number;
3308
+ }
3309
+ /**
3310
+ * THE ONE RULE. Tables first (by name), then — with `showLists` — the value sets, each named
3311
+ * "<column> — <owning table>". Any names still equal get " (2)", " (3)" so no two entries match.
3312
+ */
3313
+ declare function tablePickerEntries<T extends PickerTable>(tables: readonly T[], options?: {
3314
+ showLists?: boolean;
3315
+ keep?: string | null | undefined;
3316
+ }): TablePickerEntries<T>;
3317
+ /**
3318
+ * The organization's tables with the store's placement facts folded on (`kept_for`,
3319
+ * `used_in_table_id`), for a picker that reads `tableList()`. A store with no facts door, or one
3320
+ * that did not answer, leaves each table as `tableList()` gave it — its own `kept_by_the_app`.
3321
+ */
3322
+ declare function usePickerTables(): {
3323
+ loading: boolean;
3324
+ data: Array<Table & PickerTable>;
3325
+ };
3326
+ /** The "Show lists" control beside a table picker. Drawn only when there are lists to show. */
3327
+ declare function ShowListsToggle({ count, on, onChange, className, }: {
3328
+ count: number;
3329
+ on: boolean;
3330
+ onChange: (on: boolean) => void;
3331
+ className?: string | undefined;
3332
+ }): react.JSX.Element | null;
3333
+
3010
3334
  /** One Field of a package-owned Table, in the store's own words. */
3011
3335
  interface SystemFieldSpec {
3012
3336
  key: string;
@@ -3078,75 +3402,31 @@ interface TrackedVersion {
3078
3402
  note: (version: number) => void;
3079
3403
  }
3080
3404
 
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";
3405
+ declare function archiveConfirmSentence(what: string): string;
3406
+
3407
+ interface AnnounceTableArchived {
3408
+ notify: RecordsUiHost["notify"];
3409
+ client: Pick<RecordsClient, "recordRestore">;
3410
+ tableId: Uuid$1;
3411
+ /** The table's name as the store gave it. */
3412
+ name: string;
3413
+ /** Called once the table is back, so the surface can show it again. */
3414
+ onRestored?: (() => void) | undefined;
3105
3415
  }
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;
3416
+ /** Thrown by the undo when the store refuses it; its message is the store's one sentence. */
3417
+ declare class TableRestoreRefused extends Error {
3418
+ readonly refusal: RecordsError;
3419
+ readonly sentence: string;
3420
+ constructor(refusal: RecordsError);
3126
3421
  }
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;
3422
+ declare function announceTableArchived({ notify, client, tableId, name, onRestored }: AnnounceTableArchived): void;
3143
3423
 
3144
3424
  /**
3145
3425
  * WHAT A LOOK MAY HOLD — how a person looks, never what the view is: not its name, not whether it
3146
3426
  * is the default (`view_designate`), not its Rule, not the flat filters the digests read, not the
3147
3427
  * order the store writes. The store refuses anything else by name.
3148
3428
  */
3149
- type ViewLook = Partial<Pick<SavedViewSpec, "layout" | "groupField" | "swimlaneField" | "collapsedColumns" | "measure" | "dateField" | "imageField" | "sorts" | "where" | "presentation">>;
3429
+ type ViewLook = Partial<Pick<SavedViewSpec, "layout" | "groupField" | "swimlaneField" | "collapsedColumns" | "measure" | "dateField" | "startField" | "endField" | "imageField" | "sorts" | "where" | "presentation">>;
3150
3430
  /** Only the look's own keys of a press — a name, a default, a Rule or an order is never a look. */
3151
3431
  declare function lookPart(patch: Partial<SavedViewSpec>): ViewLook;
3152
3432
  /** The look as the definition keys the store keeps (`view_look_set`); a cleared key is null. */
@@ -3296,6 +3576,228 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
3296
3576
  };
3297
3577
  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
3578
 
3579
+ type CalendarMode = "month" | "week" | "day" | "list";
3580
+ interface CalendarViewProps {
3581
+ /** The table the records live in — the undo history's table, and where a new record is made. */
3582
+ tableId: Uuid;
3583
+ rows: readonly ReadRow$1[];
3584
+ /** The column a record's day (and, when it carries one, its time) is read from and written to. */
3585
+ dateField: Field$1;
3586
+ /** The table's columns, for the End and Colour by pickers and the default colour. */
3587
+ fields?: readonly Field$1[] | undefined;
3588
+ /**
3589
+ * THE END COLUMN THE VIEW KEEPS (`end_field`). Left out or null: the table's ONE other date column
3590
+ * when it has exactly one, else none until the person picks.
3591
+ */
3592
+ endKey?: string | null | undefined;
3593
+ /** The person picked an End: the host keeps it on the view (`end_field`). Unbound: kept for this visit. */
3594
+ onEndFieldChange?: ((key: string | null) => void) | undefined;
3595
+ /** Does the host save what `onEndFieldChange` hands it? Default: when it is bound. */
3596
+ endKept?: boolean | undefined;
3597
+ /** The column that names each card (`cardTitleField`). */
3598
+ titleField: Field$1 | undefined;
3599
+ onOpenRecord?: ((recordId: Uuid) => void) | undefined;
3600
+ /** A move landed (or was undone, or refused): the host re-reads the rows it owns. */
3601
+ onMoved?: (() => void) | undefined;
3602
+ /** The person picked a Colour by column: the host keeps it on the view (`presentation.style.colorBy`). */
3603
+ onColorFieldChange?: ((key: string | null) => void) | undefined;
3604
+ /** May this person make records here? Without it the calendar offers no way to add one. */
3605
+ canCreate?: boolean | undefined;
3606
+ /** The view's membership sentence (`useViewRecords().membership`). */
3607
+ note?: string | undefined;
3608
+ /** The table's and the view's colours (`resolveTableStyle`); its `colorBy` is the Colour by column. */
3609
+ style?: TableStyle | undefined;
3610
+ /** How long a record with no End lasts in the week grid, in minutes. A knob; starts at an hour. */
3611
+ defaultMinutes?: number | undefined;
3612
+ /** What a drop or a drag across hours snaps to, in minutes. A knob; starts at 15. */
3613
+ snapMinutes?: number | undefined;
3614
+ /** The day the calendar opens on; today when left out. `YYYY-MM-DD`. */
3615
+ initialDate?: string | undefined;
3616
+ /** The layout it opens in. Left out: Month, or List on a phone-width screen. */
3617
+ initialMode?: CalendarMode | undefined;
3618
+ className?: string | undefined;
3619
+ }
3620
+ /**
3621
+ * THE VALUE A DROP WRITES (pure). A date column gets a bare `YYYY-MM-DD`. A value that carries a time
3622
+ * keeps its time of day on the new day; a drop at a minute writes that minute; a value with no time
3623
+ * dropped on a DATE-AND-TIME column (`moments`) is that day's LOCAL midnight as a full instant —
3624
+ * never the bare day, which the store would read as UTC midnight (the day before, west of Greenwich).
3625
+ */
3626
+ declare function rescheduledValue(before: unknown, toDay: string, toMinute: number | null, moments?: boolean): unknown;
3627
+ /** Lay out one day's timed blocks side by side where they overlap (Google's column packing). */
3628
+ declare function packOverlaps<T extends {
3629
+ start: number;
3630
+ end: number;
3631
+ }>(blocks: readonly T[]): Array<T & {
3632
+ col: number;
3633
+ cols: number;
3634
+ }>;
3635
+ 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;
3636
+
3637
+ type TimelineZoom = "day" | "week" | "month" | "quarter";
3638
+ declare const TIMELINE_ZOOMS: readonly TimelineZoom[];
3639
+ /** The settings a timeline is drawn by, by Field key. */
3640
+ interface TimelineSettings {
3641
+ startKey: string | null;
3642
+ endKey: string | null;
3643
+ groupKey: string | null;
3644
+ colorKey: string | null;
3645
+ }
3646
+ interface TimelineViewProps {
3647
+ /** The table the records live in — the undo history's table. */
3648
+ tableId: Uuid;
3649
+ rows: readonly ReadRow$1[];
3650
+ /** The table's columns: the pickers, the lanes and the colours read them. */
3651
+ fields: readonly Field$1[];
3652
+ /** The column that names each bar (`cardTitleField`). */
3653
+ titleField: Field$1 | undefined;
3654
+ /** The view's Start column (`date_field`). Left out: the table's one date column, else asked. */
3655
+ startKey?: string | null | undefined;
3656
+ /** The End column. Left out: the table's one other date column, else none. */
3657
+ endKey?: string | null | undefined;
3658
+ /** The Group by column (`group_field`). Left out: no lanes. */
3659
+ groupKey?: string | null | undefined;
3660
+ /** The Colour by column. Left out: the view's `style.colorBy`, else the table's one choice column. */
3661
+ colorKey?: string | null | undefined;
3662
+ /** A setting changed: the host keeps what it can on the view. */
3663
+ onSettingsChange?: ((patch: Partial<TimelineSettings>) => void) | undefined;
3664
+ /** False when the host cannot keep the layout or the End on the view: the toolbar says so. */
3665
+ layoutKept?: boolean | undefined;
3666
+ onOpenRecord?: ((recordId: Uuid) => void) | undefined;
3667
+ /** A move landed (or was undone): the host re-reads the rows it owns. */
3668
+ onMoved?: (() => void) | undefined;
3669
+ /** The view's membership sentence (`useViewRecords().membership`). */
3670
+ note?: string | undefined;
3671
+ /** The table's and the view's colours (`resolveTableStyle`). */
3672
+ style?: TableStyle | undefined;
3673
+ initialZoom?: TimelineZoom | undefined;
3674
+ /** The day the timeline opens on; today when left out. `YYYY-MM-DD`. */
3675
+ initialDate?: string | undefined;
3676
+ className?: string | undefined;
3677
+ }
3678
+ /** THE ONE COLUMN THERE IS, or null — a setting picks itself only when nothing else could be meant. */
3679
+ declare function onlyCandidate(candidates: readonly Field$1[]): string | null;
3680
+ /** The columns a timeline can lay lanes out by: a choice, a person, a link, yes / no, or a worked-out column. */
3681
+ declare function groupableFields(all: readonly Field$1[]): Field$1[];
3682
+ declare function TimelineView({ tableId, rows, fields, titleField, startKey, endKey, groupKey, colorKey, onSettingsChange, layoutKept, onOpenRecord, onMoved, note, style, initialZoom, initialDate, className, }: TimelineViewProps): react.JSX.Element;
3683
+
3684
+ /** The colour of each record's card under `colorKey` (null: the table's own decorations only). */
3685
+ declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null, style?: TableStyle | undefined): (row: ReadRow$1) => StyleColor | null;
3686
+
3687
+ /** One cell a change touched: its value before and after, by Field key. */
3688
+ interface TouchedCell {
3689
+ rowId: Uuid$1;
3690
+ key: string;
3691
+ before: unknown;
3692
+ after: unknown;
3693
+ /**
3694
+ * THE RECORD'S VERSION RIGHT AFTER THIS STEP'S WRITE (lane CAL, 2026-10-02). The history keeps the
3695
+ * newest version it knows per record (its own writes, undos and redos), and an undo or redo is
3696
+ * written against THAT — so a change anybody else made since is REFUSED and said, never
3697
+ * overwritten, while a person undoing their own steps in order is never refused by themselves.
3698
+ */
3699
+ version?: number | undefined;
3700
+ }
3701
+ /** What one step of undo holds. */
3702
+ interface GridUndoStep {
3703
+ /** What the person did, in words: "Set Visit status on 20 appointments". */
3704
+ label: string;
3705
+ cells: TouchedCell[];
3706
+ /** Records this change created — undo archives them. */
3707
+ created?: Uuid$1[] | undefined;
3708
+ /** Records this change archived — undo restores them. */
3709
+ archived?: Uuid$1[] | undefined;
3710
+ /** The after-values are the store's own (a row action worked them out), so it cannot be redone. */
3711
+ noRedo?: boolean | undefined;
3712
+ /**
3713
+ * A COLUMN THIS STEP RETIRED (grids review 3, lane H item 1): undo brings it back through
3714
+ * `custom.field_restore` with every value it held, redo retires it again. Before this a column
3715
+ * delete was no step at all, so Cmd-Z after it silently undid the OLDER cell edit beneath it.
3716
+ */
3717
+ retiredField?: {
3718
+ fieldId: Uuid$1;
3719
+ } | undefined;
3720
+ }
3721
+ interface GridUndo {
3722
+ push: (step: GridUndoStep) => void;
3723
+ undo: () => Promise<void>;
3724
+ redo: () => Promise<void>;
3725
+ canUndo: boolean;
3726
+ canRedo: boolean;
3727
+ /** How many steps back / forward, for the buttons. */
3728
+ depth: {
3729
+ back: number;
3730
+ forward: number;
3731
+ };
3732
+ busy: boolean;
3733
+ /** The last thing said: what was done or undone, or the store's refusal. */
3734
+ notice: {
3735
+ says: string;
3736
+ refusal: RecordsError | null;
3737
+ canUndo: boolean;
3738
+ } | null;
3739
+ dismiss: () => void;
3740
+ /**
3741
+ * Say something beside the last step without a step. `sticky` (a paste the store refused, a
3742
+ * read-back that came up short) stays until dismissed; otherwise it leaves by itself.
3743
+ */
3744
+ say: (says: string, sticky?: boolean) => void;
3745
+ }
3746
+
3747
+ /** What one write answered: done (with the version it made), or the store's refusal. */
3748
+ type MoveWritten = {
3749
+ ok: true;
3750
+ version: number | null;
3751
+ } | {
3752
+ ok: false;
3753
+ error: RecordsError;
3754
+ };
3755
+ /**
3756
+ * THE WRITE ITSELF: ONE `recordUpdate`, against the version the caller drew the record at. `null`
3757
+ * means the caller does not know it — the write is then NOT sent, because a write with no version
3758
+ * is a write that can overwrite a colleague (said as a refusal, never silently).
3759
+ */
3760
+ declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate">, recordId: Uuid$1, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
3761
+ interface RecordMoves {
3762
+ /**
3763
+ * Move one record: `patch` is the new values by Field key, `before` the values it held (read from
3764
+ * the row the person dragged), `label` what happened in words ("Rosa Delgado moved to Oct 14").
3765
+ * Answers whether the store took it.
3766
+ */
3767
+ move: (args: {
3768
+ recordId: Uuid$1;
3769
+ patch: Record<string, unknown>;
3770
+ before: Record<string, unknown>;
3771
+ label: string;
3772
+ }) => Promise<boolean>;
3773
+ /** Make one record from a gesture (a click on a day, a drag across hours): ONE write, one undo step. */
3774
+ create: (args: {
3775
+ tableId: Uuid$1;
3776
+ data: Record<string, unknown>;
3777
+ label: string;
3778
+ }) => Promise<Uuid$1 | null>;
3779
+ /** The refusal the store gave the last move, and the record it is about — a badge on that card. */
3780
+ refused: {
3781
+ recordId: Uuid$1;
3782
+ error: RecordsError;
3783
+ changedElsewhere: boolean;
3784
+ } | null;
3785
+ /** Say a sentence in the notice without a step (`sticky`: stays until dismissed). */
3786
+ say: (says: string, sticky?: boolean) => void;
3787
+ /** The package's undo history these moves are steps of. */
3788
+ undo: GridUndo;
3789
+ /** Cmd/Ctrl-Z and Shift-Cmd-Z, for the layout's frame (`onKeyDown`). */
3790
+ onKeyDown: (event: KeyboardEvent) => void;
3791
+ /** The floating notice (what moved, Undo, or the refusal). The frame around it is `relative`. */
3792
+ notice: ReactElement;
3793
+ }
3794
+ declare function useRecordMoves({ tableId, rows, onMoved, }: {
3795
+ tableId: Uuid$1;
3796
+ /** The rows the layout drew — their versions are what a move is written against. */
3797
+ rows: readonly ReadRow[];
3798
+ onMoved?: (() => void) | undefined;
3799
+ }): RecordMoves;
3800
+
3299
3801
  /** What the screen says above the list, so nobody has to be told twice that nothing was destroyed. */
3300
3802
  declare const ARCHIVE_MEANS = "Archiving never destroys anything. A record you remove from the grid waits here until somebody brings it back.";
3301
3803
  /** The sentence a person who may not restore reads INSTEAD of a control they cannot use. */
@@ -3916,9 +4418,18 @@ interface FormBuilderProps {
3916
4418
  * empty builder that needs a second press on "New form" (lane HANDOVER, 2026-09-28).
3917
4419
  */
3918
4420
  startWithOne?: boolean | undefined;
4421
+ /**
4422
+ * MAKE A NEW FORM ON OPEN, whatever the table already has (lane MAKE-HOME, 2026-10-02): a host
4423
+ * whose person pressed "make a form" (the /make hub) gets a new form beside the existing ones,
4424
+ * named for the table and never colliding with one already there — once per mount. Until it is
4425
+ * made the builder shows its loading state, so the host is never handed an older form.
4426
+ */
4427
+ createOnMount?: boolean | undefined;
3919
4428
  className?: string | undefined;
3920
4429
  }
3921
- declare function FormBuilder({ tableId, seed, activeFormId, onActiveForm, startWithOne, className }: FormBuilderProps): react.JSX.Element;
4430
+ /** The table's form name, numbered past any form of that name already on it ("Intake form 2"). */
4431
+ declare function freshFormName(base: string, taken: readonly string[]): string;
4432
+ declare function FormBuilder({ tableId, seed, activeFormId, onActiveForm, startWithOne, createOnMount, className }: FormBuilderProps): react.JSX.Element;
3922
4433
 
3923
4434
  /**
3924
4435
  * The shapes a block can take. There is exactly ONE closed set and it is the
@@ -4062,30 +4573,6 @@ declare function ChartLegendContent({ payload, config, className, }: {
4062
4573
  className?: string | undefined;
4063
4574
  }): react.JSX.Element | null;
4064
4575
 
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
4576
  interface DocTemplateProps {
4090
4577
  /** The Table these templates render. */
4091
4578
  tableId: Uuid;
@@ -4163,9 +4650,16 @@ interface DashboardCanvasProps {
4163
4650
  activeDashboardId?: Uuid | null | undefined;
4164
4651
  /** The one filter bar across the canvas. Merged UNDER each block's own filter. */
4165
4652
  filter?: Record<string, AggregateFilter> | undefined;
4653
+ /**
4654
+ * MAKE A NEW DASHBOARD ON OPEN, whatever the table already has (lane MAKE-HOME, 2026-10-02): the
4655
+ * /make hub's "Dashboard" gets the starter dashboard "New dashboard" makes, once per mount.
4656
+ */
4657
+ createOnMount?: boolean | undefined;
4658
+ /** Told the id of a dashboard this canvas made (the starter, or `createOnMount`'s). */
4659
+ onCreated?: ((dashboardId: Uuid) => void) | undefined;
4166
4660
  className?: string | undefined;
4167
4661
  }
4168
- declare function DashboardCanvas({ tableId, activeDashboardId, filter, className }: DashboardCanvasProps): react.JSX.Element;
4662
+ declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
4169
4663
 
4170
4664
  interface FormsPanelProps {
4171
4665
  tableId: Uuid;
@@ -4378,9 +4872,16 @@ interface BookingBuilderProps {
4378
4872
  form_id: string;
4379
4873
  }) => void) | undefined;
4380
4874
  onClose?: (() => void) | undefined;
4875
+ /**
4876
+ * A NEW PAGE, whatever the table already has (lane MAKE-HOME, 2026-10-02). Without it and without
4877
+ * `bookingId` the builder opens the table's first page; a host whose person pressed "make a
4878
+ * booking page" (the /make hub) passes this, and the first Save makes a second page beside the
4879
+ * old one. After that Save the builder keeps editing the page it just made.
4880
+ */
4881
+ startNew?: boolean | undefined;
4381
4882
  className?: string | undefined;
4382
4883
  }
4383
- declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }: BookingBuilderProps): react.JSX.Element;
4884
+ declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, startNew, className }: BookingBuilderProps): react.JSX.Element;
4384
4885
 
4385
4886
  interface BookingSlotsProps {
4386
4887
  /**
@@ -5183,6 +5684,14 @@ declare function dateText(field: Pick<Field, "type" | "config" | "format">, valu
5183
5684
  declare function calendarDayOf(value: unknown): string | null;
5184
5685
  /** The heading of one calendar day — `Apr 1, 2026` — built on local midnight, never UTC. */
5185
5686
  declare function calendarDayLabel(day: string): string;
5687
+ /** The day key of a moment, on the viewer's calendar. */
5688
+ declare function dayKeyOf(at: Date): string;
5689
+ /** A day key as local midnight. */
5690
+ declare function dayAt(day: string): Date;
5691
+ /** The day `n` days after (or before, when negative) `day`. */
5692
+ declare function addDays(day: string, n: number): string;
5693
+ /** Whole days from `from` to `to` (negative when `to` is earlier). DST-safe: rounds the hour away. */
5694
+ declare function daysBetween(from: string, to: string): number;
5186
5695
 
5187
5696
  /** The word a withheld cell shows in place of a value. Never "—", which means empty. */
5188
5697
  declare const WITHHELD_WORD = "Withheld";
@@ -5298,4 +5807,9 @@ declare function useDrill(args: {
5298
5807
  def: DrillDefinition | null;
5299
5808
  };
5300
5809
 
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 };
5810
+ interface ObjectActionMenuItemsProps {
5811
+ actions: readonly ObjectAction[];
5812
+ }
5813
+ declare function ObjectActionMenuItems({ actions }: ObjectActionMenuItemsProps): react.JSX.Element;
5814
+
5815
+ 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, humanize, 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 };