@yahoo/uds 3.117.0 → 3.117.1
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 +1 -1
- package/dist/styles/styler.d.ts +1 -1
- 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 +9 -9
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts.map +1 -0
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts +9 -9
- 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 +234 -234
- package/dist/uds/generated/componentData.js +234 -234
- package/generated/componentData.json +324 -324
- package/package.json +1 -1
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import { DROP_SHADOW_PREFIX, UDS_PREFIX } from "../../../../css-tokens/dist/index.js";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
3
2
|
import { entries } from "../../utils/entries.js";
|
|
4
3
|
import { fromEntries } from "../../utils/fromEntries.js";
|
|
4
|
+
import { DROP_SHADOW_PREFIX, UDS_PREFIX } from "@yahoo/uds-css-tokens";
|
|
5
5
|
|
|
6
|
-
//#region
|
|
7
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
6
|
+
//#region src/tailwind/utils/getShadowStyles.ts
|
|
8
7
|
const shadowVariantToCSS = (shadowType, shadowVariant) => {
|
|
9
8
|
return [`.uds-${shadowType}-shadow-${shadowVariant}`, {
|
|
10
9
|
[`--${UDS_PREFIX}-${shadowType}-shadow`]: `var(--${UDS_PREFIX}-${shadowType}-shadow-${shadowVariant})`,
|
|
@@ -17,4 +16,5 @@ function getShadowStyles({ config, shadowType }) {
|
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
//#endregion
|
|
20
|
-
export { getShadowStyles, shadowVariantToCSS };
|
|
19
|
+
export { getShadowStyles, shadowVariantToCSS };
|
|
20
|
+
//# sourceMappingURL=getShadowStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getShadowStyles.js","names":[],"sources":["../../../src/tailwind/utils/getShadowStyles.ts"],"sourcesContent":["import type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport { DROP_SHADOW_PREFIX, UDS_PREFIX } from '@yahoo/uds-css-tokens';\nimport type { ElevationAlias, ShadowType, ShadowVariant } from '@yahoo/uds-types';\n\nimport { entries } from '../../utils/entries';\nimport { fromEntries } from '../../utils/fromEntries';\n\nconst shadowVariantToCSS = (\n shadowType: ShadowType,\n shadowVariant: ShadowVariant | ElevationAlias,\n) => {\n return [\n `.uds-${shadowType}-shadow-${shadowVariant}`,\n {\n [`--${UDS_PREFIX}-${shadowType}-shadow`]: `var(--${UDS_PREFIX}-${shadowType}-shadow-${shadowVariant})`,\n boxShadow: `var(--${DROP_SHADOW_PREFIX}, 0 0 transparent), var(--${UDS_PREFIX}-inset-shadow, 0 0 transparent), var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow, 0 0 transparent)`,\n },\n ] as const;\n};\n\nfunction getShadowStyles({\n config,\n shadowType,\n}: {\n config: UniversalTokensConfig;\n shadowType: ShadowType;\n}) {\n const shadowTypeConfig = config.shadow[shadowType];\n\n const tuple = entries(shadowTypeConfig).map(([shadowVariant]) =>\n shadowVariantToCSS(shadowType, shadowVariant),\n );\n\n return fromEntries(tuple);\n}\n\nexport { getShadowStyles, shadowVariantToCSS };\n"],"mappings":";;;;;;AAOA,MAAM,sBACJ,YACA,kBACG;AACH,QAAO,CACL,QAAQ,WAAW,UAAU,iBAC7B;GACG,KAAK,WAAW,GAAG,WAAW,WAAW,SAAS,WAAW,GAAG,WAAW,UAAU,cAAc;EACpG,WAAW,SAAS,mBAAmB,4BAA4B,WAAW;EAC/E,CACF;;AAGH,SAAS,gBAAgB,EACvB,QACA,cAIC;CACD,MAAM,mBAAmB,OAAO,OAAO;AAMvC,QAAO,YAJO,QAAQ,iBAAiB,CAAC,KAAK,CAAC,mBAC5C,mBAAmB,YAAY,cAAc,CAC9C,CAEwB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
|
|
3
|
-
//#region ../tailwind/dist/utils/assertUnreachable.js
|
|
4
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
|
|
3
|
+
//#region src/utils/assertUnreachable.ts
|
|
5
4
|
const assertUnreachable = (x) => {
|
|
6
5
|
throw new Error("Didn't expect to get here");
|
|
7
6
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
//#region ../tailwind/dist/utils/assertUnreachable.js
|
|
3
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
//#region src/utils/assertUnreachable.ts
|
|
4
3
|
const assertUnreachable = (x) => {
|
|
5
4
|
throw new Error("Didn't expect to get here");
|
|
6
5
|
};
|
|
7
6
|
|
|
8
7
|
//#endregion
|
|
9
|
-
export { assertUnreachable };
|
|
8
|
+
export { assertUnreachable };
|
|
9
|
+
//# sourceMappingURL=assertUnreachable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertUnreachable.js","names":[],"sources":["../../src/utils/assertUnreachable.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst assertUnreachable = (x: never): never => {\n throw new Error(\"Didn't expect to get here\");\n};\n\nexport { assertUnreachable };\n"],"mappings":";;AACA,MAAM,qBAAqB,MAAoB;AAC7C,OAAM,IAAI,MAAM,4BAA4B"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
|
|
3
|
-
//#region ../tailwind/dist/utils/entries.js
|
|
4
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
|
|
3
|
+
//#region src/utils/entries.ts
|
|
5
4
|
function entries(item) {
|
|
6
5
|
return Object.entries(item);
|
|
7
6
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
//#region ../tailwind/dist/utils/entries.js
|
|
3
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
//#region src/utils/entries.ts
|
|
4
3
|
function entries(item) {
|
|
5
4
|
return Object.entries(item);
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
//#endregion
|
|
9
|
-
export { entries };
|
|
8
|
+
export { entries };
|
|
9
|
+
//# sourceMappingURL=entries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entries.js","names":[],"sources":["../../src/utils/entries.ts"],"sourcesContent":["export function entries<T>(item: T) {\n return Object.entries(item as Record<string, unknown>) as [\n Extract<keyof T, string>,\n T[keyof T],\n ][];\n}\n"],"mappings":";;AAAA,SAAgB,QAAW,MAAS;AAClC,QAAO,OAAO,QAAQ,KAAgC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
const require_runtime = require('
|
|
3
|
-
let node_path = require("node:path");
|
|
4
|
-
node_path = require_runtime.__toESM(node_path);
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
5
3
|
let node_fs = require("node:fs");
|
|
6
4
|
node_fs = require_runtime.__toESM(node_fs);
|
|
5
|
+
let node_path = require("node:path");
|
|
6
|
+
node_path = require_runtime.__toESM(node_path);
|
|
7
7
|
|
|
8
|
-
//#region
|
|
9
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
8
|
+
//#region src/utils/entryPoints.ts
|
|
10
9
|
const ALLOWED_ENTRY_FILE_EXTENSIONS = [".tsx"];
|
|
11
10
|
const DEFAULT_ENTRY = "./src";
|
|
12
11
|
const getAllowedEntryFileGlobPatterns = (prefix = "**/*") => ALLOWED_ENTRY_FILE_EXTENSIONS.map((extension) => `${prefix}${extension}`);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import path from "node:path";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
3
2
|
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
4
|
|
|
5
|
-
//#region
|
|
6
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
5
|
+
//#region src/utils/entryPoints.ts
|
|
7
6
|
const ALLOWED_ENTRY_FILE_EXTENSIONS = [".tsx"];
|
|
8
7
|
const DEFAULT_ENTRY = "./src";
|
|
9
8
|
const getAllowedEntryFileGlobPatterns = (prefix = "**/*") => ALLOWED_ENTRY_FILE_EXTENSIONS.map((extension) => `${prefix}${extension}`);
|
|
@@ -52,4 +51,5 @@ const formatEntryValue = (entry) => Array.isArray(entry) ? `[${entry.map((value)
|
|
|
52
51
|
const resolveEntryPaths = (entry, workspaceDir, defaultEntry = DEFAULT_ENTRY) => normalizeEntryPaths(entry, defaultEntry).map((entryPath) => resolveEntryPath(entryPath, workspaceDir));
|
|
53
52
|
|
|
54
53
|
//#endregion
|
|
55
|
-
export { DEFAULT_ENTRY, formatEntryValue, getAllowedEntryFileGlobPatterns, hasAllowedEntryFileExtension, resolveEntryPaths, stripAllowedEntryFileExtension };
|
|
54
|
+
export { DEFAULT_ENTRY, formatEntryValue, getAllowedEntryFileGlobPatterns, hasAllowedEntryFileExtension, resolveEntryPaths, stripAllowedEntryFileExtension };
|
|
55
|
+
//# sourceMappingURL=entryPoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entryPoints.js","names":[],"sources":["../../src/utils/entryPoints.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\ntype EntryValue = string | string[];\n\nconst ALLOWED_ENTRY_FILE_EXTENSIONS = ['.tsx'] as const;\n\nconst DEFAULT_ENTRY = './src';\n\ntype ResolvedEntryPath = {\n originalPath: string;\n absolutePath: string;\n kind: 'directory' | 'file';\n watchDirectory: string;\n fileName?: string;\n};\n\nconst getAllowedEntryFileGlobPatterns = (prefix = '**/*'): string[] =>\n ALLOWED_ENTRY_FILE_EXTENSIONS.map((extension) => `${prefix}${extension}`);\n\nconst hasAllowedEntryFileExtension = (entryPath: string): boolean =>\n ALLOWED_ENTRY_FILE_EXTENSIONS.includes(\n path.extname(entryPath) as (typeof ALLOWED_ENTRY_FILE_EXTENSIONS)[number],\n );\n\nconst stripAllowedEntryFileExtension = (entryPath: string): string => {\n const extension = ALLOWED_ENTRY_FILE_EXTENSIONS.find((candidate) =>\n entryPath.endsWith(candidate),\n );\n\n return extension ? entryPath.slice(0, -extension.length) : entryPath;\n};\n\nconst formatAllowedEntryFileExtensions = (): string => ALLOWED_ENTRY_FILE_EXTENSIONS.join(', ');\n\nconst createUnsupportedEntryExtensionError = (entryPath: string): Error =>\n new Error(\n `Unsupported entry file extension for ${entryPath}. File entries must use one of: ${formatAllowedEntryFileExtensions()}.`,\n );\n\nconst createMissingEntryPathError = (entryPath: string): Error =>\n new Error(`Entry path not found: ${entryPath}.`);\n\nconst isExistingDirectory = (entryPath: string): boolean => {\n if (!fs.existsSync(entryPath)) {\n return false;\n }\n\n return fs.statSync(entryPath).isDirectory();\n};\n\nconst toAbsoluteEntryPath = (entryPath: string, workspaceDir: string): string =>\n path.isAbsolute(entryPath) ? entryPath : path.join(workspaceDir, entryPath);\n\nconst resolveEntryPath = (entryPath: string, workspaceDir: string): ResolvedEntryPath => {\n const absolutePath = toAbsoluteEntryPath(entryPath, workspaceDir);\n\n if (fs.existsSync(absolutePath)) {\n const stats = fs.statSync(absolutePath);\n\n if (stats.isDirectory()) {\n return {\n originalPath: entryPath,\n absolutePath,\n kind: 'directory',\n watchDirectory: absolutePath,\n };\n }\n\n if (stats.isFile()) {\n if (!hasAllowedEntryFileExtension(absolutePath)) {\n throw createUnsupportedEntryExtensionError(entryPath);\n }\n\n return {\n originalPath: entryPath,\n absolutePath,\n kind: 'file',\n watchDirectory: path.dirname(absolutePath),\n fileName: path.basename(absolutePath),\n };\n }\n }\n\n if (\n path.extname(entryPath) &&\n isExistingDirectory(path.dirname(absolutePath)) &&\n !hasAllowedEntryFileExtension(entryPath)\n ) {\n throw createUnsupportedEntryExtensionError(entryPath);\n }\n\n throw createMissingEntryPathError(entryPath);\n};\n\nconst normalizeEntryPaths = (\n entry: EntryValue | undefined,\n defaultEntry = DEFAULT_ENTRY,\n): string[] => {\n const values = Array.isArray(entry) ? entry : [entry];\n const normalized = values.filter(\n (value): value is string => typeof value === 'string' && value.trim().length > 0,\n );\n\n return normalized.length > 0 ? [...new Set(normalized)] : [defaultEntry];\n};\n\nconst formatEntryValue = (entry: EntryValue): string =>\n Array.isArray(entry) ? `[${entry.map((value) => `'${value}'`).join(', ')}]` : `'${entry}'`;\n\nconst resolveEntryPaths = (\n entry: EntryValue | undefined,\n workspaceDir: string,\n defaultEntry = DEFAULT_ENTRY,\n): ResolvedEntryPath[] =>\n normalizeEntryPaths(entry, defaultEntry).map((entryPath) =>\n resolveEntryPath(entryPath, workspaceDir),\n );\n\nexport {\n ALLOWED_ENTRY_FILE_EXTENSIONS,\n DEFAULT_ENTRY,\n formatEntryValue,\n getAllowedEntryFileGlobPatterns,\n hasAllowedEntryFileExtension,\n normalizeEntryPaths,\n resolveEntryPaths,\n stripAllowedEntryFileExtension,\n};\nexport type { EntryValue, ResolvedEntryPath };\n"],"mappings":";;;;;AAKA,MAAM,gCAAgC,CAAC,OAAO;AAE9C,MAAM,gBAAgB;AAUtB,MAAM,mCAAmC,SAAS,WAChD,8BAA8B,KAAK,cAAc,GAAG,SAAS,YAAY;AAE3E,MAAM,gCAAgC,cACpC,8BAA8B,SAC5B,KAAK,QAAQ,UAAU,CACxB;AAEH,MAAM,kCAAkC,cAA8B;CACpE,MAAM,YAAY,8BAA8B,MAAM,cACpD,UAAU,SAAS,UAAU,CAC9B;AAED,QAAO,YAAY,UAAU,MAAM,GAAG,CAAC,UAAU,OAAO,GAAG;;AAG7D,MAAM,yCAAiD,8BAA8B,KAAK,KAAK;AAE/F,MAAM,wCAAwC,8BAC5C,IAAI,MACF,wCAAwC,UAAU,kCAAkC,kCAAkC,CAAC,GACxH;AAEH,MAAM,+BAA+B,8BACnC,IAAI,MAAM,yBAAyB,UAAU,GAAG;AAElD,MAAM,uBAAuB,cAA+B;AAC1D,KAAI,CAAC,GAAG,WAAW,UAAU,CAC3B,QAAO;AAGT,QAAO,GAAG,SAAS,UAAU,CAAC,aAAa;;AAG7C,MAAM,uBAAuB,WAAmB,iBAC9C,KAAK,WAAW,UAAU,GAAG,YAAY,KAAK,KAAK,cAAc,UAAU;AAE7E,MAAM,oBAAoB,WAAmB,iBAA4C;CACvF,MAAM,eAAe,oBAAoB,WAAW,aAAa;AAEjE,KAAI,GAAG,WAAW,aAAa,EAAE;EAC/B,MAAM,QAAQ,GAAG,SAAS,aAAa;AAEvC,MAAI,MAAM,aAAa,CACrB,QAAO;GACL,cAAc;GACd;GACA,MAAM;GACN,gBAAgB;GACjB;AAGH,MAAI,MAAM,QAAQ,EAAE;AAClB,OAAI,CAAC,6BAA6B,aAAa,CAC7C,OAAM,qCAAqC,UAAU;AAGvD,UAAO;IACL,cAAc;IACd;IACA,MAAM;IACN,gBAAgB,KAAK,QAAQ,aAAa;IAC1C,UAAU,KAAK,SAAS,aAAa;IACtC;;;AAIL,KACE,KAAK,QAAQ,UAAU,IACvB,oBAAoB,KAAK,QAAQ,aAAa,CAAC,IAC/C,CAAC,6BAA6B,UAAU,CAExC,OAAM,qCAAqC,UAAU;AAGvD,OAAM,4BAA4B,UAAU;;AAG9C,MAAM,uBACJ,OACA,eAAe,kBACF;CAEb,MAAM,cADS,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,EAC3B,QACvB,UAA2B,OAAO,UAAU,YAAY,MAAM,MAAM,CAAC,SAAS,EAChF;AAED,QAAO,WAAW,SAAS,IAAI,CAAC,GAAG,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,aAAa;;AAG1E,MAAM,oBAAoB,UACxB,MAAM,QAAQ,MAAM,GAAG,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,MAAM;AAE1F,MAAM,qBACJ,OACA,cACA,eAAe,kBAEf,oBAAoB,OAAO,aAAa,CAAC,KAAK,cAC5C,iBAAiB,WAAW,aAAa,CAC1C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
|
|
3
|
-
//#region ../tailwind/dist/utils/fromEntries.js
|
|
4
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
|
|
3
|
+
//#region src/utils/fromEntries.ts
|
|
5
4
|
/**
|
|
6
5
|
* Converts an array of key-value pair entries into an object.
|
|
7
6
|
*
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
//#region ../tailwind/dist/utils/fromEntries.js
|
|
3
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
//#region src/utils/fromEntries.ts
|
|
4
3
|
/**
|
|
5
4
|
* Converts an array of key-value pair entries into an object.
|
|
6
5
|
*
|
|
@@ -14,4 +13,5 @@ function fromEntries(item) {
|
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
//#endregion
|
|
17
|
-
export { fromEntries };
|
|
16
|
+
export { fromEntries };
|
|
17
|
+
//# sourceMappingURL=fromEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fromEntries.js","names":[],"sources":["../../src/utils/fromEntries.ts"],"sourcesContent":["/**\n * Converts an array of key-value pair entries into an object.\n *\n * This function takes an array of `[key, value]` pairs and converts it into an object\n * where each key is associated with its corresponding value. The generic types `T` and `K`\n * represent the types of the keys and values, respectively. The keys are constrained to\n * be strings.\n */\nexport function fromEntries<T extends string, K>(item: [T, K][] | (readonly [T, K])[]) {\n return Object.fromEntries(item) as Record<T, K>;\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,YAAiC,MAAsC;AACrF,QAAO,OAAO,YAAY,KAAK"}
|
|
@@ -1,19 +1,17 @@
|
|
|
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_autoVariants = require('../../../automated-config/dist/generated/autoVariants.cjs');
|
|
5
|
-
const require_colors = require('../../../cli/dist/lib/colors.cjs');
|
|
6
|
-
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');
|
|
7
3
|
const require_plugin = require('../plugin.cjs');
|
|
8
4
|
const require_tsMorph = require('./tsMorph.cjs');
|
|
5
|
+
let _yahoo_uds_cli_lib = require("@yahoo/uds-cli/lib");
|
|
9
6
|
let ts_morph = require("ts-morph");
|
|
7
|
+
let _yahoo_uds_config = require("@yahoo/uds-config");
|
|
10
8
|
let postcss = require("postcss");
|
|
11
9
|
postcss = require_runtime.__toESM(postcss);
|
|
12
10
|
let tailwindcss = require("tailwindcss");
|
|
13
11
|
tailwindcss = require_runtime.__toESM(tailwindcss);
|
|
12
|
+
let _yahoo_uds_automated_config_autoVariants = require("@yahoo/uds-automated-config/autoVariants");
|
|
14
13
|
|
|
15
|
-
//#region
|
|
16
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
14
|
+
//#region src/utils/generatePurgeCSSData.ts
|
|
17
15
|
const NO_FILE = "noFile";
|
|
18
16
|
/**
|
|
19
17
|
* Returns a list of exported Components from UDS
|
|
@@ -73,10 +71,10 @@ const getInitializedAndReferencedProps = (project, componentName, variants, vari
|
|
|
73
71
|
const variableDeclarations = sourceFile.getVariableDeclarations();
|
|
74
72
|
const node = [...functionDeclarations, ...variableDeclarations].filter((declaration) => declaration.getName() === componentName)[0];
|
|
75
73
|
const functionDeclaration = require_tsMorph.getReactFunctionDeclaration(node);
|
|
76
|
-
if (!functionDeclaration)
|
|
74
|
+
if (!functionDeclaration) (0, _yahoo_uds_cli_lib.print)((0, _yahoo_uds_cli_lib.red)(`No function declaration found for ${componentName}`));
|
|
77
75
|
const parameterDeclaration = functionDeclaration?.getParameters();
|
|
78
76
|
if (!parameterDeclaration || parameterDeclaration.length === 0) {
|
|
79
|
-
|
|
77
|
+
(0, _yahoo_uds_cli_lib.print)((0, _yahoo_uds_cli_lib.red)(`No parameter declaration found for ${componentName}`));
|
|
80
78
|
return [];
|
|
81
79
|
}
|
|
82
80
|
if (!parameterDeclaration[0].getChildrenOfKind(ts_morph.SyntaxKind.ObjectBindingPattern)[0]) return [];
|
|
@@ -110,7 +108,7 @@ const getTwClassesInComponent = async (componentsList, exportsToFilePath) => {
|
|
|
110
108
|
const promises = componentsList.map((component) => {
|
|
111
109
|
return (0, postcss.default)([(0, tailwindcss.default)({
|
|
112
110
|
content: [exportsToFilePath[component]],
|
|
113
|
-
plugins: [require_plugin.tailwindPlugin({ config:
|
|
111
|
+
plugins: [require_plugin.tailwindPlugin({ config: _yahoo_uds_config.defaultTokensConfig })]
|
|
114
112
|
})]).process(CSS_DATA, {
|
|
115
113
|
from: "app.css",
|
|
116
114
|
to: "./dist/app.css"
|
|
@@ -153,13 +151,13 @@ const addAutoVariantsToComponentClasses = (componentToTwClasses) => {
|
|
|
153
151
|
Object.keys(componentToTwClasses).forEach((actualName) => {
|
|
154
152
|
componentNameLookup.set(actualName.toLowerCase(), actualName);
|
|
155
153
|
});
|
|
156
|
-
Object.keys(
|
|
154
|
+
Object.keys(_yahoo_uds_automated_config_autoVariants.autoVariants).forEach((key) => {
|
|
157
155
|
const match = key.match(componentNameRegex);
|
|
158
156
|
if (match && match[1]) {
|
|
159
157
|
const extractedName = match[1].charAt(0).toUpperCase() + match[1].slice(1);
|
|
160
158
|
const actualComponentName = componentNameLookup.get(extractedName.toLowerCase()) || extractedName;
|
|
161
159
|
if (!componentNameMap[actualComponentName]) componentNameMap[actualComponentName] = [];
|
|
162
|
-
Object.values(
|
|
160
|
+
Object.values(_yahoo_uds_automated_config_autoVariants.autoVariants[key]).forEach((className) => {
|
|
163
161
|
componentNameMap[actualComponentName].push(className);
|
|
164
162
|
});
|
|
165
163
|
}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
import { defaultTokensConfig } from "../../../config/dist/index.js";
|
|
3
|
-
import { autoVariants } from "../../../automated-config/dist/generated/autoVariants.js";
|
|
4
|
-
import { red } from "../../../cli/dist/lib/colors.js";
|
|
5
|
-
import { print } from "../../../cli/dist/lib/print.js";
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
6
2
|
import { tailwindPlugin } from "../plugin.js";
|
|
7
3
|
import { findReferencesAsJsxElements, getReactFunctionDeclaration, getUsedPropsInReference } from "./tsMorph.js";
|
|
4
|
+
import { print, red } from "@yahoo/uds-cli/lib";
|
|
8
5
|
import { SyntaxKind } from "ts-morph";
|
|
6
|
+
import { defaultTokensConfig } from "@yahoo/uds-config";
|
|
9
7
|
import postcss from "postcss";
|
|
10
8
|
import tailwindcss from "tailwindcss";
|
|
9
|
+
import { autoVariants } from "@yahoo/uds-automated-config/autoVariants";
|
|
11
10
|
|
|
12
|
-
//#region
|
|
13
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
11
|
+
//#region src/utils/generatePurgeCSSData.ts
|
|
14
12
|
const NO_FILE = "noFile";
|
|
15
13
|
/**
|
|
16
14
|
* Returns a list of exported Components from UDS
|
|
@@ -178,4 +176,5 @@ const addAutoVariantsToComponentClasses = (componentToTwClasses) => {
|
|
|
178
176
|
};
|
|
179
177
|
|
|
180
178
|
//#endregion
|
|
181
|
-
export { addAutoVariantsToComponentClasses, convertVariantsIntoTailwindClass, getComponentsDependencies, getComponentsProps, getExportedComponents, getExportsToFilePath, getTwClassesInComponent };
|
|
179
|
+
export { addAutoVariantsToComponentClasses, convertVariantsIntoTailwindClass, getComponentsDependencies, getComponentsProps, getExportedComponents, getExportsToFilePath, getTwClassesInComponent };
|
|
180
|
+
//# sourceMappingURL=generatePurgeCSSData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatePurgeCSSData.js","names":[],"sources":["../../src/utils/generatePurgeCSSData.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { autoVariants } from '@yahoo/uds-automated-config/autoVariants';\nimport { print, red } from '@yahoo/uds-cli/lib';\nimport { defaultTokensConfig } from '@yahoo/uds-config';\nimport type { AcceptedPlugin } from 'postcss';\nimport postcss from 'postcss';\nimport tailwindcss from 'tailwindcss';\nimport type { Project } from 'ts-morph';\nimport { SyntaxKind } from 'ts-morph';\n\nimport { tailwindPlugin } from '../tailwind/tailwindPlugin';\nimport {\n findReferencesAsJsxElements,\n getReactFunctionDeclaration,\n getUsedPropsInReference,\n} from './tsMorph';\n\ntype ComponentsList = string[];\ntype ComponentToVariants = { [key: string]: PropToUsedOptions[] };\ntype VariantsList = string[];\ntype ComponentDependencies = { [key: string]: string[] };\ntype ComponentToTwClasses = { [key: string]: string };\ntype ExportToFilePath = { [key: string]: string };\ntype AllProps = Array<[string, string[]]>;\ntype PropToUsedOptions = [string, string[]];\n\nconst NO_FILE: string = 'noFile';\n\n/**\n * Returns a list of exported Components from UDS\n * both stable and experimental\n */\nconst getExportedComponents = (\n UDS: Record<string, any>,\n UDS_EXPERIMENTAL: Record<string, any>,\n): ComponentsList => {\n const udsStableExports = Object.keys(UDS);\n const udsExperimentalExports = Object.keys(UDS_EXPERIMENTAL);\n const allExports = udsStableExports.concat(udsExperimentalExports);\n const keys = allExports.filter((key) => {\n const regexStartsWithCapitalLetter = new RegExp('^[A-Z].[^_]');\n const hasUnderscore = key.includes('_');\n const startsWithCapitalLetter = regexStartsWithCapitalLetter.test(key);\n return !hasUnderscore && startsWithCapitalLetter;\n });\n return keys;\n};\n\n/**\n * Some UDS components are built using other UDS components,\n * we need to know those dependencies so generate the correct\n */\nconst getComponentsDependencies = (\n project: Project,\n componentsList: ComponentsList,\n exportsToFilePath: ExportToFilePath,\n): ComponentDependencies => {\n const componentsListSet = new Set(componentsList);\n // the components a component from UDS depends on\n const componentUDSDependencies: { [k: string]: string[] } = {};\n componentsList.forEach((component) => {\n componentUDSDependencies[component] = getComponentUdsDependencies(\n project,\n componentsListSet,\n component,\n exportsToFilePath,\n );\n });\n return componentUDSDependencies;\n};\n\n/**\n * We need to make sure that components from UDS that use other components\n * from UDS also gets included\n */\nconst getComponentUdsDependencies = (\n project: Project,\n componentsList: Set<string>,\n componentName: string,\n exportsToFilePath: ExportToFilePath,\n): string[] => {\n const sourceFile = project.getSourceFileOrThrow(exportsToFilePath[componentName]);\n\n const deps = sourceFile\n .getImportDeclarations()\n .map((declaration) => {\n return declaration.getNamedImports().map((namedImport) => namedImport.getName());\n })\n .flat()\n .filter((namedImport) => componentsList.has(namedImport));\n\n return deps;\n};\n\nconst getComponentsProps = (\n project: Project,\n list: ComponentsList,\n variants: Record<string, Record<string, string>>,\n variantsList: VariantsList,\n exportsToFilePath: ExportToFilePath,\n): ComponentToVariants => {\n const map: ComponentToVariants = {};\n\n list.forEach((componentName) => {\n const list = getInitializedAndReferencedProps(\n project,\n componentName,\n variants,\n variantsList,\n exportsToFilePath,\n );\n map[componentName] = list;\n });\n\n return map;\n};\n\n/**\n * Converts the variants object used in CVA to\n */\nconst convertVariantsIntoTailwindClass = (\n variants: Record<string, Record<string, string>>,\n): VariantsList => {\n const variantsList = Object.keys(variants) as Array<keyof typeof variants>;\n\n return variantsList;\n};\n\n/**\n * Get the params with default values,\n * required and the ones used in references\n */\nconst getInitializedAndReferencedProps = (\n project: Project,\n componentName: string,\n variants: Record<string, Record<string, string>>,\n variantsList: VariantsList,\n exportsToFilePath: ExportToFilePath,\n): AllProps => {\n const sourceFile = project.getSourceFileOrThrow(exportsToFilePath[componentName] ?? NO_FILE);\n\n const functionDeclarations = sourceFile.getFunctions();\n const variableDeclarations = sourceFile.getVariableDeclarations();\n const node = [...functionDeclarations, ...variableDeclarations].filter(\n (declaration) => declaration.getName() === componentName,\n )[0];\n\n const functionDeclaration = getReactFunctionDeclaration(node);\n\n if (!functionDeclaration) {\n print(red(`No function declaration found for ${componentName}`));\n }\n\n const parameterDeclaration = functionDeclaration?.getParameters();\n\n if (!parameterDeclaration || parameterDeclaration.length === 0) {\n print(red(`No parameter declaration found for ${componentName}`));\n return [];\n }\n\n // the first parameter in all react components is the props\n if (!parameterDeclaration[0].getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0]) {\n return [];\n }\n\n const componentIdentifier = node.getFirstDescendantByKindOrThrow(SyntaxKind.Identifier);\n const references = findReferencesAsJsxElements(componentIdentifier);\n\n const propsWithDefaultValues = parameterDeclaration[0]\n .getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0]\n .getElements()\n .filter((el) => !!el.getInitializer())\n .map((el) => {\n const stringLiteral = el.getDescendantsOfKind(SyntaxKind.StringLiteral)[0];\n const propName = el.getName();\n const values: string[] = [];\n if (stringLiteral) {\n values.push(stringLiteral.getLiteralText());\n }\n\n return [propName, values] as [string, string[]];\n })\n .filter(([propName]) => variantsList.includes(propName));\n\n const propsUsedInReferences = references\n .map((r) => getUsedPropsInReference(r, variants))\n .flat()\n .filter(([propName]) => variantsList.includes(propName));\n\n const mapPropToUsedOptions = new Map<string, Set<string>>();\n\n propsWithDefaultValues.concat(propsUsedInReferences).forEach(([propName, propValues]) => {\n // This means that an expression has been used\n // so we need to add all possible options for that prop\n if (propValues.length === 0) {\n propValues = Object.keys(variants[propName as keyof typeof variants]);\n }\n\n const options: Set<string> = mapPropToUsedOptions.get(propName) ?? new Set();\n propValues.forEach((val) => options.add(val));\n mapPropToUsedOptions.set(propName, options);\n });\n\n const res: Array<[string, string[]]> = Array.from(mapPropToUsedOptions).map(\n ([propName, options]) => [propName, Array.from(options)],\n );\n\n return res;\n};\n\n/**\n * Gets the Tailwind CSS classes used in a component\n */\nconst getTwClassesInComponent = async (\n componentsList: ComponentsList,\n exportsToFilePath: ExportToFilePath,\n): Promise<ComponentToTwClasses> => {\n const CSS_DATA = `\n @tailwind components;\n @tailwind utilities;\n `;\n\n const res: ComponentToTwClasses = {};\n\n const promises = componentsList.map((component) => {\n const plugin = tailwindcss({\n content: [exportsToFilePath[component]],\n plugins: [tailwindPlugin({ config: defaultTokensConfig })],\n });\n return postcss([plugin as AcceptedPlugin]).process(CSS_DATA, {\n from: 'app.css',\n to: './dist/app.css',\n });\n });\n\n const resolvedPromises = await Promise.all(promises);\n\n resolvedPromises.forEach((result, i) => {\n const currentComponent = componentsList[i];\n const classes = result.root.nodes\n .map((node) => {\n if ((node as any).selector) {\n return (node as any).selector.replace('.', '');\n }\n\n return [];\n })\n .join(' ')\n // replace multiple spaces with one space\n .replace(/\\s+/g, ' ');\n res[currentComponent] = classes;\n });\n\n return res;\n};\n\n/**\n * Goes through the list of all exports from UDS (stable and experimental)\n * and return a map of each exports and the source file path where its declared\n */\nconst getExportsToFilePath = (project: Project): ExportToFilePath => {\n const stableComponentsMainFile = project.getSourceFileOrThrow('./src/components/index.ts');\n const experimentalComponentsMainFile = project.getSourceFileOrThrow(\n './src/components/experimental/index.ts',\n );\n const exportToFilePath: ExportToFilePath = {};\n for (const [name, declarations] of stableComponentsMainFile.getExportedDeclarations()) {\n exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];\n }\n for (const [name, declarations] of experimentalComponentsMainFile.getExportedDeclarations()) {\n exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];\n }\n\n return exportToFilePath;\n};\n\n/**\n * Adds auto-generated variants to the Tailwind CSS classes of components.\n *\n * This function extracts component names from auto variants keys, groups class names by component,\n * updates component classes using auto-generated variant classes, and propagates base classes to subcomponents.\n *\n * @param componentToTwClasses - A map of component names to their current Tailwind CSS classes.\n * @returns Updated map with auto variants added to the component classes.\n */\nconst addAutoVariantsToComponentClasses = (\n componentToTwClasses: ComponentToTwClasses,\n): ComponentToTwClasses => {\n // Extract component names from auto variants keys\n // Example: \"checkboxSizeRoot\" -> \"Checkbox\"\n const componentNameRegex = /^([a-z]+)[A-Z]/;\n const componentNameMap: Record<string, string[]> = {};\n\n // Create a case-insensitive lookup map from component names in componentToTwClasses\n const componentNameLookup = new Map<string, string>();\n Object.keys(componentToTwClasses).forEach((actualName) => {\n componentNameLookup.set(actualName.toLowerCase(), actualName);\n });\n\n // Group class names by component\n Object.keys(autoVariants).forEach((key) => {\n const match = key.match(componentNameRegex);\n if (match && match[1]) {\n const extractedName = match[1].charAt(0).toUpperCase() + match[1].slice(1);\n // Use case-insensitive lookup to find the actual component name\n const actualComponentName =\n componentNameLookup.get(extractedName.toLowerCase()) || extractedName;\n\n if (!componentNameMap[actualComponentName]) {\n componentNameMap[actualComponentName] = [];\n }\n\n // Get all class names for this variant\n Object.values(autoVariants[key as keyof typeof autoVariants]).forEach((className) => {\n componentNameMap[actualComponentName].push(className);\n });\n }\n });\n\n // Add or update component classes\n Object.entries(componentNameMap).forEach(([componentName, classes]) => {\n const existingClasses = componentToTwClasses[componentName] || '';\n componentToTwClasses[componentName] = `${existingClasses} ${classes.join(' ')}`.trim();\n });\n\n // add a step to also add the classes to sub components (example, AvatarText, AvatarIcon, ...)\n const components = Object.keys(componentNameMap);\n Object.keys(componentToTwClasses).forEach((key) => {\n components.forEach((comp) => {\n const compName = comp.charAt(0).toUpperCase() + comp.slice(1);\n if (key.startsWith(compName) && key !== compName) {\n const baseClasses = componentToTwClasses[compName] || '';\n if (baseClasses) {\n componentToTwClasses[key] = `${componentToTwClasses[key]} ${baseClasses}`.trim();\n }\n }\n });\n });\n return componentToTwClasses;\n};\n\nexport {\n addAutoVariantsToComponentClasses,\n convertVariantsIntoTailwindClass,\n getComponentsDependencies,\n getComponentsProps,\n getComponentUdsDependencies,\n getExportedComponents,\n getExportsToFilePath,\n getInitializedAndReferencedProps,\n getTwClassesInComponent,\n NO_FILE,\n};\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/mapValues.js
|
|
4
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
|
|
3
|
+
//#region src/utils/mapValues.ts
|
|
5
4
|
function mapValues(obj, callbackFn) {
|
|
6
5
|
return Object.keys(obj).reduce((acc, key, i) => {
|
|
7
6
|
acc[key] = callbackFn(obj[key], key, i);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
|
-
//#region ../tailwind/dist/utils/mapValues.js
|
|
3
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
//#region src/utils/mapValues.ts
|
|
4
3
|
function mapValues(obj, callbackFn) {
|
|
5
4
|
return Object.keys(obj).reduce((acc, key, i) => {
|
|
6
5
|
acc[key] = callbackFn(obj[key], key, i);
|
|
@@ -9,4 +8,5 @@ function mapValues(obj, callbackFn) {
|
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
//#endregion
|
|
12
|
-
export { mapValues };
|
|
11
|
+
export { mapValues };
|
|
12
|
+
//# sourceMappingURL=mapValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapValues.js","names":[],"sources":["../../src/utils/mapValues.ts"],"sourcesContent":["type AnyObject = Record<string, unknown>;\n\nexport function mapValues<\n T extends AnyObject,\n K extends (value: T[keyof T], key: keyof T, i: number) => unknown,\n>(obj: T, callbackFn: K) {\n return Object.keys(obj).reduce(\n (acc, key: keyof T, i) => {\n acc[key] = callbackFn(obj[key], key, i) as ReturnType<typeof callbackFn>;\n return acc;\n },\n\n {} as { [key in keyof T]: ReturnType<K> },\n );\n}\n"],"mappings":";;AAEA,SAAgB,UAGd,KAAQ,YAAe;AACvB,QAAO,OAAO,KAAK,IAAI,CAAC,QACrB,KAAK,KAAc,MAAM;AACxB,MAAI,OAAO,WAAW,IAAI,MAAM,KAAK,EAAE;AACvC,SAAO;IAGT,EAAE,CACH"}
|
|
@@ -1,9 +1,9 @@
|
|
|
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");
|
|
4
|
-
|
|
5
|
-
//#region ../tailwind/dist/utils/opacity.js
|
|
6
1
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
let lodash_clamp_js = require("lodash/clamp.js");
|
|
4
|
+
lodash_clamp_js = require_runtime.__toESM(lodash_clamp_js);
|
|
5
|
+
|
|
6
|
+
//#region src/utils/opacity.ts
|
|
7
7
|
/**
|
|
8
8
|
* Converts a number or string to a valid OpacityStep.
|
|
9
9
|
*
|
|
@@ -20,7 +20,7 @@ function parseOpacityStep(opacity) {
|
|
|
20
20
|
if (opacity === void 0 || opacity === null) throw new Error(`Invalid opacity value: ${opacity}`);
|
|
21
21
|
const parsed = typeof opacity === "number" ? opacity : parseInt(opacity, 10);
|
|
22
22
|
if (isNaN(parsed)) throw new Error(`Invalid opacity value: cannot parse "${opacity}" as a number`);
|
|
23
|
-
return (0,
|
|
23
|
+
return (0, lodash_clamp_js.default)(parsed, 0, 100).toString();
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
//#endregion
|
|
@@ -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 { clamp } from "lodash-es";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
5
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
4
|
+
//#region src/utils/opacity.ts
|
|
6
5
|
/**
|
|
7
6
|
* Converts a number or string to a valid OpacityStep.
|
|
8
7
|
*
|
|
@@ -23,4 +22,5 @@ function parseOpacityStep(opacity) {
|
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
//#endregion
|
|
26
|
-
export { parseOpacityStep };
|
|
25
|
+
export { parseOpacityStep };
|
|
26
|
+
//# sourceMappingURL=opacity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opacity.js","names":[],"sources":["../../src/utils/opacity.ts"],"sourcesContent":["import type { OpacityStep } from '@yahoo/uds-types';\nimport { clamp } from 'lodash';\n\n/**\n * Converts a number or string to a valid OpacityStep.\n *\n * Converts a number or string to a valid OpacityStep by:\n * - Parsing the value as an integer\n * - Clamping between 0 and 100\n * - Returning as a string in the format expected by OpacityStep\n *\n * @param opacity - The opacity value (number or string)\n * @returns A valid OpacityStep string clamped between 0-100\n * @throws {Error} If opacity is undefined, null, or cannot be parsed as a number\n */\nexport function parseOpacityStep(opacity: number | string | undefined): OpacityStep {\n if (opacity === undefined || opacity === null) {\n throw new Error(`Invalid opacity value: ${opacity}`);\n }\n\n const parsed = typeof opacity === 'number' ? opacity : parseInt(opacity, 10);\n\n if (isNaN(parsed)) {\n throw new Error(`Invalid opacity value: cannot parse \"${opacity}\" as a number`);\n }\n\n return clamp(parsed, 0, 100).toString() as OpacityStep;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAAgB,iBAAiB,SAAmD;AAClF,KAAI,YAAY,UAAa,YAAY,KACvC,OAAM,IAAI,MAAM,0BAA0B,UAAU;CAGtD,MAAM,SAAS,OAAO,YAAY,WAAW,UAAU,SAAS,SAAS,GAAG;AAE5E,KAAI,MAAM,OAAO,CACf,OAAM,IAAI,MAAM,wCAAwC,QAAQ,eAAe;AAGjF,QAAO,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU"}
|
|
@@ -1,11 +1,10 @@
|
|
|
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_zlib = require("node:zlib");
|
|
4
4
|
let postcss = require("postcss");
|
|
5
5
|
postcss = require_runtime.__toESM(postcss);
|
|
6
6
|
|
|
7
|
-
//#region
|
|
8
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
7
|
+
//#region src/utils/optimizeCSS.ts
|
|
9
8
|
/**
|
|
10
9
|
* Check if a selector is a "meaningful" selector (class, ID, attribute, or pseudo-class)
|
|
11
10
|
* as opposed to just element/type selectors (like `code, kbd, pre` in preflight).
|
|
@@ -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 { gzipSync } from "node:zlib";
|
|
3
3
|
import postcss from "postcss";
|
|
4
4
|
|
|
5
|
-
//#region
|
|
6
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
5
|
+
//#region src/utils/optimizeCSS.ts
|
|
7
6
|
/**
|
|
8
7
|
* Check if a selector is a "meaningful" selector (class, ID, attribute, or pseudo-class)
|
|
9
8
|
* as opposed to just element/type selectors (like `code, kbd, pre` in preflight).
|
|
@@ -400,4 +399,5 @@ async function optimizeCSS(css, options) {
|
|
|
400
399
|
}
|
|
401
400
|
|
|
402
401
|
//#endregion
|
|
403
|
-
export { optimizeCSS };
|
|
402
|
+
export { optimizeCSS };
|
|
403
|
+
//# sourceMappingURL=optimizeCSS.js.map
|
|
@@ -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":";;;;;;;;;;AAUA,SAAS,qBAAqB,UAA2B;CAEvD,MAAM,QAAQ,SAAS,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;AAEtD,MAAK,MAAM,QAAQ,MAGjB,KACE,KAAK,SAAS,IAAI,IAClB,KAAK,SAAS,IAAI,IAClB,KAAK,SAAS,IAAI,IAClB,KAAK,SAAS,QAAQ,IACtB,KAAK,SAAS,UAAU,IACxB,KAAK,SAAS,OAAO,IACrB,KAAK,SAAS,QAAQ,CAEtB,QAAO;AAIX,QAAO;;;;;;AAOT,SAAS,wBAAgC;AACvC,QAAO;EACL,eAAe;EACf,KAAK,MAAY;GAGf,MAAM,+BAAe,IAAI,KAAqD;GAG9E,MAAM,mCAAmB,IAAI,KAAa;AAE1C,QAAK,UAAU,gBAAgB,SAAS;AAEtC,QAAI,KAAK,QAAQ,SAAS,YAAa,KAAK,OAAkB,SAAS,YACrE;IAMF,MAAM,aAAa,qBAFN,KAAK,QACK,YAAY,GACc;IAIjD,MAAM,QAAQ,KAAK;IAGnB,MAAM,aAAa,MAAM,SAAS,8BAA8B;AAChE,SAAK,MAAM,SAAS,YAAY;KAC9B,MAAM,UAAU,MAAM;KACtB,MAAM,WAAW,aAAa,IAAI,QAAQ,IAAI;MAAE,MAAM;MAAO,YAAY;MAAO;AAChF,kBAAa,IAAI,SAAS;MACxB,MAAM;MACN,YAAY,SAAS,cAAc;MACpC,CAAC;;AAIJ,QAAI,WAkCF,CAjCkB,MACf,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,KAAK,SAAS;AAEb,SACG,KAAK,WAAW,KAAI,IAAI,KAAK,SAAS,KAAI,IAC1C,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,CAE3C,QAAO,KAAK,MAAM,GAAG,GAAG;AAG1B,SACE,KAAK,WAAW,OAAO,IACvB;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD,CAAC,SAAS,KAAK,aAAa,CAAC,CAE9B,QAAO;AAET,YAAO;MACP,CACD,OAAO,QAAQ,CAER,SAAS,SAAS,iBAAiB,IAAI,KAAK,CAAC;KAEzD;GAGF,MAAM,qCAAqB,IAAI,KAAqB;AACpD,QAAK,WAAW,SAAS;AACvB,QACE,KAAK,KAAK,WAAW,cAAc,IACnC,CAAC,KAAK,KAAK,SAAS,OAAO,IAC3B,CAAC,KAAK,KAAK,SAAS,SAAS,IAC7B,CAAC,KAAK,KAAK,SAAS,QAAQ,IAC5B,CAAC,KAAK,KAAK,SAAS,QAAQ,EAC5B;KACA,MAAM,UAAU,KAAK,KAAK,QAAQ,eAAe,GAAG;AACpD,wBAAmB,IAAI,SAAS,KAAK,MAAM;;KAE7C;GAGF,MAAM,sBAAsB,OAAe,0BAAU,IAAI,KAAa,KAAe;IACnF,MAAM,YAAsB,EAAE;IAG9B,MAAM,WAAW,MAAM,MAAM,6BAA6B;AAC1D,QAAI,UAAU;KACZ,MAAM,gBAAgB,SAAS;AAE/B,SAAI,CAAC,QAAQ,IAAI,cAAc,EAAE;AAC/B,cAAQ,IAAI,cAAc;MAC1B,MAAM,cAAc,mBAAmB,IAAI,cAAc;AACzD,UAAI,aAAa;OAEf,MAAM,cAAc,aAAa,IAAI,cAAc;AACnD,WAAI,aAKF;YAHoB,aAAa,IAC/B,MAAM,QAAQ,gCAAgC,KAAK,CACpD,EACgB,WACf,aAAY,aAAa;;AAG7B,iBAAU,KAAK,GAAG,mBAAmB,aAAa,QAAQ,CAAC;;;;AAMjE,UACG,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,SAAS,SAAS;AAEjB,SAAI,KAAK,WAAW,OAAO,CACzB;AAIF,SACG,KAAK,WAAW,KAAI,IAAI,KAAK,SAAS,KAAI,IAC1C,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,CAE3C,QAAO,KAAK,MAAM,GAAG,GAAG;AAI1B,SACE;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD,CAAC,SAAS,KAAK,aAAa,CAAC,CAE9B;AAGF,SAAI,KACF,WAAU,KAAK,KAAK;MAEtB;AAEJ,WAAO;;AAIT,QAAK,MAAM,CAAC,SAAS,UAAU,oBAAoB;IACjD,MAAM,QAAQ,aAAa,IAAI,QAAQ;AAGvC,QAAI,OAAO,QAAQ,OAAO,WAExB,CADkB,mBAAmB,MAAM,CACjC,SAAS,SAAS,iBAAiB,IAAI,KAAK,CAAC;;GAK3D,MAAM,4BAAY,IAAI,KAAa;AACnC,QAAK,YAAY,cAAc,WAAW;IACxC,IAAI,aAA4B;AAEhC,WAAO,UAAU,gBAAgB,SAAS;AACxC,kBAAa,KAAK,MAAM,QAAQ,SAAS,GAAG,CAAC,MAAM;MACnD;AAEF,QAAI,cAAc,CAAC,iBAAiB,IAAI,WAAW,CACjD,QAAO,QAAQ;aACN,WACT,WAAU,IAAI,WAAW;KAE3B;AAIF,QAAK,WAAW,SAAS;AACvB,QACE,KAAK,KAAK,WAAW,cAAc,IACnC,CAAC,KAAK,KAAK,SAAS,OAAO,IAC3B,CAAC,KAAK,KAAK,SAAS,SAAS,IAC7B,CAAC,KAAK,KAAK,SAAS,QAAQ,IAC5B,CAAC,KAAK,KAAK,SAAS,QAAQ,EAC5B;KAEA,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;KACxD,MAAM,gBAAgB,MAAM,QAAQ,SAAS;AAE3C,UAAI,KAAK,WAAW,OAAO,CACzB,QAAO;MAIT,IAAI,WAAW;AACf,UACG,KAAK,WAAW,KAAI,IAAI,KAAK,SAAS,KAAI,IAC1C,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,CAE3C,YAAW,KAAK,MAAM,GAAG,GAAG;AAI9B,UACE;OACE;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACD,CAAC,SAAS,SAAS,aAAa,CAAC,CAElC,QAAO;AAIT,aAAO,UAAU,IAAI,SAAS;OAC9B;AAGF,SAAI,cAAc,SAAS,MAAM,UAAU,cAAc,SAAS,EAChE,MAAK,QAAQ,cAAc,KAAK,KAAK;;KAGzC;;EAEL;;AAGH,sBAAsB,UAAU;;;;;AAMhC,SAAS,iCAAyC;AAChD,QAAO;EACL,eAAe;EACf,KAAK,MAAY;AACf,QAAK,WAAW,SAAS;IAEvB,MAAM,YAAY,KAAK,SAAS,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;IAC/D,MAAM,oBAAoB,UAAU,QAAQ,MAAM;KAGhD,MAAM,aAAa,EAAE,QAAQ,QAAQ,IAAI,CAAC,MAAM;AAChD,YACE,eAAe,2BACf,eAAe,iCACf,eAAe,mCACf,eAAe;MAEjB;AAEF,QAAI,kBAAkB,WAAW,EAE/B,MAAK,QAAQ;aACJ,kBAAkB,SAAS,UAAU,OAE9C,MAAK,WAAW,kBAAkB,KAAK,KAAK;KAE9C;;EAEL;;AAGH,+BAA+B,UAAU;;;;;AAMzC,SAAS,yBAAiC;AACxC,QAAO;EACL,eAAe;EACf,KAAK,MAAY;AAEf,QAAK,WAAW,SAAS;AAMvB,QAAI,CAJoB,KAAK,OAAO,MACjC,SAAS,KAAK,SAAS,UAAW,KAAK,SAAS,UAAU,KAAK,OAAO,SAAS,EACjF,CAGC,MAAK,QAAQ;KAEf;AAGF,QAAK,aAAa,WAAW;AAC3B,QAAI,OAAO,SAAS,eAAe,OAAO,SAAS,aAWjD;SAAI,CAVe,OAAO,OAAO,MAAM,SAAS;AAC9C,UAAI,KAAK,SAAS,OAChB,QAAO,KAAK,OAAO,MAAM,MAAM,EAAE,SAAS,OAAO;AAEnD,UAAI,KAAK,SAAS,OAChB,QAAO;AAET,aAAO;OACP,IAEiB,OAAO,OAAO,WAAW,EAC1C,QAAO,QAAQ;;KAGnB;;EAEL;;AAGH,uBAAuB,UAAU;;;;AAKjC,SAAS,oCAA4C;AACnD,QAAO;EACL,eAAe;EACf,KAAK,MAAY;GAEf,MAAM,8BAAc,IAAI,KAAmB;GAG3C,MAAM,iBAAyB,EAAE;AACjC,QAAK,WAAW,SAAS;AAEvB,QAAI,KAAK,QAAQ,SAAS,UAAU,KAAK,QAAQ,SAAS,SACxD,gBAAe,KAAK,KAAK;KAE3B;AAEF,QAAK,MAAM,QAAQ,gBAAgB;IACjC,MAAM,WAAW,KAAK;IACtB,MAAM,SAAS,KAAK;IAOpB,MAAM,MAAM,GAHV,QAAQ,SAAS,WACb,IAAK,OAAkB,KAAK,GAAI,OAAkB,WAClD,OACmB,GAAG;AAE5B,QAAI,YAAY,IAAI,IAAI,EAAE;KACxB,MAAM,eAAe,YAAY,IAAI,IAAI;AAGzC,UAAK,WAAW,SAAS;MAEvB,MAAM,eAAe,aAAa,OAAO,MACtC,SAA8B,KAAK,SAAS,UAAU,KAAK,SAAS,KAAK,KAC3E;AAED,UAAI,aAEF,cAAa,QAAQ,KAAK;UAG1B,cAAa,OAAO,KAAK,OAAO,CAAC;OAEnC;AAGF,UAAK,QAAQ;UAEb,aAAY,IAAI,KAAK,KAAK;;;EAIjC;;AAGH,kCAAkC,UAAU;;;;AAK5C,SAAS,YAAY,KAAmD;CACtE,MAAM,SAAmB,EAAE;AAE3B,KAAI;EAEF,MAAM,SAAS,QAAQ,MAAM,IAAI;AAGjC,SAAO,WAAW,SAAS;AAEzB,OAAI,CAAC,KAAK,SAAS,MAAM,CACvB,QAAO,KAAK,gCAAgC,KAAK,QAAQ,OAAO,OAAO;AAIzE,OAAI;AAEF,QAAI,KAAK,SAAS,SAAS,KAAK,IAAI,KAAK,SAAS,SAAS,KAAK,CAC9D,QAAO,KAAK,uBAAuB,KAAK,SAAS,YAAY,KAAK,QAAQ,OAAO,OAAO;WAEpF;AACN,WAAO,KAAK,qBAAqB,KAAK,SAAS,YAAY,KAAK,QAAQ,OAAO,OAAO;;IAExF;AAGF,SAAO,WAAW,SAAS;AAEzB,OAAI,CAAC,KAAK,MAAM,MAAM,CACpB,QAAO,KAAK,6BAA6B,KAAK,KAAK,YAAY,KAAK,QAAQ,OAAO,OAAO;IAE5F;AAEF,SAAO;GAAE,OAAO,OAAO,WAAW;GAAG;GAAQ;UACtC,OAAO;AACd,MAAI,iBAAiB,MACnB,QAAO,KAAK,oBAAoB,MAAM,UAAU;MAEhD,QAAO,KAAK,0BAA0B;AAExC,SAAO;GAAE,OAAO;GAAO;GAAQ;;;;;;AAmBnC,SAAS,uBAAuB,QAAwB;CACtD,IAAI,aAAa;CACjB,IAAI,MAAM;CACV,IAAI,aAAa;CACjB,IAAI,YAAY;AAEhB,QAAO,WAAW,SAAS;AACzB,MAAI,KAAK,SAAS,cAChB,cAAa,KAAK,MAAM,QAAQ,SAAS,GAAG,CAAC,MAAM;WAC1C,KAAK,SAAS,MACvB,OAAM,KAAK;WACF,KAAK,SAAS,cACvB,cAAa,KAAK;WACT,KAAK,SAAS,aACvB,aAAY,KAAK;GAEnB;AAEF,QAAO,KAAK,UAAU;EAAE;EAAY;EAAK;EAAY;EAAW,CAAC;;;;;AAMnE,SAAS,wBAAwB,QAAwB;CAEvD,MAAM,OAAO,OAAO;CACpB,MAAM,UAAU,OAAO,UAAU,CAAC,QAAQ,QAAQ,IAAI,CAAC,MAAM;AAC7D,QAAO,KAAK,UAAU;EAAE;EAAM;EAAS,CAAC;;;;;AAM1C,SAAS,kBAAkB,UAAkB,YAA6B;CACxE,IAAI,aAAa,SAAS,MAAM;AAChC,KAAI,YAAY;EAEd,MAAM,eAAe,WAAW,QAAQ,uBAAuB,OAAO;AACtE,eAAa,WACV,QAAQ,IAAI,OAAO,GAAG,aAAa,OAAO,IAAI,EAAE,GAAG,CACnD,QAAQ,IAAI,OAAO,GAAG,aAAa,MAAM,IAAI,EAAE,IAAI,CACnD,QAAQ,IAAI,OAAO,GAAG,gBAAgB,IAAI,EAAE,GAAG;;AAEpD,QAAO,WAAW,QAAQ,QAAQ,IAAI,CAAC,MAAM;;;;;AAM/C,SAAS,mBAAmB,MAAY,YAA6B;CACnE,MAAM,WAAW,kBAAkB,KAAK,UAAU,WAAW;CAC7D,MAAM,eAAyB,EAAE;AAEjC,MAAK,WAAW,SAAS;AACvB,eAAa,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,QAAQ;GAC/C;AAGF,cAAa,MAAM;AACnB,QAAO,KAAK,UAAU;EAAE;EAAU;EAAc,CAAC;;;;;AAMnD,SAAS,wBAAwB,KAAa,YAAuC;CACnF,MAAM,OAAyB;EAC7B,2BAAW,IAAI,KAAK;EACpB,2BAAW,IAAI,KAAK;EACpB,uBAAO,IAAI,KAAK;EACjB;AAED,KAAI;EACF,MAAM,OAAO,QAAQ,MAAM,IAAI;AAE/B,OAAK,aAAa,WAAW;AAC3B,OAAI,OAAO,SAAS,YAClB,MAAK,UAAU,IAAI,uBAAuB,OAAO,CAAC;YACzC,OAAO,SAAS,eAAe,OAAO,SAAS,oBACxD,MAAK,UAAU,IAAI,wBAAwB,OAAO,CAAC;IAErD;AAEF,OAAK,WAAW,SAAS;AAEvB,OAAI,KAAK,QAAQ,SAAS,UAAU;IAClC,MAAM,aAAc,KAAK,OAAkB;AAC3C,QACE,eAAe,eACf,eAAe,eACf,eAAe,oBAEf;;AAGJ,QAAK,MAAM,IAAI,mBAAmB,MAAM,WAAW,CAAC;IACpD;SACI;AAIR,QAAO;;;;;;AAOT,SAAS,mBAAmB,eAAiC,YAA6B;AACxF,QAAO;EACL,eAAe;EACf,KAAK,MAAY;GACf,MAAM,WAA8B,EAAE;AAEtC,QAAK,aAAa,WAAW;AAC3B,QAAI,OAAO,SAAS,aAAa;KAC/B,MAAM,cAAc,uBAAuB,OAAO;AAClD,SAAI,cAAc,UAAU,IAAI,YAAY,CAC1C,UAAS,KAAK,OAAO;eAEd,OAAO,SAAS,eAAe,OAAO,SAAS,qBAAqB;KAC7E,MAAM,cAAc,wBAAwB,OAAO;AACnD,SAAI,cAAc,UAAU,IAAI,YAAY,CAC1C,UAAS,KAAK,OAAO;;KAGzB;AAEF,QAAK,WAAW,SAAS;AAEvB,QAAI,KAAK,QAAQ,SAAS,UAAU;KAClC,MAAM,aAAc,KAAK,OAAkB;AAC3C,SACE,eAAe,eACf,eAAe,eACf,eAAe,oBAEf;;IAIJ,MAAM,cAAc,mBAAmB,MAAM,WAAW;AACxD,QAAI,cAAc,MAAM,IAAI,YAAY,CACtC,UAAS,KAAK,KAAK;KAErB;AAGF,QAAK,MAAM,QAAQ,SACjB,MAAK,QAAQ;;EAGlB;;;;;;;;;;AA2BH,eAAe,YACb,KACA,SAWC;CACD,MAAM,eAAe,OAAO,WAAW,KAAK,OAAO;CACnD,MAAM,mBAAmB,SAAS,IAAI,CAAC;CAGvC,MAAM,mBAAmB,IAAI,MAAM,cAAc,IAAI,EAAE,EAAE;CAGzD,MAAM,eAAe,IAAI,MAAM,aAAa,IAAI,EAAE,EAAE;CAGpD,MAAM,UAAoC,EAAE;AAE5C,KAAI,SAAS,sBAAsB,MACjC,SAAQ,KAAK,uBAAuB,CAAC;AAIvC,SAAQ,KAAK,gCAAgC,CAAC;AAG9C,KAAI,SAAS,cAAc;EACzB,MAAM,gBAAgB,wBAAwB,QAAQ,aAAa;AACnE,MACE,cAAc,UAAU,OAAO,KAC/B,cAAc,UAAU,OAAO,KAC/B,cAAc,MAAM,OAAO,EAE3B,SAAQ,KAAK,mBAAmB,eAAe,QAAQ,WAAW,CAAC;;AAIvE,KAAI,SAAS,qBAAqB,MAChC,SAAQ,KAAK,wBAAwB,CAAC;AAGxC,KAAI,SAAS,gCAAgC,MAC3C,SAAQ,KAAK,mCAAmC,CAAC;CAOnD,MAAM,gBAFJ,QAAQ,SAAS,IAAI,MAAM,QAAQ,QAAQ,CAAC,QAAQ,KAAK,EAAE,MAAM,QAAW,CAAC,GAAG,EAAE,KAAK,EAE7D;CAC5B,MAAM,gBAAgB,OAAO,WAAW,cAAc,OAAO;CAG7D,MAAM,kBAAkB,aAAa,MAAM,cAAc,IAAI,EAAE,EAAE;CAGjE,MAAM,cAAc,aAAa,MAAM,aAAa,IAAI,EAAE,EAAE;AAK5D,QAAO;EACL,KAAK;EACL,YAJiB,YAAY,aAAa;EAK1C,OAAO;GACL;GACA;GACA;GACA,kBAAkB,kBAAkB;GACpC,mBAAmB,KAAK,IAAI,GAAG,cAAc,WAAW;GACzD;EACF"}
|