@epilot/volt-ui-experimental-griffel 0.2.3 → 0.3.1

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 (79) hide show
  1. package/ADOPTING.md +416 -0
  2. package/README.md +32 -31
  3. package/dist/components/alert-dialog/alert-dialog.js +61 -59
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar.js +6 -6
  6. package/dist/components/avatar/avatar.js.map +1 -1
  7. package/dist/components/badge/badge.js +47 -39
  8. package/dist/components/badge/badge.js.map +1 -1
  9. package/dist/components/button/button.js +71 -68
  10. package/dist/components/button/button.js.map +1 -1
  11. package/dist/components/checkbox/checkbox.js +23 -20
  12. package/dist/components/checkbox/checkbox.js.map +1 -1
  13. package/dist/components/command/command.js +50 -35
  14. package/dist/components/command/command.js.map +1 -1
  15. package/dist/components/data-table/data-table.js +89 -88
  16. package/dist/components/data-table/data-table.js.map +1 -1
  17. package/dist/components/density-provider/density-provider.js +28 -0
  18. package/dist/components/density-provider/density-provider.js.map +1 -0
  19. package/dist/components/dialog/dialog.js +122 -100
  20. package/dist/components/dialog/dialog.js.map +1 -1
  21. package/dist/components/drawer/drawer.js +61 -59
  22. package/dist/components/drawer/drawer.js.map +1 -1
  23. package/dist/components/dropdown-menu/dropdown-menu.js +88 -85
  24. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  25. package/dist/components/field/field-combobox.js +121 -106
  26. package/dist/components/field/field-combobox.js.map +1 -1
  27. package/dist/components/field/field.js +105 -104
  28. package/dist/components/field/field.js.map +1 -1
  29. package/dist/components/list/list.js +282 -308
  30. package/dist/components/list/list.js.map +1 -1
  31. package/dist/components/pill/pill.js +58 -56
  32. package/dist/components/pill/pill.js.map +1 -1
  33. package/dist/components/popover/popover.js +47 -38
  34. package/dist/components/popover/popover.js.map +1 -1
  35. package/dist/components/radio/radio.js +21 -18
  36. package/dist/components/radio/radio.js.map +1 -1
  37. package/dist/components/select/select.js +185 -156
  38. package/dist/components/select/select.js.map +1 -1
  39. package/dist/components/skeleton/skeleton.js +2 -2
  40. package/dist/components/skeleton/skeleton.js.map +1 -1
  41. package/dist/components/switch/switch.js +34 -29
  42. package/dist/components/switch/switch.js.map +1 -1
  43. package/dist/components/table/table-pagination.js +92 -90
  44. package/dist/components/table/table-pagination.js.map +1 -1
  45. package/dist/components/table/table.js +109 -121
  46. package/dist/components/table/table.js.map +1 -1
  47. package/dist/components/toggle/toggle.js +29 -29
  48. package/dist/components/toggle/toggle.js.map +1 -1
  49. package/dist/components/tooltip/tooltip.js +36 -34
  50. package/dist/components/tooltip/tooltip.js.map +1 -1
  51. package/dist/index.d.ts +600 -427
  52. package/dist/index.js +215 -212
  53. package/dist/index.js.map +1 -1
  54. package/dist/packages/volt-runtime/dist/sheet.js +27 -10
  55. package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
  56. package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
  57. package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
  58. package/dist/styles/document-context.js +12 -0
  59. package/dist/styles/document-context.js.map +1 -0
  60. package/dist/styles/make-styles.js +18 -10
  61. package/dist/styles/make-styles.js.map +1 -1
  62. package/dist/tokens/core.generated.js +1238 -1166
  63. package/dist/tokens/core.generated.js.map +1 -1
  64. package/dist/tokens/index.d.ts +442 -415
  65. package/dist/tokens/index.js +1105 -1078
  66. package/dist/tokens/index.js.map +1 -1
  67. package/dist/tokens/install.js +9 -5
  68. package/dist/tokens/install.js.map +1 -1
  69. package/dist/tokens/use-palette-tokens.js +20 -0
  70. package/dist/tokens/use-palette-tokens.js.map +1 -0
  71. package/dist/tokens.json +83 -2
  72. package/package.json +13 -5
  73. package/scripts/migration-diagnostics-core.mjs +859 -0
  74. package/scripts/migration-diagnostics.mjs +353 -0
  75. package/scripts/migration-sweep.mjs +179 -0
  76. package/AGENTS.md +0 -153
  77. package/AUTHORING.md +0 -292
  78. package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
  79. package/dist/packages/volt-runtime/dist/styles/make-styles.js.map +0 -1
@@ -1,15 +1,16 @@
1
1
  import { jsx as t, jsxs as a } from "react/jsx-runtime";
2
- import * as F from "react";
3
- import { Root as G, Trigger as X, Value as Q, Icon as U, Portal as Z, Content as q, Viewport as J, Group as K, Label as Y, Item as b, ItemIndicator as ee, ItemText as te } from "../../vendor/@radix-ui/react-select/dist/index.js";
2
+ import * as G from "react";
3
+ import { Root as X, Trigger as Q, Value as U, Icon as Z, Portal as q, Content as J, Viewport as K, Group as Y, Label as b, Item as ee, ItemIndicator as te, ItemText as oe } from "../../vendor/@radix-ui/react-select/dist/index.js";
4
4
  import { shorthands as i } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
