@epilot/zenith-react 0.1.0-next.1 → 0.1.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.
Files changed (113) hide show
  1. package/README.md +45 -10
  2. package/dist/components/appearance-boundary/appearance-boundary.js +32 -34
  3. package/dist/components/appearance-boundary/appearance-boundary.js.map +1 -1
  4. package/dist/components/badge/badge.js +1 -1
  5. package/dist/components/badge/badge.js.map +1 -1
  6. package/dist/components/breadcrumb/breadcrumb.js +10 -10
  7. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  8. package/dist/components/button/button.js +28 -28
  9. package/dist/components/button/button.js.map +1 -1
  10. package/dist/components/callout/callout.js +13 -13
  11. package/dist/components/callout/callout.js.map +1 -1
  12. package/dist/components/checkbox/checkbox.js +13 -13
  13. package/dist/components/checkbox/checkbox.js.map +1 -1
  14. package/dist/components/code-block/code-block.js +6 -6
  15. package/dist/components/code-block/code-block.js.map +1 -1
  16. package/dist/components/code-editor/code-editor.js +1 -1
  17. package/dist/components/code-editor/code-editor.js.map +1 -1
  18. package/dist/components/command/command.js +6 -6
  19. package/dist/components/command/command.js.map +1 -1
  20. package/dist/components/data-table/data-table-body.js +120 -66
  21. package/dist/components/data-table/data-table-body.js.map +1 -1
  22. package/dist/components/data-table/data-table-column-header.js +7 -7
  23. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  24. package/dist/components/data-table/data-table-column-order.js +277 -0
  25. package/dist/components/data-table/data-table-column-order.js.map +1 -0
  26. package/dist/components/data-table/data-table-content.js +72 -58
  27. package/dist/components/data-table/data-table-content.js.map +1 -1
  28. package/dist/components/data-table/data-table-context.js +8 -4
  29. package/dist/components/data-table/data-table-context.js.map +1 -1
  30. package/dist/components/data-table/data-table-footer.js +31 -0
  31. package/dist/components/data-table/data-table-footer.js.map +1 -0
  32. package/dist/components/data-table/data-table-header-draggable.js +151 -0
  33. package/dist/components/data-table/data-table-header-draggable.js.map +1 -0
  34. package/dist/components/data-table/data-table-header.js +130 -57
  35. package/dist/components/data-table/data-table-header.js.map +1 -1
  36. package/dist/components/data-table/data-table-resize-handle.js +137 -0
  37. package/dist/components/data-table/data-table-resize-handle.js.map +1 -0
  38. package/dist/components/data-table/data-table.js +184 -156
  39. package/dist/components/data-table/data-table.js.map +1 -1
  40. package/dist/components/data-table/hooks/use-data-table-virtualizer.js +9 -0
  41. package/dist/components/data-table/hooks/use-data-table-virtualizer.js.map +1 -0
  42. package/dist/components/date-range-picker/date-range-picker.js +194 -187
  43. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  44. package/dist/components/date-time-picker/calendar.js +29 -29
  45. package/dist/components/date-time-picker/calendar.js.map +1 -1
  46. package/dist/components/date-time-picker/time-picker.js +55 -55
  47. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  48. package/dist/components/dialog/dialog.js +1 -1
  49. package/dist/components/dialog/dialog.js.map +1 -1
  50. package/dist/components/drawer/drawer.js +5 -5
  51. package/dist/components/drawer/drawer.js.map +1 -1
  52. package/dist/components/dropdown-menu/dropdown-menu.js +36 -36
  53. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  54. package/dist/components/field/field-combobox.js +4 -4
  55. package/dist/components/field/field-combobox.js.map +1 -1
  56. package/dist/components/field/field.js +40 -40
  57. package/dist/components/field/field.js.map +1 -1
  58. package/dist/components/list/list.js +40 -40
  59. package/dist/components/list/list.js.map +1 -1
  60. package/dist/components/option-card/option-card.js +27 -25
  61. package/dist/components/option-card/option-card.js.map +1 -1
  62. package/dist/components/pill/pill.js +9 -9
  63. package/dist/components/pill/pill.js.map +1 -1
  64. package/dist/components/radio/radio.js +14 -14
  65. package/dist/components/radio/radio.js.map +1 -1
  66. package/dist/components/scroll-area/scroll-area.js +9 -9
  67. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  68. package/dist/components/segmented-control/segmented-control.js +1 -1
  69. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  70. package/dist/components/select/select.js +11 -11
  71. package/dist/components/select/select.js.map +1 -1
  72. package/dist/components/spinner/spinner.js.map +1 -1
  73. package/dist/components/switch/switch.js +11 -11
  74. package/dist/components/switch/switch.js.map +1 -1
  75. package/dist/components/table/table-pagination.js +1 -1
  76. package/dist/components/table/table-pagination.js.map +1 -1
  77. package/dist/components/table/table.js +15 -15
  78. package/dist/components/table/table.js.map +1 -1
  79. package/dist/components/text/text.js +10 -1
  80. package/dist/components/text/text.js.map +1 -1
  81. package/dist/components/toast/toast.js +26 -26
  82. package/dist/components/toast/toast.js.map +1 -1
  83. package/dist/components/toggle/toggle.js +20 -20
  84. package/dist/components/toggle/toggle.js.map +1 -1
  85. package/dist/index.d.ts +1930 -1867
  86. package/dist/index.js +133 -121
  87. package/dist/index.js.map +1 -1
  88. package/dist/packages/tokens/dist/generated/core.generated.js +13 -22
  89. package/dist/packages/tokens/dist/generated/core.generated.js.map +1 -1
  90. package/dist/packages/tokens/dist/generated/palette.generated.js +5 -5
  91. package/dist/packages/tokens/dist/generated/palette.generated.js.map +1 -1
  92. package/dist/packages/tokens/dist/install.js +5 -5
  93. package/dist/packages/tokens/dist/install.js.map +1 -1
  94. package/dist/tokens/core.meta.generated.js +2 -2
  95. package/dist/tokens/core.meta.generated.js.map +1 -1
  96. package/dist/tokens/index.d.ts +1029 -1104
  97. package/dist/tokens/index.js +1031 -1106
  98. package/dist/tokens/index.js.map +1 -1
  99. package/dist/tokens/palette.generated.js +2 -2
  100. package/dist/tokens/palette.generated.js.map +1 -1
  101. package/dist/tokens.json +605 -755
  102. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js +385 -340
  103. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js.map +1 -1
  104. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js +344 -229
  105. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js.map +1 -1
  106. package/dist/vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js +1 -1
  107. package/dist/vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js +36 -0
  108. package/dist/vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js.map +1 -0
  109. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/index.js +450 -0
  110. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/index.js.map +1 -0
  111. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/utils.js +50 -0
  112. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/utils.js.map +1 -0
  113. package/package.json +5 -3
