@ai-matrx/records-ui 0.50.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -393,6 +393,33 @@ interface RecordsUiHost {
393
393
  * never a composer that goes nowhere and never silence.
394
394
  */
395
395
  onReask?: (question: string, context: ReaskContext) => Promise<void>;
396
+ /**
397
+ * OPTIONAL. ASK AN AGENT FOR A WHOLE FORM, BOOKING PAGE, PORTAL OR DIGEST.
398
+ *
399
+ * This is the FASTER of the two ways every builder offers (`BuildOrAsk`), and
400
+ * it is a port for the same reason `onReask` is: the server's `records` tool
401
+ * is what calls `form_propose`, `booking_propose`, `portal_propose` and
402
+ * `subscription_propose`, and a browser stamping itself `agent` would be a
403
+ * browser claiming to be one.
404
+ *
405
+ * `suggestion` is the sentence this package would put in the person's mouth —
406
+ * a host normally opens its composer with it already typed, so the person
407
+ * edits rather than starts.
408
+ *
409
+ * Unbound, the "Ask an agent" button is ABSENT — not greyed — and every
410
+ * builder's empty state says so in one sentence naming this port, with the
411
+ * hand-built way still right there. The product walk of 2026-09-21 found the
412
+ * opposite arrangement (the agent named and no builder at all), which left a
413
+ * person who did not know what to say with nothing to press.
414
+ */
415
+ onAskForOne?: (ask: AgentBuildAsk) => void;
416
+ }
417
+ /** What a person is asking an agent to make, and where they were standing. */
418
+ interface AgentBuildAsk {
419
+ kind: "form" | "booking" | "portal" | "digest";
420
+ tableId: Uuid$1;
421
+ /** The sentence this package would say. A host opens its composer with it. */
422
+ suggestion: string;
396
423
  }
397
424
  /**
398
425
  * WHAT A CLICK ON A NUMBER ASKS FOR. The filter is already merged: the block's
@@ -1730,6 +1757,20 @@ declare function submissionStamp(args: {
1730
1757
  onBehalfOf?: string | null;
1731
1758
  }): Record<string, unknown>;
1732
1759
 
1760
+ interface PortalBuilderProps {
1761
+ /**
1762
+ * OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
1763
+ * Table to expose, because that is the thing the person was looking at.
1764
+ */
1765
+ tableId?: Uuid | null | undefined;
1766
+ /** Re-state an existing portal rather than making a second one. */
1767
+ portalId?: Uuid | null | undefined;
1768
+ onSaved?: ((portalId: Uuid) => void) | undefined;
1769
+ onClose?: (() => void) | undefined;
1770
+ className?: string | undefined;
1771
+ }
1772
+ declare function PortalBuilder({ tableId, portalId, onSaved, onClose, className }: PortalBuilderProps): react.JSX.Element;
1773
+
1733
1774
  interface PortalsPanelProps {
1734
1775
  /**
1735
1776
  * OPTIONAL. The Table whose page this rail is on. It is used for ONE thing:
@@ -1789,6 +1830,39 @@ interface SubscriptionsPanelProps {
1789
1830
  }
1790
1831
  declare function SubscriptionsPanel({ tableId, className }: SubscriptionsPanelProps): react.JSX.Element;
1791
1832
 
1833
+ /** What a person is asking to have made, in the store's own word for it. */
1834
+ type BuildableKind = "form" | "booking" | "portal" | "digest";
1835
+ interface BuildOrAskProps {
1836
+ /**
1837
+ * The sentence that says what this thing IS, in a practitioner's words —
1838
+ * never "You have no forms." A person who does not already know what a
1839
+ * booking page does is not helped by being told they have none.
1840
+ */
1841
+ children: ReactNode;
1842
+ /** Pressed, the builder opens in place. Absent when `mayBuild` is false. */
1843
+ onBuild: () => void;
1844
+ /** The store's answer, never a guess on this screen. */
1845
+ mayBuild: boolean;
1846
+ /**
1847
+ * WHY NOT, in the store's words, shown where the button would have been.
1848
+ * A missing control with no explanation is the same dead end as a dead one.
1849
+ */
1850
+ whyNot?: string | null | undefined;
1851
+ /**
1852
+ * The host's agent port. Unbound, the second button is absent and the
1853
+ * sentence below names what is missing.
1854
+ */
1855
+ onAsk?: (() => void) | undefined;
1856
+ /** The words a person would actually say, offered as the starting sentence. */
1857
+ suggestion: string;
1858
+ /** "Build the form", "Build the booking page" — the act, never "New". */
1859
+ buildLabel: string;
1860
+ className?: string | undefined;
1861
+ }
1862
+ /** What this package tells a host that has bound no agent. One sentence, one remedy. */
1863
+ declare const NO_AGENT_PORT: string;
1864
+ declare function BuildOrAsk({ children, onBuild, mayBuild, whyNot, onAsk, suggestion, buildLabel, className, }: BuildOrAskProps): react.JSX.Element;
1865
+
1792
1866
  interface FormBuilderProps {
1793
1867
  /** The Table this form collects into. A form is a view on a real Table. */
1794
1868
  tableId: Uuid;
@@ -2160,6 +2234,26 @@ declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, cla
2160
2234
  className?: string | undefined;
2161
2235
  }): react.JSX.Element;
