tailwind-variants 3.2.1 → 3.3.0

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