@dxos/react-ui-table 0.3.9-main.cab5453 → 0.3.9-main.cdfefb1

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,45 +1,42 @@
1
1
  // packages/ui/react-ui-table/src/components/ColumnMenu.tsx
2
2
  import { Check, CaretDown, Trash, X } from "@phosphor-icons/react";
3
3
  import React, { useRef, useState } from "react";
4
- import { Button, DensityProvider, Input, Popover, Select, Separator } from "@dxos/react-ui";
4
+ import { Button, DensityProvider, Input, Popover, Select, Separator, useTranslation } from "@dxos/react-ui";
5
5
  import { getSize, mx } from "@dxos/react-ui-theme";
6
6
  import { safeParseInt } from "@dxos/util";
7
7
 
8
- // packages/ui/react-ui-table/src/schema.ts
9
- var columnTypes = /* @__PURE__ */ new Map([
10
- [
11
- "string",
12
- "Text"
13
- ],
14
- [
15
- "boolean",
16
- "Checkbox"
17
- ],
18
- [
19
- "number",
20
- "Number"
21
- ],
22
- [
23
- "date",
24
- "Date"
25
- ],
26
- [
27
- "ref",
28
- "Reference"
29
- ]
30
- ]);
8
+ // packages/ui/react-ui-table/src/translations.ts
9
+ var translationKey = "table";
10
+ var translations_default = [
11
+ {
12
+ "en-US": {
13
+ [translationKey]: {
14
+ "no selection label": "\xA0",
15
+ "number column type label": "Number",
16
+ "boolean column type label": "Toggle",
17
+ "date column type label": "Date",
18
+ "string column type label": "Text",
19
+ "ref column type label": "Reference",
20
+ "digits label": "Decimal places",
21
+ "save label": "Save",
22
+ "delete label": "Delete",
23
+ "column label label": "Label",
24
+ "property key label": "Property",
25
+ "column type label": "Type"
26
+ }
27
+ }
28
+ }
29
+ ];
31
30
 
32
31
  // packages/ui/react-ui-table/src/components/ColumnMenu.tsx
33
32
  var ColumnMenu = ({ column, ...props }) => {
34
33
  const title = column.label?.length ? column.label : column.id;
35
34
  return /* @__PURE__ */ React.createElement("div", {
36
- className: "flex grow items-center overflow-hidden"
35
+ className: "flex items-center gap-2"
37
36
  }, /* @__PURE__ */ React.createElement("div", {
38
- className: "truncate",
37
+ className: "flex-1 min-is-0 truncate",
39
38
  title
40
39
  }, title), /* @__PURE__ */ React.createElement("div", {
41
- className: "grow"
42
- }), /* @__PURE__ */ React.createElement("div", {
43
40
  className: "flex shrink-0"
44
41
  }, /* @__PURE__ */ React.createElement(ColumnPanel, {
45
42
  ...props,
@@ -59,6 +56,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
59
56
  const [label, setLabel] = useState(column.label);
60
57
  const [digits, setDigits] = useState(String(column.digits ?? "0"));
61
58
  const propRef = useRef(null);
59
+ const { t } = useTranslation(translationKey);
62
60
  const handleCancel = () => {
63
61
  setProp(column.id);
64
62
  setOpen(false);
@@ -93,7 +91,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
93
91
  asChild: true
94
92
  }, /* @__PURE__ */ React.createElement(Button, {
95
93
  variant: "ghost",
96
- classNames: "p-0"
94
+ classNames: "p-1"
97
95
  }, /* @__PURE__ */ React.createElement(CaretDown, {
98
96
  className: getSize(4)
99
97
  }))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, null, /* @__PURE__ */ React.createElement(Popover.Viewport, {
@@ -104,14 +102,14 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
104
102
  className: "flex flex-col gap-1"
105
103
  }, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
106
104
  classNames: "mbe-1"
107
- }, "Label"), /* @__PURE__ */ React.createElement(Input.TextInput, {
105
+ }, t("column label label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
108
106
  placeholder: "Column label",
109
107
  value: label ?? "",
110
108
  onChange: (event) => setLabel(event.target.value),
111
109
  autoFocus: true
112
110
  })), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
113
111
  classNames: "mbe-1 mbs-3"
114
- }, "Property"), /* @__PURE__ */ React.createElement(Input.TextInput, {
112
+ }, t("property key label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
115
113
  ref: propRef,
116
114
  placeholder: "Property key",
117
115
  // TODO(burdon): Provide hooks for value normalization, ENTER, ESC, etc.
@@ -119,18 +117,23 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
119
117
  onChange: (event) => setProp(event.target.value.replace(/[^\w_]/g, ""))
120
118
  })), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
