convex-cms 0.0.2 → 0.0.3

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