ivt 0.3.2 → 0.3.4

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 (257) hide show
  1. package/dist/accordion/index.mjs +19 -1
  2. package/dist/accordion/index.mjs.map +1 -1
  3. package/dist/alert/index.mjs +43 -1
  4. package/dist/alert/index.mjs.map +1 -1
  5. package/dist/alert-dialog/index.mjs +260 -1
  6. package/dist/alert-dialog/index.mjs.map +1 -1
  7. package/dist/avatar/index.mjs +164 -1
  8. package/dist/avatar/index.mjs.map +1 -1
  9. package/dist/badge/index.mjs +6 -1
  10. package/dist/badge/index.mjs.map +1 -1
  11. package/dist/base/index.mjs +760 -1
  12. package/dist/base/index.mjs.map +1 -1
  13. package/dist/button/index.mjs +6 -1
  14. package/dist/button/index.mjs.map +1 -1
  15. package/dist/calendar/index.mjs +11 -1
  16. package/dist/calendar/index.mjs.map +1 -1
  17. package/dist/card/index.mjs +55 -1
  18. package/dist/card/index.mjs.map +1 -1
  19. package/dist/chart/index.mjs +17042 -1
  20. package/dist/chart/index.mjs.map +1 -1
  21. package/dist/checkbox/index.mjs +223 -1
  22. package/dist/checkbox/index.mjs.map +1 -1
  23. package/dist/chunks/_commonjsHelpers-DqEvkrE1.mjs +6 -0
  24. package/dist/chunks/_commonjsHelpers-DqEvkrE1.mjs.map +1 -0
  25. package/dist/chunks/accordion-BMP2PSSC.mjs +455 -0
  26. package/dist/chunks/{accordion-CdshDFZC.mjs.map → accordion-BMP2PSSC.mjs.map} +1 -1
  27. package/dist/chunks/badge-DxuZhgBF.mjs +57 -0
  28. package/dist/chunks/{badge-BYqshEmA.mjs.map → badge-DxuZhgBF.mjs.map} +1 -1
  29. package/dist/chunks/bundle-mjs-tFg__FnT.mjs +4491 -0
  30. package/dist/chunks/{bundle-mjs-9BXytT_r.mjs.map → bundle-mjs-tFg__FnT.mjs.map} +1 -1
  31. package/dist/chunks/button-CX0htulo.mjs +47 -0
  32. package/dist/chunks/{button-DrFZXJ7z.mjs.map → button-CX0htulo.mjs.map} +1 -1
  33. package/dist/chunks/calendar-B4IV5RyM.mjs +7106 -0
  34. package/dist/chunks/calendar-B4IV5RyM.mjs.map +1 -0
  35. package/dist/chunks/check-B7209s3e.mjs +15 -0
  36. package/dist/chunks/{check-CimnOyD7.mjs.map → check-B7209s3e.mjs.map} +1 -1
  37. package/dist/chunks/chevron-down-D84DRJBv.mjs +15 -0
  38. package/dist/chunks/{chevron-down-D3fvbjxE.mjs.map → chevron-down-D84DRJBv.mjs.map} +1 -1
  39. package/dist/chunks/chevron-left-DtL1t1DJ.mjs +15 -0
  40. package/dist/chunks/{chevron-left-CrN7DlXg.mjs.map → chevron-left-DtL1t1DJ.mjs.map} +1 -1
  41. package/dist/chunks/chevron-right-Cdxg1JSQ.mjs +15 -0
  42. package/dist/chunks/{chevron-right-BMSCuDGK.mjs.map → chevron-right-Cdxg1JSQ.mjs.map} +1 -1
  43. package/dist/chunks/chevrons-up-down-DtBUG1i8.mjs +22 -0
  44. package/dist/chunks/{chevrons-up-down-DBgvRkZm.mjs.map → chevrons-up-down-DtBUG1i8.mjs.map} +1 -1
  45. package/dist/chunks/circle-BLWMZ9yp.mjs +17 -0
  46. package/dist/chunks/{circle-CGqt18Bd.mjs.map → circle-BLWMZ9yp.mjs.map} +1 -1
  47. package/dist/chunks/command-C8cVzg-x.mjs +611 -0
  48. package/dist/chunks/command-C8cVzg-x.mjs.map +1 -0
  49. package/dist/chunks/createLucideIcon-Ba0IWqsz.mjs +60 -0
  50. package/dist/chunks/{createLucideIcon-L-tld2uc.mjs.map → createLucideIcon-Ba0IWqsz.mjs.map} +1 -1
  51. package/dist/chunks/dialog-D9vbxUuQ.mjs +80 -0
  52. package/dist/chunks/{dialog-36eqHzT3.mjs.map → dialog-D9vbxUuQ.mjs.map} +1 -1
  53. package/dist/chunks/hover-card-idvDPXrI.mjs +274 -0
  54. package/dist/chunks/{hover-card-Cnd58du6.mjs.map → hover-card-idvDPXrI.mjs.map} +1 -1
  55. package/dist/chunks/index-6JUj2Tld.mjs +18 -0
  56. package/dist/chunks/{index-CRxQlsb9.mjs.map → index-6JUj2Tld.mjs.map} +1 -1
  57. package/dist/chunks/index-B0IElWB4.mjs +51 -0
  58. package/dist/chunks/{index-vmPXTidH.mjs.map → index-B0IElWB4.mjs.map} +1 -1
  59. package/dist/chunks/index-B4VRyyD1.mjs +40 -0
  60. package/dist/chunks/index-B4VRyyD1.mjs.map +1 -0
  61. package/dist/chunks/index-BE-_q4IW.mjs +266 -0
  62. package/dist/chunks/index-BE-_q4IW.mjs.map +1 -0
  63. package/dist/chunks/index-BNxaLFA6.mjs +216 -0
  64. package/dist/chunks/{index-LvOFIVGz.mjs.map → index-BNxaLFA6.mjs.map} +1 -1
  65. package/dist/chunks/index-BZUrHhU8.mjs +7 -0
  66. package/dist/chunks/{index-CLtWFQL5.mjs.map → index-BZUrHhU8.mjs.map} +1 -1
  67. package/dist/chunks/index-B_FsTtnF.mjs +110 -0
  68. package/dist/chunks/{index-CCcl327A.mjs.map → index-B_FsTtnF.mjs.map} +1 -1
  69. package/dist/chunks/index-CAg47KJ6.mjs +13 -0
  70. package/dist/chunks/{index-CXszXOf_.mjs.map → index-CAg47KJ6.mjs.map} +1 -1
  71. package/dist/chunks/index-CXuEm8w1.mjs +12 -0
  72. package/dist/chunks/{index-CU_y1XAz.mjs.map → index-CXuEm8w1.mjs.map} +1 -1
  73. package/dist/chunks/index-C_jFwfR_.mjs +77 -0
  74. package/dist/chunks/{index-CybgQKpz.mjs.map → index-C_jFwfR_.mjs.map} +1 -1
  75. package/dist/chunks/index-CglX-DNW.mjs +21 -0
  76. package/dist/chunks/index-CglX-DNW.mjs.map +1 -0
  77. package/dist/chunks/index-CyMuypYR.mjs +324 -0
  78. package/dist/chunks/{index-DUNcuWJE.mjs.map → index-CyMuypYR.mjs.map} +1 -1
  79. package/dist/chunks/index-D0S6rRRE.mjs +50 -0
  80. package/dist/chunks/{index-w9bxia3O.mjs.map → index-D0S6rRRE.mjs.map} +1 -1
  81. package/dist/chunks/index-D23BhVQG.mjs +859 -0
  82. package/dist/chunks/{index-DZHMFdr0.mjs.map → index-D23BhVQG.mjs.map} +1 -1
  83. package/dist/chunks/index-D2wfJaZh.mjs +145 -0
  84. package/dist/chunks/index-D2wfJaZh.mjs.map +1 -0
  85. package/dist/chunks/index-DNvm9MP3.mjs +34 -0
  86. package/dist/chunks/{index-D2sZp5OP.mjs.map → index-DNvm9MP3.mjs.map} +1 -1
  87. package/dist/chunks/index-Dm4_czlz.mjs +12 -0
  88. package/dist/chunks/index-Dm4_czlz.mjs.map +1 -0
  89. package/dist/chunks/index-PaJVyocC.mjs +151 -0
  90. package/dist/chunks/index-PaJVyocC.mjs.map +1 -0
  91. package/dist/chunks/index-kr6_v_F8.mjs +2370 -0
  92. package/dist/chunks/index-kr6_v_F8.mjs.map +1 -0
  93. package/dist/chunks/index-sz_BcBbA.mjs +1210 -0
  94. package/dist/chunks/index-sz_BcBbA.mjs.map +1 -0
  95. package/dist/chunks/input-DK1slFF1.mjs +14 -0
  96. package/dist/chunks/{input-85UFztMJ.mjs.map → input-DK1slFF1.mjs.map} +1 -1
  97. package/dist/chunks/label-D7ONQdHc.mjs +32 -0
  98. package/dist/chunks/{label-CICFzZIt.mjs.map → label-D7ONQdHc.mjs.map} +1 -1
  99. package/dist/chunks/pagination-BM_IQ6Qk.mjs +106 -0
  100. package/dist/chunks/{pagination-CReDQes6.mjs.map → pagination-BM_IQ6Qk.mjs.map} +1 -1
  101. package/dist/chunks/popover-D3F326FR.mjs +308 -0
  102. package/dist/chunks/{popover-Cn2ZTvKd.mjs.map → popover-D3F326FR.mjs.map} +1 -1
  103. package/dist/chunks/progress-BCl5yD5Q.mjs +99 -0
  104. package/dist/chunks/{progress-CSxQH6-f.mjs.map → progress-BCl5yD5Q.mjs.map} +1 -1
  105. package/dist/chunks/scroll-area-DB3eUx8V.mjs +791 -0
  106. package/dist/chunks/scroll-area-DB3eUx8V.mjs.map +1 -0
  107. package/dist/chunks/select-Cw81y8pT.mjs +104 -0
  108. package/dist/chunks/{select-BR6_N_Yo.mjs.map → select-Cw81y8pT.mjs.map} +1 -1
  109. package/dist/chunks/separator-2k1C7RSn.mjs +48 -0
  110. package/dist/chunks/{separator-BB6-E9Z1.mjs.map → separator-2k1C7RSn.mjs.map} +1 -1
  111. package/dist/chunks/skeleton-qx8-vr62.mjs +13 -0
  112. package/dist/chunks/{skeleton-XPWWiaac.mjs.map → skeleton-qx8-vr62.mjs.map} +1 -1
  113. package/dist/chunks/sortable-D8ayoe_b.mjs +4221 -0
  114. package/dist/chunks/sortable-D8ayoe_b.mjs.map +1 -0
  115. package/dist/chunks/table-BDNUhtz-.mjs +62 -0
  116. package/dist/chunks/{table-LQIHzPHi.mjs.map → table-BDNUhtz-.mjs.map} +1 -1
  117. package/dist/chunks/toggle-CE2ycSdL.mjs +65 -0
  118. package/dist/chunks/{toggle-Co72WXGd.mjs.map → toggle-CE2ycSdL.mjs.map} +1 -1
  119. package/dist/chunks/tooltip-DLD0ycR4.mjs +596 -0
  120. package/dist/chunks/{tooltip-qX2HjdJP.mjs.map → tooltip-DLD0ycR4.mjs.map} +1 -1
  121. package/dist/chunks/tslib.es6-BgHLrbno.mjs +61 -0
  122. package/dist/chunks/{tslib.es6-cMGqxriw.mjs.map → tslib.es6-BgHLrbno.mjs.map} +1 -1
  123. package/dist/chunks/utils-BUelq9Ro.mjs +42 -0
  124. package/dist/chunks/utils-BUelq9Ro.mjs.map +1 -0
  125. package/dist/chunks/x-Bjz0Vo6R.mjs +22 -0
  126. package/dist/chunks/{x-BNLl0E-E.mjs.map → x-Bjz0Vo6R.mjs.map} +1 -1
  127. package/dist/combobox/index.mjs +65 -1
  128. package/dist/combobox/index.mjs.map +1 -1
  129. package/dist/command/index.mjs +23 -1
  130. package/dist/command/index.mjs.map +1 -1
  131. package/dist/data-table/index.mjs +673 -1
  132. package/dist/data-table/index.mjs.map +1 -1
  133. package/dist/dialog/index.mjs +22 -1
  134. package/dist/dialog/index.mjs.map +1 -1
  135. package/dist/dropdown-menu/index.mjs +438 -1
  136. package/dist/dropdown-menu/index.mjs.map +1 -1
  137. package/dist/dropzone/index.mjs +7839 -1
  138. package/dist/dropzone/index.mjs.map +1 -1
  139. package/dist/form/index.mjs +649 -1
  140. package/dist/form/index.mjs.map +1 -1
  141. package/dist/hover-card/index.mjs +18 -1
  142. package/dist/hover-card/index.mjs.map +1 -1
  143. package/dist/icon/index.mjs +317 -1
  144. package/dist/icon/index.mjs.map +1 -1
  145. package/dist/index.css +1 -1
  146. package/dist/input/index.mjs +4 -1
  147. package/dist/input/index.mjs.map +1 -1
  148. package/dist/ivt.css +1 -1
  149. package/dist/label/index.mjs +8 -1
  150. package/dist/label/index.mjs.map +1 -1
  151. package/dist/menubar/index.mjs +583 -1
  152. package/dist/menubar/index.mjs.map +1 -1
  153. package/dist/multi-select/index.mjs +297 -1
  154. package/dist/multi-select/index.mjs.map +1 -1
  155. package/dist/pagination/index.mjs +10 -1
  156. package/dist/pagination/index.mjs.map +1 -1
  157. package/dist/popover/index.mjs +21 -1
  158. package/dist/popover/index.mjs.map +1 -1
  159. package/dist/progress/index.mjs +9 -1
  160. package/dist/progress/index.mjs.map +1 -1
  161. package/dist/radio-group/index.mjs +267 -1
  162. package/dist/radio-group/index.mjs.map +1 -1
  163. package/dist/scroll-area/index.mjs +15 -1
  164. package/dist/scroll-area/index.mjs.map +1 -1
  165. package/dist/select/index.mjs +8 -1
  166. package/dist/select/index.mjs.map +1 -1
  167. package/dist/separator/index.mjs +8 -1
  168. package/dist/separator/index.mjs.map +1 -1
  169. package/dist/sheet/index.mjs +96 -1
  170. package/dist/sheet/index.mjs.map +1 -1
  171. package/dist/skeleton/index.mjs +4 -1
  172. package/dist/skeleton/index.mjs.map +1 -1
  173. package/dist/sonner/index.mjs +1140 -1
  174. package/dist/sonner/index.mjs.map +1 -1
  175. package/dist/sortable/index.mjs +8 -1
  176. package/dist/sortable/index.mjs.map +1 -1
  177. package/dist/table/index.mjs +4 -1
  178. package/dist/table/index.mjs.map +1 -1
  179. package/dist/tabs/index.mjs +193 -1
  180. package/dist/tabs/index.mjs.map +1 -1
  181. package/dist/textarea/index.mjs +13 -1
  182. package/dist/textarea/index.mjs.map +1 -1
  183. package/dist/toast/index.mjs +705 -1
  184. package/dist/toast/index.mjs.map +1 -1
  185. package/dist/toggle/index.mjs +12 -1
  186. package/dist/toggle/index.mjs.map +1 -1
  187. package/dist/toggle-group/index.mjs +219 -1
  188. package/dist/toggle-group/index.mjs.map +1 -1
  189. package/dist/tooltip/index.mjs +20 -1
  190. package/dist/tooltip/index.mjs.map +1 -1
  191. package/package.json +2 -2
  192. package/dist/chunks/_commonjsHelpers-6qLFzZa5.mjs +0 -2
  193. package/dist/chunks/_commonjsHelpers-6qLFzZa5.mjs.map +0 -1
  194. package/dist/chunks/accordion-CdshDFZC.mjs +0 -2
  195. package/dist/chunks/badge-BYqshEmA.mjs +0 -2
  196. package/dist/chunks/bundle-mjs-9BXytT_r.mjs +0 -2
  197. package/dist/chunks/button-DrFZXJ7z.mjs +0 -2
  198. package/dist/chunks/calendar-BY6t8wdJ.mjs +0 -2
  199. package/dist/chunks/calendar-BY6t8wdJ.mjs.map +0 -1
  200. package/dist/chunks/check-CimnOyD7.mjs +0 -2
  201. package/dist/chunks/chevron-down-D3fvbjxE.mjs +0 -2
  202. package/dist/chunks/chevron-left-CrN7DlXg.mjs +0 -2
  203. package/dist/chunks/chevron-right-BMSCuDGK.mjs +0 -2
  204. package/dist/chunks/chevrons-up-down-DBgvRkZm.mjs +0 -2
  205. package/dist/chunks/circle-CGqt18Bd.mjs +0 -2
  206. package/dist/chunks/command-C6ON-ciq.mjs +0 -2
  207. package/dist/chunks/command-C6ON-ciq.mjs.map +0 -1
  208. package/dist/chunks/createLucideIcon-L-tld2uc.mjs +0 -2
  209. package/dist/chunks/dialog-36eqHzT3.mjs +0 -2
  210. package/dist/chunks/hover-card-Cnd58du6.mjs +0 -2
  211. package/dist/chunks/index-B4QsDzeM.mjs +0 -2
  212. package/dist/chunks/index-B4QsDzeM.mjs.map +0 -1
  213. package/dist/chunks/index-BdpYc58_.mjs +0 -2
  214. package/dist/chunks/index-BdpYc58_.mjs.map +0 -1
  215. package/dist/chunks/index-CCcl327A.mjs +0 -2
  216. package/dist/chunks/index-CLtWFQL5.mjs +0 -2
  217. package/dist/chunks/index-COvW87ew.mjs +0 -2
  218. package/dist/chunks/index-COvW87ew.mjs.map +0 -1
  219. package/dist/chunks/index-CRxQlsb9.mjs +0 -2
  220. package/dist/chunks/index-CU_y1XAz.mjs +0 -2
  221. package/dist/chunks/index-CXszXOf_.mjs +0 -2
  222. package/dist/chunks/index-CdJCOoFA.mjs +0 -2
  223. package/dist/chunks/index-CdJCOoFA.mjs.map +0 -1
  224. package/dist/chunks/index-Cpq7N5Ej.mjs +0 -2
  225. package/dist/chunks/index-Cpq7N5Ej.mjs.map +0 -1
  226. package/dist/chunks/index-CybgQKpz.mjs +0 -2
  227. package/dist/chunks/index-D2sZp5OP.mjs +0 -2
  228. package/dist/chunks/index-DOyt-JEx.mjs +0 -2
  229. package/dist/chunks/index-DOyt-JEx.mjs.map +0 -1
  230. package/dist/chunks/index-DUNcuWJE.mjs +0 -2
  231. package/dist/chunks/index-DZHMFdr0.mjs +0 -2
  232. package/dist/chunks/index-LvOFIVGz.mjs +0 -2
  233. package/dist/chunks/index-lvPXnk5F.mjs +0 -2
  234. package/dist/chunks/index-lvPXnk5F.mjs.map +0 -1
  235. package/dist/chunks/index-vmPXTidH.mjs +0 -2
  236. package/dist/chunks/index-w9bxia3O.mjs +0 -2
  237. package/dist/chunks/index-xew3kygQ.mjs +0 -2
  238. package/dist/chunks/index-xew3kygQ.mjs.map +0 -1
  239. package/dist/chunks/input-85UFztMJ.mjs +0 -2
  240. package/dist/chunks/label-CICFzZIt.mjs +0 -2
  241. package/dist/chunks/pagination-CReDQes6.mjs +0 -2
  242. package/dist/chunks/popover-Cn2ZTvKd.mjs +0 -2
  243. package/dist/chunks/progress-CSxQH6-f.mjs +0 -2
  244. package/dist/chunks/scroll-area-CvCz7cL_.mjs +0 -2
  245. package/dist/chunks/scroll-area-CvCz7cL_.mjs.map +0 -1
  246. package/dist/chunks/select-BR6_N_Yo.mjs +0 -2
  247. package/dist/chunks/separator-BB6-E9Z1.mjs +0 -2
  248. package/dist/chunks/skeleton-XPWWiaac.mjs +0 -2
  249. package/dist/chunks/sortable-CqPFGn8Q.mjs +0 -2
  250. package/dist/chunks/sortable-CqPFGn8Q.mjs.map +0 -1
  251. package/dist/chunks/table-LQIHzPHi.mjs +0 -2
  252. package/dist/chunks/toggle-Co72WXGd.mjs +0 -2
  253. package/dist/chunks/tooltip-qX2HjdJP.mjs +0 -2
  254. package/dist/chunks/tslib.es6-cMGqxriw.mjs +0 -2
  255. package/dist/chunks/utils-BctauAA9.mjs +0 -2
  256. package/dist/chunks/utils-BctauAA9.mjs.map +0 -1
  257. package/dist/chunks/x-BNLl0E-E.mjs +0 -2
