@datum-cloud/datum-ui 0.1.0

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