5
- import { SLOT_ATTR as oe } from "../../packages/volt-runtime/dist/renderer/contract.js";
6
- import { mergeClasses as ne } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
7
- import { makeVoltStyles as re } from "../../styles/make-styles.js";
8
- import { radiusMd as ie, grayA6 as ae, radiusLg as A, spacingElement3 as ce, accentA3 as W, leadingSm as m, textSm as u, grayA11 as k, fontWeightSemibold as se, leadingXs as de, textXs as ge, semBody as pe, accent8 as he, grayA4 as C, grayA3 as g, spacingElement1 as le, spacingGroup1 as R, accent11 as x, trackingNormal as me, accentA8 as ue, spacingElement2 as ve } from "../../tokens/index.js";
9
- import { calculatePagination as fe, getPageNumbers as we, clampPage as ke } from "../../lib/pagination.js";
10
- import { TooltipProvider as Ce, Tooltip as xe, TooltipTrigger as ye, TooltipContent as Ie } from "../tooltip/tooltip.js";
5
+ import { SLOT_ATTR as ne } from "../../packages/volt-runtime/dist/renderer/contract.js";
6
+ import { mergeClasses as re } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
7
+ import { makeVoltStyles as ie } from "../../styles/make-styles.js";
8
+ import { radiusMd as ae, grayA6 as ce, radiusLg as W, spacingElement3 as se, accentA3 as R, leadingSm as m, textSm as u, grayA11 as k, fontWeightSemibold as de, leadingXs as ge, textXs as pe, semBody as he, accent8 as le, grayA4 as y, grayA3 as g, spacingElement1 as me, spacingGroup1 as E, accent11 as C, trackingNormal as ue, accentA8 as ve, spacingElement2 as fe } from "../../tokens/index.js";
9
+ import { useDensity as we } from "../density-provider/density-provider.js";
10
+ import { calculatePagination as ke, getPageNumbers as ye, clampPage as Ce } from "../../lib/pagination.js";
11
+ import { TooltipProvider as xe, Tooltip as Ie, TooltipTrigger as Pe, TooltipContent as Ne } from "../tooltip/tooltip.js";
11
12
  import { Button as d } from "../button/button.js";
