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