@yahoo/uds 3.117.0 → 3.117.2

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 (377) hide show
  1. package/dist/automated-config/dist/utils/getConfigVariantComponentStatesMatrix.cjs +2 -3
  2. package/dist/automated-config/dist/utils/getConfigVariantProperties.cjs +2 -3
  3. package/dist/automated-config/dist/utils/getConfigVariants.cjs +2 -3
  4. package/dist/automated-config/dist/utils/index.cjs +3 -6
  5. package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +1 -1
  6. package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +1 -1
  7. package/dist/styles/styler.d.cts +53 -53
  8. package/dist/styles/styler.d.ts +53 -53
  9. package/dist/tailwind/dist/_virtual/_rolldown/runtime.cjs +27 -8
  10. package/dist/tailwind/dist/_virtual/_rolldown/runtime.js +3 -6
  11. package/dist/tailwind/dist/cli.cjs +11 -0
  12. package/dist/tailwind/dist/cli.d.cts +6 -0
  13. package/dist/tailwind/dist/cli.d.ts +6 -0
  14. package/dist/tailwind/dist/cli.js +7 -0
  15. package/dist/tailwind/dist/commands/css.cjs +36 -37
  16. package/dist/tailwind/dist/commands/css.d.cts +14 -0
  17. package/dist/tailwind/dist/commands/css.d.cts.map +1 -0
  18. package/dist/tailwind/dist/commands/css.d.ts +14 -0
  19. package/dist/tailwind/dist/commands/css.d.ts.map +1 -0
  20. package/dist/tailwind/dist/commands/css.helpers.cjs +2 -3
  21. package/dist/tailwind/dist/commands/css.helpers.js +3 -3
  22. package/dist/tailwind/dist/commands/css.helpers.js.map +1 -0
  23. package/dist/tailwind/dist/commands/css.js +5 -6
  24. package/dist/tailwind/dist/commands/css.js.map +1 -0
  25. package/dist/tailwind/dist/commands/generateComponentData.cjs +13 -14
  26. package/dist/tailwind/dist/commands/generateComponentData.d.cts +24 -0
  27. package/dist/tailwind/dist/commands/generateComponentData.d.cts.map +1 -0
  28. package/dist/tailwind/dist/commands/generateComponentData.d.ts +22 -1
  29. package/dist/tailwind/dist/commands/generateComponentData.d.ts.map +1 -0
  30. package/dist/tailwind/dist/commands/generateComponentData.js +6 -6
  31. package/dist/tailwind/dist/commands/generateComponentData.js.map +1 -0
  32. package/dist/tailwind/dist/commands/generatePurgeCSSData.cjs +5 -7
  33. package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts +15 -0
  34. package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts.map +1 -0
  35. package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts +15 -0
  36. package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts.map +1 -0
  37. package/dist/tailwind/dist/commands/generatePurgeCSSData.js +5 -6
  38. package/dist/tailwind/dist/commands/generatePurgeCSSData.js.map +1 -0
  39. package/dist/tailwind/dist/commands/purge.cjs +15 -16
  40. package/dist/tailwind/dist/commands/purge.d.cts +17 -0
  41. package/dist/tailwind/dist/commands/purge.d.cts.map +1 -0
  42. package/dist/tailwind/dist/commands/purge.d.ts +17 -0
  43. package/dist/tailwind/dist/commands/purge.d.ts.map +1 -0
  44. package/dist/tailwind/dist/commands/purge.js +5 -6
  45. package/dist/tailwind/dist/commands/purge.js.map +1 -0
  46. package/dist/tailwind/dist/css/generate.cjs +13 -16
  47. package/dist/tailwind/dist/css/generate.d.cts +3 -4
  48. package/dist/tailwind/dist/css/generate.d.cts.map +1 -0
  49. package/dist/tailwind/dist/css/generate.d.ts +3 -4
  50. package/dist/tailwind/dist/css/generate.d.ts.map +1 -0
  51. package/dist/tailwind/dist/css/generate.helpers.cjs +6 -6
  52. package/dist/tailwind/dist/css/generate.helpers.js +7 -6
  53. package/dist/tailwind/dist/css/generate.helpers.js.map +1 -0
  54. package/dist/tailwind/dist/css/generate.js +7 -9
  55. package/dist/tailwind/dist/css/generate.js.map +1 -0
  56. package/dist/tailwind/dist/css/nodeUtils.cjs +14 -16
  57. package/dist/tailwind/dist/css/nodeUtils.js +6 -7
  58. package/dist/tailwind/dist/css/nodeUtils.js.map +1 -0
  59. package/dist/tailwind/dist/css/postcss.cjs +2 -3
  60. package/dist/tailwind/dist/css/postcss.helpers.cjs +2 -3
  61. package/dist/tailwind/dist/css/postcss.helpers.js +3 -3
  62. package/dist/tailwind/dist/css/postcss.helpers.js.map +1 -0
  63. package/dist/tailwind/dist/css/postcss.js +4 -4
  64. package/dist/tailwind/dist/css/postcss.js.map +1 -0
  65. package/dist/tailwind/dist/css/runner.cjs +40 -35
  66. package/dist/tailwind/dist/css/runner.helpers.cjs +3 -4
  67. package/dist/tailwind/dist/css/runner.helpers.js +4 -4
  68. package/dist/tailwind/dist/css/runner.helpers.js.map +1 -0
  69. package/dist/tailwind/dist/css/runner.js +17 -11
  70. package/dist/tailwind/dist/css/runner.js.map +1 -0
  71. package/dist/tailwind/dist/css/theme.cjs +2 -3
  72. package/dist/tailwind/dist/css/theme.d.cts +13 -5
  73. package/dist/tailwind/dist/css/theme.d.cts.map +1 -0
  74. package/dist/tailwind/dist/css/theme.d.ts +13 -5
  75. package/dist/tailwind/dist/css/theme.d.ts.map +1 -0
  76. package/dist/tailwind/dist/css/theme.js +3 -3
  77. package/dist/tailwind/dist/css/theme.js.map +1 -0
  78. package/dist/tailwind/dist/css/utils.cjs +5 -5
  79. package/dist/tailwind/dist/css/utils.js +5 -5
  80. package/dist/tailwind/dist/css/utils.js.map +1 -0
  81. package/dist/tailwind/dist/index.cjs +9 -0
  82. package/dist/tailwind/dist/index.d.cts +3 -2
  83. package/dist/tailwind/dist/index.d.ts +3 -2
  84. package/dist/tailwind/dist/index.js +6 -0
  85. package/dist/tailwind/dist/plugin.cjs +7 -6
  86. package/dist/tailwind/dist/plugin.d.cts +3 -3
  87. package/dist/tailwind/dist/plugin.d.cts.map +1 -0
  88. package/dist/tailwind/dist/plugin.d.ts +3 -3
  89. package/dist/tailwind/dist/plugin.d.ts.map +1 -0
  90. package/dist/tailwind/dist/plugin.js +4 -4
  91. package/dist/tailwind/dist/plugin.js.map +1 -0
  92. package/dist/tailwind/dist/purger/legacy/index.d.ts +2 -0
  93. package/dist/tailwind/dist/purger/legacy/purgeCSS.cjs +25 -24
  94. package/dist/tailwind/dist/purger/legacy/purgeCSS.d.cts +24 -0
  95. package/dist/tailwind/dist/purger/legacy/purgeCSS.d.cts.map +1 -0
  96. package/dist/tailwind/dist/purger/legacy/purgeCSS.d.ts +24 -0
  97. package/dist/tailwind/dist/purger/legacy/purgeCSS.d.ts.map +1 -0
  98. package/dist/tailwind/dist/purger/legacy/purgeCSS.js +8 -9
  99. package/dist/tailwind/dist/purger/legacy/purgeCSS.js.map +1 -0
  100. package/dist/tailwind/dist/purger/legacy/purgeFromCode.cjs +59 -0
  101. package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts +28 -0
  102. package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts.map +1 -0
  103. package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts +28 -0
  104. package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts.map +1 -0
  105. package/dist/tailwind/dist/purger/legacy/purgeFromCode.js +59 -0
  106. package/dist/tailwind/dist/purger/legacy/purgeFromCode.js.map +1 -0
  107. package/dist/tailwind/dist/purger/optimized/ast/expressions.cjs +5 -6
  108. package/dist/tailwind/dist/purger/optimized/ast/expressions.d.ts +2 -0
  109. package/dist/tailwind/dist/purger/optimized/ast/expressions.js +5 -5
  110. package/dist/tailwind/dist/purger/optimized/ast/expressions.js.map +1 -0
  111. package/dist/tailwind/dist/purger/optimized/ast/index.d.ts +5 -0
  112. package/dist/tailwind/dist/purger/optimized/ast/jsx.cjs +3 -4
  113. package/dist/tailwind/dist/purger/optimized/ast/jsx.d.ts +3 -0
  114. package/dist/tailwind/dist/purger/optimized/ast/jsx.js +4 -4
  115. package/dist/tailwind/dist/purger/optimized/ast/jsx.js.map +1 -0
  116. package/dist/tailwind/dist/purger/optimized/ast/props.d.ts +2 -0
  117. package/dist/tailwind/dist/purger/optimized/ast/spread.d.ts +3 -0
  118. package/dist/tailwind/dist/purger/optimized/index.d.ts +6 -0
  119. package/dist/tailwind/dist/purger/optimized/purge.cjs +5 -6
  120. package/dist/tailwind/dist/purger/optimized/purge.d.ts +2 -0
  121. package/dist/tailwind/dist/purger/optimized/purge.js +5 -5
  122. package/dist/tailwind/dist/purger/optimized/purge.js.map +1 -0
  123. package/dist/tailwind/dist/purger/optimized/purgeFromCode.cjs +3 -4
  124. package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts +58 -0
  125. package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts.map +1 -0
  126. package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts +58 -0
  127. package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts.map +1 -0
  128. package/dist/tailwind/dist/purger/optimized/purgeFromCode.js +4 -4
  129. package/dist/tailwind/dist/purger/optimized/purgeFromCode.js.map +1 -0
  130. package/dist/tailwind/dist/purger/optimized/types.d.cts +22 -0
  131. package/dist/tailwind/dist/purger/optimized/types.d.cts.map +1 -0
  132. package/dist/tailwind/dist/purger/optimized/types.d.ts +23 -0
  133. package/dist/tailwind/dist/purger/optimized/types.d.ts.map +1 -0
  134. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.cjs +8 -9
  135. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js +7 -7
  136. package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js.map +1 -0
  137. package/dist/tailwind/dist/purger/optimized/utils/files.cjs +3 -4
  138. package/dist/tailwind/dist/purger/optimized/utils/files.d.ts +2 -0
  139. package/dist/tailwind/dist/purger/optimized/utils/files.js +4 -4
  140. package/dist/tailwind/dist/purger/optimized/utils/files.js.map +1 -0
  141. package/dist/tailwind/dist/purger/optimized/utils/safelist.cjs +7 -8
  142. package/dist/tailwind/dist/purger/optimized/utils/safelist.js +6 -6
  143. package/dist/tailwind/dist/purger/optimized/utils/safelist.js.map +1 -0
  144. package/dist/tailwind/dist/purger.cjs +7 -0
  145. package/dist/tailwind/dist/purger.d.cts +4 -0
  146. package/dist/tailwind/dist/purger.d.ts +6 -0
  147. package/dist/tailwind/dist/purger.js +5 -0
  148. package/dist/tailwind/dist/tailwind/base/addColorModeVars.cjs +10 -10
  149. package/dist/tailwind/dist/tailwind/base/addColorModeVars.js +6 -6
  150. package/dist/tailwind/dist/tailwind/base/addColorModeVars.js.map +1 -0
  151. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.cjs +14 -14
  152. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js +6 -6
  153. package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js.map +1 -0
  154. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.cjs +2 -3
  155. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js +4 -4
  156. package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js.map +1 -0
  157. package/dist/tailwind/dist/tailwind/base/addFontVars.cjs +2 -3
  158. package/dist/tailwind/dist/tailwind/base/addFontVars.js +4 -4
  159. package/dist/tailwind/dist/tailwind/base/addFontVars.js.map +1 -0
  160. package/dist/tailwind/dist/tailwind/base/addMotionVars.cjs +2 -3
  161. package/dist/tailwind/dist/tailwind/base/addMotionVars.js +4 -4
  162. package/dist/tailwind/dist/tailwind/base/addMotionVars.js.map +1 -0
  163. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.cjs +13 -13
  164. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js +6 -6
  165. package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js.map +1 -0
  166. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.cjs +6 -6
  167. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js +5 -5
  168. package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js.map +1 -0
  169. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.cjs +12 -12
  170. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js +6 -6
  171. package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js.map +1 -0
  172. package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.cjs +2 -3
  173. package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js +3 -3
  174. package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js.map +1 -0
  175. package/dist/tailwind/dist/tailwind/components/getIconStyles.cjs +2 -3
  176. package/dist/tailwind/dist/tailwind/components/getIconStyles.js +3 -3
  177. package/dist/tailwind/dist/tailwind/components/getIconStyles.js.map +1 -0
  178. package/dist/tailwind/dist/tailwind/components/getInputStyles.cjs +2 -3
  179. package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts +3 -3
  180. package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts.map +1 -0
  181. package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts +3 -3
  182. package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts.map +1 -0
  183. package/dist/tailwind/dist/tailwind/components/getInputStyles.js +3 -3
  184. package/dist/tailwind/dist/tailwind/components/getInputStyles.js.map +1 -0
  185. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.cjs +29 -29
  186. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.cts +6 -4
  187. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.cts.map +1 -0
  188. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.ts +6 -4
  189. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.ts.map +1 -0
  190. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js +8 -8
  191. package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js.map +1 -0
  192. package/dist/tailwind/dist/tailwind/components/types.d.cts +3 -3
  193. package/dist/tailwind/dist/tailwind/components/types.d.cts.map +1 -0
  194. package/dist/tailwind/dist/tailwind/components/types.d.ts +3 -3
  195. package/dist/tailwind/dist/tailwind/components/types.d.ts.map +1 -0
  196. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.cjs +2 -3
  197. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts +6 -6
  198. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts.map +1 -0
  199. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts +6 -6
  200. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts.map +1 -0
  201. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js +3 -3
  202. package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js.map +1 -0
  203. package/dist/tailwind/dist/tailwind/plugins/a11y.cjs +3 -4
  204. package/dist/tailwind/dist/tailwind/plugins/a11y.js +4 -4
  205. package/dist/tailwind/dist/tailwind/plugins/a11y.js.map +1 -0
  206. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.cjs +7 -8
  207. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js +5 -5
  208. package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js.map +1 -0
  209. package/dist/tailwind/dist/tailwind/plugins/borderRadius.cjs +8 -9
  210. package/dist/tailwind/dist/tailwind/plugins/borderRadius.js +7 -7
  211. package/dist/tailwind/dist/tailwind/plugins/borderRadius.js.map +1 -0
  212. package/dist/tailwind/dist/tailwind/plugins/borderWidth.cjs +8 -9
  213. package/dist/tailwind/dist/tailwind/plugins/borderWidth.js +7 -7
  214. package/dist/tailwind/dist/tailwind/plugins/borderWidth.js.map +1 -0
  215. package/dist/tailwind/dist/tailwind/plugins/breakpoints.cjs +3 -4
  216. package/dist/tailwind/dist/tailwind/plugins/breakpoints.js +4 -4
  217. package/dist/tailwind/dist/tailwind/plugins/breakpoints.js.map +1 -0
  218. package/dist/tailwind/dist/tailwind/plugins/colors.cjs +17 -17
  219. package/dist/tailwind/dist/tailwind/plugins/colors.js +9 -9
  220. package/dist/tailwind/dist/tailwind/plugins/colors.js.map +1 -0
  221. package/dist/tailwind/dist/tailwind/plugins/components.cjs +25 -26
  222. package/dist/tailwind/dist/tailwind/plugins/components.js +7 -7
  223. package/dist/tailwind/dist/tailwind/plugins/components.js.map +1 -0
  224. package/dist/tailwind/dist/tailwind/plugins/elevation.cjs +7 -8
  225. package/dist/tailwind/dist/tailwind/plugins/elevation.js +6 -6
  226. package/dist/tailwind/dist/tailwind/plugins/elevation.js.map +1 -0
  227. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.cjs +5 -5
  228. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js +5 -5
  229. package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js.map +1 -0
  230. package/dist/tailwind/dist/tailwind/plugins/icons.cjs +3 -4
  231. package/dist/tailwind/dist/tailwind/plugins/icons.js +4 -4
  232. package/dist/tailwind/dist/tailwind/plugins/icons.js.map +1 -0
  233. package/dist/tailwind/dist/tailwind/plugins/input.cjs +3 -4
  234. package/dist/tailwind/dist/tailwind/plugins/input.js +4 -4
  235. package/dist/tailwind/dist/tailwind/plugins/input.js.map +1 -0
  236. package/dist/tailwind/dist/tailwind/plugins/motion.cjs +3 -4
  237. package/dist/tailwind/dist/tailwind/plugins/motion.js +4 -4
  238. package/dist/tailwind/dist/tailwind/plugins/motion.js.map +1 -0
  239. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.cjs +3 -4
  240. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js +4 -4
  241. package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js.map +1 -0
  242. package/dist/tailwind/dist/tailwind/plugins/scaleMode.cjs +3 -4
  243. package/dist/tailwind/dist/tailwind/plugins/scaleMode.js +4 -4
  244. package/dist/tailwind/dist/tailwind/plugins/scaleMode.js.map +1 -0
  245. package/dist/tailwind/dist/tailwind/plugins/shadows.cjs +8 -9
  246. package/dist/tailwind/dist/tailwind/plugins/shadows.js +5 -5
  247. package/dist/tailwind/dist/tailwind/plugins/shadows.js.map +1 -0
  248. package/dist/tailwind/dist/tailwind/plugins/sizing.cjs +5 -6
  249. package/dist/tailwind/dist/tailwind/plugins/sizing.js +5 -5
  250. package/dist/tailwind/dist/tailwind/plugins/sizing.js.map +1 -0
  251. package/dist/tailwind/dist/tailwind/plugins/spacing.cjs +3 -4
  252. package/dist/tailwind/dist/tailwind/plugins/spacing.js +4 -4
  253. package/dist/tailwind/dist/tailwind/plugins/spacing.js.map +1 -0
  254. package/dist/tailwind/dist/tailwind/plugins/typography.cjs +10 -11
  255. package/dist/tailwind/dist/tailwind/plugins/typography.js +7 -7
  256. package/dist/tailwind/dist/tailwind/plugins/typography.js.map +1 -0
  257. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.cjs +9 -9
  258. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js +6 -6
  259. package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js.map +1 -0
  260. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.cjs +3 -4
  261. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts +4 -4
  262. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts.map +1 -0
  263. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts +4 -4
  264. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts.map +1 -0
  265. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js +4 -4
  266. package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js.map +1 -0
  267. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.cjs +15 -9
  268. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts +4 -4
  269. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts.map +1 -0
  270. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts +5 -5
  271. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts.map +1 -0
  272. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js +7 -7
  273. package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js.map +1 -0
  274. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.cjs +2 -3
  275. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.cts +3 -3
  276. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.cts.map +1 -0
  277. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.ts +3 -3
  278. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.ts.map +1 -0
  279. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js +3 -3
  280. package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js.map +1 -0
  281. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.cjs +9 -9
  282. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts +4 -4
  283. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts.map +1 -0
  284. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts +4 -4
  285. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts.map +1 -0
  286. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js +5 -5
  287. package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js.map +1 -0
  288. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.cjs +5 -5
  289. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.cts +4 -4
  290. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.cts.map +1 -0
  291. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.ts +4 -4
  292. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.ts.map +1 -0
  293. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js +5 -5
  294. package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js.map +1 -0
  295. package/dist/tailwind/dist/tailwind/utils/getFontStyles.cjs +7 -7
  296. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts +4 -4
  297. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts.map +1 -0
  298. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts +4 -4
  299. package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts.map +1 -0
  300. package/dist/tailwind/dist/tailwind/utils/getFontStyles.js +6 -6
  301. package/dist/tailwind/dist/tailwind/utils/getFontStyles.js.map +1 -0
  302. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.cjs +7 -7
  303. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.cts +4 -4
  304. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.cts.map +1 -0
  305. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.ts +4 -4
  306. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.ts.map +1 -0
  307. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js +6 -6
  308. package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js.map +1 -0
  309. package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.cjs +2 -3
  310. package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js +3 -3
  311. package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js.map +1 -0
  312. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.cjs +2 -3
  313. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.cts +3 -3
  314. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.cts.map +1 -0
  315. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.ts +3 -3
  316. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.ts.map +1 -0
  317. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js +3 -3
  318. package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js.map +1 -0
  319. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.cjs +5 -5
  320. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.cts +5 -5
  321. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.cts.map +1 -0
  322. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.ts +5 -5
  323. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.ts.map +1 -0
  324. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js +5 -5
  325. package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js.map +1 -0
  326. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.cjs +6 -6
  327. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts +5 -5
  328. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts.map +1 -0
  329. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts +5 -5
  330. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts.map +1 -0
  331. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js +5 -5
  332. package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js.map +1 -0
  333. package/dist/tailwind/dist/utils/assertUnreachable.cjs +2 -3
  334. package/dist/tailwind/dist/utils/assertUnreachable.js +3 -3
  335. package/dist/tailwind/dist/utils/assertUnreachable.js.map +1 -0
  336. package/dist/tailwind/dist/utils/entries.cjs +2 -3
  337. package/dist/tailwind/dist/utils/entries.js +3 -3
  338. package/dist/tailwind/dist/utils/entries.js.map +1 -0
  339. package/dist/tailwind/dist/utils/entryPoints.cjs +5 -6
  340. package/dist/tailwind/dist/utils/entryPoints.js +5 -5
  341. package/dist/tailwind/dist/utils/entryPoints.js.map +1 -0
  342. package/dist/tailwind/dist/utils/fromEntries.cjs +2 -3
  343. package/dist/tailwind/dist/utils/fromEntries.js +3 -3
  344. package/dist/tailwind/dist/utils/fromEntries.js.map +1 -0
  345. package/dist/tailwind/dist/utils/generatePurgeCSSData.cjs +11 -13
  346. package/dist/tailwind/dist/utils/generatePurgeCSSData.js +7 -8
  347. package/dist/tailwind/dist/utils/generatePurgeCSSData.js.map +1 -0
  348. package/dist/tailwind/dist/utils/mapValues.cjs +2 -3
  349. package/dist/tailwind/dist/utils/mapValues.js +3 -3
  350. package/dist/tailwind/dist/utils/mapValues.js.map +1 -0
  351. package/dist/tailwind/dist/utils/opacity.cjs +6 -6
  352. package/dist/tailwind/dist/utils/opacity.js +4 -4
  353. package/dist/tailwind/dist/utils/opacity.js.map +1 -0
  354. package/dist/tailwind/dist/utils/optimizeCSS.cjs +3 -4
  355. package/dist/tailwind/dist/utils/optimizeCSS.js +4 -4
  356. package/dist/tailwind/dist/utils/optimizeCSS.js.map +1 -0
  357. package/dist/tailwind/dist/utils/parseTokens.cjs +32 -32
  358. package/dist/tailwind/dist/utils/parseTokens.d.cts +5 -5
  359. package/dist/tailwind/dist/utils/parseTokens.d.cts.map +1 -0
  360. package/dist/tailwind/dist/utils/parseTokens.d.ts +5 -5
  361. package/dist/tailwind/dist/utils/parseTokens.d.ts.map +1 -0
  362. package/dist/tailwind/dist/utils/parseTokens.js +6 -6
  363. package/dist/tailwind/dist/utils/parseTokens.js.map +1 -0
  364. package/dist/tailwind/dist/utils/postcssPreserveVars.cjs +2 -3
  365. package/dist/tailwind/dist/utils/postcssPreserveVars.js +3 -3
  366. package/dist/tailwind/dist/utils/postcssPreserveVars.js.map +1 -0
  367. package/dist/tailwind/dist/utils/tsMorph.cjs +13 -11
  368. package/dist/tailwind/dist/utils/tsMorph.js +4 -4
  369. package/dist/tailwind/dist/utils/tsMorph.js.map +1 -0
  370. package/dist/tailwind/dist/utils.cjs +25 -0
  371. package/dist/tailwind/dist/utils.d.cts +2 -1
  372. package/dist/tailwind/dist/utils.d.ts +2 -1
  373. package/dist/tailwind/dist/utils.js +13 -0
  374. package/dist/uds/generated/componentData.cjs +145 -145
  375. package/dist/uds/generated/componentData.js +145 -145
  376. package/generated/componentData.json +209 -209
  377. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizeCSS.js","names":[],"sources":["../../src/utils/optimizeCSS.ts"],"sourcesContent":["import { gzipSync } from 'node:zlib';\n\nimport type { AtRule, Declaration, Plugin, Root, Rule } from 'postcss';\nimport postcss from 'postcss';\n\n/**\n * Check if a selector is a \"meaningful\" selector (class, ID, attribute, or pseudo-class)\n * as opposed to just element/type selectors (like `code, kbd, pre` in preflight).\n * Meaningful selectors indicate the font is actually used by components, not just base reset.\n */\nfunction isMeaningfulSelector(selector: string): boolean {\n // Split compound selectors\n const parts = selector.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n // Check if any part of the selector has class, ID, attribute, or custom pseudo-class\n // This indicates actual usage by components, not just preflight/reset\n if (\n part.includes('.') || // class selector\n part.includes('#') || // ID selector\n part.includes('[') || // attribute selector\n part.includes(':not(') || // complex pseudo-class\n part.includes(':where(') ||\n part.includes(':is(') ||\n part.includes(':has(')\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * PostCSS plugin to remove @font-face declarations for font families that are not used\n * anywhere in the CSS (excluding preflight/reset styles that only use element selectors).\n */\nfunction removeUnusedFontFaces(): Plugin {\n return {\n postcssPlugin: 'remove-unused-font-faces',\n Once(root: Root) {\n // Track font variables and whether they're used in meaningful selectors\n // Key: variable name (without --uds-font- prefix), Value: { used: boolean, meaningful: boolean }\n const fontVarUsage = new Map<string, { used: boolean; meaningful: boolean }>();\n\n // First pass: collect all font-family references from the CSS (excluding @font-face)\n const usedFontFamilies = new Set<string>();\n\n root.walkDecls('font-family', (decl) => {\n // Skip font-family declarations inside @font-face\n if (decl.parent?.type === 'atrule' && (decl.parent as AtRule).name === 'font-face') {\n return;\n }\n\n // Get the selector for this rule\n const rule = decl.parent as Rule;\n const selector = rule?.selector || '';\n const meaningful = isMeaningfulSelector(selector);\n\n // Parse font-family value to extract font names\n // Handles: \"Font Name\", 'Font Name', Font-Name, var(--uds-font-xxx)\n const value = decl.value;\n\n // Check for CSS variables that reference fonts\n const varMatches = value.matchAll(/var\\(--uds-font-([^),]+)\\)/g);\n for (const match of varMatches) {\n const varName = match[1];\n const existing = fontVarUsage.get(varName) || { used: false, meaningful: false };\n fontVarUsage.set(varName, {\n used: true,\n meaningful: existing.meaningful || meaningful,\n });\n }\n\n // Extract font family names (quoted or unquoted) - only if in meaningful selector\n if (meaningful) {\n const fontNames = value\n .split(',')\n .map((font) => font.trim())\n .map((font) => {\n // Remove quotes\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n return font.slice(1, -1);\n }\n // Skip var() references and generic families\n if (\n font.startsWith('var(') ||\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(font.toLowerCase())\n ) {\n return null;\n }\n return font;\n })\n .filter(Boolean) as string[];\n\n fontNames.forEach((name) => usedFontFamilies.add(name));\n }\n });\n\n // Collect all font variable definitions for resolving nested references\n const fontVarDefinitions = new Map<string, string>();\n root.walkDecls((decl) => {\n if (\n decl.prop.startsWith('--uds-font-') &&\n !decl.prop.includes('size') &&\n !decl.prop.includes('weight') &&\n !decl.prop.includes('slant') &&\n !decl.prop.includes('width')\n ) {\n const varName = decl.prop.replace('--uds-font-', '');\n fontVarDefinitions.set(varName, decl.value);\n }\n });\n\n // Helper to resolve a variable value to actual font names (handles nested var() references)\n const resolveToFontNames = (value: string, visited = new Set<string>()): string[] => {\n const fontNames: string[] = [];\n\n // Check for nested var() references\n const varMatch = value.match(/var\\(--uds-font-([^),]+)\\)/);\n if (varMatch) {\n const nestedVarName = varMatch[1];\n // Prevent infinite loops\n if (!visited.has(nestedVarName)) {\n visited.add(nestedVarName);\n const nestedValue = fontVarDefinitions.get(nestedVarName);\n if (nestedValue) {\n // Mark the nested variable as used if parent is used\n const nestedUsage = fontVarUsage.get(nestedVarName);\n if (nestedUsage) {\n // Propagate meaningful status up the chain\n const parentUsage = fontVarUsage.get(\n value.replace(/var\\(--uds-font-([^),]+)\\).*/, '$1'),\n );\n if (parentUsage?.meaningful) {\n nestedUsage.meaningful = true;\n }\n }\n fontNames.push(...resolveToFontNames(nestedValue, visited));\n }\n }\n }\n\n // Extract actual font names from the value\n value\n .split(',')\n .map((font) => font.trim())\n .forEach((font) => {\n // Skip var() references (handled above)\n if (font.startsWith('var(')) {\n return;\n }\n\n // Remove quotes\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n font = font.slice(1, -1);\n }\n\n // Skip generic families\n if (\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(font.toLowerCase())\n ) {\n return;\n }\n\n if (font) {\n fontNames.push(font);\n }\n });\n\n return fontNames;\n };\n\n // Process font variable definitions and resolve nested references\n for (const [varName, value] of fontVarDefinitions) {\n const usage = fontVarUsage.get(varName);\n\n // Only include fonts from this variable if it's used in a meaningful selector\n if (usage?.used && usage?.meaningful) {\n const fontNames = resolveToFontNames(value);\n fontNames.forEach((name) => usedFontFamilies.add(name));\n }\n }\n\n // Second pass: remove unused @font-face rules and track which fonts are kept\n const keptFonts = new Set<string>();\n root.walkAtRules('font-face', (atRule) => {\n let fontFamily: string | null = null;\n\n atRule.walkDecls('font-family', (decl) => {\n fontFamily = decl.value.replace(/[\"']/g, '').trim();\n });\n\n if (fontFamily && !usedFontFamilies.has(fontFamily)) {\n atRule.remove();\n } else if (fontFamily) {\n keptFonts.add(fontFamily);\n }\n });\n\n // Third pass: update CSS variable definitions to remove fonts that were not kept\n // This ensures variables like --uds-font-mono don't reference fonts we didn't load\n root.walkDecls((decl) => {\n if (\n decl.prop.startsWith('--uds-font-') &&\n !decl.prop.includes('size') &&\n !decl.prop.includes('weight') &&\n !decl.prop.includes('slant') &&\n !decl.prop.includes('width')\n ) {\n // Parse the font stack and filter out fonts that weren't kept\n const fonts = decl.value.split(',').map((f) => f.trim());\n const filteredFonts = fonts.filter((font) => {\n // Keep var() references\n if (font.startsWith('var(')) {\n return true;\n }\n\n // Extract font name (remove quotes)\n let fontName = font;\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n fontName = font.slice(1, -1);\n }\n\n // Keep generic font families\n if (\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(fontName.toLowerCase())\n ) {\n return true;\n }\n\n // Keep fonts that have @font-face declarations\n return keptFonts.has(fontName);\n });\n\n // Update the declaration if fonts were removed\n if (filteredFonts.length < fonts.length && filteredFonts.length > 0) {\n decl.value = filteredFonts.join(', ');\n }\n }\n });\n },\n };\n}\n\nremoveUnusedFontFaces.postcss = true;\n\n/**\n * PostCSS plugin to remove redundant .uds-color-mode-light rules.\n * Light mode is the default (set on :root), so the explicit class is unnecessary.\n */\nfunction removeRedundantLightModePlugin(): Plugin {\n return {\n postcssPlugin: 'remove-redundant-light-mode',\n Once(root: Root) {\n root.walkRules((rule) => {\n // Match .uds-color-mode-light selector (exact match or as part of selector list)\n const selectors = rule.selector.split(',').map((s) => s.trim());\n const filteredSelectors = selectors.filter((s) => {\n // Remove selectors that are exactly .uds-color-mode-light\n // or .uds-color-mode-light with just :root/:where/:is wrappers\n const normalized = s.replace(/\\s+/g, ' ').trim();\n return (\n normalized !== '.uds-color-mode-light' &&\n normalized !== ':root .uds-color-mode-light' &&\n normalized !== ':where(.uds-color-mode-light)' &&\n normalized !== ':is(.uds-color-mode-light)'\n );\n });\n\n if (filteredSelectors.length === 0) {\n // All selectors were light mode - remove the entire rule\n rule.remove();\n } else if (filteredSelectors.length < selectors.length) {\n // Some selectors were light mode - update the selector\n rule.selector = filteredSelectors.join(', ');\n }\n });\n },\n };\n}\n\nremoveRedundantLightModePlugin.postcss = true;\n\n/**\n * PostCSS plugin to remove empty CSS rules (rules with no declarations).\n * Also aggregates duplicate selectors.\n */\nfunction removeEmptyRulesPlugin(): Plugin {\n return {\n postcssPlugin: 'remove-empty-rules',\n Once(root: Root) {\n // Remove empty rules\n root.walkRules((rule) => {\n // Check if rule has any declarations (not just comments or empty)\n const hasDeclarations = rule.nodes?.some(\n (node) => node.type === 'decl' || (node.type === 'rule' && node.nodes?.length > 0),\n );\n\n if (!hasDeclarations) {\n rule.remove();\n }\n });\n\n // Remove empty at-rules (like empty @media blocks)\n root.walkAtRules((atRule) => {\n if (atRule.name !== 'font-face' && atRule.name !== 'keyframes') {\n const hasContent = atRule.nodes?.some((node) => {\n if (node.type === 'rule') {\n return node.nodes?.some((n) => n.type === 'decl');\n }\n if (node.type === 'decl') {\n return true;\n }\n return false;\n });\n\n if (!hasContent && atRule.nodes?.length === 0) {\n atRule.remove();\n }\n }\n });\n },\n };\n}\n\nremoveEmptyRulesPlugin.postcss = true;\n\n/**\n * PostCSS plugin to aggregate rules with identical selectors.\n */\nfunction aggregateDuplicateSelectorsPlugin(): Plugin {\n return {\n postcssPlugin: 'aggregate-duplicate-selectors',\n Once(root: Root) {\n // Map of selector -> first rule with that selector\n const selectorMap = new Map<string, Rule>();\n\n // Collect rules to process (only top-level rules, not nested)\n const rulesToProcess: Rule[] = [];\n root.walkRules((rule) => {\n // Only process top-level rules (direct children of root or at-rules)\n if (rule.parent?.type === 'root' || rule.parent?.type === 'atrule') {\n rulesToProcess.push(rule);\n }\n });\n\n for (const rule of rulesToProcess) {\n const selector = rule.selector;\n const parent = rule.parent;\n\n // Create a unique key including the parent context\n const parentKey =\n parent?.type === 'atrule'\n ? `@${(parent as AtRule).name}:${(parent as AtRule).params}`\n : 'root';\n const key = `${parentKey}|${selector}`;\n\n if (selectorMap.has(key)) {\n const existingRule = selectorMap.get(key)!;\n\n // Move all declarations from current rule to existing rule\n rule.walkDecls((decl) => {\n // Check if the declaration already exists\n const existingDecl = existingRule.nodes?.find(\n (node): node is Declaration => node.type === 'decl' && node.prop === decl.prop,\n );\n\n if (existingDecl) {\n // Replace with new value\n existingDecl.value = decl.value;\n } else {\n // Append the declaration\n existingRule.append(decl.clone());\n }\n });\n\n // Remove the duplicate rule\n rule.remove();\n } else {\n selectorMap.set(key, rule);\n }\n }\n },\n };\n}\n\naggregateDuplicateSelectorsPlugin.postcss = true;\n\n/**\n * Validates CSS syntax and returns any errors found.\n */\nfunction validateCSS(css: string): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n\n try {\n // Parse the CSS to check for syntax errors\n const result = postcss.parse(css);\n\n // Check for common issues\n result.walkRules((rule) => {\n // Check for empty selectors\n if (!rule.selector.trim()) {\n errors.push(`Empty selector found at line ${rule.source?.start?.line}`);\n }\n\n // Check for malformed selectors\n try {\n // Basic selector validation - this catches obvious syntax errors\n if (rule.selector.includes('{{') || rule.selector.includes('}}')) {\n errors.push(`Malformed selector \"${rule.selector}\" at line ${rule.source?.start?.line}`);\n }\n } catch {\n errors.push(`Invalid selector \"${rule.selector}\" at line ${rule.source?.start?.line}`);\n }\n });\n\n // Check for unclosed blocks (postcss.parse will throw for these)\n result.walkDecls((decl) => {\n // Check for missing values\n if (!decl.value.trim()) {\n errors.push(`Empty value for property \"${decl.prop}\" at line ${decl.source?.start?.line}`);\n }\n });\n\n return { valid: errors.length === 0, errors };\n } catch (error) {\n if (error instanceof Error) {\n errors.push(`CSS Parse Error: ${error.message}`);\n } else {\n errors.push('Unknown CSS parse error');\n }\n return { valid: false, errors };\n }\n}\n\n/**\n * Reference data extracted from CSS for deduplication\n */\ninterface CSSReferenceData {\n /** Font-face fingerprints (font-family + src + weight + style) */\n fontFaces: Set<string>;\n /** Keyframes fingerprints (name + content) */\n keyframes: Set<string>;\n /** Regular rule fingerprints (selector + declarations) */\n rules: Set<string>;\n}\n\n/**\n * Create a fingerprint for a @font-face rule\n */\nfunction getFontFaceFingerprint(atRule: AtRule): string {\n let fontFamily = '';\n let src = '';\n let fontWeight = 'normal';\n let fontStyle = 'normal';\n\n atRule.walkDecls((decl) => {\n if (decl.prop === 'font-family') {\n fontFamily = decl.value.replace(/[\"']/g, '').trim();\n } else if (decl.prop === 'src') {\n src = decl.value;\n } else if (decl.prop === 'font-weight') {\n fontWeight = decl.value;\n } else if (decl.prop === 'font-style') {\n fontStyle = decl.value;\n }\n });\n\n return JSON.stringify({ fontFamily, src, fontWeight, fontStyle });\n}\n\n/**\n * Create a fingerprint for a @keyframes rule\n */\nfunction getKeyframesFingerprint(atRule: AtRule): string {\n // Use name + normalized content as fingerprint\n const name = atRule.params;\n const content = atRule.toString().replace(/\\s+/g, ' ').trim();\n return JSON.stringify({ name, content });\n}\n\n/**\n * Normalize a selector by removing scope prefix and whitespace\n */\nfunction normalizeSelector(selector: string, scopeClass?: string): string {\n let normalized = selector.trim();\n if (scopeClass) {\n // Remove scope prefix patterns like \".scope \" or \".scope.\"\n const escapedScope = scopeClass.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n normalized = normalized\n .replace(new RegExp(`${escapedScope}\\\\s+`, 'g'), '')\n .replace(new RegExp(`${escapedScope}\\\\.`, 'g'), '.')\n .replace(new RegExp(`${escapedScope}`, 'g'), '');\n }\n return normalized.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * Create a fingerprint for a CSS rule (selector + declarations)\n */\nfunction getRuleFingerprint(rule: Rule, scopeClass?: string): string {\n const selector = normalizeSelector(rule.selector, scopeClass);\n const declarations: string[] = [];\n\n rule.walkDecls((decl) => {\n declarations.push(`${decl.prop}:${decl.value}`);\n });\n\n // Sort declarations for consistent comparison\n declarations.sort();\n return JSON.stringify({ selector, declarations });\n}\n\n/**\n * Extract reference data from CSS for deduplication\n */\nfunction extractCSSReferenceData(css: string, scopeClass?: string): CSSReferenceData {\n const data: CSSReferenceData = {\n fontFaces: new Set(),\n keyframes: new Set(),\n rules: new Set(),\n };\n\n try {\n const root = postcss.parse(css);\n\n root.walkAtRules((atRule) => {\n if (atRule.name === 'font-face') {\n data.fontFaces.add(getFontFaceFingerprint(atRule));\n } else if (atRule.name === 'keyframes' || atRule.name === '-webkit-keyframes') {\n data.keyframes.add(getKeyframesFingerprint(atRule));\n }\n });\n\n root.walkRules((rule) => {\n // Skip rules inside @font-face or @keyframes\n if (rule.parent?.type === 'atrule') {\n const parentName = (rule.parent as AtRule).name;\n if (\n parentName === 'font-face' ||\n parentName === 'keyframes' ||\n parentName === '-webkit-keyframes'\n ) {\n return;\n }\n }\n data.rules.add(getRuleFingerprint(rule, scopeClass));\n });\n } catch {\n // If parsing fails, return empty data\n }\n\n return data;\n}\n\n/**\n * PostCSS plugin to remove CSS that exists in reference CSS\n * Handles @font-face, @keyframes, and regular rule deduplication\n */\nfunction removeDuplicateCss(referenceData: CSSReferenceData, scopeClass?: string): Plugin {\n return {\n postcssPlugin: 'remove-duplicate-css',\n Once(root: Root) {\n const toRemove: (AtRule | Rule)[] = [];\n\n root.walkAtRules((atRule) => {\n if (atRule.name === 'font-face') {\n const fingerprint = getFontFaceFingerprint(atRule);\n if (referenceData.fontFaces.has(fingerprint)) {\n toRemove.push(atRule);\n }\n } else if (atRule.name === 'keyframes' || atRule.name === '-webkit-keyframes') {\n const fingerprint = getKeyframesFingerprint(atRule);\n if (referenceData.keyframes.has(fingerprint)) {\n toRemove.push(atRule);\n }\n }\n });\n\n root.walkRules((rule) => {\n // Skip rules inside @font-face or @keyframes\n if (rule.parent?.type === 'atrule') {\n const parentName = (rule.parent as AtRule).name;\n if (\n parentName === 'font-face' ||\n parentName === 'keyframes' ||\n parentName === '-webkit-keyframes'\n ) {\n return;\n }\n }\n\n const fingerprint = getRuleFingerprint(rule, scopeClass);\n if (referenceData.rules.has(fingerprint)) {\n toRemove.push(rule);\n }\n });\n\n // Remove duplicates\n for (const node of toRemove) {\n node.remove();\n }\n },\n };\n}\n\n/**\n * Options for CSS optimization\n */\ninterface OptimizeCSSOptions {\n /** Remove unused @font-face declarations (default: true) */\n removeUnusedFonts?: boolean;\n /** Remove empty CSS rules (default: true) */\n removeEmptyRules?: boolean;\n /** Aggregate duplicate selectors (default: true) */\n aggregateDuplicateSelectors?: boolean;\n /** Reference CSS to deduplicate against (for scoped CSS) */\n referenceCss?: string;\n /** Scope class used in this CSS (for normalizing selectors during deduplication) */\n scopeClass?: string;\n}\n\n/**\n * Optimizes CSS by:\n * 1. Removing unused @font-face declarations\n * 2. Removing empty rules\n * 3. Aggregating duplicate selectors\n *\n * Returns the optimized CSS and validation results.\n */\nasync function optimizeCSS(\n css: string,\n options?: OptimizeCSSOptions,\n): Promise<{\n css: string;\n validation: { valid: boolean; errors: string[] };\n stats: {\n originalSize: number;\n originalSizeGzip: number;\n optimizedSize: number;\n fontFacesRemoved: number;\n emptyRulesRemoved: number;\n };\n}> {\n const originalSize = Buffer.byteLength(css, 'utf8');\n const originalSizeGzip = gzipSync(css).length;\n\n // Count font-faces before\n const fontFacesBefore = (css.match(/@font-face/g) || []).length;\n\n // Count rules before (rough estimate)\n const rulesBefore = (css.match(/\\{[^}]*\\}/g) || []).length;\n\n // Build list of plugins based on options (all enabled by default)\n const plugins: postcss.AcceptedPlugin[] = [];\n\n if (options?.removeUnusedFonts !== false) {\n plugins.push(removeUnusedFontFaces());\n }\n\n // Remove redundant .uds-color-mode-light rules (light is default on :root)\n plugins.push(removeRedundantLightModePlugin());\n\n // If reference CSS is provided, deduplicate all matching CSS (font-faces, keyframes, rules)\n if (options?.referenceCss) {\n const referenceData = extractCSSReferenceData(options.referenceCss);\n if (\n referenceData.fontFaces.size > 0 ||\n referenceData.keyframes.size > 0 ||\n referenceData.rules.size > 0\n ) {\n plugins.push(removeDuplicateCss(referenceData, options.scopeClass));\n }\n }\n\n if (options?.removeEmptyRules !== false) {\n plugins.push(removeEmptyRulesPlugin());\n }\n\n if (options?.aggregateDuplicateSelectors !== false) {\n plugins.push(aggregateDuplicateSelectorsPlugin());\n }\n\n // Apply optimizations\n const result =\n plugins.length > 0 ? await postcss(plugins).process(css, { from: undefined }) : { css };\n\n const optimizedCSS = result.css;\n const optimizedSize = Buffer.byteLength(optimizedCSS, 'utf8');\n\n // Count font-faces after\n const fontFacesAfter = (optimizedCSS.match(/@font-face/g) || []).length;\n\n // Count rules after\n const rulesAfter = (optimizedCSS.match(/\\{[^}]*\\}/g) || []).length;\n\n // Validate the result\n const validation = validateCSS(optimizedCSS);\n\n return {\n css: optimizedCSS,\n validation,\n stats: {\n originalSize,\n originalSizeGzip,\n optimizedSize,\n fontFacesRemoved: fontFacesBefore - fontFacesAfter,\n emptyRulesRemoved: Math.max(0, rulesBefore - rulesAfter),\n },\n };\n}\n\nexport {\n aggregateDuplicateSelectorsPlugin as aggregateDuplicateSelectors,\n optimizeCSS,\n type OptimizeCSSOptions,\n removeEmptyRulesPlugin as removeEmptyRules,\n removeUnusedFontFaces,\n validateCSS,\n};\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
2
- const require_index = require('../../../palette/dist/index.cjs');
3
- const require_index$1 = require('../../../css-tokens/dist/index.cjs');
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
3
  const require_entries = require('./entries.cjs');
5
4
  const require_mapValues = require('./mapValues.cjs');
6
5
  const require_opacity = require('./opacity.cjs');
6
+ let _yahoo_uds_css_tokens = require("@yahoo/uds-css-tokens");
7
+ let _yahoo_uds_palette = require("@yahoo/uds-palette");
7
8
 
8
- //#region ../tailwind/dist/utils/parseTokens.js
9
- /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
9
+ //#region src/utils/parseTokens.ts
10
10
  /** Converts a SpectrumValueEntry to a space-separated RGB string for CSS variables. */
11
11
  function spectrumValueToRgbString(value) {
12
12
  const { r, g, b } = value.rgb;
@@ -19,10 +19,10 @@ function shouldIncludeOpacity(opacity) {
19
19
  }
20
20
  function resolveFocusRingColor(color) {
21
21
  switch (color.type) {
22
- case "spectrum": return `rgb(var(--${require_index$1.SPECTRUM_COLOR_PREFIX}-${color.value.hue}-${color.value.step}))`;
23
- case "line": return `rgb(var(--${require_index$1.LINE_COLOR_PREFIX}-${color.value}))`;
24
- case "always": return require_index.alwaysPalette[color.value];
25
- default: return `rgb(var(--${require_index$1.SPECTRUM_COLOR_PREFIX}-gray-15))`;
22
+ case "spectrum": return `rgb(var(--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-${color.value.hue}-${color.value.step}))`;
23
+ case "line": return `rgb(var(--${_yahoo_uds_css_tokens.LINE_COLOR_PREFIX}-${color.value}))`;
24
+ case "always": return _yahoo_uds_palette.alwaysPalette[color.value];
25
+ default: return `rgb(var(--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-gray-15))`;
26
26
  }
27
27
  }
28
28
  function transformColors(colors, elevationPresets, focusRingConfig) {
@@ -33,7 +33,7 @@ function transformColors(colors, elevationPresets, focusRingConfig) {
33
33
  palette: {}
34
34
  };
35
35
  for (const [hue, hueSteps] of require_entries.entries(spectrum)) for (const [hueStep, value] of require_entries.entries(hueSteps)) {
36
- const varKey = `--${require_index$1.SPECTRUM_COLOR_PREFIX}-${`${hue}-${hueStep}`}`;
36
+ const varKey = `--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-${`${hue}-${hueStep}`}`;
37
37
  if (!tailwindConfig.spectrum[hue]) tailwindConfig.spectrum[hue] = {};
38
38
  tailwindConfig.spectrum[hue][hueStep] = `rgb(var(${varKey}))`;
39
39
  rootVars[varKey] = spectrumValueToRgbString(value);
@@ -41,8 +41,8 @@ function transformColors(colors, elevationPresets, focusRingConfig) {
41
41
  require_entries.entries(palette).forEach(([paletteType, paletteConfig]) => {
42
42
  for (const [paletteKey, { hue, step, opacity }] of Object.entries(paletteConfig)) {
43
43
  if (!(paletteType in tailwindConfig.palette)) tailwindConfig.palette[paletteType] = {};
44
- const name = `--${require_index$1.UDS_PREFIX}-${paletteType}-color-${paletteKey}`;
45
- rootVars[name] = `var(--${require_index$1.SPECTRUM_COLOR_PREFIX}-${hue}-${step})`;
44
+ const name = `--${_yahoo_uds_css_tokens.UDS_PREFIX}-${paletteType}-color-${paletteKey}`;
45
+ rootVars[name] = `var(--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-${hue}-${step})`;
46
46
  const opacityValue = opacity !== void 0 ? require_opacity.parseOpacityStep(opacity) : void 0;
47
47
  tailwindConfig.palette[paletteType][paletteKey] = shouldIncludeOpacity(opacityValue) ? `rgb(var(${name}) / ${opacityValue}%)` : `rgb(var(${name}))`;
48
48
  }
@@ -52,51 +52,51 @@ function transformColors(colors, elevationPresets, focusRingConfig) {
52
52
  if (key === "finalBackgroundValue") {
53
53
  const { r, g, b, a } = elevationPreset[key];
54
54
  const alpha = parseInt(a) / 100;
55
- const name = `--${require_index$1.BACKGROUND_COLOR_PREFIX}-elevation-${level}`;
55
+ const name = `--${_yahoo_uds_css_tokens.BACKGROUND_COLOR_PREFIX}-elevation-${level}`;
56
56
  rootVars[name] = `rgba(${r}, ${g}, ${b}, ${alpha})`;
57
57
  }
58
58
  if (key === "borderColor") {
59
- const name = `--${require_index$1.LINE_COLOR_PREFIX}-elevation-${level}`;
59
+ const name = `--${_yahoo_uds_css_tokens.LINE_COLOR_PREFIX}-elevation-${level}`;
60
60
  switch (elevationPreset[key].type) {
61
61
  case "always":
62
- rootVars[name] = require_index.alwaysPalette[elevationPreset[key].value];
62
+ rootVars[name] = _yahoo_uds_palette.alwaysPalette[elevationPreset[key].value];
63
63
  break;
64
64
  case "spectrum":
65
- rootVars[name] = `rgb(var(--${require_index$1.SPECTRUM_COLOR_PREFIX}-${elevationPreset[key].value.hue}-${elevationPreset[key].value.step}))`;
65
+ rootVars[name] = `rgb(var(--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-${elevationPreset[key].value.hue}-${elevationPreset[key].value.step}))`;
66
66
  break;
67
67
  case "line":
68
- rootVars[name] = `rgb(var(--${require_index$1.LINE_COLOR_PREFIX}-${elevationPreset[key].value}))`;
68
+ rootVars[name] = `rgb(var(--${_yahoo_uds_css_tokens.LINE_COLOR_PREFIX}-${elevationPreset[key].value}))`;
69
69
  break;
70
70
  }
71
71
  }
72
72
  if (key === "borderWidth") {
73
- const name = `--${require_index$1.BORDER_WIDTH_PREFIX}-elevation-${level}`;
74
- rootVars[name] = `var(--${require_index$1.BORDER_WIDTH_PREFIX}-${elevationPreset[key]})`;
73
+ const name = `--${_yahoo_uds_css_tokens.BORDER_WIDTH_PREFIX}-elevation-${level}`;
74
+ rootVars[name] = `var(--${_yahoo_uds_css_tokens.BORDER_WIDTH_PREFIX}-${elevationPreset[key]})`;
75
75
  }
76
76
  if (key === "dropShadow") {
77
- const name = `--${require_index$1.DROP_SHADOW_PREFIX}-elevation-${level}`;
77
+ const name = `--${_yahoo_uds_css_tokens.DROP_SHADOW_PREFIX}-elevation-${level}`;
78
78
  const configValue = elevationPreset[key];
79
- rootVars[name] = Array.isArray(configValue) ? configValue.map((preset, index) => require_index$1.getShadowLayerValue({
79
+ rootVars[name] = Array.isArray(configValue) ? configValue.map((preset, index) => (0, _yahoo_uds_css_tokens.getShadowLayerValue)({
80
80
  preset,
81
81
  prefix: index > 0 ? `${index + 1}` : void 0,
82
82
  shadowType: "drop"
83
- })).join(", ") : `var(--${require_index$1.DROP_SHADOW_PREFIX}-${elevationPreset[key]})`;
83
+ })).join(", ") : `var(--${_yahoo_uds_css_tokens.DROP_SHADOW_PREFIX}-${elevationPreset[key]})`;
84
84
  }
85
85
  if (key === "backgroundBlurRadius") {
86
- const name = `--${require_index$1.BACKGROUND_BLUR_RADIUS_PREFIX}-elevation-${level}`;
86
+ const name = `--${_yahoo_uds_css_tokens.BACKGROUND_BLUR_RADIUS_PREFIX}-elevation-${level}`;
87
87
  rootVars[name] = `blur(${elevationPreset[key]}px)`;
88
88
  }
89
89
  if (key === "fallbackBlurredBackgroundValue") {
90
90
  const { r, g, b } = elevationPreset[key];
91
- const name = `--${require_index$1.BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX}-elevation-${level}`;
91
+ const name = `--${_yahoo_uds_css_tokens.BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX}-elevation-${level}`;
92
92
  rootVars[name] = `rgb(${r}, ${g}, ${b})`;
93
93
  }
94
94
  });
95
95
  });
96
- rootVars[`--${require_index$1.OUTLINE_PREFIX}-offset`] = focusRingConfig ? `${focusRingConfig.offset}px` : "2px";
97
- rootVars[`--${require_index$1.OUTLINE_PREFIX}-width`] = focusRingConfig ? `${focusRingConfig.width}px` : "2px";
98
- rootVars[`--${require_index$1.OUTLINE_PREFIX}-style`] = "solid";
99
- rootVars[`--${require_index$1.OUTLINE_PREFIX}-color`] = focusRingConfig ? resolveFocusRingColor(focusRingConfig.color) : `rgb(var(--${require_index$1.SPECTRUM_COLOR_PREFIX}-gray-15))`;
96
+ rootVars[`--${_yahoo_uds_css_tokens.OUTLINE_PREFIX}-offset`] = focusRingConfig ? `${focusRingConfig.offset}px` : "2px";
97
+ rootVars[`--${_yahoo_uds_css_tokens.OUTLINE_PREFIX}-width`] = focusRingConfig ? `${focusRingConfig.width}px` : "2px";
98
+ rootVars[`--${_yahoo_uds_css_tokens.OUTLINE_PREFIX}-style`] = "solid";
99
+ rootVars[`--${_yahoo_uds_css_tokens.OUTLINE_PREFIX}-color`] = focusRingConfig ? resolveFocusRingColor(focusRingConfig.color) : `rgb(var(--${_yahoo_uds_css_tokens.SPECTRUM_COLOR_PREFIX}-gray-15))`;
100
100
  return {
101
101
  _vars: rootVars,
102
102
  _raw: colors,
@@ -140,10 +140,10 @@ function parseTokens(config) {
140
140
  },
141
141
  scaleMode: require_mapValues.mapValues(scaleMode, ({ borderRadius, borderWidth, avatarSizes, iconSizes }) => {
142
142
  return {
143
- borderRadius: transformNumericToPx(require_index$1.BORDER_RADIUS_PREFIX, borderRadius),
144
- borderWidth: transformNumericToPx(require_index$1.BORDER_WIDTH_PREFIX, borderWidth),
145
- avatarSizes: transformNumericToPx(require_index$1.AVATAR_SIZE_PREFIX, avatarSizes),
146
- iconSizes: transformNumericToPx(require_index$1.ICON_SIZE_PREFIX, iconSizes)
143
+ borderRadius: transformNumericToPx(_yahoo_uds_css_tokens.BORDER_RADIUS_PREFIX, borderRadius),
144
+ borderWidth: transformNumericToPx(_yahoo_uds_css_tokens.BORDER_WIDTH_PREFIX, borderWidth),
145
+ avatarSizes: transformNumericToPx(_yahoo_uds_css_tokens.AVATAR_SIZE_PREFIX, avatarSizes),
146
+ iconSizes: transformNumericToPx(_yahoo_uds_css_tokens.ICON_SIZE_PREFIX, iconSizes)
147
147
  };
148
148
  })
149
149
  };
@@ -1,8 +1,7 @@
1
1
 
2
- import { ColorMode, ColorsConfig, ElevationLevel, ElevationPreset, FocusRingConfig, Hue, HueStep, PaletteConfig, PaletteType, ScaleMode } from "../../../types/dist/index.cjs";
3
- import { UniversalTokensConfig } from "../../../config/dist/index.cjs";
2
+ import { UniversalTokensConfig } from "@yahoo/uds-config";
3
+ import { ColorMode, ColorsConfig, ElevationLevel, ElevationPreset, FocusRingConfig, Hue, HueStep, PaletteConfig, PaletteType, ScaleMode } from "@yahoo/uds-types";
4
4
 
5
- //#region ../tailwind/dist/utils/parseTokens.d.ts
6
5
  //#region src/utils/parseTokens.d.ts
7
6
  type ColorModeElevationPresets = Partial<Record<ElevationLevel, ElevationPreset>>;
8
7
  declare function transformColors(colors: ColorsConfig, elevationPresets: ColorModeElevationPresets, focusRingConfig?: FocusRingConfig): {
@@ -27,6 +26,7 @@ type WebTokens = Omit<UniversalTokensConfig, 'colorMode' | 'scaleMode' | 'fontFa
27
26
  iconSizes: ReturnType<typeof transformNumericToPx>;
28
27
  }>;
29
28
  };
30
- declare function parseTokens(config: UniversalTokensConfig): WebTokens; //#endregion
29
+ declare function parseTokens(config: UniversalTokensConfig): WebTokens;
31
30
  //#endregion
32
- export { type WebTokens, parseTokens };
31
+ export { type WebTokens, parseTokens };
32
+ //# sourceMappingURL=parseTokens.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTokens.d.cts","names":[],"sources":["../../src/utils/parseTokens.ts"],"mappings":";;;;;KAmDK,yBAAA,GAA4B,OAAA,CAAQ,MAAA,CAAO,cAAA,EAAgB,eAAA;AAAA,iBAevD,eAAA,CACP,MAAA,EAAQ,YAAA,EACR,gBAAA,EAAkB,yBAAA,EAClB,eAAA,GAAkB,eAAA;;;;cAKA,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,OAAA;uBAEzB,WAAA,GAAc,MAAA,OAAa,aAAA,CAAc,GAAA;EAAA;AAAA;AAAA,iBAoH9C,oBAAA,WAA+B,MAAA,iBAAA,CAAwB,MAAA,UAAgB,MAAA,EAAQ,CAAA;SAGrE,MAAA;QACD,MAAA;kBACU,MAAA;AAAA;AAAA,KAkBvB,SAAA,GAAY,IAAA,CAAK,qBAAA;EACpB,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,UAAA,QAAkB,eAAA;EAC/C,SAAA,EAAW,MAAA,CACT,SAAA;IAEE,YAAA,EAAc,UAAA,QAAkB,oBAAA;IAChC,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,SAAA,EAAW,UAAA,QAAkB,oBAAA;EAAA;AAAA;AAAA,iBAsBnB,WAAA,CAAY,MAAA,EAAQ,qBAAA,GAAwB,SAAA"}
@@ -1,8 +1,7 @@
1
1
 
2
- import { ColorMode, ColorsConfig, ElevationLevel, ElevationPreset, FocusRingConfig, Hue, HueStep, PaletteConfig, PaletteType, ScaleMode } from "../../../types/dist/index.js";
3
- import { UniversalTokensConfig } from "../../../config/dist/index.js";
2
+ import { UniversalTokensConfig } from "@yahoo/uds-config";
3
+ import { ColorMode, ColorsConfig, ElevationLevel, ElevationPreset, FocusRingConfig, Hue, HueStep, PaletteConfig, PaletteType, ScaleMode } from "@yahoo/uds-types";
4
4
 
5
- //#region ../tailwind/dist/utils/parseTokens.d.ts
6
5
  //#region src/utils/parseTokens.d.ts
7
6
  type ColorModeElevationPresets = Partial<Record<ElevationLevel, ElevationPreset>>;
8
7
  declare function transformColors(colors: ColorsConfig, elevationPresets: ColorModeElevationPresets, focusRingConfig?: FocusRingConfig): {
@@ -27,6 +26,7 @@ type WebTokens = Omit<UniversalTokensConfig, 'colorMode' | 'scaleMode' | 'fontFa
27
26
  iconSizes: ReturnType<typeof transformNumericToPx>;
28
27
  }>;
29
28
  };
30
- declare function parseTokens(config: UniversalTokensConfig): WebTokens; //#endregion
29
+ declare function parseTokens(config: UniversalTokensConfig): WebTokens;
31
30
  //#endregion
32
- export { type WebTokens, parseTokens };
31
+ export { type WebTokens, parseTokens };
32
+ //# sourceMappingURL=parseTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTokens.d.ts","names":[],"sources":["../../src/utils/parseTokens.ts"],"mappings":";;;;;KAmDK,yBAAA,GAA4B,OAAA,CAAQ,MAAA,CAAO,cAAA,EAAgB,eAAA;AAAA,iBAevD,eAAA,CACP,MAAA,EAAQ,YAAA,EACR,gBAAA,EAAkB,yBAAA,EAClB,eAAA,GAAkB,eAAA;;;;cAKA,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,OAAA;uBAEzB,WAAA,GAAc,MAAA,OAAa,aAAA,CAAc,GAAA;EAAA;AAAA;AAAA,iBAoH9C,oBAAA,WAA+B,MAAA,iBAAA,CAAwB,MAAA,UAAgB,MAAA,EAAQ,CAAA;SAGrE,MAAA;QACD,MAAA;kBACU,MAAA;AAAA;AAAA,KAkBvB,SAAA,GAAY,IAAA,CAAK,qBAAA;EACpB,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,UAAA,QAAkB,eAAA;EAC/C,SAAA,EAAW,MAAA,CACT,SAAA;IAEE,YAAA,EAAc,UAAA,QAAkB,oBAAA;IAChC,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,SAAA,EAAW,UAAA,QAAkB,oBAAA;EAAA;AAAA;AAAA,iBAsBnB,WAAA,CAAY,MAAA,EAAQ,qBAAA,GAAwB,SAAA"}
@@ -1,12 +1,11 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
2
- import { alwaysPalette } from "../../../palette/dist/index.js";
3
- import { AVATAR_SIZE_PREFIX, BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX, BACKGROUND_BLUR_RADIUS_PREFIX, BACKGROUND_COLOR_PREFIX, BORDER_RADIUS_PREFIX, BORDER_WIDTH_PREFIX, DROP_SHADOW_PREFIX, ICON_SIZE_PREFIX, LINE_COLOR_PREFIX, OUTLINE_PREFIX, SPECTRUM_COLOR_PREFIX, UDS_PREFIX, getShadowLayerValue } from "../../../css-tokens/dist/index.js";
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
4
2
  import { entries } from "./entries.js";
5
3
  import { mapValues } from "./mapValues.js";
6
4
  import { parseOpacityStep } from "./opacity.js";
5
+ import { AVATAR_SIZE_PREFIX, BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX, BACKGROUND_BLUR_RADIUS_PREFIX, BACKGROUND_COLOR_PREFIX, BORDER_RADIUS_PREFIX, BORDER_WIDTH_PREFIX, DROP_SHADOW_PREFIX, ICON_SIZE_PREFIX, LINE_COLOR_PREFIX, OUTLINE_PREFIX, SPECTRUM_COLOR_PREFIX, UDS_PREFIX, getShadowLayerValue } from "@yahoo/uds-css-tokens";
6
+ import { alwaysPalette } from "@yahoo/uds-palette";
7
7
 
8
- //#region ../tailwind/dist/utils/parseTokens.js
9
- /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
8
+ //#region src/utils/parseTokens.ts
10
9
  /** Converts a SpectrumValueEntry to a space-separated RGB string for CSS variables. */
11
10
  function spectrumValueToRgbString(value) {
12
11
  const { r, g, b } = value.rgb;
@@ -150,4 +149,5 @@ function parseTokens(config) {
150
149
  }
151
150
 
152
151
  //#endregion
153
- export { parseTokens };
152
+ export { parseTokens };
153
+ //# sourceMappingURL=parseTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTokens.js","names":[],"sources":["../../src/utils/parseTokens.ts"],"sourcesContent":["import type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport {\n AVATAR_SIZE_PREFIX,\n BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX,\n BACKGROUND_BLUR_RADIUS_PREFIX,\n BACKGROUND_COLOR_PREFIX,\n BORDER_RADIUS_PREFIX,\n BORDER_WIDTH_PREFIX,\n DROP_SHADOW_PREFIX,\n getShadowLayerValue,\n ICON_SIZE_PREFIX,\n LINE_COLOR_PREFIX,\n OUTLINE_PREFIX,\n SPECTRUM_COLOR_PREFIX,\n UDS_PREFIX,\n} from '@yahoo/uds-css-tokens';\nimport { alwaysPalette } from '@yahoo/uds-palette';\nimport type {\n ColorMode,\n ColorsConfig,\n ElevationLevel,\n ElevationPreset,\n FocusRingColor,\n FocusRingConfig,\n Hue,\n HueStep,\n OpacityStep,\n PaletteConfig,\n PaletteType,\n ScaleMode,\n} from '@yahoo/uds-types';\n\nimport { entries } from './entries';\nimport { mapValues } from './mapValues';\nimport { parseOpacityStep } from './opacity';\n\n/** Converts a SpectrumValueEntry to a space-separated RGB string for CSS variables. */\nfunction spectrumValueToRgbString(value: { rgb: { r: number; g: number; b: number } }): string {\n const { r, g, b } = value.rgb;\n return `${r} ${g} ${b}`;\n}\n\nfunction shouldIncludeOpacity(opacity: OpacityStep | undefined): boolean {\n if (!opacity) {\n return false;\n }\n\n const parsedOpacity = parseInt(opacity, 10);\n return !isNaN(parsedOpacity) && parsedOpacity !== 100;\n}\n\ntype ColorModeElevationPresets = Partial<Record<ElevationLevel, ElevationPreset>>;\n\nfunction resolveFocusRingColor(color: FocusRingColor): string {\n switch (color.type) {\n case 'spectrum':\n return `rgb(var(--${SPECTRUM_COLOR_PREFIX}-${color.value.hue}-${color.value.step}))`;\n case 'line':\n return `rgb(var(--${LINE_COLOR_PREFIX}-${color.value}))`;\n case 'always':\n return alwaysPalette[color.value as keyof typeof alwaysPalette];\n default:\n return `rgb(var(--${SPECTRUM_COLOR_PREFIX}-gray-15))`;\n }\n}\n\nfunction transformColors(\n colors: ColorsConfig,\n elevationPresets: ColorModeElevationPresets,\n focusRingConfig?: FocusRingConfig,\n) {\n const { palette, spectrum } = colors;\n const rootVars: Record<string, string> = {};\n const tailwindConfig = {\n spectrum: {} as Record<Hue, Record<HueStep, string>>,\n palette: {} as {\n [key in PaletteType]: Record<keyof PaletteConfig[key], string>;\n },\n };\n\n for (const [hue, hueSteps] of entries(spectrum)) {\n for (const [hueStep, value] of entries(hueSteps)) {\n const name = `${hue}-${hueStep}`;\n const varKey = `--${SPECTRUM_COLOR_PREFIX}-${name}`;\n if (!tailwindConfig.spectrum[hue]) {\n tailwindConfig.spectrum[hue] = {} as Record<HueStep, string>;\n }\n tailwindConfig.spectrum[hue][hueStep] = `rgb(var(${varKey}))`;\n rootVars[varKey] = spectrumValueToRgbString(value);\n }\n }\n\n entries(palette).forEach(([paletteType, paletteConfig]) => {\n for (const [paletteKey, { hue, step, opacity }] of Object.entries(paletteConfig)) {\n if (!(paletteType in tailwindConfig.palette)) {\n // @ts-expect-error we fill this object later\n tailwindConfig.palette[paletteType] = {};\n }\n const name = `--${UDS_PREFIX}-${paletteType}-color-${paletteKey}`;\n rootVars[name] = `var(--${SPECTRUM_COLOR_PREFIX}-${hue}-${step})`;\n const opacityValue = opacity !== undefined ? parseOpacityStep(opacity) : undefined;\n // @ts-expect-error this is fine\n tailwindConfig.palette[paletteType][paletteKey] = shouldIncludeOpacity(opacityValue)\n ? `rgb(var(${name}) / ${opacityValue}%)`\n : `rgb(var(${name}))`;\n }\n });\n\n // Elevation levels\n entries(elevationPresets).forEach(([level, elevationPreset]) => {\n if (elevationPreset) {\n entries(elevationPreset).forEach(([key]) => {\n // background color\n if (key === 'finalBackgroundValue') {\n const { r, g, b, a } = elevationPreset[key];\n const alpha = parseInt(a) / 100;\n const name = `--${BACKGROUND_COLOR_PREFIX}-elevation-${level}`;\n rootVars[name] = `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n // border color\n if (key === 'borderColor') {\n const name = `--${LINE_COLOR_PREFIX}-elevation-${level}`;\n\n switch (elevationPreset[key].type) {\n case 'always':\n rootVars[name] = alwaysPalette[elevationPreset[key].value];\n break;\n case 'spectrum':\n rootVars[name] =\n `rgb(var(--${SPECTRUM_COLOR_PREFIX}-${elevationPreset[key].value.hue}-${elevationPreset[key].value.step}))`;\n break;\n case 'line':\n rootVars[name] = `rgb(var(--${LINE_COLOR_PREFIX}-${elevationPreset[key].value}))`;\n break;\n }\n }\n\n // border width\n if (key === 'borderWidth') {\n const name = `--${BORDER_WIDTH_PREFIX}-elevation-${level}`;\n rootVars[name] = `var(--${BORDER_WIDTH_PREFIX}-${elevationPreset[key]})`;\n }\n\n // drop shadow\n if (key === 'dropShadow') {\n const name = `--${DROP_SHADOW_PREFIX}-elevation-${level}`;\n const configValue = elevationPreset[key];\n\n rootVars[name] = Array.isArray(configValue)\n ? configValue\n .map((preset, index) =>\n getShadowLayerValue({\n preset,\n prefix: index > 0 ? `${index + 1}` : undefined,\n shadowType: 'drop',\n }),\n )\n .join(', ')\n : `var(--${DROP_SHADOW_PREFIX}-${elevationPreset[key]})`;\n }\n\n // background blur radius\n if (key === 'backgroundBlurRadius') {\n const name = `--${BACKGROUND_BLUR_RADIUS_PREFIX}-elevation-${level}`;\n rootVars[name] = `blur(${elevationPreset[key]}px)`;\n }\n\n // background blur fallback value\n if (key === 'fallbackBlurredBackgroundValue') {\n const { r, g, b } = elevationPreset[key];\n const name = `--${BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX}-elevation-${level}`;\n rootVars[name] = `rgb(${r}, ${g}, ${b})`;\n }\n });\n }\n });\n\n rootVars[`--${OUTLINE_PREFIX}-offset`] = focusRingConfig ? `${focusRingConfig.offset}px` : '2px';\n rootVars[`--${OUTLINE_PREFIX}-width`] = focusRingConfig ? `${focusRingConfig.width}px` : '2px';\n rootVars[`--${OUTLINE_PREFIX}-style`] = 'solid';\n rootVars[`--${OUTLINE_PREFIX}-color`] = focusRingConfig\n ? resolveFocusRingColor(focusRingConfig.color)\n : `rgb(var(--${SPECTRUM_COLOR_PREFIX}-gray-15))`;\n\n return {\n _vars: rootVars,\n _raw: colors,\n tailwindConfig,\n };\n}\n\nfunction transformNumericToPx<T extends Record<string, number>>(prefix: string, config: T) {\n if (!config) {\n return {\n _vars: {} as Record<string, string>,\n _raw: {} as Record<string, number>,\n tailwindConfig: {} as Record<string, string>,\n };\n }\n const rootVars: Record<string, string> = {};\n const tailwindConfig = {} as Record<string, string>;\n for (const [variant, value] of entries(config)) {\n const rootVarKey = `--${prefix}-${variant}`;\n const rootVarValue = `${value}px`;\n rootVars[rootVarKey] = rootVarValue;\n tailwindConfig[variant] = `var(${rootVarKey})`;\n }\n return {\n _vars: rootVars,\n _raw: config,\n tailwindConfig,\n };\n}\n\ntype WebTokens = Omit<UniversalTokensConfig, 'colorMode' | 'scaleMode' | 'fontFamily'> & {\n colorMode: Record<ColorMode, ReturnType<typeof transformColors>>;\n scaleMode: Record<\n ScaleMode,\n {\n borderRadius: ReturnType<typeof transformNumericToPx>;\n borderWidth: ReturnType<typeof transformNumericToPx>;\n avatarSizes: ReturnType<typeof transformNumericToPx>;\n iconSizes: ReturnType<typeof transformNumericToPx>;\n }\n >;\n};\n\nfunction getElevationPresetsForColorMode(\n colorMode: ColorMode,\n config: UniversalTokensConfig,\n): ColorModeElevationPresets {\n if (!config.elevation) {\n return {};\n }\n\n const result: ColorModeElevationPresets = {};\n\n entries(config.elevation).forEach(([level, levelPreset]) => {\n result[level] = levelPreset[colorMode];\n });\n\n return result;\n}\n\nexport function parseTokens(config: UniversalTokensConfig): WebTokens {\n const { colorMode, scaleMode } = config;\n\n return {\n ...config,\n colorMode: {\n light: transformColors(\n colorMode.light,\n getElevationPresetsForColorMode('light', config),\n config.focusRing?.light,\n ),\n dark: transformColors(\n colorMode.dark,\n getElevationPresetsForColorMode('dark', config),\n config.focusRing?.dark,\n ),\n },\n scaleMode: mapValues(scaleMode, ({ borderRadius, borderWidth, avatarSizes, iconSizes }) => {\n return {\n borderRadius: transformNumericToPx(BORDER_RADIUS_PREFIX, borderRadius),\n borderWidth: transformNumericToPx(BORDER_WIDTH_PREFIX, borderWidth),\n avatarSizes: transformNumericToPx(AVATAR_SIZE_PREFIX, avatarSizes),\n iconSizes: transformNumericToPx(ICON_SIZE_PREFIX, iconSizes),\n };\n }),\n };\n}\n\nexport { type WebTokens };\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
2
-
3
- //#region ../tailwind/dist/utils/postcssPreserveVars.js
4
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+
3
+ //#region src/utils/postcssPreserveVars.ts
5
4
  const PRESERVE_SELECTOR = "._uds-preserve-vars";
6
5
  /**
7
6
  * PostCSS plugin to preserve CSS variables from being pruned.
@@ -1,6 +1,5 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
2
- //#region ../tailwind/dist/utils/postcssPreserveVars.js
3
1
  /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+ //#region src/utils/postcssPreserveVars.ts
4
3
  const PRESERVE_SELECTOR = "._uds-preserve-vars";
5
4
  /**
6
5
  * PostCSS plugin to preserve CSS variables from being pruned.
@@ -62,4 +61,5 @@ function preserveVarsCleanup() {
62
61
  preserveVarsCleanup.postcss = true;
63
62
 
64
63
  //#endregion
65
- export { preserveVars, preserveVarsCleanup };
64
+ export { preserveVars, preserveVarsCleanup };
65
+ //# sourceMappingURL=postcssPreserveVars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postcssPreserveVars.js","names":[],"sources":["../../src/utils/postcssPreserveVars.ts"],"sourcesContent":["import type { Plugin } from 'postcss';\n\ninterface PreserveVarsOptions {\n /** Variable name patterns to preserve (regex or string prefix) */\n preserve?: (string | RegExp)[];\n}\n\nconst PRESERVE_SELECTOR = '._uds-preserve-vars';\n\n/**\n * PostCSS plugin to preserve CSS variables from being pruned.\n *\n * Runs BEFORE postcss-prune-var to inject fake usages for preserved variables,\n * preventing them from being removed.\n *\n * @example\n * ```ts\n * postcss([\n * preserveVars({ preserve: ['--uds-motion-'] }),\n * pruneVar(),\n * preserveVarsCleanup(),\n * ])\n * ```\n */\nfunction preserveVars(options: PreserveVarsOptions = {}): Plugin {\n const { preserve = [] } = options;\n\n return {\n postcssPlugin: 'postcss-preserve-vars',\n Once(root) {\n if (preserve.length === 0) {\n return;\n }\n\n // Collect all CSS variable declarations\n const declaredVars = new Set<string>();\n\n root.walkDecls((decl) => {\n if (decl.prop.startsWith('--')) {\n declaredVars.add(decl.prop);\n }\n });\n\n // Find variables that match preserve patterns\n const varsToPreserve: string[] = [];\n\n for (const varName of declaredVars) {\n for (const pattern of preserve) {\n const matches =\n pattern instanceof RegExp ? pattern.test(varName) : varName.startsWith(pattern);\n\n if (matches) {\n varsToPreserve.push(varName);\n break;\n }\n }\n }\n\n if (varsToPreserve.length === 0) {\n return;\n }\n\n // Add a temporary rule that \"uses\" all preserved variables\n // This prevents postcss-prune-var from removing them\n const varUsages = varsToPreserve.map((v) => `var(${v})`).join(' ');\n\n root.append({\n selector: PRESERVE_SELECTOR,\n nodes: [{ prop: 'content', value: `\"${varUsages}\"` }],\n });\n },\n };\n}\n\npreserveVars.postcss = true;\n\n/**\n * PostCSS plugin to remove the temporary preserve rule after pruning.\n * Run this AFTER postcss-prune-var.\n */\nfunction preserveVarsCleanup(): Plugin {\n return {\n postcssPlugin: 'postcss-preserve-vars-cleanup',\n Once(root) {\n root.walkRules((rule) => {\n if (rule.selector === PRESERVE_SELECTOR) {\n rule.remove();\n }\n });\n },\n };\n}\n\npreserveVarsCleanup.postcss = true;\n\nexport { preserveVars, preserveVarsCleanup };\nexport type { PreserveVarsOptions };\n"],"mappings":";;AAOA,MAAM,oBAAoB;;;;;;;;;;;;;;;;AAiB1B,SAAS,aAAa,UAA+B,EAAE,EAAU;CAC/D,MAAM,EAAE,WAAW,EAAE,KAAK;AAE1B,QAAO;EACL,eAAe;EACf,KAAK,MAAM;AACT,OAAI,SAAS,WAAW,EACtB;GAIF,MAAM,+BAAe,IAAI,KAAa;AAEtC,QAAK,WAAW,SAAS;AACvB,QAAI,KAAK,KAAK,WAAW,KAAK,CAC5B,cAAa,IAAI,KAAK,KAAK;KAE7B;GAGF,MAAM,iBAA2B,EAAE;AAEnC,QAAK,MAAM,WAAW,aACpB,MAAK,MAAM,WAAW,SAIpB,KAFE,mBAAmB,SAAS,QAAQ,KAAK,QAAQ,GAAG,QAAQ,WAAW,QAAQ,EAEpE;AACX,mBAAe,KAAK,QAAQ;AAC5B;;AAKN,OAAI,eAAe,WAAW,EAC5B;GAKF,MAAM,YAAY,eAAe,KAAK,MAAM,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI;AAElE,QAAK,OAAO;IACV,UAAU;IACV,OAAO,CAAC;KAAE,MAAM;KAAW,OAAO,IAAI,UAAU;KAAI,CAAC;IACtD,CAAC;;EAEL;;AAGH,aAAa,UAAU;;;;;AAMvB,SAAS,sBAA8B;AACrC,QAAO;EACL,eAAe;EACf,KAAK,MAAM;AACT,QAAK,WAAW,SAAS;AACvB,QAAI,KAAK,aAAa,kBACpB,MAAK,QAAQ;KAEf;;EAEL;;AAGH,oBAAoB,UAAU"}
@@ -1,10 +1,12 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
2
- const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
3
- let lodash_es = require("lodash-es");
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
3
  let ts_morph = require("ts-morph");
4
+ let lodash_camelCase_js = require("lodash/camelCase.js");
5
+ lodash_camelCase_js = require_runtime.__toESM(lodash_camelCase_js);
6
+ let lodash_isEmpty_js = require("lodash/isEmpty.js");
7
+ lodash_isEmpty_js = require_runtime.__toESM(lodash_isEmpty_js);
5
8
 
6
- //#region ../tailwind/dist/utils/tsMorph.js
7
- /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
9
+ //#region src/utils/tsMorph.ts
8
10
  /** Determines if an expression is using React.forwardRef. */
9
11
  function isForwardRefExpression(node) {
10
12
  if (ts_morph.Node.isCallExpression(node)) {
@@ -96,9 +98,9 @@ const getUsedPropsInReference = (reference, variants) => {
96
98
  const values = [];
97
99
  if (stringLiterals.length !== 0) stringLiterals.forEach((stringLiteral) => values.push(stringLiteral.getLiteralText()));
98
100
  const typeName = attribute.getFirstChildByKindOrThrow(ts_morph.SyntaxKind.Identifier).getDefinitions().map((d) => d.getDeclarationNode()?.getChildrenOfKind(ts_morph.SyntaxKind.TypeReference).pop()?.getText()).pop();
99
- if (!typeName && !(0, lodash_es.isEmpty)(attributeName)) res.push([attributeName, values]);
100
- else if (variants[(0, lodash_es.camelCase)(typeName)] && !(0, lodash_es.isEmpty)(typeName)) res.push([(0, lodash_es.camelCase)(typeName), values]);
101
- else if (!(0, lodash_es.isEmpty)(attributeName)) res.push([attributeName, values]);
101
+ if (!typeName && !(0, lodash_isEmpty_js.default)(attributeName)) res.push([attributeName, values]);
102
+ else if (variants[(0, lodash_camelCase_js.default)(typeName)] && !(0, lodash_isEmpty_js.default)(typeName)) res.push([(0, lodash_camelCase_js.default)(typeName), values]);
103
+ else if (!(0, lodash_isEmpty_js.default)(attributeName)) res.push([attributeName, values]);
102
104
  }
103
105
  if (ts_morph.Node.isJsxSpreadAttribute(attribute)) {
104
106
  const componentPropsSpreadIdentifier = getParentSpreadOrParamIdentifier(reference);
@@ -107,10 +109,10 @@ const getUsedPropsInReference = (reference, variants) => {
107
109
  if (!lastIdentifier || lastIdentifier?.getText() === componentPropsSpreadIdentifier) return [];
108
110
  lastIdentifier.getType().getProperties().forEach((property) => {
109
111
  const propertyNameFromType = property.getDeclarations().map((declaration) => {
110
- return (0, lodash_es.camelCase)(declaration.getChildrenOfKind(ts_morph.SyntaxKind.TypeReference)[0]?.getText() ?? "");
112
+ return (0, lodash_camelCase_js.default)(declaration.getChildrenOfKind(ts_morph.SyntaxKind.TypeReference)[0]?.getText() ?? "");
111
113
  })[0];
112
- if (!(0, lodash_es.isEmpty)(property.getName())) res.push([property.getName(), []]);
113
- if (!(0, lodash_es.isEmpty)(propertyNameFromType)) res.push([propertyNameFromType, []]);
114
+ if (!(0, lodash_isEmpty_js.default)(property.getName())) res.push([property.getName(), []]);
115
+ if (!(0, lodash_isEmpty_js.default)(propertyNameFromType)) res.push([propertyNameFromType, []]);
114
116
  });
115
117
  }
116
118
  return [];
@@ -1,9 +1,8 @@
1
- /*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
2
  import { camelCase, isEmpty } from "lodash-es";
3
3
  import { Node, SyntaxKind } from "ts-morph";
4
4
 
5
- //#region ../tailwind/dist/utils/tsMorph.js
6
- /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
5
+ //#region src/utils/tsMorph.ts
7
6
  /** Determines if an expression is using React.forwardRef. */
8
7
  function isForwardRefExpression(node) {
9
8
  if (Node.isCallExpression(node)) {
@@ -118,4 +117,5 @@ const getUsedPropsInReference = (reference, variants) => {
118
117
  };
119
118
 
120
119
  //#endregion
121
- export { findReferencesAsJsxElements, getReactFunctionDeclaration, getUsedPropsInReference };
120
+ export { findReferencesAsJsxElements, getReactFunctionDeclaration, getUsedPropsInReference };
121
+ //# sourceMappingURL=tsMorph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsMorph.js","names":[],"sources":["../../src/utils/tsMorph.ts"],"sourcesContent":["import { camelCase, isEmpty } from 'lodash';\nimport type {\n ArrowFunction,\n CallExpression,\n ClassDeclaration,\n FunctionDeclaration,\n FunctionExpression,\n Identifier,\n JsxElement,\n JsxOpeningElement,\n JsxSelfClosingElement,\n VariableDeclaration,\n} from 'ts-morph';\nimport { Node, SyntaxKind } from 'ts-morph';\n\n/** Determines if an expression is using React.forwardRef. */\nexport function isForwardRefExpression(node: Node): node is CallExpression {\n if (Node.isCallExpression(node)) {\n const expression = node.getExpression();\n\n /**\n * forwardRef(() => <Component />)\n */\n if (Node.isIdentifier(expression) && expression.getText() === 'forwardRef') {\n return true;\n }\n\n /**\n * React.forwardRef(() => <Component />)\n */\n if (\n Node.isPropertyAccessExpression(expression) &&\n expression.getText() === 'React.forwardRef'\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/** Determines if a node is a JSX component. */\nexport function isJsxComponent(\n node: Node,\n): node is\n | VariableDeclaration\n | FunctionDeclaration\n | FunctionExpression\n | ArrowFunction\n | ClassDeclaration {\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.charAt(0)) : false;\n}\n\n/** Returns a functional component declaration, unwrapping forwardRef if needed. */\nexport function getReactFunctionDeclaration(\n declaration: Node,\n): ArrowFunction | FunctionDeclaration | FunctionExpression | null {\n if (isJsxComponent(declaration)) {\n if (Node.isFunctionDeclaration(declaration)) {\n return declaration;\n }\n\n if (Node.isVariableDeclaration(declaration)) {\n const initializer = declaration.getInitializer();\n\n if (initializer) {\n if (isForwardRefExpression(initializer)) {\n const [initializerDeclaration] = initializer.getArguments();\n if (\n Node.isFunctionDeclaration(initializerDeclaration) ||\n Node.isFunctionExpression(initializerDeclaration) ||\n Node.isArrowFunction(initializerDeclaration)\n ) {\n return initializerDeclaration;\n }\n } else if (\n Node.isFunctionDeclaration(initializer) ||\n Node.isFunctionExpression(initializer) ||\n Node.isArrowFunction(initializer)\n ) {\n return initializer;\n }\n }\n }\n }\n\n return null;\n}\n\n/** Get the first descendant JsxElement based on the identifier. */\nexport function getJsxElement(node: Node, name: string) {\n return getJsxElements(node).find(\n (node) => node.getFirstDescendantByKindOrThrow(SyntaxKind.Identifier).getText() === name,\n );\n}\n\n/** Get all descendant JsxElement nodes. */\nexport function getJsxElements(node: Node) {\n return node\n .getDescendants()\n .filter((node) => Node.isJsxElement(node) || Node.isJsxSelfClosingElement(node)) as (\n | JsxElement\n | JsxSelfClosingElement\n )[];\n}\n\n/**\n * Traces component references.\n *\n * This is similar to `findReferencesAsNodes` but returns JsxSelfClosingElement and JsxElement nodes.\n * Note, this currently does not account for cases where the component is used as a prop or is renamed.\n */\nexport function findReferencesAsJsxElements(\n identifer: Identifier,\n): (JsxOpeningElement | JsxSelfClosingElement)[] {\n const jsxElements: Node[] = [];\n\n for (const reference of identifer.findReferencesAsNodes()) {\n const node = reference.getFirstAncestor((node) => {\n return Node.isJsxOpeningElement(node) || Node.isJsxSelfClosingElement(node);\n });\n\n if (node) {\n jsxElements.push(node);\n }\n }\n\n return jsxElements as (JsxOpeningElement | JsxSelfClosingElement)[];\n}\n\n/**\n * Given a Jsx Reference, this function finds the parent of that reference,\n * looks at the props, and returns the name used either for spread operator rest or\n * the prop name if there's no spread operator\n */\nexport const getParentSpreadOrParamIdentifier = (\n reference: JsxOpeningElement | JsxSelfClosingElement,\n): string | undefined => {\n // get the parent component where this reference is used\n const block = reference.getParentWhile((parent) => {\n return !getReactFunctionDeclaration(parent);\n })!;\n\n const blockParent = block.getParent();\n\n if (!blockParent) {\n return undefined;\n }\n\n // check if the parent is a react component\n const reactComponent = getReactFunctionDeclaration(blockParent);\n\n if (reactComponent) {\n const parameters = reactComponent.getParameters();\n\n for (let i = 0; i < parameters.length; i++) {\n const parameter = parameters[i];\n const objectBindingPattern = parameter.getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0]; // ({ param1, ...props }: Props)\n const identifier = parameter.getChildrenOfKind(SyntaxKind.Identifier)[0]; // (props: Props)\n\n if (objectBindingPattern) {\n const dotDotToken = objectBindingPattern.getFirstDescendantByKind(\n SyntaxKind.DotDotDotToken,\n );\n const isSpreadOperatorRest = dotDotToken !== undefined;\n if (isSpreadOperatorRest) {\n const spreadRestIdentifier = dotDotToken\n ?.getParent()\n ?.getFirstChildByKindOrThrow(SyntaxKind.Identifier)\n .getText();\n\n return spreadRestIdentifier;\n }\n } else if (identifier) {\n return identifier.getText();\n }\n }\n }\n};\n\n/**\n * Get used props on a reference.\n */\nexport const getUsedPropsInReference = (\n reference: JsxOpeningElement | JsxSelfClosingElement,\n variants: Record<string, Record<string, string>>,\n): Array<[string, string[]]> => {\n const attributes = reference.getAttributes();\n const res: Array<[string, string[]]> = [];\n\n attributes.forEach((attribute) => {\n if (Node.isJsxAttribute(attribute)) {\n const attributeName = attribute.getNameNode().getText();\n // TODO: try to resolve the expression (ex: on the Icon button we know that ony sm value is passed)\n // <Button display=\"flex\" /> or <Button display={\"flex\"} />\n // BORDER_WIDTH === 'thin' ? '0.5' : '1'\n const stringLiterals = attribute.getDescendantsOfKind(SyntaxKind.StringLiteral);\n const values: string[] = [];\n if (stringLiterals.length !== 0) {\n stringLiterals.forEach((stringLiteral) => values.push(stringLiteral.getLiteralText()));\n }\n // Sometimes the property name doesn't directly map to the variant,\n // but instead, the properties type name does. (Ex: `iconSize` is the corresponding variant for `size` prop on Icons)\n const typeName = attribute\n .getFirstChildByKindOrThrow(SyntaxKind.Identifier)\n .getDefinitions()\n .map((d) =>\n d.getDeclarationNode()?.getChildrenOfKind(SyntaxKind.TypeReference).pop()?.getText(),\n )\n .pop();\n\n if (!typeName && !isEmpty(attributeName)) {\n res.push([attributeName, values]);\n } else if (variants[camelCase(typeName) as keyof typeof variants] && !isEmpty(typeName)) {\n res.push([camelCase(typeName), values]);\n } else if (!isEmpty(attributeName)) {\n res.push([attributeName, values]);\n }\n }\n\n if (Node.isJsxSpreadAttribute(attribute)) {\n const componentPropsSpreadIdentifier = getParentSpreadOrParamIdentifier(reference);\n const children = attribute.getExpression().getChildren();\n\n // we need the last element in the spread operator\n // the goal here is to find if we are blindly just passing all the props from the parent\n const lastIdentifier = children.length === 0 ? attribute.getExpression() : children.pop();\n if (!lastIdentifier || lastIdentifier?.getText() === componentPropsSpreadIdentifier) {\n return [];\n }\n\n lastIdentifier\n .getType()\n .getProperties()\n // these are typescript properties\n // so we don't know which values have been used.\n .forEach((property) => {\n // Sometimes the property name doesn't directly map to the variant,\n // but instead, the properties type name does. (Ex: `iconSize` is the corresponding variant for `size` prop on Icons)\n const propertyNameFromType = property.getDeclarations().map((declaration) => {\n const typeName =\n declaration.getChildrenOfKind(SyntaxKind.TypeReference)[0]?.getText() ?? '';\n return camelCase(typeName);\n })[0];\n if (!isEmpty(property.getName())) {\n res.push([property.getName(), []]);\n }\n if (!isEmpty(propertyNameFromType)) {\n res.push([propertyNameFromType, []]);\n }\n });\n }\n\n return [];\n });\n\n return res;\n};\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
+ const require_getResponsiveTextStyles = require('./tailwind/components/getResponsiveTextStyles.cjs');
4
+ const require_getColorModeStyles = require('./tailwind/utils/getColorModeStyles.cjs');
5
+ const require_getShadowStyles = require('./tailwind/utils/getShadowStyles.cjs');
6
+ const require_getElevationStyles = require('./tailwind/utils/getElevationStyles.cjs');
7
+ const require_getMotionStyles = require('./tailwind/utils/getMotionStyles.cjs');
8
+ const require_getScaleModeStyles = require('./tailwind/utils/getScaleModeStyles.cjs');
9
+ const require_getShadowPresetValues = require('./tailwind/utils/getShadowPresetValues.cjs');
10
+ const require_getFontFaceDeclarations = require('./tailwind/utils/getFontFaceDeclarations.cjs');
11
+ const require_getFontStyles = require('./tailwind/utils/getFontStyles.cjs');
12
+ const require_addFontsPlugin = require('./tailwind/utils/addFontsPlugin.cjs');
13
+
14
+ exports.addFontsPlugin = require_addFontsPlugin.addFontsPlugin;
15
+ exports.getBaseTextVars = require_getResponsiveTextStyles.getBaseTextVars;
16
+ exports.getColorModeStyles = require_getColorModeStyles.getColorModeStyles;
17
+ exports.getElevationStyles = require_getElevationStyles.getElevationStyles;
18
+ exports.getFontFaceDeclarations = require_getFontFaceDeclarations.getFontFaceDeclarations;
19
+ exports.getFontStyles = require_getFontStyles.getFontStyles;
20
+ exports.getMotionStyles = require_getMotionStyles.getMotionStyles;
21
+ exports.getResponsiveTextStyles = require_getResponsiveTextStyles.getResponsiveTextStyles;
22
+ exports.getScaleModeStyles = require_getScaleModeStyles.getScaleModeStyles;
23
+ exports.getShadowPresetValues = require_getShadowPresetValues.getShadowPresetValues;
24
+ exports.getShadowStyles = require_getShadowStyles.getShadowStyles;
25
+ exports.shadowVariantToCSS = require_getShadowStyles.shadowVariantToCSS;
@@ -8,4 +8,5 @@ import { getFontStyles } from "./tailwind/utils/getFontStyles.cjs";
8
8
  import { getMotionStyles } from "./tailwind/utils/getMotionStyles.cjs";
9
9
  import { getScaleModeStyles } from "./tailwind/utils/getScaleModeStyles.cjs";
10
10
  import { getShadowPresetValues } from "./tailwind/utils/getShadowPresetValues.cjs";
11
- import { getShadowStyles, shadowVariantToCSS } from "./tailwind/utils/getShadowStyles.cjs";
11
+ import { getShadowStyles, shadowVariantToCSS } from "./tailwind/utils/getShadowStyles.cjs";
12
+ export { AddFontsPluginOptions, addFontsPlugin, getBaseTextVars, getColorModeStyles, getElevationStyles, getFontFaceDeclarations, getFontStyles, getMotionStyles, getResponsiveTextStyles, getScaleModeStyles, getShadowPresetValues, getShadowStyles, shadowVariantToCSS };
@@ -8,4 +8,5 @@ import { getFontStyles } from "./tailwind/utils/getFontStyles.js";
8
8
  import { getMotionStyles } from "./tailwind/utils/getMotionStyles.js";
9
9
  import { getScaleModeStyles } from "./tailwind/utils/getScaleModeStyles.js";
10
10
  import { getShadowPresetValues } from "./tailwind/utils/getShadowPresetValues.js";
11
- import { getShadowStyles, shadowVariantToCSS } from "./tailwind/utils/getShadowStyles.js";
11
+ import { getShadowStyles, shadowVariantToCSS } from "./tailwind/utils/getShadowStyles.js";
12
+ export { AddFontsPluginOptions, addFontsPlugin, getBaseTextVars, getColorModeStyles, getElevationStyles, getFontFaceDeclarations, getFontStyles, getMotionStyles, getResponsiveTextStyles, getScaleModeStyles, getShadowPresetValues, getShadowStyles, shadowVariantToCSS };
@@ -0,0 +1,13 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
2
+ import { getBaseTextVars, getResponsiveTextStyles } from "./tailwind/components/getResponsiveTextStyles.js";
3
+ import { getColorModeStyles } from "./tailwind/utils/getColorModeStyles.js";
4
+ import { getShadowStyles, shadowVariantToCSS } from "./tailwind/utils/getShadowStyles.js";
5
+ import { getElevationStyles } from "./tailwind/utils/getElevationStyles.js";
6
+ import { getMotionStyles } from "./tailwind/utils/getMotionStyles.js";
7
+ import { getScaleModeStyles } from "./tailwind/utils/getScaleModeStyles.js";
8
+ import { getShadowPresetValues } from "./tailwind/utils/getShadowPresetValues.js";
9
+ import { getFontFaceDeclarations } from "./tailwind/utils/getFontFaceDeclarations.js";
10
+ import { getFontStyles } from "./tailwind/utils/getFontStyles.js";
11
+ import { addFontsPlugin } from "./tailwind/utils/addFontsPlugin.js";
12
+
13
+ export { addFontsPlugin, getBaseTextVars, getColorModeStyles, getElevationStyles, getFontFaceDeclarations, getFontStyles, getMotionStyles, getResponsiveTextStyles, getScaleModeStyles, getShadowPresetValues, getShadowStyles, shadowVariantToCSS };