sunpeak 0.5.12 → 0.5.13

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