@karakuri-ui/react 0.3.3 → 0.3.5

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 (149) hide show
  1. package/README.md +27 -4
  2. package/dist/components/ui/accordion.js +27 -24
  3. package/dist/components/ui/accordion.js.map +1 -1
  4. package/dist/components/ui/accordion.mjs +28 -25
  5. package/dist/components/ui/accordion.mjs.map +1 -1
  6. package/dist/components/ui/alert.js +45 -27
  7. package/dist/components/ui/alert.js.map +1 -1
  8. package/dist/components/ui/alert.mjs +46 -28
  9. package/dist/components/ui/alert.mjs.map +1 -1
  10. package/dist/components/ui/avatar.js +41 -32
  11. package/dist/components/ui/avatar.js.map +1 -1
  12. package/dist/components/ui/avatar.mjs +42 -33
  13. package/dist/components/ui/avatar.mjs.map +1 -1
  14. package/dist/components/ui/badge.js +46 -43
  15. package/dist/components/ui/badge.js.map +1 -1
  16. package/dist/components/ui/badge.mjs +47 -44
  17. package/dist/components/ui/badge.mjs.map +1 -1
  18. package/dist/components/ui/breadcrumb.js +30 -25
  19. package/dist/components/ui/breadcrumb.js.map +1 -1
  20. package/dist/components/ui/breadcrumb.mjs +31 -26
  21. package/dist/components/ui/breadcrumb.mjs.map +1 -1
  22. package/dist/components/ui/button-group.js +6 -5
  23. package/dist/components/ui/button-group.js.map +1 -1
  24. package/dist/components/ui/button-group.mjs +7 -6
  25. package/dist/components/ui/button-group.mjs.map +1 -1
  26. package/dist/components/ui/button.js +24 -14
  27. package/dist/components/ui/button.js.map +1 -1
  28. package/dist/components/ui/button.mjs +26 -16
  29. package/dist/components/ui/button.mjs.map +1 -1
  30. package/dist/components/ui/card.js +53 -39
  31. package/dist/components/ui/card.js.map +1 -1
  32. package/dist/components/ui/card.mjs +54 -40
  33. package/dist/components/ui/card.mjs.map +1 -1
  34. package/dist/components/ui/chart.d.mts +1 -1
  35. package/dist/components/ui/chart.d.ts +1 -1
  36. package/dist/components/ui/chart.js +154 -130
  37. package/dist/components/ui/chart.js.map +1 -1
  38. package/dist/components/ui/chart.mjs +155 -131
  39. package/dist/components/ui/chart.mjs.map +1 -1
  40. package/dist/components/ui/checkbox.js +47 -40
  41. package/dist/components/ui/checkbox.js.map +1 -1
  42. package/dist/components/ui/checkbox.mjs +49 -42
  43. package/dist/components/ui/checkbox.mjs.map +1 -1
  44. package/dist/components/ui/divider.js +16 -13
  45. package/dist/components/ui/divider.js.map +1 -1
  46. package/dist/components/ui/divider.mjs +17 -14
  47. package/dist/components/ui/divider.mjs.map +1 -1
  48. package/dist/components/ui/drawer.js +44 -35
  49. package/dist/components/ui/drawer.js.map +1 -1
  50. package/dist/components/ui/drawer.mjs +45 -36
  51. package/dist/components/ui/drawer.mjs.map +1 -1
  52. package/dist/components/ui/dropdown.js +31 -24
  53. package/dist/components/ui/dropdown.js.map +1 -1
  54. package/dist/components/ui/dropdown.mjs +32 -25
  55. package/dist/components/ui/dropdown.mjs.map +1 -1
  56. package/dist/components/ui/field.js +18 -15
  57. package/dist/components/ui/field.js.map +1 -1
  58. package/dist/components/ui/field.mjs +19 -16
  59. package/dist/components/ui/field.mjs.map +1 -1
  60. package/dist/components/ui/icon-button.js +17 -14
  61. package/dist/components/ui/icon-button.js.map +1 -1
  62. package/dist/components/ui/icon-button.mjs +19 -16
  63. package/dist/components/ui/icon-button.mjs.map +1 -1
  64. package/dist/components/ui/index.mjs +35 -35
  65. package/dist/components/ui/input.js +34 -29
  66. package/dist/components/ui/input.js.map +1 -1
  67. package/dist/components/ui/input.mjs +36 -31
  68. package/dist/components/ui/input.mjs.map +1 -1
  69. package/dist/components/ui/metric-card.js +24 -21
  70. package/dist/components/ui/metric-card.js.map +1 -1
  71. package/dist/components/ui/metric-card.mjs +25 -22
  72. package/dist/components/ui/metric-card.mjs.map +1 -1
  73. package/dist/components/ui/modal.js +91 -74
  74. package/dist/components/ui/modal.js.map +1 -1
  75. package/dist/components/ui/modal.mjs +92 -75
  76. package/dist/components/ui/modal.mjs.map +1 -1
  77. package/dist/components/ui/navigation-menu.js +114 -93
  78. package/dist/components/ui/navigation-menu.js.map +1 -1
  79. package/dist/components/ui/navigation-menu.mjs +115 -94
  80. package/dist/components/ui/navigation-menu.mjs.map +1 -1
  81. package/dist/components/ui/pagination.js +66 -55
  82. package/dist/components/ui/pagination.js.map +1 -1
  83. package/dist/components/ui/pagination.mjs +67 -56
  84. package/dist/components/ui/pagination.mjs.map +1 -1
  85. package/dist/components/ui/popover.js +39 -36
  86. package/dist/components/ui/popover.js.map +1 -1
  87. package/dist/components/ui/popover.mjs +40 -37
  88. package/dist/components/ui/popover.mjs.map +1 -1
  89. package/dist/components/ui/progress.js +73 -64
  90. package/dist/components/ui/progress.js.map +1 -1
  91. package/dist/components/ui/progress.mjs +74 -65
  92. package/dist/components/ui/progress.mjs.map +1 -1
  93. package/dist/components/ui/radio-group.js +23 -19
  94. package/dist/components/ui/radio-group.js.map +1 -1
  95. package/dist/components/ui/radio-group.mjs +25 -21
  96. package/dist/components/ui/radio-group.mjs.map +1 -1
  97. package/dist/components/ui/segmented.js +7 -6
  98. package/dist/components/ui/segmented.js.map +1 -1
  99. package/dist/components/ui/segmented.mjs +8 -7
  100. package/dist/components/ui/segmented.mjs.map +1 -1
  101. package/dist/components/ui/select.js +55 -48
  102. package/dist/components/ui/select.js.map +1 -1
  103. package/dist/components/ui/select.mjs +56 -49
  104. package/dist/components/ui/select.mjs.map +1 -1
  105. package/dist/components/ui/skeleton.js +20 -19
  106. package/dist/components/ui/skeleton.js.map +1 -1
  107. package/dist/components/ui/skeleton.mjs +21 -20
  108. package/dist/components/ui/skeleton.mjs.map +1 -1
  109. package/dist/components/ui/slider.js +68 -58
  110. package/dist/components/ui/slider.js.map +1 -1
  111. package/dist/components/ui/slider.mjs +69 -59
  112. package/dist/components/ui/slider.mjs.map +1 -1
  113. package/dist/components/ui/spinner.js +185 -176
  114. package/dist/components/ui/spinner.js.map +1 -1
  115. package/dist/components/ui/spinner.mjs +186 -177
  116. package/dist/components/ui/spinner.mjs.map +1 -1
  117. package/dist/components/ui/switch.js +39 -28
  118. package/dist/components/ui/switch.js.map +1 -1
  119. package/dist/components/ui/switch.mjs +41 -30
  120. package/dist/components/ui/switch.mjs.map +1 -1
  121. package/dist/components/ui/table.js +26 -23
  122. package/dist/components/ui/table.js.map +1 -1
  123. package/dist/components/ui/table.mjs +27 -24
  124. package/dist/components/ui/table.mjs.map +1 -1
  125. package/dist/components/ui/tabs.js +25 -9
  126. package/dist/components/ui/tabs.js.map +1 -1
  127. package/dist/components/ui/tabs.mjs +26 -10
  128. package/dist/components/ui/tabs.mjs.map +1 -1
  129. package/dist/components/ui/textarea.js +2 -1
  130. package/dist/components/ui/textarea.js.map +1 -1
  131. package/dist/components/ui/textarea.mjs +4 -3
  132. package/dist/components/ui/textarea.mjs.map +1 -1
  133. package/dist/components/ui/toast.js +104 -80
  134. package/dist/components/ui/toast.js.map +1 -1
  135. package/dist/components/ui/toast.mjs +105 -81
  136. package/dist/components/ui/toast.mjs.map +1 -1
  137. package/dist/components/ui/toggle-group.js +9 -8
  138. package/dist/components/ui/toggle-group.js.map +1 -1
  139. package/dist/components/ui/toggle-group.mjs +10 -9
  140. package/dist/components/ui/toggle-group.mjs.map +1 -1
  141. package/dist/components/ui/toggle.js +3 -2
  142. package/dist/components/ui/toggle.js.map +1 -1
  143. package/dist/components/ui/toggle.mjs +4 -3
  144. package/dist/components/ui/toggle.mjs.map +1 -1
  145. package/dist/components/ui/tooltip.js +18 -15
  146. package/dist/components/ui/tooltip.js.map +1 -1
  147. package/dist/components/ui/tooltip.mjs +19 -16
  148. package/dist/components/ui/tooltip.mjs.map +1 -1
  149. package/package.json +27 -19