12
- const Pe = (r) => /* @__PURE__ */ a(
13
+ const Se = (r) => /* @__PURE__ */ a(
13
14
  "svg",
14
15
  {
15
16
  xmlns: "http://www.w3.org/2000/svg",
@@ -27,7 +28,7 @@ const Pe = (r) => /* @__PURE__ */ a(
27
28
  /* @__PURE__ */ t("path", { d: "m15 18-6-6 6-6" })
28
29
  ]
29
30
  }
30
- ), Ne = (r) => /* @__PURE__ */ t(
31
+ ), Le = (r) => /* @__PURE__ */ t(
31
32
  "svg",
32
33
  {
33
34
  xmlns: "http://www.w3.org/2000/svg",
@@ -42,7 +43,7 @@ const Pe = (r) => /* @__PURE__ */ a(
42
43
  ...r,
43
44
  children: /* @__PURE__ */ t("path", { d: "m15 18-6-6 6-6" })
44
45
  }
45
- ), Se = (r) => /* @__PURE__ */ t(
46
+ ), Be = (r) => /* @__PURE__ */ t(
46
47
  "svg",
47
48
  {
48
49
  xmlns: "http://www.w3.org/2000/svg",
@@ -57,7 +58,7 @@ const Pe = (r) => /* @__PURE__ */ a(
57
58
  ...r,
58
59
  children: /* @__PURE__ */ t("path", { d: "m9 18 6-6-6-6" })
59
60
  }
60
- ), Le = (r) => /* @__PURE__ */ a(
61
+ ), Te = (r) => /* @__PURE__ */ a(
61
62
  "svg",
62
63
  {
63
64
  xmlns: "http://www.w3.org/2000/svg",
@@ -75,7 +76,7 @@ const Pe = (r) => /* @__PURE__ */ a(
75
76
  /* @__PURE__ */ t("path", { d: "M18 6v12" })
76
77
  ]
77
78
  }
78
- ), Be = (r) => /* @__PURE__ */ t(
79
+ ), je = (r) => /* @__PURE__ */ t(
79
80
  "svg",
80
81
  {
81
82
  xmlns: "http://www.w3.org/2000/svg",
@@ -90,7 +91,7 @@ const Pe = (r) => /* @__PURE__ */ a(
90
91
  ...r,
91
92
  children: /* @__PURE__ */ t("path", { d: "m6 9 6 6 6-6" })
92
93
  }
93
- ), Te = (r) => /* @__PURE__ */ t(
94
+ ), ze = (r) => /* @__PURE__ */ t(
94
95
  "svg",
95
96
  {
96
97
  xmlns: "http://www.w3.org/2000/svg",
@@ -105,30 +106,30 @@ const Pe = (r) => /* @__PURE__ */ a(
105
106
  ...r,
106
107
  children: /* @__PURE__ */ t("path", { d: "M20 6 9 17l-5-5" })
107
108
  }
108
- ), je = [10, 25, 50, 100], ze = re({
109
+ ), Ae = [10, 25, 50, 100], We = ie({
109
110
  root: {
110
111
  display: "flex",
111
112
  alignItems: "center",
112
113
  justifyContent: "space-between",
113
- gap: R,
114
- ...i.paddingBlock(ce),
114
+ gap: E,
115
+ ...i.paddingBlock(se),
115
116
  fontSize: u,
116
117
  lineHeight: m
117
118
  },
118
119
  left: {
119
120
  display: "flex",
120
121
  alignItems: "center",
121
- gap: ve
122
+ gap: fe
122
123
  },
123
124
  navButton: {
124
125
  backgroundColor: g,
125
- color: x,
126
+ color: C,
126
127
  ":hover": {
127
- backgroundColor: C
128
+ backgroundColor: y
128
129
  },
129
130
  ":disabled": {
130
131
  backgroundColor: g,
131
- color: ue,
132
+ color: ve,
132
133
  pointerEvents: "none"
133
134
  }
134
135
  },
@@ -137,18 +138,18 @@ const Pe = (r) => /* @__PURE__ */ a(
137
138
  },
138
139
  pageButtonInactive: {
139
140
  backgroundColor: "transparent",
140
- color: x,
141
+ color: C,
141
142
  ":hover": {
142
143
  backgroundColor: g
143
144
  },
144
145
  ":active": {
145
- backgroundColor: C
146
+ backgroundColor: y
146
147
  }
147
148
  },
148
149
  ellipsisButton: {
149
- letterSpacing: me,
150
+ letterSpacing: ue,
150
151
  backgroundColor: "transparent",
151
- color: x,
152
+ color: C,
152
153
  ":hover": {
153
154
  backgroundColor: g
154
155
  }
@@ -156,7 +157,7 @@ const Pe = (r) => /* @__PURE__ */ a(
156
157
  right: {
157
158
  display: "flex",
158
159
  alignItems: "center",
159
- gap: R,
160
+ gap: E,
160
161
  paddingRight: "0.125rem"
161
162
  },
162
163
  range: {
@@ -172,8 +173,8 @@ const Pe = (r) => /* @__PURE__ */ a(
172
173
  minWidth: "4rem",
173
174
  alignItems: "center",
174
175
  justifyContent: "space-between",
175
- gap: le,
176
- ...i.borderRadius(A),
176
+ gap: me,
177
+ ...i.borderRadius(W),
177
178
  backgroundColor: g,
178
179
  ...i.paddingInline("0.75rem"),
179
180
  fontSize: u,
@@ -181,12 +182,12 @@ const Pe = (r) => /* @__PURE__ */ a(
181
182
  cursor: "pointer",
182
183
  ...i.borderWidth(0),
183
184
  ":hover": {
184
- backgroundColor: C
185
+ backgroundColor: y
185
186
  },
186
187
  ":focus": {
187
188
  outlineWidth: "2px",
188
189
  outlineStyle: "solid",
189
- outlineColor: he,
190
+ outlineColor: le,
190
191
  outlineOffset: "2px"
191
192
  },
192
193
  ":disabled": {
@@ -203,9 +204,9 @@ const Pe = (r) => /* @__PURE__ */ a(
203
204
  position: "relative",
204
205
  zIndex: 50,
205
206
  ...i.overflow("hidden"),
206
- ...i.borderRadius(A),
207
- ...i.border("1px", "solid", ae),
208
- backgroundColor: pe,
207
+ ...i.borderRadius(W),
208
+ ...i.border("1px", "solid", ce),
209
+ backgroundColor: he,
209
210
  boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)"
210
211
  },
211
212
  selectViewport: {
@@ -213,9 +214,9 @@ const Pe = (r) => /* @__PURE__ */ a(
213
214
  },
214
215
  selectLabel: {
215
216
  ...i.padding("0.375rem", "0.5rem"),
216
- fontSize: ge,
217
- lineHeight: de,
218
- fontWeight: se,
217
+ fontSize: pe,
218
+ lineHeight: ge,
219
+ fontWeight: de,
219
220
  color: k
220
221
  },
221
222
  selectItem: {
@@ -224,16 +225,16 @@ const Pe = (r) => /* @__PURE__ */ a(
224
225
  cursor: "pointer",
225
226
  userSelect: "none",
226
227
  alignItems: "center",
227
- ...i.borderRadius(ie),
228
+ ...i.borderRadius(ae),
228
229
  ...i.padding("0.375rem", "0.5rem", "0.375rem", "2rem"),
229
230
  fontSize: u,
230
231
  lineHeight: m,
231
232
  outlineStyle: "none",
232
233
  ":focus": {
233
- backgroundColor: W
234
+ backgroundColor: R
234
235
  },
235
236
  "&[data-state='checked']": {
236
- backgroundColor: W
237
+ backgroundColor: R
237
238
  }
238
239
  },
239
240
  selectItemIndicator: {
@@ -245,39 +246,39 @@ const Pe = (r) => /* @__PURE__ */ a(
245
246
  alignItems: "center",
246
247
  justifyContent: "center"
247
248
  }
248
- }), _e = F.forwardRef(function({
249
- page: y,
249
+ }), Xe = G.forwardRef(function({
250
+ page: x,
250
251
  totalItems: p,
251
252
  pageSize: v,
252
253
  onPageChange: s,
253
- onPageSizeChange: E,
254
- pageSizeOptions: V = je,
254
+ onPageSizeChange: V,
255
+ pageSizeOptions: O = Ae,
255
256
  siblingCount: $ = 2,
256
257
  disabled: c = !1,
257
258
  labels: e,
258
- className: H,
259
- ...O
260
- }, D) {
261
- var L;
262
- const o = ze(), { totalPages: f, start: I, end: P, isFirstPage: N, isLastPage: S } = fe({
263
- page: y,
259
+ className: D,
260
+ ...H
261
+ }, M) {
262
+ var B;
263
+ const o = We(), I = we(), { totalPages: f, start: P, end: N, isFirstPage: S, isLastPage: L } = ke({
264
+ page: x,
264
265
  pageSize: v,
265
266
  totalItems: p
266
- }), h = ke(y, f), M = we(h, f, $), _ = (n) => {
267
+ }), h = Ce(x, f), _ = ye(h, f, $), F = (n) => {
267
268
  const l = parseInt(n, 10);
268
- isNaN(l) || E(l);
269
+ isNaN(l) || V(l);
269
270
  };
270
- return p === 0 ? null : /* @__PURE__ */ t(Ce, { children: /* @__PURE__ */ a(
271
+ return p === 0 ? null : /* @__PURE__ */ t(xe, { children: /* @__PURE__ */ a(
271
272
  "div",
272
273
  {
273
- ref: D,
274
+ ref: M,
274
275
  "data-slot": "table-pagination",
275
- [oe]: "table-pagination",
276
+ [ne]: "table-pagination",
276
277
  "data-fs-element": "TablePagination",
277
278
  role: "navigation",
278
279
  "aria-label": e == null ? void 0 : e.navigation,
279
- className: ne(o.root, H),
280
- ...O,
280
+ className: re(o.root, D),
281
+ ...H,
281
282
  children: [
282
283
  /* @__PURE__ */ a("div", { className: o.left, children: [
283
284
  /* @__PURE__ */ t(
@@ -286,11 +287,11 @@ const Pe = (r) => /* @__PURE__ */ a(
286
287
  variant: "secondary",
287
288
  size: "icon-sm",
288
289
  shape: "normal",
289
- disabled: c || N,
290
+ disabled: c || S,
290
291
  onClick: () => s(1),
291
292
  "aria-label": e == null ? void 0 : e.firstPage,
292
293
  className: o.navButton,
293
- children: /* @__PURE__ */ t(Pe, {})
294
+ children: /* @__PURE__ */ t(Se, {})
294
295
  }
295
296
  ),
296
297
  /* @__PURE__ */ t(
@@ -299,19 +300,19 @@ const Pe = (r) => /* @__PURE__ */ a(
299
300
  variant: "secondary",
300
301
  size: "icon-sm",
301
302
  shape: "normal",
302
- disabled: c || N,
303
+ disabled: c || S,
303
304
  onClick: () => s(h - 1),
304
305
  "aria-label": e == null ? void 0 : e.previousPage,
305
306
  className: o.navButton,
306
- children: /* @__PURE__ */ t(Ne, {})
307
+ children: /* @__PURE__ */ t(Le, {})
307
308
  }
308
309
  ),
309
- M.map((n, l) => {
310
- var T, j, z;
311
- const B = n.type === "ellipsis" ? `ellipsis-${l}-${n.targetPage}` : `page-${n.page}`;
310
+ _.map((n, l) => {
311
+ var j, z, A;
312
+ const T = n.type === "ellipsis" ? `ellipsis-${l}-${n.targetPage}` : `page-${n.page}`;
312
313
  if (n.type === "ellipsis")
313
- return /* @__PURE__ */ a(xe, { children: [
314
- /* @__PURE__ */ t(ye, { asChild: !0, children: /* @__PURE__ */ t(
314
+ return /* @__PURE__ */ a(Ie, { children: [
315
+ /* @__PURE__ */ t(Pe, { asChild: !0, children: /* @__PURE__ */ t(
315
316
  d,
316
317
  {
317
318
  variant: "tertiary",
@@ -319,13 +320,13 @@ const Pe = (r) => /* @__PURE__ */ a(
319
320
  shape: "normal",
320
321
  disabled: c,
321
322
  onClick: () => s(n.targetPage),
322
- "aria-label": (T = e == null ? void 0 : e.jumpToPage) == null ? void 0 : T.call(e, n.targetPage),
323
+ "aria-label": (j = e == null ? void 0 : e.jumpToPage) == null ? void 0 : j.call(e, n.targetPage),
323
324
  className: o.ellipsisButton,
324
325
  children: "..."
325
326
  }
326
327
  ) }),
327
- /* @__PURE__ */ t(Ie, { children: (j = e == null ? void 0 : e.jumpToPage) == null ? void 0 : j.call(e, n.targetPage) })
328
- ] }, B);
328
+ /* @__PURE__ */ t(Ne, { children: (z = e == null ? void 0 : e.jumpToPage) == null ? void 0 : z.call(e, n.targetPage) })
329
+ ] }, T);
329
330
  const w = n.page === h;
330
331
  return /* @__PURE__ */ t(
331
332
  d,
@@ -335,12 +336,12 @@ const Pe = (r) => /* @__PURE__ */ a(
335
336
  shape: "normal",
336
337
  disabled: c,
337
338
  onClick: () => s(n.page),
338
- "aria-label": (z = e == null ? void 0 : e.goToPage) == null ? void 0 : z.call(e, n.page),
339
+ "aria-label": (A = e == null ? void 0 : e.goToPage) == null ? void 0 : A.call(e, n.page),
339
340
  "aria-current": w ? "page" : void 0,
340
341
  className: w ? o.pageButtonActive : o.pageButtonInactive,
341
342
  children: n.page
342
343
  },
343
- B
344
+ T
344
345
  );
345
346
  }),
346
347
  /* @__PURE__ */ t(
@@ -349,11 +350,11 @@ const Pe = (r) => /* @__PURE__ */ a(
349
350
  variant: "secondary",
350
351
  size: "icon-sm",
351
352
  shape: "normal",
352
- disabled: c || S,
353
+ disabled: c || L,
353
354
  onClick: () => s(h + 1),
354
355
  "aria-label": e == null ? void 0 : e.nextPage,
355
356
  className: o.navButton,
356
- children: /* @__PURE__ */ t(Se, {})
357
+ children: /* @__PURE__ */ t(Be, {})
357
358
  }
358
359
  ),
359
360
  /* @__PURE__ */ t(
@@ -362,11 +363,11 @@ const Pe = (r) => /* @__PURE__ */ a(
362
363
  variant: "secondary",
363
364
  size: "icon-sm",
364
365
  shape: "normal",
365
- disabled: c || S,
366
+ disabled: c || L,
366
367
  onClick: () => s(f),
367
368
  "aria-label": e == null ? void 0 : e.lastPage,
368
369
  className: o.navButton,
369
- children: /* @__PURE__ */ t(Le, {})
370
+ children: /* @__PURE__ */ t(Te, {})
370
371
  }
371
372
  )
372
373
  ] }),
@@ -377,43 +378,44 @@ const Pe = (r) => /* @__PURE__ */ a(
377
378
  "data-slot": "table-pagination-range",
378
379
  className: o.range,
379
380
  "aria-live": "polite",
380
- children: e != null && e.rangeDisplay ? e.rangeDisplay(I, P, p) : `${I}-${P} / ${p}`
381
+ children: e != null && e.rangeDisplay ? e.rangeDisplay(P, N, p) : `${P}-${N} / ${p}`
381
382
  }
382
383
  ),
383
384
  /* @__PURE__ */ a(
384
- G,
385
+ X,
385
386
  {
386
387
  value: String(v),
387
- onValueChange: _,
388
+ onValueChange: F,
388
389
  disabled: c,
389
390
  children: [
390
391
  /* @__PURE__ */ a(
391
- X,
392
+ Q,
392
393
  {
393
394
  className: o.selectTrigger,
394
- "aria-label": (L = e == null ? void 0 : e.pageSizeSelector) == null ? void 0 : L.call(e, v),
395
+ "aria-label": (B = e == null ? void 0 : e.pageSizeSelector) == null ? void 0 : B.call(e, v),
395
396
  children: [
396
- /* @__PURE__ */ t(Q, {}),
397
- /* @__PURE__ */ t(U, { className: o.selectIcon, children: /* @__PURE__ */ t(Be, {}) })
397
+ /* @__PURE__ */ t(U, {}),
398
+ /* @__PURE__ */ t(Z, { className: o.selectIcon, children: /* @__PURE__ */ t(je, {}) })
398
399
  ]
399
400
  }
400
401
  ),
401
- /* @__PURE__ */ t(Z, { children: /* @__PURE__ */ t(
402
- q,
402
+ /* @__PURE__ */ t(q, { children: /* @__PURE__ */ t(
403
+ J,
403
404
  {
404
405
  className: o.selectContent,
406
+ ...I !== void 0 ? { "data-density": I } : {},
405
407
  position: "popper",
406
408
  sideOffset: 4,
407
- children: /* @__PURE__ */ t(J, { className: o.selectViewport, children: /* @__PURE__ */ a(K, { children: [
408
- (e == null ? void 0 : e.resultsPerPage) && /* @__PURE__ */ t(Y, { className: o.selectLabel, children: e.resultsPerPage }),
409
- V.map((n) => /* @__PURE__ */ a(
410
- b,
409
+ children: /* @__PURE__ */ t(K, { className: o.selectViewport, children: /* @__PURE__ */ a(Y, { children: [
410
+ (e == null ? void 0 : e.resultsPerPage) && /* @__PURE__ */ t(b, { className: o.selectLabel, children: e.resultsPerPage }),
411
+ O.map((n) => /* @__PURE__ */ a(
412
+ ee,
411
413
  {
412
414
  value: String(n),
413
415
  className: o.selectItem,
414
416
  children: [
415
- /* @__PURE__ */ t("span", { className: o.selectItemIndicator, children: /* @__PURE__ */ t(ee, { children: /* @__PURE__ */ t(Te, { style: { width: 16, height: 16 } }) }) }),
416
- /* @__PURE__ */ t(te, { children: n })
417
+ /* @__PURE__ */ t("span", { className: o.selectItemIndicator, children: /* @__PURE__ */ t(te, { children: /* @__PURE__ */ t(ze, { style: { width: 16, height: 16 } }) }) }),
418
+ /* @__PURE__ */ t(oe, { children: n })
417
419
  ]
418
420
  },
419
421
  n
@@ -430,6 +432,6 @@ const Pe = (r) => /* @__PURE__ */ a(
430
432
  ) });
431
433
  });
432
434
  export {
433
- _e as TablePagination
435
+ Xe as TablePagination
434
436
  };
435
437
  //# sourceMappingURL=table-pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-pagination.js","sources":["../../../src/components/table/table-pagination.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps, ComponentProps } from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport {\n calculatePagination,\n clampPage,\n getPageNumbers,\n} from \"../../lib/pagination\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../tooltip/tooltip\"\nimport { Button } from \"../button/button\"\n\n// Navigation icons\nconst IconFirstPage = (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=\"M6 6v12\" />\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronLeft = (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=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronRight = (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=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nconst IconLastPage = (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=\"m9 18 6-6-6-6\" />\n <path d=\"M18 6v12\" />\n </svg>\n)\n\n// Select icons\nconst ChevronDownIcon = (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=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst CheckIcon = (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=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100]\n\nconst useStyles = makeVoltStyles({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingGroup1,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n left: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement2,\n },\n navButton: {\n backgroundColor: tokens.grayA3,\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":disabled\": {\n backgroundColor: tokens.grayA3,\n color: tokens.accentA8,\n pointerEvents: \"none\",\n },\n },\n pageButtonActive: {\n pointerEvents: \"none\",\n },\n pageButtonInactive: {\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n \":active\": {\n backgroundColor: tokens.grayA4,\n },\n },\n ellipsisButton: {\n letterSpacing: tokens.trackingNormal,\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n },\n right: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup1,\n paddingRight: \"0.125rem\",\n },\n range: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n fontVariantNumeric: \"tabular-nums\",\n },\n selectTrigger: {\n display: \"flex\",\n height: \"2rem\",\n width: \"auto\",\n minWidth: \"4rem\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingElement1,\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.grayA3,\n ...shorthands.paddingInline(\"0.75rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n cursor: \"pointer\",\n ...shorthands.borderWidth(0),\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":focus\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.accent8,\n outlineOffset: \"2px\",\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n selectIcon: {\n display: \"flex\",\n alignItems: \"center\",\n color: tokens.grayA11,\n },\n selectContent: {\n position: \"relative\",\n zIndex: 50,\n ...shorthands.overflow(\"hidden\"),\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA6),\n backgroundColor: tokens.semBody,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n selectViewport: {\n ...shorthands.padding(\"0.25rem\"),\n },\n selectLabel: {\n ...shorthands.padding(\"0.375rem\", \"0.5rem\"),\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA11,\n },\n selectItem: {\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.padding(\"0.375rem\", \"0.5rem\", \"0.375rem\", \"2rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \":focus\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n selectItemIndicator: {\n position: \"absolute\",\n left: \"0.5rem\",\n display: \"flex\",\n width: \"1rem\",\n height: \"1rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n})\n\nexport type TablePaginationLabels = {\n /** Label for the pagination navigation region. */\n navigation?: string\n /** Label for first page button. */\n firstPage?: string\n /** Label for previous page button. */\n previousPage?: string\n /** Label for next page button. */\n nextPage?: string\n /** Label for last page button. */\n lastPage?: string\n /** Label generator for page number buttons. Receives 1-indexed page number. */\n goToPage?: (page: number) => string\n /** Label generator for ellipsis jump buttons. Receives target page number. */\n jumpToPage?: (page: number) => string\n /** Label generator for page size selector. Receives current page size. */\n pageSizeSelector?: (pageSize: number) => string\n /** Label for page size dropdown header. */\n resultsPerPage?: string\n /** Label generator for the range display. Receives start, end, and total. */\n rangeDisplay?: (start: number, end: number, total: number) => string\n}\n\nexport type TablePaginationProps = Omit<ComponentProps<\"div\">, \"onChange\"> & {\n /** Current page number (1-indexed) */\n page: number\n /** Total number of items across all pages */\n totalItems: number\n /** Current page size (items per page) */\n pageSize: number\n /** Callback fired when the page changes */\n onPageChange: (page: number) => void\n /** Callback fired when the page size changes */\n onPageSizeChange: (pageSize: number) => void\n /** Available page size options for the dropdown */\n pageSizeOptions?: number[]\n /** Number of sibling pages to show on each side of current page */\n siblingCount?: number\n /** Whether the pagination controls are disabled */\n disabled?: boolean\n /** Labels for i18n. All labels are optional for backwards compatibility but recommended. */\n labels?: TablePaginationLabels\n}\n\nexport const TablePagination = React.forwardRef<\n HTMLDivElement,\n TablePaginationProps\n>(function TablePagination(\n {\n page,\n totalItems,\n pageSize,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,\n siblingCount = 2,\n disabled = false,\n labels,\n className,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const { totalPages, start, end, isFirstPage, isLastPage } =\n calculatePagination({\n page,\n pageSize,\n totalItems,\n })\n\n const safePage = clampPage(page, totalPages)\n const pageItems = getPageNumbers(safePage, totalPages, siblingCount)\n\n const handlePageSizeChange = (value: string) => {\n const newSize = parseInt(value, 10)\n if (!isNaN(newSize)) {\n onPageSizeChange(newSize)\n }\n }\n\n // Don't render if no items\n if (totalItems === 0) {\n return null\n }\n\n return (\n <TooltipProvider>\n <div\n ref={ref}\n data-slot=\"table-pagination\"\n {...{ [SLOT_ATTR]: \"table-pagination\" }}\n data-fs-element=\"TablePagination\"\n role=\"navigation\"\n aria-label={labels?.navigation}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {/* LEFT SIDE: Navigation and page buttons */}\n <div className={styles.left}>\n {/* First page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(1)}\n aria-label={labels?.firstPage}\n className={styles.navButton}\n >\n <IconFirstPage />\n </Button>\n\n {/* Previous page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(safePage - 1)}\n aria-label={labels?.previousPage}\n className={styles.navButton}\n >\n <IconChevronLeft />\n </Button>\n\n {/* Page number buttons */}\n {pageItems.map((item, index) => {\n const key =\n item.type === \"ellipsis\"\n ? `ellipsis-${index}-${item.targetPage}`\n : `page-${item.page}`\n\n if (item.type === \"ellipsis\") {\n return (\n <Tooltip key={key}>\n <TooltipTrigger asChild>\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.targetPage)}\n aria-label={labels?.jumpToPage?.(item.targetPage)}\n className={styles.ellipsisButton}\n >\n ...\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {labels?.jumpToPage?.(item.targetPage)}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const isCurrentPage = item.page === safePage\n\n return (\n <Button\n key={key}\n variant={isCurrentPage ? \"secondary\" : \"tertiary\"}\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.page)}\n aria-label={labels?.goToPage?.(item.page)}\n aria-current={isCurrentPage ? \"page\" : undefined}\n className={\n isCurrentPage\n ? styles.pageButtonActive\n : styles.pageButtonInactive\n }\n >\n {item.page}\n </Button>\n )\n })}\n\n {/* Next page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(safePage + 1)}\n aria-label={labels?.nextPage}\n className={styles.navButton}\n >\n <IconChevronRight />\n </Button>\n\n {/* Last page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(totalPages)}\n aria-label={labels?.lastPage}\n className={styles.navButton}\n >\n <IconLastPage />\n </Button>\n </div>\n\n {/* RIGHT SIDE: Range display and page size selector */}\n <div className={styles.right}>\n {/* Range display */}\n <span\n data-slot=\"table-pagination-range\"\n className={styles.range}\n aria-live=\"polite\"\n >\n {labels?.rangeDisplay\n ? labels.rangeDisplay(start, end, totalItems)\n : `${start}-${end} / ${totalItems}`}\n </span>\n\n {/* Page size selector */}\n <SelectPrimitive.Root\n value={String(pageSize)}\n onValueChange={handlePageSizeChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n className={styles.selectTrigger}\n aria-label={labels?.pageSizeSelector?.(pageSize)}\n >\n <SelectPrimitive.Value />\n <SelectPrimitive.Icon className={styles.selectIcon}>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={styles.selectContent}\n position=\"popper\"\n sideOffset={4}\n >\n <SelectPrimitive.Viewport className={styles.selectViewport}>\n <SelectPrimitive.Group>\n {labels?.resultsPerPage && (\n <SelectPrimitive.Label className={styles.selectLabel}>\n {labels.resultsPerPage}\n </SelectPrimitive.Label>\n )}\n {pageSizeOptions.map((option) => (\n <SelectPrimitive.Item\n key={option}\n value={String(option)}\n className={styles.selectItem}\n >\n <span className={styles.selectItemIndicator}>\n <SelectPrimitive.ItemIndicator>\n <CheckIcon style={{ width: 16, height: 16 }} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Group>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n </div>\n </TooltipProvider>\n )\n})\n"],"names":["IconFirstPage","props","jsxs","jsx","IconChevronLeft","IconChevronRight","IconLastPage","ChevronDownIcon","CheckIcon","DEFAULT_PAGE_SIZE_OPTIONS","useStyles","makeVoltStyles","tokens.spacingGroup1","shorthands","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","tokens.spacingElement2","tokens.grayA3","tokens.accent11","tokens.grayA4","tokens.accentA8","tokens.trackingNormal","tokens.grayA11","tokens.spacingElement1","tokens.radiusLg","tokens.accent8","tokens.grayA6","tokens.semBody","tokens.textXs","tokens.leadingXs","tokens.fontWeightSemibold","tokens.radiusMd","tokens.accentA3","TablePagination","React","page","totalItems","pageSize","onPageChange","onPageSizeChange","pageSizeOptions","siblingCount","disabled","labels","className","ref","styles","totalPages","start","end","isFirstPage","isLastPage","calculatePagination","safePage","clampPage","pageItems","getPageNumbers","handlePageSizeChange","value","newSize","TooltipProvider","SLOT_ATTR","mergeClasses","Button","item","index","key","Tooltip","TooltipTrigger","_a","TooltipContent","_b","isCurrentPage","_c","SelectPrimitive.Root","SelectPrimitive.Trigger","SelectPrimitive.Value","SelectPrimitive.Icon","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Group","SelectPrimitive.Label","option","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText"],"mappings":"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"}
1
+ {"version":3,"file":"table-pagination.js","sources":["../../../src/components/table/table-pagination.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps, ComponentProps } from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { mergeClasses, shorthands } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport {\n calculatePagination,\n clampPage,\n getPageNumbers,\n} from \"../../lib/pagination\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../tooltip/tooltip\"\nimport { Button } from \"../button/button\"\n\n// Navigation icons\nconst IconFirstPage = (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=\"M6 6v12\" />\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronLeft = (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=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronRight = (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=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nconst IconLastPage = (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=\"m9 18 6-6-6-6\" />\n <path d=\"M18 6v12\" />\n </svg>\n)\n\n// Select icons\nconst ChevronDownIcon = (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=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst CheckIcon = (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=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100]\n\nconst useStyles = makeVoltStyles({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingGroup1,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n left: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement2,\n },\n navButton: {\n backgroundColor: tokens.grayA3,\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":disabled\": {\n backgroundColor: tokens.grayA3,\n color: tokens.accentA8,\n pointerEvents: \"none\",\n },\n },\n pageButtonActive: {\n pointerEvents: \"none\",\n },\n pageButtonInactive: {\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n \":active\": {\n backgroundColor: tokens.grayA4,\n },\n },\n ellipsisButton: {\n letterSpacing: tokens.trackingNormal,\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n },\n right: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup1,\n paddingRight: \"0.125rem\",\n },\n range: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n fontVariantNumeric: \"tabular-nums\",\n },\n selectTrigger: {\n display: \"flex\",\n height: \"2rem\",\n width: \"auto\",\n minWidth: \"4rem\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingElement1,\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.grayA3,\n ...shorthands.paddingInline(\"0.75rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n cursor: \"pointer\",\n ...shorthands.borderWidth(0),\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":focus\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.accent8,\n outlineOffset: \"2px\",\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n selectIcon: {\n display: \"flex\",\n alignItems: \"center\",\n color: tokens.grayA11,\n },\n selectContent: {\n position: \"relative\",\n zIndex: 50,\n ...shorthands.overflow(\"hidden\"),\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA6),\n backgroundColor: tokens.semBody,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n selectViewport: {\n ...shorthands.padding(\"0.25rem\"),\n },\n selectLabel: {\n ...shorthands.padding(\"0.375rem\", \"0.5rem\"),\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA11,\n },\n selectItem: {\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.padding(\"0.375rem\", \"0.5rem\", \"0.375rem\", \"2rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \":focus\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n selectItemIndicator: {\n position: \"absolute\",\n left: \"0.5rem\",\n display: \"flex\",\n width: \"1rem\",\n height: \"1rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n})\n\nexport type TablePaginationLabels = {\n /** Label for the pagination navigation region. */\n navigation?: string\n /** Label for first page button. */\n firstPage?: string\n /** Label for previous page button. */\n previousPage?: string\n /** Label for next page button. */\n nextPage?: string\n /** Label for last page button. */\n lastPage?: string\n /** Label generator for page number buttons. Receives 1-indexed page number. */\n goToPage?: (page: number) => string\n /** Label generator for ellipsis jump buttons. Receives target page number. */\n jumpToPage?: (page: number) => string\n /** Label generator for page size selector. Receives current page size. */\n pageSizeSelector?: (pageSize: number) => string\n /** Label for page size dropdown header. */\n resultsPerPage?: string\n /** Label generator for the range display. Receives start, end, and total. */\n rangeDisplay?: (start: number, end: number, total: number) => string\n}\n\nexport type TablePaginationProps = Omit<ComponentProps<\"div\">, \"onChange\"> & {\n /** Current page number (1-indexed) */\n page: number\n /** Total number of items across all pages */\n totalItems: number\n /** Current page size (items per page) */\n pageSize: number\n /** Callback fired when the page changes */\n onPageChange: (page: number) => void\n /** Callback fired when the page size changes */\n onPageSizeChange: (pageSize: number) => void\n /** Available page size options for the dropdown */\n pageSizeOptions?: number[]\n /** Number of sibling pages to show on each side of current page */\n siblingCount?: number\n /** Whether the pagination controls are disabled */\n disabled?: boolean\n /** Labels for i18n. All labels are optional for backwards compatibility but recommended. */\n labels?: TablePaginationLabels\n}\n\nexport const TablePagination = React.forwardRef<\n HTMLDivElement,\n TablePaginationProps\n>(function TablePagination(\n {\n page,\n totalItems,\n pageSize,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,\n siblingCount = 2,\n disabled = false,\n labels,\n className,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n // TABLE-DENSITY-IMPLEMENTATION.md: closes the previously deferred inline Select portal — stamp\n // an explicit override only when one exists in the React tree (Table/DataTable's own explicit\n // density, via DensityContextBoundary), never a fabricated default; an omitted override still\n // inherits live shell density through ordinary DOM/CSS since the portal container is a\n // descendant of <html>. Same pattern as select.tsx's SelectContent.\n const densityOverride = useDensity()\n const { totalPages, start, end, isFirstPage, isLastPage } =\n calculatePagination({\n page,\n pageSize,\n totalItems,\n })\n\n const safePage = clampPage(page, totalPages)\n const pageItems = getPageNumbers(safePage, totalPages, siblingCount)\n\n const handlePageSizeChange = (value: string) => {\n const newSize = parseInt(value, 10)\n if (!isNaN(newSize)) {\n onPageSizeChange(newSize)\n }\n }\n\n // Don't render if no items\n if (totalItems === 0) {\n return null\n }\n\n return (\n <TooltipProvider>\n <div\n ref={ref}\n data-slot=\"table-pagination\"\n {...{ [SLOT_ATTR]: \"table-pagination\" }}\n data-fs-element=\"TablePagination\"\n role=\"navigation\"\n aria-label={labels?.navigation}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {/* LEFT SIDE: Navigation and page buttons */}\n <div className={styles.left}>\n {/* First page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(1)}\n aria-label={labels?.firstPage}\n className={styles.navButton}\n >\n <IconFirstPage />\n </Button>\n\n {/* Previous page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(safePage - 1)}\n aria-label={labels?.previousPage}\n className={styles.navButton}\n >\n <IconChevronLeft />\n </Button>\n\n {/* Page number buttons */}\n {pageItems.map((item, index) => {\n const key =\n item.type === \"ellipsis\"\n ? `ellipsis-${index}-${item.targetPage}`\n : `page-${item.page}`\n\n if (item.type === \"ellipsis\") {\n return (\n <Tooltip key={key}>\n <TooltipTrigger asChild>\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.targetPage)}\n aria-label={labels?.jumpToPage?.(item.targetPage)}\n className={styles.ellipsisButton}\n >\n ...\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {labels?.jumpToPage?.(item.targetPage)}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const isCurrentPage = item.page === safePage\n\n return (\n <Button\n key={key}\n variant={isCurrentPage ? \"secondary\" : \"tertiary\"}\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.page)}\n aria-label={labels?.goToPage?.(item.page)}\n aria-current={isCurrentPage ? \"page\" : undefined}\n className={\n isCurrentPage\n ? styles.pageButtonActive\n : styles.pageButtonInactive\n }\n >\n {item.page}\n </Button>\n )\n })}\n\n {/* Next page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(safePage + 1)}\n aria-label={labels?.nextPage}\n className={styles.navButton}\n >\n <IconChevronRight />\n </Button>\n\n {/* Last page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(totalPages)}\n aria-label={labels?.lastPage}\n className={styles.navButton}\n >\n <IconLastPage />\n </Button>\n </div>\n\n {/* RIGHT SIDE: Range display and page size selector */}\n <div className={styles.right}>\n {/* Range display */}\n <span\n data-slot=\"table-pagination-range\"\n className={styles.range}\n aria-live=\"polite\"\n >\n {labels?.rangeDisplay\n ? labels.rangeDisplay(start, end, totalItems)\n : `${start}-${end} / ${totalItems}`}\n </span>\n\n {/* Page size selector */}\n <SelectPrimitive.Root\n value={String(pageSize)}\n onValueChange={handlePageSizeChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n className={styles.selectTrigger}\n aria-label={labels?.pageSizeSelector?.(pageSize)}\n >\n <SelectPrimitive.Value />\n <SelectPrimitive.Icon className={styles.selectIcon}>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={styles.selectContent}\n {...(densityOverride !== undefined\n ? { \"data-density\": densityOverride }\n : {})}\n position=\"popper\"\n sideOffset={4}\n >\n <SelectPrimitive.Viewport className={styles.selectViewport}>\n <SelectPrimitive.Group>\n {labels?.resultsPerPage && (\n <SelectPrimitive.Label className={styles.selectLabel}>\n {labels.resultsPerPage}\n </SelectPrimitive.Label>\n )}\n {pageSizeOptions.map((option) => (\n <SelectPrimitive.Item\n key={option}\n value={String(option)}\n className={styles.selectItem}\n >\n <span className={styles.selectItemIndicator}>\n <SelectPrimitive.ItemIndicator>\n <CheckIcon style={{ width: 16, height: 16 }} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Group>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n </div>\n </TooltipProvider>\n )\n})\n"],"names":["IconFirstPage","props","jsxs","jsx","IconChevronLeft","IconChevronRight","IconLastPage","ChevronDownIcon","CheckIcon","DEFAULT_PAGE_SIZE_OPTIONS","useStyles","makeVoltStyles","tokens.spacingGroup1","shorthands","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","tokens.spacingElement2","tokens.grayA3","tokens.accent11","tokens.grayA4","tokens.accentA8","tokens.trackingNormal","tokens.grayA11","tokens.spacingElement1","tokens.radiusLg","tokens.accent8","tokens.grayA6","tokens.semBody","tokens.textXs","tokens.leadingXs","tokens.fontWeightSemibold","tokens.radiusMd","tokens.accentA3","TablePagination","React","page","totalItems","pageSize","onPageChange","onPageSizeChange","pageSizeOptions","siblingCount","disabled","labels","className","ref","styles","densityOverride","useDensity","totalPages","start","end","isFirstPage","isLastPage","calculatePagination","safePage","clampPage","pageItems","getPageNumbers","handlePageSizeChange","value","newSize","TooltipProvider","SLOT_ATTR","mergeClasses","Button","item","index","key","Tooltip","TooltipTrigger","_a","TooltipContent","_b","isCurrentPage","_c","SelectPrimitive.Root","SelectPrimitive.Trigger","SelectPrimitive.Value","SelectPrimitive.Icon","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Group","SelectPrimitive.Label","option","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText"],"mappings":"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"}