@process.co/ui 0.0.18 → 0.0.20

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