@multiplatform.one/theme 7.83.1 → 7.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/audit/constraintAudit.cjs +567 -0
- package/dist/cjs/audit/constraintAudit.native.js +948 -0
- package/dist/cjs/audit/constraintAudit.native.js.map +1 -0
- package/dist/cjs/audit/designTokens.cjs +53 -0
- package/dist/cjs/audit/designTokens.native.js +80 -0
- package/dist/cjs/audit/designTokens.native.js.map +1 -0
- package/dist/cjs/audit/diffReport.cjs +255 -0
- package/dist/cjs/audit/diffReport.native.js +519 -0
- package/dist/cjs/audit/diffReport.native.js.map +1 -0
- package/dist/cjs/audit/index.cjs +41 -0
- package/dist/cjs/audit/index.native.js +44 -0
- package/dist/cjs/audit/index.native.js.map +1 -0
- package/dist/cjs/audit/themeMatrix.cjs +924 -0
- package/dist/cjs/audit/themeMatrix.native.js +1552 -0
- package/dist/cjs/audit/themeMatrix.native.js.map +1 -0
- package/dist/cjs/dates.cjs +261 -0
- package/dist/cjs/dates.native.js +289 -0
- package/dist/cjs/dates.native.js.map +1 -0
- package/dist/cjs/devWarn.cjs +163 -0
- package/dist/cjs/devWarn.native.js +191 -0
- package/dist/cjs/devWarn.native.js.map +1 -0
- package/dist/cjs/expo.cjs +89 -0
- package/dist/cjs/expo.native.js +97 -0
- package/dist/cjs/expo.native.js.map +1 -0
- package/dist/cjs/figma/figmaTokens.cjs +350 -0
- package/dist/cjs/figma/figmaTokens.native.js +637 -0
- package/dist/cjs/figma/figmaTokens.native.js.map +1 -0
- package/dist/cjs/font.cjs +65 -0
- package/dist/cjs/font.native.js +74 -0
- package/dist/cjs/font.native.js.map +1 -0
- package/dist/cjs/fonts/createFontLoader.cjs +32 -0
- package/dist/cjs/fonts/createFontLoader.native.js +70 -0
- package/dist/cjs/fonts/createFontLoader.native.js.map +1 -0
- package/dist/cjs/fonts/index.cjs +22 -0
- package/dist/cjs/fonts/index.native.js +25 -0
- package/dist/cjs/fonts/index.native.js.map +1 -0
- package/dist/cjs/fonts/interFaces.cjs +38 -0
- package/dist/cjs/fonts/interFaces.native.js +41 -0
- package/dist/cjs/fonts/interFaces.native.js.map +1 -0
- package/dist/cjs/fonts/types.cjs +18 -0
- package/dist/cjs/fonts/types.native.js +21 -0
- package/dist/cjs/fonts/types.native.js.map +1 -0
- package/dist/cjs/index.cjs +39 -0
- package/dist/cjs/index.native.js +42 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/keyboardFocusRing.cjs +111 -0
- package/dist/cjs/keyboardFocusRing.native.js +116 -0
- package/dist/cjs/keyboardFocusRing.native.js.map +1 -0
- package/dist/cjs/menuRow.cjs +80 -0
- package/dist/cjs/menuRow.native.js +86 -0
- package/dist/cjs/menuRow.native.js.map +1 -0
- package/dist/cjs/numbers.cjs +161 -0
- package/dist/cjs/numbers.native.js +173 -0
- package/dist/cjs/numbers.native.js.map +1 -0
- package/dist/cjs/theme/FontKnobStyles.cjs +161 -0
- package/dist/cjs/theme/FontKnobStyles.native.js +41 -0
- package/dist/cjs/theme/FontKnobStyles.native.js.map +1 -0
- package/dist/cjs/theme/Heading.cjs +174 -0
- package/dist/cjs/theme/Heading.native.js +186 -0
- package/dist/cjs/theme/Heading.native.js.map +1 -0
- package/dist/cjs/theme/IconSlot.cjs +67 -0
- package/dist/cjs/theme/IconSlot.native.js +78 -0
- package/dist/cjs/theme/IconSlot.native.js.map +1 -0
- package/dist/cjs/theme/Intent.cjs +44 -0
- package/dist/cjs/theme/Intent.native.js +48 -0
- package/dist/cjs/theme/Intent.native.js.map +1 -0
- package/dist/cjs/theme/Preset.cjs +150 -0
- package/dist/cjs/theme/Preset.native.js +156 -0
- package/dist/cjs/theme/Preset.native.js.map +1 -0
- package/dist/cjs/theme/PresetContext.cjs +38 -0
- package/dist/cjs/theme/PresetContext.native.js +42 -0
- package/dist/cjs/theme/PresetContext.native.js.map +1 -0
- package/dist/cjs/theme/Surface.cjs +115 -0
- package/dist/cjs/theme/Surface.native.js +126 -0
- package/dist/cjs/theme/Surface.native.js.map +1 -0
- package/dist/cjs/theme/Text.cjs +147 -0
- package/dist/cjs/theme/Text.native.js +155 -0
- package/dist/cjs/theme/Text.native.js.map +1 -0
- package/dist/cjs/theme/Tint.cjs +55 -0
- package/dist/cjs/theme/Tint.native.js +59 -0
- package/dist/cjs/theme/Tint.native.js.map +1 -0
- package/dist/cjs/theme/activateThemeConfig.cjs +42 -0
- package/dist/cjs/theme/activateThemeConfig.native.js +45 -0
- package/dist/cjs/theme/activateThemeConfig.native.js.map +1 -0
- package/dist/cjs/theme/animations/css.cjs +36 -0
- package/dist/cjs/theme/animations/css.native.js +39 -0
- package/dist/cjs/theme/animations/css.native.js.map +1 -0
- package/dist/cjs/theme/animations/index.cjs +20 -0
- package/dist/cjs/theme/animations/index.native.js +23 -0
- package/dist/cjs/theme/animations/index.native.js.map +1 -0
- package/dist/cjs/theme/animations/reactNative.cjs +158 -0
- package/dist/cjs/theme/animations/reactNative.native.js +161 -0
- package/dist/cjs/theme/animations/reactNative.native.js.map +1 -0
- package/dist/cjs/theme/chartPalette.cjs +229 -0
- package/dist/cjs/theme/chartPalette.native.js +297 -0
- package/dist/cjs/theme/chartPalette.native.js.map +1 -0
- package/dist/cjs/theme/colorRules.cjs +323 -0
- package/dist/cjs/theme/colorRules.native.js +359 -0
- package/dist/cjs/theme/colorRules.native.js.map +1 -0
- package/dist/cjs/theme/controlTiers.cjs +67 -0
- package/dist/cjs/theme/controlTiers.native.js +72 -0
- package/dist/cjs/theme/controlTiers.native.js.map +1 -0
- package/dist/cjs/theme/cookies.cjs +183 -0
- package/dist/cjs/theme/cookies.native.js +309 -0
- package/dist/cjs/theme/cookies.native.js.map +1 -0
- package/dist/cjs/theme/cornerSmoothing.cjs +111 -0
- package/dist/cjs/theme/cornerSmoothing.native.js +71 -0
- package/dist/cjs/theme/cornerSmoothing.native.js.map +1 -0
- package/dist/cjs/theme/createDefaultThemeConfig.cjs +130 -0
- package/dist/cjs/theme/createDefaultThemeConfig.native.js +176 -0
- package/dist/cjs/theme/createDefaultThemeConfig.native.js.map +1 -0
- package/dist/cjs/theme/createThemes.cjs +737 -0
- package/dist/cjs/theme/createThemes.native.js +1183 -0
- package/dist/cjs/theme/createThemes.native.js.map +1 -0
- package/dist/cjs/theme/dedupeInherited.cjs +83 -0
- package/dist/cjs/theme/dedupeInherited.native.js +194 -0
- package/dist/cjs/theme/dedupeInherited.native.js.map +1 -0
- package/dist/cjs/theme/defaults/accent.cjs +32 -0
- package/dist/cjs/theme/defaults/accent.native.js +35 -0
- package/dist/cjs/theme/defaults/accent.native.js.map +1 -0
- package/dist/cjs/theme/defaults/base.cjs +48 -0
- package/dist/cjs/theme/defaults/base.native.js +51 -0
- package/dist/cjs/theme/defaults/base.native.js.map +1 -0
- package/dist/cjs/theme/defaults/builderOptions.cjs +192 -0
- package/dist/cjs/theme/defaults/builderOptions.native.js +263 -0
- package/dist/cjs/theme/defaults/builderOptions.native.js.map +1 -0
- package/dist/cjs/theme/defaults/categoryFonts.cjs +50 -0
- package/dist/cjs/theme/defaults/categoryFonts.native.js +53 -0
- package/dist/cjs/theme/defaults/categoryFonts.native.js.map +1 -0
- package/dist/cjs/theme/defaults/fonts.cjs +288 -0
- package/dist/cjs/theme/defaults/fonts.native.js +380 -0
- package/dist/cjs/theme/defaults/fonts.native.js.map +1 -0
- package/dist/cjs/theme/defaults/house.cjs +39 -0
- package/dist/cjs/theme/defaults/house.native.js +46 -0
- package/dist/cjs/theme/defaults/house.native.js.map +1 -0
- package/dist/cjs/theme/defaults/index.cjs +25 -0
- package/dist/cjs/theme/defaults/index.native.js +28 -0
- package/dist/cjs/theme/defaults/index.native.js.map +1 -0
- package/dist/cjs/theme/devtools/ColorLineVisualizer.cjs +243 -0
- package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js +269 -0
- package/dist/cjs/theme/devtools/ColorLineVisualizer.native.js.map +1 -0
- package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.cjs +1350 -0
- package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.native.js +1814 -0
- package/dist/cjs/theme/devtools/ThemeDevtoolsPanel.native.js.map +1 -0
- package/dist/cjs/theme/devtools/animationOptions.cjs +36 -0
- package/dist/cjs/theme/devtools/animationOptions.native.js +46 -0
- package/dist/cjs/theme/devtools/animationOptions.native.js.map +1 -0
- package/dist/cjs/theme/devtools/buildSnapshot.cjs +92 -0
- package/dist/cjs/theme/devtools/buildSnapshot.native.js +174 -0
- package/dist/cjs/theme/devtools/buildSnapshot.native.js.map +1 -0
- package/dist/cjs/theme/devtools/knobIcons.cjs +498 -0
- package/dist/cjs/theme/devtools/knobIcons.native.js +520 -0
- package/dist/cjs/theme/devtools/knobIcons.native.js.map +1 -0
- package/dist/cjs/theme/devtools/vizConstants.cjs +54 -0
- package/dist/cjs/theme/devtools/vizConstants.native.js +57 -0
- package/dist/cjs/theme/devtools/vizConstants.native.js.map +1 -0
- package/dist/cjs/theme/dynamicType.cjs +52 -0
- package/dist/cjs/theme/dynamicType.native.js +55 -0
- package/dist/cjs/theme/dynamicType.native.js.map +1 -0
- package/dist/cjs/theme/fieldFocus.cjs +56 -0
- package/dist/cjs/theme/fieldFocus.native.js +62 -0
- package/dist/cjs/theme/fieldFocus.native.js.map +1 -0
- package/dist/cjs/theme/fillContrast.cjs +130 -0
- package/dist/cjs/theme/fillContrast.native.js +163 -0
- package/dist/cjs/theme/fillContrast.native.js.map +1 -0
- package/dist/cjs/theme/focusState.cjs +120 -0
- package/dist/cjs/theme/focusState.native.js +123 -0
- package/dist/cjs/theme/focusState.native.js.map +1 -0
- package/dist/cjs/theme/fontCategoryMetrics.cjs +91 -0
- package/dist/cjs/theme/fontCategoryMetrics.native.js +94 -0
- package/dist/cjs/theme/fontCategoryMetrics.native.js.map +1 -0
- package/dist/cjs/theme/fontCategoryStacks.cjs +40 -0
- package/dist/cjs/theme/fontCategoryStacks.native.js +43 -0
- package/dist/cjs/theme/fontCategoryStacks.native.js.map +1 -0
- package/dist/cjs/theme/glyphPaint.cjs +55 -0
- package/dist/cjs/theme/glyphPaint.native.js +81 -0
- package/dist/cjs/theme/glyphPaint.native.js.map +1 -0
- package/dist/cjs/theme/glyphTint.cjs +90 -0
- package/dist/cjs/theme/glyphTint.native.js +96 -0
- package/dist/cjs/theme/glyphTint.native.js.map +1 -0
- package/dist/cjs/theme/groupGeometry.cjs +67 -0
- package/dist/cjs/theme/groupGeometry.native.js +72 -0
- package/dist/cjs/theme/groupGeometry.native.js.map +1 -0
- package/dist/cjs/theme/hairline.cjs +119 -0
- package/dist/cjs/theme/hairline.native.js +73 -0
- package/dist/cjs/theme/hairline.native.js.map +1 -0
- package/dist/cjs/theme/index.cjs +95 -0
- package/dist/cjs/theme/index.native.js +98 -0
- package/dist/cjs/theme/index.native.js.map +1 -0
- package/dist/cjs/theme/intents.cjs +62 -0
- package/dist/cjs/theme/intents.native.js +65 -0
- package/dist/cjs/theme/intents.native.js.map +1 -0
- package/dist/cjs/theme/knobs.cjs +172 -0
- package/dist/cjs/theme/knobs.native.js +175 -0
- package/dist/cjs/theme/knobs.native.js.map +1 -0
- package/dist/cjs/theme/layoutTokens.cjs +172 -0
- package/dist/cjs/theme/layoutTokens.native.js +222 -0
- package/dist/cjs/theme/layoutTokens.native.js.map +1 -0
- package/dist/cjs/theme/listRows.cjs +44 -0
- package/dist/cjs/theme/listRows.native.js +49 -0
- package/dist/cjs/theme/listRows.native.js.map +1 -0
- package/dist/cjs/theme/mergedTokens.cjs +39 -0
- package/dist/cjs/theme/mergedTokens.native.js +61 -0
- package/dist/cjs/theme/mergedTokens.native.js.map +1 -0
- package/dist/cjs/theme/motion.cjs +72 -0
- package/dist/cjs/theme/motion.native.js +82 -0
- package/dist/cjs/theme/motion.native.js.map +1 -0
- package/dist/cjs/theme/motionStops.cjs +28 -0
- package/dist/cjs/theme/motionStops.native.js +31 -0
- package/dist/cjs/theme/motionStops.native.js.map +1 -0
- package/dist/cjs/theme/motionTiming.cjs +79 -0
- package/dist/cjs/theme/motionTiming.native.js +85 -0
- package/dist/cjs/theme/motionTiming.native.js.map +1 -0
- package/dist/cjs/theme/nativeFontFamily.cjs +30 -0
- package/dist/cjs/theme/nativeFontFamily.native.js +37 -0
- package/dist/cjs/theme/nativeFontFamily.native.js.map +1 -0
- package/dist/cjs/theme/nativeMonoFamily.cjs +44 -0
- package/dist/cjs/theme/nativeMonoFamily.native.js +47 -0
- package/dist/cjs/theme/nativeMonoFamily.native.js.map +1 -0
- package/dist/cjs/theme/overlaySurfaces.cjs +327 -0
- package/dist/cjs/theme/overlaySurfaces.native.js +351 -0
- package/dist/cjs/theme/overlaySurfaces.native.js.map +1 -0
- package/dist/cjs/theme/pageGutter.cjs +85 -0
- package/dist/cjs/theme/pageGutter.native.js +92 -0
- package/dist/cjs/theme/pageGutter.native.js.map +1 -0
- package/dist/cjs/theme/preset.types.cjs +18 -0
- package/dist/cjs/theme/preset.types.native.js +21 -0
- package/dist/cjs/theme/preset.types.native.js.map +1 -0
- package/dist/cjs/theme/presetPreview.cjs +42 -0
- package/dist/cjs/theme/presetPreview.native.js +46 -0
- package/dist/cjs/theme/presetPreview.native.js.map +1 -0
- package/dist/cjs/theme/presetStore.cjs +288 -0
- package/dist/cjs/theme/presetStore.native.js +344 -0
- package/dist/cjs/theme/presetStore.native.js.map +1 -0
- package/dist/cjs/theme/presetUserSync.cjs +70 -0
- package/dist/cjs/theme/presetUserSync.native.js +75 -0
- package/dist/cjs/theme/presetUserSync.native.js.map +1 -0
- package/dist/cjs/theme/presets.cjs +128 -0
- package/dist/cjs/theme/presets.native.js +131 -0
- package/dist/cjs/theme/presets.native.js.map +1 -0
- package/dist/cjs/theme/radiusClass.cjs +128 -0
- package/dist/cjs/theme/radiusClass.native.js +137 -0
- package/dist/cjs/theme/radiusClass.native.js.map +1 -0
- package/dist/cjs/theme/radiusClassTable.generated.cjs +164 -0
- package/dist/cjs/theme/radiusClassTable.generated.native.js +167 -0
- package/dist/cjs/theme/radiusClassTable.generated.native.js.map +1 -0
- package/dist/cjs/theme/ramps.cjs +75 -0
- package/dist/cjs/theme/ramps.native.js +79 -0
- package/dist/cjs/theme/ramps.native.js.map +1 -0
- package/dist/cjs/theme/readableColor.cjs +284 -0
- package/dist/cjs/theme/readableColor.native.js +393 -0
- package/dist/cjs/theme/readableColor.native.js.map +1 -0
- package/dist/cjs/theme/recipeInputs.cjs +352 -0
- package/dist/cjs/theme/recipeInputs.native.js +470 -0
- package/dist/cjs/theme/recipeInputs.native.js.map +1 -0
- package/dist/cjs/theme/recipes.cjs +18 -0
- package/dist/cjs/theme/recipes.native.js +21 -0
- package/dist/cjs/theme/recipes.native.js.map +1 -0
- package/dist/cjs/theme/resolveKnobs.cjs +866 -0
- package/dist/cjs/theme/resolveKnobs.native.js +884 -0
- package/dist/cjs/theme/resolveKnobs.native.js.map +1 -0
- package/dist/cjs/theme/scale/ScaleStyles.cjs +57 -0
- package/dist/cjs/theme/scale/ScaleStyles.native.js +41 -0
- package/dist/cjs/theme/scale/ScaleStyles.native.js.map +1 -0
- package/dist/cjs/theme/scale/activeScale.cjs +56 -0
- package/dist/cjs/theme/scale/activeScale.native.js +84 -0
- package/dist/cjs/theme/scale/activeScale.native.js.map +1 -0
- package/dist/cjs/theme/scale/deriveRecipeInputs.cjs +111 -0
- package/dist/cjs/theme/scale/deriveRecipeInputs.native.js +154 -0
- package/dist/cjs/theme/scale/deriveRecipeInputs.native.js.map +1 -0
- package/dist/cjs/theme/scale/generateScale.cjs +114 -0
- package/dist/cjs/theme/scale/generateScale.native.js +200 -0
- package/dist/cjs/theme/scale/generateScale.native.js.map +1 -0
- package/dist/cjs/theme/scale/index.cjs +78 -0
- package/dist/cjs/theme/scale/index.native.js +81 -0
- package/dist/cjs/theme/scale/index.native.js.map +1 -0
- package/dist/cjs/theme/scale/installScaleConfig.cjs +31 -0
- package/dist/cjs/theme/scale/installScaleConfig.native.js +65 -0
- package/dist/cjs/theme/scale/installScaleConfig.native.js.map +1 -0
- package/dist/cjs/theme/scale/scaleAttribute.cjs +39 -0
- package/dist/cjs/theme/scale/scaleAttribute.native.js +42 -0
- package/dist/cjs/theme/scale/scaleAttribute.native.js.map +1 -0
- package/dist/cjs/theme/scale/scaleCss.cjs +89 -0
- package/dist/cjs/theme/scale/scaleCss.native.js +201 -0
- package/dist/cjs/theme/scale/scaleCss.native.js.map +1 -0
- package/dist/cjs/theme/scale/scaleFonts.cjs +86 -0
- package/dist/cjs/theme/scale/scaleFonts.native.js +155 -0
- package/dist/cjs/theme/scale/scaleFonts.native.js.map +1 -0
- package/dist/cjs/theme/scale/scaleInputs.cjs +232 -0
- package/dist/cjs/theme/scale/scaleInputs.native.js +237 -0
- package/dist/cjs/theme/scale/scaleInputs.native.js.map +1 -0
- package/dist/cjs/theme/scale/themeScales.cjs +136 -0
- package/dist/cjs/theme/scale/themeScales.native.js +185 -0
- package/dist/cjs/theme/scale/themeScales.native.js.map +1 -0
- package/dist/cjs/theme/scale/useActiveScale.cjs +78 -0
- package/dist/cjs/theme/scale/useActiveScale.native.js +87 -0
- package/dist/cjs/theme/scale/useActiveScale.native.js.map +1 -0
- package/dist/cjs/theme/schemeStore.cjs +87 -0
- package/dist/cjs/theme/schemeStore.native.js +104 -0
- package/dist/cjs/theme/schemeStore.native.js.map +1 -0
- package/dist/cjs/theme/shared.cjs +125 -0
- package/dist/cjs/theme/shared.native.js +168 -0
- package/dist/cjs/theme/shared.native.js.map +1 -0
- package/dist/cjs/theme/sizeRecipes.cjs +176 -0
- package/dist/cjs/theme/sizeRecipes.native.js +251 -0
- package/dist/cjs/theme/sizeRecipes.native.js.map +1 -0
- package/dist/cjs/theme/subsetThemes.cjs +46 -0
- package/dist/cjs/theme/subsetThemes.native.js +76 -0
- package/dist/cjs/theme/subsetThemes.native.js.map +1 -0
- package/dist/cjs/theme/theme.cjs +189 -0
- package/dist/cjs/theme/theme.native.js +115 -0
- package/dist/cjs/theme/theme.native.js.map +1 -0
- package/dist/cjs/theme/themeValue.cjs +51 -0
- package/dist/cjs/theme/themeValue.native.js +73 -0
- package/dist/cjs/theme/themeValue.native.js.map +1 -0
- package/dist/cjs/theme/tileSizes.cjs +202 -0
- package/dist/cjs/theme/tileSizes.native.js +230 -0
- package/dist/cjs/theme/tileSizes.native.js.map +1 -0
- package/dist/cjs/theme/touchManipulation.cjs +33 -0
- package/dist/cjs/theme/touchManipulation.native.js +36 -0
- package/dist/cjs/theme/touchManipulation.native.js.map +1 -0
- package/dist/cjs/theme/transitionProps.cjs +50 -0
- package/dist/cjs/theme/transitionProps.native.js +81 -0
- package/dist/cjs/theme/transitionProps.native.js.map +1 -0
- package/dist/cjs/theme/useColorScale.cjs +47 -0
- package/dist/cjs/theme/useColorScale.native.js +33 -0
- package/dist/cjs/theme/useColorScale.native.js.map +1 -0
- package/dist/cjs/theme/usePresetSwitch.cjs +70 -0
- package/dist/cjs/theme/usePresetSwitch.native.js +50 -0
- package/dist/cjs/theme/usePresetSwitch.native.js.map +1 -0
- package/dist/cjs/theme/useResolvedKnobs.cjs +140 -0
- package/dist/cjs/theme/useResolvedKnobs.native.js +177 -0
- package/dist/cjs/theme/useResolvedKnobs.native.js.map +1 -0
- package/dist/cjs/theme/useSchemePreference.cjs +49 -0
- package/dist/cjs/theme/useSchemePreference.native.js +80 -0
- package/dist/cjs/theme/useSchemePreference.native.js.map +1 -0
- package/dist/cjs/theme/useTheme.cjs +152 -0
- package/dist/cjs/theme/useTheme.native.js +94 -0
- package/dist/cjs/theme/useTheme.native.js.map +1 -0
- package/dist/cjs/theme/useTouchSurface.cjs +33 -0
- package/dist/cjs/theme/useTouchSurface.native.js +36 -0
- package/dist/cjs/theme/useTouchSurface.native.js.map +1 -0
- package/dist/cjs/theme/v3TokenRoles.cjs +64 -0
- package/dist/cjs/theme/v3TokenRoles.native.js +67 -0
- package/dist/cjs/theme/v3TokenRoles.native.js.map +1 -0
- package/dist/esm/audit/constraintAudit.mjs +540 -0
- package/dist/esm/audit/constraintAudit.mjs.map +1 -0
- package/dist/esm/audit/constraintAudit.native.js +918 -0
- package/dist/esm/audit/constraintAudit.native.js.map +1 -0
- package/dist/esm/audit/designTokens.mjs +28 -0
- package/dist/esm/audit/designTokens.mjs.map +1 -0
- package/dist/esm/audit/designTokens.native.js +52 -0
- package/dist/esm/audit/designTokens.native.js.map +1 -0
- package/dist/esm/audit/diffReport.mjs +229 -0
- package/dist/esm/audit/diffReport.mjs.map +1 -0
- package/dist/esm/audit/diffReport.native.js +490 -0
- package/dist/esm/audit/diffReport.native.js.map +1 -0
- package/dist/esm/audit/index.mjs +5 -0
- package/dist/esm/audit/index.mjs.map +1 -0
- package/dist/esm/audit/index.native.js +5 -0
- package/dist/esm/audit/index.native.js.map +1 -0
- package/dist/esm/audit/themeMatrix.mjs +890 -0
- package/dist/esm/audit/themeMatrix.mjs.map +1 -0
- package/dist/esm/audit/themeMatrix.native.js +1515 -0
- package/dist/esm/audit/themeMatrix.native.js.map +1 -0
- package/dist/esm/dates.mjs +224 -0
- package/dist/esm/dates.mjs.map +1 -0
- package/dist/esm/dates.native.js +249 -0
- package/dist/esm/dates.native.js.map +1 -0
- package/dist/esm/devWarn.mjs +123 -0
- package/dist/esm/devWarn.mjs.map +1 -0
- package/dist/esm/devWarn.native.js +148 -0
- package/dist/esm/devWarn.native.js.map +1 -0
- package/dist/esm/expo.mjs +59 -0
- package/dist/esm/expo.mjs.map +1 -0
- package/dist/esm/expo.native.js +64 -0
- package/dist/esm/expo.native.js.map +1 -0
- package/dist/esm/figma/figmaTokens.mjs +322 -0
- package/dist/esm/figma/figmaTokens.mjs.map +1 -0
- package/dist/esm/figma/figmaTokens.native.js +606 -0
- package/dist/esm/figma/figmaTokens.native.js.map +1 -0
- package/dist/esm/font.mjs +40 -0
- package/dist/esm/font.mjs.map +1 -0
- package/dist/esm/font.native.js +46 -0
- package/dist/esm/font.native.js.map +1 -0
- package/dist/esm/fonts/createFontLoader.mjs +7 -0
- package/dist/esm/fonts/createFontLoader.mjs.map +1 -0
- package/dist/esm/fonts/createFontLoader.native.js +42 -0
- package/dist/esm/fonts/createFontLoader.native.js.map +1 -0
- package/dist/esm/fonts/index.mjs +4 -0
- package/dist/esm/fonts/index.mjs.map +1 -0
- package/dist/esm/fonts/index.native.js +4 -0
- package/dist/esm/fonts/index.native.js.map +1 -0
- package/dist/esm/fonts/interFaces.mjs +12 -0
- package/dist/esm/fonts/interFaces.mjs.map +1 -0
- package/dist/esm/fonts/interFaces.native.js +12 -0
- package/dist/esm/fonts/interFaces.native.js.map +1 -0
- package/dist/esm/fonts/types.mjs +2 -0
- package/dist/esm/fonts/types.mjs.map +1 -0
- package/dist/esm/fonts/types.native.js +2 -0
- package/dist/esm/fonts/types.native.js.map +1 -0
- package/dist/esm/index.mjs +11 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +11 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/keyboardFocusRing.mjs +81 -0
- package/dist/esm/keyboardFocusRing.mjs.map +1 -0
- package/dist/esm/keyboardFocusRing.native.js +83 -0
- package/dist/esm/keyboardFocusRing.native.js.map +1 -0
- package/dist/esm/menuRow.mjs +49 -0
- package/dist/esm/menuRow.mjs.map +1 -0
- package/dist/esm/menuRow.native.js +52 -0
- package/dist/esm/menuRow.native.js.map +1 -0
- package/dist/esm/numbers.mjs +132 -0
- package/dist/esm/numbers.mjs.map +1 -0
- package/dist/esm/numbers.native.js +141 -0
- package/dist/esm/numbers.native.js.map +1 -0
- package/dist/esm/theme/FontKnobStyles.mjs +131 -0
- package/dist/esm/theme/FontKnobStyles.mjs.map +1 -0
- package/dist/esm/theme/FontKnobStyles.native.js +11 -0
- package/dist/esm/theme/FontKnobStyles.native.js.map +1 -0
- package/dist/esm/theme/Heading.mjs +143 -0
- package/dist/esm/theme/Heading.mjs.map +1 -0
- package/dist/esm/theme/Heading.native.js +152 -0
- package/dist/esm/theme/Heading.native.js.map +1 -0
- package/dist/esm/theme/IconSlot.mjs +42 -0
- package/dist/esm/theme/IconSlot.mjs.map +1 -0
- package/dist/esm/theme/IconSlot.native.js +50 -0
- package/dist/esm/theme/IconSlot.native.js.map +1 -0
- package/dist/esm/theme/Intent.mjs +19 -0
- package/dist/esm/theme/Intent.mjs.map +1 -0
- package/dist/esm/theme/Intent.native.js +20 -0
- package/dist/esm/theme/Intent.native.js.map +1 -0
- package/dist/esm/theme/Preset.mjs +124 -0
- package/dist/esm/theme/Preset.mjs.map +1 -0
- package/dist/esm/theme/Preset.native.js +127 -0
- package/dist/esm/theme/Preset.native.js.map +1 -0
- package/dist/esm/theme/PresetContext.mjs +11 -0
- package/dist/esm/theme/PresetContext.mjs.map +1 -0
- package/dist/esm/theme/PresetContext.native.js +12 -0
- package/dist/esm/theme/PresetContext.native.js.map +1 -0
- package/dist/esm/theme/Surface.mjs +80 -0
- package/dist/esm/theme/Surface.mjs.map +1 -0
- package/dist/esm/theme/Surface.native.js +88 -0
- package/dist/esm/theme/Surface.native.js.map +1 -0
- package/dist/esm/theme/Text.mjs +119 -0
- package/dist/esm/theme/Text.mjs.map +1 -0
- package/dist/esm/theme/Text.native.js +124 -0
- package/dist/esm/theme/Text.native.js.map +1 -0
- package/dist/esm/theme/Tint.mjs +29 -0
- package/dist/esm/theme/Tint.mjs.map +1 -0
- package/dist/esm/theme/Tint.native.js +30 -0
- package/dist/esm/theme/Tint.native.js.map +1 -0
- package/dist/esm/theme/activateThemeConfig.mjs +17 -0
- package/dist/esm/theme/activateThemeConfig.mjs.map +1 -0
- package/dist/esm/theme/activateThemeConfig.native.js +17 -0
- package/dist/esm/theme/activateThemeConfig.native.js.map +1 -0
- package/dist/esm/theme/animations/css.mjs +7 -0
- package/dist/esm/theme/animations/css.mjs.map +1 -0
- package/dist/esm/theme/animations/css.native.js +7 -0
- package/dist/esm/theme/animations/css.native.js.map +1 -0
- package/dist/esm/theme/animations/index.mjs +2 -0
- package/dist/esm/theme/animations/index.mjs.map +1 -0
- package/dist/esm/theme/animations/index.native.js +2 -0
- package/dist/esm/theme/animations/index.native.js.map +1 -0
- package/dist/esm/theme/animations/reactNative.mjs +131 -0
- package/dist/esm/theme/animations/reactNative.mjs.map +1 -0
- package/dist/esm/theme/animations/reactNative.native.js +131 -0
- package/dist/esm/theme/animations/reactNative.native.js.map +1 -0
- package/dist/esm/theme/chartPalette.mjs +191 -0
- package/dist/esm/theme/chartPalette.mjs.map +1 -0
- package/dist/esm/theme/chartPalette.native.js +256 -0
- package/dist/esm/theme/chartPalette.native.js.map +1 -0
- package/dist/esm/theme/colorRules.mjs +273 -0
- package/dist/esm/theme/colorRules.mjs.map +1 -0
- package/dist/esm/theme/colorRules.native.js +306 -0
- package/dist/esm/theme/colorRules.native.js.map +1 -0
- package/dist/esm/theme/controlTiers.mjs +39 -0
- package/dist/esm/theme/controlTiers.mjs.map +1 -0
- package/dist/esm/theme/controlTiers.native.js +41 -0
- package/dist/esm/theme/controlTiers.native.js.map +1 -0
- package/dist/esm/theme/cookies.mjs +145 -0
- package/dist/esm/theme/cookies.mjs.map +1 -0
- package/dist/esm/theme/cookies.native.js +268 -0
- package/dist/esm/theme/cookies.native.js.map +1 -0
- package/dist/esm/theme/cornerSmoothing.mjs +71 -0
- package/dist/esm/theme/cornerSmoothing.mjs.map +1 -0
- package/dist/esm/theme/cornerSmoothing.native.js +28 -0
- package/dist/esm/theme/cornerSmoothing.native.js.map +1 -0
- package/dist/esm/theme/createDefaultThemeConfig.mjs +102 -0
- package/dist/esm/theme/createDefaultThemeConfig.mjs.map +1 -0
- package/dist/esm/theme/createDefaultThemeConfig.native.js +145 -0
- package/dist/esm/theme/createDefaultThemeConfig.native.js.map +1 -0
- package/dist/esm/theme/createThemes.mjs +697 -0
- package/dist/esm/theme/createThemes.mjs.map +1 -0
- package/dist/esm/theme/createThemes.native.js +1140 -0
- package/dist/esm/theme/createThemes.native.js.map +1 -0
- package/dist/esm/theme/dedupeInherited.mjs +55 -0
- package/dist/esm/theme/dedupeInherited.mjs.map +1 -0
- package/dist/esm/theme/dedupeInherited.native.js +163 -0
- package/dist/esm/theme/dedupeInherited.native.js.map +1 -0
- package/dist/esm/theme/defaults/accent.mjs +7 -0
- package/dist/esm/theme/defaults/accent.mjs.map +1 -0
- package/dist/esm/theme/defaults/accent.native.js +7 -0
- package/dist/esm/theme/defaults/accent.native.js.map +1 -0
- package/dist/esm/theme/defaults/base.mjs +23 -0
- package/dist/esm/theme/defaults/base.mjs.map +1 -0
- package/dist/esm/theme/defaults/base.native.js +23 -0
- package/dist/esm/theme/defaults/base.native.js.map +1 -0
- package/dist/esm/theme/defaults/builderOptions.mjs +165 -0
- package/dist/esm/theme/defaults/builderOptions.mjs.map +1 -0
- package/dist/esm/theme/defaults/builderOptions.native.js +233 -0
- package/dist/esm/theme/defaults/builderOptions.native.js.map +1 -0
- package/dist/esm/theme/defaults/categoryFonts.mjs +25 -0
- package/dist/esm/theme/defaults/categoryFonts.mjs.map +1 -0
- package/dist/esm/theme/defaults/categoryFonts.native.js +25 -0
- package/dist/esm/theme/defaults/categoryFonts.native.js.map +1 -0
- package/dist/esm/theme/defaults/fonts.mjs +227 -0
- package/dist/esm/theme/defaults/fonts.mjs.map +1 -0
- package/dist/esm/theme/defaults/fonts.native.js +316 -0
- package/dist/esm/theme/defaults/fonts.native.js.map +1 -0
- package/dist/esm/theme/defaults/house.mjs +13 -0
- package/dist/esm/theme/defaults/house.mjs.map +1 -0
- package/dist/esm/theme/defaults/house.native.js +17 -0
- package/dist/esm/theme/defaults/house.native.js.map +1 -0
- package/dist/esm/theme/defaults/index.mjs +7 -0
- package/dist/esm/theme/defaults/index.mjs.map +1 -0
- package/dist/esm/theme/defaults/index.native.js +7 -0
- package/dist/esm/theme/defaults/index.native.js.map +1 -0
- package/dist/esm/theme/devtools/ColorLineVisualizer.mjs +218 -0
- package/dist/esm/theme/devtools/ColorLineVisualizer.mjs.map +1 -0
- package/dist/esm/theme/devtools/ColorLineVisualizer.native.js +230 -0
- package/dist/esm/theme/devtools/ColorLineVisualizer.native.js.map +1 -0
- package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs +1325 -0
- package/dist/esm/theme/devtools/ThemeDevtoolsPanel.mjs.map +1 -0
- package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js +1786 -0
- package/dist/esm/theme/devtools/ThemeDevtoolsPanel.native.js.map +1 -0
- package/dist/esm/theme/devtools/animationOptions.mjs +11 -0
- package/dist/esm/theme/devtools/animationOptions.mjs.map +1 -0
- package/dist/esm/theme/devtools/animationOptions.native.js +18 -0
- package/dist/esm/theme/devtools/animationOptions.native.js.map +1 -0
- package/dist/esm/theme/devtools/buildSnapshot.mjs +67 -0
- package/dist/esm/theme/devtools/buildSnapshot.mjs.map +1 -0
- package/dist/esm/theme/devtools/buildSnapshot.native.js +146 -0
- package/dist/esm/theme/devtools/buildSnapshot.native.js.map +1 -0
- package/dist/esm/theme/devtools/knobIcons.mjs +456 -0
- package/dist/esm/theme/devtools/knobIcons.mjs.map +1 -0
- package/dist/esm/theme/devtools/knobIcons.native.js +464 -0
- package/dist/esm/theme/devtools/knobIcons.native.js.map +1 -0
- package/dist/esm/theme/devtools/vizConstants.mjs +26 -0
- package/dist/esm/theme/devtools/vizConstants.mjs.map +1 -0
- package/dist/esm/theme/devtools/vizConstants.native.js +26 -0
- package/dist/esm/theme/devtools/vizConstants.native.js.map +1 -0
- package/dist/esm/theme/dynamicType.mjs +24 -0
- package/dist/esm/theme/dynamicType.mjs.map +1 -0
- package/dist/esm/theme/dynamicType.native.js +24 -0
- package/dist/esm/theme/dynamicType.native.js.map +1 -0
- package/dist/esm/theme/fieldFocus.mjs +27 -0
- package/dist/esm/theme/fieldFocus.mjs.map +1 -0
- package/dist/esm/theme/fieldFocus.native.js +30 -0
- package/dist/esm/theme/fieldFocus.native.js.map +1 -0
- package/dist/esm/theme/fillContrast.mjs +98 -0
- package/dist/esm/theme/fillContrast.mjs.map +1 -0
- package/dist/esm/theme/fillContrast.native.js +128 -0
- package/dist/esm/theme/fillContrast.native.js.map +1 -0
- package/dist/esm/theme/focusState.mjs +81 -0
- package/dist/esm/theme/focusState.mjs.map +1 -0
- package/dist/esm/theme/focusState.native.js +81 -0
- package/dist/esm/theme/focusState.native.js.map +1 -0
- package/dist/esm/theme/fontCategoryMetrics.mjs +65 -0
- package/dist/esm/theme/fontCategoryMetrics.mjs.map +1 -0
- package/dist/esm/theme/fontCategoryMetrics.native.js +65 -0
- package/dist/esm/theme/fontCategoryMetrics.native.js.map +1 -0
- package/dist/esm/theme/fontCategoryStacks.mjs +15 -0
- package/dist/esm/theme/fontCategoryStacks.mjs.map +1 -0
- package/dist/esm/theme/fontCategoryStacks.native.js +15 -0
- package/dist/esm/theme/fontCategoryStacks.native.js.map +1 -0
- package/dist/esm/theme/glyphPaint.mjs +29 -0
- package/dist/esm/theme/glyphPaint.mjs.map +1 -0
- package/dist/esm/theme/glyphPaint.native.js +52 -0
- package/dist/esm/theme/glyphPaint.native.js.map +1 -0
- package/dist/esm/theme/glyphTint.mjs +60 -0
- package/dist/esm/theme/glyphTint.mjs.map +1 -0
- package/dist/esm/theme/glyphTint.native.js +63 -0
- package/dist/esm/theme/glyphTint.native.js.map +1 -0
- package/dist/esm/theme/groupGeometry.mjs +38 -0
- package/dist/esm/theme/groupGeometry.mjs.map +1 -0
- package/dist/esm/theme/groupGeometry.native.js +40 -0
- package/dist/esm/theme/groupGeometry.native.js.map +1 -0
- package/dist/esm/theme/hairline.mjs +89 -0
- package/dist/esm/theme/hairline.mjs.map +1 -0
- package/dist/esm/theme/hairline.native.js +41 -0
- package/dist/esm/theme/hairline.native.js.map +1 -0
- package/dist/esm/theme/index.mjs +66 -0
- package/dist/esm/theme/index.mjs.map +1 -0
- package/dist/esm/theme/index.native.js +66 -0
- package/dist/esm/theme/index.native.js.map +1 -0
- package/dist/esm/theme/intents.mjs +37 -0
- package/dist/esm/theme/intents.mjs.map +1 -0
- package/dist/esm/theme/intents.native.js +37 -0
- package/dist/esm/theme/intents.native.js.map +1 -0
- package/dist/esm/theme/knobs.mjs +125 -0
- package/dist/esm/theme/knobs.mjs.map +1 -0
- package/dist/esm/theme/knobs.native.js +125 -0
- package/dist/esm/theme/knobs.native.js.map +1 -0
- package/dist/esm/theme/layoutTokens.mjs +124 -0
- package/dist/esm/theme/layoutTokens.mjs.map +1 -0
- package/dist/esm/theme/layoutTokens.native.js +171 -0
- package/dist/esm/theme/layoutTokens.native.js.map +1 -0
- package/dist/esm/theme/listRows.mjs +17 -0
- package/dist/esm/theme/listRows.mjs.map +1 -0
- package/dist/esm/theme/listRows.native.js +19 -0
- package/dist/esm/theme/listRows.native.js.map +1 -0
- package/dist/esm/theme/mergedTokens.mjs +14 -0
- package/dist/esm/theme/mergedTokens.mjs.map +1 -0
- package/dist/esm/theme/mergedTokens.native.js +33 -0
- package/dist/esm/theme/mergedTokens.native.js.map +1 -0
- package/dist/esm/theme/motion.mjs +41 -0
- package/dist/esm/theme/motion.mjs.map +1 -0
- package/dist/esm/theme/motion.native.js +48 -0
- package/dist/esm/theme/motion.native.js.map +1 -0
- package/dist/esm/theme/motionStops.mjs +3 -0
- package/dist/esm/theme/motionStops.mjs.map +1 -0
- package/dist/esm/theme/motionStops.native.js +3 -0
- package/dist/esm/theme/motionStops.native.js.map +1 -0
- package/dist/esm/theme/motionTiming.mjs +48 -0
- package/dist/esm/theme/motionTiming.mjs.map +1 -0
- package/dist/esm/theme/motionTiming.native.js +51 -0
- package/dist/esm/theme/motionTiming.native.js.map +1 -0
- package/dist/esm/theme/nativeFontFamily.mjs +5 -0
- package/dist/esm/theme/nativeFontFamily.mjs.map +1 -0
- package/dist/esm/theme/nativeFontFamily.native.js +9 -0
- package/dist/esm/theme/nativeFontFamily.native.js.map +1 -0
- package/dist/esm/theme/nativeMonoFamily.mjs +18 -0
- package/dist/esm/theme/nativeMonoFamily.mjs.map +1 -0
- package/dist/esm/theme/nativeMonoFamily.native.js +18 -0
- package/dist/esm/theme/nativeMonoFamily.native.js.map +1 -0
- package/dist/esm/theme/overlaySurfaces.mjs +290 -0
- package/dist/esm/theme/overlaySurfaces.mjs.map +1 -0
- package/dist/esm/theme/overlaySurfaces.native.js +311 -0
- package/dist/esm/theme/overlaySurfaces.native.js.map +1 -0
- package/dist/esm/theme/pageGutter.mjs +55 -0
- package/dist/esm/theme/pageGutter.mjs.map +1 -0
- package/dist/esm/theme/pageGutter.native.js +59 -0
- package/dist/esm/theme/pageGutter.native.js.map +1 -0
- package/dist/esm/theme/preset.types.mjs +2 -0
- package/dist/esm/theme/preset.types.mjs.map +1 -0
- package/dist/esm/theme/preset.types.native.js +2 -0
- package/dist/esm/theme/preset.types.native.js.map +1 -0
- package/dist/esm/theme/presetPreview.mjs +17 -0
- package/dist/esm/theme/presetPreview.mjs.map +1 -0
- package/dist/esm/theme/presetPreview.native.js +18 -0
- package/dist/esm/theme/presetPreview.native.js.map +1 -0
- package/dist/esm/theme/presetStore.mjs +251 -0
- package/dist/esm/theme/presetStore.mjs.map +1 -0
- package/dist/esm/theme/presetStore.native.js +304 -0
- package/dist/esm/theme/presetStore.native.js.map +1 -0
- package/dist/esm/theme/presetUserSync.mjs +44 -0
- package/dist/esm/theme/presetUserSync.mjs.map +1 -0
- package/dist/esm/theme/presetUserSync.native.js +46 -0
- package/dist/esm/theme/presetUserSync.native.js.map +1 -0
- package/dist/esm/theme/presets.mjs +97 -0
- package/dist/esm/theme/presets.mjs.map +1 -0
- package/dist/esm/theme/presets.native.js +97 -0
- package/dist/esm/theme/presets.native.js.map +1 -0
- package/dist/esm/theme/radiusClass.mjs +99 -0
- package/dist/esm/theme/radiusClass.mjs.map +1 -0
- package/dist/esm/theme/radiusClass.native.js +105 -0
- package/dist/esm/theme/radiusClass.native.js.map +1 -0
- package/dist/esm/theme/radiusClassTable.generated.mjs +135 -0
- package/dist/esm/theme/radiusClassTable.generated.mjs.map +1 -0
- package/dist/esm/theme/radiusClassTable.generated.native.js +135 -0
- package/dist/esm/theme/radiusClassTable.generated.native.js.map +1 -0
- package/dist/esm/theme/ramps.mjs +48 -0
- package/dist/esm/theme/ramps.mjs.map +1 -0
- package/dist/esm/theme/ramps.native.js +49 -0
- package/dist/esm/theme/ramps.native.js.map +1 -0
- package/dist/esm/theme/readableColor.mjs +248 -0
- package/dist/esm/theme/readableColor.mjs.map +1 -0
- package/dist/esm/theme/readableColor.native.js +354 -0
- package/dist/esm/theme/readableColor.native.js.map +1 -0
- package/dist/esm/theme/recipeInputs.mjs +309 -0
- package/dist/esm/theme/recipeInputs.mjs.map +1 -0
- package/dist/esm/theme/recipeInputs.native.js +424 -0
- package/dist/esm/theme/recipeInputs.native.js.map +1 -0
- package/dist/esm/theme/recipes.mjs +2 -0
- package/dist/esm/theme/recipes.mjs.map +1 -0
- package/dist/esm/theme/recipes.native.js +2 -0
- package/dist/esm/theme/recipes.native.js.map +1 -0
- package/dist/esm/theme/resolveKnobs.mjs +818 -0
- package/dist/esm/theme/resolveKnobs.mjs.map +1 -0
- package/dist/esm/theme/resolveKnobs.native.js +833 -0
- package/dist/esm/theme/resolveKnobs.native.js.map +1 -0
- package/dist/esm/theme/scale/ScaleStyles.mjs +30 -0
- package/dist/esm/theme/scale/ScaleStyles.mjs.map +1 -0
- package/dist/esm/theme/scale/ScaleStyles.native.js +11 -0
- package/dist/esm/theme/scale/ScaleStyles.native.js.map +1 -0
- package/dist/esm/theme/scale/activeScale.mjs +28 -0
- package/dist/esm/theme/scale/activeScale.mjs.map +1 -0
- package/dist/esm/theme/scale/activeScale.native.js +53 -0
- package/dist/esm/theme/scale/activeScale.native.js.map +1 -0
- package/dist/esm/theme/scale/deriveRecipeInputs.mjs +86 -0
- package/dist/esm/theme/scale/deriveRecipeInputs.mjs.map +1 -0
- package/dist/esm/theme/scale/deriveRecipeInputs.native.js +126 -0
- package/dist/esm/theme/scale/deriveRecipeInputs.native.js.map +1 -0
- package/dist/esm/theme/scale/generateScale.mjs +85 -0
- package/dist/esm/theme/scale/generateScale.mjs.map +1 -0
- package/dist/esm/theme/scale/generateScale.native.js +168 -0
- package/dist/esm/theme/scale/generateScale.native.js.map +1 -0
- package/dist/esm/theme/scale/index.mjs +12 -0
- package/dist/esm/theme/scale/index.mjs.map +1 -0
- package/dist/esm/theme/scale/index.native.js +12 -0
- package/dist/esm/theme/scale/index.native.js.map +1 -0
- package/dist/esm/theme/scale/installScaleConfig.mjs +6 -0
- package/dist/esm/theme/scale/installScaleConfig.mjs.map +1 -0
- package/dist/esm/theme/scale/installScaleConfig.native.js +36 -0
- package/dist/esm/theme/scale/installScaleConfig.native.js.map +1 -0
- package/dist/esm/theme/scale/scaleAttribute.mjs +11 -0
- package/dist/esm/theme/scale/scaleAttribute.mjs.map +1 -0
- package/dist/esm/theme/scale/scaleAttribute.native.js +11 -0
- package/dist/esm/theme/scale/scaleAttribute.native.js.map +1 -0
- package/dist/esm/theme/scale/scaleCss.mjs +62 -0
- package/dist/esm/theme/scale/scaleCss.mjs.map +1 -0
- package/dist/esm/theme/scale/scaleCss.native.js +171 -0
- package/dist/esm/theme/scale/scaleCss.native.js.map +1 -0
- package/dist/esm/theme/scale/scaleFonts.mjs +60 -0
- package/dist/esm/theme/scale/scaleFonts.mjs.map +1 -0
- package/dist/esm/theme/scale/scaleFonts.native.js +126 -0
- package/dist/esm/theme/scale/scaleFonts.native.js.map +1 -0
- package/dist/esm/theme/scale/scaleInputs.mjs +189 -0
- package/dist/esm/theme/scale/scaleInputs.mjs.map +1 -0
- package/dist/esm/theme/scale/scaleInputs.native.js +191 -0
- package/dist/esm/theme/scale/scaleInputs.native.js.map +1 -0
- package/dist/esm/theme/scale/themeScales.mjs +109 -0
- package/dist/esm/theme/scale/themeScales.mjs.map +1 -0
- package/dist/esm/theme/scale/themeScales.native.js +155 -0
- package/dist/esm/theme/scale/themeScales.native.js.map +1 -0
- package/dist/esm/theme/scale/useActiveScale.mjs +51 -0
- package/dist/esm/theme/scale/useActiveScale.mjs.map +1 -0
- package/dist/esm/theme/scale/useActiveScale.native.js +57 -0
- package/dist/esm/theme/scale/useActiveScale.native.js.map +1 -0
- package/dist/esm/theme/schemeStore.mjs +59 -0
- package/dist/esm/theme/schemeStore.mjs.map +1 -0
- package/dist/esm/theme/schemeStore.native.js +73 -0
- package/dist/esm/theme/schemeStore.native.js.map +1 -0
- package/dist/esm/theme/shared.mjs +95 -0
- package/dist/esm/theme/shared.mjs.map +1 -0
- package/dist/esm/theme/shared.native.js +135 -0
- package/dist/esm/theme/shared.native.js.map +1 -0
- package/dist/esm/theme/sizeRecipes.mjs +112 -0
- package/dist/esm/theme/sizeRecipes.mjs.map +1 -0
- package/dist/esm/theme/sizeRecipes.native.js +184 -0
- package/dist/esm/theme/sizeRecipes.native.js.map +1 -0
- package/dist/esm/theme/subsetThemes.mjs +21 -0
- package/dist/esm/theme/subsetThemes.mjs.map +1 -0
- package/dist/esm/theme/subsetThemes.native.js +48 -0
- package/dist/esm/theme/subsetThemes.native.js.map +1 -0
- package/dist/esm/theme/theme.mjs +163 -0
- package/dist/esm/theme/theme.mjs.map +1 -0
- package/dist/esm/theme/theme.native.js +87 -0
- package/dist/esm/theme/theme.native.js.map +1 -0
- package/dist/esm/theme/themeValue.mjs +25 -0
- package/dist/esm/theme/themeValue.mjs.map +1 -0
- package/dist/esm/theme/themeValue.native.js +44 -0
- package/dist/esm/theme/themeValue.native.js.map +1 -0
- package/dist/esm/theme/tileSizes.mjs +167 -0
- package/dist/esm/theme/tileSizes.mjs.map +1 -0
- package/dist/esm/theme/tileSizes.native.js +192 -0
- package/dist/esm/theme/tileSizes.native.js.map +1 -0
- package/dist/esm/theme/touchManipulation.mjs +7 -0
- package/dist/esm/theme/touchManipulation.mjs.map +1 -0
- package/dist/esm/theme/touchManipulation.native.js +7 -0
- package/dist/esm/theme/touchManipulation.native.js.map +1 -0
- package/dist/esm/theme/transitionProps.mjs +25 -0
- package/dist/esm/theme/transitionProps.mjs.map +1 -0
- package/dist/esm/theme/transitionProps.native.js +53 -0
- package/dist/esm/theme/transitionProps.native.js.map +1 -0
- package/dist/esm/theme/useColorScale.mjs +22 -0
- package/dist/esm/theme/useColorScale.mjs.map +1 -0
- package/dist/esm/theme/useColorScale.native.js +5 -0
- package/dist/esm/theme/useColorScale.native.js.map +1 -0
- package/dist/esm/theme/usePresetSwitch.mjs +45 -0
- package/dist/esm/theme/usePresetSwitch.mjs.map +1 -0
- package/dist/esm/theme/usePresetSwitch.native.js +22 -0
- package/dist/esm/theme/usePresetSwitch.native.js.map +1 -0
- package/dist/esm/theme/useResolvedKnobs.mjs +111 -0
- package/dist/esm/theme/useResolvedKnobs.mjs.map +1 -0
- package/dist/esm/theme/useResolvedKnobs.native.js +145 -0
- package/dist/esm/theme/useResolvedKnobs.native.js.map +1 -0
- package/dist/esm/theme/useSchemePreference.mjs +24 -0
- package/dist/esm/theme/useSchemePreference.mjs.map +1 -0
- package/dist/esm/theme/useSchemePreference.native.js +52 -0
- package/dist/esm/theme/useSchemePreference.native.js.map +1 -0
- package/dist/esm/theme/useTheme.mjs +127 -0
- package/dist/esm/theme/useTheme.mjs.map +1 -0
- package/dist/esm/theme/useTheme.native.js +66 -0
- package/dist/esm/theme/useTheme.native.js.map +1 -0
- package/dist/esm/theme/useTouchSurface.mjs +8 -0
- package/dist/esm/theme/useTouchSurface.mjs.map +1 -0
- package/dist/esm/theme/useTouchSurface.native.js +8 -0
- package/dist/esm/theme/useTouchSurface.native.js.map +1 -0
- package/dist/esm/theme/v3TokenRoles.mjs +39 -0
- package/dist/esm/theme/v3TokenRoles.mjs.map +1 -0
- package/dist/esm/theme/v3TokenRoles.native.js +39 -0
- package/dist/esm/theme/v3TokenRoles.native.js.map +1 -0
- package/package.json +56 -12
- package/src/expo.ts +20 -0
- package/src/fonts/createFontLoader.ts +8 -4
- package/src/fonts/index.ts +1 -0
- package/src/fonts/interFaces.spec.ts +87 -0
- package/src/fonts/interFaces.ts +26 -0
- package/src/theme/accentButtonLabel.spec.ts +116 -0
- package/src/theme/colorRules.ts +41 -0
- package/src/theme/controlTiers.ts +6 -4
- package/src/theme/defaults/fonts.spec.ts +9 -2
- package/src/theme/defaults/fonts.ts +5 -8
- package/src/theme/glyphTint.spec.ts +30 -2
- package/src/theme/glyphTint.ts +1 -47
- package/src/theme/hairline.spec.ts +60 -3
- package/src/theme/hairline.ts +35 -5
- package/src/theme/readableColor.ts +49 -0
- package/src/theme/resolveKnobs.ts +172 -101
- package/src/theme/scale/activeScale.spec.ts +33 -0
- package/src/theme/scale/activeScale.ts +19 -0
- package/src/theme/scale/index.ts +6 -1
- package/src/theme/subsetThemes.spec.ts +81 -0
- package/src/theme/subsetThemes.ts +13 -1
- package/types/expo.d.ts +10 -0
- package/types/expo.d.ts.map +1 -1
- package/types/fonts/createFontLoader.d.ts.map +1 -1
- package/types/fonts/index.d.ts +1 -0
- package/types/fonts/index.d.ts.map +1 -1
- package/types/fonts/interFaces.d.ts +23 -0
- package/types/fonts/interFaces.d.ts.map +1 -0
- package/types/theme/colorRules.d.ts +6 -0
- package/types/theme/colorRules.d.ts.map +1 -1
- package/types/theme/controlTiers.d.ts +5 -3
- package/types/theme/controlTiers.d.ts.map +1 -1
- package/types/theme/defaults/fonts.d.ts +30 -30
- package/types/theme/defaults/fonts.d.ts.map +1 -1
- package/types/theme/glyphTint.d.ts +0 -6
- package/types/theme/glyphTint.d.ts.map +1 -1
- package/types/theme/hairline.d.ts +14 -3
- package/types/theme/hairline.d.ts.map +1 -1
- package/types/theme/readableColor.d.ts +19 -0
- package/types/theme/readableColor.d.ts.map +1 -1
- package/types/theme/resolveKnobs.d.ts.map +1 -1
- package/types/theme/scale/activeScale.d.ts +8 -0
- package/types/theme/scale/activeScale.d.ts.map +1 -1
- package/types/theme/scale/index.d.ts +1 -1
- package/types/theme/scale/index.d.ts.map +1 -1
- package/types/theme/subsetThemes.d.ts +10 -1
- package/types/theme/subsetThemes.d.ts.map +1 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
ensureHairlineFallback,
|
|
4
|
+
hairline,
|
|
5
|
+
hairlineFallbackCss,
|
|
6
|
+
hairlineThickness,
|
|
7
|
+
hairlineWidth,
|
|
8
|
+
} from "./hairline";
|
|
3
9
|
|
|
4
10
|
describe("hairline (Axiom 15 OPTICS)", () => {
|
|
5
11
|
it("resolves half a CSS pixel on web", () => {
|
|
@@ -43,8 +49,46 @@ describe("hairline (Axiom 15 OPTICS)", () => {
|
|
|
43
49
|
expect(hairlineFallbackCss).toContain("border-inline-end-width: 1px !important");
|
|
44
50
|
// filled-line fallbacks must pin max-height/max-width too (the `line`
|
|
45
51
|
// treatment sets both, so height alone could not win)
|
|
46
|
-
|
|
47
|
-
expect(hairlineFallbackCss).toContain(
|
|
52
|
+
// and never under one device pixel when zoomed out below 1dppx
|
|
53
|
+
expect(hairlineFallbackCss).toContain(
|
|
54
|
+
"height: max(1px, var(--mp-hairline, 1px)) !important; max-height: max(1px, var(--mp-hairline, 1px)) !important",
|
|
55
|
+
);
|
|
56
|
+
expect(hairlineFallbackCss).toContain(
|
|
57
|
+
"width: max(1px, var(--mp-hairline, 1px)) !important; max-width: max(1px, var(--mp-hairline, 1px)) !important",
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("keeps a zoomed-out ratio under 1 at one device pixel, past the 1px floor", () => {
|
|
62
|
+
for (const ratio of [0.5, 0.67, 0.8, 0.9]) {
|
|
63
|
+
const thickness = Math.max(1, hairlineThickness(ratio));
|
|
64
|
+
expect(thickness * ratio, `ratio ${ratio}`).toBeGreaterThanOrEqual(1);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// FZ-8395: a filled box under one device pixel snaps to 0 on alternate rows.
|
|
69
|
+
it("draws filled lines at least one device pixel at every ratio, never 0", () => {
|
|
70
|
+
for (const ratio of [1, 1.25, 1.5, 1.75, 1.8, 2, 2.25, 2.5, 2.625, 3, 3.5, 4]) {
|
|
71
|
+
const devicePx = hairlineThickness(ratio) * ratio;
|
|
72
|
+
expect(devicePx, `ratio ${ratio}`).toBeGreaterThanOrEqual(1);
|
|
73
|
+
expect(devicePx, `ratio ${ratio}`).toBeLessThan(1.1);
|
|
74
|
+
// On Blink's 1/64 px layout grid, so layout cannot round it under.
|
|
75
|
+
expect(Number.isInteger(hairlineThickness(ratio) * 64), `ratio ${ratio}`).toBe(true);
|
|
76
|
+
}
|
|
77
|
+
expect(hairlineThickness(2)).toBe(0.5);
|
|
78
|
+
expect(hairlineThickness(Number.NaN)).toBe(1);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("sizes the filled treatments from --mp-hairline, above the inline 0.5px", () => {
|
|
82
|
+
expect(hairlineFallbackCss).toContain(
|
|
83
|
+
".mp-hairline-h { height: var(--mp-hairline, 0.5px) !important",
|
|
84
|
+
);
|
|
85
|
+
expect(hairlineFallbackCss).toContain(
|
|
86
|
+
".mp-hairline-w { width: var(--mp-hairline, 0.5px) !important",
|
|
87
|
+
);
|
|
88
|
+
// The low-DPI 1px block comes after, so it still wins there.
|
|
89
|
+
expect(hairlineFallbackCss.indexOf("@media")).toBeGreaterThan(
|
|
90
|
+
hairlineFallbackCss.indexOf("var(--mp-hairline"),
|
|
91
|
+
);
|
|
48
92
|
});
|
|
49
93
|
|
|
50
94
|
describe("fallback stylesheet mount", () => {
|
|
@@ -59,5 +103,18 @@ describe("hairline (Axiom 15 OPTICS)", () => {
|
|
|
59
103
|
expect(tags).toHaveLength(1);
|
|
60
104
|
expect(tags[0]?.textContent).toBe(hairlineFallbackCss);
|
|
61
105
|
});
|
|
106
|
+
|
|
107
|
+
it("points --mp-hairline at one device pixel of the live ratio", () => {
|
|
108
|
+
const original = window.devicePixelRatio;
|
|
109
|
+
Object.defineProperty(window, "devicePixelRatio", { configurable: true, value: 1.75 });
|
|
110
|
+
try {
|
|
111
|
+
ensureHairlineFallback();
|
|
112
|
+
expect(document.documentElement.style.getPropertyValue("--mp-hairline")).toBe(
|
|
113
|
+
`${hairlineThickness(1.75)}px`,
|
|
114
|
+
);
|
|
115
|
+
} finally {
|
|
116
|
+
Object.defineProperty(window, "devicePixelRatio", { configurable: true, value: original });
|
|
117
|
+
}
|
|
118
|
+
});
|
|
62
119
|
});
|
|
63
120
|
});
|
package/src/theme/hairline.ts
CHANGED
|
@@ -81,21 +81,50 @@ export const hairline = {
|
|
|
81
81
|
const STYLE_TAG_ID = "mp-hairline-styles";
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
84
|
+
* FZ-8395: the filled lines' thickness, one device pixel rounded UP to
|
|
85
|
+
* Blink's 1/64 px layout unit. A filled box under one device pixel tall snaps
|
|
86
|
+
* to 0 or 1 device pixel depending on where its top lands, so 0.5 CSS px
|
|
87
|
+
* vanished on alternate rows at ratios between 1.5 and 2 (Windows 150-175%
|
|
88
|
+
* scaling, browser zoom). Exactly one device pixel or more never rounds to 0.
|
|
89
|
+
*/
|
|
90
|
+
export function hairlineThickness(devicePixelRatio: number): number {
|
|
91
|
+
const ratio = Number.isFinite(devicePixelRatio) && devicePixelRatio > 0 ? devicePixelRatio : 1;
|
|
92
|
+
return Math.ceil(64 / ratio) / 64;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* The filled `line`, `vline` and `height` treatments read their thickness
|
|
97
|
+
* from `--mp-hairline` (set from the live ratio below; 0.5px until it is), and
|
|
98
|
+
* low-DPI screens get a 1px floor for every treatment; a zoomed-out ratio
|
|
99
|
+
* under 1 keeps the filled ones at one device pixel, past that floor.
|
|
85
100
|
* (`-webkit-max-device-pixel-ratio` covers Safari versions without
|
|
86
101
|
* `resolution` media-query support.) Exported for unit tests.
|
|
87
102
|
*/
|
|
88
|
-
export const hairlineFallbackCss =
|
|
103
|
+
export const hairlineFallbackCss = `.mp-hairline-h { height: var(--mp-hairline, 0.5px) !important; max-height: var(--mp-hairline, 0.5px) !important; flex-basis: var(--mp-hairline, 0.5px) !important; }
|
|
104
|
+
.mp-hairline-w { width: var(--mp-hairline, 0.5px) !important; max-width: var(--mp-hairline, 0.5px) !important; flex-basis: var(--mp-hairline, 0.5px) !important; }
|
|
105
|
+
@media (max-resolution: 1.49dppx), (-webkit-max-device-pixel-ratio: 1.49) {
|
|
89
106
|
.mp-hairline-b { border-bottom-width: 1px !important; }
|
|
90
107
|
.mp-hairline-t { border-top-width: 1px !important; }
|
|
91
108
|
.mp-hairline-r { border-right-width: 1px !important; }
|
|
92
109
|
.mp-hairline-l { border-left-width: 1px !important; }
|
|
93
|
-
.mp-hairline-h { height: 1px !important; max-height: 1px !important; flex-basis: 1px !important; }
|
|
94
|
-
.mp-hairline-w { width: 1px !important; max-width: 1px !important; flex-basis: 1px !important; }
|
|
110
|
+
.mp-hairline-h { height: max(1px, var(--mp-hairline, 1px)) !important; max-height: max(1px, var(--mp-hairline, 1px)) !important; flex-basis: max(1px, var(--mp-hairline, 1px)) !important; }
|
|
111
|
+
.mp-hairline-w { width: max(1px, var(--mp-hairline, 1px)) !important; max-width: max(1px, var(--mp-hairline, 1px)) !important; flex-basis: max(1px, var(--mp-hairline, 1px)) !important; }
|
|
95
112
|
.mp-hairline-ie { border-inline-end-width: 1px !important; }
|
|
96
113
|
}`;
|
|
97
114
|
|
|
98
|
-
|
|
115
|
+
let watchedRatio: MediaQueryList | undefined;
|
|
116
|
+
|
|
117
|
+
/** Point `--mp-hairline` at one device pixel, and again whenever the ratio changes. */
|
|
118
|
+
function trackDevicePixel(): void {
|
|
119
|
+
if (typeof window === "undefined") return;
|
|
120
|
+
const ratio = window.devicePixelRatio || 1;
|
|
121
|
+
document.documentElement.style.setProperty("--mp-hairline", `${hairlineThickness(ratio)}px`);
|
|
122
|
+
watchedRatio?.removeEventListener?.("change", trackDevicePixel);
|
|
123
|
+
watchedRatio = window.matchMedia?.(`(resolution: ${ratio}dppx)`);
|
|
124
|
+
watchedRatio?.addEventListener?.("change", trackDevicePixel);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Idempotently mount the hairline stylesheet (no-op off-DOM). */
|
|
99
128
|
export function ensureHairlineFallback(): void {
|
|
100
129
|
if (typeof document === "undefined") return;
|
|
101
130
|
if (document.getElementById(STYLE_TAG_ID)) return;
|
|
@@ -103,6 +132,7 @@ export function ensureHairlineFallback(): void {
|
|
|
103
132
|
tag.id = STYLE_TAG_ID;
|
|
104
133
|
tag.textContent = hairlineFallbackCss;
|
|
105
134
|
document.head.appendChild(tag);
|
|
135
|
+
trackDevicePixel();
|
|
106
136
|
}
|
|
107
137
|
|
|
108
138
|
// The fallback is static CSS (no knob/theme dependency), so mount it as soon
|
|
@@ -3,11 +3,13 @@ import { useTheme as useTamaguiTheme, useThemeName } from "tamagui";
|
|
|
3
3
|
import {
|
|
4
4
|
aaTextContrastRatio,
|
|
5
5
|
contrastRatio,
|
|
6
|
+
holdHueToFloor,
|
|
6
7
|
holdInkFloor,
|
|
7
8
|
normalizeToHex,
|
|
8
9
|
pickReadableForeground,
|
|
9
10
|
relativeLuminance,
|
|
10
11
|
} from "./colorRules";
|
|
12
|
+
import { isDarkThemeName } from "./controlTiers";
|
|
11
13
|
import { tintHueNames } from "./createThemes";
|
|
12
14
|
|
|
13
15
|
/**
|
|
@@ -314,3 +316,50 @@ export function useAccentTintedSurface(): string | undefined {
|
|
|
314
316
|
const paper = resolveTokenValue(theme, "color1");
|
|
315
317
|
return useMemo(() => resolveAccentTintedSurface({ solid, paper }), [solid, paper]);
|
|
316
318
|
}
|
|
319
|
+
|
|
320
|
+
/** LC-172's floor for a hue: the spread between the strongest and weakest sRGB channel. */
|
|
321
|
+
const ACTIVE_TAB_CHROMA_FLOOR = 0.1;
|
|
322
|
+
|
|
323
|
+
export interface ResolveActiveTabInkInput {
|
|
324
|
+
/** The theme's identity hue on the page, when it has one. */
|
|
325
|
+
hue: string | undefined;
|
|
326
|
+
/** The theme's accent solid (`$accentBackground`). */
|
|
327
|
+
solid: string | undefined;
|
|
328
|
+
dark: boolean;
|
|
329
|
+
surfaces: readonly (string | undefined)[];
|
|
330
|
+
ink: string;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* LC-150: the active tab's ink, one pick for the MPO TabBar and the system
|
|
335
|
+
* tab bar. A hued theme keeps its identity hue. A theme with no identity hue
|
|
336
|
+
* but a hued accent solid takes that solid held to AA text contrast on the
|
|
337
|
+
* page. The house hue-less theme's solid is the neutral inverse, so the tab
|
|
338
|
+
* takes the primary ink, bold mono, never the grey ramp step.
|
|
339
|
+
*/
|
|
340
|
+
export function resolveActiveTabInk({
|
|
341
|
+
hue,
|
|
342
|
+
solid,
|
|
343
|
+
dark,
|
|
344
|
+
surfaces,
|
|
345
|
+
ink,
|
|
346
|
+
}: ResolveActiveTabInkInput): string {
|
|
347
|
+
if (hue) return hue;
|
|
348
|
+
const solidHex = solid ? normalizeToHex(solid) : null;
|
|
349
|
+
if (solidHex && chromaOf(solidHex) >= ACTIVE_TAB_CHROMA_FLOOR) {
|
|
350
|
+
return holdHueToFloor(solidHex, surfaces, dark, aaTextContrastRatio);
|
|
351
|
+
}
|
|
352
|
+
return ink;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/** LC-150: the live theme's active-tab ink (see {@link resolveActiveTabInk}). */
|
|
356
|
+
export function useActiveTabInk(): string {
|
|
357
|
+
const dark = isDarkThemeName(useThemeName() as string | undefined);
|
|
358
|
+
const { hue, c1, c2, ink } = useIdentityHue();
|
|
359
|
+
const theme = useTamaguiTheme() as unknown as Record<string, { val?: unknown } | undefined>;
|
|
360
|
+
const solid = resolveTokenValue(theme, "accentBackground");
|
|
361
|
+
return useMemo(
|
|
362
|
+
() => resolveActiveTabInk({ hue, solid, dark, surfaces: [c1, c2], ink }),
|
|
363
|
+
[hue, solid, dark, c1, c2, ink],
|
|
364
|
+
);
|
|
365
|
+
}
|
|
@@ -656,45 +656,26 @@ export interface ResolveKnobsEnvironment {
|
|
|
656
656
|
painted?: boolean;
|
|
657
657
|
}
|
|
658
658
|
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
const nestedHitSlop = pressTargetHitSlop(nestedPx);
|
|
671
|
-
const touch = environment?.touch ?? (isTouchable || isWebTouchable);
|
|
672
|
-
const sizeRecipe = sizeRecipeForToken(sizeToken, { touch });
|
|
673
|
-
const menuRowRecipe = sizeRecipeForToken(sizeToken, { touch, family: "menuRow" });
|
|
674
|
-
const tabRecipe = sizeRecipeForToken(sizeToken, { touch, family: "tab" });
|
|
675
|
-
const scaleTokens = getActiveScaleTokens();
|
|
676
|
-
const paddingToken = spacingRoles.panelPadding;
|
|
677
|
-
const fontWeightValue = fontWeightMap[knobs.fontWeight];
|
|
678
|
-
const bodyFontValue = bodyFontMap[knobs.bodyFont] ?? "$body";
|
|
679
|
-
const motion = motionFor(knobs.animation);
|
|
680
|
-
|
|
681
|
-
const containerRadiusValue = capContainerRadius(knobs.borderRadius);
|
|
682
|
-
|
|
683
|
-
// Corner smoothing rides every radius-bearing fragment so consumers need
|
|
684
|
-
// zero edits (KNOB-TOTALITY, LC-18). Identity guard (Axiom 3 NULL +
|
|
685
|
-
// R-BINARY/R-PILL): `none` has no arc to smooth, and at `full` the
|
|
686
|
-
// uncapped token turns control-tier parts into circles/capsules whose
|
|
687
|
-
// shape is identity — squircle ends would distort them — so the
|
|
688
|
-
// raw-radius fragments only smooth the arc classes (small/medium/large).
|
|
689
|
-
// Capped container fragments stay plain arcs at every knob (the Axiom 1
|
|
690
|
-
// cap = padding px, which superellipse corners under-fill, so the cap
|
|
691
|
-
// remains a safe over-approximation) and smooth whenever a nonzero arc
|
|
692
|
-
// exists. featureSurface smooths on the same rule: `none` has no arc.
|
|
659
|
+
// Corner smoothing rides every radius-bearing fragment so consumers need
|
|
660
|
+
// zero edits (KNOB-TOTALITY, LC-18). Identity guard (Axiom 3 NULL +
|
|
661
|
+
// R-BINARY/R-PILL): `none` has no arc to smooth, and at `full` the
|
|
662
|
+
// uncapped token turns control-tier parts into circles/capsules whose
|
|
663
|
+
// shape is identity — squircle ends would distort them — so the
|
|
664
|
+
// raw-radius fragments only smooth the arc classes (small/medium/large).
|
|
665
|
+
// Capped container fragments stay plain arcs at every knob (the Axiom 1
|
|
666
|
+
// cap = padding px, which superellipse corners under-fill, so the cap
|
|
667
|
+
// remains a safe over-approximation) and smooth whenever a nonzero arc
|
|
668
|
+
// exists. featureSurface smooths on the same rule: `none` has no arc.
|
|
669
|
+
function smoothingFor(knobs: Knobs) {
|
|
693
670
|
const smoothing = cornerSmoothingStyle[knobs.cornerSmoothing ?? "round"];
|
|
694
|
-
const
|
|
695
|
-
|
|
696
|
-
|
|
671
|
+
const arcless = knobs.borderRadius === "none";
|
|
672
|
+
return {
|
|
673
|
+
scaleSmoothing: arcless || knobs.borderRadius === "full" ? undefined : smoothing,
|
|
674
|
+
containerSmoothing: arcless ? undefined : smoothing,
|
|
675
|
+
};
|
|
676
|
+
}
|
|
697
677
|
|
|
678
|
+
function edgeRulesFor(knobs: Knobs) {
|
|
698
679
|
const outlined = knobs.fillStyle === "outlined";
|
|
699
680
|
// LC-86 OUTLINED-HAIRLINE: outlined implies a minimum border. none on an
|
|
700
681
|
// outlined control still draws the enumerated `small` stop. Chromeless
|
|
@@ -703,30 +684,22 @@ export function resolveKnobs(
|
|
|
703
684
|
const borderWidthValue = smallEdge ? borderWidthMap.small : borderWidthMap[knobs.borderWidth];
|
|
704
685
|
const edge = (color: string, width: number) =>
|
|
705
686
|
smallEdge && width >= borderWidthMap.medium ? fainterEdge(color) : color;
|
|
706
|
-
const elevationToken = elevationMap[knobs.elevation];
|
|
707
|
-
const overlayElevationToken = overlayElevationMap[knobs.elevation];
|
|
708
|
-
const overlayPaintProps = elevationPaint(overlayElevationToken);
|
|
709
687
|
const overlayEdgeWidth = Math.max(borderWidthValue, borderWidthMap.small);
|
|
710
688
|
// LC-85's floor is the small stop, so the floored edge takes its colour too.
|
|
689
|
+
const flooredSmall = smallEdge || knobs.borderWidth === "none";
|
|
711
690
|
const overlayEdge = (color: string) =>
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
const elevationChrome = elevationChromeFor(elevationToken);
|
|
716
|
-
const textAccentColor = textAccentColorMap[knobs.textAccent] ?? "$color";
|
|
717
|
-
// One input surface (DF-19 / Axiom 5 ONE SOURCE): Timeline's composer,
|
|
718
|
-
// RichEditor and form fields agree on what an input surface is.
|
|
719
|
-
// MPO-19 X6: `$background` not `$color2` so a surface sub-theme can move it.
|
|
720
|
-
const inputBackground = outlined ? "transparent" : "$background";
|
|
691
|
+
flooredSmall && overlayEdgeWidth >= borderWidthMap.medium ? fainterEdge(color) : color;
|
|
692
|
+
return { outlined, smallEdge, borderWidthValue, edge, overlayEdgeWidth, overlayEdge };
|
|
693
|
+
}
|
|
721
694
|
|
|
695
|
+
const nonEmpty = <T extends object>(obj: T): T | undefined =>
|
|
696
|
+
Object.keys(obj).length > 0 ? obj : undefined;
|
|
697
|
+
|
|
698
|
+
function stateRecipesFor(knobs: Knobs) {
|
|
722
699
|
const hover = resolveStateKnobs(knobs.hover);
|
|
723
700
|
const press = resolveStateKnobs(knobs.press);
|
|
724
701
|
const focus = resolveStateKnobs(knobs.focus);
|
|
725
702
|
const focusVisible = resolveStateKnobs(knobs.focusVisible);
|
|
726
|
-
|
|
727
|
-
const nonEmpty = <T extends object>(obj: T): T | undefined =>
|
|
728
|
-
Object.keys(obj).length > 0 ? obj : undefined;
|
|
729
|
-
|
|
730
703
|
// DG-STATE-01: hover/press always carry on-color state-layer fills.
|
|
731
704
|
// DG-A11Y-01: focus-visible ring is always present and non-removable.
|
|
732
705
|
const control: KnobRecipe<ControlStateProps> = {
|
|
@@ -747,6 +720,136 @@ export function resolveKnobs(
|
|
|
747
720
|
focusKnobProps: nonEmpty(focus.elevation),
|
|
748
721
|
focusVisibleKnobProps: nonEmpty(focusVisible.elevation),
|
|
749
722
|
};
|
|
723
|
+
return { control, text, elevation };
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
function boldWeight(knobs: Knobs): { fontWeight?: "700" } {
|
|
727
|
+
return knobs.fontWeight === "bold" ? { fontWeight: "700" } : {};
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
/** LC-151 card edge width: none draws none, large its stop, else the small hairline. */
|
|
731
|
+
function cardEdgeWidth(borderWidth: Knobs["borderWidth"]): number {
|
|
732
|
+
if (borderWidth === "none") return 0;
|
|
733
|
+
if (borderWidth === "large") return borderWidthMap.large;
|
|
734
|
+
return borderWidthMap.small;
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
interface SurfaceFrame {
|
|
738
|
+
painted: boolean;
|
|
739
|
+
radius: string | number;
|
|
740
|
+
smoothing: { className: string } | undefined;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// LC-151: a top-level card is the grouped white step ($background inside
|
|
744
|
+
// the Card template) with a hairline edge and a hair of lift. Under a
|
|
745
|
+
// painted ancestor it is one fill step off its parent, edge and lift off,
|
|
746
|
+
// so a card on a card never stacks a second shadow (WP-c2).
|
|
747
|
+
function cardSurfaceFor(
|
|
748
|
+
knobs: Knobs,
|
|
749
|
+
scheme: ColorScheme,
|
|
750
|
+
frame: SurfaceFrame & { padding: string },
|
|
751
|
+
) {
|
|
752
|
+
const { painted, radius, padding, smoothing } = frame;
|
|
753
|
+
if (painted) {
|
|
754
|
+
return { backgroundColor: paintedCardFill, borderRadius: radius, padding, ...smoothing };
|
|
755
|
+
}
|
|
756
|
+
return {
|
|
757
|
+
backgroundColor: "$background",
|
|
758
|
+
borderColor:
|
|
759
|
+
knobs.borderWidth === "large" ? "$borderColor" : edgeColorAt("$borderColor", "small"),
|
|
760
|
+
borderWidth: cardEdgeWidth(knobs.borderWidth),
|
|
761
|
+
borderRadius: radius,
|
|
762
|
+
padding,
|
|
763
|
+
...cardLiftFor(cardElevationMap[knobs.elevation], scheme),
|
|
764
|
+
...smoothing,
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
function elevatedSurfaceFor(
|
|
769
|
+
scheme: ColorScheme,
|
|
770
|
+
frame: Omit<SurfaceFrame, "radius"> & {
|
|
771
|
+
radius: string;
|
|
772
|
+
edge: string;
|
|
773
|
+
edgeWidth: number;
|
|
774
|
+
elevationToken: SizeKey | undefined;
|
|
775
|
+
},
|
|
776
|
+
) {
|
|
777
|
+
const { painted, radius, smoothing, edge, edgeWidth, elevationToken } = frame;
|
|
778
|
+
if (painted) {
|
|
779
|
+
return {
|
|
780
|
+
backgroundColor: "$background",
|
|
781
|
+
borderColor: edge,
|
|
782
|
+
borderWidth: edgeWidth,
|
|
783
|
+
borderRadius: radius,
|
|
784
|
+
elevation: undefined,
|
|
785
|
+
...smoothing,
|
|
786
|
+
};
|
|
787
|
+
}
|
|
788
|
+
if (scheme === "dark") {
|
|
789
|
+
// Dark draws no edge at all: on iOS a transparent border on a sheet
|
|
790
|
+
// mounted under a light OS painted the light $borderColor, and it lifts
|
|
791
|
+
// by its lighter fill, as the card lift does: a black shadow on a
|
|
792
|
+
// near-black page reads as a smudge (FZ-8116).
|
|
793
|
+
return {
|
|
794
|
+
backgroundColor: surface2.fill,
|
|
795
|
+
borderColor: "transparent",
|
|
796
|
+
borderWidth: 0,
|
|
797
|
+
borderRadius: radius,
|
|
798
|
+
elevation: undefined,
|
|
799
|
+
...smoothing,
|
|
800
|
+
};
|
|
801
|
+
}
|
|
802
|
+
// Light: an overlay fills the page's own white, so it always keeps at
|
|
803
|
+
// least the hairline, even on a chromeless preset (FZ-8116).
|
|
804
|
+
return {
|
|
805
|
+
backgroundColor: "$background",
|
|
806
|
+
borderColor: edge,
|
|
807
|
+
borderWidth: edgeWidth,
|
|
808
|
+
borderRadius: radius,
|
|
809
|
+
elevation: platformElevation(elevationToken),
|
|
810
|
+
...elevationPaint(elevationToken),
|
|
811
|
+
...smoothing,
|
|
812
|
+
};
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
export function resolveKnobs(
|
|
816
|
+
knobs: Knobs,
|
|
817
|
+
override?: KnobPropsOverride,
|
|
818
|
+
scheme: ColorScheme = "light",
|
|
819
|
+
environment?: ResolveKnobsEnvironment,
|
|
820
|
+
): ResolvedKnobs {
|
|
821
|
+
const radiusToken = borderRadiusMap[knobs.borderRadius];
|
|
822
|
+
const nestedRadiusToken = nestedRadiusMap[knobs.borderRadius];
|
|
823
|
+
const sizeToken = normalizeSizeToken(environment?.sizeToken);
|
|
824
|
+
const painted = environment?.painted ?? false;
|
|
825
|
+
const nestedPx = nestedControlPx(sizeToken);
|
|
826
|
+
const nestedHitSlop = pressTargetHitSlop(nestedPx);
|
|
827
|
+
const touch = environment?.touch ?? (isTouchable || isWebTouchable);
|
|
828
|
+
const sizeRecipe = sizeRecipeForToken(sizeToken, { touch });
|
|
829
|
+
const menuRowRecipe = sizeRecipeForToken(sizeToken, { touch, family: "menuRow" });
|
|
830
|
+
const tabRecipe = sizeRecipeForToken(sizeToken, { touch, family: "tab" });
|
|
831
|
+
const scaleTokens = getActiveScaleTokens();
|
|
832
|
+
const paddingToken = spacingRoles.panelPadding;
|
|
833
|
+
const fontWeightValue = fontWeightMap[knobs.fontWeight];
|
|
834
|
+
const bodyFontValue = bodyFontMap[knobs.bodyFont] ?? "$body";
|
|
835
|
+
const motion = motionFor(knobs.animation);
|
|
836
|
+
|
|
837
|
+
const containerRadiusValue = capContainerRadius(knobs.borderRadius);
|
|
838
|
+
|
|
839
|
+
const { scaleSmoothing, containerSmoothing } = smoothingFor(knobs);
|
|
840
|
+
const { outlined, smallEdge, borderWidthValue, edge, overlayEdgeWidth, overlayEdge } =
|
|
841
|
+
edgeRulesFor(knobs);
|
|
842
|
+
const elevationToken = elevationMap[knobs.elevation];
|
|
843
|
+
const overlayElevationToken = overlayElevationMap[knobs.elevation];
|
|
844
|
+
const elevationChrome = elevationChromeFor(elevationToken);
|
|
845
|
+
const textAccentColor = textAccentColorMap[knobs.textAccent] ?? "$color";
|
|
846
|
+
// One input surface (DF-19 / Axiom 5 ONE SOURCE): Timeline's composer,
|
|
847
|
+
// RichEditor and form fields agree on what an input surface is.
|
|
848
|
+
// MPO-19 X6: `$background` not `$color2` so a surface sub-theme can move it.
|
|
849
|
+
const inputBackground = outlined ? "transparent" : "$background";
|
|
850
|
+
|
|
851
|
+
const { control, text, elevation } = stateRecipesFor(knobs);
|
|
852
|
+
const bold = boldWeight(knobs);
|
|
750
853
|
|
|
751
854
|
const nestedRadius = { borderRadius: nestedRadiusToken, ...containerSmoothing };
|
|
752
855
|
|
|
@@ -786,52 +889,20 @@ export function resolveKnobs(
|
|
|
786
889
|
// the Card template) with a hairline edge and a hair of lift. Under a
|
|
787
890
|
// painted ancestor it is one fill step off its parent, edge and lift off,
|
|
788
891
|
// so a card on a card never stacks a second shadow (WP-c2).
|
|
789
|
-
cardSurface:
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
: knobs.borderWidth === "large"
|
|
804
|
-
? borderWidthMap.large
|
|
805
|
-
: borderWidthMap.small,
|
|
806
|
-
borderRadius: containerRadiusValue,
|
|
807
|
-
padding: paddingToken,
|
|
808
|
-
...cardLiftFor(cardElevationMap[knobs.elevation], scheme),
|
|
809
|
-
...containerSmoothing,
|
|
810
|
-
},
|
|
811
|
-
elevatedSurface: painted
|
|
812
|
-
? {
|
|
813
|
-
backgroundColor: "$background",
|
|
814
|
-
borderColor: overlayEdge("$borderColor"),
|
|
815
|
-
borderWidth: overlayEdgeWidth,
|
|
816
|
-
borderRadius: radiusToken,
|
|
817
|
-
elevation: undefined,
|
|
818
|
-
...scaleSmoothing,
|
|
819
|
-
}
|
|
820
|
-
: {
|
|
821
|
-
backgroundColor: scheme === "dark" ? surface2.fill : "$background",
|
|
822
|
-
// Light: an overlay fills the page's own white, so it always keeps at
|
|
823
|
-
// least the hairline, even on a chromeless preset (FZ-8116).
|
|
824
|
-
borderColor: scheme === "dark" ? "transparent" : overlayEdge("$borderColor"),
|
|
825
|
-
// Dark draws no edge at all: on iOS a transparent border on a sheet
|
|
826
|
-
// mounted under a light OS painted the light $borderColor (FZ-8116).
|
|
827
|
-
borderWidth: scheme === "dark" ? 0 : overlayEdgeWidth,
|
|
828
|
-
borderRadius: radiusToken,
|
|
829
|
-
elevation: scheme === "dark" ? undefined : platformElevation(overlayElevationToken),
|
|
830
|
-
// Dark lifts an overlay by its lighter fill, as the card lift does: a
|
|
831
|
-
// black shadow on a near-black page reads as a smudge (FZ-8116).
|
|
832
|
-
...(scheme === "dark" ? undefined : overlayPaintProps),
|
|
833
|
-
...scaleSmoothing,
|
|
834
|
-
},
|
|
892
|
+
cardSurface: cardSurfaceFor(knobs, scheme, {
|
|
893
|
+
painted,
|
|
894
|
+
radius: containerRadiusValue,
|
|
895
|
+
padding: paddingToken,
|
|
896
|
+
smoothing: containerSmoothing,
|
|
897
|
+
}),
|
|
898
|
+
elevatedSurface: elevatedSurfaceFor(scheme, {
|
|
899
|
+
painted,
|
|
900
|
+
radius: radiusToken,
|
|
901
|
+
smoothing: scaleSmoothing,
|
|
902
|
+
edge: overlayEdge("$borderColor"),
|
|
903
|
+
edgeWidth: overlayEdgeWidth,
|
|
904
|
+
elevationToken: overlayElevationToken,
|
|
905
|
+
}),
|
|
835
906
|
featureSurface: {
|
|
836
907
|
backgroundColor: "$background",
|
|
837
908
|
borderRadius: featureRadiusMap[knobs.borderRadius],
|
|
@@ -854,7 +925,7 @@ export function resolveKnobs(
|
|
|
854
925
|
label: {
|
|
855
926
|
fontSize: labelFontSizeFor(sizeToken),
|
|
856
927
|
fontFamily: bodyFontValue,
|
|
857
|
-
...
|
|
928
|
+
...bold,
|
|
858
929
|
},
|
|
859
930
|
nestedControl: {
|
|
860
931
|
px: nestedPx,
|
|
@@ -896,7 +967,7 @@ export function resolveKnobs(
|
|
|
896
967
|
},
|
|
897
968
|
heading: {
|
|
898
969
|
fontFamily: headingFontMap[knobs.headingFont],
|
|
899
|
-
...
|
|
970
|
+
...bold,
|
|
900
971
|
},
|
|
901
972
|
pageTitle: resolvePageTitleScale(knobs.pageTitleScale ?? "moderate"),
|
|
902
973
|
textRole: resolveTextRoles(sizeToken, knobs.fontWeight === "bold"),
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
+
import { getActiveScaleTokens, scaleSpaceFractionPx, setActiveScaleTokens } from "./activeScale";
|
|
3
|
+
import { generateScale } from "./generateScale";
|
|
4
|
+
import { defaultScaleInputs } from "./scaleInputs";
|
|
5
|
+
|
|
6
|
+
const original = getActiveScaleTokens();
|
|
7
|
+
const defaults = generateScale(defaultScaleInputs).tokens;
|
|
8
|
+
const dense = generateScale({ control: 32, type: 13 }).tokens;
|
|
9
|
+
|
|
10
|
+
afterEach(() => setActiveScaleTokens(original));
|
|
11
|
+
|
|
12
|
+
describe("scaleSpaceFractionPx (FZ-8018)", () => {
|
|
13
|
+
it("is plain rounding on the default scale", () => {
|
|
14
|
+
for (const key of ["$1.5", "$2.5", "$3.5", "$4.5"] as const) {
|
|
15
|
+
const px = defaults.space[key];
|
|
16
|
+
expect(scaleSpaceFractionPx(px, 0.25)).toBe(Math.round(px * 0.25));
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("paints an installed space token where the default quarter is one", () => {
|
|
21
|
+
const quarter = Math.round(defaults.space["$2.5"] * 0.25);
|
|
22
|
+
expect(new Set(Object.values(defaults.space)).has(quarter)).toBe(true);
|
|
23
|
+
setActiveScaleTokens(dense);
|
|
24
|
+
expect(getActiveScaleTokens()).toBe(dense);
|
|
25
|
+
const inset = scaleSpaceFractionPx(dense.space["$2.5"], 0.25);
|
|
26
|
+
expect(new Set(Object.values(dense.space)).has(inset)).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("keeps plain rounding for a px that is no installed space value", () => {
|
|
30
|
+
setActiveScaleTokens(dense);
|
|
31
|
+
expect(scaleSpaceFractionPx(1001, 0.25)).toBe(250);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -28,3 +28,22 @@ export function scaleRadiusPx(defaultPx: number): number {
|
|
|
28
28
|
}
|
|
29
29
|
return defaultPx;
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* `fraction` of an installed `$space` value, as an inset on that scale. The
|
|
34
|
+
* default scale rounds the product; when that lands on a default `$space`
|
|
35
|
+
* token, every scale paints its own value at the same key, so a preset never
|
|
36
|
+
* draws a px between its tokens. A product that is no default token, or a
|
|
37
|
+
* `px` that is no installed `$space` value, keeps the plain rounding.
|
|
38
|
+
*/
|
|
39
|
+
export function scaleSpaceFractionPx(px: number, fraction: number): number {
|
|
40
|
+
const rounded = Math.round(px * fraction);
|
|
41
|
+
const keys = (Object.keys(activeTokens.space) as (keyof ScaleTokens["space"])[]).filter(
|
|
42
|
+
(key) => key !== "$true",
|
|
43
|
+
);
|
|
44
|
+
const key = keys.find((k) => activeTokens.space[k] === px);
|
|
45
|
+
if (key === undefined) return rounded;
|
|
46
|
+
const onDefault = Math.round(defaultTokens.space[key] * fraction);
|
|
47
|
+
const target = keys.find((k) => defaultTokens.space[k] === onDefault);
|
|
48
|
+
return target === undefined ? rounded : activeTokens.space[target];
|
|
49
|
+
}
|
package/src/theme/scale/index.ts
CHANGED
|
@@ -51,4 +51,9 @@ export type { PublishedScale, ScaleSource } from "./useActiveScale";
|
|
|
51
51
|
export { ScaleStyles, scaleAttributeValue, scaleStyleSheet } from "./ScaleStyles";
|
|
52
52
|
export type { ScaleStylesProps } from "./ScaleStyles";
|
|
53
53
|
export { scaleAttributeFromCookie, scaleAttributeScript } from "./scaleAttribute";
|
|
54
|
-
export {
|
|
54
|
+
export {
|
|
55
|
+
getActiveScaleTokens,
|
|
56
|
+
scaleRadiusPx,
|
|
57
|
+
scaleSpaceFractionPx,
|
|
58
|
+
setActiveScaleTokens,
|
|
59
|
+
} from "./activeScale";
|