eglador-ui-react 0.1.0-alpha.2

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