@@ -0,0 +1,4491 @@
1
+ const CLASS_PART_SEPARATOR = '-';
2
+ const createClassGroupUtils = (config)=>{
3
+ const classMap = createClassMap(config);
4
+ const { conflictingClassGroups, conflictingClassGroupModifiers } = config;
5
+ const getClassGroupId = (className)=>{
6
+ const classParts = className.split(CLASS_PART_SEPARATOR);
7
+ // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.
8
+ if (classParts[0] === '' && classParts.length !== 1) {
9
+ classParts.shift();
10
+ }
11
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
12
+ };
13
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier)=>{
14
+ const conflicts = conflictingClassGroups[classGroupId] || [];
15
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
16
+ return [
17
+ ...conflicts,
18
+ ...conflictingClassGroupModifiers[classGroupId]
19
+ ];
20
+ }
21
+ return conflicts;
22
+ };
23
+ return {
24
+ getClassGroupId,
25
+ getConflictingClassGroupIds
26
+ };
27
+ };
28
+ const getGroupRecursive = (classParts, classPartObject)=>{
29
+ if (classParts.length === 0) {
30
+ return classPartObject.classGroupId;
31
+ }
32
+ const currentClassPart = classParts[0];
33
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
34
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
35
+ if (classGroupFromNextClassPart) {
36
+ return classGroupFromNextClassPart;
37
+ }
38
+ if (classPartObject.validators.length === 0) {
39
+ return undefined;
40
+ }
41
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
42
+ return classPartObject.validators.find(({ validator })=>validator(classRest))?.classGroupId;
43
+ };
44
+ const arbitraryPropertyRegex = /^\[(.+)\]$/;
45
+ const getGroupIdForArbitraryProperty = (className)=>{
46
+ if (arbitraryPropertyRegex.test(className)) {
47
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
48
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
49
+ if (property) {
50
+ // I use two dots here because one dot is used as prefix for class groups in plugins
51
+ return 'arbitrary..' + property;
52
+ }
53
+ }
54
+ };
55
+ /**
56
+ * Exported for testing only
57
+ */ const createClassMap = (config)=>{
58
+ const { theme, classGroups } = config;
59
+ const classMap = {
60
+ nextPart: new Map(),
61
+ validators: []
62
+ };
63
+ for(const classGroupId in classGroups){
64
+ processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);
65
+ }
66
+ return classMap;
67
+ };
68
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme)=>{
69
+ classGroup.forEach((classDefinition)=>{
70
+ if (typeof classDefinition === 'string') {
71
+ const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
72
+ classPartObjectToEdit.classGroupId = classGroupId;
73
+ return;
74
+ }
75
+ if (typeof classDefinition === 'function') {
76
+ if (isThemeGetter(classDefinition)) {
77
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
78
+ return;
79
+ }
80
+ classPartObject.validators.push({
81
+ validator: classDefinition,
82
+ classGroupId
83
+ });
84
+ return;
85
+ }
86
+ Object.entries(classDefinition).forEach(([key, classGroup])=>{
87
+ processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
88
+ });
89
+ });
90
+ };
91
+ const getPart = (classPartObject, path)=>{
92
+ let currentClassPartObject = classPartObject;
93
+ path.split(CLASS_PART_SEPARATOR).forEach((pathPart)=>{
94
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
95
+ currentClassPartObject.nextPart.set(pathPart, {
96
+ nextPart: new Map(),
97
+ validators: []
98
+ });
99
+ }
100
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
101
+ });
102
+ return currentClassPartObject;
103
+ };
104
+ const isThemeGetter = (func)=>func.isThemeGetter;
105
+ // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
106
+ const createLruCache = (maxCacheSize)=>{
107
+ if (maxCacheSize < 1) {
108
+ return {
109
+ get: ()=>undefined,
110
+ set: ()=>{}
111
+ };
112
+ }
113
+ let cacheSize = 0;
114
+ let cache = new Map();
115
+ let previousCache = new Map();
116
+ const update = (key, value)=>{
117
+ cache.set(key, value);
118
+ cacheSize++;
119
+ if (cacheSize > maxCacheSize) {
120
+ cacheSize = 0;
121
+ previousCache = cache;
122
+ cache = new Map();
123
+ }
124
+ };
125
+ return {
126
+ get (key) {
127
+ let value = cache.get(key);
128
+ if (value !== undefined) {
129
+ return value;
130
+ }
131
+ if ((value = previousCache.get(key)) !== undefined) {
132
+ update(key, value);
133
+ return value;
134
+ }
135
+ },
136
+ set (key, value) {
137
+ if (cache.has(key)) {
138
+ cache.set(key, value);
139
+ } else {
140
+ update(key, value);
141
+ }
142
+ }
143
+ };
144
+ };
145
+ const IMPORTANT_MODIFIER = '!';
146
+ const MODIFIER_SEPARATOR = ':';
147
+ const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;
148
+ const createParseClassName = (config)=>{
149
+ const { prefix, experimentalParseClassName } = config;
150
+ /**
151
+ * Parse class name into parts.
152
+ *
153
+ * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
154
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
155
+ */ let parseClassName = (className)=>{
156
+ const modifiers = [];
157
+ let bracketDepth = 0;
158
+ let parenDepth = 0;
159
+ let modifierStart = 0;
160
+ let postfixModifierPosition;
161
+ for(let index = 0; index < className.length; index++){
162
+ let currentCharacter = className[index];
163
+ if (bracketDepth === 0 && parenDepth === 0) {
164
+ if (currentCharacter === MODIFIER_SEPARATOR) {
165
+ modifiers.push(className.slice(modifierStart, index));
166
+ modifierStart = index + MODIFIER_SEPARATOR_LENGTH;
167
+ continue;
168
+ }
169
+ if (currentCharacter === '/') {
170
+ postfixModifierPosition = index;
171
+ continue;
172
+ }
173
+ }
174
+ if (currentCharacter === '[') {
175
+ bracketDepth++;
176
+ } else if (currentCharacter === ']') {
177
+ bracketDepth--;
178
+ } else if (currentCharacter === '(') {
179
+ parenDepth++;
180
+ } else if (currentCharacter === ')') {
181
+ parenDepth--;
182
+ }
183
+ }
184
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
185
+ const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);
186
+ const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;
187
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
188
+ return {
189
+ modifiers,
190
+ hasImportantModifier,
191
+ baseClassName,
192
+ maybePostfixModifierPosition
193
+ };
194
+ };
195
+ if (prefix) {
196
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
197
+ const parseClassNameOriginal = parseClassName;
198
+ parseClassName = (className)=>className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {
199
+ isExternal: true,
200
+ modifiers: [],
201
+ hasImportantModifier: false,
202
+ baseClassName: className,
203
+ maybePostfixModifierPosition: undefined
204
+ };
205
+ }
206
+ if (experimentalParseClassName) {
207
+ const parseClassNameOriginal = parseClassName;
208
+ parseClassName = (className)=>experimentalParseClassName({
209
+ className,
210
+ parseClassName: parseClassNameOriginal
211
+ });
212
+ }
213
+ return parseClassName;
214
+ };
215
+ const stripImportantModifier = (baseClassName)=>{
216
+ if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {
217
+ return baseClassName.substring(0, baseClassName.length - 1);
218
+ }
219
+ /**
220
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
221
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
222
+ */ if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {
223
+ return baseClassName.substring(1);
224
+ }
225
+ return baseClassName;
226
+ };
227
+ /**
228
+ * Sorts modifiers according to following schema:
229
+ * - Predefined modifiers are sorted alphabetically
230
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
231
+ */ const createSortModifiers = (config)=>{
232
+ const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map((modifier)=>[
233
+ modifier,
234
+ true
235
+ ]));
236
+ const sortModifiers = (modifiers)=>{
237
+ if (modifiers.length <= 1) {
238
+ return modifiers;
239
+ }
240
+ const sortedModifiers = [];
241
+ let unsortedModifiers = [];
242
+ modifiers.forEach((modifier)=>{
243
+ const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];
244
+ if (isPositionSensitive) {
245
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
246
+ unsortedModifiers = [];
247
+ } else {
248
+ unsortedModifiers.push(modifier);
249
+ }
250
+ });
251
+ sortedModifiers.push(...unsortedModifiers.sort());
252
+ return sortedModifiers;
253
+ };
254
+ return sortModifiers;
255
+ };
256
+ const createConfigUtils = (config)=>({
257
+ cache: createLruCache(config.cacheSize),
258
+ parseClassName: createParseClassName(config),
259
+ sortModifiers: createSortModifiers(config),
260
+ ...createClassGroupUtils(config)
261
+ });
262
+ const SPLIT_CLASSES_REGEX = /\s+/;
263
+ const mergeClassList = (classList, configUtils)=>{
264
+ const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } = configUtils;
265
+ /**
266
+ * Set of classGroupIds in following format:
267
+ * `{importantModifier}{variantModifiers}{classGroupId}`
268
+ * @example 'float'
269
+ * @example 'hover:focus:bg-color'
270
+ * @example 'md:!pr'
271
+ */ const classGroupsInConflict = [];
272
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
273
+ let result = '';
274
+ for(let index = classNames.length - 1; index >= 0; index -= 1){
275
+ const originalClassName = classNames[index];
276
+ const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName);
277
+ if (isExternal) {
278
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
279
+ continue;
280
+ }
281
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
282
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
283
+ if (!classGroupId) {
284
+ if (!hasPostfixModifier) {
285
+ // Not a Tailwind class
286
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
287
+ continue;
288
+ }
289
+ classGroupId = getClassGroupId(baseClassName);
290
+ if (!classGroupId) {
291
+ // Not a Tailwind class
292
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
293
+ continue;
294
+ }
295
+ hasPostfixModifier = false;
296
+ }
297
+ const variantModifier = sortModifiers(modifiers).join(':');
298
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
299
+ const classId = modifierId + classGroupId;
300
+ if (classGroupsInConflict.includes(classId)) {
301
+ continue;
302
+ }
303
+ classGroupsInConflict.push(classId);
304
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
305
+ for(let i = 0; i < conflictGroups.length; ++i){
306
+ const group = conflictGroups[i];
307
+ classGroupsInConflict.push(modifierId + group);
308
+ }
309
+ // Tailwind class not in conflict
310
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
311
+ }
312
+ return result;
313
+ };
314
+ /**
315
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
316
+ *
317
+ * Specifically:
318
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
319
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
320
+ *
321
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
322
+ */ function twJoin() {
323
+ let index = 0;
324
+ let argument;
325
+ let resolvedValue;
326
+ let string = '';
327
+ while(index < arguments.length){
328
+ if (argument = arguments[index++]) {
329
+ if (resolvedValue = toValue(argument)) {
330
+ string && (string += ' ');
331
+ string += resolvedValue;
332
+ }
333
+ }
334
+ }
335
+ return string;
336
+ }
337
+ const toValue = (mix)=>{
338
+ if (typeof mix === 'string') {
339
+ return mix;
340
+ }
341
+ let resolvedValue;
342
+ let string = '';
343
+ for(let k = 0; k < mix.length; k++){
344
+ if (mix[k]) {
345
+ if (resolvedValue = toValue(mix[k])) {
346
+ string && (string += ' ');
347
+ string += resolvedValue;
348
+ }
349
+ }
350
+ }
351
+ return string;
352
+ };
353
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
354
+ let configUtils;
355
+ let cacheGet;
356
+ let cacheSet;
357
+ let functionToCall = initTailwindMerge;
358
+ function initTailwindMerge(classList) {
359
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent)=>createConfigCurrent(previousConfig), createConfigFirst());
360
+ configUtils = createConfigUtils(config);
361
+ cacheGet = configUtils.cache.get;
362
+ cacheSet = configUtils.cache.set;
363
+ functionToCall = tailwindMerge;
364
+ return tailwindMerge(classList);
365
+ }
366
+ function tailwindMerge(classList) {
367
+ const cachedResult = cacheGet(classList);
368
+ if (cachedResult) {
369
+ return cachedResult;
370
+ }
371
+ const result = mergeClassList(classList, configUtils);
372
+ cacheSet(classList, result);
373
+ return result;
374
+ }
375
+ return function callTailwindMerge() {
376
+ return functionToCall(twJoin.apply(null, arguments));
377
+ };
378
+ }
379
+ const fromTheme = (key)=>{
380
+ const themeGetter = (theme)=>theme[key] || [];
381
+ themeGetter.isThemeGetter = true;
382
+ return themeGetter;
383
+ };
384
+ const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
385
+ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
386
+ const fractionRegex = /^\d+\/\d+$/;
387
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
388
+ 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$/;
389
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
390
+ // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
391
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
392
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
393
+ const isFraction = (value)=>fractionRegex.test(value);
394
+ const isNumber = (value)=>!!value && !Number.isNaN(Number(value));
395
+ const isInteger = (value)=>!!value && Number.isInteger(Number(value));
396
+ const isPercent = (value)=>value.endsWith('%') && isNumber(value.slice(0, -1));
397
+ const isTshirtSize = (value)=>tshirtUnitRegex.test(value);
398
+ const isAny = ()=>true;
399
+ const isLengthOnly = (value)=>// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
400
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
401
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
402
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
403
+ const isNever = ()=>false;
404
+ const isShadow = (value)=>shadowRegex.test(value);
405
+ const isImage = (value)=>imageRegex.test(value);
406
+ const isAnyNonArbitrary = (value)=>!isArbitraryValue(value) && !isArbitraryVariable(value);
407
+ const isArbitrarySize = (value)=>getIsArbitraryValue(value, isLabelSize, isNever);
408
+ const isArbitraryValue = (value)=>arbitraryValueRegex.test(value);
409
+ const isArbitraryLength = (value)=>getIsArbitraryValue(value, isLabelLength, isLengthOnly);
410
+ const isArbitraryNumber = (value)=>getIsArbitraryValue(value, isLabelNumber, isNumber);
411
+ const isArbitraryPosition = (value)=>getIsArbitraryValue(value, isLabelPosition, isNever);
412
+ const isArbitraryImage = (value)=>getIsArbitraryValue(value, isLabelImage, isImage);
413
+ const isArbitraryShadow = (value)=>getIsArbitraryValue(value, isLabelShadow, isShadow);
414
+ const isArbitraryVariable = (value)=>arbitraryVariableRegex.test(value);
415
+ const isArbitraryVariableLength = (value)=>getIsArbitraryVariable(value, isLabelLength);
416
+ const isArbitraryVariableFamilyName = (value)=>getIsArbitraryVariable(value, isLabelFamilyName);
417
+ const isArbitraryVariablePosition = (value)=>getIsArbitraryVariable(value, isLabelPosition);
418
+ const isArbitraryVariableSize = (value)=>getIsArbitraryVariable(value, isLabelSize);
419
+ const isArbitraryVariableImage = (value)=>getIsArbitraryVariable(value, isLabelImage);
420
+ const isArbitraryVariableShadow = (value)=>getIsArbitraryVariable(value, isLabelShadow, true);
421
+ // Helpers
422
+ const getIsArbitraryValue = (value, testLabel, testValue)=>{
423
+ const result = arbitraryValueRegex.exec(value);
424
+ if (result) {
425
+ if (result[1]) {
426
+ return testLabel(result[1]);
427
+ }
428
+ return testValue(result[2]);
429
+ }
430
+ return false;
431
+ };
432
+ const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false)=>{
433
+ const result = arbitraryVariableRegex.exec(value);
434
+ if (result) {
435
+ if (result[1]) {
436
+ return testLabel(result[1]);
437
+ }
438
+ return shouldMatchNoLabel;
439
+ }
440
+ return false;
441
+ };
442
+ // Labels
443
+ const isLabelPosition = (label)=>label === 'position' || label === 'percentage';
444
+ const isLabelImage = (label)=>label === 'image' || label === 'url';
445
+ const isLabelSize = (label)=>label === 'length' || label === 'size' || label === 'bg-size';
446
+ const isLabelLength = (label)=>label === 'length';
447
+ const isLabelNumber = (label)=>label === 'number';
448
+ const isLabelFamilyName = (label)=>label === 'family-name';
449
+ const isLabelShadow = (label)=>label === 'shadow';
450
+ const getDefaultConfig = ()=>{
451
+ /**
452
+ * Theme getters for theme variable namespaces
453
+ * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
454
+ */ /***/ const themeColor = fromTheme('color');
455
+ const themeFont = fromTheme('font');
456
+ const themeText = fromTheme('text');
457
+ const themeFontWeight = fromTheme('font-weight');
458
+ const themeTracking = fromTheme('tracking');
459
+ const themeLeading = fromTheme('leading');
460
+ const themeBreakpoint = fromTheme('breakpoint');
461
+ const themeContainer = fromTheme('container');
462
+ const themeSpacing = fromTheme('spacing');
463
+ const themeRadius = fromTheme('radius');
464
+ const themeShadow = fromTheme('shadow');
465
+ const themeInsetShadow = fromTheme('inset-shadow');
466
+ const themeTextShadow = fromTheme('text-shadow');
467
+ const themeDropShadow = fromTheme('drop-shadow');
468
+ const themeBlur = fromTheme('blur');
469
+ const themePerspective = fromTheme('perspective');
470
+ const themeAspect = fromTheme('aspect');
471
+ const themeEase = fromTheme('ease');
472
+ const themeAnimate = fromTheme('animate');
473
+ /**
474
+ * Helpers to avoid repeating the same scales
475
+ *
476
+ * We use functions that create a new array every time they're called instead of static arrays.
477
+ * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
478
+ */ /***/ const scaleBreak = ()=>[
479
+ 'auto',
480
+ 'avoid',
481
+ 'all',
482
+ 'avoid-page',
483
+ 'page',
484
+ 'left',
485
+ 'right',
486
+ 'column'
487
+ ];
488
+ const scalePosition = ()=>[
489
+ 'center',
490
+ 'top',
491
+ 'bottom',
492
+ 'left',
493
+ 'right',
494
+ 'top-left',
495
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
496
+ 'left-top',
497
+ 'top-right',
498
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
499
+ 'right-top',
500
+ 'bottom-right',
501
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
502
+ 'right-bottom',
503
+ 'bottom-left',
504
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
505
+ 'left-bottom'
506
+ ];
507
+ const scalePositionWithArbitrary = ()=>[
508
+ ...scalePosition(),
509
+ isArbitraryVariable,
510
+ isArbitraryValue
511
+ ];
512
+ const scaleOverflow = ()=>[
513
+ 'auto',
514
+ 'hidden',
515
+ 'clip',
516
+ 'visible',
517
+ 'scroll'
518
+ ];
519
+ const scaleOverscroll = ()=>[
520
+ 'auto',
521
+ 'contain',
522
+ 'none'
523
+ ];
524
+ const scaleUnambiguousSpacing = ()=>[
525
+ isArbitraryVariable,
526
+ isArbitraryValue,
527
+ themeSpacing
528
+ ];
529
+ const scaleInset = ()=>[
530
+ isFraction,
531
+ 'full',
532
+ 'auto',
533
+ ...scaleUnambiguousSpacing()
534
+ ];
535
+ const scaleGridTemplateColsRows = ()=>[
536
+ isInteger,
537
+ 'none',
538
+ 'subgrid',
539
+ isArbitraryVariable,
540
+ isArbitraryValue
541
+ ];
542
+ const scaleGridColRowStartAndEnd = ()=>[
543
+ 'auto',
544
+ {
545
+ span: [
546
+ 'full',
547
+ isInteger,
548
+ isArbitraryVariable,
549
+ isArbitraryValue
550
+ ]
551
+ },
552
+ isInteger,
553
+ isArbitraryVariable,
554
+ isArbitraryValue
555
+ ];
556
+ const scaleGridColRowStartOrEnd = ()=>[
557
+ isInteger,
558
+ 'auto',
559
+ isArbitraryVariable,
560
+ isArbitraryValue
561
+ ];
562
+ const scaleGridAutoColsRows = ()=>[
563
+ 'auto',
564
+ 'min',
565
+ 'max',
566
+ 'fr',
567
+ isArbitraryVariable,
568
+ isArbitraryValue
569
+ ];
570
+ const scaleAlignPrimaryAxis = ()=>[
571
+ 'start',
572
+ 'end',
573
+ 'center',
574
+ 'between',
575
+ 'around',
576
+ 'evenly',
577
+ 'stretch',
578
+ 'baseline',
579
+ 'center-safe',
580
+ 'end-safe'
581
+ ];
582
+ const scaleAlignSecondaryAxis = ()=>[
583
+ 'start',
584
+ 'end',
585
+ 'center',
586
+ 'stretch',
587
+ 'center-safe',
588
+ 'end-safe'
589
+ ];
590
+ const scaleMargin = ()=>[
591
+ 'auto',
592
+ ...scaleUnambiguousSpacing()
593
+ ];
594
+ const scaleSizing = ()=>[
595
+ isFraction,
596
+ 'auto',
597
+ 'full',
598
+ 'dvw',
599
+ 'dvh',
600
+ 'lvw',
601
+ 'lvh',
602
+ 'svw',
603
+ 'svh',
604
+ 'min',
605
+ 'max',
606
+ 'fit',
607
+ ...scaleUnambiguousSpacing()
608
+ ];
609
+ const scaleColor = ()=>[
610
+ themeColor,
611
+ isArbitraryVariable,
612
+ isArbitraryValue
613
+ ];
614
+ const scaleBgPosition = ()=>[
615
+ ...scalePosition(),
616
+ isArbitraryVariablePosition,
617
+ isArbitraryPosition,
618
+ {
619
+ position: [
620
+ isArbitraryVariable,
621
+ isArbitraryValue
622
+ ]
623
+ }
624
+ ];
625
+ const scaleBgRepeat = ()=>[
626
+ 'no-repeat',
627
+ {
628
+ repeat: [
629
+ '',
630
+ 'x',
631
+ 'y',
632
+ 'space',
633
+ 'round'
634
+ ]
635
+ }
636
+ ];
637
+ const scaleBgSize = ()=>[
638
+ 'auto',
639
+ 'cover',
640
+ 'contain',
641
+ isArbitraryVariableSize,
642
+ isArbitrarySize,
643
+ {
644
+ size: [
645
+ isArbitraryVariable,
646
+ isArbitraryValue
647
+ ]
648
+ }
649
+ ];
650
+ const scaleGradientStopPosition = ()=>[
651
+ isPercent,
652
+ isArbitraryVariableLength,
653
+ isArbitraryLength
654
+ ];
655
+ const scaleRadius = ()=>[
656
+ // Deprecated since Tailwind CSS v4.0.0
657
+ '',
658
+ 'none',
659
+ 'full',
660
+ themeRadius,
661
+ isArbitraryVariable,
662
+ isArbitraryValue
663
+ ];
664
+ const scaleBorderWidth = ()=>[
665
+ '',
666
+ isNumber,
667
+ isArbitraryVariableLength,
668
+ isArbitraryLength
669
+ ];
670
+ const scaleLineStyle = ()=>[
671
+ 'solid',
672
+ 'dashed',
673
+ 'dotted',
674
+ 'double'
675
+ ];
676
+ const scaleBlendMode = ()=>[
677
+ 'normal',
678
+ 'multiply',
679
+ 'screen',
680
+ 'overlay',
681
+ 'darken',
682
+ 'lighten',
683
+ 'color-dodge',
684
+ 'color-burn',
685
+ 'hard-light',
686
+ 'soft-light',
687
+ 'difference',
688
+ 'exclusion',
689
+ 'hue',
690
+ 'saturation',
691
+ 'color',
692
+ 'luminosity'
693
+ ];
694
+ const scaleMaskImagePosition = ()=>[
695
+ isNumber,
696
+ isPercent,
697
+ isArbitraryVariablePosition,
698
+ isArbitraryPosition
699
+ ];
700
+ const scaleBlur = ()=>[
701
+ // Deprecated since Tailwind CSS v4.0.0
702
+ '',
703
+ 'none',
704
+ themeBlur,
705
+ isArbitraryVariable,
706
+ isArbitraryValue
707
+ ];
708
+ const scaleRotate = ()=>[
709
+ 'none',
710
+ isNumber,
711
+ isArbitraryVariable,
712
+ isArbitraryValue
713
+ ];
714
+ const scaleScale = ()=>[
715
+ 'none',
716
+ isNumber,
717
+ isArbitraryVariable,
718
+ isArbitraryValue
719
+ ];
720
+ const scaleSkew = ()=>[
721
+ isNumber,
722
+ isArbitraryVariable,
723
+ isArbitraryValue
724
+ ];
725
+ const scaleTranslate = ()=>[
726
+ isFraction,
727
+ 'full',
728
+ ...scaleUnambiguousSpacing()
729
+ ];
730
+ return {
731
+ cacheSize: 500,
732
+ theme: {
733
+ animate: [
734
+ 'spin',
735
+ 'ping',
736
+ 'pulse',
737
+ 'bounce'
738
+ ],
739
+ aspect: [
740
+ 'video'
741
+ ],
742
+ blur: [
743
+ isTshirtSize
744
+ ],
745
+ breakpoint: [
746
+ isTshirtSize
747
+ ],
748
+ color: [
749
+ isAny
750
+ ],
751
+ container: [
752
+ isTshirtSize
753
+ ],
754
+ 'drop-shadow': [
755
+ isTshirtSize
756
+ ],
757
+ ease: [
758
+ 'in',
759
+ 'out',
760
+ 'in-out'
761
+ ],
762
+ font: [
763
+ isAnyNonArbitrary
764
+ ],
765
+ 'font-weight': [
766
+ 'thin',
767
+ 'extralight',
768
+ 'light',
769
+ 'normal',
770
+ 'medium',
771
+ 'semibold',
772
+ 'bold',
773
+ 'extrabold',
774
+ 'black'
775
+ ],
776
+ 'inset-shadow': [
777
+ isTshirtSize
778
+ ],
779
+ leading: [
780
+ 'none',
781
+ 'tight',
782
+ 'snug',
783
+ 'normal',
784
+ 'relaxed',
785
+ 'loose'
786
+ ],
787
+ perspective: [
788
+ 'dramatic',
789
+ 'near',
790
+ 'normal',
791
+ 'midrange',
792
+ 'distant',
793
+ 'none'
794
+ ],
795
+ radius: [
796
+ isTshirtSize
797
+ ],
798
+ shadow: [
799
+ isTshirtSize
800
+ ],
801
+ spacing: [
802
+ 'px',
803
+ isNumber
804
+ ],
805
+ text: [
806
+ isTshirtSize
807
+ ],
808
+ 'text-shadow': [
809
+ isTshirtSize
810
+ ],
811
+ tracking: [
812
+ 'tighter',
813
+ 'tight',
814
+ 'normal',
815
+ 'wide',
816
+ 'wider',
817
+ 'widest'
818
+ ]
819
+ },
820
+ classGroups: {
821
+ // --------------
822
+ // --- Layout ---
823
+ // --------------
824
+ /**
825
+ * Aspect Ratio
826
+ * @see https://tailwindcss.com/docs/aspect-ratio
827
+ */ aspect: [
828
+ {
829
+ aspect: [
830
+ 'auto',
831
+ 'square',
832
+ isFraction,
833
+ isArbitraryValue,
834
+ isArbitraryVariable,
835
+ themeAspect
836
+ ]
837
+ }
838
+ ],
839
+ /**
840
+ * Container
841
+ * @see https://tailwindcss.com/docs/container
842
+ * @deprecated since Tailwind CSS v4.0.0
843
+ */ container: [
844
+ 'container'
845
+ ],
846
+ /**
847
+ * Columns
848
+ * @see https://tailwindcss.com/docs/columns
849
+ */ columns: [
850
+ {
851
+ columns: [
852
+ isNumber,
853
+ isArbitraryValue,
854
+ isArbitraryVariable,
855
+ themeContainer
856
+ ]
857
+ }
858
+ ],
859
+ /**
860
+ * Break After
861
+ * @see https://tailwindcss.com/docs/break-after
862
+ */ 'break-after': [
863
+ {
864
+ 'break-after': scaleBreak()
865
+ }
866
+ ],
867
+ /**
868
+ * Break Before
869
+ * @see https://tailwindcss.com/docs/break-before
870
+ */ 'break-before': [
871
+ {
872
+ 'break-before': scaleBreak()
873
+ }
874
+ ],
875
+ /**
876
+ * Break Inside
877
+ * @see https://tailwindcss.com/docs/break-inside
878
+ */ 'break-inside': [
879
+ {
880
+ 'break-inside': [
881
+ 'auto',
882
+ 'avoid',
883
+ 'avoid-page',
884
+ 'avoid-column'
885
+ ]
886
+ }
887
+ ],
888
+ /**
889
+ * Box Decoration Break
890
+ * @see https://tailwindcss.com/docs/box-decoration-break
891
+ */ 'box-decoration': [
892
+ {
893
+ 'box-decoration': [
894
+ 'slice',
895
+ 'clone'
896
+ ]
897
+ }
898
+ ],
899
+ /**
900
+ * Box Sizing
901
+ * @see https://tailwindcss.com/docs/box-sizing
902
+ */ box: [
903
+ {
904
+ box: [
905
+ 'border',
906
+ 'content'
907
+ ]
908
+ }
909
+ ],
910
+ /**
911
+ * Display
912
+ * @see https://tailwindcss.com/docs/display
913
+ */ display: [
914
+ 'block',
915
+ 'inline-block',
916
+ 'inline',
917
+ 'flex',
918
+ 'inline-flex',
919
+ 'table',
920
+ 'inline-table',
921
+ 'table-caption',
922
+ 'table-cell',
923
+ 'table-column',
924
+ 'table-column-group',
925
+ 'table-footer-group',
926
+ 'table-header-group',
927
+ 'table-row-group',
928
+ 'table-row',
929
+ 'flow-root',
930
+ 'grid',
931
+ 'inline-grid',
932
+ 'contents',
933
+ 'list-item',
934
+ 'hidden'
935
+ ],
936
+ /**
937
+ * Screen Reader Only
938
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
939
+ */ sr: [
940
+ 'sr-only',
941
+ 'not-sr-only'
942
+ ],
943
+ /**
944
+ * Floats
945
+ * @see https://tailwindcss.com/docs/float
946
+ */ float: [
947
+ {
948
+ float: [
949
+ 'right',
950
+ 'left',
951
+ 'none',
952
+ 'start',
953
+ 'end'
954
+ ]
955
+ }
956
+ ],
957
+ /**
958
+ * Clear
959
+ * @see https://tailwindcss.com/docs/clear
960
+ */ clear: [
961
+ {
962
+ clear: [
963
+ 'left',
964
+ 'right',
965
+ 'both',
966
+ 'none',
967
+ 'start',
968
+ 'end'
969
+ ]
970
+ }
971
+ ],
972
+ /**
973
+ * Isolation
974
+ * @see https://tailwindcss.com/docs/isolation
975
+ */ isolation: [
976
+ 'isolate',
977
+ 'isolation-auto'
978
+ ],
979
+ /**
980
+ * Object Fit
981
+ * @see https://tailwindcss.com/docs/object-fit
982
+ */ 'object-fit': [
983
+ {
984
+ object: [
985
+ 'contain',
986
+ 'cover',
987
+ 'fill',
988
+ 'none',
989
+ 'scale-down'
990
+ ]
991
+ }
992
+ ],
993
+ /**
994
+ * Object Position
995
+ * @see https://tailwindcss.com/docs/object-position
996
+ */ 'object-position': [
997
+ {
998
+ object: scalePositionWithArbitrary()
999
+ }
1000
+ ],
1001
+ /**
1002
+ * Overflow
1003
+ * @see https://tailwindcss.com/docs/overflow
1004
+ */ overflow: [
1005
+ {
1006
+ overflow: scaleOverflow()
1007
+ }
1008
+ ],
1009
+ /**
1010
+ * Overflow X
1011
+ * @see https://tailwindcss.com/docs/overflow
1012
+ */ 'overflow-x': [
1013
+ {
1014
+ 'overflow-x': scaleOverflow()
1015
+ }
1016
+ ],
1017
+ /**
1018
+ * Overflow Y
1019
+ * @see https://tailwindcss.com/docs/overflow
1020
+ */ 'overflow-y': [
1021
+ {
1022
+ 'overflow-y': scaleOverflow()
1023
+ }
1024
+ ],
1025
+ /**
1026
+ * Overscroll Behavior
1027
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1028
+ */ overscroll: [
1029
+ {
1030
+ overscroll: scaleOverscroll()
1031
+ }
1032
+ ],
1033
+ /**
1034
+ * Overscroll Behavior X
1035
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1036
+ */ 'overscroll-x': [
1037
+ {
1038
+ 'overscroll-x': scaleOverscroll()
1039
+ }
1040
+ ],
1041
+ /**
1042
+ * Overscroll Behavior Y
1043
+ * @see https://tailwindcss.com/docs/overscroll-behavior
1044
+ */ 'overscroll-y': [
1045
+ {
1046
+ 'overscroll-y': scaleOverscroll()
1047
+ }
1048
+ ],
1049
+ /**
1050
+ * Position
1051
+ * @see https://tailwindcss.com/docs/position
1052
+ */ position: [
1053
+ 'static',
1054
+ 'fixed',
1055
+ 'absolute',
1056
+ 'relative',
1057
+ 'sticky'
1058
+ ],
1059
+ /**
1060
+ * Top / Right / Bottom / Left
1061
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1062
+ */ inset: [
1063
+ {
1064
+ inset: scaleInset()
1065
+ }
1066
+ ],
1067
+ /**
1068
+ * Right / Left
1069
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1070
+ */ 'inset-x': [
1071
+ {
1072
+ 'inset-x': scaleInset()
1073
+ }
1074
+ ],
1075
+ /**
1076
+ * Top / Bottom
1077
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1078
+ */ 'inset-y': [
1079
+ {
1080
+ 'inset-y': scaleInset()
1081
+ }
1082
+ ],
1083
+ /**
1084
+ * Start
1085
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1086
+ */ start: [
1087
+ {
1088
+ start: scaleInset()
1089
+ }
1090
+ ],
1091
+ /**
1092
+ * End
1093
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1094
+ */ end: [
1095
+ {
1096
+ end: scaleInset()
1097
+ }
1098
+ ],
1099
+ /**
1100
+ * Top
1101
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1102
+ */ top: [
1103
+ {
1104
+ top: scaleInset()
1105
+ }
1106
+ ],
1107
+ /**
1108
+ * Right
1109
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1110
+ */ right: [
1111
+ {
1112
+ right: scaleInset()
1113
+ }
1114
+ ],
1115
+ /**
1116
+ * Bottom
1117
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1118
+ */ bottom: [
1119
+ {
1120
+ bottom: scaleInset()
1121
+ }
1122
+ ],
1123
+ /**
1124
+ * Left
1125
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1126
+ */ left: [
1127
+ {
1128
+ left: scaleInset()
1129
+ }
1130
+ ],
1131
+ /**
1132
+ * Visibility
1133
+ * @see https://tailwindcss.com/docs/visibility
1134
+ */ visibility: [
1135
+ 'visible',
1136
+ 'invisible',
1137
+ 'collapse'
1138
+ ],
1139
+ /**
1140
+ * Z-Index
1141
+ * @see https://tailwindcss.com/docs/z-index
1142
+ */ z: [
1143
+ {
1144
+ z: [
1145
+ isInteger,
1146
+ 'auto',
1147
+ isArbitraryVariable,
1148
+ isArbitraryValue
1149
+ ]
1150
+ }
1151
+ ],
1152
+ // ------------------------
1153
+ // --- Flexbox and Grid ---
1154
+ // ------------------------
1155
+ /**
1156
+ * Flex Basis
1157
+ * @see https://tailwindcss.com/docs/flex-basis
1158
+ */ basis: [
1159
+ {
1160
+ basis: [
1161
+ isFraction,
1162
+ 'full',
1163
+ 'auto',
1164
+ themeContainer,
1165
+ ...scaleUnambiguousSpacing()
1166
+ ]
1167
+ }
1168
+ ],
1169
+ /**
1170
+ * Flex Direction
1171
+ * @see https://tailwindcss.com/docs/flex-direction
1172
+ */ 'flex-direction': [
1173
+ {
1174
+ flex: [
1175
+ 'row',
1176
+ 'row-reverse',
1177
+ 'col',
1178
+ 'col-reverse'
1179
+ ]
1180
+ }
1181
+ ],
1182
+ /**
1183
+ * Flex Wrap
1184
+ * @see https://tailwindcss.com/docs/flex-wrap
1185
+ */ 'flex-wrap': [
1186
+ {
1187
+ flex: [
1188
+ 'nowrap',
1189
+ 'wrap',
1190
+ 'wrap-reverse'
1191
+ ]
1192
+ }
1193
+ ],
1194
+ /**
1195
+ * Flex
1196
+ * @see https://tailwindcss.com/docs/flex
1197
+ */ flex: [
1198
+ {
1199
+ flex: [
1200
+ isNumber,
1201
+ isFraction,
1202
+ 'auto',
1203
+ 'initial',
1204
+ 'none',
1205
+ isArbitraryValue
1206
+ ]
1207
+ }
1208
+ ],
1209
+ /**
1210
+ * Flex Grow
1211
+ * @see https://tailwindcss.com/docs/flex-grow
1212
+ */ grow: [
1213
+ {
1214
+ grow: [
1215
+ '',
1216
+ isNumber,
1217
+ isArbitraryVariable,
1218
+ isArbitraryValue
1219
+ ]
1220
+ }
1221
+ ],
1222
+ /**
1223
+ * Flex Shrink
1224
+ * @see https://tailwindcss.com/docs/flex-shrink
1225
+ */ shrink: [
1226
+ {
1227
+ shrink: [
1228
+ '',
1229
+ isNumber,
1230
+ isArbitraryVariable,
1231
+ isArbitraryValue
1232
+ ]
1233
+ }
1234
+ ],
1235
+ /**
1236
+ * Order
1237
+ * @see https://tailwindcss.com/docs/order
1238
+ */ order: [
1239
+ {
1240
+ order: [
1241
+ isInteger,
1242
+ 'first',
1243
+ 'last',
1244
+ 'none',
1245
+ isArbitraryVariable,
1246
+ isArbitraryValue
1247
+ ]
1248
+ }
1249
+ ],
1250
+ /**
1251
+ * Grid Template Columns
1252
+ * @see https://tailwindcss.com/docs/grid-template-columns
1253
+ */ 'grid-cols': [
1254
+ {
1255
+ 'grid-cols': scaleGridTemplateColsRows()
1256
+ }
1257
+ ],
1258
+ /**
1259
+ * Grid Column Start / End
1260
+ * @see https://tailwindcss.com/docs/grid-column
1261
+ */ 'col-start-end': [
1262
+ {
1263
+ col: scaleGridColRowStartAndEnd()
1264
+ }
1265
+ ],
1266
+ /**
1267
+ * Grid Column Start
1268
+ * @see https://tailwindcss.com/docs/grid-column
1269
+ */ 'col-start': [
1270
+ {
1271
+ 'col-start': scaleGridColRowStartOrEnd()
1272
+ }
1273
+ ],
1274
+ /**
1275
+ * Grid Column End
1276
+ * @see https://tailwindcss.com/docs/grid-column
1277
+ */ 'col-end': [
1278
+ {
1279
+ 'col-end': scaleGridColRowStartOrEnd()
1280
+ }
1281
+ ],
1282
+ /**
1283
+ * Grid Template Rows
1284
+ * @see https://tailwindcss.com/docs/grid-template-rows
1285
+ */ 'grid-rows': [
1286
+ {
1287
+ 'grid-rows': scaleGridTemplateColsRows()
1288
+ }
1289
+ ],
1290
+ /**
1291
+ * Grid Row Start / End
1292
+ * @see https://tailwindcss.com/docs/grid-row
1293
+ */ 'row-start-end': [
1294
+ {
1295
+ row: scaleGridColRowStartAndEnd()
1296
+ }
1297
+ ],
1298
+ /**
1299
+ * Grid Row Start
1300
+ * @see https://tailwindcss.com/docs/grid-row
1301
+ */ 'row-start': [
1302
+ {
1303
+ 'row-start': scaleGridColRowStartOrEnd()
1304
+ }
1305
+ ],
1306
+ /**
1307
+ * Grid Row End
1308
+ * @see https://tailwindcss.com/docs/grid-row
1309
+ */ 'row-end': [
1310
+ {
1311
+ 'row-end': scaleGridColRowStartOrEnd()
1312
+ }
1313
+ ],
1314
+ /**
1315
+ * Grid Auto Flow
1316
+ * @see https://tailwindcss.com/docs/grid-auto-flow
1317
+ */ 'grid-flow': [
1318
+ {
1319
+ 'grid-flow': [
1320
+ 'row',
1321
+ 'col',
1322
+ 'dense',
1323
+ 'row-dense',
1324
+ 'col-dense'
1325
+ ]
1326
+ }
1327
+ ],
1328
+ /**
1329
+ * Grid Auto Columns
1330
+ * @see https://tailwindcss.com/docs/grid-auto-columns
1331
+ */ 'auto-cols': [
1332
+ {
1333
+ 'auto-cols': scaleGridAutoColsRows()
1334
+ }
1335
+ ],
1336
+ /**
1337
+ * Grid Auto Rows
1338
+ * @see https://tailwindcss.com/docs/grid-auto-rows
1339
+ */ 'auto-rows': [
1340
+ {
1341
+ 'auto-rows': scaleGridAutoColsRows()
1342
+ }
1343
+ ],
1344
+ /**
1345
+ * Gap
1346
+ * @see https://tailwindcss.com/docs/gap
1347
+ */ gap: [
1348
+ {
1349
+ gap: scaleUnambiguousSpacing()
1350
+ }
1351
+ ],
1352
+ /**
1353
+ * Gap X
1354
+ * @see https://tailwindcss.com/docs/gap
1355
+ */ 'gap-x': [
1356
+ {
1357
+ 'gap-x': scaleUnambiguousSpacing()
1358
+ }
1359
+ ],
1360
+ /**
1361
+ * Gap Y
1362
+ * @see https://tailwindcss.com/docs/gap
1363
+ */ 'gap-y': [
1364
+ {
1365
+ 'gap-y': scaleUnambiguousSpacing()
1366
+ }
1367
+ ],
1368
+ /**
1369
+ * Justify Content
1370
+ * @see https://tailwindcss.com/docs/justify-content
1371
+ */ 'justify-content': [
1372
+ {
1373
+ justify: [
1374
+ ...scaleAlignPrimaryAxis(),
1375
+ 'normal'
1376
+ ]
1377
+ }
1378
+ ],
1379
+ /**
1380
+ * Justify Items
1381
+ * @see https://tailwindcss.com/docs/justify-items
1382
+ */ 'justify-items': [
1383
+ {
1384
+ 'justify-items': [
1385
+ ...scaleAlignSecondaryAxis(),
1386
+ 'normal'
1387
+ ]
1388
+ }
1389
+ ],
1390
+ /**
1391
+ * Justify Self
1392
+ * @see https://tailwindcss.com/docs/justify-self
1393
+ */ 'justify-self': [
1394
+ {
1395
+ 'justify-self': [
1396
+ 'auto',
1397
+ ...scaleAlignSecondaryAxis()
1398
+ ]
1399
+ }
1400
+ ],
1401
+ /**
1402
+ * Align Content
1403
+ * @see https://tailwindcss.com/docs/align-content
1404
+ */ 'align-content': [
1405
+ {
1406
+ content: [
1407
+ 'normal',
1408
+ ...scaleAlignPrimaryAxis()
1409
+ ]
1410
+ }
1411
+ ],
1412
+ /**
1413
+ * Align Items
1414
+ * @see https://tailwindcss.com/docs/align-items
1415
+ */ 'align-items': [
1416
+ {
1417
+ items: [
1418
+ ...scaleAlignSecondaryAxis(),
1419
+ {
1420
+ baseline: [
1421
+ '',
1422
+ 'last'
1423
+ ]
1424
+ }
1425
+ ]
1426
+ }
1427
+ ],
1428
+ /**
1429
+ * Align Self
1430
+ * @see https://tailwindcss.com/docs/align-self
1431
+ */ 'align-self': [
1432
+ {
1433
+ self: [
1434
+ 'auto',
1435
+ ...scaleAlignSecondaryAxis(),
1436
+ {
1437
+ baseline: [
1438
+ '',
1439
+ 'last'
1440
+ ]
1441
+ }
1442
+ ]
1443
+ }
1444
+ ],
1445
+ /**
1446
+ * Place Content
1447
+ * @see https://tailwindcss.com/docs/place-content
1448
+ */ 'place-content': [
1449
+ {
1450
+ 'place-content': scaleAlignPrimaryAxis()
1451
+ }
1452
+ ],
1453
+ /**
1454
+ * Place Items
1455
+ * @see https://tailwindcss.com/docs/place-items
1456
+ */ 'place-items': [
1457
+ {
1458
+ 'place-items': [
1459
+ ...scaleAlignSecondaryAxis(),
1460
+ 'baseline'
1461
+ ]
1462
+ }
1463
+ ],
1464
+ /**
1465
+ * Place Self
1466
+ * @see https://tailwindcss.com/docs/place-self
1467
+ */ 'place-self': [
1468
+ {
1469
+ 'place-self': [
1470
+ 'auto',
1471
+ ...scaleAlignSecondaryAxis()
1472
+ ]
1473
+ }
1474
+ ],
1475
+ // Spacing
1476
+ /**
1477
+ * Padding
1478
+ * @see https://tailwindcss.com/docs/padding
1479
+ */ p: [
1480
+ {
1481
+ p: scaleUnambiguousSpacing()
1482
+ }
1483
+ ],
1484
+ /**
1485
+ * Padding X
1486
+ * @see https://tailwindcss.com/docs/padding
1487
+ */ px: [
1488
+ {
1489
+ px: scaleUnambiguousSpacing()
1490
+ }
1491
+ ],
1492
+ /**
1493
+ * Padding Y
1494
+ * @see https://tailwindcss.com/docs/padding
1495
+ */ py: [
1496
+ {
1497
+ py: scaleUnambiguousSpacing()
1498
+ }
1499
+ ],
1500
+ /**
1501
+ * Padding Start
1502
+ * @see https://tailwindcss.com/docs/padding
1503
+ */ ps: [
1504
+ {
1505
+ ps: scaleUnambiguousSpacing()
1506
+ }
1507
+ ],
1508
+ /**
1509
+ * Padding End
1510
+ * @see https://tailwindcss.com/docs/padding
1511
+ */ pe: [
1512
+ {
1513
+ pe: scaleUnambiguousSpacing()
1514
+ }
1515
+ ],
1516
+ /**
1517
+ * Padding Top
1518
+ * @see https://tailwindcss.com/docs/padding
1519
+ */ pt: [
1520
+ {
1521
+ pt: scaleUnambiguousSpacing()
1522
+ }
1523
+ ],
1524
+ /**
1525
+ * Padding Right
1526
+ * @see https://tailwindcss.com/docs/padding
1527
+ */ pr: [
1528
+ {
1529
+ pr: scaleUnambiguousSpacing()
1530
+ }
1531
+ ],
1532
+ /**
1533
+ * Padding Bottom
1534
+ * @see https://tailwindcss.com/docs/padding
1535
+ */ pb: [
1536
+ {
1537
+ pb: scaleUnambiguousSpacing()
1538
+ }
1539
+ ],
1540
+ /**
1541
+ * Padding Left
1542
+ * @see https://tailwindcss.com/docs/padding
1543
+ */ pl: [
1544
+ {
1545
+ pl: scaleUnambiguousSpacing()
1546
+ }
1547
+ ],
1548
+ /**
1549
+ * Margin
1550
+ * @see https://tailwindcss.com/docs/margin
1551
+ */ m: [
1552
+ {
1553
+ m: scaleMargin()
1554
+ }
1555
+ ],
1556
+ /**
1557
+ * Margin X
1558
+ * @see https://tailwindcss.com/docs/margin
1559
+ */ mx: [
1560
+ {
1561
+ mx: scaleMargin()
1562
+ }
1563
+ ],
1564
+ /**
1565
+ * Margin Y
1566
+ * @see https://tailwindcss.com/docs/margin
1567
+ */ my: [
1568
+ {
1569
+ my: scaleMargin()
1570
+ }
1571
+ ],
1572
+ /**
1573
+ * Margin Start
1574
+ * @see https://tailwindcss.com/docs/margin
1575
+ */ ms: [
1576
+ {
1577
+ ms: scaleMargin()
1578
+ }
1579
+ ],
1580
+ /**
1581
+ * Margin End
1582
+ * @see https://tailwindcss.com/docs/margin
1583
+ */ me: [
1584
+ {
1585
+ me: scaleMargin()
1586
+ }
1587
+ ],
1588
+ /**
1589
+ * Margin Top
1590
+ * @see https://tailwindcss.com/docs/margin
1591
+ */ mt: [
1592
+ {
1593
+ mt: scaleMargin()
1594
+ }
1595
+ ],
1596
+ /**
1597
+ * Margin Right
1598
+ * @see https://tailwindcss.com/docs/margin
1599
+ */ mr: [
1600
+ {
1601
+ mr: scaleMargin()
1602
+ }
1603
+ ],
1604
+ /**
1605
+ * Margin Bottom
1606
+ * @see https://tailwindcss.com/docs/margin
1607
+ */ mb: [
1608
+ {
1609
+ mb: scaleMargin()
1610
+ }
1611
+ ],
1612
+ /**
1613
+ * Margin Left
1614
+ * @see https://tailwindcss.com/docs/margin
1615
+ */ ml: [
1616
+ {
1617
+ ml: scaleMargin()
1618
+ }
1619
+ ],
1620
+ /**
1621
+ * Space Between X
1622
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1623
+ */ 'space-x': [
1624
+ {
1625
+ 'space-x': scaleUnambiguousSpacing()
1626
+ }
1627
+ ],
1628
+ /**
1629
+ * Space Between X Reverse
1630
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1631
+ */ 'space-x-reverse': [
1632
+ 'space-x-reverse'
1633
+ ],
1634
+ /**
1635
+ * Space Between Y
1636
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1637
+ */ 'space-y': [
1638
+ {
1639
+ 'space-y': scaleUnambiguousSpacing()
1640
+ }
1641
+ ],
1642
+ /**
1643
+ * Space Between Y Reverse
1644
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
1645
+ */ 'space-y-reverse': [
1646
+ 'space-y-reverse'
1647
+ ],
1648
+ // --------------
1649
+ // --- Sizing ---
1650
+ // --------------
1651
+ /**
1652
+ * Size
1653
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
1654
+ */ size: [
1655
+ {
1656
+ size: scaleSizing()
1657
+ }
1658
+ ],
1659
+ /**
1660
+ * Width
1661
+ * @see https://tailwindcss.com/docs/width
1662
+ */ w: [
1663
+ {
1664
+ w: [
1665
+ themeContainer,
1666
+ 'screen',
1667
+ ...scaleSizing()
1668
+ ]
1669
+ }
1670
+ ],
1671
+ /**
1672
+ * Min-Width
1673
+ * @see https://tailwindcss.com/docs/min-width
1674
+ */ 'min-w': [
1675
+ {
1676
+ 'min-w': [
1677
+ themeContainer,
1678
+ 'screen',
1679
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'none',
1680
+ ...scaleSizing()
1681
+ ]
1682
+ }
1683
+ ],
1684
+ /**
1685
+ * Max-Width
1686
+ * @see https://tailwindcss.com/docs/max-width
1687
+ */ 'max-w': [
1688
+ {
1689
+ 'max-w': [
1690
+ themeContainer,
1691
+ 'screen',
1692
+ 'none',
1693
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'prose',
1694
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ {
1695
+ screen: [
1696
+ themeBreakpoint
1697
+ ]
1698
+ },
1699
+ ...scaleSizing()
1700
+ ]
1701
+ }
1702
+ ],
1703
+ /**
1704
+ * Height
1705
+ * @see https://tailwindcss.com/docs/height
1706
+ */ h: [
1707
+ {
1708
+ h: [
1709
+ 'screen',
1710
+ 'lh',
1711
+ ...scaleSizing()
1712
+ ]
1713
+ }
1714
+ ],
1715
+ /**
1716
+ * Min-Height
1717
+ * @see https://tailwindcss.com/docs/min-height
1718
+ */ 'min-h': [
1719
+ {
1720
+ 'min-h': [
1721
+ 'screen',
1722
+ 'lh',
1723
+ 'none',
1724
+ ...scaleSizing()
1725
+ ]
1726
+ }
1727
+ ],
1728
+ /**
1729
+ * Max-Height
1730
+ * @see https://tailwindcss.com/docs/max-height
1731
+ */ 'max-h': [
1732
+ {
1733
+ 'max-h': [
1734
+ 'screen',
1735
+ 'lh',
1736
+ ...scaleSizing()
1737
+ ]
1738
+ }
1739
+ ],
1740
+ // ------------------
1741
+ // --- Typography ---
1742
+ // ------------------
1743
+ /**
1744
+ * Font Size
1745
+ * @see https://tailwindcss.com/docs/font-size
1746
+ */ 'font-size': [
1747
+ {
1748
+ text: [
1749
+ 'base',
1750
+ themeText,
1751
+ isArbitraryVariableLength,
1752
+ isArbitraryLength
1753
+ ]
1754
+ }
1755
+ ],
1756
+ /**
1757
+ * Font Smoothing
1758
+ * @see https://tailwindcss.com/docs/font-smoothing
1759
+ */ 'font-smoothing': [
1760
+ 'antialiased',
1761
+ 'subpixel-antialiased'
1762
+ ],
1763
+ /**
1764
+ * Font Style
1765
+ * @see https://tailwindcss.com/docs/font-style
1766
+ */ 'font-style': [
1767
+ 'italic',
1768
+ 'not-italic'
1769
+ ],
1770
+ /**
1771
+ * Font Weight
1772
+ * @see https://tailwindcss.com/docs/font-weight
1773
+ */ 'font-weight': [
1774
+ {
1775
+ font: [
1776
+ themeFontWeight,
1777
+ isArbitraryVariable,
1778
+ isArbitraryNumber
1779
+ ]
1780
+ }
1781
+ ],
1782
+ /**
1783
+ * Font Stretch
1784
+ * @see https://tailwindcss.com/docs/font-stretch
1785
+ */ 'font-stretch': [
1786
+ {
1787
+ 'font-stretch': [
1788
+ 'ultra-condensed',
1789
+ 'extra-condensed',
1790
+ 'condensed',
1791
+ 'semi-condensed',
1792
+ 'normal',
1793
+ 'semi-expanded',
1794
+ 'expanded',
1795
+ 'extra-expanded',
1796
+ 'ultra-expanded',
1797
+ isPercent,
1798
+ isArbitraryValue
1799
+ ]
1800
+ }
1801
+ ],
1802
+ /**
1803
+ * Font Family
1804
+ * @see https://tailwindcss.com/docs/font-family
1805
+ */ 'font-family': [
1806
+ {
1807
+ font: [
1808
+ isArbitraryVariableFamilyName,
1809
+ isArbitraryValue,
1810
+ themeFont
1811
+ ]
1812
+ }
1813
+ ],
1814
+ /**
1815
+ * Font Variant Numeric
1816
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1817
+ */ 'fvn-normal': [
1818
+ 'normal-nums'
1819
+ ],
1820
+ /**
1821
+ * Font Variant Numeric
1822
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1823
+ */ 'fvn-ordinal': [
1824
+ 'ordinal'
1825
+ ],
1826
+ /**
1827
+ * Font Variant Numeric
1828
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1829
+ */ 'fvn-slashed-zero': [
1830
+ 'slashed-zero'
1831
+ ],
1832
+ /**
1833
+ * Font Variant Numeric
1834
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1835
+ */ 'fvn-figure': [
1836
+ 'lining-nums',
1837
+ 'oldstyle-nums'
1838
+ ],
1839
+ /**
1840
+ * Font Variant Numeric
1841
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1842
+ */ 'fvn-spacing': [
1843
+ 'proportional-nums',
1844
+ 'tabular-nums'
1845
+ ],
1846
+ /**
1847
+ * Font Variant Numeric
1848
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1849
+ */ 'fvn-fraction': [
1850
+ 'diagonal-fractions',
1851
+ 'stacked-fractions'
1852
+ ],
1853
+ /**
1854
+ * Letter Spacing
1855
+ * @see https://tailwindcss.com/docs/letter-spacing
1856
+ */ tracking: [
1857
+ {
1858
+ tracking: [
1859
+ themeTracking,
1860
+ isArbitraryVariable,
1861
+ isArbitraryValue
1862
+ ]
1863
+ }
1864
+ ],
1865
+ /**
1866
+ * Line Clamp
1867
+ * @see https://tailwindcss.com/docs/line-clamp
1868
+ */ 'line-clamp': [
1869
+ {
1870
+ 'line-clamp': [
1871
+ isNumber,
1872
+ 'none',
1873
+ isArbitraryVariable,
1874
+ isArbitraryNumber
1875
+ ]
1876
+ }
1877
+ ],
1878
+ /**
1879
+ * Line Height
1880
+ * @see https://tailwindcss.com/docs/line-height
1881
+ */ leading: [
1882
+ {
1883
+ leading: [
1884
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ themeLeading,
1885
+ ...scaleUnambiguousSpacing()
1886
+ ]
1887
+ }
1888
+ ],
1889
+ /**
1890
+ * List Style Image
1891
+ * @see https://tailwindcss.com/docs/list-style-image
1892
+ */ 'list-image': [
1893
+ {
1894
+ 'list-image': [
1895
+ 'none',
1896
+ isArbitraryVariable,
1897
+ isArbitraryValue
1898
+ ]
1899
+ }
1900
+ ],
1901
+ /**
1902
+ * List Style Position
1903
+ * @see https://tailwindcss.com/docs/list-style-position
1904
+ */ 'list-style-position': [
1905
+ {
1906
+ list: [
1907
+ 'inside',
1908
+ 'outside'
1909
+ ]
1910
+ }
1911
+ ],
1912
+ /**
1913
+ * List Style Type
1914
+ * @see https://tailwindcss.com/docs/list-style-type
1915
+ */ 'list-style-type': [
1916
+ {
1917
+ list: [
1918
+ 'disc',
1919
+ 'decimal',
1920
+ 'none',
1921
+ isArbitraryVariable,
1922
+ isArbitraryValue
1923
+ ]
1924
+ }
1925
+ ],
1926
+ /**
1927
+ * Text Alignment
1928
+ * @see https://tailwindcss.com/docs/text-align
1929
+ */ 'text-alignment': [
1930
+ {
1931
+ text: [
1932
+ 'left',
1933
+ 'center',
1934
+ 'right',
1935
+ 'justify',
1936
+ 'start',
1937
+ 'end'
1938
+ ]
1939
+ }
1940
+ ],
1941
+ /**
1942
+ * Placeholder Color
1943
+ * @deprecated since Tailwind CSS v3.0.0
1944
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
1945
+ */ 'placeholder-color': [
1946
+ {
1947
+ placeholder: scaleColor()
1948
+ }
1949
+ ],
1950
+ /**
1951
+ * Text Color
1952
+ * @see https://tailwindcss.com/docs/text-color
1953
+ */ 'text-color': [
1954
+ {
1955
+ text: scaleColor()
1956
+ }
1957
+ ],
1958
+ /**
1959
+ * Text Decoration
1960
+ * @see https://tailwindcss.com/docs/text-decoration
1961
+ */ 'text-decoration': [
1962
+ 'underline',
1963
+ 'overline',
1964
+ 'line-through',
1965
+ 'no-underline'
1966
+ ],
1967
+ /**
1968
+ * Text Decoration Style
1969
+ * @see https://tailwindcss.com/docs/text-decoration-style
1970
+ */ 'text-decoration-style': [
1971
+ {
1972
+ decoration: [
1973
+ ...scaleLineStyle(),
1974
+ 'wavy'
1975
+ ]
1976
+ }
1977
+ ],
1978
+ /**
1979
+ * Text Decoration Thickness
1980
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1981
+ */ 'text-decoration-thickness': [
1982
+ {
1983
+ decoration: [
1984
+ isNumber,
1985
+ 'from-font',
1986
+ 'auto',
1987
+ isArbitraryVariable,
1988
+ isArbitraryLength
1989
+ ]
1990
+ }
1991
+ ],
1992
+ /**
1993
+ * Text Decoration Color
1994
+ * @see https://tailwindcss.com/docs/text-decoration-color
1995
+ */ 'text-decoration-color': [
1996
+ {
1997
+ decoration: scaleColor()
1998
+ }
1999
+ ],
2000
+ /**
2001
+ * Text Underline Offset
2002
+ * @see https://tailwindcss.com/docs/text-underline-offset
2003
+ */ 'underline-offset': [
2004
+ {
2005
+ 'underline-offset': [
2006
+ isNumber,
2007
+ 'auto',
2008
+ isArbitraryVariable,
2009
+ isArbitraryValue
2010
+ ]
2011
+ }
2012
+ ],
2013
+ /**
2014
+ * Text Transform
2015
+ * @see https://tailwindcss.com/docs/text-transform
2016
+ */ 'text-transform': [
2017
+ 'uppercase',
2018
+ 'lowercase',
2019
+ 'capitalize',
2020
+ 'normal-case'
2021
+ ],
2022
+ /**
2023
+ * Text Overflow
2024
+ * @see https://tailwindcss.com/docs/text-overflow
2025
+ */ 'text-overflow': [
2026
+ 'truncate',
2027
+ 'text-ellipsis',
2028
+ 'text-clip'
2029
+ ],
2030
+ /**
2031
+ * Text Wrap
2032
+ * @see https://tailwindcss.com/docs/text-wrap
2033
+ */ 'text-wrap': [
2034
+ {
2035
+ text: [
2036
+ 'wrap',
2037
+ 'nowrap',
2038
+ 'balance',
2039
+ 'pretty'
2040
+ ]
2041
+ }
2042
+ ],
2043
+ /**
2044
+ * Text Indent
2045
+ * @see https://tailwindcss.com/docs/text-indent
2046
+ */ indent: [
2047
+ {
2048
+ indent: scaleUnambiguousSpacing()
2049
+ }
2050
+ ],
2051
+ /**
2052
+ * Vertical Alignment
2053
+ * @see https://tailwindcss.com/docs/vertical-align
2054
+ */ 'vertical-align': [
2055
+ {
2056
+ align: [
2057
+ 'baseline',
2058
+ 'top',
2059
+ 'middle',
2060
+ 'bottom',
2061
+ 'text-top',
2062
+ 'text-bottom',
2063
+ 'sub',
2064
+ 'super',
2065
+ isArbitraryVariable,
2066
+ isArbitraryValue
2067
+ ]
2068
+ }
2069
+ ],
2070
+ /**
2071
+ * Whitespace
2072
+ * @see https://tailwindcss.com/docs/whitespace
2073
+ */ whitespace: [
2074
+ {
2075
+ whitespace: [
2076
+ 'normal',
2077
+ 'nowrap',
2078
+ 'pre',
2079
+ 'pre-line',
2080
+ 'pre-wrap',
2081
+ 'break-spaces'
2082
+ ]
2083
+ }
2084
+ ],
2085
+ /**
2086
+ * Word Break
2087
+ * @see https://tailwindcss.com/docs/word-break
2088
+ */ break: [
2089
+ {
2090
+ break: [
2091
+ 'normal',
2092
+ 'words',
2093
+ 'all',
2094
+ 'keep'
2095
+ ]
2096
+ }
2097
+ ],
2098
+ /**
2099
+ * Overflow Wrap
2100
+ * @see https://tailwindcss.com/docs/overflow-wrap
2101
+ */ wrap: [
2102
+ {
2103
+ wrap: [
2104
+ 'break-word',
2105
+ 'anywhere',
2106
+ 'normal'
2107
+ ]
2108
+ }
2109
+ ],
2110
+ /**
2111
+ * Hyphens
2112
+ * @see https://tailwindcss.com/docs/hyphens
2113
+ */ hyphens: [
2114
+ {
2115
+ hyphens: [
2116
+ 'none',
2117
+ 'manual',
2118
+ 'auto'
2119
+ ]
2120
+ }
2121
+ ],
2122
+ /**
2123
+ * Content
2124
+ * @see https://tailwindcss.com/docs/content
2125
+ */ content: [
2126
+ {
2127
+ content: [
2128
+ 'none',
2129
+ isArbitraryVariable,
2130
+ isArbitraryValue
2131
+ ]
2132
+ }
2133
+ ],
2134
+ // -------------------
2135
+ // --- Backgrounds ---
2136
+ // -------------------
2137
+ /**
2138
+ * Background Attachment
2139
+ * @see https://tailwindcss.com/docs/background-attachment
2140
+ */ 'bg-attachment': [
2141
+ {
2142
+ bg: [
2143
+ 'fixed',
2144
+ 'local',
2145
+ 'scroll'
2146
+ ]
2147
+ }
2148
+ ],
2149
+ /**
2150
+ * Background Clip
2151
+ * @see https://tailwindcss.com/docs/background-clip
2152
+ */ 'bg-clip': [
2153
+ {
2154
+ 'bg-clip': [
2155
+ 'border',
2156
+ 'padding',
2157
+ 'content',
2158
+ 'text'
2159
+ ]
2160
+ }
2161
+ ],
2162
+ /**
2163
+ * Background Origin
2164
+ * @see https://tailwindcss.com/docs/background-origin
2165
+ */ 'bg-origin': [
2166
+ {
2167
+ 'bg-origin': [
2168
+ 'border',
2169
+ 'padding',
2170
+ 'content'
2171
+ ]
2172
+ }
2173
+ ],
2174
+ /**
2175
+ * Background Position
2176
+ * @see https://tailwindcss.com/docs/background-position
2177
+ */ 'bg-position': [
2178
+ {
2179
+ bg: scaleBgPosition()
2180
+ }
2181
+ ],
2182
+ /**
2183
+ * Background Repeat
2184
+ * @see https://tailwindcss.com/docs/background-repeat
2185
+ */ 'bg-repeat': [
2186
+ {
2187
+ bg: scaleBgRepeat()
2188
+ }
2189
+ ],
2190
+ /**
2191
+ * Background Size
2192
+ * @see https://tailwindcss.com/docs/background-size
2193
+ */ 'bg-size': [
2194
+ {
2195
+ bg: scaleBgSize()
2196
+ }
2197
+ ],
2198
+ /**
2199
+ * Background Image
2200
+ * @see https://tailwindcss.com/docs/background-image
2201
+ */ 'bg-image': [
2202
+ {
2203
+ bg: [
2204
+ 'none',
2205
+ {
2206
+ linear: [
2207
+ {
2208
+ to: [
2209
+ 't',
2210
+ 'tr',
2211
+ 'r',
2212
+ 'br',
2213
+ 'b',
2214
+ 'bl',
2215
+ 'l',
2216
+ 'tl'
2217
+ ]
2218
+ },
2219
+ isInteger,
2220
+ isArbitraryVariable,
2221
+ isArbitraryValue
2222
+ ],
2223
+ radial: [
2224
+ '',
2225
+ isArbitraryVariable,
2226
+ isArbitraryValue
2227
+ ],
2228
+ conic: [
2229
+ isInteger,
2230
+ isArbitraryVariable,
2231
+ isArbitraryValue
2232
+ ]
2233
+ },
2234
+ isArbitraryVariableImage,
2235
+ isArbitraryImage
2236
+ ]
2237
+ }
2238
+ ],
2239
+ /**
2240
+ * Background Color
2241
+ * @see https://tailwindcss.com/docs/background-color
2242
+ */ 'bg-color': [
2243
+ {
2244
+ bg: scaleColor()
2245
+ }
2246
+ ],
2247
+ /**
2248
+ * Gradient Color Stops From Position
2249
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2250
+ */ 'gradient-from-pos': [
2251
+ {
2252
+ from: scaleGradientStopPosition()
2253
+ }
2254
+ ],
2255
+ /**
2256
+ * Gradient Color Stops Via Position
2257
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2258
+ */ 'gradient-via-pos': [
2259
+ {
2260
+ via: scaleGradientStopPosition()
2261
+ }
2262
+ ],
2263
+ /**
2264
+ * Gradient Color Stops To Position
2265
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2266
+ */ 'gradient-to-pos': [
2267
+ {
2268
+ to: scaleGradientStopPosition()
2269
+ }
2270
+ ],
2271
+ /**
2272
+ * Gradient Color Stops From
2273
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2274
+ */ 'gradient-from': [
2275
+ {
2276
+ from: scaleColor()
2277
+ }
2278
+ ],
2279
+ /**
2280
+ * Gradient Color Stops Via
2281
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2282
+ */ 'gradient-via': [
2283
+ {
2284
+ via: scaleColor()
2285
+ }
2286
+ ],
2287
+ /**
2288
+ * Gradient Color Stops To
2289
+ * @see https://tailwindcss.com/docs/gradient-color-stops
2290
+ */ 'gradient-to': [
2291
+ {
2292
+ to: scaleColor()
2293
+ }
2294
+ ],
2295
+ // ---------------
2296
+ // --- Borders ---
2297
+ // ---------------
2298
+ /**
2299
+ * Border Radius
2300
+ * @see https://tailwindcss.com/docs/border-radius
2301
+ */ rounded: [
2302
+ {
2303
+ rounded: scaleRadius()
2304
+ }
2305
+ ],
2306
+ /**
2307
+ * Border Radius Start
2308
+ * @see https://tailwindcss.com/docs/border-radius
2309
+ */ 'rounded-s': [
2310
+ {
2311
+ 'rounded-s': scaleRadius()
2312
+ }
2313
+ ],
2314
+ /**
2315
+ * Border Radius End
2316
+ * @see https://tailwindcss.com/docs/border-radius
2317
+ */ 'rounded-e': [
2318
+ {
2319
+ 'rounded-e': scaleRadius()
2320
+ }
2321
+ ],
2322
+ /**
2323
+ * Border Radius Top
2324
+ * @see https://tailwindcss.com/docs/border-radius
2325
+ */ 'rounded-t': [
2326
+ {
2327
+ 'rounded-t': scaleRadius()
2328
+ }
2329
+ ],
2330
+ /**
2331
+ * Border Radius Right
2332
+ * @see https://tailwindcss.com/docs/border-radius
2333
+ */ 'rounded-r': [
2334
+ {
2335
+ 'rounded-r': scaleRadius()
2336
+ }
2337
+ ],
2338
+ /**
2339
+ * Border Radius Bottom
2340
+ * @see https://tailwindcss.com/docs/border-radius
2341
+ */ 'rounded-b': [
2342
+ {
2343
+ 'rounded-b': scaleRadius()
2344
+ }
2345
+ ],
2346
+ /**
2347
+ * Border Radius Left
2348
+ * @see https://tailwindcss.com/docs/border-radius
2349
+ */ 'rounded-l': [
2350
+ {
2351
+ 'rounded-l': scaleRadius()
2352
+ }
2353
+ ],
2354
+ /**
2355
+ * Border Radius Start Start
2356
+ * @see https://tailwindcss.com/docs/border-radius
2357
+ */ 'rounded-ss': [
2358
+ {
2359
+ 'rounded-ss': scaleRadius()
2360
+ }
2361
+ ],
2362
+ /**
2363
+ * Border Radius Start End
2364
+ * @see https://tailwindcss.com/docs/border-radius
2365
+ */ 'rounded-se': [
2366
+ {
2367
+ 'rounded-se': scaleRadius()
2368
+ }
2369
+ ],
2370
+ /**
2371
+ * Border Radius End End
2372
+ * @see https://tailwindcss.com/docs/border-radius
2373
+ */ 'rounded-ee': [
2374
+ {
2375
+ 'rounded-ee': scaleRadius()
2376
+ }
2377
+ ],
2378
+ /**
2379
+ * Border Radius End Start
2380
+ * @see https://tailwindcss.com/docs/border-radius
2381
+ */ 'rounded-es': [
2382
+ {
2383
+ 'rounded-es': scaleRadius()
2384
+ }
2385
+ ],
2386
+ /**
2387
+ * Border Radius Top Left
2388
+ * @see https://tailwindcss.com/docs/border-radius
2389
+ */ 'rounded-tl': [
2390
+ {
2391
+ 'rounded-tl': scaleRadius()
2392
+ }
2393
+ ],
2394
+ /**
2395
+ * Border Radius Top Right
2396
+ * @see https://tailwindcss.com/docs/border-radius
2397
+ */ 'rounded-tr': [
2398
+ {
2399
+ 'rounded-tr': scaleRadius()
2400
+ }
2401
+ ],
2402
+ /**
2403
+ * Border Radius Bottom Right
2404
+ * @see https://tailwindcss.com/docs/border-radius
2405
+ */ 'rounded-br': [
2406
+ {
2407
+ 'rounded-br': scaleRadius()
2408
+ }
2409
+ ],
2410
+ /**
2411
+ * Border Radius Bottom Left
2412
+ * @see https://tailwindcss.com/docs/border-radius
2413
+ */ 'rounded-bl': [
2414
+ {
2415
+ 'rounded-bl': scaleRadius()
2416
+ }
2417
+ ],
2418
+ /**
2419
+ * Border Width
2420
+ * @see https://tailwindcss.com/docs/border-width
2421
+ */ 'border-w': [
2422
+ {
2423
+ border: scaleBorderWidth()
2424
+ }
2425
+ ],
2426
+ /**
2427
+ * Border Width X
2428
+ * @see https://tailwindcss.com/docs/border-width
2429
+ */ 'border-w-x': [
2430
+ {
2431
+ 'border-x': scaleBorderWidth()
2432
+ }
2433
+ ],
2434
+ /**
2435
+ * Border Width Y
2436
+ * @see https://tailwindcss.com/docs/border-width
2437
+ */ 'border-w-y': [
2438
+ {
2439
+ 'border-y': scaleBorderWidth()
2440
+ }
2441
+ ],
2442
+ /**
2443
+ * Border Width Start
2444
+ * @see https://tailwindcss.com/docs/border-width
2445
+ */ 'border-w-s': [
2446
+ {
2447
+ 'border-s': scaleBorderWidth()
2448
+ }
2449
+ ],
2450
+ /**
2451
+ * Border Width End
2452
+ * @see https://tailwindcss.com/docs/border-width
2453
+ */ 'border-w-e': [
2454
+ {
2455
+ 'border-e': scaleBorderWidth()
2456
+ }
2457
+ ],
2458
+ /**
2459
+ * Border Width Top
2460
+ * @see https://tailwindcss.com/docs/border-width
2461
+ */ 'border-w-t': [
2462
+ {
2463
+ 'border-t': scaleBorderWidth()
2464
+ }
2465
+ ],
2466
+ /**
2467
+ * Border Width Right
2468
+ * @see https://tailwindcss.com/docs/border-width
2469
+ */ 'border-w-r': [
2470
+ {
2471
+ 'border-r': scaleBorderWidth()
2472
+ }
2473
+ ],
2474
+ /**
2475
+ * Border Width Bottom
2476
+ * @see https://tailwindcss.com/docs/border-width
2477
+ */ 'border-w-b': [
2478
+ {
2479
+ 'border-b': scaleBorderWidth()
2480
+ }
2481
+ ],
2482
+ /**
2483
+ * Border Width Left
2484
+ * @see https://tailwindcss.com/docs/border-width
2485
+ */ 'border-w-l': [
2486
+ {
2487
+ 'border-l': scaleBorderWidth()
2488
+ }
2489
+ ],
2490
+ /**
2491
+ * Divide Width X
2492
+ * @see https://tailwindcss.com/docs/border-width#between-children
2493
+ */ 'divide-x': [
2494
+ {
2495
+ 'divide-x': scaleBorderWidth()
2496
+ }
2497
+ ],
2498
+ /**
2499
+ * Divide Width X Reverse
2500
+ * @see https://tailwindcss.com/docs/border-width#between-children
2501
+ */ 'divide-x-reverse': [
2502
+ 'divide-x-reverse'
2503
+ ],
2504
+ /**
2505
+ * Divide Width Y
2506
+ * @see https://tailwindcss.com/docs/border-width#between-children
2507
+ */ 'divide-y': [
2508
+ {
2509
+ 'divide-y': scaleBorderWidth()
2510
+ }
2511
+ ],
2512
+ /**
2513
+ * Divide Width Y Reverse
2514
+ * @see https://tailwindcss.com/docs/border-width#between-children
2515
+ */ 'divide-y-reverse': [
2516
+ 'divide-y-reverse'
2517
+ ],
2518
+ /**
2519
+ * Border Style
2520
+ * @see https://tailwindcss.com/docs/border-style
2521
+ */ 'border-style': [
2522
+ {
2523
+ border: [
2524
+ ...scaleLineStyle(),
2525
+ 'hidden',
2526
+ 'none'
2527
+ ]
2528
+ }
2529
+ ],
2530
+ /**
2531
+ * Divide Style
2532
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
2533
+ */ 'divide-style': [
2534
+ {
2535
+ divide: [
2536
+ ...scaleLineStyle(),
2537
+ 'hidden',
2538
+ 'none'
2539
+ ]
2540
+ }
2541
+ ],
2542
+ /**
2543
+ * Border Color
2544
+ * @see https://tailwindcss.com/docs/border-color
2545
+ */ 'border-color': [
2546
+ {
2547
+ border: scaleColor()
2548
+ }
2549
+ ],
2550
+ /**
2551
+ * Border Color X
2552
+ * @see https://tailwindcss.com/docs/border-color
2553
+ */ 'border-color-x': [
2554
+ {
2555
+ 'border-x': scaleColor()
2556
+ }
2557
+ ],
2558
+ /**
2559
+ * Border Color Y
2560
+ * @see https://tailwindcss.com/docs/border-color
2561
+ */ 'border-color-y': [
2562
+ {
2563
+ 'border-y': scaleColor()
2564
+ }
2565
+ ],
2566
+ /**
2567
+ * Border Color S
2568
+ * @see https://tailwindcss.com/docs/border-color
2569
+ */ 'border-color-s': [
2570
+ {
2571
+ 'border-s': scaleColor()
2572
+ }
2573
+ ],
2574
+ /**
2575
+ * Border Color E
2576
+ * @see https://tailwindcss.com/docs/border-color
2577
+ */ 'border-color-e': [
2578
+ {
2579
+ 'border-e': scaleColor()
2580
+ }
2581
+ ],
2582
+ /**
2583
+ * Border Color Top
2584
+ * @see https://tailwindcss.com/docs/border-color
2585
+ */ 'border-color-t': [
2586
+ {
2587
+ 'border-t': scaleColor()
2588
+ }
2589
+ ],
2590
+ /**
2591
+ * Border Color Right
2592
+ * @see https://tailwindcss.com/docs/border-color
2593
+ */ 'border-color-r': [
2594
+ {
2595
+ 'border-r': scaleColor()
2596
+ }
2597
+ ],
2598
+ /**
2599
+ * Border Color Bottom
2600
+ * @see https://tailwindcss.com/docs/border-color
2601
+ */ 'border-color-b': [
2602
+ {
2603
+ 'border-b': scaleColor()
2604
+ }
2605
+ ],
2606
+ /**
2607
+ * Border Color Left
2608
+ * @see https://tailwindcss.com/docs/border-color
2609
+ */ 'border-color-l': [
2610
+ {
2611
+ 'border-l': scaleColor()
2612
+ }
2613
+ ],
2614
+ /**
2615
+ * Divide Color
2616
+ * @see https://tailwindcss.com/docs/divide-color
2617
+ */ 'divide-color': [
2618
+ {
2619
+ divide: scaleColor()
2620
+ }
2621
+ ],
2622
+ /**
2623
+ * Outline Style
2624
+ * @see https://tailwindcss.com/docs/outline-style
2625
+ */ 'outline-style': [
2626
+ {
2627
+ outline: [
2628
+ ...scaleLineStyle(),
2629
+ 'none',
2630
+ 'hidden'
2631
+ ]
2632
+ }
2633
+ ],
2634
+ /**
2635
+ * Outline Offset
2636
+ * @see https://tailwindcss.com/docs/outline-offset
2637
+ */ 'outline-offset': [
2638
+ {
2639
+ 'outline-offset': [
2640
+ isNumber,
2641
+ isArbitraryVariable,
2642
+ isArbitraryValue
2643
+ ]
2644
+ }
2645
+ ],
2646
+ /**
2647
+ * Outline Width
2648
+ * @see https://tailwindcss.com/docs/outline-width
2649
+ */ 'outline-w': [
2650
+ {
2651
+ outline: [
2652
+ '',
2653
+ isNumber,
2654
+ isArbitraryVariableLength,
2655
+ isArbitraryLength
2656
+ ]
2657
+ }
2658
+ ],
2659
+ /**
2660
+ * Outline Color
2661
+ * @see https://tailwindcss.com/docs/outline-color
2662
+ */ 'outline-color': [
2663
+ {
2664
+ outline: scaleColor()
2665
+ }
2666
+ ],
2667
+ // ---------------
2668
+ // --- Effects ---
2669
+ // ---------------
2670
+ /**
2671
+ * Box Shadow
2672
+ * @see https://tailwindcss.com/docs/box-shadow
2673
+ */ shadow: [
2674
+ {
2675
+ shadow: [
2676
+ // Deprecated since Tailwind CSS v4.0.0
2677
+ '',
2678
+ 'none',
2679
+ themeShadow,
2680
+ isArbitraryVariableShadow,
2681
+ isArbitraryShadow
2682
+ ]
2683
+ }
2684
+ ],
2685
+ /**
2686
+ * Box Shadow Color
2687
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
2688
+ */ 'shadow-color': [
2689
+ {
2690
+ shadow: scaleColor()
2691
+ }
2692
+ ],
2693
+ /**
2694
+ * Inset Box Shadow
2695
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
2696
+ */ 'inset-shadow': [
2697
+ {
2698
+ 'inset-shadow': [
2699
+ 'none',
2700
+ themeInsetShadow,
2701
+ isArbitraryVariableShadow,
2702
+ isArbitraryShadow
2703
+ ]
2704
+ }
2705
+ ],
2706
+ /**
2707
+ * Inset Box Shadow Color
2708
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
2709
+ */ 'inset-shadow-color': [
2710
+ {
2711
+ 'inset-shadow': scaleColor()
2712
+ }
2713
+ ],
2714
+ /**
2715
+ * Ring Width
2716
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
2717
+ */ 'ring-w': [
2718
+ {
2719
+ ring: scaleBorderWidth()
2720
+ }
2721
+ ],
2722
+ /**
2723
+ * Ring Width Inset
2724
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
2725
+ * @deprecated since Tailwind CSS v4.0.0
2726
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2727
+ */ 'ring-w-inset': [
2728
+ 'ring-inset'
2729
+ ],
2730
+ /**
2731
+ * Ring Color
2732
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
2733
+ */ 'ring-color': [
2734
+ {
2735
+ ring: scaleColor()
2736
+ }
2737
+ ],
2738
+ /**
2739
+ * Ring Offset Width
2740
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
2741
+ * @deprecated since Tailwind CSS v4.0.0
2742
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2743
+ */ 'ring-offset-w': [
2744
+ {
2745
+ 'ring-offset': [
2746
+ isNumber,
2747
+ isArbitraryLength
2748
+ ]
2749
+ }
2750
+ ],
2751
+ /**
2752
+ * Ring Offset Color
2753
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
2754
+ * @deprecated since Tailwind CSS v4.0.0
2755
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
2756
+ */ 'ring-offset-color': [
2757
+ {
2758
+ 'ring-offset': scaleColor()
2759
+ }
2760
+ ],
2761
+ /**
2762
+ * Inset Ring Width
2763
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
2764
+ */ 'inset-ring-w': [
2765
+ {
2766
+ 'inset-ring': scaleBorderWidth()
2767
+ }
2768
+ ],
2769
+ /**
2770
+ * Inset Ring Color
2771
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
2772
+ */ 'inset-ring-color': [
2773
+ {
2774
+ 'inset-ring': scaleColor()
2775
+ }
2776
+ ],
2777
+ /**
2778
+ * Text Shadow
2779
+ * @see https://tailwindcss.com/docs/text-shadow
2780
+ */ 'text-shadow': [
2781
+ {
2782
+ 'text-shadow': [
2783
+ 'none',
2784
+ themeTextShadow,
2785
+ isArbitraryVariableShadow,
2786
+ isArbitraryShadow
2787
+ ]
2788
+ }
2789
+ ],
2790
+ /**
2791
+ * Text Shadow Color
2792
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
2793
+ */ 'text-shadow-color': [
2794
+ {
2795
+ 'text-shadow': scaleColor()
2796
+ }
2797
+ ],
2798
+ /**
2799
+ * Opacity
2800
+ * @see https://tailwindcss.com/docs/opacity
2801
+ */ opacity: [
2802
+ {
2803
+ opacity: [
2804
+ isNumber,
2805
+ isArbitraryVariable,
2806
+ isArbitraryValue
2807
+ ]
2808
+ }
2809
+ ],
2810
+ /**
2811
+ * Mix Blend Mode
2812
+ * @see https://tailwindcss.com/docs/mix-blend-mode
2813
+ */ 'mix-blend': [
2814
+ {
2815
+ 'mix-blend': [
2816
+ ...scaleBlendMode(),
2817
+ 'plus-darker',
2818
+ 'plus-lighter'
2819
+ ]
2820
+ }
2821
+ ],
2822
+ /**
2823
+ * Background Blend Mode
2824
+ * @see https://tailwindcss.com/docs/background-blend-mode
2825
+ */ 'bg-blend': [
2826
+ {
2827
+ 'bg-blend': scaleBlendMode()
2828
+ }
2829
+ ],
2830
+ /**
2831
+ * Mask Clip
2832
+ * @see https://tailwindcss.com/docs/mask-clip
2833
+ */ 'mask-clip': [
2834
+ {
2835
+ 'mask-clip': [
2836
+ 'border',
2837
+ 'padding',
2838
+ 'content',
2839
+ 'fill',
2840
+ 'stroke',
2841
+ 'view'
2842
+ ]
2843
+ },
2844
+ 'mask-no-clip'
2845
+ ],
2846
+ /**
2847
+ * Mask Composite
2848
+ * @see https://tailwindcss.com/docs/mask-composite
2849
+ */ 'mask-composite': [
2850
+ {
2851
+ mask: [
2852
+ 'add',
2853
+ 'subtract',
2854
+ 'intersect',
2855
+ 'exclude'
2856
+ ]
2857
+ }
2858
+ ],
2859
+ /**
2860
+ * Mask Image
2861
+ * @see https://tailwindcss.com/docs/mask-image
2862
+ */ 'mask-image-linear-pos': [
2863
+ {
2864
+ 'mask-linear': [
2865
+ isNumber
2866
+ ]
2867
+ }
2868
+ ],
2869
+ 'mask-image-linear-from-pos': [
2870
+ {
2871
+ 'mask-linear-from': scaleMaskImagePosition()
2872
+ }
2873
+ ],
2874
+ 'mask-image-linear-to-pos': [
2875
+ {
2876
+ 'mask-linear-to': scaleMaskImagePosition()
2877
+ }
2878
+ ],
2879
+ 'mask-image-linear-from-color': [
2880
+ {
2881
+ 'mask-linear-from': scaleColor()
2882
+ }
2883
+ ],
2884
+ 'mask-image-linear-to-color': [
2885
+ {
2886
+ 'mask-linear-to': scaleColor()
2887
+ }
2888
+ ],
2889
+ 'mask-image-t-from-pos': [
2890
+ {
2891
+ 'mask-t-from': scaleMaskImagePosition()
2892
+ }
2893
+ ],
2894
+ 'mask-image-t-to-pos': [
2895
+ {
2896
+ 'mask-t-to': scaleMaskImagePosition()
2897
+ }
2898
+ ],
2899
+ 'mask-image-t-from-color': [
2900
+ {
2901
+ 'mask-t-from': scaleColor()
2902
+ }
2903
+ ],
2904
+ 'mask-image-t-to-color': [
2905
+ {
2906
+ 'mask-t-to': scaleColor()
2907
+ }
2908
+ ],
2909
+ 'mask-image-r-from-pos': [
2910
+ {
2911
+ 'mask-r-from': scaleMaskImagePosition()
2912
+ }
2913
+ ],
2914
+ 'mask-image-r-to-pos': [
2915
+ {
2916
+ 'mask-r-to': scaleMaskImagePosition()
2917
+ }
2918
+ ],
2919
+ 'mask-image-r-from-color': [
2920
+ {
2921
+ 'mask-r-from': scaleColor()
2922
+ }
2923
+ ],
2924
+ 'mask-image-r-to-color': [
2925
+ {
2926
+ 'mask-r-to': scaleColor()
2927
+ }
2928
+ ],
2929
+ 'mask-image-b-from-pos': [
2930
+ {
2931
+ 'mask-b-from': scaleMaskImagePosition()
2932
+ }
2933
+ ],
2934
+ 'mask-image-b-to-pos': [
2935
+ {
2936
+ 'mask-b-to': scaleMaskImagePosition()
2937
+ }
2938
+ ],
2939
+ 'mask-image-b-from-color': [
2940
+ {
2941
+ 'mask-b-from': scaleColor()
2942
+ }
2943
+ ],
2944
+ 'mask-image-b-to-color': [
2945
+ {
2946
+ 'mask-b-to': scaleColor()
2947
+ }
2948
+ ],
2949
+ 'mask-image-l-from-pos': [
2950
+ {
2951
+ 'mask-l-from': scaleMaskImagePosition()
2952
+ }
2953
+ ],
2954
+ 'mask-image-l-to-pos': [
2955
+ {
2956
+ 'mask-l-to': scaleMaskImagePosition()
2957
+ }
2958
+ ],
2959
+ 'mask-image-l-from-color': [
2960
+ {
2961
+ 'mask-l-from': scaleColor()
2962
+ }
2963
+ ],
2964
+ 'mask-image-l-to-color': [
2965
+ {
2966
+ 'mask-l-to': scaleColor()
2967
+ }
2968
+ ],
2969
+ 'mask-image-x-from-pos': [
2970
+ {
2971
+ 'mask-x-from': scaleMaskImagePosition()
2972
+ }
2973
+ ],
2974
+ 'mask-image-x-to-pos': [
2975
+ {
2976
+ 'mask-x-to': scaleMaskImagePosition()
2977
+ }
2978
+ ],
2979
+ 'mask-image-x-from-color': [
2980
+ {
2981
+ 'mask-x-from': scaleColor()
2982
+ }
2983
+ ],
2984
+ 'mask-image-x-to-color': [
2985
+ {
2986
+ 'mask-x-to': scaleColor()
2987
+ }
2988
+ ],
2989
+ 'mask-image-y-from-pos': [
2990
+ {
2991
+ 'mask-y-from': scaleMaskImagePosition()
2992
+ }
2993
+ ],
2994
+ 'mask-image-y-to-pos': [
2995
+ {
2996
+ 'mask-y-to': scaleMaskImagePosition()
2997
+ }
2998
+ ],
2999
+ 'mask-image-y-from-color': [
3000
+ {
3001
+ 'mask-y-from': scaleColor()
3002
+ }
3003
+ ],
3004
+ 'mask-image-y-to-color': [
3005
+ {
3006
+ 'mask-y-to': scaleColor()
3007
+ }
3008
+ ],
3009
+ 'mask-image-radial': [
3010
+ {
3011
+ 'mask-radial': [
3012
+ isArbitraryVariable,
3013
+ isArbitraryValue
3014
+ ]
3015
+ }
3016
+ ],
3017
+ 'mask-image-radial-from-pos': [
3018
+ {
3019
+ 'mask-radial-from': scaleMaskImagePosition()
3020
+ }
3021
+ ],
3022
+ 'mask-image-radial-to-pos': [
3023
+ {
3024
+ 'mask-radial-to': scaleMaskImagePosition()
3025
+ }
3026
+ ],
3027
+ 'mask-image-radial-from-color': [
3028
+ {
3029
+ 'mask-radial-from': scaleColor()
3030
+ }
3031
+ ],
3032
+ 'mask-image-radial-to-color': [
3033
+ {
3034
+ 'mask-radial-to': scaleColor()
3035
+ }
3036
+ ],
3037
+ 'mask-image-radial-shape': [
3038
+ {
3039
+ 'mask-radial': [
3040
+ 'circle',
3041
+ 'ellipse'
3042
+ ]
3043
+ }
3044
+ ],
3045
+ 'mask-image-radial-size': [
3046
+ {
3047
+ 'mask-radial': [
3048
+ {
3049
+ closest: [
3050
+ 'side',
3051
+ 'corner'
3052
+ ],
3053
+ farthest: [
3054
+ 'side',
3055
+ 'corner'
3056
+ ]
3057
+ }
3058
+ ]
3059
+ }
3060
+ ],
3061
+ 'mask-image-radial-pos': [
3062
+ {
3063
+ 'mask-radial-at': scalePosition()
3064
+ }
3065
+ ],
3066
+ 'mask-image-conic-pos': [
3067
+ {
3068
+ 'mask-conic': [
3069
+ isNumber
3070
+ ]
3071
+ }
3072
+ ],
3073
+ 'mask-image-conic-from-pos': [
3074
+ {
3075
+ 'mask-conic-from': scaleMaskImagePosition()
3076
+ }
3077
+ ],
3078
+ 'mask-image-conic-to-pos': [
3079
+ {
3080
+ 'mask-conic-to': scaleMaskImagePosition()
3081
+ }
3082
+ ],
3083
+ 'mask-image-conic-from-color': [
3084
+ {
3085
+ 'mask-conic-from': scaleColor()
3086
+ }
3087
+ ],
3088
+ 'mask-image-conic-to-color': [
3089
+ {
3090
+ 'mask-conic-to': scaleColor()
3091
+ }
3092
+ ],
3093
+ /**
3094
+ * Mask Mode
3095
+ * @see https://tailwindcss.com/docs/mask-mode
3096
+ */ 'mask-mode': [
3097
+ {
3098
+ mask: [
3099
+ 'alpha',
3100
+ 'luminance',
3101
+ 'match'
3102
+ ]
3103
+ }
3104
+ ],
3105
+ /**
3106
+ * Mask Origin
3107
+ * @see https://tailwindcss.com/docs/mask-origin
3108
+ */ 'mask-origin': [
3109
+ {
3110
+ 'mask-origin': [
3111
+ 'border',
3112
+ 'padding',
3113
+ 'content',
3114
+ 'fill',
3115
+ 'stroke',
3116
+ 'view'
3117
+ ]
3118
+ }
3119
+ ],
3120
+ /**
3121
+ * Mask Position
3122
+ * @see https://tailwindcss.com/docs/mask-position
3123
+ */ 'mask-position': [
3124
+ {
3125
+ mask: scaleBgPosition()
3126
+ }
3127
+ ],
3128
+ /**
3129
+ * Mask Repeat
3130
+ * @see https://tailwindcss.com/docs/mask-repeat
3131
+ */ 'mask-repeat': [
3132
+ {
3133
+ mask: scaleBgRepeat()
3134
+ }
3135
+ ],
3136
+ /**
3137
+ * Mask Size
3138
+ * @see https://tailwindcss.com/docs/mask-size
3139
+ */ 'mask-size': [
3140
+ {
3141
+ mask: scaleBgSize()
3142
+ }
3143
+ ],
3144
+ /**
3145
+ * Mask Type
3146
+ * @see https://tailwindcss.com/docs/mask-type
3147
+ */ 'mask-type': [
3148
+ {
3149
+ 'mask-type': [
3150
+ 'alpha',
3151
+ 'luminance'
3152
+ ]
3153
+ }
3154
+ ],
3155
+ /**
3156
+ * Mask Image
3157
+ * @see https://tailwindcss.com/docs/mask-image
3158
+ */ 'mask-image': [
3159
+ {
3160
+ mask: [
3161
+ 'none',
3162
+ isArbitraryVariable,
3163
+ isArbitraryValue
3164
+ ]
3165
+ }
3166
+ ],
3167
+ // ---------------
3168
+ // --- Filters ---
3169
+ // ---------------
3170
+ /**
3171
+ * Filter
3172
+ * @see https://tailwindcss.com/docs/filter
3173
+ */ filter: [
3174
+ {
3175
+ filter: [
3176
+ // Deprecated since Tailwind CSS v3.0.0
3177
+ '',
3178
+ 'none',
3179
+ isArbitraryVariable,
3180
+ isArbitraryValue
3181
+ ]
3182
+ }
3183
+ ],
3184
+ /**
3185
+ * Blur
3186
+ * @see https://tailwindcss.com/docs/blur
3187
+ */ blur: [
3188
+ {
3189
+ blur: scaleBlur()
3190
+ }
3191
+ ],
3192
+ /**
3193
+ * Brightness
3194
+ * @see https://tailwindcss.com/docs/brightness
3195
+ */ brightness: [
3196
+ {
3197
+ brightness: [
3198
+ isNumber,
3199
+ isArbitraryVariable,
3200
+ isArbitraryValue
3201
+ ]
3202
+ }
3203
+ ],
3204
+ /**
3205
+ * Contrast
3206
+ * @see https://tailwindcss.com/docs/contrast
3207
+ */ contrast: [
3208
+ {
3209
+ contrast: [
3210
+ isNumber,
3211
+ isArbitraryVariable,
3212
+ isArbitraryValue
3213
+ ]
3214
+ }
3215
+ ],
3216
+ /**
3217
+ * Drop Shadow
3218
+ * @see https://tailwindcss.com/docs/drop-shadow
3219
+ */ 'drop-shadow': [
3220
+ {
3221
+ 'drop-shadow': [
3222
+ // Deprecated since Tailwind CSS v4.0.0
3223
+ '',
3224
+ 'none',
3225
+ themeDropShadow,
3226
+ isArbitraryVariableShadow,
3227
+ isArbitraryShadow
3228
+ ]
3229
+ }
3230
+ ],
3231
+ /**
3232
+ * Drop Shadow Color
3233
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
3234
+ */ 'drop-shadow-color': [
3235
+ {
3236
+ 'drop-shadow': scaleColor()
3237
+ }
3238
+ ],
3239
+ /**
3240
+ * Grayscale
3241
+ * @see https://tailwindcss.com/docs/grayscale
3242
+ */ grayscale: [
3243
+ {
3244
+ grayscale: [
3245
+ '',
3246
+ isNumber,
3247
+ isArbitraryVariable,
3248
+ isArbitraryValue
3249
+ ]
3250
+ }
3251
+ ],
3252
+ /**
3253
+ * Hue Rotate
3254
+ * @see https://tailwindcss.com/docs/hue-rotate
3255
+ */ 'hue-rotate': [
3256
+ {
3257
+ 'hue-rotate': [
3258
+ isNumber,
3259
+ isArbitraryVariable,
3260
+ isArbitraryValue
3261
+ ]
3262
+ }
3263
+ ],
3264
+ /**
3265
+ * Invert
3266
+ * @see https://tailwindcss.com/docs/invert
3267
+ */ invert: [
3268
+ {
3269
+ invert: [
3270
+ '',
3271
+ isNumber,
3272
+ isArbitraryVariable,
3273
+ isArbitraryValue
3274
+ ]
3275
+ }
3276
+ ],
3277
+ /**
3278
+ * Saturate
3279
+ * @see https://tailwindcss.com/docs/saturate
3280
+ */ saturate: [
3281
+ {
3282
+ saturate: [
3283
+ isNumber,
3284
+ isArbitraryVariable,
3285
+ isArbitraryValue
3286
+ ]
3287
+ }
3288
+ ],
3289
+ /**
3290
+ * Sepia
3291
+ * @see https://tailwindcss.com/docs/sepia
3292
+ */ sepia: [
3293
+ {
3294
+ sepia: [
3295
+ '',
3296
+ isNumber,
3297
+ isArbitraryVariable,
3298
+ isArbitraryValue
3299
+ ]
3300
+ }
3301
+ ],
3302
+ /**
3303
+ * Backdrop Filter
3304
+ * @see https://tailwindcss.com/docs/backdrop-filter
3305
+ */ 'backdrop-filter': [
3306
+ {
3307
+ 'backdrop-filter': [
3308
+ // Deprecated since Tailwind CSS v3.0.0
3309
+ '',
3310
+ 'none',
3311
+ isArbitraryVariable,
3312
+ isArbitraryValue
3313
+ ]
3314
+ }
3315
+ ],
3316
+ /**
3317
+ * Backdrop Blur
3318
+ * @see https://tailwindcss.com/docs/backdrop-blur
3319
+ */ 'backdrop-blur': [
3320
+ {
3321
+ 'backdrop-blur': scaleBlur()
3322
+ }
3323
+ ],
3324
+ /**
3325
+ * Backdrop Brightness
3326
+ * @see https://tailwindcss.com/docs/backdrop-brightness
3327
+ */ 'backdrop-brightness': [
3328
+ {
3329
+ 'backdrop-brightness': [
3330
+ isNumber,
3331
+ isArbitraryVariable,
3332
+ isArbitraryValue
3333
+ ]
3334
+ }
3335
+ ],
3336
+ /**
3337
+ * Backdrop Contrast
3338
+ * @see https://tailwindcss.com/docs/backdrop-contrast
3339
+ */ 'backdrop-contrast': [
3340
+ {
3341
+ 'backdrop-contrast': [
3342
+ isNumber,
3343
+ isArbitraryVariable,
3344
+ isArbitraryValue
3345
+ ]
3346
+ }
3347
+ ],
3348
+ /**
3349
+ * Backdrop Grayscale
3350
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
3351
+ */ 'backdrop-grayscale': [
3352
+ {
3353
+ 'backdrop-grayscale': [
3354
+ '',
3355
+ isNumber,
3356
+ isArbitraryVariable,
3357
+ isArbitraryValue
3358
+ ]
3359
+ }
3360
+ ],
3361
+ /**
3362
+ * Backdrop Hue Rotate
3363
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
3364
+ */ 'backdrop-hue-rotate': [
3365
+ {
3366
+ 'backdrop-hue-rotate': [
3367
+ isNumber,
3368
+ isArbitraryVariable,
3369
+ isArbitraryValue
3370
+ ]
3371
+ }
3372
+ ],
3373
+ /**
3374
+ * Backdrop Invert
3375
+ * @see https://tailwindcss.com/docs/backdrop-invert
3376
+ */ 'backdrop-invert': [
3377
+ {
3378
+ 'backdrop-invert': [
3379
+ '',
3380
+ isNumber,
3381
+ isArbitraryVariable,
3382
+ isArbitraryValue
3383
+ ]
3384
+ }
3385
+ ],
3386
+ /**
3387
+ * Backdrop Opacity
3388
+ * @see https://tailwindcss.com/docs/backdrop-opacity
3389
+ */ 'backdrop-opacity': [
3390
+ {
3391
+ 'backdrop-opacity': [
3392
+ isNumber,
3393
+ isArbitraryVariable,
3394
+ isArbitraryValue
3395
+ ]
3396
+ }
3397
+ ],
3398
+ /**
3399
+ * Backdrop Saturate
3400
+ * @see https://tailwindcss.com/docs/backdrop-saturate
3401
+ */ 'backdrop-saturate': [
3402
+ {
3403
+ 'backdrop-saturate': [
3404
+ isNumber,
3405
+ isArbitraryVariable,
3406
+ isArbitraryValue
3407
+ ]
3408
+ }
3409
+ ],
3410
+ /**
3411
+ * Backdrop Sepia
3412
+ * @see https://tailwindcss.com/docs/backdrop-sepia
3413
+ */ 'backdrop-sepia': [
3414
+ {
3415
+ 'backdrop-sepia': [
3416
+ '',
3417
+ isNumber,
3418
+ isArbitraryVariable,
3419
+ isArbitraryValue
3420
+ ]
3421
+ }
3422
+ ],
3423
+ // --------------
3424
+ // --- Tables ---
3425
+ // --------------
3426
+ /**
3427
+ * Border Collapse
3428
+ * @see https://tailwindcss.com/docs/border-collapse
3429
+ */ 'border-collapse': [
3430
+ {
3431
+ border: [
3432
+ 'collapse',
3433
+ 'separate'
3434
+ ]
3435
+ }
3436
+ ],
3437
+ /**
3438
+ * Border Spacing
3439
+ * @see https://tailwindcss.com/docs/border-spacing
3440
+ */ 'border-spacing': [
3441
+ {
3442
+ 'border-spacing': scaleUnambiguousSpacing()
3443
+ }
3444
+ ],
3445
+ /**
3446
+ * Border Spacing X
3447
+ * @see https://tailwindcss.com/docs/border-spacing
3448
+ */ 'border-spacing-x': [
3449
+ {
3450
+ 'border-spacing-x': scaleUnambiguousSpacing()
3451
+ }
3452
+ ],
3453
+ /**
3454
+ * Border Spacing Y
3455
+ * @see https://tailwindcss.com/docs/border-spacing
3456
+ */ 'border-spacing-y': [
3457
+ {
3458
+ 'border-spacing-y': scaleUnambiguousSpacing()
3459
+ }
3460
+ ],
3461
+ /**
3462
+ * Table Layout
3463
+ * @see https://tailwindcss.com/docs/table-layout
3464
+ */ 'table-layout': [
3465
+ {
3466
+ table: [
3467
+ 'auto',
3468
+ 'fixed'
3469
+ ]
3470
+ }
3471
+ ],
3472
+ /**
3473
+ * Caption Side
3474
+ * @see https://tailwindcss.com/docs/caption-side
3475
+ */ caption: [
3476
+ {
3477
+ caption: [
3478
+ 'top',
3479
+ 'bottom'
3480
+ ]
3481
+ }
3482
+ ],
3483
+ // ---------------------------------
3484
+ // --- Transitions and Animation ---
3485
+ // ---------------------------------
3486
+ /**
3487
+ * Transition Property
3488
+ * @see https://tailwindcss.com/docs/transition-property
3489
+ */ transition: [
3490
+ {
3491
+ transition: [
3492
+ '',
3493
+ 'all',
3494
+ 'colors',
3495
+ 'opacity',
3496
+ 'shadow',
3497
+ 'transform',
3498
+ 'none',
3499
+ isArbitraryVariable,
3500
+ isArbitraryValue
3501
+ ]
3502
+ }
3503
+ ],
3504
+ /**
3505
+ * Transition Behavior
3506
+ * @see https://tailwindcss.com/docs/transition-behavior
3507
+ */ 'transition-behavior': [
3508
+ {
3509
+ transition: [
3510
+ 'normal',
3511
+ 'discrete'
3512
+ ]
3513
+ }
3514
+ ],
3515
+ /**
3516
+ * Transition Duration
3517
+ * @see https://tailwindcss.com/docs/transition-duration
3518
+ */ duration: [
3519
+ {
3520
+ duration: [
3521
+ isNumber,
3522
+ 'initial',
3523
+ isArbitraryVariable,
3524
+ isArbitraryValue
3525
+ ]
3526
+ }
3527
+ ],
3528
+ /**
3529
+ * Transition Timing Function
3530
+ * @see https://tailwindcss.com/docs/transition-timing-function
3531
+ */ ease: [
3532
+ {
3533
+ ease: [
3534
+ 'linear',
3535
+ 'initial',
3536
+ themeEase,
3537
+ isArbitraryVariable,
3538
+ isArbitraryValue
3539
+ ]
3540
+ }
3541
+ ],
3542
+ /**
3543
+ * Transition Delay
3544
+ * @see https://tailwindcss.com/docs/transition-delay
3545
+ */ delay: [
3546
+ {
3547
+ delay: [
3548
+ isNumber,
3549
+ isArbitraryVariable,
3550
+ isArbitraryValue
3551
+ ]
3552
+ }
3553
+ ],
3554
+ /**
3555
+ * Animation
3556
+ * @see https://tailwindcss.com/docs/animation
3557
+ */ animate: [
3558
+ {
3559
+ animate: [
3560
+ 'none',
3561
+ themeAnimate,
3562
+ isArbitraryVariable,
3563
+ isArbitraryValue
3564
+ ]
3565
+ }
3566
+ ],
3567
+ // ------------------
3568
+ // --- Transforms ---
3569
+ // ------------------
3570
+ /**
3571
+ * Backface Visibility
3572
+ * @see https://tailwindcss.com/docs/backface-visibility
3573
+ */ backface: [
3574
+ {
3575
+ backface: [
3576
+ 'hidden',
3577
+ 'visible'
3578
+ ]
3579
+ }
3580
+ ],
3581
+ /**
3582
+ * Perspective
3583
+ * @see https://tailwindcss.com/docs/perspective
3584
+ */ perspective: [
3585
+ {
3586
+ perspective: [
3587
+ themePerspective,
3588
+ isArbitraryVariable,
3589
+ isArbitraryValue
3590
+ ]
3591
+ }
3592
+ ],
3593
+ /**
3594
+ * Perspective Origin
3595
+ * @see https://tailwindcss.com/docs/perspective-origin
3596
+ */ 'perspective-origin': [
3597
+ {
3598
+ 'perspective-origin': scalePositionWithArbitrary()
3599
+ }
3600
+ ],
3601
+ /**
3602
+ * Rotate
3603
+ * @see https://tailwindcss.com/docs/rotate
3604
+ */ rotate: [
3605
+ {
3606
+ rotate: scaleRotate()
3607
+ }
3608
+ ],
3609
+ /**
3610
+ * Rotate X
3611
+ * @see https://tailwindcss.com/docs/rotate
3612
+ */ 'rotate-x': [
3613
+ {
3614
+ 'rotate-x': scaleRotate()
3615
+ }
3616
+ ],
3617
+ /**
3618
+ * Rotate Y
3619
+ * @see https://tailwindcss.com/docs/rotate
3620
+ */ 'rotate-y': [
3621
+ {
3622
+ 'rotate-y': scaleRotate()
3623
+ }
3624
+ ],
3625
+ /**
3626
+ * Rotate Z
3627
+ * @see https://tailwindcss.com/docs/rotate
3628
+ */ 'rotate-z': [
3629
+ {
3630
+ 'rotate-z': scaleRotate()
3631
+ }
3632
+ ],
3633
+ /**
3634
+ * Scale
3635
+ * @see https://tailwindcss.com/docs/scale
3636
+ */ scale: [
3637
+ {
3638
+ scale: scaleScale()
3639
+ }
3640
+ ],
3641
+ /**
3642
+ * Scale X
3643
+ * @see https://tailwindcss.com/docs/scale
3644
+ */ 'scale-x': [
3645
+ {
3646
+ 'scale-x': scaleScale()
3647
+ }
3648
+ ],
3649
+ /**
3650
+ * Scale Y
3651
+ * @see https://tailwindcss.com/docs/scale
3652
+ */ 'scale-y': [
3653
+ {
3654
+ 'scale-y': scaleScale()
3655
+ }
3656
+ ],
3657
+ /**
3658
+ * Scale Z
3659
+ * @see https://tailwindcss.com/docs/scale
3660
+ */ 'scale-z': [
3661
+ {
3662
+ 'scale-z': scaleScale()
3663
+ }
3664
+ ],
3665
+ /**
3666
+ * Scale 3D
3667
+ * @see https://tailwindcss.com/docs/scale
3668
+ */ 'scale-3d': [
3669
+ 'scale-3d'
3670
+ ],
3671
+ /**
3672
+ * Skew
3673
+ * @see https://tailwindcss.com/docs/skew
3674
+ */ skew: [
3675
+ {
3676
+ skew: scaleSkew()
3677
+ }
3678
+ ],
3679
+ /**
3680
+ * Skew X
3681
+ * @see https://tailwindcss.com/docs/skew
3682
+ */ 'skew-x': [
3683
+ {
3684
+ 'skew-x': scaleSkew()
3685
+ }
3686
+ ],
3687
+ /**
3688
+ * Skew Y
3689
+ * @see https://tailwindcss.com/docs/skew
3690
+ */ 'skew-y': [
3691
+ {
3692
+ 'skew-y': scaleSkew()
3693
+ }
3694
+ ],
3695
+ /**
3696
+ * Transform
3697
+ * @see https://tailwindcss.com/docs/transform
3698
+ */ transform: [
3699
+ {
3700
+ transform: [
3701
+ isArbitraryVariable,
3702
+ isArbitraryValue,
3703
+ '',
3704
+ 'none',
3705
+ 'gpu',
3706
+ 'cpu'
3707
+ ]
3708
+ }
3709
+ ],
3710
+ /**
3711
+ * Transform Origin
3712
+ * @see https://tailwindcss.com/docs/transform-origin
3713
+ */ 'transform-origin': [
3714
+ {
3715
+ origin: scalePositionWithArbitrary()
3716
+ }
3717
+ ],
3718
+ /**
3719
+ * Transform Style
3720
+ * @see https://tailwindcss.com/docs/transform-style
3721
+ */ 'transform-style': [
3722
+ {
3723
+ transform: [
3724
+ '3d',
3725
+ 'flat'
3726
+ ]
3727
+ }
3728
+ ],
3729
+ /**
3730
+ * Translate
3731
+ * @see https://tailwindcss.com/docs/translate
3732
+ */ translate: [
3733
+ {
3734
+ translate: scaleTranslate()
3735
+ }
3736
+ ],
3737
+ /**
3738
+ * Translate X
3739
+ * @see https://tailwindcss.com/docs/translate
3740
+ */ 'translate-x': [
3741
+ {
3742
+ 'translate-x': scaleTranslate()
3743
+ }
3744
+ ],
3745
+ /**
3746
+ * Translate Y
3747
+ * @see https://tailwindcss.com/docs/translate
3748
+ */ 'translate-y': [
3749
+ {
3750
+ 'translate-y': scaleTranslate()
3751
+ }
3752
+ ],
3753
+ /**
3754
+ * Translate Z
3755
+ * @see https://tailwindcss.com/docs/translate
3756
+ */ 'translate-z': [
3757
+ {
3758
+ 'translate-z': scaleTranslate()
3759
+ }
3760
+ ],
3761
+ /**
3762
+ * Translate None
3763
+ * @see https://tailwindcss.com/docs/translate
3764
+ */ 'translate-none': [
3765
+ 'translate-none'
3766
+ ],
3767
+ // ---------------------
3768
+ // --- Interactivity ---
3769
+ // ---------------------
3770
+ /**
3771
+ * Accent Color
3772
+ * @see https://tailwindcss.com/docs/accent-color
3773
+ */ accent: [
3774
+ {
3775
+ accent: scaleColor()
3776
+ }
3777
+ ],
3778
+ /**
3779
+ * Appearance
3780
+ * @see https://tailwindcss.com/docs/appearance
3781
+ */ appearance: [
3782
+ {
3783
+ appearance: [
3784
+ 'none',
3785
+ 'auto'
3786
+ ]
3787
+ }
3788
+ ],
3789
+ /**
3790
+ * Caret Color
3791
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
3792
+ */ 'caret-color': [
3793
+ {
3794
+ caret: scaleColor()
3795
+ }
3796
+ ],
3797
+ /**
3798
+ * Color Scheme
3799
+ * @see https://tailwindcss.com/docs/color-scheme
3800
+ */ 'color-scheme': [
3801
+ {
3802
+ scheme: [
3803
+ 'normal',
3804
+ 'dark',
3805
+ 'light',
3806
+ 'light-dark',
3807
+ 'only-dark',
3808
+ 'only-light'
3809
+ ]
3810
+ }
3811
+ ],
3812
+ /**
3813
+ * Cursor
3814
+ * @see https://tailwindcss.com/docs/cursor
3815
+ */ cursor: [
3816
+ {
3817
+ cursor: [
3818
+ 'auto',
3819
+ 'default',
3820
+ 'pointer',
3821
+ 'wait',
3822
+ 'text',
3823
+ 'move',
3824
+ 'help',
3825
+ 'not-allowed',
3826
+ 'none',
3827
+ 'context-menu',
3828
+ 'progress',
3829
+ 'cell',
3830
+ 'crosshair',
3831
+ 'vertical-text',
3832
+ 'alias',
3833
+ 'copy',
3834
+ 'no-drop',
3835
+ 'grab',
3836
+ 'grabbing',
3837
+ 'all-scroll',
3838
+ 'col-resize',
3839
+ 'row-resize',
3840
+ 'n-resize',
3841
+ 'e-resize',
3842
+ 's-resize',
3843
+ 'w-resize',
3844
+ 'ne-resize',
3845
+ 'nw-resize',
3846
+ 'se-resize',
3847
+ 'sw-resize',
3848
+ 'ew-resize',
3849
+ 'ns-resize',
3850
+ 'nesw-resize',
3851
+ 'nwse-resize',
3852
+ 'zoom-in',
3853
+ 'zoom-out',
3854
+ isArbitraryVariable,
3855
+ isArbitraryValue
3856
+ ]
3857
+ }
3858
+ ],
3859
+ /**
3860
+ * Field Sizing
3861
+ * @see https://tailwindcss.com/docs/field-sizing
3862
+ */ 'field-sizing': [
3863
+ {
3864
+ 'field-sizing': [
3865
+ 'fixed',
3866
+ 'content'
3867
+ ]
3868
+ }
3869
+ ],
3870
+ /**
3871
+ * Pointer Events
3872
+ * @see https://tailwindcss.com/docs/pointer-events
3873
+ */ 'pointer-events': [
3874
+ {
3875
+ 'pointer-events': [
3876
+ 'auto',
3877
+ 'none'
3878
+ ]
3879
+ }
3880
+ ],
3881
+ /**
3882
+ * Resize
3883
+ * @see https://tailwindcss.com/docs/resize
3884
+ */ resize: [
3885
+ {
3886
+ resize: [
3887
+ 'none',
3888
+ '',
3889
+ 'y',
3890
+ 'x'
3891
+ ]
3892
+ }
3893
+ ],
3894
+ /**
3895
+ * Scroll Behavior
3896
+ * @see https://tailwindcss.com/docs/scroll-behavior
3897
+ */ 'scroll-behavior': [
3898
+ {
3899
+ scroll: [
3900
+ 'auto',
3901
+ 'smooth'
3902
+ ]
3903
+ }
3904
+ ],
3905
+ /**
3906
+ * Scroll Margin
3907
+ * @see https://tailwindcss.com/docs/scroll-margin
3908
+ */ 'scroll-m': [
3909
+ {
3910
+ 'scroll-m': scaleUnambiguousSpacing()
3911
+ }
3912
+ ],
3913
+ /**
3914
+ * Scroll Margin X
3915
+ * @see https://tailwindcss.com/docs/scroll-margin
3916
+ */ 'scroll-mx': [
3917
+ {
3918
+ 'scroll-mx': scaleUnambiguousSpacing()
3919
+ }
3920
+ ],
3921
+ /**
3922
+ * Scroll Margin Y
3923
+ * @see https://tailwindcss.com/docs/scroll-margin
3924
+ */ 'scroll-my': [
3925
+ {
3926
+ 'scroll-my': scaleUnambiguousSpacing()
3927
+ }
3928
+ ],
3929
+ /**
3930
+ * Scroll Margin Start
3931
+ * @see https://tailwindcss.com/docs/scroll-margin
3932
+ */ 'scroll-ms': [
3933
+ {
3934
+ 'scroll-ms': scaleUnambiguousSpacing()
3935
+ }
3936
+ ],
3937
+ /**
3938
+ * Scroll Margin End
3939
+ * @see https://tailwindcss.com/docs/scroll-margin
3940
+ */ 'scroll-me': [
3941
+ {
3942
+ 'scroll-me': scaleUnambiguousSpacing()
3943
+ }
3944
+ ],
3945
+ /**
3946
+ * Scroll Margin Top
3947
+ * @see https://tailwindcss.com/docs/scroll-margin
3948
+ */ 'scroll-mt': [
3949
+ {
3950
+ 'scroll-mt': scaleUnambiguousSpacing()
3951
+ }
3952
+ ],
3953
+ /**
3954
+ * Scroll Margin Right
3955
+ * @see https://tailwindcss.com/docs/scroll-margin
3956
+ */ 'scroll-mr': [
3957
+ {
3958
+ 'scroll-mr': scaleUnambiguousSpacing()
3959
+ }
3960
+ ],
3961
+ /**
3962
+ * Scroll Margin Bottom
3963
+ * @see https://tailwindcss.com/docs/scroll-margin
3964
+ */ 'scroll-mb': [
3965
+ {
3966
+ 'scroll-mb': scaleUnambiguousSpacing()
3967
+ }
3968
+ ],
3969
+ /**
3970
+ * Scroll Margin Left
3971
+ * @see https://tailwindcss.com/docs/scroll-margin
3972
+ */ 'scroll-ml': [
3973
+ {
3974
+ 'scroll-ml': scaleUnambiguousSpacing()
3975
+ }
3976
+ ],
3977
+ /**
3978
+ * Scroll Padding
3979
+ * @see https://tailwindcss.com/docs/scroll-padding
3980
+ */ 'scroll-p': [
3981
+ {
3982
+ 'scroll-p': scaleUnambiguousSpacing()
3983
+ }
3984
+ ],
3985
+ /**
3986
+ * Scroll Padding X
3987
+ * @see https://tailwindcss.com/docs/scroll-padding
3988
+ */ 'scroll-px': [
3989
+ {
3990
+ 'scroll-px': scaleUnambiguousSpacing()
3991
+ }
3992
+ ],
3993
+ /**
3994
+ * Scroll Padding Y
3995
+ * @see https://tailwindcss.com/docs/scroll-padding
3996
+ */ 'scroll-py': [
3997
+ {
3998
+ 'scroll-py': scaleUnambiguousSpacing()
3999
+ }
4000
+ ],
4001
+ /**
4002
+ * Scroll Padding Start
4003
+ * @see https://tailwindcss.com/docs/scroll-padding
4004
+ */ 'scroll-ps': [
4005
+ {
4006
+ 'scroll-ps': scaleUnambiguousSpacing()
4007
+ }
4008
+ ],
4009
+ /**
4010
+ * Scroll Padding End
4011
+ * @see https://tailwindcss.com/docs/scroll-padding
4012
+ */ 'scroll-pe': [
4013
+ {
4014
+ 'scroll-pe': scaleUnambiguousSpacing()
4015
+ }
4016
+ ],
4017
+ /**
4018
+ * Scroll Padding Top
4019
+ * @see https://tailwindcss.com/docs/scroll-padding
4020
+ */ 'scroll-pt': [
4021
+ {
4022
+ 'scroll-pt': scaleUnambiguousSpacing()
4023
+ }
4024
+ ],
4025
+ /**
4026
+ * Scroll Padding Right
4027
+ * @see https://tailwindcss.com/docs/scroll-padding
4028
+ */ 'scroll-pr': [
4029
+ {
4030
+ 'scroll-pr': scaleUnambiguousSpacing()
4031
+ }
4032
+ ],
4033
+ /**
4034
+ * Scroll Padding Bottom
4035
+ * @see https://tailwindcss.com/docs/scroll-padding
4036
+ */ 'scroll-pb': [
4037
+ {
4038
+ 'scroll-pb': scaleUnambiguousSpacing()
4039
+ }
4040
+ ],
4041
+ /**
4042
+ * Scroll Padding Left
4043
+ * @see https://tailwindcss.com/docs/scroll-padding
4044
+ */ 'scroll-pl': [
4045
+ {
4046
+ 'scroll-pl': scaleUnambiguousSpacing()
4047
+ }
4048
+ ],
4049
+ /**
4050
+ * Scroll Snap Align
4051
+ * @see https://tailwindcss.com/docs/scroll-snap-align
4052
+ */ 'snap-align': [
4053
+ {
4054
+ snap: [
4055
+ 'start',
4056
+ 'end',
4057
+ 'center',
4058
+ 'align-none'
4059
+ ]
4060
+ }
4061
+ ],
4062
+ /**
4063
+ * Scroll Snap Stop
4064
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
4065
+ */ 'snap-stop': [
4066
+ {
4067
+ snap: [
4068
+ 'normal',
4069
+ 'always'
4070
+ ]
4071
+ }
4072
+ ],
4073
+ /**
4074
+ * Scroll Snap Type
4075
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4076
+ */ 'snap-type': [
4077
+ {
4078
+ snap: [
4079
+ 'none',
4080
+ 'x',
4081
+ 'y',
4082
+ 'both'
4083
+ ]
4084
+ }
4085
+ ],
4086
+ /**
4087
+ * Scroll Snap Type Strictness
4088
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4089
+ */ 'snap-strictness': [
4090
+ {
4091
+ snap: [
4092
+ 'mandatory',
4093
+ 'proximity'
4094
+ ]
4095
+ }
4096
+ ],
4097
+ /**
4098
+ * Touch Action
4099
+ * @see https://tailwindcss.com/docs/touch-action
4100
+ */ touch: [
4101
+ {
4102
+ touch: [
4103
+ 'auto',
4104
+ 'none',
4105
+ 'manipulation'
4106
+ ]
4107
+ }
4108
+ ],
4109
+ /**
4110
+ * Touch Action X
4111
+ * @see https://tailwindcss.com/docs/touch-action
4112
+ */ 'touch-x': [
4113
+ {
4114
+ 'touch-pan': [
4115
+ 'x',
4116
+ 'left',
4117
+ 'right'
4118
+ ]
4119
+ }
4120
+ ],
4121
+ /**
4122
+ * Touch Action Y
4123
+ * @see https://tailwindcss.com/docs/touch-action
4124
+ */ 'touch-y': [
4125
+ {
4126
+ 'touch-pan': [
4127
+ 'y',
4128
+ 'up',
4129
+ 'down'
4130
+ ]
4131
+ }
4132
+ ],
4133
+ /**
4134
+ * Touch Action Pinch Zoom
4135
+ * @see https://tailwindcss.com/docs/touch-action
4136
+ */ 'touch-pz': [
4137
+ 'touch-pinch-zoom'
4138
+ ],
4139
+ /**
4140
+ * User Select
4141
+ * @see https://tailwindcss.com/docs/user-select
4142
+ */ select: [
4143
+ {
4144
+ select: [
4145
+ 'none',
4146
+ 'text',
4147
+ 'all',
4148
+ 'auto'
4149
+ ]
4150
+ }
4151
+ ],
4152
+ /**
4153
+ * Will Change
4154
+ * @see https://tailwindcss.com/docs/will-change
4155
+ */ 'will-change': [
4156
+ {
4157
+ 'will-change': [
4158
+ 'auto',
4159
+ 'scroll',
4160
+ 'contents',
4161
+ 'transform',
4162
+ isArbitraryVariable,
4163
+ isArbitraryValue
4164
+ ]
4165
+ }
4166
+ ],
4167
+ // -----------
4168
+ // --- SVG ---
4169
+ // -----------
4170
+ /**
4171
+ * Fill
4172
+ * @see https://tailwindcss.com/docs/fill
4173
+ */ fill: [
4174
+ {
4175
+ fill: [
4176
+ 'none',
4177
+ ...scaleColor()
4178
+ ]
4179
+ }
4180
+ ],
4181
+ /**
4182
+ * Stroke Width
4183
+ * @see https://tailwindcss.com/docs/stroke-width
4184
+ */ 'stroke-w': [
4185
+ {
4186
+ stroke: [
4187
+ isNumber,
4188
+ isArbitraryVariableLength,
4189
+ isArbitraryLength,
4190
+ isArbitraryNumber
4191
+ ]
4192
+ }
4193
+ ],
4194
+ /**
4195
+ * Stroke
4196
+ * @see https://tailwindcss.com/docs/stroke
4197
+ */ stroke: [
4198
+ {
4199
+ stroke: [
4200
+ 'none',
4201
+ ...scaleColor()
4202
+ ]
4203
+ }
4204
+ ],
4205
+ // ---------------------
4206
+ // --- Accessibility ---
4207
+ // ---------------------
4208
+ /**
4209
+ * Forced Color Adjust
4210
+ * @see https://tailwindcss.com/docs/forced-color-adjust
4211
+ */ 'forced-color-adjust': [
4212
+ {
4213
+ 'forced-color-adjust': [
4214
+ 'auto',
4215
+ 'none'
4216
+ ]
4217
+ }
4218
+ ]
4219
+ },
4220
+ conflictingClassGroups: {
4221
+ overflow: [
4222
+ 'overflow-x',
4223
+ 'overflow-y'
4224
+ ],
4225
+ overscroll: [
4226
+ 'overscroll-x',
4227
+ 'overscroll-y'
4228
+ ],
4229
+ inset: [
4230
+ 'inset-x',
4231
+ 'inset-y',
4232
+ 'start',
4233
+ 'end',
4234
+ 'top',
4235
+ 'right',
4236
+ 'bottom',
4237
+ 'left'
4238
+ ],
4239
+ 'inset-x': [
4240
+ 'right',
4241
+ 'left'
4242
+ ],
4243
+ 'inset-y': [
4244
+ 'top',
4245
+ 'bottom'
4246
+ ],
4247
+ flex: [
4248
+ 'basis',
4249
+ 'grow',
4250
+ 'shrink'
4251
+ ],
4252
+ gap: [
4253
+ 'gap-x',
4254
+ 'gap-y'
4255
+ ],
4256
+ p: [
4257
+ 'px',
4258
+ 'py',
4259
+ 'ps',
4260
+ 'pe',
4261
+ 'pt',
4262
+ 'pr',
4263
+ 'pb',
4264
+ 'pl'
4265
+ ],
4266
+ px: [
4267
+ 'pr',
4268
+ 'pl'
4269
+ ],
4270
+ py: [
4271
+ 'pt',
4272
+ 'pb'
4273
+ ],
4274
+ m: [
4275
+ 'mx',
4276
+ 'my',
4277
+ 'ms',
4278
+ 'me',
4279
+ 'mt',
4280
+ 'mr',
4281
+ 'mb',
4282
+ 'ml'
4283
+ ],
4284
+ mx: [
4285
+ 'mr',
4286
+ 'ml'
4287
+ ],
4288
+ my: [
4289
+ 'mt',
4290
+ 'mb'
4291
+ ],
4292
+ size: [
4293
+ 'w',
4294
+ 'h'
4295
+ ],
4296
+ 'font-size': [
4297
+ 'leading'
4298
+ ],
4299
+ 'fvn-normal': [
4300
+ 'fvn-ordinal',
4301
+ 'fvn-slashed-zero',
4302
+ 'fvn-figure',
4303
+ 'fvn-spacing',
4304
+ 'fvn-fraction'
4305
+ ],
4306
+ 'fvn-ordinal': [
4307
+ 'fvn-normal'
4308
+ ],
4309
+ 'fvn-slashed-zero': [
4310
+ 'fvn-normal'
4311
+ ],
4312
+ 'fvn-figure': [
4313
+ 'fvn-normal'
4314
+ ],
4315
+ 'fvn-spacing': [
4316
+ 'fvn-normal'
4317
+ ],
4318
+ 'fvn-fraction': [
4319
+ 'fvn-normal'
4320
+ ],
4321
+ 'line-clamp': [
4322
+ 'display',
4323
+ 'overflow'
4324
+ ],
4325
+ rounded: [
4326
+ 'rounded-s',
4327
+ 'rounded-e',
4328
+ 'rounded-t',
4329
+ 'rounded-r',
4330
+ 'rounded-b',
4331
+ 'rounded-l',
4332
+ 'rounded-ss',
4333
+ 'rounded-se',
4334
+ 'rounded-ee',
4335
+ 'rounded-es',
4336
+ 'rounded-tl',
4337
+ 'rounded-tr',
4338
+ 'rounded-br',
4339
+ 'rounded-bl'
4340
+ ],
4341
+ 'rounded-s': [
4342
+ 'rounded-ss',
4343
+ 'rounded-es'
4344
+ ],
4345
+ 'rounded-e': [
4346
+ 'rounded-se',
4347
+ 'rounded-ee'
4348
+ ],
4349
+ 'rounded-t': [
4350
+ 'rounded-tl',
4351
+ 'rounded-tr'
4352
+ ],
4353
+ 'rounded-r': [
4354
+ 'rounded-tr',
4355
+ 'rounded-br'
4356
+ ],
4357
+ 'rounded-b': [
4358
+ 'rounded-br',
4359
+ 'rounded-bl'
4360
+ ],
4361
+ 'rounded-l': [
4362
+ 'rounded-tl',
4363
+ 'rounded-bl'
4364
+ ],
4365
+ 'border-spacing': [
4366
+ 'border-spacing-x',
4367
+ 'border-spacing-y'
4368
+ ],
4369
+ 'border-w': [
4370
+ 'border-w-x',
4371
+ 'border-w-y',
4372
+ 'border-w-s',
4373
+ 'border-w-e',
4374
+ 'border-w-t',
4375
+ 'border-w-r',
4376
+ 'border-w-b',
4377
+ 'border-w-l'
4378
+ ],
4379
+ 'border-w-x': [
4380
+ 'border-w-r',
4381
+ 'border-w-l'
4382
+ ],
4383
+ 'border-w-y': [
4384
+ 'border-w-t',
4385
+ 'border-w-b'
4386
+ ],
4387
+ 'border-color': [
4388
+ 'border-color-x',
4389
+ 'border-color-y',
4390
+ 'border-color-s',
4391
+ 'border-color-e',
4392
+ 'border-color-t',
4393
+ 'border-color-r',
4394
+ 'border-color-b',
4395
+ 'border-color-l'
4396
+ ],
4397
+ 'border-color-x': [
4398
+ 'border-color-r',
4399
+ 'border-color-l'
4400
+ ],
4401
+ 'border-color-y': [
4402
+ 'border-color-t',
4403
+ 'border-color-b'
4404
+ ],
4405
+ translate: [
4406
+ 'translate-x',
4407
+ 'translate-y',
4408
+ 'translate-none'
4409
+ ],
4410
+ 'translate-none': [
4411
+ 'translate',
4412
+ 'translate-x',
4413
+ 'translate-y',
4414
+ 'translate-z'
4415
+ ],
4416
+ 'scroll-m': [
4417
+ 'scroll-mx',
4418
+ 'scroll-my',
4419
+ 'scroll-ms',
4420
+ 'scroll-me',
4421
+ 'scroll-mt',
4422
+ 'scroll-mr',
4423
+ 'scroll-mb',
4424
+ 'scroll-ml'
4425
+ ],
4426
+ 'scroll-mx': [
4427
+ 'scroll-mr',
4428
+ 'scroll-ml'
4429
+ ],
4430
+ 'scroll-my': [
4431
+ 'scroll-mt',
4432
+ 'scroll-mb'
4433
+ ],
4434
+ 'scroll-p': [
4435
+ 'scroll-px',
4436
+ 'scroll-py',
4437
+ 'scroll-ps',
4438
+ 'scroll-pe',
4439
+ 'scroll-pt',
4440
+ 'scroll-pr',
4441
+ 'scroll-pb',
4442
+ 'scroll-pl'
4443
+ ],
4444
+ 'scroll-px': [
4445
+ 'scroll-pr',
4446
+ 'scroll-pl'
4447
+ ],
4448
+ 'scroll-py': [
4449
+ 'scroll-pt',
4450
+ 'scroll-pb'
4451
+ ],
4452
+ touch: [
4453
+ 'touch-x',
4454
+ 'touch-y',
4455
+ 'touch-pz'
4456
+ ],
4457
+ 'touch-x': [
4458
+ 'touch'
4459
+ ],
4460
+ 'touch-y': [
4461
+ 'touch'
4462
+ ],
4463
+ 'touch-pz': [
4464
+ 'touch'
4465
+ ]
4466
+ },
4467
+ conflictingClassGroupModifiers: {
4468
+ 'font-size': [
4469
+ 'leading'
4470
+ ]
4471
+ },
4472
+ orderSensitiveModifiers: [
4473
+ '*',
4474
+ '**',
4475
+ 'after',
4476
+ 'backdrop',
4477
+ 'before',
4478
+ 'details-content',
4479
+ 'file',
4480
+ 'first-letter',
4481
+ 'first-line',
4482
+ 'marker',
4483
+ 'placeholder',
4484
+ 'selection'
4485
+ ]
4486
+ };
4487
+ };
4488
+ const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig);
4489
+
4490
+ export { twMerge as t };
4491
+ //# sourceMappingURL=bundle-mjs-tFg__FnT.mjs.map