@yahoo/uds 3.133.0-beta.2 → 3.133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1107) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +12 -22
  2. package/dist/_virtual/_rolldown/runtime.js +6 -11
  3. package/dist/automated-config/dist/generated/autoVariants.cjs +1 -3
  4. package/dist/automated-config/dist/generated/autoVariants.js +1 -2
  5. package/dist/automated-config/dist/generated/generatedConfigs.cjs +1 -3
  6. package/dist/automated-config/dist/generated/generatedConfigs.js +1 -2
  7. package/dist/automated-config/dist/generated/universalTokensConfigAuto.cjs +1 -3
  8. package/dist/automated-config/dist/generated/universalTokensConfigAuto.js +1 -2
  9. package/dist/automated-config/dist/mapTextVariantFixtureToValue.cjs +3 -5
  10. package/dist/automated-config/dist/mapTextVariantFixtureToValue.js +1 -3
  11. package/dist/automated-config/dist/properties.cjs +7 -10
  12. package/dist/automated-config/dist/properties.d.cts +1 -1
  13. package/dist/automated-config/dist/properties.d.ts +1 -1
  14. package/dist/automated-config/dist/properties.js +2 -5
  15. package/dist/automated-config/dist/utils/assertUnreachable.cjs +1 -3
  16. package/dist/automated-config/dist/utils/assertUnreachable.js +1 -2
  17. package/dist/automated-config/dist/utils/buildConfigSchema.cjs +4 -6
  18. package/dist/automated-config/dist/utils/buildConfigSchema.d.cts +1 -1
  19. package/dist/automated-config/dist/utils/buildConfigSchema.d.ts +1 -1
  20. package/dist/automated-config/dist/utils/buildConfigSchema.js +1 -3
  21. package/dist/automated-config/dist/utils/cartesianProduct.cjs +1 -3
  22. package/dist/automated-config/dist/utils/cartesianProduct.js +1 -2
  23. package/dist/automated-config/dist/utils/coalesceConfigVariant.cjs +3 -5
  24. package/dist/automated-config/dist/utils/coalesceConfigVariant.js +1 -3
  25. package/dist/automated-config/dist/utils/defaults.cjs +1 -3
  26. package/dist/automated-config/dist/utils/defaults.js +1 -2
  27. package/dist/automated-config/dist/utils/generateDefaultClassName.cjs +1 -3
  28. package/dist/automated-config/dist/utils/generateDefaultClassName.js +1 -2
  29. package/dist/automated-config/dist/utils/generateKeyFromFlatConfigPath.cjs +1 -3
  30. package/dist/automated-config/dist/utils/generateKeyFromFlatConfigPath.js +1 -2
  31. package/dist/automated-config/dist/utils/generateSchemaKey.cjs +1 -3
  32. package/dist/automated-config/dist/utils/generateSchemaKey.js +1 -2
  33. package/dist/automated-config/dist/utils/getConfigComponentVariant.cjs +2 -4
  34. package/dist/automated-config/dist/utils/getConfigComponentVariant.js +1 -3
  35. package/dist/automated-config/dist/utils/getConfigVariantComponentStatesMatrix.cjs +5 -7
  36. package/dist/automated-config/dist/utils/getConfigVariantComponentStatesMatrix.js +1 -3
  37. package/dist/automated-config/dist/utils/getConfigVariantProperties.cjs +3 -5
  38. package/dist/automated-config/dist/utils/getConfigVariantProperties.js +1 -3
  39. package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.cjs +3 -5
  40. package/dist/automated-config/dist/utils/getConfigVariantPseudoStates.js +1 -3
  41. package/dist/automated-config/dist/utils/getConfigVariants.cjs +4 -6
  42. package/dist/automated-config/dist/utils/getConfigVariants.js +1 -3
  43. package/dist/automated-config/dist/utils/index.cjs +17 -19
  44. package/dist/automated-config/dist/utils/index.js +11 -13
  45. package/dist/automated-config/dist/utils/mapColorFixtureToValue.cjs +4 -6
  46. package/dist/automated-config/dist/utils/mapColorFixtureToValue.js +3 -5
  47. package/dist/automated-config/dist/utils/mapValues.cjs +1 -3
  48. package/dist/automated-config/dist/utils/mapValues.js +1 -2
  49. package/dist/automated-config/dist/utils/subcomponents.cjs +1 -3
  50. package/dist/automated-config/dist/utils/subcomponents.js +1 -2
  51. package/dist/automated-config/dist/utils/variantConfigGuards.cjs +1 -3
  52. package/dist/automated-config/dist/utils/variantConfigGuards.js +1 -2
  53. package/dist/cli/commands/sync.cjs +16 -18
  54. package/dist/cli/commands/sync.js +1 -3
  55. package/dist/cli/commands/utils/sortKeys.cjs +2 -4
  56. package/dist/cli/commands/utils/sortKeys.js +1 -2
  57. package/dist/cli/commands/version.cjs +5 -7
  58. package/dist/cli/commands/version.js +1 -3
  59. package/dist/cli/dist/cli.cjs +8 -10
  60. package/dist/cli/dist/cli.js +1 -3
  61. package/dist/cli/dist/commands/codemod/codemod.cjs +6 -8
  62. package/dist/cli/dist/commands/codemod/codemod.js +1 -3
  63. package/dist/cli/dist/commands/editor-rules.cjs +6 -8
  64. package/dist/cli/dist/commands/editor-rules.js +1 -3
  65. package/dist/cli/dist/lib/args.cjs +1 -3
  66. package/dist/cli/dist/lib/args.js +1 -2
  67. package/dist/cli/dist/lib/box.cjs +3 -5
  68. package/dist/cli/dist/lib/box.js +1 -3
  69. package/dist/cli/dist/lib/colors.cjs +1 -3
  70. package/dist/cli/dist/lib/colors.js +1 -2
  71. package/dist/cli/dist/lib/print.cjs +1 -3
  72. package/dist/cli/dist/lib/print.js +1 -2
  73. package/dist/cli/dist/utils/analytics.cjs +2 -4
  74. package/dist/cli/dist/utils/analytics.js +1 -3
  75. package/dist/cli/dist/utils/getCommandHelp.cjs +3 -5
  76. package/dist/cli/dist/utils/getCommandHelp.js +1 -3
  77. package/dist/cli/dist/utils/getDirChoices.cjs +3 -5
  78. package/dist/cli/dist/utils/getDirChoices.js +1 -3
  79. package/dist/cli/dist/utils/rules/config.cjs +2 -4
  80. package/dist/cli/dist/utils/rules/config.js +1 -3
  81. package/dist/cli/runner.cjs +13 -15
  82. package/dist/cli/runner.js +1 -3
  83. package/dist/components/Banner/Banner.cjs +9 -11
  84. package/dist/components/Banner/Banner.d.cts +3 -4
  85. package/dist/components/Banner/Banner.d.ts +3 -4
  86. package/dist/components/Banner/Banner.js +3 -5
  87. package/dist/components/Banner/BannerContent.cjs +4 -6
  88. package/dist/components/Banner/BannerContent.d.cts +2 -2
  89. package/dist/components/Banner/BannerContent.d.ts +2 -2
  90. package/dist/components/Banner/BannerContent.js +1 -3
  91. package/dist/components/Banner/BannerDescription.cjs +5 -7
  92. package/dist/components/Banner/BannerDescription.d.cts +2 -2
  93. package/dist/components/Banner/BannerDescription.d.ts +2 -2
  94. package/dist/components/Banner/BannerDescription.js +1 -3
  95. package/dist/components/Banner/BannerTitle.cjs +5 -7
  96. package/dist/components/Banner/BannerTitle.d.cts +2 -2
  97. package/dist/components/Banner/BannerTitle.d.ts +2 -2
  98. package/dist/components/Banner/BannerTitle.js +1 -3
  99. package/dist/components/Banner/index.cjs +6 -7
  100. package/dist/components/Banner/index.js +1 -2
  101. package/dist/components/Banner/utils.cjs +3 -5
  102. package/dist/components/Banner/utils.d.cts +1 -1
  103. package/dist/components/Banner/utils.d.ts +1 -1
  104. package/dist/components/Banner/utils.js +1 -3
  105. package/dist/components/Box.cjs +5 -7
  106. package/dist/components/Box.d.cts +3 -4
  107. package/dist/components/Box.d.ts +3 -4
  108. package/dist/components/Box.js +1 -3
  109. package/dist/components/Divider/Divider.cjs +4 -6
  110. package/dist/components/Divider/Divider.d.cts +2 -2
  111. package/dist/components/Divider/Divider.d.ts +2 -2
  112. package/dist/components/Divider/Divider.js +1 -3
  113. package/dist/components/Divider/DividerCore.cjs +8 -10
  114. package/dist/components/Divider/DividerCore.d.cts +4 -5
  115. package/dist/components/Divider/DividerCore.d.ts +4 -5
  116. package/dist/components/Divider/DividerCore.js +2 -4
  117. package/dist/components/Divider/DividerInternal.cjs +5 -7
  118. package/dist/components/Divider/DividerInternal.d.cts +3 -4
  119. package/dist/components/Divider/DividerInternal.d.ts +3 -4
  120. package/dist/components/Divider/DividerInternal.js +1 -3
  121. package/dist/components/Divider/index.cjs +3 -4
  122. package/dist/components/Divider/index.js +1 -2
  123. package/dist/components/FormLabel.cjs +5 -7
  124. package/dist/components/FormLabel.d.cts +3 -4
  125. package/dist/components/FormLabel.d.ts +3 -4
  126. package/dist/components/FormLabel.js +1 -3
  127. package/dist/components/HStack.cjs +5 -7
  128. package/dist/components/HStack.d.cts +3 -4
  129. package/dist/components/HStack.d.ts +3 -4
  130. package/dist/components/HStack.js +1 -3
  131. package/dist/components/Icon.cjs +11 -22
  132. package/dist/components/Icon.d.cts +3 -3
  133. package/dist/components/Icon.d.ts +3 -3
  134. package/dist/components/Icon.js +8 -19
  135. package/dist/components/IconSlot.cjs +11 -32
  136. package/dist/components/IconSlot.d.cts +2 -4
  137. package/dist/components/IconSlot.d.ts +2 -4
  138. package/dist/components/IconSlot.js +7 -29
  139. package/dist/components/Image.cjs +4 -6
  140. package/dist/components/Image.d.cts +3 -4
  141. package/dist/components/Image.d.ts +3 -4
  142. package/dist/components/Image.js +1 -3
  143. package/dist/components/Link.cjs +5 -7
  144. package/dist/components/Link.d.cts +3 -4
  145. package/dist/components/Link.d.ts +3 -4
  146. package/dist/components/Link.js +1 -3
  147. package/dist/components/Scrim.cjs +5 -7
  148. package/dist/components/Scrim.d.cts +2 -2
  149. package/dist/components/Scrim.d.ts +2 -2
  150. package/dist/components/Scrim.js +1 -3
  151. package/dist/components/SvgFloatingOverlay.cjs +5 -7
  152. package/dist/components/SvgFloatingOverlay.d.cts +2 -2
  153. package/dist/components/SvgFloatingOverlay.d.ts +2 -2
  154. package/dist/components/SvgFloatingOverlay.js +1 -3
  155. package/dist/components/Text.cjs +5 -7
  156. package/dist/components/Text.d.cts +3 -4
  157. package/dist/components/Text.d.ts +3 -4
  158. package/dist/components/Text.js +1 -3
  159. package/dist/components/VStack.cjs +5 -7
  160. package/dist/components/VStack.d.cts +3 -4
  161. package/dist/components/VStack.d.ts +3 -4
  162. package/dist/components/VStack.js +1 -3
  163. package/dist/components/client/AnimateHeightChange.cjs +4 -6
  164. package/dist/components/client/AnimateHeightChange.d.cts +2 -2
  165. package/dist/components/client/AnimateHeightChange.d.ts +2 -2
  166. package/dist/components/client/AnimateHeightChange.js +1 -3
  167. package/dist/components/{Avatar → client/Avatar}/Avatar.cjs +8 -25
  168. package/dist/components/{Avatar → client/Avatar}/Avatar.d.cts +5 -5
  169. package/dist/components/{Avatar → client/Avatar}/Avatar.d.ts +6 -5
  170. package/dist/components/{Avatar → client/Avatar}/Avatar.js +6 -23
  171. package/dist/components/{Avatar → client/Avatar}/AvatarIcon.cjs +14 -15
  172. package/dist/components/{Avatar → client/Avatar}/AvatarIcon.d.cts +5 -7
  173. package/dist/components/{Avatar → client/Avatar}/AvatarIcon.d.ts +6 -7
  174. package/dist/components/{Avatar → client/Avatar}/AvatarIcon.js +10 -11
  175. package/dist/components/client/Avatar/AvatarImage.cjs +61 -42
  176. package/dist/components/client/Avatar/AvatarImage.d.cts +17 -4
  177. package/dist/components/client/Avatar/AvatarImage.d.ts +17 -4
  178. package/dist/components/client/Avatar/AvatarImage.js +58 -39
  179. package/dist/components/{Avatar → client/Avatar}/AvatarText.cjs +13 -15
  180. package/dist/components/{Avatar → client/Avatar}/AvatarText.d.cts +5 -7
  181. package/dist/components/{Avatar → client/Avatar}/AvatarText.d.ts +6 -7
  182. package/dist/components/{Avatar → client/Avatar}/AvatarText.js +8 -10
  183. package/dist/components/client/Avatar/index.cjs +9 -4
  184. package/dist/components/client/Avatar/index.d.cts +5 -3
  185. package/dist/components/client/Avatar/index.d.ts +5 -3
  186. package/dist/components/client/Avatar/index.js +4 -2
  187. package/dist/components/{Avatar → client/Avatar}/utils.cjs +7 -8
  188. package/dist/components/{Avatar → client/Avatar}/utils.d.cts +3 -4
  189. package/dist/components/{Avatar → client/Avatar}/utils.d.ts +4 -4
  190. package/dist/components/{Avatar → client/Avatar}/utils.js +4 -5
  191. package/dist/components/client/Badge.cjs +6 -8
  192. package/dist/components/client/Badge.d.cts +1 -2
  193. package/dist/components/client/Badge.d.ts +1 -2
  194. package/dist/components/client/Badge.js +2 -4
  195. package/dist/components/client/BottomSheet/BottomSheet.cjs +15 -17
  196. package/dist/components/client/BottomSheet/BottomSheet.d.cts +3 -3
  197. package/dist/components/client/BottomSheet/BottomSheet.d.ts +3 -3
  198. package/dist/components/client/BottomSheet/BottomSheet.js +1 -3
  199. package/dist/components/client/BottomSheet/BottomSheetContent.cjs +7 -9
  200. package/dist/components/client/BottomSheet/BottomSheetContent.d.cts +3 -3
  201. package/dist/components/client/BottomSheet/BottomSheetContent.d.ts +3 -3
  202. package/dist/components/client/BottomSheet/BottomSheetContent.js +1 -3
  203. package/dist/components/client/BottomSheet/BottomSheetDismiss.cjs +3 -5
  204. package/dist/components/client/BottomSheet/BottomSheetDismiss.d.cts +2 -2
  205. package/dist/components/client/BottomSheet/BottomSheetDismiss.d.ts +2 -2
  206. package/dist/components/client/BottomSheet/BottomSheetDismiss.js +1 -3
  207. package/dist/components/client/BottomSheet/BottomSheetHandle.cjs +5 -7
  208. package/dist/components/client/BottomSheet/BottomSheetHandle.d.cts +3 -3
  209. package/dist/components/client/BottomSheet/BottomSheetHandle.d.ts +3 -3
  210. package/dist/components/client/BottomSheet/BottomSheetHandle.js +1 -3
  211. package/dist/components/client/BottomSheet/BottomSheetHeader.cjs +6 -8
  212. package/dist/components/client/BottomSheet/BottomSheetHeader.d.cts +3 -3
  213. package/dist/components/client/BottomSheet/BottomSheetHeader.d.ts +3 -3
  214. package/dist/components/client/BottomSheet/BottomSheetHeader.js +2 -4
  215. package/dist/components/client/BottomSheet/BottomSheetInternalContext.cjs +3 -5
  216. package/dist/components/client/BottomSheet/BottomSheetInternalContext.d.cts +2 -2
  217. package/dist/components/client/BottomSheet/BottomSheetInternalContext.d.ts +2 -2
  218. package/dist/components/client/BottomSheet/BottomSheetInternalContext.js +1 -3
  219. package/dist/components/client/BottomSheet/BottomSheetProvider.cjs +5 -7
  220. package/dist/components/client/BottomSheet/BottomSheetProvider.d.cts +2 -2
  221. package/dist/components/client/BottomSheet/BottomSheetProvider.d.ts +2 -2
  222. package/dist/components/client/BottomSheet/BottomSheetProvider.js +1 -3
  223. package/dist/components/client/BottomSheet/BottomSheetTrigger.cjs +3 -5
  224. package/dist/components/client/BottomSheet/BottomSheetTrigger.d.cts +2 -2
  225. package/dist/components/client/BottomSheet/BottomSheetTrigger.d.ts +2 -2
  226. package/dist/components/client/BottomSheet/BottomSheetTrigger.js +1 -3
  227. package/dist/components/client/BottomSheet/UDSBottomSheetConfigProvider.cjs +3 -5
  228. package/dist/components/client/BottomSheet/UDSBottomSheetConfigProvider.d.cts +2 -2
  229. package/dist/components/client/BottomSheet/UDSBottomSheetConfigProvider.d.ts +2 -2
  230. package/dist/components/client/BottomSheet/UDSBottomSheetConfigProvider.js +1 -3
  231. package/dist/components/client/BottomSheet/index.cjs +10 -11
  232. package/dist/components/client/BottomSheet/index.js +1 -2
  233. package/dist/components/client/BottomSheet/useBottomSheetDrag.cjs +5 -7
  234. package/dist/components/client/BottomSheet/useBottomSheetDrag.js +1 -3
  235. package/dist/components/client/BottomSheet/useBottomSheetSnapModel.cjs +5 -7
  236. package/dist/components/client/BottomSheet/useBottomSheetSnapModel.d.cts +1 -2
  237. package/dist/components/client/BottomSheet/useBottomSheetSnapModel.d.ts +1 -2
  238. package/dist/components/client/BottomSheet/useBottomSheetSnapModel.js +1 -3
  239. package/dist/components/client/BottomSheet/useBottomSheetStore.cjs +4 -6
  240. package/dist/components/client/BottomSheet/useBottomSheetStore.d.cts +2 -2
  241. package/dist/components/client/BottomSheet/useBottomSheetStore.d.ts +2 -2
  242. package/dist/components/client/BottomSheet/useBottomSheetStore.js +1 -3
  243. package/dist/components/client/BottomSheet/useBottomSheetStoreInternal.cjs +3 -5
  244. package/dist/components/client/BottomSheet/useBottomSheetStoreInternal.d.cts +2 -2
  245. package/dist/components/client/BottomSheet/useBottomSheetStoreInternal.d.ts +2 -2
  246. package/dist/components/client/BottomSheet/useBottomSheetStoreInternal.js +1 -3
  247. package/dist/components/client/BottomSheet/useExpansionMargins.cjs +3 -5
  248. package/dist/components/client/BottomSheet/useExpansionMargins.js +1 -3
  249. package/dist/components/client/BottomSheet/useViewportHeight.cjs +4 -6
  250. package/dist/components/client/BottomSheet/useViewportHeight.js +1 -3
  251. package/dist/components/client/BottomSheet/useVirtualKeyboard.cjs +4 -6
  252. package/dist/components/client/BottomSheet/useVirtualKeyboard.js +1 -3
  253. package/dist/components/client/BottomSheet/utils.cjs +4 -6
  254. package/dist/components/client/BottomSheet/utils.d.cts +1 -1
  255. package/dist/components/client/BottomSheet/utils.d.ts +1 -1
  256. package/dist/components/client/BottomSheet/utils.js +1 -3
  257. package/dist/components/client/Button.cjs +15 -17
  258. package/dist/components/client/Button.d.cts +1 -2
  259. package/dist/components/client/Button.d.ts +1 -2
  260. package/dist/components/client/Button.js +6 -8
  261. package/dist/components/client/Checkbox.cjs +9 -11
  262. package/dist/components/client/Checkbox.d.cts +1 -2
  263. package/dist/components/client/Checkbox.d.ts +1 -2
  264. package/dist/components/client/Checkbox.js +3 -5
  265. package/dist/components/client/Chip/Chip.cjs +7 -9
  266. package/dist/components/client/Chip/Chip.d.cts +0 -1
  267. package/dist/components/client/Chip/Chip.d.ts +0 -1
  268. package/dist/components/client/Chip/Chip.js +2 -4
  269. package/dist/components/client/Chip/ChipBase.cjs +7 -9
  270. package/dist/components/client/Chip/ChipBase.d.cts +1 -2
  271. package/dist/components/client/Chip/ChipBase.d.ts +1 -2
  272. package/dist/components/client/Chip/ChipBase.js +2 -4
  273. package/dist/components/client/Chip/ChipButton.cjs +6 -8
  274. package/dist/components/client/Chip/ChipButton.d.cts +1 -2
  275. package/dist/components/client/Chip/ChipButton.d.ts +1 -2
  276. package/dist/components/client/Chip/ChipButton.js +2 -4
  277. package/dist/components/client/Chip/ChipDismissible.cjs +9 -11
  278. package/dist/components/client/Chip/ChipDismissible.d.cts +1 -2
  279. package/dist/components/client/Chip/ChipDismissible.d.ts +1 -2
  280. package/dist/components/client/Chip/ChipDismissible.js +3 -5
  281. package/dist/components/client/Chip/ChipLink.cjs +6 -8
  282. package/dist/components/client/Chip/ChipLink.d.cts +1 -2
  283. package/dist/components/client/Chip/ChipLink.d.ts +1 -2
  284. package/dist/components/client/Chip/ChipLink.js +2 -4
  285. package/dist/components/client/Chip/ChipToggle.cjs +7 -10
  286. package/dist/components/client/Chip/ChipToggle.d.cts +1 -2
  287. package/dist/components/client/Chip/ChipToggle.d.ts +1 -2
  288. package/dist/components/client/Chip/ChipToggle.js +3 -6
  289. package/dist/components/client/Chip/index.cjs +7 -8
  290. package/dist/components/client/Chip/index.js +1 -2
  291. package/dist/components/client/IconButton.cjs +14 -21
  292. package/dist/components/client/IconButton.d.cts +2 -3
  293. package/dist/components/client/IconButton.d.ts +2 -3
  294. package/dist/components/client/IconButton.js +6 -13
  295. package/dist/components/client/Input/Input.cjs +18 -16
  296. package/dist/components/client/Input/Input.d.cts +3 -4
  297. package/dist/components/client/Input/Input.d.ts +3 -4
  298. package/dist/components/client/Input/Input.js +11 -9
  299. package/dist/components/client/Input/InputHelpText.cjs +6 -8
  300. package/dist/components/client/Input/InputHelpText.d.cts +2 -2
  301. package/dist/components/client/Input/InputHelpText.d.ts +2 -2
  302. package/dist/components/client/Input/InputHelpText.js +1 -3
  303. package/dist/components/client/Input/InputHelpTextInternal.cjs +6 -8
  304. package/dist/components/client/Input/InputHelpTextInternal.d.cts +3 -4
  305. package/dist/components/client/Input/InputHelpTextInternal.d.ts +3 -4
  306. package/dist/components/client/Input/InputHelpTextInternal.js +1 -3
  307. package/dist/components/client/Input/index.cjs +4 -5
  308. package/dist/components/client/Input/index.js +1 -2
  309. package/dist/components/client/Menu/Menu.Content.cjs +5 -7
  310. package/dist/components/client/Menu/Menu.Content.d.cts +3 -4
  311. package/dist/components/client/Menu/Menu.Content.d.ts +3 -4
  312. package/dist/components/client/Menu/Menu.Content.js +1 -3
  313. package/dist/components/client/Menu/Menu.Divider.cjs +5 -7
  314. package/dist/components/client/Menu/Menu.Divider.d.cts +2 -2
  315. package/dist/components/client/Menu/Menu.Divider.d.ts +2 -2
  316. package/dist/components/client/Menu/Menu.Divider.js +1 -3
  317. package/dist/components/client/Menu/Menu.Item.cjs +5 -7
  318. package/dist/components/client/Menu/Menu.Item.d.cts +3 -4
  319. package/dist/components/client/Menu/Menu.Item.d.ts +3 -4
  320. package/dist/components/client/Menu/Menu.Item.js +1 -3
  321. package/dist/components/client/Menu/Menu.ItemBase.cjs +7 -9
  322. package/dist/components/client/Menu/Menu.ItemBase.d.cts +3 -4
  323. package/dist/components/client/Menu/Menu.ItemBase.d.ts +3 -4
  324. package/dist/components/client/Menu/Menu.ItemBase.js +2 -4
  325. package/dist/components/client/Menu/Menu.ItemCheckbox.cjs +6 -8
  326. package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +3 -4
  327. package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +3 -4
  328. package/dist/components/client/Menu/Menu.ItemCheckbox.js +2 -4
  329. package/dist/components/client/Menu/Menu.Provider.cjs +6 -8
  330. package/dist/components/client/Menu/Menu.Provider.d.cts +2 -2
  331. package/dist/components/client/Menu/Menu.Provider.d.ts +2 -2
  332. package/dist/components/client/Menu/Menu.Provider.js +1 -3
  333. package/dist/components/client/Menu/Menu.Trigger.cjs +5 -7
  334. package/dist/components/client/Menu/Menu.Trigger.d.cts +2 -2
  335. package/dist/components/client/Menu/Menu.Trigger.d.ts +2 -2
  336. package/dist/components/client/Menu/Menu.Trigger.js +1 -3
  337. package/dist/components/client/Menu/Menu.cjs +8 -9
  338. package/dist/components/client/Menu/Menu.index.cjs +29 -31
  339. package/dist/components/client/Menu/Menu.index.js +1 -3
  340. package/dist/components/client/Menu/Menu.js +1 -2
  341. package/dist/components/client/Menu/index.cjs +8 -9
  342. package/dist/components/client/Menu/index.d.cts +0 -1
  343. package/dist/components/client/Menu/index.d.ts +0 -1
  344. package/dist/components/client/Menu/index.js +1 -2
  345. package/dist/components/client/Menu/utils/transformAriakitPlacement.cjs +2 -4
  346. package/dist/components/client/Menu/utils/transformAriakitPlacement.js +1 -2
  347. package/dist/components/client/Popover/Popover.cjs +5 -7
  348. package/dist/components/client/Popover/Popover.d.cts +3 -3
  349. package/dist/components/client/Popover/Popover.d.ts +3 -3
  350. package/dist/components/client/Popover/Popover.js +1 -3
  351. package/dist/components/client/Popover/PopoverContent.cjs +15 -17
  352. package/dist/components/client/Popover/PopoverContent.d.cts +3 -4
  353. package/dist/components/client/Popover/PopoverContent.d.ts +3 -4
  354. package/dist/components/client/Popover/PopoverContent.js +4 -6
  355. package/dist/components/client/Popover/PopoverContext.cjs +4 -7
  356. package/dist/components/client/Popover/PopoverContext.d.cts +2 -2
  357. package/dist/components/client/Popover/PopoverContext.d.ts +2 -2
  358. package/dist/components/client/Popover/PopoverContext.js +1 -3
  359. package/dist/components/client/Popover/PopoverTrigger.cjs +4 -6
  360. package/dist/components/client/Popover/PopoverTrigger.d.cts +3 -3
  361. package/dist/components/client/Popover/PopoverTrigger.d.ts +3 -3
  362. package/dist/components/client/Popover/PopoverTrigger.js +1 -3
  363. package/dist/components/client/Popover/UDSPopoverConfigProvider.cjs +3 -5
  364. package/dist/components/client/Popover/UDSPopoverConfigProvider.d.cts +4 -4
  365. package/dist/components/client/Popover/UDSPopoverConfigProvider.d.ts +4 -4
  366. package/dist/components/client/Popover/UDSPopoverConfigProvider.js +1 -3
  367. package/dist/components/client/Popover/index.cjs +6 -7
  368. package/dist/components/client/Popover/index.d.cts +1 -1
  369. package/dist/components/client/Popover/index.d.ts +1 -1
  370. package/dist/components/client/Popover/index.js +1 -2
  371. package/dist/components/client/Pressable.cjs +5 -7
  372. package/dist/components/client/Pressable.d.cts +3 -4
  373. package/dist/components/client/Pressable.d.ts +3 -4
  374. package/dist/components/client/Pressable.js +1 -3
  375. package/dist/components/client/Radio/Radio.cjs +8 -10
  376. package/dist/components/client/Radio/Radio.d.cts +1 -2
  377. package/dist/components/client/Radio/Radio.d.ts +1 -2
  378. package/dist/components/client/Radio/Radio.js +2 -4
  379. package/dist/components/client/Radio/RadioGroupProvider.cjs +6 -8
  380. package/dist/components/client/Radio/RadioGroupProvider.d.cts +1 -2
  381. package/dist/components/client/Radio/RadioGroupProvider.d.ts +1 -2
  382. package/dist/components/client/Radio/RadioGroupProvider.js +2 -4
  383. package/dist/components/client/Radio/RadioGroupStore.cjs +3 -5
  384. package/dist/components/client/Radio/RadioGroupStore.d.cts +2 -2
  385. package/dist/components/client/Radio/RadioGroupStore.d.ts +2 -2
  386. package/dist/components/client/Radio/RadioGroupStore.js +1 -3
  387. package/dist/components/client/Radio/index.cjs +4 -5
  388. package/dist/components/client/Radio/index.js +1 -2
  389. package/dist/components/client/Radio/useRadioGroup.cjs +4 -6
  390. package/dist/components/client/Radio/useRadioGroup.js +1 -3
  391. package/dist/components/client/SpringMotionConfig.cjs +6 -8
  392. package/dist/components/client/SpringMotionConfig.d.cts +1 -2
  393. package/dist/components/client/SpringMotionConfig.d.ts +1 -2
  394. package/dist/components/client/SpringMotionConfig.js +1 -3
  395. package/dist/components/client/Switch.cjs +8 -10
  396. package/dist/components/client/Switch.d.cts +1 -2
  397. package/dist/components/client/Switch.d.ts +1 -2
  398. package/dist/components/client/Switch.js +3 -5
  399. package/dist/components/client/Tabs/Tab.cjs +7 -9
  400. package/dist/components/client/Tabs/Tab.d.cts +3 -3
  401. package/dist/components/client/Tabs/Tab.d.ts +3 -3
  402. package/dist/components/client/Tabs/Tab.js +1 -3
  403. package/dist/components/client/Tabs/TabList.cjs +5 -7
  404. package/dist/components/client/Tabs/TabList.d.cts +3 -3
  405. package/dist/components/client/Tabs/TabList.d.ts +3 -3
  406. package/dist/components/client/Tabs/TabList.js +1 -3
  407. package/dist/components/client/Tabs/TabPanel.cjs +3 -5
  408. package/dist/components/client/Tabs/TabPanel.d.cts +3 -3
  409. package/dist/components/client/Tabs/TabPanel.d.ts +3 -3
  410. package/dist/components/client/Tabs/TabPanel.js +1 -3
  411. package/dist/components/client/Tabs/Tabs.cjs +4 -6
  412. package/dist/components/client/Tabs/Tabs.d.cts +3 -3
  413. package/dist/components/client/Tabs/Tabs.d.ts +3 -3
  414. package/dist/components/client/Tabs/Tabs.js +1 -3
  415. package/dist/components/client/Tabs/index.cjs +6 -7
  416. package/dist/components/client/Tabs/index.js +1 -2
  417. package/dist/components/client/Tabs/tabsContext.cjs +3 -5
  418. package/dist/components/client/Tabs/tabsContext.d.cts +3 -3
  419. package/dist/components/client/Tabs/tabsContext.d.ts +3 -3
  420. package/dist/components/client/Tabs/tabsContext.js +1 -3
  421. package/dist/components/client/Toast/Toast.cjs +10 -12
  422. package/dist/components/client/Toast/Toast.d.cts +3 -4
  423. package/dist/components/client/Toast/Toast.d.ts +3 -4
  424. package/dist/components/client/Toast/Toast.js +2 -4
  425. package/dist/components/client/Toast/ToastContainer.cjs +7 -9
  426. package/dist/components/client/Toast/ToastContainer.d.cts +3 -4
  427. package/dist/components/client/Toast/ToastContainer.d.ts +3 -4
  428. package/dist/components/client/Toast/ToastContainer.js +1 -3
  429. package/dist/components/client/Toast/ToastPortal.cjs +6 -8
  430. package/dist/components/client/Toast/ToastPortal.d.cts +2 -2
  431. package/dist/components/client/Toast/ToastPortal.d.ts +2 -2
  432. package/dist/components/client/Toast/ToastPortal.js +1 -3
  433. package/dist/components/client/Toast/UDSToastConfigProvider.cjs +3 -5
  434. package/dist/components/client/Toast/UDSToastConfigProvider.d.cts +3 -4
  435. package/dist/components/client/Toast/UDSToastConfigProvider.d.ts +3 -4
  436. package/dist/components/client/Toast/UDSToastConfigProvider.js +1 -3
  437. package/dist/components/client/Toast/createToast.cjs +7 -9
  438. package/dist/components/client/Toast/createToast.d.cts +1 -2
  439. package/dist/components/client/Toast/createToast.d.ts +1 -2
  440. package/dist/components/client/Toast/createToast.js +1 -3
  441. package/dist/components/client/Toast/index.cjs +7 -8
  442. package/dist/components/client/Toast/index.js +1 -2
  443. package/dist/components/client/Tooltip/Tooltip.cjs +5 -7
  444. package/dist/components/client/Tooltip/Tooltip.d.cts +3 -3
  445. package/dist/components/client/Tooltip/Tooltip.d.ts +3 -3
  446. package/dist/components/client/Tooltip/Tooltip.js +1 -3
  447. package/dist/components/client/Tooltip/TooltipContent.cjs +14 -16
  448. package/dist/components/client/Tooltip/TooltipContent.d.cts +4 -4
  449. package/dist/components/client/Tooltip/TooltipContent.d.ts +4 -4
  450. package/dist/components/client/Tooltip/TooltipContent.js +2 -4
  451. package/dist/components/client/Tooltip/TooltipTrigger.cjs +3 -5
  452. package/dist/components/client/Tooltip/TooltipTrigger.d.cts +3 -3
  453. package/dist/components/client/Tooltip/TooltipTrigger.d.ts +3 -3
  454. package/dist/components/client/Tooltip/TooltipTrigger.js +1 -3
  455. package/dist/components/client/Tooltip/UDSTooltipConfigProvider.cjs +3 -5
  456. package/dist/components/client/Tooltip/UDSTooltipConfigProvider.d.cts +3 -3
  457. package/dist/components/client/Tooltip/UDSTooltipConfigProvider.d.ts +3 -3
  458. package/dist/components/client/Tooltip/UDSTooltipConfigProvider.js +1 -3
  459. package/dist/components/client/Tooltip/index.cjs +6 -7
  460. package/dist/components/client/Tooltip/index.d.cts +1 -1
  461. package/dist/components/client/Tooltip/index.d.ts +1 -1
  462. package/dist/components/client/Tooltip/index.js +1 -2
  463. package/dist/components/client/Tooltip/tooltipContext.cjs +4 -7
  464. package/dist/components/client/Tooltip/tooltipContext.d.cts +2 -2
  465. package/dist/components/client/Tooltip/tooltipContext.d.ts +2 -2
  466. package/dist/components/client/Tooltip/tooltipContext.js +1 -3
  467. package/dist/components/client/buttonConstants.cjs +2 -4
  468. package/dist/components/client/buttonConstants.d.cts +1 -3
  469. package/dist/components/client/buttonConstants.d.ts +1 -3
  470. package/dist/components/client/buttonConstants.js +1 -2
  471. package/dist/components/client/index.cjs +58 -53
  472. package/dist/components/client/index.d.cts +6 -14
  473. package/dist/components/client/index.d.ts +6 -14
  474. package/dist/components/client/index.js +5 -3
  475. package/dist/components/client/motionFeatures/domAnimation.cjs +8 -9
  476. package/dist/components/client/motionFeatures/domAnimation.js +1 -2
  477. package/dist/components/client/motionFeatures/domMax.cjs +8 -9
  478. package/dist/components/client/motionFeatures/domMax.js +1 -2
  479. package/dist/components/client/providers/UDSBreakpointsConfigProvider.cjs +3 -5
  480. package/dist/components/client/providers/UDSBreakpointsConfigProvider.d.cts +3 -3
  481. package/dist/components/client/providers/UDSBreakpointsConfigProvider.d.ts +3 -3
  482. package/dist/components/client/providers/UDSBreakpointsConfigProvider.js +1 -3
  483. package/dist/components/client/providers/UDSConfigProvider.cjs +8 -10
  484. package/dist/components/client/providers/UDSConfigProvider.d.cts +2 -2
  485. package/dist/components/client/providers/UDSConfigProvider.d.ts +2 -2
  486. package/dist/components/client/providers/UDSConfigProvider.js +1 -3
  487. package/dist/components/experimental/Spinner.cjs +5 -7
  488. package/dist/components/experimental/Spinner.d.cts +2 -2
  489. package/dist/components/experimental/Spinner.d.ts +2 -2
  490. package/dist/components/experimental/Spinner.js +1 -3
  491. package/dist/components/experimental/Table.cjs +6 -8
  492. package/dist/components/experimental/Table.d.cts +4 -6
  493. package/dist/components/experimental/Table.d.ts +4 -6
  494. package/dist/components/experimental/Table.js +3 -5
  495. package/dist/components/experimental/Table.mocks.cjs +3 -5
  496. package/dist/components/experimental/Table.mocks.js +1 -3
  497. package/dist/components/experimental/client/Accordion.cjs +10 -12
  498. package/dist/components/experimental/client/Accordion.d.cts +2 -3
  499. package/dist/components/experimental/client/Accordion.d.ts +2 -3
  500. package/dist/components/experimental/client/Accordion.js +2 -4
  501. package/dist/components/experimental/client/AvoidMotionLibraryProvider.cjs +3 -5
  502. package/dist/components/experimental/client/AvoidMotionLibraryProvider.d.cts +2 -2
  503. package/dist/components/experimental/client/AvoidMotionLibraryProvider.d.ts +2 -2
  504. package/dist/components/experimental/client/AvoidMotionLibraryProvider.js +1 -3
  505. package/dist/components/experimental/client/Modal.cjs +8 -10
  506. package/dist/components/experimental/client/Modal.d.cts +3 -3
  507. package/dist/components/experimental/client/Modal.d.ts +3 -3
  508. package/dist/components/experimental/client/Modal.js +1 -3
  509. package/dist/components/experimental/client/SegmentedControl.cjs +9 -12
  510. package/dist/components/experimental/client/SegmentedControl.d.cts +2 -3
  511. package/dist/components/experimental/client/SegmentedControl.d.ts +2 -3
  512. package/dist/components/experimental/client/SegmentedControl.js +4 -7
  513. package/dist/components/experimental/client/SwitchV2.cjs +9 -11
  514. package/dist/components/experimental/client/SwitchV2.d.cts +1 -2
  515. package/dist/components/experimental/client/SwitchV2.d.ts +1 -2
  516. package/dist/components/experimental/client/SwitchV2.js +3 -5
  517. package/dist/components/experimental/client/index.cjs +7 -8
  518. package/dist/components/experimental/client/index.js +1 -2
  519. package/dist/components/experimental/index.cjs +15 -17
  520. package/dist/components/experimental/index.d.cts +0 -1
  521. package/dist/components/experimental/index.d.ts +0 -1
  522. package/dist/components/experimental/index.js +1 -3
  523. package/dist/components/index.cjs +80 -85
  524. package/dist/components/index.d.cts +7 -13
  525. package/dist/components/index.d.ts +7 -13
  526. package/dist/components/index.js +8 -12
  527. package/dist/config/dist/index.cjs +2 -5
  528. package/dist/config/dist/index.d.cts +1 -1
  529. package/dist/config/dist/index.d.ts +1 -1
  530. package/dist/config/dist/index.js +2 -4
  531. package/dist/css-tokens/dist/index.cjs +37 -39
  532. package/dist/css-tokens/dist/index.d.cts +1 -1
  533. package/dist/css-tokens/dist/index.d.ts +1 -1
  534. package/dist/css-tokens/dist/index.js +35 -37
  535. package/dist/defaultTokensConfig.cjs +4 -6
  536. package/dist/defaultTokensConfig.d.cts +0 -2
  537. package/dist/defaultTokensConfig.d.ts +0 -2
  538. package/dist/defaultTokensConfig.js +1 -3
  539. package/dist/fixtures/dist/index.cjs +1 -3
  540. package/dist/fixtures/dist/index.d.cts +1 -1
  541. package/dist/fixtures/dist/index.d.ts +1 -1
  542. package/dist/fixtures/dist/index.js +1 -2
  543. package/dist/fixtures/index.cjs +4 -6
  544. package/dist/fixtures/index.d.cts +1 -1
  545. package/dist/fixtures/index.d.ts +1 -1
  546. package/dist/fixtures/index.js +1 -3
  547. package/dist/fixtures/src/arbitrary.cjs +7 -10
  548. package/dist/fixtures/src/arbitrary.js +1 -3
  549. package/dist/fixtures/src/util.cjs +2 -4
  550. package/dist/fixtures/src/util.js +1 -3
  551. package/dist/flags.cjs +6 -4
  552. package/dist/flags.js +5 -2
  553. package/dist/fonts/dist/index.cjs +22 -14
  554. package/dist/fonts/dist/index.d.cts +1 -1
  555. package/dist/fonts/dist/index.d.ts +1 -1
  556. package/dist/fonts/dist/index.js +22 -13
  557. package/dist/hooks/useForkRef.cjs +3 -5
  558. package/dist/hooks/useForkRef.js +1 -3
  559. package/dist/hooks/useRtl.cjs +3 -5
  560. package/dist/hooks/useRtl.js +1 -3
  561. package/dist/hooks/useSvgFloatingContent.cjs +6 -8
  562. package/dist/hooks/useSvgFloatingContent.js +1 -3
  563. package/dist/icons/dist/types.d.cts +30 -0
  564. package/dist/icons/dist/types.d.ts +30 -0
  565. package/dist/index.cjs +105 -108
  566. package/dist/index.d.cts +8 -14
  567. package/dist/index.d.ts +8 -14
  568. package/dist/index.js +8 -10
  569. package/dist/modes/dist/index.cjs +1 -3
  570. package/dist/modes/dist/index.d.cts +1 -1
  571. package/dist/modes/dist/index.d.ts +1 -1
  572. package/dist/modes/dist/index.js +1 -2
  573. package/dist/motion-tokens/dist/index.cjs +1 -3
  574. package/dist/motion-tokens/dist/index.d.cts +1 -1
  575. package/dist/motion-tokens/dist/index.d.ts +1 -1
  576. package/dist/motion-tokens/dist/index.js +1 -2
  577. package/dist/palette/dist/index.cjs +13 -3
  578. package/dist/palette/dist/index.js +13 -2
  579. package/dist/providers/ColorModeProvider.cjs +4 -6
  580. package/dist/providers/ColorModeProvider.d.cts +5 -6
  581. package/dist/providers/ColorModeProvider.d.ts +5 -6
  582. package/dist/providers/ColorModeProvider.js +1 -3
  583. package/dist/providers/ScaleModeProvider.cjs +4 -6
  584. package/dist/providers/ScaleModeProvider.d.cts +5 -6
  585. package/dist/providers/ScaleModeProvider.d.ts +5 -6
  586. package/dist/providers/ScaleModeProvider.js +1 -3
  587. package/dist/providers/ThemeProvider.cjs +5 -7
  588. package/dist/providers/ThemeProvider.d.cts +3 -4
  589. package/dist/providers/ThemeProvider.d.ts +3 -4
  590. package/dist/providers/ThemeProvider.js +1 -3
  591. package/dist/runtime/bottomSheetConfig.cjs +2 -4
  592. package/dist/runtime/bottomSheetConfig.d.cts +1 -1
  593. package/dist/runtime/bottomSheetConfig.d.ts +1 -1
  594. package/dist/runtime/bottomSheetConfig.js +1 -2
  595. package/dist/runtime/breakpointsConfig.cjs +4 -6
  596. package/dist/runtime/breakpointsConfig.d.cts +1 -3
  597. package/dist/runtime/breakpointsConfig.d.ts +1 -3
  598. package/dist/runtime/breakpointsConfig.js +1 -3
  599. package/dist/runtime/index.cjs +8 -9
  600. package/dist/runtime/index.js +1 -2
  601. package/dist/runtime/popoverConfig.cjs +3 -5
  602. package/dist/runtime/popoverConfig.d.cts +1 -2
  603. package/dist/runtime/popoverConfig.d.ts +1 -2
  604. package/dist/runtime/popoverConfig.js +1 -3
  605. package/dist/runtime/toastConfig.cjs +2 -4
  606. package/dist/runtime/toastConfig.d.cts +1 -3
  607. package/dist/runtime/toastConfig.d.ts +1 -3
  608. package/dist/runtime/toastConfig.js +1 -2
  609. package/dist/runtime/tooltipConfig.cjs +3 -5
  610. package/dist/runtime/tooltipConfig.d.cts +1 -2
  611. package/dist/runtime/tooltipConfig.d.ts +1 -2
  612. package/dist/runtime/tooltipConfig.js +1 -3
  613. package/dist/runtime/udsConfig.cjs +7 -9
  614. package/dist/runtime/udsConfig.d.cts +0 -1
  615. package/dist/runtime/udsConfig.d.ts +0 -1
  616. package/dist/runtime/udsConfig.js +1 -3
  617. package/dist/styles/styler.cjs +6 -8
  618. package/dist/styles/styler.d.cts +38 -38
  619. package/dist/styles/styler.d.ts +38 -38
  620. package/dist/styles/styler.js +1 -3
  621. package/dist/styles/stylerTypes.d.cts +1 -2
  622. package/dist/styles/stylerTypes.d.ts +1 -2
  623. package/dist/styles/variants.cjs +4 -6
  624. package/dist/styles/variants.js +1 -3
  625. package/dist/tailwind/dist/_virtual/_rolldown/runtime.cjs +7 -13
  626. package/dist/tailwind/dist/_virtual/_rolldown/runtime.js +1 -2
  627. package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.cjs +1 -3
  628. package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.js +1 -1
  629. package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.js.map +1 -1
  630. package/dist/tailwind/dist/automated-config/dist/generated/generatedConfigs.cjs +1 -3
  631. package/dist/tailwind/dist/automated-config/dist/generated/generatedConfigs.js +1 -1
  632. package/dist/tailwind/dist/automated-config/dist/generated/generatedConfigs.js.map +1 -1
  633. package/dist/tailwind/dist/automated-config/dist/mapTextVariantFixtureToValue.cjs +3 -5
  634. package/dist/tailwind/dist/automated-config/dist/mapTextVariantFixtureToValue.js +1 -2
  635. package/dist/tailwind/dist/automated-config/dist/mapTextVariantFixtureToValue.js.map +1 -1
  636. package/dist/tailwind/dist/automated-config/dist/properties.cjs +7 -10
  637. package/dist/tailwind/dist/automated-config/dist/properties.js +2 -4
  638. package/dist/tailwind/dist/automated-config/dist/properties.js.map +1 -1
  639. package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.cjs +1 -3
  640. package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.js +1 -1
  641. package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.js.map +1 -1
  642. package/dist/tailwind/dist/automated-config/dist/utils/generateDefaultClassName.cjs +1 -3
  643. package/dist/tailwind/dist/automated-config/dist/utils/generateDefaultClassName.js +1 -1
  644. package/dist/tailwind/dist/automated-config/dist/utils/generateDefaultClassName.js.map +1 -1
  645. package/dist/tailwind/dist/automated-config/dist/utils/generateSchemaKey.cjs +1 -3
  646. package/dist/tailwind/dist/automated-config/dist/utils/generateSchemaKey.js +1 -1
  647. package/dist/tailwind/dist/automated-config/dist/utils/generateSchemaKey.js.map +1 -1
  648. package/dist/tailwind/dist/automated-config/dist/utils/index.cjs +7 -9
  649. package/dist/tailwind/dist/automated-config/dist/utils/index.js +1 -2
  650. package/dist/tailwind/dist/automated-config/dist/utils/index.js.map +1 -1
  651. package/dist/tailwind/dist/automated-config/dist/utils/mapColorFixtureToValue.cjs +4 -6
  652. package/dist/tailwind/dist/automated-config/dist/utils/mapColorFixtureToValue.js +3 -4
  653. package/dist/tailwind/dist/automated-config/dist/utils/mapColorFixtureToValue.js.map +1 -1
  654. package/dist/tailwind/dist/automated-config/dist/utils/variantConfigGuards.cjs +1 -3
  655. package/dist/tailwind/dist/automated-config/dist/utils/variantConfigGuards.js +1 -1
  656. package/dist/tailwind/dist/automated-config/dist/utils/variantConfigGuards.js.map +1 -1
  657. package/dist/tailwind/dist/cli/dist/lib/colors.cjs +1 -3
  658. package/dist/tailwind/dist/cli/dist/lib/colors.js +1 -1
  659. package/dist/tailwind/dist/cli/dist/lib/colors.js.map +1 -1
  660. package/dist/tailwind/dist/cli/dist/lib/logger.cjs +18 -6
  661. package/dist/tailwind/dist/cli/dist/lib/logger.js +15 -2
  662. package/dist/tailwind/dist/cli/dist/lib/logger.js.map +1 -1
  663. package/dist/tailwind/dist/cli/dist/lib/print.cjs +1 -3
  664. package/dist/tailwind/dist/cli/dist/lib/print.js +1 -1
  665. package/dist/tailwind/dist/cli/dist/lib/print.js.map +1 -1
  666. package/dist/tailwind/dist/cli/dist/lib/spinner.cjs +1 -3
  667. package/dist/tailwind/dist/cli/dist/lib/spinner.js +1 -1
  668. package/dist/tailwind/dist/cli/dist/lib/spinner.js.map +1 -1
  669. package/dist/tailwind/dist/cli.cjs +6 -7
  670. package/dist/tailwind/dist/cli.js +1 -2
  671. package/dist/tailwind/dist/commands/css.cjs +6 -8
  672. package/dist/tailwind/dist/commands/css.helpers.cjs +1 -3
  673. package/dist/tailwind/dist/commands/css.helpers.js +1 -1
  674. package/dist/tailwind/dist/commands/css.helpers.js.map +1 -1
  675. package/dist/tailwind/dist/commands/css.js +1 -2
  676. package/dist/tailwind/dist/commands/css.js.map +1 -1
  677. package/dist/tailwind/dist/commands/generateComponentData.cjs +4 -6
  678. package/dist/tailwind/dist/commands/generateComponentData.js +1 -2
  679. package/dist/tailwind/dist/commands/generateComponentData.js.map +1 -1
  680. package/dist/tailwind/dist/commands/generatePurgeCSSData.cjs +6 -8
  681. package/dist/tailwind/dist/commands/generatePurgeCSSData.js +1 -2
  682. package/dist/tailwind/dist/commands/generatePurgeCSSData.js.map +1 -1
  683. package/dist/tailwind/dist/commands/purge.cjs +5 -7
  684. package/dist/tailwind/dist/commands/purge.js +1 -2
  685. package/dist/tailwind/dist/commands/purge.js.map +1 -1
  686. package/dist/tailwind/dist/config/dist/index.cjs +2 -5
  687. package/dist/tailwind/dist/config/dist/index.d.cts +0 -1
  688. package/dist/tailwind/dist/config/dist/index.d.cts.map +1 -1
  689. package/dist/tailwind/dist/config/dist/index.d.ts +0 -1
  690. package/dist/tailwind/dist/config/dist/index.d.ts.map +1 -1
  691. package/dist/tailwind/dist/config/dist/index.js +2 -3
  692. package/dist/tailwind/dist/config/dist/index.js.map +1 -1
  693. package/dist/tailwind/dist/css/generate.cjs +14 -16
  694. package/dist/tailwind/dist/css/generate.d.ts +0 -1
  695. package/dist/tailwind/dist/css/generate.d.ts.map +1 -1
  696. package/dist/tailwind/dist/css/generate.helpers.cjs +18 -20
  697. package/dist/tailwind/dist/css/generate.helpers.js +1 -2
  698. package/dist/tailwind/dist/css/generate.helpers.js.map +1 -1
  699. package/dist/tailwind/dist/css/generate.js +1 -2
  700. package/dist/tailwind/dist/css/generate.js.map +1 -1
  701. package/dist/tailwind/dist/css/nodeUtils.cjs +9 -11
  702. package/dist/tailwind/dist/css/nodeUtils.js +1 -2
  703. package/dist/tailwind/dist/css/nodeUtils.js.map +1 -1
  704. package/dist/tailwind/dist/css/postcss.cjs +2 -4
  705. package/dist/tailwind/dist/css/postcss.helpers.cjs +1 -3
  706. package/dist/tailwind/dist/css/postcss.helpers.js +1 -1
  707. package/dist/tailwind/dist/css/postcss.helpers.js.map +1 -1
  708. package/dist/tailwind/dist/css/postcss.js +1 -2
  709. package/dist/tailwind/dist/css/postcss.js.map +1 -1
  710. package/dist/tailwind/dist/css/runner.cjs +16 -18
  711. package/dist/tailwind/dist/css/runner.helpers.cjs +3 -5
  712. package/dist/tailwind/dist/css/runner.helpers.js +1 -2
  713. package/dist/tailwind/dist/css/runner.helpers.js.map +1 -1
  714. package/dist/tailwind/dist/css/runner.js +3 -4
  715. package/dist/tailwind/dist/css/runner.js.map +1 -1
  716. package/dist/tailwind/dist/css/theme.cjs +1 -3
  717. package/dist/tailwind/dist/css/theme.js +1 -1
  718. package/dist/tailwind/dist/css/utils.cjs +3 -5
  719. package/dist/tailwind/dist/css/utils.js +1 -2
  720. package/dist/tailwind/dist/css/utils.js.map +1 -1
  721. package/dist/tailwind/dist/css-tokens/dist/index.cjs +37 -41
  722. package/dist/tailwind/dist/css-tokens/dist/index.js +36 -38
  723. package/dist/tailwind/dist/css-tokens/dist/index.js.map +1 -1
  724. package/dist/tailwind/dist/fixtures/dist/index.cjs +16 -20
  725. package/dist/tailwind/dist/fixtures/dist/index.js +16 -18
  726. package/dist/tailwind/dist/fixtures/dist/index.js.map +1 -1
  727. package/dist/tailwind/dist/fonts/dist/index.cjs +22 -14
  728. package/dist/tailwind/dist/fonts/dist/index.d.cts.map +1 -1
  729. package/dist/tailwind/dist/fonts/dist/index.d.ts.map +1 -1
  730. package/dist/tailwind/dist/fonts/dist/index.js +22 -12
  731. package/dist/tailwind/dist/fonts/dist/index.js.map +1 -1
  732. package/dist/tailwind/dist/icons/src/safelist.cjs +1 -3
  733. package/dist/tailwind/dist/icons/src/safelist.js +1 -1
  734. package/dist/tailwind/dist/index.cjs +5 -6
  735. package/dist/tailwind/dist/index.js +1 -2
  736. package/dist/tailwind/dist/modes/dist/index.cjs +1 -3
  737. package/dist/tailwind/dist/modes/dist/index.js +1 -1
  738. package/dist/tailwind/dist/modes/dist/index.js.map +1 -1
  739. package/dist/tailwind/dist/motion-tokens/dist/index.cjs +1 -3
  740. package/dist/tailwind/dist/motion-tokens/dist/index.js +1 -1
  741. package/dist/tailwind/dist/motion-tokens/dist/index.js.map +1 -1
  742. package/dist/tailwind/dist/palette/dist/index.cjs +13 -3
  743. package/dist/tailwind/dist/palette/dist/index.js +13 -1
  744. package/dist/tailwind/dist/palette/dist/index.js.map +1 -1
  745. package/dist/tailwind/dist/plugin.cjs +22 -24
  746. package/dist/tailwind/dist/plugin.d.cts +3 -3
  747. package/dist/tailwind/dist/plugin.d.cts.map +1 -1
  748. package/dist/tailwind/dist/plugin.d.ts +3 -3
  749. package/dist/tailwind/dist/plugin.d.ts.map +1 -1
  750. package/dist/tailwind/dist/plugin.js +1 -2
  751. package/dist/tailwind/dist/plugin.js.map +1 -1
  752. package/dist/tailwind/dist/purger/legacy/index.d.cts +2 -0
  753. package/dist/tailwind/dist/purger/legacy/purgeCSS.cjs +10 -12
  754. package/dist/tailwind/dist/purger/legacy/purgeCSS.js +2 -3
  755. package/dist/tailwind/dist/purger/legacy/purgeCSS.js.map +1 -1
  756. package/dist/tailwind/dist/purger/legacy/purgeFromCode.cjs +4 -6
  757. package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts +1 -1
  758. package/dist/tailwind/dist/purger/legacy/purgeFromCode.js +1 -2
  759. package/dist/tailwind/dist/purger/legacy/purgeFromCode.js.map +1 -1
  760. package/dist/tailwind/dist/purger/optimized/ast/expressions.cjs +4 -6
  761. package/dist/tailwind/dist/purger/optimized/ast/expressions.d.cts +2 -0
  762. package/dist/tailwind/dist/purger/optimized/ast/expressions.js +1 -2
  763. package/dist/tailwind/dist/purger/optimized/ast/expressions.js.map +1 -1
  764. package/dist/tailwind/dist/purger/optimized/ast/index.d.cts +2 -0
  765. package/dist/tailwind/dist/purger/optimized/ast/index.d.ts +1 -4
  766. package/dist/tailwind/dist/purger/optimized/ast/jsx.cjs +2 -4
  767. package/dist/tailwind/dist/purger/optimized/ast/jsx.d.cts +2 -0
  768. package/dist/tailwind/dist/purger/optimized/ast/jsx.d.ts +0 -1
  769. package/dist/tailwind/dist/purger/optimized/ast/jsx.js +2 -3
  770. package/dist/tailwind/dist/purger/optimized/ast/jsx.js.map +1 -1
  771. package/dist/tailwind/dist/purger/optimized/ast/props.d.cts +2 -0
  772. package/dist/tailwind/dist/purger/optimized/ast/props.d.ts +1 -1
  773. package/dist/tailwind/dist/purger/optimized/ast/spread.d.cts +2 -0
  774. package/dist/tailwind/dist/purger/optimized/ast/spread.d.ts +0 -1
  775. package/dist/tailwind/dist/purger/optimized/index.d.cts +3 -0
  776. package/dist/tailwind/dist/purger/optimized/index.d.ts +1 -4
  777. package/dist/tailwind/dist/purger/optimized/purge.cjs +8 -10
  778. package/dist/tailwind/dist/purger/optimized/purge.d.cts +2 -0
  779. package/dist/tailwind/dist/purger/optimized/purge.d.ts +1 -1
  780. package/dist/tailwind/dist/purger/optimized/purge.js +1 -2
  781. package/dist/tailwind/dist/purger/optimized/purge.js.map +1 -1
  782. package/dist/tailwind/dist/purger/optimized/purgeFromCode.cjs +4 -6
  783. package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts +1 -1
  784. package/dist/tailwind/dist/purger/optimized/purgeFromCode.js +1 -2
  785. package/dist/tailwind/dist/purger/optimized/purgeFromCode.js.map +1 -1
  786. package/dist/tailwind/dist/purger/optimized/types.d.ts +0 -1
  787. package/dist/tailwind/dist/purger/optimized/types.d.ts.map +1 -1
  788. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.cjs +7 -9
  789. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js +1 -2
  790. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js.map +1 -1
  791. package/dist/tailwind/dist/purger/optimized/utils/files.cjs +4 -6
  792. package/dist/tailwind/dist/purger/optimized/utils/files.d.cts +2 -0
  793. package/dist/tailwind/dist/purger/optimized/utils/files.js +1 -2
  794. package/dist/tailwind/dist/purger/optimized/utils/files.js.map +1 -1
  795. package/dist/tailwind/dist/purger/optimized/utils/safelist.cjs +4 -6
  796. package/dist/tailwind/dist/purger/optimized/utils/safelist.js +1 -2
  797. package/dist/tailwind/dist/purger/optimized/utils/safelist.js.map +1 -1
  798. package/dist/tailwind/dist/purger.cjs +4 -5
  799. package/dist/tailwind/dist/purger.d.ts +0 -2
  800. package/dist/tailwind/dist/purger.js +1 -2
  801. package/dist/tailwind/dist/runtimeConfig/hookMetadata.cjs +1 -3
  802. package/dist/tailwind/dist/runtimeConfig/hookMetadata.js +1 -1
  803. package/dist/tailwind/dist/runtimeConfig/hookMetadata.js.map +1 -1
  804. package/dist/tailwind/dist/tailwind/base/addColorModeVars.cjs +6 -8
  805. package/dist/tailwind/dist/tailwind/base/addColorModeVars.js +1 -2
  806. package/dist/tailwind/dist/tailwind/base/addColorModeVars.js.map +1 -1
  807. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.cjs +6 -8
  808. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js +1 -2
  809. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js.map +1 -1
  810. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.cjs +2 -4
  811. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js +1 -2
  812. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js.map +1 -1
  813. package/dist/tailwind/dist/tailwind/base/addFontVars.cjs +2 -4
  814. package/dist/tailwind/dist/tailwind/base/addFontVars.js +1 -2
  815. package/dist/tailwind/dist/tailwind/base/addFontVars.js.map +1 -1
  816. package/dist/tailwind/dist/tailwind/base/addMotionVars.cjs +2 -4
  817. package/dist/tailwind/dist/tailwind/base/addMotionVars.js +1 -2
  818. package/dist/tailwind/dist/tailwind/base/addMotionVars.js.map +1 -1
  819. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.cjs +4 -6
  820. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js +1 -2
  821. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js.map +1 -1
  822. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.cjs +3 -4
  823. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js +2 -2
  824. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js.map +1 -1
  825. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.cjs +10 -6
  826. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js +7 -2
  827. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js.map +1 -1
  828. package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.cjs +1 -3
  829. package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js +1 -1
  830. package/dist/tailwind/dist/tailwind/components/getIconStyles.cjs +1 -3
  831. package/dist/tailwind/dist/tailwind/components/getIconStyles.js +1 -1
  832. package/dist/tailwind/dist/tailwind/components/getInputStyles.cjs +1 -3
  833. package/dist/tailwind/dist/tailwind/components/getInputStyles.js +1 -1
  834. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.cjs +7 -9
  835. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js +1 -2
  836. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js.map +1 -1
  837. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.cjs +1 -3
  838. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts +1 -1
  839. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts +1 -1
  840. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js +1 -1
  841. package/dist/tailwind/dist/tailwind/plugins/a11y.cjs +21 -7
  842. package/dist/tailwind/dist/tailwind/plugins/a11y.js +17 -2
  843. package/dist/tailwind/dist/tailwind/plugins/a11y.js.map +1 -1
  844. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.cjs +4 -6
  845. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js +1 -2
  846. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js.map +1 -1
  847. package/dist/tailwind/dist/tailwind/plugins/borderRadius.cjs +7 -9
  848. package/dist/tailwind/dist/tailwind/plugins/borderRadius.js +1 -2
  849. package/dist/tailwind/dist/tailwind/plugins/borderRadius.js.map +1 -1
  850. package/dist/tailwind/dist/tailwind/plugins/borderWidth.cjs +7 -9
  851. package/dist/tailwind/dist/tailwind/plugins/borderWidth.js +1 -2
  852. package/dist/tailwind/dist/tailwind/plugins/borderWidth.js.map +1 -1
  853. package/dist/tailwind/dist/tailwind/plugins/breakpoints.cjs +7 -9
  854. package/dist/tailwind/dist/tailwind/plugins/breakpoints.js +1 -2
  855. package/dist/tailwind/dist/tailwind/plugins/breakpoints.js.map +1 -1
  856. package/dist/tailwind/dist/tailwind/plugins/colors.cjs +73 -15
  857. package/dist/tailwind/dist/tailwind/plugins/colors.js +62 -3
  858. package/dist/tailwind/dist/tailwind/plugins/colors.js.map +1 -1
  859. package/dist/tailwind/dist/tailwind/plugins/components.cjs +6 -8
  860. package/dist/tailwind/dist/tailwind/plugins/components.js +1 -2
  861. package/dist/tailwind/dist/tailwind/plugins/components.js.map +1 -1
  862. package/dist/tailwind/dist/tailwind/plugins/elevation.cjs +9 -11
  863. package/dist/tailwind/dist/tailwind/plugins/elevation.js +1 -2
  864. package/dist/tailwind/dist/tailwind/plugins/elevation.js.map +1 -1
  865. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.cjs +3 -5
  866. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js +1 -2
  867. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js.map +1 -1
  868. package/dist/tailwind/dist/tailwind/plugins/icons.cjs +4 -6
  869. package/dist/tailwind/dist/tailwind/plugins/icons.js +1 -2
  870. package/dist/tailwind/dist/tailwind/plugins/icons.js.map +1 -1
  871. package/dist/tailwind/dist/tailwind/plugins/input.cjs +4 -6
  872. package/dist/tailwind/dist/tailwind/plugins/input.js +1 -2
  873. package/dist/tailwind/dist/tailwind/plugins/input.js.map +1 -1
  874. package/dist/tailwind/dist/tailwind/plugins/motion.cjs +4 -6
  875. package/dist/tailwind/dist/tailwind/plugins/motion.js +1 -2
  876. package/dist/tailwind/dist/tailwind/plugins/motion.js.map +1 -1
  877. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.cjs +6 -8
  878. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js +1 -2
  879. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js.map +1 -1
  880. package/dist/tailwind/dist/tailwind/plugins/scaleMode.cjs +5 -7
  881. package/dist/tailwind/dist/tailwind/plugins/scaleMode.js +1 -2
  882. package/dist/tailwind/dist/tailwind/plugins/scaleMode.js.map +1 -1
  883. package/dist/tailwind/dist/tailwind/plugins/shadows.cjs +6 -8
  884. package/dist/tailwind/dist/tailwind/plugins/shadows.js +1 -2
  885. package/dist/tailwind/dist/tailwind/plugins/shadows.js.map +1 -1
  886. package/dist/tailwind/dist/tailwind/plugins/sizing.cjs +5 -7
  887. package/dist/tailwind/dist/tailwind/plugins/sizing.js +1 -2
  888. package/dist/tailwind/dist/tailwind/plugins/sizing.js.map +1 -1
  889. package/dist/tailwind/dist/tailwind/plugins/spacing.cjs +3 -5
  890. package/dist/tailwind/dist/tailwind/plugins/spacing.js +1 -2
  891. package/dist/tailwind/dist/tailwind/plugins/spacing.js.map +1 -1
  892. package/dist/tailwind/dist/tailwind/plugins/typography.cjs +14 -16
  893. package/dist/tailwind/dist/tailwind/plugins/typography.js +1 -2
  894. package/dist/tailwind/dist/tailwind/plugins/typography.js.map +1 -1
  895. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.cjs +4 -6
  896. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js +1 -2
  897. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js.map +1 -1
  898. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.cjs +4 -6
  899. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts +3 -3
  900. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts.map +1 -1
  901. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts +3 -3
  902. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts.map +1 -1
  903. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js +1 -2
  904. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js.map +1 -1
  905. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.cjs +8 -10
  906. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts +0 -1
  907. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts.map +1 -1
  908. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts +0 -1
  909. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts.map +1 -1
  910. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js +1 -2
  911. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js.map +1 -1
  912. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.cjs +1 -3
  913. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js +1 -1
  914. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js.map +1 -1
  915. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.cjs +5 -7
  916. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js +1 -2
  917. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js.map +1 -1
  918. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.cjs +2 -4
  919. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js +1 -2
  920. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js.map +1 -1
  921. package/dist/tailwind/dist/tailwind/utils/getFontStyles.cjs +5 -7
  922. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts +1 -1
  923. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts +1 -1
  924. package/dist/tailwind/dist/tailwind/utils/getFontStyles.js +1 -2
  925. package/dist/tailwind/dist/tailwind/utils/getFontStyles.js.map +1 -1
  926. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.cjs +5 -7
  927. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js +1 -2
  928. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js.map +1 -1
  929. package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.cjs +1 -3
  930. package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js +1 -1
  931. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.cjs +1 -3
  932. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js +1 -1
  933. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.cjs +3 -5
  934. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js +1 -2
  935. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js.map +1 -1
  936. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.cjs +6 -8
  937. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts +4 -4
  938. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts +4 -4
  939. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js +4 -5
  940. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js.map +1 -1
  941. package/dist/tailwind/dist/types/dist/index.d.cts.map +1 -1
  942. package/dist/tailwind/dist/types/dist/index.d.ts.map +1 -1
  943. package/dist/tailwind/dist/utils/assertUnreachable.cjs +1 -3
  944. package/dist/tailwind/dist/utils/assertUnreachable.js +1 -1
  945. package/dist/tailwind/dist/utils/entries.cjs +1 -3
  946. package/dist/tailwind/dist/utils/entries.js +1 -1
  947. package/dist/tailwind/dist/utils/entryPoints.cjs +4 -6
  948. package/dist/tailwind/dist/utils/entryPoints.js +1 -2
  949. package/dist/tailwind/dist/utils/entryPoints.js.map +1 -1
  950. package/dist/tailwind/dist/utils/fromEntries.cjs +1 -3
  951. package/dist/tailwind/dist/utils/fromEntries.js +1 -1
  952. package/dist/tailwind/dist/utils/generatePurgeCSSData.cjs +11 -15
  953. package/dist/tailwind/dist/utils/generatePurgeCSSData.js +2 -5
  954. package/dist/tailwind/dist/utils/generatePurgeCSSData.js.map +1 -1
  955. package/dist/tailwind/dist/utils/mapValues.cjs +1 -3
  956. package/dist/tailwind/dist/utils/mapValues.js +1 -1
  957. package/dist/tailwind/dist/utils/opacity.cjs +3 -5
  958. package/dist/tailwind/dist/utils/opacity.js +1 -2
  959. package/dist/tailwind/dist/utils/opacity.js.map +1 -1
  960. package/dist/tailwind/dist/utils/optimizeCSS.cjs +3 -5
  961. package/dist/tailwind/dist/utils/optimizeCSS.js +1 -2
  962. package/dist/tailwind/dist/utils/optimizeCSS.js.map +1 -1
  963. package/dist/tailwind/dist/utils/parseTokens.cjs +7 -9
  964. package/dist/tailwind/dist/utils/parseTokens.js +3 -4
  965. package/dist/tailwind/dist/utils/parseTokens.js.map +1 -1
  966. package/dist/tailwind/dist/utils/postcssPreserveVars.cjs +1 -3
  967. package/dist/tailwind/dist/utils/postcssPreserveVars.js +1 -1
  968. package/dist/tailwind/dist/utils/tsMorph.cjs +4 -6
  969. package/dist/tailwind/dist/utils/tsMorph.js +1 -2
  970. package/dist/tailwind/dist/utils/tsMorph.js.map +1 -1
  971. package/dist/tailwind/dist/utils.cjs +12 -13
  972. package/dist/tailwind/dist/utils.js +1 -2
  973. package/dist/tailwind/plugin.cjs +5 -6
  974. package/dist/tailwind/plugin.js +1 -2
  975. package/dist/tailwind/purger.cjs +3 -4
  976. package/dist/tailwind/purger.js +1 -2
  977. package/dist/tailwind/utils.cjs +12 -13
  978. package/dist/tailwind/utils.d.cts +0 -1
  979. package/dist/tailwind/utils.d.ts +0 -1
  980. package/dist/tailwind/utils.js +1 -2
  981. package/dist/tokens/automation/configs/index.cjs +3 -4
  982. package/dist/tokens/automation/configs/index.js +1 -2
  983. package/dist/tokens/automation/index.cjs +16 -17
  984. package/dist/tokens/automation/index.js +1 -2
  985. package/dist/tokens/automation/properties.cjs +3 -4
  986. package/dist/tokens/automation/properties.js +1 -2
  987. package/dist/tokens/configs/borderRadius.cjs +2 -4
  988. package/dist/tokens/configs/borderRadius.d.cts +1 -3
  989. package/dist/tokens/configs/borderRadius.d.ts +1 -3
  990. package/dist/tokens/configs/borderRadius.js +1 -2
  991. package/dist/tokens/configs/borderWidth.cjs +2 -4
  992. package/dist/tokens/configs/borderWidth.d.cts +1 -3
  993. package/dist/tokens/configs/borderWidth.d.ts +1 -3
  994. package/dist/tokens/configs/borderWidth.js +1 -2
  995. package/dist/tokens/configs/font.cjs +2 -4
  996. package/dist/tokens/configs/font.d.cts +1 -3
  997. package/dist/tokens/configs/font.d.ts +1 -3
  998. package/dist/tokens/configs/font.js +1 -2
  999. package/dist/tokens/configs/motion.cjs +3 -4
  1000. package/dist/tokens/configs/motion.js +1 -2
  1001. package/dist/tokens/configs/palette/alwaysPalette.cjs +3 -4
  1002. package/dist/tokens/configs/palette/alwaysPalette.js +1 -2
  1003. package/dist/tokens/configs/palette/index.cjs +3 -4
  1004. package/dist/tokens/configs/palette/index.js +1 -2
  1005. package/dist/tokens/configs/scaleMode.cjs +5 -7
  1006. package/dist/tokens/configs/scaleMode.d.cts +1 -3
  1007. package/dist/tokens/configs/scaleMode.d.ts +1 -3
  1008. package/dist/tokens/configs/scaleMode.js +1 -3
  1009. package/dist/tokens/configs/shadow.cjs +2 -4
  1010. package/dist/tokens/configs/shadow.d.cts +1 -3
  1011. package/dist/tokens/configs/shadow.d.ts +1 -3
  1012. package/dist/tokens/configs/shadow.js +1 -2
  1013. package/dist/tokens/configs/sizes.cjs +3 -5
  1014. package/dist/tokens/configs/sizes.d.cts +1 -3
  1015. package/dist/tokens/configs/sizes.d.ts +1 -3
  1016. package/dist/tokens/configs/sizes.js +1 -3
  1017. package/dist/tokens/configs/typography.cjs +2 -4
  1018. package/dist/tokens/configs/typography.d.cts +1 -3
  1019. package/dist/tokens/configs/typography.d.ts +1 -3
  1020. package/dist/tokens/configs/typography.js +1 -2
  1021. package/dist/tokens/consts/cssTokens.cjs +3 -4
  1022. package/dist/tokens/consts/cssTokens.js +1 -2
  1023. package/dist/tokens/consts/defaultModes.cjs +3 -4
  1024. package/dist/tokens/consts/defaultModes.js +1 -2
  1025. package/dist/tokens/consts/fontDeclarationsMap.cjs +3 -4
  1026. package/dist/tokens/consts/fontDeclarationsMap.js +1 -2
  1027. package/dist/tokens/index.cjs +28 -29
  1028. package/dist/tokens/index.d.cts +2 -6
  1029. package/dist/tokens/index.d.ts +2 -6
  1030. package/dist/tokens/index.js +1 -2
  1031. package/dist/tokens/parseButtonVariants.cjs +2 -4
  1032. package/dist/tokens/parseButtonVariants.d.cts +1 -3
  1033. package/dist/tokens/parseButtonVariants.d.ts +1 -3
  1034. package/dist/tokens/parseButtonVariants.js +1 -2
  1035. package/dist/tokens/parseTokens.cjs +3 -4
  1036. package/dist/tokens/parseTokens.d.cts +0 -1
  1037. package/dist/tokens/parseTokens.d.ts +0 -1
  1038. package/dist/tokens/parseTokens.js +1 -2
  1039. package/dist/tokens/types.d.cts +7 -7
  1040. package/dist/tokens/types.d.ts +7 -7
  1041. package/dist/tokens/utils/entries.cjs +2 -4
  1042. package/dist/tokens/utils/entries.js +1 -2
  1043. package/dist/tokens/utils/fromEntries.cjs +2 -4
  1044. package/dist/tokens/utils/fromEntries.js +1 -2
  1045. package/dist/tokens/utils/getFontUrls.cjs +4 -6
  1046. package/dist/tokens/utils/getFontUrls.d.cts +0 -3
  1047. package/dist/tokens/utils/getFontUrls.d.ts +0 -3
  1048. package/dist/tokens/utils/getFontUrls.js +1 -3
  1049. package/dist/tokens/utils/mapValues.cjs +2 -4
  1050. package/dist/tokens/utils/mapValues.js +1 -2
  1051. package/dist/tokens/utils/spectrum.cjs +2 -4
  1052. package/dist/tokens/utils/spectrum.d.cts +1 -3
  1053. package/dist/tokens/utils/spectrum.d.ts +1 -3
  1054. package/dist/tokens/utils/spectrum.js +1 -2
  1055. package/dist/types/{src → dist}/index.d.cts +23 -35
  1056. package/dist/types/{src → dist}/index.d.ts +23 -35
  1057. package/dist/uds/generated/componentData.cjs +1624 -1646
  1058. package/dist/uds/generated/componentData.js +1258 -1273
  1059. package/dist/uds/generated/tailwindPurge.cjs +105 -131
  1060. package/dist/uds/generated/tailwindPurge.js +105 -130
  1061. package/dist/uds/package.cjs +7 -9
  1062. package/dist/uds/package.js +2 -3
  1063. package/dist/utils/assertUnreachable.cjs +2 -4
  1064. package/dist/utils/assertUnreachable.js +1 -2
  1065. package/dist/utils/composeRefs.cjs +2 -4
  1066. package/dist/utils/composeRefs.js +1 -2
  1067. package/dist/utils/createSlot.cjs +4 -6
  1068. package/dist/utils/createSlot.js +1 -3
  1069. package/dist/utils/entries.cjs +2 -4
  1070. package/dist/utils/entries.js +1 -2
  1071. package/dist/utils/falsyToString.cjs +2 -4
  1072. package/dist/utils/falsyToString.js +1 -2
  1073. package/dist/utils/fromEntries.cjs +2 -4
  1074. package/dist/utils/fromEntries.js +1 -2
  1075. package/dist/utils/getUnscaledAnchorRect.cjs +2 -4
  1076. package/dist/utils/getUnscaledAnchorRect.js +1 -2
  1077. package/dist/utils/intersperse.cjs +4 -6
  1078. package/dist/utils/intersperse.d.cts +2 -2
  1079. package/dist/utils/intersperse.d.ts +2 -2
  1080. package/dist/utils/intersperse.js +1 -3
  1081. package/dist/utils/isElevationAlias.cjs +3 -5
  1082. package/dist/utils/isElevationAlias.d.cts +1 -1
  1083. package/dist/utils/isElevationAlias.d.ts +1 -1
  1084. package/dist/utils/isElevationAlias.js +1 -3
  1085. package/dist/utils/mapValues.cjs +2 -4
  1086. package/dist/utils/mapValues.js +1 -2
  1087. package/dist/utils/mergeSlotProps.cjs +3 -5
  1088. package/dist/utils/mergeSlotProps.js +1 -3
  1089. package/dist/utils/parseShadow.cjs +2 -4
  1090. package/dist/utils/parseShadow.js +1 -2
  1091. package/dist/utils/svgFloatingContentUtils.cjs +4 -8
  1092. package/dist/utils/svgFloatingContentUtils.js +3 -6
  1093. package/generated/componentData.json +1528 -1536
  1094. package/generated/tailwindPurge.ts +3 -3
  1095. package/package.json +2 -2
  1096. package/dist/components/Avatar/AvatarImage.types.cjs +0 -1
  1097. package/dist/components/Avatar/AvatarImage.types.d.cts +0 -19
  1098. package/dist/components/Avatar/AvatarImage.types.d.ts +0 -19
  1099. package/dist/components/Avatar/AvatarImage.types.js +0 -1
  1100. package/dist/components/Avatar/AvatarImageNoFallback.cjs +0 -53
  1101. package/dist/components/Avatar/AvatarImageNoFallback.d.cts +0 -18
  1102. package/dist/components/Avatar/AvatarImageNoFallback.d.ts +0 -18
  1103. package/dist/components/Avatar/AvatarImageNoFallback.js +0 -51
  1104. package/dist/components/Avatar/index.cjs +0 -11
  1105. package/dist/components/Avatar/index.d.cts +0 -6
  1106. package/dist/components/Avatar/index.d.ts +0 -6
  1107. package/dist/components/Avatar/index.js +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"purgeCSS.js","names":[],"sources":["../../../src/purger/legacy/purgeCSS.ts"],"sourcesContent":["import { mkdirSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport { print, spinStart, spinStop } from '@yahoo/uds-cli/lib';\nimport type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport {\n DARK_COLOR_MODE_CLASSNAME,\n LARGE_SCALE_MODE_CLASSNAME,\n LIGHT_COLOR_MODE_CLASSNAME,\n MEDIUM_SCALE_MODE_CLASSNAME,\n SMALL_SCALE_MODE_CLASSNAME,\n XLARGE_SCALE_MODE_CLASSNAME,\n XSMALL_SCALE_MODE_CLASSNAME,\n XXLARGE_SCALE_MODE_CLASSNAME,\n XXXLARGE_SCALE_MODE_CLASSNAME,\n} from '@yahoo/uds-css-tokens';\nimport type { ColorModeConfig, ScaleModeConfig } from '@yahoo/uds-types';\nimport fg from 'fast-glob';\nimport type { CallExpression, JsxOpeningElement, JsxSelfClosingElement } from 'ts-morph';\nimport { Node, Project, SyntaxKind, ts } from 'ts-morph';\n\nimport { DEFAULT_ENTRY, resolveEntryPaths } from '../../utils/entryPoints';\nimport { findReferencesAsJsxElements, getUsedPropsInReference } from '../../utils/tsMorph';\n\ntype PropToUsedOptions = [string, string[]];\ntype ComponentToVariants = { [key: string]: PropToUsedOptions[] };\ntype VariantsList = string[];\ntype ComponentDependencies = { [key: string]: string[] };\ntype ComponentToTwClasses = { [key: string]: string };\n\ninterface GeneratedPurgeCSSData {\n variantsList: VariantsList;\n componentToVariants: ComponentToVariants;\n componentToTwClasses: ComponentToTwClasses;\n componentsDependencies: ComponentDependencies;\n}\n\nconst scaleModeToClass: { [key in keyof ScaleModeConfig]: string } = {\n large: LARGE_SCALE_MODE_CLASSNAME,\n medium: MEDIUM_SCALE_MODE_CLASSNAME,\n small: SMALL_SCALE_MODE_CLASSNAME,\n xLarge: XLARGE_SCALE_MODE_CLASSNAME,\n xSmall: XSMALL_SCALE_MODE_CLASSNAME,\n xxLarge: XXLARGE_SCALE_MODE_CLASSNAME,\n xxxLarge: XXXLARGE_SCALE_MODE_CLASSNAME,\n};\n\nconst colorModeToClass: { [key in keyof ColorModeConfig]: string } = {\n dark: DARK_COLOR_MODE_CLASSNAME,\n light: LIGHT_COLOR_MODE_CLASSNAME,\n};\n\ntype SafeList = string[];\ntype ImportsList = string[];\ntype Files = string[];\n\nconst getFiles = async (entry: string | string[]): Promise<Files> => {\n try {\n const workspaceDir = process.env.PWD || process.cwd();\n\n if (!workspaceDir) {\n throw new Error('Workspace directory not found.');\n }\n\n const files = await Promise.all(\n resolveEntryPaths(entry, workspaceDir, DEFAULT_ENTRY).map((entryPath) => {\n if (entryPath.kind === 'file') {\n return [entryPath.absolutePath];\n }\n\n return fg(['**/*.jsx', '**/*.tsx'], {\n cwd: entryPath.absolutePath,\n absolute: true,\n ignore: ['**/node_modules/**'],\n });\n }),\n );\n return [...new Set(files.flat())];\n } catch (error) {\n throw error instanceof Error\n ? error\n : new Error(`Couldn't find the entry directory: ${entry}. Please make sure it exists.`);\n }\n};\n\n/**\n * Find all JSX references for a named import.\n *\n * @example\n * const references = findNamedImportReferences(project, '@yahoo/uds', 'HStack')\n */\nfunction findNamedImportReferences(\n project: Project,\n moduleSpecifierValue: string,\n namedImportName: string,\n) {\n const references: (JsxOpeningElement | JsxSelfClosingElement)[] = [];\n for (const sourceFile of project.getSourceFiles()) {\n for (const importDeclaration of sourceFile.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() === moduleSpecifierValue) {\n for (const namedImport of importDeclaration.getNamedImports()) {\n if (namedImport.getName() === namedImportName) {\n const identifier = namedImport.getFirstDescendantByKindOrThrow(\n ts.SyntaxKind.Identifier,\n );\n\n references.push(...findReferencesAsJsxElements(identifier));\n }\n }\n }\n }\n }\n\n return references;\n}\n\n/**\n * Given a file it returns the list of imports from @yahoo/uds\n */\nconst parseFiles = (project: Project, files: Files): ImportsList => {\n const importsSet = new Set();\n\n const importsPerFile: string[] = files\n .map((file: string) => {\n const sourceFile = project.getSourceFile(file);\n\n const udsImports =\n sourceFile\n ?.getImportDeclarations()\n .filter((declaration) => {\n return (\n declaration.getModuleSpecifier().getText().includes('@yahoo/uds') ||\n declaration.getModuleSpecifier().getText().includes('@yahoo/uds/experimental')\n );\n })\n .map((declaration) => {\n return declaration.getNamedImports().map((namedImport) => namedImport.getName());\n })\n .flat() ?? [];\n\n return udsImports;\n })\n .flat();\n\n importsPerFile.forEach((item: string) => {\n if (!importsSet.has(item)) {\n importsSet.add(item);\n }\n });\n\n return Array.from(importsSet) as string[];\n};\n\nconst getTailwindSafelist = (\n project: Project,\n componentList: string[],\n variants: Record<string, Record<string, string>>,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): SafeList => {\n const { variantsList, componentToVariants, componentToTwClasses } = generatedPurgeCssData;\n const safeList: SafeList = [];\n const validVariants = new Set<string>(variantsList);\n // we track the prop name and which values have been used\n const usedProps = new Map<string, Set<string>>();\n componentList.forEach((component: string) => {\n if (isUDSComponent(component, generatedPurgeCssData)) {\n // get the TW classes relevant for each prop\n // these classes are used internally in UDS,\n // they either have been initialized or used by other UDS components\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentToVariants[component].forEach(([propName, usedValues]: [string, any]) => {\n if (validVariants.has(propName)) {\n const options: Set<string> = usedProps.get(propName) ?? new Set();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n usedValues.forEach((val: any) => options.add(val));\n usedProps.set(propName, options);\n }\n });\n\n // scan the project for used props and\n // get the corresponding css for those used props\n getUsedProps(project, component, variants, packageJson).forEach(([propName, usedValues]) => {\n if (validVariants.has(propName)) {\n // This means that an expression has been used (Ex: `<Button size={getSize()} />`)\n // so we need to add all possible options for that prop\n if (usedValues.length === 0) {\n usedValues = Object.keys(variants[propName as keyof typeof variants] ?? {});\n }\n\n const options: Set<string> = usedProps.get(propName) ?? new Set();\n usedValues.forEach((val) => options.add(val));\n usedProps.set(propName, options);\n }\n });\n\n // get the inline TW classes used in each component\n safeList.push(...componentToTwClasses[component].replaceAll('\\\\', '').split(' '));\n }\n });\n\n for (const [propName, usedValues] of usedProps) {\n const variantGroup = variants[propName as keyof typeof variants];\n if (variantGroup) {\n usedValues.forEach((option) => {\n const variantClass = (variantGroup as Record<string, string>)[option];\n if (variantClass) {\n safeList.push(variantClass.replaceAll('\\\\', ''));\n }\n });\n }\n }\n\n for (const [variant, variantOptions] of scanGetStylesReferences(project, variants, packageJson)) {\n const variantGroup = variants[variant as keyof typeof variants];\n if (variantGroup) {\n variantOptions.forEach((option) => {\n const variantClass = (variantGroup as Record<string, string>)[option];\n if (variantClass) {\n safeList.push(variantClass.replaceAll('\\\\', ''));\n }\n });\n }\n }\n\n // Return a deduped list and strip out any empty strings\n return Array.from(new Set(safeList)).filter(Boolean);\n};\n\n/**\n * Get the used props for a given component.\n *\n * @example\n * const usedProps = getUsedProps(project, 'HStack');\n */\nconst getUsedProps = (\n project: Project,\n component: string,\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): Array<[string, string[]]> => {\n const references: (JsxOpeningElement | JsxSelfClosingElement)[] = [];\n references.push(...findNamedImportReferences(project, packageJson.name, component));\n references.push(\n ...findNamedImportReferences(project, `${packageJson.name}/experimental`, component),\n );\n\n const usedProps = references\n .map((reference) => getUsedPropsInReference(reference, variants))\n .flat();\n\n return usedProps;\n};\n\nconst isUDSComponent = (\n component: string,\n { componentToVariants }: GeneratedPurgeCSSData,\n): boolean => {\n return !!componentToVariants[component];\n};\n\nconst saveToFile = (safeList: SafeList, outputPath: string) => {\n const fileContent = `\n //! This file is generated by \\`uds purge\\` from @yahoo/uds\n //! Do not edit directly\n //! If there is issue with this file please report to #ask-uds\n export const safelist = ${JSON.stringify(safeList)};\n `;\n\n // Ensure the output directory exists\n mkdirSync(path.dirname(outputPath), { recursive: true });\n writeFileSync(outputPath, fileContent);\n};\n\nconst getComponentsToConvertToTW = (\n udsImport: ImportsList,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n): string[] => {\n const { componentToVariants, componentsDependencies } = generatedPurgeCssData;\n // filter out just the components\n const components = udsImport.filter((importedItem) => !!componentToVariants[importedItem]);\n const set = new Set();\n components.forEach((component) => {\n if (!set.has(component)) {\n set.add(component);\n }\n if (componentsDependencies[component]) {\n componentsDependencies[component].forEach((dependent: string) => {\n if (!set.has(dependent)) {\n set.add(dependent);\n }\n });\n }\n });\n return Array.from(set) as string[];\n};\n\n/**\n * Get the classes that corresponds to the used modes\n */\nconst getClassesForEnabledThemesAndScales = (): string[] => {\n const classes: string[] = [];\n\n // TODO: Remove this once the config supports toggling colorModes and scaleModes\n if (process.env.ENABLED_SCALE_AND_COLOR_MODES) {\n process.env.ENABLED_SCALE_AND_COLOR_MODES.split(',').map((mode) => {\n mode = mode.trim();\n if (colorModeToClass[mode as keyof ColorModeConfig]) {\n classes.push(colorModeToClass[mode as keyof ColorModeConfig]);\n } else if (scaleModeToClass[mode as keyof ScaleModeConfig]) {\n classes.push(scaleModeToClass[mode as keyof ScaleModeConfig]);\n }\n });\n } else {\n // Default: Light, Dark and Large\n classes.push(colorModeToClass.dark);\n classes.push(colorModeToClass.light);\n classes.push(scaleModeToClass.large);\n }\n\n return classes;\n};\n\n/**\n * Scan the source code for all `getStyles` references\n *\n * Note: This currently only works if we are passing a literal object to getStyles.\n *\n * Explanation: They we are able to enfer what css to include is by looking at the properties of the object passed.\n * If something other than an object is passed, we can fallback on the Type, but that would require handling\n * a lot of edge cases (function return type, spread operator, ternary, ...) and each one of these cases will\n * most likely have a sub case. Falling back to the Type will complicate the code a lot is error prone as there\n * is only so much info we can get out of the types as the Users are free to use `any` on their project which will\n * provide no value for us. Hence why having a literal object passed is the best and probably the only sane way\n * to go about this.\n */\nconst scanGetStylesReferences = (\n project: Project,\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): Map<string, Set<string>> => {\n // Find all the references for `getStyles`\n const references: CallExpression[] = [];\n for (const sourceFile of project.getSourceFiles()) {\n for (const importDeclaration of sourceFile.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() === packageJson.name) {\n for (const namedImport of importDeclaration.getNamedImports()) {\n if (namedImport.getName() === 'getStyles') {\n const identifier = namedImport.getFirstDescendantByKindOrThrow(\n ts.SyntaxKind.Identifier,\n );\n\n for (const reference of identifier.findReferencesAsNodes()) {\n const node = reference.getFirstAncestor((node) => {\n return Node.isCallExpression(node);\n });\n\n if (node) {\n references.push(node as CallExpression);\n }\n }\n }\n }\n }\n }\n }\n\n const usedProps = new Map<string, Set<string>>();\n for (const reference of references) {\n // TODO: handle the throw, tell users to not use something other than an object when calling `getStyles`\n const objectLiteralExpression = reference.getFirstChildByKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n const propertyAssignments = objectLiteralExpression.getDescendantsOfKind(\n SyntaxKind.PropertyAssignment,\n ); // PropertyAssignment is { property: 'test' }\n const shorthandPropertyAssignments = objectLiteralExpression.getDescendantsOfKind(\n SyntaxKind.ShorthandPropertyAssignment,\n ); // ShorthandPropertyAssignment is { property }\n // TODO: handle spread assignment\n propertyAssignments.forEach((propertyAssigment) => {\n const identifier = propertyAssigment.getFirstChildByKind(SyntaxKind.Identifier)?.getText();\n // check if we are assigning a string\n const stringLiteral = propertyAssigment\n .getFirstChildByKind(SyntaxKind.StringLiteral)\n ?.getLiteralText();\n if (identifier && !stringLiteral) {\n // this means an expression has been used\n // so we add all the possibilites\n const isvalidVariant = !!variants[identifier as keyof typeof variants];\n const fallback = isvalidVariant\n ? Object.keys(variants[identifier as keyof typeof variants])\n : [];\n usedProps.set(identifier, new Set(fallback));\n }\n if (identifier && stringLiteral) {\n let options: Set<string>;\n if (usedProps.has(identifier)) {\n options = usedProps.get(identifier)!;\n } else {\n options = new Set();\n }\n options.add(stringLiteral);\n usedProps.set(identifier, options);\n }\n });\n shorthandPropertyAssignments.forEach((propertyAssigment) => {\n const identifier = propertyAssigment.getFirstChildByKind(SyntaxKind.Identifier)?.getText();\n if (identifier) {\n usedProps.set(identifier, new Set());\n }\n });\n }\n\n return usedProps;\n};\n\ntype PurgeOptions = {\n config?: string;\n output?: string;\n entry?: string | string[];\n optimized?: string | boolean;\n};\n\nconst applyPurgeDefaults = (\n options: PurgeOptions = {},\n): Required<Pick<PurgeOptions, 'config' | 'output' | 'entry'>> => ({\n config: options.config ?? process.env.UDS_OUT_FILE ?? './uds.config.ts',\n output: options.output ?? 'dist/safelist.ts',\n entry: options.entry ?? DEFAULT_ENTRY,\n});\n\nasync function purge(\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n options: PurgeOptions = {},\n) {\n const { config: configPath, output, entry } = applyPurgeDefaults(options);\n const workspaceDir = process.env.PWD || process.cwd();\n if (!workspaceDir) {\n throw new Error('Workspace directory not found.');\n }\n const srcDir = path.join(workspaceDir, '/tsconfig.json');\n const project = new Project({\n tsConfigFilePath: srcDir,\n });\n const outputFilePath = path.join(workspaceDir, output);\n\n // // we need to load the UDS config\n const configAbsolutePath = path.join(workspaceDir, configPath);\n // The config is currently unused because we haven't implemented the feature to toggle the color and scale modes\n // in the configurator. This is a placeholder for when we do, so we can purge the unused classes.\n let config: { config: UniversalTokensConfig } | undefined;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n config = await import(configAbsolutePath);\n } catch {\n throw new Error(\n \"Couldn't load the UDS config. Make sure you have uds.config.ts in the root of your project.\",\n );\n }\n spinStart('Getting used UDS components...');\n // 1. Get all files from the current dir\n print('Loading the project...');\n const files = await getFiles(entry);\n // 2. For each file get the imports;\n print('Going through the imports...');\n const udsImports = parseFiles(project, files);\n // 3. Now that we have the imported components\n print('Finding all the components imported from UDS...');\n const udsComponents = getComponentsToConvertToTW(udsImports, generatedPurgeCssData);\n // 4. Generate the CSS we need\n print('🧑‍🍳 Cooking...');\n const safeList = getTailwindSafelist(\n project,\n udsComponents,\n variants,\n generatedPurgeCssData,\n packageJson,\n );\n const themesAndScalesClasses = getClassesForEnabledThemesAndScales();\n // 5. Write the allowlist to a file\n saveToFile(safeList.concat(themesAndScalesClasses), outputFilePath);\n spinStop('Generated your safelist!');\n}\n\nexport {\n applyPurgeDefaults,\n findNamedImportReferences,\n type GeneratedPurgeCSSData,\n getClassesForEnabledThemesAndScales,\n getComponentsToConvertToTW,\n getTailwindSafelist,\n getUsedProps,\n isUDSComponent,\n parseFiles,\n purge,\n type PurgeOptions,\n scanGetStylesReferences,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"purgeCSS.js","names":[],"sources":["../../../src/purger/legacy/purgeCSS.ts"],"sourcesContent":["import { mkdirSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport { print, spinStart, spinStop } from '@yahoo/uds-cli/lib';\nimport type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport {\n DARK_COLOR_MODE_CLASSNAME,\n LARGE_SCALE_MODE_CLASSNAME,\n LIGHT_COLOR_MODE_CLASSNAME,\n MEDIUM_SCALE_MODE_CLASSNAME,\n SMALL_SCALE_MODE_CLASSNAME,\n XLARGE_SCALE_MODE_CLASSNAME,\n XSMALL_SCALE_MODE_CLASSNAME,\n XXLARGE_SCALE_MODE_CLASSNAME,\n XXXLARGE_SCALE_MODE_CLASSNAME,\n} from '@yahoo/uds-css-tokens';\nimport type { ColorModeConfig, ScaleModeConfig } from '@yahoo/uds-types';\nimport fg from 'fast-glob';\nimport type { CallExpression, JsxOpeningElement, JsxSelfClosingElement } from 'ts-morph';\nimport { Node, Project, SyntaxKind, ts } from 'ts-morph';\n\nimport { DEFAULT_ENTRY, resolveEntryPaths } from '../../utils/entryPoints';\nimport { findReferencesAsJsxElements, getUsedPropsInReference } from '../../utils/tsMorph';\n\ntype PropToUsedOptions = [string, string[]];\ntype ComponentToVariants = { [key: string]: PropToUsedOptions[] };\ntype VariantsList = string[];\ntype ComponentDependencies = { [key: string]: string[] };\ntype ComponentToTwClasses = { [key: string]: string };\n\ninterface GeneratedPurgeCSSData {\n variantsList: VariantsList;\n componentToVariants: ComponentToVariants;\n componentToTwClasses: ComponentToTwClasses;\n componentsDependencies: ComponentDependencies;\n}\n\nconst scaleModeToClass: { [key in keyof ScaleModeConfig]: string } = {\n large: LARGE_SCALE_MODE_CLASSNAME,\n medium: MEDIUM_SCALE_MODE_CLASSNAME,\n small: SMALL_SCALE_MODE_CLASSNAME,\n xLarge: XLARGE_SCALE_MODE_CLASSNAME,\n xSmall: XSMALL_SCALE_MODE_CLASSNAME,\n xxLarge: XXLARGE_SCALE_MODE_CLASSNAME,\n xxxLarge: XXXLARGE_SCALE_MODE_CLASSNAME,\n};\n\nconst colorModeToClass: { [key in keyof ColorModeConfig]: string } = {\n dark: DARK_COLOR_MODE_CLASSNAME,\n light: LIGHT_COLOR_MODE_CLASSNAME,\n};\n\ntype SafeList = string[];\ntype ImportsList = string[];\ntype Files = string[];\n\nconst getFiles = async (entry: string | string[]): Promise<Files> => {\n try {\n const workspaceDir = process.env.PWD || process.cwd();\n\n if (!workspaceDir) {\n throw new Error('Workspace directory not found.');\n }\n\n const files = await Promise.all(\n resolveEntryPaths(entry, workspaceDir, DEFAULT_ENTRY).map((entryPath) => {\n if (entryPath.kind === 'file') {\n return [entryPath.absolutePath];\n }\n\n return fg(['**/*.jsx', '**/*.tsx'], {\n cwd: entryPath.absolutePath,\n absolute: true,\n ignore: ['**/node_modules/**'],\n });\n }),\n );\n return [...new Set(files.flat())];\n } catch (error) {\n throw error instanceof Error\n ? error\n : new Error(`Couldn't find the entry directory: ${entry}. Please make sure it exists.`);\n }\n};\n\n/**\n * Find all JSX references for a named import.\n *\n * @example\n * const references = findNamedImportReferences(project, '@yahoo/uds', 'HStack')\n */\nfunction findNamedImportReferences(\n project: Project,\n moduleSpecifierValue: string,\n namedImportName: string,\n) {\n const references: (JsxOpeningElement | JsxSelfClosingElement)[] = [];\n for (const sourceFile of project.getSourceFiles()) {\n for (const importDeclaration of sourceFile.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() === moduleSpecifierValue) {\n for (const namedImport of importDeclaration.getNamedImports()) {\n if (namedImport.getName() === namedImportName) {\n const identifier = namedImport.getFirstDescendantByKindOrThrow(\n ts.SyntaxKind.Identifier,\n );\n\n references.push(...findReferencesAsJsxElements(identifier));\n }\n }\n }\n }\n }\n\n return references;\n}\n\n/**\n * Given a file it returns the list of imports from @yahoo/uds\n */\nconst parseFiles = (project: Project, files: Files): ImportsList => {\n const importsSet = new Set();\n\n const importsPerFile: string[] = files\n .map((file: string) => {\n const sourceFile = project.getSourceFile(file);\n\n const udsImports =\n sourceFile\n ?.getImportDeclarations()\n .filter((declaration) => {\n return (\n declaration.getModuleSpecifier().getText().includes('@yahoo/uds') ||\n declaration.getModuleSpecifier().getText().includes('@yahoo/uds/experimental')\n );\n })\n .map((declaration) => {\n return declaration.getNamedImports().map((namedImport) => namedImport.getName());\n })\n .flat() ?? [];\n\n return udsImports;\n })\n .flat();\n\n importsPerFile.forEach((item: string) => {\n if (!importsSet.has(item)) {\n importsSet.add(item);\n }\n });\n\n return Array.from(importsSet) as string[];\n};\n\nconst getTailwindSafelist = (\n project: Project,\n componentList: string[],\n variants: Record<string, Record<string, string>>,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): SafeList => {\n const { variantsList, componentToVariants, componentToTwClasses } = generatedPurgeCssData;\n const safeList: SafeList = [];\n const validVariants = new Set<string>(variantsList);\n // we track the prop name and which values have been used\n const usedProps = new Map<string, Set<string>>();\n componentList.forEach((component: string) => {\n if (isUDSComponent(component, generatedPurgeCssData)) {\n // get the TW classes relevant for each prop\n // these classes are used internally in UDS,\n // they either have been initialized or used by other UDS components\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentToVariants[component].forEach(([propName, usedValues]: [string, any]) => {\n if (validVariants.has(propName)) {\n const options: Set<string> = usedProps.get(propName) ?? new Set();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n usedValues.forEach((val: any) => options.add(val));\n usedProps.set(propName, options);\n }\n });\n\n // scan the project for used props and\n // get the corresponding css for those used props\n getUsedProps(project, component, variants, packageJson).forEach(([propName, usedValues]) => {\n if (validVariants.has(propName)) {\n // This means that an expression has been used (Ex: `<Button size={getSize()} />`)\n // so we need to add all possible options for that prop\n if (usedValues.length === 0) {\n usedValues = Object.keys(variants[propName as keyof typeof variants] ?? {});\n }\n\n const options: Set<string> = usedProps.get(propName) ?? new Set();\n usedValues.forEach((val) => options.add(val));\n usedProps.set(propName, options);\n }\n });\n\n // get the inline TW classes used in each component\n safeList.push(...componentToTwClasses[component].replaceAll('\\\\', '').split(' '));\n }\n });\n\n for (const [propName, usedValues] of usedProps) {\n const variantGroup = variants[propName as keyof typeof variants];\n if (variantGroup) {\n usedValues.forEach((option) => {\n const variantClass = (variantGroup as Record<string, string>)[option];\n if (variantClass) {\n safeList.push(variantClass.replaceAll('\\\\', ''));\n }\n });\n }\n }\n\n for (const [variant, variantOptions] of scanGetStylesReferences(project, variants, packageJson)) {\n const variantGroup = variants[variant as keyof typeof variants];\n if (variantGroup) {\n variantOptions.forEach((option) => {\n const variantClass = (variantGroup as Record<string, string>)[option];\n if (variantClass) {\n safeList.push(variantClass.replaceAll('\\\\', ''));\n }\n });\n }\n }\n\n // Return a deduped list and strip out any empty strings\n return Array.from(new Set(safeList)).filter(Boolean);\n};\n\n/**\n * Get the used props for a given component.\n *\n * @example\n * const usedProps = getUsedProps(project, 'HStack');\n */\nconst getUsedProps = (\n project: Project,\n component: string,\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): Array<[string, string[]]> => {\n const references: (JsxOpeningElement | JsxSelfClosingElement)[] = [];\n references.push(...findNamedImportReferences(project, packageJson.name, component));\n references.push(\n ...findNamedImportReferences(project, `${packageJson.name}/experimental`, component),\n );\n\n const usedProps = references\n .map((reference) => getUsedPropsInReference(reference, variants))\n .flat();\n\n return usedProps;\n};\n\nconst isUDSComponent = (\n component: string,\n { componentToVariants }: GeneratedPurgeCSSData,\n): boolean => {\n return !!componentToVariants[component];\n};\n\nconst saveToFile = (safeList: SafeList, outputPath: string) => {\n const fileContent = `\n //! This file is generated by \\`uds purge\\` from @yahoo/uds\n //! Do not edit directly\n //! If there is issue with this file please report to #ask-uds\n export const safelist = ${JSON.stringify(safeList)};\n `;\n\n // Ensure the output directory exists\n mkdirSync(path.dirname(outputPath), { recursive: true });\n writeFileSync(outputPath, fileContent);\n};\n\nconst getComponentsToConvertToTW = (\n udsImport: ImportsList,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n): string[] => {\n const { componentToVariants, componentsDependencies } = generatedPurgeCssData;\n // filter out just the components\n const components = udsImport.filter((importedItem) => !!componentToVariants[importedItem]);\n const set = new Set();\n components.forEach((component) => {\n if (!set.has(component)) {\n set.add(component);\n }\n if (componentsDependencies[component]) {\n componentsDependencies[component].forEach((dependent: string) => {\n if (!set.has(dependent)) {\n set.add(dependent);\n }\n });\n }\n });\n return Array.from(set) as string[];\n};\n\n/**\n * Get the classes that corresponds to the used modes\n */\nconst getClassesForEnabledThemesAndScales = (): string[] => {\n const classes: string[] = [];\n\n // TODO: Remove this once the config supports toggling colorModes and scaleModes\n if (process.env.ENABLED_SCALE_AND_COLOR_MODES) {\n process.env.ENABLED_SCALE_AND_COLOR_MODES.split(',').map((mode) => {\n mode = mode.trim();\n if (colorModeToClass[mode as keyof ColorModeConfig]) {\n classes.push(colorModeToClass[mode as keyof ColorModeConfig]);\n } else if (scaleModeToClass[mode as keyof ScaleModeConfig]) {\n classes.push(scaleModeToClass[mode as keyof ScaleModeConfig]);\n }\n });\n } else {\n // Default: Light, Dark and Large\n classes.push(colorModeToClass.dark);\n classes.push(colorModeToClass.light);\n classes.push(scaleModeToClass.large);\n }\n\n return classes;\n};\n\n/**\n * Scan the source code for all `getStyles` references\n *\n * Note: This currently only works if we are passing a literal object to getStyles.\n *\n * Explanation: They we are able to enfer what css to include is by looking at the properties of the object passed.\n * If something other than an object is passed, we can fallback on the Type, but that would require handling\n * a lot of edge cases (function return type, spread operator, ternary, ...) and each one of these cases will\n * most likely have a sub case. Falling back to the Type will complicate the code a lot is error prone as there\n * is only so much info we can get out of the types as the Users are free to use `any` on their project which will\n * provide no value for us. Hence why having a literal object passed is the best and probably the only sane way\n * to go about this.\n */\nconst scanGetStylesReferences = (\n project: Project,\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n): Map<string, Set<string>> => {\n // Find all the references for `getStyles`\n const references: CallExpression[] = [];\n for (const sourceFile of project.getSourceFiles()) {\n for (const importDeclaration of sourceFile.getImportDeclarations()) {\n if (importDeclaration.getModuleSpecifierValue() === packageJson.name) {\n for (const namedImport of importDeclaration.getNamedImports()) {\n if (namedImport.getName() === 'getStyles') {\n const identifier = namedImport.getFirstDescendantByKindOrThrow(\n ts.SyntaxKind.Identifier,\n );\n\n for (const reference of identifier.findReferencesAsNodes()) {\n const node = reference.getFirstAncestor((node) => {\n return Node.isCallExpression(node);\n });\n\n if (node) {\n references.push(node as CallExpression);\n }\n }\n }\n }\n }\n }\n }\n\n const usedProps = new Map<string, Set<string>>();\n for (const reference of references) {\n // TODO: handle the throw, tell users to not use something other than an object when calling `getStyles`\n const objectLiteralExpression = reference.getFirstChildByKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n const propertyAssignments = objectLiteralExpression.getDescendantsOfKind(\n SyntaxKind.PropertyAssignment,\n ); // PropertyAssignment is { property: 'test' }\n const shorthandPropertyAssignments = objectLiteralExpression.getDescendantsOfKind(\n SyntaxKind.ShorthandPropertyAssignment,\n ); // ShorthandPropertyAssignment is { property }\n // TODO: handle spread assignment\n propertyAssignments.forEach((propertyAssigment) => {\n const identifier = propertyAssigment.getFirstChildByKind(SyntaxKind.Identifier)?.getText();\n // check if we are assigning a string\n const stringLiteral = propertyAssigment\n .getFirstChildByKind(SyntaxKind.StringLiteral)\n ?.getLiteralText();\n if (identifier && !stringLiteral) {\n // this means an expression has been used\n // so we add all the possibilites\n const isvalidVariant = !!variants[identifier as keyof typeof variants];\n const fallback = isvalidVariant\n ? Object.keys(variants[identifier as keyof typeof variants])\n : [];\n usedProps.set(identifier, new Set(fallback));\n }\n if (identifier && stringLiteral) {\n let options: Set<string>;\n if (usedProps.has(identifier)) {\n options = usedProps.get(identifier)!;\n } else {\n options = new Set();\n }\n options.add(stringLiteral);\n usedProps.set(identifier, options);\n }\n });\n shorthandPropertyAssignments.forEach((propertyAssigment) => {\n const identifier = propertyAssigment.getFirstChildByKind(SyntaxKind.Identifier)?.getText();\n if (identifier) {\n usedProps.set(identifier, new Set());\n }\n });\n }\n\n return usedProps;\n};\n\ntype PurgeOptions = {\n config?: string;\n output?: string;\n entry?: string | string[];\n optimized?: string | boolean;\n};\n\nconst applyPurgeDefaults = (\n options: PurgeOptions = {},\n): Required<Pick<PurgeOptions, 'config' | 'output' | 'entry'>> => ({\n config: options.config ?? process.env.UDS_OUT_FILE ?? './uds.config.ts',\n output: options.output ?? 'dist/safelist.ts',\n entry: options.entry ?? DEFAULT_ENTRY,\n});\n\nasync function purge(\n variants: Record<string, Record<string, string>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>,\n generatedPurgeCssData: GeneratedPurgeCSSData,\n options: PurgeOptions = {},\n) {\n const { config: configPath, output, entry } = applyPurgeDefaults(options);\n const workspaceDir = process.env.PWD || process.cwd();\n if (!workspaceDir) {\n throw new Error('Workspace directory not found.');\n }\n const srcDir = path.join(workspaceDir, '/tsconfig.json');\n const project = new Project({\n tsConfigFilePath: srcDir,\n });\n const outputFilePath = path.join(workspaceDir, output);\n\n // // we need to load the UDS config\n const configAbsolutePath = path.join(workspaceDir, configPath);\n // The config is currently unused because we haven't implemented the feature to toggle the color and scale modes\n // in the configurator. This is a placeholder for when we do, so we can purge the unused classes.\n let config: { config: UniversalTokensConfig } | undefined;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n config = await import(configAbsolutePath);\n } catch {\n throw new Error(\n \"Couldn't load the UDS config. Make sure you have uds.config.ts in the root of your project.\",\n );\n }\n spinStart('Getting used UDS components...');\n // 1. Get all files from the current dir\n print('Loading the project...');\n const files = await getFiles(entry);\n // 2. For each file get the imports;\n print('Going through the imports...');\n const udsImports = parseFiles(project, files);\n // 3. Now that we have the imported components\n print('Finding all the components imported from UDS...');\n const udsComponents = getComponentsToConvertToTW(udsImports, generatedPurgeCssData);\n // 4. Generate the CSS we need\n print('🧑‍🍳 Cooking...');\n const safeList = getTailwindSafelist(\n project,\n udsComponents,\n variants,\n generatedPurgeCssData,\n packageJson,\n );\n const themesAndScalesClasses = getClassesForEnabledThemesAndScales();\n // 5. Write the allowlist to a file\n saveToFile(safeList.concat(themesAndScalesClasses), outputFilePath);\n spinStop('Generated your safelist!');\n}\n\nexport {\n applyPurgeDefaults,\n findNamedImportReferences,\n type GeneratedPurgeCSSData,\n getClassesForEnabledThemesAndScales,\n getComponentsToConvertToTW,\n getTailwindSafelist,\n getUsedProps,\n isUDSComponent,\n parseFiles,\n purge,\n type PurgeOptions,\n scanGetStylesReferences,\n};\n"],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
- const require_index = require('../../css-tokens/dist/index.cjs');
4
- const require_purgeCSS = require('./purgeCSS.cjs');
2
+ require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_index = require("../../css-tokens/dist/index.cjs");
4
+ const require_purgeCSS = require("./purgeCSS.cjs");
5
5
  let ts_morph = require("ts-morph");
6
-
7
6
  //#region src/purger/legacy/purgeFromCode.ts
8
7
  const COLOR_MODE_CLASSES = {
9
8
  dark: require_index.DARK_COLOR_MODE_CLASSNAME,
@@ -54,6 +53,5 @@ function purgeFromCode(code, options) {
54
53
  };
55
54
  }
56
55
  }
57
-
58
56
  //#endregion
59
- exports.purgeFromCode = purgeFromCode;
57
+ exports.purgeFromCode = purgeFromCode;
@@ -24,5 +24,5 @@ interface PurgeFromCodeOptions {
24
24
  */
25
25
  declare function purgeFromCode(code: string, options: PurgeFromCodeOptions): PurgeFromCodeResult;
26
26
  //#endregion
27
- export { type PurgeFromCodeResult, purgeFromCode };
27
+ export { type PurgeFromCodeOptions, type PurgeFromCodeResult, purgeFromCode };
28
28
  //# sourceMappingURL=purgeFromCode.d.cts.map
@@ -2,7 +2,6 @@
2
2
  import { DARK_COLOR_MODE_CLASSNAME, LARGE_SCALE_MODE_CLASSNAME, LIGHT_COLOR_MODE_CLASSNAME } from "../../css-tokens/dist/index.js";
3
3
  import { getComponentsToConvertToTW, getTailwindSafelist, parseFiles } from "./purgeCSS.js";
4
4
  import { Project, ts } from "ts-morph";
5
-
6
5
  //#region src/purger/legacy/purgeFromCode.ts
7
6
  const COLOR_MODE_CLASSES = {
8
7
  dark: DARK_COLOR_MODE_CLASSNAME,
@@ -53,7 +52,7 @@ function purgeFromCode(code, options) {
53
52
  };
54
53
  }
55
54
  }
56
-
57
55
  //#endregion
58
56
  export { purgeFromCode };
57
+
59
58
  //# sourceMappingURL=purgeFromCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"purgeFromCode.js","names":[],"sources":["../../../src/purger/legacy/purgeFromCode.ts"],"sourcesContent":["import {\n DARK_COLOR_MODE_CLASSNAME,\n LARGE_SCALE_MODE_CLASSNAME,\n LIGHT_COLOR_MODE_CLASSNAME,\n} from '@yahoo/uds-css-tokens';\nimport { Project, ts } from 'ts-morph';\n\nimport type { GeneratedPurgeCSSData } from './purgeCSS';\nimport { getComponentsToConvertToTW, getTailwindSafelist, parseFiles } from './purgeCSS';\n\ninterface PurgeFromCodeResult {\n safelist: string[];\n imports: string[];\n components: string[];\n error?: string;\n}\n\ninterface PurgeFromCodeOptions {\n colorModes?: ('dark' | 'light')[];\n variants: Record<string, Record<string, string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>;\n generatedPurgeCssData: GeneratedPurgeCSSData;\n}\n\nconst COLOR_MODE_CLASSES: Record<string, string> = {\n dark: DARK_COLOR_MODE_CLASSNAME,\n light: LIGHT_COLOR_MODE_CLASSNAME,\n};\n\n/**\n * Run the legacy purger on a code string and return the safelist.\n * This uses the same logic as the CLI `uds purge` command but with in-memory files.\n *\n * @param code - The TypeScript/TSX code to analyze\n * @param options - Configuration options for color modes\n * @returns The purge result containing safelist, imports, and components\n */\nfunction purgeFromCode(code: string, options: PurgeFromCodeOptions): PurgeFromCodeResult {\n const { colorModes = ['dark', 'light'] } = options;\n\n try {\n const project = new Project({\n useInMemoryFileSystem: true,\n compilerOptions: {\n jsx: ts.JsxEmit.ReactJSX,\n jsxImportSource: 'react',\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeJs,\n esModuleInterop: true,\n strict: true,\n },\n });\n\n const sourceFile = project.createSourceFile('user-code.tsx', code);\n\n const imports = parseFiles(project, [sourceFile.getFilePath()]);\n const components = getComponentsToConvertToTW(imports, options.generatedPurgeCssData);\n const safelist = getTailwindSafelist(\n project,\n components,\n options.variants,\n options.generatedPurgeCssData,\n options.packageJson,\n );\n\n // Add color mode classes\n for (const mode of colorModes) {\n const cls = COLOR_MODE_CLASSES[mode];\n if (cls) {\n safelist.push(cls);\n }\n }\n\n // Always include large scale mode\n safelist.push(LARGE_SCALE_MODE_CLASSNAME);\n\n return {\n safelist: Array.from(new Set(safelist)),\n imports,\n components,\n };\n } catch (error) {\n return {\n safelist: [],\n imports: [],\n components: [],\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n}\n\nexport type { PurgeFromCodeOptions, PurgeFromCodeResult };\nexport { purgeFromCode };\n"],"mappings":";;;;;;AAyBA,MAAM,qBAA6C;CACjD,MAAM;CACN,OAAO;CACR;;;;;;;;;AAUD,SAAS,cAAc,MAAc,SAAoD;CACvF,MAAM,EAAE,aAAa,CAAC,QAAQ,QAAQ,KAAK;AAE3C,KAAI;EACF,MAAM,UAAU,IAAI,QAAQ;GAC1B,uBAAuB;GACvB,iBAAiB;IACf,KAAK,GAAG,QAAQ;IAChB,iBAAiB;IACjB,QAAQ,GAAG,aAAa;IACxB,QAAQ,GAAG,WAAW;IACtB,kBAAkB,GAAG,qBAAqB;IAC1C,iBAAiB;IACjB,QAAQ;IACT;GACF,CAAC;EAIF,MAAM,UAAU,WAAW,SAAS,CAFjB,QAAQ,iBAAiB,iBAAiB,KAAK,CAElB,aAAa,CAAC,CAAC;EAC/D,MAAM,aAAa,2BAA2B,SAAS,QAAQ,sBAAsB;EACrF,MAAM,WAAW,oBACf,SACA,YACA,QAAQ,UACR,QAAQ,uBACR,QAAQ,YACT;AAGD,OAAK,MAAM,QAAQ,YAAY;GAC7B,MAAM,MAAM,mBAAmB;AAC/B,OAAI,IACF,UAAS,KAAK,IAAI;;AAKtB,WAAS,KAAK,2BAA2B;AAEzC,SAAO;GACL,UAAU,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC;GACvC;GACA;GACD;UACM,OAAO;AACd,SAAO;GACL,UAAU,EAAE;GACZ,SAAS,EAAE;GACX,YAAY,EAAE;GACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU;GACjD"}
1
+ {"version":3,"file":"purgeFromCode.js","names":[],"sources":["../../../src/purger/legacy/purgeFromCode.ts"],"sourcesContent":["import {\n DARK_COLOR_MODE_CLASSNAME,\n LARGE_SCALE_MODE_CLASSNAME,\n LIGHT_COLOR_MODE_CLASSNAME,\n} from '@yahoo/uds-css-tokens';\nimport { Project, ts } from 'ts-morph';\n\nimport type { GeneratedPurgeCSSData } from './purgeCSS';\nimport { getComponentsToConvertToTW, getTailwindSafelist, parseFiles } from './purgeCSS';\n\ninterface PurgeFromCodeResult {\n safelist: string[];\n imports: string[];\n components: string[];\n error?: string;\n}\n\ninterface PurgeFromCodeOptions {\n colorModes?: ('dark' | 'light')[];\n variants: Record<string, Record<string, string>>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n packageJson: Record<string, any>;\n generatedPurgeCssData: GeneratedPurgeCSSData;\n}\n\nconst COLOR_MODE_CLASSES: Record<string, string> = {\n dark: DARK_COLOR_MODE_CLASSNAME,\n light: LIGHT_COLOR_MODE_CLASSNAME,\n};\n\n/**\n * Run the legacy purger on a code string and return the safelist.\n * This uses the same logic as the CLI `uds purge` command but with in-memory files.\n *\n * @param code - The TypeScript/TSX code to analyze\n * @param options - Configuration options for color modes\n * @returns The purge result containing safelist, imports, and components\n */\nfunction purgeFromCode(code: string, options: PurgeFromCodeOptions): PurgeFromCodeResult {\n const { colorModes = ['dark', 'light'] } = options;\n\n try {\n const project = new Project({\n useInMemoryFileSystem: true,\n compilerOptions: {\n jsx: ts.JsxEmit.ReactJSX,\n jsxImportSource: 'react',\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeJs,\n esModuleInterop: true,\n strict: true,\n },\n });\n\n const sourceFile = project.createSourceFile('user-code.tsx', code);\n\n const imports = parseFiles(project, [sourceFile.getFilePath()]);\n const components = getComponentsToConvertToTW(imports, options.generatedPurgeCssData);\n const safelist = getTailwindSafelist(\n project,\n components,\n options.variants,\n options.generatedPurgeCssData,\n options.packageJson,\n );\n\n // Add color mode classes\n for (const mode of colorModes) {\n const cls = COLOR_MODE_CLASSES[mode];\n if (cls) {\n safelist.push(cls);\n }\n }\n\n // Always include large scale mode\n safelist.push(LARGE_SCALE_MODE_CLASSNAME);\n\n return {\n safelist: Array.from(new Set(safelist)),\n imports,\n components,\n };\n } catch (error) {\n return {\n safelist: [],\n imports: [],\n components: [],\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n}\n\nexport type { PurgeFromCodeOptions, PurgeFromCodeResult };\nexport { purgeFromCode };\n"],"mappings":";;;;;AAyBA,MAAM,qBAA6C;CACjD,MAAM;CACN,OAAO;CACR;;;;;;;;;AAUD,SAAS,cAAc,MAAc,SAAoD;CACvF,MAAM,EAAE,aAAa,CAAC,QAAQ,QAAQ,KAAK;AAE3C,KAAI;EACF,MAAM,UAAU,IAAI,QAAQ;GAC1B,uBAAuB;GACvB,iBAAiB;IACf,KAAK,GAAG,QAAQ;IAChB,iBAAiB;IACjB,QAAQ,GAAG,aAAa;IACxB,QAAQ,GAAG,WAAW;IACtB,kBAAkB,GAAG,qBAAqB;IAC1C,iBAAiB;IACjB,QAAQ;IACT;GACF,CAAC;EAIF,MAAM,UAAU,WAAW,SAAS,CAFjB,QAAQ,iBAAiB,iBAAiB,KAEd,CAAC,aAAa,CAAC,CAAC;EAC/D,MAAM,aAAa,2BAA2B,SAAS,QAAQ,sBAAsB;EACrF,MAAM,WAAW,oBACf,SACA,YACA,QAAQ,UACR,QAAQ,uBACR,QAAQ,YACT;AAGD,OAAK,MAAM,QAAQ,YAAY;GAC7B,MAAM,MAAM,mBAAmB;AAC/B,OAAI,IACF,UAAS,KAAK,IAAI;;AAKtB,WAAS,KAAK,2BAA2B;AAEzC,SAAO;GACL,UAAU,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC;GACvC;GACA;GACD;UACM,OAAO;AACd,SAAO;GACL,UAAU,EAAE;GACZ,SAAS,EAAE;GACX,YAAY,EAAE;GACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU;GACjD"}
@@ -1,11 +1,10 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
2
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
3
3
  let node_fs = require("node:fs");
4
- node_fs = require_runtime.__toESM(node_fs);
4
+ node_fs = require_runtime.__toESM(node_fs, 1);
5
5
  let node_path = require("node:path");
6
- node_path = require_runtime.__toESM(node_path);
6
+ node_path = require_runtime.__toESM(node_path, 1);
7
7
  let ts_morph = require("ts-morph");
8
-
9
8
  //#region src/purger/optimized/ast/expressions.ts
10
9
  const importedSourceProject = new ts_morph.Project({ useInMemoryFileSystem: true });
11
10
  const importedSourceFileCache = /* @__PURE__ */ new Map();
@@ -336,6 +335,5 @@ const extractLiteralValuesFromType = (node) => {
336
335
  else if (nodeType.isStringLiteral()) values.push(nodeType.getLiteralValue());
337
336
  return values;
338
337
  };
339
-
340
338
  //#endregion
341
- exports.extractStringLiterals = extractStringLiterals;
339
+ exports.extractStringLiterals = extractStringLiterals;
@@ -2,7 +2,6 @@
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { Node, Project, SyntaxKind, ts } from "ts-morph";
5
-
6
5
  //#region src/purger/optimized/ast/expressions.ts
7
6
  const importedSourceProject = new Project({ useInMemoryFileSystem: true });
8
7
  const importedSourceFileCache = /* @__PURE__ */ new Map();
@@ -333,7 +332,7 @@ const extractLiteralValuesFromType = (node) => {
333
332
  else if (nodeType.isStringLiteral()) values.push(nodeType.getLiteralValue());
334
333
  return values;
335
334
  };
336
-
337
335
  //#endregion
338
336
  export { extractStringLiterals };
337
+
339
338
  //# sourceMappingURL=expressions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.js","names":[],"sources":["../../../../src/purger/optimized/ast/expressions.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { Identifier } from 'ts-morph';\nimport { Node, Project, SyntaxKind, ts } from 'ts-morph';\n\nconst importedSourceProject = new Project({ useInMemoryFileSystem: true });\nconst importedSourceFileCache = new Map<string, ReturnType<Project['createSourceFile']>>();\nconst tsConfigPathCache = new Map<string, string | null>();\nconst compilerOptionsCache = new Map<string, ts.CompilerOptions | null>();\nconst hasImportQuery = (moduleSpecifier: string): boolean => moduleSpecifier.includes('?');\n\nconst getLocalDefinitionNodes = (node: Node): Node[] => {\n if (!Node.isIdentifier(node)) {\n return [];\n }\n\n const name = node.getText();\n const nodeStart = node.getStart();\n const sourceFile = node.getSourceFile();\n\n const matches = [\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.VariableDeclaration)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.Parameter)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.BindingElement)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getFunctions()\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ];\n\n return matches.sort((left, right) => right.getStart() - left.getStart()).slice(0, 1);\n};\n\nconst getDefinitionNodesSafe = (node: Identifier): Node[] => {\n try {\n return node.getDefinitionNodes();\n } catch {\n return getLocalDefinitionNodes(node);\n }\n};\n\nconst isExistingFile = (candidate: string): boolean =>\n fs.existsSync(candidate) && fs.statSync(candidate).isFile();\n\nconst resolveRelativeImportPath = (\n sourceFilePath: string,\n moduleSpecifier: string,\n): string | null => {\n if (\n !path.isAbsolute(sourceFilePath) ||\n !moduleSpecifier.startsWith('.') ||\n hasImportQuery(moduleSpecifier)\n ) {\n return null;\n }\n\n const basePath = path.resolve(path.dirname(sourceFilePath), moduleSpecifier);\n const candidates = [\n basePath,\n `${basePath}.ts`,\n `${basePath}.tsx`,\n `${basePath}.mjs`,\n `${basePath}.cjs`,\n `${basePath}.js`,\n `${basePath}.jsx`,\n path.join(basePath, 'index.ts'),\n path.join(basePath, 'index.tsx'),\n path.join(basePath, 'index.mjs'),\n path.join(basePath, 'index.cjs'),\n path.join(basePath, 'index.js'),\n path.join(basePath, 'index.jsx'),\n ];\n\n return candidates.find((candidate) => isExistingFile(candidate)) ?? null;\n};\n\nconst findNearestTypeScriptConfig = (sourceFilePath: string): string | null => {\n const sourceDir = path.dirname(sourceFilePath);\n const cached = tsConfigPathCache.get(sourceDir);\n\n if (cached !== undefined) {\n return cached;\n }\n\n let currentDir = sourceDir;\n\n while (true) {\n const tsConfigPath = path.join(currentDir, 'tsconfig.json');\n if (isExistingFile(tsConfigPath)) {\n tsConfigPathCache.set(sourceDir, tsConfigPath);\n return tsConfigPath;\n }\n\n const jsConfigPath = path.join(currentDir, 'jsconfig.json');\n if (isExistingFile(jsConfigPath)) {\n tsConfigPathCache.set(sourceDir, jsConfigPath);\n return jsConfigPath;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n tsConfigPathCache.set(sourceDir, null);\n return null;\n }\n\n currentDir = parentDir;\n }\n};\n\nconst getCompilerOptionsForSourceFile = (sourceFilePath: string): ts.CompilerOptions | null => {\n const configPath = findNearestTypeScriptConfig(sourceFilePath);\n if (!configPath) {\n return null;\n }\n\n const cached = compilerOptionsCache.get(configPath);\n if (cached !== undefined) {\n return cached;\n }\n\n const readResult = ts.readConfigFile(configPath, ts.sys.readFile);\n if (readResult.error) {\n compilerOptionsCache.set(configPath, null);\n return null;\n }\n\n const parsed = ts.parseJsonConfigFileContent(readResult.config, ts.sys, path.dirname(configPath));\n\n const compilerOptions =\n parsed.options.paths && !parsed.options.baseUrl\n ? { ...parsed.options, baseUrl: path.dirname(configPath) }\n : parsed.options;\n\n compilerOptionsCache.set(configPath, compilerOptions);\n return compilerOptions;\n};\n\nconst resolveConfigImportPath = (\n sourceFilePath: string,\n moduleSpecifier: string,\n): string | null => {\n if (hasImportQuery(moduleSpecifier)) {\n return null;\n }\n\n const compilerOptions = getCompilerOptionsForSourceFile(sourceFilePath);\n if (!compilerOptions) {\n return null;\n }\n\n const resolvedModule = ts.resolveModuleName(\n moduleSpecifier,\n sourceFilePath,\n compilerOptions,\n ts.sys,\n ).resolvedModule;\n\n if (!resolvedModule) {\n return null;\n }\n\n return isExistingFile(resolvedModule.resolvedFileName) ? resolvedModule.resolvedFileName : null;\n};\n\nconst resolveImportPath = (sourceFilePath: string, moduleSpecifier: string): string | null =>\n moduleSpecifier.startsWith('.')\n ? resolveRelativeImportPath(sourceFilePath, moduleSpecifier)\n : resolveConfigImportPath(sourceFilePath, moduleSpecifier);\n\nconst getImportedSourceFile = (filePath: string) => {\n const cached = importedSourceFileCache.get(filePath);\n if (cached) {\n return cached;\n }\n\n if (!fs.existsSync(filePath)) {\n return null;\n }\n\n const sourceFile = importedSourceProject.createSourceFile(\n filePath,\n fs.readFileSync(filePath, 'utf-8'),\n {\n overwrite: true,\n },\n );\n importedSourceFileCache.set(filePath, sourceFile);\n return sourceFile;\n};\n\nconst extractImportedIdentifierValues = (node: Node, visited: Set<Node>): string[] => {\n if (!Node.isIdentifier(node)) {\n return [];\n }\n\n const sourceFile = node.getSourceFile();\n const sourceFilePath = sourceFile.getFilePath();\n const importMatch = sourceFile\n .getImportDeclarations()\n .find((importDecl) =>\n importDecl\n .getNamedImports()\n .some(\n (namedImport) =>\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === node.getText(),\n ),\n );\n\n if (!importMatch) {\n return [];\n }\n\n const namedImport = importMatch\n .getNamedImports()\n .find(\n (candidate) =>\n (candidate.getAliasNode()?.getText() ?? candidate.getName()) === node.getText(),\n );\n\n if (!namedImport) {\n return [];\n }\n\n const resolvedPath = resolveImportPath(sourceFilePath, importMatch.getModuleSpecifierValue());\n if (!resolvedPath) {\n return [];\n }\n\n const importedSourceFile = getImportedSourceFile(resolvedPath);\n if (!importedSourceFile) {\n return [];\n }\n\n const declaration = importedSourceFile.getVariableDeclaration(namedImport.getName());\n const initializer = declaration?.getInitializer();\n return initializer ? extractStringLiterals(initializer, visited) : [];\n};\n\n/**\n * Extracts string literal values from an expression.\n *\n * Handles:\n * - Direct string literals: 'value'\n * - Ternary expressions: condition ? 'a' : 'b' -> ['a', 'b']\n * - Variable references: traces back to initializer\n * - Logical expressions: a || 'fallback', a ?? 'default'\n * - Function calls: traces to return statements\n * - Template literals: `value`\n * - As expressions: value as Type\n *\n * @param node The expression node to extract values from\n * @param visited Set of visited nodes to prevent infinite recursion\n * @returns Array of extracted string literal values\n */\nconst extractStringLiterals = (node: Node, visited: Set<Node> = new Set()): string[] => {\n if (visited.has(node)) {\n return [];\n }\n visited.add(node);\n\n const directValues = extractDirectLiteralValues(node);\n if (directValues) {\n return directValues;\n }\n\n const templateValues = extractTemplateExpressionValues(node, visited);\n if (templateValues) {\n return templateValues;\n }\n\n // Ternary/conditional expression: condition ? 'a' : 'b'\n if (Node.isConditionalExpression(node)) {\n return [\n ...extractStringLiterals(node.getWhenTrue(), visited),\n ...extractStringLiterals(node.getWhenFalse(), visited),\n ];\n }\n\n const binaryValues = extractBinaryExpressionValues(node, visited);\n if (binaryValues) {\n return binaryValues;\n }\n\n const wrappedExpressionValues = extractWrappedExpressionValues(node, visited);\n if (wrappedExpressionValues) {\n return wrappedExpressionValues;\n }\n\n const propertyAccessValues = extractPropertyAccessValues(node, visited);\n if (propertyAccessValues) {\n return propertyAccessValues;\n }\n\n const elementAccessValues = extractElementAccessValues(node);\n if (elementAccessValues) {\n return elementAccessValues;\n }\n\n const callExpressionValues = extractCallExpressionValues(node, visited);\n if (callExpressionValues) {\n return callExpressionValues;\n }\n\n const identifierValues = extractIdentifierValues(node, visited);\n if (identifierValues) {\n return identifierValues;\n }\n\n return [];\n};\n\nconst extractDirectLiteralValues = (node: Node): string[] | null => {\n if (Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)) {\n return [node.getLiteralValue()];\n }\n\n return null;\n};\n\nconst extractTemplateExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isTemplateExpression(node)) {\n return null;\n }\n\n const parts: string[][] = [[node.getHead().getLiteralText()]];\n\n node.getTemplateSpans().forEach((span) => {\n const exprValues = extractStringLiterals(span.getExpression(), visited);\n const literalText = span.getLiteral().getLiteralText();\n parts.push(\n exprValues.length > 0\n ? exprValues.map((value) => `${value}${literalText}`)\n : ['', literalText],\n );\n });\n\n return parts\n .reduce<\n string[]\n >((acc, segment) => acc.flatMap((base) => segment.map((frag) => `${base}${frag}`)), [''])\n .filter((value) => value.length > 0);\n};\n\nconst extractBinaryExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isBinaryExpression(node)) {\n return null;\n }\n\n const operator = node.getOperatorToken().getText();\n if (operator === '+') {\n const left = extractStringLiterals(node.getLeft(), visited);\n const right = extractStringLiterals(node.getRight(), visited);\n const combined = left.flatMap((l) => right.map((r) => `${l}${r}`));\n return combined.length > 0 ? combined : [];\n }\n\n if (operator === '||' || operator === '??') {\n return [\n ...extractStringLiterals(node.getLeft(), visited),\n ...extractStringLiterals(node.getRight(), visited),\n ];\n }\n\n return [];\n};\n\nconst extractWrappedExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (Node.isParenthesizedExpression(node) || Node.isAsExpression(node)) {\n return extractStringLiterals(node.getExpression(), visited);\n }\n\n return null;\n};\n\nconst extractPropertyAccessValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isPropertyAccessExpression(node)) {\n return null;\n }\n\n const typeValues = extractLiteralValuesFromType(node);\n if (typeValues.length > 0) {\n return typeValues;\n }\n\n const propertyName = node.getName();\n return extractObjectValues(node.getExpression(), visited)\n .filter(\n (value): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && propertyName in value,\n )\n .map((value) => value[propertyName])\n .filter((value): value is string => typeof value === 'string');\n};\n\nconst extractElementAccessValues = (node: Node): string[] | null => {\n if (!Node.isElementAccessExpression(node)) {\n return null;\n }\n\n return extractLiteralValuesFromType(node);\n};\n\nconst extractCallExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isCallExpression(node)) {\n return null;\n }\n\n const expression = node.getExpression();\n\n const fromDefinitions = Node.isIdentifier(expression)\n ? getDefinitionNodesSafe(expression).flatMap((definition) => {\n if (Node.isFunctionDeclaration(definition)) {\n return definition\n .getDescendantsOfKind(SyntaxKind.ReturnStatement)\n .flatMap((returnStmt) => {\n const expression = returnStmt.getExpression();\n return expression ? extractStringLiterals(expression, visited) : [];\n });\n }\n\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n return initializer ? extractFromFunctionLike(initializer, visited) : [];\n }\n\n return [];\n })\n : [];\n\n const fromArguments = node.getArguments().flatMap((arg) => extractStringLiterals(arg, visited));\n\n return [...fromDefinitions, ...fromArguments];\n};\n\nconst extractArrayElementValues = (node: Node, visited: Set<Node>): string[] => {\n if (Node.isArrayLiteralExpression(node)) {\n return node\n .getElements()\n .flatMap((element) => extractStringLiterals(element, visited))\n .filter((value, index, values) => values.indexOf(value) === index);\n }\n\n if (Node.isParenthesizedExpression(node)) {\n return extractArrayElementValues(node.getExpression(), visited);\n }\n\n if (Node.isAsExpression(node) || Node.isTypeAssertion(node) || Node.isSatisfiesExpression(node)) {\n return extractArrayElementValues(node.getExpression(), visited);\n }\n\n if (Node.isIdentifier(node)) {\n return node\n .getDefinitionNodes()\n .flatMap((definition) => {\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n return initializer ? extractArrayElementValues(initializer, visited) : [];\n }\n\n return [];\n })\n .filter((value, index, values) => values.indexOf(value) === index);\n }\n\n return [];\n};\n\nconst extractMappedParameterValues = (definition: Node, visited: Set<Node>): string[] => {\n if (!Node.isParameterDeclaration(definition)) {\n return [];\n }\n\n const callback = definition.getParentIfKind(SyntaxKind.ArrowFunction);\n if (!callback) {\n return [];\n }\n\n const callExpression = callback.getParentIfKind(SyntaxKind.CallExpression);\n if (!callExpression) {\n return [];\n }\n\n const expression = callExpression.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) {\n return [];\n }\n\n if (!['map', 'flatMap'].includes(expression.getName())) {\n return [];\n }\n\n const parameterIndex = callback\n .getParameters()\n .findIndex(\n (parameter) => parameter.getNameNode().getText() === definition.getNameNode().getText(),\n );\n\n if (parameterIndex !== 0) {\n return [];\n }\n\n return extractArrayElementValues(expression.getExpression(), visited);\n};\n\nconst extractIdentifierValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isIdentifier(node)) {\n return null;\n }\n\n const values = getDefinitionNodesSafe(node).flatMap((definition) => {\n const mappedParameterValues = extractMappedParameterValues(definition, visited);\n if (mappedParameterValues.length > 0) {\n return mappedParameterValues;\n }\n\n if (\n Node.isVariableDeclaration(definition) ||\n Node.isParameterDeclaration(definition) ||\n Node.isBindingElement(definition)\n ) {\n const initializer = definition.getInitializer();\n return initializer ? extractStringLiterals(initializer, visited) : [];\n }\n\n return [];\n });\n\n if (values.length > 0) {\n return values;\n }\n\n const importedValues = extractImportedIdentifierValues(node, visited);\n if (importedValues.length > 0) {\n return importedValues;\n }\n\n return extractLiteralValuesFromType(node);\n};\n\n/**\n * Extract string literals from arrow functions or function expressions\n */\nconst extractFromFunctionLike = (node: Node, visited: Set<Node>): string[] => {\n const values: string[] = [];\n\n if (Node.isArrowFunction(node)) {\n const body = node.getBody();\n if (Node.isBlock(body)) {\n body.getDescendantsOfKind(SyntaxKind.ReturnStatement).forEach((returnStmt) => {\n const returnExpr = returnStmt.getExpression();\n if (returnExpr) {\n values.push(...extractStringLiterals(returnExpr, visited));\n }\n });\n } else {\n values.push(...extractStringLiterals(body, visited));\n }\n } else if (Node.isFunctionExpression(node)) {\n node.getDescendantsOfKind(SyntaxKind.ReturnStatement).forEach((returnStmt) => {\n const returnExpr = returnStmt.getExpression();\n if (returnExpr) {\n values.push(...extractStringLiterals(returnExpr, visited));\n }\n });\n }\n\n return values;\n};\n\n/**\n * Extract object literal values from an expression.\n * Returns an array of all possible object values (for union types or indexed access).\n */\nconst extractObjectValues = (node: Node, visited: Set<Node>): unknown[] => {\n if (visited.has(node)) {\n return [];\n }\n visited.add(node);\n\n const values: unknown[] = [];\n\n // Object literal expression\n if (Node.isObjectLiteralExpression(node)) {\n const obj: Record<string, unknown> = {};\n node.getProperties().forEach((prop) => {\n if (Node.isPropertyAssignment(prop)) {\n const name = prop.getName();\n const init = prop.getInitializer();\n if (init && Node.isStringLiteral(init)) {\n obj[name] = init.getLiteralValue();\n } else if (init && Node.isObjectLiteralExpression(init)) {\n const nestedValues = extractObjectValues(init, visited);\n if (nestedValues.length > 0) {\n obj[name] = nestedValues[0];\n }\n }\n }\n });\n values.push(obj);\n return values;\n }\n\n // Identifier - trace to initializer\n if (Node.isIdentifier(node)) {\n getDefinitionNodesSafe(node).forEach((definition) => {\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n if (initializer) {\n // Handle 'as const' assertion\n if (Node.isAsExpression(initializer)) {\n const inner = initializer.getExpression();\n values.push(...extractObjectValues(inner, visited));\n } else {\n values.push(...extractObjectValues(initializer, visited));\n }\n }\n }\n });\n return values;\n }\n\n // Element access - return all values from the object\n if (Node.isElementAccessExpression(node)) {\n const expression = node.getExpression();\n const baseObjects = extractObjectValues(expression, visited);\n\n // For indexed access, return all possible values\n baseObjects.forEach((obj) => {\n if (typeof obj === 'object' && obj !== null) {\n Object.values(obj).forEach((value) => values.push(value));\n }\n });\n return values;\n }\n\n return values;\n};\n\n/**\n * Extract literal values from a TypeScript type (for union types like 'brand' | 'secondary')\n */\nexport const extractLiteralValuesFromType = (node: Node): string[] => {\n const values: string[] = [];\n const nodeType = node.getType();\n\n if (nodeType.isUnion()) {\n nodeType.getUnionTypes().forEach((unionMember) => {\n if (unionMember.isStringLiteral()) {\n values.push(unionMember.getLiteralValue() as string);\n }\n });\n } else if (nodeType.isStringLiteral()) {\n values.push(nodeType.getLiteralValue() as string);\n }\n\n return values;\n};\n\nexport { extractStringLiterals };\n"],"mappings":"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"}
1
+ {"version":3,"file":"expressions.js","names":[],"sources":["../../../../src/purger/optimized/ast/expressions.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { Identifier } from 'ts-morph';\nimport { Node, Project, SyntaxKind, ts } from 'ts-morph';\n\nconst importedSourceProject = new Project({ useInMemoryFileSystem: true });\nconst importedSourceFileCache = new Map<string, ReturnType<Project['createSourceFile']>>();\nconst tsConfigPathCache = new Map<string, string | null>();\nconst compilerOptionsCache = new Map<string, ts.CompilerOptions | null>();\nconst hasImportQuery = (moduleSpecifier: string): boolean => moduleSpecifier.includes('?');\n\nconst getLocalDefinitionNodes = (node: Node): Node[] => {\n if (!Node.isIdentifier(node)) {\n return [];\n }\n\n const name = node.getText();\n const nodeStart = node.getStart();\n const sourceFile = node.getSourceFile();\n\n const matches = [\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.VariableDeclaration)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.Parameter)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getDescendantsOfKind(SyntaxKind.BindingElement)\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ...sourceFile\n .getFunctions()\n .filter((definition) => definition.getName() === name && definition.getStart() <= nodeStart),\n ];\n\n return matches.sort((left, right) => right.getStart() - left.getStart()).slice(0, 1);\n};\n\nconst getDefinitionNodesSafe = (node: Identifier): Node[] => {\n try {\n return node.getDefinitionNodes();\n } catch {\n return getLocalDefinitionNodes(node);\n }\n};\n\nconst isExistingFile = (candidate: string): boolean =>\n fs.existsSync(candidate) && fs.statSync(candidate).isFile();\n\nconst resolveRelativeImportPath = (\n sourceFilePath: string,\n moduleSpecifier: string,\n): string | null => {\n if (\n !path.isAbsolute(sourceFilePath) ||\n !moduleSpecifier.startsWith('.') ||\n hasImportQuery(moduleSpecifier)\n ) {\n return null;\n }\n\n const basePath = path.resolve(path.dirname(sourceFilePath), moduleSpecifier);\n const candidates = [\n basePath,\n `${basePath}.ts`,\n `${basePath}.tsx`,\n `${basePath}.mjs`,\n `${basePath}.cjs`,\n `${basePath}.js`,\n `${basePath}.jsx`,\n path.join(basePath, 'index.ts'),\n path.join(basePath, 'index.tsx'),\n path.join(basePath, 'index.mjs'),\n path.join(basePath, 'index.cjs'),\n path.join(basePath, 'index.js'),\n path.join(basePath, 'index.jsx'),\n ];\n\n return candidates.find((candidate) => isExistingFile(candidate)) ?? null;\n};\n\nconst findNearestTypeScriptConfig = (sourceFilePath: string): string | null => {\n const sourceDir = path.dirname(sourceFilePath);\n const cached = tsConfigPathCache.get(sourceDir);\n\n if (cached !== undefined) {\n return cached;\n }\n\n let currentDir = sourceDir;\n\n while (true) {\n const tsConfigPath = path.join(currentDir, 'tsconfig.json');\n if (isExistingFile(tsConfigPath)) {\n tsConfigPathCache.set(sourceDir, tsConfigPath);\n return tsConfigPath;\n }\n\n const jsConfigPath = path.join(currentDir, 'jsconfig.json');\n if (isExistingFile(jsConfigPath)) {\n tsConfigPathCache.set(sourceDir, jsConfigPath);\n return jsConfigPath;\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n tsConfigPathCache.set(sourceDir, null);\n return null;\n }\n\n currentDir = parentDir;\n }\n};\n\nconst getCompilerOptionsForSourceFile = (sourceFilePath: string): ts.CompilerOptions | null => {\n const configPath = findNearestTypeScriptConfig(sourceFilePath);\n if (!configPath) {\n return null;\n }\n\n const cached = compilerOptionsCache.get(configPath);\n if (cached !== undefined) {\n return cached;\n }\n\n const readResult = ts.readConfigFile(configPath, ts.sys.readFile);\n if (readResult.error) {\n compilerOptionsCache.set(configPath, null);\n return null;\n }\n\n const parsed = ts.parseJsonConfigFileContent(readResult.config, ts.sys, path.dirname(configPath));\n\n const compilerOptions =\n parsed.options.paths && !parsed.options.baseUrl\n ? { ...parsed.options, baseUrl: path.dirname(configPath) }\n : parsed.options;\n\n compilerOptionsCache.set(configPath, compilerOptions);\n return compilerOptions;\n};\n\nconst resolveConfigImportPath = (\n sourceFilePath: string,\n moduleSpecifier: string,\n): string | null => {\n if (hasImportQuery(moduleSpecifier)) {\n return null;\n }\n\n const compilerOptions = getCompilerOptionsForSourceFile(sourceFilePath);\n if (!compilerOptions) {\n return null;\n }\n\n const resolvedModule = ts.resolveModuleName(\n moduleSpecifier,\n sourceFilePath,\n compilerOptions,\n ts.sys,\n ).resolvedModule;\n\n if (!resolvedModule) {\n return null;\n }\n\n return isExistingFile(resolvedModule.resolvedFileName) ? resolvedModule.resolvedFileName : null;\n};\n\nconst resolveImportPath = (sourceFilePath: string, moduleSpecifier: string): string | null =>\n moduleSpecifier.startsWith('.')\n ? resolveRelativeImportPath(sourceFilePath, moduleSpecifier)\n : resolveConfigImportPath(sourceFilePath, moduleSpecifier);\n\nconst getImportedSourceFile = (filePath: string) => {\n const cached = importedSourceFileCache.get(filePath);\n if (cached) {\n return cached;\n }\n\n if (!fs.existsSync(filePath)) {\n return null;\n }\n\n const sourceFile = importedSourceProject.createSourceFile(\n filePath,\n fs.readFileSync(filePath, 'utf-8'),\n {\n overwrite: true,\n },\n );\n importedSourceFileCache.set(filePath, sourceFile);\n return sourceFile;\n};\n\nconst extractImportedIdentifierValues = (node: Node, visited: Set<Node>): string[] => {\n if (!Node.isIdentifier(node)) {\n return [];\n }\n\n const sourceFile = node.getSourceFile();\n const sourceFilePath = sourceFile.getFilePath();\n const importMatch = sourceFile\n .getImportDeclarations()\n .find((importDecl) =>\n importDecl\n .getNamedImports()\n .some(\n (namedImport) =>\n (namedImport.getAliasNode()?.getText() ?? namedImport.getName()) === node.getText(),\n ),\n );\n\n if (!importMatch) {\n return [];\n }\n\n const namedImport = importMatch\n .getNamedImports()\n .find(\n (candidate) =>\n (candidate.getAliasNode()?.getText() ?? candidate.getName()) === node.getText(),\n );\n\n if (!namedImport) {\n return [];\n }\n\n const resolvedPath = resolveImportPath(sourceFilePath, importMatch.getModuleSpecifierValue());\n if (!resolvedPath) {\n return [];\n }\n\n const importedSourceFile = getImportedSourceFile(resolvedPath);\n if (!importedSourceFile) {\n return [];\n }\n\n const declaration = importedSourceFile.getVariableDeclaration(namedImport.getName());\n const initializer = declaration?.getInitializer();\n return initializer ? extractStringLiterals(initializer, visited) : [];\n};\n\n/**\n * Extracts string literal values from an expression.\n *\n * Handles:\n * - Direct string literals: 'value'\n * - Ternary expressions: condition ? 'a' : 'b' -> ['a', 'b']\n * - Variable references: traces back to initializer\n * - Logical expressions: a || 'fallback', a ?? 'default'\n * - Function calls: traces to return statements\n * - Template literals: `value`\n * - As expressions: value as Type\n *\n * @param node The expression node to extract values from\n * @param visited Set of visited nodes to prevent infinite recursion\n * @returns Array of extracted string literal values\n */\nconst extractStringLiterals = (node: Node, visited: Set<Node> = new Set()): string[] => {\n if (visited.has(node)) {\n return [];\n }\n visited.add(node);\n\n const directValues = extractDirectLiteralValues(node);\n if (directValues) {\n return directValues;\n }\n\n const templateValues = extractTemplateExpressionValues(node, visited);\n if (templateValues) {\n return templateValues;\n }\n\n // Ternary/conditional expression: condition ? 'a' : 'b'\n if (Node.isConditionalExpression(node)) {\n return [\n ...extractStringLiterals(node.getWhenTrue(), visited),\n ...extractStringLiterals(node.getWhenFalse(), visited),\n ];\n }\n\n const binaryValues = extractBinaryExpressionValues(node, visited);\n if (binaryValues) {\n return binaryValues;\n }\n\n const wrappedExpressionValues = extractWrappedExpressionValues(node, visited);\n if (wrappedExpressionValues) {\n return wrappedExpressionValues;\n }\n\n const propertyAccessValues = extractPropertyAccessValues(node, visited);\n if (propertyAccessValues) {\n return propertyAccessValues;\n }\n\n const elementAccessValues = extractElementAccessValues(node);\n if (elementAccessValues) {\n return elementAccessValues;\n }\n\n const callExpressionValues = extractCallExpressionValues(node, visited);\n if (callExpressionValues) {\n return callExpressionValues;\n }\n\n const identifierValues = extractIdentifierValues(node, visited);\n if (identifierValues) {\n return identifierValues;\n }\n\n return [];\n};\n\nconst extractDirectLiteralValues = (node: Node): string[] | null => {\n if (Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)) {\n return [node.getLiteralValue()];\n }\n\n return null;\n};\n\nconst extractTemplateExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isTemplateExpression(node)) {\n return null;\n }\n\n const parts: string[][] = [[node.getHead().getLiteralText()]];\n\n node.getTemplateSpans().forEach((span) => {\n const exprValues = extractStringLiterals(span.getExpression(), visited);\n const literalText = span.getLiteral().getLiteralText();\n parts.push(\n exprValues.length > 0\n ? exprValues.map((value) => `${value}${literalText}`)\n : ['', literalText],\n );\n });\n\n return parts\n .reduce<\n string[]\n >((acc, segment) => acc.flatMap((base) => segment.map((frag) => `${base}${frag}`)), [''])\n .filter((value) => value.length > 0);\n};\n\nconst extractBinaryExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isBinaryExpression(node)) {\n return null;\n }\n\n const operator = node.getOperatorToken().getText();\n if (operator === '+') {\n const left = extractStringLiterals(node.getLeft(), visited);\n const right = extractStringLiterals(node.getRight(), visited);\n const combined = left.flatMap((l) => right.map((r) => `${l}${r}`));\n return combined.length > 0 ? combined : [];\n }\n\n if (operator === '||' || operator === '??') {\n return [\n ...extractStringLiterals(node.getLeft(), visited),\n ...extractStringLiterals(node.getRight(), visited),\n ];\n }\n\n return [];\n};\n\nconst extractWrappedExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (Node.isParenthesizedExpression(node) || Node.isAsExpression(node)) {\n return extractStringLiterals(node.getExpression(), visited);\n }\n\n return null;\n};\n\nconst extractPropertyAccessValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isPropertyAccessExpression(node)) {\n return null;\n }\n\n const typeValues = extractLiteralValuesFromType(node);\n if (typeValues.length > 0) {\n return typeValues;\n }\n\n const propertyName = node.getName();\n return extractObjectValues(node.getExpression(), visited)\n .filter(\n (value): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && propertyName in value,\n )\n .map((value) => value[propertyName])\n .filter((value): value is string => typeof value === 'string');\n};\n\nconst extractElementAccessValues = (node: Node): string[] | null => {\n if (!Node.isElementAccessExpression(node)) {\n return null;\n }\n\n return extractLiteralValuesFromType(node);\n};\n\nconst extractCallExpressionValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isCallExpression(node)) {\n return null;\n }\n\n const expression = node.getExpression();\n\n const fromDefinitions = Node.isIdentifier(expression)\n ? getDefinitionNodesSafe(expression).flatMap((definition) => {\n if (Node.isFunctionDeclaration(definition)) {\n return definition\n .getDescendantsOfKind(SyntaxKind.ReturnStatement)\n .flatMap((returnStmt) => {\n const expression = returnStmt.getExpression();\n return expression ? extractStringLiterals(expression, visited) : [];\n });\n }\n\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n return initializer ? extractFromFunctionLike(initializer, visited) : [];\n }\n\n return [];\n })\n : [];\n\n const fromArguments = node.getArguments().flatMap((arg) => extractStringLiterals(arg, visited));\n\n return [...fromDefinitions, ...fromArguments];\n};\n\nconst extractArrayElementValues = (node: Node, visited: Set<Node>): string[] => {\n if (Node.isArrayLiteralExpression(node)) {\n return node\n .getElements()\n .flatMap((element) => extractStringLiterals(element, visited))\n .filter((value, index, values) => values.indexOf(value) === index);\n }\n\n if (Node.isParenthesizedExpression(node)) {\n return extractArrayElementValues(node.getExpression(), visited);\n }\n\n if (Node.isAsExpression(node) || Node.isTypeAssertion(node) || Node.isSatisfiesExpression(node)) {\n return extractArrayElementValues(node.getExpression(), visited);\n }\n\n if (Node.isIdentifier(node)) {\n return node\n .getDefinitionNodes()\n .flatMap((definition) => {\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n return initializer ? extractArrayElementValues(initializer, visited) : [];\n }\n\n return [];\n })\n .filter((value, index, values) => values.indexOf(value) === index);\n }\n\n return [];\n};\n\nconst extractMappedParameterValues = (definition: Node, visited: Set<Node>): string[] => {\n if (!Node.isParameterDeclaration(definition)) {\n return [];\n }\n\n const callback = definition.getParentIfKind(SyntaxKind.ArrowFunction);\n if (!callback) {\n return [];\n }\n\n const callExpression = callback.getParentIfKind(SyntaxKind.CallExpression);\n if (!callExpression) {\n return [];\n }\n\n const expression = callExpression.getExpression();\n if (!Node.isPropertyAccessExpression(expression)) {\n return [];\n }\n\n if (!['map', 'flatMap'].includes(expression.getName())) {\n return [];\n }\n\n const parameterIndex = callback\n .getParameters()\n .findIndex(\n (parameter) => parameter.getNameNode().getText() === definition.getNameNode().getText(),\n );\n\n if (parameterIndex !== 0) {\n return [];\n }\n\n return extractArrayElementValues(expression.getExpression(), visited);\n};\n\nconst extractIdentifierValues = (node: Node, visited: Set<Node>): string[] | null => {\n if (!Node.isIdentifier(node)) {\n return null;\n }\n\n const values = getDefinitionNodesSafe(node).flatMap((definition) => {\n const mappedParameterValues = extractMappedParameterValues(definition, visited);\n if (mappedParameterValues.length > 0) {\n return mappedParameterValues;\n }\n\n if (\n Node.isVariableDeclaration(definition) ||\n Node.isParameterDeclaration(definition) ||\n Node.isBindingElement(definition)\n ) {\n const initializer = definition.getInitializer();\n return initializer ? extractStringLiterals(initializer, visited) : [];\n }\n\n return [];\n });\n\n if (values.length > 0) {\n return values;\n }\n\n const importedValues = extractImportedIdentifierValues(node, visited);\n if (importedValues.length > 0) {\n return importedValues;\n }\n\n return extractLiteralValuesFromType(node);\n};\n\n/**\n * Extract string literals from arrow functions or function expressions\n */\nconst extractFromFunctionLike = (node: Node, visited: Set<Node>): string[] => {\n const values: string[] = [];\n\n if (Node.isArrowFunction(node)) {\n const body = node.getBody();\n if (Node.isBlock(body)) {\n body.getDescendantsOfKind(SyntaxKind.ReturnStatement).forEach((returnStmt) => {\n const returnExpr = returnStmt.getExpression();\n if (returnExpr) {\n values.push(...extractStringLiterals(returnExpr, visited));\n }\n });\n } else {\n values.push(...extractStringLiterals(body, visited));\n }\n } else if (Node.isFunctionExpression(node)) {\n node.getDescendantsOfKind(SyntaxKind.ReturnStatement).forEach((returnStmt) => {\n const returnExpr = returnStmt.getExpression();\n if (returnExpr) {\n values.push(...extractStringLiterals(returnExpr, visited));\n }\n });\n }\n\n return values;\n};\n\n/**\n * Extract object literal values from an expression.\n * Returns an array of all possible object values (for union types or indexed access).\n */\nconst extractObjectValues = (node: Node, visited: Set<Node>): unknown[] => {\n if (visited.has(node)) {\n return [];\n }\n visited.add(node);\n\n const values: unknown[] = [];\n\n // Object literal expression\n if (Node.isObjectLiteralExpression(node)) {\n const obj: Record<string, unknown> = {};\n node.getProperties().forEach((prop) => {\n if (Node.isPropertyAssignment(prop)) {\n const name = prop.getName();\n const init = prop.getInitializer();\n if (init && Node.isStringLiteral(init)) {\n obj[name] = init.getLiteralValue();\n } else if (init && Node.isObjectLiteralExpression(init)) {\n const nestedValues = extractObjectValues(init, visited);\n if (nestedValues.length > 0) {\n obj[name] = nestedValues[0];\n }\n }\n }\n });\n values.push(obj);\n return values;\n }\n\n // Identifier - trace to initializer\n if (Node.isIdentifier(node)) {\n getDefinitionNodesSafe(node).forEach((definition) => {\n if (Node.isVariableDeclaration(definition)) {\n const initializer = definition.getInitializer();\n if (initializer) {\n // Handle 'as const' assertion\n if (Node.isAsExpression(initializer)) {\n const inner = initializer.getExpression();\n values.push(...extractObjectValues(inner, visited));\n } else {\n values.push(...extractObjectValues(initializer, visited));\n }\n }\n }\n });\n return values;\n }\n\n // Element access - return all values from the object\n if (Node.isElementAccessExpression(node)) {\n const expression = node.getExpression();\n const baseObjects = extractObjectValues(expression, visited);\n\n // For indexed access, return all possible values\n baseObjects.forEach((obj) => {\n if (typeof obj === 'object' && obj !== null) {\n Object.values(obj).forEach((value) => values.push(value));\n }\n });\n return values;\n }\n\n return values;\n};\n\n/**\n * Extract literal values from a TypeScript type (for union types like 'brand' | 'secondary')\n */\nexport const extractLiteralValuesFromType = (node: Node): string[] => {\n const values: string[] = [];\n const nodeType = node.getType();\n\n if (nodeType.isUnion()) {\n nodeType.getUnionTypes().forEach((unionMember) => {\n if (unionMember.isStringLiteral()) {\n values.push(unionMember.getLiteralValue() as string);\n }\n });\n } else if (nodeType.isStringLiteral()) {\n values.push(nodeType.getLiteralValue() as string);\n }\n\n return values;\n};\n\nexport { extractStringLiterals };\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ export { };
@@ -1,5 +1,2 @@
1
1
 
2
- import "./expressions.js";
3
- import "./jsx.js";
4
- import "./props.js";
5
- import "./spread.js";
2
+ export { };
@@ -1,7 +1,6 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
2
+ require("../../../_virtual/_rolldown/runtime.cjs");
3
3
  let ts_morph = require("ts-morph");
4
-
5
4
  //#region src/purger/optimized/ast/jsx.ts
6
5
  /**
7
6
  * Find all JSX usages of a component from its identifier
@@ -13,6 +12,5 @@ const findJsxReferences = (identifier) => {
13
12
  return [];
14
13
  }
15
14
  };
16
-
17
15
  //#endregion
18
- exports.findJsxReferences = findJsxReferences;
16
+ exports.findJsxReferences = findJsxReferences;
@@ -0,0 +1,2 @@
1
+
2
+ export { };
@@ -1,3 +1,2 @@
1
1
 
2
- import "../types.js";
3
2
  import { Node } from "ts-morph";
@@ -1,6 +1,5 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- import { Node, SyntaxKind } from "ts-morph";
3
-
2
+ import { Node } from "ts-morph";
4
3
  //#region src/purger/optimized/ast/jsx.ts
5
4
  /**
6
5
  * Find all JSX usages of a component from its identifier
@@ -12,7 +11,7 @@ const findJsxReferences = (identifier) => {
12
11
  return [];
13
12
  }
14
13
  };
15
-
16
14
  //#endregion
17
15
  export { findJsxReferences };
16
+
18
17
  //# sourceMappingURL=jsx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx.js","names":[],"sources":["../../../../src/purger/optimized/ast/jsx.ts"],"sourcesContent":["import type {\n ArrowFunction,\n CallExpression,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n JsxElement,\n JsxSelfClosingElement,\n VariableDeclaration,\n} from 'ts-morph';\nimport { Node, SyntaxKind } from 'ts-morph';\n\nimport type { JsxElementWithAttributes, ParentComponentInfo } from '../types';\n\n/**\n * Check if an expression is using React.forwardRef\n */\nexport const isForwardRefExpression = (node: Node): node is CallExpression => {\n if (!Node.isCallExpression(node)) {\n return false;\n }\n\n const expression = node.getExpression();\n\n if (Node.isIdentifier(expression) && expression.getText() === 'forwardRef') {\n return true;\n }\n\n if (Node.isPropertyAccessExpression(expression) && expression.getText() === 'React.forwardRef') {\n return true;\n }\n\n return false;\n};\n\n/**\n * Check if a node is a JSX component (PascalCase name)\n */\nexport const isJsxComponent = (\n node: Node,\n): node is VariableDeclaration | FunctionDeclaration | FunctionExpression | ArrowFunction => {\n let name: string | undefined;\n\n if (\n Node.isVariableDeclaration(node) ||\n Node.isFunctionDeclaration(node) ||\n Node.isClassDeclaration(node)\n ) {\n name = node.getName();\n } else if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n const variableDeclaration = node.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);\n name = variableDeclaration?.getName();\n }\n\n return name ? /^[A-Z]/.test(name) : false;\n};\n\n/**\n * Get the function declaration from a component, unwrapping forwardRef if needed\n */\nexport const getReactFunctionDeclaration = (\n declaration: Node,\n): ArrowFunction | FunctionDeclaration | FunctionExpression | null => {\n if (!isJsxComponent(declaration)) {\n return null;\n }\n\n if (Node.isFunctionDeclaration(declaration)) {\n return declaration;\n }\n\n if (Node.isVariableDeclaration(declaration)) {\n const initializer = declaration.getInitializer();\n if (!initializer) {\n return null;\n }\n\n if (isForwardRefExpression(initializer)) {\n const [arg] = initializer.getArguments();\n if (\n Node.isFunctionDeclaration(arg) ||\n Node.isFunctionExpression(arg) ||\n Node.isArrowFunction(arg)\n ) {\n return arg;\n }\n } else if (\n Node.isFunctionDeclaration(initializer) ||\n Node.isFunctionExpression(initializer) ||\n Node.isArrowFunction(initializer)\n ) {\n return initializer;\n }\n }\n\n return null;\n};\n\n/**\n * Get all JSX elements from a node\n */\nexport const getJsxElements = (node: Node): (JsxElement | JsxSelfClosingElement)[] => {\n return node\n .getDescendants()\n .filter((n) => Node.isJsxElement(n) || Node.isJsxSelfClosingElement(n)) as (\n | JsxElement\n | JsxSelfClosingElement\n )[];\n};\n\n/**\n * Find all JSX usages of a component from its identifier\n */\nexport const findJsxReferences = (identifier: Identifier): JsxElementWithAttributes[] => {\n try {\n return identifier\n .findReferencesAsNodes()\n .map((reference) =>\n reference.getFirstAncestor(\n (n) => Node.isJsxOpeningElement(n) || Node.isJsxSelfClosingElement(n),\n ),\n )\n .filter(\n (node): node is JsxElementWithAttributes =>\n Boolean(node) && (Node.isJsxOpeningElement(node) || Node.isJsxSelfClosingElement(node)),\n );\n } catch {\n return [];\n }\n};\n\n/**\n * Get the parent component that contains a JSX reference.\n * Returns information about the component including spread rest identifier.\n */\nexport const getParentComponentInfo = (\n reference: JsxElementWithAttributes,\n): ParentComponentInfo | undefined => {\n // Walk up to find the parent component\n const block = reference.getParentWhile((parent) => !getReactFunctionDeclaration(parent));\n if (!block) {\n return undefined;\n }\n\n const blockParent = block.getParent();\n if (!blockParent) {\n return undefined;\n }\n\n const reactComponent = getReactFunctionDeclaration(blockParent);\n if (!reactComponent) {\n return undefined;\n }\n\n // Get component name\n let componentName: string | undefined;\n const variableDeclaration = reactComponent.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);\n if (variableDeclaration) {\n componentName = variableDeclaration.getName();\n } else if (Node.isFunctionDeclaration(reactComponent)) {\n componentName = reactComponent.getName();\n }\n\n if (!componentName) {\n return undefined;\n }\n\n // Extract parameter info\n let spreadRestIdentifier: string | undefined;\n let paramIdentifier: string | undefined;\n\n reactComponent.getParameters().forEach((parameter) => {\n const objectBindingPattern = parameter.getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0];\n const identifier = parameter.getChildrenOfKind(SyntaxKind.Identifier)[0];\n\n if (objectBindingPattern) {\n const dotDotToken = objectBindingPattern.getFirstDescendantByKind(SyntaxKind.DotDotDotToken);\n if (dotDotToken) {\n spreadRestIdentifier = dotDotToken\n .getParent()\n ?.getFirstChildByKindOrThrow(SyntaxKind.Identifier)\n .getText();\n }\n } else if (identifier) {\n paramIdentifier = identifier.getText();\n }\n });\n\n return { componentName, spreadRestIdentifier, paramIdentifier };\n};\n"],"mappings":";;;;;;;AAiHA,MAAa,qBAAqB,eAAuD;AACvF,KAAI;AACF,SAAO,WACJ,uBAAuB,CACvB,KAAK,cACJ,UAAU,kBACP,MAAM,KAAK,oBAAoB,EAAE,IAAI,KAAK,wBAAwB,EAAE,CACtE,CACF,CACA,QACE,SACC,QAAQ,KAAK,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,wBAAwB,KAAK,EACzF;SACG;AACN,SAAO,EAAE"}
1
+ {"version":3,"file":"jsx.js","names":[],"sources":["../../../../src/purger/optimized/ast/jsx.ts"],"sourcesContent":["import type {\n ArrowFunction,\n CallExpression,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n JsxElement,\n JsxSelfClosingElement,\n VariableDeclaration,\n} from 'ts-morph';\nimport { Node, SyntaxKind } from 'ts-morph';\n\nimport type { JsxElementWithAttributes, ParentComponentInfo } from '../types';\n\n/**\n * Check if an expression is using React.forwardRef\n */\nexport const isForwardRefExpression = (node: Node): node is CallExpression => {\n if (!Node.isCallExpression(node)) {\n return false;\n }\n\n const expression = node.getExpression();\n\n if (Node.isIdentifier(expression) && expression.getText() === 'forwardRef') {\n return true;\n }\n\n if (Node.isPropertyAccessExpression(expression) && expression.getText() === 'React.forwardRef') {\n return true;\n }\n\n return false;\n};\n\n/**\n * Check if a node is a JSX component (PascalCase name)\n */\nexport const isJsxComponent = (\n node: Node,\n): node is VariableDeclaration | FunctionDeclaration | FunctionExpression | ArrowFunction => {\n let name: string | undefined;\n\n if (\n Node.isVariableDeclaration(node) ||\n Node.isFunctionDeclaration(node) ||\n Node.isClassDeclaration(node)\n ) {\n name = node.getName();\n } else if (Node.isFunctionExpression(node) || Node.isArrowFunction(node)) {\n const variableDeclaration = node.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);\n name = variableDeclaration?.getName();\n }\n\n return name ? /^[A-Z]/.test(name) : false;\n};\n\n/**\n * Get the function declaration from a component, unwrapping forwardRef if needed\n */\nexport const getReactFunctionDeclaration = (\n declaration: Node,\n): ArrowFunction | FunctionDeclaration | FunctionExpression | null => {\n if (!isJsxComponent(declaration)) {\n return null;\n }\n\n if (Node.isFunctionDeclaration(declaration)) {\n return declaration;\n }\n\n if (Node.isVariableDeclaration(declaration)) {\n const initializer = declaration.getInitializer();\n if (!initializer) {\n return null;\n }\n\n if (isForwardRefExpression(initializer)) {\n const [arg] = initializer.getArguments();\n if (\n Node.isFunctionDeclaration(arg) ||\n Node.isFunctionExpression(arg) ||\n Node.isArrowFunction(arg)\n ) {\n return arg;\n }\n } else if (\n Node.isFunctionDeclaration(initializer) ||\n Node.isFunctionExpression(initializer) ||\n Node.isArrowFunction(initializer)\n ) {\n return initializer;\n }\n }\n\n return null;\n};\n\n/**\n * Get all JSX elements from a node\n */\nexport const getJsxElements = (node: Node): (JsxElement | JsxSelfClosingElement)[] => {\n return node\n .getDescendants()\n .filter((n) => Node.isJsxElement(n) || Node.isJsxSelfClosingElement(n)) as (\n | JsxElement\n | JsxSelfClosingElement\n )[];\n};\n\n/**\n * Find all JSX usages of a component from its identifier\n */\nexport const findJsxReferences = (identifier: Identifier): JsxElementWithAttributes[] => {\n try {\n return identifier\n .findReferencesAsNodes()\n .map((reference) =>\n reference.getFirstAncestor(\n (n) => Node.isJsxOpeningElement(n) || Node.isJsxSelfClosingElement(n),\n ),\n )\n .filter(\n (node): node is JsxElementWithAttributes =>\n Boolean(node) && (Node.isJsxOpeningElement(node) || Node.isJsxSelfClosingElement(node)),\n );\n } catch {\n return [];\n }\n};\n\n/**\n * Get the parent component that contains a JSX reference.\n * Returns information about the component including spread rest identifier.\n */\nexport const getParentComponentInfo = (\n reference: JsxElementWithAttributes,\n): ParentComponentInfo | undefined => {\n // Walk up to find the parent component\n const block = reference.getParentWhile((parent) => !getReactFunctionDeclaration(parent));\n if (!block) {\n return undefined;\n }\n\n const blockParent = block.getParent();\n if (!blockParent) {\n return undefined;\n }\n\n const reactComponent = getReactFunctionDeclaration(blockParent);\n if (!reactComponent) {\n return undefined;\n }\n\n // Get component name\n let componentName: string | undefined;\n const variableDeclaration = reactComponent.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);\n if (variableDeclaration) {\n componentName = variableDeclaration.getName();\n } else if (Node.isFunctionDeclaration(reactComponent)) {\n componentName = reactComponent.getName();\n }\n\n if (!componentName) {\n return undefined;\n }\n\n // Extract parameter info\n let spreadRestIdentifier: string | undefined;\n let paramIdentifier: string | undefined;\n\n reactComponent.getParameters().forEach((parameter) => {\n const objectBindingPattern = parameter.getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0];\n const identifier = parameter.getChildrenOfKind(SyntaxKind.Identifier)[0];\n\n if (objectBindingPattern) {\n const dotDotToken = objectBindingPattern.getFirstDescendantByKind(SyntaxKind.DotDotDotToken);\n if (dotDotToken) {\n spreadRestIdentifier = dotDotToken\n .getParent()\n ?.getFirstChildByKindOrThrow(SyntaxKind.Identifier)\n .getText();\n }\n } else if (identifier) {\n paramIdentifier = identifier.getText();\n }\n });\n\n return { componentName, spreadRestIdentifier, paramIdentifier };\n};\n"],"mappings":";;;;;;AAiHA,MAAa,qBAAqB,eAAuD;AACvF,KAAI;AACF,SAAO,WACJ,uBAAuB,CACvB,KAAK,cACJ,UAAU,kBACP,MAAM,KAAK,oBAAoB,EAAE,IAAI,KAAK,wBAAwB,EAAE,CACtE,CACF,CACA,QACE,SACC,QAAQ,KAAK,KAAK,KAAK,oBAAoB,KAAK,IAAI,KAAK,wBAAwB,KAAK,EACzF;SACG;AACN,SAAO,EAAE"}
@@ -0,0 +1,2 @@
1
+
2
+ export { };
@@ -1,2 +1,2 @@
1
1
 
2
- import "../types.js";
2
+ export { };
@@ -0,0 +1,2 @@
1
+
2
+ import { Project } from "ts-morph";
@@ -1,3 +1,2 @@
1
1
 
2
- import "../types.js";
3
2
  import { Project } from "ts-morph";
@@ -0,0 +1,3 @@
1
+
2
+ import { PurgeStats } from "./types.cjs";
3
+ import { PurgeFromCodeResult, purgeFromCodeOptimized } from "./purgeFromCode.cjs";
@@ -1,6 +1,3 @@
1
1
 
2
2
  import { PurgeStats } from "./types.js";
3
- import "./purge.js";
4
- import { PurgeFromCodeResult, purgeFromCodeOptimized } from "./purgeFromCode.js";
5
- import "./ast/index.js";
6
- import "./utils/files.js";
3
+ import { PurgeFromCodeResult, purgeFromCodeOptimized } from "./purgeFromCode.js";
@@ -1,14 +1,13 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
- const require_purgeFromCode = require('./purgeFromCode.cjs');
4
- const require_entryPoints = require('../../utils/entryPoints.cjs');
5
- const require_safelist = require('./utils/safelist.cjs');
6
- const require_files = require('./utils/files.cjs');
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_purgeFromCode = require("./purgeFromCode.cjs");
4
+ const require_entryPoints = require("../../utils/entryPoints.cjs");
5
+ const require_safelist = require("./utils/safelist.cjs");
6
+ const require_files = require("./utils/files.cjs");
7
7
  let node_fs = require("node:fs");
8
- node_fs = require_runtime.__toESM(node_fs);
8
+ node_fs = require_runtime.__toESM(node_fs, 1);
9
9
  let node_path = require("node:path");
10
- node_path = require_runtime.__toESM(node_path);
11
-
10
+ node_path = require_runtime.__toESM(node_path, 1);
12
11
  //#region src/purger/optimized/purge.ts
13
12
  const warnedLocations = /* @__PURE__ */ new Set();
14
13
  /**
@@ -66,6 +65,5 @@ const purgeOptimized = async (options) => {
66
65
  stats
67
66
  };
68
67
  };
69
-
70
68
  //#endregion
71
- exports.purgeOptimized = purgeOptimized;
69
+ exports.purgeOptimized = purgeOptimized;
@@ -0,0 +1,2 @@
1
+
2
+ export { };
@@ -1,2 +1,2 @@
1
1
 
2
- import "./types.js";
2
+ export { };
@@ -5,7 +5,6 @@ import { deduplicateSafelist, getInternalSafelistClasses, getThemeAndScaleClasse
5
5
  import { scanForFiles } from "./utils/files.js";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
-
9
8
  //#region src/purger/optimized/purge.ts
10
9
  const warnedLocations = /* @__PURE__ */ new Set();
11
10
  /**
@@ -63,7 +62,7 @@ const purgeOptimized = async (options) => {
63
62
  stats
64
63
  };
65
64
  };
66
-
67
65
  //#endregion
68
66
  export { purgeOptimized };
67
+
69
68
  //# sourceMappingURL=purge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"purge.js","names":[],"sources":["../../../src/purger/optimized/purge.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { DEFAULT_ENTRY } from '../../utils/entryPoints';\nimport { purgeFromCodeOptimized } from './purgeFromCode';\nimport type { PurgeOptions, PurgeResult, PurgeStats } from './types';\nimport { scanForFiles } from './utils/files';\nimport {\n deduplicateSafelist,\n getInternalSafelistClasses,\n getThemeAndScaleClasses,\n saveSafelistToFile,\n} from './utils/safelist';\n\n// Track warned locations to avoid duplicates\nconst warnedLocations = new Set<string>();\n\n/**\n * Clear warned locations (call at start of new purge run)\n */\nexport const clearWarnings = (): void => {\n warnedLocations.clear();\n};\n\n/**\n * Main purge function - optimized version\n *\n * Uses purgeFromCodeOptimized internally to ensure consistent behavior\n * between CLI and playground.\n */\nexport const purgeOptimized = async (options: PurgeOptions): Promise<PurgeResult> => {\n const {\n entry = DEFAULT_ENTRY,\n output = 'dist/safelist.ts',\n colorModes = ['dark'], // Light mode is already in :root\n variants,\n autoVariants,\n componentData,\n } = options;\n\n const startTime = performance.now();\n clearWarnings();\n\n const workspaceDir = process.env.PWD ?? process.cwd();\n\n const files = await scanForFiles(entry);\n\n // Aggregate results from all files\n const allClasses: string[] = [];\n const allImports = new Set<string>();\n const allComponents = new Set<string>();\n\n const stats: PurgeStats = {\n filesScanned: files.length,\n timeMs: 0,\n classesGenerated: 0,\n spreadsTraced: 0,\n expressionsResolved: 0,\n };\n\n // Process each file using purgeFromCodeOptimized\n const results = await Promise.all(\n files.map(async (filePath) => {\n const code = fs.readFileSync(filePath, 'utf-8');\n return purgeFromCodeOptimized(code, {\n colorModes,\n variants,\n autoVariants,\n componentData,\n });\n }),\n );\n\n results.forEach((result) => {\n allClasses.push(...result.safelist);\n result.imports.forEach((imp) => allImports.add(imp));\n result.components.forEach((comp) => allComponents.add(comp));\n stats.spreadsTraced += result.stats.spreadsTraced;\n stats.expressionsResolved += result.stats.expressionsResolved;\n });\n\n // Add color mode classes\n allClasses.push(...getThemeAndScaleClasses(colorModes));\n allClasses.push(...getInternalSafelistClasses());\n\n const finalSafelist = deduplicateSafelist(allClasses).sort();\n\n await saveSafelistToFile(finalSafelist, path.join(workspaceDir, output));\n\n stats.timeMs = Math.round(performance.now() - startTime);\n stats.classesGenerated = finalSafelist.length;\n\n return {\n safelist: finalSafelist,\n imports: [...allImports],\n components: [...allComponents],\n stats,\n };\n};\n"],"mappings":";;;;;;;;;AAeA,MAAM,kCAAkB,IAAI,KAAa;;;;AAKzC,MAAa,sBAA4B;AACvC,iBAAgB,OAAO;;;;;;;;AASzB,MAAa,iBAAiB,OAAO,YAAgD;CACnF,MAAM,EACJ,QAAQ,eACR,SAAS,oBACT,aAAa,CAAC,OAAO,EACrB,UACA,cACA,kBACE;CAEJ,MAAM,YAAY,YAAY,KAAK;AACnC,gBAAe;CAEf,MAAM,eAAe,QAAQ,IAAI,OAAO,QAAQ,KAAK;CAErD,MAAM,QAAQ,MAAM,aAAa,MAAM;CAGvC,MAAM,aAAuB,EAAE;CAC/B,MAAM,6BAAa,IAAI,KAAa;CACpC,MAAM,gCAAgB,IAAI,KAAa;CAEvC,MAAM,QAAoB;EACxB,cAAc,MAAM;EACpB,QAAQ;EACR,kBAAkB;EAClB,eAAe;EACf,qBAAqB;EACtB;AAeD,EAZgB,MAAM,QAAQ,IAC5B,MAAM,IAAI,OAAO,aAAa;AAE5B,SAAO,uBADM,GAAG,aAAa,UAAU,QAAQ,EACX;GAClC;GACA;GACA;GACA;GACD,CAAC;GACF,CACH,EAEO,SAAS,WAAW;AAC1B,aAAW,KAAK,GAAG,OAAO,SAAS;AACnC,SAAO,QAAQ,SAAS,QAAQ,WAAW,IAAI,IAAI,CAAC;AACpD,SAAO,WAAW,SAAS,SAAS,cAAc,IAAI,KAAK,CAAC;AAC5D,QAAM,iBAAiB,OAAO,MAAM;AACpC,QAAM,uBAAuB,OAAO,MAAM;GAC1C;AAGF,YAAW,KAAK,GAAG,wBAAwB,WAAW,CAAC;AACvD,YAAW,KAAK,GAAG,4BAA4B,CAAC;CAEhD,MAAM,gBAAgB,oBAAoB,WAAW,CAAC,MAAM;AAE5D,OAAM,mBAAmB,eAAe,KAAK,KAAK,cAAc,OAAO,CAAC;AAExE,OAAM,SAAS,KAAK,MAAM,YAAY,KAAK,GAAG,UAAU;AACxD,OAAM,mBAAmB,cAAc;AAEvC,QAAO;EACL,UAAU;EACV,SAAS,CAAC,GAAG,WAAW;EACxB,YAAY,CAAC,GAAG,cAAc;EAC9B;EACD"}
1
+ {"version":3,"file":"purge.js","names":[],"sources":["../../../src/purger/optimized/purge.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { DEFAULT_ENTRY } from '../../utils/entryPoints';\nimport { purgeFromCodeOptimized } from './purgeFromCode';\nimport type { PurgeOptions, PurgeResult, PurgeStats } from './types';\nimport { scanForFiles } from './utils/files';\nimport {\n deduplicateSafelist,\n getInternalSafelistClasses,\n getThemeAndScaleClasses,\n saveSafelistToFile,\n} from './utils/safelist';\n\n// Track warned locations to avoid duplicates\nconst warnedLocations = new Set<string>();\n\n/**\n * Clear warned locations (call at start of new purge run)\n */\nexport const clearWarnings = (): void => {\n warnedLocations.clear();\n};\n\n/**\n * Main purge function - optimized version\n *\n * Uses purgeFromCodeOptimized internally to ensure consistent behavior\n * between CLI and playground.\n */\nexport const purgeOptimized = async (options: PurgeOptions): Promise<PurgeResult> => {\n const {\n entry = DEFAULT_ENTRY,\n output = 'dist/safelist.ts',\n colorModes = ['dark'], // Light mode is already in :root\n variants,\n autoVariants,\n componentData,\n } = options;\n\n const startTime = performance.now();\n clearWarnings();\n\n const workspaceDir = process.env.PWD ?? process.cwd();\n\n const files = await scanForFiles(entry);\n\n // Aggregate results from all files\n const allClasses: string[] = [];\n const allImports = new Set<string>();\n const allComponents = new Set<string>();\n\n const stats: PurgeStats = {\n filesScanned: files.length,\n timeMs: 0,\n classesGenerated: 0,\n spreadsTraced: 0,\n expressionsResolved: 0,\n };\n\n // Process each file using purgeFromCodeOptimized\n const results = await Promise.all(\n files.map(async (filePath) => {\n const code = fs.readFileSync(filePath, 'utf-8');\n return purgeFromCodeOptimized(code, {\n colorModes,\n variants,\n autoVariants,\n componentData,\n });\n }),\n );\n\n results.forEach((result) => {\n allClasses.push(...result.safelist);\n result.imports.forEach((imp) => allImports.add(imp));\n result.components.forEach((comp) => allComponents.add(comp));\n stats.spreadsTraced += result.stats.spreadsTraced;\n stats.expressionsResolved += result.stats.expressionsResolved;\n });\n\n // Add color mode classes\n allClasses.push(...getThemeAndScaleClasses(colorModes));\n allClasses.push(...getInternalSafelistClasses());\n\n const finalSafelist = deduplicateSafelist(allClasses).sort();\n\n await saveSafelistToFile(finalSafelist, path.join(workspaceDir, output));\n\n stats.timeMs = Math.round(performance.now() - startTime);\n stats.classesGenerated = finalSafelist.length;\n\n return {\n safelist: finalSafelist,\n imports: [...allImports],\n components: [...allComponents],\n stats,\n };\n};\n"],"mappings":";;;;;;;;AAeA,MAAM,kCAAkB,IAAI,KAAa;;;;AAKzC,MAAa,sBAA4B;AACvC,iBAAgB,OAAO;;;;;;;;AASzB,MAAa,iBAAiB,OAAO,YAAgD;CACnF,MAAM,EACJ,QAAQ,eACR,SAAS,oBACT,aAAa,CAAC,OAAO,EACrB,UACA,cACA,kBACE;CAEJ,MAAM,YAAY,YAAY,KAAK;AACnC,gBAAe;CAEf,MAAM,eAAe,QAAQ,IAAI,OAAO,QAAQ,KAAK;CAErD,MAAM,QAAQ,MAAM,aAAa,MAAM;CAGvC,MAAM,aAAuB,EAAE;CAC/B,MAAM,6BAAa,IAAI,KAAa;CACpC,MAAM,gCAAgB,IAAI,KAAa;CAEvC,MAAM,QAAoB;EACxB,cAAc,MAAM;EACpB,QAAQ;EACR,kBAAkB;EAClB,eAAe;EACf,qBAAqB;EACtB;AAeD,EAAA,MAZsB,QAAQ,IAC5B,MAAM,IAAI,OAAO,aAAa;AAE5B,SAAO,uBADM,GAAG,aAAa,UAAU,QACL,EAAE;GAClC;GACA;GACA;GACA;GACD,CAAC;GACF,CACH,EAEO,SAAS,WAAW;AAC1B,aAAW,KAAK,GAAG,OAAO,SAAS;AACnC,SAAO,QAAQ,SAAS,QAAQ,WAAW,IAAI,IAAI,CAAC;AACpD,SAAO,WAAW,SAAS,SAAS,cAAc,IAAI,KAAK,CAAC;AAC5D,QAAM,iBAAiB,OAAO,MAAM;AACpC,QAAM,uBAAuB,OAAO,MAAM;GAC1C;AAGF,YAAW,KAAK,GAAG,wBAAwB,WAAW,CAAC;AACvD,YAAW,KAAK,GAAG,4BAA4B,CAAC;CAEhD,MAAM,gBAAgB,oBAAoB,WAAW,CAAC,MAAM;AAE5D,OAAM,mBAAmB,eAAe,KAAK,KAAK,cAAc,OAAO,CAAC;AAExE,OAAM,SAAS,KAAK,MAAM,YAAY,KAAK,GAAG,UAAU;AACxD,OAAM,mBAAmB,cAAc;AAEvC,QAAO;EACL,UAAU;EACV,SAAS,CAAC,GAAG,WAAW;EACxB,YAAY,CAAC,GAAG,cAAc;EAC9B;EACD"}
@@ -1,9 +1,8 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
- const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
- const require_expressions = require('./ast/expressions.cjs');
4
- const require_jsx = require('./ast/jsx.cjs');
2
+ require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_expressions = require("./ast/expressions.cjs");
4
+ const require_jsx = require("./ast/jsx.cjs");
5
5
  let ts_morph = require("ts-morph");
6
-
7
6
  //#region src/purger/optimized/purgeFromCode.ts
8
7
  /**
9
8
  * Get component info with all its dependencies (using pre-generated data)
@@ -488,6 +487,5 @@ const extractGetStylesCalls = (sourceFile, stats, variants) => {
488
487
  });
489
488
  return props;
490
489
  };
491
-
492
490
  //#endregion
493
- exports.purgeFromCodeOptimized = purgeFromCodeOptimized;
491
+ exports.purgeFromCodeOptimized = purgeFromCodeOptimized;