@yahoo/uds 3.144.0 → 3.145.0-beta.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/mapTextVariantFixtureToValue.cjs +1 -1
- package/dist/automated-config/dist/mapTextVariantFixtureToValue.js +1 -1
- package/dist/automated-config/dist/properties.cjs +1 -1
- package/dist/automated-config/dist/properties.js +1 -1
- package/dist/automated-config/dist/utils/coalesceConfigVariant.cjs +1 -1
- package/dist/automated-config/dist/utils/coalesceConfigVariant.js +1 -1
- package/dist/automated-config/dist/utils/mapColorFixtureToValue.cjs +1 -1
- package/dist/automated-config/dist/utils/mapColorFixtureToValue.js +1 -1
- package/dist/cli/commands/purge.cjs +79 -0
- package/dist/{tailwind/dist → cli}/commands/purge.d.cts +4 -5
- package/dist/{tailwind/dist → cli}/commands/purge.d.ts +4 -5
- package/dist/cli/commands/purge.helpers.cjs +21 -0
- package/dist/cli/commands/purge.helpers.d.cts +14 -0
- package/dist/cli/commands/purge.helpers.d.ts +14 -0
- package/dist/cli/commands/purge.helpers.js +18 -0
- package/dist/cli/commands/purge.js +78 -0
- package/dist/cli/commands/sync.cjs +3 -3
- package/dist/cli/commands/sync.js +1 -1
- package/dist/{tailwind/dist/cli → cli}/dist/lib/spinner.cjs +1 -1
- package/dist/cli/dist/lib/spinner.js +56 -0
- package/dist/cli/dist/utils/rules/config.cjs +1 -1
- package/dist/cli/dist/utils/rules/config.js +1 -1
- package/dist/cli/runner.cjs +42 -44
- package/dist/cli/runner.js +41 -44
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.cts +1 -1
- package/dist/components/client/Menu/Menu.ItemCheckbox.d.ts +1 -1
- package/dist/components/client/Popover/UDSPopoverConfigProvider.d.cts +1 -1
- package/dist/components/client/Popover/UDSPopoverConfigProvider.d.ts +1 -1
- package/dist/components/client/Toast/UDSToastConfigProvider.d.cts +1 -1
- package/dist/components/client/Toast/UDSToastConfigProvider.d.ts +1 -1
- package/dist/components/client/Toast/createToast.cjs +3 -3
- package/dist/components/client/Toast/createToast.js +2 -2
- package/dist/components/experimental/index.cjs +0 -18
- package/dist/components/experimental/index.js +1 -13
- package/dist/components/index.cjs +0 -83
- package/dist/components/index.js +1 -78
- package/dist/{tailwind → css}/dist/commands/css.cjs +5 -4
- package/dist/{tailwind → css}/dist/commands/css.helpers.cjs +3 -2
- package/dist/{tailwind → css}/dist/commands/css.helpers.js +3 -4
- package/dist/{tailwind → css}/dist/commands/css.js +5 -6
- package/dist/{tailwind → css}/dist/commands/generateComponentData.d.cts +3 -12
- package/dist/{tailwind → css}/dist/commands/generateComponentData.d.ts +3 -12
- package/dist/{tailwind → css}/dist/css/generate.cjs +11 -10
- package/dist/{tailwind → css}/dist/css/generate.d.cts +2 -3
- package/dist/{tailwind → css}/dist/css/generate.d.ts +2 -3
- package/dist/{tailwind → css}/dist/css/generate.helpers.cjs +12 -11
- package/dist/{tailwind → css}/dist/css/generate.helpers.js +10 -11
- package/dist/{tailwind → css}/dist/css/generate.js +9 -10
- package/dist/{tailwind → css}/dist/css/nodeUtils.cjs +9 -8
- package/dist/{tailwind → css}/dist/css/nodeUtils.js +7 -8
- package/dist/{tailwind → css}/dist/css/perf.cjs +4 -3
- package/dist/{tailwind → css}/dist/css/perf.js +3 -4
- package/dist/{tailwind → css}/dist/css/postcss.cjs +3 -2
- package/dist/{tailwind → css}/dist/css/postcss.helpers.cjs +3 -2
- package/dist/{tailwind → css}/dist/css/postcss.helpers.js +3 -4
- package/dist/{tailwind → css}/dist/css/postcss.js +3 -4
- package/dist/{tailwind → css}/dist/css/runner.cjs +21 -16
- package/dist/{tailwind → css}/dist/css/runner.helpers.cjs +4 -3
- package/dist/{tailwind → css}/dist/css/runner.helpers.js +3 -4
- package/dist/{tailwind → css}/dist/css/runner.js +20 -17
- package/dist/{tailwind → css}/dist/css/theme.cjs +3 -2
- package/dist/{tailwind → css}/dist/css/theme.d.cts +3 -3
- package/dist/{tailwind → css}/dist/css/theme.d.ts +3 -3
- package/dist/{tailwind → css}/dist/css/theme.js +3 -4
- package/dist/{tailwind → css}/dist/css/utils.cjs +4 -3
- package/dist/{tailwind → css}/dist/css/utils.js +4 -5
- package/dist/{tailwind → css}/dist/css/workerPool.cjs +4 -3
- package/dist/{tailwind → css}/dist/css/workerPool.js +3 -4
- package/dist/css/dist/index.d.cts +2 -0
- package/dist/css/dist/index.d.ts +2 -0
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/mapTextVariantFixtureToValue.cjs +4 -3
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/mapTextVariantFixtureToValue.js +4 -5
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/properties.cjs +4 -3
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/properties.js +4 -5
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/utils/mapColorFixtureToValue.cjs +4 -4
- package/dist/{tailwind/dist → css/dist/packages}/automated-config/dist/utils/mapColorFixtureToValue.js +4 -6
- package/dist/{tailwind/dist → css/dist/packages}/cli/dist/lib/colors.cjs +3 -2
- package/dist/{tailwind/dist → css/dist/packages}/cli/dist/lib/colors.js +3 -4
- package/dist/{tailwind/dist → css/dist/packages}/cli/dist/lib/logger.cjs +3 -2
- package/dist/{tailwind/dist → css/dist/packages}/cli/dist/lib/logger.js +3 -4
- package/dist/css/dist/packages/cli/dist/lib/print.cjs +12 -0
- package/dist/css/dist/packages/cli/dist/lib/print.js +12 -0
- package/dist/css/dist/packages/cli/dist/lib/spinner.cjs +58 -0
- package/dist/css/dist/packages/cli/dist/lib/spinner.js +57 -0
- package/dist/{tailwind/dist → css/dist/packages}/config/dist/index.cjs +3 -2
- package/dist/{tailwind/dist → css/dist/packages}/config/dist/index.js +3 -4
- package/dist/css/dist/packages/css-tokens/dist/index.cjs +79 -0
- package/dist/css/dist/packages/css-tokens/dist/index.js +71 -0
- package/dist/css/dist/packages/fixtures/dist/index.cjs +545 -0
- package/dist/css/dist/packages/fixtures/dist/index.js +543 -0
- package/dist/{tailwind/dist → css/dist/packages}/icons/src/safelist.cjs +3 -2
- package/dist/{tailwind/dist → css/dist/packages}/icons/src/safelist.js +3 -4
- package/dist/css/dist/packages/motion-tokens/dist/index.cjs +15 -0
- package/dist/css/dist/packages/motion-tokens/dist/index.js +15 -0
- package/dist/css/dist/packages/palette/dist/index.cjs +36 -0
- package/dist/css/dist/packages/palette/dist/index.js +36 -0
- package/dist/{automated-config/dist/utils → css/dist/packages/utils/dist}/assertUnreachable.cjs +3 -2
- package/dist/{automated-config/dist/utils → css/dist/packages/utils/dist}/assertUnreachable.js +3 -2
- package/dist/{tailwind → css}/dist/purger/optimized/ast/expressions.cjs +6 -5
- package/dist/{tailwind → css}/dist/purger/optimized/ast/expressions.js +4 -5
- package/dist/{tailwind → css}/dist/purger/optimized/purge.cjs +7 -6
- package/dist/{tailwind → css}/dist/purger/optimized/purge.js +5 -6
- package/dist/{tailwind → css}/dist/purger/optimized/purgeFromCode.cjs +4 -3
- package/dist/{tailwind → css}/dist/purger/optimized/purgeFromCode.js +3 -4
- package/dist/{tailwind → css}/dist/purger/optimized/utils/files.cjs +5 -4
- package/dist/{tailwind → css}/dist/purger/optimized/utils/files.js +4 -5
- package/dist/{tailwind → css}/dist/purger/optimized/utils/safelist.cjs +6 -5
- package/dist/{tailwind → css}/dist/purger/optimized/utils/safelist.js +5 -6
- package/dist/{tailwind → css}/dist/runtimeConfig/hookMetadata.cjs +3 -3
- package/dist/{tailwind → css}/dist/runtimeConfig/hookMetadata.js +4 -5
- package/dist/{tailwind → css}/dist/utils/optimizeCSS.cjs +4 -3
- package/dist/{tailwind → css}/dist/utils/optimizeCSS.js +3 -4
- package/dist/fixtures/src/util.cjs +2 -4
- package/dist/fixtures/src/util.js +1 -3
- package/dist/index.cjs +7 -7
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/runtime/breakpointsConfig.cjs +3 -3
- package/dist/runtime/breakpointsConfig.js +2 -2
- package/dist/runtime/modalConfig.cjs +2 -2
- package/dist/runtime/modalConfig.js +1 -1
- package/dist/runtime/popoverConfig.cjs +7 -7
- package/dist/runtime/popoverConfig.js +1 -1
- package/dist/runtime/tooltipConfig.cjs +2 -2
- package/dist/runtime/tooltipConfig.js +1 -1
- package/dist/styles/styler.d.cts +52 -52
- package/dist/styles/styler.d.ts +52 -52
- package/dist/tailwind/plugin.cjs +5 -5
- package/dist/tailwind/plugin.d.cts +3 -3
- package/dist/tailwind/plugin.d.ts +3 -3
- package/dist/tailwind/plugin.js +3 -3
- package/dist/tailwind/utils/index.cjs +44 -0
- package/dist/tailwind/utils/index.d.cts +21 -0
- package/dist/tailwind/utils/index.d.ts +21 -0
- package/dist/tailwind/utils/index.js +21 -0
- package/dist/tailwind/utils/node.cjs +11 -0
- package/dist/tailwind/utils/node.d.cts +3 -0
- package/dist/tailwind/utils/node.d.ts +3 -0
- package/dist/tailwind/utils/node.js +3 -0
- package/dist/{tailwind/dist/_virtual/_rolldown/runtime.js → tailwind-internal/dist/_virtual/_rolldown/runtime.cjs} +4 -3
- package/dist/tailwind-internal/dist/_virtual/_rolldown/runtime.js +10 -0
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/generated/generatedConfigs.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/generated/generatedConfigs.js +3 -4
- package/dist/tailwind-internal/dist/automated-config/dist/mapTextVariantFixtureToValue.cjs +19 -0
- package/dist/tailwind-internal/dist/automated-config/dist/mapTextVariantFixtureToValue.js +19 -0
- package/dist/tailwind-internal/dist/automated-config/dist/properties.cjs +532 -0
- package/dist/tailwind-internal/dist/automated-config/dist/properties.js +532 -0
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/generateDefaultClassName.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/generateDefaultClassName.js +3 -4
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/generateSchemaKey.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/generateSchemaKey.js +3 -4
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/index.cjs +4 -3
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/index.js +3 -4
- package/dist/tailwind-internal/dist/automated-config/dist/utils/mapColorFixtureToValue.cjs +26 -0
- package/dist/tailwind-internal/dist/automated-config/dist/utils/mapColorFixtureToValue.js +26 -0
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/variantConfigGuards.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/automated-config/dist/utils/variantConfigGuards.js +3 -4
- package/dist/tailwind-internal/dist/base/addColorModeVars.cjs +19 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addColorModeVars.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addColorModeVarsV2.cjs +8 -8
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addColorModeVarsV2.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addFontFaceDeclarations.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addFontFaceDeclarations.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addFontVars.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addFontVars.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addMotionVars.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addMotionVars.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addScaleModeVars.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/base/addScaleModeVars.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getFocusRingStyles.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getFocusRingStyles.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getGroupedTextStyles.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getGroupedTextStyles.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getHitTargetStyles.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getHitTargetStyles.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getIconStyles.cjs +3 -2
- package/dist/tailwind-internal/dist/components/getIconStyles.d.cts +11 -0
- package/dist/tailwind-internal/dist/components/getIconStyles.d.ts +11 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getIconStyles.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getInputStyles.cjs +3 -2
- package/dist/tailwind-internal/dist/components/getInputStyles.d.cts +11 -0
- package/dist/tailwind-internal/dist/components/getInputStyles.d.ts +11 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getInputStyles.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getResponsiveTextStyles.cjs +10 -10
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getResponsiveTextStyles.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getResponsiveTextStyles.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/getResponsiveTextStyles.js +8 -9
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/types.d.cts +4 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/components/types.d.ts +4 -4
- package/dist/tailwind-internal/dist/config/dist/index.cjs +28570 -0
- package/dist/{tailwind → tailwind-internal}/dist/config/dist/index.d.cts +5 -4
- package/dist/{tailwind → tailwind-internal}/dist/config/dist/index.d.ts +5 -4
- package/dist/tailwind-internal/dist/config/dist/index.js +28570 -0
- package/dist/{tailwind → tailwind-internal}/dist/css-tokens/dist/index.cjs +13 -12
- package/dist/{tailwind → tailwind-internal}/dist/css-tokens/dist/index.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/defaultTailwindThemeAsUdsConfig.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/defaultTailwindThemeAsUdsConfig.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/defaultTailwindThemeAsUdsConfig.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/defaultTailwindThemeAsUdsConfig.js +3 -4
- package/dist/{tailwind → tailwind-internal}/dist/fixtures/dist/index.cjs +3 -1
- package/dist/{tailwind → tailwind-internal}/dist/fixtures/dist/index.js +3 -3
- package/dist/{tailwind → tailwind-internal}/dist/fonts/dist/index.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/fonts/dist/index.d.cts +3 -3
- package/dist/{tailwind → tailwind-internal}/dist/fonts/dist/index.d.ts +3 -3
- package/dist/{tailwind → tailwind-internal}/dist/fonts/dist/index.js +3 -4
- package/dist/tailwind-internal/dist/index.d.cts +21 -0
- package/dist/tailwind-internal/dist/index.d.ts +21 -0
- package/dist/{tailwind → tailwind-internal}/dist/modes/dist/index.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/modes/dist/index.js +3 -4
- package/dist/tailwind-internal/dist/motion-tokens/dist/index.cjs +15 -0
- package/dist/tailwind-internal/dist/motion-tokens/dist/index.js +15 -0
- package/dist/{tailwind → tailwind-internal}/dist/palette/dist/index.cjs +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/palette/dist/index.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/a11y.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/a11y.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/blurBgFallback.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/blurBgFallback.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/borderRadius.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/borderRadius.js +6 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/borderWidth.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/borderWidth.js +6 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/breakpoints.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/breakpoints.js +6 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/colors.cjs +11 -11
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/colors.js +9 -10
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/components.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/components.js +6 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/elevation.cjs +8 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/elevation.js +7 -8
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/getTailwindAsUdsColors.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/getTailwindAsUdsColors.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/icons.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/icons.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/input.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/input.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/motion.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/motion.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/nestedBorderRadius.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/nestedBorderRadius.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/scaleMode.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/scaleMode.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/shadows.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/shadows.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/sizing.cjs +6 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/sizing.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/spacing.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/spacing.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/typography.cjs +9 -8
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/plugins/typography.js +8 -9
- package/dist/tailwind-internal/dist/tailwindPlugin.cjs +35 -0
- package/dist/{tailwind/dist/plugin.d.ts → tailwind-internal/dist/tailwindPlugin.d.cts} +5 -7
- package/dist/{tailwind/dist/plugin.d.cts → tailwind-internal/dist/tailwindPlugin.d.ts} +5 -7
- package/dist/tailwind-internal/dist/tailwindPlugin.js +34 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/theme/getFontFamilyTheme.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/theme/getFontFamilyTheme.js +5 -6
- package/dist/{tailwind → tailwind-internal}/dist/types/dist/index.d.cts +3 -2
- package/dist/{tailwind → tailwind-internal}/dist/types/dist/index.d.ts +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/addFontsPlugin.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/addFontsPlugin.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/addFontsPlugin.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/addFontsPlugin.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/composeTailwindPlugins.cjs +10 -16
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/composeTailwindPlugins.d.cts +16 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/composeTailwindPlugins.d.ts +16 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/composeTailwindPlugins.js +6 -7
- package/dist/tailwind-internal/dist/utils/dist/assertUnreachable.cjs +9 -0
- package/dist/tailwind-internal/dist/utils/dist/assertUnreachable.js +9 -0
- package/dist/tailwind-internal/dist/utils/dist/entries.cjs +9 -0
- package/dist/tailwind-internal/dist/utils/dist/entries.js +9 -0
- package/dist/{tokens/utils → tailwind-internal/dist/utils/dist}/fromEntries.cjs +3 -2
- package/dist/{tokens/utils → tailwind-internal/dist/utils/dist}/fromEntries.js +3 -1
- package/dist/{tokens/utils → tailwind-internal/dist/utils/dist}/mapValues.cjs +3 -2
- package/dist/{tokens/utils → tailwind-internal/dist/utils/dist}/mapValues.js +3 -1
- package/dist/{tailwind → tailwind-internal}/dist/utils/entryPoints.cjs +8 -5
- package/dist/tailwind-internal/dist/utils/entryPoints.d.cts +21 -0
- package/dist/tailwind-internal/dist/utils/entryPoints.d.ts +21 -0
- package/dist/{tailwind → tailwind-internal}/dist/utils/entryPoints.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getColorModeStyles.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getColorModeStyles.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getColorModeStyles.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getColorModeStyles.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getElevationStyles.cjs +6 -5
- package/dist/tailwind-internal/dist/utils/getElevationStyles.d.cts +13 -0
- package/dist/tailwind-internal/dist/utils/getElevationStyles.d.ts +13 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getElevationStyles.js +6 -7
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontFaceDeclarations.cjs +4 -3
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontFaceDeclarations.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontFaceDeclarations.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontFaceDeclarations.js +4 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontStyles.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontStyles.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontStyles.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getFontStyles.js +7 -8
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getMotionStyles.cjs +7 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getMotionStyles.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getMotionStyles.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getMotionStyles.js +7 -8
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getNestedBorderRadiusUtilities.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getNestedBorderRadiusUtilities.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getScaleModeStyles.cjs +3 -2
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getScaleModeStyles.d.cts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getScaleModeStyles.d.ts +5 -5
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getScaleModeStyles.js +3 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowPresetValues.cjs +5 -4
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowPresetValues.d.cts +6 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowPresetValues.d.ts +6 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowPresetValues.js +5 -6
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowStyles.cjs +6 -5
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.cts +18 -0
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.ts +18 -0
- package/dist/{tailwind/dist/tailwind → tailwind-internal/dist}/utils/getShadowStyles.js +6 -7
- package/dist/tailwind-internal/dist/utils/getShadowVars.cjs +24 -0
- package/dist/tailwind-internal/dist/utils/getShadowVars.d.cts +8 -0
- package/dist/tailwind-internal/dist/utils/getShadowVars.d.ts +8 -0
- package/dist/tailwind-internal/dist/utils/getShadowVars.js +24 -0
- package/dist/{tailwind → tailwind-internal}/dist/utils/opacity.cjs +6 -6
- package/dist/tailwind-internal/dist/utils/opacity.d.cts +20 -0
- package/dist/tailwind-internal/dist/utils/opacity.d.ts +20 -0
- package/dist/{tailwind → tailwind-internal}/dist/utils/opacity.js +3 -4
- package/dist/{tailwind → tailwind-internal}/dist/utils/parseTokens.cjs +6 -5
- package/dist/{tailwind → tailwind-internal}/dist/utils/parseTokens.d.cts +3 -3
- package/dist/{tailwind → tailwind-internal}/dist/utils/parseTokens.d.ts +3 -3
- package/dist/{tailwind → tailwind-internal}/dist/utils/parseTokens.js +6 -7
- package/dist/{tailwind → tailwind-internal}/dist/utils/postcssPreserveVars.cjs +3 -2
- package/dist/tailwind-internal/dist/utils/postcssPreserveVars.d.cts +38 -0
- package/dist/tailwind-internal/dist/utils/postcssPreserveVars.d.ts +38 -0
- package/dist/{tailwind → tailwind-internal}/dist/utils/postcssPreserveVars.js +3 -4
- package/dist/{tailwind → tailwind-v3}/dist/cli/dist/lib/print.cjs +2 -1
- package/dist/{tailwind → tailwind-v3}/dist/cli/dist/lib/print.js +2 -3
- package/dist/tailwind-v3/dist/cli/dist/lib/spinner.cjs +58 -0
- package/dist/{tailwind → tailwind-v3}/dist/cli/dist/lib/spinner.js +2 -3
- package/dist/tailwind-v3/dist/css-tokens/dist/index.cjs +40 -0
- package/dist/tailwind-v3/dist/css-tokens/dist/index.js +32 -0
- package/dist/tailwind-v3/dist/palette/dist/index.cjs +36 -0
- package/dist/tailwind-v3/dist/palette/dist/index.js +36 -0
- package/dist/{tailwind → tailwind-v3}/dist/purger/legacy/purgeCSS.cjs +8 -10
- package/dist/{tailwind → tailwind-v3}/dist/purger/legacy/purgeCSS.d.cts +2 -4
- package/dist/{tailwind → tailwind-v3}/dist/purger/legacy/purgeCSS.d.ts +2 -2
- package/dist/{tailwind → tailwind-v3}/dist/purger/legacy/purgeCSS.js +8 -9
- package/dist/tailwind-v3/dist/purger.d.cts +2 -0
- package/dist/tailwind-v3/dist/purger.d.ts +2 -0
- package/dist/{tailwind → tailwind-v3}/dist/utils/tsMorph.cjs +11 -14
- package/dist/{tailwind → tailwind-v3}/dist/utils/tsMorph.js +4 -5
- package/dist/tailwind-v4/dist/cli.cjs +102 -0
- package/dist/tailwind-v4/dist/cli.js +99 -0
- package/dist/tailwind-v4/dist/generateTheme-DkTgUwTM.cjs +643 -0
- package/dist/tailwind-v4/dist/generateTheme-DkTgUwTM.js +643 -0
- package/dist/tokens/index.cjs +6 -6
- package/dist/tokens/index.d.cts +3 -3
- package/dist/tokens/index.d.ts +3 -3
- package/dist/tokens/index.js +3 -3
- package/dist/tokens/parseTokens.cjs +1 -1
- package/dist/tokens/parseTokens.d.cts +1 -1
- package/dist/tokens/parseTokens.d.ts +1 -1
- package/dist/tokens/parseTokens.js +1 -1
- package/dist/tokens/utils/entries.cjs +2 -14
- package/dist/tokens/utils/entries.d.cts +1 -11
- package/dist/tokens/utils/entries.d.ts +1 -11
- package/dist/tokens/utils/entries.js +1 -13
- package/dist/tokens/utils/getFontUrls.cjs +2 -2
- package/dist/tokens/utils/getFontUrls.js +1 -1
- package/dist/uds/generated/componentData.cjs +1586 -1586
- package/dist/uds/generated/componentData.js +1586 -1586
- package/dist/uds/package.cjs +23 -7
- package/dist/uds/package.js +23 -7
- package/dist/utils/{assertUnreachable.cjs → dist/assertUnreachable.cjs} +2 -2
- package/dist/utils/{assertUnreachable.js → dist/assertUnreachable.js} +2 -1
- package/dist/utils/{entries.cjs → dist/entries.cjs} +2 -2
- package/dist/utils/dist/entries.d.cts +6 -0
- package/dist/utils/dist/entries.d.ts +6 -0
- package/dist/utils/{entries.js → dist/entries.js} +2 -1
- package/dist/utils/{fromEntries.cjs → dist/fromEntries.cjs} +2 -2
- package/dist/{tokens/utils → utils/dist}/fromEntries.d.cts +3 -2
- package/dist/{tokens/utils → utils/dist}/fromEntries.d.ts +3 -2
- package/dist/utils/{fromEntries.js → dist/fromEntries.js} +2 -1
- package/dist/utils/{mapValues.cjs → dist/mapValues.cjs} +2 -2
- package/dist/{tokens/utils → utils/dist}/mapValues.d.cts +3 -2
- package/dist/{tokens/utils → utils/dist}/mapValues.d.ts +3 -2
- package/dist/utils/{mapValues.js → dist/mapValues.js} +2 -1
- package/dist/{cli/commands/utils → utils/dist}/sortKeys.cjs +2 -2
- package/dist/{cli/commands/utils → utils/dist}/sortKeys.js +2 -1
- package/generated/componentData.json +2028 -2028
- package/package.json +24 -8
- package/dist/automated-config/dist/utils/mapValues.cjs +0 -11
- package/dist/automated-config/dist/utils/mapValues.js +0 -11
- package/dist/cli/commands/utils/sortKeys.d.cts +0 -5
- package/dist/cli/commands/utils/sortKeys.d.ts +0 -5
- package/dist/tailwind/dist/_virtual/_rolldown/runtime.cjs +0 -24
- package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.cjs +0 -746
- package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.js +0 -748
- package/dist/tailwind/dist/automated-config/dist/generated/autoVariants.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/generated/generatedConfigs.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/mapTextVariantFixtureToValue.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/properties.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.cjs +0 -8
- package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.js +0 -10
- package/dist/tailwind/dist/automated-config/dist/utils/assertUnreachable.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/generateDefaultClassName.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/generateSchemaKey.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/index.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/mapColorFixtureToValue.js.map +0 -1
- package/dist/tailwind/dist/automated-config/dist/utils/variantConfigGuards.js.map +0 -1
- package/dist/tailwind/dist/cli/dist/lib/colors.js.map +0 -1
- package/dist/tailwind/dist/cli/dist/lib/logger.js.map +0 -1
- package/dist/tailwind/dist/cli/dist/lib/print.js.map +0 -1
- package/dist/tailwind/dist/cli/dist/lib/spinner.js.map +0 -1
- package/dist/tailwind/dist/cli.cjs +0 -10
- package/dist/tailwind/dist/cli.d.cts +0 -6
- package/dist/tailwind/dist/cli.d.ts +0 -6
- package/dist/tailwind/dist/cli.js +0 -6
- package/dist/tailwind/dist/commands/css.d.cts +0 -14
- package/dist/tailwind/dist/commands/css.d.cts.map +0 -1
- package/dist/tailwind/dist/commands/css.d.ts +0 -14
- package/dist/tailwind/dist/commands/css.d.ts.map +0 -1
- package/dist/tailwind/dist/commands/css.helpers.js.map +0 -1
- package/dist/tailwind/dist/commands/css.js.map +0 -1
- package/dist/tailwind/dist/commands/generateComponentData.cjs +0 -70
- package/dist/tailwind/dist/commands/generateComponentData.d.cts.map +0 -1
- package/dist/tailwind/dist/commands/generateComponentData.d.ts.map +0 -1
- package/dist/tailwind/dist/commands/generateComponentData.js +0 -71
- package/dist/tailwind/dist/commands/generateComponentData.js.map +0 -1
- package/dist/tailwind/dist/commands/generatePurgeCSSData.cjs +0 -44
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts +0 -15
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.cts.map +0 -1
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts +0 -15
- package/dist/tailwind/dist/commands/generatePurgeCSSData.d.ts.map +0 -1
- package/dist/tailwind/dist/commands/generatePurgeCSSData.js +0 -44
- package/dist/tailwind/dist/commands/generatePurgeCSSData.js.map +0 -1
- package/dist/tailwind/dist/commands/purge.cjs +0 -53
- package/dist/tailwind/dist/commands/purge.d.cts.map +0 -1
- package/dist/tailwind/dist/commands/purge.d.ts.map +0 -1
- package/dist/tailwind/dist/commands/purge.js +0 -55
- package/dist/tailwind/dist/commands/purge.js.map +0 -1
- package/dist/tailwind/dist/config/dist/index.d.cts.map +0 -1
- package/dist/tailwind/dist/config/dist/index.d.ts.map +0 -1
- package/dist/tailwind/dist/config/dist/index.js.map +0 -1
- package/dist/tailwind/dist/css/generate.d.cts.map +0 -1
- package/dist/tailwind/dist/css/generate.d.ts.map +0 -1
- package/dist/tailwind/dist/css/generate.helpers.js.map +0 -1
- package/dist/tailwind/dist/css/generate.js.map +0 -1
- package/dist/tailwind/dist/css/nodeUtils.js.map +0 -1
- package/dist/tailwind/dist/css/perf.js.map +0 -1
- package/dist/tailwind/dist/css/postcss.helpers.js.map +0 -1
- package/dist/tailwind/dist/css/postcss.js.map +0 -1
- package/dist/tailwind/dist/css/purgeWorker.cjs +0 -47
- package/dist/tailwind/dist/css/purgeWorker.js +0 -48
- package/dist/tailwind/dist/css/purgeWorker.js.map +0 -1
- package/dist/tailwind/dist/css/runner.helpers.js.map +0 -1
- package/dist/tailwind/dist/css/runner.js.map +0 -1
- package/dist/tailwind/dist/css/theme.d.cts.map +0 -1
- package/dist/tailwind/dist/css/theme.d.ts.map +0 -1
- package/dist/tailwind/dist/css/theme.js.map +0 -1
- package/dist/tailwind/dist/css/utils.js.map +0 -1
- package/dist/tailwind/dist/css/workerPool.js.map +0 -1
- package/dist/tailwind/dist/css-tokens/dist/index.js.map +0 -1
- package/dist/tailwind/dist/fixtures/dist/index.js.map +0 -1
- package/dist/tailwind/dist/fonts/dist/index.d.cts.map +0 -1
- package/dist/tailwind/dist/fonts/dist/index.d.ts.map +0 -1
- package/dist/tailwind/dist/fonts/dist/index.js.map +0 -1
- package/dist/tailwind/dist/icons/src/safelist.js.map +0 -1
- package/dist/tailwind/dist/index.cjs +0 -8
- package/dist/tailwind/dist/index.d.cts +0 -5
- package/dist/tailwind/dist/index.d.ts +0 -5
- package/dist/tailwind/dist/index.js +0 -5
- package/dist/tailwind/dist/modes/dist/index.js.map +0 -1
- package/dist/tailwind/dist/motion-tokens/dist/index.cjs +0 -25
- package/dist/tailwind/dist/motion-tokens/dist/index.js +0 -26
- package/dist/tailwind/dist/motion-tokens/dist/index.js.map +0 -1
- package/dist/tailwind/dist/palette/dist/index.js.map +0 -1
- package/dist/tailwind/dist/plugin.cjs +0 -38
- package/dist/tailwind/dist/plugin.d.cts.map +0 -1
- package/dist/tailwind/dist/plugin.d.ts.map +0 -1
- package/dist/tailwind/dist/plugin.js +0 -37
- package/dist/tailwind/dist/plugin.js.map +0 -1
- package/dist/tailwind/dist/purger/legacy/index.d.cts +0 -2
- package/dist/tailwind/dist/purger/legacy/index.d.ts +0 -2
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.cts.map +0 -1
- package/dist/tailwind/dist/purger/legacy/purgeCSS.d.ts.map +0 -1
- package/dist/tailwind/dist/purger/legacy/purgeCSS.js.map +0 -1
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.cjs +0 -57
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts +0 -28
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.cts.map +0 -1
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts +0 -28
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.d.ts.map +0 -1
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.js +0 -58
- package/dist/tailwind/dist/purger/legacy/purgeFromCode.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/ast/expressions.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/expressions.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/expressions.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/ast/jsx.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/jsx.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/props.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/props.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/spread.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/ast/spread.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/index.d.cts +0 -3
- package/dist/tailwind/dist/purger/optimized/index.d.ts +0 -3
- package/dist/tailwind/dist/purger/optimized/purge.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/purge.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/purge.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts +0 -63
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.cts.map +0 -1
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts +0 -63
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.d.ts.map +0 -1
- package/dist/tailwind/dist/purger/optimized/purgeFromCode.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/types.d.cts +0 -32
- package/dist/tailwind/dist/purger/optimized/types.d.cts.map +0 -1
- package/dist/tailwind/dist/purger/optimized/types.d.ts +0 -32
- package/dist/tailwind/dist/purger/optimized/types.d.ts.map +0 -1
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.cjs +0 -622
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js +0 -620
- package/dist/tailwind/dist/purger/optimized/utils/componentAnalyzer.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/utils/files.d.cts +0 -2
- package/dist/tailwind/dist/purger/optimized/utils/files.d.ts +0 -2
- package/dist/tailwind/dist/purger/optimized/utils/files.js.map +0 -1
- package/dist/tailwind/dist/purger/optimized/utils/safelist.js.map +0 -1
- package/dist/tailwind/dist/purger.cjs +0 -6
- package/dist/tailwind/dist/purger.d.cts +0 -4
- package/dist/tailwind/dist/purger.d.ts +0 -4
- package/dist/tailwind/dist/purger.js +0 -4
- package/dist/tailwind/dist/runtimeConfig/hookMetadata.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addColorModeVars.cjs +0 -19
- package/dist/tailwind/dist/tailwind/base/addColorModeVars.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addColorModeVarsV2.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addFontFaceDeclarations.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addFontVars.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addMotionVars.js.map +0 -1
- package/dist/tailwind/dist/tailwind/base/addScaleModeVars.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getFocusRingStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getGroupedTextStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getHitTargetStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getIconStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts +0 -11
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts +0 -11
- package/dist/tailwind/dist/tailwind/components/getInputStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getInputStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/components/getResponsiveTextStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/components/types.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/components/types.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/defaultTailwindThemeAsUdsConfig.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/a11y.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/blurBgFallback.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/borderRadius.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/borderWidth.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/breakpoints.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/colors.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/components.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/elevation.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/getTailwindAsUdsColors.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/icons.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/input.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/motion.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/nestedBorderRadius.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/scaleMode.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/shadows.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/sizing.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/spacing.js.map +0 -1
- package/dist/tailwind/dist/tailwind/plugins/typography.js.map +0 -1
- package/dist/tailwind/dist/tailwind/theme/getFontFamilyTheme.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/addFontsPlugin.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/composeTailwindPlugins.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getColorModeStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts +0 -13
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts +0 -13
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getElevationStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontFaceDeclarations.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getFontStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getMotionStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getNestedBorderRadiusUtilities.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getScaleModeStyles.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowPresetValues.js.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts +0 -22
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.cts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts +0 -22
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.d.ts.map +0 -1
- package/dist/tailwind/dist/tailwind/utils/getShadowStyles.js.map +0 -1
- package/dist/tailwind/dist/types/dist/index.d.cts.map +0 -1
- package/dist/tailwind/dist/types/dist/index.d.ts.map +0 -1
- package/dist/tailwind/dist/utils/assertUnreachable.cjs +0 -7
- package/dist/tailwind/dist/utils/assertUnreachable.js +0 -9
- package/dist/tailwind/dist/utils/assertUnreachable.js.map +0 -1
- package/dist/tailwind/dist/utils/entries.cjs +0 -7
- package/dist/tailwind/dist/utils/entries.js +0 -9
- package/dist/tailwind/dist/utils/entries.js.map +0 -1
- package/dist/tailwind/dist/utils/entryPoints.js.map +0 -1
- package/dist/tailwind/dist/utils/fromEntries.cjs +0 -15
- package/dist/tailwind/dist/utils/fromEntries.js +0 -17
- package/dist/tailwind/dist/utils/fromEntries.js.map +0 -1
- package/dist/tailwind/dist/utils/generatePurgeCSSData.cjs +0 -185
- package/dist/tailwind/dist/utils/generatePurgeCSSData.js +0 -178
- package/dist/tailwind/dist/utils/generatePurgeCSSData.js.map +0 -1
- package/dist/tailwind/dist/utils/mapValues.cjs +0 -10
- package/dist/tailwind/dist/utils/mapValues.js +0 -12
- package/dist/tailwind/dist/utils/mapValues.js.map +0 -1
- package/dist/tailwind/dist/utils/opacity.js.map +0 -1
- package/dist/tailwind/dist/utils/optimizeCSS.js.map +0 -1
- package/dist/tailwind/dist/utils/parseTokens.d.cts.map +0 -1
- package/dist/tailwind/dist/utils/parseTokens.d.ts.map +0 -1
- package/dist/tailwind/dist/utils/parseTokens.js.map +0 -1
- package/dist/tailwind/dist/utils/postcssPreserveVars.js.map +0 -1
- package/dist/tailwind/dist/utils/tsMorph.js.map +0 -1
- package/dist/tailwind/dist/utils.cjs +0 -24
- package/dist/tailwind/dist/utils.d.cts +0 -12
- package/dist/tailwind/dist/utils.d.ts +0 -12
- package/dist/tailwind/dist/utils.js +0 -12
- package/dist/tailwind/utils.cjs +0 -24
- package/dist/tailwind/utils.d.cts +0 -12
- package/dist/tailwind/utils.d.ts +0 -12
- package/dist/tailwind/utils.js +0 -12
- package/dist/utils/assertUnreachable.d.cts +0 -5
- package/dist/utils/assertUnreachable.d.ts +0 -5
- package/dist/utils/entries.d.cts +0 -5
- package/dist/utils/entries.d.ts +0 -5
- package/dist/utils/fromEntries.d.cts +0 -13
- package/dist/utils/fromEntries.d.ts +0 -13
- package/dist/utils/mapValues.d.cts +0 -6
- package/dist/utils/mapValues.d.ts +0 -6
- /package/dist/{tailwind/dist/purger/optimized/ast → css/dist/packages/config/dist}/index.d.cts +0 -0
- /package/dist/{tailwind/dist/purger/optimized/ast → css/dist/packages/config/dist}/index.d.ts +0 -0
- /package/dist/{tailwind/dist/css/purgeWorker.d.cts → tailwind-v3/dist/purger/legacy/purgeFromCode.d.cts} +0 -0
- /package/dist/{tailwind/dist/css/purgeWorker.d.ts → tailwind-v3/dist/purger/legacy/purgeFromCode.d.ts} +0 -0
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
//#region src/utils/fromEntries.ts
|
|
3
|
-
/**
|
|
4
|
-
* Converts an array of key-value pair entries into an object.
|
|
5
|
-
*
|
|
6
|
-
* This function takes an array of `[key, value]` pairs and converts it into an object
|
|
7
|
-
* where each key is associated with its corresponding value. The generic types `T` and `K`
|
|
8
|
-
* represent the types of the keys and values, respectively. The keys are constrained to
|
|
9
|
-
* be strings.
|
|
10
|
-
*/
|
|
11
|
-
function fromEntries(item) {
|
|
12
|
-
return Object.fromEntries(item);
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
exports.fromEntries = fromEntries;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
//#region src/utils/fromEntries.ts
|
|
3
|
-
/**
|
|
4
|
-
* Converts an array of key-value pair entries into an object.
|
|
5
|
-
*
|
|
6
|
-
* This function takes an array of `[key, value]` pairs and converts it into an object
|
|
7
|
-
* where each key is associated with its corresponding value. The generic types `T` and `K`
|
|
8
|
-
* represent the types of the keys and values, respectively. The keys are constrained to
|
|
9
|
-
* be strings.
|
|
10
|
-
*/
|
|
11
|
-
function fromEntries(item) {
|
|
12
|
-
return Object.fromEntries(item);
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { fromEntries };
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=fromEntries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;CACrF,OAAO,OAAO,YAAY,KAAK"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
3
|
-
const require_colors = require("../cli/dist/lib/colors.cjs");
|
|
4
|
-
const require_print = require("../cli/dist/lib/print.cjs");
|
|
5
|
-
const require_index = require("../config/dist/index.cjs");
|
|
6
|
-
const require_plugin = require("../plugin.cjs");
|
|
7
|
-
const require_autoVariants = require("../automated-config/dist/generated/autoVariants.cjs");
|
|
8
|
-
const require_tsMorph = require("./tsMorph.cjs");
|
|
9
|
-
let ts_morph = require("ts-morph");
|
|
10
|
-
let postcss = require("postcss");
|
|
11
|
-
postcss = require_runtime.__toESM(postcss, 1);
|
|
12
|
-
let tailwindcss = require("tailwindcss");
|
|
13
|
-
tailwindcss = require_runtime.__toESM(tailwindcss, 1);
|
|
14
|
-
/**
|
|
15
|
-
* Returns a list of exported Components from UDS
|
|
16
|
-
* both stable and experimental
|
|
17
|
-
*/
|
|
18
|
-
const getExportedComponents = (UDS, UDS_EXPERIMENTAL) => {
|
|
19
|
-
const udsStableExports = Object.keys(UDS);
|
|
20
|
-
const udsExperimentalExports = Object.keys(UDS_EXPERIMENTAL);
|
|
21
|
-
return udsStableExports.concat(udsExperimentalExports).filter((key) => {
|
|
22
|
-
const regexStartsWithCapitalLetter = /* @__PURE__ */ new RegExp("^[A-Z].[^_]");
|
|
23
|
-
const hasUnderscore = key.includes("_");
|
|
24
|
-
const startsWithCapitalLetter = regexStartsWithCapitalLetter.test(key);
|
|
25
|
-
return !hasUnderscore && startsWithCapitalLetter;
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Some UDS components are built using other UDS components,
|
|
30
|
-
* we need to know those dependencies so generate the correct
|
|
31
|
-
*/
|
|
32
|
-
const getComponentsDependencies = (project, componentsList, exportsToFilePath) => {
|
|
33
|
-
const componentsListSet = new Set(componentsList);
|
|
34
|
-
const componentUDSDependencies = {};
|
|
35
|
-
componentsList.forEach((component) => {
|
|
36
|
-
componentUDSDependencies[component] = getComponentUdsDependencies(project, componentsListSet, component, exportsToFilePath);
|
|
37
|
-
});
|
|
38
|
-
return componentUDSDependencies;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* We need to make sure that components from UDS that use other components
|
|
42
|
-
* from UDS also gets included
|
|
43
|
-
*/
|
|
44
|
-
const getComponentUdsDependencies = (project, componentsList, componentName, exportsToFilePath) => {
|
|
45
|
-
return project.getSourceFileOrThrow(exportsToFilePath[componentName]).getImportDeclarations().map((declaration) => {
|
|
46
|
-
return declaration.getNamedImports().map((namedImport) => namedImport.getName());
|
|
47
|
-
}).flat().filter((namedImport) => componentsList.has(namedImport));
|
|
48
|
-
};
|
|
49
|
-
const getComponentsProps = (project, list, variants, variantsList, exportsToFilePath) => {
|
|
50
|
-
const map = {};
|
|
51
|
-
list.forEach((componentName) => {
|
|
52
|
-
map[componentName] = getInitializedAndReferencedProps(project, componentName, variants, variantsList, exportsToFilePath);
|
|
53
|
-
});
|
|
54
|
-
return map;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Converts the variants object used in CVA to
|
|
58
|
-
*/
|
|
59
|
-
const convertVariantsIntoTailwindClass = (variants) => {
|
|
60
|
-
return Object.keys(variants);
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Get the params with default values,
|
|
64
|
-
* required and the ones used in references
|
|
65
|
-
*/
|
|
66
|
-
const getInitializedAndReferencedProps = (project, componentName, variants, variantsList, exportsToFilePath) => {
|
|
67
|
-
const sourceFile = project.getSourceFileOrThrow(exportsToFilePath[componentName] ?? "noFile");
|
|
68
|
-
const functionDeclarations = sourceFile.getFunctions();
|
|
69
|
-
const variableDeclarations = sourceFile.getVariableDeclarations();
|
|
70
|
-
const node = [...functionDeclarations, ...variableDeclarations].filter((declaration) => declaration.getName() === componentName)[0];
|
|
71
|
-
const functionDeclaration = require_tsMorph.getReactFunctionDeclaration(node);
|
|
72
|
-
if (!functionDeclaration) require_print.print(require_colors.red(`No function declaration found for ${componentName}`));
|
|
73
|
-
const parameterDeclaration = functionDeclaration?.getParameters();
|
|
74
|
-
if (!parameterDeclaration || parameterDeclaration.length === 0) {
|
|
75
|
-
require_print.print(require_colors.red(`No parameter declaration found for ${componentName}`));
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
if (!parameterDeclaration[0].getChildrenOfKind(ts_morph.SyntaxKind.ObjectBindingPattern)[0]) return [];
|
|
79
|
-
const references = require_tsMorph.findReferencesAsJsxElements(node.getFirstDescendantByKindOrThrow(ts_morph.SyntaxKind.Identifier));
|
|
80
|
-
const propsWithDefaultValues = parameterDeclaration[0].getChildrenOfKind(ts_morph.SyntaxKind.ObjectBindingPattern)[0].getElements().filter((el) => !!el.getInitializer()).map((el) => {
|
|
81
|
-
const stringLiteral = el.getDescendantsOfKind(ts_morph.SyntaxKind.StringLiteral)[0];
|
|
82
|
-
const propName = el.getName();
|
|
83
|
-
const values = [];
|
|
84
|
-
if (stringLiteral) values.push(stringLiteral.getLiteralText());
|
|
85
|
-
return [propName, values];
|
|
86
|
-
}).filter(([propName]) => variantsList.includes(propName));
|
|
87
|
-
const propsUsedInReferences = references.map((r) => require_tsMorph.getUsedPropsInReference(r, variants)).flat().filter(([propName]) => variantsList.includes(propName));
|
|
88
|
-
const mapPropToUsedOptions = /* @__PURE__ */ new Map();
|
|
89
|
-
propsWithDefaultValues.concat(propsUsedInReferences).forEach(([propName, propValues]) => {
|
|
90
|
-
if (propValues.length === 0) propValues = Object.keys(variants[propName]);
|
|
91
|
-
const options = mapPropToUsedOptions.get(propName) ?? /* @__PURE__ */ new Set();
|
|
92
|
-
propValues.forEach((val) => options.add(val));
|
|
93
|
-
mapPropToUsedOptions.set(propName, options);
|
|
94
|
-
});
|
|
95
|
-
return Array.from(mapPropToUsedOptions).map(([propName, options]) => [propName, Array.from(options)]);
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Gets the Tailwind CSS classes used in a component
|
|
99
|
-
*/
|
|
100
|
-
const getTwClassesInComponent = async (componentsList, exportsToFilePath) => {
|
|
101
|
-
const CSS_DATA = `
|
|
102
|
-
@tailwind components;
|
|
103
|
-
@tailwind utilities;
|
|
104
|
-
`;
|
|
105
|
-
const res = {};
|
|
106
|
-
const promises = componentsList.map((component) => {
|
|
107
|
-
return (0, postcss.default)([(0, tailwindcss.default)({
|
|
108
|
-
content: [exportsToFilePath[component]],
|
|
109
|
-
plugins: [require_plugin.tailwindPlugin({ config: require_index.defaultTokensConfig })]
|
|
110
|
-
})]).process(CSS_DATA, {
|
|
111
|
-
from: "app.css",
|
|
112
|
-
to: "./dist/app.css"
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
(await Promise.all(promises)).forEach((result, i) => {
|
|
116
|
-
const currentComponent = componentsList[i];
|
|
117
|
-
res[currentComponent] = result.root.nodes.map((node) => {
|
|
118
|
-
if (node.selector) return node.selector.replace(".", "");
|
|
119
|
-
return [];
|
|
120
|
-
}).join(" ").replace(/\s+/g, " ");
|
|
121
|
-
});
|
|
122
|
-
return res;
|
|
123
|
-
};
|
|
124
|
-
/**
|
|
125
|
-
* Goes through the list of all exports from UDS (stable and experimental)
|
|
126
|
-
* and return a map of each exports and the source file path where its declared
|
|
127
|
-
*/
|
|
128
|
-
const getExportsToFilePath = (project) => {
|
|
129
|
-
const stableComponentsMainFile = project.getSourceFileOrThrow("./src/components/index.ts");
|
|
130
|
-
const experimentalComponentsMainFile = project.getSourceFileOrThrow("./src/components/experimental/index.ts");
|
|
131
|
-
const exportToFilePath = {};
|
|
132
|
-
for (const [name, declarations] of stableComponentsMainFile.getExportedDeclarations()) exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];
|
|
133
|
-
for (const [name, declarations] of experimentalComponentsMainFile.getExportedDeclarations()) exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];
|
|
134
|
-
return exportToFilePath;
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* Adds auto-generated variants to the Tailwind CSS classes of components.
|
|
138
|
-
*
|
|
139
|
-
* This function extracts component names from auto variants keys, groups class names by component,
|
|
140
|
-
* updates component classes using auto-generated variant classes, and propagates base classes to subcomponents.
|
|
141
|
-
*
|
|
142
|
-
* @param componentToTwClasses - A map of component names to their current Tailwind CSS classes.
|
|
143
|
-
* @returns Updated map with auto variants added to the component classes.
|
|
144
|
-
*/
|
|
145
|
-
const addAutoVariantsToComponentClasses = (componentToTwClasses) => {
|
|
146
|
-
const componentNameRegex = /^([a-z]+)[A-Z]/;
|
|
147
|
-
const componentNameMap = {};
|
|
148
|
-
const componentNameLookup = /* @__PURE__ */ new Map();
|
|
149
|
-
Object.keys(componentToTwClasses).forEach((actualName) => {
|
|
150
|
-
componentNameLookup.set(actualName.toLowerCase(), actualName);
|
|
151
|
-
});
|
|
152
|
-
Object.keys(require_autoVariants.autoVariants).forEach((key) => {
|
|
153
|
-
const match = key.match(componentNameRegex);
|
|
154
|
-
if (match && match[1]) {
|
|
155
|
-
const extractedName = match[1].charAt(0).toUpperCase() + match[1].slice(1);
|
|
156
|
-
const actualComponentName = componentNameLookup.get(extractedName.toLowerCase()) || extractedName;
|
|
157
|
-
if (!componentNameMap[actualComponentName]) componentNameMap[actualComponentName] = [];
|
|
158
|
-
Object.values(require_autoVariants.autoVariants[key]).forEach((className) => {
|
|
159
|
-
componentNameMap[actualComponentName].push(className);
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
Object.entries(componentNameMap).forEach(([componentName, classes]) => {
|
|
164
|
-
componentToTwClasses[componentName] = `${componentToTwClasses[componentName] || ""} ${classes.join(" ")}`.trim();
|
|
165
|
-
});
|
|
166
|
-
const components = Object.keys(componentNameMap);
|
|
167
|
-
Object.keys(componentToTwClasses).forEach((key) => {
|
|
168
|
-
components.forEach((comp) => {
|
|
169
|
-
const compName = comp.charAt(0).toUpperCase() + comp.slice(1);
|
|
170
|
-
if (key.startsWith(compName) && key !== compName) {
|
|
171
|
-
const baseClasses = componentToTwClasses[compName] || "";
|
|
172
|
-
if (baseClasses) componentToTwClasses[key] = `${componentToTwClasses[key]} ${baseClasses}`.trim();
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
return componentToTwClasses;
|
|
177
|
-
};
|
|
178
|
-
//#endregion
|
|
179
|
-
exports.addAutoVariantsToComponentClasses = addAutoVariantsToComponentClasses;
|
|
180
|
-
exports.convertVariantsIntoTailwindClass = convertVariantsIntoTailwindClass;
|
|
181
|
-
exports.getComponentsDependencies = getComponentsDependencies;
|
|
182
|
-
exports.getComponentsProps = getComponentsProps;
|
|
183
|
-
exports.getExportedComponents = getExportedComponents;
|
|
184
|
-
exports.getExportsToFilePath = getExportsToFilePath;
|
|
185
|
-
exports.getTwClassesInComponent = getTwClassesInComponent;
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
import { red } from "../cli/dist/lib/colors.js";
|
|
3
|
-
import { print } from "../cli/dist/lib/print.js";
|
|
4
|
-
import { defaultTokensConfig } from "../config/dist/index.js";
|
|
5
|
-
import { tailwindPlugin } from "../plugin.js";
|
|
6
|
-
import { autoVariants } from "../automated-config/dist/generated/autoVariants.js";
|
|
7
|
-
import { findReferencesAsJsxElements, getReactFunctionDeclaration, getUsedPropsInReference } from "./tsMorph.js";
|
|
8
|
-
import { SyntaxKind } from "ts-morph";
|
|
9
|
-
import postcss from "postcss";
|
|
10
|
-
import tailwindcss from "tailwindcss";
|
|
11
|
-
/**
|
|
12
|
-
* Returns a list of exported Components from UDS
|
|
13
|
-
* both stable and experimental
|
|
14
|
-
*/
|
|
15
|
-
const getExportedComponents = (UDS, UDS_EXPERIMENTAL) => {
|
|
16
|
-
const udsStableExports = Object.keys(UDS);
|
|
17
|
-
const udsExperimentalExports = Object.keys(UDS_EXPERIMENTAL);
|
|
18
|
-
return udsStableExports.concat(udsExperimentalExports).filter((key) => {
|
|
19
|
-
const regexStartsWithCapitalLetter = /* @__PURE__ */ new RegExp("^[A-Z].[^_]");
|
|
20
|
-
const hasUnderscore = key.includes("_");
|
|
21
|
-
const startsWithCapitalLetter = regexStartsWithCapitalLetter.test(key);
|
|
22
|
-
return !hasUnderscore && startsWithCapitalLetter;
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Some UDS components are built using other UDS components,
|
|
27
|
-
* we need to know those dependencies so generate the correct
|
|
28
|
-
*/
|
|
29
|
-
const getComponentsDependencies = (project, componentsList, exportsToFilePath) => {
|
|
30
|
-
const componentsListSet = new Set(componentsList);
|
|
31
|
-
const componentUDSDependencies = {};
|
|
32
|
-
componentsList.forEach((component) => {
|
|
33
|
-
componentUDSDependencies[component] = getComponentUdsDependencies(project, componentsListSet, component, exportsToFilePath);
|
|
34
|
-
});
|
|
35
|
-
return componentUDSDependencies;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* We need to make sure that components from UDS that use other components
|
|
39
|
-
* from UDS also gets included
|
|
40
|
-
*/
|
|
41
|
-
const getComponentUdsDependencies = (project, componentsList, componentName, exportsToFilePath) => {
|
|
42
|
-
return project.getSourceFileOrThrow(exportsToFilePath[componentName]).getImportDeclarations().map((declaration) => {
|
|
43
|
-
return declaration.getNamedImports().map((namedImport) => namedImport.getName());
|
|
44
|
-
}).flat().filter((namedImport) => componentsList.has(namedImport));
|
|
45
|
-
};
|
|
46
|
-
const getComponentsProps = (project, list, variants, variantsList, exportsToFilePath) => {
|
|
47
|
-
const map = {};
|
|
48
|
-
list.forEach((componentName) => {
|
|
49
|
-
map[componentName] = getInitializedAndReferencedProps(project, componentName, variants, variantsList, exportsToFilePath);
|
|
50
|
-
});
|
|
51
|
-
return map;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Converts the variants object used in CVA to
|
|
55
|
-
*/
|
|
56
|
-
const convertVariantsIntoTailwindClass = (variants) => {
|
|
57
|
-
return Object.keys(variants);
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Get the params with default values,
|
|
61
|
-
* required and the ones used in references
|
|
62
|
-
*/
|
|
63
|
-
const getInitializedAndReferencedProps = (project, componentName, variants, variantsList, exportsToFilePath) => {
|
|
64
|
-
const sourceFile = project.getSourceFileOrThrow(exportsToFilePath[componentName] ?? "noFile");
|
|
65
|
-
const functionDeclarations = sourceFile.getFunctions();
|
|
66
|
-
const variableDeclarations = sourceFile.getVariableDeclarations();
|
|
67
|
-
const node = [...functionDeclarations, ...variableDeclarations].filter((declaration) => declaration.getName() === componentName)[0];
|
|
68
|
-
const functionDeclaration = getReactFunctionDeclaration(node);
|
|
69
|
-
if (!functionDeclaration) print(red(`No function declaration found for ${componentName}`));
|
|
70
|
-
const parameterDeclaration = functionDeclaration?.getParameters();
|
|
71
|
-
if (!parameterDeclaration || parameterDeclaration.length === 0) {
|
|
72
|
-
print(red(`No parameter declaration found for ${componentName}`));
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
if (!parameterDeclaration[0].getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0]) return [];
|
|
76
|
-
const references = findReferencesAsJsxElements(node.getFirstDescendantByKindOrThrow(SyntaxKind.Identifier));
|
|
77
|
-
const propsWithDefaultValues = parameterDeclaration[0].getChildrenOfKind(SyntaxKind.ObjectBindingPattern)[0].getElements().filter((el) => !!el.getInitializer()).map((el) => {
|
|
78
|
-
const stringLiteral = el.getDescendantsOfKind(SyntaxKind.StringLiteral)[0];
|
|
79
|
-
const propName = el.getName();
|
|
80
|
-
const values = [];
|
|
81
|
-
if (stringLiteral) values.push(stringLiteral.getLiteralText());
|
|
82
|
-
return [propName, values];
|
|
83
|
-
}).filter(([propName]) => variantsList.includes(propName));
|
|
84
|
-
const propsUsedInReferences = references.map((r) => getUsedPropsInReference(r, variants)).flat().filter(([propName]) => variantsList.includes(propName));
|
|
85
|
-
const mapPropToUsedOptions = /* @__PURE__ */ new Map();
|
|
86
|
-
propsWithDefaultValues.concat(propsUsedInReferences).forEach(([propName, propValues]) => {
|
|
87
|
-
if (propValues.length === 0) propValues = Object.keys(variants[propName]);
|
|
88
|
-
const options = mapPropToUsedOptions.get(propName) ?? /* @__PURE__ */ new Set();
|
|
89
|
-
propValues.forEach((val) => options.add(val));
|
|
90
|
-
mapPropToUsedOptions.set(propName, options);
|
|
91
|
-
});
|
|
92
|
-
return Array.from(mapPropToUsedOptions).map(([propName, options]) => [propName, Array.from(options)]);
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* Gets the Tailwind CSS classes used in a component
|
|
96
|
-
*/
|
|
97
|
-
const getTwClassesInComponent = async (componentsList, exportsToFilePath) => {
|
|
98
|
-
const CSS_DATA = `
|
|
99
|
-
@tailwind components;
|
|
100
|
-
@tailwind utilities;
|
|
101
|
-
`;
|
|
102
|
-
const res = {};
|
|
103
|
-
const promises = componentsList.map((component) => {
|
|
104
|
-
return postcss([tailwindcss({
|
|
105
|
-
content: [exportsToFilePath[component]],
|
|
106
|
-
plugins: [tailwindPlugin({ config: defaultTokensConfig })]
|
|
107
|
-
})]).process(CSS_DATA, {
|
|
108
|
-
from: "app.css",
|
|
109
|
-
to: "./dist/app.css"
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
(await Promise.all(promises)).forEach((result, i) => {
|
|
113
|
-
const currentComponent = componentsList[i];
|
|
114
|
-
res[currentComponent] = result.root.nodes.map((node) => {
|
|
115
|
-
if (node.selector) return node.selector.replace(".", "");
|
|
116
|
-
return [];
|
|
117
|
-
}).join(" ").replace(/\s+/g, " ");
|
|
118
|
-
});
|
|
119
|
-
return res;
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Goes through the list of all exports from UDS (stable and experimental)
|
|
123
|
-
* and return a map of each exports and the source file path where its declared
|
|
124
|
-
*/
|
|
125
|
-
const getExportsToFilePath = (project) => {
|
|
126
|
-
const stableComponentsMainFile = project.getSourceFileOrThrow("./src/components/index.ts");
|
|
127
|
-
const experimentalComponentsMainFile = project.getSourceFileOrThrow("./src/components/experimental/index.ts");
|
|
128
|
-
const exportToFilePath = {};
|
|
129
|
-
for (const [name, declarations] of stableComponentsMainFile.getExportedDeclarations()) exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];
|
|
130
|
-
for (const [name, declarations] of experimentalComponentsMainFile.getExportedDeclarations()) exportToFilePath[name] = declarations.map((d) => d.getSourceFile().getFilePath())[0];
|
|
131
|
-
return exportToFilePath;
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Adds auto-generated variants to the Tailwind CSS classes of components.
|
|
135
|
-
*
|
|
136
|
-
* This function extracts component names from auto variants keys, groups class names by component,
|
|
137
|
-
* updates component classes using auto-generated variant classes, and propagates base classes to subcomponents.
|
|
138
|
-
*
|
|
139
|
-
* @param componentToTwClasses - A map of component names to their current Tailwind CSS classes.
|
|
140
|
-
* @returns Updated map with auto variants added to the component classes.
|
|
141
|
-
*/
|
|
142
|
-
const addAutoVariantsToComponentClasses = (componentToTwClasses) => {
|
|
143
|
-
const componentNameRegex = /^([a-z]+)[A-Z]/;
|
|
144
|
-
const componentNameMap = {};
|
|
145
|
-
const componentNameLookup = /* @__PURE__ */ new Map();
|
|
146
|
-
Object.keys(componentToTwClasses).forEach((actualName) => {
|
|
147
|
-
componentNameLookup.set(actualName.toLowerCase(), actualName);
|
|
148
|
-
});
|
|
149
|
-
Object.keys(autoVariants).forEach((key) => {
|
|
150
|
-
const match = key.match(componentNameRegex);
|
|
151
|
-
if (match && match[1]) {
|
|
152
|
-
const extractedName = match[1].charAt(0).toUpperCase() + match[1].slice(1);
|
|
153
|
-
const actualComponentName = componentNameLookup.get(extractedName.toLowerCase()) || extractedName;
|
|
154
|
-
if (!componentNameMap[actualComponentName]) componentNameMap[actualComponentName] = [];
|
|
155
|
-
Object.values(autoVariants[key]).forEach((className) => {
|
|
156
|
-
componentNameMap[actualComponentName].push(className);
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
Object.entries(componentNameMap).forEach(([componentName, classes]) => {
|
|
161
|
-
componentToTwClasses[componentName] = `${componentToTwClasses[componentName] || ""} ${classes.join(" ")}`.trim();
|
|
162
|
-
});
|
|
163
|
-
const components = Object.keys(componentNameMap);
|
|
164
|
-
Object.keys(componentToTwClasses).forEach((key) => {
|
|
165
|
-
components.forEach((comp) => {
|
|
166
|
-
const compName = comp.charAt(0).toUpperCase() + comp.slice(1);
|
|
167
|
-
if (key.startsWith(compName) && key !== compName) {
|
|
168
|
-
const baseClasses = componentToTwClasses[compName] || "";
|
|
169
|
-
if (baseClasses) componentToTwClasses[key] = `${componentToTwClasses[key]} ${baseClasses}`.trim();
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
return componentToTwClasses;
|
|
174
|
-
};
|
|
175
|
-
//#endregion
|
|
176
|
-
export { addAutoVariantsToComponentClasses, convertVariantsIntoTailwindClass, getComponentsDependencies, getComponentsProps, getExportedComponents, getExportsToFilePath, getTwClassesInComponent };
|
|
177
|
-
|
|
178
|
-
//# sourceMappingURL=generatePurgeCSSData.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,10 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
//#region src/utils/mapValues.ts
|
|
3
|
-
function mapValues(obj, callbackFn) {
|
|
4
|
-
return Object.keys(obj).reduce((acc, key, i) => {
|
|
5
|
-
acc[key] = callbackFn(obj[key], key, i);
|
|
6
|
-
return acc;
|
|
7
|
-
}, {});
|
|
8
|
-
}
|
|
9
|
-
//#endregion
|
|
10
|
-
exports.mapValues = mapValues;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
2
|
-
//#region src/utils/mapValues.ts
|
|
3
|
-
function mapValues(obj, callbackFn) {
|
|
4
|
-
return Object.keys(obj).reduce((acc, key, i) => {
|
|
5
|
-
acc[key] = callbackFn(obj[key], key, i);
|
|
6
|
-
return acc;
|
|
7
|
-
}, {});
|
|
8
|
-
}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { mapValues };
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=mapValues.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;CACvB,OAAO,OAAO,KAAK,IAAI,CAAC,QACrB,KAAK,KAAc,MAAM;EACxB,IAAI,OAAO,WAAW,IAAI,MAAM,KAAK,EAAE;EACvC,OAAO;IAGT,EAAE,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
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;CAClF,IAAI,YAAY,KAAA,KAAa,YAAY,MACvC,MAAM,IAAI,MAAM,0BAA0B,UAAU;CAGtD,MAAM,SAAS,OAAO,YAAY,WAAW,UAAU,SAAS,SAAS,GAAG;CAE5E,IAAI,MAAM,OAAO,EACf,MAAM,IAAI,MAAM,wCAAwC,QAAQ,eAAe;CAGjF,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeCSS.js","names":[],"sources":["../../src/utils/optimizeCSS.ts"],"sourcesContent":["import { gzipSync } from 'node:zlib';\n\nimport type { AtRule, Declaration, Plugin, Root, Rule } from 'postcss';\nimport postcss from 'postcss';\n\n/**\n * Check if a selector is a \"meaningful\" selector (class, ID, attribute, or pseudo-class)\n * as opposed to just element/type selectors (like `code, kbd, pre` in preflight).\n * Meaningful selectors indicate the font is actually used by components, not just base reset.\n */\nfunction isMeaningfulSelector(selector: string): boolean {\n // Split compound selectors\n const parts = selector.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n // Check if any part of the selector has class, ID, attribute, or custom pseudo-class\n // This indicates actual usage by components, not just preflight/reset\n if (\n part.includes('.') || // class selector\n part.includes('#') || // ID selector\n part.includes('[') || // attribute selector\n part.includes(':not(') || // complex pseudo-class\n part.includes(':where(') ||\n part.includes(':is(') ||\n part.includes(':has(')\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * PostCSS plugin to remove @font-face declarations for font families that are not used\n * anywhere in the CSS (excluding preflight/reset styles that only use element selectors).\n */\nfunction removeUnusedFontFaces(): Plugin {\n return {\n postcssPlugin: 'remove-unused-font-faces',\n Once(root: Root) {\n // Track font variables and whether they're used in meaningful selectors\n // Key: variable name (without --uds-font- prefix), Value: { used: boolean, meaningful: boolean }\n const fontVarUsage = new Map<string, { used: boolean; meaningful: boolean }>();\n\n // First pass: collect all font-family references from the CSS (excluding @font-face)\n const usedFontFamilies = new Set<string>();\n\n root.walkDecls('font-family', (decl) => {\n // Skip font-family declarations inside @font-face\n if (decl.parent?.type === 'atrule' && (decl.parent as AtRule).name === 'font-face') {\n return;\n }\n\n // Get the selector for this rule\n const rule = decl.parent as Rule;\n const selector = rule?.selector || '';\n const meaningful = isMeaningfulSelector(selector);\n\n // Parse font-family value to extract font names\n // Handles: \"Font Name\", 'Font Name', Font-Name, var(--uds-font-xxx)\n const value = decl.value;\n\n // Check for CSS variables that reference fonts\n const varMatches = value.matchAll(/var\\(--uds-font-([^),]+)\\)/g);\n for (const match of varMatches) {\n const varName = match[1];\n const existing = fontVarUsage.get(varName) || { used: false, meaningful: false };\n fontVarUsage.set(varName, {\n used: true,\n meaningful: existing.meaningful || meaningful,\n });\n }\n\n // Extract font family names (quoted or unquoted) - only if in meaningful selector\n if (meaningful) {\n const fontNames = value\n .split(',')\n .map((font) => font.trim())\n .map((font) => {\n // Remove quotes\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n return font.slice(1, -1);\n }\n // Skip var() references and generic families\n if (\n font.startsWith('var(') ||\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(font.toLowerCase())\n ) {\n return null;\n }\n return font;\n })\n .filter(Boolean) as string[];\n\n fontNames.forEach((name) => usedFontFamilies.add(name));\n }\n });\n\n // Collect all font variable definitions for resolving nested references\n const fontVarDefinitions = new Map<string, string>();\n root.walkDecls((decl) => {\n if (\n decl.prop.startsWith('--uds-font-') &&\n !decl.prop.includes('size') &&\n !decl.prop.includes('weight') &&\n !decl.prop.includes('slant') &&\n !decl.prop.includes('width')\n ) {\n const varName = decl.prop.replace('--uds-font-', '');\n fontVarDefinitions.set(varName, decl.value);\n }\n });\n\n // Helper to resolve a variable value to actual font names (handles nested var() references)\n const resolveToFontNames = (value: string, visited = new Set<string>()): string[] => {\n const fontNames: string[] = [];\n\n // Check for nested var() references\n const varMatch = value.match(/var\\(--uds-font-([^),]+)\\)/);\n if (varMatch) {\n const nestedVarName = varMatch[1];\n // Prevent infinite loops\n if (!visited.has(nestedVarName)) {\n visited.add(nestedVarName);\n const nestedValue = fontVarDefinitions.get(nestedVarName);\n if (nestedValue) {\n // Mark the nested variable as used if parent is used\n const nestedUsage = fontVarUsage.get(nestedVarName);\n if (nestedUsage) {\n // Propagate meaningful status up the chain\n const parentUsage = fontVarUsage.get(\n value.replace(/var\\(--uds-font-([^),]+)\\).*/, '$1'),\n );\n if (parentUsage?.meaningful) {\n nestedUsage.meaningful = true;\n }\n }\n fontNames.push(...resolveToFontNames(nestedValue, visited));\n }\n }\n }\n\n // Extract actual font names from the value\n value\n .split(',')\n .map((font) => font.trim())\n .forEach((font) => {\n // Skip var() references (handled above)\n if (font.startsWith('var(')) {\n return;\n }\n\n // Remove quotes\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n font = font.slice(1, -1);\n }\n\n // Skip generic families\n if (\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(font.toLowerCase())\n ) {\n return;\n }\n\n if (font) {\n fontNames.push(font);\n }\n });\n\n return fontNames;\n };\n\n // Process font variable definitions and resolve nested references\n for (const [varName, value] of fontVarDefinitions) {\n const usage = fontVarUsage.get(varName);\n\n // Only include fonts from this variable if it's used in a meaningful selector\n if (usage?.used && usage?.meaningful) {\n const fontNames = resolveToFontNames(value);\n fontNames.forEach((name) => usedFontFamilies.add(name));\n }\n }\n\n // Second pass: remove unused @font-face rules and track which fonts are kept\n const keptFonts = new Set<string>();\n root.walkAtRules('font-face', (atRule) => {\n let fontFamily: string | null = null;\n\n atRule.walkDecls('font-family', (decl) => {\n fontFamily = decl.value.replace(/[\"']/g, '').trim();\n });\n\n if (fontFamily && !usedFontFamilies.has(fontFamily)) {\n atRule.remove();\n } else if (fontFamily) {\n keptFonts.add(fontFamily);\n }\n });\n\n // Third pass: update CSS variable definitions to remove fonts that were not kept\n // This ensures variables like --uds-font-mono don't reference fonts we didn't load\n root.walkDecls((decl) => {\n if (\n decl.prop.startsWith('--uds-font-') &&\n !decl.prop.includes('size') &&\n !decl.prop.includes('weight') &&\n !decl.prop.includes('slant') &&\n !decl.prop.includes('width')\n ) {\n // Parse the font stack and filter out fonts that weren't kept\n const fonts = decl.value.split(',').map((f) => f.trim());\n const filteredFonts = fonts.filter((font) => {\n // Keep var() references\n if (font.startsWith('var(')) {\n return true;\n }\n\n // Extract font name (remove quotes)\n let fontName = font;\n if (\n (font.startsWith('\"') && font.endsWith('\"')) ||\n (font.startsWith(\"'\") && font.endsWith(\"'\"))\n ) {\n fontName = font.slice(1, -1);\n }\n\n // Keep generic font families\n if (\n [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-monospace',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-rounded',\n ].includes(fontName.toLowerCase())\n ) {\n return true;\n }\n\n // Keep fonts that have @font-face declarations\n return keptFonts.has(fontName);\n });\n\n // Update the declaration if fonts were removed\n if (filteredFonts.length < fonts.length && filteredFonts.length > 0) {\n decl.value = filteredFonts.join(', ');\n }\n }\n });\n },\n };\n}\n\nremoveUnusedFontFaces.postcss = true;\n\n/**\n * PostCSS plugin to remove redundant .uds-color-mode-light rules.\n * Light mode is the default (set on :root), so the explicit class is unnecessary.\n */\nfunction removeRedundantLightModePlugin(): Plugin {\n return {\n postcssPlugin: 'remove-redundant-light-mode',\n Once(root: Root) {\n root.walkRules((rule) => {\n // Match .uds-color-mode-light selector (exact match or as part of selector list)\n const selectors = rule.selector.split(',').map((s) => s.trim());\n const filteredSelectors = selectors.filter((s) => {\n // Remove selectors that are exactly .uds-color-mode-light\n // or .uds-color-mode-light with just :root/:where/:is wrappers\n const normalized = s.replace(/\\s+/g, ' ').trim();\n return (\n normalized !== '.uds-color-mode-light' &&\n normalized !== ':root .uds-color-mode-light' &&\n normalized !== ':where(.uds-color-mode-light)' &&\n normalized !== ':is(.uds-color-mode-light)'\n );\n });\n\n if (filteredSelectors.length === 0) {\n // All selectors were light mode - remove the entire rule\n rule.remove();\n } else if (filteredSelectors.length < selectors.length) {\n // Some selectors were light mode - update the selector\n rule.selector = filteredSelectors.join(', ');\n }\n });\n },\n };\n}\n\nremoveRedundantLightModePlugin.postcss = true;\n\n/**\n * PostCSS plugin to remove empty CSS rules (rules with no declarations).\n * Also aggregates duplicate selectors.\n */\nfunction removeEmptyRulesPlugin(): Plugin {\n return {\n postcssPlugin: 'remove-empty-rules',\n Once(root: Root) {\n // Remove empty rules\n root.walkRules((rule) => {\n // Check if rule has any declarations (not just comments or empty)\n const hasDeclarations = rule.nodes?.some(\n (node) => node.type === 'decl' || (node.type === 'rule' && node.nodes?.length > 0),\n );\n\n if (!hasDeclarations) {\n rule.remove();\n }\n });\n\n // Remove empty at-rules (like empty @media blocks)\n root.walkAtRules((atRule) => {\n if (atRule.name !== 'font-face' && atRule.name !== 'keyframes') {\n const hasContent = atRule.nodes?.some((node) => {\n if (node.type === 'rule') {\n return node.nodes?.some((n) => n.type === 'decl');\n }\n if (node.type === 'decl') {\n return true;\n }\n return false;\n });\n\n if (!hasContent && atRule.nodes?.length === 0) {\n atRule.remove();\n }\n }\n });\n },\n };\n}\n\nremoveEmptyRulesPlugin.postcss = true;\n\n/**\n * PostCSS plugin to aggregate rules with identical selectors.\n */\nfunction aggregateDuplicateSelectorsPlugin(): Plugin {\n return {\n postcssPlugin: 'aggregate-duplicate-selectors',\n Once(root: Root) {\n // Map of selector -> first rule with that selector\n const selectorMap = new Map<string, Rule>();\n\n // Collect rules to process (only top-level rules, not nested)\n const rulesToProcess: Rule[] = [];\n root.walkRules((rule) => {\n // Only process top-level rules (direct children of root or at-rules)\n if (rule.parent?.type === 'root' || rule.parent?.type === 'atrule') {\n rulesToProcess.push(rule);\n }\n });\n\n for (const rule of rulesToProcess) {\n const selector = rule.selector;\n const parent = rule.parent;\n\n // Create a unique key including the parent context\n const parentKey =\n parent?.type === 'atrule'\n ? `@${(parent as AtRule).name}:${(parent as AtRule).params}`\n : 'root';\n const key = `${parentKey}|${selector}`;\n\n if (selectorMap.has(key)) {\n const existingRule = selectorMap.get(key)!;\n\n // Move all declarations from current rule to existing rule\n rule.walkDecls((decl) => {\n // Check if the declaration already exists\n const existingDecl = existingRule.nodes?.find(\n (node): node is Declaration => node.type === 'decl' && node.prop === decl.prop,\n );\n\n if (existingDecl) {\n // Replace with new value\n existingDecl.value = decl.value;\n } else {\n // Append the declaration\n existingRule.append(decl.clone());\n }\n });\n\n // Remove the duplicate rule\n rule.remove();\n } else {\n selectorMap.set(key, rule);\n }\n }\n },\n };\n}\n\naggregateDuplicateSelectorsPlugin.postcss = true;\n\n/**\n * Validates CSS syntax and returns any errors found.\n */\nfunction validateCSS(css: string): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n\n try {\n // Parse the CSS to check for syntax errors\n const result = postcss.parse(css);\n\n // Check for common issues\n result.walkRules((rule) => {\n // Check for empty selectors\n if (!rule.selector.trim()) {\n errors.push(`Empty selector found at line ${rule.source?.start?.line}`);\n }\n\n // Check for malformed selectors\n try {\n // Basic selector validation - this catches obvious syntax errors\n if (rule.selector.includes('{{') || rule.selector.includes('}}')) {\n errors.push(`Malformed selector \"${rule.selector}\" at line ${rule.source?.start?.line}`);\n }\n } catch {\n errors.push(`Invalid selector \"${rule.selector}\" at line ${rule.source?.start?.line}`);\n }\n });\n\n // Check for unclosed blocks (postcss.parse will throw for these)\n result.walkDecls((decl) => {\n // Check for missing values\n if (!decl.value.trim()) {\n errors.push(`Empty value for property \"${decl.prop}\" at line ${decl.source?.start?.line}`);\n }\n });\n\n return { valid: errors.length === 0, errors };\n } catch (error) {\n if (error instanceof Error) {\n errors.push(`CSS Parse Error: ${error.message}`);\n } else {\n errors.push('Unknown CSS parse error');\n }\n return { valid: false, errors };\n }\n}\n\n/**\n * Reference data extracted from CSS for deduplication\n */\ninterface CSSReferenceData {\n /** Font-face fingerprints (font-family + src + weight + style) */\n fontFaces: Set<string>;\n /** Keyframes fingerprints (name + content) */\n keyframes: Set<string>;\n /** Regular rule fingerprints (selector + declarations) */\n rules: Set<string>;\n}\n\n/**\n * Create a fingerprint for a @font-face rule\n */\nfunction getFontFaceFingerprint(atRule: AtRule): string {\n let fontFamily = '';\n let src = '';\n let fontWeight = 'normal';\n let fontStyle = 'normal';\n\n atRule.walkDecls((decl) => {\n if (decl.prop === 'font-family') {\n fontFamily = decl.value.replace(/[\"']/g, '').trim();\n } else if (decl.prop === 'src') {\n src = decl.value;\n } else if (decl.prop === 'font-weight') {\n fontWeight = decl.value;\n } else if (decl.prop === 'font-style') {\n fontStyle = decl.value;\n }\n });\n\n return JSON.stringify({ fontFamily, src, fontWeight, fontStyle });\n}\n\n/**\n * Create a fingerprint for a @keyframes rule\n */\nfunction getKeyframesFingerprint(atRule: AtRule): string {\n // Use name + normalized content as fingerprint\n const name = atRule.params;\n const content = atRule.toString().replace(/\\s+/g, ' ').trim();\n return JSON.stringify({ name, content });\n}\n\n/**\n * Normalize a selector by removing scope prefix and whitespace\n */\nfunction normalizeSelector(selector: string, scopeClass?: string): string {\n let normalized = selector.trim();\n if (scopeClass) {\n // Remove scope prefix patterns like \".scope \" or \".scope.\"\n const escapedScope = scopeClass.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n normalized = normalized\n .replace(new RegExp(`${escapedScope}\\\\s+`, 'g'), '')\n .replace(new RegExp(`${escapedScope}\\\\.`, 'g'), '.')\n .replace(new RegExp(`${escapedScope}`, 'g'), '');\n }\n return normalized.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * Create a fingerprint for a CSS rule (selector + declarations)\n */\nfunction getRuleFingerprint(rule: Rule, scopeClass?: string): string {\n const selector = normalizeSelector(rule.selector, scopeClass);\n const declarations: string[] = [];\n\n rule.walkDecls((decl) => {\n declarations.push(`${decl.prop}:${decl.value}`);\n });\n\n // Sort declarations for consistent comparison\n declarations.sort();\n return JSON.stringify({ selector, declarations });\n}\n\n/**\n * Extract reference data from CSS for deduplication\n */\nfunction extractCSSReferenceData(css: string, scopeClass?: string): CSSReferenceData {\n const data: CSSReferenceData = {\n fontFaces: new Set(),\n keyframes: new Set(),\n rules: new Set(),\n };\n\n try {\n const root = postcss.parse(css);\n\n root.walkAtRules((atRule) => {\n if (atRule.name === 'font-face') {\n data.fontFaces.add(getFontFaceFingerprint(atRule));\n } else if (atRule.name === 'keyframes' || atRule.name === '-webkit-keyframes') {\n data.keyframes.add(getKeyframesFingerprint(atRule));\n }\n });\n\n root.walkRules((rule) => {\n // Skip rules inside @font-face or @keyframes\n if (rule.parent?.type === 'atrule') {\n const parentName = (rule.parent as AtRule).name;\n if (\n parentName === 'font-face' ||\n parentName === 'keyframes' ||\n parentName === '-webkit-keyframes'\n ) {\n return;\n }\n }\n data.rules.add(getRuleFingerprint(rule, scopeClass));\n });\n } catch {\n // If parsing fails, return empty data\n }\n\n return data;\n}\n\n/**\n * PostCSS plugin to remove CSS that exists in reference CSS\n * Handles @font-face, @keyframes, and regular rule deduplication\n */\nfunction removeDuplicateCss(referenceData: CSSReferenceData, scopeClass?: string): Plugin {\n return {\n postcssPlugin: 'remove-duplicate-css',\n Once(root: Root) {\n const toRemove: (AtRule | Rule)[] = [];\n\n root.walkAtRules((atRule) => {\n if (atRule.name === 'font-face') {\n const fingerprint = getFontFaceFingerprint(atRule);\n if (referenceData.fontFaces.has(fingerprint)) {\n toRemove.push(atRule);\n }\n } else if (atRule.name === 'keyframes' || atRule.name === '-webkit-keyframes') {\n const fingerprint = getKeyframesFingerprint(atRule);\n if (referenceData.keyframes.has(fingerprint)) {\n toRemove.push(atRule);\n }\n }\n });\n\n root.walkRules((rule) => {\n // Skip rules inside @font-face or @keyframes\n if (rule.parent?.type === 'atrule') {\n const parentName = (rule.parent as AtRule).name;\n if (\n parentName === 'font-face' ||\n parentName === 'keyframes' ||\n parentName === '-webkit-keyframes'\n ) {\n return;\n }\n }\n\n const fingerprint = getRuleFingerprint(rule, scopeClass);\n if (referenceData.rules.has(fingerprint)) {\n toRemove.push(rule);\n }\n });\n\n // Remove duplicates\n for (const node of toRemove) {\n node.remove();\n }\n },\n };\n}\n\n/**\n * Options for CSS optimization\n */\ninterface OptimizeCSSOptions {\n /** Remove unused @font-face declarations (default: true) */\n removeUnusedFonts?: boolean;\n /** Remove empty CSS rules (default: true) */\n removeEmptyRules?: boolean;\n /** Aggregate duplicate selectors (default: true) */\n aggregateDuplicateSelectors?: boolean;\n /** Reference CSS to deduplicate against (for scoped CSS) */\n referenceCss?: string;\n /** Scope class used in this CSS (for normalizing selectors during deduplication) */\n scopeClass?: string;\n}\n\n/**\n * Optimizes CSS by:\n * 1. Removing unused @font-face declarations\n * 2. Removing empty rules\n * 3. Aggregating duplicate selectors\n *\n * Returns the optimized CSS and validation results.\n */\nasync function optimizeCSS(\n css: string,\n options?: OptimizeCSSOptions,\n): Promise<{\n css: string;\n validation: { valid: boolean; errors: string[] };\n stats: {\n originalSize: number;\n originalSizeGzip: number;\n optimizedSize: number;\n fontFacesRemoved: number;\n emptyRulesRemoved: number;\n };\n}> {\n const originalSize = Buffer.byteLength(css, 'utf8');\n const originalSizeGzip = gzipSync(css).length;\n\n // Count font-faces before\n const fontFacesBefore = (css.match(/@font-face/g) || []).length;\n\n // Count rules before (rough estimate)\n const rulesBefore = (css.match(/\\{[^}]*\\}/g) || []).length;\n\n // Build list of plugins based on options (all enabled by default)\n const plugins: postcss.AcceptedPlugin[] = [];\n\n if (options?.removeUnusedFonts !== false) {\n plugins.push(removeUnusedFontFaces());\n }\n\n // Remove redundant .uds-color-mode-light rules (light is default on :root)\n plugins.push(removeRedundantLightModePlugin());\n\n // If reference CSS is provided, deduplicate all matching CSS (font-faces, keyframes, rules)\n if (options?.referenceCss) {\n const referenceData = extractCSSReferenceData(options.referenceCss);\n if (\n referenceData.fontFaces.size > 0 ||\n referenceData.keyframes.size > 0 ||\n referenceData.rules.size > 0\n ) {\n plugins.push(removeDuplicateCss(referenceData, options.scopeClass));\n }\n }\n\n if (options?.removeEmptyRules !== false) {\n plugins.push(removeEmptyRulesPlugin());\n }\n\n if (options?.aggregateDuplicateSelectors !== false) {\n plugins.push(aggregateDuplicateSelectorsPlugin());\n }\n\n // Apply optimizations\n const result =\n plugins.length > 0 ? await postcss(plugins).process(css, { from: undefined }) : { css };\n\n const optimizedCSS = result.css;\n const optimizedSize = Buffer.byteLength(optimizedCSS, 'utf8');\n\n // Count font-faces after\n const fontFacesAfter = (optimizedCSS.match(/@font-face/g) || []).length;\n\n // Count rules after\n const rulesAfter = (optimizedCSS.match(/\\{[^}]*\\}/g) || []).length;\n\n // Validate the result\n const validation = validateCSS(optimizedCSS);\n\n return {\n css: optimizedCSS,\n validation,\n stats: {\n originalSize,\n originalSizeGzip,\n optimizedSize,\n fontFacesRemoved: fontFacesBefore - fontFacesAfter,\n emptyRulesRemoved: Math.max(0, rulesBefore - rulesAfter),\n },\n };\n}\n\nexport {\n aggregateDuplicateSelectorsPlugin as aggregateDuplicateSelectors,\n optimizeCSS,\n type OptimizeCSSOptions,\n removeEmptyRulesPlugin as removeEmptyRules,\n removeUnusedFontFaces,\n validateCSS,\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseTokens.d.cts","names":[],"sources":["../../src/utils/parseTokens.ts"],"mappings":";;;;;KAoDK,yBAAA,GAA4B,OAAA,CAAQ,MAAA,CAAO,cAAA,EAAgB,eAAA;AAAA,iBAevD,eAAA,CACP,MAAA,EAAQ,YAAA,EACR,gBAAA,EAAkB,yBAAA,EAClB,eAAA,GAAkB,eAAA;;;;cAKA,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,OAAA;uBAEzB,WAAA,GAAc,MAAA,OAAa,aAAA,CAAc,GAAA;EAAA;AAAA;AAAA,iBAsI9C,oBAAA,WAA+B,MAAA,iBAAA,CAAwB,MAAA,UAAgB,MAAA,EAAQ,CAAA;SAGrE,MAAA;QACD,MAAA;kBACU,MAAA;AAAA;AAAA,KAkBvB,SAAA,GAAY,IAAA,CAAK,qBAAA;EACpB,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,UAAA,QAAkB,eAAA;EAC/C,SAAA,EAAW,MAAA,CACT,SAAA;IAEE,YAAA,EAAc,UAAA,QAAkB,oBAAA;IAChC,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,SAAA,EAAW,UAAA,QAAkB,oBAAA;EAAA;AAAA;AAAA,iBAsBnB,WAAA,CAAY,MAAA,EAAQ,qBAAA,GAAwB,SAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseTokens.d.ts","names":[],"sources":["../../src/utils/parseTokens.ts"],"mappings":";;;;;KAoDK,yBAAA,GAA4B,OAAA,CAAQ,MAAA,CAAO,cAAA,EAAgB,eAAA;AAAA,iBAevD,eAAA,CACP,MAAA,EAAQ,YAAA,EACR,gBAAA,EAAkB,yBAAA,EAClB,eAAA,GAAkB,eAAA;;;;cAKA,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,OAAA;uBAEzB,WAAA,GAAc,MAAA,OAAa,aAAA,CAAc,GAAA;EAAA;AAAA;AAAA,iBAsI9C,oBAAA,WAA+B,MAAA,iBAAA,CAAwB,MAAA,UAAgB,MAAA,EAAQ,CAAA;SAGrE,MAAA;QACD,MAAA;kBACU,MAAA;AAAA;AAAA,KAkBvB,SAAA,GAAY,IAAA,CAAK,qBAAA;EACpB,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,UAAA,QAAkB,eAAA;EAC/C,SAAA,EAAW,MAAA,CACT,SAAA;IAEE,YAAA,EAAc,UAAA,QAAkB,oBAAA;IAChC,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,WAAA,EAAa,UAAA,QAAkB,oBAAA;IAC/B,SAAA,EAAW,UAAA,QAAkB,oBAAA;EAAA;AAAA;AAAA,iBAsBnB,WAAA,CAAY,MAAA,EAAQ,qBAAA,GAAwB,SAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseTokens.js","names":[],"sources":["../../src/utils/parseTokens.ts"],"sourcesContent":["import type { UniversalTokensConfig } from '@yahoo/uds-config';\nimport {\n AVATAR_SIZE_PREFIX,\n BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX,\n BACKGROUND_BLUR_RADIUS_PREFIX,\n BACKGROUND_COLOR_PREFIX,\n BORDER_RADIUS_PREFIX,\n BORDER_WIDTH_PREFIX,\n DROP_SHADOW_PREFIX,\n getShadowLayerValue,\n ICON_SIZE_PREFIX,\n INSET_SHADOW_PREFIX,\n LINE_COLOR_PREFIX,\n OUTLINE_PREFIX,\n SPECTRUM_COLOR_PREFIX,\n UDS_PREFIX,\n} from '@yahoo/uds-css-tokens';\nimport { alwaysPalette } from '@yahoo/uds-palette';\nimport type {\n ColorMode,\n ColorsConfig,\n ElevationLevel,\n ElevationPreset,\n FocusRingColor,\n FocusRingConfig,\n Hue,\n HueStep,\n OpacityStep,\n PaletteConfig,\n PaletteType,\n ScaleMode,\n} from '@yahoo/uds-types';\n\nimport { entries } from './entries';\nimport { mapValues } from './mapValues';\nimport { parseOpacityStep } from './opacity';\n\n/** Converts a SpectrumValueEntry to a space-separated RGB string for CSS variables. */\nfunction spectrumValueToRgbString(value: { rgb: { r: number; g: number; b: number } }): string {\n const { r, g, b } = value.rgb;\n return `${r} ${g} ${b}`;\n}\n\nfunction shouldIncludeOpacity(opacity: OpacityStep | undefined): boolean {\n if (!opacity) {\n return false;\n }\n\n const parsedOpacity = parseInt(opacity, 10);\n return !isNaN(parsedOpacity) && parsedOpacity !== 100;\n}\n\ntype ColorModeElevationPresets = Partial<Record<ElevationLevel, ElevationPreset>>;\n\nfunction resolveFocusRingColor(color: FocusRingColor): string {\n switch (color.type) {\n case 'spectrum':\n return `rgb(var(--${SPECTRUM_COLOR_PREFIX}-${color.value.hue}-${color.value.step}))`;\n case 'line':\n return `rgb(var(--${LINE_COLOR_PREFIX}-${color.value}))`;\n case 'always':\n return alwaysPalette[color.value as keyof typeof alwaysPalette];\n default:\n return `rgb(var(--${SPECTRUM_COLOR_PREFIX}-gray-15))`;\n }\n}\n\nfunction transformColors(\n colors: ColorsConfig,\n elevationPresets: ColorModeElevationPresets,\n focusRingConfig?: FocusRingConfig,\n) {\n const { palette, spectrum } = colors;\n const rootVars: Record<string, string> = {};\n const tailwindConfig = {\n spectrum: {} as Record<Hue, Record<HueStep, string>>,\n palette: {} as {\n [key in PaletteType]: Record<keyof PaletteConfig[key], string>;\n },\n };\n\n for (const [hue, hueSteps] of entries(spectrum)) {\n for (const [hueStep, value] of entries(hueSteps)) {\n const name = `${hue}-${hueStep}`;\n const varKey = `--${SPECTRUM_COLOR_PREFIX}-${name}`;\n if (!tailwindConfig.spectrum[hue]) {\n tailwindConfig.spectrum[hue] = {} as Record<HueStep, string>;\n }\n tailwindConfig.spectrum[hue][hueStep] = `rgb(var(${varKey}))`;\n rootVars[varKey] = spectrumValueToRgbString(value);\n }\n }\n\n entries(palette).forEach(([paletteType, paletteConfig]) => {\n for (const [paletteKey, { hue, step, opacity }] of Object.entries(paletteConfig)) {\n if (!(paletteType in tailwindConfig.palette)) {\n // @ts-expect-error we fill this object later\n tailwindConfig.palette[paletteType] = {};\n }\n const name = `--${UDS_PREFIX}-${paletteType}-color-${paletteKey}`;\n rootVars[name] = `var(--${SPECTRUM_COLOR_PREFIX}-${hue}-${step})`;\n const opacityValue = opacity !== undefined ? parseOpacityStep(opacity) : undefined;\n // @ts-expect-error this is fine\n tailwindConfig.palette[paletteType][paletteKey] = shouldIncludeOpacity(opacityValue)\n ? `rgb(var(${name}) / ${opacityValue}%)`\n : `rgb(var(${name}))`;\n }\n });\n\n // Elevation levels\n entries(elevationPresets).forEach(([level, elevationPreset]) => {\n if (elevationPreset) {\n entries(elevationPreset).forEach(([key]) => {\n // background color\n if (key === 'finalBackgroundValue') {\n const { r, g, b, a } = elevationPreset[key];\n const alpha = parseInt(a) / 100;\n const name = `--${BACKGROUND_COLOR_PREFIX}-elevation-${level}`;\n rootVars[name] = `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n // border color\n if (key === 'borderColor') {\n const name = `--${LINE_COLOR_PREFIX}-elevation-${level}`;\n\n switch (elevationPreset[key].type) {\n case 'always':\n rootVars[name] = alwaysPalette[elevationPreset[key].value];\n break;\n case 'spectrum':\n rootVars[name] =\n `rgb(var(--${SPECTRUM_COLOR_PREFIX}-${elevationPreset[key].value.hue}-${elevationPreset[key].value.step}))`;\n break;\n case 'line':\n rootVars[name] = `rgb(var(--${LINE_COLOR_PREFIX}-${elevationPreset[key].value}))`;\n break;\n }\n }\n\n // border width\n if (key === 'borderWidth') {\n const name = `--${BORDER_WIDTH_PREFIX}-elevation-${level}`;\n rootVars[name] = `var(--${BORDER_WIDTH_PREFIX}-${elevationPreset[key]})`;\n }\n\n // drop shadow\n if (key === 'dropShadow') {\n const name = `--${DROP_SHADOW_PREFIX}-elevation-${level}`;\n const configValue = elevationPreset[key];\n\n rootVars[name] = Array.isArray(configValue)\n ? configValue\n .map((preset, index) =>\n getShadowLayerValue({\n preset,\n prefix: index > 0 ? `${index + 1}` : undefined,\n shadowType: 'drop',\n }),\n )\n .join(', ')\n : `var(--${DROP_SHADOW_PREFIX}-${elevationPreset[key]})`;\n }\n\n // inset shadow\n if (key === 'insetShadow') {\n const name = `--${INSET_SHADOW_PREFIX}-elevation-${level}`;\n const configValue = elevationPreset[key];\n\n rootVars[name] = Array.isArray(configValue)\n ? configValue\n .map((preset, index) =>\n getShadowLayerValue({\n preset,\n prefix: index > 0 ? `${index + 1}` : undefined,\n shadowType: 'inset',\n }),\n )\n .join(', ')\n : `var(--${INSET_SHADOW_PREFIX}-${elevationPreset[key]})`;\n }\n\n // background blur radius\n if (key === 'backgroundBlurRadius') {\n const name = `--${BACKGROUND_BLUR_RADIUS_PREFIX}-elevation-${level}`;\n rootVars[name] = `blur(${elevationPreset[key]}px)`;\n }\n\n // background blur fallback value\n if (key === 'fallbackBlurredBackgroundValue') {\n const { r, g, b } = elevationPreset[key];\n const name = `--${BACKGROUND_BLUR_FALLBACK_COLOR_PREFIX}-elevation-${level}`;\n rootVars[name] = `rgb(${r}, ${g}, ${b})`;\n }\n });\n }\n });\n\n rootVars[`--${OUTLINE_PREFIX}-offset`] = focusRingConfig ? `${focusRingConfig.offset}px` : '2px';\n rootVars[`--${OUTLINE_PREFIX}-width`] = focusRingConfig ? `${focusRingConfig.width}px` : '2px';\n rootVars[`--${OUTLINE_PREFIX}-style`] = 'solid';\n rootVars[`--${OUTLINE_PREFIX}-color`] = focusRingConfig\n ? resolveFocusRingColor(focusRingConfig.color)\n : `rgb(var(--${SPECTRUM_COLOR_PREFIX}-gray-15))`;\n\n return {\n _vars: rootVars,\n _raw: colors,\n tailwindConfig,\n };\n}\n\nfunction transformNumericToPx<T extends Record<string, number>>(prefix: string, config: T) {\n if (!config) {\n return {\n _vars: {} as Record<string, string>,\n _raw: {} as Record<string, number>,\n tailwindConfig: {} as Record<string, string>,\n };\n }\n const rootVars: Record<string, string> = {};\n const tailwindConfig = {} as Record<string, string>;\n for (const [variant, value] of entries(config)) {\n const rootVarKey = `--${prefix}-${variant}`;\n const rootVarValue = `${value}px`;\n rootVars[rootVarKey] = rootVarValue;\n tailwindConfig[variant] = `var(${rootVarKey})`;\n }\n return {\n _vars: rootVars,\n _raw: config,\n tailwindConfig,\n };\n}\n\ntype WebTokens = Omit<UniversalTokensConfig, 'colorMode' | 'scaleMode' | 'fontFamily'> & {\n colorMode: Record<ColorMode, ReturnType<typeof transformColors>>;\n scaleMode: Record<\n ScaleMode,\n {\n borderRadius: ReturnType<typeof transformNumericToPx>;\n borderWidth: ReturnType<typeof transformNumericToPx>;\n avatarSizes: ReturnType<typeof transformNumericToPx>;\n iconSizes: ReturnType<typeof transformNumericToPx>;\n }\n >;\n};\n\nfunction getElevationPresetsForColorMode(\n colorMode: ColorMode,\n config: UniversalTokensConfig,\n): ColorModeElevationPresets {\n if (!config.elevation) {\n return {};\n }\n\n const result: ColorModeElevationPresets = {};\n\n entries(config.elevation).forEach(([level, levelPreset]) => {\n result[level] = levelPreset[colorMode];\n });\n\n return result;\n}\n\nexport function parseTokens(config: UniversalTokensConfig): WebTokens {\n const { colorMode, scaleMode } = config;\n\n return {\n ...config,\n colorMode: {\n light: transformColors(\n colorMode.light,\n getElevationPresetsForColorMode('light', config),\n config.focusRing?.light,\n ),\n dark: transformColors(\n colorMode.dark,\n getElevationPresetsForColorMode('dark', config),\n config.focusRing?.dark,\n ),\n },\n scaleMode: mapValues(scaleMode, ({ borderRadius, borderWidth, avatarSizes, iconSizes }) => {\n return {\n borderRadius: transformNumericToPx(BORDER_RADIUS_PREFIX, borderRadius),\n borderWidth: transformNumericToPx(BORDER_WIDTH_PREFIX, borderWidth),\n avatarSizes: transformNumericToPx(AVATAR_SIZE_PREFIX, avatarSizes),\n iconSizes: transformNumericToPx(ICON_SIZE_PREFIX, iconSizes),\n };\n }),\n };\n}\n\nexport { type WebTokens };\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postcssPreserveVars.js","names":[],"sources":["../../src/utils/postcssPreserveVars.ts"],"sourcesContent":["import type { Plugin } from 'postcss';\n\ninterface PreserveVarsOptions {\n /** Variable name patterns to preserve (regex or string prefix) */\n preserve?: (string | RegExp)[];\n}\n\nconst PRESERVE_SELECTOR = '._uds-preserve-vars';\n\n/**\n * PostCSS plugin to preserve CSS variables from being pruned.\n *\n * Runs BEFORE postcss-prune-var to inject fake usages for preserved variables,\n * preventing them from being removed.\n *\n * @example\n * ```ts\n * postcss([\n * preserveVars({ preserve: ['--uds-motion-'] }),\n * pruneVar(),\n * preserveVarsCleanup(),\n * ])\n * ```\n */\nfunction preserveVars(options: PreserveVarsOptions = {}): Plugin {\n const { preserve = [] } = options;\n\n return {\n postcssPlugin: 'postcss-preserve-vars',\n Once(root) {\n if (preserve.length === 0) {\n return;\n }\n\n // Collect all CSS variable declarations\n const declaredVars = new Set<string>();\n\n root.walkDecls((decl) => {\n if (decl.prop.startsWith('--')) {\n declaredVars.add(decl.prop);\n }\n });\n\n // Find variables that match preserve patterns\n const varsToPreserve: string[] = [];\n\n for (const varName of declaredVars) {\n for (const pattern of preserve) {\n const matches =\n pattern instanceof RegExp ? pattern.test(varName) : varName.startsWith(pattern);\n\n if (matches) {\n varsToPreserve.push(varName);\n break;\n }\n }\n }\n\n if (varsToPreserve.length === 0) {\n return;\n }\n\n // Add a temporary rule that \"uses\" all preserved variables\n // This prevents postcss-prune-var from removing them\n const varUsages = varsToPreserve.map((v) => `var(${v})`).join(' ');\n\n root.append({\n selector: PRESERVE_SELECTOR,\n nodes: [{ prop: 'content', value: `\"${varUsages}\"` }],\n });\n },\n };\n}\n\npreserveVars.postcss = true;\n\n/**\n * PostCSS plugin to remove the temporary preserve rule after pruning.\n * Run this AFTER postcss-prune-var.\n */\nfunction preserveVarsCleanup(): Plugin {\n return {\n postcssPlugin: 'postcss-preserve-vars-cleanup',\n Once(root) {\n root.walkRules((rule) => {\n if (rule.selector === PRESERVE_SELECTOR) {\n rule.remove();\n }\n });\n },\n };\n}\n\npreserveVarsCleanup.postcss = true;\n\nexport { preserveVars, preserveVarsCleanup };\nexport type { PreserveVarsOptions };\n"],"mappings":";;AAOA,MAAM,oBAAoB;;;;;;;;;;;;;;;;AAiB1B,SAAS,aAAa,UAA+B,EAAE,EAAU;CAC/D,MAAM,EAAE,WAAW,EAAE,KAAK;CAE1B,OAAO;EACL,eAAe;EACf,KAAK,MAAM;GACT,IAAI,SAAS,WAAW,GACtB;GAIF,MAAM,+BAAe,IAAI,KAAa;GAEtC,KAAK,WAAW,SAAS;IACvB,IAAI,KAAK,KAAK,WAAW,KAAK,EAC5B,aAAa,IAAI,KAAK,KAAK;KAE7B;GAGF,MAAM,iBAA2B,EAAE;GAEnC,KAAK,MAAM,WAAW,cACpB,KAAK,MAAM,WAAW,UAIpB,IAFE,mBAAmB,SAAS,QAAQ,KAAK,QAAQ,GAAG,QAAQ,WAAW,QAAQ,EAEpE;IACX,eAAe,KAAK,QAAQ;IAC5B;;GAKN,IAAI,eAAe,WAAW,GAC5B;GAKF,MAAM,YAAY,eAAe,KAAK,MAAM,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI;GAElE,KAAK,OAAO;IACV,UAAU;IACV,OAAO,CAAC;KAAE,MAAM;KAAW,OAAO,IAAI,UAAU;KAAI,CAAC;IACtD,CAAC;;EAEL;;AAGH,aAAa,UAAU;;;;;AAMvB,SAAS,sBAA8B;CACrC,OAAO;EACL,eAAe;EACf,KAAK,MAAM;GACT,KAAK,WAAW,SAAS;IACvB,IAAI,KAAK,aAAa,mBACpB,KAAK,QAAQ;KAEf;;EAEL;;AAGH,oBAAoB,UAAU"}
|