@vritti/quantum-ui 0.1.1 → 0.1.3

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