2162
2236
 
2237
+ /**
2238
+ * THE THREE THE STORE FILLS IN. Named here so this screen never offers them —
2239
+ * `custom.booking_declare` refuses a question naming any of the three, and a
2240
+ * control that is always refused is a dead control.
2241
+ */
2242
+ declare const STORE_ANSWERS_THESE: readonly ["slot", "status", "booked_with"];
2243
+ interface BookingBuilderProps {
2244
+ /** The Table the appointments land in. An appointment is an ordinary record in it. */
2245
+ tableId: Uuid;
2246
+ /** Re-state an existing page rather than making a second one over the same Table. */
2247
+ bookingId?: Uuid | null | undefined;
2248
+ /** Called after a save, so the list this opened from re-reads the store. */
2249
+ onSaved?: ((page: {
2250
+ form_id: string;
2251
+ }) => void) | undefined;
2252
+ onClose?: (() => void) | undefined;
2253
+ className?: string | undefined;
2254
+ }
2255
+ declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }: BookingBuilderProps): react.JSX.Element;
2256
+
2163
2257
  interface BookingSlotsProps {
2164
2258
  /**
2165
2259
  * One Table's booking pages. Omitted — on the Records home — it is every
@@ -2679,4 +2773,4 @@ interface PipelineBoardProps {
2679
2773
  }
2680
2774
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2681
2775
 
2682
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };
2776
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };
package/dist/index.d.ts CHANGED
@@ -393,6 +393,33 @@ interface RecordsUiHost {
393
393
  * never a composer that goes nowhere and never silence.
394
394
  */
395
395
  onReask?: (question: string, context: ReaskContext) => Promise<void>;
396
+ /**
397
+ * OPTIONAL. ASK AN AGENT FOR A WHOLE FORM, BOOKING PAGE, PORTAL OR DIGEST.
398
+ *
399
+ * This is the FASTER of the two ways every builder offers (`BuildOrAsk`), and
400
+ * it is a port for the same reason `onReask` is: the server's `records` tool
401
+ * is what calls `form_propose`, `booking_propose`, `portal_propose` and
402
+ * `subscription_propose`, and a browser stamping itself `agent` would be a
403
+ * browser claiming to be one.
404
+ *
405
+ * `suggestion` is the sentence this package would put in the person's mouth —
406
+ * a host normally opens its composer with it already typed, so the person
407
+ * edits rather than starts.
408
+ *
409
+ * Unbound, the "Ask an agent" button is ABSENT — not greyed — and every
410
+ * builder's empty state says so in one sentence naming this port, with the
411
+ * hand-built way still right there. The product walk of 2026-09-21 found the
412
+ * opposite arrangement (the agent named and no builder at all), which left a
413
+ * person who did not know what to say with nothing to press.
414
+ */
415
+ onAskForOne?: (ask: AgentBuildAsk) => void;
416
+ }
417
+ /** What a person is asking an agent to make, and where they were standing. */
418
+ interface AgentBuildAsk {
419
+ kind: "form" | "booking" | "portal" | "digest";
420
+ tableId: Uuid$1;
421
+ /** The sentence this package would say. A host opens its composer with it. */
422
+ suggestion: string;
396
423
  }