@@ -44,72 +44,75 @@ __export(pagination_exports, {
44
44
  usePagination: () => usePagination
45
45
  });
46
46
  module.exports = __toCommonJS(pagination_exports);
47
+ var import_jsx_runtime = require("react/jsx-runtime");
47
48
  var React = __toESM(require("react"));
48
49
  var import_class_variance_authority = require("class-variance-authority");
49
50
  var import_utils = require("../../lib/utils");
50
51
  function ChevronLeftIcon({ className }) {
51
- return /* @__PURE__ */ React.createElement(
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
52
53
  "svg",
53
54
  {
54
55
  className,
55
56
  fill: "none",
56
57
  viewBox: "0 0 24 24",
57
58
  stroke: "currentColor",
58
- strokeWidth: 2
59
- },
60
- /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
59
+ strokeWidth: 2,
60
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
61
+ }
61
62
  );
62
63
  }
63
64
  function ChevronRightIcon({ className }) {
64
- return /* @__PURE__ */ React.createElement(
65
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
65
66
  "svg",
66
67
  {
67
68
  className,
68
69
  fill: "none",
69
70
  viewBox: "0 0 24 24",
70
71
  stroke: "currentColor",
71
- strokeWidth: 2
72
- },
73
- /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
72
+ strokeWidth: 2,
73
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
74
+ }
74
75
  );
75
76
  }
76
77
  function ChevronsLeftIcon({ className }) {
77
- return /* @__PURE__ */ React.createElement(
78
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
78
79
  "svg",
79
80
  {
80
81
  className,
81
82
  fill: "none",
82
83
  viewBox: "0 0 24 24",
83
84
  stroke: "currentColor",
84
- strokeWidth: 2
85
- },
86
- /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
85
+ strokeWidth: 2,
86
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
87
+ }
87
88
  );
88
89
  }
89
90
  function ChevronsRightIcon({ className }) {
90
- return /* @__PURE__ */ React.createElement(
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
91
92
  "svg",
92
93
  {
93
94
  className,
94
95
  fill: "none",
95
96
  viewBox: "0 0 24 24",
96
97
  stroke: "currentColor",
97
- strokeWidth: 2
98
- },
99
- /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
98
+ strokeWidth: 2,
99
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
100
+ }
100
101
  );
101
102
  }