121
119
  classNames: "mbe-1 mbs-3"
122
- }, "Type"), /* @__PURE__ */ React.createElement(Select.Root, {
120
+ }, t("column type label")), /* @__PURE__ */ React.createElement(Select.Root, {
123
121
  value: type,
124
122
  onValueChange: setType
125
123
  }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
126
124
  placeholder: "Type",
127
125
  classNames: "is-full"
128
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, Array.from(columnTypes.entries()).map(([type2, label2]) => /* @__PURE__ */ React.createElement(Select.Option, {
126
+ }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, [
127
+ "number",
128
+ "boolean",
129
+ "string",
130
+ "ref"
131
+ ].map((type2) => /* @__PURE__ */ React.createElement(Select.Option, {
129
132
  key: type2,
130
133
  value: type2
131
- }, label2)))))))), type === "number" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
134
+ }, t(`${type2} column type label`))))))))), type === "number" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
132
135
  classNames: "mbe-1 mbs-3"
133
- }, "Decimal places"), /* @__PURE__ */ React.createElement(Input.TextInput, {
136
+ }, t("digits label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
134
137
  value: digits ?? "",
135
138
  onChange: (event) => setDigits(event.target.value)
136
139
  })))), type === "ref" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
@@ -141,7 +144,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
141
144
  }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
142
145
  placeholder: "Table",
143
146
  classNames: "is-full"
144
- }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, tableDefs.filter((t) => t.id !== tableDef.id).map(({ id, name }) => /* @__PURE__ */ React.createElement(Select.Option, {
147
+ }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, tableDefs.filter((t2) => t2.id !== tableDef.id).map(({ id, name }) => /* @__PURE__ */ React.createElement(Select.Option, {
145
148
  key: id,
146
149
  value: id
147
150
  }, name ?? id))))))), refTable && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
@@ -163,21 +166,23 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
163
166
  variant: "primary",
164
167
  classNames: "is-full flex gap-2",
165
168
  onClick: handleSave
