sunpeak 0.20.18 → 0.20.19

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