102
103
  function EllipsisIcon({ className }) {
103
- return /* @__PURE__ */ React.createElement(
104
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
104
105
  "svg",
105
106
  {
106
107
  className,
107
108
  fill: "currentColor",
108
- viewBox: "0 0 24 24"
109
- },
110
- /* @__PURE__ */ React.createElement("circle", { cx: "6", cy: "12", r: "1.5" }),
111
- /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "1.5" }),
112
- /* @__PURE__ */ React.createElement("circle", { cx: "18", cy: "12", r: "1.5" })
109
+ viewBox: "0 0 24 24",
110
+ children: [
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "6", cy: "12", r: "1.5" }),
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "1.5" }),
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "18", cy: "12", r: "1.5" })
114
+ ]
115
+ }
113
116
  );
114
117
  }
115
118
  function range(start, end) {
@@ -258,17 +261,23 @@ const Pagination = React.forwardRef(
258
261
  onPageChange: handlePageChange,
259
262
  paginationRange
260
263
  }), [page, total, siblings, boundaries, size, variant, color, radius, disabled, loop, handlePageChange, paginationRange]);
261
- return /* @__PURE__ */ React.createElement(PaginationContext.Provider, { value: contextValue }, /* @__PURE__ */ React.createElement(
264
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
262
265
  "nav",
263
266
  {
264
267
  ref,
265
268
  role: "navigation",
266
269
  "aria-label": "pagination",
267
270
  className: (0, import_utils.cn)("", className),
268
- ...props
269
- },
270
- children ?? /* @__PURE__ */ React.createElement(PaginationContent, null, withEdges && /* @__PURE__ */ React.createElement(PaginationItem, null, /* @__PURE__ */ React.createElement(PaginationFirst, null)), withControls && /* @__PURE__ */ React.createElement(PaginationItem, null, /* @__PURE__ */ React.createElement(PaginationPrevious, null)), /* @__PURE__ */ React.createElement(PaginationItems, null), withControls && /* @__PURE__ */ React.createElement(PaginationItem, null, /* @__PURE__ */ React.createElement(PaginationNext, null)), withEdges && /* @__PURE__ */ React.createElement(PaginationItem, null, /* @__PURE__ */ React.createElement(PaginationLast, null)))
271
- ));
271
+ ...props,
272
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PaginationContent, { children: [
273
+ withEdges && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationFirst, {}) }),
274
+ withControls && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationPrevious, {}) }),
275
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItems, {}),
276
+ withControls && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationNext, {}) }),
277
+ withEdges && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationLast, {}) })
278
+ ] })
279
+ }
280
+ ) });
272
281
  }
273
282
  );
274
283
  Pagination.displayName = "Pagination";
@@ -276,7 +285,7 @@ const PaginationContent = React.forwardRef(
276
285
  ({ className, ...props }, ref) => {
277
286
  const { size } = usePaginationContext();
278
287
  const sizeClass = paginationSizeMap[size];
279
- return /* @__PURE__ */ React.createElement(
288
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
280
289
  "ul",
281
290
  {
282
291
  ref,
@@ -288,7 +297,7 @@ const PaginationContent = React.forwardRef(
288
297
  );
289
298
  PaginationContent.displayName = "PaginationContent";
290
299
  const PaginationItem = React.forwardRef(
291
- ({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("li", { ref, className: (0, import_utils.cn)("", className), ...props })
300
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { ref, className: (0, import_utils.cn)("", className), ...props })
292
301
  );
293
302
  PaginationItem.displayName = "PaginationItem";
294
303
  const PaginationLink = React.forwardRef(
@@ -296,7 +305,7 @@ const PaginationLink = React.forwardRef(
296
305
  const ctx = usePaginationContext();
297
306
  const isActive = isActiveProp ?? ctx.page === targetPage;
298
307
  const sizeClass = paginationSizeMap[ctx.size];
299
- return /* @__PURE__ */ React.createElement(
308
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
300
309
  "button",
301
310
  {
302
311
  ref,
@@ -311,9 +320,9 @@ const PaginationLink = React.forwardRef(
311
320
  getItemClasses(ctx.variant, ctx.color, isActive, ctx.disabled),
312
321
  className
313
322
  ),
314
- ...props
315
- },
316
- targetPage
323
+ ...props,
324
+ children: targetPage
325
+ }
317
326
  );
318
327
  }
319
328
  );
@@ -330,7 +339,7 @@ const PaginationPrevious = React.forwardRef(
330
339
  ctx.onPageChange(ctx.page - 1);
331
340
  }
332
341
  };
333
- return /* @__PURE__ */ React.createElement(
342
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
334
343
  "button",
335
344
  {
336
345
  ref,
@@ -344,9 +353,9 @@ const PaginationPrevious = React.forwardRef(
344
353
  getItemClasses(ctx.variant, ctx.color, false, isDisabled),
345
354
  className
346
355
  ),
347
- ...props
348
- },
349
- icon ?? /* @__PURE__ */ React.createElement(ChevronLeftIcon, { className: sizeClass.icon })
356
+ ...props,
357
+ children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronLeftIcon, { className: sizeClass.icon })
358
+ }
350
359
  );
351
360
  }
352
361
  );
@@ -363,7 +372,7 @@ const PaginationNext = React.forwardRef(
363
372
  ctx.onPageChange(ctx.page + 1);
364
373
  }
365
374
  };
366
- return /* @__PURE__ */ React.createElement(
375
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
367
376
  "button",
368
377
  {
369
378
  ref,
@@ -377,9 +386,9 @@ const PaginationNext = React.forwardRef(
377
386
  getItemClasses(ctx.variant, ctx.color, false, isDisabled),
378
387
  className
379
388
  ),
380
- ...props
381
- },
382
- icon ?? /* @__PURE__ */ React.createElement(ChevronRightIcon, { className: sizeClass.icon })
389
+ ...props,
390
+ children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRightIcon, { className: sizeClass.icon })
391
+ }
383
392
  );
384
393
  }
385
394
  );
