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