397
424
  /**
398
425
  * WHAT A CLICK ON A NUMBER ASKS FOR. The filter is already merged: the block's
@@ -1730,6 +1757,20 @@ declare function submissionStamp(args: {
1730
1757
  onBehalfOf?: string | null;
1731
1758
  }): Record<string, unknown>;
1732
1759
 
1760
+ interface PortalBuilderProps {
1761
+ /**
1762
+ * OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
1763
+ * Table to expose, because that is the thing the person was looking at.
1764
+ */
1765
+ tableId?: Uuid | null | undefined;
1766
+ /** Re-state an existing portal rather than making a second one. */
1767
+ portalId?: Uuid | null | undefined;
1768
+ onSaved?: ((portalId: Uuid) => void) | undefined;
1769
+ onClose?: (() => void) | undefined;
1770
+ className?: string | undefined;
1771
+ }
1772
+ declare function PortalBuilder({ tableId, portalId, onSaved, onClose, className }: PortalBuilderProps): react.JSX.Element;
1773
+
1733
1774
  interface PortalsPanelProps {
1734
1775
  /**
1735
1776
  * OPTIONAL. The Table whose page this rail is on. It is used for ONE thing:
@@ -1789,6 +1830,39 @@ interface SubscriptionsPanelProps {
1789
1830
  }
1790
1831
  declare function SubscriptionsPanel({ tableId, className }: SubscriptionsPanelProps): react.JSX.Element;
1791
1832
 
1833
+ /** What a person is asking to have made, in the store's own word for it. */
1834
+ type BuildableKind = "form" | "booking" | "portal" | "digest";
1835
+ interface BuildOrAskProps {
1836
+ /**
1837
+ * The sentence that says what this thing IS, in a practitioner's words —
1838
+ * never "You have no forms." A person who does not already know what a
1839
+ * booking page does is not helped by being told they have none.
1840
+ */
1841
+ children: ReactNode;
1842
+ /** Pressed, the builder opens in place. Absent when `mayBuild` is false. */
1843
+ onBuild: () => void;
1844
+ /** The store's answer, never a guess on this screen. */
1845
+ mayBuild: boolean;
1846
+ /**
1847
+ * WHY NOT, in the store's words, shown where the button would have been.
1848
+ * A missing control with no explanation is the same dead end as a dead one.
1849
+ */
1850
+ whyNot?: string | null | undefined;
1851
+ /**
1852
+ * The host's agent port. Unbound, the second button is absent and the
1853
+ * sentence below names what is missing.
1854
+ */
1855
+ onAsk?: (() => void) | undefined;
1856
+ /** The words a person would actually say, offered as the starting sentence. */
1857
+ suggestion: string;
1858
+ /** "Build the form", "Build the booking page" — the act, never "New". */
1859
+ buildLabel: string;
1860
+ className?: string | undefined;
1861
+ }
1862
+ /** What this package tells a host that has bound no agent. One sentence, one remedy. */
1863
+ declare const NO_AGENT_PORT: string;
1864
+ declare function BuildOrAsk({ children, onBuild, mayBuild, whyNot, onAsk, suggestion, buildLabel, className, }: BuildOrAskProps): react.JSX.Element;
1865
+
1792
1866
  interface FormBuilderProps {
1793
1867
  /** The Table this form collects into. A form is a view on a real Table. */
1794
1868
  tableId: Uuid;
@@ -2160,6 +2234,26 @@ declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, cla
2160
2234
  className?: string | undefined;
2161
2235
  }): react.JSX.Element;
2162
2236
 
2237
+ /**
2238
+ * THE THREE THE STORE FILLS IN. Named here so this screen never offers them —
2239
+ * `custom.booking_declare` refuses a question naming any of the three, and a
2240
+ * control that is always refused is a dead control.
2241
+ */
2242
+ declare const STORE_ANSWERS_THESE: readonly ["slot", "status", "booked_with"];
2243
+ interface BookingBuilderProps {
2244
+ /** The Table the appointments land in. An appointment is an ordinary record in it. */
2245
+ tableId: Uuid;
2246
+ /** Re-state an existing page rather than making a second one over the same Table. */
2247
+ bookingId?: Uuid | null | undefined;
2248
+ /** Called after a save, so the list this opened from re-reads the store. */
2249
+ onSaved?: ((page: {
2250
+ form_id: string;
2251
+ }) => void) | undefined;
2252
+ onClose?: (() => void) | undefined;
2253
+ className?: string | undefined;
2254
+ }
2255
+ declare function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }: BookingBuilderProps): react.JSX.Element;
2256
+
2163
2257
  interface BookingSlotsProps {
2164
2258
  /**
2165
2259
  * One Table's booking pages. Omitted — on the Records home — it is every
@@ -2679,4 +2773,4 @@ interface PipelineBoardProps {
2679
2773
  }
2680
2774
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
2681
2775
 
2682
- export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, BookingSlots, type BookingSlotsProps, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };
2776
+ export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PARITY_LABEL, PARITY_MADE_OF, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, machineIdentityIn, memberName, nextInWords, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, recordName, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords };