@zentauri-ui/zentauri-components 0.0.84 → 0.0.91

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 (132) hide show
  1. package/README.md +47 -29
  2. package/dist/ui/accordion.cjs +311 -0
  3. package/dist/ui/accordion.cjs.map +1 -0
  4. package/dist/ui/accordion.d.cts +70 -0
  5. package/dist/ui/accordion.d.ts +70 -0
  6. package/dist/ui/accordion.js +286 -0
  7. package/dist/ui/accordion.js.map +1 -0
  8. package/dist/ui/alert.cjs +257 -0
  9. package/dist/ui/alert.cjs.map +1 -0
  10. package/dist/ui/alert.d.cts +66 -0
  11. package/dist/ui/alert.d.ts +66 -0
  12. package/dist/ui/alert.js +224 -0
  13. package/dist/ui/alert.js.map +1 -0
  14. package/dist/ui/badge.cjs +192 -0
  15. package/dist/ui/badge.cjs.map +1 -0
  16. package/dist/ui/badge.d.cts +37 -0
  17. package/dist/ui/badge.d.ts +37 -0
  18. package/dist/ui/badge.js +165 -0
  19. package/dist/ui/badge.js.map +1 -0
  20. package/dist/ui/buttons.cjs +202 -0
  21. package/dist/ui/buttons.cjs.map +1 -0
  22. package/dist/ui/buttons.d.cts +27 -0
  23. package/dist/ui/buttons.d.ts +27 -0
  24. package/dist/ui/buttons.js +176 -0
  25. package/dist/ui/buttons.js.map +1 -0
  26. package/dist/ui/card.cjs +293 -0
  27. package/dist/ui/card.cjs.map +1 -0
  28. package/dist/ui/card.d.cts +77 -0
  29. package/dist/ui/card.d.ts +77 -0
  30. package/dist/ui/card.js +258 -0
  31. package/dist/ui/card.js.map +1 -0
  32. package/dist/ui/divider.cjs +229 -0
  33. package/dist/ui/divider.cjs.map +1 -0
  34. package/dist/ui/divider.d.cts +39 -0
  35. package/dist/ui/divider.d.ts +39 -0
  36. package/dist/ui/divider.js +200 -0
  37. package/dist/ui/divider.js.map +1 -0
  38. package/dist/ui/drawer.cjs +408 -0
  39. package/dist/ui/drawer.cjs.map +1 -0
  40. package/dist/ui/drawer.d.cts +81 -0
  41. package/dist/ui/drawer.d.ts +81 -0
  42. package/dist/ui/drawer.js +383 -0
  43. package/dist/ui/drawer.js.map +1 -0
  44. package/dist/ui/dropdown.cjs +302 -0
  45. package/dist/ui/dropdown.cjs.map +1 -0
  46. package/dist/ui/dropdown.d.cts +50 -0
  47. package/dist/ui/dropdown.d.ts +50 -0
  48. package/dist/ui/dropdown.js +278 -0
  49. package/dist/ui/dropdown.js.map +1 -0
  50. package/dist/ui/empty-state.cjs +186 -0
  51. package/dist/ui/empty-state.cjs.map +1 -0
  52. package/dist/ui/empty-state.d.cts +55 -0
  53. package/dist/ui/empty-state.d.ts +55 -0
  54. package/dist/ui/empty-state.js +154 -0
  55. package/dist/ui/empty-state.js.map +1 -0
  56. package/dist/ui/index.d.cts +27 -1164
  57. package/dist/ui/index.d.ts +27 -1164
  58. package/dist/ui/inputs.cjs +458 -0
  59. package/dist/ui/inputs.cjs.map +1 -0
  60. package/dist/ui/inputs.d.cts +35 -0
  61. package/dist/ui/inputs.d.ts +35 -0
  62. package/dist/ui/inputs.js +432 -0
  63. package/dist/ui/inputs.js.map +1 -0
  64. package/dist/ui/modal.cjs +406 -0
  65. package/dist/ui/modal.cjs.map +1 -0
  66. package/dist/ui/modal.d.cts +84 -0
  67. package/dist/ui/modal.d.ts +84 -0
  68. package/dist/ui/modal.js +384 -0
  69. package/dist/ui/modal.js.map +1 -0
  70. package/dist/ui/pagination.cjs +523 -0
  71. package/dist/ui/pagination.cjs.map +1 -0
  72. package/dist/ui/pagination.d.cts +114 -0
  73. package/dist/ui/pagination.d.ts +114 -0
  74. package/dist/ui/pagination.js +494 -0
  75. package/dist/ui/pagination.js.map +1 -0
  76. package/dist/ui/progress.cjs +268 -0
  77. package/dist/ui/progress.cjs.map +1 -0
  78. package/dist/ui/progress.d.cts +61 -0
  79. package/dist/ui/progress.d.ts +61 -0
  80. package/dist/ui/progress.js +237 -0
  81. package/dist/ui/progress.js.map +1 -0
  82. package/dist/ui/select.cjs +360 -0
  83. package/dist/ui/select.cjs.map +1 -0
  84. package/dist/ui/select.d.cts +73 -0
  85. package/dist/ui/select.d.ts +73 -0
  86. package/dist/ui/select.js +327 -0
  87. package/dist/ui/select.js.map +1 -0
  88. package/dist/ui/skeleton.cjs +576 -0
  89. package/dist/ui/skeleton.cjs.map +1 -0
  90. package/dist/ui/skeleton.d.cts +90 -0
  91. package/dist/ui/skeleton.d.ts +90 -0
  92. package/dist/ui/skeleton.js +544 -0
  93. package/dist/ui/skeleton.js.map +1 -0
  94. package/dist/ui/spinner.cjs +219 -0
  95. package/dist/ui/spinner.cjs.map +1 -0
  96. package/dist/ui/spinner.d.cts +27 -0
  97. package/dist/ui/spinner.d.ts +27 -0
  98. package/dist/ui/spinner.js +193 -0
  99. package/dist/ui/spinner.js.map +1 -0
  100. package/dist/ui/table.cjs +328 -0
  101. package/dist/ui/table.cjs.map +1 -0
  102. package/dist/ui/table.d.cts +81 -0
  103. package/dist/ui/table.d.ts +81 -0
  104. package/dist/ui/table.js +293 -0
  105. package/dist/ui/table.js.map +1 -0
  106. package/dist/ui/tabs.cjs +300 -0
  107. package/dist/ui/tabs.cjs.map +1 -0
  108. package/dist/ui/tabs.d.cts +58 -0
  109. package/dist/ui/tabs.d.ts +58 -0
  110. package/dist/ui/tabs.js +274 -0
  111. package/dist/ui/tabs.js.map +1 -0
  112. package/dist/ui/toast.cjs +285 -0
  113. package/dist/ui/toast.cjs.map +1 -0
  114. package/dist/ui/toast.d.cts +86 -0
  115. package/dist/ui/toast.d.ts +86 -0
  116. package/dist/ui/toast.js +258 -0
  117. package/dist/ui/toast.js.map +1 -0
  118. package/dist/ui/toggle.cjs +185 -0
  119. package/dist/ui/toggle.cjs.map +1 -0
  120. package/dist/ui/toggle.d.cts +37 -0
  121. package/dist/ui/toggle.d.ts +37 -0
  122. package/dist/ui/toggle.js +158 -0
  123. package/dist/ui/toggle.js.map +1 -0
  124. package/dist/ui/tooltip.cjs +242 -0
  125. package/dist/ui/tooltip.cjs.map +1 -0
  126. package/dist/ui/tooltip.d.cts +46 -0
  127. package/dist/ui/tooltip.d.ts +46 -0
  128. package/dist/ui/tooltip.js +214 -0
  129. package/dist/ui/tooltip.js.map +1 -0
  130. package/dist/variants-1Bx3BEeS.d.cts +8 -0
  131. package/dist/variants-1Bx3BEeS.d.ts +8 -0
  132. package/package.json +7 -1
