@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.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.
Files changed (133) hide show
  1. package/dist/components/accordion/accordion.js +57 -48
  2. package/dist/components/accordion/accordion.js.map +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.js +120 -92
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar-group.js +38 -35
  6. package/dist/components/avatar/avatar-group.js.map +1 -1
  7. package/dist/components/avatar/avatar.js +78 -71
  8. package/dist/components/avatar/avatar.js.map +1 -1
  9. package/dist/components/badge/badge.js +60 -55
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/breadcrumb/breadcrumb.js +99 -54
  12. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  13. package/dist/components/button/button.js +87 -77
  14. package/dist/components/button/button.js.map +1 -1
  15. package/dist/components/button-group/button-group.js +36 -32
  16. package/dist/components/button-group/button-group.js.map +1 -1
  17. package/dist/components/callout/callout.js +105 -98
  18. package/dist/components/callout/callout.js.map +1 -1
  19. package/dist/components/card/card.js +62 -52
  20. package/dist/components/card/card.js.map +1 -1
  21. package/dist/components/checkbox/checkbox.js +22 -19
  22. package/dist/components/checkbox/checkbox.js.map +1 -1
  23. package/dist/components/code-block/code-block.js +135 -123
  24. package/dist/components/code-block/code-block.js.map +1 -1
  25. package/dist/components/code-editor/code-editor.js +276 -260
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
  28. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  29. package/dist/components/command/command.js +116 -105
  30. package/dist/components/command/command.js.map +1 -1
  31. package/dist/components/data-table/data-table-body.js +38 -34
  32. package/dist/components/data-table/data-table-body.js.map +1 -1
  33. package/dist/components/data-table/data-table-column-header.js +30 -26
  34. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  35. package/dist/components/data-table/data-table-column-order.js +79 -73
  36. package/dist/components/data-table/data-table-column-order.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-visibility.js +25 -22
  38. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  39. package/dist/components/data-table/data-table-content.js +47 -44
  40. package/dist/components/data-table/data-table-content.js.map +1 -1
  41. package/dist/components/data-table/data-table-error.js +36 -32
  42. package/dist/components/data-table/data-table-error.js.map +1 -1
  43. package/dist/components/data-table/data-table-footer.js +10 -8
  44. package/dist/components/data-table/data-table-footer.js.map +1 -1
  45. package/dist/components/data-table/data-table-header-draggable.js +40 -36
  46. package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
  47. package/dist/components/data-table/data-table-header.js +113 -99
  48. package/dist/components/data-table/data-table-header.js.map +1 -1
  49. package/dist/components/data-table/data-table-loading.js +21 -18
  50. package/dist/components/data-table/data-table-loading.js.map +1 -1
  51. package/dist/components/data-table/data-table-resize-handle.js +13 -11
  52. package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
  53. package/dist/components/data-table/data-table-row.js +71 -59
  54. package/dist/components/data-table/data-table-row.js.map +1 -1
  55. package/dist/components/data-table/data-table-toolbar.js +9 -7
  56. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  57. package/dist/components/data-table/data-table.js +48 -46
  58. package/dist/components/data-table/data-table.js.map +1 -1
  59. package/dist/components/date-range-picker/date-range-picker.js +173 -164
  60. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  61. package/dist/components/date-range-picker/range-calendar.js +36 -34
  62. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/calendar.js +290 -272
  64. package/dist/components/date-time-picker/calendar.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
  66. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
  68. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  69. package/dist/components/date-time-picker/date-time-picker.js +42 -40
  70. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  71. package/dist/components/date-time-picker/time-picker.js +95 -87
  72. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  73. package/dist/components/dialog/dialog.js +115 -95
  74. package/dist/components/dialog/dialog.js.map +1 -1
  75. package/dist/components/drawer/drawer.js +144 -109
  76. package/dist/components/drawer/drawer.js.map +1 -1
  77. package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
  78. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  79. package/dist/components/field/field-combobox.js +196 -176
  80. package/dist/components/field/field-combobox.js.map +1 -1
  81. package/dist/components/field/field.js +137 -126
  82. package/dist/components/field/field.js.map +1 -1
  83. package/dist/components/list/list.js +237 -219
  84. package/dist/components/list/list.js.map +1 -1
  85. package/dist/components/option-card/option-card.js +129 -116
  86. package/dist/components/option-card/option-card.js.map +1 -1
  87. package/dist/components/pill/pill.js +55 -51
  88. package/dist/components/pill/pill.js.map +1 -1
  89. package/dist/components/popover/popover.js +53 -36
  90. package/dist/components/popover/popover.js.map +1 -1
  91. package/dist/components/radio/radio.js +38 -34
  92. package/dist/components/radio/radio.js.map +1 -1
  93. package/dist/components/scroll-area/scroll-area.js +38 -35
  94. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  95. package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
  96. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  97. package/dist/components/segmented-control/segmented-control.js +93 -85
  98. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  99. package/dist/components/select/select.js +149 -128
  100. package/dist/components/select/select.js.map +1 -1
  101. package/dist/components/separator/separator.js +19 -16
  102. package/dist/components/separator/separator.js.map +1 -1
  103. package/dist/components/skeleton/skeleton.js +34 -30
  104. package/dist/components/skeleton/skeleton.js.map +1 -1
  105. package/dist/components/spinner/spinner.js +22 -17
  106. package/dist/components/spinner/spinner.js.map +1 -1
  107. package/dist/components/surface/surface.js +25 -22
  108. package/dist/components/surface/surface.js.map +1 -1
  109. package/dist/components/switch/switch.js +66 -57
  110. package/dist/components/switch/switch.js.map +1 -1
  111. package/dist/components/table/table-pagination.js +139 -129
  112. package/dist/components/table/table-pagination.js.map +1 -1
  113. package/dist/components/table/table.js +104 -90
  114. package/dist/components/table/table.js.map +1 -1
  115. package/dist/components/tabs/tabs.js +206 -128
  116. package/dist/components/tabs/tabs.js.map +1 -1
  117. package/dist/components/toast/toast.js +112 -100
  118. package/dist/components/toast/toast.js.map +1 -1
  119. package/dist/components/toggle/toggle.js +32 -30
  120. package/dist/components/toggle/toggle.js.map +1 -1
  121. package/dist/components/tooltip/tooltip.js +59 -46
  122. package/dist/components/tooltip/tooltip.js.map +1 -1
  123. package/dist/index.d.ts +12 -0
  124. package/dist/lib/clear-button.js +18 -17
  125. package/dist/lib/clear-button.js.map +1 -1
  126. package/dist/styles/host-reset.js +47 -0
  127. package/dist/styles/host-reset.js.map +1 -0
  128. package/dist/styles/overlay-layer.js +5 -0
  129. package/dist/styles/overlay-layer.js.map +1 -0
  130. package/dist/tokens.json +1 -1
  131. package/package.json +8 -6
  132. package/scripts/migration-diagnostics.mjs +42 -7
  133. package/scripts/migration-sweep.mjs +9 -1
