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