@metaphor-cloud/ui 0.19.0 → 0.20.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.
@@ -9002,14 +9002,14 @@ function ky({ className: e, ref: t, ...n }) {
9002
9002
  }
9003
9003
  //#endregion
9004
9004
  //#region src/components/Table.tsx
9005
- function Ay({ className: e, ref: t, tableLayout: n, ...r }) {
9005
+ function Ay({ className: e, containerClassName: t, ref: n, tableLayout: r, ...i }) {
9006
9006
  return /* @__PURE__ */ l("div", {
9007
- className: "relative w-full overflow-auto",
9007
+ className: W("relative w-full overflow-auto", t),
9008
9008
  children: /* @__PURE__ */ l("table", {
9009
- ref: t,
9009
+ ref: n,
9010
9010
  className: W("w-full caption-bottom text-sm", e),
9011
- style: n ? { tableLayout: n } : void 0,
9012
- ...r
9011
+ style: r ? { tableLayout: r } : void 0,
9012
+ ...i
9013
9013
  })
9014
9014
  });
9015
9015
  }
@@ -10795,64 +10795,64 @@ function Qx({ children: e, className: t, ...n }) {
10795
10795
  });
10796
10796
  }
10797
10797
  Qx.displayName = "DataTableEmpty";
10798
- function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStateChange: o, defaultSort: s, manualSorting: c = !1, globalFilter: d = !1, manualFiltering: f = !1, pageSize: p = 20, manualPagination: m = !1, onRowClick: h, renderRowLink: g, rowClassName: _, getRowId: v, selectable: y = !1, onSelectionChange: b, onColumnResize: x, className: S, ref: C }) {
10799
- let [w, T] = e.useState(s ?? null), [E, D] = e.useState(""), [O, k] = e.useState({}), [A, j] = e.useState(1), [M, N] = e.useState(/* @__PURE__ */ new Set()), P = e.useMemo(() => t.filter((e) => !e.hidden), [t]), F = e.useRef(null), I = e.useCallback((e) => {
10800
- F.current = e, typeof C == "function" ? C(e) : C && typeof C == "object" && (C.current = e);
10801
- }, [C]), { hiddenColumnIds: ee } = qx({
10802
- columns: P,
10803
- containerRef: F,
10798
+ function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStateChange: o, defaultSort: s, manualSorting: c = !1, globalFilter: d = !1, manualFiltering: f = !1, pageSize: p = 20, manualPagination: m = !1, onRowClick: h, renderRowLink: g, rowClassName: _, getRowId: v, selectable: y = !1, onSelectionChange: b, onColumnResize: x, fullHeight: S = !1, className: C, ref: w }) {
10799
+ let [T, E] = e.useState(s ?? null), [D, O] = e.useState(""), [k, A] = e.useState({}), [j, M] = e.useState(1), [N, P] = e.useState(/* @__PURE__ */ new Set()), F = e.useMemo(() => t.filter((e) => !e.hidden), [t]), I = e.useRef(null), ee = e.useCallback((e) => {
10800
+ I.current = e, typeof w == "function" ? w(e) : w && typeof w == "object" && (w.current = e);
10801
+ }, [w]), { hiddenColumnIds: te } = qx({
10802
+ columns: F,
10803
+ containerRef: I,
10804
10804
  hasSelectionColumn: y
10805
- }), te = e.useMemo(() => ee.size === 0 ? P : P.filter((e) => !ee.has(e.id)), [P, ee]), ne = e.useRef(null), re = te.some((e) => e.resizable), { columnWidths: L, resizingColumnId: R, startResize: ie } = Ux({
10806
- columns: te,
10805
+ }), ne = e.useMemo(() => te.size === 0 ? F : F.filter((e) => !te.has(e.id)), [F, te]), re = e.useRef(null), L = ne.some((e) => e.resizable), { columnWidths: R, resizingColumnId: ie, startResize: ae } = Ux({
10806
+ columns: ne,
10807
10807
  hasSelectionColumn: y,
10808
10808
  onColumnResize: x,
10809
- tableRef: ne
10810
- }), ae = e.useRef(o);
10809
+ tableRef: re
10810
+ }), z = e.useRef(o);
10811
10811
  e.useLayoutEffect(() => {
10812
- ae.current = o;
10812
+ z.current = o;
10813
10813
  });