@@ -0,0 +1,523 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/ui/pagination/index.ts
21
+ var pagination_exports = {};
22
+ __export(pagination_exports, {
23
+ Pagination: () => Pagination,
24
+ buildPaginationItems: () => buildPaginationItems,
25
+ clampPage: () => clampPage,
26
+ paginationEllipsisVariants: () => paginationEllipsisVariants,
27
+ paginationListVariants: () => paginationListVariants,
28
+ usePagination: () => usePagination
29
+ });
30
+ module.exports = __toCommonJS(pagination_exports);
31
+
32
+ // src/ui/pagination/pagination.tsx
33
+ var import_react2 = require("react");
34
+
35
+ // src/lib/utils.ts
36
+ var import_clsx = require("clsx");
37
+ var import_tailwind_merge = require("tailwind-merge");
38
+ function cn(...inputs) {
39
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
40
+ }
41
+
42
+ // src/ui/buttons/variants.ts
43
+ var import_class_variance_authority = require("class-variance-authority");
44
+ var buttonVariants = (0, import_class_variance_authority.cva)(
45
+ [
46
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl",
47
+ "text-sm font-medium ring-offset-slate-950 transition-colors",
48
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2",
49
+ "disabled:pointer-events-none disabled:opacity-50",
50
+ "select-none"
51
+ ],
52
+ {
53
+ variants: {
54
+ appearance: {
55
+ default: "bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-white",
56
+ secondary: "bg-slate-800 text-slate-50 hover:bg-slate-700",
57
+ destructive: "bg-rose-600 text-white hover:bg-rose-600",
58
+ outline: "border border-white/10 bg-white/5 text-slate-50 hover:bg-white/10",
59
+ ghost: "bg-transparent text-slate-200 hover:bg-white/5",
60
+ link: "bg-transparent text-cyan-300 underline-offset-4 hover:underline",
61
+ glass: "border border-white/15 bg-white/10 text-white backdrop-blur-md hover:bg-white/15",
62
+ emerald: "bg-emerald-600 text-white hover:bg-emerald-600",
63
+ indigo: "bg-indigo-600 text-white hover:bg-indigo-600",
64
+ purple: "bg-purple-600 text-white hover:bg-purple-600",
65
+ pink: "bg-pink-600 text-white hover:bg-pink-600",
66
+ rose: "bg-rose-600 text-white hover:bg-rose-600",
67
+ sky: "bg-sky-600 text-white hover:bg-sky-600",
68
+ teal: "bg-teal-600 text-white hover:bg-teal-600",
69
+ yellow: "bg-yellow-600 text-white hover:bg-yellow-600",
70
+ orange: "bg-orange-600 text-white hover:bg-orange-600",
71
+ gray: "bg-gray-600 text-white hover:bg-gray-600",
72
+ amber: "bg-amber-600 text-white hover:bg-amber-600",
73
+ violet: "bg-violet-600 text-white hover:bg-violet-600",
74
+ "gradient-blue": "bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-600 hover:to-purple-600",
75
+ "gradient-green": "bg-gradient-to-r from-green-600 to-lime-600 text-white hover:from-green-600 hover:to-lime-600",
76
+ "gradient-red": "bg-gradient-to-r from-red-600 to-pink-600 text-white hover:from-red-600 hover:to-pink-600",
77
+ "gradient-yellow": "bg-gradient-to-r from-yellow-600 to-orange-600 text-white hover:from-yellow-600 hover:to-orange-600",
78
+ "gradient-purple": "bg-gradient-to-r from-purple-600 to-pink-600 text-white hover:from-purple-600 hover:to-pink-600",
79
+ "gradient-teal": "bg-gradient-to-r from-teal-600 to-cyan-600 text-white hover:from-teal-600 hover:to-cyan-600",
80
+ "gradient-indigo": "bg-gradient-to-r from-indigo-600 to-purple-600 text-white hover:from-indigo-600 hover:to-purple-600",
81
+ "gradient-pink": "bg-gradient-to-r from-pink-600 to-rose-600 text-white hover:from-pink-600 hover:to-rose-600",
82
+ "gradient-orange": "bg-gradient-to-r from-orange-600 to-red-600 text-white hover:from-orange-600 hover:to-red-600"
83
+ },
84
+ size: {
85
+ sm: "h-7 md:h-9 px-3 text-xs",
86
+ md: "h-9 md:h-11 px-4",
87
+ lg: "h-10 md:h-12 px-5 text-base",
88
+ xl: "h-12 md:h-14 px-6 text-lg",
89
+ "2xl": "h-14 md:h-16 px-6 md:px-8 text-xl",
90
+ "3xl": "h-16 md:h-18 px-8 md:px-10 text-2xl",
91
+ "4xl": "h-18 md:h-20 px-10 md:px-12 text-2xl",
92
+ "5xl": "h-20 md:h-22 px-12 md:px-14 text-2xl",
93
+ "6xl": "h-22 md:h-24 px-14 md:px-16 text-2xl",
94
+ "7xl": "h-24 md:h-26 px-16 md:px-18 text-2xl",
95
+ "8xl": "h-26 md:h-28 px-20 text-2xl",
96
+ "9xl": "h-24 md:h-30 px-18 md:px-22 text-2xl",
97
+ "10xl": "h-26 md:h-32 px-20 md:px-24 text-2xl",
98
+ icon: "h-10 w-10"
99
+ }
100
+ },
101
+ defaultVariants: {
102
+ appearance: "default",
103
+ size: "md"
104
+ }
105
+ }
106
+ );
107
+
108
+ // src/ui/pagination/pagination-logic.ts
109
+ function buildPaginationItems({
110
+ pageCount,
111
+ currentPage,
112
+ siblingCount,
113
+ boundaryCount
114
+ }) {
115
+ if (pageCount <= 0) {
116
+ return [];
117
+ }
118
+ const safeBoundary = Math.max(1, boundaryCount);
119
+ const safeSibling = Math.max(0, siblingCount);
120
+ const current = clampPage(currentPage, pageCount);
121
+ const totalNumbers = safeBoundary * 2 + safeSibling * 2 + 1;
122
+ if (pageCount <= totalNumbers) {
123
+ return range(1, pageCount).map((value) => ({ type: "page", value }));
124
+ }
125
+ const leftBoundaryEnd = safeBoundary;
126
+ const rightBoundaryStart = pageCount - safeBoundary + 1;
127
+ const siblingsStart = Math.max(current - safeSibling, leftBoundaryEnd + 1);
128
+ const siblingsEnd = Math.min(current + safeSibling, rightBoundaryStart - 1);
129
+ const pages = /* @__PURE__ */ new Set();
130
+ for (let p = 1; p <= leftBoundaryEnd; p += 1) {
131
+ pages.add(p);
132
+ }
133
+ for (let p = rightBoundaryStart; p <= pageCount; p += 1) {
134
+ pages.add(p);
135
+ }
136
+ for (let p = siblingsStart; p <= siblingsEnd; p += 1) {
137
+ pages.add(p);
138
+ }
139
+ const sorted = [...pages].sort((a, b) => a - b);
140
+ const items = [];
141
+ for (let i = 0; i < sorted.length; i += 1) {
142
+ const value = sorted[i];
143
+ const prev = sorted[i - 1];
144
+ if (i > 0 && prev !== void 0 && value && value - prev > 1) {
145
+ items.push({ type: "ellipsis", key: `gap-${prev}-${value}` });
146
+ }
147
+ items.push({ type: "page", value });
148
+ }
149
+ return items;
150
+ }
151
+ function clampPage(page, pageCount) {
152
+ if (pageCount <= 0) {
153
+ return 1;
154
+ }
155
+ return Math.min(pageCount, Math.max(1, Math.floor(page)));
156
+ }
157
+ function range(from, to) {
158
+ const out = [];
159
+ for (let i = from; i <= to; i += 1) {
160
+ out.push(i);
161
+ }
162
+ return out;
163
+ }
164
+
165
+ // src/ui/pagination/use-pagination.ts
166
+ var import_react = require("react");
167
+ function usePagination({
168
+ pageCount,
169
+ page,
170
+ defaultPage = 1,
171
+ siblingCount = 1,
172
+ boundaryCount = 1,
173
+ onPageChange
174
+ }) {
175
+ const [internalPage, setInternalPage] = (0, import_react.useState)(
176
+ () => clampPage(defaultPage, pageCount)
177
+ );
178
+ const isControlled = page !== void 0;
179
+ const currentPage = clampPage(
180
+ isControlled ? page : internalPage,
181
+ pageCount
182
+ );
183
+ const setPage = (0, import_react.useCallback)(
184
+ (next) => {
185
+ const clamped = clampPage(next, pageCount);
186
+ if (!isControlled) {
187
+ setInternalPage(clamped);
188
+ }
189
+ onPageChange?.(clamped);
190
+ },
191
+ [isControlled, onPageChange, pageCount]
192
+ );
193
+ const items = (0, import_react.useMemo)(
194
+ () => buildPaginationItems({
195
+ pageCount,
196
+ currentPage,
197
+ siblingCount,
198
+ boundaryCount
199
+ }),
200
+ [boundaryCount, currentPage, pageCount, siblingCount]
201
+ );
202
+ const canGoPrev = pageCount > 0 && currentPage > 1;
203
+ const canGoNext = pageCount > 0 && currentPage < pageCount;
204
+ const goPrev = (0, import_react.useCallback)(() => {
205
+ if (canGoPrev) {
206
+ setPage(currentPage - 1);
207
+ }
208
+ }, [canGoPrev, currentPage, setPage]);
209
+ const goNext = (0, import_react.useCallback)(() => {
210
+ if (canGoNext) {
211
+ setPage(currentPage + 1);
212
+ }
213
+ }, [canGoNext, currentPage, setPage]);
214
+ return {
215
+ currentPage,
216
+ pageCount,
217
+ items,
218
+ setPage,
219
+ goPrev,
220
+ goNext,
221
+ canGoPrev,
222
+ canGoNext
223
+ };
224
+ }
225
+
226
+ // src/ui/pagination/variants.ts
227
+ var import_class_variance_authority2 = require("class-variance-authority");
228
+ var paginationListVariants = (0, import_class_variance_authority2.cva)(
229
+ "inline-flex flex-wrap items-center rounded-xl border p-1 ring-offset-slate-950",
230
+ {
231
+ variants: {
232
+ appearance: {
233
+ default: "border-white/10 bg-white/[0.03]",
234
+ secondary: "border-white/10 bg-slate-900/40",
235
+ destructive: "border-rose-500/25 bg-rose-950/20",
236
+ outline: "border-white/15 bg-transparent",
237
+ ghost: "border-transparent bg-transparent",
238
+ link: "border-transparent bg-transparent",
239
+ glass: "border-white/15 bg-white/5 backdrop-blur-md",
240
+ emerald: "border-emerald-500/25 bg-emerald-950/20",
241
+ indigo: "border-indigo-500/25 bg-indigo-950/20",
242
+ purple: "border-purple-500/25 bg-purple-950/20",
243
+ pink: "border-pink-500/25 bg-pink-950/20",
244
+ rose: "border-rose-500/25 bg-rose-950/20",
245
+ sky: "border-sky-500/25 bg-sky-950/20",
246
+ teal: "border-teal-500/25 bg-teal-950/20",
247
+ yellow: "border-yellow-500/25 bg-yellow-950/20",
248
+ orange: "border-orange-500/25 bg-orange-950/20",
249
+ gray: "border-gray-500/25 bg-gray-950/20",
250
+ amber: "border-amber-500/25 bg-amber-950/20",
251
+ violet: "border-violet-500/25 bg-violet-950/20",
252
+ "gradient-blue": "border-blue-500/30 bg-gradient-to-r from-blue-950/30 to-purple-950/30",
253
+ "gradient-green": "border-lime-500/30 bg-gradient-to-r from-green-950/30 to-lime-950/30",
254
+ "gradient-red": "border-pink-500/30 bg-gradient-to-r from-red-950/30 to-pink-950/30",
255
+ "gradient-yellow": "border-orange-500/30 bg-gradient-to-r from-yellow-950/30 to-orange-950/30",
256
+ "gradient-purple": "border-pink-500/30 bg-gradient-to-r from-purple-950/30 to-pink-950/30",
257
+ "gradient-teal": "border-cyan-500/30 bg-gradient-to-r from-teal-950/30 to-cyan-950/30",
258
+ "gradient-indigo": "border-purple-500/30 bg-gradient-to-r from-indigo-950/30 to-purple-950/30",
259
+ "gradient-pink": "border-rose-500/30 bg-gradient-to-r from-pink-950/30 to-rose-950/30",
260
+ "gradient-orange": "border-orange-500/30 bg-gradient-to-r from-orange-950/30 to-red-950/30"
261
+ },
262
+ size: {
263
+ sm: "gap-0.5",
264
+ md: "gap-1",
265
+ lg: "gap-1",
266
+ xl: "gap-1.5",
267
+ "2xl": "gap-1.5",
268
+ "3xl": "gap-2",
269
+ "4xl": "gap-2",
270
+ "5xl": "gap-2",
271
+ "6xl": "gap-2",
272
+ "7xl": "gap-2.5",
273
+ "8xl": "gap-2.5",
274
+ "9xl": "gap-2.5",
275
+ "10xl": "gap-3",
276
+ icon: "gap-1"
277
+ }
278
+ },
279
+ defaultVariants: {
280
+ appearance: "default",
281
+ size: "md"
282
+ }
283
+ }
284
+ );
285
+ var paginationEllipsisVariants = (0, import_class_variance_authority2.cva)(
286
+ "inline-flex min-w-[2ch] select-none items-center justify-center px-1 font-medium text-slate-400",
287
+ {
288
+ variants: {
289
+ size: {
290
+ sm: "text-xs",
291
+ md: "text-sm",
292
+ lg: "text-base",
293
+ xl: "text-base",
294
+ "2xl": "text-lg",
295
+ "3xl": "text-lg",
296
+ "4xl": "text-xl",
297
+ "5xl": "text-xl",
298
+ "6xl": "text-xl",
299
+ "7xl": "text-2xl",
300
+ "8xl": "text-2xl",
301
+ "9xl": "text-2xl",
302
+ "10xl": "text-2xl",
303
+ icon: "text-sm"
304
+ }
305
+ },
306
+ defaultVariants: { size: "md" }
307
+ }
308
+ );
309
+
310
+ // src/ui/pagination/pagination.tsx
311
+ var import_jsx_runtime = require("react/jsx-runtime");
312
+ var defaultPrevLabel = "Previous page";
313
+ var defaultNextLabel = "Next page";
314
+ var defaultEllipsisLabel = "More pages";
315
+ var Pagination = (0, import_react2.forwardRef)(
316
+ function Pagination2({
317
+ className,
318
+ appearance = "default",
319
+ size = "md",
320
+ pageCount,
321
+ page,
322
+ defaultPage = 1,
323
+ onPageChange,
324
+ siblingCount = 1,
325
+ boundaryCount = 1,
326
+ showPrevNext = true,
327
+ prevLabel = defaultPrevLabel,
328
+ nextLabel = defaultNextLabel,
329
+ ellipsisLabel = defaultEllipsisLabel,
330
+ getPageHref,
331
+ "aria-label": ariaLabel = "Pagination",
332
+ ...rest
333
+ }, ref) {
334
+ const id = (0, import_react2.useId)();
335
+ const listId = `${id}-list`;
336
+ const {
337
+ currentPage,
338
+ items,
339
+ setPage,
340
+ goPrev,
341
+ goNext,
342
+ canGoPrev,
343
+ canGoNext
344
+ } = usePagination({
345
+ pageCount,
346
+ page,
347
+ defaultPage,
348
+ siblingCount,
349
+ boundaryCount,
350
+ onPageChange
351
+ });
352
+ const handleKeyDown = (0, import_react2.useCallback)(
353
+ (event) => {
354
+ if (pageCount <= 0) {
355
+ return;
356
+ }
357
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") {
358
+ event.preventDefault();
359
+ if (canGoNext) {
360
+ setPage(currentPage + 1);
361
+ }
362
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
363
+ event.preventDefault();
364
+ if (canGoPrev) {
365
+ setPage(currentPage - 1);
366
+ }
367
+ } else if (event.key === "Home") {
368
+ event.preventDefault();
369
+ setPage(1);
370
+ } else if (event.key === "End") {
371
+ event.preventDefault();
372
+ setPage(pageCount);
373
+ }
374
+ },
375
+ [canGoNext, canGoPrev, currentPage, pageCount, setPage]
376
+ );
377
+ if (pageCount <= 0) {
378
+ return null;
379
+ }
380
+ const inactiveTriggerClass = cn(
381
+ buttonVariants({ appearance: "ghost", size }),
382
+ "bg-white/[0.04] text-slate-200 hover:bg-white/10"
383
+ );
384
+ const currentTriggerClass = buttonVariants({ appearance, size });
385
+ const triggerFocusRing = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950";
386
+ const renderPageControl = (pageNumber) => {
387
+ const isCurrent = pageNumber === currentPage;
388
+ const href = getPageHref?.(pageNumber);
389
+ const shared = cn(
390
+ isCurrent ? currentTriggerClass : inactiveTriggerClass,
391
+ "min-w-[2.25ch] shrink-0",
392
+ triggerFocusRing
393
+ );
394
+ if (href) {
395
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
396
+ "a",
397
+ {
398
+ "data-slot": "pagination-trigger",
399
+ href,
400
+ "aria-label": `Page ${pageNumber}`,
401
+ "aria-current": isCurrent ? "page" : void 0,
402
+ className: shared,
403
+ children: pageNumber
404
+ }
405
+ );
406
+ }
407
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
408
+ "button",
409
+ {
410
+ type: "button",
411
+ "data-slot": "pagination-trigger",
412
+ "aria-label": `Page ${pageNumber}`,
413
+ "aria-current": isCurrent ? "page" : void 0,
414
+ className: shared,
415
+ onClick: () => {
416
+ if (!isCurrent) {
417
+ setPage(pageNumber);
418
+ }
419
+ },
420
+ children: pageNumber
421
+ }
422
+ );
423
+ };
424
+ const prevHref = getPageHref?.(clampPage(currentPage - 1, pageCount));
425
+ const nextHref = getPageHref?.(clampPage(currentPage + 1, pageCount));
426
+ const navTriggerClass = cn(
427
+ buttonVariants({ appearance: "outline", size }),
428
+ "shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950"
429
+ );
430
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
431
+ "nav",
432
+ {
433
+ ref,
434
+ "data-slot": "pagination",
435
+ "aria-label": ariaLabel,
436
+ className: cn("w-full", className),
437
+ onKeyDown: handleKeyDown,
438
+ ...rest,
439
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
440
+ showPrevNext ? getPageHref && prevHref && canGoPrev ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
441
+ "a",
442
+ {
443
+ "data-slot": "pagination-prev",
444
+ "aria-label": prevLabel,
445
+ href: prevHref,
446
+ className: navTriggerClass,
447
+ children: "Prev"
448
+ }
449
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
450
+ "button",
451
+ {
452
+ type: "button",
453
+ "data-slot": "pagination-prev",
454
+ "aria-label": prevLabel,
455
+ disabled: !canGoPrev,
456
+ className: navTriggerClass,
457
+ onClick: goPrev,
458
+ children: "Prev"
459
+ }
460
+ ) : null,
461
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
462
+ "ul",
463
+ {
464
+ id: listId,
465
+ "data-slot": "pagination-list",
466
+ className: paginationListVariants({ appearance, size }),
467
+ children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
468
+ "li",
469
+ {
470
+ "data-slot": "pagination-item",
471
+ className: "inline-flex items-center",
472
+ children: item.type === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
473
+ "span",
474
+ {
475
+ "data-slot": "pagination-ellipsis",
476
+ "aria-hidden": "true",
477
+ title: ellipsisLabel,
478
+ className: paginationEllipsisVariants({ size }),
479
+ children: "\u2026"
480
+ }
481
+ ) : renderPageControl(item.value)
482
+ },
483
+ item.type === "page" ? `page-${item.value}` : item.key
484
+ ))
485
+ }
486
+ ),
487
+ showPrevNext ? getPageHref && nextHref && canGoNext ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
488
+ "a",
489
+ {
490
+ "data-slot": "pagination-next",
491
+ "aria-label": nextLabel,
492
+ href: nextHref,
493
+ className: navTriggerClass,
494
+ children: "Next"
495
+ }
496
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
497
+ "button",
498
+ {
499
+ type: "button",
500
+ "data-slot": "pagination-next",
501
+ "aria-label": nextLabel,
502
+ disabled: !canGoNext,
503
+ className: navTriggerClass,
504
+ onClick: goNext,
505
+ children: "Next"
506
+ }
507
+ ) : null
508
+ ] })
509
+ }
510
+ );
511
+ }
512
+ );
513
+ Pagination.displayName = "Pagination";
514
+ // Annotate the CommonJS export names for ESM import in node:
515
+ 0 && (module.exports = {
516
+ Pagination,
517
+ buildPaginationItems,
518
+ clampPage,
519
+ paginationEllipsisVariants,
520
+ paginationListVariants,
521
+ usePagination
522
+ });
523
+ //# sourceMappingURL=pagination.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/pagination/index.ts","../../src/ui/pagination/pagination.tsx","../../src/lib/utils.ts","../../src/ui/buttons/variants.ts","../../src/ui/pagination/pagination-logic.ts","../../src/ui/pagination/use-pagination.ts","../../src/ui/pagination/variants.ts"],"sourcesContent":["export { Pagination } from \"./pagination\";\nexport { usePagination } from \"./use-pagination\";\nexport { buildPaginationItems, clampPage } from \"./pagination-logic\";\nexport type {\n PaginationProps,\n PaginationAppearance,\n PaginationSize,\n PaginationPageItem,\n UsePaginationParams,\n UsePaginationResult,\n} from \"./types\";\nexport { paginationListVariants, paginationEllipsisVariants } from \"./variants\";\n","\"use client\";\n\nimport { forwardRef, useCallback, useId, type KeyboardEvent } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"../buttons/variants\";\n\nimport { clampPage } from \"./pagination-logic\";\nimport type { PaginationProps } from \"./types\";\nimport { usePagination } from \"./use-pagination\";\nimport { paginationEllipsisVariants, paginationListVariants } from \"./variants\";\n\nconst defaultPrevLabel = \"Previous page\";\nconst defaultNextLabel = \"Next page\";\nconst defaultEllipsisLabel = \"More pages\";\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n className,\n appearance = \"default\",\n size = \"md\",\n pageCount,\n page,\n defaultPage = 1,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n showPrevNext = true,\n prevLabel = defaultPrevLabel,\n nextLabel = defaultNextLabel,\n ellipsisLabel = defaultEllipsisLabel,\n getPageHref,\n \"aria-label\": ariaLabel = \"Pagination\",\n ...rest\n },\n ref,\n ) {\n const id = useId();\n const listId = `${id}-list`;\n\n const {\n currentPage,\n items,\n setPage,\n goPrev,\n goNext,\n canGoPrev,\n canGoNext,\n } = usePagination({\n pageCount,\n page,\n defaultPage,\n siblingCount,\n boundaryCount,\n onPageChange,\n });\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (pageCount <= 0) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n if (canGoNext) {\n setPage(currentPage + 1);\n }\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n if (canGoPrev) {\n setPage(currentPage - 1);\n }\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setPage(1);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setPage(pageCount);\n }\n },\n [canGoNext, canGoPrev, currentPage, pageCount, setPage],\n );\n\n if (pageCount <= 0) {\n return null;\n }\n\n const inactiveTriggerClass = cn(\n buttonVariants({ appearance: \"ghost\", size }),\n \"bg-white/[0.04] text-slate-200 hover:bg-white/10\",\n );\n\n const currentTriggerClass = buttonVariants({ appearance, size });\n\n const triggerFocusRing =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\";\n\n const renderPageControl = (pageNumber: number) => {\n const isCurrent = pageNumber === currentPage;\n const href = getPageHref?.(pageNumber);\n const shared = cn(\n isCurrent ? currentTriggerClass : inactiveTriggerClass,\n \"min-w-[2.25ch] shrink-0\",\n triggerFocusRing,\n );\n\n if (href) {\n return (\n <a\n data-slot=\"pagination-trigger\"\n href={href}\n aria-label={`Page ${pageNumber}`}\n aria-current={isCurrent ? \"page\" : undefined}\n className={shared}\n >\n {pageNumber}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"pagination-trigger\"\n aria-label={`Page ${pageNumber}`}\n aria-current={isCurrent ? \"page\" : undefined}\n className={shared}\n onClick={() => {\n if (!isCurrent) {\n setPage(pageNumber);\n }\n }}\n >\n {pageNumber}\n </button>\n );\n };\n\n const prevHref = getPageHref?.(clampPage(currentPage - 1, pageCount));\n const nextHref = getPageHref?.(clampPage(currentPage + 1, pageCount));\n\n const navTriggerClass = cn(\n buttonVariants({ appearance: \"outline\", size }),\n \"shrink-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n );\n\n return (\n <nav\n ref={ref}\n data-slot=\"pagination\"\n aria-label={ariaLabel}\n className={cn(\"w-full\", className)}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n {showPrevNext ? (\n getPageHref && prevHref && canGoPrev ? (\n <a\n data-slot=\"pagination-prev\"\n aria-label={prevLabel}\n href={prevHref}\n className={navTriggerClass}\n >\n Prev\n </a>\n ) : (\n <button\n type=\"button\"\n data-slot=\"pagination-prev\"\n aria-label={prevLabel}\n disabled={!canGoPrev}\n className={navTriggerClass}\n onClick={goPrev}\n >\n Prev\n </button>\n )\n ) : null}\n\n <ul\n id={listId}\n data-slot=\"pagination-list\"\n className={paginationListVariants({ appearance, size })}\n >\n {items.map((item) => (\n <li\n key={item.type === \"page\" ? `page-${item.value}` : item.key}\n data-slot=\"pagination-item\"\n className=\"inline-flex items-center\"\n >\n {item.type === \"ellipsis\" ? (\n <span\n data-slot=\"pagination-ellipsis\"\n aria-hidden=\"true\"\n title={ellipsisLabel}\n className={paginationEllipsisVariants({ size })}\n >\n …\n </span>\n ) : (\n renderPageControl(item.value)\n )}\n </li>\n ))}\n </ul>\n\n {showPrevNext ? (\n getPageHref && nextHref && canGoNext ? (\n <a\n data-slot=\"pagination-next\"\n aria-label={nextLabel}\n href={nextHref}\n className={navTriggerClass}\n >\n Next\n </a>\n ) : (\n <button\n type=\"button\"\n data-slot=\"pagination-next\"\n aria-label={nextLabel}\n disabled={!canGoNext}\n className={navTriggerClass}\n onClick={goNext}\n >\n Next\n </button>\n )\n ) : null}\n </div>\n </nav>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl\",\n \"text-sm font-medium ring-offset-slate-950 transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-300 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"select-none\",\n ],\n {\n variants: {\n appearance: {\n default:\n \"bg-slate-50 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.12)] hover:bg-white\",\n secondary: \"bg-slate-800 text-slate-50 hover:bg-slate-700\",\n destructive: \"bg-rose-600 text-white hover:bg-rose-600\",\n outline:\n \"border border-white/10 bg-white/5 text-slate-50 hover:bg-white/10\",\n ghost: \"bg-transparent text-slate-200 hover:bg-white/5\",\n link: \"bg-transparent text-cyan-300 underline-offset-4 hover:underline\",\n glass:\n \"border border-white/15 bg-white/10 text-white backdrop-blur-md hover:bg-white/15\",\n emerald: \"bg-emerald-600 text-white hover:bg-emerald-600\",\n indigo: \"bg-indigo-600 text-white hover:bg-indigo-600\",\n purple: \"bg-purple-600 text-white hover:bg-purple-600\",\n pink: \"bg-pink-600 text-white hover:bg-pink-600\",\n rose: \"bg-rose-600 text-white hover:bg-rose-600\",\n sky: \"bg-sky-600 text-white hover:bg-sky-600\",\n teal: \"bg-teal-600 text-white hover:bg-teal-600\",\n yellow: \"bg-yellow-600 text-white hover:bg-yellow-600\",\n orange: \"bg-orange-600 text-white hover:bg-orange-600\",\n gray: \"bg-gray-600 text-white hover:bg-gray-600\",\n amber: \"bg-amber-600 text-white hover:bg-amber-600\",\n violet: \"bg-violet-600 text-white hover:bg-violet-600\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600 text-white hover:from-blue-600 hover:to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600 text-white hover:from-green-600 hover:to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600 text-white hover:from-red-600 hover:to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600 text-white hover:from-yellow-600 hover:to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600 text-white hover:from-purple-600 hover:to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600 text-white hover:from-teal-600 hover:to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600 text-white hover:from-indigo-600 hover:to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600 text-white hover:from-pink-600 hover:to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600 text-white hover:from-orange-600 hover:to-red-600\",\n },\n size: {\n sm: \"h-7 md:h-9 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n xl: \"h-12 md:h-14 px-6 text-lg\",\n \"2xl\": \"h-14 md:h-16 px-6 md:px-8 text-xl\",\n \"3xl\": \"h-16 md:h-18 px-8 md:px-10 text-2xl\",\n \"4xl\": \"h-18 md:h-20 px-10 md:px-12 text-2xl\",\n \"5xl\": \"h-20 md:h-22 px-12 md:px-14 text-2xl\",\n \"6xl\": \"h-22 md:h-24 px-14 md:px-16 text-2xl\",\n \"7xl\": \"h-24 md:h-26 px-16 md:px-18 text-2xl\",\n \"8xl\": \"h-26 md:h-28 px-20 text-2xl\",\n \"9xl\": \"h-24 md:h-30 px-18 md:px-22 text-2xl\",\n \"10xl\": \"h-26 md:h-32 px-20 md:px-24 text-2xl\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n","export type PaginationPageItem =\n | { type: \"page\"; value: number }\n | { type: \"ellipsis\"; key: string };\n\nexport type BuildPaginationItemsParams = {\n pageCount: number;\n currentPage: number;\n siblingCount: number;\n boundaryCount: number;\n};\n\n/**\n * Builds the ordered list of page numbers and ellipsis markers for a pagination control.\n *\n * Args:\n * pageCount: Total number of pages (must be >= 0).\n * currentPage: Active page index (1-based).\n * siblingCount: How many page buttons to show on each side of the current page.\n * boundaryCount: How many pages to pin at the start and end of the range.\n *\n * Returns:\n * A list of items suitable for rendering, e.g. [1, ellipsis, 4,5,6, ellipsis, 20].\n */\nexport function buildPaginationItems({\n pageCount,\n currentPage,\n siblingCount,\n boundaryCount,\n}: BuildPaginationItemsParams): PaginationPageItem[] {\n if (pageCount <= 0) {\n return [];\n }\n\n const safeBoundary = Math.max(1, boundaryCount);\n const safeSibling = Math.max(0, siblingCount);\n const current = clampPage(currentPage, pageCount);\n\n const totalNumbers =\n safeBoundary * 2 + safeSibling * 2 + 1;\n if (pageCount <= totalNumbers) {\n return range(1, pageCount).map((value) => ({ type: \"page\", value }));\n }\n\n const leftBoundaryEnd = safeBoundary;\n const rightBoundaryStart = pageCount - safeBoundary + 1;\n\n const siblingsStart = Math.max(current - safeSibling, leftBoundaryEnd + 1);\n const siblingsEnd = Math.min(current + safeSibling, rightBoundaryStart - 1);\n\n const pages = new Set<number>();\n for (let p = 1; p <= leftBoundaryEnd; p += 1) {\n pages.add(p);\n }\n for (let p = rightBoundaryStart; p <= pageCount; p += 1) {\n pages.add(p);\n }\n for (let p = siblingsStart; p <= siblingsEnd; p += 1) {\n pages.add(p);\n }\n\n const sorted = [...pages].sort((a, b) => a - b);\n const items: PaginationPageItem[] = [];\n\n for (let i = 0; i < sorted.length; i += 1) {\n const value = sorted[i];\n const prev = sorted[i - 1];\n if (i > 0 && prev !== undefined && value && value - prev > 1) {\n items.push({ type: \"ellipsis\", key: `gap-${prev}-${value}` });\n }\n items.push({ type: \"page\", value: value as number });\n }\n\n return items;\n}\n\nexport function clampPage(page: number, pageCount: number): number {\n if (pageCount <= 0) {\n return 1;\n }\n return Math.min(pageCount, Math.max(1, Math.floor(page)));\n}\n\nfunction range(from: number, to: number): number[] {\n const out: number[] = [];\n for (let i = from; i <= to; i += 1) {\n out.push(i);\n }\n return out;\n}\n","\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type { UsePaginationParams, UsePaginationResult } from \"./types\";\nimport { buildPaginationItems, clampPage } from \"./pagination-logic\";\n\nexport function usePagination({\n pageCount,\n page,\n defaultPage = 1,\n siblingCount = 1,\n boundaryCount = 1,\n onPageChange,\n}: UsePaginationParams): UsePaginationResult {\n const [internalPage, setInternalPage] = useState(() =>\n clampPage(defaultPage, pageCount),\n );\n\n const isControlled = page !== undefined;\n const currentPage = clampPage(\n isControlled ? page : internalPage,\n pageCount,\n );\n\n const setPage = useCallback(\n (next: number) => {\n const clamped = clampPage(next, pageCount);\n if (!isControlled) {\n setInternalPage(clamped);\n }\n onPageChange?.(clamped);\n },\n [isControlled, onPageChange, pageCount],\n );\n\n const items = useMemo(\n () =>\n buildPaginationItems({\n pageCount,\n currentPage,\n siblingCount,\n boundaryCount,\n }),\n [boundaryCount, currentPage, pageCount, siblingCount],\n );\n\n const canGoPrev = pageCount > 0 && currentPage > 1;\n const canGoNext = pageCount > 0 && currentPage < pageCount;\n\n const goPrev = useCallback(() => {\n if (canGoPrev) {\n setPage(currentPage - 1);\n }\n }, [canGoPrev, currentPage, setPage]);\n\n const goNext = useCallback(() => {\n if (canGoNext) {\n setPage(currentPage + 1);\n }\n }, [canGoNext, currentPage, setPage]);\n\n return {\n currentPage,\n pageCount,\n items,\n setPage,\n goPrev,\n goNext,\n canGoPrev,\n canGoNext,\n };\n}\n","import { cva } from \"class-variance-authority\";\n\n/**\n * Layout and chrome for the page list cluster. Appearance and size keys align with\n * `components/ui/buttons/variants.ts` for consistent design-system tokens.\n */\nexport const paginationListVariants = cva(\n \"inline-flex flex-wrap items-center rounded-xl border p-1 ring-offset-slate-950\",\n {\n variants: {\n appearance: {\n default: \"border-white/10 bg-white/[0.03]\",\n secondary: \"border-white/10 bg-slate-900/40\",\n destructive: \"border-rose-500/25 bg-rose-950/20\",\n outline: \"border-white/15 bg-transparent\",\n ghost: \"border-transparent bg-transparent\",\n link: \"border-transparent bg-transparent\",\n glass: \"border-white/15 bg-white/5 backdrop-blur-md\",\n emerald: \"border-emerald-500/25 bg-emerald-950/20\",\n indigo: \"border-indigo-500/25 bg-indigo-950/20\",\n purple: \"border-purple-500/25 bg-purple-950/20\",\n pink: \"border-pink-500/25 bg-pink-950/20\",\n rose: \"border-rose-500/25 bg-rose-950/20\",\n sky: \"border-sky-500/25 bg-sky-950/20\",\n teal: \"border-teal-500/25 bg-teal-950/20\",\n yellow: \"border-yellow-500/25 bg-yellow-950/20\",\n orange: \"border-orange-500/25 bg-orange-950/20\",\n gray: \"border-gray-500/25 bg-gray-950/20\",\n amber: \"border-amber-500/25 bg-amber-950/20\",\n violet: \"border-violet-500/25 bg-violet-950/20\",\n \"gradient-blue\": \"border-blue-500/30 bg-gradient-to-r from-blue-950/30 to-purple-950/30\",\n \"gradient-green\": \"border-lime-500/30 bg-gradient-to-r from-green-950/30 to-lime-950/30\",\n \"gradient-red\": \"border-pink-500/30 bg-gradient-to-r from-red-950/30 to-pink-950/30\",\n \"gradient-yellow\":\n \"border-orange-500/30 bg-gradient-to-r from-yellow-950/30 to-orange-950/30\",\n \"gradient-purple\":\n \"border-pink-500/30 bg-gradient-to-r from-purple-950/30 to-pink-950/30\",\n \"gradient-teal\": \"border-cyan-500/30 bg-gradient-to-r from-teal-950/30 to-cyan-950/30\",\n \"gradient-indigo\":\n \"border-purple-500/30 bg-gradient-to-r from-indigo-950/30 to-purple-950/30\",\n \"gradient-pink\": \"border-rose-500/30 bg-gradient-to-r from-pink-950/30 to-rose-950/30\",\n \"gradient-orange\": \"border-orange-500/30 bg-gradient-to-r from-orange-950/30 to-red-950/30\",\n },\n size: {\n sm: \"gap-0.5\",\n md: \"gap-1\",\n lg: \"gap-1\",\n xl: \"gap-1.5\",\n \"2xl\": \"gap-1.5\",\n \"3xl\": \"gap-2\",\n \"4xl\": \"gap-2\",\n \"5xl\": \"gap-2\",\n \"6xl\": \"gap-2\",\n \"7xl\": \"gap-2.5\",\n \"8xl\": \"gap-2.5\",\n \"9xl\": \"gap-2.5\",\n \"10xl\": \"gap-3\",\n icon: \"gap-1\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport const paginationEllipsisVariants = cva(\n \"inline-flex min-w-[2ch] select-none items-center justify-center px-1 font-medium text-slate-400\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-base\",\n \"2xl\": \"text-lg\",\n \"3xl\": \"text-lg\",\n \"4xl\": \"text-xl\",\n \"5xl\": \"text-xl\",\n \"6xl\": \"text-xl\",\n \"7xl\": \"text-2xl\",\n \"8xl\": \"text-2xl\",\n \"9xl\": \"text-2xl\",\n \"10xl\": \"text-2xl\",\n icon: \"text-sm\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n"],"mappings":"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","names":["import_react","import_class_variance_authority","Pagination"]}