@@ -1,16 +1,17 @@
1
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(
2
+ import * as N from "react";
3
+ import { useCallback as M } from "react";
4
+ import { useSensors as E, useSensor as T, DndContext as L, closestCenter as R, KeyboardSensor as k, PointerSensor as B } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
5
+ import { arrayMove as _, SortableContext as G, verticalListSortingStrategy as z, sortableKeyboardCoordinates as Z, useSortable as j } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
6
+ import { CSS as F } 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 K } from "@epilot/zenith-runtime/v1";
8
+ import { makeZenithStyles as V } from "../../styles/make-styles.js";
9
+ import { nativeControl as W, boxModel as C } from "../../styles/host-reset.js";
10
+ import { accentA8 as X, grayA12 as H, grayA8 as P, grayA3 as $, leadingSm as q, textSm as J, spacingElement2 as w, radiusSm as Q } from "../../tokens/index.js";
11
+ import { Button as U } from "../button/button.js";
12
+ import { DropdownMenu as Y, DropdownMenuTrigger as ee, DropdownMenuContent as te, DropdownMenuLabel as re, DropdownMenuSeparator as oe } from "../dropdown-menu/dropdown-menu.js";
13
+ import { useDataTable as ne } from "./hooks/use-data-table.js";
14
+ const ae = (t) => /* @__PURE__ */ e(
14
15
  "svg",
15
16
  {
16
17
  xmlns: "http://www.w3.org/2000/svg",
@@ -21,7 +22,7 @@ const ne = (t) => /* @__PURE__ */ e(
21
22
  ...t,
22
23
  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
  }
24
- ), oe = (t) => /* @__PURE__ */ b(
25
+ ), ie = (t) => /* @__PURE__ */ b(
25
26
  "svg",
26
27
  {
27
28
  xmlns: "http://www.w3.org/2000/svg",
@@ -39,16 +40,19 @@ const ne = (t) => /* @__PURE__ */ e(
39
40
  /* @__PURE__ */ e("circle", { cx: "15", cy: "19", r: "1.5" })
40
41
  ]
41
42
  }
42
- ), T = K({
43
+ ), I = V({
43
44
  icon: {
45
+ ...C,
44
46
  width: "1rem",
45
47
  height: "1rem"
46
48
  },
47
49
  gripIcon: {
50
+ ...C,
48
51
  width: "14px",
49
52
  height: "14px"
50
53
  },
51
54
  srOnly: {
55
+ ...C,
52
56
  position: "absolute",
53
57
  width: "1px",
54
58
  height: "1px",
@@ -59,40 +63,42 @@ const ne = (t) => /* @__PURE__ */ e(
59
63
  whiteSpace: "nowrap"
60
64
  },
61
65
  item: {
66
+ ...C,
62
67
  display: "flex",
63
68
  alignItems: "center",
64
- ...d.gap(C),
65
- ...d.borderRadius(q),
66
- paddingLeft: C,
67
- paddingRight: C,
69
+ ...d.gap(w),
70
+ ...d.borderRadius(Q),
71
+ paddingLeft: w,
72
+ paddingRight: w,
68
73
  paddingTop: "6px",
69
74
  paddingBottom: "6px",
70
- fontSize: $,
71
- lineHeight: P
75
+ fontSize: J,
76
+ lineHeight: q
72
77
  },
73
78
  itemDragging: {
74
79
  zIndex: 50,
75
- backgroundColor: H,
80
+ backgroundColor: $,
76
81
  opacity: 0.8
77
82
  },
78
83
  dragHandle: {
84
+ ...W,
79
85
  display: "inline-flex",
80
86
  flexShrink: 0,
81
87
  cursor: "grab",
82
88
  touchAction: "none",
83
89
  alignItems: "center",
84
- color: X,
90
+ color: P,
85
91
  backgroundColor: "transparent",
86
92
  ...d.borderWidth(0),
87
93
  ...d.padding(0),
88
94
  "&:hover": {
89
- color: W
95
+ color: H
90
96
  },
91
97
  "&:focus-visible": {
92
98
  outlineWidth: "2px",
93
99
  outlineStyle: "solid",
94
100
  outlineOffset: "2px",
95
- outlineColor: V
101
+ outlineColor: X
96
102
  },
97
103
  "&:active": {
98
104
  cursor: "grabbing"
@@ -102,27 +108,27 @@ const ne = (t) => /* @__PURE__ */ e(
102
108
  userSelect: "none"
103
109
  }
104
110
  });
105
- function ae({
111
+ function le({
106
112
  column: t,
107
113
  dragHandleLabel: r
108
114
  }) {
109
- const n = T(), {
115
+ const o = I(), {
110
116
  attributes: c,
111
117
  listeners: u,
112
118
  setNodeRef: g,
113
119
  transform: p,
114
120
  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}`;
121
+ isDragging: n
122
+ } = j({ 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
123
  return /* @__PURE__ */ b(
118
124
  "div",
119
125
  {
120
126
  ref: g,
121
127
  style: {
122
- transform: j.Transform.toString(p),
128
+ transform: F.Transform.toString(p),
123
129
  transition: f
124
130
  },
125
- className: F(n.item, o && n.itemDragging),
131
+ className: K(o.item, n && o.itemDragging),
126
132
  "data-slot": "data-table-column-order-item",
127
133
  [x]: "data-table-column-order-item",
128
134
  "data-fs-element": "DataTable-ColumnOrder-Item",
@@ -131,19 +137,19 @@ function ae({
131
137
  "button",
132
138
  {
133
139
  type: "button",
134
- className: n.dragHandle,
140
+ className: o.dragHandle,
135
141
  "data-slot": "data-table-column-order-drag-handle",
136
142
  [x]: "data-table-column-order-drag-handle",
137
143
  "aria-label": s,
138
144
  ...c,
139
145
  ...u,
140
- children: /* @__PURE__ */ e(oe, { className: n.gripIcon })
146
+ children: /* @__PURE__ */ e(ie, { className: o.gripIcon })
141
147
  }
142
148
  ),
143
149
  /* @__PURE__ */ e(
144
150
  "span",
145
151
  {
146
- className: n.itemLabel,
152
+ className: o.itemLabel,
147
153
  "data-slot": "data-table-column-order-item-label",
148
154
  [x]: "data-table-column-order-item-label",
149
155
  children: a
@@ -153,85 +159,85 @@ function ae({
153
159
  }
154
160
  );
155
161
  }
156
- function ie({
162
+ function se({
157
163
  columns: t,
158
164
  currentOrder: r,
159
- table: n,
165
+ table: o,
160
166
  dragHandleLabel: c,
161
167
  announcements: u,
162
168
  screenReaderInstructions: g
163
169
  }) {
164
- const p = M(
165
- O(k, {
170
+ const p = E(
171
+ T(B, {
166
172
  activationConstraint: { distance: 3 }
167
173
  }),
168
- O(R, {
169
- coordinateGetter: z
174
+ T(k, {
175
+ coordinateGetter: Z
170
176
  })
171
- ), f = N(
172
- (o) => {
173
- const { active: i, over: a } = o;
177
+ ), f = M(
178
+ (n) => {
179
+ const { active: i, over: a } = n;
174
180
  if (!a || i.id === a.id) return;
175
181
  const s = r.indexOf(i.id), l = r.indexOf(a.id);
176
182
  if (s === -1 || l === -1) return;
177
- const y = B(r, s, l);
178
- n.setColumnOrder(y);
183
+ const y = _(r, s, l);
184
+ o.setColumnOrder(y);
179
185
  },
180
- [r, n]
186
+ [r, o]
181
187
  );
182
188
  return /* @__PURE__ */ e(
183
- E,
189
+ L,
184
190
  {
185
191
  sensors: p,
186
- collisionDetection: L,
192
+ collisionDetection: R,
187
193
  onDragEnd: f,
188
194
  accessibility: {
189
195
  announcements: u,
190
196
  screenReaderInstructions: g
191
197
  },
192
198
  children: /* @__PURE__ */ e(
193
- _,
199
+ G,
194
200
  {
195
- items: t.map((o) => o.id),
196
- strategy: G,
197
- children: t.map((o) => /* @__PURE__ */ e(
198
- ae,
201
+ items: t.map((n) => n.id),
202
+ strategy: z,
203
+ children: t.map((n) => /* @__PURE__ */ e(
204
+ le,
199
205
  {
200
- column: o,
206
+ column: n,
201
207
  dragHandleLabel: c
202
208
  },
203
- o.id
209
+ n.id
204
210
  ))
205
211
  }
206
212
  )
207
213
  }
208
214
  );
209
215
  }
210
- const xe = A.forwardRef(function({
216
+ const Se = N.forwardRef(function({
211
217
  icon: r,
212
- trigger: n,
218
+ trigger: o,
213
219
  label: c,
214
220
  dragHandleLabel: u,
215
221
  announcements: g,
216
222
  screenReaderInstructions: p,
217
223
  contentClassName: f,
218
- align: o = "end",
224
+ align: n = "end",
219
225
  ...i
220
226
  }, a) {
221
- const s = T(), { table: l } = re(), y = l.getAllLeafColumns(), w = y.filter((m) => {
227
+ const s = I(), { table: l } = ne(), y = l.getAllLeafColumns(), D = y.filter((m) => {
222
228
  if (m.id === "select") return !1;
223
229
  const h = m.columnDef.meta;
224
230
  return (h == null ? void 0 : h.enableOrdering) !== !1;
225
231
  });
226
- if (w.length === 0)
232
+ if (D.length === 0)
227
233
  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);
234
+ const S = l.getState().columnOrder && l.getState().columnOrder.length > 0 ? l.getState().columnOrder : y.map((m) => m.id), A = [...D].sort((m, h) => {
235
+ const v = S.indexOf(m.id), O = S.indexOf(h.id);
236
+ return (v === -1 ? Number.MAX_SAFE_INTEGER : v) - (O === -1 ? Number.MAX_SAFE_INTEGER : O);
231
237
  });
232
- return /* @__PURE__ */ b(Q, { ref: a, ...i, children: [
233
- /* @__PURE__ */ e(U, { asChild: !0, children: n ?? /* @__PURE__ */ b(
234
- J,
238
+ return /* @__PURE__ */ b(Y, { ref: a, ...i, children: [
239
+ /* @__PURE__ */ e(ee, { asChild: !0, children: o ?? /* @__PURE__ */ b(
240
+ U,
235
241
  {
236
242
  variant: "tertiary",
237
243
  size: "sm",
@@ -239,26 +245,26 @@ const xe = A.forwardRef(function({
239
245
  [x]: "data-table-column-order-trigger",
240
246
  "data-fs-element": "DataTable-ColumnOrder-Trigger",
241
247
  children: [
242
- r ?? /* @__PURE__ */ e(ne, { className: s.icon }),
248
+ r ?? /* @__PURE__ */ e(ae, { className: s.icon }),
243
249
  /* @__PURE__ */ e("span", { className: s.srOnly, children: c })
244
250
  ]
245
251
  }
246
252
  ) }),
247
253
  /* @__PURE__ */ b(
248
- Y,
254
+ te,
249
255
  {
250
- align: o,
256
+ align: n,
251
257
  className: f,
252
258
  "data-slot": "data-table-column-order-content",
253
259
  [x]: "data-table-column-order-content",
254
260
  "data-fs-element": "DataTable-ColumnOrder-Content",
255
261
  children: [
256
- /* @__PURE__ */ e(ee, { children: c }),
257
- /* @__PURE__ */ e(te, {}),
262
+ /* @__PURE__ */ e(re, { children: c }),
263
+ /* @__PURE__ */ e(oe, {}),
258
264
  /* @__PURE__ */ e(
259
- ie,
265
+ se,
260
266
  {
261
- columns: I,
267
+ columns: A,
262
268
  currentOrder: S,
263
269
  table: l,
264
270
  dragHandleLabel: u,
@@ -272,6 +278,6 @@ const xe = A.forwardRef(function({
272
278
  ] });
273
279
  });
274
280
  export {
275
- xe as DataTableColumnOrder
281
+ Se as DataTableColumnOrder
276
282
  };
277
283
  //# sourceMappingURL=data-table-column-order.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-column-order.js","sources":["../../../src/components/data-table/data-table-column-order.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback } from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { type Column } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type Announcements,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n useSortable,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\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\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Swap vertical icon (default trigger icon)\nconst IconSwapVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <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\" />\n </svg>\n)\n\n// Grip vertical icon (drag handle)\nconst IconGripVertical = (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=\"currentColor\"\n {...props}\n >\n <circle cx=\"9\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"19\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"19\" r=\"1.5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n width: \"1rem\",\n height: \"1rem\",\n },\n gripIcon: {\n width: \"14px\",\n height: \"14px\",\n },\n srOnly: {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n item: {\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n itemDragging: {\n zIndex: 50,\n backgroundColor: tokens.grayA3,\n opacity: 0.8,\n },\n dragHandle: {\n display: \"inline-flex\",\n flexShrink: 0,\n cursor: \"grab\",\n touchAction: \"none\",\n alignItems: \"center\",\n color: tokens.grayA8,\n backgroundColor: \"transparent\",\n ...shorthands.borderWidth(0),\n ...shorthands.padding(0),\n \"&:hover\": {\n color: tokens.grayA12,\n },\n \"&:focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \"&:active\": {\n cursor: \"grabbing\",\n },\n },\n itemLabel: {\n userSelect: \"none\",\n },\n})\n\nexport type DataTableColumnOrderProps = {\n /** Custom icon for the default trigger button. Falls back to swap-vertical icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to an icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Accessible label for the drag handle buttons. Recommended for i18n and accessibility. Receives column label as parameter. */\n dragHandleLabel?: string | ((columnLabel: string) => string)\n /** Custom screen reader announcements for drag-and-drop operations. */\n announcements?: Announcements\n /** Custom screen reader instructions for draggable items. */\n screenReaderInstructions?: ScreenReaderInstructions\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/** Sortable item inside the column order dropdown */\nfunction DataTableColumnOrderItem({\n column,\n dragHandleLabel,\n}: {\n column: Column<unknown, unknown>\n dragHandleLabel?: string | ((columnLabel: string) => string)\n}) {\n const styles = useStyles()\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const meta = column.columnDef.meta as { visibilityLabel?: string } | undefined\n const label =\n meta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n const resolvedDragHandleLabel = dragHandleLabel\n ? typeof dragHandleLabel === \"function\"\n ? dragHandleLabel(label)\n : dragHandleLabel\n : `Drag to reorder ${label}`\n\n return (\n <div\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n className={mergeClasses(styles.item, isDragging && styles.itemDragging)}\n data-slot=\"data-table-column-order-item\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item\" }}\n data-fs-element=\"DataTable-ColumnOrder-Item\"\n >\n <button\n type=\"button\"\n className={styles.dragHandle}\n data-slot=\"data-table-column-order-drag-handle\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-drag-handle\" }}\n aria-label={resolvedDragHandleLabel}\n {...attributes}\n {...listeners}\n >\n <IconGripVertical className={styles.gripIcon} />\n </button>\n <span\n className={styles.itemLabel}\n data-slot=\"data-table-column-order-item-label\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item-label\" }}\n >\n {label}\n </span>\n </div>\n )\n}\n\n/**\n * Inner list component that provides the DnD context.\n * Separated to avoid hook rules issues with early returns.\n */\nfunction DataTableColumnOrderList({\n columns,\n currentOrder,\n table,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: Column<any, unknown>[]\n currentOrder: string[]\n table: { setColumnOrder: (order: string[]) => void }\n dragHandleLabel?: string | ((columnLabel: string) => string)\n announcements?: Announcements\n screenReaderInstructions?: ScreenReaderInstructions\n}) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 3 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [currentOrder, table]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n accessibility={{\n announcements,\n screenReaderInstructions,\n }}\n >\n <SortableContext\n items={columns.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((col) => (\n <DataTableColumnOrderItem\n key={col.id}\n column={col}\n dragHandleLabel={dragHandleLabel}\n />\n ))}\n </SortableContext>\n </DndContext>\n )\n}\n\n/**\n * A dropdown menu for reordering columns in DataTable via drag-and-drop.\n * Shows a draggable list of columns that can be rearranged.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnOrder = React.forwardRef<\n HTMLElement,\n DataTableColumnOrderProps\n>(function DataTableColumnOrder(\n {\n icon,\n trigger,\n label,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n contentClassName,\n align = \"end\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const { table } = useDataTable()\n\n // Get reorderable columns (exclude selection column, respect meta.enableOrdering)\n const allColumns = table.getAllLeafColumns()\n const reorderableColumns = allColumns.filter((col) => {\n if (col.id === \"select\") return false\n const meta = col.columnDef.meta as { enableOrdering?: boolean } | undefined\n return meta?.enableOrdering !== false\n })\n\n // If no reorderable columns, don't render\n if (reorderableColumns.length === 0) {\n return null\n }\n\n // Current order (derive from columns if columnOrder state is empty)\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : allColumns.map((c) => c.id)\n\n // Sort reorderable columns by their position in currentOrder\n const orderedColumns = [...reorderableColumns].sort((a, b) => {\n const indexA = currentOrder.indexOf(a.id)\n const indexB = currentOrder.indexOf(b.id)\n return (\n (indexA === -1 ? Number.MAX_SAFE_INTEGER : indexA) -\n (indexB === -1 ? Number.MAX_SAFE_INTEGER : indexB)\n )\n })\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-slot=\"data-table-column-order-trigger\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-trigger\" }}\n data-fs-element=\"DataTable-ColumnOrder-Trigger\"\n >\n {icon ?? <IconSwapVertical className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-slot=\"data-table-column-order-content\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-content\" }}\n data-fs-element=\"DataTable-ColumnOrder-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DataTableColumnOrderList\n columns={orderedColumns}\n currentOrder={currentOrder}\n table={table}\n dragHandleLabel={dragHandleLabel}\n announcements={announcements}\n screenReaderInstructions={screenReaderInstructions}\n />\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSwapVertical","props","jsx","IconGripVertical","jsxs","useStyles","makeZenithStyles","shorthands","tokens.spacingElement2","tokens.radiusSm","tokens.textSm","tokens.leadingSm","tokens.grayA3","tokens.grayA8","tokens.grayA12","tokens.accentA8","DataTableColumnOrderItem","column","dragHandleLabel","styles","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","meta","label","resolvedDragHandleLabel","CSS","mergeClasses","SLOT_ATTR","DataTableColumnOrderList","columns","currentOrder","table","announcements","screenReaderInstructions","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","oldIndex","newIndex","newOrder","arrayMove","DndContext","closestCenter","SortableContext","c","verticalListSortingStrategy","col","DataTableColumnOrder","React","icon","trigger","contentClassName","align","ref","useDataTable","allColumns","reorderableColumns","orderedColumns","a","b","indexA","indexB","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator"],"mappings":"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"}
1
+ {"version":3,"file":"data-table-column-order.js","sources":["../../../src/components/data-table/data-table-column-order.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback } from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { type Column } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type Announcements,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n useSortable,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Swap vertical icon (default trigger icon)\nconst IconSwapVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <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\" />\n </svg>\n)\n\n// Grip vertical icon (drag handle)\nconst IconGripVertical = (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=\"currentColor\"\n {...props}\n >\n <circle cx=\"9\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"19\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"19\" r=\"1.5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n ...boxModel,\n width: \"1rem\",\n height: \"1rem\",\n },\n gripIcon: {\n ...boxModel,\n width: \"14px\",\n height: \"14px\",\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n item: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n itemDragging: {\n zIndex: 50,\n backgroundColor: tokens.grayA3,\n opacity: 0.8,\n },\n dragHandle: {\n ...nativeControl,\n display: \"inline-flex\",\n flexShrink: 0,\n cursor: \"grab\",\n touchAction: \"none\",\n alignItems: \"center\",\n color: tokens.grayA8,\n backgroundColor: \"transparent\",\n ...shorthands.borderWidth(0),\n ...shorthands.padding(0),\n \"&:hover\": {\n color: tokens.grayA12,\n },\n \"&:focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \"&:active\": {\n cursor: \"grabbing\",\n },\n },\n itemLabel: {\n userSelect: \"none\",\n },\n})\n\nexport type DataTableColumnOrderProps = {\n /** Custom icon for the default trigger button. Falls back to swap-vertical icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to an icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Accessible label for the drag handle buttons. Recommended for i18n and accessibility. Receives column label as parameter. */\n dragHandleLabel?: string | ((columnLabel: string) => string)\n /** Custom screen reader announcements for drag-and-drop operations. */\n announcements?: Announcements\n /** Custom screen reader instructions for draggable items. */\n screenReaderInstructions?: ScreenReaderInstructions\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/** Sortable item inside the column order dropdown */\nfunction DataTableColumnOrderItem({\n column,\n dragHandleLabel,\n}: {\n column: Column<unknown, unknown>\n dragHandleLabel?: string | ((columnLabel: string) => string)\n}) {\n const styles = useStyles()\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const meta = column.columnDef.meta as { visibilityLabel?: string } | undefined\n const label =\n meta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n const resolvedDragHandleLabel = dragHandleLabel\n ? typeof dragHandleLabel === \"function\"\n ? dragHandleLabel(label)\n : dragHandleLabel\n : `Drag to reorder ${label}`\n\n return (\n <div\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n className={mergeClasses(styles.item, isDragging && styles.itemDragging)}\n data-slot=\"data-table-column-order-item\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item\" }}\n data-fs-element=\"DataTable-ColumnOrder-Item\"\n >\n <button\n type=\"button\"\n className={styles.dragHandle}\n data-slot=\"data-table-column-order-drag-handle\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-drag-handle\" }}\n aria-label={resolvedDragHandleLabel}\n {...attributes}\n {...listeners}\n >\n <IconGripVertical className={styles.gripIcon} />\n </button>\n <span\n className={styles.itemLabel}\n data-slot=\"data-table-column-order-item-label\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item-label\" }}\n >\n {label}\n </span>\n </div>\n )\n}\n\n/**\n * Inner list component that provides the DnD context.\n * Separated to avoid hook rules issues with early returns.\n */\nfunction DataTableColumnOrderList({\n columns,\n currentOrder,\n table,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: Column<any, unknown>[]\n currentOrder: string[]\n table: { setColumnOrder: (order: string[]) => void }\n dragHandleLabel?: string | ((columnLabel: string) => string)\n announcements?: Announcements\n screenReaderInstructions?: ScreenReaderInstructions\n}) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 3 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [currentOrder, table]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n accessibility={{\n announcements,\n screenReaderInstructions,\n }}\n >\n <SortableContext\n items={columns.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((col) => (\n <DataTableColumnOrderItem\n key={col.id}\n column={col}\n dragHandleLabel={dragHandleLabel}\n />\n ))}\n </SortableContext>\n </DndContext>\n )\n}\n\n/**\n * A dropdown menu for reordering columns in DataTable via drag-and-drop.\n * Shows a draggable list of columns that can be rearranged.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnOrder = React.forwardRef<\n HTMLElement,\n DataTableColumnOrderProps\n>(function DataTableColumnOrder(\n {\n icon,\n trigger,\n label,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n contentClassName,\n align = \"end\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const { table } = useDataTable()\n\n // Get reorderable columns (exclude selection column, respect meta.enableOrdering)\n const allColumns = table.getAllLeafColumns()\n const reorderableColumns = allColumns.filter((col) => {\n if (col.id === \"select\") return false\n const meta = col.columnDef.meta as { enableOrdering?: boolean } | undefined\n return meta?.enableOrdering !== false\n })\n\n // If no reorderable columns, don't render\n if (reorderableColumns.length === 0) {\n return null\n }\n\n // Current order (derive from columns if columnOrder state is empty)\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : allColumns.map((c) => c.id)\n\n // Sort reorderable columns by their position in currentOrder\n const orderedColumns = [...reorderableColumns].sort((a, b) => {\n const indexA = currentOrder.indexOf(a.id)\n const indexB = currentOrder.indexOf(b.id)\n return (\n (indexA === -1 ? Number.MAX_SAFE_INTEGER : indexA) -\n (indexB === -1 ? Number.MAX_SAFE_INTEGER : indexB)\n )\n })\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-slot=\"data-table-column-order-trigger\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-trigger\" }}\n data-fs-element=\"DataTable-ColumnOrder-Trigger\"\n >\n {icon ?? <IconSwapVertical className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-slot=\"data-table-column-order-content\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-content\" }}\n data-fs-element=\"DataTable-ColumnOrder-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DataTableColumnOrderList\n columns={orderedColumns}\n currentOrder={currentOrder}\n table={table}\n dragHandleLabel={dragHandleLabel}\n announcements={announcements}\n screenReaderInstructions={screenReaderInstructions}\n />\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSwapVertical","props","jsx","IconGripVertical","jsxs","useStyles","makeZenithStyles","boxModel","shorthands","tokens.spacingElement2","tokens.radiusSm","tokens.textSm","tokens.leadingSm","tokens.grayA3","nativeControl","tokens.grayA8","tokens.grayA12","tokens.accentA8","DataTableColumnOrderItem","column","dragHandleLabel","styles","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","meta","label","resolvedDragHandleLabel","CSS","mergeClasses","SLOT_ATTR","DataTableColumnOrderList","columns","currentOrder","table","announcements","screenReaderInstructions","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","oldIndex","newIndex","newOrder","arrayMove","DndContext","closestCenter","SortableContext","c","verticalListSortingStrategy","col","DataTableColumnOrder","React","icon","trigger","contentClassName","align","ref","useDataTable","allColumns","reorderableColumns","orderedColumns","a","b","indexA","indexB","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { jsxs as l, jsx as t } from "react/jsx-runtime";
2
- import * as b from "react";
2
+ import * as w from "react";
3
3
  import { shorthands as n } from "@epilot/zenith-runtime/v1";
4
- import { makeZenithStyles as w } from "../../styles/make-styles.js";
5
- import { Button as D } from "../button/button.js";
6
- import { DropdownMenu as y, DropdownMenuTrigger as C, DropdownMenuContent as x, DropdownMenuLabel as T, DropdownMenuSeparator as M, DropdownMenuCheckboxItem as V } from "../dropdown-menu/dropdown-menu.js";
7
- import { useDataTable as v } from "./hooks/use-data-table.js";
8
- const S = (r) => /* @__PURE__ */ t(
4
+ import { makeZenithStyles as D } from "../../styles/make-styles.js";
5
+ import { boxModel as d } from "../../styles/host-reset.js";
6
+ import { Button as y } from "../button/button.js";
7
+ import { DropdownMenu as C, DropdownMenuTrigger as x, DropdownMenuContent as M, DropdownMenuLabel as T, DropdownMenuSeparator as V, DropdownMenuCheckboxItem as v } from "../dropdown-menu/dropdown-menu.js";
8
+ import { useDataTable as S } from "./hooks/use-data-table.js";
9
+ const Z = (r) => /* @__PURE__ */ t(
9
10
  "svg",
10
11
  {
11
12
  xmlns: "http://www.w3.org/2000/svg",
@@ -16,12 +17,14 @@ const S = (r) => /* @__PURE__ */ t(
16
17
  ...r,
17
18
  children: /* @__PURE__ */ t("path", { d: "M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z" })
18
19
  }
19
- ), Z = w({
20
+ ), k = D({
20
21
  icon: {
22
+ ...d,
21
23
  width: "1rem",
22
24
  height: "1rem"
23
25
  },
24
26
  srOnly: {
27
+ ...d,
25
28
  position: "absolute",
26
29
  width: "1px",
27
30
  height: "1px",
@@ -31,39 +34,39 @@ const S = (r) => /* @__PURE__ */ t(
31
34
  clip: "rect(0, 0, 0, 0)",
32
35
  whiteSpace: "nowrap"
33
36
  }
34
- }), H = b.forwardRef(function({ icon: d, trigger: h, label: o, contentClassName: m, align: c = "end", ...p }, q) {
35
- const { table: f } = v(), a = Z(), s = f.getAllColumns().filter((e) => e.getCanHide());
36
- return s.length === 0 ? null : /* @__PURE__ */ l(y, { ref: q, ...p, children: [
37
- /* @__PURE__ */ t(C, { asChild: !0, children: h ?? /* @__PURE__ */ l(
38
- D,
37
+ }), Q = w.forwardRef(function({ icon: h, trigger: m, label: o, contentClassName: c, align: p = "end", ...q }, f) {
38
+ const { table: g } = S(), a = k(), s = g.getAllColumns().filter((e) => e.getCanHide());
39
+ return s.length === 0 ? null : /* @__PURE__ */ l(C, { ref: f, ...q, children: [
40
+ /* @__PURE__ */ t(x, { asChild: !0, children: m ?? /* @__PURE__ */ l(
41
+ y,
39
42
  {
40
43
  variant: "tertiary",
41
44
  size: "sm",
42
45
  "data-fs-element": "DataTable-ColumnVisibility-Trigger",
43
46
  children: [
44
- d ?? /* @__PURE__ */ t(S, { className: a.icon }),
47
+ h ?? /* @__PURE__ */ t(Z, { className: a.icon }),
45
48
  /* @__PURE__ */ t("span", { className: a.srOnly, children: o })
46
49
  ]
47
50
  }
48
51
  ) }),
49
52
  /* @__PURE__ */ l(
50
- x,
53
+ M,
51
54
  {
52
- align: c,
53
- className: m,
55
+ align: p,
56
+ className: c,
54
57
  "data-fs-element": "DataTable-ColumnVisibility-Content",
55
58
  children: [
56
59
  /* @__PURE__ */ t(T, { children: o }),
57
- /* @__PURE__ */ t(M, {}),
60
+ /* @__PURE__ */ t(V, {}),
58
61
  s.map((e) => {
59
- const i = e.columnDef.meta, g = (i == null ? void 0 : i.visibilityLabel) ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id);
62
+ const i = e.columnDef.meta, u = (i == null ? void 0 : i.visibilityLabel) ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id);
60
63
  return /* @__PURE__ */ t(
61
- V,
64
+ v,
62
65
  {
63
66
  checked: e.getIsVisible(),
64
- onCheckedChange: (u) => e.toggleVisibility(!!u),
67
+ onCheckedChange: (b) => e.toggleVisibility(!!b),
65
68
  "data-fs-element": "DataTable-ColumnVisibility-Item",
66
- children: g
69
+ children: u
67
70
  },
68
71
  e.id
69
72
  );
@@ -74,6 +77,6 @@ const S = (r) => /* @__PURE__ */ t(
74
77
  ] });
75
78
  });
76
79
  export {
77
- H as DataTableColumnVisibility
80
+ Q as DataTableColumnVisibility
78
81
  };
79
82
  //# sourceMappingURL=data-table-column-visibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table-column-visibility.js","sources":["../../../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Settings/gear icon (default)\nconst IconSettings = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n width: \"1rem\",\n height: \"1rem\",\n },\n srOnly: {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nexport type DataTableColumnVisibilityProps = {\n /** Custom icon for the default trigger button. Falls back to settings gear icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to a settings icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/**\n * A dropdown menu for toggling column visibility in DataTable.\n * Shows checkboxes for each column that can be hidden.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnVisibility = React.forwardRef<\n HTMLElement,\n DataTableColumnVisibilityProps\n>(function DataTableColumnVisibility(\n { icon, trigger, label, contentClassName, align = \"end\", ...props },\n ref\n) {\n const { table } = useDataTable()\n const styles = useStyles()\n\n // Get columns that can be hidden (excludes selection column, etc.)\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n // If no hideable columns, don't render anything\n if (columns.length === 0) {\n return null\n }\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-fs-element=\"DataTable-ColumnVisibility-Trigger\"\n >\n {icon ?? <IconSettings className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-fs-element=\"DataTable-ColumnVisibility-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n // Get column header text for display\n // Priority: meta.visibilityLabel > string header > column.id\n const columnMeta = column.columnDef.meta as\n { visibilityLabel?: string } | undefined\n const headerText =\n columnMeta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n data-fs-element=\"DataTable-ColumnVisibility-Item\"\n >\n {headerText}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSettings","props","jsx","useStyles","makeZenithStyles","shorthands","DataTableColumnVisibility","React","icon","trigger","label","contentClassName","align","ref","table","useDataTable","styles","columns","column","jsxs","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnMeta","headerText","DropdownMenuCheckboxItem","value"],"mappings":";;;;;;;AAiBA,MAAMA,IAAe,CAACC,MACpB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,iqDAAA,CAAiqD;AAAA,EAAA;AAC3qD,GAGIC,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAGC,EAAW,QAAQ,CAAC;AAAA,IACvB,GAAGA,EAAW,OAAO,MAAM;AAAA,IAC3B,GAAGA,EAAW,SAAS,QAAQ;AAAA,IAC/B,MAAM;AAAA,IACN,YAAY;AAAA,EAAA;AAEhB,CAAC,GAoBYC,IAA4BC,EAAM,WAG7C,SACA,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,kBAAAC,GAAkB,OAAAC,IAAQ,OAAO,GAAGX,EAAA,GAC5DY,GACA;AACA,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZC,IAASb,EAAA,GAGTc,IAAUH,EAAM,cAAA,EAAgB,OAAO,CAACI,MAAWA,EAAO,YAAY;AAG5E,SAAID,EAAQ,WAAW,IACd,OAIP,gBAAAE,EAACC,GAAA,EAAa,KAAAP,GAAW,GAAGZ,GAC1B,UAAA;AAAA,IAAA,gBAAAC,EAACmB,GAAA,EAAoB,SAAO,IACzB,UAAAZ,KACC,gBAAAU;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,mBAAgB;AAAA,QAEf,UAAA;AAAA,UAAAd,KAAQ,gBAAAN,EAACF,GAAA,EAAa,WAAWgB,EAAO,MAAM;AAAA,UAC/C,gBAAAd,EAAC,QAAA,EAAK,WAAWc,EAAO,QAAS,UAAAN,EAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAG7C;AAAA,IACA,gBAAAS;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,OAAAX;AAAA,QACA,WAAWD;AAAA,QACX,mBAAgB;AAAA,QAEhB,UAAA;AAAA,UAAA,gBAAAT,EAACsB,KAAmB,UAAAd,EAAA,CAAM;AAAA,4BACzBe,GAAA,EAAsB;AAAA,UACtBR,EAAQ,IAAI,CAACC,MAAW;AAGvB,kBAAMQ,IAAaR,EAAO,UAAU,MAE9BS,KACJD,KAAA,gBAAAA,EAAY,qBACX,OAAOR,EAAO,UAAU,UAAW,WAChCA,EAAO,UAAU,SACjBA,EAAO;AAEb,mBACE,gBAAAhB;AAAA,cAAC0B;AAAA,cAAA;AAAA,gBAEC,SAASV,EAAO,aAAA;AAAA,gBAChB,iBAAiB,CAACW,MAAUX,EAAO,iBAAiB,CAAC,CAACW,CAAK;AAAA,gBAC3D,mBAAgB;AAAA,gBAEf,UAAAF;AAAA,cAAA;AAAA,cALIT,EAAO;AAAA,YAAA;AAAA,UAQlB,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;"}
1
+ {"version":3,"file":"data-table-column-visibility.js","sources":["../../../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Settings/gear icon (default)\nconst IconSettings = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n ...boxModel,\n width: \"1rem\",\n height: \"1rem\",\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nexport type DataTableColumnVisibilityProps = {\n /** Custom icon for the default trigger button. Falls back to settings gear icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to a settings icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/**\n * A dropdown menu for toggling column visibility in DataTable.\n * Shows checkboxes for each column that can be hidden.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnVisibility = React.forwardRef<\n HTMLElement,\n DataTableColumnVisibilityProps\n>(function DataTableColumnVisibility(\n { icon, trigger, label, contentClassName, align = \"end\", ...props },\n ref\n) {\n const { table } = useDataTable()\n const styles = useStyles()\n\n // Get columns that can be hidden (excludes selection column, etc.)\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n // If no hideable columns, don't render anything\n if (columns.length === 0) {\n return null\n }\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-fs-element=\"DataTable-ColumnVisibility-Trigger\"\n >\n {icon ?? <IconSettings className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-fs-element=\"DataTable-ColumnVisibility-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n // Get column header text for display\n // Priority: meta.visibilityLabel > string header > column.id\n const columnMeta = column.columnDef.meta as\n { visibilityLabel?: string } | undefined\n const headerText =\n columnMeta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n data-fs-element=\"DataTable-ColumnVisibility-Item\"\n >\n {headerText}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSettings","props","jsx","useStyles","makeZenithStyles","boxModel","shorthands","DataTableColumnVisibility","React","icon","trigger","label","contentClassName","align","ref","table","useDataTable","styles","columns","column","jsxs","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnMeta","headerText","DropdownMenuCheckboxItem","value"],"mappings":";;;;;;;;AAkBA,MAAMA,IAAe,CAACC,MACpB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,iqDAAA,CAAiqD;AAAA,EAAA;AAC3qD,GAGIC,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,GAAGC;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACN,GAAGA;AAAA,IACH,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAGC,EAAW,QAAQ,CAAC;AAAA,IACvB,GAAGA,EAAW,OAAO,MAAM;AAAA,IAC3B,GAAGA,EAAW,SAAS,QAAQ;AAAA,IAC/B,MAAM;AAAA,IACN,YAAY;AAAA,EAAA;AAEhB,CAAC,GAoBYC,IAA4BC,EAAM,WAG7C,SACA,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,kBAAAC,GAAkB,OAAAC,IAAQ,OAAO,GAAGZ,EAAA,GAC5Da,GACA;AACA,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZC,IAASd,EAAA,GAGTe,IAAUH,EAAM,cAAA,EAAgB,OAAO,CAACI,MAAWA,EAAO,YAAY;AAG5E,SAAID,EAAQ,WAAW,IACd,OAIP,gBAAAE,EAACC,GAAA,EAAa,KAAAP,GAAW,GAAGb,GAC1B,UAAA;AAAA,IAAA,gBAAAC,EAACoB,GAAA,EAAoB,SAAO,IACzB,UAAAZ,KACC,gBAAAU;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,mBAAgB;AAAA,QAEf,UAAA;AAAA,UAAAd,KAAQ,gBAAAP,EAACF,GAAA,EAAa,WAAWiB,EAAO,MAAM;AAAA,UAC/C,gBAAAf,EAAC,QAAA,EAAK,WAAWe,EAAO,QAAS,UAAAN,EAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAG7C;AAAA,IACA,gBAAAS;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,OAAAX;AAAA,QACA,WAAWD;AAAA,QACX,mBAAgB;AAAA,QAEhB,UAAA;AAAA,UAAA,gBAAAV,EAACuB,KAAmB,UAAAd,EAAA,CAAM;AAAA,4BACzBe,GAAA,EAAsB;AAAA,UACtBR,EAAQ,IAAI,CAACC,MAAW;AAGvB,kBAAMQ,IAAaR,EAAO,UAAU,MAE9BS,KACJD,KAAA,gBAAAA,EAAY,qBACX,OAAOR,EAAO,UAAU,UAAW,WAChCA,EAAO,UAAU,SACjBA,EAAO;AAEb,mBACE,gBAAAjB;AAAA,cAAC2B;AAAA,cAAA;AAAA,gBAEC,SAASV,EAAO,aAAA;AAAA,gBAChB,iBAAiB,CAACW,MAAUX,EAAO,iBAAiB,CAAC,CAACW,CAAK;AAAA,gBAC3D,mBAAgB;AAAA,gBAEf,UAAAF;AAAA,cAAA;AAAA,cALIT,EAAO;AAAA,YAAA;AAAA,UAQlB,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;"}