@tamagui/core 1.0.0-alpha.0 → 1.0.0-alpha.12
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/LICENSE +21 -0
- package/dist/cjs/constants/constants.js +50 -0
- package/dist/cjs/constants/constants.js.map +7 -0
- package/dist/cjs/constants/platform.js +43 -0
- package/dist/cjs/constants/platform.js.map +7 -0
- package/dist/cjs/constants/pseudos.js +25 -0
- package/dist/cjs/constants/pseudos.js.map +7 -0
- package/dist/cjs/constants/rnw.js +28 -0
- package/dist/cjs/constants/rnw.js.map +7 -0
- package/dist/cjs/createComponent.js +532 -0
- package/dist/cjs/createComponent.js.map +7 -0
- package/dist/cjs/createFont.js +50 -0
- package/dist/cjs/createFont.js.map +7 -0
- package/dist/cjs/createShorthands.js +16 -0
- package/dist/cjs/createShorthands.js.map +7 -0
- package/dist/cjs/createTamagui.js +206 -0
- package/dist/cjs/createTamagui.js.map +7 -0
- package/dist/cjs/createTheme.js +42 -0
- package/dist/cjs/createTheme.js.map +7 -0
- package/dist/cjs/createTokens.js +55 -0
- package/dist/cjs/createTokens.js.map +7 -0
- package/dist/cjs/createVariable.js +47 -0
- package/dist/cjs/createVariable.js.map +7 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js +79 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js.map +7 -0
- package/dist/cjs/helpers/createMediaStyle.js +56 -0
- package/dist/cjs/helpers/createMediaStyle.js.map +7 -0
- package/dist/cjs/helpers/createPropMapper.js +197 -0
- package/dist/cjs/helpers/createPropMapper.js.map +7 -0
- package/dist/cjs/helpers/createTamaguiProvider.js +74 -0
- package/dist/cjs/helpers/createTamaguiProvider.js.map +7 -0
- package/dist/cjs/helpers/extendStaticConfig.js +82 -0
- package/dist/cjs/helpers/extendStaticConfig.js.map +7 -0
- package/dist/cjs/helpers/fixNativeShadow.js +14 -0
- package/dist/cjs/helpers/fixNativeShadow.js.map +7 -0
- package/dist/cjs/helpers/fixNativeShadow.native.js +36 -0
- package/dist/cjs/helpers/fixNativeShadow.native.js.map +7 -0
- package/dist/cjs/helpers/getSplitStyles.js +180 -0
- package/dist/cjs/helpers/getSplitStyles.js.map +7 -0
- package/dist/cjs/helpers/getStylesAtomic.js +117 -0
- package/dist/cjs/helpers/getStylesAtomic.js.map +7 -0
- package/dist/cjs/helpers/getStylesAtomic.native.js +16 -0
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +7 -0
- package/dist/cjs/helpers/insertStyleRule.js +46 -0
- package/dist/cjs/helpers/insertStyleRule.js.map +7 -0
- package/dist/cjs/helpers/isObj.js +13 -0
- package/dist/cjs/helpers/isObj.js.map +7 -0
- package/dist/cjs/helpers/isTamaguiElement.js +33 -0
- package/dist/cjs/helpers/isTamaguiElement.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.js +24 -0
- package/dist/cjs/helpers/matchMedia.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.native.js +31 -0
- package/dist/cjs/helpers/matchMedia.native.js.map +7 -0
- package/dist/cjs/helpers/themeable.js +78 -0
- package/dist/cjs/helpers/themeable.js.map +7 -0
- package/dist/cjs/helpers/validate.js +82 -0
- package/dist/cjs/helpers/validate.js.map +7 -0
- package/dist/cjs/hooks/useConstant.js +37 -0
- package/dist/cjs/hooks/useConstant.js.map +7 -0
- package/dist/cjs/hooks/useFeatures.js +100 -0
- package/dist/cjs/hooks/useFeatures.js.map +7 -0
- package/dist/cjs/hooks/useMedia.js +206 -0
- package/dist/cjs/hooks/useMedia.js.map +7 -0
- package/dist/cjs/hooks/usePressable.js +50 -0
- package/dist/cjs/hooks/usePressable.js.map +7 -0
- package/dist/cjs/hooks/useTheme.js +111 -0
- package/dist/cjs/hooks/useTheme.js.map +7 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/static/postProcessStyles.js +40 -0
- package/dist/cjs/static/postProcessStyles.js.map +7 -0
- package/dist/cjs/static.js +34 -0
- package/dist/cjs/static.js.map +7 -0
- package/dist/cjs/styled.js +72 -0
- package/dist/cjs/styled.js.map +7 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/cjs/views/Animated.js +129 -0
- package/dist/cjs/views/Animated.js.map +7 -0
- package/dist/cjs/views/Stack.js +51 -0
- package/dist/cjs/views/Stack.js.map +7 -0
- package/dist/cjs/views/Text.js +93 -0
- package/dist/cjs/views/Text.js.map +7 -0
- package/dist/cjs/views/TextAncestorContext.js +41 -0
- package/dist/cjs/views/TextAncestorContext.js.map +7 -0
- package/dist/cjs/views/Theme.js +91 -0
- package/dist/cjs/views/Theme.js.map +7 -0
- package/dist/cjs/views/ThemeContext.js +29 -0
- package/dist/cjs/views/ThemeContext.js.map +7 -0
- package/dist/cjs/views/ThemeInverse.js +48 -0
- package/dist/cjs/views/ThemeInverse.js.map +7 -0
- package/dist/cjs/views/ThemeManagerContext.js +84 -0
- package/dist/cjs/views/ThemeManagerContext.js.map +7 -0
- package/dist/cjs/views/ThemeProvider.js +67 -0
- package/dist/cjs/views/ThemeProvider.js.map +7 -0
- package/dist/constants/platform.js +1 -1
- package/dist/constants/platform.js.map +2 -2
- package/dist/createComponent.js +51 -32
- package/dist/createComponent.js.map +2 -2
- package/dist/createFont.js +4 -0
- package/dist/createFont.js.map +2 -2
- package/dist/createTamagui.js +11 -2
- package/dist/createTamagui.js.map +2 -2
- package/dist/createTokens.js +4 -0
- package/dist/createTokens.js.map +2 -2
- package/dist/createVariable.js +3 -0
- package/dist/createVariable.js.map +2 -2
- package/{_ → dist/esm}/constants/constants.js +0 -0
- package/{_ → dist/esm}/constants/constants.js.map +1 -1
- package/{_ → dist/esm}/constants/platform.js +1 -2
- package/dist/esm/constants/platform.js.map +7 -0
- package/{_ → dist/esm}/constants/pseudos.js +0 -0
- package/{_ → dist/esm}/constants/pseudos.js.map +1 -1
- package/{_ → dist/esm}/constants/rnw.js +0 -0
- package/{_ → dist/esm}/constants/rnw.js.map +1 -1
- package/{_ → dist/esm}/createComponent.js +115 -78
- package/dist/esm/createComponent.js.map +7 -0
- package/dist/esm/createFont.js +28 -0
- package/dist/esm/createFont.js.map +7 -0
- package/{_ → dist/esm}/createShorthands.js +0 -0
- package/{_ → dist/esm}/createShorthands.js.map +1 -1
- package/{_ → dist/esm}/createTamagui.js +61 -15
- package/dist/esm/createTamagui.js.map +7 -0
- package/{_ → dist/esm}/createTheme.js +0 -0
- package/{_ → dist/esm}/createTheme.js.map +1 -1
- package/{_ → dist/esm}/createTokens.js +4 -0
- package/dist/esm/createTokens.js.map +7 -0
- package/{_ → dist/esm}/createVariable.js +3 -0
- package/{_ → dist/esm}/createVariable.js.map +3 -3
- package/dist/esm/helpers/addStylesUsingClassname.js +57 -0
- package/dist/esm/helpers/addStylesUsingClassname.js.map +7 -0
- package/{_ → dist/esm}/helpers/createMediaStyle.js +0 -0
- package/{_ → dist/esm}/helpers/createMediaStyle.js.map +1 -1
- package/dist/esm/helpers/createPropMapper.js +160 -0
- package/dist/esm/helpers/createPropMapper.js.map +7 -0
- package/{_ → dist/esm}/helpers/createTamaguiProvider.js +2 -19
- package/dist/esm/helpers/createTamaguiProvider.js.map +7 -0
- package/dist/esm/helpers/extendStaticConfig.js +59 -0
- package/dist/esm/helpers/extendStaticConfig.js.map +7 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.js +0 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.js.map +1 -1
- package/{_ → dist/esm}/helpers/fixNativeShadow.native.js +0 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.native.js.map +1 -1
- package/{_ → dist/esm}/helpers/getSplitStyles.js +18 -28
- package/dist/esm/helpers/getSplitStyles.js.map +7 -0
- package/{_ → dist/esm}/helpers/getStylesAtomic.js +1 -2
- package/{_ → dist/esm}/helpers/getStylesAtomic.js.map +2 -2
- package/{_ → dist/esm}/helpers/getStylesAtomic.native.js +0 -0
- package/{_ → dist/esm}/helpers/getStylesAtomic.native.js.map +1 -1
- package/{_ → dist/esm}/helpers/insertStyleRule.js +0 -0
- package/{_ → dist/esm}/helpers/insertStyleRule.js.map +1 -1
- package/dist/esm/helpers/isObj.js +7 -0
- package/dist/esm/helpers/isObj.js.map +7 -0
- package/dist/esm/helpers/isTamaguiElement.js +10 -0
- package/dist/esm/helpers/isTamaguiElement.js.map +7 -0
- package/{_ → dist/esm}/helpers/matchMedia.js +3 -0
- package/dist/esm/helpers/matchMedia.js.map +7 -0
- package/{_ → dist/esm}/helpers/matchMedia.native.js +1 -0
- package/{_ → dist/esm}/helpers/matchMedia.native.js.map +3 -3
- package/{_ → dist/esm}/helpers/themeable.js +1 -1
- package/{_ → dist/esm}/helpers/themeable.js.map +2 -2
- package/dist/esm/helpers/validate.js +60 -0
- package/dist/esm/helpers/validate.js.map +7 -0
- package/{_ → dist/esm}/hooks/useConstant.js +0 -0
- package/{_ → dist/esm}/hooks/useConstant.js.map +1 -1
- package/{_ → dist/esm}/hooks/useFeatures.js +39 -51
- package/dist/esm/hooks/useFeatures.js.map +7 -0
- package/{_ → dist/esm}/hooks/useMedia.js +7 -7
- package/dist/esm/hooks/useMedia.js.map +7 -0
- package/{_ → dist/esm}/hooks/usePressable.js +1 -2
- package/{_ → dist/esm}/hooks/usePressable.js.map +2 -2
- package/{_ → dist/esm}/hooks/useTheme.js +6 -11
- package/dist/esm/hooks/useTheme.js.map +7 -0
- package/{_ → dist/esm}/index.js +3 -1
- package/dist/esm/index.js.map +7 -0
- package/{_ → dist/esm}/static/postProcessStyles.js +0 -0
- package/{_ → dist/esm}/static/postProcessStyles.js.map +1 -1
- package/{_ → dist/esm}/static.js +3 -0
- package/dist/esm/static.js.map +7 -0
- package/{_ → dist/esm}/styled.js +2 -2
- package/dist/esm/styled.js.map +7 -0
- package/{_ → dist/esm}/types.js +0 -0
- package/{_ → dist/esm}/types.js.map +0 -0
- package/{_ → dist/esm}/views/Animated.js +0 -0
- package/{_ → dist/esm}/views/Animated.js.map +1 -1
- package/{_ → dist/esm}/views/Stack.js +0 -0
- package/{_ → dist/esm}/views/Stack.js.map +1 -1
- package/{_ → dist/esm}/views/Text.js +0 -0
- package/{_ → dist/esm}/views/Text.js.map +1 -1
- package/{_ → dist/esm}/views/TextAncestorContext.js +1 -2
- package/{_ → dist/esm}/views/TextAncestorContext.js.map +2 -2
- package/{_ → dist/esm}/views/Theme.js +25 -14
- package/dist/esm/views/Theme.js.map +7 -0
- package/{_ → dist/esm}/views/ThemeContext.js +0 -0
- package/{_ → dist/esm}/views/ThemeContext.js.map +1 -1
- package/{_ → dist/esm}/views/ThemeInverse.js +0 -1
- package/{_ → dist/esm}/views/ThemeInverse.js.map +3 -3
- package/{_ → dist/esm}/views/ThemeManagerContext.js +12 -7
- package/dist/esm/views/ThemeManagerContext.js.map +7 -0
- package/{_ → dist/esm}/views/ThemeProvider.js +0 -0
- package/{_ → dist/esm}/views/ThemeProvider.js.map +1 -1
- package/dist/helpers/createPropMapper.js +16 -9
- package/dist/helpers/createPropMapper.js.map +2 -2
- package/dist/helpers/getSplitStyles.js +13 -23
- package/dist/helpers/getSplitStyles.js.map +2 -2
- package/dist/helpers/isComponent.js +10 -0
- package/dist/helpers/isComponent.js.map +7 -0
- package/dist/helpers/isTamaguiComponent.js +10 -0
- package/dist/helpers/isTamaguiComponent.js.map +7 -0
- package/dist/helpers/isTamaguiElement.js +10 -0
- package/dist/helpers/isTamaguiElement.js.map +7 -0
- package/dist/helpers/matchMedia.js +3 -0
- package/dist/helpers/matchMedia.js.map +2 -2
- package/dist/helpers/matchMedia.native.js +1 -0
- package/dist/helpers/matchMedia.native.js.map +2 -2
- package/dist/helpers/validate.js +60 -0
- package/dist/helpers/validate.js.map +7 -0
- package/dist/helpers/validateConfig.js +46 -0
- package/dist/helpers/validateConfig.js.map +7 -0
- package/dist/helpers/validateTokens.js +29 -0
- package/dist/helpers/validateTokens.js.map +7 -0
- package/dist/hooks/useFeatures.js +39 -51
- package/dist/hooks/useFeatures.js.map +2 -2
- package/dist/hooks/useMedia.js +5 -3
- package/dist/hooks/useMedia.js.map +2 -2
- package/dist/hooks/useTheme.js +5 -9
- package/dist/hooks/useTheme.js.map +2 -2
- package/dist/index.cjs +274 -197
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +1 -2
- package/dist/index.js.map +2 -2
- package/dist/jsx/constants/constants.js +13 -0
- package/dist/jsx/constants/platform.js +18 -0
- package/dist/jsx/constants/pseudos.js +17 -0
- package/dist/jsx/constants/rnw.js +21 -0
- package/dist/jsx/createComponent.js +458 -0
- package/dist/jsx/createFont.js +27 -0
- package/dist/jsx/createShorthands.js +9 -0
- package/dist/jsx/createTamagui.js +167 -0
- package/dist/jsx/createTheme.js +19 -0
- package/dist/jsx/createTokens.js +32 -0
- package/dist/jsx/createVariable.js +24 -0
- package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
- package/dist/jsx/helpers/createMediaStyle.js +33 -0
- package/dist/jsx/helpers/createPropMapper.js +159 -0
- package/dist/jsx/helpers/createTamaguiProvider.js +19 -0
- package/dist/jsx/helpers/extendStaticConfig.js +58 -0
- package/dist/jsx/helpers/fixNativeShadow.js +7 -0
- package/dist/jsx/helpers/fixNativeShadow.native.js +29 -0
- package/dist/jsx/helpers/getSplitStyles.js +149 -0
- package/dist/jsx/helpers/getStylesAtomic.js +82 -0
- package/dist/jsx/helpers/getStylesAtomic.native.js +9 -0
- package/dist/jsx/helpers/insertStyleRule.js +23 -0
- package/dist/jsx/helpers/isObj.js +6 -0
- package/dist/jsx/helpers/isTamaguiElement.js +9 -0
- package/dist/jsx/helpers/matchMedia.js +17 -0
- package/dist/jsx/helpers/matchMedia.native.js +8 -0
- package/dist/jsx/helpers/themeable.js +23 -0
- package/dist/jsx/helpers/validate.js +59 -0
- package/dist/jsx/hooks/useConstant.js +14 -0
- package/dist/jsx/hooks/useFeatures.js +57 -0
- package/dist/jsx/hooks/useMedia.js +172 -0
- package/dist/jsx/hooks/usePressable.js +12 -0
- package/dist/jsx/hooks/useTheme.js +88 -0
- package/dist/jsx/index.js +31 -0
- package/dist/jsx/static/postProcessStyles.js +17 -0
- package/dist/jsx/static.js +14 -0
- package/dist/jsx/styled.js +20 -0
- package/dist/jsx/types.js +0 -0
- package/dist/jsx/views/Animated.js +74 -0
- package/dist/jsx/views/Stack.js +11 -0
- package/dist/jsx/views/Text.js +59 -0
- package/dist/jsx/views/TextAncestorContext.js +14 -0
- package/dist/jsx/views/Theme.js +62 -0
- package/dist/jsx/views/ThemeContext.js +5 -0
- package/dist/jsx/views/ThemeInverse.js +22 -0
- package/dist/jsx/views/ThemeManagerContext.js +60 -0
- package/dist/jsx/views/ThemeProvider.js +39 -0
- package/dist/views/Theme.js +25 -13
- package/dist/views/Theme.js.map +2 -2
- package/dist/views/ThemeInverse.js +0 -1
- package/dist/views/ThemeInverse.js.map +2 -2
- package/dist/views/ThemeManagerContext.js +11 -5
- package/dist/views/ThemeManagerContext.js.map +2 -2
- package/package.json +17 -9
- package/src/constants/platform.ts +1 -1
- package/src/createComponent.tsx +59 -41
- package/src/createFont.ts +5 -0
- package/src/createTamagui.ts +11 -1
- package/src/createTokens.ts +6 -1
- package/src/createVariable.ts +4 -0
- package/src/helpers/createPropMapper.ts +16 -8
- package/src/helpers/getSplitStyles.tsx +16 -26
- package/src/helpers/isTamaguiElement.tsx +5 -0
- package/src/helpers/matchMedia.native.ts +3 -0
- package/src/helpers/matchMedia.ts +9 -1
- package/src/helpers/validate.ts +59 -0
- package/src/hooks/useFeatures.tsx +54 -53
- package/src/hooks/useMedia.tsx +5 -3
- package/src/hooks/useTheme.tsx +7 -8
- package/src/index.ts +1 -2
- package/src/types.tsx +9 -8
- package/src/views/Text.tsx +2 -1
- package/src/views/Theme.tsx +42 -21
- package/src/views/ThemeInverse.tsx +0 -1
- package/src/views/ThemeManagerContext.tsx +18 -6
- package/types/constants/constants.d.ts +8 -0
- package/types/constants/constants.d.ts.map +1 -0
- package/types/constants/platform.d.ts +9 -0
- package/types/constants/platform.d.ts.map +1 -0
- package/types/constants/pseudos.d.ts +15 -0
- package/types/constants/pseudos.d.ts.map +1 -0
- package/types/constants/rnw.d.ts +2 -0
- package/types/constants/rnw.d.ts.map +1 -0
- package/types/createComponent.d.ts +17 -0
- package/types/createComponent.d.ts.map +1 -0
- package/types/createFont.d.ts +3 -0
- package/types/createFont.d.ts.map +1 -0
- package/types/createShorthands.d.ts +2 -0
- package/types/createShorthands.d.ts.map +1 -0
- package/types/createTamagui.d.ts +38 -0
- package/types/createTamagui.d.ts.map +1 -0
- package/types/createTheme.d.ts +5 -0
- package/types/createTheme.d.ts.map +1 -0
- package/types/createTokens.d.ts +55 -0
- package/types/createTokens.d.ts.map +1 -0
- package/types/createVariable.d.ts +15 -0
- package/types/createVariable.d.ts.map +1 -0
- package/types/helpers/addStylesUsingClassname.d.ts +3 -0
- package/types/helpers/addStylesUsingClassname.d.ts.map +1 -0
- package/types/helpers/createMediaStyle.d.ts +8 -0
- package/types/helpers/createMediaStyle.d.ts.map +1 -0
- package/types/helpers/createPropMapper.d.ts +3 -0
- package/types/helpers/createPropMapper.d.ts.map +1 -0
- package/types/helpers/createTamaguiProvider.d.ts +5 -0
- package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
- package/types/helpers/extendStaticConfig.d.ts +5 -0
- package/types/helpers/extendStaticConfig.d.ts.map +1 -0
- package/types/helpers/fixNativeShadow.d.ts +2 -0
- package/types/helpers/fixNativeShadow.d.ts.map +1 -0
- package/types/helpers/fixNativeShadow.native.d.ts +2 -0
- package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts +15 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.d.ts +3 -0
- package/types/helpers/getStylesAtomic.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.native.d.ts +2 -0
- package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
- package/types/helpers/insertStyleRule.d.ts +2 -0
- package/types/helpers/insertStyleRule.d.ts.map +1 -0
- package/types/helpers/isObj.d.ts +2 -0
- package/types/helpers/isObj.d.ts.map +1 -0
- package/types/helpers/isTamaguiElement.d.ts +3 -0
- package/types/helpers/isTamaguiElement.d.ts.map +1 -0
- package/types/helpers/matchMedia.d.ts +2 -0
- package/types/helpers/matchMedia.d.ts.map +1 -0
- package/types/helpers/matchMedia.native.d.ts +3 -0
- package/types/helpers/matchMedia.native.d.ts.map +1 -0
- package/types/helpers/themeable.d.ts +10 -0
- package/types/helpers/themeable.d.ts.map +1 -0
- package/types/helpers/validate.d.ts +4 -0
- package/types/helpers/validate.d.ts.map +1 -0
- package/types/hooks/useConstant.d.ts +2 -0
- package/types/hooks/useConstant.d.ts.map +1 -0
- package/types/hooks/useFeatures.d.ts +5 -0
- package/types/hooks/useFeatures.d.ts.map +1 -0
- package/types/hooks/useMedia.d.ts +16 -0
- package/types/hooks/useMedia.d.ts.map +1 -0
- package/types/hooks/usePressable.d.ts +3 -0
- package/types/hooks/usePressable.d.ts.map +1 -0
- package/types/hooks/useTheme.d.ts +20 -0
- package/types/hooks/useTheme.d.ts.map +1 -0
- package/types/index.d.ts +29 -0
- package/types/index.d.ts.map +1 -0
- package/types/static/postProcessStyles.d.ts +7 -0
- package/types/static/postProcessStyles.d.ts.map +1 -0
- package/types/static.d.ts +15 -0
- package/types/static.d.ts.map +1 -0
- package/types/styled.d.ts +21 -0
- package/types/styled.d.ts.map +1 -0
- package/types/types.d.ts +306 -0
- package/types/types.d.ts.map +1 -0
- package/types/views/Animated.d.ts +15 -0
- package/types/views/Animated.d.ts.map +1 -0
- package/types/views/Stack.d.ts +3 -0
- package/types/views/Stack.d.ts.map +1 -0
- package/types/views/Text.d.ts +3 -0
- package/types/views/Text.d.ts.map +1 -0
- package/types/views/TextAncestorContext.d.ts +3 -0
- package/types/views/TextAncestorContext.d.ts.map +1 -0
- package/types/views/Theme.d.ts +8 -0
- package/types/views/Theme.d.ts.map +1 -0
- package/types/views/ThemeContext.d.ts +18 -0
- package/types/views/ThemeContext.d.ts.map +1 -0
- package/types/views/ThemeInverse.d.ts +10 -0
- package/types/views/ThemeInverse.d.ts.map +1 -0
- package/types/views/ThemeManagerContext.d.ts +22 -0
- package/types/views/ThemeManagerContext.d.ts.map +1 -0
- package/types/views/ThemeProvider.d.ts +10 -0
- package/types/views/ThemeProvider.d.ts.map +1 -0
- package/.ultra.cache.json +0 -1
- package/_/constants/platform.js.map +0 -7
- package/_/createComponent.js.map +0 -7
- package/_/createTamagui.js.map +0 -7
- package/_/createTokens.js.map +0 -7
- package/_/helpers/addStylesUsingClassname.js +0 -32
- package/_/helpers/addStylesUsingClassname.js.map +0 -7
- package/_/helpers/createTamaguiProvider.js.map +0 -7
- package/_/helpers/extendStaticConfig.js +0 -176
- package/_/helpers/extendStaticConfig.js.map +0 -7
- package/_/helpers/getSplitStyles.js.map +0 -7
- package/_/helpers/matchMedia.js.map +0 -7
- package/_/hooks/useFeatures.js.map +0 -7
- package/_/hooks/useForceUpdate.js +0 -28
- package/_/hooks/useForceUpdate.js.map +0 -7
- package/_/hooks/useMedia.js.map +0 -7
- package/_/hooks/useTheme.js.map +0 -7
- package/_/index.js.map +0 -7
- package/_/static.js.map +0 -7
- package/_/styled.js.map +0 -7
- package/_/views/Theme.js.map +0 -7
- package/_/views/ThemeManagerContext.js.map +0 -7
- package/src/hooks/useForceUpdate.tsx +0 -26
- package/src/views/SafeAreaProvider.tsx +0 -33
- package/tsconfig.json +0 -8
- package/types.d.ts +0 -558
|
@@ -4,16 +4,22 @@ import { createContext } from "react";
|
|
|
4
4
|
class ThemeManager {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.name = "light";
|
|
7
|
+
this.parentName = null;
|
|
7
8
|
this.keys = new Map();
|
|
8
9
|
this.listeners = new Map();
|
|
9
|
-
this.
|
|
10
|
+
this.themeListeners = new Set();
|
|
10
11
|
this.theme = null;
|
|
11
12
|
}
|
|
12
|
-
setActiveTheme(
|
|
13
|
+
setActiveTheme({
|
|
14
|
+
name,
|
|
15
|
+
theme,
|
|
16
|
+
parentName
|
|
17
|
+
}) {
|
|
13
18
|
if (name === this.name)
|
|
14
19
|
return;
|
|
15
20
|
this.name = name;
|
|
16
21
|
this.theme = theme;
|
|
22
|
+
this.parentName = parentName || null;
|
|
17
23
|
this.update();
|
|
18
24
|
}
|
|
19
25
|
track(uuid, keys) {
|
|
@@ -30,12 +36,12 @@ class ThemeManager {
|
|
|
30
36
|
this.listeners.get(uuid)?.();
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
|
-
this.
|
|
39
|
+
this.themeListeners.forEach((cb) => cb(this.name, this));
|
|
34
40
|
}
|
|
35
41
|
onChangeTheme(cb) {
|
|
36
|
-
this.
|
|
42
|
+
this.themeListeners.add(cb);
|
|
37
43
|
return () => {
|
|
38
|
-
this.
|
|
44
|
+
this.themeListeners.delete(cb);
|
|
39
45
|
};
|
|
40
46
|
}
|
|
41
47
|
onUpdate(uuid, cb) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/views/ThemeManagerContext.tsx"],
|
|
4
|
-
"sourcesContent": ["import { createContext } from 'react'\n\nexport class ThemeManager {\n name: string | null = 'light'\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n
|
|
5
|
-
"mappings": ";;AAAA;
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport class ThemeManager {\n name: string | null = 'light'\n parentName: string | null = null\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n theme = null\n\n setActiveTheme({\n name,\n theme,\n parentName,\n }: {\n parentName?: string | null\n name: string | null\n theme?: any\n }) {\n if (name === this.name) return\n this.name = name\n this.theme = theme\n this.parentName = parentName || null\n this.update()\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n update() {\n if (!this.name) {\n this.keys.clear()\n }\n for (const [uuid, keys] of this.keys.entries()) {\n if (keys.size) {\n this.listeners.get(uuid)?.()\n }\n }\n this.themeListeners.forEach((cb) => cb(this.name, this))\n }\n\n onChangeTheme(cb: ThemeListener) {\n this.themeListeners.add(cb)\n return () => {\n this.themeListeners.delete(cb)\n }\n }\n\n onUpdate(uuid: any, cb: Function) {\n this.listeners.set(uuid, cb)\n return () => {\n this.listeners.delete(uuid)\n this.keys.delete(uuid)\n }\n }\n}\n\nexport const ThemeManagerContext = createContext<ThemeManager>(new ThemeManager())\n"],
|
|
5
|
+
"mappings": ";;AAAA;AAIO,mBAAmB;AAAA,EAAnB,cAJP;AAKE,gBAAsB;AACtB,sBAA4B;AAC5B,gBAAO,IAAI;AACX,qBAAY,IAAI;AAChB,0BAAiB,IAAI;AACrB,iBAAQ;AAAA;AAAA,EAER,eAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AACD,QAAI,SAAS,KAAK;AAAM;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,aAAa,cAAc;AAChC,SAAK;AAAA;AAAA,EAGP,MAAM,MAAW,MAAmB;AAClC,QAAI,CAAC,KAAK;AAAM;AAChB,SAAK,KAAK,IAAI,MAAM;AAAA;AAAA,EAGtB,SAAS;AACP,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,KAAK;AAAA;AAEZ,eAAW,CAAC,MAAM,SAAS,KAAK,KAAK,WAAW;AAC9C,UAAI,KAAK,MAAM;AACb,aAAK,UAAU,IAAI;AAAA;AAAA;AAGvB,SAAK,eAAe,QAAQ,CAAC,OAAO,GAAG,KAAK,MAAM;AAAA;AAAA,EAGpD,cAAc,IAAmB;AAC/B,SAAK,eAAe,IAAI;AACxB,WAAO,MAAM;AACX,WAAK,eAAe,OAAO;AAAA;AAAA;AAAA,EAI/B,SAAS,MAAW,IAAc;AAChC,SAAK,UAAU,IAAI,MAAM;AACzB,WAAO,MAAM;AACX,WAAK,UAAU,OAAO;AACtB,WAAK,KAAK,OAAO;AAAA;AAAA;AAAA;AApDhB;AAyDA,MAAM,sBAAsB,cAA4B,IAAI;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/core",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.12",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
|
-
"main": "dist/
|
|
6
|
-
"module": "dist
|
|
7
|
-
"typings": "types
|
|
5
|
+
"main": "dist/cjs",
|
|
6
|
+
"module": "dist",
|
|
7
|
+
"typings": "types",
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "tamagui-build",
|
|
10
10
|
"watch": "tamagui-build --watch"
|
|
11
11
|
},
|
|
12
|
+
"files": [
|
|
13
|
+
"types",
|
|
14
|
+
"dist",
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
12
17
|
"dependencies": {
|
|
13
|
-
"@tamagui/helpers": "^1.0.0-alpha.
|
|
18
|
+
"@tamagui/helpers": "^1.0.0-alpha.12",
|
|
19
|
+
"@tamagui/ow": "^0.28.1",
|
|
20
|
+
"@tamagui/use-debounce": "^1.0.0-alpha.12",
|
|
21
|
+
"@tamagui/use-force-update": "^1.0.0-alpha.12",
|
|
14
22
|
"react": "*",
|
|
15
|
-
"react-dom": "*"
|
|
16
|
-
"react-native-safe-area-context": "^3.3.0"
|
|
23
|
+
"react-dom": "*"
|
|
17
24
|
},
|
|
18
25
|
"peerDependencies": {
|
|
19
26
|
"react-native-web": "*"
|
|
20
27
|
},
|
|
21
28
|
"devDependencies": {
|
|
22
|
-
"@tamagui/build": "^1.0.0-alpha.
|
|
29
|
+
"@tamagui/build": "^1.0.0-alpha.12",
|
|
23
30
|
"@types/react": "^17.0.35",
|
|
24
31
|
"esbuild": "^0.11.20",
|
|
25
32
|
"typescript": "^4.4.4"
|
|
@@ -29,5 +36,6 @@
|
|
|
29
36
|
},
|
|
30
37
|
"engines": {
|
|
31
38
|
"node": ">=16"
|
|
32
|
-
}
|
|
39
|
+
},
|
|
40
|
+
"gitHead": "d50261a4e08d2212395af4f2d8f49555fc780c3e"
|
|
33
41
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useLayoutEffect } from 'react'
|
|
2
2
|
import { Platform } from 'react-native'
|
|
3
3
|
|
|
4
|
-
export const isWeb = process.env.TAMAGUI_TARGET
|
|
4
|
+
export const isWeb = process.env.TAMAGUI_TARGET === 'web' ? true : Platform?.OS === 'web'
|
|
5
5
|
export const isSSR = isWeb && typeof window === 'undefined'
|
|
6
6
|
export const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect
|
|
7
7
|
export const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')
|
package/src/createComponent.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { concatClassName, stylePropsView } from '@tamagui/helpers'
|
|
2
|
+
import { useForceUpdate } from '@tamagui/use-force-update'
|
|
2
3
|
import React, {
|
|
3
4
|
Children,
|
|
4
5
|
Fragment,
|
|
@@ -20,7 +21,6 @@ import { addStylesUsingClassname, useStylesAsClassname } from './helpers/addStyl
|
|
|
20
21
|
import { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'
|
|
21
22
|
import { getSplitStyles } from './helpers/getSplitStyles'
|
|
22
23
|
import { useFeatures } from './hooks/useFeatures'
|
|
23
|
-
import { useForceUpdate } from './hooks/useForceUpdate'
|
|
24
24
|
import { usePressable } from './hooks/usePressable'
|
|
25
25
|
import {
|
|
26
26
|
SpaceTokens,
|
|
@@ -68,6 +68,46 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
68
68
|
// see onConfiguredOnce below which attaches a name then to this component
|
|
69
69
|
|
|
70
70
|
const component = forwardRef<View, A>((props: any, forwardedRef) => {
|
|
71
|
+
const forceUpdate = useForceUpdate()
|
|
72
|
+
const features = useFeatures(props, { forceUpdate })
|
|
73
|
+
const manager = useContext(ThemeManagerContext)
|
|
74
|
+
const [state, set_] = useState(() => ({
|
|
75
|
+
hover: false,
|
|
76
|
+
press: false,
|
|
77
|
+
pressIn: false,
|
|
78
|
+
theme: manager.name,
|
|
79
|
+
}))
|
|
80
|
+
const set = (next: Partial<typeof state>) =>
|
|
81
|
+
set_((prev) => {
|
|
82
|
+
for (const key in next) {
|
|
83
|
+
if (prev[key] !== next[key]) {
|
|
84
|
+
return { ...prev, ...next }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return prev
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
// from react-native-web
|
|
91
|
+
if (process.env.NODE_ENV === 'development' && !isText && isWeb) {
|
|
92
|
+
Children.toArray(props.children).forEach((item) => {
|
|
93
|
+
if (typeof item === 'string') {
|
|
94
|
+
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false
|
|
100
|
+
const hostRef = useRef(null)
|
|
101
|
+
|
|
102
|
+
const theme = (manager.theme as any) || initialTheme
|
|
103
|
+
|
|
104
|
+
const {
|
|
105
|
+
viewProps: viewPropsIn,
|
|
106
|
+
pseudos,
|
|
107
|
+
style,
|
|
108
|
+
classNames,
|
|
109
|
+
} = getSplitStyles(props, staticConfig, theme)
|
|
110
|
+
|
|
71
111
|
const {
|
|
72
112
|
tag,
|
|
73
113
|
hitSlop,
|
|
@@ -101,40 +141,19 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
101
141
|
onStartShouldSetResponderCapture,
|
|
102
142
|
onMouseDown,
|
|
103
143
|
onClick,
|
|
104
|
-
// TODO feature load layou hook
|
|
105
|
-
onLayout,
|
|
106
|
-
} = props
|
|
107
144
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const manager = useContext(ThemeManagerContext)
|
|
111
|
-
const [state, set_] = useState(() => ({
|
|
112
|
-
hover: false,
|
|
113
|
-
press: false,
|
|
114
|
-
pressIn: false,
|
|
115
|
-
theme: manager.name,
|
|
116
|
-
}))
|
|
117
|
-
const set = (next: Partial<typeof state>) =>
|
|
118
|
-
set_((prev) => {
|
|
119
|
-
for (const key in next) {
|
|
120
|
-
if (prev[key] !== next[key]) {
|
|
121
|
-
return { ...prev, ...next }
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return prev
|
|
125
|
-
})
|
|
145
|
+
accessible,
|
|
146
|
+
accessibilityRole,
|
|
126
147
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)
|
|
132
|
-
}
|
|
133
|
-
})
|
|
134
|
-
}
|
|
148
|
+
// TODO feature load layout hook
|
|
149
|
+
onLayout,
|
|
150
|
+
...viewProps
|
|
151
|
+
} = viewPropsIn
|
|
135
152
|
|
|
136
|
-
|
|
137
|
-
|
|
153
|
+
if (!isWeb) {
|
|
154
|
+
if (accessible) viewProps.accessible = accessible
|
|
155
|
+
if (accessibilityRole) viewProps.accessibilityRole = accessibilityRole
|
|
156
|
+
}
|
|
138
157
|
|
|
139
158
|
if (isWeb) {
|
|
140
159
|
// from react-native-web
|
|
@@ -160,12 +179,6 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
160
179
|
|
|
161
180
|
const isTracking = useRef(false)
|
|
162
181
|
|
|
163
|
-
const { viewProps, pseudos, style, classNames } = getSplitStyles(
|
|
164
|
-
props,
|
|
165
|
-
staticConfig,
|
|
166
|
-
(manager.theme as any) || initialTheme
|
|
167
|
-
)
|
|
168
|
-
|
|
169
182
|
// hasEverHadEvents prevents repareting if you remove onPress or similar...
|
|
170
183
|
const internal = useRef<{ isMounted: boolean; hasEverHadEvents?: boolean }>()
|
|
171
184
|
if (!internal.current) {
|
|
@@ -228,6 +241,7 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
228
241
|
]
|
|
229
242
|
: [defaultsClassName, props.className, classNames, stylesClassNames]
|
|
230
243
|
|
|
244
|
+
// @ts-ignore we are optimizing using arguments
|
|
231
245
|
const className = concatClassName(...classList)
|
|
232
246
|
if (process.env.NODE_ENV === 'development') {
|
|
233
247
|
if (props['debug']) {
|
|
@@ -465,7 +479,7 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
465
479
|
} else {
|
|
466
480
|
if (!hasWarnedOnce) {
|
|
467
481
|
hasWarnedOnce = true
|
|
468
|
-
console.log('⚠️
|
|
482
|
+
console.log('⚠️ TODO account for default styles for media queries')
|
|
469
483
|
}
|
|
470
484
|
}
|
|
471
485
|
// @ts-ignore
|
|
@@ -488,10 +502,14 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
488
502
|
const res = component as any as StaticComponent<A, void>
|
|
489
503
|
|
|
490
504
|
// add extractable HoC
|
|
491
|
-
res['extractable'] = (Component: any) => {
|
|
505
|
+
res['extractable'] = (Component: any, conf?: StaticConfig) => {
|
|
492
506
|
Component['staticConfig'] = extendStaticConfig(res, {
|
|
507
|
+
...conf,
|
|
493
508
|
neverFlatten: true,
|
|
494
|
-
defaultProps:
|
|
509
|
+
defaultProps: {
|
|
510
|
+
...Component.defaultProps,
|
|
511
|
+
...conf?.defaultProps,
|
|
512
|
+
},
|
|
495
513
|
})
|
|
496
514
|
return Component
|
|
497
515
|
}
|
package/src/createFont.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { validateFont } from './helpers/validate'
|
|
1
2
|
import { GenericFont } from './types'
|
|
2
3
|
|
|
3
4
|
export const createFont = <A extends GenericFont>(font: A): A => {
|
|
5
|
+
if (process.env.NODE_ENV === 'development') {
|
|
6
|
+
validateFont(font)
|
|
7
|
+
}
|
|
8
|
+
|
|
4
9
|
// fills in any missing values based on size keys being standard
|
|
5
10
|
const sizeKeys = Object.keys(font.size)
|
|
6
11
|
|
package/src/createTamagui.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { getStyleRules } from '@tamagui/helpers'
|
|
|
2
2
|
|
|
3
3
|
import { Variable, createVariable, isVariable } from './createVariable'
|
|
4
4
|
import { createTamaguiProvider } from './helpers/createTamaguiProvider'
|
|
5
|
+
import { validateConfig } from './helpers/validate'
|
|
5
6
|
import { configureMedia } from './hooks/useMedia'
|
|
6
7
|
import {
|
|
7
8
|
CreateTamaguiConfig,
|
|
@@ -27,7 +28,9 @@ export type CreateTamaguiProps = TamaguiProviderProps &
|
|
|
27
28
|
let conf: TamaguiInternalConfig | null
|
|
28
29
|
|
|
29
30
|
export const getHasConfigured = () => !!conf
|
|
30
|
-
|
|
31
|
+
|
|
32
|
+
export const getTamagui = () => conf!
|
|
33
|
+
export const getTokens = () => conf!.tokensParsed
|
|
31
34
|
|
|
32
35
|
type ConfigListener = (conf: TamaguiInternalConfig) => void
|
|
33
36
|
const configListeners = new Set<ConfigListener>()
|
|
@@ -46,6 +49,12 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
46
49
|
): Conf extends CreateTamaguiConfig<infer A, infer B, infer C, infer D>
|
|
47
50
|
? TamaguiInternalConfig<A, B, C, D>
|
|
48
51
|
: unknown {
|
|
52
|
+
if (process.env.NODE_ENV === 'development') {
|
|
53
|
+
// config is re-run by the @tamagui/static, dont double validate
|
|
54
|
+
if (!config['parsed']) {
|
|
55
|
+
validateConfig(config)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
49
58
|
// test env loads a few times as it runs diff tests
|
|
50
59
|
if (conf) {
|
|
51
60
|
console.warn('Called createTamagui twice! Should never do so')
|
|
@@ -157,6 +166,7 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
157
166
|
themeConfig,
|
|
158
167
|
themeParsed,
|
|
159
168
|
tokensParsed,
|
|
169
|
+
parsed: true,
|
|
160
170
|
getCSS() {
|
|
161
171
|
return `${themeConfig.css}\n${[...getStyleRules()].join('\n')}`
|
|
162
172
|
},
|
package/src/createTokens.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Variable, createVariable } from './createVariable'
|
|
2
|
+
import { validateTokens } from './helpers/validate'
|
|
2
3
|
import { CreateTokens } from './types'
|
|
3
4
|
|
|
4
|
-
// tokens.color.dark.red ===>{ var: `color-dark-red`, val: '' }
|
|
5
|
+
// tokens.color.dark.red ===> { var: `color-dark-red`, val: '' }
|
|
5
6
|
|
|
6
7
|
export function createTokens<T extends CreateTokens>(tokens: T): MakeTokens<T> {
|
|
8
|
+
if (process.env.NODE_ENV === 'development') {
|
|
9
|
+
validateTokens(tokens)
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
return setupTokens(tokens) as any
|
|
8
13
|
}
|
|
9
14
|
|
package/src/createVariable.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isWeb } from '../constants/platform'
|
|
2
|
+
import { getTamagui } from '../createTamagui'
|
|
2
3
|
import { Variable } from '../createVariable'
|
|
3
4
|
import { StaticConfig, TamaguiInternalConfig } from '../types'
|
|
4
5
|
import { isObj } from './isObj'
|
|
@@ -9,7 +10,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
9
10
|
const defaultProps = c.defaultProps || {}
|
|
10
11
|
|
|
11
12
|
return (key: string, value: any, theme: any, props: any) => {
|
|
12
|
-
const conf =
|
|
13
|
+
const conf = getTamagui()
|
|
13
14
|
if (!conf) {
|
|
14
15
|
console.trace('no conf! err')
|
|
15
16
|
return
|
|
@@ -37,7 +38,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
37
38
|
: val
|
|
38
39
|
|
|
39
40
|
if (isObj(res)) {
|
|
40
|
-
resolveTokens(res, conf, fontFamily)
|
|
41
|
+
resolveTokens(res, conf, theme, fontFamily)
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
return res
|
|
@@ -53,7 +54,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
53
54
|
|
|
54
55
|
if (value && value[0] === '$') {
|
|
55
56
|
shouldReturn = true
|
|
56
|
-
value = getToken(key, value, conf, fontFamily)
|
|
57
|
+
value = getToken(key, value, conf, theme, fontFamily)
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
if (value instanceof Variable) {
|
|
@@ -69,19 +70,19 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
const resolveTokens = (res: any, conf: TamaguiInternalConfig, fontFamily: any) => {
|
|
73
|
+
const resolveTokens = (res: any, conf: TamaguiInternalConfig, theme: any, fontFamily: any) => {
|
|
73
74
|
for (const rKey in res) {
|
|
74
75
|
const fKey = conf.shorthands[rKey] || rKey
|
|
75
76
|
const val = res[rKey]
|
|
76
77
|
if (val instanceof Variable) {
|
|
77
78
|
res[fKey] = val.variable
|
|
78
79
|
} else if (typeof val === 'string') {
|
|
79
|
-
const fVal = val[0] === '$' ? getToken(fKey, val, conf, fontFamily) : val
|
|
80
|
+
const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily) : val
|
|
80
81
|
res[fKey] = fVal
|
|
81
82
|
} else {
|
|
82
83
|
if (isObj(val)) {
|
|
83
84
|
// for things like shadowOffset which is a sub-object
|
|
84
|
-
resolveTokens(val, conf, fontFamily)
|
|
85
|
+
resolveTokens(val, conf, theme, fontFamily)
|
|
85
86
|
}
|
|
86
87
|
// nullish values cant be tokens so need no exrta parsing
|
|
87
88
|
}
|
|
@@ -92,10 +93,17 @@ const getToken = (
|
|
|
92
93
|
key: string,
|
|
93
94
|
value: string,
|
|
94
95
|
{ tokensParsed, themeParsed }: TamaguiInternalConfig,
|
|
96
|
+
theme: any,
|
|
95
97
|
fontFamily: string | undefined = '$body'
|
|
96
98
|
) => {
|
|
97
99
|
if (themeParsed[value]) {
|
|
98
|
-
|
|
100
|
+
if (isWeb && themeParsed[value].variable) {
|
|
101
|
+
return themeParsed[value].variable
|
|
102
|
+
} else {
|
|
103
|
+
if (value && value[0] === '$') {
|
|
104
|
+
return theme[`${value.slice(1)}`]?.val || themeParsed[value]?.val
|
|
105
|
+
}
|
|
106
|
+
}
|
|
99
107
|
}
|
|
100
108
|
let valOrVar: any
|
|
101
109
|
if (key === 'fontFamily') {
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import { ViewStyle } from 'react-native'
|
|
9
9
|
|
|
10
10
|
import { isWeb } from '../constants/platform'
|
|
11
|
-
import { mediaQueryConfig } from '../hooks/useMedia'
|
|
11
|
+
import { mediaQueryConfig, mediaState } from '../hooks/useMedia'
|
|
12
12
|
import { StaticConfigParsed, ThemeObject } from '../types'
|
|
13
13
|
import { createMediaStyle } from './createMediaStyle'
|
|
14
14
|
import { fixNativeShadow } from './fixNativeShadow'
|
|
@@ -28,7 +28,6 @@ export const getSplitStyles = (
|
|
|
28
28
|
const validStyleProps = staticConfig.isText ? stylePropsText : validStyles
|
|
29
29
|
const viewProps: Record<string, any> = {}
|
|
30
30
|
const style: any[] = []
|
|
31
|
-
const blacklistProps = isSplittingDefaultProps ? blacklistDefaultProps : blacklistFinalProps
|
|
32
31
|
|
|
33
32
|
let pseudos: { hoverStyle?: ViewStyle; pressStyle?: ViewStyle } | null = null
|
|
34
33
|
let cur: ViewStyle | null = null
|
|
@@ -54,14 +53,15 @@ export const getSplitStyles = (
|
|
|
54
53
|
const mediaProps = { ...props, ...valInit }
|
|
55
54
|
// TODO media + hover
|
|
56
55
|
const mediaStyle = getSubStyle(valInit, staticConfig, theme, props)
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
|
|
57
|
+
if (isWeb) {
|
|
58
|
+
const mediaStyles = getStylesAtomic(mediaStyle)
|
|
59
|
+
if (process.env.NODE_ENV === 'development') {
|
|
60
|
+
if (props['debug']) {
|
|
61
|
+
console.log('mediaStyles', keyInit, { mediaProps, mediaStyle, mediaStyles })
|
|
62
|
+
}
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
for (const style of mediaStyles) {
|
|
64
|
-
if (isWeb) {
|
|
64
|
+
for (const style of mediaStyles) {
|
|
65
65
|
const out = createMediaStyle(style, mediaKey, mediaQueryConfig)
|
|
66
66
|
classNames = classNames || []
|
|
67
67
|
classNames.push(out.identifier)
|
|
@@ -70,8 +70,10 @@ export const getSplitStyles = (
|
|
|
70
70
|
if (process.env.NODE_ENV === 'development' && props['debug']) {
|
|
71
71
|
console.log('mediaProp', style.identifier, out, mediaProps, mediaStyle, mediaStyles)
|
|
72
72
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
if (mediaState[mediaKey]) {
|
|
76
|
+
style.push(mediaStyle)
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
continue
|
|
@@ -130,8 +132,9 @@ export const getSplitStyles = (
|
|
|
130
132
|
cur[key] = val
|
|
131
133
|
continue
|
|
132
134
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
|
|
136
|
+
// pass to view props
|
|
137
|
+
if (!staticConfig.variants || !(key in staticConfig.variants)) {
|
|
135
138
|
viewProps[key] = val
|
|
136
139
|
}
|
|
137
140
|
}
|
|
@@ -181,19 +184,6 @@ const getSubStyle = (
|
|
|
181
184
|
return styleOut
|
|
182
185
|
}
|
|
183
186
|
|
|
184
|
-
const blacklistDefaultProps = {
|
|
185
|
-
...validStyles,
|
|
186
|
-
...stylePropsText,
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
const blacklistFinalProps = {
|
|
190
|
-
...blacklistDefaultProps,
|
|
191
|
-
tag: true,
|
|
192
|
-
debug: true,
|
|
193
|
-
space: true,
|
|
194
|
-
hitSlop: true,
|
|
195
|
-
}
|
|
196
|
-
|
|
197
187
|
const mapTransformKeys = {
|
|
198
188
|
x: 'translateX',
|
|
199
189
|
y: 'translateY',
|
|
@@ -2,7 +2,15 @@ export const matchMedia =
|
|
|
2
2
|
(typeof window !== 'undefined' && window.matchMedia) ||
|
|
3
3
|
(function matchMediaFallback(query: string) {
|
|
4
4
|
return {
|
|
5
|
-
addListener() {
|
|
5
|
+
addListener() {
|
|
6
|
+
if (
|
|
7
|
+
process.env.NODE_ENV === 'development' &&
|
|
8
|
+
!process.env.IS_STATIC &&
|
|
9
|
+
process.env.TAMAGUI_TARGET !== 'web'
|
|
10
|
+
) {
|
|
11
|
+
console.log('warning: matchMedia not loading! Is native picking up .native.js files?')
|
|
12
|
+
}
|
|
13
|
+
},
|
|
6
14
|
removeListener() {},
|
|
7
15
|
matches: false,
|
|
8
16
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// published a patched version that works on native
|
|
2
|
+
import ow from '@tamagui/ow'
|
|
3
|
+
|
|
4
|
+
export const validateConfig = (conf: any) => {
|
|
5
|
+
if (!conf) {
|
|
6
|
+
console.warn('no conf?')
|
|
7
|
+
return
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
ow(conf, validConfig)
|
|
11
|
+
} catch (err: any) {
|
|
12
|
+
console.log('Given config:\n', JSON.stringify(conf, null, 2))
|
|
13
|
+
throw err
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const validConfig = ow.object.exactShape({
|
|
18
|
+
defaultTheme: ow.optional.string,
|
|
19
|
+
disableRootThemeClass: ow.optional.boolean,
|
|
20
|
+
shorthands: ow.optional.object.valuesOfType(ow.string),
|
|
21
|
+
themes: ow.object.valuesOfType(ow.object),
|
|
22
|
+
tokens: ow.object.valuesOfType(ow.object),
|
|
23
|
+
media: ow.object.valuesOfType(ow.object),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const validFont = ow.object.exactShape({
|
|
27
|
+
family: ow.string,
|
|
28
|
+
size: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
29
|
+
lineHeight: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
30
|
+
weight: ow.object.nonEmpty.valuesOfType(ow.string),
|
|
31
|
+
letterSpacing: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const validTokens = ow.object.exactShape({
|
|
35
|
+
font: ow.object.valuesOfType(validFont),
|
|
36
|
+
size: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
37
|
+
space: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
38
|
+
zIndex: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
39
|
+
radius: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
40
|
+
color: ow.object.nonEmpty.valuesOfType(ow.string),
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
export const validateTokens = (tokens: any) => {
|
|
44
|
+
try {
|
|
45
|
+
ow(tokens, validTokens)
|
|
46
|
+
} catch (err: any) {
|
|
47
|
+
console.log('Given tokens:\n', JSON.stringify(tokens, null, 2))
|
|
48
|
+
throw err
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const validateFont = (font: any) => {
|
|
53
|
+
try {
|
|
54
|
+
ow(font, validFont)
|
|
55
|
+
} catch (err: any) {
|
|
56
|
+
console.log('Given font:\n', JSON.stringify(font, null, 2))
|
|
57
|
+
throw err
|
|
58
|
+
}
|
|
59
|
+
}
|