@@ -1,84 +1,138 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import * as h from "react";
3
- import { makeZenithStyles as D } from "../../styles/make-styles.js";
4
- import { grayA11 as g } from "../../tokens/index.js";
5
- import { TableBody as o, TableRow as B, TableCell as w } from "../table/table.js";
1
+ import { jsx as t, jsxs as j } from "react/jsx-runtime";
2
+ import * as k from "react";
3
+ import { SLOT_ATTR as l, shorthands as h } from "@epilot/zenith-runtime/v1";
4
+ import { makeZenithStyles as A } from "../../styles/make-styles.js";
5
+ import { grayA11 as E } from "../../tokens/index.js";
6
+ import { TableBody as n, TableRow as R, TableCell as S } from "../table/table.js";
6
7
  import { DataTableRow as v } from "./data-table-row.js";
7
- import { DataTableLoading as C } from "./data-table-loading.js";
8
- import { useDataTable as R } from "./hooks/use-data-table.js";
9
- import { useDataTableContent as S } from "./hooks/use-data-table-content.js";
10
- import { SLOT_ATTR as l } from "@epilot/zenith-runtime/v1";
11
- const L = D({
8
+ import { DataTableLoading as H } from "./data-table-loading.js";
9
+ import { useDataTable as O } from "./hooks/use-data-table.js";
10
+ import { useDataTableVirtualizer as P } from "./hooks/use-data-table-virtualizer.js";
11
+ import { useDataTableContent as _ } from "./hooks/use-data-table-content.js";
12
+ const z = A({
12
13
  stateCell: {
13
14
  height: "12rem",
14
- color: g
15
+ color: E
16
+ },
17
+ paddingRow: {
18
+ ...h.borderWidth(0),
19
+ "&:hover": {
20
+ backgroundColor: "transparent"
21
+ }
22
+ },
23
+ paddingCell: {
24
+ ...h.padding(0),
25
+ ...h.borderWidth(0)
15
26
  }
16
27
  });
17
- function i({
18
- colSpan: b,
19
- children: t
28
+ function C({ height: i, colSpan: a }) {
29
+ const e = z();
30
+ return /* @__PURE__ */ t(R, { noHover: !0, className: e.paddingRow, children: /* @__PURE__ */ t(
31
+ S,
32
+ {
33
+ colSpan: a,
34
+ className: e.paddingCell,
35
+ style: { height: i, padding: 0, border: 0 }
36
+ }
37
+ ) });
38
+ }
39
+ function u({
40
+ colSpan: i,
41
+ children: a
20
42
  }) {
21
- const r = L();
22
- return /* @__PURE__ */ a(B, { noHover: !0, children: /* @__PURE__ */ a(w, { colSpan: b, align: "center", className: r.stateCell, children: t }) });
43
+ const e = z();
44
+ return /* @__PURE__ */ t(R, { noHover: !0, children: /* @__PURE__ */ t(S, { colSpan: i, align: "center", className: e.stateCell, children: a }) });
23
45
  }
24
- const M = h.forwardRef(function({
25
- className: t,
26
- emptyState: r,
27
- loadingState: f,
28
- isLoading: u = !1,
29
- errorState: d,
30
- isError: m = !1
31
- }, e) {
32
- const { table: c } = R(), n = S(), T = (n == null ? void 0 : n.spacerWidth) ?? 0, p = c.getRowModel().rows, s = c.getVisibleLeafColumns().length + (T > 0 ? 1 : 0);
33
- return process.env.NODE_ENV !== "production" && m && !d && console.warn(
46
+ const U = k.forwardRef(function({
47
+ className: a,
48
+ emptyState: e,
49
+ loadingState: x,
50
+ isLoading: V = !1,
51
+ errorState: p,
52
+ isError: f = !1
53
+ }, o) {
54
+ var T, D;
55
+ const { table: g } = O(), s = P(), m = _(), W = (m == null ? void 0 : m.spacerWidth) ?? 0, b = g.getRowModel().rows, d = g.getVisibleLeafColumns().length + (W > 0 ? 1 : 0);
56
+ if (process.env.NODE_ENV !== "production" && f && !p && console.warn(
34
57
  "DataTableBody: isError is true but no errorState was provided. Please provide an errorState prop to display error content."
35
- ), m && d ? /* @__PURE__ */ a(
36
- o,
37
- {
38
- ref: e,
39
- "data-slot": "data-table-body",
40
- [l]: "data-table-body",
41
- "data-fs-element": "DataTable-Body",
42
- "data-state": "error",
43
- className: t,
44
- children: /* @__PURE__ */ a(i, { colSpan: s, children: d })
45
- }
46
- ) : u ? /* @__PURE__ */ a(
47
- o,
48
- {
49
- ref: e,
50
- "data-slot": "data-table-body",
51
- [l]: "data-table-body",
52
- "data-fs-element": "DataTable-Body",
53
- "data-state": "loading",
54
- className: t,
55
- "aria-busy": "true",
56
- children: /* @__PURE__ */ a(i, { colSpan: s, children: f ?? /* @__PURE__ */ a(C, {}) })
57
- }
58
- ) : p.length ? /* @__PURE__ */ a(
59
- o,
60
- {
61
- ref: e,
62
- "data-slot": "data-table-body",
63
- [l]: "data-table-body",
64
- "data-fs-element": "DataTable-Body",
65
- className: t,
66
- children: p.map((y) => /* @__PURE__ */ a(v, { row: y }, y.id))
67
- }
68
- ) : /* @__PURE__ */ a(
69
- o,
58
+ ), f && p)
59
+ return /* @__PURE__ */ t(
60
+ n,
61
+ {
62
+ ref: o,
63
+ "data-slot": "data-table-body",
64
+ [l]: "data-table-body",
65
+ "data-fs-element": "DataTable-Body",
66
+ "data-state": "error",
67
+ className: a,
68
+ children: /* @__PURE__ */ t(u, { colSpan: d, children: p })
69
+ }
70
+ );
71
+ if (V)
72
+ return /* @__PURE__ */ t(
73
+ n,
74
+ {
75
+ ref: o,
76
+ "data-slot": "data-table-body",
77
+ [l]: "data-table-body",
78
+ "data-fs-element": "DataTable-Body",
79
+ "data-state": "loading",
80
+ className: a,
81
+ "aria-busy": "true",
82
+ children: /* @__PURE__ */ t(u, { colSpan: d, children: x ?? /* @__PURE__ */ t(H, {}) })
83
+ }
84
+ );
85
+ if (!b.length)
86
+ return /* @__PURE__ */ t(
87
+ n,
88
+ {
89
+ ref: o,
90
+ "data-slot": "data-table-body",
91
+ [l]: "data-table-body",
92
+ "data-fs-element": "DataTable-Body",
93
+ "data-state": "empty",
94
+ className: a,
95
+ children: /* @__PURE__ */ t(u, { colSpan: d, children: e })
96
+ }
97
+ );
98
+ if (s != null && s.virtualizer) {
99
+ const { virtualizer: r } = s, c = r.getVirtualItems(), L = r.getTotalSize(), w = ((T = c[0]) == null ? void 0 : T.start) ?? 0, B = L - (((D = c[c.length - 1]) == null ? void 0 : D.end) ?? 0);
100
+ return /* @__PURE__ */ j(
101
+ n,
102
+ {
103
+ ref: o,
104
+ "data-slot": "data-table-body",
105
+ [l]: "data-table-body",
106
+ "data-fs-element": "DataTable-Body",
107
+ className: a,
108
+ children: [
109
+ w > 0 && /* @__PURE__ */ t(C, { height: w, colSpan: d }),
110
+ c.map((y) => /* @__PURE__ */ t(
111
+ v,
112
+ {
113
+ row: b[y.index],
114
+ style: { height: `${y.size}px` }
115
+ },
116
+ b[y.index].id
117
+ )),
118
+ B > 0 && /* @__PURE__ */ t(C, { height: B, colSpan: d })
119
+ ]
120
+ }
121
+ );
122
+ }
123
+ return /* @__PURE__ */ t(
124
+ n,
70
125
  {
71
- ref: e,
126
+ ref: o,
72
127
  "data-slot": "data-table-body",
73
128
  [l]: "data-table-body",
74
129
  "data-fs-element": "DataTable-Body",
75
- "data-state": "empty",
76
- className: t,
77
- children: /* @__PURE__ */ a(i, { colSpan: s, children: r })
130
+ className: a,
131
+ children: b.map((r) => /* @__PURE__ */ t(v, { row: r }, r.id))
78
132
  }
79
133
  );
80
134
  });
81
135
  export {
82
- M as DataTableBody
136
+ U as DataTableBody
83
137
  };
84
138
  //# sourceMappingURL=data-table-body.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-body.js","sources":["../../../src/components/data-table/data-table-body.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ReactNode } from \"react\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { TableBody, TableRow, TableCell } from \"../table/table\"\nimport { useDataTable, useDataTableContent } from \"./hooks\"\nimport { DataTableRow } from \"./data-table-row\"\nimport { DataTableLoading } from \"./data-table-loading\"\n\nconst useStyles = makeZenithStyles({\n stateCell: {\n height: \"12rem\",\n color: tokens.grayA11,\n },\n})\n\nexport type DataTableBodyProps = {\n /** Additional class name */\n className?: string\n /** Custom empty state content */\n emptyState?: ReactNode\n /** Loading state content (shown when isLoading is true) */\n loadingState?: ReactNode\n /** Whether the table is in loading state */\n isLoading?: boolean\n /** Error state content (shown when isError is true) */\n errorState?: ReactNode\n /** Whether the table is in error state */\n isError?: boolean\n}\n\n/**\n * Internal component for state display (loading/error/empty).\n */\nfunction DataTableStateDisplay({\n colSpan,\n children,\n}: {\n colSpan: number\n children?: ReactNode\n}) {\n const styles = useStyles()\n\n return (\n <TableRow noHover>\n <TableCell colSpan={colSpan} align=\"center\" className={styles.stateCell}>\n {children}\n </TableCell>\n </TableRow>\n )\n}\n\n/**\n * Renders the table body with rows.\n * Must be used within a DataTable component.\n */\nexport const DataTableBody = React.forwardRef<\n HTMLTableSectionElement,\n DataTableBodyProps\n>(function DataTableBody(\n {\n className,\n emptyState,\n loadingState,\n isLoading = false,\n errorState,\n isError = false,\n },\n ref\n) {\n const { table } = useDataTable()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n const rows = table.getRowModel().rows\n const visibleColumns = table.getVisibleLeafColumns()\n const colSpan = visibleColumns.length + (spacerWidth > 0 ? 1 : 0)\n\n // Warn if isError is true but no errorState is provided\n if (process.env.NODE_ENV !== \"production\" && isError && !errorState) {\n console.warn(\n \"DataTableBody: isError is true but no errorState was provided. \" +\n \"Please provide an errorState prop to display error content.\"\n )\n }\n\n // Priority: Error > Loading > Empty > Data\n\n // Error state\n if (isError && errorState) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"error\"\n className={className}\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {errorState}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Loading state\n if (isLoading) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"loading\"\n className={className}\n aria-busy=\"true\"\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {loadingState ?? <DataTableLoading />}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Empty state\n if (!rows.length) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"empty\"\n className={className}\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {emptyState}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Standard rendering\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n className={className}\n >\n {rows.map((row) => (\n <DataTableRow key={row.id} row={row} />\n ))}\n </TableBody>\n )\n})\n"],"names":["useStyles","makeZenithStyles","tokens.grayA11","DataTableStateDisplay","colSpan","children","styles","jsx","TableRow","TableCell","DataTableBody","React","className","emptyState","loadingState","isLoading","errorState","isError","ref","table","useDataTable","contentContext","useDataTableContent","spacerWidth","rows","TableBody","SLOT_ATTR","DataTableLoading","row","DataTableRow"],"mappings":";;;;;;;;;;AAWA,MAAMA,IAAYC,EAAiB;AAAA,EACjC,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,OAAOC;AAAAA,EAAO;AAElB,CAAC;AAoBD,SAASC,EAAsB;AAAA,EAC7B,SAAAC;AAAA,EACA,UAAAC;AACF,GAGG;AACD,QAAMC,IAASN,EAAA;AAEf,SACE,gBAAAO,EAACC,GAAA,EAAS,SAAO,IACf,UAAA,gBAAAD,EAACE,GAAA,EAAU,SAAAL,GAAkB,OAAM,UAAS,WAAWE,EAAO,WAC3D,UAAAD,GACH,GACF;AAEJ;AAMO,MAAMK,IAAgBC,EAAM,WAGjC,SACA;AAAA,EACE,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,GACAC,GACA;AACA,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZC,IAAiBC,EAAA,GACjBC,KAAcF,KAAA,gBAAAA,EAAgB,gBAAe,GAE7CG,IAAOL,EAAM,YAAA,EAAc,MAE3Bf,IADiBe,EAAM,sBAAA,EACE,UAAUI,IAAc,IAAI,IAAI;AAa/D,SAVI,QAAQ,IAAI,aAAa,gBAAgBN,KAAW,CAACD,KACvD,QAAQ;AAAA,IACN;AAAA,EAAA,GAQAC,KAAWD,IAEX,gBAAAT;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,aAAU;AAAA,MACJ,CAACQ,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,cAAW;AAAA,MACX,WAAAd;AAAA,MAEA,UAAA,gBAAAL,EAACJ,GAAA,EAAsB,SAAAC,GACpB,UAAAY,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,IAMFD,IAEA,gBAAAR;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,aAAU;AAAA,MACJ,CAACQ,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,cAAW;AAAA,MACX,WAAAd;AAAA,MACA,aAAU;AAAA,MAEV,4BAACT,GAAA,EAAsB,SAAAC,GACpB,UAAAU,KAAgB,gBAAAP,EAACoB,KAAiB,EAAA,CACrC;AAAA,IAAA;AAAA,EAAA,IAMDH,EAAK,SAmBR,gBAAAjB;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,aAAU;AAAA,MACJ,CAACQ,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,WAAAd;AAAA,MAEC,UAAAY,EAAK,IAAI,CAACI,wBACRC,GAAA,EAA0B,KAAAD,EAAA,GAARA,EAAI,EAAc,CACtC;AAAA,IAAA;AAAA,EAAA,IA1BD,gBAAArB;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,aAAU;AAAA,MACJ,CAACQ,CAAS,GAAG;AAAA,MACnB,mBAAgB;AAAA,MAChB,cAAW;AAAA,MACX,WAAAd;AAAA,MAEA,UAAA,gBAAAL,EAACJ,GAAA,EAAsB,SAAAC,GACpB,UAAAS,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAmBR,CAAC;"}
1
+ {"version":3,"file":"data-table-body.js","sources":["../../../src/components/data-table/data-table-body.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ReactNode } from \"react\"\nimport { shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { TableBody, TableRow, TableCell } from \"../table/table\"\nimport {\n useDataTable,\n useDataTableContent,\n useDataTableVirtualizer,\n} from \"./hooks\"\nimport { DataTableRow } from \"./data-table-row\"\nimport { DataTableLoading } from \"./data-table-loading\"\n\nconst useStyles = makeZenithStyles({\n stateCell: {\n height: \"12rem\",\n color: tokens.grayA11,\n },\n paddingRow: {\n ...shorthands.borderWidth(0),\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n paddingCell: {\n ...shorthands.padding(0),\n ...shorthands.borderWidth(0),\n },\n})\n\nexport type DataTableBodyProps = {\n /** Additional class name */\n className?: string\n /** Custom empty state content */\n emptyState?: ReactNode\n /** Loading state content (shown when isLoading is true) */\n loadingState?: ReactNode\n /** Whether the table is in loading state */\n isLoading?: boolean\n /** Error state content (shown when isError is true) */\n errorState?: ReactNode\n /** Whether the table is in error state */\n isError?: boolean\n}\n\n/**\n * Internal component for padding rows in virtualized tables.\n */\nfunction PaddingRow({ height, colSpan }: { height: number; colSpan: number }) {\n const styles = useStyles()\n return (\n <TableRow noHover className={styles.paddingRow}>\n <TableCell\n colSpan={colSpan}\n className={styles.paddingCell}\n style={{ height, padding: 0, border: 0 }}\n />\n </TableRow>\n )\n}\n\n/**\n * Internal component for state display (loading/error/empty).\n */\nfunction DataTableStateDisplay({\n colSpan,\n children,\n}: {\n colSpan: number\n children?: ReactNode\n}) {\n const styles = useStyles()\n\n return (\n <TableRow noHover>\n <TableCell colSpan={colSpan} align=\"center\" className={styles.stateCell}>\n {children}\n </TableCell>\n </TableRow>\n )\n}\n\n/**\n * Renders the table body with rows.\n * Automatically handles virtualization when used within a DataTableContent with virtualization enabled.\n * Must be used within a DataTable component.\n */\nexport const DataTableBody = React.forwardRef<\n HTMLTableSectionElement,\n DataTableBodyProps\n>(function DataTableBody(\n {\n className,\n emptyState,\n loadingState,\n isLoading = false,\n errorState,\n isError = false,\n },\n ref\n) {\n const { table } = useDataTable()\n const virtualizerContext = useDataTableVirtualizer()\n const contentContext = useDataTableContent()\n const spacerWidth = contentContext?.spacerWidth ?? 0\n\n const rows = table.getRowModel().rows\n const visibleColumns = table.getVisibleLeafColumns()\n const colSpan = visibleColumns.length + (spacerWidth > 0 ? 1 : 0)\n\n // Warn if isError is true but no errorState is provided\n if (process.env.NODE_ENV !== \"production\" && isError && !errorState) {\n console.warn(\n \"DataTableBody: isError is true but no errorState was provided. \" +\n \"Please provide an errorState prop to display error content.\"\n )\n }\n\n // Priority: Error > Loading > Empty > Data\n\n // Error state\n if (isError && errorState) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"error\"\n className={className}\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {errorState}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Loading state\n if (isLoading) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"loading\"\n className={className}\n aria-busy=\"true\"\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {loadingState ?? <DataTableLoading />}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Empty state\n if (!rows.length) {\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n data-state=\"empty\"\n className={className}\n >\n <DataTableStateDisplay colSpan={colSpan}>\n {emptyState}\n </DataTableStateDisplay>\n </TableBody>\n )\n }\n\n // Virtualized rendering\n if (virtualizerContext?.virtualizer) {\n const { virtualizer } = virtualizerContext\n const virtualRows = virtualizer.getVirtualItems()\n const totalSize = virtualizer.getTotalSize()\n const paddingTop = virtualRows[0]?.start ?? 0\n const paddingBottom =\n totalSize - (virtualRows[virtualRows.length - 1]?.end ?? 0)\n\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n className={className}\n >\n {paddingTop > 0 && <PaddingRow height={paddingTop} colSpan={colSpan} />}\n {virtualRows.map((virtualRow) => (\n <DataTableRow\n key={rows[virtualRow.index].id}\n row={rows[virtualRow.index]}\n style={{ height: `${virtualRow.size}px` }}\n />\n ))}\n {paddingBottom > 0 && (\n <PaddingRow height={paddingBottom} colSpan={colSpan} />\n )}\n </TableBody>\n )\n }\n\n // Standard rendering\n return (\n <TableBody\n ref={ref}\n data-slot=\"data-table-body\"\n {...{ [SLOT_ATTR]: \"data-table-body\" }}\n data-fs-element=\"DataTable-Body\"\n className={className}\n >\n {rows.map((row) => (\n <DataTableRow key={row.id} row={row} />\n ))}\n </TableBody>\n )\n})\n"],"names":["useStyles","makeZenithStyles","tokens.grayA11","shorthands","PaddingRow","height","colSpan","styles","TableRow","jsx","TableCell","DataTableStateDisplay","children","DataTableBody","React","className","emptyState","loadingState","isLoading","errorState","isError","ref","table","useDataTable","virtualizerContext","useDataTableVirtualizer","contentContext","useDataTableContent","spacerWidth","rows","TableBody","SLOT_ATTR","DataTableLoading","virtualizer","virtualRows","totalSize","paddingTop","_a","paddingBottom","_b","jsxs","virtualRow","DataTableRow","row"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as o, jsxs as n } from "react/jsx-runtime";
2
2
  import * as l from "react";
3
- import { mergeClasses as h, SLOT_ATTR as g, shorthands as i } from "@epilot/zenith-runtime/v1";
3
+ import { mergeClasses as h, SLOT_ATTR as g, shorthands as s } from "@epilot/zenith-runtime/v1";
4
4
  import { makeZenithStyles as p } from "../../styles/make-styles.js";
5
- import { accent11 as m, accentA8 as u, semAccentSoft as w, spacingElement1 as c, radiusLg as k } from "../../tokens/index.js";
5
+ import { accent11 as m, accentA8 as u, accentSoft as w, spacingElement1 as c, radiusLg as k } from "../../tokens/index.js";
6
6
  const f = (e) => /* @__PURE__ */ n(
7
7
  "svg",
8
8
  {
@@ -62,9 +62,9 @@ const f = (e) => /* @__PURE__ */ n(
62
62
  display: "inline-flex",
63
63
  alignItems: "center",
64
64
  gap: c,
65
- ...i.paddingBlock("0.125rem"),
66
- ...i.paddingInline(c),
67
- ...i.borderRadius(k),
65
+ ...s.paddingBlock("0.125rem"),
66
+ ...s.paddingInline(c),
67
+ ...s.borderRadius(k),
68
68
  cursor: "pointer",
69
69
  transitionProperty: "color, background-color, border-color",
70
70
  transitionDuration: "150ms",
@@ -103,8 +103,8 @@ function x({ column: e, title: t, className: a }, d) {
103
103
  [g]: "data-table-column-header",
104
104
  "data-fs-element": "DataTable-SortButton",
105
105
  onClick: () => e.toggleSorting(),
106
- onKeyDown: (s) => {
107
- (s.key === "Enter" || s.key === " ") && (s.preventDefault(), e.toggleSorting());
106
+ onKeyDown: (i) => {
107
+ (i.key === "Enter" || i.key === " ") && (i.preventDefault(), e.toggleSorting());
108
108
  },
109
109
  "aria-label": e.getIsSorted() === "asc" ? `${t}, sorted ascending. Click to sort descending.` : e.getIsSorted() === "desc" ? `${t}, sorted descending. Click to remove sorting.` : `${t}. Click to sort ascending.`,
110
110
  className: h(r.button, a),
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-column-header.js","sources":["../../../src/components/data-table/data-table-column-header.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps } from \"react\"\nimport type { Column } from \"@tanstack/react-table\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\n// Sort icons\nconst IconArrowUp = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n)\n\nconst IconArrowDown = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n)\n\nconst IconArrowsSort = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m7 15 5 5 5-5\" />\n <path d=\"m7 9 5-5 5 5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n button: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement1,\n ...shorthands.paddingBlock(\"0.125rem\"),\n ...shorthands.paddingInline(tokens.spacingElement1),\n ...shorthands.borderRadius(tokens.radiusLg),\n cursor: \"pointer\",\n transitionProperty: \"color, background-color, border-color\",\n transitionDuration: \"150ms\",\n \":hover\": {\n backgroundColor: tokens.semAccentSoft,\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n },\n iconActive: {\n width: \"1rem\",\n height: \"1rem\",\n color: tokens.accent11,\n flexShrink: 0,\n },\n iconUnsorted: {\n width: \"1rem\",\n height: \"1rem\",\n opacity: 0.4,\n flexShrink: 0,\n },\n})\n\nexport type DataTableColumnHeaderProps<TData = unknown, TValue = unknown> = {\n /** The column instance from Tanstack Table */\n column: Column<TData, TValue>\n /** The header title to display */\n title: string\n /** Additional class name */\n className?: string\n}\n\nfunction DataTableColumnHeaderInner<TData, TValue>(\n { column, title, className }: DataTableColumnHeaderProps<TData, TValue>,\n ref: React.ForwardedRef<HTMLSpanElement>\n) {\n const styles = useStyles()\n\n if (!column.getCanSort()) {\n return (\n <span ref={ref} className={className}>\n {title}\n </span>\n )\n }\n\n return (\n <span\n ref={ref}\n role=\"button\"\n tabIndex={0}\n data-slot=\"data-table-column-header\"\n {...{ [SLOT_ATTR]: \"data-table-column-header\" }}\n data-fs-element=\"DataTable-SortButton\"\n onClick={() => column.toggleSorting()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n column.toggleSorting()\n }\n }}\n aria-label={\n column.getIsSorted() === \"asc\"\n ? `${title}, sorted ascending. Click to sort descending.`\n : column.getIsSorted() === \"desc\"\n ? `${title}, sorted descending. Click to remove sorting.`\n : `${title}. Click to sort ascending.`\n }\n className={mergeClasses(styles.button, className)}\n >\n {title}\n {column.getIsSorted() === \"asc\" && (\n <IconArrowUp className={styles.iconActive} />\n )}\n {column.getIsSorted() === \"desc\" && (\n <IconArrowDown className={styles.iconActive} />\n )}\n {!column.getIsSorted() && (\n <IconArrowsSort className={styles.iconUnsorted} />\n )}\n </span>\n )\n}\n\nexport const DataTableColumnHeader = React.forwardRef(\n DataTableColumnHeaderInner\n) as <TData = unknown, TValue = unknown>(\n props: DataTableColumnHeaderProps<TData, TValue> & {\n ref?: React.Ref<HTMLSpanElement>\n }\n) => React.ReactElement | null\n"],"names":["IconArrowUp","props","jsxs","jsx","IconArrowDown","IconArrowsSort","useStyles","makeZenithStyles","tokens.spacingElement1","shorthands","tokens.radiusLg","tokens.semAccentSoft","tokens.accentA8","tokens.accent11","DataTableColumnHeaderInner","column","title","className","ref","styles","SLOT_ATTR","e","mergeClasses","DataTableColumnHeader","React"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-column-header.js","sources":["../../../src/components/data-table/data-table-column-header.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps } from \"react\"\nimport type { Column } from \"@tanstack/react-table\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\n// Sort icons\nconst IconArrowUp = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n)\n\nconst IconArrowDown = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n)\n\nconst IconArrowsSort = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m7 15 5 5 5-5\" />\n <path d=\"m7 9 5-5 5 5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n button: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement1,\n ...shorthands.paddingBlock(\"0.125rem\"),\n ...shorthands.paddingInline(tokens.spacingElement1),\n ...shorthands.borderRadius(tokens.radiusLg),\n cursor: \"pointer\",\n transitionProperty: \"color, background-color, border-color\",\n transitionDuration: \"150ms\",\n \":hover\": {\n backgroundColor: tokens.accentSoft,\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n },\n iconActive: {\n width: \"1rem\",\n height: \"1rem\",\n color: tokens.accent11,\n flexShrink: 0,\n },\n iconUnsorted: {\n width: \"1rem\",\n height: \"1rem\",\n opacity: 0.4,\n flexShrink: 0,\n },\n})\n\nexport type DataTableColumnHeaderProps<TData = unknown, TValue = unknown> = {\n /** The column instance from Tanstack Table */\n column: Column<TData, TValue>\n /** The header title to display */\n title: string\n /** Additional class name */\n className?: string\n}\n\nfunction DataTableColumnHeaderInner<TData, TValue>(\n { column, title, className }: DataTableColumnHeaderProps<TData, TValue>,\n ref: React.ForwardedRef<HTMLSpanElement>\n) {\n const styles = useStyles()\n\n if (!column.getCanSort()) {\n return (\n <span ref={ref} className={className}>\n {title}\n </span>\n )\n }\n\n return (\n <span\n ref={ref}\n role=\"button\"\n tabIndex={0}\n data-slot=\"data-table-column-header\"\n {...{ [SLOT_ATTR]: \"data-table-column-header\" }}\n data-fs-element=\"DataTable-SortButton\"\n onClick={() => column.toggleSorting()}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n column.toggleSorting()\n }\n }}\n aria-label={\n column.getIsSorted() === \"asc\"\n ? `${title}, sorted ascending. Click to sort descending.`\n : column.getIsSorted() === \"desc\"\n ? `${title}, sorted descending. Click to remove sorting.`\n : `${title}. Click to sort ascending.`\n }\n className={mergeClasses(styles.button, className)}\n >\n {title}\n {column.getIsSorted() === \"asc\" && (\n <IconArrowUp className={styles.iconActive} />\n )}\n {column.getIsSorted() === \"desc\" && (\n <IconArrowDown className={styles.iconActive} />\n )}\n {!column.getIsSorted() && (\n <IconArrowsSort className={styles.iconUnsorted} />\n )}\n </span>\n )\n}\n\nexport const DataTableColumnHeader = React.forwardRef(\n DataTableColumnHeaderInner\n) as <TData = unknown, TValue = unknown>(\n props: DataTableColumnHeaderProps<TData, TValue> & {\n ref?: React.Ref<HTMLSpanElement>\n }\n) => React.ReactElement | null\n"],"names":["IconArrowUp","props","jsxs","jsx","IconArrowDown","IconArrowsSort","useStyles","makeZenithStyles","tokens.spacingElement1","shorthands","tokens.radiusLg","tokens.accentSoft","tokens.accentA8","tokens.accent11","DataTableColumnHeaderInner","column","title","className","ref","styles","SLOT_ATTR","e","mergeClasses","DataTableColumnHeader","React"],"mappings":"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"}
@@ -0,0 +1,277 @@
1
+ import { jsxs as b, jsx as e } from "react/jsx-runtime";
2
+ import * as A from "react";
3
+ import { useCallback as N } from "react";
4
+ import { useSensors as M, useSensor as O, DndContext as E, closestCenter as L, KeyboardSensor as R, PointerSensor as k } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
5
+ import { arrayMove as B, SortableContext as _, verticalListSortingStrategy as G, sortableKeyboardCoordinates as z, useSortable as Z } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
6
+ import { CSS as j } from "../../vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js";
7
+ import { SLOT_ATTR as x, shorthands as d, mergeClasses as F } from "@epilot/zenith-runtime/v1";
8
+ import { makeZenithStyles as K } from "../../styles/make-styles.js";
9
+ import { accentA8 as V, grayA12 as W, grayA8 as X, grayA3 as H, leadingSm as P, textSm as $, spacingElement2 as C, radiusSm as q } from "../../tokens/index.js";
10
+ import { Button as J } from "../button/button.js";
11
+ import { DropdownMenu as Q, DropdownMenuTrigger as U, DropdownMenuContent as Y, DropdownMenuLabel as ee, DropdownMenuSeparator as te } from "../dropdown-menu/dropdown-menu.js";
12
+ import { useDataTable as re } from "./hooks/use-data-table.js";
13
+ const ne = (t) => /* @__PURE__ */ e(
14
+ "svg",
15
+ {
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ width: "20",
18
+ height: "20",
19
+ viewBox: "0 -960 960 960",
20
+ fill: "currentColor",
21
+ ...t,
22
+ children: /* @__PURE__ */ e("path", { d: "M320-440v-287l-76 76-44-44 150-150 150 150-44 44-76-76v287h-60ZM560-155 410-305l44-44 76 76v-287h60v287l76-76 44 44L560-155Z" })
23
+ }
24
+ ), oe = (t) => /* @__PURE__ */ b(
25
+ "svg",
26
+ {
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ width: "16",
29
+ height: "16",
30
+ viewBox: "0 0 24 24",
31
+ fill: "currentColor",
32
+ ...t,
33
+ children: [
34
+ /* @__PURE__ */ e("circle", { cx: "9", cy: "5", r: "1.5" }),
35
+ /* @__PURE__ */ e("circle", { cx: "15", cy: "5", r: "1.5" }),
36
+ /* @__PURE__ */ e("circle", { cx: "9", cy: "12", r: "1.5" }),
37
+ /* @__PURE__ */ e("circle", { cx: "15", cy: "12", r: "1.5" }),
38
+ /* @__PURE__ */ e("circle", { cx: "9", cy: "19", r: "1.5" }),
39
+ /* @__PURE__ */ e("circle", { cx: "15", cy: "19", r: "1.5" })
40
+ ]
41
+ }
42
+ ), T = K({
43
+ icon: {
44
+ width: "1rem",
45
+ height: "1rem"
46
+ },
47
+ gripIcon: {
48
+ width: "14px",
49
+ height: "14px"
50
+ },
51
+ srOnly: {
52
+ position: "absolute",
53
+ width: "1px",
54
+ height: "1px",
55
+ ...d.padding(0),
56
+ ...d.margin("-1px"),
57
+ ...d.overflow("hidden"),
58
+ clip: "rect(0, 0, 0, 0)",
59
+ whiteSpace: "nowrap"
60
+ },
61
+ item: {
62
+ display: "flex",
63
+ alignItems: "center",
64
+ ...d.gap(C),
65
+ ...d.borderRadius(q),
66
+ paddingLeft: C,
67
+ paddingRight: C,
68
+ paddingTop: "6px",
69
+ paddingBottom: "6px",
70
+ fontSize: $,
71
+ lineHeight: P
72
+ },
73
+ itemDragging: {
74
+ zIndex: 50,
75
+ backgroundColor: H,
76
+ opacity: 0.8
77
+ },
78
+ dragHandle: {
79
+ display: "inline-flex",
80
+ flexShrink: 0,
81
+ cursor: "grab",
82
+ touchAction: "none",
83
+ alignItems: "center",
84
+ color: X,
85
+ backgroundColor: "transparent",
86
+ ...d.borderWidth(0),
87
+ ...d.padding(0),
88
+ "&:hover": {
89
+ color: W
90
+ },
91
+ "&:focus-visible": {
92
+ outlineWidth: "2px",
93
+ outlineStyle: "solid",
94
+ outlineOffset: "2px",
95
+ outlineColor: V
96
+ },
97
+ "&:active": {
98
+ cursor: "grabbing"
99
+ }
100
+ },
101
+ itemLabel: {
102
+ userSelect: "none"
103
+ }
104
+ });
105
+ function ae({
106
+ column: t,
107
+ dragHandleLabel: r
108
+ }) {
109
+ const n = T(), {
110
+ attributes: c,
111
+ listeners: u,
112
+ setNodeRef: g,
113
+ transform: p,
114
+ transition: f,
115
+ isDragging: o
116
+ } = Z({ id: t.id }), i = t.columnDef.meta, a = (i == null ? void 0 : i.visibilityLabel) ?? (typeof t.columnDef.header == "string" ? t.columnDef.header : t.id), s = r ? typeof r == "function" ? r(a) : r : `Drag to reorder ${a}`;
117
+ return /* @__PURE__ */ b(
118
+ "div",
119
+ {
120
+ ref: g,
121
+ style: {
122
+ transform: j.Transform.toString(p),
123
+ transition: f
124
+ },
125
+ className: F(n.item, o && n.itemDragging),
126
+ "data-slot": "data-table-column-order-item",
127
+ [x]: "data-table-column-order-item",
128
+ "data-fs-element": "DataTable-ColumnOrder-Item",
129
+ children: [
130
+ /* @__PURE__ */ e(
131
+ "button",
132
+ {
133
+ type: "button",
134
+ className: n.dragHandle,
135
+ "data-slot": "data-table-column-order-drag-handle",
136
+ [x]: "data-table-column-order-drag-handle",
137
+ "aria-label": s,
138
+ ...c,
139
+ ...u,
140
+ children: /* @__PURE__ */ e(oe, { className: n.gripIcon })
141
+ }
142
+ ),
143
+ /* @__PURE__ */ e(
144
+ "span",
145
+ {
146
+ className: n.itemLabel,
147
+ "data-slot": "data-table-column-order-item-label",
148
+ [x]: "data-table-column-order-item-label",
149
+ children: a
150
+ }
151
+ )
152
+ ]
153
+ }
154
+ );
155
+ }
156
+ function ie({
157
+ columns: t,
158
+ currentOrder: r,
159
+ table: n,
160
+ dragHandleLabel: c,
161
+ announcements: u,
162
+ screenReaderInstructions: g
163
+ }) {
164
+ const p = M(
165
+ O(k, {
166
+ activationConstraint: { distance: 3 }
167
+ }),
168
+ O(R, {
169
+ coordinateGetter: z
170
+ })
171
+ ), f = N(
172
+ (o) => {
173
+ const { active: i, over: a } = o;
174
+ if (!a || i.id === a.id) return;
175
+ const s = r.indexOf(i.id), l = r.indexOf(a.id);
176
+ if (s === -1 || l === -1) return;
177
+ const y = B(r, s, l);
178
+ n.setColumnOrder(y);
179
+ },
180
+ [r, n]
181
+ );
182
+ return /* @__PURE__ */ e(
183
+ E,
184
+ {
185
+ sensors: p,
186
+ collisionDetection: L,
187
+ onDragEnd: f,
188
+ accessibility: {
189
+ announcements: u,
190
+ screenReaderInstructions: g
191
+ },
192
+ children: /* @__PURE__ */ e(
193
+ _,
194
+ {
195
+ items: t.map((o) => o.id),
196
+ strategy: G,
197
+ children: t.map((o) => /* @__PURE__ */ e(
198
+ ae,
199
+ {
200
+ column: o,
201
+ dragHandleLabel: c
202
+ },
203
+ o.id
204
+ ))
205
+ }
206
+ )
207
+ }
208
+ );
209
+ }
210
+ const xe = A.forwardRef(function({
211
+ icon: r,
212
+ trigger: n,
213
+ label: c,
214
+ dragHandleLabel: u,
215
+ announcements: g,
216
+ screenReaderInstructions: p,
217
+ contentClassName: f,
218
+ align: o = "end",
219
+ ...i
220
+ }, a) {
221
+ const s = T(), { table: l } = re(), y = l.getAllLeafColumns(), w = y.filter((m) => {
222
+ if (m.id === "select") return !1;
223
+ const h = m.columnDef.meta;
224
+ return (h == null ? void 0 : h.enableOrdering) !== !1;
225
+ });
226
+ if (w.length === 0)
227
+ return null;
228
+ const S = l.getState().columnOrder && l.getState().columnOrder.length > 0 ? l.getState().columnOrder : y.map((m) => m.id), I = [...w].sort((m, h) => {
229
+ const D = S.indexOf(m.id), v = S.indexOf(h.id);
230
+ return (D === -1 ? Number.MAX_SAFE_INTEGER : D) - (v === -1 ? Number.MAX_SAFE_INTEGER : v);
231
+ });
232
+ return /* @__PURE__ */ b(Q, { ref: a, ...i, children: [
233
+ /* @__PURE__ */ e(U, { asChild: !0, children: n ?? /* @__PURE__ */ b(
234
+ J,
235
+ {
236
+ variant: "tertiary",
237
+ size: "sm",
238
+ "data-slot": "data-table-column-order-trigger",
239
+ [x]: "data-table-column-order-trigger",
240
+ "data-fs-element": "DataTable-ColumnOrder-Trigger",
241
+ children: [
242
+ r ?? /* @__PURE__ */ e(ne, { className: s.icon }),
243
+ /* @__PURE__ */ e("span", { className: s.srOnly, children: c })
244
+ ]
245
+ }
246
+ ) }),
247
+ /* @__PURE__ */ b(
248
+ Y,
249
+ {
250
+ align: o,
251
+ className: f,
252
+ "data-slot": "data-table-column-order-content",
253
+ [x]: "data-table-column-order-content",
254
+ "data-fs-element": "DataTable-ColumnOrder-Content",
255
+ children: [
256
+ /* @__PURE__ */ e(ee, { children: c }),
257
+ /* @__PURE__ */ e(te, {}),
258
+ /* @__PURE__ */ e(
259
+ ie,
260
+ {
261
+ columns: I,
262
+ currentOrder: S,
263
+ table: l,
264
+ dragHandleLabel: u,
265
+ announcements: g,
266
+ screenReaderInstructions: p
267
+ }
268
+ )
269
+ ]
270
+ }
271
+ )
272
+ ] });
273
+ });
274
+ export {
275
+ xe as DataTableColumnOrder
276
+ };
277
+ //# sourceMappingURL=data-table-column-order.js.map