keli-ui 0.0.1

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