@atlas-art/ui-react 0.1.10 → 0.1.12

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