@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.
- package/dist/automated-config/dist/utils/getConfigVariantComponentStatesMatrix.cjs +2 -3
- package/dist/automated-config/dist/utils/getConfigVariantProperties.cjs +2 -3
- package/dist/automated-config/dist/utils/getConfigVariants.cjs +2 -3
- package/dist/automated-config/dist/utils/index.cjs +3 -6
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +1 -1
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +1 -1
- package/dist/styles/styler.d.cts +53 -53
- package/dist/styles/styler.d.ts +53 -53
- package/dist/tailwind/dist/_virtual/_rolldown/runtime.cjs +27 -8
- package/dist/tailwind/dist/_virtual/_rolldown/runtime.js +3 -6
- package/dist/tailwind/dist/cli.cjs +11 -0
- package/dist/tailwind/dist/cli.d.cts +6 -0
- package/dist/tailwind/dist/cli.d.ts +6 -0
- package/dist/tailwind/dist/cli.js +7 -0
- package/dist/tailwind/dist/commands/css.cjs +36 -37
- package/dist/tailwind/dist/commands/css.d.cts +14 -0
- package/dist/tailwind/dist/commands/css.d.cts.map +1 -0
- package/dist/tailwind/dist/commands/css.d.ts +14 -0
- package/dist/tailwind/dist/commands/css.d.ts.map +1 -0
- package/dist/tailwind/dist/commands/css.helpers.cjs +2 -3
- package/dist/tailwind/dist/commands/css.helpers.js +3 -3
- package/dist/tailwind/dist/commands/css.helpers.js.map +1 -0
- package/dist/tailwind/dist/commands/css.js +5 -6
- package/dist/tailwind/dist/commands/css.js.map +1 -0
- package/dist/tailwind/dist/commands/generateComponentData.cjs +13 -14
- package/dist/tailwind/dist/commands/generateComponentData.d.cts +24 -0
- package/dist/tailwind/dist/commands/generateComponentData.d.cts.map +1 -0
- package/dist/tailwind/dist/commands/generateComponentData.d.ts +22 -1
- package/dist/tailwind/dist/commands/generateComponentData.d.ts.map +1 -0
- package/dist/tailwind/dist/commands/generateComponentData.js +6 -6
- package/dist/tailwind/dist/commands/generateComponentData.js.map +1 -0
- package/dist/tailwind/dist/commands/generatePurgeCSSData.cjs +5 -7
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts +15 -0
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts.map +1 -0
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts +15 -0
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts.map +1 -0
- package/dist/tailwind/dist/commands/generatePurgeCSSData.js +5 -6
- package/dist/tailwind/dist/commands/generatePurgeCSSData.js.map +1 -0
- package/dist/tailwind/dist/commands/purge.cjs +15 -16
- package/dist/tailwind/dist/commands/purge.d.cts +17 -0
- package/dist/tailwind/dist/commands/purge.d.cts.map +1 -0
- package/dist/tailwind/dist/commands/purge.d.ts +17 -0
- package/dist/tailwind/dist/commands/purge.d.ts.map +1 -0
- package/dist/tailwind/dist/commands/purge.js +5 -6
- package/dist/tailwind/dist/commands/purge.js.map +1 -0
- package/dist/tailwind/dist/css/generate.cjs +13 -16
- package/dist/tailwind/dist/css/generate.d.cts +3 -4
- package/dist/tailwind/dist/css/generate.d.cts.map +1 -0
- package/dist/tailwind/dist/css/generate.d.ts +3 -4
- package/dist/tailwind/dist/css/generate.d.ts.map +1 -0
- package/dist/tailwind/dist/css/generate.helpers.cjs +6 -6
- package/dist/tailwind/dist/css/generate.helpers.js +7 -6
- package/dist/tailwind/dist/css/generate.helpers.js.map +1 -0
- package/dist/tailwind/dist/css/generate.js +7 -9
- package/dist/tailwind/dist/css/generate.js.map +1 -0
- package/dist/tailwind/dist/css/nodeUtils.cjs +14 -16
- package/dist/tailwind/dist/css/nodeUtils.js +6 -7
- package/dist/tailwind/dist/css/nodeUtils.js.map +1 -0
- package/dist/tailwind/dist/css/postcss.cjs +2 -3
- package/dist/tailwind/dist/css/postcss.helpers.cjs +2 -3
- package/dist/tailwind/dist/css/postcss.helpers.js +3 -3
- package/dist/tailwind/dist/css/postcss.helpers.js.map +1 -0
- package/dist/tailwind/dist/css/postcss.js +4 -4
- package/dist/tailwind/dist/css/postcss.js.map +1 -0
- package/dist/tailwind/dist/css/runner.cjs +40 -35
- package/dist/tailwind/dist/css/runner.helpers.cjs +3 -4
- package/dist/tailwind/dist/css/runner.helpers.js +4 -4
- package/dist/tailwind/dist/css/runner.helpers.js.map +1 -0
- package/dist/tailwind/dist/css/runner.js +17 -11
- package/dist/tailwind/dist/css/runner.js.map +1 -0
- package/dist/tailwind/dist/css/theme.cjs +2 -3
- package/dist/tailwind/dist/css/theme.d.cts +13 -5
- package/dist/tailwind/dist/css/theme.d.cts.map +1 -0
- package/dist/tailwind/dist/css/theme.d.ts +13 -5
- package/dist/tailwind/dist/css/theme.d.ts.map +1 -0
- package/dist/tailwind/dist/css/theme.js +3 -3
- package/dist/tailwind/dist/css/theme.js.map +1 -0
- package/dist/tailwind/dist/css/utils.cjs +5 -5
- package/dist/tailwind/dist/css/utils.js +5 -5
- package/dist/tailwind/dist/css/utils.js.map +1 -0
- package/dist/tailwind/dist/index.cjs +9 -0
- package/dist/tailwind/dist/index.d.cts +3 -2
- package/dist/tailwind/dist/index.d.ts +3 -2
- package/dist/tailwind/dist/index.js +6 -0
- package/dist/tailwind/dist/plugin.cjs +7 -6
- package/dist/tailwind/dist/plugin.d.cts +3 -3
- package/dist/tailwind/dist/plugin.d.cts.map +1 -0
- package/dist/tailwind/dist/plugin.d.ts +3 -3
- package/dist/tailwind/dist/plugin.d.ts.map +1 -0
- package/dist/tailwind/dist/plugin.js +4 -4
- package/dist/tailwind/dist/plugin.js.map +1 -0
- package/dist/tailwind/dist/purger/legacy/index.d.ts +2 -0
- package/dist/tailwind/dist/purger/legacy/purgeCSS.cjs +25 -24
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.cts +24 -0
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.cts.map +1 -0
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.ts +24 -0
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.ts.map +1 -0
- package/dist/tailwind/dist/purger/legacy/purgeCSS.js +8 -9
- package/dist/tailwind/dist/purger/legacy/purgeCSS.js.map +1 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.cjs +59 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts +28 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts.map +1 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts +28 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts.map +1 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.js +59 -0
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/ast/expressions.cjs +5 -6
- package/dist/tailwind/dist/purger/optimized/ast/expressions.d.ts +2 -0
- package/dist/tailwind/dist/purger/optimized/ast/expressions.js +5 -5
- package/dist/tailwind/dist/purger/optimized/ast/expressions.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/ast/index.d.ts +5 -0
- package/dist/tailwind/dist/purger/optimized/ast/jsx.cjs +3 -4
- package/dist/tailwind/dist/purger/optimized/ast/jsx.d.ts +3 -0
- package/dist/tailwind/dist/purger/optimized/ast/jsx.js +4 -4
- package/dist/tailwind/dist/purger/optimized/ast/jsx.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/ast/props.d.ts +2 -0
- package/dist/tailwind/dist/purger/optimized/ast/spread.d.ts +3 -0
- package/dist/tailwind/dist/purger/optimized/index.d.ts +6 -0
- package/dist/tailwind/dist/purger/optimized/purge.cjs +5 -6
- package/dist/tailwind/dist/purger/optimized/purge.d.ts +2 -0
- package/dist/tailwind/dist/purger/optimized/purge.js +5 -5
- package/dist/tailwind/dist/purger/optimized/purge.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.cjs +3 -4
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts +58 -0
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts.map +1 -0
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts +58 -0
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts.map +1 -0
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.js +4 -4
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/types.d.cts +22 -0
- package/dist/tailwind/dist/purger/optimized/types.d.cts.map +1 -0
- package/dist/tailwind/dist/purger/optimized/types.d.ts +23 -0
- package/dist/tailwind/dist/purger/optimized/types.d.ts.map +1 -0
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.cjs +8 -9
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js +7 -7
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/utils/files.cjs +3 -4
- package/dist/tailwind/dist/purger/optimized/utils/files.d.ts +2 -0
- package/dist/tailwind/dist/purger/optimized/utils/files.js +4 -4
- package/dist/tailwind/dist/purger/optimized/utils/files.js.map +1 -0
- package/dist/tailwind/dist/purger/optimized/utils/safelist.cjs +7 -8
- package/dist/tailwind/dist/purger/optimized/utils/safelist.js +6 -6
- package/dist/tailwind/dist/purger/optimized/utils/safelist.js.map +1 -0
- package/dist/tailwind/dist/purger.cjs +7 -0
- package/dist/tailwind/dist/purger.d.cts +4 -0
- package/dist/tailwind/dist/purger.d.ts +6 -0
- package/dist/tailwind/dist/purger.js +5 -0
- package/dist/tailwind/dist/tailwind/base/addColorModeVars.cjs +10 -10
- package/dist/tailwind/dist/tailwind/base/addColorModeVars.js +6 -6
- package/dist/tailwind/dist/tailwind/base/addColorModeVars.js.map +1 -0
- package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.cjs +14 -14
- package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js +6 -6
- package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js.map +1 -0
- package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.cjs +2 -3
- package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js +4 -4
- package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js.map +1 -0
- package/dist/tailwind/dist/tailwind/base/addFontVars.cjs +2 -3
- package/dist/tailwind/dist/tailwind/base/addFontVars.js +4 -4
- package/dist/tailwind/dist/tailwind/base/addFontVars.js.map +1 -0
- package/dist/tailwind/dist/tailwind/base/addMotionVars.cjs +2 -3
- package/dist/tailwind/dist/tailwind/base/addMotionVars.js +4 -4
- package/dist/tailwind/dist/tailwind/base/addMotionVars.js.map +1 -0
- package/dist/tailwind/dist/tailwind/base/addScaleModeVars.cjs +13 -13
- package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js +6 -6
- package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.cjs +6 -6
- package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js +5 -5
- package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.cjs +12 -12
- package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js +6 -6
- package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.cjs +2 -3
- package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js +3 -3
- package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getIconStyles.cjs +2 -3
- package/dist/tailwind/dist/tailwind/components/getIconStyles.js +3 -3
- package/dist/tailwind/dist/tailwind/components/getIconStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getInputStyles.cjs +2 -3
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts +3 -3
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts +3 -3
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getInputStyles.js +3 -3
- package/dist/tailwind/dist/tailwind/components/getInputStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.cjs +29 -29
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.cts +6 -4
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.ts +6 -4
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js +8 -8
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/components/types.d.cts +3 -3
- package/dist/tailwind/dist/tailwind/components/types.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/components/types.d.ts +3 -3
- package/dist/tailwind/dist/tailwind/components/types.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.cjs +2 -3
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts +6 -6
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts +6 -6
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js +3 -3
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/a11y.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/a11y.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/a11y.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.cjs +7 -8
- package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js +5 -5
- package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/borderRadius.cjs +8 -9
- package/dist/tailwind/dist/tailwind/plugins/borderRadius.js +7 -7
- package/dist/tailwind/dist/tailwind/plugins/borderRadius.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/borderWidth.cjs +8 -9
- package/dist/tailwind/dist/tailwind/plugins/borderWidth.js +7 -7
- package/dist/tailwind/dist/tailwind/plugins/borderWidth.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/breakpoints.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/breakpoints.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/breakpoints.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/colors.cjs +17 -17
- package/dist/tailwind/dist/tailwind/plugins/colors.js +9 -9
- package/dist/tailwind/dist/tailwind/plugins/colors.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/components.cjs +25 -26
- package/dist/tailwind/dist/tailwind/plugins/components.js +7 -7
- package/dist/tailwind/dist/tailwind/plugins/components.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/elevation.cjs +7 -8
- package/dist/tailwind/dist/tailwind/plugins/elevation.js +6 -6
- package/dist/tailwind/dist/tailwind/plugins/elevation.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.cjs +5 -5
- package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js +5 -5
- package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/icons.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/icons.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/icons.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/input.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/input.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/input.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/motion.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/motion.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/motion.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/scaleMode.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/scaleMode.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/scaleMode.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/shadows.cjs +8 -9
- package/dist/tailwind/dist/tailwind/plugins/shadows.js +5 -5
- package/dist/tailwind/dist/tailwind/plugins/shadows.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/sizing.cjs +5 -6
- package/dist/tailwind/dist/tailwind/plugins/sizing.js +5 -5
- package/dist/tailwind/dist/tailwind/plugins/sizing.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/spacing.cjs +3 -4
- package/dist/tailwind/dist/tailwind/plugins/spacing.js +4 -4
- package/dist/tailwind/dist/tailwind/plugins/spacing.js.map +1 -0
- package/dist/tailwind/dist/tailwind/plugins/typography.cjs +10 -11
- package/dist/tailwind/dist/tailwind/plugins/typography.js +7 -7
- package/dist/tailwind/dist/tailwind/plugins/typography.js.map +1 -0
- package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.cjs +9 -9
- package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js +6 -6
- package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.cjs +3 -4
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts +4 -4
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js +4 -4
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.cjs +15 -9
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts +5 -5
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js +7 -7
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.cjs +2 -3
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.cts +3 -3
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.ts +3 -3
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js +3 -3
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.cjs +9 -9
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js +5 -5
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.cjs +5 -5
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.ts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js +5 -5
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.cjs +7 -7
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.js +6 -6
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.cjs +7 -7
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.cts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.ts +4 -4
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js +6 -6
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.cjs +2 -3
- package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js +3 -3
- package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.cjs +2 -3
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.cts +3 -3
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.ts +3 -3
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js +3 -3
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.cjs +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.cts +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.ts +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.cjs +6 -6
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js +5 -5
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js.map +1 -0
- package/dist/tailwind/dist/utils/assertUnreachable.cjs +2 -3
- package/dist/tailwind/dist/utils/assertUnreachable.js +3 -3
- package/dist/tailwind/dist/utils/assertUnreachable.js.map +1 -0
- package/dist/tailwind/dist/utils/entries.cjs +2 -3
- package/dist/tailwind/dist/utils/entries.js +3 -3
- package/dist/tailwind/dist/utils/entries.js.map +1 -0
- package/dist/tailwind/dist/utils/entryPoints.cjs +5 -6
- package/dist/tailwind/dist/utils/entryPoints.js +5 -5
- package/dist/tailwind/dist/utils/entryPoints.js.map +1 -0
- package/dist/tailwind/dist/utils/fromEntries.cjs +2 -3
- package/dist/tailwind/dist/utils/fromEntries.js +3 -3
- package/dist/tailwind/dist/utils/fromEntries.js.map +1 -0
- package/dist/tailwind/dist/utils/generatePurgeCSSData.cjs +11 -13
- package/dist/tailwind/dist/utils/generatePurgeCSSData.js +7 -8
- package/dist/tailwind/dist/utils/generatePurgeCSSData.js.map +1 -0
- package/dist/tailwind/dist/utils/mapValues.cjs +2 -3
- package/dist/tailwind/dist/utils/mapValues.js +3 -3
- package/dist/tailwind/dist/utils/mapValues.js.map +1 -0
- package/dist/tailwind/dist/utils/opacity.cjs +6 -6
- package/dist/tailwind/dist/utils/opacity.js +4 -4
- package/dist/tailwind/dist/utils/opacity.js.map +1 -0
- package/dist/tailwind/dist/utils/optimizeCSS.cjs +3 -4
- package/dist/tailwind/dist/utils/optimizeCSS.js +4 -4
- package/dist/tailwind/dist/utils/optimizeCSS.js.map +1 -0
- package/dist/tailwind/dist/utils/parseTokens.cjs +32 -32
- package/dist/tailwind/dist/utils/parseTokens.d.cts +5 -5
- package/dist/tailwind/dist/utils/parseTokens.d.cts.map +1 -0
- package/dist/tailwind/dist/utils/parseTokens.d.ts +5 -5
- package/dist/tailwind/dist/utils/parseTokens.d.ts.map +1 -0
- package/dist/tailwind/dist/utils/parseTokens.js +6 -6
- package/dist/tailwind/dist/utils/parseTokens.js.map +1 -0
- package/dist/tailwind/dist/utils/postcssPreserveVars.cjs +2 -3
- package/dist/tailwind/dist/utils/postcssPreserveVars.js +3 -3
- package/dist/tailwind/dist/utils/postcssPreserveVars.js.map +1 -0
- package/dist/tailwind/dist/utils/tsMorph.cjs +13 -11
- package/dist/tailwind/dist/utils/tsMorph.js +4 -4
- package/dist/tailwind/dist/utils/tsMorph.js.map +1 -0
- package/dist/tailwind/dist/utils.cjs +25 -0
- package/dist/tailwind/dist/utils.d.cts +2 -1
- package/dist/tailwind/dist/utils.d.ts +2 -1
- package/dist/tailwind/dist/utils.js +13 -0
- package/dist/uds/generated/componentData.cjs +145 -145
- package/dist/uds/generated/componentData.js +145 -145
- package/generated/componentData.json +209 -209
- package/package.json +1 -1
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import { defaultTokensConfig } from "../../../config/dist/index.js";
|
|
3
|
-
import { cyan, magenta, yellow } from "../../../cli/dist/lib/colors.js";
|
|
4
|
-
import { print } from "../../../cli/dist/lib/print.js";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
5
2
|
import { resolveEntryPaths } from "../utils/entryPoints.js";
|
|
6
|
-
import { spinStop } from "../../../cli/dist/lib/spinner.js";
|
|
7
3
|
import { loadConfigFile, scanDirectoriesForSafelist } from "./nodeUtils.js";
|
|
8
4
|
import { deduplicateSafelist, getThemeAndScaleClasses } from "../purger/optimized/utils/safelist.js";
|
|
9
5
|
import { extractVariantDefaults, getConfigurableCssVariables, getMotionVarPrefixes } from "./utils.js";
|
|
10
6
|
import { applyScopedColorModeFix, buildPostcssPlugins, createTailwindPlugin, getCssFeatureFlags, optimizeGeneratedCss, printSimpleModeStats } from "./generate.helpers.js";
|
|
11
|
-
import
|
|
7
|
+
import { cyan, magenta, print, spinStop, yellow } from "@yahoo/uds-cli/lib";
|
|
12
8
|
import fs from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { defaultTokensConfig } from "@yahoo/uds-config";
|
|
13
11
|
import { gzipSync } from "node:zlib";
|
|
14
12
|
import postcss from "postcss";
|
|
15
13
|
|
|
16
|
-
//#region
|
|
17
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
14
|
+
//#region src/css/generate.ts
|
|
18
15
|
const normalizeScope = (scope) => {
|
|
19
16
|
const trimmedScope = scope?.trim();
|
|
20
17
|
return trimmedScope ? trimmedScope : void 0;
|
|
@@ -121,4 +118,5 @@ const generateSimpleModeCSS = async (options) => {
|
|
|
121
118
|
};
|
|
122
119
|
|
|
123
120
|
//#endregion
|
|
124
|
-
export { generateCSS, generateSimpleModeCSS };
|
|
121
|
+
export { generateCSS, generateSimpleModeCSS };
|
|
122
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","names":[],"sources":["../../src/css/generate.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { gzipSync } from 'node:zlib';\n\nimport { cyan, magenta, print, spinStop, yellow } from '@yahoo/uds-cli/lib';\nimport type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport { defaultTokensConfig } from '@yahoo/uds-config';\nimport postcss from 'postcss';\nimport type { SafelistConfig } from 'tailwindcss/types/config';\n\nimport type { SerializedComponentInfo } from '../commands/generateComponentData';\nimport { deduplicateSafelist, getThemeAndScaleClasses } from '../purger/optimized';\nimport type { EntryValue } from '../utils/entryPoints';\nimport { resolveEntryPaths } from '../utils/entryPoints';\nimport {\n applyScopedColorModeFix,\n buildPostcssPlugins,\n createTailwindPlugin,\n getCssFeatureFlags,\n optimizeGeneratedCss,\n printSimpleModeStats,\n} from './generate.helpers';\nimport { loadConfigFile, scanDirectoriesForSafelist } from './nodeUtils';\nimport type { UDSCSSOptimizationOptions, UDSCSSVarSafelistPattern } from './theme';\nimport { extractVariantDefaults, getConfigurableCssVariables, getMotionVarPrefixes } from './utils';\n\n/**\n * Result from generating CSS\n */\ninterface CSSResult {\n css: string;\n sizeBytes: number;\n sizeGzipBytes: number;\n classCount: number;\n optimizationStats?: {\n originalSize: number;\n originalSizeGzip: number;\n fontFacesRemoved: number;\n emptyRulesRemoved: number;\n validationErrors: string[];\n };\n}\n\n/**\n * CSS generation options for uds.theme.ts\n */\ninterface UDSCSSOptions {\n /** CSS scope wrapper class (optional) */\n scope?: string;\n /** Safelist of CSS classes to always include */\n safelist?: SafelistConfig[];\n /** CSS optimization settings */\n optimization?: UDSCSSOptimizationOptions;\n /** Include Tailwind preflight/reset styles (default: true) */\n preflight?: boolean;\n /** Include @font-face declarations (default: true) */\n fontFaceDeclarations?: boolean;\n /** Debounce delay (ms) for watch mode regenerations */\n watchDebounce?: number;\n}\n\n/**\n * Options for generateCSS function\n */\ninterface GenerateCSSOptions {\n /** CSS scope wrapper class */\n scope?: string;\n /** Directory to scan for arbitrary Tailwind classes (className props) */\n contentDir?: string | string[];\n /** CSS generation options from theme config */\n cssOptions?: UDSCSSOptions;\n /** Reference CSS to deduplicate font-faces against (for scoped CSS) */\n referenceCss?: string;\n /** CSS variable prefixes or patterns to preserve during pruning */\n safeVarPrefixes?: UDSCSSVarSafelistPattern[];\n}\n\nconst normalizeScope = (scope?: string): string | undefined => {\n const trimmedScope = scope?.trim();\n return trimmedScope ? trimmedScope : undefined;\n};\n\nconst getArbitrarySafelistRawContent = (safelist: SafelistConfig[]): string[] => {\n const arbitraryClasses = safelist.filter(\n (entry): entry is string => typeof entry === 'string' && entry.includes('['),\n );\n\n if (arbitraryClasses.length === 0) {\n return [];\n }\n\n return [`<div class=\"${arbitraryClasses.join(' ')}\"></div>`];\n};\n\n/**\n * Generate CSS from a safelist using Tailwind + PostCSS\n * @param safelist - UDS component classes to include\n * @param config - Token configuration\n * @param options - Additional options\n */\nconst generateCSS = async (\n safelist: SafelistConfig[],\n config: UniversalTokensConfig,\n options?: GenerateCSSOptions,\n): Promise<CSSResult> => {\n // Do we need base?\n const sourceCSS = '@tailwind base; @tailwind components; @tailwind utilities';\n\n const contentDir = options?.contentDir ?? path.join(process.cwd(), 'src');\n const cssFlags = getCssFeatureFlags(options?.cssOptions);\n const optimizationConfig = options?.cssOptions?.optimization;\n const scopeClass = normalizeScope(options?.scope) ?? normalizeScope(options?.cssOptions?.scope);\n const twPlugin = createTailwindPlugin({\n contentDir,\n rawContents: getArbitrarySafelistRawContent(safelist),\n safelist,\n config,\n enablePreflight: cssFlags.enablePreflight,\n enableFontFaceDeclarations: cssFlags.enableFontFaceDeclarations,\n });\n const plugins = buildPostcssPlugins({\n tailwindPlugin: twPlugin,\n shouldPruneVars: cssFlags.shouldPruneVars,\n safeVarPrefixes: options?.safeVarPrefixes ?? [],\n scopeClass,\n });\n\n const result = await postcss(plugins).process(sourceCSS, { from: undefined });\n let css = await applyScopedColorModeFix(result.css, scopeClass);\n const optimizedCss = await optimizeGeneratedCss({\n css,\n shouldOptimize: cssFlags.shouldOptimize,\n optimizationConfig,\n referenceCss: options?.referenceCss,\n scopeClass,\n });\n css = optimizedCss.css;\n\n const sizeBytes = Buffer.byteLength(css, 'utf8');\n const sizeGzipBytes = gzipSync(css).length;\n\n return {\n css,\n sizeBytes,\n sizeGzipBytes,\n classCount: safelist.length,\n optimizationStats: optimizedCss.optimizationStats,\n };\n};\n\n/**\n * Generate CSS in simple mode (no uds.theme.ts)\n */\nconst generateSimpleModeCSS = async (options: {\n workspaceDir: string;\n entry: EntryValue;\n outFile: string;\n variants: Record<string, Record<string, string>>;\n autoVariants: Record<string, Record<string, string>>;\n componentData: Record<string, SerializedComponentInfo>;\n scope?: string;\n configPath?: string;\n isWatch?: boolean;\n silent?: boolean;\n}): Promise<{ success: boolean; outputPath: string; packageDirs?: string[] }> => {\n const isWatch = options.isWatch === true;\n const isSilent = options.silent === true;\n const shouldLogStats = !isSilent && !isWatch;\n const startTime = performance.now();\n const colorModes: ('dark' | 'light')[] = ['dark']; // Light mode is already in :root\n\n // Load config if provided, otherwise use default\n let tokensConfig: UniversalTokensConfig = defaultTokensConfig;\n if (options.configPath) {\n const loadedConfig = await loadConfigFile<UniversalTokensConfig>(options.configPath);\n if (loadedConfig) {\n tokensConfig = loadedConfig;\n } else if (shouldLogStats) {\n spinStop('⚠️', `Config file not found: ${options.configPath}, using defaults`);\n }\n }\n\n // Extract variant defaults from config for auto-variant class generation\n const variantDefaults = extractVariantDefaults(tokensConfig);\n\n const resolvedEntries = resolveEntryPaths(options.entry, options.workspaceDir);\n const entryDirs = resolvedEntries.map((entry) => entry.absolutePath);\n const scanResult = await scanDirectoriesForSafelist(\n entryDirs,\n colorModes,\n options.variants,\n options.autoVariants,\n options.componentData,\n variantDefaults,\n );\n\n const totalFilesScanned = scanResult.filesScanned;\n const allClasses: string[] = [...scanResult.safelist];\n const allComponents = new Set<string>(scanResult.components);\n const packageDirs: string[] = [\n ...new Set(\n resolvedEntries.map((entry) =>\n entry.kind === 'directory' ? entry.absolutePath : entry.watchDirectory,\n ),\n ),\n ];\n\n // Add color mode classes\n const fullSafelist = [...allClasses, ...getThemeAndScaleClasses(colorModes)];\n const finalSafelist = deduplicateSafelist(fullSafelist);\n\n // Generate CSS (Tailwind will scan entry dir for arbitrary classes on className props)\n const cssResult = await generateCSS(finalSafelist, tokensConfig, {\n scope: options.scope,\n contentDir: entryDirs,\n safeVarPrefixes: [\n ...getMotionVarPrefixes(options.componentData, [...allComponents]),\n ...getConfigurableCssVariables(),\n ],\n });\n\n // Write output\n const outputPath = path.isAbsolute(options.outFile)\n ? options.outFile\n : path.join(options.workspaceDir, options.outFile);\n const outputDir = path.dirname(outputPath);\n\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, cssResult.css);\n\n const duration = Math.round(performance.now() - startTime);\n\n if (shouldLogStats) {\n printSimpleModeStats({\n outputPath,\n totalFilesScanned,\n classCount: cssResult.classCount,\n sizeBytes: cssResult.sizeBytes,\n sizeGzipBytes: cssResult.sizeGzipBytes,\n duration,\n scope: options.scope,\n optimizationStats: cssResult.optimizationStats,\n print,\n magenta,\n cyan,\n yellow,\n });\n }\n\n return { success: true, outputPath, packageDirs };\n};\n\nexport { generateCSS, generateSimpleModeCSS };\nexport type { UDSCSSOptions };\n"],"mappings":"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"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
const require_runtime = require('
|
|
3
|
-
const require_colors = require('../../../cli/dist/lib/colors.cjs');
|
|
4
|
-
const require_print = require('../../../cli/dist/lib/print.cjs');
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
5
3
|
const require_purgeFromCode = require('../purger/optimized/purgeFromCode.cjs');
|
|
6
4
|
const require_entryPoints = require('../utils/entryPoints.cjs');
|
|
7
|
-
let
|
|
8
|
-
node_path = require_runtime.__toESM(node_path);
|
|
5
|
+
let _yahoo_uds_cli_lib = require("@yahoo/uds-cli/lib");
|
|
9
6
|
let node_fs = require("node:fs");
|
|
10
7
|
node_fs = require_runtime.__toESM(node_fs);
|
|
11
8
|
let node_module = require("node:module");
|
|
9
|
+
let node_path = require("node:path");
|
|
10
|
+
node_path = require_runtime.__toESM(node_path);
|
|
12
11
|
let fast_glob = require("fast-glob");
|
|
13
12
|
fast_glob = require_runtime.__toESM(fast_glob);
|
|
14
13
|
|
|
15
|
-
//#region
|
|
16
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
14
|
+
//#region src/css/nodeUtils.ts
|
|
17
15
|
const loadConfigFile = async (configPath) => {
|
|
18
16
|
const absolutePath = node_path.default.isAbsolute(configPath) ? configPath : node_path.default.join(process.cwd(), configPath);
|
|
19
17
|
if (!node_fs.default.existsSync(absolutePath)) return null;
|
|
@@ -129,7 +127,7 @@ const scaffoldThemeConfig = async (options) => {
|
|
|
129
127
|
const outputPath = options.outputPath ?? "uds.theme.ts";
|
|
130
128
|
const absoluteOutputPath = node_path.default.isAbsolute(outputPath) ? outputPath : node_path.default.join(workspaceDir, outputPath);
|
|
131
129
|
if (node_fs.default.existsSync(absoluteOutputPath) && !options.force) {
|
|
132
|
-
|
|
130
|
+
(0, _yahoo_uds_cli_lib.print)((0, _yahoo_uds_cli_lib.red)(`Error: ${outputPath} already exists. Use --force to overwrite.`));
|
|
133
131
|
process.exitCode = 1;
|
|
134
132
|
return;
|
|
135
133
|
}
|
|
@@ -168,13 +166,13 @@ export default defineTheme({
|
|
|
168
166
|
});
|
|
169
167
|
`;
|
|
170
168
|
node_fs.default.writeFileSync(absoluteOutputPath, template);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
170
|
+
(0, _yahoo_uds_cli_lib.print)((0, _yahoo_uds_cli_lib.green)("✅ Created uds.theme.ts"));
|
|
171
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
172
|
+
(0, _yahoo_uds_cli_lib.print)(`${(0, _yahoo_uds_cli_lib.magenta)("Next steps:")}`);
|
|
173
|
+
(0, _yahoo_uds_cli_lib.print)(` 1. Review and customize ${(0, _yahoo_uds_cli_lib.cyan)(outputPath)}`);
|
|
174
|
+
(0, _yahoo_uds_cli_lib.print)(` 2. Run ${(0, _yahoo_uds_cli_lib.cyan)("uds css")} to generate CSS`);
|
|
175
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
178
176
|
};
|
|
179
177
|
|
|
180
178
|
//#endregion
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import { cyan, green, magenta, red } from "../../../cli/dist/lib/colors.js";
|
|
3
|
-
import { print } from "../../../cli/dist/lib/print.js";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
4
2
|
import { purgeFromCodeOptimized } from "../purger/optimized/purgeFromCode.js";
|
|
5
3
|
import { formatEntryValue } from "../utils/entryPoints.js";
|
|
6
|
-
import
|
|
4
|
+
import { cyan, green, magenta, print, red } from "@yahoo/uds-cli/lib";
|
|
7
5
|
import fs from "node:fs";
|
|
8
6
|
import { createRequire } from "node:module";
|
|
7
|
+
import path from "node:path";
|
|
9
8
|
import fg from "fast-glob";
|
|
10
9
|
|
|
11
|
-
//#region
|
|
12
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
10
|
+
//#region src/css/nodeUtils.ts
|
|
13
11
|
const loadConfigFile = async (configPath) => {
|
|
14
12
|
const absolutePath = path.isAbsolute(configPath) ? configPath : path.join(process.cwd(), configPath);
|
|
15
13
|
if (!fs.existsSync(absolutePath)) return null;
|
|
@@ -174,4 +172,5 @@ export default defineTheme({
|
|
|
174
172
|
};
|
|
175
173
|
|
|
176
174
|
//#endregion
|
|
177
|
-
export { findPackageSourceDir, loadConfigFile, scaffoldThemeConfig, scanDirectoriesForSafelist, scanDirectoryForSafelist };
|
|
175
|
+
export { findPackageSourceDir, loadConfigFile, scaffoldThemeConfig, scanDirectoriesForSafelist, scanDirectoryForSafelist };
|
|
176
|
+
//# sourceMappingURL=nodeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeUtils.js","names":[],"sources":["../../src/css/nodeUtils.ts"],"sourcesContent":["import fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport { cyan, green, magenta, print, red } from '@yahoo/uds-cli/lib';\nimport fg from 'fast-glob';\n\nimport type { SerializedComponentInfo } from '../commands/generateComponentData';\nimport type { VariantDefaults } from '../purger/optimized/purgeFromCode';\nimport { purgeFromCodeOptimized } from '../purger/optimized/purgeFromCode';\nimport type { EntryValue } from '../utils/entryPoints';\nimport { formatEntryValue } from '../utils/entryPoints';\n\nconst loadConfigFile = async <T>(configPath: string): Promise<T | null> => {\n const absolutePath = path.isAbsolute(configPath)\n ? configPath\n : path.join(process.cwd(), configPath);\n\n if (!fs.existsSync(absolutePath)) {\n return null;\n }\n\n try {\n const module = await import(absolutePath);\n return module.default ?? module.config ?? module;\n } catch (error) {\n throw new Error(\n `Failed to load config file: ${absolutePath}\\n${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n};\n\nconst scanDirectoryForSafelist = async (\n dir: string,\n colorModes: ('dark' | 'light')[],\n variants: Record<string, Record<string, string>>,\n autoVariants: Record<string, Record<string, string>>,\n componentData: Record<string, SerializedComponentInfo>,\n variantDefaults?: VariantDefaults,\n includeAllClassNamePrimitives = false,\n): Promise<{ safelist: string[]; components: string[]; filesScanned: number }> => {\n const files = await fg('**/*.{js,jsx,ts,tsx}', {\n cwd: dir,\n absolute: true,\n ignore: ['**/node_modules/**'],\n });\n\n const results = await Promise.all(\n files.map(async (filePath) => {\n const code = fs.readFileSync(filePath, 'utf-8');\n return purgeFromCodeOptimized(code, {\n colorModes,\n variantDefaults,\n variants,\n autoVariants,\n componentData,\n includeAllClassNamePrimitives,\n filePath,\n });\n }),\n );\n\n const allClasses = results.flatMap((result) => result.safelist);\n const allComponents = new Set(results.flatMap((result) => result.components));\n\n return {\n safelist: allClasses,\n components: [...allComponents],\n filesScanned: files.length,\n };\n};\n\nconst scanFileForSafelist = async (\n filePath: string,\n colorModes: ('dark' | 'light')[],\n variants: Record<string, Record<string, string>>,\n autoVariants: Record<string, Record<string, string>>,\n componentData: Record<string, SerializedComponentInfo>,\n variantDefaults?: VariantDefaults,\n includeAllClassNamePrimitives = false,\n): Promise<{ safelist: string[]; components: string[]; filesScanned: number }> => {\n const code = fs.readFileSync(filePath, 'utf-8');\n const result = await purgeFromCodeOptimized(code, {\n colorModes,\n variantDefaults,\n variants,\n autoVariants,\n componentData,\n includeAllClassNamePrimitives,\n });\n\n return {\n safelist: result.safelist,\n components: result.components,\n filesScanned: 1,\n };\n};\n\nconst scanDirectoriesForSafelist = async (\n dirs: string[],\n colorModes: ('dark' | 'light')[],\n variants: Record<string, Record<string, string>>,\n autoVariants: Record<string, Record<string, string>>,\n componentData: Record<string, SerializedComponentInfo>,\n variantDefaults?: VariantDefaults,\n includeAllClassNamePrimitives = false,\n): Promise<{ safelist: string[]; components: string[]; filesScanned: number }> => {\n const results = await Promise.all(\n dirs.map((dir) => {\n if (fs.existsSync(dir) && fs.statSync(dir).isFile()) {\n return scanFileForSafelist(\n dir,\n colorModes,\n variants,\n autoVariants,\n componentData,\n variantDefaults,\n includeAllClassNamePrimitives,\n );\n }\n\n return scanDirectoryForSafelist(\n dir,\n colorModes,\n variants,\n autoVariants,\n componentData,\n variantDefaults,\n includeAllClassNamePrimitives,\n );\n }),\n );\n\n return {\n safelist: results.flatMap((result) => result.safelist),\n components: [...new Set(results.flatMap((result) => result.components))],\n filesScanned: results.reduce((total, result) => total + result.filesScanned, 0),\n };\n};\n\nconst findMonorepoRoot = (startDir: string): string | null => {\n const findUp = (currentDir: string): string | null => {\n if (fs.existsSync(path.join(currentDir, 'packages'))) {\n return currentDir;\n }\n\n const parentDir = path.dirname(currentDir);\n return parentDir === currentDir ? null : findUp(parentDir);\n };\n\n return findUp(startDir);\n};\n\nconst resolvePackageRoot = (workspaceDir: string, packageName: string): string | null => {\n const require = createRequire(import.meta.url);\n\n try {\n const resolvedPackageJson = require.resolve(path.join(packageName, 'package.json'), {\n paths: [workspaceDir],\n });\n return path.dirname(resolvedPackageJson);\n } catch {\n return null;\n }\n};\n\nconst findPackageRootInMonorepo = (monorepoRoot: string, packageName: string): string | null => {\n const packageJsonPaths = fg.sync('packages/**/package.json', {\n cwd: monorepoRoot,\n absolute: true,\n ignore: ['**/node_modules/**', '**/dist/**'],\n });\n\n const matchingPath = packageJsonPaths.find((pkgJsonPath) => {\n try {\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8')) as { name?: string };\n return pkgJson.name === packageName;\n } catch {\n return false;\n }\n });\n\n return matchingPath ? path.dirname(matchingPath) : null;\n};\n\nconst buildPackageSourceCandidates = (\n workspaceDir: string,\n packageName: string,\n packageRoot: string | null,\n): string[] => {\n return [\n packageRoot ? path.join(packageRoot, 'src') : null,\n packageRoot ? path.join(packageRoot, 'lib') : null,\n packageRoot ? path.join(packageRoot, 'dist') : null,\n packageRoot,\n path.join(workspaceDir, 'node_modules', packageName, 'src'),\n path.join(workspaceDir, 'node_modules', packageName, 'lib'),\n path.join(workspaceDir, 'node_modules', packageName, 'dist'),\n path.join(workspaceDir, 'node_modules', packageName),\n ].filter(Boolean) as string[];\n};\n\nconst getFirstExistingPath = (candidates: string[]): string | null =>\n candidates.find((candidate) => fs.existsSync(candidate)) ?? null;\n\nconst findPackageSourceDir = (packageName: string): string | null => {\n const workspaceDir = process.cwd();\n const monorepoRoot = findMonorepoRoot(workspaceDir);\n\n let packageRoot = resolvePackageRoot(workspaceDir, packageName);\n if (!packageRoot && monorepoRoot) {\n packageRoot = findPackageRootInMonorepo(monorepoRoot, packageName);\n }\n\n return getFirstExistingPath(buildPackageSourceCandidates(workspaceDir, packageName, packageRoot));\n};\n\nconst scaffoldThemeConfig = async (options: {\n outputPath?: string;\n configPath?: string;\n entry?: EntryValue;\n force?: boolean;\n}): Promise<void> => {\n const workspaceDir = process.cwd();\n const outputPath = options.outputPath ?? 'uds.theme.ts';\n const absoluteOutputPath = path.isAbsolute(outputPath)\n ? outputPath\n : path.join(workspaceDir, outputPath);\n\n if (fs.existsSync(absoluteOutputPath) && !options.force) {\n print(red(`Error: ${outputPath} already exists. Use --force to overwrite.`));\n process.exitCode = 1;\n return;\n }\n\n const configPath = options.configPath ?? './uds.config.ts';\n const entry = options.entry ?? './src';\n const serializedEntry = formatEntryValue(entry);\n\n const template = `import { defineTheme } from '@yahoo/uds';\n\n/**\n * UDS Theme Configuration\n * \n * This file configures CSS generation for your app and shared packages.\n * Run \\`uds css\\` to generate optimized CSS.\n */\nexport default defineTheme({\n // Path to your uds.config.ts file\n config: '${configPath}',\n\n // Entry directory or .tsx file path for scanning your app code\n entry: ${serializedEntry},\n\n // Color modes to include (light mode is always in :root)\n colorModes: ['dark'],\n\n // Packages that inherit your app's theme (merged into main uds.css)\n // inherit: ['@your-org/shared-ui'],\n\n // CSS generation options (all optional)\n // css: {\n // safelist: [],\n // preflight: true,\n // fontFaceDeclarations: true,\n // optimization: {\n // removeUnusedFonts: false,\n // removeEmptyRules: true,\n // deduplicateScopedCss: true\n // }\n // }\n});\n`;\n\n fs.writeFileSync(absoluteOutputPath, template);\n\n print('');\n print(green('✅ Created uds.theme.ts'));\n print('');\n print(`${magenta('Next steps:')}`);\n print(` 1. Review and customize ${cyan(outputPath)}`);\n print(` 2. Run ${cyan('uds css')} to generate CSS`);\n print('');\n};\n\nexport {\n findPackageSourceDir,\n loadConfigFile,\n scaffoldThemeConfig,\n scanDirectoriesForSafelist,\n scanDirectoryForSafelist,\n};\n"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
2
|
const require_postcss_helpers = require('./postcss.helpers.cjs');
|
|
3
3
|
|
|
4
|
-
//#region
|
|
5
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
4
|
+
//#region src/css/postcss.ts
|
|
6
5
|
/**
|
|
7
6
|
* PostCSS plugin to fix color mode selectors for scoped CSS.
|
|
8
7
|
*
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
|
|
3
|
-
//#region ../tailwind/dist/css/postcss.helpers.js
|
|
4
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
|
|
3
|
+
//#region src/css/postcss.helpers.ts
|
|
5
4
|
const COLOR_MODE_RE = /^(\.(uds-color-mode-(?:dark|light)))(\s+.+)?$/;
|
|
6
5
|
const escapeForRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
7
6
|
const getScopedColorModeAlternativeSelector = (selector, scopeClass, variant = "descendant") => {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
//#region ../tailwind/dist/css/postcss.helpers.js
|
|
3
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
//#region src/css/postcss.helpers.ts
|
|
4
3
|
const COLOR_MODE_RE = /^(\.(uds-color-mode-(?:dark|light)))(\s+.+)?$/;
|
|
5
4
|
const escapeForRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6
5
|
const getScopedColorModeAlternativeSelector = (selector, scopeClass, variant = "descendant") => {
|
|
@@ -25,4 +24,5 @@ const buildScopedColorModeSelectorList = (ruleSelector, scopeClass) => {
|
|
|
25
24
|
};
|
|
26
25
|
|
|
27
26
|
//#endregion
|
|
28
|
-
export { buildScopedColorModeSelectorList };
|
|
27
|
+
export { buildScopedColorModeSelectorList };
|
|
28
|
+
//# sourceMappingURL=postcss.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postcss.helpers.js","names":[],"sources":["../../src/css/postcss.helpers.ts"],"sourcesContent":["const COLOR_MODE_RE = /^(\\.(uds-color-mode-(?:dark|light)))(\\s+.+)?$/;\n\nconst escapeForRegExp = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\ntype ScopedColorModeSelectorVariant = 'descendant' | 'same-element';\n\nconst getScopedColorModeAlternativeSelector = (\n selector: string,\n scopeClass: string,\n variant: ScopedColorModeSelectorVariant = 'descendant',\n): string | null => {\n const scopeMatch = selector.match(new RegExp(`^(${escapeForRegExp(scopeClass)})\\\\s+(.+)$`));\n\n if (!scopeMatch) {\n return null;\n }\n\n const afterScope = scopeMatch[2];\n const colorModeMatch = afterScope.match(COLOR_MODE_RE);\n if (!colorModeMatch) {\n return null;\n }\n\n const colorModeClass = colorModeMatch[1];\n const rest = colorModeMatch[3] ?? '';\n return variant === 'same-element'\n ? `${colorModeClass}${scopeClass}${rest}`\n : `${colorModeClass} ${scopeClass}${rest}`;\n};\n\nconst buildScopedColorModeSelectorList = (ruleSelector: string, scopeClass: string): string => {\n const selectors = ruleSelector.split(',').map((value) => value.trim());\n const nextSelectors = selectors.reduce<string[]>((acc, selector) => {\n const altSelectors = [\n getScopedColorModeAlternativeSelector(selector, scopeClass),\n getScopedColorModeAlternativeSelector(selector, scopeClass, 'same-element'),\n ].filter((value): value is string => Boolean(value));\n const nextAltSelectors = altSelectors.filter(\n (altSelector) => !selectors.includes(altSelector) && !acc.includes(altSelector),\n );\n\n return [...acc, selector, ...nextAltSelectors];\n }, []);\n\n return nextSelectors.join(', ');\n};\n\nexport { buildScopedColorModeSelectorList, getScopedColorModeAlternativeSelector };\n"],"mappings":";;AAAA,MAAM,gBAAgB;AAEtB,MAAM,mBAAmB,UAA0B,MAAM,QAAQ,uBAAuB,OAAO;AAI/F,MAAM,yCACJ,UACA,YACA,UAA0C,iBACxB;CAClB,MAAM,aAAa,SAAS,MAAM,IAAI,OAAO,KAAK,gBAAgB,WAAW,CAAC,YAAY,CAAC;AAE3F,KAAI,CAAC,WACH,QAAO;CAIT,MAAM,iBADa,WAAW,GACI,MAAM,cAAc;AACtD,KAAI,CAAC,eACH,QAAO;CAGT,MAAM,iBAAiB,eAAe;CACtC,MAAM,OAAO,eAAe,MAAM;AAClC,QAAO,YAAY,iBACf,GAAG,iBAAiB,aAAa,SACjC,GAAG,eAAe,GAAG,aAAa;;AAGxC,MAAM,oCAAoC,cAAsB,eAA+B;CAC7F,MAAM,YAAY,aAAa,MAAM,IAAI,CAAC,KAAK,UAAU,MAAM,MAAM,CAAC;AAatE,QAZsB,UAAU,QAAkB,KAAK,aAAa;EAKlE,MAAM,mBAJe,CACnB,sCAAsC,UAAU,WAAW,EAC3D,sCAAsC,UAAU,YAAY,eAAe,CAC5E,CAAC,QAAQ,UAA2B,QAAQ,MAAM,CAAC,CACd,QACnC,gBAAgB,CAAC,UAAU,SAAS,YAAY,IAAI,CAAC,IAAI,SAAS,YAAY,CAChF;AAED,SAAO;GAAC,GAAG;GAAK;GAAU,GAAG;GAAiB;IAC7C,EAAE,CAAC,CAEe,KAAK,KAAK"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
2
|
import { buildScopedColorModeSelectorList } from "./postcss.helpers.js";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
5
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
4
|
+
//#region src/css/postcss.ts
|
|
6
5
|
/**
|
|
7
6
|
* PostCSS plugin to fix color mode selectors for scoped CSS.
|
|
8
7
|
*
|
|
@@ -32,4 +31,5 @@ const fixScopedColorModeSelectorsPlugin = (scopeClass) => {
|
|
|
32
31
|
};
|
|
33
32
|
|
|
34
33
|
//#endregion
|
|
35
|
-
export { fixScopedColorModeSelectorsPlugin };
|
|
34
|
+
export { fixScopedColorModeSelectorsPlugin };
|
|
35
|
+
//# sourceMappingURL=postcss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postcss.js","names":[],"sources":["../../src/css/postcss.ts"],"sourcesContent":["import type postcss from 'postcss';\n\nimport { buildScopedColorModeSelectorList } from './postcss.helpers';\n\n/**\n * PostCSS plugin to fix color mode selectors for scoped CSS.\n *\n * postcss-scope converts selectors like:\n * `.uds-color-mode-dark .foo` → `.scope .uds-color-mode-dark .foo`\n *\n * But the color mode class is typically on <html> or <body>, which is an\n * ANCESTOR of the scope, not a descendant. This plugin adds alternative\n * selectors so color modes work correctly:\n *\n * `.scope .uds-color-mode-dark .foo` → `.scope .uds-color-mode-dark .foo, .uds-color-mode-dark .scope .foo, .uds-color-mode-dark.scope .foo`\n *\n * This ensures styles apply whether the color mode class is inside or outside the scope.\n */\nconst fixScopedColorModeSelectorsPlugin = (scopeClass: string): postcss.Plugin => {\n const colorModePattern = /\\.(uds-color-mode-(?:dark|light))/;\n\n return {\n postcssPlugin: 'fix-scoped-color-mode-selectors',\n // Use Once to process all rules after parsing is complete\n Once(root) {\n root.walkRules((rule) => {\n // Skip if selector doesn't contain both scope and color mode\n if (!rule.selector.includes(scopeClass) || !colorModePattern.test(rule.selector)) {\n return;\n }\n\n const nextSelector = buildScopedColorModeSelectorList(rule.selector, scopeClass);\n if (nextSelector !== rule.selector) {\n rule.selector = nextSelector;\n }\n });\n },\n };\n};\nexport { fixScopedColorModeSelectorsPlugin };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,MAAM,qCAAqC,eAAuC;CAChF,MAAM,mBAAmB;AAEzB,QAAO;EACL,eAAe;EAEf,KAAK,MAAM;AACT,QAAK,WAAW,SAAS;AAEvB,QAAI,CAAC,KAAK,SAAS,SAAS,WAAW,IAAI,CAAC,iBAAiB,KAAK,KAAK,SAAS,CAC9E;IAGF,MAAM,eAAe,iCAAiC,KAAK,UAAU,WAAW;AAChF,QAAI,iBAAiB,KAAK,SACxB,MAAK,WAAW;KAElB;;EAEL"}
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
const require_runtime = require('
|
|
3
|
-
const require_index = require('../../../config/dist/index.cjs');
|
|
4
|
-
const require_colors = require('../../../cli/dist/lib/colors.cjs');
|
|
5
|
-
const require_print = require('../../../cli/dist/lib/print.cjs');
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
6
3
|
const require_entryPoints = require('../utils/entryPoints.cjs');
|
|
7
|
-
const require_spinner = require('../../../cli/dist/lib/spinner.cjs');
|
|
8
|
-
const require_logger = require('../../../cli/dist/lib/logger.cjs');
|
|
9
4
|
const require_nodeUtils = require('./nodeUtils.cjs');
|
|
10
5
|
const require_safelist = require('../purger/optimized/utils/safelist.cjs');
|
|
11
6
|
const require_utils = require('./utils.cjs');
|
|
12
7
|
const require_generate = require('./generate.cjs');
|
|
13
8
|
const require_runner_helpers = require('./runner.helpers.cjs');
|
|
14
|
-
let
|
|
15
|
-
node_path = require_runtime.__toESM(node_path);
|
|
9
|
+
let _yahoo_uds_cli_lib = require("@yahoo/uds-cli/lib");
|
|
16
10
|
let node_fs = require("node:fs");
|
|
17
11
|
node_fs = require_runtime.__toESM(node_fs);
|
|
12
|
+
let node_path = require("node:path");
|
|
13
|
+
node_path = require_runtime.__toESM(node_path);
|
|
14
|
+
let _yahoo_uds_config = require("@yahoo/uds-config");
|
|
18
15
|
|
|
19
|
-
//#region
|
|
20
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
16
|
+
//#region src/css/runner.ts
|
|
21
17
|
const SOURCE_FILE_PATTERN = /\.(jsx?|tsx?)$/i;
|
|
22
18
|
const getWatchDirs = (dirs) => [...new Set(dirs.filter((dir) => !dir.split(node_path.default.sep).includes("node_modules")))];
|
|
23
19
|
const isCoveredByRecursiveWatch = (watchPath, targetPath) => targetPath === watchPath || targetPath.startsWith(`${watchPath}${node_path.default.sep}`);
|
|
@@ -56,6 +52,11 @@ const createDebouncedAction = (action, delayMs) => {
|
|
|
56
52
|
debounceTimer = setTimeout(action, delayMs);
|
|
57
53
|
};
|
|
58
54
|
};
|
|
55
|
+
const getPruneVarSafelist = (themeConfig) => {
|
|
56
|
+
const pruneVars = themeConfig.css?.optimization?.pruneVars;
|
|
57
|
+
if (!pruneVars || typeof pruneVars !== "object") return [];
|
|
58
|
+
return pruneVars.safelist ?? [];
|
|
59
|
+
};
|
|
59
60
|
const createQueuedRegenerator = (options) => {
|
|
60
61
|
let isGenerating = false;
|
|
61
62
|
let pendingRegenerate = false;
|
|
@@ -92,7 +93,7 @@ const runCssCommand = async (options, context) => {
|
|
|
92
93
|
const runSimpleMode = async (options, context) => {
|
|
93
94
|
const entry = options.entryOption ?? require_entryPoints.DEFAULT_ENTRY;
|
|
94
95
|
const configPath = typeof options.configOption === "string" ? options.configOption : void 0;
|
|
95
|
-
if (!options.watch && !options.silent)
|
|
96
|
+
if (!options.watch && !options.silent) (0, _yahoo_uds_cli_lib.spinStart)("Generating CSS...");
|
|
96
97
|
try {
|
|
97
98
|
const result = await require_generate.generateSimpleModeCSS({
|
|
98
99
|
workspaceDir: options.workspaceDir,
|
|
@@ -108,7 +109,7 @@ const runSimpleMode = async (options, context) => {
|
|
|
108
109
|
});
|
|
109
110
|
if (options.watch) await runSimpleModeWatch(options, context, entry, configPath, result.packageDirs ?? []);
|
|
110
111
|
} catch (error) {
|
|
111
|
-
|
|
112
|
+
(0, _yahoo_uds_cli_lib.spinStop)("❌", error instanceof Error ? error.message : "CSS generation failed");
|
|
112
113
|
process.exitCode = 1;
|
|
113
114
|
}
|
|
114
115
|
};
|
|
@@ -120,15 +121,15 @@ const runSimpleModeWatch = async (options, context, entry, configPath, packageDi
|
|
|
120
121
|
}));
|
|
121
122
|
const watchTargets = packageDirs.length > 0 ? fallbackTargets : entryWatchTargets;
|
|
122
123
|
if (!options.silent) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
watchTargets.forEach((target) =>
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
125
|
+
(0, _yahoo_uds_cli_lib.print)(`${(0, _yahoo_uds_cli_lib.magenta)("Watching for changes...")}`);
|
|
126
|
+
watchTargets.forEach((target) => (0, _yahoo_uds_cli_lib.print)(` ${(0, _yahoo_uds_cli_lib.gray)("•")} ${target.watchPath}`));
|
|
127
|
+
(0, _yahoo_uds_cli_lib.print)(`${(0, _yahoo_uds_cli_lib.gray)("Press Ctrl+C to stop")}`);
|
|
128
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
128
129
|
}
|
|
129
130
|
const regenerate = createQueuedRegenerator({
|
|
130
131
|
onStart: () => {
|
|
131
|
-
if (!options.silent)
|
|
132
|
+
if (!options.silent) (0, _yahoo_uds_cli_lib.print)(`${(0, _yahoo_uds_cli_lib.gray)(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`)} Change detected, regenerating...`);
|
|
132
133
|
},
|
|
133
134
|
regenerateOnce: async () => {
|
|
134
135
|
await require_generate.generateSimpleModeCSS({
|
|
@@ -146,12 +147,12 @@ const runSimpleModeWatch = async (options, context, entry, configPath, packageDi
|
|
|
146
147
|
},
|
|
147
148
|
onSuccess: () => {
|
|
148
149
|
if (!options.silent) {
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
(0, _yahoo_uds_cli_lib.print)(`${(0, _yahoo_uds_cli_lib.gray)(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`)} ${(0, _yahoo_uds_cli_lib.green)("CSS updated")}`);
|
|
151
|
+
(0, _yahoo_uds_cli_lib.print)("");
|
|
151
152
|
}
|
|
152
153
|
},
|
|
153
154
|
onError: (message) => {
|
|
154
|
-
|
|
155
|
+
(0, _yahoo_uds_cli_lib.print)(`Error: ${message}`);
|
|
155
156
|
}
|
|
156
157
|
});
|
|
157
158
|
watchSourceFiles(watchTargets, createDebouncedAction(() => {
|
|
@@ -167,7 +168,7 @@ const loadThemeModeSetup = async (options) => {
|
|
|
167
168
|
watch: options.watch
|
|
168
169
|
};
|
|
169
170
|
const themeConfig = typeof themeConfigInput === "function" ? await themeConfigInput(themeContext) : themeConfigInput;
|
|
170
|
-
let appConfig =
|
|
171
|
+
let appConfig = _yahoo_uds_config.defaultTokensConfig;
|
|
171
172
|
if (themeConfig.config) {
|
|
172
173
|
const loadedConfig = await require_nodeUtils.loadConfigFile(themeConfig.config);
|
|
173
174
|
if (loadedConfig) appConfig = loadedConfig;
|
|
@@ -185,7 +186,7 @@ const runThemeMode = async (options, context) => {
|
|
|
185
186
|
const workspaceDir = options.workspaceDir;
|
|
186
187
|
const outputPath = node_path.default.isAbsolute(options.outFile) ? options.outFile : node_path.default.join(workspaceDir, String(options.outFile));
|
|
187
188
|
let effectiveSilent = options.silent;
|
|
188
|
-
let log =
|
|
189
|
+
let log = (0, _yahoo_uds_cli_lib.createLogger)({ silent: effectiveSilent });
|
|
189
190
|
log.spinStart("Loading theme configuration...");
|
|
190
191
|
try {
|
|
191
192
|
const setup = await loadThemeModeSetup(options);
|
|
@@ -196,14 +197,14 @@ const runThemeMode = async (options, context) => {
|
|
|
196
197
|
}
|
|
197
198
|
const { themeConfig, colorModes, entries, appConfig, appVariantDefaults } = setup;
|
|
198
199
|
effectiveSilent = setup.effectiveSilent;
|
|
199
|
-
log =
|
|
200
|
+
log = (0, _yahoo_uds_cli_lib.createLogger)({ silent: effectiveSilent });
|
|
200
201
|
const entryDirs = entries.map((entry) => entry.absolutePath);
|
|
201
202
|
if (!effectiveSilent) log.spinStop("✅", "Theme configuration loaded");
|
|
202
|
-
if (themeConfig.config && appConfig ===
|
|
203
|
+
if (themeConfig.config && appConfig === _yahoo_uds_config.defaultTokensConfig) log.warn(`App config not found: ${themeConfig.config}, using defaults`);
|
|
203
204
|
const packageDirs = [];
|
|
204
205
|
const generateThemeModeCSS = async (opts) => {
|
|
205
206
|
const genStartTime = performance.now();
|
|
206
|
-
const genLog = opts?.isWatch ?
|
|
207
|
+
const genLog = opts?.isWatch ? (0, _yahoo_uds_cli_lib.createLogger)({ silent: true }) : log;
|
|
207
208
|
genLog.spinStart("Scanning app code...");
|
|
208
209
|
const appScanResult = await require_nodeUtils.scanDirectoriesForSafelist(entryDirs, colorModes, context.variants, context.autoVariants, context.componentData, appVariantDefaults);
|
|
209
210
|
genLog.spinStop("✅", `Scanned ${appScanResult.filesScanned} files`);
|
|
@@ -233,7 +234,11 @@ const runThemeMode = async (options, context) => {
|
|
|
233
234
|
scope: options.scope,
|
|
234
235
|
contentDir: entryDirs,
|
|
235
236
|
cssOptions: themeConfig.css,
|
|
236
|
-
safeVarPrefixes: [
|
|
237
|
+
safeVarPrefixes: [
|
|
238
|
+
...require_utils.getMotionVarPrefixes(context.componentData, allMotionComponents),
|
|
239
|
+
...require_utils.getConfigurableCssVariables(),
|
|
240
|
+
...getPruneVarSafelist(themeConfig)
|
|
241
|
+
]
|
|
237
242
|
});
|
|
238
243
|
const outputDir = node_path.default.dirname(outputPath);
|
|
239
244
|
if (!node_fs.default.existsSync(outputDir)) node_fs.default.mkdirSync(outputDir, { recursive: true });
|
|
@@ -245,11 +250,11 @@ const runThemeMode = async (options, context) => {
|
|
|
245
250
|
}));
|
|
246
251
|
const duration = Math.round(performance.now() - genStartTime);
|
|
247
252
|
genLog.newline();
|
|
248
|
-
genLog.print(
|
|
253
|
+
genLog.print((0, _yahoo_uds_cli_lib.green)("CSS generation complete!"));
|
|
249
254
|
genLog.newline();
|
|
250
255
|
genLog.label("Output file:", outputPath);
|
|
251
256
|
genLog.newline();
|
|
252
|
-
genLog.print(`${
|
|
257
|
+
genLog.print(`${(0, _yahoo_uds_cli_lib.magenta)("Total time:")} ${duration}ms`);
|
|
253
258
|
return {
|
|
254
259
|
duration,
|
|
255
260
|
outputPath,
|
|
@@ -262,28 +267,28 @@ const runThemeMode = async (options, context) => {
|
|
|
262
267
|
const { filteredPackageDirs } = require_runner_helpers.getWatchDirectoryGroups(getWatchDirs(entryWatchTargets.map((target) => target.watchPath)), [...entryDirs, ...packageDirs]);
|
|
263
268
|
if (!effectiveSilent) {
|
|
264
269
|
log.newline();
|
|
265
|
-
log.print(`${
|
|
270
|
+
log.print(`${(0, _yahoo_uds_cli_lib.magenta)("Watching for changes...")}`);
|
|
266
271
|
entryDirs.forEach((entryDir) => {
|
|
267
272
|
log.listItem(`App: ${entryDir}`);
|
|
268
273
|
});
|
|
269
274
|
filteredPackageDirs.forEach((dir) => {
|
|
270
275
|
log.listItem(`Package: ${dir}`);
|
|
271
276
|
});
|
|
272
|
-
log.print(`${
|
|
277
|
+
log.print(`${(0, _yahoo_uds_cli_lib.gray)("Press Ctrl+C to stop")}`);
|
|
273
278
|
log.newline();
|
|
274
279
|
}
|
|
275
280
|
const regenerate = createQueuedRegenerator({
|
|
276
281
|
onStart: () => {
|
|
277
282
|
if (!effectiveSilent) {
|
|
278
283
|
const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
279
|
-
log.print(`${
|
|
284
|
+
log.print(`${(0, _yahoo_uds_cli_lib.gray)(`[${timestamp}]`)} Change detected, regenerating...`);
|
|
280
285
|
}
|
|
281
286
|
},
|
|
282
287
|
regenerateOnce: async () => generateThemeModeCSS({ isWatch: true }),
|
|
283
288
|
onSuccess: (result) => {
|
|
284
289
|
if (!effectiveSilent) {
|
|
285
290
|
const updatedAt = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
286
|
-
log.print(`${
|
|
291
|
+
log.print(`${(0, _yahoo_uds_cli_lib.gray)(`[${updatedAt}]`)} ${(0, _yahoo_uds_cli_lib.green)(`CSS updated (${result?.duration}ms)`)}`);
|
|
287
292
|
log.newline();
|
|
288
293
|
}
|
|
289
294
|
},
|
|
@@ -302,7 +307,7 @@ const runThemeMode = async (options, context) => {
|
|
|
302
307
|
}
|
|
303
308
|
} catch (error) {
|
|
304
309
|
const message = error instanceof Error ? error.message : "CSS generation failed";
|
|
305
|
-
if (effectiveSilent)
|
|
310
|
+
if (effectiveSilent) (0, _yahoo_uds_cli_lib.spinStop)("❌", message);
|
|
306
311
|
else log.spinStop("❌", message);
|
|
307
312
|
process.exitCode = 1;
|
|
308
313
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
const require_runtime = require('
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
let node_path = require("node:path");
|
|
4
4
|
node_path = require_runtime.__toESM(node_path);
|
|
5
5
|
|
|
6
|
-
//#region
|
|
7
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
6
|
+
//#region src/css/runner.helpers.ts
|
|
8
7
|
const getMainCssSummaryMessage = (options) => {
|
|
9
8
|
const { optimizationStats, sizeGzipBytes, formatBytes } = options;
|
|
10
9
|
if (!optimizationStats) return `Main CSS: ${formatBytes(sizeGzipBytes)} gzip`;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
5
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
4
|
+
//#region src/css/runner.helpers.ts
|
|
6
5
|
const getMainCssSummaryMessage = (options) => {
|
|
7
6
|
const { optimizationStats, sizeGzipBytes, formatBytes } = options;
|
|
8
7
|
if (!optimizationStats) return `Main CSS: ${formatBytes(sizeGzipBytes)} gzip`;
|
|
@@ -20,4 +19,5 @@ const getWatchDirectoryGroups = (entryDirs, dirs) => {
|
|
|
20
19
|
};
|
|
21
20
|
|
|
22
21
|
//#endregion
|
|
23
|
-
export { getMainCssSummaryMessage, getWatchDirectoryGroups };
|
|
22
|
+
export { getMainCssSummaryMessage, getWatchDirectoryGroups };
|
|
23
|
+
//# sourceMappingURL=runner.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.helpers.js","names":[],"sources":["../../src/css/runner.helpers.ts"],"sourcesContent":["import path from 'node:path';\n\ntype OptimizationStats = {\n originalSizeGzip: number;\n fontFacesRemoved: number;\n emptyRulesRemoved: number;\n};\n\ntype MainCssSummaryOptions = {\n sizeGzipBytes: number;\n optimizationStats?: OptimizationStats;\n formatBytes: (bytes: number) => string;\n};\n\nconst getMainCssSummaryMessage = (options: MainCssSummaryOptions): string => {\n const { optimizationStats, sizeGzipBytes, formatBytes } = options;\n\n if (!optimizationStats) {\n return `Main CSS: ${formatBytes(sizeGzipBytes)} gzip`;\n }\n\n const { originalSizeGzip, fontFacesRemoved, emptyRulesRemoved } = optimizationStats;\n const savedBytesGzip = originalSizeGzip - sizeGzipBytes;\n\n if (savedBytesGzip <= 0) {\n return `Main CSS: ${formatBytes(sizeGzipBytes)} gzip`;\n }\n\n return `Main CSS: ${formatBytes(sizeGzipBytes)} gzip)(optimized: saved ${formatBytes(savedBytesGzip)} gzip, ${fontFacesRemoved} unused @font-face, ${emptyRulesRemoved} empty rules removed)`;\n};\n\nconst getWatchDirectoryGroups = (entryDirs: string[], dirs: string[]) => {\n const watchDirs = [\n ...new Set(dirs.filter((dir) => !dir.split(path.sep).includes('node_modules'))),\n ];\n const filteredPackageDirs = watchDirs.filter((dir) => !entryDirs.includes(dir));\n\n return {\n watchDirs,\n filteredPackageDirs,\n };\n};\n\nexport { getMainCssSummaryMessage, getWatchDirectoryGroups };\n"],"mappings":";;;;AAcA,MAAM,4BAA4B,YAA2C;CAC3E,MAAM,EAAE,mBAAmB,eAAe,gBAAgB;AAE1D,KAAI,CAAC,kBACH,QAAO,aAAa,YAAY,cAAc,CAAC;CAGjD,MAAM,EAAE,kBAAkB,kBAAkB,sBAAsB;CAClE,MAAM,iBAAiB,mBAAmB;AAE1C,KAAI,kBAAkB,EACpB,QAAO,aAAa,YAAY,cAAc,CAAC;AAGjD,QAAO,aAAa,YAAY,cAAc,CAAC,0BAA0B,YAAY,eAAe,CAAC,SAAS,iBAAiB,sBAAsB,kBAAkB;;AAGzK,MAAM,2BAA2B,WAAqB,SAAmB;CACvE,MAAM,YAAY,CAChB,GAAG,IAAI,IAAI,KAAK,QAAQ,QAAQ,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAChF;AAGD,QAAO;EACL;EACA,qBAJ0B,UAAU,QAAQ,QAAQ,CAAC,UAAU,SAAS,IAAI,CAAC;EAK9E"}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import { defaultTokensConfig } from "../../../config/dist/index.js";
|
|
3
|
-
import { gray, green, magenta } from "../../../cli/dist/lib/colors.js";
|
|
4
|
-
import { print } from "../../../cli/dist/lib/print.js";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
5
2
|
import { DEFAULT_ENTRY, resolveEntryPaths } from "../utils/entryPoints.js";
|
|
6
|
-
import { spinStart, spinStop } from "../../../cli/dist/lib/spinner.js";
|
|
7
|
-
import { createLogger } from "../../../cli/dist/lib/logger.js";
|
|
8
3
|
import { findPackageSourceDir, loadConfigFile, scanDirectoriesForSafelist, scanDirectoryForSafelist } from "./nodeUtils.js";
|
|
9
4
|
import { deduplicateSafelist, getThemeAndScaleClasses } from "../purger/optimized/utils/safelist.js";
|
|
10
5
|
import { extractVariantDefaults, formatBytes, getConfigurableCssVariables, getMotionVarPrefixes } from "./utils.js";
|
|
11
6
|
import { generateCSS, generateSimpleModeCSS } from "./generate.js";
|
|
12
7
|
import { getMainCssSummaryMessage, getWatchDirectoryGroups } from "./runner.helpers.js";
|
|
13
|
-
import
|
|
8
|
+
import { createLogger, gray, green, magenta, print, spinStart, spinStop } from "@yahoo/uds-cli/lib";
|
|
14
9
|
import fs from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { defaultTokensConfig } from "@yahoo/uds-config";
|
|
15
12
|
|
|
16
|
-
//#region
|
|
17
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
13
|
+
//#region src/css/runner.ts
|
|
18
14
|
const SOURCE_FILE_PATTERN = /\.(jsx?|tsx?)$/i;
|
|
19
15
|
const getWatchDirs = (dirs) => [...new Set(dirs.filter((dir) => !dir.split(path.sep).includes("node_modules")))];
|
|
20
16
|
const isCoveredByRecursiveWatch = (watchPath, targetPath) => targetPath === watchPath || targetPath.startsWith(`${watchPath}${path.sep}`);
|
|
@@ -53,6 +49,11 @@ const createDebouncedAction = (action, delayMs) => {
|
|
|
53
49
|
debounceTimer = setTimeout(action, delayMs);
|
|
54
50
|
};
|
|
55
51
|
};
|
|
52
|
+
const getPruneVarSafelist = (themeConfig) => {
|
|
53
|
+
const pruneVars = themeConfig.css?.optimization?.pruneVars;
|
|
54
|
+
if (!pruneVars || typeof pruneVars !== "object") return [];
|
|
55
|
+
return pruneVars.safelist ?? [];
|
|
56
|
+
};
|
|
56
57
|
const createQueuedRegenerator = (options) => {
|
|
57
58
|
let isGenerating = false;
|
|
58
59
|
let pendingRegenerate = false;
|
|
@@ -230,7 +231,11 @@ const runThemeMode = async (options, context) => {
|
|
|
230
231
|
scope: options.scope,
|
|
231
232
|
contentDir: entryDirs,
|
|
232
233
|
cssOptions: themeConfig.css,
|
|
233
|
-
safeVarPrefixes: [
|
|
234
|
+
safeVarPrefixes: [
|
|
235
|
+
...getMotionVarPrefixes(context.componentData, allMotionComponents),
|
|
236
|
+
...getConfigurableCssVariables(),
|
|
237
|
+
...getPruneVarSafelist(themeConfig)
|
|
238
|
+
]
|
|
234
239
|
});
|
|
235
240
|
const outputDir = path.dirname(outputPath);
|
|
236
241
|
if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
|
|
@@ -306,4 +311,5 @@ const runThemeMode = async (options, context) => {
|
|
|
306
311
|
};
|
|
307
312
|
|
|
308
313
|
//#endregion
|
|
309
|
-
export { runCssCommand };
|
|
314
|
+
export { runCssCommand };
|
|
315
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","names":[],"sources":["../../src/css/runner.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { createLogger, gray, green, magenta, print, spinStart, spinStop } from '@yahoo/uds-cli/lib';\nimport type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport { defaultTokensConfig } from '@yahoo/uds-config';\n\nimport type { SerializedComponentInfo } from '../commands/generateComponentData';\nimport { deduplicateSafelist, getThemeAndScaleClasses } from '../purger/optimized/utils/safelist';\nimport type { EntryValue, ResolvedEntryPath } from '../utils/entryPoints';\nimport { DEFAULT_ENTRY, resolveEntryPaths } from '../utils/entryPoints';\nimport { generateCSS, generateSimpleModeCSS } from './generate';\nimport {\n findPackageSourceDir,\n loadConfigFile,\n scanDirectoriesForSafelist,\n scanDirectoryForSafelist,\n} from './nodeUtils';\nimport { getMainCssSummaryMessage, getWatchDirectoryGroups } from './runner.helpers';\nimport type { UDSThemeConfig, UDSThemeConfigInput, UDSThemeContext } from './theme';\nimport {\n extractVariantDefaults,\n formatBytes,\n getConfigurableCssVariables,\n getMotionVarPrefixes,\n} from './utils';\n\ntype CssCommandContext = {\n variants: Record<string, Record<string, string>>;\n autoVariants: Record<string, Record<string, string>>;\n componentData: Record<string, SerializedComponentInfo>;\n};\n\ntype CssCommandOptions = {\n workspaceDir: string;\n outFile: string;\n themeConfigPath: string;\n scope?: string;\n entryOption?: EntryValue;\n configOption?: string;\n watch: boolean;\n silent: boolean;\n};\n\ntype ThemeModeSetup = {\n themeConfig: UDSThemeConfig;\n colorModes: ('dark' | 'light')[];\n entries: ResolvedEntryPath[];\n appConfig: UniversalTokensConfig;\n appVariantDefaults: ReturnType<typeof extractVariantDefaults>;\n effectiveSilent: boolean;\n};\n\nconst SOURCE_FILE_PATTERN = /\\.(jsx?|tsx?)$/i;\n\ntype WatchTarget = {\n watchPath: string;\n recursive: boolean;\n fileNames?: string[];\n};\n\nconst getWatchDirs = (dirs: string[]): string[] => [\n ...new Set(dirs.filter((dir) => !dir.split(path.sep).includes('node_modules'))),\n];\n\nconst isCoveredByRecursiveWatch = (watchPath: string, targetPath: string): boolean =>\n targetPath === watchPath || targetPath.startsWith(`${watchPath}${path.sep}`);\n\nconst getEntryWatchTargets = (entries: ResolvedEntryPath[]): WatchTarget[] => {\n const directoryTargets = getWatchDirs(\n entries.filter((entry) => entry.kind === 'directory').map((entry) => entry.absolutePath),\n ).map((watchPath) => ({ watchPath, recursive: true }));\n\n const fileNamesByDirectory = new Map<string, Set<string>>();\n\n entries\n .filter(\n (entry): entry is ResolvedEntryPath & { kind: 'file'; fileName: string } =>\n entry.kind === 'file' && typeof entry.fileName === 'string',\n )\n .forEach((entry) => {\n if (\n directoryTargets.some((target) =>\n isCoveredByRecursiveWatch(target.watchPath, entry.absolutePath),\n )\n ) {\n return;\n }\n\n const fileNames = fileNamesByDirectory.get(entry.watchDirectory) ?? new Set<string>();\n fileNames.add(entry.fileName);\n fileNamesByDirectory.set(entry.watchDirectory, fileNames);\n });\n\n const fileTargets = [...fileNamesByDirectory.entries()].map(([watchPath, fileNames]) => ({\n watchPath,\n recursive: false,\n fileNames: [...fileNames],\n }));\n\n return [...directoryTargets, ...fileTargets];\n};\n\nconst watchSourceFiles = (targets: WatchTarget[], onFileChange: () => void): void => {\n targets.forEach((target) => {\n fs.watch(target.watchPath, { recursive: target.recursive }, (_eventType, filename) => {\n if (!filename || !SOURCE_FILE_PATTERN.test(filename)) {\n return;\n }\n\n if (target.fileNames && !target.fileNames.includes(path.basename(String(filename)))) {\n return;\n }\n\n onFileChange();\n });\n });\n};\n\nconst createDebouncedAction = (action: () => void, delayMs: number): (() => void) => {\n let debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n return () => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n debounceTimer = setTimeout(action, delayMs);\n };\n};\n\nconst getPruneVarSafelist = (themeConfig: UDSThemeConfig): Array<string | RegExp> => {\n const pruneVars = themeConfig.css?.optimization?.pruneVars;\n\n if (!pruneVars || typeof pruneVars !== 'object') {\n return [];\n }\n\n return pruneVars.safelist ?? [];\n};\n\nconst createQueuedRegenerator = <T>(options: {\n onStart?: () => void;\n onSuccess?: (result: T) => void;\n onError: (message: string) => void;\n regenerateOnce: () => Promise<T>;\n}): (() => Promise<void>) => {\n let isGenerating = false;\n let pendingRegenerate = false;\n\n const regenerate = async (): Promise<void> => {\n if (isGenerating) {\n pendingRegenerate = true;\n return;\n }\n\n isGenerating = true;\n try {\n options.onStart?.();\n const result = await options.regenerateOnce();\n options.onSuccess?.(result);\n } catch (error) {\n const message = error instanceof Error ? error.message : 'CSS generation failed';\n options.onError(message);\n } finally {\n isGenerating = false;\n\n if (pendingRegenerate) {\n pendingRegenerate = false;\n await regenerate();\n }\n }\n };\n\n return regenerate;\n};\n\nconst runCssCommand = async (\n options: CssCommandOptions,\n context: CssCommandContext,\n): Promise<void> => {\n const themeConfigExists = fs.existsSync(\n path.join(options.workspaceDir, String(options.themeConfigPath)),\n );\n\n if (!themeConfigExists) {\n await runSimpleMode(options, context);\n return;\n }\n\n await runThemeMode(options, context);\n};\n\nconst runSimpleMode = async (\n options: CssCommandOptions,\n context: CssCommandContext,\n): Promise<void> => {\n const entry = options.entryOption ?? DEFAULT_ENTRY;\n const configPath = typeof options.configOption === 'string' ? options.configOption : undefined;\n\n if (!options.watch && !options.silent) {\n spinStart('Generating CSS...');\n }\n\n try {\n const result = await generateSimpleModeCSS({\n workspaceDir: options.workspaceDir,\n entry,\n outFile: String(options.outFile),\n variants: context.variants,\n autoVariants: context.autoVariants,\n componentData: context.componentData,\n scope: options.scope,\n configPath,\n isWatch: options.watch,\n silent: options.silent,\n });\n\n if (options.watch) {\n await runSimpleModeWatch(options, context, entry, configPath, result.packageDirs ?? []);\n }\n } catch (error) {\n spinStop('❌', error instanceof Error ? error.message : 'CSS generation failed');\n process.exitCode = 1;\n }\n};\n\nconst runSimpleModeWatch = async (\n options: CssCommandOptions,\n context: CssCommandContext,\n entry: EntryValue,\n configPath: string | undefined,\n packageDirs: string[],\n): Promise<void> => {\n const resolvedEntries = resolveEntryPaths(entry, options.workspaceDir);\n const entryWatchTargets = getEntryWatchTargets(resolvedEntries);\n const fallbackTargets = getWatchDirs(packageDirs).map((watchPath) => ({\n watchPath,\n recursive: true,\n }));\n const watchTargets = packageDirs.length > 0 ? fallbackTargets : entryWatchTargets;\n\n if (!options.silent) {\n print('');\n print(`${magenta('Watching for changes...')}`);\n watchTargets.forEach((target) => print(` ${gray('•')} ${target.watchPath}`));\n print(`${gray('Press Ctrl+C to stop')}`);\n print('');\n }\n\n const regenerate = createQueuedRegenerator({\n onStart: () => {\n if (!options.silent) {\n const timestamp = new Date().toLocaleTimeString();\n print(`${gray(`[${timestamp}]`)} Change detected, regenerating...`);\n }\n },\n regenerateOnce: async () => {\n await generateSimpleModeCSS({\n workspaceDir: options.workspaceDir,\n entry,\n outFile: String(options.outFile),\n variants: context.variants,\n autoVariants: context.autoVariants,\n componentData: context.componentData,\n scope: options.scope,\n configPath,\n isWatch: true,\n silent: true,\n });\n },\n onSuccess: () => {\n if (!options.silent) {\n const updatedAt = new Date().toLocaleTimeString();\n print(`${gray(`[${updatedAt}]`)} ${green('CSS updated')}`);\n print('');\n }\n },\n onError: (message) => {\n print(`Error: ${message}`);\n },\n });\n\n watchSourceFiles(\n watchTargets,\n createDebouncedAction(() => {\n void regenerate();\n }, 100),\n );\n\n await new Promise(() => {});\n};\n\nconst loadThemeModeSetup = async (options: CssCommandOptions): Promise<ThemeModeSetup | null> => {\n const themeConfigInput = await loadConfigFile<UDSThemeConfigInput>(\n String(options.themeConfigPath),\n );\n if (!themeConfigInput) {\n return null;\n }\n\n const themeContext: UDSThemeContext = {\n cwd: options.workspaceDir,\n watch: options.watch,\n };\n const themeConfig: UDSThemeConfig =\n typeof themeConfigInput === 'function'\n ? await themeConfigInput(themeContext)\n : themeConfigInput;\n\n let appConfig: UniversalTokensConfig = defaultTokensConfig;\n if (themeConfig.config) {\n const loadedConfig = await loadConfigFile<UniversalTokensConfig>(themeConfig.config);\n if (loadedConfig) {\n appConfig = loadedConfig;\n }\n }\n\n return {\n themeConfig,\n colorModes: themeConfig.colorModes ?? ['dark'],\n entries: resolveEntryPaths(themeConfig.entry, options.workspaceDir),\n appConfig,\n appVariantDefaults: extractVariantDefaults(appConfig),\n effectiveSilent: options.silent || themeConfig.silent === true,\n };\n};\n\nconst runThemeMode = async (\n options: CssCommandOptions,\n context: CssCommandContext,\n): Promise<void> => {\n const workspaceDir = options.workspaceDir;\n const outputPath = path.isAbsolute(options.outFile)\n ? options.outFile\n : path.join(workspaceDir, String(options.outFile));\n let effectiveSilent = options.silent;\n let log = createLogger({ silent: effectiveSilent });\n\n log.spinStart('Loading theme configuration...');\n\n try {\n const setup = await loadThemeModeSetup(options);\n if (!setup) {\n log.spinStop('❌', `Theme config not found: ${options.themeConfigPath}`);\n process.exitCode = 1;\n return;\n }\n\n const { themeConfig, colorModes, entries, appConfig, appVariantDefaults } = setup;\n effectiveSilent = setup.effectiveSilent;\n log = createLogger({ silent: effectiveSilent });\n const entryDirs = entries.map((entry) => entry.absolutePath);\n\n if (!effectiveSilent) {\n log.spinStop('✅', 'Theme configuration loaded');\n }\n\n if (themeConfig.config && appConfig === defaultTokensConfig) {\n log.warn(`App config not found: ${themeConfig.config}, using defaults`);\n }\n const packageDirs: string[] = [];\n\n const generateThemeModeCSS = async (opts?: { isWatch?: boolean }) => {\n const genStartTime = performance.now();\n const genLog = opts?.isWatch ? createLogger({ silent: true }) : log;\n\n genLog.spinStart('Scanning app code...');\n const appScanResult = await scanDirectoriesForSafelist(\n entryDirs,\n colorModes,\n context.variants,\n context.autoVariants,\n context.componentData,\n appVariantDefaults,\n );\n genLog.spinStop('✅', `Scanned ${appScanResult.filesScanned} files`);\n\n genLog.spinStart('Generating main CSS...');\n\n const inheritedClasses: string[] = [...appScanResult.safelist];\n const inheritedComponents = new Set<string>(appScanResult.components);\n\n const processInheritedPackage = async (packageName: string) => {\n genLog.spinStart(`Processing package: ${packageName}...`);\n\n const packageDir = findPackageSourceDir(packageName);\n if (!packageDir) {\n genLog.spinStop('⚠️', `Package not found: ${packageName}`);\n return;\n }\n\n if (!packageDirs.includes(packageDir)) {\n packageDirs.push(packageDir);\n }\n\n const packageScanResult = await scanDirectoryForSafelist(\n packageDir,\n colorModes,\n context.variants,\n context.autoVariants,\n context.componentData,\n appVariantDefaults,\n true,\n );\n inheritedClasses.push(...packageScanResult.safelist);\n packageScanResult.components.forEach((comp) => inheritedComponents.add(comp));\n genLog.spinStop('✅', `${packageName}: ${packageScanResult.filesScanned} files (inherit)`);\n };\n\n await (themeConfig.inherit ?? []).reduce(async (promise, packageName) => {\n await promise;\n await processInheritedPackage(packageName);\n }, Promise.resolve());\n\n const mainSafelist = deduplicateSafelist([\n ...inheritedClasses,\n ...getThemeAndScaleClasses(colorModes),\n ]);\n\n const allMotionComponents: string[] = [...inheritedComponents];\n\n const mainCssResult = await generateCSS(\n [...(themeConfig.css?.safelist ?? []), ...mainSafelist],\n appConfig,\n {\n scope: options.scope,\n contentDir: entryDirs,\n cssOptions: themeConfig.css,\n safeVarPrefixes: [\n ...getMotionVarPrefixes(context.componentData, allMotionComponents),\n ...getConfigurableCssVariables(),\n ...getPruneVarSafelist(themeConfig),\n ],\n },\n );\n\n const outputDir = path.dirname(outputPath);\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, mainCssResult.css);\n\n genLog.spinStop(\n '✅',\n getMainCssSummaryMessage({\n sizeGzipBytes: mainCssResult.sizeGzipBytes,\n optimizationStats: mainCssResult.optimizationStats,\n formatBytes,\n }),\n );\n\n const duration = Math.round(performance.now() - genStartTime);\n\n genLog.newline();\n genLog.print(green('CSS generation complete!'));\n genLog.newline();\n genLog.label('Output file:', outputPath);\n genLog.newline();\n genLog.print(`${magenta('Total time:')} ${duration}ms`);\n\n return { duration, outputPath, packageDirs };\n };\n\n await generateThemeModeCSS();\n\n if (options.watch) {\n const entryWatchTargets = getEntryWatchTargets(entries);\n const entryWatchDirs = getWatchDirs(entryWatchTargets.map((target) => target.watchPath));\n const { filteredPackageDirs } = getWatchDirectoryGroups(entryWatchDirs, [\n ...entryDirs,\n ...packageDirs,\n ]);\n\n if (!effectiveSilent) {\n log.newline();\n log.print(`${magenta('Watching for changes...')}`);\n entryDirs.forEach((entryDir) => {\n log.listItem(`App: ${entryDir}`);\n });\n filteredPackageDirs.forEach((dir) => {\n log.listItem(`Package: ${dir}`);\n });\n log.print(`${gray('Press Ctrl+C to stop')}`);\n log.newline();\n }\n\n const regenerate = createQueuedRegenerator({\n onStart: () => {\n if (!effectiveSilent) {\n const timestamp = new Date().toLocaleTimeString();\n log.print(`${gray(`[${timestamp}]`)} Change detected, regenerating...`);\n }\n },\n regenerateOnce: async () => generateThemeModeCSS({ isWatch: true }),\n onSuccess: (result) => {\n if (!effectiveSilent) {\n const updatedAt = new Date().toLocaleTimeString();\n log.print(`${gray(`[${updatedAt}]`)} ${green(`CSS updated (${result?.duration}ms)`)}`);\n log.newline();\n }\n },\n onError: (message) => {\n log.print(message);\n },\n });\n\n const watchDebounce = themeConfig.css?.watchDebounce ?? 100;\n\n watchSourceFiles(\n [\n ...entryWatchTargets,\n ...filteredPackageDirs\n .filter(\n (packageDir) =>\n !entryWatchTargets.some((target) =>\n isCoveredByRecursiveWatch(target.watchPath, packageDir),\n ),\n )\n .map((watchPath) => ({ watchPath, recursive: true })),\n ],\n createDebouncedAction(() => {\n void regenerate();\n }, watchDebounce),\n );\n\n await new Promise(() => {});\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : 'CSS generation failed';\n if (effectiveSilent) {\n spinStop('❌', message);\n } else {\n log.spinStop('❌', message);\n }\n process.exitCode = 1;\n }\n};\n\nexport { runCssCommand };\nexport type { CssCommandContext, CssCommandOptions };\n"],"mappings":"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"}
|