10814
- let z = e.useRef(!1);
10814
+ let oe = e.useRef(!1);
10815
10815
  e.useEffect(() => {
10816
- if (!z.current) {
10817
- z.current = !0;
10816
+ if (!oe.current) {
10817
+ oe.current = !0;
10818
10818
  return;
10819
10819
  }
10820
- ae.current?.({
10821
- sort: w,
10822
- globalFilter: E,
10823
- columnFilters: O,
10824
- page: A,
10820
+ z.current?.({
10821
+ sort: T,
10822
+ globalFilter: D,
10823
+ columnFilters: k,
10824
+ page: j,
10825
10825
  pageSize: p
10826
10826
  });
10827
10827
  }, [
10828
- w,
10829
- E,
10830
- O,
10831
- A,
10828
+ T,
10829
+ D,
10830
+ k,
10831
+ j,
10832
10832
  p
10833
10833
  ]);
10834
- let oe = e.useCallback((e) => {
10835
- T((t) => !t || t.id !== e ? {
10834
+ let B = e.useCallback((e) => {
10835
+ E((t) => !t || t.id !== e ? {
10836
10836
  id: e,
10837
10837
  desc: !1
10838
10838
  } : {
10839
10839
  id: e,
10840
10840
  desc: !t.desc
10841
- }), j(1);
10842
- }, []), B = e.useCallback((e) => {
10843
- D(e), j(1);
10844
- }, []), se = e.useCallback((e, t) => {
10845
- k((n) => ({
10841
+ }), M(1);
10842
+ }, []), se = e.useCallback((e) => {
10843
+ O(e), M(1);
10844
+ }, []), ce = e.useCallback((e, t) => {
10845
+ A((n) => ({
10846
10846
  ...n,
10847
10847
  [e]: t
10848
- })), j(1);
10849
- }, []), ce = e.useCallback((e) => {
10850
- k((t) => {
10848
+ })), M(1);
10849
+ }, []), le = e.useCallback((e) => {
10850
+ A((t) => {
10851
10851
  let n = { ...t };
10852
10852
  return delete n[e], n;
10853
- }), j(1);
10854
- }, []), le = e.useCallback((e, t) => {
10855
- k((n) => {
10853
+ }), M(1);
10854
+ }, []), ue = e.useCallback((e, t) => {
10855
+ A((n) => {
10856
10856
  let r = Array.isArray(n[e]) ? n[e] : [], i = r.includes(t) ? r.filter((e) => e !== t) : [...r, t];
10857
10857
  if (i.length === 0) {
10858
10858
  let { [e]: t, ...r } = n;
@@ -10862,11 +10862,11 @@ function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStat
10862
10862
  ...n,
10863
10863
  [e]: i
10864
10864
  };
10865
- }), j(1);
10866
- }, []), ue = e.useMemo(() => {
10865
+ }), M(1);
10866
+ }, []), de = e.useMemo(() => {
10867
10867
  let e = [...n];
10868
- if (!f && E) {
10869
- let n = E.toLowerCase();
10868
+ if (!f && D) {
10869
+ let n = D.toLowerCase();
10870
10870
  e = e.filter((e) => t.some((t) => {
10871
10871
  if (!t.accessorKey) return !1;
10872
10872
  let r = e[t.accessorKey];
@@ -10874,7 +10874,7 @@ function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStat
10874
10874
  }));
10875
10875
  }
10876
10876
  if (!f) {
10877
- let n = Object.entries(O);
10877
+ let n = Object.entries(k);
10878
10878
  for (let [r, i] of n) {
10879
10879
  let n = t.find((e) => e.id === r);
10880
10880
  n && (e = e.filter((e) => {
@@ -10885,137 +10885,138 @@ function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStat
10885
10885
  }));
10886
10886
  }
10887
10887
  }
10888
- if (!c && w) {
10889
- let n = t.find((e) => e.id === w.id);
10888
+ if (!c && T) {
10889
+ let n = t.find((e) => e.id === T.id);
10890
10890
  n && e.sort((e, t) => {
10891
10891
  let r;
10892
- return r = n.sortFn ? n.sortFn(e, t) : n.accessorKey ? String(e[n.accessorKey] ?? "").localeCompare(String(t[n.accessorKey] ?? "")) : 0, w.desc ? -r : r;
10892
+ return r = n.sortFn ? n.sortFn(e, t) : n.accessorKey ? String(e[n.accessorKey] ?? "").localeCompare(String(t[n.accessorKey] ?? "")) : 0, T.desc ? -r : r;
10893
10893
  });
10894
10894
  }
10895
10895
  return e;
10896
10896
  }, [
10897
10897
  n,
10898
10898
  t,
10899
- w,
10900
- E,
10901
- O,
10899
+ T,
10900
+ D,
10901
+ k,
10902
10902
  c,
10903
10903
  f
10904
- ]), de = m ? a ?? n.length : ue.length, fe = p > 0 ? Math.max(1, Math.ceil(de / p)) : 1, pe = e.useMemo(() => {
10905
- if (p <= 0 || m) return ue;
10906
- let e = (A - 1) * p;
10907
- return ue.slice(e, e + p);
10904
+ ]), fe = m ? a ?? n.length : de.length, pe = p > 0 ? Math.max(1, Math.ceil(fe / p)) : 1, me = e.useMemo(() => {
10905
+ if (p <= 0 || m) return de;
10906
+ let e = (j - 1) * p;
10907
+ return de.slice(e, e + p);
10908
10908
  }, [
10909
- ue,
10910
- A,
10909
+ de,
10910
+ j,
10911
10911
  p,
10912
10912
  m
10913
- ]), me = e.useCallback((e) => {
10914
- j(e);
10915
- }, []), he = e.useCallback((e) => v ? v(e) : String(e.id ?? ""), [v]), V = e.useCallback((e) => {
10916
- let t = he(e);
10917
- N((e) => {
10913
+ ]), he = e.useCallback((e) => {
10914
+ M(e);
10915
+ }, []), V = e.useCallback((e) => v ? v(e) : String(e.id ?? ""), [v]), ge = e.useCallback((e) => {
10916
+ let t = V(e);
10917
+ P((e) => {
10918
10918
  let r = new Set(e);
10919
10919
  r.has(t) ? r.delete(t) : r.add(t);
10920
- let i = n.filter((e) => r.has(he(e)));
10920
+ let i = n.filter((e) => r.has(V(e)));
10921
10921
  return b?.(i), r;
10922
10922
  });
10923
10923
  }, [
10924
10924
  n,
10925
- he,
10925
+ V,
10926
10926
  b
10927
- ]), ge = e.useCallback(() => {
10928
- N((e) => {
10929
- if (e.size === pe.length) return b?.([]), /* @__PURE__ */ new Set();
10930
- let t = new Set(pe.map((e) => he(e)));
10931
- return b?.(pe), t;
10927
+ ]), _e = e.useCallback(() => {
10928
+ P((e) => {
10929
+ if (e.size === me.length) return b?.([]), /* @__PURE__ */ new Set();
10930
+ let t = new Set(me.map((e) => V(e)));
10931
+ return b?.(me), t;
10932
10932
  });
10933
10933
  }, [
10934
- pe,
10935
- he,
10934
+ me,
10935
+ V,
10936
10936
  b
10937
- ]), _e = e.useCallback((e) => M.has(he(e)), [M, he]), ve = null, ye = null;
10937
+ ]), ve = e.useCallback((e) => N.has(V(e)), [N, V]), ye = null, be = null;
10938
10938
  e.Children.forEach(r, (t) => {
10939
- e.isValidElement(t) && (t.type?.displayName === "DataTableToolbar" ? ve = t : t.type?.displayName === "DataTableEmpty" && (ye = t));
10939
+ e.isValidElement(t) && (t.type?.displayName === "DataTableToolbar" ? ye = t : t.type?.displayName === "DataTableEmpty" && (be = t));
10940
10940
  });
10941
- let be = (e) => !w || w.id !== e ? "↕" : w.desc ? "↓" : "↑", xe = pe.length === 0 && !i;
10941
+ let xe = (e) => !T || T.id !== e ? "↕" : T.desc ? "↓" : "↑", Se = me.length === 0 && !i;
10942
10942
  return /* @__PURE__ */ u("div", {
10943
- ref: I,
10944
- className: W("space-y-4", S),
10943
+ ref: ee,
10944
+ className: W(S ? "flex h-full min-h-0 flex-col gap-4" : "space-y-4", C),
10945
10945
  children: [
10946
- (d || ve) && /* @__PURE__ */ u("div", {
10947
- className: "flex items-center gap-4",
10946
+ (d || ye) && /* @__PURE__ */ u("div", {
10947
+ className: "flex shrink-0 items-center gap-4",
10948
10948
  children: [d && /* @__PURE__ */ l(Zt, {
10949
10949
  placeholder: "Search...",
10950
- value: E,
10951
- onChange: (e) => B(e.target.value),
10950
+ value: D,
10951
+ onChange: (e) => se(e.target.value),
10952
10952
  className: "max-w-sm"
10953
10953
  }), /* @__PURE__ */ l("div", {
10954
10954
  className: "ml-auto flex items-center gap-2",
10955
- children: ve
10955
+ children: ye
10956
10956
  })]
10957
10957
  }),
10958
10958
  /* @__PURE__ */ u(Ay, {
10959
- tableLayout: re ? "fixed" : void 0,
10960
- ref: ne,
10959
+ tableLayout: L ? "fixed" : void 0,
10960
+ ref: re,
10961
+ containerClassName: S ? "flex-1 min-h-0 [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10 [&_thead_th]:bg-bg-card" : void 0,
10961
10962
  children: [
10962
- re && /* @__PURE__ */ u("colgroup", { children: [y && /* @__PURE__ */ l("col", { style: { width: 40 } }), te.map((e) => {
10963
- let t = L.get(e.id);
10963
+ L && /* @__PURE__ */ u("colgroup", { children: [y && /* @__PURE__ */ l("col", { style: { width: 40 } }), ne.map((e) => {
10964
+ let t = R.get(e.id);
10964
10965
  return /* @__PURE__ */ l("col", { style: t == null ? void 0 : { width: t } }, e.id);
10965
10966
  })] }),
10966
10967
  /* @__PURE__ */ l(jy, { children: /* @__PURE__ */ u(Py, { children: [y && /* @__PURE__ */ l(Fy, {
10967
10968
  className: "w-10",
10968
10969
  children: /* @__PURE__ */ l(Op, {
10969
- checked: pe.length > 0 && M.size === pe.length,
10970
- onCheckedChange: ge,
10970
+ checked: me.length > 0 && N.size === me.length,
10971
+ onCheckedChange: _e,
10971
10972
  "aria-label": "Select all"
10972
10973
  })
10973
- }), te.map((e) => /* @__PURE__ */ u(Fy, {
10974
- className: W(e.sortable && "cursor-pointer select-none", re && "relative", e.className),
10975
- style: !re && e.width ? { width: e.width } : void 0,
10976
- onClick: e.sortable ? () => oe(e.id) : void 0,
10974
+ }), ne.map((e) => /* @__PURE__ */ u(Fy, {
10975
+ className: W(e.sortable && "cursor-pointer select-none", L && "relative", e.className),
10976
+ style: !L && e.width ? { width: e.width } : void 0,
10977
+ onClick: e.sortable ? () => B(e.id) : void 0,
10977
10978
  children: [/* @__PURE__ */ u("span", {
10978
10979
  className: "inline-flex items-center",
10979
10980
  children: [
10980
- typeof e.header == "function" ? e.header(w?.id === e.id ? w : null) : /* @__PURE__ */ l("span", { children: e.header }),
10981
+ typeof e.header == "function" ? e.header(T?.id === e.id ? T : null) : /* @__PURE__ */ l("span", { children: e.header }),
10981
10982
  e.sortable && typeof e.header != "function" && /* @__PURE__ */ l("span", {
10982
10983
  "aria-hidden": !0,
10983
10984
  className: "ml-1",
10984
- children: be(e.id)
10985
+ children: xe(e.id)
10985
10986
  }),
10986
10987
  e.filterable && /* @__PURE__ */ l(Xx, {
10987
10988
  column: e,
10988
10989
  data: n,
10989
- value: O[e.id],
10990
- onChange: se,
10991
- onClear: ce,
10992
- onToggle: le
10990
+ value: k[e.id],
10991
+ onChange: ce,
10992
+ onClear: le,
10993
+ onToggle: ue
10993
10994
  })
10994
10995
  ]
10995
10996
  }), e.resizable && /* @__PURE__ */ l("div", {
10996
10997
  role: "separator",
10997
10998
  "aria-orientation": "vertical",
10998
10999
  onMouseDown: (t) => {
10999
- t.preventDefault(), t.stopPropagation(), ie(e.id, t);
11000
+ t.preventDefault(), t.stopPropagation(), ae(e.id, t);
11000
11001
  },
11001
- className: W("absolute top-0 -right-px z-10 h-full w-2 cursor-col-resize", "after:absolute after:inset-y-0 after:left-1/2 after:-translate-x-1/2 after:w-0.5", R === e.id ? "after:bg-accent" : "after:bg-transparent hover:after:bg-accent/20", "after:transition-colors")
11002
+ className: W("absolute top-0 -right-px z-10 h-full w-2 cursor-col-resize", "after:absolute after:inset-y-0 after:left-1/2 after:-translate-x-1/2 after:w-0.5", ie === e.id ? "after:bg-accent" : "after:bg-transparent hover:after:bg-accent/20", "after:transition-colors")
11002
11003
  })]
11003
11004
  }, e.id))] }) }),
11004
- /* @__PURE__ */ l(My, { children: xe ? /* @__PURE__ */ l(Py, { children: /* @__PURE__ */ l(Iy, {
11005
- colSpan: te.length + +!!y,
11005
+ /* @__PURE__ */ l(My, { children: Se ? /* @__PURE__ */ l(Py, { children: /* @__PURE__ */ l(Iy, {
11006
+ colSpan: ne.length + +!!y,
11006
11007
  className: "h-24",
11007
- children: ye ?? /* @__PURE__ */ l(Ax, { title: "No results" })
11008
- }) }) : pe.map((e, t) => {
11009
- let n = m ? t : (A - 1) * p + t, r = g?.(e), i = y && /* @__PURE__ */ l(Iy, {
11008
+ children: be ?? /* @__PURE__ */ l(Ax, { title: "No results" })
11009
+ }) }) : me.map((e, t) => {
11010
+ let n = m ? t : (j - 1) * p + t, r = g?.(e), i = y && /* @__PURE__ */ l(Iy, {
11010
11011
  className: "w-10",
11011
11012
  onClick: (e) => e.stopPropagation(),
11012
11013
  children: /* @__PURE__ */ l(Op, {
11013
- checked: _e(e),
11014
- onCheckedChange: () => V(e),
11014
+ checked: ve(e),
11015
+ onCheckedChange: () => ge(e),
11015
11016
  "aria-label": "Select row"
11016
11017
  })
11017
- }), a = te.map((t) => /* @__PURE__ */ l(Iy, {
11018
- className: W(t.className, re && "overflow-hidden text-ellipsis"),
11018
+ }), a = ne.map((t) => /* @__PURE__ */ l(Iy, {
11019
+ className: W(t.className, L && "overflow-hidden text-ellipsis"),
11019
11020
  children: r ? /* @__PURE__ */ l("a", {
11020
11021
  href: r.href,
11021
11022
  className: "contents",
@@ -11025,18 +11026,21 @@ function $x({ columns: t, data: n, children: r, loading: i, totalRows: a, onStat
11025
11026
  return /* @__PURE__ */ u(Py, {
11026
11027
  className: W((h || r) && "cursor-pointer", _?.(e, n)),
11027
11028
  onClick: h ? () => h(e, n) : void 0,
11028
- "data-state": _e(e) ? "selected" : void 0,
11029
+ "data-state": ve(e) ? "selected" : void 0,
11029
11030
  children: [i, a]
11030
11031
  }, v ? v(e) : t);
11031
11032
  }) })
11032
11033
  ]
11033
11034
  }),
11034
- p > 0 && fe > 1 && /* @__PURE__ */ l(jx, {
11035
- page: A,
11036
- pageSize: p,
11037
- totalItems: de,
11038
- totalPages: fe,
11039
- onPageChange: me
11035
+ p > 0 && pe > 1 && /* @__PURE__ */ l("div", {
11036
+ className: S ? "shrink-0" : void 0,
11037
+ children: /* @__PURE__ */ l(jx, {
11038
+ page: j,
11039
+ pageSize: p,
11040
+ totalItems: fe,
11041
+ totalPages: pe,
11042
+ onPageChange: he
11043
+ })
11040
11044
  })
11041
11045
  ]
11042
11046
  });