@process.co/ui 0.0.17 → 0.0.19

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