@factorialco/f0-react 1.388.1 → 1.388.3

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
@@ -1518,6 +1518,7 @@ declare type CollectionProps<Record extends RecordType, Filters extends FiltersD
1518
1518
 
1519
1519
  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>> = {
1520
1520
  table: VisualizacionTypeDefinition<TableCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>, TableVisualizationSettings>;
1521
+ editableTable: VisualizacionTypeDefinition<EditableTableCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>, EditableTableVisualizationSettings>;
1521
1522
  list: VisualizacionTypeDefinition<ListCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>>;
1522
1523
  card: VisualizacionTypeDefinition<CardCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>>;
1523
1524
  kanban: VisualizacionTypeDefinition<KanbanCollectionProps<Record, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping>>;
@@ -2362,6 +2363,7 @@ export declare const defaultTranslations: {
2362
2363
  };
2363
2364
  readonly visualizations: {
2364
2365
  readonly table: "Table view";
2366
+ readonly editableTable: "Editable table view";
2365
2367
  readonly card: "Card view";
2366
2368
  readonly list: "List view";
2367
2369
  readonly kanban: "Kanban view";
@@ -2377,6 +2379,11 @@ export declare const defaultTranslations: {
2377
2379
  readonly hideAllColumns: "Hide all";
2378
2380
  };
2379
2381
  };
2382
+ readonly editableTable: {
2383
+ readonly errors: {
2384
+ readonly saveFailed: "Save failed";
2385
+ };
2386
+ };
2380
2387
  readonly itemsCount: "items";
2381
2388
  readonly emptyStates: {
2382
2389
  readonly noData: {
@@ -2809,6 +2816,50 @@ export declare type DropIntent = {
2809
2816
  type: "cancel";
2810
2817
  };
2811
2818
 
2819
+ /** The edit mode for a column cell in the editable table. Derived from value-display editors. */
2820
+ declare type EditableTableCellEditType = EditableValueDisplayType;
2821
+
2822
+ declare type EditableTableCollectionProps<R extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Summaries extends SummariesDefinition, ItemActions extends ItemActionsDefinition<R>, NavigationFilters extends NavigationFiltersDefinition, Grouping extends GroupingDefinition<R>> = CollectionProps<R, Filters, Sortings, Summaries, ItemActions, NavigationFilters, Grouping, EditableTableVisualizationOptions<R, Filters, Sortings, Summaries>>;
2823
+
2824
+ /**
2825
+ * Column definition for Editable Table.
2826
+ *
2827
+ * When `editType` is set, the column's `id` is used as the record key to
2828
+ * read the initial value from `item[id]` and to merge the updated value
2829
+ * back into the item passed to `onCellChange`.
2830
+ */
2831
+ declare type EditableTableColumnDefinition<R extends RecordType, Sortings extends SortingsDefinition, Summaries extends SummariesDefinition> = TableColumnDefinition<R, Sortings, Summaries> & {
2832
+ /**
2833
+ * Determines how the cell is rendered in edit mode.
2834
+ * Receives the current item and returns the cell type (e.g. `"text"`) or
2835
+ * `undefined` to render the cell read-only.
2836
+ * The column `id` is used as the record key to read/write the value.
2837
+ * When omitted, the cell is always rendered read-only.
2838
+ */
2839
+ editType?: (item: R) => EditableTableCellEditType | undefined;
2840
+ /**
2841
+ * Function that determines if the cell should be editable for a given item.
2842
+ * The cell is only editable if both `editType` returns a value AND
2843
+ * this function returns `true` for the given item.
2844
+ * Return `true` for all items to make the column always editable.
2845
+ */
2846
+ editable: (item: R) => boolean;
2847
+ };
2848
+
2849
+ declare type EditableTableVisualizationOptions<R extends RecordType, _Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Summaries extends SummariesDefinition> = Omit<TableVisualizationOptions<R, _Filters, Sortings, Summaries>, "columns"> & {
2850
+ columns: ReadonlyArray<EditableTableColumnDefinition<R, Sortings, Summaries>>;
2851
+ /**
2852
+ * Called when a cell value changes with the full updated row.
2853
+ * Resolve with nothing for success, or `{ columnId: "message" }` to set errors.
2854
+ * Rejection sets an error on the edited column.
2855
+ */
2856
+ onCellChange: (updatedItem: R) => Promise<void | Record<string, string>>;
2857
+ };
2858
+
2859
+ declare type EditableTableVisualizationSettings = TableVisualizationSettings;
2860
+
2861
+ declare type EditableValueDisplayType = keyof typeof valueDisplayEditors;
2862
+
2812
2863
  export declare function Em({ children, ...props }: React.HTMLAttributes<HTMLSpanElement>): JSX_2.Element;
2813
2864
 
2814
2865
  export declare function EmojiImage({ emoji, size, alt }: EmojiImageProps): JSX_2.Element;
@@ -7463,6 +7514,10 @@ tag: TagVariant_2;
7463
7514
  export declare type TagAlertProps<Text extends string = string> = {
7464
7515
  text: Text extends "" ? never : Text;
7465
7516
  level: Level;
7517
+ /**
7518
+ * Info text to display an i icon and a tooltip next to the tag
7519
+ */
7520
+ info?: string;
7466
7521
  };
7467
7522
 
7468
7523
  export declare type TagBalanceProps = {
@@ -7515,6 +7570,10 @@ export declare const tagDotColors: ["viridian", "malibu", "yellow", "purple", "l
7515
7570
 
7516
7571
  export declare type TagDotProps = {
7517
7572
  text: string;
7573
+ /**
7574
+ * Info text to display an i icon and a tooltip next to the tag
7575
+ */
7576
+ info?: string;
7518
7577
  } & ({
7519
7578
  color: NewColor;
7520
7579
  } | {
@@ -7550,6 +7609,10 @@ export declare type TagRawProps = {
7550
7609
  * Additional accessible text to display in the tag
7551
7610
  */
7552
7611
  additionalAccessibleText?: string;
7612
+ /**
7613
+ * Info text to display an i icon and a tooltip next to the tag
7614
+ */
7615
+ info?: string;
7553
7616
  } & ({
7554
7617
  icon: IconType;
7555
7618
  onlyIcon: true;
@@ -8345,6 +8408,41 @@ export declare const useXRay: () => {
8345
8408
  disable: () => void;
8346
8409
  };
8347
8410
 
8411
+ /**
8412
+ * Props contract that every editable value-display component must implement.
8413
+ * The generic `V` allows type-specific editors (e.g. `string` for text, `Date` for date pickers).
8414
+ */
8415
+ declare type ValueDisplayEditorProps<V = string> = {
8416
+ label: string;
8417
+ value: V;
8418
+ align?: "left" | "right";
8419
+ error?: string;
8420
+ loading?: boolean;
8421
+ onChange: (value: V) => void;
8422
+ };
8423
+
8424
+ /**
8425
+ * Registry that maps value-display types to their editable cell components.
8426
+ * Not every type needs an editor — only types with editing support are registered here.
8427
+ *
8428
+ * To add a new editable type:
8429
+ * 1. Add its value type to `ValueDisplayEditorValueMap` above
8430
+ * 2. Create the editor component in `types/<type>/<type>-editor.tsx`
8431
+ * 3. Export it from `types/<type>/index.tsx`
8432
+ * 4. Register it here
8433
+ */
8434
+ declare const valueDisplayEditors: {
8435
+ [K in keyof ValueDisplayEditorValueMap]: ComponentType<ValueDisplayEditorProps<ValueDisplayEditorValueMap[K]>>;
8436
+ };
8437
+
8438
+ /**
8439
+ * Maps each editable value-display type to the value type its editor operates on.
8440
+ * Extend this when adding a new editor (e.g. `date: Date`, `select: string`).
8441
+ */
8442
+ declare type ValueDisplayEditorValueMap = {
8443
+ text: string;
8444
+ };
8445
+
8348
8446
  declare type ValueDisplayRendererContext_2 = {
8349
8447
  visualization: ValueDisplayVisualizationType;
8350
8448
  i18n: TranslationsType;
@@ -8545,9 +8643,8 @@ declare module "@tiptap/core" {
8545
8643
 
8546
8644
  declare module "@tiptap/core" {
8547
8645
  interface Commands<ReturnType> {
8548
- enhanceHighlight: {
8549
- setEnhanceHighlight: (from: number, to: number) => ReturnType;
8550
- clearEnhanceHighlight: () => ReturnType;
8646
+ moodTracker: {
8647
+ insertMoodTracker: (data: MoodTrackerData) => ReturnType;
8551
8648
  };
8552
8649
  }
8553
8650
  }
@@ -8555,8 +8652,9 @@ declare module "@tiptap/core" {
8555
8652
 
8556
8653
  declare module "@tiptap/core" {
8557
8654
  interface Commands<ReturnType> {
8558
- moodTracker: {
8559
- insertMoodTracker: (data: MoodTrackerData) => ReturnType;
8655
+ enhanceHighlight: {
8656
+ setEnhanceHighlight: (from: number, to: number) => ReturnType;
8657
+ clearEnhanceHighlight: () => ReturnType;
8560
8658
  };
8561
8659
  }
8562
8660
  }
package/dist/f0.js CHANGED
@@ -1,12 +1,12 @@
1
- import { ad as ye, ae as dt, a9 as le, aa as At, af as fo, ag as Ri, ah as Ai, ai as ls, aj as Ul, ak as ho, al as wt, u as Tt, am as Wr, an as Zl, ao as ql, ap as Kl, aq as Xl, ar as at, as as Yl, at as Jl, au as Nr, av as Yn, aw as Ql, ax as ec, ay as tc, az as cs, aA as rc, aB as nc, aC as mo, aD as ic, aE as po, aF as go, aG as Ln, aH as vo, aI as yo, aJ as ln, aK as bo, aL as sc, aM as oc, aN as ac, aO as lc, aP as cc, ab as qe, aQ as ds, aR as dc, aS as uc, aT as fc, aU as hc, aV as xo, aW as mc, aX as pc, aY as gc, aZ as wo, a_ as vc, a$ as ar, b0 as yc, b1 as bc, b2 as xc, b3 as wc, b4 as Ti, b5 as _c, b6 as _o, b7 as Cc, ac as Ec, b8 as Sc, b9 as kc, ba as Dc, bb as Nc, bc as Rc, bd as Ac, be as Tc, bf as Oc, bg as Co, bh as Mc, bi as Lc, bj as Fc, bk as Ic, bl as Pc, bm as zc, bn as Bc, bo as Vc, bp as Hc, bq as jc, br as $c, bs as Wc, I as Gc, bt as Uc, bu as Zc, bv as qc, bw as Kc } from "./F0AiChat-DqK8eXm5.js";
2
- import { A as Vv, bV as Hv, B as jv, C as $v, q as Wv, c8 as Gv, E as Uv, h as Zv, F as qv, a as Kv, D as Xv, i as Yv, b as Jv, bx as Qv, by as ey, bz as ty, bA as ry, bC as ny, bD as iy, bE as sy, bF as oy, bI as ay, j as ly, bJ as cy, bK as dy, bL as uy, c4 as fy, w as hy, x as my, y as py, bO as gy, bP as vy, bQ as yy, bR as by, bT as xy, bU as wy, z as _y, c as Cy, bW as Ey, r as Sy, s as ky, t as Dy, H as Ny, m as Ry, L as Ay, O as Ty, bN as Oy, v as My, P as Ly, S as Fy, T as Iy, n as Py, bS as zy, o as By, p as Vy, U as Hy, c5 as jy, bG as $y, bH as Wy, b$ as Gy, k as Uy, l as Zy, c2 as qy, b_ as Ky, c9 as Xy, bZ as Yy, bY as Jy, bB as Qy, d as eb, bX as tb, c0 as rb, e as nb, ca as ib, bM as sb, c1 as ob, g as ab, f as lb, c7 as cb, c3 as db, c6 as ub } from "./F0AiChat-DqK8eXm5.js";
1
+ import { ad as ye, ae as dt, a9 as le, aa as At, af as fo, ag as Ri, ah as Ai, ai as ls, aj as Ul, ak as ho, al as wt, u as Tt, am as Wr, an as Zl, ao as ql, ap as Kl, aq as Xl, ar as at, as as Yl, at as Jl, au as Nr, av as Yn, aw as Ql, ax as ec, ay as tc, az as cs, aA as rc, aB as nc, aC as mo, aD as ic, aE as po, aF as go, aG as Ln, aH as vo, aI as yo, aJ as ln, aK as bo, aL as sc, aM as oc, aN as ac, aO as lc, aP as cc, ab as qe, aQ as ds, aR as dc, aS as uc, aT as fc, aU as hc, aV as xo, aW as mc, aX as pc, aY as gc, aZ as wo, a_ as vc, a$ as ar, b0 as yc, b1 as bc, b2 as xc, b3 as wc, b4 as Ti, b5 as _c, b6 as _o, b7 as Cc, ac as Ec, b8 as Sc, b9 as kc, ba as Dc, bb as Nc, bc as Rc, bd as Ac, be as Tc, bf as Oc, bg as Co, bh as Mc, bi as Lc, bj as Fc, bk as Ic, bl as Pc, bm as zc, bn as Bc, bo as Vc, bp as Hc, bq as jc, br as $c, bs as Wc, I as Gc, bt as Uc, bu as Zc, bv as qc, bw as Kc } from "./F0AiChat-BXyvQ3uC.js";
2
+ import { A as Vv, bV as Hv, B as jv, C as $v, q as Wv, c8 as Gv, E as Uv, h as Zv, F as qv, a as Kv, D as Xv, i as Yv, b as Jv, bx as Qv, by as ey, bz as ty, bA as ry, bC as ny, bD as iy, bE as sy, bF as oy, bI as ay, j as ly, bJ as cy, bK as dy, bL as uy, c4 as fy, w as hy, x as my, y as py, bO as gy, bP as vy, bQ as yy, bR as by, bT as xy, bU as wy, z as _y, c as Cy, bW as Ey, r as Sy, s as ky, t as Dy, H as Ny, m as Ry, L as Ay, O as Ty, bN as Oy, v as My, P as Ly, S as Fy, T as Iy, n as Py, bS as zy, o as By, p as Vy, U as Hy, c5 as jy, bG as $y, bH as Wy, b$ as Gy, k as Uy, l as Zy, c2 as qy, b_ as Ky, c9 as Xy, bZ as Yy, bY as Jy, bB as Qy, d as eb, bX as tb, c0 as rb, e as nb, ca as ib, bM as sb, c1 as ob, g as ab, f as lb, c7 as cb, c3 as db, c6 as ub } from "./F0AiChat-BXyvQ3uC.js";
3
3
  import { jsx as f, jsxs as W, Fragment as Yt } from "react/jsx-runtime";
4
4
  import * as lt from "react";
5
5
  import q, { forwardRef as Ke, useRef as Y, useImperativeHandle as Xc, Children as cn, createContext as vt, useContext as ct, useState as re, useMemo as H, useEffect as ie, useCallback as K, useLayoutEffect as ui, createElement as Qr, isValidElement as Eo, Fragment as Yc, memo as Jc, useReducer as Qc, cloneElement as ed, PureComponent as td, useId as rd } from "react";
6
6
  import { createPortal as So, unstable_batchedUpdates as en, flushSync as nd } from "react-dom";
7
- import { L as ko, C as id, i as Do, S as us, a as sd, f as Jn, b as _r, c as od, A as ad, d as tn, e as No, E as ld, g as sn, h as cd, j as dd, k as ud, l as ir, m as Ro, u as fd, G as hd, n as md, o as fs, p as pd, q as Ao, r as gd, B as To, X as Oo, Y as fi, s as vd, t as Mo, v as yd, w as bd, x as xd, y as wd, z as _d, D as Cd, F as Ed, H as Sd, I as hs, J as kd, K as Dd, M as Nd, N as Rd, O as Ad, P as Td, Q as Od, R as Md, V as Ld, T as Fd, U as hi, W as Lo, Z as Id, _ as Pd, $ as zd, a0 as Bd, a1 as Fo, a2 as Oi, a3 as Io, a4 as Po, a5 as Vd, a6 as Hd, a7 as jd, a8 as $d } from "./DataCollectionStorageProvider-CKidJaxj.js";
8
- import { ae as hb, a9 as mb, ac as pb, ad as gb, aa as vb, ab as yb, af as bb, ag as xb, ah as wb, ai as _b } from "./DataCollectionStorageProvider-CKidJaxj.js";
9
- import { A as Eb, F as Sb, c as kb, b as Db, a as Nb, o as Rb, u as Ab } from "./F0HILActionConfirmation-Bh7NgkJw.js";
7
+ import { L as ko, C as id, i as Do, S as us, a as sd, f as Jn, b as _r, c as od, A as ad, d as tn, e as No, E as ld, g as sn, h as cd, j as dd, k as ud, l as ir, m as Ro, u as fd, G as hd, n as md, o as fs, p as pd, q as Ao, r as gd, B as To, X as Oo, Y as fi, s as vd, t as Mo, v as yd, w as bd, x as xd, y as wd, z as _d, D as Cd, F as Ed, H as Sd, I as hs, J as kd, K as Dd, M as Nd, N as Rd, O as Ad, P as Td, Q as Od, R as Md, V as Ld, T as Fd, U as hi, W as Lo, Z as Id, _ as Pd, $ as zd, a0 as Bd, a1 as Fo, a2 as Oi, a3 as Io, a4 as Po, a5 as Vd, a6 as Hd, a7 as jd, a8 as $d } from "./DataCollectionStorageProvider-Dhth1f1i.js";
8
+ import { ae as hb, a9 as mb, ac as pb, ad as gb, aa as vb, ab as yb, af as bb, ag as xb, ah as wb, ai as _b } from "./DataCollectionStorageProvider-Dhth1f1i.js";
9
+ import { A as Eb, F as Sb, c as kb, b as Db, a as Nb, o as Rb, u as Ab } from "./F0HILActionConfirmation-BirXmMOJ.js";
10
10
  import { defaultTranslations as Ob } from "./i18n-provider-defaults.js";
11
11
  import './f0.css';const Wd = {
12
12
  xs: 1,
@@ -16536,7 +16536,7 @@ const bg = () => {
16536
16536
  goPrevious: g.goPrevious,
16537
16537
  steps: r,
16538
16538
  allowStepSkipping: h,
16539
- children: /* @__PURE__ */ W("div", { className: "flex min-h-[58vh] flex-1 flex-row", children: [
16539
+ children: /* @__PURE__ */ W("div", { className: "flex h-[58vh] flex-1 flex-row", children: [
16540
16540
  /* @__PURE__ */ f("div", { className: "w-1/3 shrink-0 overflow-y-auto border-x-0 border-b-0 border-r border-t-0 border-dashed border-f1-border-secondary p-2", children: /* @__PURE__ */ f(vg, {}) }),
16541
16541
  /* @__PURE__ */ f("div", { className: "flex-1 overflow-y-auto px-8", children: e({
16542
16542
  currentStep: g.currentStep,
@@ -16739,7 +16739,7 @@ function _g({
16739
16739
  data: ee,
16740
16740
  fullData: { ...R.current }
16741
16741
  });
16742
- return Pe.current = $, $.success && we($.message), $;
16742
+ return Pe.current = $, $.success && $.message && we($.message), $;
16743
16743
  },
16744
16744
  [_, we]
16745
16745
  ), me = K(() => {
@@ -16791,7 +16791,7 @@ function _g({
16791
16791
  w
16792
16792
  );
16793
16793
  return /* @__PURE__ */ W(Yt, { children: [
16794
- /* @__PURE__ */ f("div", { className: "flex flex-col gap-6", children: ee.map(($) => {
16794
+ /* @__PURE__ */ f("div", { className: "flex flex-col gap-6 pb-5", children: ee.map(($) => {
16795
16795
  const De = y[$];
16796
16796
  if (!De) return null;
16797
16797
  const Te = g?.[$], He = R.current[$], Ne = A?.[$];
@@ -229,6 +229,7 @@ export declare const defaultTranslations: {
229
229
  };
230
230
  readonly visualizations: {
231
231
  readonly table: "Table view";
232
+ readonly editableTable: "Editable table view";
232
233
  readonly card: "Card view";
233
234
  readonly list: "List view";
234
235
  readonly kanban: "Kanban view";
@@ -244,6 +245,11 @@ export declare const defaultTranslations: {
244
245
  readonly hideAllColumns: "Hide all";
245
246
  };
246
247
  };
248
+ readonly editableTable: {
249
+ readonly errors: {
250
+ readonly saveFailed: "Save failed";
251
+ };
252
+ };
247
253
  readonly itemsCount: "items";
248
254
  readonly emptyStates: {
249
255
  readonly noData: {
@@ -646,9 +652,8 @@ declare module "@tiptap/core" {
646
652
 
647
653
  declare module "@tiptap/core" {
648
654
  interface Commands<ReturnType> {
649
- enhanceHighlight: {
650
- setEnhanceHighlight: (from: number, to: number) => ReturnType;
651
- clearEnhanceHighlight: () => ReturnType;
655
+ moodTracker: {
656
+ insertMoodTracker: (data: MoodTrackerData) => ReturnType;
652
657
  };
653
658
  }
654
659
  }
@@ -656,8 +661,9 @@ declare module "@tiptap/core" {
656
661
 
657
662
  declare module "@tiptap/core" {
658
663
  interface Commands<ReturnType> {
659
- moodTracker: {
660
- insertMoodTracker: (data: MoodTrackerData) => ReturnType;
664
+ enhanceHighlight: {
665
+ setEnhanceHighlight: (from: number, to: number) => ReturnType;
666
+ clearEnhanceHighlight: () => ReturnType;
661
667
  };
662
668
  }
663
669
  }
@@ -229,6 +229,7 @@ const e = {
229
229
  },
230
230
  visualizations: {
231
231
  table: "Table view",
232
+ editableTable: "Editable table view",
232
233
  card: "Card view",
233
234
  list: "List view",
234
235
  kanban: "Kanban view",
@@ -244,6 +245,11 @@ const e = {
244
245
  hideAllColumns: "Hide all"
245
246
  }
246
247
  },
248
+ editableTable: {
249
+ errors: {
250
+ saveFailed: "Save failed"
251
+ }
252
+ },
247
253
  itemsCount: "items",
248
254
  emptyStates: {
249
255
  noData: {