@@ -389,7 +398,7 @@ const PaginationFirst = React.forwardRef(
389
398
  const ctx = usePaginationContext();
390
399
  const sizeClass = paginationSizeMap[ctx.size];
391
400
  const isDisabled = ctx.disabled || ctx.page <= 1;
392
- return /* @__PURE__ */ React.createElement(
401
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
393
402
  "button",
394
403
  {
395
404
  ref,
@@ -403,9 +412,9 @@ const PaginationFirst = React.forwardRef(
403
412
  getItemClasses(ctx.variant, ctx.color, false, isDisabled),
404
413
  className
405
414
  ),
406
- ...props
407
- },
408
- icon ?? /* @__PURE__ */ React.createElement(ChevronsLeftIcon, { className: sizeClass.icon })
415
+ ...props,
416
+ children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronsLeftIcon, { className: sizeClass.icon })
417
+ }
409
418
  );
410
419
  }
411
420
  );
@@ -415,7 +424,7 @@ const PaginationLast = React.forwardRef(
415
424
  const ctx = usePaginationContext();
416
425
  const sizeClass = paginationSizeMap[ctx.size];
417
426
  const isDisabled = ctx.disabled || ctx.page >= ctx.total;
418
- return /* @__PURE__ */ React.createElement(
427
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
419
428
  "button",
420
429
  {
421
430
  ref,
@@ -429,9 +438,9 @@ const PaginationLast = React.forwardRef(
429
438
  getItemClasses(ctx.variant, ctx.color, false, isDisabled),
430
439
  className
431
440
  ),
432
- ...props
433
- },
434
- icon ?? /* @__PURE__ */ React.createElement(ChevronsRightIcon, { className: sizeClass.icon })
441
+ ...props,
442
+ children: icon ?? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronsRightIcon, { className: sizeClass.icon })
443
+ }
435
444
  );
436
445
  }
437
446
  );
@@ -440,7 +449,7 @@ const PaginationEllipsis = React.forwardRef(
440
449
  ({ className, ...props }, ref) => {
441
450
  const ctx = usePaginationContext();
442
451
  const sizeClass = paginationSizeMap[ctx.size];
443
- return /* @__PURE__ */ React.createElement(
452
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
444
453
  "span",
445
454
  {
446
455
  ref,
@@ -450,10 +459,12 @@ const PaginationEllipsis = React.forwardRef(
450
459
  sizeClass.item,
451
460
  className
452
461
  ),
453
- ...props
454
- },
455
- /* @__PURE__ */ React.createElement(EllipsisIcon, { className: sizeClass.icon }),
456
- /* @__PURE__ */ React.createElement("span", { className: "sr-only" }, "More pages")
462
+ ...props,
463
+ children: [
464
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EllipsisIcon, { className: sizeClass.icon }),
465
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "More pages" })
466
+ ]
467
+ }
457
468
  );
458
469
  }
459
470
  );
@@ -461,7 +472,7 @@ PaginationEllipsis.displayName = "PaginationEllipsis";
461
472
  const PaginationItems = React.forwardRef(
462
473
  ({ className, ...props }, ref) => {
463
474
  const ctx = usePaginationContext();
464
- return /* @__PURE__ */ React.createElement("div", { ref, className: (0, import_utils.cn)("contents", className), ...props }, ctx.paginationRange.map((item, index) => /* @__PURE__ */ React.createElement(PaginationItem, { key: `${item}-${index}` }, item === "dots" ? /* @__PURE__ */ React.createElement(PaginationEllipsis, null) : /* @__PURE__ */ React.createElement(PaginationLink, { page: item }))));
475
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref, className: (0, import_utils.cn)("contents", className), ...props, children: ctx.paginationRange.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: item === "dots" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationEllipsis, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationLink, { page: item }) }, `${item}-${index}`)) });
465
476
  }
466
477
  );
