@startsoft/lumina 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,3379 @@
1
+ import { jsx as Le } from "react/jsx-runtime";
2
+ import * as Oe from "react";
3
+ import { createContext as _e, useState as le, useEffect as ye, useContext as je } from "react";
4
+ import er from "axios";
5
+ import { useQuery as D, useQueryClient as O, useMutation as P } from "@tanstack/react-query";
6
+ const y = er.create({
7
+ baseURL: "http://localhost:8000/api",
8
+ withCredentials: !0,
9
+ // Required for Sanctum cookie-based auth
10
+ headers: {
11
+ "X-Requested-With": "XMLHttpRequest",
12
+ Accept: "application/json",
13
+ "Content-Type": "application/json"
14
+ }
15
+ });
16
+ y.interceptors.request.use(
17
+ (e) => {
18
+ const t = localStorage.getItem("token");
19
+ return t && (e.headers.Authorization = `Bearer ${t}`), e;
20
+ },
21
+ (e) => Promise.reject(e)
22
+ );
23
+ y.interceptors.response.use(
24
+ (e) => e,
25
+ (e) => {
26
+ var t;
27
+ return !e.response && e.message && e.message.includes("CORS") ? (console.error("CORS Error: Make sure the Laravel backend CORS config includes your frontend URL"), Promise.reject(new Error("CORS Error: Backend is not allowing requests from this origin. Please check Laravel CORS configuration."))) : (((t = e.response) == null ? void 0 : t.status) === 401 && (localStorage.removeItem("token"), window.location.href = "/"), Promise.reject(e));
28
+ }
29
+ );
30
+ const Fe = _e(null);
31
+ function ot({ children: e }) {
32
+ const [t, r] = le(() => localStorage.getItem("token")), [o, s] = le(!!localStorage.getItem("token"));
33
+ ye(() => {
34
+ t ? (localStorage.setItem("token", t), s(!0)) : (localStorage.removeItem("token"), s(!1));
35
+ }, [t]);
36
+ const c = {
37
+ token: t,
38
+ isAuthenticated: o,
39
+ login: async (g, h) => {
40
+ var p, z;
41
+ try {
42
+ const C = await y.post("/auth/login", { email: g, password: h }), { token: T, user: b, organization: v, organization_slug: E, organizations: $ } = C.data || {};
43
+ r(T), b && localStorage.setItem("user", JSON.stringify(b));
44
+ let x = null;
45
+ return E ? x = E : v && v.slug ? x = v.slug : $ && $.length > 0 ? x = $[0].slug : b && (b.organization_slug ? x = b.organization_slug : b.organizations && b.organizations.length > 0 ? x = b.organizations[0].slug : b.organization && b.organization.slug && (x = b.organization.slug)), x && (localStorage.setItem("last_organization", x), localStorage.setItem("organization_slug", x)), {
46
+ success: !0,
47
+ user: b || null,
48
+ organization: x ? { slug: x } : null,
49
+ organization_slug: x
50
+ };
51
+ } catch (C) {
52
+ return {
53
+ success: !1,
54
+ error: ((z = (p = C.response) == null ? void 0 : p.data) == null ? void 0 : z.message) || "Login failed"
55
+ };
56
+ }
57
+ },
58
+ logout: async () => {
59
+ try {
60
+ await y.post("/auth/logout");
61
+ } catch (g) {
62
+ console.error("Logout error:", g);
63
+ } finally {
64
+ r(null), localStorage.removeItem("user"), localStorage.removeItem("last_organization"), localStorage.removeItem("organization_slug");
65
+ }
66
+ },
67
+ setOrganization: (g) => {
68
+ g ? (localStorage.setItem("organization_slug", g), localStorage.setItem("last_organization", g)) : (localStorage.removeItem("organization_slug"), localStorage.removeItem("last_organization")), window.dispatchEvent(new StorageEvent("storage", {
69
+ key: "organization_slug",
70
+ newValue: g
71
+ }));
72
+ }
73
+ };
74
+ return /* @__PURE__ */ Le(Fe.Provider, { value: c, children: e });
75
+ }
76
+ function nt() {
77
+ const e = je(Fe);
78
+ if (!e)
79
+ throw new Error("useAuth must be used within an AuthProvider");
80
+ return e;
81
+ }
82
+ function S() {
83
+ const [e, t] = le(() => localStorage.getItem("organization_slug"));
84
+ return ye(() => {
85
+ const r = (n) => {
86
+ n.key === "organization_slug" && t(n.newValue);
87
+ }, o = () => {
88
+ const n = localStorage.getItem("organization_slug");
89
+ n !== e && t(n);
90
+ };
91
+ window.addEventListener("storage", r);
92
+ const s = setInterval(o, 100);
93
+ return () => {
94
+ window.removeEventListener("storage", r), clearInterval(s);
95
+ };
96
+ }, [e]), e;
97
+ }
98
+ function rr(e = null) {
99
+ const t = S(), r = e || t;
100
+ if (!r)
101
+ return {
102
+ data: null,
103
+ isLoading: !1,
104
+ error: null,
105
+ isError: !1,
106
+ refetch: () => Promise.resolve({ data: null })
107
+ };
108
+ const o = `/${r}/organizations?filter[slug]=${encodeURIComponent(r)}&include=users`;
109
+ return D({
110
+ queryKey: ["owner", r],
111
+ queryFn: async () => {
112
+ const n = (await y.get(o)).data;
113
+ return Array.isArray(n) ? n.find((u) => u.slug === r) || (n.length > 0 ? n[0] : null) : n;
114
+ },
115
+ enabled: !!r
116
+ });
117
+ }
118
+ function st() {
119
+ S();
120
+ const { data: e, isLoading: t, error: r } = rr();
121
+ return {
122
+ data: !!e,
123
+ exists: !!e,
124
+ isLoading: t,
125
+ error: r,
126
+ organization: e
127
+ };
128
+ }
129
+ function we(e) {
130
+ const t = e.headers["x-current-page"], r = e.headers["x-last-page"], o = e.headers["x-per-page"], s = e.headers["x-total"];
131
+ return !t && !r && !o && !s ? null : {
132
+ currentPage: parseInt(t, 10) || 1,
133
+ lastPage: parseInt(r, 10) || 1,
134
+ perPage: parseInt(o, 10) || 15,
135
+ total: parseInt(s, 10) || 0
136
+ };
137
+ }
138
+ function tr(e, t, r = {}) {
139
+ if (!t)
140
+ throw new Error("Organization slug is required");
141
+ const o = String(t).trim();
142
+ if (!o)
143
+ throw new Error("Organization slug is required and must be a non-empty string");
144
+ let s = `/${o}/${e}`;
145
+ const n = new URLSearchParams();
146
+ r.filters && Object.entries(r.filters).forEach(([u, c]) => {
147
+ n.append(`filter[${u}]`, c);
148
+ }), r.includes && r.includes.length > 0 && n.append("include", r.includes.join(",")), r.sort && n.append("sort", r.sort), r.fields && r.fields.length > 0 && n.append("fields", r.fields.join(",")), r.search && n.append("search", r.search), r.page && n.append("page", r.page), (r.perPage || r.per_page) && n.append("per_page", r.perPage || r.per_page);
149
+ const a = n.toString();
150
+ return a ? `${s}?${a}` : s;
151
+ }
152
+ function or(e, t = {}) {
153
+ const r = S();
154
+ if (!r)
155
+ return {
156
+ data: null,
157
+ pagination: null,
158
+ isLoading: !1,
159
+ error: new Error("Organization slug is required"),
160
+ isError: !0,
161
+ refetch: () => Promise.resolve({ data: null })
162
+ };
163
+ const o = tr(e, r, t);
164
+ return D({
165
+ queryKey: ["modelIndex", e, r, t],
166
+ queryFn: async () => {
167
+ const s = await y.get(o), n = we(s);
168
+ return {
169
+ data: s.data,
170
+ pagination: n
171
+ };
172
+ },
173
+ enabled: !!r
174
+ });
175
+ }
176
+ function at(e, t, r = {}) {
177
+ const o = S();
178
+ return console.log("useModelShow called with:", { model: e, id: t, organization: o, options: r }), o ? t ? D({
179
+ queryKey: ["modelShow", e, t, o, r],
180
+ queryFn: async () => {
181
+ var g, h;
182
+ const s = localStorage.getItem("organization_slug");
183
+ if (console.log("useModelShow queryFn - currentOrg from localStorage:", s), !s || !s.trim()) {
184
+ const p = new Error("Organization slug is required. Please ensure you are logged in and have selected an organization.");
185
+ throw console.error("useModelShow queryFn error:", p.message), p;
186
+ }
187
+ const n = s.trim(), a = new URLSearchParams();
188
+ r.includes && r.includes.length > 0 && a.append("include", Array.isArray(r.includes) ? r.includes.join(",") : r.includes), r.filters && Object.entries(r.filters).forEach(([p, z]) => {
189
+ a.append(`filter[${p}]`, z);
190
+ }), r.sort && a.append("sort", r.sort), r.fields && r.fields.length > 0 && a.append("fields", Array.isArray(r.fields) ? r.fields.join(",") : r.fields);
191
+ const u = a.toString(), c = u ? `/${n}/${e}/${t}?${u}` : `/${n}/${e}/${t}`;
192
+ console.log("useModelShow making API request:", {
193
+ orgSlug: n,
194
+ model: e,
195
+ id: t,
196
+ finalUrl: c,
197
+ baseURL: y.defaults.baseURL,
198
+ fullURL: `${y.defaults.baseURL}${c}`
199
+ });
200
+ try {
201
+ const p = await y.get(c);
202
+ return console.log("useModelShow API response:", p), p.data;
203
+ } catch (p) {
204
+ throw console.error("useModelShow API error:", {
205
+ message: p.message,
206
+ response: (g = p.response) == null ? void 0 : g.data,
207
+ status: (h = p.response) == null ? void 0 : h.status,
208
+ url: c,
209
+ fullURL: `${y.defaults.baseURL}${c}`
210
+ }), p;
211
+ }
212
+ },
213
+ enabled: !!o && !!t && !!String(o).trim()
214
+ }) : (console.warn("useModelShow: ID is missing"), {
215
+ data: null,
216
+ isLoading: !1,
217
+ error: new Error("ID is required for useModelShow"),
218
+ isError: !0,
219
+ refetch: () => Promise.resolve({ data: null })
220
+ }) : (console.warn("useModelShow: Organization is missing"), {
221
+ data: null,
222
+ isLoading: !1,
223
+ error: new Error("Organization slug is required"),
224
+ isError: !0,
225
+ refetch: () => Promise.resolve({ data: null })
226
+ });
227
+ }
228
+ function it(e) {
229
+ const t = S(), r = O();
230
+ if (!t)
231
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
232
+ return P({
233
+ mutationFn: ({ id: o, data: s }) => {
234
+ const n = `/${t}/${e}/${o}`;
235
+ return y.put(n, s).then((a) => a.data);
236
+ },
237
+ onSuccess: () => {
238
+ r.invalidateQueries({ queryKey: ["modelIndex", e] }), r.invalidateQueries({ queryKey: ["modelShow", e] });
239
+ }
240
+ });
241
+ }
242
+ function lt(e) {
243
+ const t = S(), r = O();
244
+ if (!t)
245
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
246
+ return P({
247
+ mutationFn: (o) => {
248
+ const s = `/${t}/${e}/${o}`;
249
+ return y.delete(s).then((n) => n.data);
250
+ },
251
+ onSuccess: () => {
252
+ r.invalidateQueries({ queryKey: ["modelIndex", e] }), r.invalidateQueries({ queryKey: ["modelShow", e] });
253
+ }
254
+ });
255
+ }
256
+ function ct(e) {
257
+ const t = S(), r = O();
258
+ if (!t)
259
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
260
+ return P({
261
+ mutationFn: (o) => {
262
+ const s = `/${t}/${e}`;
263
+ return y.post(s, o).then((n) => n.data);
264
+ },
265
+ onSuccess: () => {
266
+ r.invalidateQueries({ queryKey: ["modelIndex", e] }), r.invalidateQueries({ queryKey: ["modelShow", e] });
267
+ }
268
+ });
269
+ }
270
+ function dt(e, t = {}) {
271
+ const r = S();
272
+ return r ? D({
273
+ queryKey: ["modelTrashed", e, r, t],
274
+ queryFn: async () => {
275
+ let s = `/${String(r).trim()}/${e}/trashed`;
276
+ const n = new URLSearchParams();
277
+ t.filters && Object.entries(t.filters).forEach(([h, p]) => {
278
+ n.append(`filter[${h}]`, p);
279
+ }), t.includes && t.includes.length > 0 && n.append("include", t.includes.join(",")), t.sort && n.append("sort", t.sort), t.fields && t.fields.length > 0 && n.append("fields", t.fields.join(",")), t.search && n.append("search", t.search), t.page && n.append("page", t.page), (t.perPage || t.per_page) && n.append("per_page", t.perPage || t.per_page);
280
+ const a = n.toString(), u = a ? `${s}?${a}` : s, c = await y.get(u), g = we(c);
281
+ return {
282
+ data: c.data,
283
+ pagination: g
284
+ };
285
+ },
286
+ enabled: !!r
287
+ }) : {
288
+ data: null,
289
+ pagination: null,
290
+ isLoading: !1,
291
+ error: new Error("Organization slug is required"),
292
+ isError: !0,
293
+ refetch: () => Promise.resolve({ data: null })
294
+ };
295
+ }
296
+ function ut(e) {
297
+ const t = S(), r = O();
298
+ if (!t)
299
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
300
+ return P({
301
+ mutationFn: (o) => {
302
+ const s = `/${t}/${e}/${o}/restore`;
303
+ return y.post(s).then((n) => n.data);
304
+ },
305
+ onSuccess: () => {
306
+ r.invalidateQueries({ queryKey: ["modelIndex", e] }), r.invalidateQueries({ queryKey: ["modelTrashed", e] }), r.invalidateQueries({ queryKey: ["modelShow", e] });
307
+ }
308
+ });
309
+ }
310
+ function gt(e) {
311
+ const t = S(), r = O();
312
+ if (!t)
313
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
314
+ return P({
315
+ mutationFn: (o) => {
316
+ const s = `/${t}/${e}/${o}/force-delete`;
317
+ return y.delete(s).then((n) => n.data);
318
+ },
319
+ onSuccess: () => {
320
+ r.invalidateQueries({ queryKey: ["modelTrashed", e] });
321
+ }
322
+ });
323
+ }
324
+ function mt() {
325
+ const e = S(), t = O();
326
+ if (!e)
327
+ throw new Error("Organization slug is required. All routes must include organization in the URL (e.g., /org-slug/dashboard)");
328
+ return P({
329
+ mutationFn: ({ operations: r }) => {
330
+ const o = `/${e}/nested-operations`;
331
+ return y.post(o, { operations: r }).then((s) => s.data);
332
+ },
333
+ onSuccess: (r, o) => {
334
+ new Set(
335
+ o.operations.map((n) => n.model)
336
+ ).forEach((n) => {
337
+ t.invalidateQueries({ queryKey: ["modelIndex", n] }), t.invalidateQueries({ queryKey: ["modelShow", n] });
338
+ });
339
+ }
340
+ });
341
+ }
342
+ function ft(e, t, r = {}) {
343
+ const o = S();
344
+ return o ? t ? D({
345
+ queryKey: ["modelAudit", e, t, o, r],
346
+ queryFn: async () => {
347
+ let n = `/${String(o).trim()}/${e}/${t}/audit`;
348
+ const a = new URLSearchParams();
349
+ r.page && a.append("page", r.page), (r.perPage || r.per_page) && a.append("per_page", r.perPage || r.per_page);
350
+ const u = a.toString(), c = u ? `${n}?${u}` : n, g = await y.get(c), h = we(g);
351
+ return {
352
+ data: g.data,
353
+ pagination: h
354
+ };
355
+ },
356
+ enabled: !!o && !!t
357
+ }) : {
358
+ data: null,
359
+ pagination: null,
360
+ isLoading: !1,
361
+ error: new Error("ID is required for useModelAudit"),
362
+ isError: !0,
363
+ refetch: () => Promise.resolve({ data: null })
364
+ } : {
365
+ data: null,
366
+ pagination: null,
367
+ isLoading: !1,
368
+ error: new Error("Organization slug is required"),
369
+ isError: !0,
370
+ refetch: () => Promise.resolve({ data: null })
371
+ };
372
+ }
373
+ function pt(e = "all") {
374
+ const t = S();
375
+ if (!t)
376
+ return {
377
+ data: null,
378
+ isLoading: !1,
379
+ error: new Error("Organization slug is required"),
380
+ isError: !0,
381
+ refetch: () => Promise.resolve({ data: null })
382
+ };
383
+ const r = `/${t}/invitations${e !== "all" ? `?status=${e}` : ""}`;
384
+ return D({
385
+ queryKey: ["invitations", t, e],
386
+ queryFn: () => y.get(r).then((o) => o.data),
387
+ enabled: !!t
388
+ });
389
+ }
390
+ function ht() {
391
+ const e = S(), t = O();
392
+ if (!e)
393
+ throw new Error("Organization slug is required");
394
+ return P({
395
+ mutationFn: ({ email: r, role_id: o }) => {
396
+ const s = `/${e}/invitations`;
397
+ return y.post(s, { email: r, role_id: o }).then((n) => n.data);
398
+ },
399
+ onSuccess: () => {
400
+ t.invalidateQueries({ queryKey: ["invitations", e] });
401
+ }
402
+ });
403
+ }
404
+ function bt() {
405
+ const e = S(), t = O();
406
+ if (!e)
407
+ throw new Error("Organization slug is required");
408
+ return P({
409
+ mutationFn: (r) => {
410
+ const o = `/${e}/invitations/${r}/resend`;
411
+ return y.post(o).then((s) => s.data);
412
+ },
413
+ onSuccess: () => {
414
+ t.invalidateQueries({ queryKey: ["invitations", e] });
415
+ }
416
+ });
417
+ }
418
+ function yt() {
419
+ const e = S(), t = O();
420
+ if (!e)
421
+ throw new Error("Organization slug is required");
422
+ return P({
423
+ mutationFn: (r) => {
424
+ const o = `/${e}/invitations/${r}`;
425
+ return y.delete(o).then((s) => s.data);
426
+ },
427
+ onSuccess: () => {
428
+ t.invalidateQueries({ queryKey: ["invitations", e] });
429
+ }
430
+ });
431
+ }
432
+ function wt() {
433
+ const e = O();
434
+ return P({
435
+ mutationFn: (t) => y.post("/invitations/accept", { token: t }).then((o) => o.data),
436
+ onSuccess: () => {
437
+ e.invalidateQueries({ queryKey: ["modelIndex", "users"] });
438
+ }
439
+ });
440
+ }
441
+ const nr = 1, sr = 1e6;
442
+ let me = 0;
443
+ function ar() {
444
+ return me = (me + 1) % Number.MAX_SAFE_INTEGER, me.toString();
445
+ }
446
+ const fe = /* @__PURE__ */ new Map(), Pe = (e) => {
447
+ if (fe.has(e))
448
+ return;
449
+ const t = setTimeout(() => {
450
+ fe.delete(e), Y({
451
+ type: "REMOVE_TOAST",
452
+ toastId: e
453
+ });
454
+ }, sr);
455
+ fe.set(e, t);
456
+ }, ir = (e, t) => {
457
+ switch (t.type) {
458
+ case "ADD_TOAST":
459
+ return {
460
+ ...e,
461
+ toasts: [t.toast, ...e.toasts].slice(0, nr)
462
+ };
463
+ case "UPDATE_TOAST":
464
+ return {
465
+ ...e,
466
+ toasts: e.toasts.map((r) => r.id === t.toast.id ? { ...r, ...t.toast } : r)
467
+ };
468
+ case "DISMISS_TOAST": {
469
+ const { toastId: r } = t;
470
+ return r ? Pe(r) : e.toasts.forEach((o) => {
471
+ Pe(o.id);
472
+ }), {
473
+ ...e,
474
+ toasts: e.toasts.map((o) => o.id === r || r === void 0 ? {
475
+ ...o,
476
+ open: !1
477
+ } : o)
478
+ };
479
+ }
480
+ case "REMOVE_TOAST":
481
+ return t.toastId === void 0 ? {
482
+ ...e,
483
+ toasts: []
484
+ } : {
485
+ ...e,
486
+ toasts: e.toasts.filter((r) => r.id !== t.toastId)
487
+ };
488
+ }
489
+ }, ae = [];
490
+ let ie = { toasts: [] };
491
+ function Y(e) {
492
+ ie = ir(ie, e), ae.forEach((t) => {
493
+ t(ie);
494
+ });
495
+ }
496
+ function lr({
497
+ ...e
498
+ }) {
499
+ const t = ar(), r = (s) => Y({
500
+ type: "UPDATE_TOAST",
501
+ toast: { ...s, id: t }
502
+ }), o = () => Y({ type: "DISMISS_TOAST", toastId: t });
503
+ return Y({
504
+ type: "ADD_TOAST",
505
+ toast: {
506
+ ...e,
507
+ id: t,
508
+ open: !0,
509
+ onOpenChange: (s) => {
510
+ s || o();
511
+ }
512
+ }
513
+ }), {
514
+ id: t,
515
+ dismiss: o,
516
+ update: r
517
+ };
518
+ }
519
+ function xt() {
520
+ const [e, t] = Oe.useState(ie);
521
+ return Oe.useEffect(() => (ae.push(t), () => {
522
+ const r = ae.indexOf(t);
523
+ r > -1 && ae.splice(r, 1);
524
+ }), [e]), {
525
+ ...e,
526
+ toast: lr,
527
+ dismiss: (r) => Y({ type: "DISMISS_TOAST", toastId: r })
528
+ };
529
+ }
530
+ function kt(e, t = {}) {
531
+ return or(e, t);
532
+ }
533
+ function Ue(e) {
534
+ var t, r, o = "";
535
+ if (typeof e == "string" || typeof e == "number") o += e;
536
+ else if (typeof e == "object") if (Array.isArray(e)) {
537
+ var s = e.length;
538
+ for (t = 0; t < s; t++) e[t] && (r = Ue(e[t])) && (o && (o += " "), o += r);
539
+ } else for (r in e) e[r] && (o && (o += " "), o += r);
540
+ return o;
541
+ }
542
+ function cr() {
543
+ for (var e, t, r = 0, o = "", s = arguments.length; r < s; r++) (e = arguments[r]) && (t = Ue(e)) && (o && (o += " "), o += t);
544
+ return o;
545
+ }
546
+ const dr = (e, t) => {
547
+ const r = new Array(e.length + t.length);
548
+ for (let o = 0; o < e.length; o++)
549
+ r[o] = e[o];
550
+ for (let o = 0; o < t.length; o++)
551
+ r[e.length + o] = t[o];
552
+ return r;
553
+ }, ur = (e, t) => ({
554
+ classGroupId: e,
555
+ validator: t
556
+ }), Ge = (e = /* @__PURE__ */ new Map(), t = null, r) => ({
557
+ nextPart: e,
558
+ validators: t,
559
+ classGroupId: r
560
+ }), ce = "-", Te = [], gr = "arbitrary..", mr = (e) => {
561
+ const t = pr(e), {
562
+ conflictingClassGroups: r,
563
+ conflictingClassGroupModifiers: o
564
+ } = e;
565
+ return {
566
+ getClassGroupId: (a) => {
567
+ if (a.startsWith("[") && a.endsWith("]"))
568
+ return fr(a);
569
+ const u = a.split(ce), c = u[0] === "" && u.length > 1 ? 1 : 0;
570
+ return Qe(u, c, t);
571
+ },
572
+ getConflictingClassGroupIds: (a, u) => {
573
+ if (u) {
574
+ const c = o[a], g = r[a];
575
+ return c ? g ? dr(g, c) : c : g || Te;
576
+ }
577
+ return r[a] || Te;
578
+ }
579
+ };
580
+ }, Qe = (e, t, r) => {
581
+ if (e.length - t === 0)
582
+ return r.classGroupId;
583
+ const s = e[t], n = r.nextPart.get(s);
584
+ if (n) {
585
+ const g = Qe(e, t + 1, n);
586
+ if (g) return g;
587
+ }
588
+ const a = r.validators;
589
+ if (a === null)
590
+ return;
591
+ const u = t === 0 ? e.join(ce) : e.slice(t).join(ce), c = a.length;
592
+ for (let g = 0; g < c; g++) {
593
+ const h = a[g];
594
+ if (h.validator(u))
595
+ return h.classGroupId;
596
+ }
597
+ }, fr = (e) => e.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
598
+ const t = e.slice(1, -1), r = t.indexOf(":"), o = t.slice(0, r);
599
+ return o ? gr + o : void 0;
600
+ })(), pr = (e) => {
601
+ const {
602
+ theme: t,
603
+ classGroups: r
604
+ } = e;
605
+ return hr(r, t);
606
+ }, hr = (e, t) => {
607
+ const r = Ge();
608
+ for (const o in e) {
609
+ const s = e[o];
610
+ xe(s, r, o, t);
611
+ }
612
+ return r;
613
+ }, xe = (e, t, r, o) => {
614
+ const s = e.length;
615
+ for (let n = 0; n < s; n++) {
616
+ const a = e[n];
617
+ br(a, t, r, o);
618
+ }
619
+ }, br = (e, t, r, o) => {
620
+ if (typeof e == "string") {
621
+ yr(e, t, r);
622
+ return;
623
+ }
624
+ if (typeof e == "function") {
625
+ wr(e, t, r, o);
626
+ return;
627
+ }
628
+ xr(e, t, r, o);
629
+ }, yr = (e, t, r) => {
630
+ const o = e === "" ? t : Ke(t, e);
631
+ o.classGroupId = r;
632
+ }, wr = (e, t, r, o) => {
633
+ if (kr(e)) {
634
+ xe(e(o), t, r, o);
635
+ return;
636
+ }
637
+ t.validators === null && (t.validators = []), t.validators.push(ur(r, e));
638
+ }, xr = (e, t, r, o) => {
639
+ const s = Object.entries(e), n = s.length;
640
+ for (let a = 0; a < n; a++) {
641
+ const [u, c] = s[a];
642
+ xe(c, Ke(t, u), r, o);
643
+ }
644
+ }, Ke = (e, t) => {
645
+ let r = e;
646
+ const o = t.split(ce), s = o.length;
647
+ for (let n = 0; n < s; n++) {
648
+ const a = o[n];
649
+ let u = r.nextPart.get(a);
650
+ u || (u = Ge(), r.nextPart.set(a, u)), r = u;
651
+ }
652
+ return r;
653
+ }, kr = (e) => "isThemeGetter" in e && e.isThemeGetter === !0, vr = (e) => {
654
+ if (e < 1)
655
+ return {
656
+ get: () => {
657
+ },
658
+ set: () => {
659
+ }
660
+ };
661
+ let t = 0, r = /* @__PURE__ */ Object.create(null), o = /* @__PURE__ */ Object.create(null);
662
+ const s = (n, a) => {
663
+ r[n] = a, t++, t > e && (t = 0, o = r, r = /* @__PURE__ */ Object.create(null));
664
+ };
665
+ return {
666
+ get(n) {
667
+ let a = r[n];
668
+ if (a !== void 0)
669
+ return a;
670
+ if ((a = o[n]) !== void 0)
671
+ return s(n, a), a;
672
+ },
673
+ set(n, a) {
674
+ n in r ? r[n] = a : s(n, a);
675
+ }
676
+ };
677
+ }, be = "!", Re = ":", Sr = [], qe = (e, t, r, o, s) => ({
678
+ modifiers: e,
679
+ hasImportantModifier: t,
680
+ baseClassName: r,
681
+ maybePostfixModifierPosition: o,
682
+ isExternal: s
683
+ }), zr = (e) => {
684
+ const {
685
+ prefix: t,
686
+ experimentalParseClassName: r
687
+ } = e;
688
+ let o = (s) => {
689
+ const n = [];
690
+ let a = 0, u = 0, c = 0, g;
691
+ const h = s.length;
692
+ for (let b = 0; b < h; b++) {
693
+ const v = s[b];
694
+ if (a === 0 && u === 0) {
695
+ if (v === Re) {
696
+ n.push(s.slice(c, b)), c = b + 1;
697
+ continue;
698
+ }
699
+ if (v === "/") {
700
+ g = b;
701
+ continue;
702
+ }
703
+ }
704
+ v === "[" ? a++ : v === "]" ? a-- : v === "(" ? u++ : v === ")" && u--;
705
+ }
706
+ const p = n.length === 0 ? s : s.slice(c);
707
+ let z = p, C = !1;
708
+ p.endsWith(be) ? (z = p.slice(0, -1), C = !0) : (
709
+ /**
710
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
711
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
712
+ */
713
+ p.startsWith(be) && (z = p.slice(1), C = !0)
714
+ );
715
+ const T = g && g > c ? g - c : void 0;
716
+ return qe(n, C, z, T);
717
+ };
718
+ if (t) {
719
+ const s = t + Re, n = o;
720
+ o = (a) => a.startsWith(s) ? n(a.slice(s.length)) : qe(Sr, !1, a, void 0, !0);
721
+ }
722
+ if (r) {
723
+ const s = o;
724
+ o = (n) => r({
725
+ className: n,
726
+ parseClassName: s
727
+ });
728
+ }
729
+ return o;
730
+ }, Ir = (e) => {
731
+ const t = /* @__PURE__ */ new Map();
732
+ return e.orderSensitiveModifiers.forEach((r, o) => {
733
+ t.set(r, 1e6 + o);
734
+ }), (r) => {
735
+ const o = [];
736
+ let s = [];
737
+ for (let n = 0; n < r.length; n++) {
738
+ const a = r[n], u = a[0] === "[", c = t.has(a);
739
+ u || c ? (s.length > 0 && (s.sort(), o.push(...s), s = []), o.push(a)) : s.push(a);
740
+ }
741
+ return s.length > 0 && (s.sort(), o.push(...s)), o;
742
+ };
743
+ }, Ar = (e) => ({
744
+ cache: vr(e.cacheSize),
745
+ parseClassName: zr(e),
746
+ sortModifiers: Ir(e),
747
+ ...mr(e)
748
+ }), Cr = /\s+/, Er = (e, t) => {
749
+ const {
750
+ parseClassName: r,
751
+ getClassGroupId: o,
752
+ getConflictingClassGroupIds: s,
753
+ sortModifiers: n
754
+ } = t, a = [], u = e.trim().split(Cr);
755
+ let c = "";
756
+ for (let g = u.length - 1; g >= 0; g -= 1) {
757
+ const h = u[g], {
758
+ isExternal: p,
759
+ modifiers: z,
760
+ hasImportantModifier: C,
761
+ baseClassName: T,
762
+ maybePostfixModifierPosition: b
763
+ } = r(h);
764
+ if (p) {
765
+ c = h + (c.length > 0 ? " " + c : c);
766
+ continue;
767
+ }
768
+ let v = !!b, E = o(v ? T.substring(0, b) : T);
769
+ if (!E) {
770
+ if (!v) {
771
+ c = h + (c.length > 0 ? " " + c : c);
772
+ continue;
773
+ }
774
+ if (E = o(T), !E) {
775
+ c = h + (c.length > 0 ? " " + c : c);
776
+ continue;
777
+ }
778
+ v = !1;
779
+ }
780
+ const $ = z.length === 0 ? "" : z.length === 1 ? z[0] : n(z).join(":"), x = C ? $ + be : $, U = x + E;
781
+ if (a.indexOf(U) > -1)
782
+ continue;
783
+ a.push(U);
784
+ const G = s(E, v);
785
+ for (let _ = 0; _ < G.length; ++_) {
786
+ const W = G[_];
787
+ a.push(x + W);
788
+ }
789
+ c = h + (c.length > 0 ? " " + c : c);
790
+ }
791
+ return c;
792
+ }, Or = (...e) => {
793
+ let t = 0, r, o, s = "";
794
+ for (; t < e.length; )
795
+ (r = e[t++]) && (o = Ne(r)) && (s && (s += " "), s += o);
796
+ return s;
797
+ }, Ne = (e) => {
798
+ if (typeof e == "string")
799
+ return e;
800
+ let t, r = "";
801
+ for (let o = 0; o < e.length; o++)
802
+ e[o] && (t = Ne(e[o])) && (r && (r += " "), r += t);
803
+ return r;
804
+ }, Pr = (e, ...t) => {
805
+ let r, o, s, n;
806
+ const a = (c) => {
807
+ const g = t.reduce((h, p) => p(h), e());
808
+ return r = Ar(g), o = r.cache.get, s = r.cache.set, n = u, u(c);
809
+ }, u = (c) => {
810
+ const g = o(c);
811
+ if (g)
812
+ return g;
813
+ const h = Er(c, r);
814
+ return s(c, h), h;
815
+ };
816
+ return n = a, (...c) => n(Or(...c));
817
+ }, Tr = [], w = (e) => {
818
+ const t = (r) => r[e] || Tr;
819
+ return t.isThemeGetter = !0, t;
820
+ }, De = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, Ve = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Rr = /^\d+\/\d+$/, qr = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Mr = /\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$/, $r = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, Lr = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, _r = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, K = (e) => Rr.test(e), f = (e) => !!e && !Number.isNaN(Number(e)), L = (e) => !!e && Number.isInteger(Number(e)), pe = (e) => e.endsWith("%") && f(e.slice(0, -1)), M = (e) => qr.test(e), jr = () => !0, Fr = (e) => (
821
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
822
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
823
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
824
+ Mr.test(e) && !$r.test(e)
825
+ ), Be = () => !1, Ur = (e) => Lr.test(e), Gr = (e) => _r.test(e), Qr = (e) => !i(e) && !l(e), Kr = (e) => V(e, Ye, Be), i = (e) => De.test(e), F = (e) => V(e, He, Fr), he = (e) => V(e, Wr, f), Me = (e) => V(e, We, Be), Nr = (e) => V(e, Xe, Gr), te = (e) => V(e, Je, Ur), l = (e) => Ve.test(e), X = (e) => B(e, He), Dr = (e) => B(e, Xr), $e = (e) => B(e, We), Vr = (e) => B(e, Ye), Br = (e) => B(e, Xe), oe = (e) => B(e, Je, !0), V = (e, t, r) => {
826
+ const o = De.exec(e);
827
+ return o ? o[1] ? t(o[1]) : r(o[2]) : !1;
828
+ }, B = (e, t, r = !1) => {
829
+ const o = Ve.exec(e);
830
+ return o ? o[1] ? t(o[1]) : r : !1;
831
+ }, We = (e) => e === "position" || e === "percentage", Xe = (e) => e === "image" || e === "url", Ye = (e) => e === "length" || e === "size" || e === "bg-size", He = (e) => e === "length", Wr = (e) => e === "number", Xr = (e) => e === "family-name", Je = (e) => e === "shadow", Yr = () => {
832
+ const e = w("color"), t = w("font"), r = w("text"), o = w("font-weight"), s = w("tracking"), n = w("leading"), a = w("breakpoint"), u = w("container"), c = w("spacing"), g = w("radius"), h = w("shadow"), p = w("inset-shadow"), z = w("text-shadow"), C = w("drop-shadow"), T = w("blur"), b = w("perspective"), v = w("aspect"), E = w("ease"), $ = w("animate"), x = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], U = () => [
833
+ "center",
834
+ "top",
835
+ "bottom",
836
+ "left",
837
+ "right",
838
+ "top-left",
839
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
840
+ "left-top",
841
+ "top-right",
842
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
843
+ "right-top",
844
+ "bottom-right",
845
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
846
+ "right-bottom",
847
+ "bottom-left",
848
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
849
+ "left-bottom"
850
+ ], G = () => [...U(), l, i], _ = () => ["auto", "hidden", "clip", "visible", "scroll"], W = () => ["auto", "contain", "none"], m = () => [l, i, c], R = () => [K, "full", "auto", ...m()], ke = () => [L, "none", "subgrid", l, i], ve = () => ["auto", {
851
+ span: ["full", L, l, i]
852
+ }, L, l, i], H = () => [L, "auto", l, i], Se = () => ["auto", "min", "max", "fr", l, i], de = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], Q = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], q = () => ["auto", ...m()], j = () => [K, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...m()], d = () => [e, l, i], ze = () => [...U(), $e, Me, {
853
+ position: [l, i]
854
+ }], Ie = () => ["no-repeat", {
855
+ repeat: ["", "x", "y", "space", "round"]
856
+ }], Ae = () => ["auto", "cover", "contain", Vr, Kr, {
857
+ size: [l, i]
858
+ }], ue = () => [pe, X, F], I = () => [
859
+ // Deprecated since Tailwind CSS v4.0.0
860
+ "",
861
+ "none",
862
+ "full",
863
+ g,
864
+ l,
865
+ i
866
+ ], A = () => ["", f, X, F], J = () => ["solid", "dashed", "dotted", "double"], Ce = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], k = () => [f, pe, $e, Me], Ee = () => [
867
+ // Deprecated since Tailwind CSS v4.0.0
868
+ "",
869
+ "none",
870
+ T,
871
+ l,
872
+ i
873
+ ], Z = () => ["none", f, l, i], ee = () => ["none", f, l, i], ge = () => [f, l, i], re = () => [K, "full", ...m()];
874
+ return {
875
+ cacheSize: 500,
876
+ theme: {
877
+ animate: ["spin", "ping", "pulse", "bounce"],
878
+ aspect: ["video"],
879
+ blur: [M],
880
+ breakpoint: [M],
881
+ color: [jr],
882
+ container: [M],
883
+ "drop-shadow": [M],
884
+ ease: ["in", "out", "in-out"],
885
+ font: [Qr],
886
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
887
+ "inset-shadow": [M],
888
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
889
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
890
+ radius: [M],
891
+ shadow: [M],
892
+ spacing: ["px", f],
893
+ text: [M],
894
+ "text-shadow": [M],
895
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
896
+ },
897
+ classGroups: {
898
+ // --------------
899
+ // --- Layout ---
900
+ // --------------
901
+ /**
902
+ * Aspect Ratio
903
+ * @see https://tailwindcss.com/docs/aspect-ratio
904
+ */
905
+ aspect: [{
906
+ aspect: ["auto", "square", K, i, l, v]
907
+ }],
908
+ /**
909
+ * Container
910
+ * @see https://tailwindcss.com/docs/container
911
+ * @deprecated since Tailwind CSS v4.0.0
912
+ */
913
+ container: ["container"],
914
+ /**
915
+ * Columns
916
+ * @see https://tailwindcss.com/docs/columns
917
+ */
918
+ columns: [{
919
+ columns: [f, i, l, u]
920
+ }],
921
+ /**
922
+ * Break After
923
+ * @see https://tailwindcss.com/docs/break-after
924
+ */
925
+ "break-after": [{
926
+ "break-after": x()
927
+ }],
928
+ /**
929
+ * Break Before
930
+ * @see https://tailwindcss.com/docs/break-before
931
+ */
932
+ "break-before": [{
933
+ "break-before": x()
934
+ }],
935
+ /**
936
+ * Break Inside
937
+ * @see https://tailwindcss.com/docs/break-inside
938
+ */
939
+ "break-inside": [{
940
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
941
+ }],
942
+ /**
943
+ * Box Decoration Break
944
+ * @see https://tailwindcss.com/docs/box-decoration-break
945
+ */
946
+ "box-decoration": [{
947
+ "box-decoration": ["slice", "clone"]
948
+ }],
949
+ /**
950
+ * Box Sizing
951
+ * @see https://tailwindcss.com/docs/box-sizing
952
+ */
953
+ box: [{
954
+ box: ["border", "content"]
955
+ }],
956
+ /**
957
+ * Display
958
+ * @see https://tailwindcss.com/docs/display
959
+ */
960
+ 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"],
961
+ /**
962
+ * Screen Reader Only
963
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
964
+ */
965
+ sr: ["sr-only", "not-sr-only"],
966
+ /**
967
+ * Floats
968
+ * @see https://tailwindcss.com/docs/float
969
+ */
970
+ float: [{
971
+ float: ["right", "left", "none", "start", "end"]
972
+ }],
973
+ /**
974
+ * Clear
975
+ * @see https://tailwindcss.com/docs/clear
976
+ */
977
+ clear: [{
978
+ clear: ["left", "right", "both", "none", "start", "end"]
979
+ }],
980
+ /**
981
+ * Isolation
982
+ * @see https://tailwindcss.com/docs/isolation
983
+ */
984
+ isolation: ["isolate", "isolation-auto"],
985
+ /**
986
+ * Object Fit
987
+ * @see https://tailwindcss.com/docs/object-fit
988
+ */
989
+ "object-fit": [{
990
+ object: ["contain", "cover", "fill", "none", "scale-down"]
991
+ }],
992
+ /**
993
+ * Object Position
994
+ * @see https://tailwindcss.com/docs/object-position
995
+ */
996
+ "object-position": [{
997
+ object: G()
998
+ }],
999
+ /**
1000
+ * Overflow
1001
+ * @see https://tailwindcss.com/docs/overflow
1002
+ */
1003
+ overflow: [{
1004
+ overflow: _()
1005
+ }],
1006
+ /**
1007
+ * Overflow X
1008
+ * @see https://tailwindcss.com/docs/overflow
1009
+ */
1010
+ "overflow-x": [{
1011
+ "overflow-x": _()
1012
+ }],
1013
+ /**
1014
+ * Overflow Y
1015
+ * @see https://tailwindcss.com/docs/overflow
1016
+ */
1017
+ "overflow-y": [{
1018
+ "overflow-y": _()
1019
+ }],
1020
+ /**
1021
+ * Overscroll Behavior
1022
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1023
+ */
1024
+ overscroll: [{
1025
+ overscroll: W()
1026
+ }],
1027
+ /**
1028
+ * Overscroll Behavior X
1029
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1030
+ */
1031
+ "overscroll-x": [{
1032
+ "overscroll-x": W()
1033
+ }],
1034
+ /**
1035
+ * Overscroll Behavior Y
1036
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1037
+ */
1038
+ "overscroll-y": [{
1039
+ "overscroll-y": W()
1040
+ }],
1041
+ /**
1042
+ * Position
1043
+ * @see https://tailwindcss.com/docs/position
1044
+ */
1045
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
1046
+ /**
1047
+ * Top / Right / Bottom / Left
1048
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1049
+ */
1050
+ inset: [{
1051
+ inset: R()
1052
+ }],
1053
+ /**
1054
+ * Right / Left
1055
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1056
+ */
1057
+ "inset-x": [{
1058
+ "inset-x": R()
1059
+ }],
1060
+ /**
1061
+ * Top / Bottom
1062
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1063
+ */
1064
+ "inset-y": [{
1065
+ "inset-y": R()
1066
+ }],
1067
+ /**
1068
+ * Start
1069
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1070
+ */
1071
+ start: [{
1072
+ start: R()
1073
+ }],
1074
+ /**
1075
+ * End
1076
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1077
+ */
1078
+ end: [{
1079
+ end: R()
1080
+ }],
1081
+ /**
1082
+ * Top
1083
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1084
+ */
1085
+ top: [{
1086
+ top: R()
1087
+ }],
1088
+ /**
1089
+ * Right
1090
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1091
+ */
1092
+ right: [{
1093
+ right: R()
1094
+ }],
1095
+ /**
1096
+ * Bottom
1097
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1098
+ */
1099
+ bottom: [{
1100
+ bottom: R()
1101
+ }],
1102
+ /**
1103
+ * Left
1104
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1105
+ */
1106
+ left: [{
1107
+ left: R()
1108
+ }],
1109
+ /**
1110
+ * Visibility
1111
+ * @see https://tailwindcss.com/docs/visibility
1112
+ */
1113
+ visibility: ["visible", "invisible", "collapse"],
1114
+ /**
1115
+ * Z-Index
1116
+ * @see https://tailwindcss.com/docs/z-index
1117
+ */
1118
+ z: [{
1119
+ z: [L, "auto", l, i]
1120
+ }],
1121
+ // ------------------------
1122
+ // --- Flexbox and Grid ---
1123
+ // ------------------------
1124
+ /**
1125
+ * Flex Basis
1126
+ * @see https://tailwindcss.com/docs/flex-basis
1127
+ */
1128
+ basis: [{
1129
+ basis: [K, "full", "auto", u, ...m()]
1130
+ }],
1131
+ /**
1132
+ * Flex Direction
1133
+ * @see https://tailwindcss.com/docs/flex-direction
1134
+ */
1135
+ "flex-direction": [{
1136
+ flex: ["row", "row-reverse", "col", "col-reverse"]
1137
+ }],
1138
+ /**
1139
+ * Flex Wrap
1140
+ * @see https://tailwindcss.com/docs/flex-wrap
1141
+ */
1142
+ "flex-wrap": [{
1143
+ flex: ["nowrap", "wrap", "wrap-reverse"]
1144
+ }],
1145
+ /**
1146
+ * Flex
1147
+ * @see https://tailwindcss.com/docs/flex
1148
+ */
1149
+ flex: [{
1150
+ flex: [f, K, "auto", "initial", "none", i]
1151
+ }],
1152
+ /**
1153
+ * Flex Grow
1154
+ * @see https://tailwindcss.com/docs/flex-grow
1155
+ */
1156
+ grow: [{
1157
+ grow: ["", f, l, i]
1158
+ }],
1159
+ /**
1160
+ * Flex Shrink
1161
+ * @see https://tailwindcss.com/docs/flex-shrink
1162
+ */
1163
+ shrink: [{
1164
+ shrink: ["", f, l, i]
1165
+ }],
1166
+ /**
1167
+ * Order
1168
+ * @see https://tailwindcss.com/docs/order
1169
+ */
1170
+ order: [{
1171
+ order: [L, "first", "last", "none", l, i]
1172
+ }],
1173
+ /**
1174
+ * Grid Template Columns
1175
+ * @see https://tailwindcss.com/docs/grid-template-columns
1176
+ */
1177
+ "grid-cols": [{
1178
+ "grid-cols": ke()
1179
+ }],
1180
+ /**
1181
+ * Grid Column Start / End
1182
+ * @see https://tailwindcss.com/docs/grid-column
1183
+ */
1184
+ "col-start-end": [{
1185
+ col: ve()
1186
+ }],
1187
+ /**
1188
+ * Grid Column Start
1189
+ * @see https://tailwindcss.com/docs/grid-column
1190
+ */
1191
+ "col-start": [{
1192
+ "col-start": H()
1193
+ }],
1194
+ /**
1195
+ * Grid Column End
1196
+ * @see https://tailwindcss.com/docs/grid-column
1197
+ */
1198
+ "col-end": [{
1199
+ "col-end": H()
1200
+ }],
1201
+ /**
1202
+ * Grid Template Rows
1203
+ * @see https://tailwindcss.com/docs/grid-template-rows
1204
+ */
1205
+ "grid-rows": [{
1206
+ "grid-rows": ke()
1207
+ }],
1208
+ /**
1209
+ * Grid Row Start / End
1210
+ * @see https://tailwindcss.com/docs/grid-row
1211
+ */
1212
+ "row-start-end": [{
1213
+ row: ve()
1214
+ }],
1215
+ /**
1216
+ * Grid Row Start
1217
+ * @see https://tailwindcss.com/docs/grid-row
1218
+ */
1219
+ "row-start": [{
1220
+ "row-start": H()
1221
+ }],
1222
+ /**
1223
+ * Grid Row End
1224
+ * @see https://tailwindcss.com/docs/grid-row
1225
+ */
1226
+ "row-end": [{
1227
+ "row-end": H()
1228
+ }],
1229
+ /**
1230
+ * Grid Auto Flow
1231
+ * @see https://tailwindcss.com/docs/grid-auto-flow
1232
+ */
1233
+ "grid-flow": [{
1234
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
1235
+ }],
1236
+ /**
1237
+ * Grid Auto Columns
1238
+ * @see https://tailwindcss.com/docs/grid-auto-columns
1239
+ */
1240
+ "auto-cols": [{
1241
+ "auto-cols": Se()
1242
+ }],
1243
+ /**
1244
+ * Grid Auto Rows
1245
+ * @see https://tailwindcss.com/docs/grid-auto-rows
1246
+ */
1247
+ "auto-rows": [{
1248
+ "auto-rows": Se()
1249
+ }],
1250
+ /**
1251
+ * Gap
1252
+ * @see https://tailwindcss.com/docs/gap
1253
+ */
1254
+ gap: [{
1255
+ gap: m()
1256
+ }],
1257
+ /**
1258
+ * Gap X
1259
+ * @see https://tailwindcss.com/docs/gap
1260
+ */
1261
+ "gap-x": [{
1262
+ "gap-x": m()
1263
+ }],
1264
+ /**
1265
+ * Gap Y
1266
+ * @see https://tailwindcss.com/docs/gap
1267
+ */
1268
+ "gap-y": [{
1269
+ "gap-y": m()
1270
+ }],
1271
+ /**
1272
+ * Justify Content
1273
+ * @see https://tailwindcss.com/docs/justify-content
1274
+ */
1275
+ "justify-content": [{
1276
+ justify: [...de(), "normal"]
1277
+ }],
1278
+ /**
1279
+ * Justify Items
1280
+ * @see https://tailwindcss.com/docs/justify-items
1281
+ */
1282
+ "justify-items": [{
1283
+ "justify-items": [...Q(), "normal"]
1284
+ }],
1285
+ /**
1286
+ * Justify Self
1287
+ * @see https://tailwindcss.com/docs/justify-self
1288
+ */
1289
+ "justify-self": [{
1290
+ "justify-self": ["auto", ...Q()]
1291
+ }],
1292
+ /**
1293
+ * Align Content
1294
+ * @see https://tailwindcss.com/docs/align-content
1295
+ */
1296
+ "align-content": [{
1297
+ content: ["normal", ...de()]
1298
+ }],
1299
+ /**
1300
+ * Align Items
1301
+ * @see https://tailwindcss.com/docs/align-items
1302
+ */
1303
+ "align-items": [{
1304
+ items: [...Q(), {
1305
+ baseline: ["", "last"]
1306
+ }]
1307
+ }],
1308
+ /**
1309
+ * Align Self
1310
+ * @see https://tailwindcss.com/docs/align-self
1311
+ */
1312
+ "align-self": [{
1313
+ self: ["auto", ...Q(), {
1314
+ baseline: ["", "last"]
1315
+ }]
1316
+ }],
1317
+ /**
1318
+ * Place Content
1319
+ * @see https://tailwindcss.com/docs/place-content
1320
+ */
1321
+ "place-content": [{
1322
+ "place-content": de()
1323
+ }],
1324
+ /**
1325
+ * Place Items
1326
+ * @see https://tailwindcss.com/docs/place-items
1327
+ */
1328
+ "place-items": [{
1329
+ "place-items": [...Q(), "baseline"]
1330
+ }],
1331
+ /**
1332
+ * Place Self
1333
+ * @see https://tailwindcss.com/docs/place-self
1334
+ */
1335
+ "place-self": [{
1336
+ "place-self": ["auto", ...Q()]
1337
+ }],
1338
+ // Spacing
1339
+ /**
1340
+ * Padding
1341
+ * @see https://tailwindcss.com/docs/padding
1342
+ */
1343
+ p: [{
1344
+ p: m()
1345
+ }],
1346
+ /**
1347
+ * Padding X
1348
+ * @see https://tailwindcss.com/docs/padding
1349
+ */
1350
+ px: [{
1351
+ px: m()
1352
+ }],
1353
+ /**
1354
+ * Padding Y
1355
+ * @see https://tailwindcss.com/docs/padding
1356
+ */
1357
+ py: [{
1358
+ py: m()
1359
+ }],
1360
+ /**
1361
+ * Padding Start
1362
+ * @see https://tailwindcss.com/docs/padding
1363
+ */
1364
+ ps: [{
1365
+ ps: m()
1366
+ }],
1367
+ /**
1368
+ * Padding End
1369
+ * @see https://tailwindcss.com/docs/padding
1370
+ */
1371
+ pe: [{
1372
+ pe: m()
1373
+ }],
1374
+ /**
1375
+ * Padding Top
1376
+ * @see https://tailwindcss.com/docs/padding
1377
+ */
1378
+ pt: [{
1379
+ pt: m()
1380
+ }],
1381
+ /**
1382
+ * Padding Right
1383
+ * @see https://tailwindcss.com/docs/padding
1384
+ */
1385
+ pr: [{
1386
+ pr: m()
1387
+ }],
1388
+ /**
1389
+ * Padding Bottom
1390
+ * @see https://tailwindcss.com/docs/padding
1391
+ */
1392
+ pb: [{
1393
+ pb: m()
1394
+ }],
1395
+ /**
1396
+ * Padding Left
1397
+ * @see https://tailwindcss.com/docs/padding
1398
+ */
1399
+ pl: [{
1400
+ pl: m()
1401
+ }],
1402
+ /**
1403
+ * Margin
1404
+ * @see https://tailwindcss.com/docs/margin
1405
+ */
1406
+ m: [{
1407
+ m: q()
1408
+ }],
1409
+ /**
1410
+ * Margin X
1411
+ * @see https://tailwindcss.com/docs/margin
1412
+ */
1413
+ mx: [{
1414
+ mx: q()
1415
+ }],
1416
+ /**
1417
+ * Margin Y
1418
+ * @see https://tailwindcss.com/docs/margin
1419
+ */
1420
+ my: [{
1421
+ my: q()
1422
+ }],
1423
+ /**
1424
+ * Margin Start
1425
+ * @see https://tailwindcss.com/docs/margin
1426
+ */
1427
+ ms: [{
1428
+ ms: q()
1429
+ }],
1430
+ /**
1431
+ * Margin End
1432
+ * @see https://tailwindcss.com/docs/margin
1433
+ */
1434
+ me: [{
1435
+ me: q()
1436
+ }],
1437
+ /**
1438
+ * Margin Top
1439
+ * @see https://tailwindcss.com/docs/margin
1440
+ */
1441
+ mt: [{
1442
+ mt: q()
1443
+ }],
1444
+ /**
1445
+ * Margin Right
1446
+ * @see https://tailwindcss.com/docs/margin
1447
+ */
1448
+ mr: [{
1449
+ mr: q()
1450
+ }],
1451
+ /**
1452
+ * Margin Bottom
1453
+ * @see https://tailwindcss.com/docs/margin
1454
+ */
1455
+ mb: [{
1456
+ mb: q()
1457
+ }],
1458
+ /**
1459
+ * Margin Left
1460
+ * @see https://tailwindcss.com/docs/margin
1461
+ */
1462
+ ml: [{
1463
+ ml: q()
1464
+ }],
1465
+ /**
1466
+ * Space Between X
1467
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1468
+ */
1469
+ "space-x": [{
1470
+ "space-x": m()
1471
+ }],
1472
+ /**
1473
+ * Space Between X Reverse
1474
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1475
+ */
1476
+ "space-x-reverse": ["space-x-reverse"],
1477
+ /**
1478
+ * Space Between Y
1479
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1480
+ */
1481
+ "space-y": [{
1482
+ "space-y": m()
1483
+ }],
1484
+ /**
1485
+ * Space Between Y Reverse
1486
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1487
+ */
1488
+ "space-y-reverse": ["space-y-reverse"],
1489
+ // --------------
1490
+ // --- Sizing ---
1491
+ // --------------
1492
+ /**
1493
+ * Size
1494
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
1495
+ */
1496
+ size: [{
1497
+ size: j()
1498
+ }],
1499
+ /**
1500
+ * Width
1501
+ * @see https://tailwindcss.com/docs/width
1502
+ */
1503
+ w: [{
1504
+ w: [u, "screen", ...j()]
1505
+ }],
1506
+ /**
1507
+ * Min-Width
1508
+ * @see https://tailwindcss.com/docs/min-width
1509
+ */
1510
+ "min-w": [{
1511
+ "min-w": [
1512
+ u,
1513
+ "screen",
1514
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1515
+ "none",
1516
+ ...j()
1517
+ ]
1518
+ }],
1519
+ /**
1520
+ * Max-Width
1521
+ * @see https://tailwindcss.com/docs/max-width
1522
+ */
1523
+ "max-w": [{
1524
+ "max-w": [
1525
+ u,
1526
+ "screen",
1527
+ "none",
1528
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1529
+ "prose",
1530
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1531
+ {
1532
+ screen: [a]
1533
+ },
1534
+ ...j()
1535
+ ]
1536
+ }],
1537
+ /**
1538
+ * Height
1539
+ * @see https://tailwindcss.com/docs/height
1540
+ */
1541
+ h: [{
1542
+ h: ["screen", "lh", ...j()]
1543
+ }],
1544
+ /**
1545
+ * Min-Height
1546
+ * @see https://tailwindcss.com/docs/min-height
1547
+ */
1548
+ "min-h": [{
1549
+ "min-h": ["screen", "lh", "none", ...j()]
1550
+ }],
1551
+ /**
1552
+ * Max-Height
1553
+ * @see https://tailwindcss.com/docs/max-height
1554
+ */
1555
+ "max-h": [{
1556
+ "max-h": ["screen", "lh", ...j()]
1557
+ }],
1558
+ // ------------------
1559
+ // --- Typography ---
1560
+ // ------------------
1561
+ /**
1562
+ * Font Size
1563
+ * @see https://tailwindcss.com/docs/font-size
1564
+ */
1565
+ "font-size": [{
1566
+ text: ["base", r, X, F]
1567
+ }],
1568
+ /**
1569
+ * Font Smoothing
1570
+ * @see https://tailwindcss.com/docs/font-smoothing
1571
+ */
1572
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
1573
+ /**
1574
+ * Font Style
1575
+ * @see https://tailwindcss.com/docs/font-style
1576
+ */
1577
+ "font-style": ["italic", "not-italic"],
1578
+ /**
1579
+ * Font Weight
1580
+ * @see https://tailwindcss.com/docs/font-weight
1581
+ */
1582
+ "font-weight": [{
1583
+ font: [o, l, he]
1584
+ }],
1585
+ /**
1586
+ * Font Stretch
1587
+ * @see https://tailwindcss.com/docs/font-stretch
1588
+ */
1589
+ "font-stretch": [{
1590
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", pe, i]
1591
+ }],
1592
+ /**
1593
+ * Font Family
1594
+ * @see https://tailwindcss.com/docs/font-family
1595
+ */
1596
+ "font-family": [{
1597
+ font: [Dr, i, t]
1598
+ }],
1599
+ /**
1600
+ * Font Variant Numeric
1601
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1602
+ */
1603
+ "fvn-normal": ["normal-nums"],
1604
+ /**
1605
+ * Font Variant Numeric
1606
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1607
+ */
1608
+ "fvn-ordinal": ["ordinal"],
1609
+ /**
1610
+ * Font Variant Numeric
1611
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1612
+ */
1613
+ "fvn-slashed-zero": ["slashed-zero"],
1614
+ /**
1615
+ * Font Variant Numeric
1616
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1617
+ */
1618
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
1619
+ /**
1620
+ * Font Variant Numeric
1621
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1622
+ */
1623
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
1624
+ /**
1625
+ * Font Variant Numeric
1626
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1627
+ */
1628
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
1629
+ /**
1630
+ * Letter Spacing
1631
+ * @see https://tailwindcss.com/docs/letter-spacing
1632
+ */
1633
+ tracking: [{
1634
+ tracking: [s, l, i]
1635
+ }],
1636
+ /**
1637
+ * Line Clamp
1638
+ * @see https://tailwindcss.com/docs/line-clamp
1639
+ */
1640
+ "line-clamp": [{
1641
+ "line-clamp": [f, "none", l, he]
1642
+ }],
1643
+ /**
1644
+ * Line Height
1645
+ * @see https://tailwindcss.com/docs/line-height
1646
+ */
1647
+ leading: [{
1648
+ leading: [
1649
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
1650
+ n,
1651
+ ...m()
1652
+ ]
1653
+ }],
1654
+ /**
1655
+ * List Style Image
1656
+ * @see https://tailwindcss.com/docs/list-style-image
1657
+ */
1658
+ "list-image": [{
1659
+ "list-image": ["none", l, i]
1660
+ }],
1661
+ /**
1662
+ * List Style Position
1663
+ * @see https://tailwindcss.com/docs/list-style-position
1664
+ */
1665
+ "list-style-position": [{
1666
+ list: ["inside", "outside"]
1667
+ }],
1668
+ /**
1669
+ * List Style Type
1670
+ * @see https://tailwindcss.com/docs/list-style-type
1671
+ */
1672
+ "list-style-type": [{
1673
+ list: ["disc", "decimal", "none", l, i]
1674
+ }],
1675
+ /**
1676
+ * Text Alignment
1677
+ * @see https://tailwindcss.com/docs/text-align
1678
+ */
1679
+ "text-alignment": [{
1680
+ text: ["left", "center", "right", "justify", "start", "end"]
1681
+ }],
1682
+ /**
1683
+ * Placeholder Color
1684
+ * @deprecated since Tailwind CSS v3.0.0
1685
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
1686
+ */
1687
+ "placeholder-color": [{
1688
+ placeholder: d()
1689
+ }],
1690
+ /**
1691
+ * Text Color
1692
+ * @see https://tailwindcss.com/docs/text-color
1693
+ */
1694
+ "text-color": [{
1695
+ text: d()
1696
+ }],
1697
+ /**
1698
+ * Text Decoration
1699
+ * @see https://tailwindcss.com/docs/text-decoration
1700
+ */
1701
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
1702
+ /**
1703
+ * Text Decoration Style
1704
+ * @see https://tailwindcss.com/docs/text-decoration-style
1705
+ */
1706
+ "text-decoration-style": [{
1707
+ decoration: [...J(), "wavy"]
1708
+ }],
1709
+ /**
1710
+ * Text Decoration Thickness
1711
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1712
+ */
1713
+ "text-decoration-thickness": [{
1714
+ decoration: [f, "from-font", "auto", l, F]
1715
+ }],
1716
+ /**
1717
+ * Text Decoration Color
1718
+ * @see https://tailwindcss.com/docs/text-decoration-color
1719
+ */
1720
+ "text-decoration-color": [{
1721
+ decoration: d()
1722
+ }],
1723
+ /**
1724
+ * Text Underline Offset
1725
+ * @see https://tailwindcss.com/docs/text-underline-offset
1726
+ */
1727
+ "underline-offset": [{
1728
+ "underline-offset": [f, "auto", l, i]
1729
+ }],
1730
+ /**
1731
+ * Text Transform
1732
+ * @see https://tailwindcss.com/docs/text-transform
1733
+ */
1734
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
1735
+ /**
1736
+ * Text Overflow
1737
+ * @see https://tailwindcss.com/docs/text-overflow
1738
+ */
1739
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
1740
+ /**
1741
+ * Text Wrap
1742
+ * @see https://tailwindcss.com/docs/text-wrap
1743
+ */
1744
+ "text-wrap": [{
1745
+ text: ["wrap", "nowrap", "balance", "pretty"]
1746
+ }],
1747
+ /**
1748
+ * Text Indent
1749
+ * @see https://tailwindcss.com/docs/text-indent
1750
+ */
1751
+ indent: [{
1752
+ indent: m()
1753
+ }],
1754
+ /**
1755
+ * Vertical Alignment
1756
+ * @see https://tailwindcss.com/docs/vertical-align
1757
+ */
1758
+ "vertical-align": [{
1759
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", l, i]
1760
+ }],
1761
+ /**
1762
+ * Whitespace
1763
+ * @see https://tailwindcss.com/docs/whitespace
1764
+ */
1765
+ whitespace: [{
1766
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
1767
+ }],
1768
+ /**
1769
+ * Word Break
1770
+ * @see https://tailwindcss.com/docs/word-break
1771
+ */
1772
+ break: [{
1773
+ break: ["normal", "words", "all", "keep"]
1774
+ }],
1775
+ /**
1776
+ * Overflow Wrap
1777
+ * @see https://tailwindcss.com/docs/overflow-wrap
1778
+ */
1779
+ wrap: [{
1780
+ wrap: ["break-word", "anywhere", "normal"]
1781
+ }],
1782
+ /**
1783
+ * Hyphens
1784
+ * @see https://tailwindcss.com/docs/hyphens
1785
+ */
1786
+ hyphens: [{
1787
+ hyphens: ["none", "manual", "auto"]
1788
+ }],
1789
+ /**
1790
+ * Content
1791
+ * @see https://tailwindcss.com/docs/content
1792
+ */
1793
+ content: [{
1794
+ content: ["none", l, i]
1795
+ }],
1796
+ // -------------------
1797
+ // --- Backgrounds ---
1798
+ // -------------------
1799
+ /**
1800
+ * Background Attachment
1801
+ * @see https://tailwindcss.com/docs/background-attachment
1802
+ */
1803
+ "bg-attachment": [{
1804
+ bg: ["fixed", "local", "scroll"]
1805
+ }],
1806
+ /**
1807
+ * Background Clip
1808
+ * @see https://tailwindcss.com/docs/background-clip
1809
+ */
1810
+ "bg-clip": [{
1811
+ "bg-clip": ["border", "padding", "content", "text"]
1812
+ }],
1813
+ /**
1814
+ * Background Origin
1815
+ * @see https://tailwindcss.com/docs/background-origin
1816
+ */
1817
+ "bg-origin": [{
1818
+ "bg-origin": ["border", "padding", "content"]
1819
+ }],
1820
+ /**
1821
+ * Background Position
1822
+ * @see https://tailwindcss.com/docs/background-position
1823
+ */
1824
+ "bg-position": [{
1825
+ bg: ze()
1826
+ }],
1827
+ /**
1828
+ * Background Repeat
1829
+ * @see https://tailwindcss.com/docs/background-repeat
1830
+ */
1831
+ "bg-repeat": [{
1832
+ bg: Ie()
1833
+ }],
1834
+ /**
1835
+ * Background Size
1836
+ * @see https://tailwindcss.com/docs/background-size
1837
+ */
1838
+ "bg-size": [{
1839
+ bg: Ae()
1840
+ }],
1841
+ /**
1842
+ * Background Image
1843
+ * @see https://tailwindcss.com/docs/background-image
1844
+ */
1845
+ "bg-image": [{
1846
+ bg: ["none", {
1847
+ linear: [{
1848
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
1849
+ }, L, l, i],
1850
+ radial: ["", l, i],
1851
+ conic: [L, l, i]
1852
+ }, Br, Nr]
1853
+ }],
1854
+ /**
1855
+ * Background Color
1856
+ * @see https://tailwindcss.com/docs/background-color
1857
+ */
1858
+ "bg-color": [{
1859
+ bg: d()
1860
+ }],
1861
+ /**
1862
+ * Gradient Color Stops From Position
1863
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1864
+ */
1865
+ "gradient-from-pos": [{
1866
+ from: ue()
1867
+ }],
1868
+ /**
1869
+ * Gradient Color Stops Via Position
1870
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1871
+ */
1872
+ "gradient-via-pos": [{
1873
+ via: ue()
1874
+ }],
1875
+ /**
1876
+ * Gradient Color Stops To Position
1877
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1878
+ */
1879
+ "gradient-to-pos": [{
1880
+ to: ue()
1881
+ }],
1882
+ /**
1883
+ * Gradient Color Stops From
1884
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1885
+ */
1886
+ "gradient-from": [{
1887
+ from: d()
1888
+ }],
1889
+ /**
1890
+ * Gradient Color Stops Via
1891
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1892
+ */
1893
+ "gradient-via": [{
1894
+ via: d()
1895
+ }],
1896
+ /**
1897
+ * Gradient Color Stops To
1898
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1899
+ */
1900
+ "gradient-to": [{
1901
+ to: d()
1902
+ }],
1903
+ // ---------------
1904
+ // --- Borders ---
1905
+ // ---------------
1906
+ /**
1907
+ * Border Radius
1908
+ * @see https://tailwindcss.com/docs/border-radius
1909
+ */
1910
+ rounded: [{
1911
+ rounded: I()
1912
+ }],
1913
+ /**
1914
+ * Border Radius Start
1915
+ * @see https://tailwindcss.com/docs/border-radius
1916
+ */
1917
+ "rounded-s": [{
1918
+ "rounded-s": I()
1919
+ }],
1920
+ /**
1921
+ * Border Radius End
1922
+ * @see https://tailwindcss.com/docs/border-radius
1923
+ */
1924
+ "rounded-e": [{
1925
+ "rounded-e": I()
1926
+ }],
1927
+ /**
1928
+ * Border Radius Top
1929
+ * @see https://tailwindcss.com/docs/border-radius
1930
+ */
1931
+ "rounded-t": [{
1932
+ "rounded-t": I()
1933
+ }],
1934
+ /**
1935
+ * Border Radius Right
1936
+ * @see https://tailwindcss.com/docs/border-radius
1937
+ */
1938
+ "rounded-r": [{
1939
+ "rounded-r": I()
1940
+ }],
1941
+ /**
1942
+ * Border Radius Bottom
1943
+ * @see https://tailwindcss.com/docs/border-radius
1944
+ */
1945
+ "rounded-b": [{
1946
+ "rounded-b": I()
1947
+ }],
1948
+ /**
1949
+ * Border Radius Left
1950
+ * @see https://tailwindcss.com/docs/border-radius
1951
+ */
1952
+ "rounded-l": [{
1953
+ "rounded-l": I()
1954
+ }],
1955
+ /**
1956
+ * Border Radius Start Start
1957
+ * @see https://tailwindcss.com/docs/border-radius
1958
+ */
1959
+ "rounded-ss": [{
1960
+ "rounded-ss": I()
1961
+ }],
1962
+ /**
1963
+ * Border Radius Start End
1964
+ * @see https://tailwindcss.com/docs/border-radius
1965
+ */
1966
+ "rounded-se": [{
1967
+ "rounded-se": I()
1968
+ }],
1969
+ /**
1970
+ * Border Radius End End
1971
+ * @see https://tailwindcss.com/docs/border-radius
1972
+ */
1973
+ "rounded-ee": [{
1974
+ "rounded-ee": I()
1975
+ }],
1976
+ /**
1977
+ * Border Radius End Start
1978
+ * @see https://tailwindcss.com/docs/border-radius
1979
+ */
1980
+ "rounded-es": [{
1981
+ "rounded-es": I()
1982
+ }],
1983
+ /**
1984
+ * Border Radius Top Left
1985
+ * @see https://tailwindcss.com/docs/border-radius
1986
+ */
1987
+ "rounded-tl": [{
1988
+ "rounded-tl": I()
1989
+ }],
1990
+ /**
1991
+ * Border Radius Top Right
1992
+ * @see https://tailwindcss.com/docs/border-radius
1993
+ */
1994
+ "rounded-tr": [{
1995
+ "rounded-tr": I()
1996
+ }],
1997
+ /**
1998
+ * Border Radius Bottom Right
1999
+ * @see https://tailwindcss.com/docs/border-radius
2000
+ */
2001
+ "rounded-br": [{
2002
+ "rounded-br": I()
2003
+ }],
2004
+ /**
2005
+ * Border Radius Bottom Left
2006
+ * @see https://tailwindcss.com/docs/border-radius
2007
+ */
2008
+ "rounded-bl": [{
2009
+ "rounded-bl": I()
2010
+ }],
2011
+ /**
2012
+ * Border Width
2013
+ * @see https://tailwindcss.com/docs/border-width
2014
+ */
2015
+ "border-w": [{
2016
+ border: A()
2017
+ }],
2018
+ /**
2019
+ * Border Width X
2020
+ * @see https://tailwindcss.com/docs/border-width
2021
+ */
2022
+ "border-w-x": [{
2023
+ "border-x": A()
2024
+ }],
2025
+ /**
2026
+ * Border Width Y
2027
+ * @see https://tailwindcss.com/docs/border-width
2028
+ */
2029
+ "border-w-y": [{
2030
+ "border-y": A()
2031
+ }],
2032
+ /**
2033
+ * Border Width Start
2034
+ * @see https://tailwindcss.com/docs/border-width
2035
+ */
2036
+ "border-w-s": [{
2037
+ "border-s": A()
2038
+ }],
2039
+ /**
2040
+ * Border Width End
2041
+ * @see https://tailwindcss.com/docs/border-width
2042
+ */
2043
+ "border-w-e": [{
2044
+ "border-e": A()
2045
+ }],
2046
+ /**
2047
+ * Border Width Top
2048
+ * @see https://tailwindcss.com/docs/border-width
2049
+ */
2050
+ "border-w-t": [{
2051
+ "border-t": A()
2052
+ }],
2053
+ /**
2054
+ * Border Width Right
2055
+ * @see https://tailwindcss.com/docs/border-width
2056
+ */
2057
+ "border-w-r": [{
2058
+ "border-r": A()
2059
+ }],
2060
+ /**
2061
+ * Border Width Bottom
2062
+ * @see https://tailwindcss.com/docs/border-width
2063
+ */
2064
+ "border-w-b": [{
2065
+ "border-b": A()
2066
+ }],
2067
+ /**
2068
+ * Border Width Left
2069
+ * @see https://tailwindcss.com/docs/border-width
2070
+ */
2071
+ "border-w-l": [{
2072
+ "border-l": A()
2073
+ }],
2074
+ /**
2075
+ * Divide Width X
2076
+ * @see https://tailwindcss.com/docs/border-width#between-children
2077
+ */
2078
+ "divide-x": [{
2079
+ "divide-x": A()
2080
+ }],
2081
+ /**
2082
+ * Divide Width X Reverse
2083
+ * @see https://tailwindcss.com/docs/border-width#between-children
2084
+ */
2085
+ "divide-x-reverse": ["divide-x-reverse"],
2086
+ /**
2087
+ * Divide Width Y
2088
+ * @see https://tailwindcss.com/docs/border-width#between-children
2089
+ */
2090
+ "divide-y": [{
2091
+ "divide-y": A()
2092
+ }],
2093
+ /**
2094
+ * Divide Width Y Reverse
2095
+ * @see https://tailwindcss.com/docs/border-width#between-children
2096
+ */
2097
+ "divide-y-reverse": ["divide-y-reverse"],
2098
+ /**
2099
+ * Border Style
2100
+ * @see https://tailwindcss.com/docs/border-style
2101
+ */
2102
+ "border-style": [{
2103
+ border: [...J(), "hidden", "none"]
2104
+ }],
2105
+ /**
2106
+ * Divide Style
2107
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
2108
+ */
2109
+ "divide-style": [{
2110
+ divide: [...J(), "hidden", "none"]
2111
+ }],
2112
+ /**
2113
+ * Border Color
2114
+ * @see https://tailwindcss.com/docs/border-color
2115
+ */
2116
+ "border-color": [{
2117
+ border: d()
2118
+ }],
2119
+ /**
2120
+ * Border Color X
2121
+ * @see https://tailwindcss.com/docs/border-color
2122
+ */
2123
+ "border-color-x": [{
2124
+ "border-x": d()
2125
+ }],
2126
+ /**
2127
+ * Border Color Y
2128
+ * @see https://tailwindcss.com/docs/border-color
2129
+ */
2130
+ "border-color-y": [{
2131
+ "border-y": d()
2132
+ }],
2133
+ /**
2134
+ * Border Color S
2135
+ * @see https://tailwindcss.com/docs/border-color
2136
+ */
2137
+ "border-color-s": [{
2138
+ "border-s": d()
2139
+ }],
2140
+ /**
2141
+ * Border Color E
2142
+ * @see https://tailwindcss.com/docs/border-color
2143
+ */
2144
+ "border-color-e": [{
2145
+ "border-e": d()
2146
+ }],
2147
+ /**
2148
+ * Border Color Top
2149
+ * @see https://tailwindcss.com/docs/border-color
2150
+ */
2151
+ "border-color-t": [{
2152
+ "border-t": d()
2153
+ }],
2154
+ /**
2155
+ * Border Color Right
2156
+ * @see https://tailwindcss.com/docs/border-color
2157
+ */
2158
+ "border-color-r": [{
2159
+ "border-r": d()
2160
+ }],
2161
+ /**
2162
+ * Border Color Bottom
2163
+ * @see https://tailwindcss.com/docs/border-color
2164
+ */
2165
+ "border-color-b": [{
2166
+ "border-b": d()
2167
+ }],
2168
+ /**
2169
+ * Border Color Left
2170
+ * @see https://tailwindcss.com/docs/border-color
2171
+ */
2172
+ "border-color-l": [{
2173
+ "border-l": d()
2174
+ }],
2175
+ /**
2176
+ * Divide Color
2177
+ * @see https://tailwindcss.com/docs/divide-color
2178
+ */
2179
+ "divide-color": [{
2180
+ divide: d()
2181
+ }],
2182
+ /**
2183
+ * Outline Style
2184
+ * @see https://tailwindcss.com/docs/outline-style
2185
+ */
2186
+ "outline-style": [{
2187
+ outline: [...J(), "none", "hidden"]
2188
+ }],
2189
+ /**
2190
+ * Outline Offset
2191
+ * @see https://tailwindcss.com/docs/outline-offset
2192
+ */
2193
+ "outline-offset": [{
2194
+ "outline-offset": [f, l, i]
2195
+ }],
2196
+ /**
2197
+ * Outline Width
2198
+ * @see https://tailwindcss.com/docs/outline-width
2199
+ */
2200
+ "outline-w": [{
2201
+ outline: ["", f, X, F]
2202
+ }],
2203
+ /**
2204
+ * Outline Color
2205
+ * @see https://tailwindcss.com/docs/outline-color
2206
+ */
2207
+ "outline-color": [{
2208
+ outline: d()
2209
+ }],
2210
+ // ---------------
2211
+ // --- Effects ---
2212
+ // ---------------
2213
+ /**
2214
+ * Box Shadow
2215
+ * @see https://tailwindcss.com/docs/box-shadow
2216
+ */
2217
+ shadow: [{
2218
+ shadow: [
2219
+ // Deprecated since Tailwind CSS v4.0.0
2220
+ "",
2221
+ "none",
2222
+ h,
2223
+ oe,
2224
+ te
2225
+ ]
2226
+ }],
2227
+ /**
2228
+ * Box Shadow Color
2229
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
2230
+ */
2231
+ "shadow-color": [{
2232
+ shadow: d()
2233
+ }],
2234
+ /**
2235
+ * Inset Box Shadow
2236
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
2237
+ */
2238
+ "inset-shadow": [{
2239
+ "inset-shadow": ["none", p, oe, te]
2240
+ }],
2241
+ /**
2242
+ * Inset Box Shadow Color
2243
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
2244
+ */
2245
+ "inset-shadow-color": [{
2246
+ "inset-shadow": d()
2247
+ }],
2248
+ /**
2249
+ * Ring Width
2250
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
2251
+ */
2252
+ "ring-w": [{
2253
+ ring: A()
2254
+ }],
2255
+ /**
2256
+ * Ring Width Inset
2257
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
2258
+ * @deprecated since Tailwind CSS v4.0.0
2259
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2260
+ */
2261
+ "ring-w-inset": ["ring-inset"],
2262
+ /**
2263
+ * Ring Color
2264
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
2265
+ */
2266
+ "ring-color": [{
2267
+ ring: d()
2268
+ }],
2269
+ /**
2270
+ * Ring Offset Width
2271
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
2272
+ * @deprecated since Tailwind CSS v4.0.0
2273
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2274
+ */
2275
+ "ring-offset-w": [{
2276
+ "ring-offset": [f, F]
2277
+ }],
2278
+ /**
2279
+ * Ring Offset Color
2280
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
2281
+ * @deprecated since Tailwind CSS v4.0.0
2282
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2283
+ */
2284
+ "ring-offset-color": [{
2285
+ "ring-offset": d()
2286
+ }],
2287
+ /**
2288
+ * Inset Ring Width
2289
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
2290
+ */
2291
+ "inset-ring-w": [{
2292
+ "inset-ring": A()
2293
+ }],
2294
+ /**
2295
+ * Inset Ring Color
2296
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
2297
+ */
2298
+ "inset-ring-color": [{
2299
+ "inset-ring": d()
2300
+ }],
2301
+ /**
2302
+ * Text Shadow
2303
+ * @see https://tailwindcss.com/docs/text-shadow
2304
+ */
2305
+ "text-shadow": [{
2306
+ "text-shadow": ["none", z, oe, te]
2307
+ }],
2308
+ /**
2309
+ * Text Shadow Color
2310
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
2311
+ */
2312
+ "text-shadow-color": [{
2313
+ "text-shadow": d()
2314
+ }],
2315
+ /**
2316
+ * Opacity
2317
+ * @see https://tailwindcss.com/docs/opacity
2318
+ */
2319
+ opacity: [{
2320
+ opacity: [f, l, i]
2321
+ }],
2322
+ /**
2323
+ * Mix Blend Mode
2324
+ * @see https://tailwindcss.com/docs/mix-blend-mode
2325
+ */
2326
+ "mix-blend": [{
2327
+ "mix-blend": [...Ce(), "plus-darker", "plus-lighter"]
2328
+ }],
2329
+ /**
2330
+ * Background Blend Mode
2331
+ * @see https://tailwindcss.com/docs/background-blend-mode
2332
+ */
2333
+ "bg-blend": [{
2334
+ "bg-blend": Ce()
2335
+ }],
2336
+ /**
2337
+ * Mask Clip
2338
+ * @see https://tailwindcss.com/docs/mask-clip
2339
+ */
2340
+ "mask-clip": [{
2341
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
2342
+ }, "mask-no-clip"],
2343
+ /**
2344
+ * Mask Composite
2345
+ * @see https://tailwindcss.com/docs/mask-composite
2346
+ */
2347
+ "mask-composite": [{
2348
+ mask: ["add", "subtract", "intersect", "exclude"]
2349
+ }],
2350
+ /**
2351
+ * Mask Image
2352
+ * @see https://tailwindcss.com/docs/mask-image
2353
+ */
2354
+ "mask-image-linear-pos": [{
2355
+ "mask-linear": [f]
2356
+ }],
2357
+ "mask-image-linear-from-pos": [{
2358
+ "mask-linear-from": k()
2359
+ }],
2360
+ "mask-image-linear-to-pos": [{
2361
+ "mask-linear-to": k()
2362
+ }],
2363
+ "mask-image-linear-from-color": [{
2364
+ "mask-linear-from": d()
2365
+ }],
2366
+ "mask-image-linear-to-color": [{
2367
+ "mask-linear-to": d()
2368
+ }],
2369
+ "mask-image-t-from-pos": [{
2370
+ "mask-t-from": k()
2371
+ }],
2372
+ "mask-image-t-to-pos": [{
2373
+ "mask-t-to": k()
2374
+ }],
2375
+ "mask-image-t-from-color": [{
2376
+ "mask-t-from": d()
2377
+ }],
2378
+ "mask-image-t-to-color": [{
2379
+ "mask-t-to": d()
2380
+ }],
2381
+ "mask-image-r-from-pos": [{
2382
+ "mask-r-from": k()
2383
+ }],
2384
+ "mask-image-r-to-pos": [{
2385
+ "mask-r-to": k()
2386
+ }],
2387
+ "mask-image-r-from-color": [{
2388
+ "mask-r-from": d()
2389
+ }],
2390
+ "mask-image-r-to-color": [{
2391
+ "mask-r-to": d()
2392
+ }],
2393
+ "mask-image-b-from-pos": [{
2394
+ "mask-b-from": k()
2395
+ }],
2396
+ "mask-image-b-to-pos": [{
2397
+ "mask-b-to": k()
2398
+ }],
2399
+ "mask-image-b-from-color": [{
2400
+ "mask-b-from": d()
2401
+ }],
2402
+ "mask-image-b-to-color": [{
2403
+ "mask-b-to": d()
2404
+ }],
2405
+ "mask-image-l-from-pos": [{
2406
+ "mask-l-from": k()
2407
+ }],
2408
+ "mask-image-l-to-pos": [{
2409
+ "mask-l-to": k()
2410
+ }],
2411
+ "mask-image-l-from-color": [{
2412
+ "mask-l-from": d()
2413
+ }],
2414
+ "mask-image-l-to-color": [{
2415
+ "mask-l-to": d()
2416
+ }],
2417
+ "mask-image-x-from-pos": [{
2418
+ "mask-x-from": k()
2419
+ }],
2420
+ "mask-image-x-to-pos": [{
2421
+ "mask-x-to": k()
2422
+ }],
2423
+ "mask-image-x-from-color": [{
2424
+ "mask-x-from": d()
2425
+ }],
2426
+ "mask-image-x-to-color": [{
2427
+ "mask-x-to": d()
2428
+ }],
2429
+ "mask-image-y-from-pos": [{
2430
+ "mask-y-from": k()
2431
+ }],
2432
+ "mask-image-y-to-pos": [{
2433
+ "mask-y-to": k()
2434
+ }],
2435
+ "mask-image-y-from-color": [{
2436
+ "mask-y-from": d()
2437
+ }],
2438
+ "mask-image-y-to-color": [{
2439
+ "mask-y-to": d()
2440
+ }],
2441
+ "mask-image-radial": [{
2442
+ "mask-radial": [l, i]
2443
+ }],
2444
+ "mask-image-radial-from-pos": [{
2445
+ "mask-radial-from": k()
2446
+ }],
2447
+ "mask-image-radial-to-pos": [{
2448
+ "mask-radial-to": k()
2449
+ }],
2450
+ "mask-image-radial-from-color": [{
2451
+ "mask-radial-from": d()
2452
+ }],
2453
+ "mask-image-radial-to-color": [{
2454
+ "mask-radial-to": d()
2455
+ }],
2456
+ "mask-image-radial-shape": [{
2457
+ "mask-radial": ["circle", "ellipse"]
2458
+ }],
2459
+ "mask-image-radial-size": [{
2460
+ "mask-radial": [{
2461
+ closest: ["side", "corner"],
2462
+ farthest: ["side", "corner"]
2463
+ }]
2464
+ }],
2465
+ "mask-image-radial-pos": [{
2466
+ "mask-radial-at": U()
2467
+ }],
2468
+ "mask-image-conic-pos": [{
2469
+ "mask-conic": [f]
2470
+ }],
2471
+ "mask-image-conic-from-pos": [{
2472
+ "mask-conic-from": k()
2473
+ }],
2474
+ "mask-image-conic-to-pos": [{
2475
+ "mask-conic-to": k()
2476
+ }],
2477
+ "mask-image-conic-from-color": [{
2478
+ "mask-conic-from": d()
2479
+ }],
2480
+ "mask-image-conic-to-color": [{
2481
+ "mask-conic-to": d()
2482
+ }],
2483
+ /**
2484
+ * Mask Mode
2485
+ * @see https://tailwindcss.com/docs/mask-mode
2486
+ */
2487
+ "mask-mode": [{
2488
+ mask: ["alpha", "luminance", "match"]
2489
+ }],
2490
+ /**
2491
+ * Mask Origin
2492
+ * @see https://tailwindcss.com/docs/mask-origin
2493
+ */
2494
+ "mask-origin": [{
2495
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
2496
+ }],
2497
+ /**
2498
+ * Mask Position
2499
+ * @see https://tailwindcss.com/docs/mask-position
2500
+ */
2501
+ "mask-position": [{
2502
+ mask: ze()
2503
+ }],
2504
+ /**
2505
+ * Mask Repeat
2506
+ * @see https://tailwindcss.com/docs/mask-repeat
2507
+ */
2508
+ "mask-repeat": [{
2509
+ mask: Ie()
2510
+ }],
2511
+ /**
2512
+ * Mask Size
2513
+ * @see https://tailwindcss.com/docs/mask-size
2514
+ */
2515
+ "mask-size": [{
2516
+ mask: Ae()
2517
+ }],
2518
+ /**
2519
+ * Mask Type
2520
+ * @see https://tailwindcss.com/docs/mask-type
2521
+ */
2522
+ "mask-type": [{
2523
+ "mask-type": ["alpha", "luminance"]
2524
+ }],
2525
+ /**
2526
+ * Mask Image
2527
+ * @see https://tailwindcss.com/docs/mask-image
2528
+ */
2529
+ "mask-image": [{
2530
+ mask: ["none", l, i]
2531
+ }],
2532
+ // ---------------
2533
+ // --- Filters ---
2534
+ // ---------------
2535
+ /**
2536
+ * Filter
2537
+ * @see https://tailwindcss.com/docs/filter
2538
+ */
2539
+ filter: [{
2540
+ filter: [
2541
+ // Deprecated since Tailwind CSS v3.0.0
2542
+ "",
2543
+ "none",
2544
+ l,
2545
+ i
2546
+ ]
2547
+ }],
2548
+ /**
2549
+ * Blur
2550
+ * @see https://tailwindcss.com/docs/blur
2551
+ */
2552
+ blur: [{
2553
+ blur: Ee()
2554
+ }],
2555
+ /**
2556
+ * Brightness
2557
+ * @see https://tailwindcss.com/docs/brightness
2558
+ */
2559
+ brightness: [{
2560
+ brightness: [f, l, i]
2561
+ }],
2562
+ /**
2563
+ * Contrast
2564
+ * @see https://tailwindcss.com/docs/contrast
2565
+ */
2566
+ contrast: [{
2567
+ contrast: [f, l, i]
2568
+ }],
2569
+ /**
2570
+ * Drop Shadow
2571
+ * @see https://tailwindcss.com/docs/drop-shadow
2572
+ */
2573
+ "drop-shadow": [{
2574
+ "drop-shadow": [
2575
+ // Deprecated since Tailwind CSS v4.0.0
2576
+ "",
2577
+ "none",
2578
+ C,
2579
+ oe,
2580
+ te
2581
+ ]
2582
+ }],
2583
+ /**
2584
+ * Drop Shadow Color
2585
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
2586
+ */
2587
+ "drop-shadow-color": [{
2588
+ "drop-shadow": d()
2589
+ }],
2590
+ /**
2591
+ * Grayscale
2592
+ * @see https://tailwindcss.com/docs/grayscale
2593
+ */
2594
+ grayscale: [{
2595
+ grayscale: ["", f, l, i]
2596
+ }],
2597
+ /**
2598
+ * Hue Rotate
2599
+ * @see https://tailwindcss.com/docs/hue-rotate
2600
+ */
2601
+ "hue-rotate": [{
2602
+ "hue-rotate": [f, l, i]
2603
+ }],
2604
+ /**
2605
+ * Invert
2606
+ * @see https://tailwindcss.com/docs/invert
2607
+ */
2608
+ invert: [{
2609
+ invert: ["", f, l, i]
2610
+ }],
2611
+ /**
2612
+ * Saturate
2613
+ * @see https://tailwindcss.com/docs/saturate
2614
+ */
2615
+ saturate: [{
2616
+ saturate: [f, l, i]
2617
+ }],
2618
+ /**
2619
+ * Sepia
2620
+ * @see https://tailwindcss.com/docs/sepia
2621
+ */
2622
+ sepia: [{
2623
+ sepia: ["", f, l, i]
2624
+ }],
2625
+ /**
2626
+ * Backdrop Filter
2627
+ * @see https://tailwindcss.com/docs/backdrop-filter
2628
+ */
2629
+ "backdrop-filter": [{
2630
+ "backdrop-filter": [
2631
+ // Deprecated since Tailwind CSS v3.0.0
2632
+ "",
2633
+ "none",
2634
+ l,
2635
+ i
2636
+ ]
2637
+ }],
2638
+ /**
2639
+ * Backdrop Blur
2640
+ * @see https://tailwindcss.com/docs/backdrop-blur
2641
+ */
2642
+ "backdrop-blur": [{
2643
+ "backdrop-blur": Ee()
2644
+ }],
2645
+ /**
2646
+ * Backdrop Brightness
2647
+ * @see https://tailwindcss.com/docs/backdrop-brightness
2648
+ */
2649
+ "backdrop-brightness": [{
2650
+ "backdrop-brightness": [f, l, i]
2651
+ }],
2652
+ /**
2653
+ * Backdrop Contrast
2654
+ * @see https://tailwindcss.com/docs/backdrop-contrast
2655
+ */
2656
+ "backdrop-contrast": [{
2657
+ "backdrop-contrast": [f, l, i]
2658
+ }],
2659
+ /**
2660
+ * Backdrop Grayscale
2661
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
2662
+ */
2663
+ "backdrop-grayscale": [{
2664
+ "backdrop-grayscale": ["", f, l, i]
2665
+ }],
2666
+ /**
2667
+ * Backdrop Hue Rotate
2668
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2669
+ */
2670
+ "backdrop-hue-rotate": [{
2671
+ "backdrop-hue-rotate": [f, l, i]
2672
+ }],
2673
+ /**
2674
+ * Backdrop Invert
2675
+ * @see https://tailwindcss.com/docs/backdrop-invert
2676
+ */
2677
+ "backdrop-invert": [{
2678
+ "backdrop-invert": ["", f, l, i]
2679
+ }],
2680
+ /**
2681
+ * Backdrop Opacity
2682
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2683
+ */
2684
+ "backdrop-opacity": [{
2685
+ "backdrop-opacity": [f, l, i]
2686
+ }],
2687
+ /**
2688
+ * Backdrop Saturate
2689
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2690
+ */
2691
+ "backdrop-saturate": [{
2692
+ "backdrop-saturate": [f, l, i]
2693
+ }],
2694
+ /**
2695
+ * Backdrop Sepia
2696
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2697
+ */
2698
+ "backdrop-sepia": [{
2699
+ "backdrop-sepia": ["", f, l, i]
2700
+ }],
2701
+ // --------------
2702
+ // --- Tables ---
2703
+ // --------------
2704
+ /**
2705
+ * Border Collapse
2706
+ * @see https://tailwindcss.com/docs/border-collapse
2707
+ */
2708
+ "border-collapse": [{
2709
+ border: ["collapse", "separate"]
2710
+ }],
2711
+ /**
2712
+ * Border Spacing
2713
+ * @see https://tailwindcss.com/docs/border-spacing
2714
+ */
2715
+ "border-spacing": [{
2716
+ "border-spacing": m()
2717
+ }],
2718
+ /**
2719
+ * Border Spacing X
2720
+ * @see https://tailwindcss.com/docs/border-spacing
2721
+ */
2722
+ "border-spacing-x": [{
2723
+ "border-spacing-x": m()
2724
+ }],
2725
+ /**
2726
+ * Border Spacing Y
2727
+ * @see https://tailwindcss.com/docs/border-spacing
2728
+ */
2729
+ "border-spacing-y": [{
2730
+ "border-spacing-y": m()
2731
+ }],
2732
+ /**
2733
+ * Table Layout
2734
+ * @see https://tailwindcss.com/docs/table-layout
2735
+ */
2736
+ "table-layout": [{
2737
+ table: ["auto", "fixed"]
2738
+ }],
2739
+ /**
2740
+ * Caption Side
2741
+ * @see https://tailwindcss.com/docs/caption-side
2742
+ */
2743
+ caption: [{
2744
+ caption: ["top", "bottom"]
2745
+ }],
2746
+ // ---------------------------------
2747
+ // --- Transitions and Animation ---
2748
+ // ---------------------------------
2749
+ /**
2750
+ * Transition Property
2751
+ * @see https://tailwindcss.com/docs/transition-property
2752
+ */
2753
+ transition: [{
2754
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", l, i]
2755
+ }],
2756
+ /**
2757
+ * Transition Behavior
2758
+ * @see https://tailwindcss.com/docs/transition-behavior
2759
+ */
2760
+ "transition-behavior": [{
2761
+ transition: ["normal", "discrete"]
2762
+ }],
2763
+ /**
2764
+ * Transition Duration
2765
+ * @see https://tailwindcss.com/docs/transition-duration
2766
+ */
2767
+ duration: [{
2768
+ duration: [f, "initial", l, i]
2769
+ }],
2770
+ /**
2771
+ * Transition Timing Function
2772
+ * @see https://tailwindcss.com/docs/transition-timing-function
2773
+ */
2774
+ ease: [{
2775
+ ease: ["linear", "initial", E, l, i]
2776
+ }],
2777
+ /**
2778
+ * Transition Delay
2779
+ * @see https://tailwindcss.com/docs/transition-delay
2780
+ */
2781
+ delay: [{
2782
+ delay: [f, l, i]
2783
+ }],
2784
+ /**
2785
+ * Animation
2786
+ * @see https://tailwindcss.com/docs/animation
2787
+ */
2788
+ animate: [{
2789
+ animate: ["none", $, l, i]
2790
+ }],
2791
+ // ------------------
2792
+ // --- Transforms ---
2793
+ // ------------------
2794
+ /**
2795
+ * Backface Visibility
2796
+ * @see https://tailwindcss.com/docs/backface-visibility
2797
+ */
2798
+ backface: [{
2799
+ backface: ["hidden", "visible"]
2800
+ }],
2801
+ /**
2802
+ * Perspective
2803
+ * @see https://tailwindcss.com/docs/perspective
2804
+ */
2805
+ perspective: [{
2806
+ perspective: [b, l, i]
2807
+ }],
2808
+ /**
2809
+ * Perspective Origin
2810
+ * @see https://tailwindcss.com/docs/perspective-origin
2811
+ */
2812
+ "perspective-origin": [{
2813
+ "perspective-origin": G()
2814
+ }],
2815
+ /**
2816
+ * Rotate
2817
+ * @see https://tailwindcss.com/docs/rotate
2818
+ */
2819
+ rotate: [{
2820
+ rotate: Z()
2821
+ }],
2822
+ /**
2823
+ * Rotate X
2824
+ * @see https://tailwindcss.com/docs/rotate
2825
+ */
2826
+ "rotate-x": [{
2827
+ "rotate-x": Z()
2828
+ }],
2829
+ /**
2830
+ * Rotate Y
2831
+ * @see https://tailwindcss.com/docs/rotate
2832
+ */
2833
+ "rotate-y": [{
2834
+ "rotate-y": Z()
2835
+ }],
2836
+ /**
2837
+ * Rotate Z
2838
+ * @see https://tailwindcss.com/docs/rotate
2839
+ */
2840
+ "rotate-z": [{
2841
+ "rotate-z": Z()
2842
+ }],
2843
+ /**
2844
+ * Scale
2845
+ * @see https://tailwindcss.com/docs/scale
2846
+ */
2847
+ scale: [{
2848
+ scale: ee()
2849
+ }],
2850
+ /**
2851
+ * Scale X
2852
+ * @see https://tailwindcss.com/docs/scale
2853
+ */
2854
+ "scale-x": [{
2855
+ "scale-x": ee()
2856
+ }],
2857
+ /**
2858
+ * Scale Y
2859
+ * @see https://tailwindcss.com/docs/scale
2860
+ */
2861
+ "scale-y": [{
2862
+ "scale-y": ee()
2863
+ }],
2864
+ /**
2865
+ * Scale Z
2866
+ * @see https://tailwindcss.com/docs/scale
2867
+ */
2868
+ "scale-z": [{
2869
+ "scale-z": ee()
2870
+ }],
2871
+ /**
2872
+ * Scale 3D
2873
+ * @see https://tailwindcss.com/docs/scale
2874
+ */
2875
+ "scale-3d": ["scale-3d"],
2876
+ /**
2877
+ * Skew
2878
+ * @see https://tailwindcss.com/docs/skew
2879
+ */
2880
+ skew: [{
2881
+ skew: ge()
2882
+ }],
2883
+ /**
2884
+ * Skew X
2885
+ * @see https://tailwindcss.com/docs/skew
2886
+ */
2887
+ "skew-x": [{
2888
+ "skew-x": ge()
2889
+ }],
2890
+ /**
2891
+ * Skew Y
2892
+ * @see https://tailwindcss.com/docs/skew
2893
+ */
2894
+ "skew-y": [{
2895
+ "skew-y": ge()
2896
+ }],
2897
+ /**
2898
+ * Transform
2899
+ * @see https://tailwindcss.com/docs/transform
2900
+ */
2901
+ transform: [{
2902
+ transform: [l, i, "", "none", "gpu", "cpu"]
2903
+ }],
2904
+ /**
2905
+ * Transform Origin
2906
+ * @see https://tailwindcss.com/docs/transform-origin
2907
+ */
2908
+ "transform-origin": [{
2909
+ origin: G()
2910
+ }],
2911
+ /**
2912
+ * Transform Style
2913
+ * @see https://tailwindcss.com/docs/transform-style
2914
+ */
2915
+ "transform-style": [{
2916
+ transform: ["3d", "flat"]
2917
+ }],
2918
+ /**
2919
+ * Translate
2920
+ * @see https://tailwindcss.com/docs/translate
2921
+ */
2922
+ translate: [{
2923
+ translate: re()
2924
+ }],
2925
+ /**
2926
+ * Translate X
2927
+ * @see https://tailwindcss.com/docs/translate
2928
+ */
2929
+ "translate-x": [{
2930
+ "translate-x": re()
2931
+ }],
2932
+ /**
2933
+ * Translate Y
2934
+ * @see https://tailwindcss.com/docs/translate
2935
+ */
2936
+ "translate-y": [{
2937
+ "translate-y": re()
2938
+ }],
2939
+ /**
2940
+ * Translate Z
2941
+ * @see https://tailwindcss.com/docs/translate
2942
+ */
2943
+ "translate-z": [{
2944
+ "translate-z": re()
2945
+ }],
2946
+ /**
2947
+ * Translate None
2948
+ * @see https://tailwindcss.com/docs/translate
2949
+ */
2950
+ "translate-none": ["translate-none"],
2951
+ // ---------------------
2952
+ // --- Interactivity ---
2953
+ // ---------------------
2954
+ /**
2955
+ * Accent Color
2956
+ * @see https://tailwindcss.com/docs/accent-color
2957
+ */
2958
+ accent: [{
2959
+ accent: d()
2960
+ }],
2961
+ /**
2962
+ * Appearance
2963
+ * @see https://tailwindcss.com/docs/appearance
2964
+ */
2965
+ appearance: [{
2966
+ appearance: ["none", "auto"]
2967
+ }],
2968
+ /**
2969
+ * Caret Color
2970
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2971
+ */
2972
+ "caret-color": [{
2973
+ caret: d()
2974
+ }],
2975
+ /**
2976
+ * Color Scheme
2977
+ * @see https://tailwindcss.com/docs/color-scheme
2978
+ */
2979
+ "color-scheme": [{
2980
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
2981
+ }],
2982
+ /**
2983
+ * Cursor
2984
+ * @see https://tailwindcss.com/docs/cursor
2985
+ */
2986
+ cursor: [{
2987
+ 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", l, i]
2988
+ }],
2989
+ /**
2990
+ * Field Sizing
2991
+ * @see https://tailwindcss.com/docs/field-sizing
2992
+ */
2993
+ "field-sizing": [{
2994
+ "field-sizing": ["fixed", "content"]
2995
+ }],
2996
+ /**
2997
+ * Pointer Events
2998
+ * @see https://tailwindcss.com/docs/pointer-events
2999
+ */
3000
+ "pointer-events": [{
3001
+ "pointer-events": ["auto", "none"]
3002
+ }],
3003
+ /**
3004
+ * Resize
3005
+ * @see https://tailwindcss.com/docs/resize
3006
+ */
3007
+ resize: [{
3008
+ resize: ["none", "", "y", "x"]
3009
+ }],
3010
+ /**
3011
+ * Scroll Behavior
3012
+ * @see https://tailwindcss.com/docs/scroll-behavior
3013
+ */
3014
+ "scroll-behavior": [{
3015
+ scroll: ["auto", "smooth"]
3016
+ }],
3017
+ /**
3018
+ * Scroll Margin
3019
+ * @see https://tailwindcss.com/docs/scroll-margin
3020
+ */
3021
+ "scroll-m": [{
3022
+ "scroll-m": m()
3023
+ }],
3024
+ /**
3025
+ * Scroll Margin X
3026
+ * @see https://tailwindcss.com/docs/scroll-margin
3027
+ */
3028
+ "scroll-mx": [{
3029
+ "scroll-mx": m()
3030
+ }],
3031
+ /**
3032
+ * Scroll Margin Y
3033
+ * @see https://tailwindcss.com/docs/scroll-margin
3034
+ */
3035
+ "scroll-my": [{
3036
+ "scroll-my": m()
3037
+ }],
3038
+ /**
3039
+ * Scroll Margin Start
3040
+ * @see https://tailwindcss.com/docs/scroll-margin
3041
+ */
3042
+ "scroll-ms": [{
3043
+ "scroll-ms": m()
3044
+ }],
3045
+ /**
3046
+ * Scroll Margin End
3047
+ * @see https://tailwindcss.com/docs/scroll-margin
3048
+ */
3049
+ "scroll-me": [{
3050
+ "scroll-me": m()
3051
+ }],
3052
+ /**
3053
+ * Scroll Margin Top
3054
+ * @see https://tailwindcss.com/docs/scroll-margin
3055
+ */
3056
+ "scroll-mt": [{
3057
+ "scroll-mt": m()
3058
+ }],
3059
+ /**
3060
+ * Scroll Margin Right
3061
+ * @see https://tailwindcss.com/docs/scroll-margin
3062
+ */
3063
+ "scroll-mr": [{
3064
+ "scroll-mr": m()
3065
+ }],
3066
+ /**
3067
+ * Scroll Margin Bottom
3068
+ * @see https://tailwindcss.com/docs/scroll-margin
3069
+ */
3070
+ "scroll-mb": [{
3071
+ "scroll-mb": m()
3072
+ }],
3073
+ /**
3074
+ * Scroll Margin Left
3075
+ * @see https://tailwindcss.com/docs/scroll-margin
3076
+ */
3077
+ "scroll-ml": [{
3078
+ "scroll-ml": m()
3079
+ }],
3080
+ /**
3081
+ * Scroll Padding
3082
+ * @see https://tailwindcss.com/docs/scroll-padding
3083
+ */
3084
+ "scroll-p": [{
3085
+ "scroll-p": m()
3086
+ }],
3087
+ /**
3088
+ * Scroll Padding X
3089
+ * @see https://tailwindcss.com/docs/scroll-padding
3090
+ */
3091
+ "scroll-px": [{
3092
+ "scroll-px": m()
3093
+ }],
3094
+ /**
3095
+ * Scroll Padding Y
3096
+ * @see https://tailwindcss.com/docs/scroll-padding
3097
+ */
3098
+ "scroll-py": [{
3099
+ "scroll-py": m()
3100
+ }],
3101
+ /**
3102
+ * Scroll Padding Start
3103
+ * @see https://tailwindcss.com/docs/scroll-padding
3104
+ */
3105
+ "scroll-ps": [{
3106
+ "scroll-ps": m()
3107
+ }],
3108
+ /**
3109
+ * Scroll Padding End
3110
+ * @see https://tailwindcss.com/docs/scroll-padding
3111
+ */
3112
+ "scroll-pe": [{
3113
+ "scroll-pe": m()
3114
+ }],
3115
+ /**
3116
+ * Scroll Padding Top
3117
+ * @see https://tailwindcss.com/docs/scroll-padding
3118
+ */
3119
+ "scroll-pt": [{
3120
+ "scroll-pt": m()
3121
+ }],
3122
+ /**
3123
+ * Scroll Padding Right
3124
+ * @see https://tailwindcss.com/docs/scroll-padding
3125
+ */
3126
+ "scroll-pr": [{
3127
+ "scroll-pr": m()
3128
+ }],
3129
+ /**
3130
+ * Scroll Padding Bottom
3131
+ * @see https://tailwindcss.com/docs/scroll-padding
3132
+ */
3133
+ "scroll-pb": [{
3134
+ "scroll-pb": m()
3135
+ }],
3136
+ /**
3137
+ * Scroll Padding Left
3138
+ * @see https://tailwindcss.com/docs/scroll-padding
3139
+ */
3140
+ "scroll-pl": [{
3141
+ "scroll-pl": m()
3142
+ }],
3143
+ /**
3144
+ * Scroll Snap Align
3145
+ * @see https://tailwindcss.com/docs/scroll-snap-align
3146
+ */
3147
+ "snap-align": [{
3148
+ snap: ["start", "end", "center", "align-none"]
3149
+ }],
3150
+ /**
3151
+ * Scroll Snap Stop
3152
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
3153
+ */
3154
+ "snap-stop": [{
3155
+ snap: ["normal", "always"]
3156
+ }],
3157
+ /**
3158
+ * Scroll Snap Type
3159
+ * @see https://tailwindcss.com/docs/scroll-snap-type
3160
+ */
3161
+ "snap-type": [{
3162
+ snap: ["none", "x", "y", "both"]
3163
+ }],
3164
+ /**
3165
+ * Scroll Snap Type Strictness
3166
+ * @see https://tailwindcss.com/docs/scroll-snap-type
3167
+ */
3168
+ "snap-strictness": [{
3169
+ snap: ["mandatory", "proximity"]
3170
+ }],
3171
+ /**
3172
+ * Touch Action
3173
+ * @see https://tailwindcss.com/docs/touch-action
3174
+ */
3175
+ touch: [{
3176
+ touch: ["auto", "none", "manipulation"]
3177
+ }],
3178
+ /**
3179
+ * Touch Action X
3180
+ * @see https://tailwindcss.com/docs/touch-action
3181
+ */
3182
+ "touch-x": [{
3183
+ "touch-pan": ["x", "left", "right"]
3184
+ }],
3185
+ /**
3186
+ * Touch Action Y
3187
+ * @see https://tailwindcss.com/docs/touch-action
3188
+ */
3189
+ "touch-y": [{
3190
+ "touch-pan": ["y", "up", "down"]
3191
+ }],
3192
+ /**
3193
+ * Touch Action Pinch Zoom
3194
+ * @see https://tailwindcss.com/docs/touch-action
3195
+ */
3196
+ "touch-pz": ["touch-pinch-zoom"],
3197
+ /**
3198
+ * User Select
3199
+ * @see https://tailwindcss.com/docs/user-select
3200
+ */
3201
+ select: [{
3202
+ select: ["none", "text", "all", "auto"]
3203
+ }],
3204
+ /**
3205
+ * Will Change
3206
+ * @see https://tailwindcss.com/docs/will-change
3207
+ */
3208
+ "will-change": [{
3209
+ "will-change": ["auto", "scroll", "contents", "transform", l, i]
3210
+ }],
3211
+ // -----------
3212
+ // --- SVG ---
3213
+ // -----------
3214
+ /**
3215
+ * Fill
3216
+ * @see https://tailwindcss.com/docs/fill
3217
+ */
3218
+ fill: [{
3219
+ fill: ["none", ...d()]
3220
+ }],
3221
+ /**
3222
+ * Stroke Width
3223
+ * @see https://tailwindcss.com/docs/stroke-width
3224
+ */
3225
+ "stroke-w": [{
3226
+ stroke: [f, X, F, he]
3227
+ }],
3228
+ /**
3229
+ * Stroke
3230
+ * @see https://tailwindcss.com/docs/stroke
3231
+ */
3232
+ stroke: [{
3233
+ stroke: ["none", ...d()]
3234
+ }],
3235
+ // ---------------------
3236
+ // --- Accessibility ---
3237
+ // ---------------------
3238
+ /**
3239
+ * Forced Color Adjust
3240
+ * @see https://tailwindcss.com/docs/forced-color-adjust
3241
+ */
3242
+ "forced-color-adjust": [{
3243
+ "forced-color-adjust": ["auto", "none"]
3244
+ }]
3245
+ },
3246
+ conflictingClassGroups: {
3247
+ overflow: ["overflow-x", "overflow-y"],
3248
+ overscroll: ["overscroll-x", "overscroll-y"],
3249
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
3250
+ "inset-x": ["right", "left"],
3251
+ "inset-y": ["top", "bottom"],
3252
+ flex: ["basis", "grow", "shrink"],
3253
+ gap: ["gap-x", "gap-y"],
3254
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
3255
+ px: ["pr", "pl"],
3256
+ py: ["pt", "pb"],
3257
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
3258
+ mx: ["mr", "ml"],
3259
+ my: ["mt", "mb"],
3260
+ size: ["w", "h"],
3261
+ "font-size": ["leading"],
3262
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
3263
+ "fvn-ordinal": ["fvn-normal"],
3264
+ "fvn-slashed-zero": ["fvn-normal"],
3265
+ "fvn-figure": ["fvn-normal"],
3266
+ "fvn-spacing": ["fvn-normal"],
3267
+ "fvn-fraction": ["fvn-normal"],
3268
+ "line-clamp": ["display", "overflow"],
3269
+ 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"],
3270
+ "rounded-s": ["rounded-ss", "rounded-es"],
3271
+ "rounded-e": ["rounded-se", "rounded-ee"],
3272
+ "rounded-t": ["rounded-tl", "rounded-tr"],
3273
+ "rounded-r": ["rounded-tr", "rounded-br"],
3274
+ "rounded-b": ["rounded-br", "rounded-bl"],
3275
+ "rounded-l": ["rounded-tl", "rounded-bl"],
3276
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
3277
+ "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"],
3278
+ "border-w-x": ["border-w-r", "border-w-l"],
3279
+ "border-w-y": ["border-w-t", "border-w-b"],
3280
+ "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"],
3281
+ "border-color-x": ["border-color-r", "border-color-l"],
3282
+ "border-color-y": ["border-color-t", "border-color-b"],
3283
+ translate: ["translate-x", "translate-y", "translate-none"],
3284
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
3285
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
3286
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
3287
+ "scroll-my": ["scroll-mt", "scroll-mb"],
3288
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
3289
+ "scroll-px": ["scroll-pr", "scroll-pl"],
3290
+ "scroll-py": ["scroll-pt", "scroll-pb"],
3291
+ touch: ["touch-x", "touch-y", "touch-pz"],
3292
+ "touch-x": ["touch"],
3293
+ "touch-y": ["touch"],
3294
+ "touch-pz": ["touch"]
3295
+ },
3296
+ conflictingClassGroupModifiers: {
3297
+ "font-size": ["leading"]
3298
+ },
3299
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
3300
+ };
3301
+ }, Hr = /* @__PURE__ */ Pr(Yr);
3302
+ function vt(...e) {
3303
+ return Hr(cr(e));
3304
+ }
3305
+ let N = null, ne = !1, se = null;
3306
+ async function Jr() {
3307
+ return N || (ne && se || (ne = !0, se = import("cogent-js").then((e) => {
3308
+ var t;
3309
+ return N = e.Query || ((t = e.default) == null ? void 0 : t.Query) || e.default || e, ne = !1, N;
3310
+ }).catch((e) => {
3311
+ throw console.error("Failed to load cogent-js:", e), ne = !1, e;
3312
+ })), se);
3313
+ }
3314
+ Jr();
3315
+ function St(...e) {
3316
+ if (!N)
3317
+ throw new Error("cogent-js Query class not loaded yet. Please wait for the module to load.");
3318
+ return new N(...e);
3319
+ }
3320
+ const Ze = _e(null);
3321
+ function zt({ children: e }) {
3322
+ const [t, r] = le(() => {
3323
+ if (typeof window < "u") {
3324
+ const n = document.documentElement.classList.contains("dark") ? "dark" : "light";
3325
+ return localStorage.getItem("theme") || n || "light";
3326
+ }
3327
+ return "light";
3328
+ });
3329
+ ye(() => {
3330
+ const n = window.document.documentElement;
3331
+ n.classList.remove("light", "dark"), n.classList.add(t), t === "dark" ? n.style.backgroundColor = "hsl(222.2, 84%, 4.9%)" : n.style.backgroundColor = "hsl(0, 0%, 100%)", typeof window < "u" && localStorage.setItem("theme", t);
3332
+ }, [t]);
3333
+ const s = {
3334
+ theme: t,
3335
+ setTheme: r,
3336
+ toggleTheme: () => {
3337
+ r((n) => n === "light" ? "dark" : "light");
3338
+ }
3339
+ };
3340
+ return /* @__PURE__ */ Le(Ze.Provider, { value: s, children: e });
3341
+ }
3342
+ function It() {
3343
+ const e = je(Ze);
3344
+ if (!e)
3345
+ throw new Error("useTheme must be used within a ThemeProvider");
3346
+ return e;
3347
+ }
3348
+ export {
3349
+ ot as AuthProvider,
3350
+ St as Query,
3351
+ zt as ThemeProvider,
3352
+ y as api,
3353
+ vt as cn,
3354
+ we as extractPaginationFromHeaders,
3355
+ Jr as loadCogent,
3356
+ wt as useAcceptInvitation,
3357
+ nt as useAuth,
3358
+ yt as useCancelInvitation,
3359
+ pt as useInvitations,
3360
+ ht as useInviteUser,
3361
+ ft as useModelAudit,
3362
+ lt as useModelDelete,
3363
+ gt as useModelForceDelete,
3364
+ or as useModelIndex,
3365
+ kt as useModelQuery,
3366
+ ut as useModelRestore,
3367
+ at as useModelShow,
3368
+ ct as useModelStore,
3369
+ dt as useModelTrashed,
3370
+ it as useModelUpdate,
3371
+ mt as useNestedOperations,
3372
+ S as useOrganization,
3373
+ st as useOrganizationExists,
3374
+ rr as useOwner,
3375
+ bt as useResendInvitation,
3376
+ It as useTheme,
3377
+ xt as useToast
3378
+ };
3379
+ //# sourceMappingURL=index.js.map