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