@atlas-art/ui-react 0.1.11 → 0.1.12

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