166
- }, /* @__PURE__ */ React.createElement("span", null, "Save"), /* @__PURE__ */ React.createElement("div", {
169
+ }, /* @__PURE__ */ React.createElement("span", null, t("save label")), /* @__PURE__ */ React.createElement("div", {
167
170
  className: "grow"
168
171
  }), /* @__PURE__ */ React.createElement(Check, {
169
172
  className: getSize(5)
170
173
  })), /* @__PURE__ */ React.createElement(Button, {
171
174
  classNames: "is-full flex gap-2",
172
175
  onClick: handleCancel
173
- }, /* @__PURE__ */ React.createElement("span", null, "Cancel"), /* @__PURE__ */ React.createElement("div", {
176
+ }, /* @__PURE__ */ React.createElement("span", null, t("cancel label", {
177
+ ns: "os"
178
+ })), /* @__PURE__ */ React.createElement("div", {
174
179
  className: "grow"
175
180
  }), /* @__PURE__ */ React.createElement(X, {
176
181
  className: getSize(5)
177
182
  })), /* @__PURE__ */ React.createElement(Button, {
178
183
  classNames: "is-full flex gap-2",
179
184
  onClick: () => onDelete?.(column.id)
180
- }, /* @__PURE__ */ React.createElement("span", null, "Delete"), /* @__PURE__ */ React.createElement("div", {
185
+ }, /* @__PURE__ */ React.createElement("span", null, t("delete label")), /* @__PURE__ */ React.createElement("div", {
181
186
  className: "grow"
182
187
  }), /* @__PURE__ */ React.createElement(Trash, {
183
188
  className: getSize(5)
@@ -211,7 +216,7 @@ var headPadding = "pli-2 plb-1.5";
211
216
  var gridCellFocusRing = "focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400";
212
217
  var tableRoot = ({ fullWidth }, ...etc) => mx2("table-fixed", fullWidth && "is-full", ...etc);
213
218
  var groupTh = (_props, ...etc) => mx2("text-start font-medium", flushPadding, ...etc);
214
- var theadRoot = ({ header }, ...etc) => mx2(header ? "sticky block-start-0 z-10" : "collapse", header && fixedSurface, ...etc);
219
+ var theadRoot = ({ header, stickyHeader }, ...etc) => mx2(header ? stickyHeader && "sticky block-start-[--sticky-top] z-[1]" : "collapse", header && fixedSurface, ...etc);
215
220
  var theadTr = (_props, ...etc) => mx2("group", ...etc);
216
221
  var theadTh = ({ border }, ...etc) => mx2("relative text-start font-medium select-none truncate", headPadding, border && "border", border && groupBorder, ...etc);
217
222
  var theadResizeRoot = (_props, ...etc) => mx2("absolute top-0 pis-1 h-full z-[10] w-[7px] -right-[5px] cursor-col-resize select-none touch-none opacity-20 hover:opacity-100", ...etc);
@@ -488,23 +493,9 @@ var Table = (props) => {
488
493
  // packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx
489
494
  import { CaretDown as CaretDown2 } from "@phosphor-icons/react";
490
495
  import React7, { useCallback as useCallback2, useState as useState3 } from "react";
491
- import { Popover as Popover2, useTranslation } from "@dxos/react-ui";
496
+ import { Popover as Popover2, useTranslation as useTranslation2 } from "@dxos/react-ui";
492
497
  import { PopoverCombobox } from "@dxos/react-ui-searchlist";
493
498
  import { descriptionText, getSize as getSize2, mx as mx4, staticPlaceholderText } from "@dxos/react-ui-theme";
494
-
495
- // packages/ui/react-ui-table/src/translations.ts
496
- var translationKey = "table";
497
- var translations_default = [
498
- {
499
- "en-US": {
500
- [translationKey]: {
501
- "no selection label": "\xA0"
502
- }
503
- }
504
- }
505
- ];
506
-
507
- // packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx
508
499
  var initialItems = (model, value) => value ? {
509
500
  [model.getId(value)]: {
510
501
  label: model.getText(value),
@@ -512,7 +503,7 @@ var initialItems = (model, value) => value ? {
512
503
  }
513
504
  } : {};
514
505
  var CellCombobox = ({ model, value, onValueChange }) => {
515
- const { t } = useTranslation(translationKey);
506
+ const { t } = useTranslation2(translationKey);
516
507
  const [items, setItems] = useState3(initialItems(model, value));
517
508
  const [loading, setLoading] = useState3(false);
518
509
  const [searchInputValue, setSearchInputValue] = useState3("");
@@ -569,11 +560,12 @@ var CellCombobox = ({ model, value, onValueChange }) => {
569
560
  };
570
561
 
571
562
  // packages/ui/react-ui-table/src/helpers.tsx
563
+ import { useFocusFinders } from "@fluentui/react-tabster";
572
564
  import { Check as Check2, ClipboardText, X as X2 } from "@phosphor-icons/react";
573
565
  import { createColumnHelper } from "@tanstack/react-table";
574
566
  import format from "date-fns/format";
575
567
  import formatDistanceToNow from "date-fns/formatDistanceToNow";
576
- import React8, { useRef as useRef2, useState as useState4 } from "react";
568
+ import React8, { useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
577
569
  import { Input as Input2, Tooltip } from "@dxos/react-ui";
578
570
  import { getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
579
571
  var createColumnBuilder = () => ({
@@ -619,40 +611,55 @@ var StringBuilderCell = (cellContext) => {
619
611
  onKeyDown: (event) => event.key === "Enter" && handleSave() || event.key === "Escape" && handleCancel()
620
612
  }));
621
613
  };
614
+ var parseNumber = (text) => text?.trim().length ? Number(text) : NaN;
615
+ var displayNumber = (value, digits) => value || value === 0 ? value.toLocaleString(void 0, {
616
+ minimumFractionDigits: digits ?? 0,
617
+ maximumFractionDigits: digits ?? 2
618
+ }) : "";
622
619
  var NumberBuilderCell = (cellContext) => {
623
- const { onUpdate, cell, digits } = cellContext.column.columnDef.meta;
620
+ const { onUpdate, digits } = cellContext.column.columnDef.meta;
624
621
  const value = cellContext.getValue();
625
- const [text, setText] = useState4();
622
+ const [text, setText] = useState4(displayNumber(value, digits));
623
+ const { findPrevFocusable } = useFocusFinders();
624
+ const ref = useRef2(null);
625
+ useEffect2(() => {
626
+ (!document.activeElement || document.activeElement !== ref.current) && setText(displayNumber(value, digits));
627
+ }, [
628
+ digits,
629
+ value
630
+ ]);
626
631
  const handleEdit = () => {
627
632
  if (onUpdate) {
628
633
  setText(value !== void 0 ? String(value) : "");
629
634
  }
630
635
  };
631
636
  const handleSave = () => {
632
- const value2 = text?.trim().length ? Number(text) : NaN;
633
- onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(value2) ? void 0 : value2);
634
- setText(void 0);
637
+ const nextValue = parseNumber(text);
638
+ onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(nextValue) ? void 0 : nextValue);
639
+ setText(displayNumber(nextValue, digits));
640
+ ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();
635
641
  };
636
- const handleCancel = () => {
637
- setText(void 0);
642
+ const _handleCancel = () => {
643
+ setText(displayNumber(value, digits));
644
+ ref.current && findPrevFocusable(ref.current)?.focus();
638
645
  };
639
- if (text !== void 0) {
640
- return /* @__PURE__ */ React8.createElement(Input2.Root, null, /* @__PURE__ */ React8.createElement(Input2.TextInput, {
641
- value: text,
642
- classNames: [
643
- "is-full text-end font-mono"
644
- ],
645
- onBlur: handleSave,
646
- onChange: (event) => setText(event.target.value),
647
- onKeyDown: (event) => event.key === "Escape" && handleCancel() || event.key === "Enter" && handleSave()
648
- }));
649
- }
650
- return /* @__PURE__ */ React8.createElement("div", {
651
- className: mx5('is-full text-end font-mono empty:after:content-["\xA0"]', textPadding, cell?.classNames),
652
- onClick: handleEdit
653
- }, value?.toLocaleString(void 0, {
654
- minimumFractionDigits: digits ?? 0,
655
- maximumFractionDigits: digits ?? 2
646
+ return /* @__PURE__ */ React8.createElement(Input2.Root, null, /* @__PURE__ */ React8.createElement(Input2.TextInput, {
647
+ ref,
648
+ variant: "subdued",
649
+ value: text,
650
+ classNames: [
651
+ "is-full text-end font-mono",
652
+ textPadding
653
+ ],
654
+ onBlur: handleSave,
655
+ onFocus: handleEdit,
656
+ onChange: ({ target: { value: value2 } }) => setText(value2),
657
+ onKeyDown: (event) => {
658
+ return (
659
+ /* (event.key === 'Escape' && handleCancel()) || */
660
+ event.key === "Enter" && handleSave()
661
+ );
662
+ }
656
663
  }));
657
664
  };
658
665
  var RowSelectorBuilderCell = (cellContext) => {
@@ -693,17 +700,7 @@ var ColumnBuilder = class {
693
700
  */
694
701
  combobox({ label, classNames, model, onUpdate, ...props }) {
695
702
  return {
696
- ...props,
697
703
  minSize: 100,
698
- meta: {
699
- ...props.meta,
700
- model,
701
- onUpdate,
702
- cell: {
703
- classNames,
704
- ...props.meta?.cell
705
- }
706
- },
707
704
  header: (column) => {
708
705
  return label ?? column.header.id;
709
706
  },
@@ -712,6 +709,16 @@ var ColumnBuilder = class {
712
709
  return /* @__PURE__ */ React8.createElement("div", {
713
710
  className: mx5("truncate", classNames)
714
711
  }, cellValue ? model?.getText(cellValue) : "");
712
+ },
713
+ ...props,
714
+ meta: {
715
+ ...props.meta,
716
+ model,
717
+ onUpdate,
718
+ cell: {
719
+ classNames,
720
+ ...props.meta?.cell
721
+ }
715
722
  }
716
723
  };
717
724
  }
@@ -720,16 +727,7 @@ var ColumnBuilder = class {
720
727
  */
721
728
  string({ label, classNames, onUpdate, ...props } = {}) {
722
729
  return {
723
- ...props,
724
730
  minSize: 100,
725
- meta: {
726
- ...props.meta,
727
- onUpdate,
728
- cell: {
729
- ...props.meta?.cell,
730
- classNames
731
- }
732
- },
733
731
  // TODO(burdon): Default.
734
732
  header: (column) => {
735
733
  return label ?? column.header.id;
@@ -739,6 +737,15 @@ var ColumnBuilder = class {
739
737
  return /* @__PURE__ */ React8.createElement("div", {
740
738
  className: mx5("truncate", textPadding, classNames)
741
739
  }, value);
740
+ },
741
+ ...props,
742
+ meta: {
743
+ ...props.meta,
744
+ onUpdate,
745
+ cell: {
746
+ ...props.meta?.cell,
747
+ classNames
748
+ }
742
749
  }
743
750
  };
744
751
  }
@@ -747,9 +754,11 @@ var ColumnBuilder = class {
747
754
  */
748
755
  number({ label, minSize, classNames, digits, onUpdate, ...props } = {}) {
749
756
  return {
750
- ...props,
751
757
  size: 100,
752
758
  minSize: 100,
759
+ header: (cell) => label ?? cell.header.id,
760
+ cell: NumberBuilderCell,
761
+ ...props,
753
762
  meta: {
754
763
  ...props.meta,
755
764
  onUpdate,
@@ -762,9 +771,7 @@ var ColumnBuilder = class {
762
771
  ...props.meta?.cell,
763
772
  classNames
764
773
  }
765
- },
766
- header: (cell) => label ?? cell.header.id,
767
- cell: NumberBuilderCell
774
+ }
768
775
  };
769
776
  }
770
777
  /**
@@ -773,16 +780,8 @@ var ColumnBuilder = class {
773
780
  // TODO(burdon): Date picker (pluggable renderers?)
774
781
  date({ label, format: formatSpec, relative, classNames, ...props } = {}) {
775
782
  return {
776
- ...props,
777
783
  size: 220,
778
784
  minSize: 100,
779
- meta: {
780
- ...props.meta,
781
- cell: {
782
- ...props.meta?.cell,
783
- classNames
784
- }
785
- },
786
785
  header: (cell) => label ?? cell.header.id,
787
786
  cell: (cell) => {
788
787
  const value = cell.getValue();
@@ -797,6 +796,14 @@ var ColumnBuilder = class {
797
796
  console.log(value);
798
797
  return null;
799
798
  }
799
+ },
800
+ ...props,
801
+ meta: {
802
+ ...props.meta,
803
+ cell: {
804
+ ...props.meta?.cell,
805
+ classNames
806
+ }
800
807
  }
801
808
  };
802
809
  }
@@ -805,20 +812,8 @@ var ColumnBuilder = class {
805
812
  */
806
813
  key({ label, tooltip, classNames, ...props } = {}) {
807
814
  return {
808
- ...props,
809
815
  size: 94,
810
816
  minSize: 94,
811
- meta: {
812
- ...props.meta,
813
- cell: {
814
- ...props.meta?.cell,
815
- classNames: [
816
- "font-mono",
817
- textPadding,
818
- classNames
819
- ]
820
- }
821
- },
822
817
  header: (cell) => label ?? cell.header.id,
823
818
  cell: (cell) => {
824
819
  const value = cell.getValue();
@@ -837,6 +832,18 @@ var ColumnBuilder = class {
837
832
  void navigator.clipboard.writeText(value.toHex());
838
833
  }
839
834
  })))));
835
+ },
836
+ ...props,
837
+ meta: {
838
+ ...props.meta,
839
+ cell: {
840
+ ...props.meta?.cell,
841
+ classNames: [
842
+ "font-mono",
843
+ textPadding,
844
+ classNames
845
+ ]
846
+ }
840
847
  }
841
848
  };
842
849
  }
@@ -876,9 +883,11 @@ var ColumnBuilder = class {
876
883
  */
877
884
  switch({ label, classNames, onUpdate, ...props } = {}) {
878
885
  return {
879
- ...props,
880
886
  size: 50,
881
887
  minSize: 50,
888
+ header: (column) => label ?? column.header.id,
889
+ cell: SwitchBuilderCell,
890
+ ...props,
882
891
  meta: {
883
892
  ...props.meta,
884
893
  onUpdate,
@@ -889,9 +898,7 @@ var ColumnBuilder = class {
889
898
  classNames
890
899
  ]
891
900
  }
892
- },
893
- header: (column) => label ?? column.header.id,
894
- cell: SwitchBuilderCell
901
+ }
895
902
  };
896
903
  }
897
904
  /**
@@ -901,7 +908,6 @@ var ColumnBuilder = class {
901
908
  const IconOn = on?.Icon ?? Check2;
902
909
  const IconOff = off?.Icon ?? X2;
903
910
  return {
904
- ...props,
905
911
  size: size ?? 32,
906
912
  header: (column) => /* @__PURE__ */ React8.createElement("div", {
907
913
  className: "justify-center"
@@ -919,7 +925,8 @@ var ColumnBuilder = class {
919
925
  } else {
920
926
  return null;
921
927
  }
922
- }
928
+ },
929
+ ...props
923
930
  };
924
931
  }
925
932
  };
@@ -929,7 +936,6 @@ export {
929
936
  ColumnMenu,
930
937
  ColumnPanel,
931
938
  Table,
932
- columnTypes,
933
939
  createColumnBuilder,
934
940
  currentRow,
935
941
  flushPadding,
@@ -950,6 +956,7 @@ export {
950
956
  theadResizeThumb,
951
957
  theadRoot,
952
958
  theadTh,
953
- theadTr
959
+ theadTr,
960
+ translations_default as translations
954
961
  };
955
962
  //# sourceMappingURL=index.mjs.map