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