hermium 0.2.0 → 0.3.0

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