denwa-web-shared 1.0.9 → 1.0.11

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