@factorialco/f0-react 2.61.5 → 3.0.1

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/ai.d.ts CHANGED
@@ -4689,11 +4689,16 @@ declare module "gridstack" {
4689
4689
  }
4690
4690
 
4691
4691
 
4692
+ declare namespace Calendar {
4693
+ var displayName: string;
4694
+ }
4695
+
4696
+
4692
4697
  declare module "@tiptap/core" {
4693
4698
  interface Commands<ReturnType> {
4694
- aiBlock: {
4695
- insertAIBlock: (data: AIBlockData, config: AIBlockConfig) => ReturnType;
4696
- executeAIAction: (actionType: string, config: AIBlockConfig) => ReturnType;
4699
+ enhanceHighlight: {
4700
+ setEnhanceHighlight: (from: number, to: number) => ReturnType;
4701
+ clearEnhanceHighlight: () => ReturnType;
4697
4702
  };
4698
4703
  }
4699
4704
  }
@@ -4701,9 +4706,9 @@ declare module "@tiptap/core" {
4701
4706
 
4702
4707
  declare module "@tiptap/core" {
4703
4708
  interface Commands<ReturnType> {
4704
- enhanceHighlight: {
4705
- setEnhanceHighlight: (from: number, to: number) => ReturnType;
4706
- clearEnhanceHighlight: () => ReturnType;
4709
+ aiBlock: {
4710
+ insertAIBlock: (data: AIBlockData, config: AIBlockConfig) => ReturnType;
4711
+ executeAIAction: (actionType: string, config: AIBlockConfig) => ReturnType;
4707
4712
  };
4708
4713
  }
4709
4714
  }
@@ -4738,11 +4743,6 @@ declare module "@tiptap/core" {
4738
4743
  }
4739
4744
 
4740
4745
 
4741
- declare namespace Calendar {
4742
- var displayName: string;
4743
- }
4744
-
4745
-
4746
4746
  declare namespace F0GraphNodeWrapperInner {
4747
4747
  var displayName: string;
4748
4748
  }
package/dist/ai.js CHANGED
@@ -1,6 +1,6 @@
1
- import { D as e, F as r, a as t, e as o, f as i, c as n, d as F, I as C, P as A, b as l, u as d } from "./F0CanvasPanel-CC0-kGJd.js";
1
+ import { D as e, F as r, a as t, e as o, f as i, c as n, d as F, I as C, P as A, b as l, u as d } from "./F0CanvasPanel-nz2dQz9Z.js";
2
2
  import { defaultTranslations as m } from "./i18n-provider-defaults.js";
3
- import { A as c, C as I, h as P, t as v, v as f, x as p, n as T, j as g, r as y, y as S, q as x, s as H, k as V, e as b, g as k, l as w, F as M, i as O, a as D, p as j, m as q, o as z, b as B, f as E, w as L, c as R, d as G, u as J } from "./useChatHistory-BjqR1tKf.js";
3
+ import { A as c, C as I, h as P, t as v, v as f, x as p, n as T, j as g, r as y, y as S, q as x, s as H, k as V, e as b, g as k, l as w, F as M, i as O, a as D, p as j, m as q, o as z, b as B, f as E, w as L, c as R, d as G, u as J } from "./useChatHistory-DceLgsyD.js";
4
4
  export {
5
5
  c as AiChatTranslationsProvider,
6
6
  I as ChatSpinner,
@@ -1124,19 +1124,6 @@ declare type BreadcrumbBaseItemType = NavigationItem & {
1124
1124
  label: string;
1125
1125
  };
1126
1126
 
1127
- /**
1128
- * A breadcrumb "jump-to" select bound to a OneDataCollection: the options are
1129
- * fetched from the declared `source`, seeded with the filters/sortings the
1130
- * list persisted under `collectionId` — so on the detail page (even via a
1131
- * direct link, with the list never mounted) the select only shows the items
1132
- * the user was looking at on the list.
1133
- *
1134
- * F0 owns the seeding, pagination handling (a `pages` adapter is transparently
1135
- * consumed as infinite scroll), current selection, navigation, and
1136
- * loop-safety: `source` is captured when the crumb mounts, so inline-recreated
1137
- * item objects never retrigger fetches. Give the item a new `id` to swap
1138
- * sources.
1139
- */
1140
1127
  export declare type BreadcrumbCollectionSelectItemType = BreadcrumbBaseItemType & {
1141
1128
  type: "collection-select";
1142
1129
  /**
@@ -1146,8 +1133,9 @@ export declare type BreadcrumbCollectionSelectItemType = BreadcrumbBaseItemType
1146
1133
  */
1147
1134
  collectionId: string;
1148
1135
  /** The declared data source — no mounted collection needed. */
1149
- source: DataSourceDefinition<RecordType, FiltersDefinition, SortingsDefinition, GroupingDefinition<RecordType>>;
1150
- mapOptions: (item: RecordType) => F0SelectItemProps<string, RecordType>;
1136
+ source: CollectionSelectSourceDefinition;
1137
+ /** Method syntax on purpose: bivariant, so concrete-record mappers fit. */
1138
+ mapOptions(item: RecordType): F0SelectItemProps<string, RecordType>;
1151
1139
  /** Current item id (the record the detail page is showing). */
1152
1140
  value?: string;
1153
1141
  /**
@@ -1180,14 +1168,15 @@ export declare type BreadcrumbCollectionSelectItemType = BreadcrumbBaseItemType
1180
1168
  } & ({
1181
1169
  /**
1182
1170
  * Href to navigate to when an option is picked, routed through the
1183
- * app's LinkProvider. Return undefined to skip navigation.
1171
+ * app's LinkProvider. Return undefined to skip navigation. Method
1172
+ * syntax on purpose: bivariant, so concrete-record callbacks fit.
1184
1173
  */
1185
- getItemHref: (value: string, item?: RecordType) => string | undefined;
1186
- onSelect?: (value: string, item?: RecordType) => void;
1174
+ getItemHref(value: string, item?: RecordType): string | undefined;
1175
+ onSelect?(value: string, item?: RecordType): void;
1187
1176
  } | {
1188
1177
  getItemHref?: never;
1189
1178
  /** Imperative escape hatch (e.g. router.push) when hrefs don't fit. */
1190
- onSelect: (value: string, item?: RecordType) => void;
1179
+ onSelect(value: string, item?: RecordType): void;
1191
1180
  });
1192
1181
 
1193
1182
  export declare type BreadcrumbItemType = BreadcrumbLoadingItemType | BreadcrumbNavItemType | BreadcrumbSelectItemType | BreadcrumbCollectionSelectItemType;
@@ -2202,6 +2191,15 @@ export declare type CollectionProps<Record extends RecordType, Filters extends F
2202
2191
  fromVisualization?: TableVisualizationType;
2203
2192
  } & VisualizationOptions;
2204
2193
 
2194
+ /**
2195
+ * The record-erased source a collection-select breadcrumb accepts: a
2196
+ * `DataSourceDefinition` whose callbacks (and data adapter) tolerate sources
2197
+ * declared over concrete record/filter types.
2198
+ */
2199
+ export declare type CollectionSelectSourceDefinition = WithBivariantCallbacks<Omit<DataSourceDefinition<RecordType, FiltersDefinition, SortingsDefinition, GroupingDefinition<RecordType>>, "dataAdapter">> & {
2200
+ dataAdapter: WithBivariantCallbacks<DataAdapter<RecordType, FiltersDefinition>>;
2201
+ };
2202
+
2205
2203
  declare type CollectionVisualizations<Record extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Summaries extends SummariesDefinition, ItemActions extends ItemActionsDefinition<Record>, NavigationFilters extends NavigationFiltersDefinition, Grouping extends GroupingDefinition<Record>> = {
2206
2204
  table: VisualizacionTypeDefinition<TableCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>, TableVisualizationSettings>;
2207
2205
  editableTable: VisualizacionTypeDefinition<EditableTableCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>, EditableTableVisualizationSettings>;
@@ -4569,23 +4567,14 @@ declare type F0Message = {
4569
4567
  };
4570
4568
 
4571
4569
  /**
4572
- * @experimental This is an experimental component, use it at your own risk.
4573
- *
4574
4570
  * F0NumberInput is the writable numeric field for forms — a box where the
4575
4571
  * user types a number. For arbitrary text use F0TextInput; for durations
4576
4572
  * (hours/minutes) use F0DurationInput.
4577
4573
  */
4578
- export declare const F0NumberInput: (props: F0NumberInputProps) => JSX_2.Element;
4574
+ export declare const F0NumberInput: ForwardRefExoticComponent<Omit<F0NumberInputProps, "ref"> & RefAttributes<HTMLInputElement>>;
4579
4575
 
4580
4576
  export declare type F0NumberInputProps = Omit<NumberInputInternalProps, (typeof privateProps_4)[number]>;
4581
4577
 
4582
- /**
4583
- * @experimental This is an experimental component, use it at your own risk.
4584
- *
4585
- * F0SearchInput is the writable search field — a single-line text input
4586
- * pre-configured with a search icon, `role="searchbox"`, debouncing, and
4587
- * an optional minimum-length threshold before emitting changes.
4588
- */
4589
4578
  export declare const F0SearchInput: ForwardRefExoticComponent< {
4590
4579
  value?: string;
4591
4580
  threshold?: number;
@@ -4893,27 +4882,23 @@ declare interface F0TagStatusProps {
4893
4882
  declare const F0TagTeam: WithDataTestIdReturnType_5<ForwardRefExoticComponent<F0TagTeamProps & RefAttributes<HTMLDivElement>>>;
4894
4883
 
4895
4884
  /**
4896
- * @experimental This is an experimental component, use it at your own risk.
4897
- *
4898
4885
  * F0TextAreaInput is the writable multi-line text field for forms — a box
4899
- * where the user types longer text spanning multiple lines. For a single
4900
- * line of text use F0TextInput.
4886
+ * where the user types longer text spanning multiple lines (notes,
4887
+ * descriptions, comments). For a single line of text use F0TextInput.
4901
4888
  */
4902
- export declare const F0TextAreaInput: FC<F0TextAreaInputProps>;
4889
+ export declare const F0TextAreaInput: React.FC<F0TextAreaInputProps>;
4903
4890
 
4904
4891
  export declare type F0TextAreaInputProps = Pick<ComponentProps<typeof Textarea_2>, "disabled" | "onChange" | "value" | "placeholder" | "rows" | "cols" | "label" | "labelIcon" | "icon" | "hideLabel" | "maxLength" | "clearable" | "onBlur" | "onFocus" | "name" | "status" | "hint" | "error" | "size" | "loading" | "required" | "maxHeight">;
4905
4892
 
4906
4893
  /**
4907
- * @experimental This is an experimental component, use it at your own risk.
4908
- *
4909
4894
  * F0TextInput is the writable text field for forms — a box where the user
4910
- * types text, numbers (as text), passwords, emails, etc. It is the canonical
4911
- * "text input" of F0. For numeric or duration data prefer F0NumberInput or
4912
- * F0DurationInput respectively.
4895
+ * types text, passwords, emails, etc. It is the canonical "text input" of
4896
+ * F0. For numeric data use F0NumberInput; for durations use F0DurationInput;
4897
+ * for queries use F0SearchInput.
4913
4898
  */
4914
- export declare const F0TextInput: <T extends string>(props: F0TextInputProps<T>) => JSX_2.Element;
4899
+ export declare const F0TextInput: ForwardRefExoticComponent<Omit<F0TextInputProps, "ref"> & RefAttributes<HTMLInputElement>>;
4915
4900
 
4916
- export declare type F0TextInputProps<T extends string> = Omit<InputInternalProps<T>, (typeof privateProps_3)[number]>;
4901
+ export declare type F0TextInputProps = Omit<InputInternalProps, (typeof privateProps_3)[number]>;
4917
4902
 
4918
4903
  /**
4919
4904
  * Loose message shape used inside f0. Mirrors the CopilotKit `Message`
@@ -5566,12 +5551,26 @@ export declare type InfiniteScrollPaginatedResponse<TRecord> = BasePaginatedResp
5566
5551
  *
5567
5552
  * @removeIn 2.0.0
5568
5553
  */
5569
- export declare const Input: <T extends string>(props: F0TextInputProps<T>) => JSX_2.Element;
5554
+ export declare const Input: ForwardRefExoticComponent<Omit<F0TextInputProps, "ref"> & RefAttributes<HTMLInputElement>>;
5570
5555
 
5571
5556
  declare const Input_2: React_2.ForwardRefExoticComponent<Omit<React_2.InputHTMLAttributes<HTMLInputElement>, "onChange" | "size"> & Pick<InputFieldProps<string>, "label" | "onChange" | "size" | "icon" | "role" | "onFocus" | "onBlur" | "transparent" | "status" | "loading" | "disabled" | "maxLength" | "required" | "error" | "append" | "hideLabel" | "hint" | "labelIcon" | "onClickContent" | "readonly" | "clearable" | "autocomplete" | "onClear" | "isEmpty" | "emptyValue" | "hideMaxLength" | "appendTag" | "lengthProvider" | "buttonToggle"> & React_2.RefAttributes<HTMLInputElement>>;
5572
5557
 
5573
5558
  declare const INPUTFIELD_SIZES: readonly ["sm", "md"];
5574
5559
 
5560
+ /**
5561
+ * Design system primitive. Do NOT use in product code.
5562
+ *
5563
+ * `F0InputField` is the shared chrome (label, status, icon, append, clear,
5564
+ * loading, focus/hover/disabled styles, a11y wiring) used by every writable
5565
+ * F0 input. It is intentionally not exported from `@factorialco/f0-react`.
5566
+ *
5567
+ * Product code must use the dedicated `F0*Input` components instead:
5568
+ * - F0TextInput, F0NumberInput, F0SearchInput, F0TextAreaInput,
5569
+ * F0DurationInput, F0DatePicker, F0Select, ...
5570
+ *
5571
+ * Use `F0InputField` only when you are adding a new input type to the design
5572
+ * system itself (e.g. F0CurrencyInput, F0PhoneInput, F0PercentageInput).
5573
+ */
5575
5574
  declare type InputFieldProps<T> = {
5576
5575
  id?: string;
5577
5576
  autoFocus?: boolean;
@@ -5659,7 +5658,7 @@ declare const inputFieldStatus: readonly ["default", "warning", "info", "error"]
5659
5658
 
5660
5659
  declare type InputFieldStatusType = (typeof inputFieldStatus)[number];
5661
5660
 
5662
- declare type InputInternalProps<T extends string> = Pick<ComponentProps<typeof Input_2>, "ref" | "id" | "aria-describedby" | "aria-invalid"> & Pick<InputFieldProps<T>, "autoFocus" | "required" | "disabled" | "size" | "onChange" | "value" | "placeholder" | "clearable" | "maxLength" | "label" | "labelIcon" | "icon" | "hideLabel" | "name" | "error" | "status" | "hint" | "autocomplete" | "buttonToggle" | "hideMaxLength" | "loading" | "transparent" | "onBlur" | "readonly"> & {
5661
+ declare type InputInternalProps = Pick<ComponentProps<typeof Input_2>, "ref" | "id" | "aria-describedby" | "aria-invalid"> & Pick<InputFieldProps<string>, "autoFocus" | "required" | "disabled" | "size" | "onChange" | "value" | "placeholder" | "clearable" | "maxLength" | "label" | "labelIcon" | "icon" | "hideLabel" | "name" | "error" | "status" | "hint" | "autocomplete" | "buttonToggle" | "hideMaxLength" | "loading" | "transparent" | "onBlur" | "readonly"> & {
5663
5662
  type?: Exclude<HTMLInputTypeAttribute, "number">;
5664
5663
  onPressEnter?: () => void;
5665
5664
  };
@@ -5668,7 +5667,7 @@ declare type InputInternalProps<T extends string> = Pick<ComponentProps<typeof I
5668
5667
  * @deprecated Renamed to `F0TextInputProps`. See the `Input` deprecation note.
5669
5668
  * @removeIn 2.0.0
5670
5669
  */
5671
- export declare type InputProps<T extends string> = F0TextInputProps<T>;
5670
+ export declare type InputProps = F0TextInputProps;
5672
5671
 
5673
5672
  declare interface InsertAfterNotesTextEditorPageDocumentPatch {
5674
5673
  type: "insert_after";
@@ -6304,9 +6303,9 @@ declare type NumberFilterValue = {
6304
6303
  *
6305
6304
  * @removeIn 2.0.0
6306
6305
  */
6307
- export declare const NumberInput: (props: F0NumberInputProps) => JSX_2.Element;
6306
+ export declare const NumberInput: ForwardRefExoticComponent<Omit<F0NumberInputProps, "ref"> & RefAttributes<HTMLInputElement>>;
6308
6307
 
6309
- declare type NumberInputInternalProps = Omit<InputInternalProps<string>, "value" | "type" | "onChange"> & {
6308
+ declare type NumberInputInternalProps = Pick<ComponentProps<typeof Input_2>, "ref" | "id" | "aria-describedby" | "aria-invalid"> & Pick<InputFieldProps<string>, "autoFocus" | "required" | "disabled" | "size" | "placeholder" | "clearable" | "maxLength" | "label" | "labelIcon" | "icon" | "hideLabel" | "name" | "error" | "status" | "hint" | "autocomplete" | "buttonToggle" | "hideMaxLength" | "loading" | "transparent" | "onBlur" | "readonly"> & {
6310
6309
  locale: string;
6311
6310
  value?: number | null;
6312
6311
  step?: number;
@@ -9178,6 +9177,36 @@ declare interface WiggleOptions {
9178
9177
  errorHighlight?: boolean;
9179
9178
  }
9180
9179
 
9180
+ /**
9181
+ * A breadcrumb "jump-to" select bound to a OneDataCollection: the options are
9182
+ * fetched from the declared `source`, seeded with the filters/sortings the
9183
+ * list persisted under `collectionId` — so on the detail page (even via a
9184
+ * direct link, with the list never mounted) the select only shows the items
9185
+ * the user was looking at on the list.
9186
+ *
9187
+ * F0 owns the seeding, pagination handling (a `pages` adapter is transparently
9188
+ * consumed as infinite scroll), current selection, navigation, and
9189
+ * loop-safety: `source` is captured when the crumb mounts, so inline-recreated
9190
+ * item objects never retrigger fetches. Give the item a new `id` to swap
9191
+ * sources.
9192
+ */
9193
+ /**
9194
+ * Rewraps every function-valued member of `T` so its parameters are checked
9195
+ * BIVARIANTLY (the method-syntax trick). The breadcrumb item union is
9196
+ * record-erased (`RecordType`); under `strictFunctionTypes`, arrow-typed
9197
+ * members like `selectable?: (item: R) => ...` or the adapter's
9198
+ * `fetchData(options: PaginatedFetchOptions<Filters>)` would make a source
9199
+ * declared over a CONCRETE record/filters type unassignable here. Sound in
9200
+ * this context: each source is fully type-checked against its concrete types
9201
+ * where it is declared, and the select only feeds records fetched from that
9202
+ * same source back into these callbacks.
9203
+ */
9204
+ declare type WithBivariantCallbacks<T> = {
9205
+ [K in keyof T]: [NonNullable<T[K]>] extends [never] ? T[K] : NonNullable<T[K]> extends (...args: infer Args) => infer Return ? {
9206
+ bivariant(...args: Args): Return;
9207
+ }["bivariant"] : T[K];
9208
+ };
9209
+
9181
9210
  declare type WithDataTestIdProps = {
9182
9211
  dataTestId?: string;
9183
9212
  };
@@ -9255,11 +9284,16 @@ declare module "gridstack" {
9255
9284
  }
9256
9285
 
9257
9286
 
9287
+ declare namespace Calendar {
9288
+ var displayName: string;
9289
+ }
9290
+
9291
+
9258
9292
  declare module "@tiptap/core" {
9259
9293
  interface Commands<ReturnType> {
9260
- aiBlock: {
9261
- insertAIBlock: (data: AIBlockData, config: AIBlockConfig) => ReturnType;
9262
- executeAIAction: (actionType: string, config: AIBlockConfig) => ReturnType;
9294
+ enhanceHighlight: {
9295
+ setEnhanceHighlight: (from: number, to: number) => ReturnType;
9296
+ clearEnhanceHighlight: () => ReturnType;
9263
9297
  };
9264
9298
  }
9265
9299
  }
@@ -9267,9 +9301,9 @@ declare module "@tiptap/core" {
9267
9301
 
9268
9302
  declare module "@tiptap/core" {
9269
9303
  interface Commands<ReturnType> {
9270
- enhanceHighlight: {
9271
- setEnhanceHighlight: (from: number, to: number) => ReturnType;
9272
- clearEnhanceHighlight: () => ReturnType;
9304
+ aiBlock: {
9305
+ insertAIBlock: (data: AIBlockData, config: AIBlockConfig) => ReturnType;
9306
+ executeAIAction: (actionType: string, config: AIBlockConfig) => ReturnType;
9273
9307
  };
9274
9308
  }
9275
9309
  }
@@ -9304,11 +9338,6 @@ declare module "@tiptap/core" {
9304
9338
  }
9305
9339
 
9306
9340
 
9307
- declare namespace Calendar {
9308
- var displayName: string;
9309
- }
9310
-
9311
-
9312
9341
  declare namespace F0GraphNodeWrapperInner {
9313
9342
  var displayName: string;
9314
9343
  }