@factorialco/f0-react 1.482.0 → 2.0.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/f0.d.ts CHANGED
@@ -531,6 +531,14 @@ export declare type AiChatProviderProps = {
531
531
  * Provides save/create functions for persisting canvas entities externally.
532
532
  */
533
533
  canvasActions?: CanvasActions;
534
+ /**
535
+ * Canvas entity definitions keyed by `CanvasContent["type"]`. The canvas
536
+ * panel looks up the matching definition when `openCanvas` is called.
537
+ *
538
+ * F0AiChat ships without built-in canvas entities; the host app supplies
539
+ * them here so canvas logic lives in one place.
540
+ */
541
+ canvasEntities?: Record<string, CanvasEntityDefinition>;
534
542
  /**
535
543
  * Available tool hints that the user can activate to provide intent context
536
544
  * to the AI. Renders a selector button next to the send button.
@@ -729,7 +737,7 @@ declare type AiChatProviderReturnValue = {
729
737
  pendingQuote: PendingQuote | null;
730
738
  /** Set the pending quote (pass null to clear). */
731
739
  setPendingQuote: React.Dispatch<React.SetStateAction<PendingQuote | null>>;
732
- } & Pick<AiChatState, "greeting" | "agent" | "disclaimer" | "resizable" | "entityRefs" | "canvasActions" | "toolHints" | "credits" | "creditWarning" | "fileAttachments"> & {
740
+ } & Pick<AiChatState, "greeting" | "agent" | "disclaimer" | "resizable" | "entityRefs" | "canvasActions" | "canvasEntities" | "toolHints" | "credits" | "creditWarning" | "fileAttachments"> & {
733
741
  /** The current canvas content, or null when canvas is closed */
734
742
  canvasContent: CanvasContent | null;
735
743
  /** Open the canvas panel with the given content */
@@ -766,6 +774,7 @@ declare interface AiChatState {
766
774
  VoiceMode?: React.ComponentType;
767
775
  entityRefs?: EntityRefs;
768
776
  canvasActions?: CanvasActions;
777
+ canvasEntities?: Record<string, CanvasEntityDefinition>;
769
778
  toolHints?: AiChatToolHint[];
770
779
  credits?: AiChatCredits;
771
780
  creditWarning?: AiChatCreditWarning;
@@ -1548,6 +1557,15 @@ export declare type BigNumberProps = {
1548
1557
  comparison: Numeric | NumberWithFormatter | number;
1549
1558
  };
1550
1559
 
1560
+ /**
1561
+ * Person avatar data for the expert list
1562
+ */
1563
+ export declare interface BookAMeetingCardAvatar {
1564
+ firstName: string;
1565
+ lastName: string;
1566
+ src?: string;
1567
+ }
1568
+
1551
1569
  /**
1552
1570
  * Base for boolean-specific conditions
1553
1571
  */
@@ -1885,6 +1903,36 @@ export declare type CanvasActions = {
1885
1903
  dashboard?: DashboardCanvasActions;
1886
1904
  };
1887
1905
 
1906
+ /**
1907
+ * Shared inline card rendered in the AI chat for any canvas entity.
1908
+ * Shows a module avatar, title, description, and an Open/Close toggle button.
1909
+ * When active, displays a focus ring and the button switches to "Close".
1910
+ */
1911
+ export declare function CanvasCard({ module: cardModule, title, description, onOpen, showOpenButton, onClose, isActive, children, }: CanvasCardProps): JSX_2.Element;
1912
+
1913
+ export declare namespace CanvasCard {
1914
+ var displayName: string;
1915
+ }
1916
+
1917
+ export declare type CanvasCardProps = {
1918
+ /** Module avatar to display (e.g. "analytics", "surveys", "goals") */
1919
+ module?: ModuleId;
1920
+ /** Primary title */
1921
+ title: string;
1922
+ /** Secondary description line */
1923
+ description: string;
1924
+ /** Called when the user clicks the "Open" button */
1925
+ onOpen: () => void;
1926
+ /** Whether to show the "Open" button */
1927
+ showOpenButton?: boolean;
1928
+ /** Called when the user clicks the "Close" button (active state) */
1929
+ onClose: () => void;
1930
+ /** Whether this card's content is currently shown in the canvas */
1931
+ isActive: boolean;
1932
+ /** Optional content rendered below the card header (e.g. a data preview) */
1933
+ children?: React.ReactNode;
1934
+ };
1935
+
1888
1936
  /**
1889
1937
  * Discriminated union for canvas panel content.
1890
1938
  * Add new entity types to this union as they are implemented.
@@ -2393,7 +2441,7 @@ declare interface ChatDashboardColumn {
2393
2441
  * Contains fetchSpecs that describe how to obtain data server-side —
2394
2442
  * no raw data is included. Fully JSON-serializable.
2395
2443
  */
2396
- declare interface ChatDashboardConfig {
2444
+ export declare interface ChatDashboardConfig {
2397
2445
  /** Dashboard title displayed in the canvas header and chat report card */
2398
2446
  title: string;
2399
2447
  /**
@@ -2703,7 +2751,7 @@ declare interface ClarifyingOption {
2703
2751
  * Navigation metadata (currentStepIndex, totalSteps) and callbacks live
2704
2752
  * here so the panel component stays a pure view of this state.
2705
2753
  */
2706
- declare interface ClarifyingQuestionState {
2754
+ export declare interface ClarifyingQuestionState {
2707
2755
  /** The current step's data + interaction state */
2708
2756
  currentStep: ClarifyingStepState;
2709
2757
  /** Zero-based index of the current step */
@@ -2737,13 +2785,13 @@ declare interface ClarifyingQuestionState {
2737
2785
  * - "single": only one option can be selected (rendered as radio buttons)
2738
2786
  * - "multiple": multiple options can be selected (rendered as checkboxes)
2739
2787
  */
2740
- declare type ClarifyingSelectionMode = "single" | "multiple";
2788
+ export declare type ClarifyingSelectionMode = "single" | "multiple";
2741
2789
 
2742
2790
  /**
2743
2791
  * Pure data describing a single clarifying question step.
2744
2792
  * This is what the AI backend sends — no UI state or callbacks.
2745
2793
  */
2746
- declare interface ClarifyingStepData {
2794
+ export declare interface ClarifyingStepData {
2747
2795
  /** The question text displayed to the user */
2748
2796
  question: string;
2749
2797
  /** Available options the user can select from */
@@ -2769,6 +2817,10 @@ declare interface ClarifyingStepState extends ClarifyingStepData {
2769
2817
  isCustomAnswerActive: boolean;
2770
2818
  }
2771
2819
 
2820
+ export declare function CloseCanvasButton({ onClick }: {
2821
+ onClick: () => void;
2822
+ }): JSX_2.Element;
2823
+
2772
2824
  declare type ColId = string;
2773
2825
 
2774
2826
  declare interface CollectionComputation {
@@ -3102,7 +3154,7 @@ export declare const Dashboard: WithDataTestIdReturnType_3<ComponentType<Dashboa
3102
3154
  /**
3103
3155
  * Callbacks for persisting dashboards externally (beyond chat history).
3104
3156
  */
3105
- declare type DashboardCanvasActions = {
3157
+ export declare type DashboardCanvasActions = {
3106
3158
  /** Update an existing saved dashboard */
3107
3159
  save: (id: string, category: string, config: ChatDashboardConfig) => Promise<void>;
3108
3160
  /**
@@ -3145,6 +3197,45 @@ export declare type DashboardCanvasContent = CanvasContentBase & {
3145
3197
  savedDashboardUnsaved?: boolean;
3146
3198
  };
3147
3199
 
3200
+ export declare function DashboardCanvasProvider({ content, children, }: {
3201
+ content: DashboardCanvasContent;
3202
+ children: ReactNode;
3203
+ }): ReactNode;
3204
+
3205
+ /**
3206
+ * Dashboard-specific card that wraps CanvasCard with config-store
3207
+ * subscription logic. Re-renders when the user edits and saves
3208
+ * the dashboard layout.
3209
+ *
3210
+ * All saved-dashboard state (id, category, unsaved) is passed through
3211
+ * from the action arguments. The meta store overrides props after
3212
+ * save/create operations so close/re-open preserves the latest state.
3213
+ */
3214
+ export declare function DashboardCard({ config: originalConfig, apiConfig, savedDashboardId: propSavedId, savedDashboardCategory: propSavedCategory, savedDashboardDescription: propSavedDescription, savedDashboardUnsaved: propSavedUnsaved, }: DashboardCardProps): JSX_2.Element;
3215
+
3216
+ export declare namespace DashboardCard {
3217
+ var displayName: string;
3218
+ }
3219
+
3220
+ export declare type DashboardCardProps = {
3221
+ /** The original dashboard config from the agent */
3222
+ config: ChatDashboardConfig;
3223
+ /** API config for server-side dashboard computation */
3224
+ apiConfig: {
3225
+ baseUrl: string;
3226
+ headers: Record<string, string>;
3227
+ runtimeFetch?: typeof fetch;
3228
+ };
3229
+ /** Present when the dashboard is a pre-saved dashboard */
3230
+ savedDashboardId?: string;
3231
+ /** Category of the saved dashboard */
3232
+ savedDashboardCategory?: string;
3233
+ /** Description of the saved dashboard */
3234
+ savedDashboardDescription?: string;
3235
+ /** Whether the dashboard has unsaved changes */
3236
+ savedDashboardUnsaved?: boolean;
3237
+ };
3238
+
3148
3239
  /**
3149
3240
  * Chart display configuration — discriminated on `type`.
3150
3241
  * This object is JSON-serializable (no functions, except optional formatters).
@@ -3206,6 +3297,11 @@ export declare interface DashboardCollectionItem<Filters extends FiltersDefiniti
3206
3297
  visualizations: ReadonlyArray<any>;
3207
3298
  }
3208
3299
 
3300
+ export declare function DashboardContent({ content, refreshKey: _parentRefreshKey, }: {
3301
+ content: DashboardCanvasContent;
3302
+ refreshKey: number;
3303
+ }): ReactNode;
3304
+
3209
3305
  declare interface DashboardFetchSpec {
3210
3306
  fetch: Array<{
3211
3307
  toolId: string;
@@ -3215,6 +3311,18 @@ declare interface DashboardFetchSpec {
3215
3311
  columnLabels?: Record<string, string>;
3216
3312
  }
3217
3313
 
3314
+ /**
3315
+ * Canvas header for the dashboard entity. Layout, title, status tag,
3316
+ * metadata strip, and the action row (export + close) are all delegated
3317
+ * to `ResourceHeader`. The close button is just another `secondaryAction`
3318
+ * with `hideLabel`, so the shared header component doesn't need to know
3319
+ * about canvas-specific close affordances.
3320
+ */
3321
+ export declare function DashboardHeader({ content, onClose, }: {
3322
+ content: DashboardCanvasContent;
3323
+ onClose: () => void;
3324
+ }): JSX_2.Element;
3325
+
3218
3326
  /**
3219
3327
  * A single dashboard item. Discriminated on `type`.
3220
3328
  *
@@ -3500,18 +3608,36 @@ export declare type DataCollectionStorageHandler<CurrentFiltersState extends Fil
3500
3608
  /**
3501
3609
  * Data download canvas content — renders a full data table with download options.
3502
3610
  */
3503
- declare type DataDownloadCanvasContent = CanvasContentBase & {
3611
+ export declare type DataDownloadCanvasContent = CanvasContentBase & {
3504
3612
  type: "dataDownload";
3505
3613
  dataset: DataDownloadDataset;
3506
3614
  filename?: string;
3507
3615
  markdown?: string;
3508
3616
  };
3509
3617
 
3618
+ export declare function DataDownloadCard({ title: titleProp, dataset, filename, markdown, }: DataDownloadCardProps): JSX_2.Element;
3619
+
3620
+ export declare namespace DataDownloadCard {
3621
+ var displayName: string;
3622
+ }
3623
+
3624
+ export declare type DataDownloadCardProps = {
3625
+ title?: string;
3626
+ dataset: DataDownloadDataset;
3627
+ filename?: string;
3628
+ markdown?: string;
3629
+ };
3630
+
3631
+ export declare function DataDownloadContent({ content, }: {
3632
+ content: DataDownloadCanvasContent;
3633
+ refreshKey?: number;
3634
+ }): JSX_2.Element;
3635
+
3510
3636
  /**
3511
3637
  * Inline dataset for client-side file generation (Excel / CSV).
3512
3638
  * Sent by the agent with the raw query results.
3513
3639
  */
3514
- declare type DataDownloadDataset = {
3640
+ export declare type DataDownloadDataset = {
3515
3641
  /**
3516
3642
  * Column headers in display order.
3517
3643
  */
@@ -3537,6 +3663,16 @@ declare type DataDownloadDataset = {
3537
3663
  columnLabels?: Record<string, string>;
3538
3664
  };
3539
3665
 
3666
+ export declare function DataDownloadHeader({ content, onClose, }: {
3667
+ content: DataDownloadCanvasContent;
3668
+ onClose: () => void;
3669
+ }): JSX_2.Element;
3670
+
3671
+ export declare function DataDownloadProvider({ content, children, }: {
3672
+ content: DataDownloadCanvasContent;
3673
+ children: ReactNode;
3674
+ }): JSX_2.Element;
3675
+
3540
3676
  /**
3541
3677
  * Represents an error that occurred during data fetching
3542
3678
  */
@@ -5187,7 +5323,7 @@ export declare const F0AiChat: () => JSX_2.Element | null;
5187
5323
  /**
5188
5324
  * @experimental This is an experimental component use it at your own risk
5189
5325
  */
5190
- export declare const F0AiChatProvider: ({ enabled, greeting, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, toolHints, credits, creditWarning, fileAttachments, onThumbsUp, onThumbsDown, onBeforeSendMessage, runtimeFetch, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
5326
+ export declare const F0AiChatProvider: ({ enabled, greeting, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, canvasEntities, toolHints, credits, creditWarning, fileAttachments, onThumbsUp, onThumbsDown, onBeforeSendMessage, runtimeFetch, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
5191
5327
 
5192
5328
  export declare const F0AiChatTextArea: ({ submitLabel, inProgress, onSend, onStop, creditWarning, }: ChatTextareaProps) => JSX_2.Element;
5193
5329
 
@@ -5837,6 +5973,22 @@ displayName: string;
5837
5973
  Skeleton: () => JSX_2.Element;
5838
5974
  }>;
5839
5975
 
5976
+ export declare const F0BookAMeetingCard: ({ onAction, actionHref, }: F0BookAMeetingCardProps) => JSX_2.Element;
5977
+
5978
+ /**
5979
+ * Props for the F0BookAMeetingCard component
5980
+ */
5981
+ export declare interface F0BookAMeetingCardProps {
5982
+ /**
5983
+ * Callback when the action button is clicked. Omit when using actionHref.
5984
+ */
5985
+ onAction?: () => void;
5986
+ /**
5987
+ * When set, the action button renders as a link to this URL.
5988
+ */
5989
+ actionHref?: string;
5990
+ }
5991
+
5840
5992
  /**
5841
5993
  * Config for boolean fields - checkbox
5842
5994
  */
@@ -6747,6 +6899,34 @@ export declare type F0DateTimeFieldConfig = F0BaseConfig & F0DateTimeConfig & {
6747
6899
  fieldType: "datetime";
6748
6900
  };
6749
6901
 
6902
+ export declare const F0DemoCard: ({ preview, moduleName, description, onAction, actionHref, }: F0DemoCardProps) => JSX_2.Element;
6903
+
6904
+ /**
6905
+ * Props for the F0DemoCard component
6906
+ */
6907
+ export declare interface F0DemoCardProps {
6908
+ /**
6909
+ * Content for the preview area (embedded app preview, image, or custom content)
6910
+ */
6911
+ preview: ReactNode;
6912
+ /**
6913
+ * Main title below the preview (e.g. "See Projects in action")
6914
+ */
6915
+ moduleName: string;
6916
+ /**
6917
+ * Description text below the title
6918
+ */
6919
+ description: string;
6920
+ /**
6921
+ * Callback when the action button is clicked. Omit when using actionHref.
6922
+ */
6923
+ onAction?: () => void;
6924
+ /**
6925
+ * When set, the action button renders as a link to this URL (e.g. for copilot-driven cards).
6926
+ */
6927
+ actionHref?: string;
6928
+ }
6929
+
6750
6930
  /**
6751
6931
  * @experimental This is an experimental component use it at your own risk
6752
6932
  */
@@ -6869,6 +7049,52 @@ export declare interface F0DurationInputProps {
6869
7049
 
6870
7050
  export declare function F0EventCatcherProvider({ children, onEvent, enabled, catchEvents, }: EventCatcherProviderProps): JSX.Element;
6871
7051
 
7052
+ export declare const F0FAQCard: ({ headerIcon, items, defaultExpandedId, expandedId: controlledExpandedId, onExpandedChange, allowMultiple, }: F0FAQCardProps) => JSX_2.Element | null;
7053
+
7054
+ /**
7055
+ * Props for the F0FAQCard component
7056
+ */
7057
+ export declare interface F0FAQCardProps {
7058
+ /**
7059
+ * Optional icon shown in the card header
7060
+ * @default Question icon
7061
+ */
7062
+ headerIcon?: IconType;
7063
+ /**
7064
+ * Array of FAQ items to display
7065
+ */
7066
+ items: F0FAQItem[];
7067
+ /**
7068
+ * Initially expanded item ID (uncontrolled mode)
7069
+ */
7070
+ defaultExpandedId?: string;
7071
+ /**
7072
+ * Currently expanded item ID (controlled mode)
7073
+ */
7074
+ expandedId?: string;
7075
+ /**
7076
+ * Callback when an item is expanded/collapsed (controlled mode)
7077
+ */
7078
+ onExpandedChange?: (id: string | null) => void;
7079
+ /**
7080
+ * Whether multiple items can be expanded at once
7081
+ * @default false
7082
+ */
7083
+ allowMultiple?: boolean;
7084
+ }
7085
+
7086
+ /**
7087
+ * A single FAQ item with question and answer
7088
+ */
7089
+ export declare interface F0FAQItem {
7090
+ /** Unique identifier for the FAQ item */
7091
+ id: string;
7092
+ /** The question text */
7093
+ question: string;
7094
+ /** The answer text */
7095
+ answer: string;
7096
+ }
7097
+
6872
7098
  /**
6873
7099
  * Union of all F0 field types used for rendering
6874
7100
  */
@@ -7974,6 +8200,53 @@ export declare type F0LinkProps = Omit<ActionLinkProps, "variant" | "href"> & {
7974
8200
  href?: string;
7975
8201
  };
7976
8202
 
8203
+ export declare const F0MessageCreditsWarning: ({ actionHref, }: F0MessageCreditsWarningProps) => JSX_2.Element;
8204
+
8205
+ /**
8206
+ * Args for credits warning copilot action
8207
+ */
8208
+ export declare interface F0MessageCreditsWarningArgs {
8209
+ actionHref?: string;
8210
+ }
8211
+
8212
+ /**
8213
+ * Props for the F0MessageCreditsWarning component
8214
+ */
8215
+ export declare interface F0MessageCreditsWarningProps {
8216
+ /**
8217
+ * Optional URL used by the action button.
8218
+ */
8219
+ actionHref?: string;
8220
+ }
8221
+
8222
+ export declare const F0ModuleCard: ({ moduleName, description, onAction, actionHref, imageSrc, }: F0ModuleCardProps) => JSX_2.Element;
8223
+
8224
+ /**
8225
+ * Props for the F0ModuleCard component
8226
+ */
8227
+ export declare interface F0ModuleCardProps {
8228
+ /**
8229
+ * Card title (e.g. "Projects")
8230
+ */
8231
+ moduleName: string;
8232
+ /**
8233
+ * Description text below the title
8234
+ */
8235
+ description: string;
8236
+ /**
8237
+ * Callback when the action button is clicked. Omit when using actionHref.
8238
+ */
8239
+ onAction?: () => void;
8240
+ /**
8241
+ * When set, the action button renders as a link to this URL.
8242
+ */
8243
+ actionHref?: string;
8244
+ /**
8245
+ * Optional image source for the avatar
8246
+ */
8247
+ imageSrc?: string;
8248
+ }
8249
+
7977
8250
  /**
7978
8251
  * Configuration for a "more info" link displayed below the help text.
7979
8252
  */
@@ -8167,6 +8440,110 @@ export declare const F0Provider: React.FC<{
8167
8440
  formComponent?: F0FormLikeComponent;
8168
8441
  }>;
8169
8442
 
8443
+ export declare const F0QuestionCardMultiStep: ({ steps, onComplete, onSkip, sendAsMessage, onSendMessage, }: F0QuestionCardMultiStepProps) => JSX_2.Element | null;
8444
+
8445
+ /**
8446
+ * Props for the F0QuestionCardMultiStep component
8447
+ */
8448
+ export declare interface F0QuestionCardMultiStepProps {
8449
+ /** Steps: each has question and options */
8450
+ steps: F0QuestionCardStep[];
8451
+ /** Called when user completes the last step with all selections (step index -> selected option ids) */
8452
+ onComplete?: (selections: Record<number, string[]>) => void;
8453
+ /** Called when user clicks Skip */
8454
+ onSkip?: () => void;
8455
+ /** When true, on last step Next sends selected labels via onSendMessage */
8456
+ sendAsMessage?: boolean;
8457
+ /** Called with joined selected labels when completing with sendAsMessage */
8458
+ onSendMessage?: (message: string) => void;
8459
+ /** Label for the Next button on the last step */
8460
+ nextLabel?: string;
8461
+ /** Label for the Skip button */
8462
+ skipLabel?: string;
8463
+ }
8464
+
8465
+ /**
8466
+ * Option for the question (checkbox with label)
8467
+ */
8468
+ export declare interface F0QuestionCardOption {
8469
+ id: string;
8470
+ label: string;
8471
+ }
8472
+
8473
+ /**
8474
+ * Props for the F0QuestionCard component (single-step, legacy)
8475
+ */
8476
+ export declare interface F0QuestionCardProps {
8477
+ /**
8478
+ * Optional icon in the card header (used when title is set)
8479
+ */
8480
+ headerIcon?: IconType;
8481
+ /**
8482
+ * The question text shown above the options
8483
+ */
8484
+ question: string;
8485
+ /**
8486
+ * Checkbox options (id, label). User can select one or more.
8487
+ */
8488
+ options: F0QuestionCardOption[];
8489
+ /**
8490
+ * Selected option ids (controlled). Omit for uncontrolled.
8491
+ */
8492
+ selectedOptionIds?: string[];
8493
+ /**
8494
+ * Callback when selection changes (controlled)
8495
+ */
8496
+ onSelectionChange?: (selectedIds: string[]) => void;
8497
+ /**
8498
+ * Current step (1-based) for pagination display, e.g. "1/n"
8499
+ */
8500
+ currentStep?: number;
8501
+ /**
8502
+ * Total number of steps for pagination display
8503
+ */
8504
+ totalSteps?: number;
8505
+ /**
8506
+ * Callback when the previous (left arrow) pagination control is clicked
8507
+ */
8508
+ onPrev?: () => void;
8509
+ /**
8510
+ * Callback when Next button is clicked (primary action)
8511
+ */
8512
+ onNext: () => void;
8513
+ /**
8514
+ * Callback when Skip button is clicked
8515
+ */
8516
+ onSkip?: () => void;
8517
+ /**
8518
+ * When true, calling Next will invoke onNextWithSelection with the selected option labels
8519
+ * so the parent can send them as a new user message (e.g. to trigger a new workflow turn).
8520
+ */
8521
+ sendAsMessage?: boolean;
8522
+ /**
8523
+ * Called when user clicks Next and sendAsMessage is true. Receives the selected option labels;
8524
+ * the parent should send this as a new user chat message to trigger the next workflow turn.
8525
+ */
8526
+ onNextWithSelection?: (selectedLabels: string[]) => void;
8527
+ /**
8528
+ * Label for the Next button
8529
+ * @default "Next"
8530
+ */
8531
+ nextLabel?: string;
8532
+ /**
8533
+ * Label for the Skip button
8534
+ * @default "Skip"
8535
+ */
8536
+ skipLabel?: string;
8537
+ }
8538
+
8539
+ /**
8540
+ * One step in a multi-step question card
8541
+ */
8542
+ export declare interface F0QuestionCardStep {
8543
+ question: string;
8544
+ options: F0QuestionCardOption[];
8545
+ }
8546
+
8170
8547
  /**
8171
8548
  * F0 config options specific to rich text fields
8172
8549
  */
@@ -8869,6 +9246,12 @@ export declare interface F0ZodType<T extends ZodTypeAny = ZodTypeAny> {
8869
9246
 
8870
9247
  /* Excluded from this release type: FieldItem */
8871
9248
 
9249
+ declare type FieldMeta = {
9250
+ label: string;
9251
+ fieldType?: string;
9252
+ customFieldName?: string;
9253
+ };
9254
+
8872
9255
  export declare function fieldsToSeconds(fields: DurationFields): number;
8873
9256
 
8874
9257
  /**
@@ -9190,13 +9573,52 @@ declare type FormatPreset = {
9190
9573
  /**
9191
9574
  * Form canvas content — renders an interactive F0Form in the canvas panel.
9192
9575
  */
9193
- declare type FormCanvasContent = CanvasContentBase & {
9576
+ export declare type FormCanvasContent = CanvasContentBase & {
9194
9577
  type: "form";
9195
9578
  formName: string;
9196
9579
  formDescription?: string;
9197
9580
  formModule?: ModuleId;
9198
9581
  };
9199
9582
 
9583
+ /**
9584
+ * Form-specific card rendered inline in the AI chat stream.
9585
+ * Shows the active form name, description, and an Open/Close button
9586
+ * that opens the form in the canvas panel.
9587
+ * When field data is provided, displays a summary of field labels and values.
9588
+ */
9589
+ export declare function FormCard({ formName, formDescription, module: formModule, cardTitle, cardDescription, fieldDescriptions, formValues, valueFormatter, }: FormCardProps): JSX_2.Element;
9590
+
9591
+ export declare namespace FormCard {
9592
+ var displayName: string;
9593
+ }
9594
+
9595
+ export declare type FormCardProps = {
9596
+ /** Unique name of the form in the registry */
9597
+ formName: string;
9598
+ /** Optional description shown on the card */
9599
+ formDescription?: string;
9600
+ /** Module avatar for the card */
9601
+ module?: ModuleId;
9602
+ /** Custom title override for the card (set by the AI via fillForm) */
9603
+ cardTitle: string;
9604
+ /** Custom description override for the card (set by the AI via fillForm) */
9605
+ cardDescription: string;
9606
+ /** Field label metadata from the form schema */
9607
+ fieldDescriptions?: Record<string, FieldMeta>;
9608
+ /** Current form values */
9609
+ formValues?: Record<string, unknown>;
9610
+ /**
9611
+ * Optional callback to format a field value into a DetailsItemContent.
9612
+ * Return `undefined` to fall back to built-in formatting.
9613
+ */
9614
+ valueFormatter?: FormCardValueFormatter;
9615
+ };
9616
+
9617
+ declare type FormCardValueFormatter = (key: string, value: unknown, meta: {
9618
+ fieldType?: string;
9619
+ customFieldName?: string;
9620
+ }) => DetailsItemContent | DetailsItemContent[] | undefined;
9621
+
9200
9622
  export declare interface FormCardValueFormatterEntry<T = unknown> {
9201
9623
  /** Scope to a specific form. Omit to apply to all forms. */
9202
9624
  formName?: string;
@@ -9214,6 +9636,17 @@ export declare function FormCardValueFormatterProvider({ children, }: {
9214
9636
  children: ReactNode;
9215
9637
  }): JSX_2.Element;
9216
9638
 
9639
+ /**
9640
+ * Canvas panel content for forms.
9641
+ * Propless — reads the active form from coagent shared state
9642
+ * and delegates to VirtualFormContent for rendering.
9643
+ */
9644
+ export declare function FormContent(): ReactNode;
9645
+
9646
+ export declare namespace FormContent {
9647
+ var displayName: string;
9648
+ }
9649
+
9217
9650
  /* Excluded from this release type: FormDefinitionItem */
9218
9651
 
9219
9652
  /**
@@ -9253,6 +9686,13 @@ export declare interface FormFieldProps {
9253
9686
  ref?: React.RefCallback<HTMLElement>;
9254
9687
  }
9255
9688
 
9689
+ export declare function FormHeader({ title, description, module, onClose, }: {
9690
+ title: string;
9691
+ description?: string;
9692
+ module?: ModuleId;
9693
+ onClose: () => void;
9694
+ }): JSX_2.Element;
9695
+
9256
9696
  /** Fraction tokens for proportional widths */
9257
9697
  export declare type FractionToken = "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "5/6";
9258
9698
 
@@ -9372,12 +9812,6 @@ export declare const getAnimationVariants: (options?: AnimationVariantsOptions)
9372
9812
  };
9373
9813
  };
9374
9814
 
9375
- /**
9376
- * Look up a canvas entity definition by content type.
9377
- * Returns `undefined` if the type is not configured.
9378
- */
9379
- export declare function getCanvasEntity(type: string): CanvasEntityDefinition<any> | undefined;
9380
-
9381
9815
  /**
9382
9816
  * Get the pagination type of a data adapter
9383
9817
  * @param dataAdapter - The data adapter to get the pagination type of
@@ -10098,6 +10532,16 @@ export declare const linkVariants: readonly ["link", "unstyled", "mention"];
10098
10532
  */
10099
10533
  declare type ListCollectionProps<Record extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Summaries extends SummariesDefinition, ItemActions extends ItemActionsDefinition<Record>, NavigationFilters extends NavigationFiltersDefinition, Grouping extends GroupingDefinition<Record>> = CollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping, ListVisualizationOptions<Record, Filters, Sortings>>;
10100
10534
 
10535
+ /**
10536
+ * External store for saved (user-edited) dashboard configs.
10537
+ *
10538
+ * This lives outside React's component tree so that `F0ChatReportCard`
10539
+ * (rendered inside CopilotKit's message list) can subscribe to changes
10540
+ * via `useSyncExternalStore` — which works regardless of whether the
10541
+ * React context provider is an ancestor.
10542
+ */
10543
+ declare type Listener = () => void;
10544
+
10101
10545
  declare type ListPropertyDefinition<R, Sortings extends SortingsDefinition> = WithOptionalSorting_2<R, Sortings> & PropertyDefinition_2<R>;
10102
10546
 
10103
10547
  declare type ListVisualizationOptions<R extends RecordType, _Filters extends FiltersDefinition, Sortings extends SortingsDefinition> = {
@@ -10207,6 +10651,18 @@ export declare interface Message {
10207
10651
  dateTime: string;
10208
10652
  }
10209
10653
 
10654
+ export declare const MessageSources: ({ sources }: MessageSourcesProps) => JSX_2.Element | null;
10655
+
10656
+ /**
10657
+ * Props for the F0MessageSources component
10658
+ */
10659
+ export declare type MessageSourcesProps = {
10660
+ /**
10661
+ * Array of sources to display
10662
+ */
10663
+ sources: Source[];
10664
+ };
10665
+
10210
10666
  declare type MetadataAction = {
10211
10667
  icon: IconType;
10212
10668
  label: string;
@@ -10967,6 +11423,10 @@ export declare type OnSelectItemsCallback<R extends RecordType, Filters extends
10967
11423
 
10968
11424
  declare type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
10969
11425
 
11426
+ export declare type OrchestratorThinkingResult = {
11427
+ inGroup?: boolean;
11428
+ };
11429
+
10970
11430
  /** Overflow values */
10971
11431
  export declare type OverflowToken = "visible" | "hidden" | "auto" | "scroll";
10972
11432
 
@@ -11658,6 +12118,27 @@ export declare type RequisitionProfile = {
11658
12118
 
11659
12119
  export declare type ResolvedRecordType<R> = R extends RecordType ? R : RecordType;
11660
12120
 
12121
+ /**
12122
+ * Snapshot of a resolved step's answer — persisted alongside the tool args
12123
+ * so the render can restore state without re-invoking the panel.
12124
+ */
12125
+ export declare interface ResolvedStepAnswer {
12126
+ /** The question text (matches the source step) */
12127
+ question: string;
12128
+ /** Selected option IDs at submit time */
12129
+ selectedOptionIds: string[];
12130
+ /** Custom free-text answer if provided */
12131
+ customAnswer?: string;
12132
+ /** True when the user explicitly skipped an optional step */
12133
+ skipped?: boolean;
12134
+ /**
12135
+ * True when the user cancelled the flow before reaching this step.
12136
+ * The step was therefore neither answered nor intentionally skipped —
12137
+ * callers (e.g. the agent) should treat this as "no information".
12138
+ */
12139
+ cancelled?: boolean;
12140
+ }
12141
+
11661
12142
  declare type ResourceHeaderProps = Props_4;
11662
12143
 
11663
12144
  /** All styling props that can be overridden per breakpoint */
@@ -11803,6 +12284,13 @@ export declare type RowSpanToken = "1" | "2" | "3" | "4" | "5" | "6" | "full";
11803
12284
  /** Grid row count (1–6 + none) */
11804
12285
  export declare type RowsToken = "1" | "2" | "3" | "4" | "5" | "6" | "none";
11805
12286
 
12287
+ export declare const savedDashboardConfigStore: {
12288
+ get(toolCallId: string): ChatDashboardConfig | undefined;
12289
+ set(toolCallId: string, config: ChatDashboardConfig): void;
12290
+ subscribe(listener: Listener): () => void;
12291
+ getSnapshot(): number;
12292
+ };
12293
+
11806
12294
  export declare type SearchFilterDefinition = BaseFilterDefinition<"search">;
11807
12295
 
11808
12296
  declare type SearchOptions = {
@@ -12069,6 +12557,28 @@ export declare type SortingsStateMultiple = {
12069
12557
 
12070
12558
  export declare type SortOrder = "asc" | "desc";
12071
12559
 
12560
+ /**
12561
+ * Source object for message sources
12562
+ */
12563
+ export declare type Source = {
12564
+ /**
12565
+ * Title of the source
12566
+ */
12567
+ title: string;
12568
+ /**
12569
+ * Optional link URL
12570
+ */
12571
+ link?: string;
12572
+ /**
12573
+ * Optional icon name (from @/icons/app)
12574
+ */
12575
+ icon?: string;
12576
+ /**
12577
+ * Whether to open link in new tab
12578
+ */
12579
+ targetBlank?: boolean;
12580
+ };
12581
+
12072
12582
  /**
12073
12583
  * Token types for F0Box props.
12074
12584
  * These map to the design tokens defined in @factorialco/f0-core.
@@ -12993,6 +13503,13 @@ export declare function useAiChat(): AiChatProviderReturnValue;
12993
13503
 
12994
13504
  export declare function useAiChatTranslations(): AiChatTranslations;
12995
13505
 
13506
+ /**
13507
+ * Hook returning the canvas entity definition for `type` from the registry
13508
+ * supplied to `F0AiChatProvider.canvasEntities`. Returns `undefined` when no
13509
+ * matching entity is configured.
13510
+ */
13511
+ export declare function useCanvasEntity(type: string | undefined): CanvasEntityDefinition<any> | undefined;
13512
+
12996
13513
  /**
12997
13514
  * A core React hook that manages data fetching, state management, and pagination within the Collections ecosystem.
12998
13515
  *
@@ -13141,12 +13658,6 @@ export declare interface UseDataReturn<R extends RecordType> {
13141
13658
  */
13142
13659
  export declare function useDataSource<R extends RecordType = RecordType, FiltersSchema extends FiltersDefinition = FiltersDefinition, Sortings extends SortingsDefinition = SortingsDefinition, Grouping extends GroupingDefinition<R> = GroupingDefinition<R>>({ defaultFilters, currentFilters: externalCurrentFilters, defaultGrouping: externalDefaultGrouping, currentGrouping: externalCurrentGrouping, filters, search, defaultSortings, currentSortings: externalCurrentSortings, dataAdapter, grouping, ...rest }: DataSourceDefinition<R, FiltersSchema, Sortings, Grouping>, deps?: ReadonlyArray<unknown>): DataSource<R, FiltersSchema, Sortings, Grouping>;
13143
13660
 
13144
- /**
13145
- * Hook that invokes every configured copilot action factory.
13146
- * Actions are declared in the `copilotActions` array in `registry.ts`.
13147
- */
13148
- export declare function useDefaultCopilotActions(): void;
13149
-
13150
13661
  export declare function useDndEvents(handler: (e: {
13151
13662
  phase: "start" | "over" | "drop" | "cancel";
13152
13663
  source: DragPayload;
@@ -13395,18 +13906,6 @@ export declare const useGroups: <R extends RecordType>(groups: GroupRecord<R>[],
13395
13906
  setGroupOpen: (key: string, open: boolean) => void;
13396
13907
  };
13397
13908
 
13398
- /**
13399
- * Hook to register the message sources action.
13400
- * Attaches information sources to the assistant's response to show where the AI got its information from.
13401
- */
13402
- export declare const useMessageSourcesAction: () => void;
13403
-
13404
- /**
13405
- * Hook to register the orchestrator thinking action.
13406
- * Displays the orchestrator's thinking process as a non-blocking UI element.
13407
- */
13408
- export declare const useOrchestratorThinkingAction: () => void;
13409
-
13410
13909
  export declare const usePrivacyMode: () => {
13411
13910
  enabled: boolean;
13412
13911
  enable: () => void;
@@ -13575,6 +14074,9 @@ export declare type UseSelectableReturn<R extends RecordType, Filters extends Fi
13575
14074
  */
13576
14075
  export declare function useSetFormCardValueFormatter(): SetFormCardValueFormatter;
13577
14076
 
14077
+ /** Read the tool call ID injected by AssistantMessage. */
14078
+ export declare const useToolCallId: () => string | undefined;
14079
+
13578
14080
  export declare const useXRay: () => {
13579
14081
  enabled: boolean;
13580
14082
  filter: ComponentTypes[];
@@ -13802,11 +14304,6 @@ declare module "gridstack" {
13802
14304
  }
13803
14305
 
13804
14306
 
13805
- declare namespace Calendar {
13806
- var displayName: string;
13807
- }
13808
-
13809
-
13810
14307
  declare module "@tiptap/core" {
13811
14308
  interface Commands<ReturnType> {
13812
14309
  aiBlock: {
@@ -13854,3 +14351,8 @@ declare module "@tiptap/core" {
13854
14351
  };
13855
14352
  }
13856
14353
  }
14354
+
14355
+
14356
+ declare namespace Calendar {
14357
+ var displayName: string;
14358
+ }