@geovi/the-datagrid 0.0.0-preview.0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +293 -0
  2. package/dist/ReactDataGrid.d.ts +9 -0
  3. package/dist/ReactDataGrid.d.ts.map +1 -0
  4. package/dist/components/ui/button.d.ts +12 -0
  5. package/dist/components/ui/button.d.ts.map +1 -0
  6. package/dist/components/ui/checkbox.d.ts +5 -0
  7. package/dist/components/ui/checkbox.d.ts.map +1 -0
  8. package/dist/components/ui/command.d.ts +81 -0
  9. package/dist/components/ui/command.d.ts.map +1 -0
  10. package/dist/components/ui/dialog.d.ts +20 -0
  11. package/dist/components/ui/dialog.d.ts.map +1 -0
  12. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  13. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  14. package/dist/components/ui/input.d.ts +4 -0
  15. package/dist/components/ui/input.d.ts.map +1 -0
  16. package/dist/components/ui/label.d.ts +6 -0
  17. package/dist/components/ui/label.d.ts.map +1 -0
  18. package/dist/components/ui/popover.d.ts +8 -0
  19. package/dist/components/ui/popover.d.ts.map +1 -0
  20. package/dist/components/ui/select.d.ts +14 -0
  21. package/dist/components/ui/select.d.ts.map +1 -0
  22. package/dist/components/ui/table.d.ts +11 -0
  23. package/dist/components/ui/table.d.ts.map +1 -0
  24. package/dist/filters/utils.d.ts +12 -0
  25. package/dist/filters/utils.d.ts.map +1 -0
  26. package/dist/hooks/useControllableState.d.ts +6 -0
  27. package/dist/hooks/useControllableState.d.ts.map +1 -0
  28. package/dist/index.js +4064 -0
  29. package/dist/lib/utils.d.ts +3 -0
  30. package/dist/lib/utils.d.ts.map +1 -0
  31. package/dist/main.d.ts +3 -0
  32. package/dist/main.d.ts.map +1 -0
  33. package/dist/sorting/utils.d.ts +13 -0
  34. package/dist/sorting/utils.d.ts.map +1 -0
  35. package/dist/types.d.ts +169 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/utils/column.d.ts +4 -0
  38. package/dist/utils/column.d.ts.map +1 -0
  39. package/dist/utils/helpers.d.ts +11 -0
  40. package/dist/utils/helpers.d.ts.map +1 -0
  41. package/package.json +90 -0
