astro-md-editor 0.0.1

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