@factorialco/f0-react 2.20.0 → 2.21.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.
@@ -1 +1 @@
1
- .rich-text-editor-container a.mention:not([data-type=mention]),.rich-text-display-container a.mention:not([data-type=mention]){border-radius:.375rem;background-color:hsl(var(--neutral-10));padding-left:6px!important;padding-right:6px!important;font-weight:500;color:hsl(var(--neutral-100));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rich-text-editor-container a.mention:not([data-type=mention]):hover,.rich-text-display-container a.mention:not([data-type=mention]):hover{background-color:hsl(var(--neutral-20))}.rich-text-editor-container a.mention:not([data-type=mention]):focus,.rich-text-display-container a.mention:not([data-type=mention]):focus{outline-style:solid;outline-width:1px;outline-offset:1px;outline-color:hsl(var(--selected-50))}.preserved-selection{background-color:hsl(var(--selected-60) / .2)}.enhance-highlight{background:linear-gradient(90deg,#e5561980,#a1ade580,#e5194380,#e5561980);background-size:300% 100%;animation:enhance-gradient-move 3s linear infinite;border-radius:4px}@keyframes enhance-gradient-move{0%{background-position:0% 50%}to{background-position:100% 50%}}.rich-text-editor-container *::-moz-selection{background-color:transparent!important}.rich-text-editor-container *::selection{background-color:transparent!important}.rich-text-editor-container::-moz-selection{background-color:transparent!important}.rich-text-editor-container::selection{background-color:transparent!important}.rich-text-editor-container p,.rich-text-display-container p{position:relative;margin:0 0 8px}.rich-text-editor-container p:last-child,.rich-text-display-container p:last-child{margin-bottom:0}.rich-text-editor-container h1,.rich-text-display-container h1{margin:0 0 12px;padding:0;font-size:1.625rem;line-height:2rem;letter-spacing:-.01em;font-weight:600}.rich-text-editor-container h2,.rich-text-display-container h2{margin:0 0 10px;padding:0;font-size:1.375rem;line-height:1.75rem;letter-spacing:-.01em;font-weight:500}.rich-text-editor-container h3,.rich-text-display-container h3,.rich-text-editor-container h4,.rich-text-display-container h4{margin:0 0 10px;padding:0;font-size:1rem;line-height:1.5rem;letter-spacing:-.01em;font-weight:500}.rich-text-editor-container ul,.rich-text-display-container ul{margin:0 0 10px;list-style:disc}.rich-text-editor-container ol,.rich-text-display-container ol{margin:0 0 10px;list-style-type:decimal}.rich-text-editor-container a:not([data-type=mention]):not(.mention),.rich-text-display-container a:not([data-type=mention]):not(.mention){cursor:pointer;font-weight:500;color:hsl(var(--neutral-100));text-decoration-line:underline;text-decoration-color:hsl(var(--neutral-40));text-decoration-thickness:1px;text-underline-offset:5px}.rich-text-editor-container a:not([data-type=mention]):not(.mention):hover,.rich-text-display-container a:not([data-type=mention]):not(.mention):hover{text-decoration-color:hsl(var(--neutral-100))}.rich-text-editor-container strong,.rich-text-display-container strong{font-weight:600}.rich-text-editor-container em,.rich-text-display-container em{font-style:italic}.rich-text-editor-container u,.rich-text-display-container u{text-decoration-line:underline}.rich-text-editor-container s,.rich-text-display-container s{text-decoration-line:line-through}.rich-text-editor-container .f1-bullet-list,.rich-text-display-container .f1-bullet-list{list-style-type:disc}.rich-text-editor-container .f1-ordered-list,.rich-text-display-container .f1-ordered-list{list-style-type:decimal}.rich-text-editor-container ul,.rich-text-editor-container ol,.rich-text-display-container ul,.rich-text-display-container ol{padding-left:20px}.rich-text-editor-container .f1-ordered-list p,.rich-text-display-container .f1-ordered-list p,.rich-text-editor-container .f1-bullet-list p,.rich-text-display-container .f1-bullet-list p{margin-left:8px}.rich-text-editor-container li,.rich-text-display-container li{margin-bottom:8px}.rich-text-editor-container pre,.rich-text-display-container pre{position:relative;margin:16px 0;overflow-x:auto;white-space:pre-wrap;border-radius:.75rem;background-color:hsl(var(--neutral-10));padding:8px}.rich-text-editor-container code,.rich-text-display-container code{font-size:.75rem;line-height:1rem;font-family:Menlo,Consolas,Monaco,monospace}.rich-text-editor-container blockquote,.rich-text-display-container blockquote{margin:0 0 10px;border-width:0px;border-left-width:4px;border-style:solid;border-color:hsl(var(--neutral-30));padding-left:16px}.ProseMirror:focus,.rich-text-display-container:focus{outline:2px solid transparent;outline-offset:2px}.ProseMirror-selectednode{outline:none!important}.rich-text-editor-container hr,.rich-text-display-container hr{margin-top:12px;margin-bottom:12px;border-width:0px;border-top-width:1px;border-color:hsl(var(--neutral-30))}.rich-text-editor-container mark,.rich-text-display-container mark{border-radius:.375rem;background-color:hsl(var(--promote-50) / .3);padding:2px;color:hsl(var(--neutral-100))}.rich-text-editor-container p:empty:before,.rich-text-display-container p:empty:before{content:" "}.rich-text-editor-container ul[data-type=taskList],.rich-text-display-container ul[data-type=taskList]{padding-left:0}.shadow-editor-tools{box-shadow:0 -4px 20px #0d162514}.scrollbar-macos{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.scrollbar-macos::-webkit-scrollbar{width:8px}.scrollbar-macos::-webkit-scrollbar-track{background:var(--scrollbar-track)}.scrollbar-macos::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:9999px;border:2px solid transparent;background-clip:padding-box}.scrollbar-macos::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.f1-task-item{margin-bottom:8px;display:flex;list-style-type:none;gap:8px}.f1-task-item div{flex:1 1 0%}.f1-task-item input{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;height:1.25rem;width:1.25rem;flex-shrink:0;cursor:pointer;border-radius:.375rem;border-width:1px;border-style:solid;border-color:hsl(var(--neutral-30));background-color:hsl(var(--neutral-0));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.f1-task-item input:hover{border-color:hsl(var(--neutral-40))}.f1-task-item input:checked{border-color:hsl(var(--selected-50) / .4);background-color:hsl(var(--selected-60))}.f1-task-item[data-checked=true]>div>p{color:hsl(var(--neutral-50));text-decoration-line:line-through}.f1-task-item input:checked:after{position:absolute;top:50%;left:50%;height:1rem;width:1rem;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:"";background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.75 16.75L17.75 7.25004' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M6.25 11.75L10.75 16.75' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;background-size:contain}.f1-task-item-content{min-width:0px;flex:1 1 0%;outline:none}.f1-task-item[data-checked=true] .f1-task-item-content{color:hsl(var(--neutral-50));text-decoration-line:line-through}.f1-task-item-content p{margin:0}.tiptap p.is-empty:before{pointer-events:none;float:left;display:block;height:0px;max-width:100%;text-overflow:ellipsis;white-space:nowrap;color:hsl(var(--neutral-40));content:attr(data-placeholder)}.editor-mood-tracker p{margin:0}.rich-text-details{margin-top:0;margin-bottom:0;display:flex;gap:8px;padding-top:4px;padding-bottom:4px;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rich-text-details summary{font-size:1rem;line-height:1.5rem;letter-spacing:-.01em;font-weight:600}.rich-text-details summary::marker{content:""}.rich-text-details>button{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;border-radius:.375rem;background-color:hsl(var(--neutral-0))}.rich-text-details>button:hover{background-color:hsl(var(--neutral-10))}.rich-text-details>button:before{font-size:.625rem;line-height:.75rem;color:hsl(var(--neutral-100));content:"▶"}.rich-text-details.is-open>button:before{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rich-text-details>div{display:flex;width:100%;flex-direction:column;gap:8px}.rich-text-details>div>[data-type=detailsContent]>:last-child{margin-bottom:8px}.rich-text-details.rich-text-details{margin-bottom:8px}.image-resizable-wrapper{max-width:100%}.image-resize-handle{z-index:10}.shine-text{background:linear-gradient(90deg,#888 0% 33%,#aaa 50%,#888 66% 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 1.5s ease-in-out infinite}@keyframes shine{0%{background-position:200% 0}to{background-position:-200% 0}}
1
+ .rich-text-editor-container a.mention:not([data-type=mention]),.rich-text-display-container a.mention:not([data-type=mention]){border-radius:.375rem;background-color:hsl(var(--neutral-10));padding-left:6px!important;padding-right:6px!important;font-weight:500;color:hsl(var(--neutral-100));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rich-text-editor-container a.mention:not([data-type=mention]):hover,.rich-text-display-container a.mention:not([data-type=mention]):hover{background-color:hsl(var(--neutral-20))}.rich-text-editor-container a.mention:not([data-type=mention]):focus,.rich-text-display-container a.mention:not([data-type=mention]):focus{outline-style:solid;outline-width:1px;outline-offset:1px;outline-color:hsl(var(--selected-50))}.preserved-selection{background-color:hsl(var(--selected-60) / .2)}.enhance-highlight{background:linear-gradient(90deg,#e5561980,#a1ade580,#e5194380,#e5561980);background-size:300% 100%;animation:enhance-gradient-move 3s linear infinite;border-radius:4px}@keyframes enhance-gradient-move{0%{background-position:0% 50%}to{background-position:100% 50%}}.rich-text-editor-container *::-moz-selection{background-color:transparent!important}.rich-text-editor-container *::selection{background-color:transparent!important}.rich-text-editor-container::-moz-selection{background-color:transparent!important}.rich-text-editor-container::selection{background-color:transparent!important}.rich-text-editor-container p,.rich-text-display-container p{position:relative;margin:0 0 8px}.rich-text-editor-container p:last-child,.rich-text-display-container p:last-child{margin-bottom:0}.rich-text-editor-container h1,.rich-text-display-container h1{margin:0 0 12px;padding:0;font-size:1.625rem;line-height:2rem;letter-spacing:-.01em;font-weight:600}.rich-text-editor-container h2,.rich-text-display-container h2{margin:0 0 10px;padding:0;font-size:1.375rem;line-height:1.75rem;letter-spacing:-.01em;font-weight:500}.rich-text-editor-container h3,.rich-text-display-container h3,.rich-text-editor-container h4,.rich-text-display-container h4{margin:0 0 10px;padding:0;font-size:1rem;line-height:1.5rem;letter-spacing:-.01em;font-weight:500}.rich-text-editor-container ul,.rich-text-display-container ul{margin:0 0 10px;list-style:disc}.rich-text-editor-container ol,.rich-text-display-container ol{margin:0 0 10px;list-style-type:decimal}.rich-text-editor-container a:not([data-type=mention]):not(.mention),.rich-text-display-container a:not([data-type=mention]):not(.mention){cursor:pointer;font-weight:500;color:hsl(var(--neutral-100));text-decoration-line:underline;text-decoration-color:hsl(var(--neutral-40));text-decoration-thickness:1px;text-underline-offset:5px}.rich-text-editor-container a:not([data-type=mention]):not(.mention):hover,.rich-text-display-container a:not([data-type=mention]):not(.mention):hover{text-decoration-color:hsl(var(--neutral-100))}.rich-text-editor-container strong,.rich-text-display-container strong{font-weight:600}.rich-text-editor-container em,.rich-text-display-container em{font-style:italic}.rich-text-editor-container u,.rich-text-display-container u{text-decoration-line:underline}.rich-text-editor-container s,.rich-text-display-container s{text-decoration-line:line-through}.rich-text-editor-container .f1-bullet-list,.rich-text-display-container .f1-bullet-list{list-style-type:disc}.rich-text-editor-container .f1-ordered-list,.rich-text-display-container .f1-ordered-list{list-style-type:decimal}.rich-text-editor-container ul,.rich-text-editor-container ol,.rich-text-display-container ul,.rich-text-display-container ol{padding-left:20px}.rich-text-editor-container .f1-ordered-list p,.rich-text-display-container .f1-ordered-list p,.rich-text-editor-container .f1-bullet-list p,.rich-text-display-container .f1-bullet-list p{margin-left:8px}.rich-text-editor-container li,.rich-text-display-container li{margin-bottom:8px}.rich-text-editor-container pre,.rich-text-display-container pre{position:relative;margin:16px 0;overflow-x:auto;white-space:pre-wrap;border-radius:.75rem;background-color:hsl(var(--neutral-10));padding:8px}.rich-text-editor-container code,.rich-text-display-container code{font-size:.75rem;line-height:1rem;font-family:Menlo,Consolas,Monaco,monospace}.rich-text-editor-container blockquote,.rich-text-display-container blockquote{margin:0 0 10px;border-width:0px;border-left-width:4px;border-style:solid;border-color:hsl(var(--neutral-30));padding-left:16px}.ProseMirror:focus,.rich-text-display-container:focus{outline:2px solid transparent;outline-offset:2px}.ProseMirror-selectednode{outline:none!important}.rich-text-editor-container hr,.rich-text-display-container hr{margin-top:12px;margin-bottom:12px;border-width:0px;border-top-width:1px;border-color:hsl(var(--neutral-30))}.rich-text-editor-container mark,.rich-text-display-container mark{border-radius:.375rem;background-color:hsl(var(--promote-50) / .3);padding:2px;color:hsl(var(--neutral-100))}.rich-text-editor-container p:empty:before,.rich-text-display-container p:empty:before{content:" "}.rich-text-editor-container ul[data-type=taskList],.rich-text-display-container ul[data-type=taskList]{padding-left:0}.shadow-editor-tools{box-shadow:0 -4px 20px #0d162514}.scrollbar-macos{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.scrollbar-macos::-webkit-scrollbar{width:8px}.scrollbar-macos::-webkit-scrollbar-track{background:var(--scrollbar-track)}.scrollbar-macos::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:9999px;border:2px solid transparent;background-clip:padding-box}.scrollbar-macos::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover)}.f1-task-item{margin-bottom:8px;display:flex;list-style-type:none;gap:8px}.f1-task-item div{flex:1 1 0%}.f1-task-item input{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;height:1.25rem;width:1.25rem;flex-shrink:0;cursor:pointer;border-radius:.375rem;border-width:1px;border-style:solid;border-color:hsl(var(--neutral-30));background-color:hsl(var(--neutral-0));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.f1-task-item input:hover{border-color:hsl(var(--neutral-40))}.f1-task-item input:checked{border-color:hsl(var(--selected-50) / .4);background-color:hsl(var(--selected-60))}.f1-task-item[data-checked=true]>div>p{color:hsl(var(--neutral-50));text-decoration-line:line-through}.f1-task-item input:checked:after{position:absolute;top:50%;left:50%;height:1rem;width:1rem;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:"";background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.75 16.75L17.75 7.25004' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M6.25 11.75L10.75 16.75' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;background-size:contain}.f1-task-item-content{min-width:0px;flex:1 1 0%;outline:none}.f1-task-item[data-checked=true] .f1-task-item-content{color:hsl(var(--neutral-50));text-decoration-line:line-through}.f1-task-item-content p{margin:0}.tiptap p.is-empty:before{pointer-events:none;float:left;display:block;height:0px;max-width:100%;text-overflow:ellipsis;white-space:nowrap;color:hsl(var(--neutral-40));content:attr(data-placeholder)}.editor-mood-tracker p{margin:0}.rich-text-details{margin-top:0;margin-bottom:0;display:flex;gap:8px;padding-top:4px;padding-bottom:4px;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rich-text-details summary{font-size:1rem;line-height:1.5rem;letter-spacing:-.01em;font-weight:600}.rich-text-details summary::marker{content:""}.rich-text-details>button{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;border-radius:.375rem;background-color:hsl(var(--neutral-0))}.rich-text-details>button:hover{background-color:hsl(var(--neutral-10))}.rich-text-details>button:before{font-size:.625rem;line-height:.75rem;color:hsl(var(--neutral-100));content:"▶"}.rich-text-details.is-open>button:before{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rich-text-details>div{display:flex;width:100%;flex-direction:column;gap:8px}.rich-text-details>div>[data-type=detailsContent]>:last-child{margin-bottom:8px}.rich-text-details.rich-text-details{margin-bottom:8px}.image-resizable-wrapper{max-width:100%}.image-resize-handle{z-index:10}.shine-text{background:linear-gradient(90deg,#888 0% 35%,#f5f5f5 50%,#888 65% 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 3s ease-in-out infinite}@keyframes shine{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes globe-spin-enter{0%{opacity:0;transform:scale(.8);filter:blur(4px)}to{opacity:1;transform:scale(1);filter:blur(0)}}@keyframes globe-spin-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.035)}}.globe-spin-anim{animation:globe-spin-enter .5s cubic-bezier(.33,1,.68,1) both,globe-spin-breathe 3.6s ease-in-out .5s infinite}@media(prefers-reduced-motion:reduce){.globe-spin-anim{animation:none}}
package/dist/ai.d.ts CHANGED
@@ -7,6 +7,7 @@ import { CompanyItemProps } from './types';
7
7
  import { ComponentProps } from 'react';
8
8
  import { ComponentType } from 'react';
9
9
  import { CopilotKitProps } from '@copilotkit/react-core';
10
+ import { CSSProperties } from 'react';
10
11
  import { EmployeeItemProps } from './types';
11
12
  import { F0TagBalanceProps as F0TagBalanceProps_2 } from './types';
12
13
  import { F0TagCompanyProps } from './types';
@@ -44,7 +45,7 @@ import { WithDataTestIdReturnType } from '../../../lib/data-testid';
44
45
 
45
46
  export declare type ActionItemStatus = (typeof actionItemStatuses)[number];
46
47
 
47
- export declare const actionItemStatuses: readonly ["inProgress", "executing", "completed"];
48
+ export declare const actionItemStatuses: readonly ["inProgress", "executing", "writing", "completed"];
48
49
 
49
50
  /* Excluded from this release type: AgentState */
50
51
 
@@ -136,7 +137,6 @@ export declare type AiChatMode = "chat" | "voice";
136
137
  */
137
138
  export declare type AiChatProviderProps = {
138
139
  enabled?: boolean;
139
- greeting?: string;
140
140
  initialMessage?: string | string[];
141
141
  welcomeScreenSuggestions?: WelcomeScreenSuggestion[];
142
142
  disclaimer?: AiChatDisclaimer;
@@ -392,7 +392,7 @@ declare type AiChatProviderReturnValue = {
392
392
  pendingQuote: PendingQuote | null;
393
393
  /** Set the pending quote (pass null to clear). */
394
394
  setPendingQuote: React.Dispatch<React.SetStateAction<PendingQuote | null>>;
395
- } & Pick<AiChatState, "greeting" | "agent" | "disclaimer" | "resizable" | "entityRefs" | "canvasActions" | "canvasEntities" | "credits" | "employeeCredits" | "creditWarning" | "fileAttachments"> & {
395
+ } & Pick<AiChatState, "agent" | "disclaimer" | "resizable" | "entityRefs" | "canvasActions" | "canvasEntities" | "credits" | "employeeCredits" | "creditWarning" | "fileAttachments"> & {
396
396
  /** The current canvas content, or null when canvas is closed */
397
397
  canvasContent: CanvasContent | null;
398
398
  /** Open the canvas panel with the given content */
@@ -411,7 +411,6 @@ declare type AiChatProviderReturnValue = {
411
411
  * Internal state for the AiChat provider
412
412
  */
413
413
  declare interface AiChatState {
414
- greeting?: string;
415
414
  enabled: boolean;
416
415
  agent?: string;
417
416
  initialMessage?: string | string[];
@@ -454,7 +453,7 @@ declare interface AiChatState {
454
453
  declare type AiChatTrackingOptions = {
455
454
  onVisibility?: () => void;
456
455
  onClose?: () => void;
457
- onWelcomeSuggestionClick?: (item: WelcomeScreenSuggestionItem) => void;
456
+ onWelcomeSuggestionClick?: (event: WelcomeSuggestionClickEvent) => void;
458
457
  onNewChat?: () => void;
459
458
  onMessage?: (message: Message) => void;
460
459
  };
@@ -522,7 +521,7 @@ export declare const aiTranslations: {
522
521
  readonly stopAnswerGeneration: "Stop generating";
523
522
  readonly responseStopped: "You stopped this response";
524
523
  readonly sendMessage: "Send message";
525
- readonly thoughtsGroupTitle: "Reflection";
524
+ readonly thoughtsGroupTitle: "Reasoning";
526
525
  readonly resourcesGroupTitle: "Resources";
527
526
  readonly thinking: "Thinking...";
528
527
  readonly feedbackModal: {
@@ -1120,7 +1119,19 @@ export declare interface ChatDashboardRadarChartConfig extends ChatDashboardChar
1120
1119
  showArea?: boolean;
1121
1120
  }
1122
1121
 
1123
- export declare const ChatSpinner: ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement>, "ref"> & RefAttributes<SVGSVGElement>>;
1122
+ export declare const ChatSpinner: ForwardRefExoticComponent<ChatSpinnerProps & RefAttributes<HTMLDivElement>>;
1123
+
1124
+ declare interface ChatSpinnerProps {
1125
+ size?: number;
1126
+ className?: string;
1127
+ style?: CSSProperties;
1128
+ /**
1129
+ * "default" → spins 2 rotations, pauses, repeats.
1130
+ * "continuous" → 2 rotations forward, then 2 backward, no pause. Used for
1131
+ * "writing"-style activity where the indicator should never rest.
1132
+ */
1133
+ variant?: "default" | "continuous";
1134
+ }
1124
1135
 
1125
1136
  export declare type ChatThread = {
1126
1137
  id: string;
@@ -1780,7 +1791,7 @@ export declare const defaultTranslations: {
1780
1791
  readonly stopAnswerGeneration: "Stop generating";
1781
1792
  readonly responseStopped: "You stopped this response";
1782
1793
  readonly sendMessage: "Send message";
1783
- readonly thoughtsGroupTitle: "Reflection";
1794
+ readonly thoughtsGroupTitle: "Reasoning";
1784
1795
  readonly resourcesGroupTitle: "Resources";
1785
1796
  readonly thinking: "Thinking...";
1786
1797
  readonly feedbackModal: {
@@ -2319,7 +2330,7 @@ export declare interface F0ActionItemProps {
2319
2330
  /**
2320
2331
  * Current status of the action item
2321
2332
  */
2322
- status?: "inProgress" | "executing" | "completed";
2333
+ status?: "inProgress" | "executing" | "writing" | "completed";
2323
2334
  /**
2324
2335
  * Whether the action item is part of a group
2325
2336
  */
@@ -2418,7 +2429,7 @@ export declare type F0AiChatHistoryProps = {
2418
2429
  /**
2419
2430
  * @experimental This is an experimental component use it at your own risk
2420
2431
  */
2421
- export declare const F0AiChatProvider: ({ enabled, greeting, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, canvasEntities, credits, employeeCredits, creditWarning, fileAttachments, onThumbsUp, onThumbsDown, onBeforeSendMessage, runtimeFetch, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
2432
+ export declare const F0AiChatProvider: ({ enabled, initialMessage, welcomeScreenSuggestions, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, canvasEntities, credits, employeeCredits, creditWarning, fileAttachments, onThumbsUp, onThumbsDown, onBeforeSendMessage, runtimeFetch, children, agent, tracking, ...copilotKitProps }: AiChatProviderProps) => JSX_2.Element;
2422
2433
 
2423
2434
  /**
2424
2435
  * Headless chat composer.
@@ -2494,8 +2505,9 @@ export declare type F0AiChatTextAreaProps = {
2494
2505
  * Hovering an item previews its prompt in the textarea placeholder.
2495
2506
  */
2496
2507
  welcomeScreenSuggestions?: WelcomeScreenSuggestion[];
2497
- /** Called when the user clicks a sub-suggestion. */
2498
- onSuggestionClick?: (item: WelcomeScreenSuggestionItem) => void;
2508
+ /** Called when the user clicks a sub-suggestion. Receives the picked
2509
+ * `item` and its parent `group` (the outline-button entry). */
2510
+ onSuggestionClick?: (item: WelcomeScreenSuggestionItem, group: WelcomeScreenSuggestion) => void;
2499
2511
  /**
2500
2512
  * When true, the composer adopts the fullscreen layout: the welcome
2501
2513
  * footer is pushed to the bottom and the disclaimer is hidden so the
@@ -2580,12 +2592,12 @@ export declare type F0AiMessagesContainerProps = {
2580
2592
  isLoadingThread?: boolean;
2581
2593
  /** Optional React node rendered inline at the end of the list (e.g. CopilotKit interrupt). */
2582
2594
  interrupt?: ReactNode;
2583
- /** Greeting shown above the initial message in the welcome screen. */
2584
- greeting?: string;
2585
- /** Initial message(s) shown in the welcome screen, or a default if omitted. */
2595
+ /** Welcome phrase shown centered when the chat is empty. Falls back to
2596
+ * `translations.ai.defaultInitialMessage` if omitted. */
2586
2597
  initialMessage?: string | string[];
2587
- /** Optional click on the One icon (factorial uses it for the pong easter egg). */
2588
- onWelcomeIconClick?: () => void;
2598
+ /** Called when the user clicks the welcome phrase (used by F0AiChat to open
2599
+ * the pong easter egg). When omitted the phrase is non-interactive. */
2600
+ onWelcomeClick?: () => void;
2589
2601
  /** Returns a React node for an assistant message's tool call, or null. */
2590
2602
  renderToolCall?: F0AssistantMessageExtraProps["renderToolCall"];
2591
2603
  /** Called when the user selects text and clicks Reply (user or assistant bubble). */
@@ -4031,6 +4043,18 @@ export declare type WelcomeScreenSuggestionItem = {
4031
4043
  prompt?: string;
4032
4044
  };
4033
4045
 
4046
+ /**
4047
+ * Payload for `tracking.onWelcomeSuggestionClick`. Carries everything an
4048
+ * analytics layer (e.g. Amplitude) needs to attribute the click: the picked
4049
+ * sub-item, its parent group, and the resolved prompt that was actually sent.
4050
+ */
4051
+ declare type WelcomeSuggestionClickEvent = {
4052
+ item: WelcomeScreenSuggestionItem;
4053
+ group: WelcomeScreenSuggestion;
4054
+ /** Prompt actually sent to the AI — `item.prompt` falling back to `item.title`. */
4055
+ prompt: string;
4056
+ };
4057
+
4034
4058
  declare type WithDataTestIdProps = {
4035
4059
  dataTestId?: string;
4036
4060
  };
package/dist/ai.js CHANGED
@@ -1,44 +1,44 @@
1
- import { C as e, D as r, e as i, F as t, h as o, i as n, a as F, k as C, l, m as A, n as u, d, f as m, g as h, I as c, P as I, c as P, j as f, u as g, b as v } from "./F0CanvasPanel-ClSoMwWX.js";
2
- import { defaultTranslations as p } from "./i18n-provider-defaults.js";
3
- import { A as S, j as x, g as H, m as V, l as b, n as k, h as M, d as O, i as j, F as D, f as w, a as z, k as B, o as E, u as L, e as q, b as G, c as J } from "./F0AiTableCard-CJyoi39I.js";
1
+ import { C as e, D as r, i, F as o, l as t, m as n, a as F, o as C, p as A, q as l, g as u, r as d, h, j as m, k as c, d as I, I as P, P as f, c as g, n as p, e as v, u as T, f as y, b as S } from "./F0CanvasPanel-v9tjaOnW.js";
2
+ import { defaultTranslations as H } from "./i18n-provider-defaults.js";
3
+ import { A as b, f as M, F as O, i as j, h as k, j as D, d as q, e as w, c as z, a as B, g as E, o as L, u as G, b as J } from "./F0AiTableCard-BzXULBvr.js";
4
4
  export {
5
- S as AiChatTranslationsProvider,
5
+ b as AiChatTranslationsProvider,
6
6
  e as ChatSpinner,
7
7
  r as DropOverlay,
8
8
  i as F0ActionItem,
9
- t as F0AiChat,
10
- o as F0AiChatHeader,
9
+ o as F0AiChat,
10
+ t as F0AiChatHeader,
11
11
  n as F0AiChatHistory,
12
12
  F as F0AiChatProvider,
13
13
  C as F0AiChatTextArea,
14
- x as F0AiInsightCard,
15
- H as F0AiMask,
16
- V as F0AiMessageSources,
17
- l as F0AiMessagesContainer,
18
- A as F0AiPong,
19
- b as F0AiProposalCard,
20
- k as F0AiTableCard,
21
- M as F0AuraVoiceAnimation,
22
- O as F0CanvasCard,
23
- u as F0CanvasPanel,
24
- d as F0ClarifyingPanel,
25
- j as F0HILActionConfirmation,
14
+ M as F0AiInsightCard,
15
+ O as F0AiMask,
16
+ j as F0AiMessageSources,
17
+ A as F0AiMessagesContainer,
18
+ l as F0AiPong,
19
+ k as F0AiProposalCard,
20
+ D as F0AiTableCard,
21
+ q as F0AuraVoiceAnimation,
22
+ u as F0CanvasCard,
23
+ d as F0CanvasPanel,
24
+ h as F0ClarifyingPanel,
25
+ w as F0HILActionConfirmation,
26
26
  m as F0OneIcon,
27
- h as F0OneSwitch,
28
- D as FormCardValueFormatterProvider,
29
- c as I18nProvider,
30
- I as PongBall,
31
- w as actionItemStatuses,
32
- z as aiTranslations,
33
- B as contentTypes,
34
- p as defaultTranslations,
35
- E as oneIconSizes,
36
- P as useAiChat,
37
- L as useAiChatTranslations,
38
- q as useCanvasEntity,
39
- f as useChatHistory,
40
- G as useFormCardValueFormatter,
41
- g as useI18n,
42
- J as useSetFormCardValueFormatter,
43
- v as useToolCallId
27
+ c as F0OneSwitch,
28
+ I as FormCardValueFormatterProvider,
29
+ P as I18nProvider,
30
+ f as PongBall,
31
+ z as actionItemStatuses,
32
+ B as aiTranslations,
33
+ E as contentTypes,
34
+ H as defaultTranslations,
35
+ L as oneIconSizes,
36
+ g as useAiChat,
37
+ G as useAiChatTranslations,
38
+ J as useCanvasEntity,
39
+ p as useChatHistory,
40
+ v as useFormCardValueFormatter,
41
+ T as useI18n,
42
+ y as useSetFormCardValueFormatter,
43
+ S as useToolCallId
44
44
  };
@@ -502,7 +502,6 @@ declare type AiChatFileAttachmentConfig = {
502
502
  */
503
503
  declare type AiChatProviderProps = {
504
504
  enabled?: boolean;
505
- greeting?: string;
506
505
  initialMessage?: string | string[];
507
506
  welcomeScreenSuggestions?: WelcomeScreenSuggestion[];
508
507
  disclaimer?: AiChatDisclaimer;
@@ -602,7 +601,7 @@ declare type AiChatProviderProps = {
602
601
  declare type AiChatTrackingOptions = {
603
602
  onVisibility?: () => void;
604
603
  onClose?: () => void;
605
- onWelcomeSuggestionClick?: (item: WelcomeScreenSuggestionItem) => void;
604
+ onWelcomeSuggestionClick?: (event: WelcomeSuggestionClickEvent) => void;
606
605
  onNewChat?: () => void;
607
606
  onMessage?: (message: Message_2) => void;
608
607
  };
@@ -3149,7 +3148,7 @@ declare const defaultTranslations: {
3149
3148
  readonly stopAnswerGeneration: "Stop generating";
3150
3149
  readonly responseStopped: "You stopped this response";
3151
3150
  readonly sendMessage: "Send message";
3152
- readonly thoughtsGroupTitle: "Reflection";
3151
+ readonly thoughtsGroupTitle: "Reasoning";
3153
3152
  readonly resourcesGroupTitle: "Resources";
3154
3153
  readonly thinking: "Thinking...";
3155
3154
  readonly feedbackModal: {
@@ -8230,6 +8229,18 @@ declare type WelcomeScreenSuggestionItem = {
8230
8229
  prompt?: string;
8231
8230
  };
8232
8231
 
8232
+ /**
8233
+ * Payload for `tracking.onWelcomeSuggestionClick`. Carries everything an
8234
+ * analytics layer (e.g. Amplitude) needs to attribute the click: the picked
8235
+ * sub-item, its parent group, and the resolved prompt that was actually sent.
8236
+ */
8237
+ declare type WelcomeSuggestionClickEvent = {
8238
+ item: WelcomeScreenSuggestionItem;
8239
+ group: WelcomeScreenSuggestion;
8240
+ /** Prompt actually sent to the AI — `item.prompt` falling back to `item.title`. */
8241
+ prompt: string;
8242
+ };
8243
+
8233
8244
  /**
8234
8245
  * @experimental This is an experimental component use it at your own risk
8235
8246
  */