package/dist/index.js ADDED
@@ -0,0 +1,4064 @@
1
+ import { jsx as a, jsxs as R, Fragment as no } from "react/jsx-runtime";
2
+ import * as f from "react";
3
+ import { forwardRef as Nt, createElement as Xe } from "react";
4
+ import { useReactTable as ao, getCoreRowModel as so, flexRender as Le } from "@tanstack/react-table";
5
+ import { useVirtualizer as lo } from "@tanstack/react-virtual";
6
+ import { IconDotsVertical as io, IconChevronsLeft as co, IconChevronLeft as uo, IconChevronRight as mo, IconChevronsRight as fo, IconChevronUp as po, IconChevronDown as go, IconArrowsSort as ho } from "@tabler/icons-react";
7
+ import * as Ct from "@radix-ui/react-label";
8
+ import * as M from "@radix-ui/react-dropdown-menu";
9
+ import * as T from "@radix-ui/react-select";
10
+ function St(e) {
11
+ var t, o, r = "";
12
+ if (typeof e == "string" || typeof e == "number") r += e;
13
+ else if (typeof e == "object") if (Array.isArray(e)) {
14
+ var n = e.length;
15
+ for (t = 0; t < n; t++) e[t] && (o = St(e[t])) && (r && (r += " "), r += o);
16
+ } else for (o in e) e[o] && (r && (r += " "), r += o);
17
+ return r;
18
+ }
19
+ function Rt() {
20
+ for (var e, t, o = 0, r = "", n = arguments.length; o < n; o++) (e = arguments[o]) && (t = St(e)) && (r && (r += " "), r += t);
21
+ return r;
22
+ }
23
+ const bo = (e, t) => {
24
+ const o = new Array(e.length + t.length);
25
+ for (let r = 0; r < e.length; r++)
26
+ o[r] = e[r];
27
+ for (let r = 0; r < t.length; r++)
28
+ o[e.length + r] = t[r];
29
+ return o;
30
+ }, yo = (e, t) => ({
31
+ classGroupId: e,
32
+ validator: t
33
+ }), zt = (e = /* @__PURE__ */ new Map(), t = null, o) => ({
34
+ nextPart: e,
35
+ validators: t,
36
+ classGroupId: o
37
+ }), We = "-", mt = [], xo = "arbitrary..", wo = (e) => {
38
+ const t = ko(e), {
39
+ conflictingClassGroups: o,
40
+ conflictingClassGroupModifiers: r
41
+ } = e;
42
+ return {
43
+ getClassGroupId: (i) => {
44
+ if (i.startsWith("[") && i.endsWith("]"))
45
+ return vo(i);
46
+ const d = i.split(We), c = d[0] === "" && d.length > 1 ? 1 : 0;
47
+ return At(d, c, t);
48
+ },
49
+ getConflictingClassGroupIds: (i, d) => {
50
+ if (d) {
51
+ const c = r[i], g = o[i];
52
+ return c ? g ? bo(g, c) : c : g || mt;
53
+ }
54
+ return o[i] || mt;
55
+ }
56
+ };
57
+ }, At = (e, t, o) => {
58
+ if (e.length - t === 0)
59
+ return o.classGroupId;
60
+ const n = e[t], s = o.nextPart.get(n);
61
+ if (s) {
62
+ const g = At(e, t + 1, s);
63
+ if (g) return g;
64
+ }
65
+ const i = o.validators;
66
+ if (i === null)
67
+ return;
68
+ const d = t === 0 ? e.join(We) : e.slice(t).join(We), c = i.length;
69
+ for (let g = 0; g < c; g++) {
70
+ const w = i[g];
71
+ if (w.validator(d))
72
+ return w.classGroupId;
73
+ }
74
+ }, vo = (e) => e.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
75
+ const t = e.slice(1, -1), o = t.indexOf(":"), r = t.slice(0, o);
76
+ return r ? xo + r : void 0;
77
+ })(), ko = (e) => {
78
+ const {
79
+ theme: t,
80
+ classGroups: o
81
+ } = e;
82
+ return No(o, t);
83
+ }, No = (e, t) => {
84
+ const o = zt();
85
+ for (const r in e) {
86
+ const n = e[r];
87
+ ot(n, o, r, t);
88
+ }
89
+ return o;
90
+ }, ot = (e, t, o, r) => {
91
+ const n = e.length;
92
+ for (let s = 0; s < n; s++) {
93
+ const i = e[s];
94
+ Co(i, t, o, r);
95
+ }
96
+ }, Co = (e, t, o, r) => {
97
+ if (typeof e == "string") {
98
+ So(e, t, o);
99
+ return;
100
+ }
101
+ if (typeof e == "function") {
102
+ Ro(e, t, o, r);
103
+ return;
104
+ }
105
+ zo(e, t, o, r);
106
+ }, So = (e, t, o) => {
107
+ const r = e === "" ? t : It(t, e);
108
+ r.classGroupId = o;
109
+ }, Ro = (e, t, o, r) => {
110
+ if (Ao(e)) {
111
+ ot(e(r), t, o, r);
112
+ return;
113
+ }
114
+ t.validators === null && (t.validators = []), t.validators.push(yo(o, e));
115
+ }, zo = (e, t, o, r) => {
116
+ const n = Object.entries(e), s = n.length;
117
+ for (let i = 0; i < s; i++) {
118
+ const [d, c] = n[i];
119
+ ot(c, It(t, d), o, r);
120
+ }
121
+ }, It = (e, t) => {
122
+ let o = e;
123
+ const r = t.split(We), n = r.length;
124
+ for (let s = 0; s < n; s++) {
125
+ const i = r[s];
126
+ let d = o.nextPart.get(i);
127
+ d || (d = zt(), o.nextPart.set(i, d)), o = d;
128
+ }
129
+ return o;
130
+ }, Ao = (e) => "isThemeGetter" in e && e.isThemeGetter === !0, Io = (e) => {
131
+ if (e < 1)
132
+ return {
133
+ get: () => {
134
+ },
135
+ set: () => {
136
+ }
137
+ };
138
+ let t = 0, o = /* @__PURE__ */ Object.create(null), r = /* @__PURE__ */ Object.create(null);
139
+ const n = (s, i) => {
140
+ o[s] = i, t++, t > e && (t = 0, r = o, o = /* @__PURE__ */ Object.create(null));
141
+ };
142
+ return {
143
+ get(s) {
144
+ let i = o[s];
145
+ if (i !== void 0)
146
+ return i;
147
+ if ((i = r[s]) !== void 0)
148
+ return n(s, i), i;
149
+ },
150
+ set(s, i) {
151
+ s in o ? o[s] = i : n(s, i);
152
+ }
153
+ };
154
+ }, Je = "!", ft = ":", To = [], pt = (e, t, o, r, n) => ({
155
+ modifiers: e,
156
+ hasImportantModifier: t,
157
+ baseClassName: o,
158
+ maybePostfixModifierPosition: r,
159
+ isExternal: n
160
+ }), Mo = (e) => {
161
+ const {
162
+ prefix: t,
163
+ experimentalParseClassName: o
164
+ } = e;
165
+ let r = (n) => {
166
+ const s = [];
167
+ let i = 0, d = 0, c = 0, g;
168
+ const w = n.length;
169
+ for (let O = 0; O < w; O++) {
170
+ const _ = n[O];
171
+ if (i === 0 && d === 0) {
172
+ if (_ === ft) {
173
+ s.push(n.slice(c, O)), c = O + 1;
174
+ continue;
175
+ }
176
+ if (_ === "/") {
177
+ g = O;
178
+ continue;
179
+ }
180
+ }
181
+ _ === "[" ? i++ : _ === "]" ? i-- : _ === "(" ? d++ : _ === ")" && d--;
182
+ }
183
+ const S = s.length === 0 ? n : n.slice(c);
184
+ let v = S, Z = !1;
185
+ S.endsWith(Je) ? (v = S.slice(0, -1), Z = !0) : (
186
+ /**
187
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
188
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
189
+ */
190
+ S.startsWith(Je) && (v = S.slice(1), Z = !0)
191
+ );
192
+ const K = g && g > c ? g - c : void 0;
193
+ return pt(s, Z, v, K);
194
+ };
195
+ if (t) {
196
+ const n = t + ft, s = r;
197
+ r = (i) => i.startsWith(n) ? s(i.slice(n.length)) : pt(To, !1, i, void 0, !0);
198
+ }
199
+ if (o) {
200
+ const n = r;
201
+ r = (s) => o({
202
+ className: s,
203
+ parseClassName: n
204
+ });
205
+ }
206
+ return r;
207
+ }, _o = (e) => {
208
+ const t = /* @__PURE__ */ new Map();
209
+ return e.orderSensitiveModifiers.forEach((o, r) => {
210
+ t.set(o, 1e6 + r);
211
+ }), (o) => {
212
+ const r = [];
213
+ let n = [];
214
+ for (let s = 0; s < o.length; s++) {
215
+ const i = o[s], d = i[0] === "[", c = t.has(i);
216
+ d || c ? (n.length > 0 && (n.sort(), r.push(...n), n = []), r.push(i)) : n.push(i);
217
+ }
218
+ return n.length > 0 && (n.sort(), r.push(...n)), r;
219
+ };
220
+ }, Eo = (e) => ({
221
+ cache: Io(e.cacheSize),
222
+ parseClassName: Mo(e),
223
+ sortModifiers: _o(e),
224
+ ...wo(e)
225
+ }), Do = /\s+/, Po = (e, t) => {
226
+ const {
227
+ parseClassName: o,
228
+ getClassGroupId: r,
229
+ getConflictingClassGroupIds: n,
230
+ sortModifiers: s
231
+ } = t, i = [], d = e.trim().split(Do);
232
+ let c = "";
233
+ for (let g = d.length - 1; g >= 0; g -= 1) {
234
+ const w = d[g], {
235
+ isExternal: S,
236
+ modifiers: v,
237
+ hasImportantModifier: Z,
238
+ baseClassName: K,
239
+ maybePostfixModifierPosition: O
240
+ } = o(w);
241
+ if (S) {
242
+ c = w + (c.length > 0 ? " " + c : c);
243
+ continue;
244
+ }
245
+ let _ = !!O, J = r(_ ? K.substring(0, O) : K);
246
+ if (!J) {
247
+ if (!_) {
248
+ c = w + (c.length > 0 ? " " + c : c);
249
+ continue;
250
+ }
251
+ if (J = r(K), !J) {
252
+ c = w + (c.length > 0 ? " " + c : c);
253
+ continue;
254
+ }
255
+ _ = !1;
256
+ }
257
+ const xe = v.length === 0 ? "" : v.length === 1 ? v[0] : s(v).join(":"), ue = Z ? xe + Je : xe, B = ue + J;
258
+ if (i.indexOf(B) > -1)
259
+ continue;
260
+ i.push(B);
261
+ const X = n(J, _);
262
+ for (let W = 0; W < X.length; ++W) {
263
+ const q = X[W];
264
+ i.push(ue + q);
265
+ }
266
+ c = w + (c.length > 0 ? " " + c : c);
267
+ }
268
+ return c;
269
+ }, Lo = (...e) => {
270
+ let t = 0, o, r, n = "";
271
+ for (; t < e.length; )
272
+ (o = e[t++]) && (r = Tt(o)) && (n && (n += " "), n += r);
273
+ return n;
274
+ }, Tt = (e) => {
275
+ if (typeof e == "string")
276
+ return e;
277
+ let t, o = "";
278
+ for (let r = 0; r < e.length; r++)
279
+ e[r] && (t = Tt(e[r])) && (o && (o += " "), o += t);
280
+ return o;
281
+ }, Vo = (e, ...t) => {
282
+ let o, r, n, s;
283
+ const i = (c) => {
284
+ const g = t.reduce((w, S) => S(w), e());
285
+ return o = Eo(g), r = o.cache.get, n = o.cache.set, s = d, d(c);
286
+ }, d = (c) => {
287
+ const g = r(c);
288
+ if (g)
289
+ return g;
290
+ const w = Po(c, o);
291
+ return n(c, w), w;
292
+ };
293
+ return s = i, (...c) => s(Lo(...c));
294
+ }, Oo = [], V = (e) => {
295
+ const t = (o) => o[e] || Oo;
296
+ return t.isThemeGetter = !0, t;
297
+ }, Mt = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, _t = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Fo = /^\d+\/\d+$/, jo = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Wo = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Go = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, Bo = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, $o = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, ke = (e) => Fo.test(e), k = (e) => !!e && !Number.isNaN(Number(e)), de = (e) => !!e && Number.isInteger(Number(e)), Ze = (e) => e.endsWith("%") && k(e.slice(0, -1)), ae = (e) => jo.test(e), Uo = () => !0, Ho = (e) => (
298
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
299
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
300
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
301
+ Wo.test(e) && !Go.test(e)
302
+ ), Et = () => !1, qo = (e) => Bo.test(e), Yo = (e) => $o.test(e), Zo = (e) => !u(e) && !m(e), Ko = (e) => Ne(e, Lt, Et), u = (e) => Mt.test(e), pe = (e) => Ne(e, Vt, Ho), Ke = (e) => Ne(e, tr, k), gt = (e) => Ne(e, Dt, Et), Xo = (e) => Ne(e, Pt, Yo), Ve = (e) => Ne(e, Ot, qo), m = (e) => _t.test(e), Te = (e) => Ce(e, Vt), Jo = (e) => Ce(e, or), ht = (e) => Ce(e, Dt), Qo = (e) => Ce(e, Lt), er = (e) => Ce(e, Pt), Oe = (e) => Ce(e, Ot, !0), Ne = (e, t, o) => {
303
+ const r = Mt.exec(e);
304
+ return r ? r[1] ? t(r[1]) : o(r[2]) : !1;
305
+ }, Ce = (e, t, o = !1) => {
306
+ const r = _t.exec(e);
307
+ return r ? r[1] ? t(r[1]) : o : !1;
308
+ }, Dt = (e) => e === "position" || e === "percentage", Pt = (e) => e === "image" || e === "url", Lt = (e) => e === "length" || e === "size" || e === "bg-size", Vt = (e) => e === "length", tr = (e) => e === "number", or = (e) => e === "family-name", Ot = (e) => e === "shadow", rr = () => {
309
+ const e = V("color"), t = V("font"), o = V("text"), r = V("font-weight"), n = V("tracking"), s = V("leading"), i = V("breakpoint"), d = V("container"), c = V("spacing"), g = V("radius"), w = V("shadow"), S = V("inset-shadow"), v = V("text-shadow"), Z = V("drop-shadow"), K = V("blur"), O = V("perspective"), _ = V("aspect"), J = V("ease"), xe = V("animate"), ue = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], B = () => [
310
+ "center",
311
+ "top",
312
+ "bottom",
313
+ "left",
314
+ "right",
315
+ "top-left",
316
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
317
+ "left-top",
318
+ "top-right",
319
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
320
+ "right-top",
321
+ "bottom-right",
322
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
323
+ "right-bottom",
324
+ "bottom-left",
325
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
326
+ "left-bottom"
327
+ ], X = () => [...B(), m, u], W = () => ["auto", "hidden", "clip", "visible", "scroll"], q = () => ["auto", "contain", "none"], h = () => [m, u, c], D = () => [ke, "full", "auto", ...h()], Q = () => [de, "none", "subgrid", m, u], ee = () => ["auto", {
328
+ span: ["full", de, m, u]
329
+ }, de, m, u], te = () => [de, "auto", m, u], j = () => ["auto", "min", "max", "fr", m, u], A = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], P = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], $ = () => ["auto", ...h()], oe = () => [ke, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...h()], x = () => [e, m, u], Be = () => [...B(), ht, gt, {
330
+ position: [m, u]
331
+ }], Ee = () => ["no-repeat", {
332
+ repeat: ["", "x", "y", "space", "round"]
333
+ }], G = () => ["auto", "cover", "contain", Qo, Ko, {
334
+ size: [m, u]
335
+ }], Se = () => [Ze, Te, pe], I = () => [
336
+ // Deprecated since Tailwind CSS v4.0.0
337
+ "",
338
+ "none",
339
+ "full",
340
+ g,
341
+ m,
342
+ u
343
+ ], F = () => ["", k, Te, pe], Y = () => ["solid", "dashed", "dotted", "double"], me = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], E = () => [k, Ze, ht, gt], Re = () => [
344
+ // Deprecated since Tailwind CSS v4.0.0
345
+ "",
346
+ "none",
347
+ K,
348
+ m,
349
+ u
350
+ ], we = () => ["none", k, m, u], re = () => ["none", k, m, u], le = () => [k, m, u], ne = () => [ke, "full", ...h()];
351
+ return {
352
+ cacheSize: 500,
353
+ theme: {
354
+ animate: ["spin", "ping", "pulse", "bounce"],
355
+ aspect: ["video"],
356
+ blur: [ae],
357
+ breakpoint: [ae],
358
+ color: [Uo],
359
+ container: [ae],
360
+ "drop-shadow": [ae],
361
+ ease: ["in", "out", "in-out"],
362
+ font: [Zo],
363
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
364
+ "inset-shadow": [ae],
365
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
366
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
367
+ radius: [ae],
368
+ shadow: [ae],
369
+ spacing: ["px", k],
370
+ text: [ae],
371
+ "text-shadow": [ae],
372
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
373
+ },
374
+ classGroups: {
375
+ // --------------
376
+ // --- Layout ---
377
+ // --------------
378
+ /**
379
+ * Aspect Ratio
380
+ * @see https://tailwindcss.com/docs/aspect-ratio
381
+ */
382
+ aspect: [{
383
+ aspect: ["auto", "square", ke, u, m, _]
384
+ }],
385
+ /**
386
+ * Container
387
+ * @see https://tailwindcss.com/docs/container
388
+ * @deprecated since Tailwind CSS v4.0.0
389
+ */
390
+ container: ["container"],
391
+ /**
392
+ * Columns
393
+ * @see https://tailwindcss.com/docs/columns
394
+ */
395
+ columns: [{
396
+ columns: [k, u, m, d]
397
+ }],
398
+ /**
399
+ * Break After
400
+ * @see https://tailwindcss.com/docs/break-after
401
+ */
402
+ "break-after": [{
403
+ "break-after": ue()
404
+ }],
405
+ /**
406
+ * Break Before
407
+ * @see https://tailwindcss.com/docs/break-before
408
+ */
409
+ "break-before": [{
410
+ "break-before": ue()
411
+ }],
412
+ /**
413
+ * Break Inside
414
+ * @see https://tailwindcss.com/docs/break-inside
415
+ */
416
+ "break-inside": [{
417
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
418
+ }],
419
+ /**
420
+ * Box Decoration Break
421
+ * @see https://tailwindcss.com/docs/box-decoration-break
422
+ */
423
+ "box-decoration": [{
424
+ "box-decoration": ["slice", "clone"]
425
+ }],
426
+ /**
427
+ * Box Sizing
428
+ * @see https://tailwindcss.com/docs/box-sizing
429
+ */
430
+ box: [{
431
+ box: ["border", "content"]
432
+ }],
433
+ /**
434
+ * Display
435
+ * @see https://tailwindcss.com/docs/display
436
+ */
437
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
438
+ /**
439
+ * Screen Reader Only
440
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
441
+ */
442
+ sr: ["sr-only", "not-sr-only"],
443
+ /**
444
+ * Floats
445
+ * @see https://tailwindcss.com/docs/float
446
+ */
447
+ float: [{
448
+ float: ["right", "left", "none", "start", "end"]
449
+ }],
450
+ /**
451
+ * Clear
452
+ * @see https://tailwindcss.com/docs/clear
453
+ */
454
+ clear: [{
455
+ clear: ["left", "right", "both", "none", "start", "end"]
456
+ }],
457
+ /**
458
+ * Isolation
459
+ * @see https://tailwindcss.com/docs/isolation
460
+ */
461
+ isolation: ["isolate", "isolation-auto"],
462
+ /**
463
+ * Object Fit
464
+ * @see https://tailwindcss.com/docs/object-fit
465
+ */
466
+ "object-fit": [{
467
+ object: ["contain", "cover", "fill", "none", "scale-down"]
468
+ }],
469
+ /**
470
+ * Object Position
471
+ * @see https://tailwindcss.com/docs/object-position
472
+ */
473
+ "object-position": [{
474
+ object: X()
475
+ }],
476
+ /**
477
+ * Overflow
478
+ * @see https://tailwindcss.com/docs/overflow
479
+ */
480
+ overflow: [{
481
+ overflow: W()
482
+ }],
483
+ /**
484
+ * Overflow X
485
+ * @see https://tailwindcss.com/docs/overflow
486
+ */
487
+ "overflow-x": [{
488
+ "overflow-x": W()
489
+ }],
490
+ /**
491
+ * Overflow Y
492
+ * @see https://tailwindcss.com/docs/overflow
493
+ */
494
+ "overflow-y": [{
495
+ "overflow-y": W()
496
+ }],
497
+ /**
498
+ * Overscroll Behavior
499
+ * @see https://tailwindcss.com/docs/overscroll-behavior
500
+ */
501
+ overscroll: [{
502
+ overscroll: q()
503
+ }],
504
+ /**
505
+ * Overscroll Behavior X
506
+ * @see https://tailwindcss.com/docs/overscroll-behavior
507
+ */
508
+ "overscroll-x": [{
509
+ "overscroll-x": q()
510
+ }],
511
+ /**
512
+ * Overscroll Behavior Y
513
+ * @see https://tailwindcss.com/docs/overscroll-behavior
514
+ */
515
+ "overscroll-y": [{
516
+ "overscroll-y": q()
517
+ }],
518
+ /**
519
+ * Position
520
+ * @see https://tailwindcss.com/docs/position
521
+ */
522
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
523
+ /**
524
+ * Top / Right / Bottom / Left
525
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
526
+ */
527
+ inset: [{
528
+ inset: D()
529
+ }],
530
+ /**
531
+ * Right / Left
532
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
533
+ */
534
+ "inset-x": [{
535
+ "inset-x": D()
536
+ }],
537
+ /**
538
+ * Top / Bottom
539
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
540
+ */
541
+ "inset-y": [{
542
+ "inset-y": D()
543
+ }],
544
+ /**
545
+ * Start
546
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
547
+ */
548
+ start: [{
549
+ start: D()
550
+ }],
551
+ /**
552
+ * End
553
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
554
+ */
555
+ end: [{
556
+ end: D()
557
+ }],
558
+ /**
559
+ * Top
560
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
561
+ */
562
+ top: [{
563
+ top: D()
564
+ }],
565
+ /**
566
+ * Right
567
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
568
+ */
569
+ right: [{
570
+ right: D()
571
+ }],
572
+ /**
573
+ * Bottom
574
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
575
+ */
576
+ bottom: [{
577
+ bottom: D()
578
+ }],
579
+ /**
580
+ * Left
581
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
582
+ */
583
+ left: [{
584
+ left: D()
585
+ }],
586
+ /**
587
+ * Visibility
588
+ * @see https://tailwindcss.com/docs/visibility
589
+ */
590
+ visibility: ["visible", "invisible", "collapse"],
591
+ /**
592
+ * Z-Index
593
+ * @see https://tailwindcss.com/docs/z-index
594
+ */
595
+ z: [{
596
+ z: [de, "auto", m, u]
597
+ }],
598
+ // ------------------------
599
+ // --- Flexbox and Grid ---
600
+ // ------------------------
601
+ /**
602
+ * Flex Basis
603
+ * @see https://tailwindcss.com/docs/flex-basis
604
+ */
605
+ basis: [{
606
+ basis: [ke, "full", "auto", d, ...h()]
607
+ }],
608
+ /**
609
+ * Flex Direction
610
+ * @see https://tailwindcss.com/docs/flex-direction
611
+ */
612
+ "flex-direction": [{
613
+ flex: ["row", "row-reverse", "col", "col-reverse"]
614
+ }],
615
+ /**
616
+ * Flex Wrap
617
+ * @see https://tailwindcss.com/docs/flex-wrap
618
+ */
619
+ "flex-wrap": [{
620
+ flex: ["nowrap", "wrap", "wrap-reverse"]
621
+ }],
622
+ /**
623
+ * Flex
624
+ * @see https://tailwindcss.com/docs/flex
625
+ */
626
+ flex: [{
627
+ flex: [k, ke, "auto", "initial", "none", u]
628
+ }],
629
+ /**
630
+ * Flex Grow
631
+ * @see https://tailwindcss.com/docs/flex-grow
632
+ */
633
+ grow: [{
634
+ grow: ["", k, m, u]
635
+ }],
636
+ /**
637
+ * Flex Shrink
638
+ * @see https://tailwindcss.com/docs/flex-shrink
639
+ */
640
+ shrink: [{
641
+ shrink: ["", k, m, u]
642
+ }],
643
+ /**
644
+ * Order
645
+ * @see https://tailwindcss.com/docs/order
646
+ */
647
+ order: [{
648
+ order: [de, "first", "last", "none", m, u]
649
+ }],
650
+ /**
651
+ * Grid Template Columns
652
+ * @see https://tailwindcss.com/docs/grid-template-columns
653
+ */
654
+ "grid-cols": [{
655
+ "grid-cols": Q()
656
+ }],
657
+ /**
658
+ * Grid Column Start / End
659
+ * @see https://tailwindcss.com/docs/grid-column
660
+ */
661
+ "col-start-end": [{
662
+ col: ee()
663
+ }],
664
+ /**
665
+ * Grid Column Start
666
+ * @see https://tailwindcss.com/docs/grid-column
667
+ */
668
+ "col-start": [{
669
+ "col-start": te()
670
+ }],
671
+ /**
672
+ * Grid Column End
673
+ * @see https://tailwindcss.com/docs/grid-column
674
+ */
675
+ "col-end": [{
676
+ "col-end": te()
677
+ }],
678
+ /**
679
+ * Grid Template Rows
680
+ * @see https://tailwindcss.com/docs/grid-template-rows
681
+ */
682
+ "grid-rows": [{
683
+ "grid-rows": Q()
684
+ }],
685
+ /**
686
+ * Grid Row Start / End
687
+ * @see https://tailwindcss.com/docs/grid-row
688
+ */
689
+ "row-start-end": [{
690
+ row: ee()
691
+ }],
692
+ /**
693
+ * Grid Row Start
694
+ * @see https://tailwindcss.com/docs/grid-row
695
+ */
696
+ "row-start": [{
697
+ "row-start": te()
698
+ }],
699
+ /**
700
+ * Grid Row End
701
+ * @see https://tailwindcss.com/docs/grid-row
702
+ */
703
+ "row-end": [{
704
+ "row-end": te()
705
+ }],
706
+ /**
707
+ * Grid Auto Flow
708
+ * @see https://tailwindcss.com/docs/grid-auto-flow
709
+ */
710
+ "grid-flow": [{
711
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
712
+ }],
713
+ /**
714
+ * Grid Auto Columns
715
+ * @see https://tailwindcss.com/docs/grid-auto-columns
716
+ */
717
+ "auto-cols": [{
718
+ "auto-cols": j()
719
+ }],
720
+ /**
721
+ * Grid Auto Rows
722
+ * @see https://tailwindcss.com/docs/grid-auto-rows
723
+ */
724
+ "auto-rows": [{
725
+ "auto-rows": j()
726
+ }],
727
+ /**
728
+ * Gap
729
+ * @see https://tailwindcss.com/docs/gap
730
+ */
731
+ gap: [{
732
+ gap: h()
733
+ }],
734
+ /**
735
+ * Gap X
736
+ * @see https://tailwindcss.com/docs/gap
737
+ */
738
+ "gap-x": [{
739
+ "gap-x": h()
740
+ }],
741
+ /**
742
+ * Gap Y
743
+ * @see https://tailwindcss.com/docs/gap
744
+ */
745
+ "gap-y": [{
746
+ "gap-y": h()
747
+ }],
748
+ /**
749
+ * Justify Content
750
+ * @see https://tailwindcss.com/docs/justify-content
751
+ */
752
+ "justify-content": [{
753
+ justify: [...A(), "normal"]
754
+ }],
755
+ /**
756
+ * Justify Items
757
+ * @see https://tailwindcss.com/docs/justify-items
758
+ */
759
+ "justify-items": [{
760
+ "justify-items": [...P(), "normal"]
761
+ }],
762
+ /**
763
+ * Justify Self
764
+ * @see https://tailwindcss.com/docs/justify-self
765
+ */
766
+ "justify-self": [{
767
+ "justify-self": ["auto", ...P()]
768
+ }],
769
+ /**
770
+ * Align Content
771
+ * @see https://tailwindcss.com/docs/align-content
772
+ */
773
+ "align-content": [{
774
+ content: ["normal", ...A()]
775
+ }],
776
+ /**
777
+ * Align Items
778
+ * @see https://tailwindcss.com/docs/align-items
779
+ */
780
+ "align-items": [{
781
+ items: [...P(), {
782
+ baseline: ["", "last"]
783
+ }]
784
+ }],
785
+ /**
786
+ * Align Self
787
+ * @see https://tailwindcss.com/docs/align-self
788
+ */
789
+ "align-self": [{
790
+ self: ["auto", ...P(), {
791
+ baseline: ["", "last"]
792
+ }]
793
+ }],
794
+ /**
795
+ * Place Content
796
+ * @see https://tailwindcss.com/docs/place-content
797
+ */
798
+ "place-content": [{
799
+ "place-content": A()
800
+ }],
801
+ /**
802
+ * Place Items
803
+ * @see https://tailwindcss.com/docs/place-items
804
+ */
805
+ "place-items": [{
806
+ "place-items": [...P(), "baseline"]
807
+ }],
808
+ /**
809
+ * Place Self
810
+ * @see https://tailwindcss.com/docs/place-self
811
+ */
812
+ "place-self": [{
813
+ "place-self": ["auto", ...P()]
814
+ }],
815
+ // Spacing
816
+ /**
817
+ * Padding
818
+ * @see https://tailwindcss.com/docs/padding
819
+ */
820
+ p: [{
821
+ p: h()
822
+ }],
823
+ /**
824
+ * Padding X
825
+ * @see https://tailwindcss.com/docs/padding
826
+ */
827
+ px: [{
828
+ px: h()
829
+ }],
830
+ /**
831
+ * Padding Y
832
+ * @see https://tailwindcss.com/docs/padding
833
+ */
834
+ py: [{
835
+ py: h()
836
+ }],
837
+ /**
838
+ * Padding Start
839
+ * @see https://tailwindcss.com/docs/padding
840
+ */
841
+ ps: [{
842
+ ps: h()
843
+ }],
844
+ /**
845
+ * Padding End
846
+ * @see https://tailwindcss.com/docs/padding
847
+ */
848
+ pe: [{
849
+ pe: h()
850
+ }],
851
+ /**
852
+ * Padding Top
853
+ * @see https://tailwindcss.com/docs/padding
854
+ */
855
+ pt: [{
856
+ pt: h()
857
+ }],
858
+ /**
859
+ * Padding Right
860
+ * @see https://tailwindcss.com/docs/padding
861
+ */
862
+ pr: [{
863
+ pr: h()
864
+ }],
865
+ /**
866
+ * Padding Bottom
867
+ * @see https://tailwindcss.com/docs/padding
868
+ */
869
+ pb: [{
870
+ pb: h()
871
+ }],
872
+ /**
873
+ * Padding Left
874
+ * @see https://tailwindcss.com/docs/padding
875
+ */
876
+ pl: [{
877
+ pl: h()
878
+ }],
879
+ /**
880
+ * Margin
881
+ * @see https://tailwindcss.com/docs/margin
882
+ */
883
+ m: [{
884
+ m: $()
885
+ }],
886
+ /**
887
+ * Margin X
888
+ * @see https://tailwindcss.com/docs/margin
889
+ */
890
+ mx: [{
891
+ mx: $()
892
+ }],
893
+ /**
894
+ * Margin Y
895
+ * @see https://tailwindcss.com/docs/margin
896
+ */
897
+ my: [{
898
+ my: $()
899
+ }],
900
+ /**
901
+ * Margin Start
902
+ * @see https://tailwindcss.com/docs/margin
903
+ */
904
+ ms: [{
905
+ ms: $()
906
+ }],
907
+ /**
908
+ * Margin End
909
+ * @see https://tailwindcss.com/docs/margin
910
+ */
911
+ me: [{
912
+ me: $()
913
+ }],
914
+ /**
915
+ * Margin Top
916
+ * @see https://tailwindcss.com/docs/margin
917
+ */
918
+ mt: [{
919
+ mt: $()
920
+ }],
921
+ /**
922
+ * Margin Right
923
+ * @see https://tailwindcss.com/docs/margin
924
+ */
925
+ mr: [{
926
+ mr: $()
927
+ }],
928
+ /**
929
+ * Margin Bottom
930
+ * @see https://tailwindcss.com/docs/margin
931
+ */
932
+ mb: [{
933
+ mb: $()
934
+ }],
935
+ /**
936
+ * Margin Left
937
+ * @see https://tailwindcss.com/docs/margin
938
+ */
939
+ ml: [{
940
+ ml: $()
941
+ }],
942
+ /**
943
+ * Space Between X
944
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
945
+ */
946
+ "space-x": [{
947
+ "space-x": h()
948
+ }],
949
+ /**
950
+ * Space Between X Reverse
951
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
952
+ */
953
+ "space-x-reverse": ["space-x-reverse"],
954
+ /**
955
+ * Space Between Y
956
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
957
+ */
958
+ "space-y": [{
959
+ "space-y": h()
960
+ }],
961
+ /**
962
+ * Space Between Y Reverse
963
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
964
+ */
965
+ "space-y-reverse": ["space-y-reverse"],
966
+ // --------------
967
+ // --- Sizing ---
968
+ // --------------
969
+ /**
970
+ * Size
971
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
972
+ */
973
+ size: [{
974
+ size: oe()
975
+ }],
976
+ /**
977
+ * Width
978
+ * @see https://tailwindcss.com/docs/width
979
+ */
980
+ w: [{
981
+ w: [d, "screen", ...oe()]
982
+ }],
983
+ /**
984
+ * Min-Width
985
+ * @see https://tailwindcss.com/docs/min-width
986
+ */
987
+ "min-w": [{
988
+ "min-w": [
989
+ d,
990
+ "screen",
991
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
992
+ "none",
993
+ ...oe()
994
+ ]
995
+ }],
996
+ /**
997
+ * Max-Width
998
+ * @see https://tailwindcss.com/docs/max-width
999
+ */
1000
+ "max-w": [{
1001
+ "max-w": [
1002
+ d,
1003
+ "screen",
1004
+ "none",
1005
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1006
+ "prose",
1007
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1008
+ {
1009
+ screen: [i]
1010
+ },
1011
+ ...oe()
1012
+ ]
1013
+ }],
1014
+ /**
1015
+ * Height
1016
+ * @see https://tailwindcss.com/docs/height
1017
+ */
1018
+ h: [{
1019
+ h: ["screen", "lh", ...oe()]
1020
+ }],
1021
+ /**
1022
+ * Min-Height
1023
+ * @see https://tailwindcss.com/docs/min-height
1024
+ */
1025
+ "min-h": [{
1026
+ "min-h": ["screen", "lh", "none", ...oe()]
1027
+ }],
1028
+ /**
1029
+ * Max-Height
1030
+ * @see https://tailwindcss.com/docs/max-height
1031
+ */
1032
+ "max-h": [{
1033
+ "max-h": ["screen", "lh", ...oe()]
1034
+ }],
1035
+ // ------------------
1036
+ // --- Typography ---
1037
+ // ------------------
1038
+ /**
1039
+ * Font Size
1040
+ * @see https://tailwindcss.com/docs/font-size
1041
+ */
1042
+ "font-size": [{
1043
+ text: ["base", o, Te, pe]
1044
+ }],
1045
+ /**
1046
+ * Font Smoothing
1047
+ * @see https://tailwindcss.com/docs/font-smoothing
1048
+ */
1049
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
1050
+ /**
1051
+ * Font Style
1052
+ * @see https://tailwindcss.com/docs/font-style
1053
+ */
1054
+ "font-style": ["italic", "not-italic"],
1055
+ /**
1056
+ * Font Weight
1057
+ * @see https://tailwindcss.com/docs/font-weight
1058
+ */
1059
+ "font-weight": [{
1060
+ font: [r, m, Ke]
1061
+ }],
1062
+ /**
1063
+ * Font Stretch
1064
+ * @see https://tailwindcss.com/docs/font-stretch
1065
+ */
1066
+ "font-stretch": [{
1067
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", Ze, u]
1068
+ }],
1069
+ /**
1070
+ * Font Family
1071
+ * @see https://tailwindcss.com/docs/font-family
1072
+ */
1073
+ "font-family": [{
1074
+ font: [Jo, u, t]
1075
+ }],
1076
+ /**
1077
+ * Font Variant Numeric
1078
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1079
+ */
1080
+ "fvn-normal": ["normal-nums"],
1081
+ /**
1082
+ * Font Variant Numeric
1083
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1084
+ */
1085
+ "fvn-ordinal": ["ordinal"],
1086
+ /**
1087
+ * Font Variant Numeric
1088
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1089
+ */
1090
+ "fvn-slashed-zero": ["slashed-zero"],
1091
+ /**
1092
+ * Font Variant Numeric
1093
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1094
+ */
1095
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
1096
+ /**
1097
+ * Font Variant Numeric
1098
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1099
+ */
1100
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
1101
+ /**
1102
+ * Font Variant Numeric
1103
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1104
+ */
1105
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
1106
+ /**
1107
+ * Letter Spacing
1108
+ * @see https://tailwindcss.com/docs/letter-spacing
1109
+ */
1110
+ tracking: [{
1111
+ tracking: [n, m, u]
1112
+ }],
1113
+ /**
1114
+ * Line Clamp
1115
+ * @see https://tailwindcss.com/docs/line-clamp
1116
+ */
1117
+ "line-clamp": [{
1118
+ "line-clamp": [k, "none", m, Ke]
1119
+ }],
1120
+ /**
1121
+ * Line Height
1122
+ * @see https://tailwindcss.com/docs/line-height
1123
+ */
1124
+ leading: [{
1125
+ leading: [
1126
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1127
+ s,
1128
+ ...h()
1129
+ ]
1130
+ }],
1131
+ /**
1132
+ * List Style Image
1133
+ * @see https://tailwindcss.com/docs/list-style-image
1134
+ */
1135
+ "list-image": [{
1136
+ "list-image": ["none", m, u]
1137
+ }],
1138
+ /**
1139
+ * List Style Position
1140
+ * @see https://tailwindcss.com/docs/list-style-position
1141
+ */
1142
+ "list-style-position": [{
1143
+ list: ["inside", "outside"]
1144
+ }],
1145
+ /**
1146
+ * List Style Type
1147
+ * @see https://tailwindcss.com/docs/list-style-type
1148
+ */
1149
+ "list-style-type": [{
1150
+ list: ["disc", "decimal", "none", m, u]
1151
+ }],
1152
+ /**
1153
+ * Text Alignment
1154
+ * @see https://tailwindcss.com/docs/text-align
1155
+ */
1156
+ "text-alignment": [{
1157
+ text: ["left", "center", "right", "justify", "start", "end"]
1158
+ }],
1159
+ /**
1160
+ * Placeholder Color
1161
+ * @deprecated since Tailwind CSS v3.0.0
1162
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
1163
+ */
1164
+ "placeholder-color": [{
1165
+ placeholder: x()
1166
+ }],
1167
+ /**
1168
+ * Text Color
1169
+ * @see https://tailwindcss.com/docs/text-color
1170
+ */
1171
+ "text-color": [{
1172
+ text: x()
1173
+ }],
1174
+ /**
1175
+ * Text Decoration
1176
+ * @see https://tailwindcss.com/docs/text-decoration
1177
+ */
1178
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
1179
+ /**
1180
+ * Text Decoration Style
1181
+ * @see https://tailwindcss.com/docs/text-decoration-style
1182
+ */
1183
+ "text-decoration-style": [{
1184
+ decoration: [...Y(), "wavy"]
1185
+ }],
1186
+ /**
1187
+ * Text Decoration Thickness
1188
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1189
+ */
1190
+ "text-decoration-thickness": [{
1191
+ decoration: [k, "from-font", "auto", m, pe]
1192
+ }],
1193
+ /**
1194
+ * Text Decoration Color
1195
+ * @see https://tailwindcss.com/docs/text-decoration-color
1196
+ */
1197
+ "text-decoration-color": [{
1198
+ decoration: x()
1199
+ }],
1200
+ /**
1201
+ * Text Underline Offset
1202
+ * @see https://tailwindcss.com/docs/text-underline-offset
1203
+ */
1204
+ "underline-offset": [{
1205
+ "underline-offset": [k, "auto", m, u]
1206
+ }],
1207
+ /**
1208
+ * Text Transform
1209
+ * @see https://tailwindcss.com/docs/text-transform
1210
+ */
1211
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
1212
+ /**
1213
+ * Text Overflow
1214
+ * @see https://tailwindcss.com/docs/text-overflow
1215
+ */
1216
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
1217
+ /**
1218
+ * Text Wrap
1219
+ * @see https://tailwindcss.com/docs/text-wrap
1220
+ */
1221
+ "text-wrap": [{
1222
+ text: ["wrap", "nowrap", "balance", "pretty"]
1223
+ }],
1224
+ /**
1225
+ * Text Indent
1226
+ * @see https://tailwindcss.com/docs/text-indent
1227
+ */
1228
+ indent: [{
1229
+ indent: h()
1230
+ }],
1231
+ /**
1232
+ * Vertical Alignment
1233
+ * @see https://tailwindcss.com/docs/vertical-align
1234
+ */
1235
+ "vertical-align": [{
1236
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", m, u]
1237
+ }],
1238
+ /**
1239
+ * Whitespace
1240
+ * @see https://tailwindcss.com/docs/whitespace
1241
+ */
1242
+ whitespace: [{
1243
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
1244
+ }],
1245
+ /**
1246
+ * Word Break
1247
+ * @see https://tailwindcss.com/docs/word-break
1248
+ */
1249
+ break: [{
1250
+ break: ["normal", "words", "all", "keep"]
1251
+ }],
1252
+ /**
1253
+ * Overflow Wrap
1254
+ * @see https://tailwindcss.com/docs/overflow-wrap
1255
+ */
1256
+ wrap: [{
1257
+ wrap: ["break-word", "anywhere", "normal"]
1258
+ }],
1259
+ /**
1260
+ * Hyphens
1261
+ * @see https://tailwindcss.com/docs/hyphens
1262
+ */
1263
+ hyphens: [{
1264
+ hyphens: ["none", "manual", "auto"]
1265
+ }],
1266
+ /**
1267
+ * Content
1268
+ * @see https://tailwindcss.com/docs/content
1269
+ */
1270
+ content: [{
1271
+ content: ["none", m, u]
1272
+ }],
1273
+ // -------------------
1274
+ // --- Backgrounds ---
1275
+ // -------------------
1276
+ /**
1277
+ * Background Attachment
1278
+ * @see https://tailwindcss.com/docs/background-attachment
1279
+ */
1280
+ "bg-attachment": [{
1281
+ bg: ["fixed", "local", "scroll"]
1282
+ }],
1283
+ /**
1284
+ * Background Clip
1285
+ * @see https://tailwindcss.com/docs/background-clip
1286
+ */
1287
+ "bg-clip": [{
1288
+ "bg-clip": ["border", "padding", "content", "text"]
1289
+ }],
1290
+ /**
1291
+ * Background Origin
1292
+ * @see https://tailwindcss.com/docs/background-origin
1293
+ */
1294
+ "bg-origin": [{
1295
+ "bg-origin": ["border", "padding", "content"]
1296
+ }],
1297
+ /**
1298
+ * Background Position
1299
+ * @see https://tailwindcss.com/docs/background-position
1300
+ */
1301
+ "bg-position": [{
1302
+ bg: Be()
1303
+ }],
1304
+ /**
1305
+ * Background Repeat
1306
+ * @see https://tailwindcss.com/docs/background-repeat
1307
+ */
1308
+ "bg-repeat": [{
1309
+ bg: Ee()
1310
+ }],
1311
+ /**
1312
+ * Background Size
1313
+ * @see https://tailwindcss.com/docs/background-size
1314
+ */
1315
+ "bg-size": [{
1316
+ bg: G()
1317
+ }],
1318
+ /**
1319
+ * Background Image
1320
+ * @see https://tailwindcss.com/docs/background-image
1321
+ */
1322
+ "bg-image": [{
1323
+ bg: ["none", {
1324
+ linear: [{
1325
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
1326
+ }, de, m, u],
1327
+ radial: ["", m, u],
1328
+ conic: [de, m, u]
1329
+ }, er, Xo]
1330
+ }],
1331
+ /**
1332
+ * Background Color
1333
+ * @see https://tailwindcss.com/docs/background-color
1334
+ */
1335
+ "bg-color": [{
1336
+ bg: x()
1337
+ }],
1338
+ /**
1339
+ * Gradient Color Stops From Position
1340
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1341
+ */
1342
+ "gradient-from-pos": [{
1343
+ from: Se()
1344
+ }],
1345
+ /**
1346
+ * Gradient Color Stops Via Position
1347
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1348
+ */
1349
+ "gradient-via-pos": [{
1350
+ via: Se()
1351
+ }],
1352
+ /**
1353
+ * Gradient Color Stops To Position
1354
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1355
+ */
1356
+ "gradient-to-pos": [{
1357
+ to: Se()
1358
+ }],
1359
+ /**
1360
+ * Gradient Color Stops From
1361
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1362
+ */
1363
+ "gradient-from": [{
1364
+ from: x()
1365
+ }],
1366
+ /**
1367
+ * Gradient Color Stops Via
1368
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1369
+ */
1370
+ "gradient-via": [{
1371
+ via: x()
1372
+ }],
1373
+ /**
1374
+ * Gradient Color Stops To
1375
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1376
+ */
1377
+ "gradient-to": [{
1378
+ to: x()
1379
+ }],
1380
+ // ---------------
1381
+ // --- Borders ---
1382
+ // ---------------
1383
+ /**
1384
+ * Border Radius
1385
+ * @see https://tailwindcss.com/docs/border-radius
1386
+ */
1387
+ rounded: [{
1388
+ rounded: I()
1389
+ }],
1390
+ /**
1391
+ * Border Radius Start
1392
+ * @see https://tailwindcss.com/docs/border-radius
1393
+ */
1394
+ "rounded-s": [{
1395
+ "rounded-s": I()
1396
+ }],
1397
+ /**
1398
+ * Border Radius End
1399
+ * @see https://tailwindcss.com/docs/border-radius
1400
+ */
1401
+ "rounded-e": [{
1402
+ "rounded-e": I()
1403
+ }],
1404
+ /**
1405
+ * Border Radius Top
1406
+ * @see https://tailwindcss.com/docs/border-radius
1407
+ */
1408
+ "rounded-t": [{
1409
+ "rounded-t": I()
1410
+ }],
1411
+ /**
1412
+ * Border Radius Right
1413
+ * @see https://tailwindcss.com/docs/border-radius
1414
+ */
1415
+ "rounded-r": [{
1416
+ "rounded-r": I()
1417
+ }],
1418
+ /**
1419
+ * Border Radius Bottom
1420
+ * @see https://tailwindcss.com/docs/border-radius
1421
+ */
1422
+ "rounded-b": [{
1423
+ "rounded-b": I()
1424
+ }],
1425
+ /**
1426
+ * Border Radius Left
1427
+ * @see https://tailwindcss.com/docs/border-radius
1428
+ */
1429
+ "rounded-l": [{
1430
+ "rounded-l": I()
1431
+ }],
1432
+ /**
1433
+ * Border Radius Start Start
1434
+ * @see https://tailwindcss.com/docs/border-radius
1435
+ */
1436
+ "rounded-ss": [{
1437
+ "rounded-ss": I()
1438
+ }],
1439
+ /**
1440
+ * Border Radius Start End
1441
+ * @see https://tailwindcss.com/docs/border-radius
1442
+ */
1443
+ "rounded-se": [{
1444
+ "rounded-se": I()
1445
+ }],
1446
+ /**
1447
+ * Border Radius End End
1448
+ * @see https://tailwindcss.com/docs/border-radius
1449
+ */
1450
+ "rounded-ee": [{
1451
+ "rounded-ee": I()
1452
+ }],
1453
+ /**
1454
+ * Border Radius End Start
1455
+ * @see https://tailwindcss.com/docs/border-radius
1456
+ */
1457
+ "rounded-es": [{
1458
+ "rounded-es": I()
1459
+ }],
1460
+ /**
1461
+ * Border Radius Top Left
1462
+ * @see https://tailwindcss.com/docs/border-radius
1463
+ */
1464
+ "rounded-tl": [{
1465
+ "rounded-tl": I()
1466
+ }],
1467
+ /**
1468
+ * Border Radius Top Right
1469
+ * @see https://tailwindcss.com/docs/border-radius
1470
+ */
1471
+ "rounded-tr": [{
1472
+ "rounded-tr": I()
1473
+ }],
1474
+ /**
1475
+ * Border Radius Bottom Right
1476
+ * @see https://tailwindcss.com/docs/border-radius
1477
+ */
1478
+ "rounded-br": [{
1479
+ "rounded-br": I()
1480
+ }],
1481
+ /**
1482
+ * Border Radius Bottom Left
1483
+ * @see https://tailwindcss.com/docs/border-radius
1484
+ */
1485
+ "rounded-bl": [{
1486
+ "rounded-bl": I()
1487
+ }],
1488
+ /**
1489
+ * Border Width
1490
+ * @see https://tailwindcss.com/docs/border-width
1491
+ */
1492
+ "border-w": [{
1493
+ border: F()
1494
+ }],
1495
+ /**
1496
+ * Border Width X
1497
+ * @see https://tailwindcss.com/docs/border-width
1498
+ */
1499
+ "border-w-x": [{
1500
+ "border-x": F()
1501
+ }],
1502
+ /**
1503
+ * Border Width Y
1504
+ * @see https://tailwindcss.com/docs/border-width
1505
+ */
1506
+ "border-w-y": [{
1507
+ "border-y": F()
1508
+ }],
1509
+ /**
1510
+ * Border Width Start
1511
+ * @see https://tailwindcss.com/docs/border-width
1512
+ */
1513
+ "border-w-s": [{
1514
+ "border-s": F()
1515
+ }],
1516
+ /**
1517
+ * Border Width End
1518
+ * @see https://tailwindcss.com/docs/border-width
1519
+ */
1520
+ "border-w-e": [{
1521
+ "border-e": F()
1522
+ }],
1523
+ /**
1524
+ * Border Width Top
1525
+ * @see https://tailwindcss.com/docs/border-width
1526
+ */
1527
+ "border-w-t": [{
1528
+ "border-t": F()
1529
+ }],
1530
+ /**
1531
+ * Border Width Right
1532
+ * @see https://tailwindcss.com/docs/border-width
1533
+ */
1534
+ "border-w-r": [{
1535
+ "border-r": F()
1536
+ }],
1537
+ /**
1538
+ * Border Width Bottom
1539
+ * @see https://tailwindcss.com/docs/border-width
1540
+ */
1541
+ "border-w-b": [{
1542
+ "border-b": F()
1543
+ }],
1544
+ /**
1545
+ * Border Width Left
1546
+ * @see https://tailwindcss.com/docs/border-width
1547
+ */
1548
+ "border-w-l": [{
1549
+ "border-l": F()
1550
+ }],
1551
+ /**
1552
+ * Divide Width X
1553
+ * @see https://tailwindcss.com/docs/border-width#between-children
1554
+ */
1555
+ "divide-x": [{
1556
+ "divide-x": F()
1557
+ }],
1558
+ /**
1559
+ * Divide Width X Reverse
1560
+ * @see https://tailwindcss.com/docs/border-width#between-children
1561
+ */
1562
+ "divide-x-reverse": ["divide-x-reverse"],
1563
+ /**
1564
+ * Divide Width Y
1565
+ * @see https://tailwindcss.com/docs/border-width#between-children
1566
+ */
1567
+ "divide-y": [{
1568
+ "divide-y": F()
1569
+ }],
1570
+ /**
1571
+ * Divide Width Y Reverse
1572
+ * @see https://tailwindcss.com/docs/border-width#between-children
1573
+ */
1574
+ "divide-y-reverse": ["divide-y-reverse"],
1575
+ /**
1576
+ * Border Style
1577
+ * @see https://tailwindcss.com/docs/border-style
1578
+ */
1579
+ "border-style": [{
1580
+ border: [...Y(), "hidden", "none"]
1581
+ }],
1582
+ /**
1583
+ * Divide Style
1584
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
1585
+ */
1586
+ "divide-style": [{
1587
+ divide: [...Y(), "hidden", "none"]
1588
+ }],
1589
+ /**
1590
+ * Border Color
1591
+ * @see https://tailwindcss.com/docs/border-color
1592
+ */
1593
+ "border-color": [{
1594
+ border: x()
1595
+ }],
1596
+ /**
1597
+ * Border Color X
1598
+ * @see https://tailwindcss.com/docs/border-color
1599
+ */
1600
+ "border-color-x": [{
1601
+ "border-x": x()
1602
+ }],
1603
+ /**
1604
+ * Border Color Y
1605
+ * @see https://tailwindcss.com/docs/border-color
1606
+ */
1607
+ "border-color-y": [{
1608
+ "border-y": x()
1609
+ }],
1610
+ /**
1611
+ * Border Color S
1612
+ * @see https://tailwindcss.com/docs/border-color
1613
+ */
1614
+ "border-color-s": [{
1615
+ "border-s": x()
1616
+ }],
1617
+ /**
1618
+ * Border Color E
1619
+ * @see https://tailwindcss.com/docs/border-color
1620
+ */
1621
+ "border-color-e": [{
1622
+ "border-e": x()
1623
+ }],
1624
+ /**
1625
+ * Border Color Top
1626
+ * @see https://tailwindcss.com/docs/border-color
1627
+ */
1628
+ "border-color-t": [{
1629
+ "border-t": x()
1630
+ }],
1631
+ /**
1632
+ * Border Color Right
1633
+ * @see https://tailwindcss.com/docs/border-color
1634
+ */
1635
+ "border-color-r": [{
1636
+ "border-r": x()
1637
+ }],
1638
+ /**
1639
+ * Border Color Bottom
1640
+ * @see https://tailwindcss.com/docs/border-color
1641
+ */
1642
+ "border-color-b": [{
1643
+ "border-b": x()
1644
+ }],
1645
+ /**
1646
+ * Border Color Left
1647
+ * @see https://tailwindcss.com/docs/border-color
1648
+ */
1649
+ "border-color-l": [{
1650
+ "border-l": x()
1651
+ }],
1652
+ /**
1653
+ * Divide Color
1654
+ * @see https://tailwindcss.com/docs/divide-color
1655
+ */
1656
+ "divide-color": [{
1657
+ divide: x()
1658
+ }],
1659
+ /**
1660
+ * Outline Style
1661
+ * @see https://tailwindcss.com/docs/outline-style
1662
+ */
1663
+ "outline-style": [{
1664
+ outline: [...Y(), "none", "hidden"]
1665
+ }],
1666
+ /**
1667
+ * Outline Offset
1668
+ * @see https://tailwindcss.com/docs/outline-offset
1669
+ */
1670
+ "outline-offset": [{
1671
+ "outline-offset": [k, m, u]
1672
+ }],
1673
+ /**
1674
+ * Outline Width
1675
+ * @see https://tailwindcss.com/docs/outline-width
1676
+ */
1677
+ "outline-w": [{
1678
+ outline: ["", k, Te, pe]
1679
+ }],
1680
+ /**
1681
+ * Outline Color
1682
+ * @see https://tailwindcss.com/docs/outline-color
1683
+ */
1684
+ "outline-color": [{
1685
+ outline: x()
1686
+ }],
1687
+ // ---------------
1688
+ // --- Effects ---
1689
+ // ---------------
1690
+ /**
1691
+ * Box Shadow
1692
+ * @see https://tailwindcss.com/docs/box-shadow
1693
+ */
1694
+ shadow: [{
1695
+ shadow: [
1696
+ // Deprecated since Tailwind CSS v4.0.0
1697
+ "",
1698
+ "none",
1699
+ w,
1700
+ Oe,
1701
+ Ve
1702
+ ]
1703
+ }],
1704
+ /**
1705
+ * Box Shadow Color
1706
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
1707
+ */
1708
+ "shadow-color": [{
1709
+ shadow: x()
1710
+ }],
1711
+ /**
1712
+ * Inset Box Shadow
1713
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
1714
+ */
1715
+ "inset-shadow": [{
1716
+ "inset-shadow": ["none", S, Oe, Ve]
1717
+ }],
1718
+ /**
1719
+ * Inset Box Shadow Color
1720
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
1721
+ */
1722
+ "inset-shadow-color": [{
1723
+ "inset-shadow": x()
1724
+ }],
1725
+ /**
1726
+ * Ring Width
1727
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
1728
+ */
1729
+ "ring-w": [{
1730
+ ring: F()
1731
+ }],
1732
+ /**
1733
+ * Ring Width Inset
1734
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
1735
+ * @deprecated since Tailwind CSS v4.0.0
1736
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1737
+ */
1738
+ "ring-w-inset": ["ring-inset"],
1739
+ /**
1740
+ * Ring Color
1741
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
1742
+ */
1743
+ "ring-color": [{
1744
+ ring: x()
1745
+ }],
1746
+ /**
1747
+ * Ring Offset Width
1748
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
1749
+ * @deprecated since Tailwind CSS v4.0.0
1750
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1751
+ */
1752
+ "ring-offset-w": [{
1753
+ "ring-offset": [k, pe]
1754
+ }],
1755
+ /**
1756
+ * Ring Offset Color
1757
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
1758
+ * @deprecated since Tailwind CSS v4.0.0
1759
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
1760
+ */
1761
+ "ring-offset-color": [{
1762
+ "ring-offset": x()
1763
+ }],
1764
+ /**
1765
+ * Inset Ring Width
1766
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
1767
+ */
1768
+ "inset-ring-w": [{
1769
+ "inset-ring": F()
1770
+ }],
1771
+ /**
1772
+ * Inset Ring Color
1773
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
1774
+ */
1775
+ "inset-ring-color": [{
1776
+ "inset-ring": x()
1777
+ }],
1778
+ /**
1779
+ * Text Shadow
1780
+ * @see https://tailwindcss.com/docs/text-shadow
1781
+ */
1782
+ "text-shadow": [{
1783
+ "text-shadow": ["none", v, Oe, Ve]
1784
+ }],
1785
+ /**
1786
+ * Text Shadow Color
1787
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
1788
+ */
1789
+ "text-shadow-color": [{
1790
+ "text-shadow": x()
1791
+ }],
1792
+ /**
1793
+ * Opacity
1794
+ * @see https://tailwindcss.com/docs/opacity
1795
+ */
1796
+ opacity: [{
1797
+ opacity: [k, m, u]
1798
+ }],
1799
+ /**
1800
+ * Mix Blend Mode
1801
+ * @see https://tailwindcss.com/docs/mix-blend-mode
1802
+ */
1803
+ "mix-blend": [{
1804
+ "mix-blend": [...me(), "plus-darker", "plus-lighter"]
1805
+ }],
1806
+ /**
1807
+ * Background Blend Mode
1808
+ * @see https://tailwindcss.com/docs/background-blend-mode
1809
+ */
1810
+ "bg-blend": [{
1811
+ "bg-blend": me()
1812
+ }],
1813
+ /**
1814
+ * Mask Clip
1815
+ * @see https://tailwindcss.com/docs/mask-clip
1816
+ */
1817
+ "mask-clip": [{
1818
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
1819
+ }, "mask-no-clip"],
1820
+ /**
1821
+ * Mask Composite
1822
+ * @see https://tailwindcss.com/docs/mask-composite
1823
+ */
1824
+ "mask-composite": [{
1825
+ mask: ["add", "subtract", "intersect", "exclude"]
1826
+ }],
1827
+ /**
1828
+ * Mask Image
1829
+ * @see https://tailwindcss.com/docs/mask-image
1830
+ */
1831
+ "mask-image-linear-pos": [{
1832
+ "mask-linear": [k]
1833
+ }],
1834
+ "mask-image-linear-from-pos": [{
1835
+ "mask-linear-from": E()
1836
+ }],
1837
+ "mask-image-linear-to-pos": [{
1838
+ "mask-linear-to": E()
1839
+ }],
1840
+ "mask-image-linear-from-color": [{
1841
+ "mask-linear-from": x()
1842
+ }],
1843
+ "mask-image-linear-to-color": [{
1844
+ "mask-linear-to": x()
1845
+ }],
1846
+ "mask-image-t-from-pos": [{
1847
+ "mask-t-from": E()
1848
+ }],
1849
+ "mask-image-t-to-pos": [{
1850
+ "mask-t-to": E()
1851
+ }],
1852
+ "mask-image-t-from-color": [{
1853
+ "mask-t-from": x()
1854
+ }],
1855
+ "mask-image-t-to-color": [{
1856
+ "mask-t-to": x()
1857
+ }],
1858
+ "mask-image-r-from-pos": [{
1859
+ "mask-r-from": E()
1860
+ }],
1861
+ "mask-image-r-to-pos": [{
1862
+ "mask-r-to": E()
1863
+ }],
1864
+ "mask-image-r-from-color": [{
1865
+ "mask-r-from": x()
1866
+ }],
1867
+ "mask-image-r-to-color": [{
1868
+ "mask-r-to": x()
1869
+ }],
1870
+ "mask-image-b-from-pos": [{
1871
+ "mask-b-from": E()
1872
+ }],
1873
+ "mask-image-b-to-pos": [{
1874
+ "mask-b-to": E()
1875
+ }],
1876
+ "mask-image-b-from-color": [{
1877
+ "mask-b-from": x()
1878
+ }],
1879
+ "mask-image-b-to-color": [{
1880
+ "mask-b-to": x()
1881
+ }],
1882
+ "mask-image-l-from-pos": [{
1883
+ "mask-l-from": E()
1884
+ }],
1885
+ "mask-image-l-to-pos": [{
1886
+ "mask-l-to": E()
1887
+ }],
1888
+ "mask-image-l-from-color": [{
1889
+ "mask-l-from": x()
1890
+ }],
1891
+ "mask-image-l-to-color": [{
1892
+ "mask-l-to": x()
1893
+ }],
1894
+ "mask-image-x-from-pos": [{
1895
+ "mask-x-from": E()
1896
+ }],
1897
+ "mask-image-x-to-pos": [{
1898
+ "mask-x-to": E()
1899
+ }],
1900
+ "mask-image-x-from-color": [{
1901
+ "mask-x-from": x()
1902
+ }],
1903
+ "mask-image-x-to-color": [{
1904
+ "mask-x-to": x()
1905
+ }],
1906
+ "mask-image-y-from-pos": [{
1907
+ "mask-y-from": E()
1908
+ }],
1909
+ "mask-image-y-to-pos": [{
1910
+ "mask-y-to": E()
1911
+ }],
1912
+ "mask-image-y-from-color": [{
1913
+ "mask-y-from": x()
1914
+ }],
1915
+ "mask-image-y-to-color": [{
1916
+ "mask-y-to": x()
1917
+ }],
1918
+ "mask-image-radial": [{
1919
+ "mask-radial": [m, u]
1920
+ }],
1921
+ "mask-image-radial-from-pos": [{
1922
+ "mask-radial-from": E()
1923
+ }],
1924
+ "mask-image-radial-to-pos": [{
1925
+ "mask-radial-to": E()
1926
+ }],
1927
+ "mask-image-radial-from-color": [{
1928
+ "mask-radial-from": x()
1929
+ }],
1930
+ "mask-image-radial-to-color": [{
1931
+ "mask-radial-to": x()
1932
+ }],
1933
+ "mask-image-radial-shape": [{
1934
+ "mask-radial": ["circle", "ellipse"]
1935
+ }],
1936
+ "mask-image-radial-size": [{
1937
+ "mask-radial": [{
1938
+ closest: ["side", "corner"],
1939
+ farthest: ["side", "corner"]
1940
+ }]
1941
+ }],
1942
+ "mask-image-radial-pos": [{
1943
+ "mask-radial-at": B()
1944
+ }],
1945
+ "mask-image-conic-pos": [{
1946
+ "mask-conic": [k]
1947
+ }],
1948
+ "mask-image-conic-from-pos": [{
1949
+ "mask-conic-from": E()
1950
+ }],
1951
+ "mask-image-conic-to-pos": [{
1952
+ "mask-conic-to": E()
1953
+ }],
1954
+ "mask-image-conic-from-color": [{
1955
+ "mask-conic-from": x()
1956
+ }],
1957
+ "mask-image-conic-to-color": [{
1958
+ "mask-conic-to": x()
1959
+ }],
1960
+ /**
1961
+ * Mask Mode
1962
+ * @see https://tailwindcss.com/docs/mask-mode
1963
+ */
1964
+ "mask-mode": [{
1965
+ mask: ["alpha", "luminance", "match"]
1966
+ }],
1967
+ /**
1968
+ * Mask Origin
1969
+ * @see https://tailwindcss.com/docs/mask-origin
1970
+ */
1971
+ "mask-origin": [{
1972
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
1973
+ }],
1974
+ /**
1975
+ * Mask Position
1976
+ * @see https://tailwindcss.com/docs/mask-position
1977
+ */
1978
+ "mask-position": [{
1979
+ mask: Be()
1980
+ }],
1981
+ /**
1982
+ * Mask Repeat
1983
+ * @see https://tailwindcss.com/docs/mask-repeat
1984
+ */
1985
+ "mask-repeat": [{
1986
+ mask: Ee()
1987
+ }],
1988
+ /**
1989
+ * Mask Size
1990
+ * @see https://tailwindcss.com/docs/mask-size
1991
+ */
1992
+ "mask-size": [{
1993
+ mask: G()
1994
+ }],
1995
+ /**
1996
+ * Mask Type
1997
+ * @see https://tailwindcss.com/docs/mask-type
1998
+ */
1999
+ "mask-type": [{
2000
+ "mask-type": ["alpha", "luminance"]
2001
+ }],
2002
+ /**
2003
+ * Mask Image
2004
+ * @see https://tailwindcss.com/docs/mask-image
2005
+ */
2006
+ "mask-image": [{
2007
+ mask: ["none", m, u]
2008
+ }],
2009
+ // ---------------
2010
+ // --- Filters ---
2011
+ // ---------------
2012
+ /**
2013
+ * Filter
2014
+ * @see https://tailwindcss.com/docs/filter
2015
+ */
2016
+ filter: [{
2017
+ filter: [
2018
+ // Deprecated since Tailwind CSS v3.0.0
2019
+ "",
2020
+ "none",
2021
+ m,
2022
+ u
2023
+ ]
2024
+ }],
2025
+ /**
2026
+ * Blur
2027
+ * @see https://tailwindcss.com/docs/blur
2028
+ */
2029
+ blur: [{
2030
+ blur: Re()
2031
+ }],
2032
+ /**
2033
+ * Brightness
2034
+ * @see https://tailwindcss.com/docs/brightness
2035
+ */
2036
+ brightness: [{
2037
+ brightness: [k, m, u]
2038
+ }],
2039
+ /**
2040
+ * Contrast
2041
+ * @see https://tailwindcss.com/docs/contrast
2042
+ */
2043
+ contrast: [{
2044
+ contrast: [k, m, u]
2045
+ }],
2046
+ /**
2047
+ * Drop Shadow
2048
+ * @see https://tailwindcss.com/docs/drop-shadow
2049
+ */
2050
+ "drop-shadow": [{
2051
+ "drop-shadow": [
2052
+ // Deprecated since Tailwind CSS v4.0.0
2053
+ "",
2054
+ "none",
2055
+ Z,
2056
+ Oe,
2057
+ Ve
2058
+ ]
2059
+ }],
2060
+ /**
2061
+ * Drop Shadow Color
2062
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
2063
+ */
2064
+ "drop-shadow-color": [{
2065
+ "drop-shadow": x()
2066
+ }],
2067
+ /**
2068
+ * Grayscale
2069
+ * @see https://tailwindcss.com/docs/grayscale
2070
+ */
2071
+ grayscale: [{
2072
+ grayscale: ["", k, m, u]
2073
+ }],
2074
+ /**
2075
+ * Hue Rotate
2076
+ * @see https://tailwindcss.com/docs/hue-rotate
2077
+ */
2078
+ "hue-rotate": [{
2079
+ "hue-rotate": [k, m, u]
2080
+ }],
2081
+ /**
2082
+ * Invert
2083
+ * @see https://tailwindcss.com/docs/invert
2084
+ */
2085
+ invert: [{
2086
+ invert: ["", k, m, u]
2087
+ }],
2088
+ /**
2089
+ * Saturate
2090
+ * @see https://tailwindcss.com/docs/saturate
2091
+ */
2092
+ saturate: [{
2093
+ saturate: [k, m, u]
2094
+ }],
2095
+ /**
2096
+ * Sepia
2097
+ * @see https://tailwindcss.com/docs/sepia
2098
+ */
2099
+ sepia: [{
2100
+ sepia: ["", k, m, u]
2101
+ }],
2102
+ /**
2103
+ * Backdrop Filter
2104
+ * @see https://tailwindcss.com/docs/backdrop-filter
2105
+ */
2106
+ "backdrop-filter": [{
2107
+ "backdrop-filter": [
2108
+ // Deprecated since Tailwind CSS v3.0.0
2109
+ "",
2110
+ "none",
2111
+ m,
2112
+ u
2113
+ ]
2114
+ }],
2115
+ /**
2116
+ * Backdrop Blur
2117
+ * @see https://tailwindcss.com/docs/backdrop-blur
2118
+ */
2119
+ "backdrop-blur": [{
2120
+ "backdrop-blur": Re()
2121
+ }],
2122
+ /**
2123
+ * Backdrop Brightness
2124
+ * @see https://tailwindcss.com/docs/backdrop-brightness
2125
+ */
2126
+ "backdrop-brightness": [{
2127
+ "backdrop-brightness": [k, m, u]
2128
+ }],
2129
+ /**
2130
+ * Backdrop Contrast
2131
+ * @see https://tailwindcss.com/docs/backdrop-contrast
2132
+ */
2133
+ "backdrop-contrast": [{
2134
+ "backdrop-contrast": [k, m, u]
2135
+ }],
2136
+ /**
2137
+ * Backdrop Grayscale
2138
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
2139
+ */
2140
+ "backdrop-grayscale": [{
2141
+ "backdrop-grayscale": ["", k, m, u]
2142
+ }],
2143
+ /**
2144
+ * Backdrop Hue Rotate
2145
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2146
+ */
2147
+ "backdrop-hue-rotate": [{
2148
+ "backdrop-hue-rotate": [k, m, u]
2149
+ }],
2150
+ /**
2151
+ * Backdrop Invert
2152
+ * @see https://tailwindcss.com/docs/backdrop-invert
2153
+ */
2154
+ "backdrop-invert": [{
2155
+ "backdrop-invert": ["", k, m, u]
2156
+ }],
2157
+ /**
2158
+ * Backdrop Opacity
2159
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2160
+ */
2161
+ "backdrop-opacity": [{
2162
+ "backdrop-opacity": [k, m, u]
2163
+ }],
2164
+ /**
2165
+ * Backdrop Saturate
2166
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2167
+ */
2168
+ "backdrop-saturate": [{
2169
+ "backdrop-saturate": [k, m, u]
2170
+ }],
2171
+ /**
2172
+ * Backdrop Sepia
2173
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2174
+ */
2175
+ "backdrop-sepia": [{
2176
+ "backdrop-sepia": ["", k, m, u]
2177
+ }],
2178
+ // --------------
2179
+ // --- Tables ---
2180
+ // --------------
2181
+ /**
2182
+ * Border Collapse
2183
+ * @see https://tailwindcss.com/docs/border-collapse
2184
+ */
2185
+ "border-collapse": [{
2186
+ border: ["collapse", "separate"]
2187
+ }],
2188
+ /**
2189
+ * Border Spacing
2190
+ * @see https://tailwindcss.com/docs/border-spacing
2191
+ */
2192
+ "border-spacing": [{
2193
+ "border-spacing": h()
2194
+ }],
2195
+ /**
2196
+ * Border Spacing X
2197
+ * @see https://tailwindcss.com/docs/border-spacing
2198
+ */
2199
+ "border-spacing-x": [{
2200
+ "border-spacing-x": h()
2201
+ }],
2202
+ /**
2203
+ * Border Spacing Y
2204
+ * @see https://tailwindcss.com/docs/border-spacing
2205
+ */
2206
+ "border-spacing-y": [{
2207
+ "border-spacing-y": h()
2208
+ }],
2209
+ /**
2210
+ * Table Layout
2211
+ * @see https://tailwindcss.com/docs/table-layout
2212
+ */
2213
+ "table-layout": [{
2214
+ table: ["auto", "fixed"]
2215
+ }],
2216
+ /**
2217
+ * Caption Side
2218
+ * @see https://tailwindcss.com/docs/caption-side
2219
+ */
2220
+ caption: [{
2221
+ caption: ["top", "bottom"]
2222
+ }],
2223
+ // ---------------------------------
2224
+ // --- Transitions and Animation ---
2225
+ // ---------------------------------
2226
+ /**
2227
+ * Transition Property
2228
+ * @see https://tailwindcss.com/docs/transition-property
2229
+ */
2230
+ transition: [{
2231
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", m, u]
2232
+ }],
2233
+ /**
2234
+ * Transition Behavior
2235
+ * @see https://tailwindcss.com/docs/transition-behavior
2236
+ */
2237
+ "transition-behavior": [{
2238
+ transition: ["normal", "discrete"]
2239
+ }],
2240
+ /**
2241
+ * Transition Duration
2242
+ * @see https://tailwindcss.com/docs/transition-duration
2243
+ */
2244
+ duration: [{
2245
+ duration: [k, "initial", m, u]
2246
+ }],
2247
+ /**
2248
+ * Transition Timing Function
2249
+ * @see https://tailwindcss.com/docs/transition-timing-function
2250
+ */
2251
+ ease: [{
2252
+ ease: ["linear", "initial", J, m, u]
2253
+ }],
2254
+ /**
2255
+ * Transition Delay
2256
+ * @see https://tailwindcss.com/docs/transition-delay
2257
+ */
2258
+ delay: [{
2259
+ delay: [k, m, u]
2260
+ }],
2261
+ /**
2262
+ * Animation
2263
+ * @see https://tailwindcss.com/docs/animation
2264
+ */
2265
+ animate: [{
2266
+ animate: ["none", xe, m, u]
2267
+ }],
2268
+ // ------------------
2269
+ // --- Transforms ---
2270
+ // ------------------
2271
+ /**
2272
+ * Backface Visibility
2273
+ * @see https://tailwindcss.com/docs/backface-visibility
2274
+ */
2275
+ backface: [{
2276
+ backface: ["hidden", "visible"]
2277
+ }],
2278
+ /**
2279
+ * Perspective
2280
+ * @see https://tailwindcss.com/docs/perspective
2281
+ */
2282
+ perspective: [{
2283
+ perspective: [O, m, u]
2284
+ }],
2285
+ /**
2286
+ * Perspective Origin
2287
+ * @see https://tailwindcss.com/docs/perspective-origin
2288
+ */
2289
+ "perspective-origin": [{
2290
+ "perspective-origin": X()
2291
+ }],
2292
+ /**
2293
+ * Rotate
2294
+ * @see https://tailwindcss.com/docs/rotate
2295
+ */
2296
+ rotate: [{
2297
+ rotate: we()
2298
+ }],
2299
+ /**
2300
+ * Rotate X
2301
+ * @see https://tailwindcss.com/docs/rotate
2302
+ */
2303
+ "rotate-x": [{
2304
+ "rotate-x": we()
2305
+ }],
2306
+ /**
2307
+ * Rotate Y
2308
+ * @see https://tailwindcss.com/docs/rotate
2309
+ */
2310
+ "rotate-y": [{
2311
+ "rotate-y": we()
2312
+ }],
2313
+ /**
2314
+ * Rotate Z
2315
+ * @see https://tailwindcss.com/docs/rotate
2316
+ */
2317
+ "rotate-z": [{
2318
+ "rotate-z": we()
2319
+ }],
2320
+ /**
2321
+ * Scale
2322
+ * @see https://tailwindcss.com/docs/scale
2323
+ */
2324
+ scale: [{
2325
+ scale: re()
2326
+ }],
2327
+ /**
2328
+ * Scale X
2329
+ * @see https://tailwindcss.com/docs/scale
2330
+ */
2331
+ "scale-x": [{
2332
+ "scale-x": re()
2333
+ }],
2334
+ /**
2335
+ * Scale Y
2336
+ * @see https://tailwindcss.com/docs/scale
2337
+ */
2338
+ "scale-y": [{
2339
+ "scale-y": re()
2340
+ }],
2341
+ /**
2342
+ * Scale Z
2343
+ * @see https://tailwindcss.com/docs/scale
2344
+ */
2345
+ "scale-z": [{
2346
+ "scale-z": re()
2347
+ }],
2348
+ /**
2349
+ * Scale 3D
2350
+ * @see https://tailwindcss.com/docs/scale
2351
+ */
2352
+ "scale-3d": ["scale-3d"],
2353
+ /**
2354
+ * Skew
2355
+ * @see https://tailwindcss.com/docs/skew
2356
+ */
2357
+ skew: [{
2358
+ skew: le()
2359
+ }],
2360
+ /**
2361
+ * Skew X
2362
+ * @see https://tailwindcss.com/docs/skew
2363
+ */
2364
+ "skew-x": [{
2365
+ "skew-x": le()
2366
+ }],
2367
+ /**
2368
+ * Skew Y
2369
+ * @see https://tailwindcss.com/docs/skew
2370
+ */
2371
+ "skew-y": [{
2372
+ "skew-y": le()
2373
+ }],
2374
+ /**
2375
+ * Transform
2376
+ * @see https://tailwindcss.com/docs/transform
2377
+ */
2378
+ transform: [{
2379
+ transform: [m, u, "", "none", "gpu", "cpu"]
2380
+ }],
2381
+ /**
2382
+ * Transform Origin
2383
+ * @see https://tailwindcss.com/docs/transform-origin
2384
+ */
2385
+ "transform-origin": [{
2386
+ origin: X()
2387
+ }],
2388
+ /**
2389
+ * Transform Style
2390
+ * @see https://tailwindcss.com/docs/transform-style
2391
+ */
2392
+ "transform-style": [{
2393
+ transform: ["3d", "flat"]
2394
+ }],
2395
+ /**
2396
+ * Translate
2397
+ * @see https://tailwindcss.com/docs/translate
2398
+ */
2399
+ translate: [{
2400
+ translate: ne()
2401
+ }],
2402
+ /**
2403
+ * Translate X
2404
+ * @see https://tailwindcss.com/docs/translate
2405
+ */
2406
+ "translate-x": [{
2407
+ "translate-x": ne()
2408
+ }],
2409
+ /**
2410
+ * Translate Y
2411
+ * @see https://tailwindcss.com/docs/translate
2412
+ */
2413
+ "translate-y": [{
2414
+ "translate-y": ne()
2415
+ }],
2416
+ /**
2417
+ * Translate Z
2418
+ * @see https://tailwindcss.com/docs/translate
2419
+ */
2420
+ "translate-z": [{
2421
+ "translate-z": ne()
2422
+ }],
2423
+ /**
2424
+ * Translate None
2425
+ * @see https://tailwindcss.com/docs/translate
2426
+ */
2427
+ "translate-none": ["translate-none"],
2428
+ // ---------------------
2429
+ // --- Interactivity ---
2430
+ // ---------------------
2431
+ /**
2432
+ * Accent Color
2433
+ * @see https://tailwindcss.com/docs/accent-color
2434
+ */
2435
+ accent: [{
2436
+ accent: x()
2437
+ }],
2438
+ /**
2439
+ * Appearance
2440
+ * @see https://tailwindcss.com/docs/appearance
2441
+ */
2442
+ appearance: [{
2443
+ appearance: ["none", "auto"]
2444
+ }],
2445
+ /**
2446
+ * Caret Color
2447
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2448
+ */
2449
+ "caret-color": [{
2450
+ caret: x()
2451
+ }],
2452
+ /**
2453
+ * Color Scheme
2454
+ * @see https://tailwindcss.com/docs/color-scheme
2455
+ */
2456
+ "color-scheme": [{
2457
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
2458
+ }],
2459
+ /**
2460
+ * Cursor
2461
+ * @see https://tailwindcss.com/docs/cursor
2462
+ */
2463
+ cursor: [{
2464
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", m, u]
2465
+ }],
2466
+ /**
2467
+ * Field Sizing
2468
+ * @see https://tailwindcss.com/docs/field-sizing
2469
+ */
2470
+ "field-sizing": [{
2471
+ "field-sizing": ["fixed", "content"]
2472
+ }],
2473
+ /**
2474
+ * Pointer Events
2475
+ * @see https://tailwindcss.com/docs/pointer-events
2476
+ */
2477
+ "pointer-events": [{
2478
+ "pointer-events": ["auto", "none"]
2479
+ }],
2480
+ /**
2481
+ * Resize
2482
+ * @see https://tailwindcss.com/docs/resize
2483
+ */
2484
+ resize: [{
2485
+ resize: ["none", "", "y", "x"]
2486
+ }],
2487
+ /**
2488
+ * Scroll Behavior
2489
+ * @see https://tailwindcss.com/docs/scroll-behavior
2490
+ */
2491
+ "scroll-behavior": [{
2492
+ scroll: ["auto", "smooth"]
2493
+ }],
2494
+ /**
2495
+ * Scroll Margin
2496
+ * @see https://tailwindcss.com/docs/scroll-margin
2497
+ */
2498
+ "scroll-m": [{
2499
+ "scroll-m": h()
2500
+ }],
2501
+ /**
2502
+ * Scroll Margin X
2503
+ * @see https://tailwindcss.com/docs/scroll-margin
2504
+ */
2505
+ "scroll-mx": [{
2506
+ "scroll-mx": h()
2507
+ }],
2508
+ /**
2509
+ * Scroll Margin Y
2510
+ * @see https://tailwindcss.com/docs/scroll-margin
2511
+ */
2512
+ "scroll-my": [{
2513
+ "scroll-my": h()
2514
+ }],
2515
+ /**
2516
+ * Scroll Margin Start
2517
+ * @see https://tailwindcss.com/docs/scroll-margin
2518
+ */
2519
+ "scroll-ms": [{
2520
+ "scroll-ms": h()
2521
+ }],
2522
+ /**
2523
+ * Scroll Margin End
2524
+ * @see https://tailwindcss.com/docs/scroll-margin
2525
+ */
2526
+ "scroll-me": [{
2527
+ "scroll-me": h()
2528
+ }],
2529
+ /**
2530
+ * Scroll Margin Top
2531
+ * @see https://tailwindcss.com/docs/scroll-margin
2532
+ */
2533
+ "scroll-mt": [{
2534
+ "scroll-mt": h()
2535
+ }],
2536
+ /**
2537
+ * Scroll Margin Right
2538
+ * @see https://tailwindcss.com/docs/scroll-margin
2539
+ */
2540
+ "scroll-mr": [{
2541
+ "scroll-mr": h()
2542
+ }],
2543
+ /**
2544
+ * Scroll Margin Bottom
2545
+ * @see https://tailwindcss.com/docs/scroll-margin
2546
+ */
2547
+ "scroll-mb": [{
2548
+ "scroll-mb": h()
2549
+ }],
2550
+ /**
2551
+ * Scroll Margin Left
2552
+ * @see https://tailwindcss.com/docs/scroll-margin
2553
+ */
2554
+ "scroll-ml": [{
2555
+ "scroll-ml": h()
2556
+ }],
2557
+ /**
2558
+ * Scroll Padding
2559
+ * @see https://tailwindcss.com/docs/scroll-padding
2560
+ */
2561
+ "scroll-p": [{
2562
+ "scroll-p": h()
2563
+ }],
2564
+ /**
2565
+ * Scroll Padding X
2566
+ * @see https://tailwindcss.com/docs/scroll-padding
2567
+ */
2568
+ "scroll-px": [{
2569
+ "scroll-px": h()
2570
+ }],
2571
+ /**
2572
+ * Scroll Padding Y
2573
+ * @see https://tailwindcss.com/docs/scroll-padding
2574
+ */
2575
+ "scroll-py": [{
2576
+ "scroll-py": h()
2577
+ }],
2578
+ /**
2579
+ * Scroll Padding Start
2580
+ * @see https://tailwindcss.com/docs/scroll-padding
2581
+ */
2582
+ "scroll-ps": [{
2583
+ "scroll-ps": h()
2584
+ }],
2585
+ /**
2586
+ * Scroll Padding End
2587
+ * @see https://tailwindcss.com/docs/scroll-padding
2588
+ */
2589
+ "scroll-pe": [{
2590
+ "scroll-pe": h()
2591
+ }],
2592
+ /**
2593
+ * Scroll Padding Top
2594
+ * @see https://tailwindcss.com/docs/scroll-padding
2595
+ */
2596
+ "scroll-pt": [{
2597
+ "scroll-pt": h()
2598
+ }],
2599
+ /**
2600
+ * Scroll Padding Right
2601
+ * @see https://tailwindcss.com/docs/scroll-padding
2602
+ */
2603
+ "scroll-pr": [{
2604
+ "scroll-pr": h()
2605
+ }],
2606
+ /**
2607
+ * Scroll Padding Bottom
2608
+ * @see https://tailwindcss.com/docs/scroll-padding
2609
+ */
2610
+ "scroll-pb": [{
2611
+ "scroll-pb": h()
2612
+ }],
2613
+ /**
2614
+ * Scroll Padding Left
2615
+ * @see https://tailwindcss.com/docs/scroll-padding
2616
+ */
2617
+ "scroll-pl": [{
2618
+ "scroll-pl": h()
2619
+ }],
2620
+ /**
2621
+ * Scroll Snap Align
2622
+ * @see https://tailwindcss.com/docs/scroll-snap-align
2623
+ */
2624
+ "snap-align": [{
2625
+ snap: ["start", "end", "center", "align-none"]
2626
+ }],
2627
+ /**
2628
+ * Scroll Snap Stop
2629
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
2630
+ */
2631
+ "snap-stop": [{
2632
+ snap: ["normal", "always"]
2633
+ }],
2634
+ /**
2635
+ * Scroll Snap Type
2636
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2637
+ */
2638
+ "snap-type": [{
2639
+ snap: ["none", "x", "y", "both"]
2640
+ }],
2641
+ /**
2642
+ * Scroll Snap Type Strictness
2643
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2644
+ */
2645
+ "snap-strictness": [{
2646
+ snap: ["mandatory", "proximity"]
2647
+ }],
2648
+ /**
2649
+ * Touch Action
2650
+ * @see https://tailwindcss.com/docs/touch-action
2651
+ */
2652
+ touch: [{
2653
+ touch: ["auto", "none", "manipulation"]
2654
+ }],
2655
+ /**
2656
+ * Touch Action X
2657
+ * @see https://tailwindcss.com/docs/touch-action
2658
+ */
2659
+ "touch-x": [{
2660
+ "touch-pan": ["x", "left", "right"]
2661
+ }],
2662
+ /**
2663
+ * Touch Action Y
2664
+ * @see https://tailwindcss.com/docs/touch-action
2665
+ */
2666
+ "touch-y": [{
2667
+ "touch-pan": ["y", "up", "down"]
2668
+ }],
2669
+ /**
2670
+ * Touch Action Pinch Zoom
2671
+ * @see https://tailwindcss.com/docs/touch-action
2672
+ */
2673
+ "touch-pz": ["touch-pinch-zoom"],
2674
+ /**
2675
+ * User Select
2676
+ * @see https://tailwindcss.com/docs/user-select
2677
+ */
2678
+ select: [{
2679
+ select: ["none", "text", "all", "auto"]
2680
+ }],
2681
+ /**
2682
+ * Will Change
2683
+ * @see https://tailwindcss.com/docs/will-change
2684
+ */
2685
+ "will-change": [{
2686
+ "will-change": ["auto", "scroll", "contents", "transform", m, u]
2687
+ }],
2688
+ // -----------
2689
+ // --- SVG ---
2690
+ // -----------
2691
+ /**
2692
+ * Fill
2693
+ * @see https://tailwindcss.com/docs/fill
2694
+ */
2695
+ fill: [{
2696
+ fill: ["none", ...x()]
2697
+ }],
2698
+ /**
2699
+ * Stroke Width
2700
+ * @see https://tailwindcss.com/docs/stroke-width
2701
+ */
2702
+ "stroke-w": [{
2703
+ stroke: [k, Te, pe, Ke]
2704
+ }],
2705
+ /**
2706
+ * Stroke
2707
+ * @see https://tailwindcss.com/docs/stroke
2708
+ */
2709
+ stroke: [{
2710
+ stroke: ["none", ...x()]
2711
+ }],
2712
+ // ---------------------
2713
+ // --- Accessibility ---
2714
+ // ---------------------
2715
+ /**
2716
+ * Forced Color Adjust
2717
+ * @see https://tailwindcss.com/docs/forced-color-adjust
2718
+ */
2719
+ "forced-color-adjust": [{
2720
+ "forced-color-adjust": ["auto", "none"]
2721
+ }]
2722
+ },
2723
+ conflictingClassGroups: {
2724
+ overflow: ["overflow-x", "overflow-y"],
2725
+ overscroll: ["overscroll-x", "overscroll-y"],
2726
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
2727
+ "inset-x": ["right", "left"],
2728
+ "inset-y": ["top", "bottom"],
2729
+ flex: ["basis", "grow", "shrink"],
2730
+ gap: ["gap-x", "gap-y"],
2731
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
2732
+ px: ["pr", "pl"],
2733
+ py: ["pt", "pb"],
2734
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
2735
+ mx: ["mr", "ml"],
2736
+ my: ["mt", "mb"],
2737
+ size: ["w", "h"],
2738
+ "font-size": ["leading"],
2739
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
2740
+ "fvn-ordinal": ["fvn-normal"],
2741
+ "fvn-slashed-zero": ["fvn-normal"],
2742
+ "fvn-figure": ["fvn-normal"],
2743
+ "fvn-spacing": ["fvn-normal"],
2744
+ "fvn-fraction": ["fvn-normal"],
2745
+ "line-clamp": ["display", "overflow"],
2746
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
2747
+ "rounded-s": ["rounded-ss", "rounded-es"],
2748
+ "rounded-e": ["rounded-se", "rounded-ee"],
2749
+ "rounded-t": ["rounded-tl", "rounded-tr"],
2750
+ "rounded-r": ["rounded-tr", "rounded-br"],
2751
+ "rounded-b": ["rounded-br", "rounded-bl"],
2752
+ "rounded-l": ["rounded-tl", "rounded-bl"],
2753
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
2754
+ "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
2755
+ "border-w-x": ["border-w-r", "border-w-l"],
2756
+ "border-w-y": ["border-w-t", "border-w-b"],
2757
+ "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
2758
+ "border-color-x": ["border-color-r", "border-color-l"],
2759
+ "border-color-y": ["border-color-t", "border-color-b"],
2760
+ translate: ["translate-x", "translate-y", "translate-none"],
2761
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
2762
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
2763
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
2764
+ "scroll-my": ["scroll-mt", "scroll-mb"],
2765
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
2766
+ "scroll-px": ["scroll-pr", "scroll-pl"],
2767
+ "scroll-py": ["scroll-pt", "scroll-pb"],
2768
+ touch: ["touch-x", "touch-y", "touch-pz"],
2769
+ "touch-x": ["touch"],
2770
+ "touch-y": ["touch"],
2771
+ "touch-pz": ["touch"]
2772
+ },
2773
+ conflictingClassGroupModifiers: {
2774
+ "font-size": ["leading"]
2775
+ },
2776
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
2777
+ };
2778
+ }, nr = /* @__PURE__ */ Vo(rr);
2779
+ function C(...e) {
2780
+ return nr(Rt(e));
2781
+ }
2782
+ function bt(e, t) {
2783
+ if (typeof e == "function")
2784
+ return e(t);
2785
+ e != null && (e.current = t);
2786
+ }
2787
+ function ar(...e) {
2788
+ return (t) => {
2789
+ let o = !1;
2790
+ const r = e.map((n) => {
2791
+ const s = bt(n, t);
2792
+ return !o && typeof s == "function" && (o = !0), s;
2793
+ });
2794
+ if (o)
2795
+ return () => {
2796
+ for (let n = 0; n < r.length; n++) {
2797
+ const s = r[n];
2798
+ typeof s == "function" ? s() : bt(e[n], null);
2799
+ }
2800
+ };
2801
+ };
2802
+ }
2803
+ var sr = /* @__PURE__ */ Symbol.for("react.lazy"), Ge = f[" use ".trim().toString()];
2804
+ function lr(e) {
2805
+ return typeof e == "object" && e !== null && "then" in e;
2806
+ }
2807
+ function Ft(e) {
2808
+ return e != null && typeof e == "object" && "$$typeof" in e && e.$$typeof === sr && "_payload" in e && lr(e._payload);
2809
+ }
2810
+ // @__NO_SIDE_EFFECTS__
2811
+ function ir(e) {
2812
+ const t = /* @__PURE__ */ dr(e), o = f.forwardRef((r, n) => {
2813
+ let { children: s, ...i } = r;
2814
+ Ft(s) && typeof Ge == "function" && (s = Ge(s._payload));
2815
+ const d = f.Children.toArray(s), c = d.find(mr);
2816
+ if (c) {
2817
+ const g = c.props.children, w = d.map((S) => S === c ? f.Children.count(g) > 1 ? f.Children.only(null) : f.isValidElement(g) ? g.props.children : null : S);
2818
+ return /* @__PURE__ */ a(t, { ...i, ref: n, children: f.isValidElement(g) ? f.cloneElement(g, void 0, w) : null });
2819
+ }
2820
+ return /* @__PURE__ */ a(t, { ...i, ref: n, children: s });
2821
+ });
2822
+ return o.displayName = `${e}.Slot`, o;
2823
+ }
2824
+ var cr = /* @__PURE__ */ ir("Slot");
2825
+ // @__NO_SIDE_EFFECTS__
2826
+ function dr(e) {
2827
+ const t = f.forwardRef((o, r) => {
2828
+ let { children: n, ...s } = o;
2829
+ if (Ft(n) && typeof Ge == "function" && (n = Ge(n._payload)), f.isValidElement(n)) {
2830
+ const i = pr(n), d = fr(s, n.props);
2831
+ return n.type !== f.Fragment && (d.ref = r ? ar(r, i) : i), f.cloneElement(n, d);
2832
+ }
2833
+ return f.Children.count(n) > 1 ? f.Children.only(null) : null;
2834
+ });
2835
+ return t.displayName = `${e}.SlotClone`, t;
2836
+ }
2837
+ var ur = /* @__PURE__ */ Symbol("radix.slottable");
2838
+ function mr(e) {
2839
+ return f.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === ur;
2840
+ }
2841
+ function fr(e, t) {
2842
+ const o = { ...t };
2843
+ for (const r in t) {
2844
+ const n = e[r], s = t[r];
2845
+ /^on[A-Z]/.test(r) ? n && s ? o[r] = (...d) => {
2846
+ const c = s(...d);
2847
+ return n(...d), c;
2848
+ } : n && (o[r] = n) : r === "style" ? o[r] = { ...n, ...s } : r === "className" && (o[r] = [n, s].filter(Boolean).join(" "));
2849
+ }
2850
+ return { ...e, ...o };
2851
+ }
2852
+ function pr(e) {
2853
+ let t = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, o = t && "isReactWarning" in t && t.isReactWarning;
2854
+ return o ? e.ref : (t = Object.getOwnPropertyDescriptor(e, "ref")?.get, o = t && "isReactWarning" in t && t.isReactWarning, o ? e.props.ref : e.props.ref || e.ref);
2855
+ }
2856
+ const yt = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, xt = Rt, jt = (e, t) => (o) => {
2857
+ var r;
2858
+ if (t?.variants == null) return xt(e, o?.class, o?.className);
2859
+ const { variants: n, defaultVariants: s } = t, i = Object.keys(n).map((g) => {
2860
+ const w = o?.[g], S = s?.[g];
2861
+ if (w === null) return null;
2862
+ const v = yt(w) || yt(S);
2863
+ return n[g][v];
2864
+ }), d = o && Object.entries(o).reduce((g, w) => {
2865
+ let [S, v] = w;
2866
+ return v === void 0 || (g[S] = v), g;
2867
+ }, {}), c = t == null || (r = t.compoundVariants) === null || r === void 0 ? void 0 : r.reduce((g, w) => {
2868
+ let { class: S, className: v, ...Z } = w;
2869
+ return Object.entries(Z).every((K) => {
2870
+ let [O, _] = K;
2871
+ return Array.isArray(_) ? _.includes({
2872
+ ...s,
2873
+ ...d
2874
+ }[O]) : {
2875
+ ...s,
2876
+ ...d
2877
+ }[O] === _;
2878
+ }) ? [
2879
+ ...g,
2880
+ S,
2881
+ v
2882
+ ] : g;
2883
+ }, []);
2884
+ return xt(e, i, c, o?.class, o?.className);
2885
+ }, gr = jt(
2886
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2887
+ {
2888
+ variants: {
2889
+ variant: {
2890
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
2891
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
2892
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
2893
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
2894
+ ghost: "hover:bg-accent hover:text-accent-foreground",
2895
+ link: "text-primary underline-offset-4 hover:underline"
2896
+ },
2897
+ size: {
2898
+ default: "h-9 px-4 py-2",
2899
+ sm: "h-8 rounded-md px-3 text-xs",
2900
+ lg: "h-10 rounded-md px-8",
2901
+ icon: "h-9 w-9"
2902
+ }
2903
+ },
2904
+ defaultVariants: {
2905
+ variant: "default",
2906
+ size: "default"
2907
+ }
2908
+ }
2909
+ ), ge = f.forwardRef(
2910
+ ({ className: e, variant: t, size: o, asChild: r = !1, ...n }, s) => /* @__PURE__ */ a(
2911
+ r ? cr : "button",
2912
+ {
2913
+ className: C(gr({ variant: t, size: o, className: e })),
2914
+ ref: s,
2915
+ ...n
2916
+ }
2917
+ )
2918
+ );
2919
+ ge.displayName = "Button";
2920
+ const Wt = f.forwardRef(
2921
+ ({ className: e, type: t, ...o }, r) => /* @__PURE__ */ a(
2922
+ "input",
2923
+ {
2924
+ type: t,
2925
+ className: C(
2926
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2927
+ e
2928
+ ),
2929
+ ref: r,
2930
+ ...o
2931
+ }
2932
+ )
2933
+ );
2934
+ Wt.displayName = "Input";
2935
+ const hr = jt(
2936
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
2937
+ ), Gt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
2938
+ Ct.Root,
2939
+ {
2940
+ ref: o,
2941
+ className: C(hr(), e),
2942
+ ...t
2943
+ }
2944
+ ));
2945
+ Gt.displayName = Ct.Root.displayName;
2946
+ const br = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), yr = (e) => e.replace(
2947
+ /^([A-Z])|[\s-_]+(\w)/g,
2948
+ (t, o, r) => r ? r.toUpperCase() : o.toLowerCase()
2949
+ ), wt = (e) => {
2950
+ const t = yr(e);
2951
+ return t.charAt(0).toUpperCase() + t.slice(1);
2952
+ }, Bt = (...e) => e.filter((t, o, r) => !!t && t.trim() !== "" && r.indexOf(t) === o).join(" ").trim(), xr = (e) => {
2953
+ for (const t in e)
2954
+ if (t.startsWith("aria-") || t === "role" || t === "title")
2955
+ return !0;
2956
+ };
2957
+ var wr = {
2958
+ xmlns: "http://www.w3.org/2000/svg",
2959
+ width: 24,
2960
+ height: 24,
2961
+ viewBox: "0 0 24 24",
2962
+ fill: "none",
2963
+ stroke: "currentColor",
2964
+ strokeWidth: 2,
2965
+ strokeLinecap: "round",
2966
+ strokeLinejoin: "round"
2967
+ };
2968
+ const vr = Nt(
2969
+ ({
2970
+ color: e = "currentColor",
2971
+ size: t = 24,
2972
+ strokeWidth: o = 2,
2973
+ absoluteStrokeWidth: r,
2974
+ className: n = "",
2975
+ children: s,
2976
+ iconNode: i,
2977
+ ...d
2978
+ }, c) => Xe(
2979
+ "svg",
2980
+ {
2981
+ ref: c,
2982
+ ...wr,
2983
+ width: t,
2984
+ height: t,
2985
+ stroke: e,
2986
+ strokeWidth: r ? Number(o) * 24 / Number(t) : o,
2987
+ className: Bt("lucide", n),
2988
+ ...!s && !xr(d) && { "aria-hidden": "true" },
2989
+ ...d
2990
+ },
2991
+ [
2992
+ ...i.map(([g, w]) => Xe(g, w)),
2993
+ ...Array.isArray(s) ? s : [s]
2994
+ ]
2995
+ )
2996
+ );
2997
+ const _e = (e, t) => {
2998
+ const o = Nt(
2999
+ ({ className: r, ...n }, s) => Xe(vr, {
3000
+ ref: s,
3001
+ iconNode: t,
3002
+ className: Bt(
3003
+ `lucide-${br(wt(e))}`,
3004
+ `lucide-${e}`,
3005
+ r
3006
+ ),
3007
+ ...n
3008
+ })
3009
+ );
3010
+ return o.displayName = wt(e), o;
3011
+ };
3012
+ const kr = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]], $t = _e("check", kr);
3013
+ const Nr = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]], Ut = _e("chevron-down", Nr);
3014
+ const Cr = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]], Sr = _e("chevron-right", Cr);
3015
+ const Rr = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]], zr = _e("chevron-up", Rr);
3016
+ const Ar = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]], Ir = _e("circle", Ar), Tr = M.Root, Mr = M.Trigger, _r = f.forwardRef(({ className: e, inset: t, children: o, ...r }, n) => /* @__PURE__ */ R(
3017
+ M.SubTrigger,
3018
+ {
3019
+ ref: n,
3020
+ className: C(
3021
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3022
+ t && "pl-8",
3023
+ e
3024
+ ),
3025
+ ...r,
3026
+ children: [
3027
+ o,
3028
+ /* @__PURE__ */ a(Sr, { className: "ml-auto" })
3029
+ ]
3030
+ }
3031
+ ));
3032
+ _r.displayName = M.SubTrigger.displayName;
3033
+ const Er = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3034
+ M.SubContent,
3035
+ {
3036
+ ref: o,
3037
+ className: C(
3038
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
3039
+ e
3040
+ ),
3041
+ ...t
3042
+ }
3043
+ ));
3044
+ Er.displayName = M.SubContent.displayName;
3045
+ const Ht = f.forwardRef(({ className: e, sideOffset: t = 4, ...o }, r) => /* @__PURE__ */ a(M.Portal, { children: /* @__PURE__ */ a(
3046
+ M.Content,
3047
+ {
3048
+ ref: r,
3049
+ sideOffset: t,
3050
+ className: C(
3051
+ "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
3052
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
3053
+ e
3054
+ ),
3055
+ ...o
3056
+ }
3057
+ ) }));
3058
+ Ht.displayName = M.Content.displayName;
3059
+ const Fe = f.forwardRef(({ className: e, inset: t, ...o }, r) => /* @__PURE__ */ a(
3060
+ M.Item,
3061
+ {
3062
+ ref: r,
3063
+ className: C(
3064
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
3065
+ t && "pl-8",
3066
+ e
3067
+ ),
3068
+ ...o
3069
+ }
3070
+ ));
3071
+ Fe.displayName = M.Item.displayName;
3072
+ const Dr = f.forwardRef(({ className: e, children: t, checked: o, ...r }, n) => /* @__PURE__ */ R(
3073
+ M.CheckboxItem,
3074
+ {
3075
+ ref: n,
3076
+ className: C(
3077
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3078
+ e
3079
+ ),
3080
+ checked: o,
3081
+ ...r,
3082
+ children: [
3083
+ /* @__PURE__ */ a("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ a(M.ItemIndicator, { children: /* @__PURE__ */ a($t, { className: "h-4 w-4" }) }) }),
3084
+ t
3085
+ ]
3086
+ }
3087
+ ));
3088
+ Dr.displayName = M.CheckboxItem.displayName;
3089
+ const Pr = f.forwardRef(({ className: e, children: t, ...o }, r) => /* @__PURE__ */ R(
3090
+ M.RadioItem,
3091
+ {
3092
+ ref: r,
3093
+ className: C(
3094
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3095
+ e
3096
+ ),
3097
+ ...o,
3098
+ children: [
3099
+ /* @__PURE__ */ a("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ a(M.ItemIndicator, { children: /* @__PURE__ */ a(Ir, { className: "h-2 w-2 fill-current" }) }) }),
3100
+ t
3101
+ ]
3102
+ }
3103
+ ));
3104
+ Pr.displayName = M.RadioItem.displayName;
3105
+ const Lr = f.forwardRef(({ className: e, inset: t, ...o }, r) => /* @__PURE__ */ a(
3106
+ M.Label,
3107
+ {
3108
+ ref: r,
3109
+ className: C(
3110
+ "px-2 py-1.5 text-sm font-semibold",
3111
+ t && "pl-8",
3112
+ e
3113
+ ),
3114
+ ...o
3115
+ }
3116
+ ));
3117
+ Lr.displayName = M.Label.displayName;
3118
+ const Vr = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3119
+ M.Separator,
3120
+ {
3121
+ ref: o,
3122
+ className: C("-mx-1 my-1 h-px bg-muted", e),
3123
+ ...t
3124
+ }
3125
+ ));
3126
+ Vr.displayName = M.Separator.displayName;
3127
+ const vt = T.Root, kt = T.Value, Qe = f.forwardRef(({ className: e, children: t, ...o }, r) => /* @__PURE__ */ R(
3128
+ T.Trigger,
3129
+ {
3130
+ ref: r,
3131
+ className: C(
3132
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
3133
+ e
3134
+ ),
3135
+ ...o,
3136
+ children: [
3137
+ t,
3138
+ /* @__PURE__ */ a(T.Icon, { asChild: !0, children: /* @__PURE__ */ a(Ut, { className: "h-4 w-4 opacity-50" }) })
3139
+ ]
3140
+ }
3141
+ ));
3142
+ Qe.displayName = T.Trigger.displayName;
3143
+ const qt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3144
+ T.ScrollUpButton,
3145
+ {
3146
+ ref: o,
3147
+ className: C(
3148
+ "flex cursor-default items-center justify-center py-1",
3149
+ e
3150
+ ),
3151
+ ...t,
3152
+ children: /* @__PURE__ */ a(zr, { className: "h-4 w-4" })
3153
+ }
3154
+ ));
3155
+ qt.displayName = T.ScrollUpButton.displayName;
3156
+ const Yt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3157
+ T.ScrollDownButton,
3158
+ {
3159
+ ref: o,
3160
+ className: C(
3161
+ "flex cursor-default items-center justify-center py-1",
3162
+ e
3163
+ ),
3164
+ ...t,
3165
+ children: /* @__PURE__ */ a(Ut, { className: "h-4 w-4" })
3166
+ }
3167
+ ));
3168
+ Yt.displayName = T.ScrollDownButton.displayName;
3169
+ const et = f.forwardRef(({ className: e, children: t, position: o = "popper", ...r }, n) => /* @__PURE__ */ a(T.Portal, { children: /* @__PURE__ */ R(
3170
+ T.Content,
3171
+ {
3172
+ ref: n,
3173
+ className: C(
3174
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
3175
+ o === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
3176
+ e
3177
+ ),
3178
+ position: o,
3179
+ ...r,
3180
+ children: [
3181
+ /* @__PURE__ */ a(qt, {}),
3182
+ /* @__PURE__ */ a(
3183
+ T.Viewport,
3184
+ {
3185
+ className: C(
3186
+ "p-1",
3187
+ o === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
3188
+ ),
3189
+ children: t
3190
+ }
3191
+ ),
3192
+ /* @__PURE__ */ a(Yt, {})
3193
+ ]
3194
+ }
3195
+ ) }));
3196
+ et.displayName = T.Content.displayName;
3197
+ const Or = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3198
+ T.Label,
3199
+ {
3200
+ ref: o,
3201
+ className: C("px-2 py-1.5 text-sm font-semibold", e),
3202
+ ...t
3203
+ }
3204
+ ));
3205
+ Or.displayName = T.Label.displayName;
3206
+ const je = f.forwardRef(({ className: e, children: t, ...o }, r) => /* @__PURE__ */ R(
3207
+ T.Item,
3208
+ {
3209
+ ref: r,
3210
+ className: C(
3211
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3212
+ e
3213
+ ),
3214
+ ...o,
3215
+ children: [
3216
+ /* @__PURE__ */ a("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ a(T.ItemIndicator, { children: /* @__PURE__ */ a($t, { className: "h-4 w-4" }) }) }),
3217
+ /* @__PURE__ */ a(T.ItemText, { children: t })
3218
+ ]
3219
+ }
3220
+ ));
3221
+ je.displayName = T.Item.displayName;
3222
+ const Fr = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3223
+ T.Separator,
3224
+ {
3225
+ ref: o,
3226
+ className: C("-mx-1 my-1 h-px bg-muted", e),
3227
+ ...t
3228
+ }
3229
+ ));
3230
+ Fr.displayName = T.Separator.displayName;
3231
+ const jr = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ a(
3232
+ "table",
3233
+ {
3234
+ ref: o,
3235
+ className: C("w-full caption-bottom text-sm", e),
3236
+ ...t
3237
+ }
3238
+ ) }));
3239
+ jr.displayName = "Table";
3240
+ const Zt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a("thead", { ref: o, className: C("[&_tr]:border-b", e), ...t }));
3241
+ Zt.displayName = "TableHeader";
3242
+ const Kt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3243
+ "tbody",
3244
+ {
3245
+ ref: o,
3246
+ className: C("[&_tr:last-child]:border-0", e),
3247
+ ...t
3248
+ }
3249
+ ));
3250
+ Kt.displayName = "TableBody";
3251
+ const Wr = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3252
+ "tfoot",
3253
+ {
3254
+ ref: o,
3255
+ className: C(
3256
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3257
+ e
3258
+ ),
3259
+ ...t
3260
+ }
3261
+ ));
3262
+ Wr.displayName = "TableFooter";
3263
+ const se = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3264
+ "tr",
3265
+ {
3266
+ ref: o,
3267
+ className: C(
3268
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3269
+ e
3270
+ ),
3271
+ ...t
3272
+ }
3273
+ ));
3274
+ se.displayName = "TableRow";
3275
+ const tt = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3276
+ "th",
3277
+ {
3278
+ ref: o,
3279
+ className: C(
3280
+ "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
3281
+ e
3282
+ ),
3283
+ ...t
3284
+ }
3285
+ ));
3286
+ tt.displayName = "TableHead";
3287
+ const he = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3288
+ "td",
3289
+ {
3290
+ ref: o,
3291
+ className: C(
3292
+ "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
3293
+ e
3294
+ ),
3295
+ ...t
3296
+ }
3297
+ ));
3298
+ he.displayName = "TableCell";
3299
+ const Gr = f.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
3300
+ "caption",
3301
+ {
3302
+ ref: o,
3303
+ className: C("mt-4 text-sm text-muted-foreground", e),
3304
+ ...t
3305
+ }
3306
+ ));
3307
+ Gr.displayName = "TableCaption";
3308
+ function be(e) {
3309
+ const t = (e.id ?? e.name ?? "").toString();
3310
+ if (!t)
3311
+ throw new Error("the-datagrid: column must have `id` or `name`.");
3312
+ return t;
3313
+ }
3314
+ function rt(e) {
3315
+ return (e.sortName ?? e.name ?? e.id ?? "").toString();
3316
+ }
3317
+ function H(e, t, o) {
3318
+ return e?.[t] ?? o;
3319
+ }
3320
+ function Br(e) {
3321
+ return e === !1 || e === "none" ? "none" : "text";
3322
+ }
3323
+ function $r(e, t, o) {
3324
+ return Math.max(t, Math.min(o, e));
3325
+ }
3326
+ function Ur(e) {
3327
+ const { header: t, values: o } = e, r = [];
3328
+ t && r.push(t.length);
3329
+ for (const s of o) r.push(String(s ?? "").length);
3330
+ const n = r.length ? Math.max(...r) : 0;
3331
+ return $r(n * 8 + 32, 90, 520);
3332
+ }
3333
+ function Me(e) {
3334
+ const { value: t, defaultValue: o, onChange: r } = e, n = t !== void 0, [s, i] = f.useState(o), d = n ? t : s, c = f.useCallback(
3335
+ (g) => {
3336
+ n || i(g), r?.(g);
3337
+ },
3338
+ [n, r]
3339
+ );
3340
+ return [d, c, n];
3341
+ }
3342
+ function Hr(e) {
3343
+ return !e || !Array.isArray(e) || e.length === 0 ? null : e;
3344
+ }
3345
+ function Xt(e, t) {
3346
+ if (e)
3347
+ return e.find((o) => o.name === t);
3348
+ }
3349
+ function ye(e, t) {
3350
+ const o = e ?? [];
3351
+ if (!t) return o.length ? o : null;
3352
+ const r = o.filter((s) => s.name !== t.name);
3353
+ return t.value === void 0 || t.value === null || typeof t.value == "string" && t.value.trim() === "" ? r.length ? r : null : [...r, { ...t, active: t.active ?? !0 }];
3354
+ }
3355
+ function qr(e, t, o) {
3356
+ const r = Xt(e, t);
3357
+ return r ? ye(e, { ...r, operator: o }) : e;
3358
+ }
3359
+ function Yr(e, t) {
3360
+ const r = (e ?? []).filter((n) => n.name !== t);
3361
+ return r.length ? r : null;
3362
+ }
3363
+ function Zr(e, t) {
3364
+ return !t || t.length === 0 ? e : e.filter((o) => t.every((r) => {
3365
+ if (r.active === !1) return !0;
3366
+ const n = o?.[r.name], s = n == null ? "" : String(n), i = r.value == null ? "" : String(r.value), d = s.toLowerCase(), c = i.toLowerCase();
3367
+ switch (r.operator) {
3368
+ case "contains":
3369
+ return d.includes(c);
3370
+ case "startsWith":
3371
+ return d.startsWith(c);
3372
+ case "endsWith":
3373
+ return d.endsWith(c);
3374
+ case "eq":
3375
+ return d === c;
3376
+ case "neq":
3377
+ return d !== c;
3378
+ case "empty":
3379
+ return d.trim() === "";
3380
+ case "notEmpty":
3381
+ return d.trim() !== "";
3382
+ default:
3383
+ return d.includes(c);
3384
+ }
3385
+ }));
3386
+ }
3387
+ const Kr = [
3388
+ { label: "Contains", value: "contains" },
3389
+ { label: "Starts with", value: "startsWith" },
3390
+ { label: "Ends with", value: "endsWith" },
3391
+ { label: "Equals", value: "eq" },
3392
+ { label: "Not equals", value: "neq" },
3393
+ { label: "Empty", value: "empty" },
3394
+ { label: "Not empty", value: "notEmpty" }
3395
+ ];
3396
+ function Xr(e, t) {
3397
+ return e ? (Array.isArray(e) ? e : [e]).find((n) => n.name === t)?.dir ?? 0 : 0;
3398
+ }
3399
+ function Jr(e) {
3400
+ const { sortInfo: t, col: o, allowUnsort: r, defaultDir: n, multi: s } = e, i = rt(o), d = t ? Array.isArray(t) ? [...t] : [t] : [], c = d.findIndex((v) => v.name === i), g = c >= 0 ? d[c].dir : 0;
3401
+ let w = 0;
3402
+ if (g === 0 ? w = n : g === n ? w = n === 1 ? -1 : 1 : g === (n === 1 ? -1 : 1) ? w = r ? 0 : n : w = n, !s)
3403
+ return w === 0 ? null : { name: i, dir: w };
3404
+ const S = d.filter((v) => v.name !== i);
3405
+ return w !== 0 && S.push({ name: i, dir: w }), S.length ? S : null;
3406
+ }
3407
+ function Qr(e, t) {
3408
+ if (!e) return [];
3409
+ const o = Array.isArray(e) ? e : [e], r = /* @__PURE__ */ new Map();
3410
+ for (const n of t)
3411
+ r.set(rt(n), be(n));
3412
+ return o.map((n) => ({ id: r.get(n.name) ?? n.name, desc: n.dir === -1 })).filter((n) => typeof n.id == "string" && n.id.length > 0);
3413
+ }
3414
+ function en(e, t) {
3415
+ if (!t) return e;
3416
+ const o = Array.isArray(t) ? t : [t];
3417
+ if (o.length === 0) return e;
3418
+ const r = [...e];
3419
+ return r.sort((n, s) => {
3420
+ for (const i of o) {
3421
+ const d = n?.[i.name], c = s?.[i.name], g = typeof d == "number" ? d : Number(d), w = typeof c == "number" ? c : Number(c), S = Number.isFinite(g) && Number.isFinite(w);
3422
+ let v = 0;
3423
+ if (S ? v = g - w : v = String(d ?? "").localeCompare(String(c ?? ""), void 0, {
3424
+ sensitivity: "base"
3425
+ }), v !== 0) return i.dir === -1 ? -v : v;
3426
+ }
3427
+ return 0;
3428
+ }), r;
3429
+ }
3430
+ function tn(e) {
3431
+ return e === 1 ? /* @__PURE__ */ a(po, { className: "ml-1 size-3" }) : e === -1 ? /* @__PURE__ */ a(go, { className: "ml-1 size-3" }) : /* @__PURE__ */ a(ho, { className: "ml-1 size-3 opacity-60" });
3432
+ }
3433
+ const ln = [];
3434
+ function cn(e) {
3435
+ const {
3436
+ theme: t = "default",
3437
+ idProperty: o,
3438
+ columns: r,
3439
+ dataSource: n,
3440
+ enableColumnFilterContextMenu: s = !1,
3441
+ enableColumnAutosize: i = !0,
3442
+ skipHeaderOnAutoSize: d = !1,
3443
+ enableFiltering: c = !0,
3444
+ filteredRowsCount: g,
3445
+ virtualized: w = !0,
3446
+ columnUserSelect: S = !0,
3447
+ i18n: v,
3448
+ showColumnMenuTool: Z = !1,
3449
+ rowHeight: K = 44,
3450
+ headerHeight: O = 40,
3451
+ filterRowHeight: _ = 44,
3452
+ className: J,
3453
+ style: xe
3454
+ } = e, ue = f.useMemo(
3455
+ () => r.map((l) => be(l)),
3456
+ [r]
3457
+ ), [B, X] = Me({
3458
+ value: e.columnOrder,
3459
+ defaultValue: e.columnOrder ?? ue,
3460
+ onChange: e.onColumnOrderChange
3461
+ }), [W, q] = Me({
3462
+ value: e.sortInfo,
3463
+ defaultValue: e.defaultSortInfo ?? null,
3464
+ onChange: e.onSortInfoChange
3465
+ }), [h, D, Q] = Me({
3466
+ value: e.filterValue,
3467
+ defaultValue: Hr(e.defaultFilterValue) ?? null,
3468
+ onChange: e.onFilterValueChange
3469
+ }), [ee, te] = f.useState(h);
3470
+ f.useEffect(() => te(h), [h]);
3471
+ const [j, A] = Me({
3472
+ value: e.skip,
3473
+ defaultValue: e.defaultSkip ?? 0,
3474
+ onChange: e.onSkipChange
3475
+ }), [P, $] = Me({
3476
+ value: e.limit,
3477
+ defaultValue: e.defaultLimit ?? 10,
3478
+ onChange: e.onLimitChange
3479
+ }), oe = e.pageSizes ?? [10, 20, 30, 40, 50], x = e.allowUnsort ?? !0, Ee = (e.defaultSortingDirection ?? "asc") === "desc" ? -1 : 1, G = f.useMemo(() => {
3480
+ const l = /* @__PURE__ */ new Map();
3481
+ for (const p of r) l.set(be(p), p);
3482
+ const b = [];
3483
+ for (const p of B) {
3484
+ const y = l.get(p);
3485
+ y && b.push(y);
3486
+ }
3487
+ for (const p of r) {
3488
+ const y = be(p);
3489
+ b.find((N) => be(N) === y) || b.push(p);
3490
+ }
3491
+ return b.filter((p) => p.visible !== !1);
3492
+ }, [r, B]), Se = f.useMemo(() => Qr(W, G), [
3493
+ W,
3494
+ G
3495
+ ]), [I, F] = f.useState([]), [Y, me] = f.useState(0), [E, Re] = f.useState(!1), we = e.loading ?? E, re = h, le = W, ne = f.useCallback(async () => {
3496
+ if (Array.isArray(n)) {
3497
+ let l = n;
3498
+ c && re && (l = Zr(l, re)), le && (l = en(l, le));
3499
+ const b = l.length, N = (e.pagination ?? !0) !== !1 ? l.slice(j, j + P) : l;
3500
+ F(N), me(b), g?.(b);
3501
+ return;
3502
+ }
3503
+ Re(!0);
3504
+ try {
3505
+ const l = n, b = {
3506
+ skip: j,
3507
+ limit: P,
3508
+ sortInfo: le,
3509
+ filterValue: re,
3510
+ columnOrder: B,
3511
+ columns: G,
3512
+ idProperty: o,
3513
+ theme: t
3514
+ };
3515
+ let p = l;
3516
+ typeof l == "function" && (p = l(b)), p && typeof p.then == "function" && (p = await p), p && typeof p == "object" && Array.isArray(p.data) ? (F(p.data), me(Number(p.count ?? p.data.length)), g?.(Number(p.count ?? p.data.length))) : Array.isArray(p) ? (F(p), me(p.length), g?.(p.length)) : (F([]), me(0), g?.(0));
3517
+ } finally {
3518
+ Re(!1);
3519
+ }
3520
+ }, [
3521
+ n,
3522
+ c,
3523
+ re,
3524
+ le,
3525
+ g,
3526
+ o,
3527
+ P,
3528
+ G,
3529
+ e.pagination,
3530
+ j,
3531
+ t,
3532
+ B
3533
+ ]);
3534
+ f.useEffect(() => {
3535
+ ne();
3536
+ }, [ne]), f.useEffect(() => {
3537
+ if (Q) return;
3538
+ const l = window.setTimeout(() => {
3539
+ D(ee);
3540
+ }, 300);
3541
+ return () => window.clearTimeout(l);
3542
+ }, [ee, Q, D]);
3543
+ const [De, Jt] = f.useState({});
3544
+ f.useEffect(() => {
3545
+ if (!i) return;
3546
+ const l = {}, b = I.slice(0, 25);
3547
+ for (const p of G) {
3548
+ const y = be(p), N = p.width ?? p.defaultWidth;
3549
+ if (typeof N == "number" && Number.isFinite(N) && N > 0) {
3550
+ l[y] = N;
3551
+ continue;
3552
+ }
3553
+ const U = d ? "" : typeof p.header == "string" ? p.header : typeof p.name == "string" ? p.name : "", L = b.map((ie) => ie?.[y]);
3554
+ l[y] = Ur({ header: U, values: L });
3555
+ }
3556
+ Jt(l);
3557
+ }, [i, G, I, d]);
3558
+ const Qt = f.useMemo(() => G.map((l) => {
3559
+ const b = be(l);
3560
+ return {
3561
+ id: b,
3562
+ accessorFn: (p) => p?.[b],
3563
+ enableSorting: l.sortable ?? !0,
3564
+ header: () => l.renderHeader?.({ column: l }) ?? l.header ?? l.name ?? l.id ?? b,
3565
+ cell: (p) => {
3566
+ const y = p.getValue();
3567
+ return l.render ? l.render(y, {
3568
+ data: p.row.original,
3569
+ rowIndex: p.row.index,
3570
+ column: l,
3571
+ columnId: b
3572
+ }) : y == null ? "" : String(y);
3573
+ },
3574
+ meta: {
3575
+ __column: l
3576
+ }
3577
+ };
3578
+ }), [G]), $e = ao({
3579
+ data: I,
3580
+ columns: Qt,
3581
+ state: {
3582
+ sorting: Se
3583
+ },
3584
+ manualSorting: !0,
3585
+ getCoreRowModel: so(),
3586
+ getRowId: (l, b) => {
3587
+ const p = l?.[o];
3588
+ return p == null ? String(b) : String(p);
3589
+ }
3590
+ }), nt = f.useRef(null), ze = $e.getRowModel().rows, at = lo({
3591
+ count: ze.length,
3592
+ getScrollElement: () => nt.current,
3593
+ estimateSize: () => K,
3594
+ overscan: 10
3595
+ }), ve = w ? at.getVirtualItems() : [], st = w && ve.length ? ve[0].start : 0, lt = w && ve.length ? at.getTotalSize() - ve[ve.length - 1].end : 0, [fe, Ae] = f.useState(null);
3596
+ f.useEffect(() => {
3597
+ if (!fe?.open) return;
3598
+ const l = () => Ae(null), b = (p) => {
3599
+ p.key === "Escape" && Ae(null);
3600
+ };
3601
+ return window.addEventListener("mousedown", l), window.addEventListener("keydown", b), () => {
3602
+ window.removeEventListener("mousedown", l), window.removeEventListener("keydown", b);
3603
+ };
3604
+ }, [fe]);
3605
+ const Ue = f.useRef(null);
3606
+ f.useEffect(() => {
3607
+ Ue.current = {
3608
+ reload: () => {
3609
+ ne();
3610
+ },
3611
+ getData: () => I,
3612
+ getCount: () => Y,
3613
+ getSkip: () => j,
3614
+ getLimit: () => P,
3615
+ setSkip: (l) => A(l),
3616
+ setLimit: (l) => {
3617
+ A(0), $(l);
3618
+ },
3619
+ getSortInfo: () => W,
3620
+ setSortInfo: (l) => {
3621
+ A(0), q(l);
3622
+ },
3623
+ getFilterValue: () => h,
3624
+ setFilterValue: (l) => {
3625
+ A(0), D(l);
3626
+ },
3627
+ getColumnOrder: () => B,
3628
+ setColumnOrder: (l) => X(l)
3629
+ }, e.handle?.(Ue), e.onReady?.(Ue);
3630
+ }, [
3631
+ B,
3632
+ Y,
3633
+ h,
3634
+ P,
3635
+ ne,
3636
+ e,
3637
+ I,
3638
+ X,
3639
+ D,
3640
+ $,
3641
+ A,
3642
+ q,
3643
+ j,
3644
+ W
3645
+ ]);
3646
+ const He = Math.max(1, P), eo = Math.floor(j / He), it = Math.max(1, Math.ceil(Y / He) || 1), ct = j > 0, dt = j + He < Y, ut = Br(S) === "none" ? "select-none" : "select-text", qe = f.useRef(null);
3647
+ function to(l, b) {
3648
+ qe.current = b;
3649
+ try {
3650
+ l.dataTransfer.setData("text/plain", b);
3651
+ } catch {
3652
+ }
3653
+ l.dataTransfer.effectAllowed = "move";
3654
+ }
3655
+ function oo(l, b) {
3656
+ l.preventDefault();
3657
+ const p = qe.current ?? l.dataTransfer.getData("text/plain");
3658
+ if (qe.current = null, !p || p === b) return;
3659
+ const y = [...B], N = y.indexOf(p), U = y.indexOf(b);
3660
+ N < 0 || U < 0 || (y.splice(N, 1), y.splice(U, 0, p), X(y));
3661
+ }
3662
+ function ro(l) {
3663
+ l.preventDefault(), l.dataTransfer.dropEffect = "move";
3664
+ }
3665
+ return /* @__PURE__ */ R("div", { className: C("flex flex-col gap-2 lg:gap-6", J), "data-theme": t, children: [
3666
+ /* @__PURE__ */ a(
3667
+ "div",
3668
+ {
3669
+ ref: nt,
3670
+ className: C(
3671
+ "relative overflow-auto rounded-lg border border-border",
3672
+ w ? "max-h-[560px]" : ""
3673
+ ),
3674
+ style: xe,
3675
+ children: /* @__PURE__ */ R("table", { className: "w-full table-fixed caption-bottom text-sm", children: [
3676
+ /* @__PURE__ */ R(Zt, { children: [
3677
+ $e.getHeaderGroups().map((l) => /* @__PURE__ */ a(se, { className: "bg-muted/50", style: { height: O }, children: l.headers.map((b) => {
3678
+ const y = b.column.columnDef?.meta?.__column, N = b.column.id, U = (y?.sortable ?? !0) && b.column.getCanSort(), L = y ? rt(y) : N, ie = Xr(W, L), Ye = De[N], Pe = y?.headerAlign ?? y?.textAlign;
3679
+ return /* @__PURE__ */ a(
3680
+ tt,
3681
+ {
3682
+ colSpan: b.colSpan,
3683
+ className: C(
3684
+ "sticky top-0 z-20 bg-muted/50",
3685
+ Pe === "right" || Pe === "end" ? "text-right" : "",
3686
+ y?.headerProps?.className
3687
+ ),
3688
+ style: {
3689
+ width: Ye,
3690
+ minWidth: y?.minWidth,
3691
+ maxWidth: y?.maxWidth,
3692
+ height: O,
3693
+ ...y?.headerProps?.style
3694
+ },
3695
+ draggable: !!e.onColumnOrderChange,
3696
+ onDragStart: (z) => to(z, N),
3697
+ onDragOver: ro,
3698
+ onDrop: (z) => oo(z, N),
3699
+ children: /* @__PURE__ */ R("div", { className: "flex items-center justify-between gap-2", children: [
3700
+ /* @__PURE__ */ a("div", { className: "flex min-w-0 items-center", children: b.isPlaceholder ? null : U ? /* @__PURE__ */ R(
3701
+ ge,
3702
+ {
3703
+ type: "button",
3704
+ variant: "ghost",
3705
+ size: "sm",
3706
+ className: "-ml-3 h-8 px-2",
3707
+ onClick: (z) => {
3708
+ const ce = Jr({
3709
+ sortInfo: W,
3710
+ col: y ?? { name: N },
3711
+ allowUnsort: x,
3712
+ defaultDir: Ee,
3713
+ multi: z.shiftKey === !0
3714
+ });
3715
+ A(0), q(ce);
3716
+ },
3717
+ children: [
3718
+ /* @__PURE__ */ a("span", { className: "truncate", children: Le(b.column.columnDef.header, b.getContext()) }),
3719
+ tn(ie)
3720
+ ]
3721
+ }
3722
+ ) : /* @__PURE__ */ a("span", { className: "truncate", children: Le(b.column.columnDef.header, b.getContext()) }) }),
3723
+ Z && /* @__PURE__ */ R(Tr, { children: [
3724
+ /* @__PURE__ */ a(Mr, { asChild: !0, children: /* @__PURE__ */ a(
3725
+ ge,
3726
+ {
3727
+ type: "button",
3728
+ variant: "ghost",
3729
+ size: "icon",
3730
+ className: "size-7",
3731
+ "aria-label": "Column menu",
3732
+ children: /* @__PURE__ */ a(io, { className: "size-4" })
3733
+ }
3734
+ ) }),
3735
+ /* @__PURE__ */ R(Ht, { align: "end", className: "w-48", children: [
3736
+ /* @__PURE__ */ a(
3737
+ Fe,
3738
+ {
3739
+ onSelect: () => {
3740
+ const z = { name: L, dir: 1 };
3741
+ A(0), q(z);
3742
+ },
3743
+ children: H(v, "sortAsc", "Sort A→Z")
3744
+ }
3745
+ ),
3746
+ /* @__PURE__ */ a(
3747
+ Fe,
3748
+ {
3749
+ onSelect: () => {
3750
+ const z = { name: L, dir: -1 };
3751
+ A(0), q(z);
3752
+ },
3753
+ children: H(v, "sortDesc", "Sort Z→A")
3754
+ }
3755
+ ),
3756
+ /* @__PURE__ */ a(
3757
+ Fe,
3758
+ {
3759
+ onSelect: () => {
3760
+ A(0), q(null);
3761
+ },
3762
+ children: H(v, "unsort", "Unsort")
3763
+ }
3764
+ )
3765
+ ] })
3766
+ ] })
3767
+ ] })
3768
+ },
3769
+ b.id
3770
+ );
3771
+ }) }, l.id)),
3772
+ c && $e.getHeaderGroups().map((l) => /* @__PURE__ */ a(
3773
+ se,
3774
+ {
3775
+ className: "bg-background/95 supports-[backdrop-filter]:bg-background/60",
3776
+ style: { height: _ },
3777
+ children: l.headers.map((b) => {
3778
+ const y = b.column.columnDef?.meta?.__column, N = b.column.id, U = y?.filterable ?? !1, L = Xt(Q ? h : ee, N), ie = L?.value ?? "", Ye = (z) => {
3779
+ s && (z.preventDefault(), Ae({
3780
+ open: !0,
3781
+ x: z.clientX ?? 0,
3782
+ y: z.clientY ?? 0,
3783
+ columnId: N
3784
+ }));
3785
+ }, Pe = De[N];
3786
+ return /* @__PURE__ */ a(
3787
+ tt,
3788
+ {
3789
+ className: C(
3790
+ "sticky z-10 bg-background/95 py-2 backdrop-blur supports-[backdrop-filter]:bg-background/60"
3791
+ ),
3792
+ style: {
3793
+ top: O,
3794
+ width: Pe,
3795
+ minWidth: y?.minWidth,
3796
+ maxWidth: y?.maxWidth,
3797
+ height: _
3798
+ },
3799
+ onContextMenu: Ye,
3800
+ children: b.isPlaceholder || !U ? null : y?.filterEditor ? /* @__PURE__ */ a(
3801
+ y.filterEditor,
3802
+ {
3803
+ filterValue: {
3804
+ name: N,
3805
+ operator: L?.operator ?? "contains",
3806
+ type: L?.type ?? y.filterType ?? "string",
3807
+ value: L?.value ?? null,
3808
+ filterEditorProps: y.filterEditorProps
3809
+ },
3810
+ onChange: (z) => {
3811
+ const ce = {
3812
+ name: N,
3813
+ operator: L?.operator ?? "contains",
3814
+ type: L?.type ?? y.filterType ?? "string",
3815
+ value: z,
3816
+ active: !0
3817
+ };
3818
+ A(0), Q ? D(ye(h, ce)) : te(ye(ee, ce));
3819
+ }
3820
+ }
3821
+ ) : y?.filterType === "select" && Array.isArray(y.filterEditorProps?.options) ? /* @__PURE__ */ R(
3822
+ vt,
3823
+ {
3824
+ value: String(ie === "" || ie == null ? "__all__" : ie),
3825
+ onValueChange: (z) => {
3826
+ const ce = z === "__all__" ? "" : z, Ie = {
3827
+ name: N,
3828
+ operator: L?.operator ?? "eq",
3829
+ type: L?.type ?? "string",
3830
+ value: ce,
3831
+ active: !0
3832
+ };
3833
+ A(0), Q ? D(ye(h, Ie)) : te(ye(ee, Ie));
3834
+ },
3835
+ children: [
3836
+ /* @__PURE__ */ a(Qe, { className: "h-8 w-full", children: /* @__PURE__ */ a(kt, { placeholder: String(H(v, "contains", "All")) }) }),
3837
+ /* @__PURE__ */ R(et, { children: [
3838
+ /* @__PURE__ */ a(je, { value: "__all__", children: H(v, "clearAll", "All") }),
3839
+ (y.filterEditorProps?.options || []).map((z) => /* @__PURE__ */ a(je, { value: String(z.value), children: String(z.label ?? z.value) }, String(z.value)))
3840
+ ] })
3841
+ ]
3842
+ }
3843
+ ) : /* @__PURE__ */ a(
3844
+ Wt,
3845
+ {
3846
+ value: String(ie ?? ""),
3847
+ onChange: (z) => {
3848
+ const ce = z.target.value, Ie = {
3849
+ name: N,
3850
+ operator: L?.operator ?? "contains",
3851
+ type: L?.type ?? "string",
3852
+ value: ce,
3853
+ active: !0
3854
+ };
3855
+ A(0), Q ? D(ye(h, Ie)) : te(ye(ee, Ie));
3856
+ },
3857
+ className: "h-8 w-full",
3858
+ placeholder: String(H(v, "contains", "Filter…"))
3859
+ }
3860
+ )
3861
+ },
3862
+ `${b.id}-filter`
3863
+ );
3864
+ })
3865
+ },
3866
+ `${l.id}-filters`
3867
+ ))
3868
+ ] }),
3869
+ /* @__PURE__ */ a(Kt, { children: we && ze.length === 0 ? /* @__PURE__ */ a(se, { children: /* @__PURE__ */ a(he, { colSpan: G.length, className: "h-24 text-center", children: "Loading…" }) }) : ze.length === 0 ? /* @__PURE__ */ a(se, { children: /* @__PURE__ */ a(he, { colSpan: G.length, className: "h-24 text-center", children: H(v, "noRecords", "No records") }) }) : w ? /* @__PURE__ */ R(no, { children: [
3870
+ st > 0 && /* @__PURE__ */ a(se, { children: /* @__PURE__ */ a(he, { colSpan: G.length, style: { height: st } }) }),
3871
+ ve.map((l) => {
3872
+ const b = ze[l.index];
3873
+ return /* @__PURE__ */ a(se, { className: "hover:bg-muted/40", style: { height: l.size }, children: b.getVisibleCells().map((p) => {
3874
+ const y = p.column.id, N = p.column.columnDef?.meta?.__column, U = De[y], L = N?.textAlign;
3875
+ return /* @__PURE__ */ a(
3876
+ he,
3877
+ {
3878
+ className: C(
3879
+ ut,
3880
+ L === "right" || L === "end" ? "text-right" : "",
3881
+ N?.className
3882
+ ),
3883
+ style: {
3884
+ width: U,
3885
+ minWidth: N?.minWidth,
3886
+ maxWidth: N?.maxWidth,
3887
+ ...typeof N?.style == "object" && N?.style ? N.style : {}
3888
+ },
3889
+ children: Le(p.column.columnDef.cell, p.getContext())
3890
+ },
3891
+ p.id
3892
+ );
3893
+ }) }, b.id);
3894
+ }),
3895
+ lt > 0 && /* @__PURE__ */ a(se, { children: /* @__PURE__ */ a(he, { colSpan: G.length, style: { height: lt } }) })
3896
+ ] }) : ze.map((l) => /* @__PURE__ */ a(se, { className: "hover:bg-muted/40", children: l.getVisibleCells().map((b) => {
3897
+ const p = b.column.id, y = b.column.columnDef?.meta?.__column, N = De[p], U = y?.textAlign;
3898
+ return /* @__PURE__ */ a(
3899
+ he,
3900
+ {
3901
+ className: C(
3902
+ ut,
3903
+ U === "right" || U === "end" ? "text-right" : "",
3904
+ y?.className
3905
+ ),
3906
+ style: {
3907
+ width: N,
3908
+ minWidth: y?.minWidth,
3909
+ maxWidth: y?.maxWidth,
3910
+ ...typeof y?.style == "object" && y?.style ? y.style : {}
3911
+ },
3912
+ children: Le(b.column.columnDef.cell, b.getContext())
3913
+ },
3914
+ b.id
3915
+ );
3916
+ }) }, l.id)) })
3917
+ ] })
3918
+ }
3919
+ ),
3920
+ /* @__PURE__ */ R("div", { className: "flex items-center justify-between px-4", children: [
3921
+ /* @__PURE__ */ R("div", { className: "hidden flex-1 text-sm text-muted-foreground md:block", children: [
3922
+ H(v, "showingText", "Showing"),
3923
+ " ",
3924
+ /* @__PURE__ */ a("span", { className: "font-mono", children: Y === 0 ? 0 : j + 1 }),
3925
+ "–",
3926
+ /* @__PURE__ */ a("span", { className: "font-mono", children: Math.min(j + P, Y) }),
3927
+ " ",
3928
+ H(v, "ofText", "of"),
3929
+ " ",
3930
+ /* @__PURE__ */ a("span", { className: "font-mono", children: Y })
3931
+ ] }),
3932
+ /* @__PURE__ */ R("div", { className: "flex w-full items-center gap-4 md:w-auto", children: [
3933
+ /* @__PURE__ */ R("div", { className: "hidden items-center gap-2 md:flex", children: [
3934
+ /* @__PURE__ */ a(Gt, { htmlFor: "rows-per-page", className: "text-sm font-medium", children: H(v, "perPageText", "Rows") }),
3935
+ /* @__PURE__ */ R(
3936
+ vt,
3937
+ {
3938
+ value: `${P}`,
3939
+ onValueChange: (l) => {
3940
+ A(0), $(Number(l));
3941
+ },
3942
+ children: [
3943
+ /* @__PURE__ */ a(Qe, { className: "h-9 w-20", id: "rows-per-page", children: /* @__PURE__ */ a(kt, { placeholder: `${P}` }) }),
3944
+ /* @__PURE__ */ a(et, { side: "top", children: oe.map((l) => /* @__PURE__ */ a(je, { value: `${l}`, children: l }, l)) })
3945
+ ]
3946
+ }
3947
+ )
3948
+ ] }),
3949
+ /* @__PURE__ */ R("div", { className: "flex items-center justify-center text-sm font-medium", children: [
3950
+ H(v, "pageText", "Page"),
3951
+ " ",
3952
+ eo + 1,
3953
+ " ",
3954
+ H(v, "ofText", "of"),
3955
+ " ",
3956
+ it
3957
+ ] }),
3958
+ /* @__PURE__ */ R("div", { className: "ml-auto flex items-center gap-2 md:ml-0", children: [
3959
+ /* @__PURE__ */ R(
3960
+ ge,
3961
+ {
3962
+ type: "button",
3963
+ variant: "outline",
3964
+ className: "hidden h-8 w-8 p-0 md:flex",
3965
+ onClick: () => A(0),
3966
+ disabled: !ct,
3967
+ children: [
3968
+ /* @__PURE__ */ a("span", { className: "sr-only", children: "Go to first page" }),
3969
+ /* @__PURE__ */ a(co, { className: "size-4" })
3970
+ ]
3971
+ }
3972
+ ),
3973
+ /* @__PURE__ */ R(
3974
+ ge,
3975
+ {
3976
+ type: "button",
3977
+ variant: "outline",
3978
+ size: "icon",
3979
+ className: "size-8",
3980
+ onClick: () => A(Math.max(0, j - P)),
3981
+ disabled: !ct,
3982
+ children: [
3983
+ /* @__PURE__ */ a("span", { className: "sr-only", children: "Go to previous page" }),
3984
+ /* @__PURE__ */ a(uo, { className: "size-4" })
3985
+ ]
3986
+ }
3987
+ ),
3988
+ /* @__PURE__ */ R(
3989
+ ge,
3990
+ {
3991
+ type: "button",
3992
+ variant: "outline",
3993
+ size: "icon",
3994
+ className: "size-8",
3995
+ onClick: () => A(j + P),
3996
+ disabled: !dt,
3997
+ children: [
3998
+ /* @__PURE__ */ a("span", { className: "sr-only", children: "Go to next page" }),
3999
+ /* @__PURE__ */ a(mo, { className: "size-4" })
4000
+ ]
4001
+ }
4002
+ ),
4003
+ /* @__PURE__ */ R(
4004
+ ge,
4005
+ {
4006
+ type: "button",
4007
+ variant: "outline",
4008
+ size: "icon",
4009
+ className: "hidden size-8 md:flex",
4010
+ onClick: () => A(Math.max(0, (it - 1) * P)),
4011
+ disabled: !dt,
4012
+ children: [
4013
+ /* @__PURE__ */ a("span", { className: "sr-only", children: "Go to last page" }),
4014
+ /* @__PURE__ */ a(fo, { className: "size-4" })
4015
+ ]
4016
+ }
4017
+ )
4018
+ ] })
4019
+ ] })
4020
+ ] }),
4021
+ fe?.open && s && /* @__PURE__ */ R(
4022
+ "div",
4023
+ {
4024
+ className: "fixed z-50 w-56 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md",
4025
+ style: { left: fe.x, top: fe.y },
4026
+ onMouseDown: (l) => l.stopPropagation(),
4027
+ children: [
4028
+ /* @__PURE__ */ a("div", { className: "px-3 py-2 text-xs font-medium text-muted-foreground", children: "Filter" }),
4029
+ /* @__PURE__ */ a(
4030
+ "button",
4031
+ {
4032
+ type: "button",
4033
+ className: "w-full px-3 py-2 text-left text-sm hover:bg-accent",
4034
+ onClick: () => {
4035
+ const l = fe.columnId;
4036
+ A(0), D(Yr(h, l)), Ae(null);
4037
+ },
4038
+ children: H(v, "clear", "Clear")
4039
+ }
4040
+ ),
4041
+ /* @__PURE__ */ a("div", { className: "px-3 py-2 text-xs font-medium text-muted-foreground", children: "Operator" }),
4042
+ Kr.map((l) => /* @__PURE__ */ a(
4043
+ "button",
4044
+ {
4045
+ type: "button",
4046
+ className: "w-full px-3 py-2 text-left text-sm hover:bg-accent",
4047
+ onClick: () => {
4048
+ const b = fe.columnId;
4049
+ A(0), D(qr(h, b, l.value)), Ae(null);
4050
+ },
4051
+ children: l.label
4052
+ },
4053
+ l.value
4054
+ ))
4055
+ ]
4056
+ }
4057
+ )
4058
+ ] });
4059
+ }
4060
+ export {
4061
+ cn as ReactDataGrid,
4062
+ cn as default,
4063
+ ln as plugins
4064
+ };