467
478
  PaginationItems.displayName = "PaginationItems";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ui/pagination.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\n// ─── Built-in Icons ──────────────────────────────────────\n\nfunction ChevronLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n )\n}\n\nfunction ChevronRightIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nfunction ChevronsLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M11 17l-5-5 5-5M18 17l-5-5 5-5\" />\n </svg>\n )\n}\n\nfunction ChevronsRightIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13 7l5 5-5 5M6 7l5 5-5 5\" />\n </svg>\n )\n}\n\nfunction EllipsisIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" />\n </svg>\n )\n}\n\n// ─── usePagination Hook ──────────────────────────────────\n\nexport type PaginationRange = (number | 'dots')[]\n\nexport interface UsePaginationProps {\n /** Total number of pages */\n total: number\n /** Number of siblings on each side of current page */\n siblings?: number\n /** Number of boundary pages at start/end */\n boundaries?: number\n /** Current active page (1-based) */\n page: number\n}\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nexport function usePagination({\n total,\n siblings = 1,\n boundaries = 1,\n page,\n}: UsePaginationProps): PaginationRange {\n if (total <= 0) return []\n\n const totalPageNumbers = siblings * 2 + 3 + boundaries * 2\n if (totalPageNumbers >= total) {\n return range(1, total)\n }\n\n const leftSiblingIndex = Math.max(page - siblings, boundaries + 1)\n const rightSiblingIndex = Math.min(page + siblings, total - boundaries)\n\n const showLeftDots = leftSiblingIndex > boundaries + 2\n const showRightDots = rightSiblingIndex < total - boundaries - 1\n\n if (!showLeftDots && showRightDots) {\n const leftItemCount = 3 + 2 * siblings + boundaries\n const leftRange = range(1, leftItemCount)\n return [...leftRange, 'dots' as const, ...range(total - boundaries + 1, total)]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightItemCount = 3 + 2 * siblings + boundaries\n const rightRange = range(total - rightItemCount + 1, total)\n return [...range(1, boundaries), 'dots' as const, ...rightRange]\n }\n\n return [\n ...range(1, boundaries),\n 'dots' as const,\n ...range(leftSiblingIndex, rightSiblingIndex),\n 'dots' as const,\n ...range(total - boundaries + 1, total),\n ]\n}\n\n// ─── Context ─────────────────────────────────────────────\n\nexport type PaginationSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl'\nexport type PaginationVariant = 'default' | 'outline' | 'ghost'\nexport type PaginationColor = 'default' | 'primary'\nexport type PaginationRadius = 'sm' | 'base' | 'md' | 'lg' | 'xl' | 'full'\n\ntype PaginationContextValue = {\n page: number\n total: number\n siblings: number\n boundaries: number\n size: PaginationSize\n variant: PaginationVariant\n color: PaginationColor\n radius: PaginationRadius\n disabled: boolean\n loop: boolean\n onPageChange: (page: number) => void\n paginationRange: PaginationRange\n}\n\nconst PaginationContext = React.createContext<PaginationContextValue | null>(null)\n\nfunction usePaginationContext() {\n const ctx = React.useContext(PaginationContext)\n if (!ctx) throw new Error('Pagination components must be used within <Pagination>')\n return ctx\n}\n\n// ─── Size Map ────────────────────────────────────────────\n\nconst paginationSizeMap = {\n xs: { item: 'h-7 min-w-7 text-xs', icon: 'icon-xs', gap: 'gap-1' },\n sm: { item: 'h-8 min-w-8 text-sm', icon: 'icon-xs', gap: 'gap-1' },\n default: { item: 'h-9 min-w-9 text-md', icon: 'icon-sm', gap: 'gap-1' },\n lg: { item: 'h-10 min-w-10 text-md', icon: 'icon-sm', gap: 'gap-1.5' },\n xl: { item: 'h-12 min-w-12 text-base', icon: 'icon-sm', gap: 'gap-1.5' },\n} as const\n\n// ─── Item Variants (CVA) ─────────────────────────────────\n\nconst paginationItemVariants = cva(\n 'inline-flex items-center justify-center select-none transition-colors duration-fast font-semibold focus-visible:focus-ring',\n {\n variants: {\n radius: {\n sm: 'rounded-sm',\n base: 'rounded',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n radius: 'md',\n },\n }\n)\n\n// ─── Variant Style Helpers ───────────────────────────────\n\n// Active color maps\nconst activeColorMap = {\n default: 'bg-foreground text-background',\n primary: 'bg-primary text-primary-foreground',\n} as const\n\nconst ghostActiveColorMap = {\n default: 'bg-background-muted text-foreground font-bold',\n primary: 'bg-background-muted text-primary',\n} as const\n\nfunction getItemClasses(variant: PaginationVariant, color: PaginationColor, isActive: boolean, disabled: boolean) {\n if (disabled) {\n return variant === 'outline'\n ? 'border border-border text-disabled-foreground pointer-events-none opacity-50'\n : 'border border-transparent text-disabled-foreground pointer-events-none opacity-50'\n }\n if (isActive) {\n switch (variant) {\n case 'outline':\n return `border ${color === 'default' ? 'border-foreground' : 'border-primary'} ${activeColorMap[color]}`\n case 'ghost':\n return `border border-transparent ${ghostActiveColorMap[color]}`\n case 'default':\n default:\n return `border border-transparent ${activeColorMap[color]}`\n }\n }\n switch (variant) {\n case 'outline':\n return 'border border-border text-text-muted hover:bg-background-muted hover:text-foreground'\n case 'ghost':\n return 'border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground'\n case 'default':\n default:\n return 'border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground'\n }\n}\n\n// ─── Pagination (Root) ───────────────────────────────────\n\nexport interface PaginationProps extends Omit<React.ComponentPropsWithoutRef<'nav'>, 'onChange'> {\n /** Total number of pages */\n total?: number\n /** Controlled active page (1-based) */\n value?: number\n /** Initial page for uncontrolled mode */\n defaultValue?: number\n /** Page change callback */\n onChange?: (page: number) => void\n /** Number of siblings on each side of current page */\n siblings?: number\n /** Number of boundary pages at start/end */\n boundaries?: number\n /** Component size */\n size?: PaginationSize\n /** Visual variant */\n variant?: PaginationVariant\n /** Active page color */\n color?: PaginationColor\n /** Border radius */\n radius?: PaginationRadius\n /** Disable all interactions */\n disabled?: boolean\n /** Show previous/next controls */\n withControls?: boolean\n /** Show first/last controls */\n withEdges?: boolean\n /** Loop from last to first and vice versa */\n loop?: boolean\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n ({\n className,\n total = 1,\n value,\n defaultValue = 1,\n onChange,\n siblings = 1,\n boundaries = 1,\n size = 'default',\n variant = 'default',\n color = 'default',\n radius = 'md',\n disabled = false,\n withControls = true,\n withEdges = false,\n loop = false,\n children,\n ...props\n }, ref) => {\n // Controlled / Uncontrolled\n const [internalPage, setInternalPage] = React.useState(defaultValue)\n const isControlled = value !== undefined\n const page = isControlled ? value : internalPage\n\n const handlePageChange = React.useCallback((newPage: number) => {\n if (disabled) return\n const clamped = Math.max(1, Math.min(total, newPage))\n if (!isControlled) setInternalPage(clamped)\n onChange?.(clamped)\n }, [disabled, total, isControlled, onChange])\n\n const paginationRange = usePagination({ total, siblings, boundaries, page })\n\n const contextValue = React.useMemo<PaginationContextValue>(() => ({\n page,\n total,\n siblings,\n boundaries,\n size,\n variant,\n color,\n radius,\n disabled,\n loop,\n onPageChange: handlePageChange,\n paginationRange,\n }), [page, total, siblings, boundaries, size, variant, color, radius, disabled, loop, handlePageChange, paginationRange])\n\n return (\n <PaginationContext.Provider value={contextValue}>\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('', className)}\n {...props}\n >\n {children ?? (\n <PaginationContent>\n {withEdges && <PaginationItem><PaginationFirst /></PaginationItem>}\n {withControls && <PaginationItem><PaginationPrevious /></PaginationItem>}\n <PaginationItems />\n {withControls && <PaginationItem><PaginationNext /></PaginationItem>}\n {withEdges && <PaginationItem><PaginationLast /></PaginationItem>}\n </PaginationContent>\n )}\n </nav>\n </PaginationContext.Provider>\n )\n }\n)\nPagination.displayName = 'Pagination'\n\n// ─── PaginationContent ───────────────────────────────────\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n ({ className, ...props }, ref) => {\n const { size } = usePaginationContext()\n const sizeClass = paginationSizeMap[size]\n return (\n <ul\n ref={ref}\n className={cn('flex flex-wrap items-center', sizeClass.gap, className)}\n {...props}\n />\n )\n }\n)\nPaginationContent.displayName = 'PaginationContent'\n\n// ─── PaginationItem ──────────────────────────────────────\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('', className)} {...props} />\n )\n)\nPaginationItem.displayName = 'PaginationItem'\n\n// ─── PaginationLink ──────────────────────────────────────\n\nexport interface PaginationLinkProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Page number this link navigates to */\n page: number\n /** Whether this page is currently active (auto-detected from context if omitted) */\n isActive?: boolean\n}\n\nconst PaginationLink = React.forwardRef<HTMLButtonElement, PaginationLinkProps>(\n ({ className, page: targetPage, isActive: isActiveProp, ...props }, ref) => {\n const ctx = usePaginationContext()\n const isActive = isActiveProp ?? (ctx.page === targetPage)\n const sizeClass = paginationSizeMap[ctx.size]\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-current={isActive ? 'page' : undefined}\n aria-label={`Go to page ${targetPage}`}\n disabled={ctx.disabled}\n onClick={() => ctx.onPageChange(targetPage)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, isActive, ctx.disabled),\n className\n )}\n {...props}\n >\n {targetPage}\n </button>\n )\n }\n)\nPaginationLink.displayName = 'PaginationLink'\n\n// ─── PaginationPrevious ──────────────────────────────────\n\nexport interface PaginationPreviousProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, PaginationPreviousProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || (!ctx.loop && ctx.page <= 1)\n\n const handleClick = () => {\n if (ctx.page <= 1) {\n if (ctx.loop) ctx.onPageChange(ctx.total)\n } else {\n ctx.onPageChange(ctx.page - 1)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to previous page\"\n disabled={isDisabled}\n onClick={handleClick}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronLeftIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationPrevious.displayName = 'PaginationPrevious'\n\n// ─── PaginationNext ──────────────────────────────────────\n\nexport interface PaginationNextProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationNext = React.forwardRef<HTMLButtonElement, PaginationNextProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || (!ctx.loop && ctx.page >= ctx.total)\n\n const handleClick = () => {\n if (ctx.page >= ctx.total) {\n if (ctx.loop) ctx.onPageChange(1)\n } else {\n ctx.onPageChange(ctx.page + 1)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to next page\"\n disabled={isDisabled}\n onClick={handleClick}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronRightIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationNext.displayName = 'PaginationNext'\n\n// ─── PaginationFirst ─────────────────────────────────────\n\nexport interface PaginationFirstProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, PaginationFirstProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || ctx.page <= 1\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to first page\"\n disabled={isDisabled}\n onClick={() => ctx.onPageChange(1)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronsLeftIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationFirst.displayName = 'PaginationFirst'\n\n// ─── PaginationLast ──────────────────────────────────────\n\nexport interface PaginationLastProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationLast = React.forwardRef<HTMLButtonElement, PaginationLastProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || ctx.page >= ctx.total\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to last page\"\n disabled={isDisabled}\n onClick={() => ctx.onPageChange(ctx.total)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronsRightIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationLast.displayName = 'PaginationLast'\n\n// ─── PaginationEllipsis ──────────────────────────────────\n\nconst PaginationEllipsis = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n ({ className, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex items-center justify-center text-text-muted',\n sizeClass.item,\n className\n )}\n {...props}\n >\n <EllipsisIcon className={sizeClass.icon} />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n }\n)\nPaginationEllipsis.displayName = 'PaginationEllipsis'\n\n// ─── PaginationItems (Convenience) ───────────────────────\n\nconst PaginationItems = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => {\n const ctx = usePaginationContext()\n return (\n <div ref={ref} className={cn('contents', className)} {...props}>\n {ctx.paginationRange.map((item, index) => (\n <PaginationItem key={`${item}-${index}`}>\n {item === 'dots' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink page={item} />\n )}\n </PaginationItem>\n ))}\n </div>\n )\n }\n)\nPaginationItems.displayName = 'PaginationItems'\n\n// ─── Exports ─────────────────────────────────────────────\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationFirst,\n PaginationLast,\n PaginationEllipsis,\n PaginationItems,\n paginationItemVariants,\n paginationSizeMap,\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/ui/pagination.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\n// ─── Built-in Icons ──────────────────────────────────────\n\nfunction ChevronLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n )\n}\n\nfunction ChevronRightIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nfunction ChevronsLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M11 17l-5-5 5-5M18 17l-5-5 5-5\" />\n </svg>\n )\n}\n\nfunction ChevronsRightIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13 7l5 5-5 5M6 7l5 5-5 5\" />\n </svg>\n )\n}\n\nfunction EllipsisIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" />\n </svg>\n )\n}\n\n// ─── usePagination Hook ──────────────────────────────────\n\nexport type PaginationRange = (number | 'dots')[]\n\nexport interface UsePaginationProps {\n /** Total number of pages */\n total: number\n /** Number of siblings on each side of current page */\n siblings?: number\n /** Number of boundary pages at start/end */\n boundaries?: number\n /** Current active page (1-based) */\n page: number\n}\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nexport function usePagination({\n total,\n siblings = 1,\n boundaries = 1,\n page,\n}: UsePaginationProps): PaginationRange {\n if (total <= 0) return []\n\n const totalPageNumbers = siblings * 2 + 3 + boundaries * 2\n if (totalPageNumbers >= total) {\n return range(1, total)\n }\n\n const leftSiblingIndex = Math.max(page - siblings, boundaries + 1)\n const rightSiblingIndex = Math.min(page + siblings, total - boundaries)\n\n const showLeftDots = leftSiblingIndex > boundaries + 2\n const showRightDots = rightSiblingIndex < total - boundaries - 1\n\n if (!showLeftDots && showRightDots) {\n const leftItemCount = 3 + 2 * siblings + boundaries\n const leftRange = range(1, leftItemCount)\n return [...leftRange, 'dots' as const, ...range(total - boundaries + 1, total)]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightItemCount = 3 + 2 * siblings + boundaries\n const rightRange = range(total - rightItemCount + 1, total)\n return [...range(1, boundaries), 'dots' as const, ...rightRange]\n }\n\n return [\n ...range(1, boundaries),\n 'dots' as const,\n ...range(leftSiblingIndex, rightSiblingIndex),\n 'dots' as const,\n ...range(total - boundaries + 1, total),\n ]\n}\n\n// ─── Context ─────────────────────────────────────────────\n\nexport type PaginationSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl'\nexport type PaginationVariant = 'default' | 'outline' | 'ghost'\nexport type PaginationColor = 'default' | 'primary'\nexport type PaginationRadius = 'sm' | 'base' | 'md' | 'lg' | 'xl' | 'full'\n\ntype PaginationContextValue = {\n page: number\n total: number\n siblings: number\n boundaries: number\n size: PaginationSize\n variant: PaginationVariant\n color: PaginationColor\n radius: PaginationRadius\n disabled: boolean\n loop: boolean\n onPageChange: (page: number) => void\n paginationRange: PaginationRange\n}\n\nconst PaginationContext = React.createContext<PaginationContextValue | null>(null)\n\nfunction usePaginationContext() {\n const ctx = React.useContext(PaginationContext)\n if (!ctx) throw new Error('Pagination components must be used within <Pagination>')\n return ctx\n}\n\n// ─── Size Map ────────────────────────────────────────────\n\nconst paginationSizeMap = {\n xs: { item: 'h-7 min-w-7 text-xs', icon: 'icon-xs', gap: 'gap-1' },\n sm: { item: 'h-8 min-w-8 text-sm', icon: 'icon-xs', gap: 'gap-1' },\n default: { item: 'h-9 min-w-9 text-md', icon: 'icon-sm', gap: 'gap-1' },\n lg: { item: 'h-10 min-w-10 text-md', icon: 'icon-sm', gap: 'gap-1.5' },\n xl: { item: 'h-12 min-w-12 text-base', icon: 'icon-sm', gap: 'gap-1.5' },\n} as const\n\n// ─── Item Variants (CVA) ─────────────────────────────────\n\nconst paginationItemVariants = cva(\n 'inline-flex items-center justify-center select-none transition-colors duration-fast font-semibold focus-visible:focus-ring',\n {\n variants: {\n radius: {\n sm: 'rounded-sm',\n base: 'rounded',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n radius: 'md',\n },\n }\n)\n\n// ─── Variant Style Helpers ───────────────────────────────\n\n// Active color maps\nconst activeColorMap = {\n default: 'bg-foreground text-background',\n primary: 'bg-primary text-primary-foreground',\n} as const\n\nconst ghostActiveColorMap = {\n default: 'bg-background-muted text-foreground font-bold',\n primary: 'bg-background-muted text-primary',\n} as const\n\nfunction getItemClasses(variant: PaginationVariant, color: PaginationColor, isActive: boolean, disabled: boolean) {\n if (disabled) {\n return variant === 'outline'\n ? 'border border-border text-disabled-foreground pointer-events-none opacity-50'\n : 'border border-transparent text-disabled-foreground pointer-events-none opacity-50'\n }\n if (isActive) {\n switch (variant) {\n case 'outline':\n return `border ${color === 'default' ? 'border-foreground' : 'border-primary'} ${activeColorMap[color]}`\n case 'ghost':\n return `border border-transparent ${ghostActiveColorMap[color]}`\n case 'default':\n default:\n return `border border-transparent ${activeColorMap[color]}`\n }\n }\n switch (variant) {\n case 'outline':\n return 'border border-border text-text-muted hover:bg-background-muted hover:text-foreground'\n case 'ghost':\n return 'border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground'\n case 'default':\n default:\n return 'border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground'\n }\n}\n\n// ─── Pagination (Root) ───────────────────────────────────\n\nexport interface PaginationProps extends Omit<React.ComponentPropsWithoutRef<'nav'>, 'onChange'> {\n /** Total number of pages */\n total?: number\n /** Controlled active page (1-based) */\n value?: number\n /** Initial page for uncontrolled mode */\n defaultValue?: number\n /** Page change callback */\n onChange?: (page: number) => void\n /** Number of siblings on each side of current page */\n siblings?: number\n /** Number of boundary pages at start/end */\n boundaries?: number\n /** Component size */\n size?: PaginationSize\n /** Visual variant */\n variant?: PaginationVariant\n /** Active page color */\n color?: PaginationColor\n /** Border radius */\n radius?: PaginationRadius\n /** Disable all interactions */\n disabled?: boolean\n /** Show previous/next controls */\n withControls?: boolean\n /** Show first/last controls */\n withEdges?: boolean\n /** Loop from last to first and vice versa */\n loop?: boolean\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n ({\n className,\n total = 1,\n value,\n defaultValue = 1,\n onChange,\n siblings = 1,\n boundaries = 1,\n size = 'default',\n variant = 'default',\n color = 'default',\n radius = 'md',\n disabled = false,\n withControls = true,\n withEdges = false,\n loop = false,\n children,\n ...props\n }, ref) => {\n // Controlled / Uncontrolled\n const [internalPage, setInternalPage] = React.useState(defaultValue)\n const isControlled = value !== undefined\n const page = isControlled ? value : internalPage\n\n const handlePageChange = React.useCallback((newPage: number) => {\n if (disabled) return\n const clamped = Math.max(1, Math.min(total, newPage))\n if (!isControlled) setInternalPage(clamped)\n onChange?.(clamped)\n }, [disabled, total, isControlled, onChange])\n\n const paginationRange = usePagination({ total, siblings, boundaries, page })\n\n const contextValue = React.useMemo<PaginationContextValue>(() => ({\n page,\n total,\n siblings,\n boundaries,\n size,\n variant,\n color,\n radius,\n disabled,\n loop,\n onPageChange: handlePageChange,\n paginationRange,\n }), [page, total, siblings, boundaries, size, variant, color, radius, disabled, loop, handlePageChange, paginationRange])\n\n return (\n <PaginationContext.Provider value={contextValue}>\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('', className)}\n {...props}\n >\n {children ?? (\n <PaginationContent>\n {withEdges && <PaginationItem><PaginationFirst /></PaginationItem>}\n {withControls && <PaginationItem><PaginationPrevious /></PaginationItem>}\n <PaginationItems />\n {withControls && <PaginationItem><PaginationNext /></PaginationItem>}\n {withEdges && <PaginationItem><PaginationLast /></PaginationItem>}\n </PaginationContent>\n )}\n </nav>\n </PaginationContext.Provider>\n )\n }\n)\nPagination.displayName = 'Pagination'\n\n// ─── PaginationContent ───────────────────────────────────\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentPropsWithoutRef<'ul'>>(\n ({ className, ...props }, ref) => {\n const { size } = usePaginationContext()\n const sizeClass = paginationSizeMap[size]\n return (\n <ul\n ref={ref}\n className={cn('flex flex-wrap items-center', sizeClass.gap, className)}\n {...props}\n />\n )\n }\n)\nPaginationContent.displayName = 'PaginationContent'\n\n// ─── PaginationItem ──────────────────────────────────────\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('', className)} {...props} />\n )\n)\nPaginationItem.displayName = 'PaginationItem'\n\n// ─── PaginationLink ──────────────────────────────────────\n\nexport interface PaginationLinkProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Page number this link navigates to */\n page: number\n /** Whether this page is currently active (auto-detected from context if omitted) */\n isActive?: boolean\n}\n\nconst PaginationLink = React.forwardRef<HTMLButtonElement, PaginationLinkProps>(\n ({ className, page: targetPage, isActive: isActiveProp, ...props }, ref) => {\n const ctx = usePaginationContext()\n const isActive = isActiveProp ?? (ctx.page === targetPage)\n const sizeClass = paginationSizeMap[ctx.size]\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-current={isActive ? 'page' : undefined}\n aria-label={`Go to page ${targetPage}`}\n disabled={ctx.disabled}\n onClick={() => ctx.onPageChange(targetPage)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, isActive, ctx.disabled),\n className\n )}\n {...props}\n >\n {targetPage}\n </button>\n )\n }\n)\nPaginationLink.displayName = 'PaginationLink'\n\n// ─── PaginationPrevious ──────────────────────────────────\n\nexport interface PaginationPreviousProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationPrevious = React.forwardRef<HTMLButtonElement, PaginationPreviousProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || (!ctx.loop && ctx.page <= 1)\n\n const handleClick = () => {\n if (ctx.page <= 1) {\n if (ctx.loop) ctx.onPageChange(ctx.total)\n } else {\n ctx.onPageChange(ctx.page - 1)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to previous page\"\n disabled={isDisabled}\n onClick={handleClick}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronLeftIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationPrevious.displayName = 'PaginationPrevious'\n\n// ─── PaginationNext ──────────────────────────────────────\n\nexport interface PaginationNextProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationNext = React.forwardRef<HTMLButtonElement, PaginationNextProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || (!ctx.loop && ctx.page >= ctx.total)\n\n const handleClick = () => {\n if (ctx.page >= ctx.total) {\n if (ctx.loop) ctx.onPageChange(1)\n } else {\n ctx.onPageChange(ctx.page + 1)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to next page\"\n disabled={isDisabled}\n onClick={handleClick}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronRightIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationNext.displayName = 'PaginationNext'\n\n// ─── PaginationFirst ─────────────────────────────────────\n\nexport interface PaginationFirstProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationFirst = React.forwardRef<HTMLButtonElement, PaginationFirstProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || ctx.page <= 1\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to first page\"\n disabled={isDisabled}\n onClick={() => ctx.onPageChange(1)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronsLeftIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationFirst.displayName = 'PaginationFirst'\n\n// ─── PaginationLast ──────────────────────────────────────\n\nexport interface PaginationLastProps extends React.ComponentPropsWithoutRef<'button'> {\n /** Custom icon */\n icon?: React.ReactNode\n}\n\nconst PaginationLast = React.forwardRef<HTMLButtonElement, PaginationLastProps>(\n ({ className, icon, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n const isDisabled = ctx.disabled || ctx.page >= ctx.total\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to last page\"\n disabled={isDisabled}\n onClick={() => ctx.onPageChange(ctx.total)}\n className={cn(\n paginationItemVariants({ radius: ctx.radius }),\n sizeClass.item,\n getItemClasses(ctx.variant, ctx.color, false, isDisabled),\n className\n )}\n {...props}\n >\n {icon ?? <ChevronsRightIcon className={sizeClass.icon} />}\n </button>\n )\n }\n)\nPaginationLast.displayName = 'PaginationLast'\n\n// ─── PaginationEllipsis ──────────────────────────────────\n\nconst PaginationEllipsis = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n ({ className, ...props }, ref) => {\n const ctx = usePaginationContext()\n const sizeClass = paginationSizeMap[ctx.size]\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex items-center justify-center text-text-muted',\n sizeClass.item,\n className\n )}\n {...props}\n >\n <EllipsisIcon className={sizeClass.icon} />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n }\n)\nPaginationEllipsis.displayName = 'PaginationEllipsis'\n\n// ─── PaginationItems (Convenience) ───────────────────────\n\nconst PaginationItems = React.forwardRef<HTMLDivElement, React.ComponentPropsWithoutRef<'div'>>(\n ({ className, ...props }, ref) => {\n const ctx = usePaginationContext()\n return (\n <div ref={ref} className={cn('contents', className)} {...props}>\n {ctx.paginationRange.map((item, index) => (\n <PaginationItem key={`${item}-${index}`}>\n {item === 'dots' ? (\n <PaginationEllipsis />\n ) : (\n <PaginationLink page={item} />\n )}\n </PaginationItem>\n ))}\n </div>\n )\n }\n)\nPaginationItems.displayName = 'PaginationItems'\n\n// ─── Exports ─────────────────────────────────────────────\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationFirst,\n PaginationLast,\n PaginationEllipsis,\n PaginationItems,\n paginationItemVariants,\n paginationSizeMap,\n}\n"],"mappings":"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","names":[]}