@tamagui/core 1.0.1-beta.19 → 1.0.1-beta.191

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.
Files changed (764) hide show
  1. package/dist/cjs/Tamagui.js +14 -12
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +80 -0
  4. package/dist/cjs/addTheme.js.map +7 -0
  5. package/dist/cjs/{conf.js → config.js} +33 -19
  6. package/dist/cjs/config.js.map +7 -0
  7. package/dist/cjs/constants/constants.js +11 -23
  8. package/dist/cjs/constants/constants.js.map +2 -2
  9. package/dist/cjs/{helpers/nativeGestureHandler.js → constants/isDevTools.js} +8 -8
  10. package/dist/cjs/constants/isDevTools.js.map +7 -0
  11. package/dist/cjs/constants/platform.js +32 -16
  12. package/dist/cjs/constants/platform.js.map +2 -2
  13. package/dist/cjs/constants/platform.native.js +62 -0
  14. package/dist/cjs/constants/platform.native.js.map +7 -0
  15. package/dist/cjs/contexts/ButtonInsideButtonContext.js +1 -0
  16. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +1 -1
  17. package/dist/cjs/contexts/FontLanguageContext.js +30 -0
  18. package/dist/cjs/contexts/FontLanguageContext.js.map +7 -0
  19. package/dist/cjs/{views → contexts}/TextAncestorContext.js +11 -13
  20. package/dist/cjs/contexts/TextAncestorContext.js.map +7 -0
  21. package/dist/cjs/{ThemeContext.js → contexts/ThemeContext.js} +1 -0
  22. package/dist/cjs/contexts/ThemeContext.js.map +7 -0
  23. package/dist/cjs/createComponent.js +925 -484
  24. package/dist/cjs/createComponent.js.map +3 -3
  25. package/dist/cjs/createFont.js +5 -8
  26. package/dist/cjs/createFont.js.map +2 -2
  27. package/dist/cjs/createShorthands.js +1 -2
  28. package/dist/cjs/createShorthands.js.map +2 -2
  29. package/dist/cjs/createTamagui.js +129 -177
  30. package/dist/cjs/createTamagui.js.map +3 -3
  31. package/dist/cjs/createTheme.js +4 -2
  32. package/dist/cjs/createTheme.js.map +2 -2
  33. package/dist/cjs/createTokens.js +5 -25
  34. package/dist/cjs/createTokens.js.map +2 -2
  35. package/dist/cjs/createVariable.js +52 -28
  36. package/dist/cjs/createVariable.js.map +2 -2
  37. package/dist/cjs/createVariables.js +52 -0
  38. package/dist/cjs/createVariables.js.map +7 -0
  39. package/dist/cjs/helpers/RNComponents.js +12 -11
  40. package/dist/cjs/helpers/RNComponents.js.map +2 -2
  41. package/dist/cjs/{ThemeManager.js → helpers/ThemeManager.js} +54 -52
  42. package/dist/cjs/helpers/ThemeManager.js.map +7 -0
  43. package/dist/cjs/helpers/areEqualSets.js +3 -3
  44. package/dist/cjs/helpers/areEqualSets.js.map +1 -1
  45. package/dist/cjs/helpers/assignNativePropsToWeb.js +188 -0
  46. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +7 -0
  47. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +30 -0
  48. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +7 -0
  49. package/dist/cjs/helpers/calc.js +71 -0
  50. package/dist/cjs/helpers/calc.js.map +7 -0
  51. package/dist/cjs/helpers/createMediaStyle.js +17 -9
  52. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  53. package/dist/cjs/helpers/createPropMapper.js +272 -122
  54. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  55. package/dist/cjs/helpers/createShallowUpdate.js +14 -25
  56. package/dist/cjs/helpers/createShallowUpdate.js.map +2 -2
  57. package/dist/cjs/helpers/expandStyle.js +90 -0
  58. package/dist/cjs/helpers/expandStyle.js.map +7 -0
  59. package/dist/cjs/helpers/expandStyles.js +115 -0
  60. package/dist/cjs/helpers/expandStyles.js.map +7 -0
  61. package/dist/cjs/helpers/extendStaticConfig.js +49 -37
  62. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  63. package/dist/cjs/helpers/fixNativeShadow.js +3 -3
  64. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  65. package/dist/cjs/helpers/getAnimationDriver.js +32 -0
  66. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  67. package/dist/cjs/helpers/getExpandedShorthands.js +4 -5
  68. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  69. package/dist/cjs/helpers/{getTextSize.js → getFont.js} +22 -12
  70. package/dist/cjs/helpers/getFont.js.map +7 -0
  71. package/dist/cjs/helpers/getFontLanguage.js +29 -0
  72. package/dist/cjs/helpers/getFontLanguage.js.map +7 -0
  73. package/dist/cjs/helpers/getSize.js +19 -10
  74. package/dist/cjs/helpers/getSize.js.map +2 -2
  75. package/dist/cjs/helpers/getSplitStyles.js +381 -208
  76. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  77. package/dist/cjs/helpers/getStackSize.js +46 -0
  78. package/dist/cjs/helpers/getStackSize.js.map +7 -0
  79. package/dist/cjs/helpers/getStylesAtomic.js +199 -133
  80. package/dist/cjs/helpers/getStylesAtomic.js.map +3 -3
  81. package/dist/cjs/helpers/getStylesAtomic.native.js +1 -2
  82. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  83. package/dist/cjs/helpers/getThemeCSSRules.js +103 -0
  84. package/dist/cjs/helpers/getThemeCSSRules.js.map +7 -0
  85. package/dist/cjs/{nativeGestureHandler.native.js → helpers/getThemeCSSRules.native.js} +18 -5
  86. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +7 -0
  87. package/dist/cjs/helpers/getVariantExtras.js +88 -0
  88. package/dist/cjs/helpers/getVariantExtras.js.map +7 -0
  89. package/dist/cjs/helpers/insertStyleRule.js +83 -52
  90. package/dist/cjs/helpers/insertStyleRule.js.map +3 -3
  91. package/dist/cjs/helpers/isObj.js +2 -2
  92. package/dist/cjs/helpers/isObj.js.map +1 -1
  93. package/dist/cjs/helpers/isTamaguiComponent.js +37 -0
  94. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  95. package/dist/cjs/helpers/isTamaguiElement.js +5 -5
  96. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  97. package/dist/cjs/helpers/matchMedia.js +7 -6
  98. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  99. package/dist/cjs/helpers/matchMedia.native.js +6 -3
  100. package/dist/cjs/helpers/matchMedia.native.js.map +2 -2
  101. package/dist/cjs/helpers/mergeProps.js +54 -0
  102. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  103. package/dist/cjs/helpers/mergeTransform.js +42 -0
  104. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  105. package/dist/cjs/helpers/normalizeColor.js +80 -0
  106. package/dist/cjs/helpers/normalizeColor.js.map +7 -0
  107. package/dist/cjs/helpers/normalizeValueWithProperty.js +93 -0
  108. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +7 -0
  109. package/dist/cjs/helpers/proxyThemeVariables.js +7 -4
  110. package/dist/cjs/helpers/proxyThemeVariables.js.map +2 -2
  111. package/dist/cjs/helpers/pseudoDescriptors.js +42 -0
  112. package/dist/cjs/helpers/pseudoDescriptors.js.map +7 -0
  113. package/dist/cjs/helpers/registerCSSVariable.js +40 -0
  114. package/dist/cjs/helpers/registerCSSVariable.js.map +7 -0
  115. package/dist/cjs/helpers/{wrapThemeManagerContext.js → startTransition.js} +12 -15
  116. package/dist/cjs/helpers/startTransition.js.map +7 -0
  117. package/dist/cjs/helpers/themeable.js +17 -40
  118. package/dist/cjs/helpers/themeable.js.map +3 -3
  119. package/dist/cjs/helpers/themes.js +79 -0
  120. package/dist/cjs/helpers/themes.js.map +7 -0
  121. package/dist/cjs/helpers/useShallowSetState.js +44 -0
  122. package/dist/cjs/helpers/useShallowSetState.js.map +7 -0
  123. package/dist/cjs/helpers/validate.js +1 -122
  124. package/dist/cjs/helpers/validate.js.map +3 -3
  125. package/dist/cjs/helpers/withStaticProperties.js +3 -3
  126. package/dist/cjs/helpers/withStaticProperties.js.map +1 -1
  127. package/dist/cjs/hooks/getThemeUnwrapped.js +39 -0
  128. package/dist/cjs/hooks/getThemeUnwrapped.js.map +7 -0
  129. package/dist/cjs/hooks/useConstant.js +4 -2
  130. package/dist/cjs/hooks/useConstant.js.map +2 -2
  131. package/dist/cjs/hooks/useDidFinishSSR.js +60 -0
  132. package/dist/cjs/hooks/useDidFinishSSR.js.map +7 -0
  133. package/dist/cjs/hooks/useId.js +3 -33
  134. package/dist/cjs/hooks/useId.js.map +2 -2
  135. package/dist/cjs/hooks/useIsMounted.js +3 -4
  136. package/dist/cjs/hooks/useIsMounted.js.map +2 -2
  137. package/dist/cjs/hooks/useIsSSR.js +46 -0
  138. package/dist/cjs/hooks/useIsSSR.js.map +7 -0
  139. package/dist/cjs/hooks/useIsTouchDevice.js +11 -9
  140. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  141. package/dist/cjs/hooks/useMedia.js +162 -113
  142. package/dist/cjs/hooks/useMedia.js.map +3 -3
  143. package/dist/cjs/hooks/usePressable.js +4 -18
  144. package/dist/cjs/hooks/usePressable.js.map +1 -1
  145. package/dist/cjs/hooks/useSafeRef.js +60 -0
  146. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  147. package/dist/cjs/hooks/useServerHooks.js +36 -0
  148. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  149. package/dist/cjs/hooks/useTheme.js +166 -132
  150. package/dist/cjs/hooks/useTheme.js.map +3 -3
  151. package/dist/cjs/hooks/useUnmountEffect.js +1 -2
  152. package/dist/cjs/hooks/useUnmountEffect.js.map +1 -1
  153. package/dist/cjs/index.js +59 -21
  154. package/dist/cjs/index.js.map +2 -2
  155. package/dist/cjs/injectStyles.js +40 -0
  156. package/dist/cjs/injectStyles.js.map +7 -0
  157. package/dist/cjs/insertFont.js +93 -0
  158. package/dist/cjs/insertFont.js.map +7 -0
  159. package/dist/cjs/static.js +22 -15
  160. package/dist/cjs/static.js.map +2 -2
  161. package/dist/cjs/styled.js +47 -44
  162. package/dist/cjs/styled.js.map +2 -2
  163. package/dist/cjs/types-rnw.js +1 -0
  164. package/dist/cjs/types-rnw.js.map +2 -2
  165. package/dist/cjs/types.js +1 -0
  166. package/dist/cjs/types.js.map +2 -2
  167. package/dist/cjs/updateTheme.js +47 -0
  168. package/dist/cjs/updateTheme.js.map +7 -0
  169. package/dist/cjs/vendor/Pressability.js +32 -0
  170. package/dist/cjs/vendor/Pressability.js.map +7 -0
  171. package/dist/cjs/vendor/Pressability.native.js +32 -0
  172. package/dist/cjs/vendor/Pressability.native.js.map +7 -0
  173. package/dist/cjs/views/FontLanguage.js +38 -0
  174. package/dist/cjs/views/FontLanguage.js.map +7 -0
  175. package/dist/cjs/views/FontLanguage.native.js +38 -0
  176. package/dist/cjs/views/FontLanguage.native.js.map +7 -0
  177. package/dist/cjs/{helpers/nativeGestureHandler.native.js → views/FontLanguage.types.js} +4 -5
  178. package/dist/cjs/views/FontLanguage.types.js.map +7 -0
  179. package/dist/cjs/views/Slot.js +64 -72
  180. package/dist/cjs/views/Slot.js.map +2 -2
  181. package/dist/cjs/views/Stack.js +4 -19
  182. package/dist/cjs/views/Stack.js.map +1 -1
  183. package/dist/cjs/views/TamaguiProvider.js +82 -0
  184. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  185. package/dist/cjs/views/Text.js +28 -29
  186. package/dist/cjs/views/Text.js.map +2 -2
  187. package/dist/cjs/views/Theme.js +43 -21
  188. package/dist/cjs/views/Theme.js.map +3 -3
  189. package/dist/cjs/views/ThemeInverse.js +25 -25
  190. package/dist/cjs/views/ThemeInverse.js.map +2 -2
  191. package/dist/cjs/views/ThemeProvider.js +35 -23
  192. package/dist/cjs/views/ThemeProvider.js.map +3 -3
  193. package/dist/cjs/views/ThemeReset.js +18 -12
  194. package/dist/cjs/views/ThemeReset.js.map +3 -3
  195. package/dist/esm/Tamagui.js +8 -11
  196. package/dist/esm/Tamagui.js.map +2 -2
  197. package/dist/esm/addTheme.js +56 -0
  198. package/dist/esm/addTheme.js.map +7 -0
  199. package/dist/esm/config.js +45 -0
  200. package/dist/esm/config.js.map +7 -0
  201. package/dist/esm/constants/constants.js +2 -2
  202. package/dist/esm/constants/constants.js.map +2 -2
  203. package/dist/esm/constants/isDevTools.js +5 -0
  204. package/dist/esm/constants/isDevTools.js.map +7 -0
  205. package/dist/esm/constants/platform.js +25 -12
  206. package/dist/esm/constants/platform.js.map +2 -2
  207. package/dist/esm/constants/platform.native.js +28 -0
  208. package/dist/esm/constants/platform.native.js.map +7 -0
  209. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  210. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +1 -1
  211. package/dist/esm/contexts/FontLanguageContext.js +6 -0
  212. package/dist/esm/contexts/FontLanguageContext.js.map +7 -0
  213. package/dist/esm/contexts/TextAncestorContext.js +17 -0
  214. package/dist/esm/contexts/TextAncestorContext.js.map +7 -0
  215. package/dist/esm/{ThemeContext.js → contexts/ThemeContext.js} +0 -0
  216. package/dist/esm/contexts/ThemeContext.js.map +7 -0
  217. package/dist/esm/createComponent.js +891 -389
  218. package/dist/esm/createComponent.js.map +3 -3
  219. package/dist/esm/createFont.js +4 -9
  220. package/dist/esm/createFont.js.map +2 -2
  221. package/dist/esm/createShorthands.js +0 -3
  222. package/dist/esm/createShorthands.js.map +2 -2
  223. package/dist/esm/createTamagui.js +128 -158
  224. package/dist/esm/createTamagui.js.map +3 -3
  225. package/dist/esm/createTheme.js +3 -3
  226. package/dist/esm/createTheme.js.map +2 -2
  227. package/dist/esm/createTokens.js +3 -24
  228. package/dist/esm/createTokens.js.map +2 -2
  229. package/dist/esm/createVariable.js +47 -26
  230. package/dist/esm/createVariable.js.map +2 -2
  231. package/dist/esm/createVariables.js +28 -0
  232. package/dist/esm/createVariables.js.map +7 -0
  233. package/dist/esm/helpers/RNComponents.js +11 -8
  234. package/dist/esm/helpers/RNComponents.js.map +2 -2
  235. package/dist/esm/{ThemeManager.js → helpers/ThemeManager.js} +53 -53
  236. package/dist/esm/helpers/ThemeManager.js.map +7 -0
  237. package/dist/esm/helpers/areEqualSets.js +2 -4
  238. package/dist/esm/helpers/areEqualSets.js.map +1 -1
  239. package/dist/esm/helpers/assignNativePropsToWeb.js +164 -0
  240. package/dist/esm/helpers/assignNativePropsToWeb.js.map +7 -0
  241. package/dist/esm/helpers/assignNativePropsToWeb.native.js +6 -0
  242. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +7 -0
  243. package/dist/esm/helpers/calc.js +47 -0
  244. package/dist/esm/helpers/calc.js.map +7 -0
  245. package/dist/esm/helpers/createMediaStyle.js +16 -10
  246. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  247. package/dist/esm/helpers/createPropMapper.js +267 -123
  248. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  249. package/dist/esm/helpers/createShallowUpdate.js +13 -12
  250. package/dist/esm/helpers/createShallowUpdate.js.map +2 -2
  251. package/dist/esm/helpers/expandStyle.js +66 -0
  252. package/dist/esm/helpers/expandStyle.js.map +7 -0
  253. package/dist/esm/helpers/expandStyles.js +89 -0
  254. package/dist/esm/helpers/expandStyles.js.map +7 -0
  255. package/dist/esm/helpers/extendStaticConfig.js +35 -28
  256. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  257. package/dist/esm/helpers/fixNativeShadow.js +2 -4
  258. package/dist/esm/helpers/fixNativeShadow.js.map +1 -1
  259. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  260. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  261. package/dist/esm/helpers/getExpandedShorthands.js +2 -5
  262. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  263. package/dist/esm/helpers/{getTextSize.js → getFont.js} +17 -9
  264. package/dist/esm/helpers/getFont.js.map +7 -0
  265. package/dist/esm/helpers/getFontLanguage.js +5 -0
  266. package/dist/esm/helpers/getFontLanguage.js.map +7 -0
  267. package/dist/esm/helpers/getSize.js +16 -10
  268. package/dist/esm/helpers/getSize.js.map +2 -2
  269. package/dist/esm/helpers/getSplitStyles.js +364 -188
  270. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  271. package/dist/esm/helpers/getStackSize.js +22 -0
  272. package/dist/esm/helpers/getStackSize.js.map +7 -0
  273. package/dist/esm/helpers/getStylesAtomic.js +187 -108
  274. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  275. package/dist/esm/helpers/getStylesAtomic.native.js +0 -3
  276. package/dist/esm/helpers/getStylesAtomic.native.js.map +1 -1
  277. package/dist/esm/helpers/getThemeCSSRules.js +79 -0
  278. package/dist/esm/helpers/getThemeCSSRules.js.map +7 -0
  279. package/dist/esm/helpers/getThemeCSSRules.native.js +7 -0
  280. package/dist/esm/helpers/getThemeCSSRules.native.js.map +7 -0
  281. package/dist/esm/helpers/getVariantExtras.js +63 -0
  282. package/dist/esm/helpers/getVariantExtras.js.map +7 -0
  283. package/dist/esm/helpers/insertStyleRule.js +78 -50
  284. package/dist/esm/helpers/insertStyleRule.js.map +3 -3
  285. package/dist/esm/helpers/isObj.js +1 -3
  286. package/dist/esm/helpers/isObj.js.map +1 -1
  287. package/dist/esm/helpers/isTamaguiComponent.js +13 -0
  288. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  289. package/dist/esm/helpers/isTamaguiElement.js +4 -6
  290. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  291. package/dist/esm/helpers/matchMedia.js +6 -7
  292. package/dist/esm/helpers/matchMedia.js.map +2 -2
  293. package/dist/esm/helpers/matchMedia.native.js +1 -3
  294. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  295. package/dist/esm/helpers/mergeProps.js +30 -0
  296. package/dist/esm/helpers/mergeProps.js.map +7 -0
  297. package/dist/esm/helpers/mergeTransform.js +17 -0
  298. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  299. package/dist/esm/helpers/normalizeColor.js +49 -0
  300. package/dist/esm/helpers/normalizeColor.js.map +7 -0
  301. package/dist/esm/helpers/normalizeValueWithProperty.js +69 -0
  302. package/dist/esm/helpers/normalizeValueWithProperty.js.map +7 -0
  303. package/dist/esm/helpers/proxyThemeVariables.js +6 -5
  304. package/dist/esm/helpers/proxyThemeVariables.js.map +2 -2
  305. package/dist/esm/helpers/pseudoDescriptors.js +18 -0
  306. package/dist/esm/helpers/pseudoDescriptors.js.map +7 -0
  307. package/dist/esm/helpers/registerCSSVariable.js +14 -0
  308. package/dist/esm/helpers/registerCSSVariable.js.map +7 -0
  309. package/dist/esm/helpers/startTransition.js +6 -0
  310. package/dist/esm/helpers/startTransition.js.map +7 -0
  311. package/dist/esm/helpers/themeable.js +11 -9
  312. package/dist/esm/helpers/themeable.js.map +2 -2
  313. package/dist/esm/helpers/themes.js +54 -0
  314. package/dist/esm/helpers/themes.js.map +7 -0
  315. package/dist/esm/helpers/useShallowSetState.js +20 -0
  316. package/dist/esm/helpers/useShallowSetState.js.map +7 -0
  317. package/dist/esm/helpers/validate.js +0 -75
  318. package/dist/esm/helpers/validate.js.map +3 -3
  319. package/dist/esm/helpers/withStaticProperties.js +2 -4
  320. package/dist/esm/helpers/withStaticProperties.js.map +1 -1
  321. package/dist/esm/hooks/getThemeUnwrapped.js +14 -0
  322. package/dist/esm/hooks/getThemeUnwrapped.js.map +7 -0
  323. package/dist/esm/hooks/useConstant.js +4 -4
  324. package/dist/esm/hooks/useConstant.js.map +2 -2
  325. package/dist/esm/hooks/useDidFinishSSR.js +35 -0
  326. package/dist/esm/hooks/useDidFinishSSR.js.map +7 -0
  327. package/dist/esm/hooks/useId.js +1 -31
  328. package/dist/esm/hooks/useId.js.map +2 -2
  329. package/dist/esm/hooks/useIsMounted.js +1 -4
  330. package/dist/esm/hooks/useIsMounted.js.map +2 -2
  331. package/dist/esm/hooks/useIsSSR.js +22 -0
  332. package/dist/esm/hooks/useIsSSR.js.map +7 -0
  333. package/dist/esm/hooks/useIsTouchDevice.js +10 -10
  334. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  335. package/dist/esm/hooks/useMedia.js +157 -103
  336. package/dist/esm/hooks/useMedia.js.map +3 -3
  337. package/dist/esm/hooks/usePressable.js +2 -4
  338. package/dist/esm/hooks/usePressable.js.map +1 -1
  339. package/dist/esm/hooks/useSafeRef.js +36 -0
  340. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  341. package/dist/esm/hooks/useServerHooks.js +11 -0
  342. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  343. package/dist/esm/hooks/useTheme.js +159 -109
  344. package/dist/esm/hooks/useTheme.js.map +3 -3
  345. package/dist/esm/hooks/useUnmountEffect.js +0 -3
  346. package/dist/esm/hooks/useUnmountEffect.js.map +1 -1
  347. package/dist/esm/index.js +51 -13
  348. package/dist/esm/index.js.map +2 -2
  349. package/dist/esm/injectStyles.js +16 -0
  350. package/dist/esm/injectStyles.js.map +7 -0
  351. package/dist/esm/insertFont.js +67 -0
  352. package/dist/esm/insertFont.js.map +7 -0
  353. package/dist/esm/static.js +15 -15
  354. package/dist/esm/static.js.map +2 -2
  355. package/dist/esm/styled.js +40 -12
  356. package/dist/esm/styled.js.map +2 -2
  357. package/dist/esm/types-rnw.js +0 -0
  358. package/dist/esm/types-rnw.js.map +0 -0
  359. package/dist/esm/types.js +0 -0
  360. package/dist/esm/types.js.map +0 -0
  361. package/dist/esm/updateTheme.js +23 -0
  362. package/dist/esm/updateTheme.js.map +7 -0
  363. package/dist/esm/vendor/Pressability.js +7 -0
  364. package/dist/esm/vendor/Pressability.js.map +7 -0
  365. package/dist/esm/vendor/Pressability.native.js +7 -0
  366. package/dist/esm/vendor/Pressability.native.js.map +7 -0
  367. package/dist/esm/views/FontLanguage.js +14 -0
  368. package/dist/esm/views/FontLanguage.js.map +7 -0
  369. package/dist/esm/views/FontLanguage.native.js +14 -0
  370. package/dist/esm/views/FontLanguage.native.js.map +7 -0
  371. package/dist/esm/views/FontLanguage.types.js +1 -0
  372. package/dist/{cjs/defaultComponentState.js.map → esm/views/FontLanguage.types.js.map} +0 -0
  373. package/dist/esm/views/Slot.js +55 -37
  374. package/dist/esm/views/Slot.js.map +2 -2
  375. package/dist/esm/views/Stack.js +0 -0
  376. package/dist/esm/views/Stack.js.map +1 -1
  377. package/dist/esm/views/TamaguiProvider.js +52 -0
  378. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  379. package/dist/esm/views/Text.js +13 -5
  380. package/dist/esm/views/Text.js.map +2 -2
  381. package/dist/esm/views/Theme.js +35 -19
  382. package/dist/esm/views/Theme.js.map +3 -3
  383. package/dist/esm/views/ThemeInverse.js +22 -20
  384. package/dist/esm/views/ThemeInverse.js.map +2 -2
  385. package/dist/esm/views/ThemeProvider.js +28 -21
  386. package/dist/esm/views/ThemeProvider.js.map +2 -2
  387. package/dist/esm/views/ThemeReset.js +13 -12
  388. package/dist/esm/views/ThemeReset.js.map +2 -2
  389. package/package.json +49 -16
  390. package/reset.css +25 -4
  391. package/src/Tamagui.ts +44 -0
  392. package/src/addTheme.ts +68 -0
  393. package/src/config.ts +45 -0
  394. package/src/constants/constants.ts +15 -0
  395. package/src/constants/isDevTools.ts +6 -0
  396. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  397. package/src/contexts/FontLanguageContext.tsx +5 -0
  398. package/src/contexts/TextAncestorContext.tsx +10 -0
  399. package/src/contexts/ThemeContext.tsx +5 -0
  400. package/src/createComponent.tsx +1601 -0
  401. package/src/createFont.ts +29 -0
  402. package/src/createShorthands.ts +7 -0
  403. package/src/createTamagui.ts +229 -0
  404. package/src/createTheme.ts +13 -0
  405. package/src/createTokens.ts +35 -0
  406. package/src/createVariable.ts +85 -0
  407. package/src/createVariables.ts +42 -0
  408. package/src/helpers/RNComponents.tsx +14 -0
  409. package/src/helpers/ThemeManager.tsx +235 -0
  410. package/src/helpers/areEqualSets.tsx +9 -0
  411. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  412. package/src/helpers/assignNativePropsToWeb.tsx +178 -0
  413. package/src/helpers/calc.ts +68 -0
  414. package/src/helpers/createMediaStyle.ts +48 -0
  415. package/src/helpers/createPropMapper.ts +526 -0
  416. package/src/helpers/expandStyle.ts +81 -0
  417. package/src/helpers/expandStyles.ts +107 -0
  418. package/src/helpers/extendStaticConfig.ts +76 -0
  419. package/src/helpers/fixNativeShadow.tsx +2 -0
  420. package/src/helpers/getAnimationDriver.tsx +5 -0
  421. package/src/helpers/getExpandedShorthands.ts +15 -0
  422. package/src/helpers/getFont.tsx +43 -0
  423. package/src/helpers/getFontLanguage.ts +2 -0
  424. package/src/helpers/getSize.ts +22 -0
  425. package/src/helpers/getSplitStyles.tsx +738 -0
  426. package/src/helpers/getStackSize.ts +22 -0
  427. package/src/helpers/getStylesAtomic.native.ts +3 -0
  428. package/src/helpers/getStylesAtomic.ts +292 -0
  429. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  430. package/src/helpers/getThemeCSSRules.ts +105 -0
  431. package/src/helpers/getVariantExtras.tsx +84 -0
  432. package/src/helpers/insertStyleRule.tsx +150 -0
  433. package/src/helpers/isObj.ts +1 -0
  434. package/src/helpers/isTamaguiComponent.tsx +15 -0
  435. package/src/helpers/isTamaguiElement.tsx +12 -0
  436. package/src/helpers/matchMedia.native.ts +6 -0
  437. package/src/helpers/matchMedia.ts +16 -0
  438. package/src/helpers/mergeProps.ts +56 -0
  439. package/src/helpers/mergeTransform.ts +16 -0
  440. package/src/helpers/normalizeColor.ts +53 -0
  441. package/src/helpers/normalizeValueWithProperty.ts +80 -0
  442. package/src/helpers/proxyThemeVariables.tsx +18 -0
  443. package/src/helpers/pseudoDescriptors.ts +18 -0
  444. package/src/helpers/registerCSSVariable.ts +11 -0
  445. package/src/helpers/startTransition.ts +4 -0
  446. package/src/helpers/themeable.tsx +45 -0
  447. package/src/helpers/themes.ts +69 -0
  448. package/src/helpers/useShallowSetState.tsx +20 -0
  449. package/src/helpers/validate.ts +80 -0
  450. package/src/helpers/withStaticProperties.tsx +7 -0
  451. package/src/hooks/getThemeUnwrapped.tsx +8 -0
  452. package/src/hooks/useConstant.tsx +19 -0
  453. package/src/hooks/useId.tsx +1 -0
  454. package/src/hooks/useIsMounted.ts +16 -0
  455. package/src/hooks/useIsTouchDevice.tsx +20 -0
  456. package/src/hooks/useMedia.tsx +266 -0
  457. package/src/hooks/usePressable.tsx +9 -0
  458. package/src/hooks/useSafeRef.ts +49 -0
  459. package/src/hooks/useServerHooks.tsx +12 -0
  460. package/src/hooks/useTheme.tsx +299 -0
  461. package/src/hooks/useUnmountEffect.ts +5 -0
  462. package/src/index.ts +83 -0
  463. package/src/injectStyles.ts +20 -0
  464. package/src/insertFont.ts +70 -0
  465. package/src/static.ts +15 -0
  466. package/src/styled.tsx +198 -0
  467. package/src/types-rnw.tsx +162 -0
  468. package/src/types.tsx +1326 -0
  469. package/src/updateTheme.ts +23 -0
  470. package/src/vendor/Pressability.native.tsx +3 -0
  471. package/src/vendor/Pressability.tsx +2 -0
  472. package/src/views/FontLanguage.native.tsx +9 -0
  473. package/src/views/FontLanguage.tsx +18 -0
  474. package/src/views/FontLanguage.types.ts +13 -0
  475. package/src/views/Slot.tsx +147 -0
  476. package/src/views/Stack.tsx +24 -0
  477. package/src/views/TamaguiProvider.tsx +56 -0
  478. package/src/views/Text.tsx +79 -0
  479. package/src/views/Theme.tsx +72 -0
  480. package/src/views/ThemeInverse.tsx +33 -0
  481. package/src/views/ThemeProvider.tsx +63 -0
  482. package/src/views/ThemeReset.tsx +43 -0
  483. package/types/Tamagui.d.ts +7 -9
  484. package/types/addTheme.d.ts +11 -0
  485. package/types/config.d.ts +47 -0
  486. package/types/constants/constants.d.ts +1 -1
  487. package/types/constants/isDevTools.d.ts +2 -0
  488. package/types/constants/platform.d.ts +7 -6
  489. package/types/constants/platform.native.d.ts +13 -0
  490. package/types/contexts/FontLanguageContext.d.ts +5 -0
  491. package/types/{views → contexts}/TextAncestorContext.d.ts +0 -0
  492. package/types/{ThemeContext.d.ts → contexts/ThemeContext.d.ts} +1 -1
  493. package/types/createComponent.d.ts +32 -15
  494. package/types/createShorthands.d.ts +2 -1
  495. package/types/createTamagui.d.ts +2 -17
  496. package/types/createTheme.d.ts +1 -1
  497. package/types/createTokens.d.ts +5 -6
  498. package/types/createVariable.d.ts +24 -12
  499. package/types/createVariables.d.ts +10 -0
  500. package/types/helpers/RNComponents.d.ts +1 -1
  501. package/types/helpers/ThemeManager.d.ts +46 -0
  502. package/types/helpers/assignNativePropsToWeb.d.ts +2 -0
  503. package/types/helpers/assignNativePropsToWeb.native.d.ts +2 -0
  504. package/types/helpers/calc.d.ts +17 -0
  505. package/types/helpers/createMediaStyle.d.ts +2 -4
  506. package/types/helpers/createPropMapper.d.ts +6 -3
  507. package/types/helpers/expandStyle.d.ts +6 -0
  508. package/types/helpers/expandStyles.d.ts +26 -0
  509. package/types/helpers/getAnimationDriver.d.ts +6 -0
  510. package/types/helpers/getFont.d.ts +3 -0
  511. package/types/helpers/getFontLanguage.d.ts +2 -0
  512. package/types/helpers/getSize.d.ts +3 -2
  513. package/types/helpers/getSplitStyles.d.ts +16 -9
  514. package/types/helpers/getStackSize.d.ts +8 -0
  515. package/types/helpers/getStylesAtomic.d.ts +17 -22
  516. package/types/helpers/getThemeCSSRules.d.ts +8 -0
  517. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  518. package/types/helpers/getVariantExtras.d.ts +5 -0
  519. package/types/helpers/insertStyleRule.d.ts +7 -3
  520. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  521. package/types/helpers/isTamaguiElement.d.ts +5 -1
  522. package/types/helpers/matchMedia.d.ts +1 -1
  523. package/types/helpers/mergeProps.d.ts +17 -0
  524. package/types/helpers/mergeTransform.d.ts +7 -0
  525. package/types/helpers/normalizeColor.d.ts +3 -0
  526. package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
  527. package/types/helpers/pseudoDescriptors.d.ts +16 -0
  528. package/types/helpers/registerCSSVariable.d.ts +5 -0
  529. package/types/helpers/startTransition.d.ts +3 -0
  530. package/types/helpers/themes.d.ts +4 -0
  531. package/types/helpers/useShallowSetState.d.ts +3 -0
  532. package/types/helpers/validate.d.ts +0 -3
  533. package/types/hooks/getThemeUnwrapped.d.ts +3 -0
  534. package/types/hooks/useId.d.ts +1 -8
  535. package/types/hooks/useMedia.d.ts +20 -6
  536. package/types/hooks/useSafeRef.d.ts +4 -0
  537. package/types/hooks/useServerHooks.d.ts +4 -0
  538. package/types/hooks/useTheme.d.ts +21 -31
  539. package/types/index.d.ts +29 -9
  540. package/types/injectStyles.d.ts +7 -0
  541. package/types/insertFont.d.ts +9 -0
  542. package/types/static.d.ts +2 -15
  543. package/types/styled.d.ts +7 -3
  544. package/types/types.d.ts +303 -92
  545. package/types/updateTheme.d.ts +9 -0
  546. package/types/vendor/Pressability.d.ts +3 -0
  547. package/types/vendor/Pressability.native.d.ts +3 -0
  548. package/types/views/FontLanguage.d.ts +4 -0
  549. package/types/views/FontLanguage.native.d.ts +4 -0
  550. package/types/views/FontLanguage.types.d.ts +11 -0
  551. package/types/views/Slot.d.ts +5 -4
  552. package/types/views/TamaguiProvider.d.ts +4 -0
  553. package/types/views/Theme.d.ts +3 -9
  554. package/types/views/ThemeInverse.d.ts +4 -8
  555. package/types/views/ThemeProvider.d.ts +2 -1
  556. package/dist/cjs/ThemeContext.js.map +0 -7
  557. package/dist/cjs/ThemeManager.js.map +0 -7
  558. package/dist/cjs/conf.js.map +0 -7
  559. package/dist/cjs/constants/rnw.js +0 -46
  560. package/dist/cjs/constants/rnw.js.map +0 -7
  561. package/dist/cjs/defaultComponentState.js +0 -1
  562. package/dist/cjs/helpers/addStylesUsingClassname.js +0 -87
  563. package/dist/cjs/helpers/addStylesUsingClassname.js.map +0 -7
  564. package/dist/cjs/helpers/createTamaguiProvider.js +0 -93
  565. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  566. package/dist/cjs/helpers/fixNativeShadow.native.js +0 -53
  567. package/dist/cjs/helpers/fixNativeShadow.native.js.map +0 -7
  568. package/dist/cjs/helpers/getButtonSize.js +0 -45
  569. package/dist/cjs/helpers/getButtonSize.js.map +0 -7
  570. package/dist/cjs/helpers/getTextSize.js.map +0 -7
  571. package/dist/cjs/helpers/nativeGestureHandler.js.map +0 -7
  572. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  573. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  574. package/dist/cjs/hooks/useFeatures.js +0 -228
  575. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  576. package/dist/cjs/hooks/usePrevious.js +0 -1
  577. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  578. package/dist/cjs/nativeGestureHandler.native.js.map +0 -7
  579. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  580. package/dist/esm/ThemeContext.js.map +0 -7
  581. package/dist/esm/ThemeManager.js.map +0 -7
  582. package/dist/esm/conf.js +0 -36
  583. package/dist/esm/conf.js.map +0 -7
  584. package/dist/esm/constants/rnw.js +0 -24
  585. package/dist/esm/constants/rnw.js.map +0 -7
  586. package/dist/esm/defaultComponentState.js +0 -1
  587. package/dist/esm/defaultComponentState.js.map +0 -7
  588. package/dist/esm/helpers/addStylesUsingClassname.js +0 -64
  589. package/dist/esm/helpers/addStylesUsingClassname.js.map +0 -7
  590. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  591. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  592. package/dist/esm/helpers/fixNativeShadow.native.js +0 -32
  593. package/dist/esm/helpers/fixNativeShadow.native.js.map +0 -7
  594. package/dist/esm/helpers/getButtonSize.js +0 -24
  595. package/dist/esm/helpers/getButtonSize.js.map +0 -7
  596. package/dist/esm/helpers/getTextSize.js.map +0 -7
  597. package/dist/esm/helpers/nativeGestureHandler.js +0 -7
  598. package/dist/esm/helpers/nativeGestureHandler.js.map +0 -7
  599. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  600. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  601. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -14
  602. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  603. package/dist/esm/hooks/useFeatures.js +0 -173
  604. package/dist/esm/hooks/useFeatures.js.map +0 -7
  605. package/dist/esm/hooks/usePrevious.js +0 -1
  606. package/dist/esm/hooks/usePrevious.js.map +0 -7
  607. package/dist/esm/nativeGestureHandler.native.js +0 -2
  608. package/dist/esm/nativeGestureHandler.native.js.map +0 -7
  609. package/dist/esm/views/TextAncestorContext.js +0 -18
  610. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  611. package/dist/jsx/Tamagui.js +0 -41
  612. package/dist/jsx/ThemeContext.js +0 -5
  613. package/dist/jsx/ThemeManager.js +0 -186
  614. package/dist/jsx/conf.js +0 -35
  615. package/dist/jsx/constants/constants.js +0 -17
  616. package/dist/jsx/constants/platform.js +0 -25
  617. package/dist/jsx/constants/rnw.js +0 -23
  618. package/dist/jsx/contexts/ButtonInsideButtonContext.js +0 -5
  619. package/dist/jsx/createComponent.js +0 -636
  620. package/dist/jsx/createFont.js +0 -27
  621. package/dist/jsx/createShorthands.js +0 -9
  622. package/dist/jsx/createTamagui.js +0 -201
  623. package/dist/jsx/createTheme.js +0 -6
  624. package/dist/jsx/createTokens.js +0 -28
  625. package/dist/jsx/createVariable.js +0 -48
  626. package/dist/jsx/defaultComponentState.js +0 -0
  627. package/dist/jsx/helpers/RNComponents.js +0 -11
  628. package/dist/jsx/helpers/addStylesUsingClassname.js +0 -63
  629. package/dist/jsx/helpers/areEqualSets.js +0 -15
  630. package/dist/jsx/helpers/createMediaStyle.js +0 -30
  631. package/dist/jsx/helpers/createPropMapper.js +0 -237
  632. package/dist/jsx/helpers/createShallowUpdate.js +0 -18
  633. package/dist/jsx/helpers/createTamaguiProvider.js +0 -34
  634. package/dist/jsx/helpers/extendStaticConfig.js +0 -61
  635. package/dist/jsx/helpers/fixNativeShadow.js +0 -7
  636. package/dist/jsx/helpers/fixNativeShadow.native.js +0 -31
  637. package/dist/jsx/helpers/getButtonSize.js +0 -23
  638. package/dist/jsx/helpers/getExpandedShorthands.js +0 -18
  639. package/dist/jsx/helpers/getSize.js +0 -12
  640. package/dist/jsx/helpers/getSplitStyles.js +0 -322
  641. package/dist/jsx/helpers/getStylesAtomic.js +0 -130
  642. package/dist/jsx/helpers/getStylesAtomic.native.js +0 -9
  643. package/dist/jsx/helpers/getTextSize.js +0 -33
  644. package/dist/jsx/helpers/insertStyleRule.js +0 -94
  645. package/dist/jsx/helpers/isObj.js +0 -6
  646. package/dist/jsx/helpers/isTamaguiElement.js +0 -10
  647. package/dist/jsx/helpers/matchMedia.js +0 -17
  648. package/dist/jsx/helpers/matchMedia.native.js +0 -8
  649. package/dist/jsx/helpers/nativeGestureHandler.js +0 -6
  650. package/dist/jsx/helpers/nativeGestureHandler.native.js +0 -1
  651. package/dist/jsx/helpers/proxyThemeVariables.js +0 -17
  652. package/dist/jsx/helpers/themeable.js +0 -24
  653. package/dist/jsx/helpers/validate.js +0 -75
  654. package/dist/jsx/helpers/withStaticProperties.js +0 -9
  655. package/dist/jsx/helpers/wrapThemeManagerContext.js +0 -10
  656. package/dist/jsx/hooks/useConstant.js +0 -14
  657. package/dist/jsx/hooks/useFeatures.js +0 -167
  658. package/dist/jsx/hooks/useId.js +0 -34
  659. package/dist/jsx/hooks/useIsMounted.js +0 -18
  660. package/dist/jsx/hooks/useIsTouchDevice.js +0 -16
  661. package/dist/jsx/hooks/useMedia.js +0 -158
  662. package/dist/jsx/hooks/usePressable.js +0 -13
  663. package/dist/jsx/hooks/usePrevious.js +0 -0
  664. package/dist/jsx/hooks/useTheme.js +0 -177
  665. package/dist/jsx/hooks/useUnmountEffect.js +0 -10
  666. package/dist/jsx/index.js +0 -54
  667. package/dist/jsx/nativeGestureHandler.native.js +0 -1
  668. package/dist/jsx/static.js +0 -16
  669. package/dist/jsx/styled.js +0 -47
  670. package/dist/jsx/types-rnw.js +0 -0
  671. package/dist/jsx/types.js +0 -0
  672. package/dist/jsx/views/Slot.js +0 -75
  673. package/dist/jsx/views/Stack.js +0 -12
  674. package/dist/jsx/views/Text.js +0 -56
  675. package/dist/jsx/views/TextAncestorContext.js +0 -15
  676. package/dist/jsx/views/Theme.js +0 -31
  677. package/dist/jsx/views/ThemeInverse.js +0 -27
  678. package/dist/jsx/views/ThemeProvider.js +0 -35
  679. package/dist/jsx/views/ThemeReset.js +0 -34
  680. package/types/Tamagui.d.ts.map +0 -1
  681. package/types/ThemeContext.d.ts.map +0 -1
  682. package/types/ThemeManager.d.ts +0 -49
  683. package/types/ThemeManager.d.ts.map +0 -1
  684. package/types/conf.d.ts +0 -27
  685. package/types/conf.d.ts.map +0 -1
  686. package/types/constants/constants.d.ts.map +0 -1
  687. package/types/constants/platform.d.ts.map +0 -1
  688. package/types/constants/rnw.d.ts +0 -2
  689. package/types/constants/rnw.d.ts.map +0 -1
  690. package/types/contexts/ButtonInsideButtonContext.d.ts.map +0 -1
  691. package/types/createComponent.d.ts.map +0 -1
  692. package/types/createFont.d.ts.map +0 -1
  693. package/types/createShorthands.d.ts.map +0 -1
  694. package/types/createTamagui.d.ts.map +0 -1
  695. package/types/createTheme.d.ts.map +0 -1
  696. package/types/createTokens.d.ts.map +0 -1
  697. package/types/createVariable.d.ts.map +0 -1
  698. package/types/defaultComponentState.d.ts +0 -1
  699. package/types/defaultComponentState.d.ts.map +0 -1
  700. package/types/helpers/RNComponents.d.ts.map +0 -1
  701. package/types/helpers/addStylesUsingClassname.d.ts +0 -3
  702. package/types/helpers/addStylesUsingClassname.d.ts.map +0 -1
  703. package/types/helpers/areEqualSets.d.ts.map +0 -1
  704. package/types/helpers/createMediaStyle.d.ts.map +0 -1
  705. package/types/helpers/createPropMapper.d.ts.map +0 -1
  706. package/types/helpers/createShallowUpdate.d.ts +0 -4
  707. package/types/helpers/createShallowUpdate.d.ts.map +0 -1
  708. package/types/helpers/createTamaguiProvider.d.ts +0 -7
  709. package/types/helpers/createTamaguiProvider.d.ts.map +0 -1
  710. package/types/helpers/extendStaticConfig.d.ts.map +0 -1
  711. package/types/helpers/fixNativeShadow.d.ts.map +0 -1
  712. package/types/helpers/fixNativeShadow.native.d.ts +0 -3
  713. package/types/helpers/fixNativeShadow.native.d.ts.map +0 -1
  714. package/types/helpers/getButtonSize.d.ts +0 -8
  715. package/types/helpers/getButtonSize.d.ts.map +0 -1
  716. package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
  717. package/types/helpers/getSize.d.ts.map +0 -1
  718. package/types/helpers/getSplitStyles.d.ts.map +0 -1
  719. package/types/helpers/getStylesAtomic.d.ts.map +0 -1
  720. package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
  721. package/types/helpers/getTextSize.d.ts +0 -3
  722. package/types/helpers/getTextSize.d.ts.map +0 -1
  723. package/types/helpers/insertStyleRule.d.ts.map +0 -1
  724. package/types/helpers/isObj.d.ts.map +0 -1
  725. package/types/helpers/isTamaguiElement.d.ts.map +0 -1
  726. package/types/helpers/matchMedia.d.ts.map +0 -1
  727. package/types/helpers/matchMedia.native.d.ts.map +0 -1
  728. package/types/helpers/nativeGestureHandler.d.ts +0 -2
  729. package/types/helpers/nativeGestureHandler.d.ts.map +0 -1
  730. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
  731. package/types/helpers/nativeGestureHandler.native.d.ts.map +0 -1
  732. package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
  733. package/types/helpers/themeable.d.ts.map +0 -1
  734. package/types/helpers/validate.d.ts.map +0 -1
  735. package/types/helpers/withStaticProperties.d.ts.map +0 -1
  736. package/types/helpers/wrapThemeManagerContext.d.ts +0 -3
  737. package/types/helpers/wrapThemeManagerContext.d.ts.map +0 -1
  738. package/types/hooks/useConstant.d.ts.map +0 -1
  739. package/types/hooks/useFeatures.d.ts +0 -18
  740. package/types/hooks/useFeatures.d.ts.map +0 -1
  741. package/types/hooks/useId.d.ts.map +0 -1
  742. package/types/hooks/useIsMounted.d.ts.map +0 -1
  743. package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
  744. package/types/hooks/useMedia.d.ts.map +0 -1
  745. package/types/hooks/usePressable.d.ts.map +0 -1
  746. package/types/hooks/usePrevious.d.ts +0 -1
  747. package/types/hooks/usePrevious.d.ts.map +0 -1
  748. package/types/hooks/useTheme.d.ts.map +0 -1
  749. package/types/hooks/useUnmountEffect.d.ts.map +0 -1
  750. package/types/index.d.ts.map +0 -1
  751. package/types/nativeGestureHandler.native.d.ts +0 -2
  752. package/types/nativeGestureHandler.native.d.ts.map +0 -1
  753. package/types/static.d.ts.map +0 -1
  754. package/types/styled.d.ts.map +0 -1
  755. package/types/types-rnw.d.ts.map +0 -1
  756. package/types/types.d.ts.map +0 -1
  757. package/types/views/Slot.d.ts.map +0 -1
  758. package/types/views/Stack.d.ts.map +0 -1
  759. package/types/views/Text.d.ts.map +0 -1
  760. package/types/views/TextAncestorContext.d.ts.map +0 -1
  761. package/types/views/Theme.d.ts.map +0 -1
  762. package/types/views/ThemeInverse.d.ts.map +0 -1
  763. package/types/views/ThemeProvider.d.ts.map +0 -1
  764. package/types/views/ThemeReset.d.ts.map +0 -1
package/src/types.tsx ADDED
@@ -0,0 +1,1326 @@
1
+ // TODO split this into own package @tamagui/types to share with animations packages
2
+
3
+ import { Properties } from 'csstype'
4
+ import React, { RefObject } from 'react'
5
+ import {
6
+ GestureResponderEvent,
7
+ Image,
8
+ PressableProps,
9
+ TextProps as ReactTextProps,
10
+ Text,
11
+ TextInput,
12
+ TextStyle,
13
+ View,
14
+ ViewProps,
15
+ ViewStyle,
16
+ } from 'react-native'
17
+
18
+ import { Variable } from './createVariable'
19
+ import { ResolveVariableTypes } from './helpers/createPropMapper'
20
+ import { TamaguiReactElement } from './static'
21
+ import { RNWTextProps, RNWViewProps } from './types-rnw'
22
+ import { FontLanguageProps } from './views/FontLanguage.types'
23
+ import { ThemeProviderProps } from './views/ThemeProvider'
24
+
25
+ export type SpaceDirection = 'vertical' | 'horizontal' | 'both'
26
+
27
+ export type TamaguiElement = HTMLElement | View
28
+
29
+ export type DebugProp = boolean | 'break' | 'verbose'
30
+
31
+ // base props that are accepted by createComponent (additional to react-native-web)
32
+
33
+ export type TamaguiComponentPropsBase = {
34
+ hitSlop?: PressableProps['hitSlop']
35
+ asChild?: boolean
36
+ space?: SpaceTokens | null
37
+ spaceDirection?: SpaceDirection
38
+ separator?: React.ReactNode
39
+ dangerouslySetInnerHTML?: { __html: string }
40
+ animation?: AnimationProp
41
+ animateOnly?: string[]
42
+ children?: any | any[]
43
+ debug?: DebugProp
44
+ disabled?: boolean
45
+ className?: string
46
+ themeShallow?: boolean
47
+ id?: string
48
+ tag?: string
49
+ theme?: ThemeName | null
50
+ componentName?: string
51
+ /**
52
+ * Forces the pseudo style state to be on
53
+ */
54
+ forceStyle?: 'hover' | 'press' | 'focus'
55
+ onHoverIn?: (e: MouseEvent) => any
56
+ onHoverOut?: (e: MouseEvent) => any
57
+ onPress?: (e: GestureResponderEvent) => any
58
+ onPressIn?: (e: GestureResponderEvent) => any
59
+ onPressOut?: (e: GestureResponderEvent) => any
60
+ // WEB ONLY
61
+ onMouseEnter?: (e: MouseEvent) => any
62
+ onMouseLeave?: (e: MouseEvent) => any
63
+ onMouseDown?: (e: MouseEvent) => any
64
+ }
65
+
66
+ export type ReactComponentWithRef<Props, Ref> = React.ForwardRefExoticComponent<
67
+ Props & React.RefAttributes<Ref>
68
+ >
69
+
70
+ export type ConfigListener = (conf: TamaguiInternalConfig) => void
71
+
72
+ // to prevent things from going circular, hoisting some types in this file
73
+ // to generally order them as building up towards TamaguiConfig
74
+
75
+ export type VariableVal = number | string | Variable
76
+ export type VariableColorVal = string | Variable
77
+
78
+ type GenericKey = string | number | symbol
79
+
80
+ export interface CreateTokens<Val extends VariableVal = VariableVal> {
81
+ color: { [key: GenericKey]: Val }
82
+ space: { [key: GenericKey]: Val }
83
+ size: { [key: GenericKey]: Val }
84
+ radius: { [key: GenericKey]: Val }
85
+ zIndex: { [key: GenericKey]: Val }
86
+ }
87
+
88
+ export type TamaguiBaseTheme = {
89
+ // defined for our tamagui kit , we could do this inside `tamagui`
90
+ // but maybe helpful to have some sort of universally shared things +
91
+ // + enforce if they want their own, redefine in their design sys
92
+ background: VariableColorVal
93
+ backgroundHover: VariableColorVal
94
+ backgroundPress: VariableColorVal
95
+ backgroundFocus: VariableColorVal
96
+ color: VariableColorVal
97
+ colorHover: VariableColorVal
98
+ colorPress: VariableColorVal
99
+ colorFocus: VariableColorVal
100
+ borderColor: VariableColorVal
101
+ borderColorHover: VariableColorVal
102
+ borderColorPress: VariableColorVal
103
+ borderColorFocus: VariableColorVal
104
+ shadowColor: VariableColorVal
105
+ shadowColorHover: VariableColorVal
106
+ shadowColorPress: VariableColorVal
107
+ shadowColorFocus: VariableColorVal
108
+ }
109
+
110
+ type GenericTokens = CreateTokens
111
+ type GenericThemes = {
112
+ [key: string]:
113
+ | Partial<TamaguiBaseTheme> & {
114
+ [key: string]: VariableVal
115
+ }
116
+ }
117
+
118
+ type AllStyleKeys = keyof StackStylePropsBase | keyof TextStylePropsBase
119
+
120
+ export type CreateShorthands = {
121
+ [key: string]: AllStyleKeys
122
+ }
123
+
124
+ export type GenericShorthands = {}
125
+
126
+ // sm: { minWidth: 100 }
127
+ type GenericMedia = {
128
+ [key: string]: {
129
+ [key: string]: number | string
130
+ }
131
+ }
132
+
133
+ export type GenericFonts = Record<string, GenericFont>
134
+
135
+ type GenericAnimations = {
136
+ [key: string]:
137
+ | string
138
+ | {
139
+ [key: string]: any
140
+ }
141
+ | any[]
142
+ }
143
+
144
+ // this is the "main" typed object, which users re-define
145
+ // (internal) keep all types directly on this object and reference them from elsewhere
146
+ //
147
+ // const config = createTamagui(...)
148
+ // type MyConfig = typeof config
149
+ // declare module 'tamagui' {
150
+ // export interface TamaguiCustomConfig extends MyConfig {}
151
+ // }
152
+ // now your whole app/kit should be typed correctly
153
+ //
154
+ export interface TamaguiCustomConfig {}
155
+
156
+ export interface TamaguiConfig
157
+ extends Omit<GenericTamaguiConfig, keyof TamaguiCustomConfig>,
158
+ TamaguiCustomConfig {}
159
+
160
+ export type CreateTamaguiConfig<
161
+ A extends GenericTokens,
162
+ B extends GenericThemes,
163
+ C extends GenericShorthands = GenericShorthands,
164
+ D extends GenericMedia = GenericMedia,
165
+ E extends GenericAnimations = GenericAnimations,
166
+ F extends GenericFonts = GenericFonts
167
+ > = {
168
+ fonts: RemoveLanguagePostfixes<F>
169
+ fontLanguages: GetLanguagePostfixes<F> extends never ? string[] : GetLanguagePostfixes<F>[]
170
+ tokens: A
171
+ // parsed
172
+ themes: {
173
+ [Name in keyof B]: {
174
+ [Key in keyof B[Name]]: Variable
175
+ }
176
+ }
177
+ shorthands: C
178
+ media: D
179
+ animations: AnimationDriver<E>
180
+ }
181
+
182
+ type GetLanguagePostfix<Set> = Set extends string
183
+ ? Set extends `${string}_${infer Postfix}`
184
+ ? Postfix
185
+ : never
186
+ : never
187
+
188
+ type OmitLanguagePostfix<Set> = Set extends string
189
+ ? Set extends `${infer Prefix}_${string}`
190
+ ? Prefix
191
+ : Set
192
+ : never
193
+
194
+ type RemoveLanguagePostfixes<F extends GenericFonts> = {
195
+ [Key in OmitLanguagePostfix<keyof F>]: F[Key]
196
+ }
197
+
198
+ type GetLanguagePostfixes<F extends GenericFonts> = GetLanguagePostfix<keyof F>
199
+
200
+ // test RemoveLanguagePostfixes
201
+ // type x = CreateTamaguiConfig<any, any, any, any, any, {
202
+ // body: any,
203
+ // body_en: any
204
+ // }>['fonts']
205
+
206
+ type ConfProps<
207
+ A extends GenericTokens,
208
+ B extends GenericThemes,
209
+ C extends GenericShorthands = GenericShorthands,
210
+ D extends GenericMedia = GenericMedia,
211
+ E extends GenericAnimations = GenericAnimations,
212
+ F extends GenericFonts = GenericFonts
213
+ > = {
214
+ tokens: A
215
+ themes: B
216
+ shorthands?: C
217
+ media?: D
218
+ animations?: AnimationDriver<E>
219
+ fonts: F
220
+ }
221
+
222
+ export type InferTamaguiConfig<Conf> = Conf extends ConfProps<
223
+ infer A,
224
+ infer B,
225
+ infer C,
226
+ infer D,
227
+ infer E,
228
+ infer F
229
+ >
230
+ ? TamaguiInternalConfig<A, B, C, D, E, F>
231
+ : unknown
232
+
233
+ // for use in creation functions so it doesnt get overwrtitten
234
+ export type GenericTamaguiConfig = CreateTamaguiConfig<
235
+ GenericTokens,
236
+ GenericThemes,
237
+ GenericShorthands,
238
+ GenericMedia,
239
+ GenericAnimations,
240
+ GenericFonts
241
+ >
242
+
243
+ // since TamaguiConfig will be re-declared, these will all be typed globally
244
+ export type ThemeDefinition = TamaguiConfig['themes'][keyof TamaguiConfig['themes']]
245
+ export type ThemeKeys = keyof ThemeDefinition
246
+ export type ThemeParsed = {
247
+ [key in ThemeKeys]: Variable<any>
248
+ }
249
+ export type Tokens = TamaguiConfig['tokens']
250
+ export type Shorthands = TamaguiConfig['shorthands']
251
+ export type Media = TamaguiConfig['media']
252
+ export type Themes = TamaguiConfig['themes']
253
+ export type ThemeName = GetAltThemeNames<keyof Themes>
254
+ export type ThemeTokens = `$${ThemeKeys}`
255
+ export type AnimationKeys = TamaguiConfig['animations'] extends AnimationDriver<infer Config>
256
+ ? keyof Config
257
+ : string
258
+ export type FontLanguages = ArrayIntersection<TamaguiConfig['fontLanguages']>
259
+
260
+ type ArrayIntersection<A extends any[]> = A[keyof A]
261
+
262
+ type GetAltThemeNames<S> = (S extends `${string}_${infer Alt}` ? GetAltThemeNames<Alt> : S) | S
263
+
264
+ type SpacerPropsBase = {
265
+ size?: number | SpaceTokens | null
266
+ flex?: boolean | number
267
+ direction?: SpaceDirection
268
+ }
269
+ type SpacerOwnProps = SpacerPropsBase &
270
+ //
271
+ WithThemeShorthandsPseudosMediaAnimation<SpacerPropsBase>
272
+
273
+ export type SpacerProps = Omit<StackProps, 'flex' | 'direction' | 'size'> &
274
+ //
275
+ SpacerOwnProps
276
+
277
+ export type CreateTamaguiProps = {
278
+ shorthands?: CreateShorthands
279
+ media?: GenericTamaguiConfig['media']
280
+ animations?: AnimationDriver<any>
281
+ fonts: GenericTamaguiConfig['fonts']
282
+ tokens: GenericTamaguiConfig['tokens']
283
+ themes: {
284
+ [key: string]: {
285
+ [key: string]: string | number | Variable
286
+ }
287
+ }
288
+
289
+ defaultTheme?: string
290
+
291
+ /**
292
+ * *Advanced use case* For all CSS extracted views, this has no effect.
293
+ *
294
+ * For SSR compatibility on the web, Tamagui will render once with the settings
295
+ * from `mediaQueryDefaultActive` set for all media queries. Then, it will render
296
+ * again after the initial render using the proper media query values. This is so that
297
+ * hydration will match perfectly with the server.
298
+ *
299
+ * Setting disableSSR will avoid this second render by setting the media query state
300
+ * to the actual browser dimensions on initial load. This is only useful for client-only
301
+ * apps.
302
+ *
303
+ */
304
+ disableSSR?: boolean
305
+
306
+ /**
307
+ * Disable inserting a theme class in the DOM or context, allowing you to manually place it higher.
308
+ * For custom use cases like integration with next-theme.
309
+ */
310
+ disableRootThemeClass?: boolean
311
+
312
+ defaultProps?: Record<string, any> & {
313
+ Stack?: StackProps
314
+ Text?: TextProps
315
+ Spacer?: SpacerProps
316
+ }
317
+
318
+ // for the first render, determines which media queries are true
319
+ // useful for SSR
320
+ mediaQueryDefaultActive?: Record<MediaQueryKey, boolean>
321
+
322
+ // what's between each CSS style rule, set to "\n" to be easier to read
323
+ // defaults: "\n" when NODE_ENV=development, "" otherwise
324
+ cssStyleSeparator?: string
325
+
326
+ // (Advanced)
327
+ // on the web, tamagui treats `dark` and `light` themes as special and
328
+ // generates extra CSS to avoid having to re-render the entire page.
329
+ // this CSS relies on specificity hacks that multiply by your sub-themes.
330
+ // this sets the maxiumum number of nested dark/light themes you can do
331
+ // defaults to 3 for a balance, but can be higher if you nest them deeply.
332
+ maxDarkLightNesting?: number
333
+
334
+ // adds @media(prefers-color-scheme) media queries for dark/light
335
+ shouldAddPrefersColorThemes?: boolean
336
+
337
+ // only if you put the theme classname on the html element we have to generate diff
338
+ themeClassNameOnRoot?: boolean
339
+ }
340
+
341
+ // this is the config generated via createTamagui()
342
+ export type TamaguiInternalConfig<
343
+ A extends GenericTokens = GenericTokens,
344
+ B extends GenericThemes = GenericThemes,
345
+ C extends GenericShorthands = GenericShorthands,
346
+ D extends GenericMedia = GenericMedia,
347
+ E extends GenericAnimations = GenericAnimations,
348
+ F extends GenericFonts = GenericFonts
349
+ > = Omit<CreateTamaguiProps, keyof GenericTamaguiConfig> &
350
+ CreateTamaguiConfig<A, B, C, D, E, F> & {
351
+ // TODO need to make it this but this breaks types, revisit
352
+ // animations: E //AnimationDriver<E>
353
+ // with $ prefixes for fast lookups (one time cost at startup vs every render)
354
+ tokensParsed: CreateTokens<Variable>
355
+ themeConfig: any
356
+ fontsParsed: GenericFonts
357
+ getCSS: () => string
358
+ parsed: boolean
359
+ inverseShorthands: Record<string, string>
360
+ }
361
+
362
+ export type GetAnimationKeys<A extends GenericTamaguiConfig> = keyof A['animations']
363
+
364
+ // prevents const intersections from being clobbered into string, keeping the consts
365
+ export type UnionableString = string & {}
366
+ export type UnionableNumber = number & {}
367
+ export type PropTypes<A extends TamaguiComponent> = A extends React.FunctionComponent<infer Props>
368
+ ? Props
369
+ : unknown
370
+
371
+ export type GenericFont<Key extends number | string = number | string> = {
372
+ size: { [key in Key]: number | Variable }
373
+ lineHeight: Partial<{ [key in Key]: number | Variable }>
374
+ letterSpacing: Partial<{ [key in Key]: number | Variable }>
375
+ weight: Partial<{ [key in Key]: number | string | Variable }>
376
+ family: string | Variable
377
+ style?: Partial<{ [key in Key]: TextStyle['fontStyle'] | Variable }>
378
+ transform?: Partial<{ [key in Key]: TextStyle['textTransform'] | Variable }>
379
+ color?: Partial<{ [key in Key]: string | Variable }>
380
+ // for native use only, lets you map to alternative fonts
381
+ face?: { [key in FontWeightSteps]: { normal?: string; italic?: string } }
382
+ }
383
+
384
+ // media
385
+ export type MediaQueryObject = { [key: string]: string | number | string }
386
+ export type MediaQueryKey = keyof Media
387
+ export type MediaPropKeys = `$${MediaQueryKey}`
388
+ export type MediaQueryState = { [key in MediaPropKeys]: boolean }
389
+ export type MediaProps<A> = {
390
+ [key in MediaPropKeys]?: A
391
+ }
392
+ export type MediaQueries = {
393
+ [key in MediaQueryKey]: MediaQueryObject
394
+ }
395
+
396
+ export type TransformStyleProps = {
397
+ x?: number
398
+ y?: number
399
+ perspective?: number
400
+ scale?: number
401
+ scaleX?: number
402
+ scaleY?: number
403
+ skewX?: string
404
+ skewY?: string
405
+ matrix?: number[]
406
+ rotate?: string
407
+ rotateY?: string
408
+ rotateX?: string
409
+ rotateZ?: string
410
+ }
411
+
412
+ // createComponent props helpers
413
+
414
+ // animation="bouncy"
415
+ // animation={['bouncy', { }]}
416
+ // { all: 'name' }
417
+
418
+ // TODO can override for better types
419
+ export type AnimationConfigType = any
420
+
421
+ export type AnimationProp =
422
+ | AnimationKeys
423
+ | {
424
+ [key: string]:
425
+ | AnimationKeys
426
+ | {
427
+ type: AnimationKeys
428
+ [key: string]: any
429
+ }
430
+ }
431
+ | [
432
+ AnimationKeys,
433
+ {
434
+ [key: string]:
435
+ | AnimationKeys
436
+ | {
437
+ type?: AnimationKeys
438
+ [key: string]: any
439
+ }
440
+ }
441
+ ]
442
+
443
+ type GetTokenFontKeysFor<
444
+ A extends
445
+ | 'size'
446
+ | 'weight'
447
+ | 'letterSpacing'
448
+ | 'family'
449
+ | 'lineHeight'
450
+ | 'transform'
451
+ | 'style'
452
+ | 'color'
453
+ > = keyof TamaguiConfig['fonts']['body'][A]
454
+
455
+ type GetTokenString<A> = A extends string | number ? `$${A}` : `$${string}`
456
+
457
+ // base tokens
458
+ export type SizeTokens = GetTokenString<keyof Tokens['size']> | number
459
+ export type SpaceTokens = GetTokenString<keyof Tokens['space']> | number | boolean
460
+ export type ColorTokens =
461
+ | GetTokenString<keyof Tokens['color']>
462
+ | GetTokenString<keyof ThemeParsed>
463
+ | CSSColorNames
464
+ export type ZIndexTokens = GetTokenString<keyof Tokens['zIndex']> | number
465
+ export type RadiusTokens = GetTokenString<keyof Tokens['radius']> | number
466
+
467
+ // font tokens
468
+ export type FontTokens = GetTokenString<keyof TamaguiConfig['fonts']>
469
+ export type FontSizeTokens = GetTokenString<GetTokenFontKeysFor<'size'>> | number
470
+ export type FontLineHeightTokens = `$${GetTokenFontKeysFor<'lineHeight'>}` | number
471
+ export type FontWeightSteps = `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}00`
472
+ export type FontWeightTokens = `$${GetTokenFontKeysFor<'weight'>}` | FontWeightSteps
473
+ export type FontColorTokens = `$${GetTokenFontKeysFor<'color'>}` | number
474
+ export type FontLetterSpacingTokens = `$${GetTokenFontKeysFor<'letterSpacing'>}` | number
475
+ export type FontStyleTokens = `$${GetTokenFontKeysFor<'style'>}` | TextStyle['fontStyle']
476
+ export type FontTransformTokens =
477
+ | `$${GetTokenFontKeysFor<'transform'>}`
478
+ | TextStyle['textTransform']
479
+
480
+ //
481
+ // adds theme short values to relevant props
482
+ //
483
+
484
+ export type ThemeValueByCategory<K extends string | number | symbol> = K extends 'theme'
485
+ ? ThemeTokens
486
+ : K extends 'size'
487
+ ? SizeTokens
488
+ : K extends 'font'
489
+ ? FontTokens
490
+ : K extends 'fontSize'
491
+ ? FontSizeTokens
492
+ : K extends 'space'
493
+ ? SpaceTokens
494
+ : K extends 'color'
495
+ ? ColorTokens
496
+ : K extends 'zIndex'
497
+ ? ZIndexTokens
498
+ : K extends 'lineHeight'
499
+ ? FontLineHeightTokens
500
+ : K extends 'fontWeight'
501
+ ? FontWeightTokens
502
+ : K extends 'letterSpacing'
503
+ ? FontLetterSpacingTokens
504
+ : {}
505
+
506
+ type FontKeys = 'fontFamily'
507
+ type FontSizeKeys = 'fontSize'
508
+ type FontWeightKeys = 'fontWeight'
509
+ type FontLetterSpacingKeys = 'letterSpacing'
510
+ type LineHeightKeys = 'lineHeight'
511
+ type ZIndexKeys = 'zIndex'
512
+
513
+ export type ThemeValueGet<K extends string | number | symbol> = K extends 'theme'
514
+ ? ThemeTokens
515
+ : K extends SizeKeys
516
+ ? SizeTokens
517
+ : K extends FontKeys
518
+ ? FontTokens
519
+ : K extends FontSizeKeys
520
+ ? FontSizeTokens
521
+ : K extends SpaceKeys
522
+ ? K extends 'shadowOffset'
523
+ ? { width: SpaceTokens; height: SpaceTokens }
524
+ : SpaceTokens
525
+ : K extends ColorKeys
526
+ ? ColorTokens
527
+ : K extends ZIndexKeys
528
+ ? ZIndexTokens
529
+ : K extends LineHeightKeys
530
+ ? FontLineHeightTokens
531
+ : K extends FontWeightKeys
532
+ ? FontWeightTokens
533
+ : K extends FontLetterSpacingKeys
534
+ ? FontLetterSpacingTokens
535
+ : never
536
+
537
+ export type ThemeValueFallback = UnionableString | Variable
538
+
539
+ export type WithThemeValues<T extends object> = {
540
+ [K in keyof T]: ThemeValueGet<K> extends never
541
+ ? T[K]
542
+ : ThemeValueGet<K> | Exclude<T[K], string> | ThemeValueFallback
543
+ }
544
+
545
+ // adds shorthand props
546
+ export type WithShorthands<StyleProps> = {
547
+ [Key in keyof Shorthands]?: Shorthands[Key] extends keyof StyleProps
548
+ ? StyleProps[Shorthands[Key]] | null
549
+ : undefined
550
+ }
551
+
552
+ // adds pseudo props
553
+ export type PseudoProps<A> = {
554
+ hoverStyle?: A | null
555
+ pressStyle?: A | null
556
+ focusStyle?: A | null
557
+ exitStyle?: A | null
558
+ enterStyle?: A | null
559
+ }
560
+
561
+ export type PseudoPropKeys = keyof PseudoProps<any>
562
+
563
+ export type PseudoStyles = {
564
+ hoverStyle?: ViewStyle
565
+ pressStyle?: ViewStyle
566
+ focusStyle?: ViewStyle
567
+ enterStyle?: ViewStyle
568
+ exitStyle?: ViewStyle
569
+ }
570
+
571
+ //
572
+ // add both theme and shorthands
573
+ //
574
+ type WithThemeAndShorthands<A extends object> = WithThemeValues<A> &
575
+ WithShorthands<WithThemeValues<A>>
576
+
577
+ //
578
+ // combines all of theme, shorthands, pseudos...
579
+ //
580
+ type WithThemeShorthandsAndPseudos<A extends object> =
581
+ | WithThemeAndShorthands<A> & PseudoProps<WithThemeAndShorthands<A>>
582
+
583
+ //
584
+ // ... media queries and animations
585
+ //
586
+ type WithThemeShorthandsPseudosMediaAnimation<A extends object> = WithThemeShorthandsAndPseudos<A> &
587
+ MediaProps<WithThemeShorthandsAndPseudos<A>>
588
+
589
+ /**
590
+ * Base style-only props (no media, pseudo):
591
+ */
592
+
593
+ type StylePropsWebOnly = {
594
+ // we make this a style prop as it is on web
595
+ pointerEvents?: ViewProps['pointerEvents']
596
+ // WEB ONLY
597
+ cursor?: Properties['cursor']
598
+ // WEB ONLY
599
+ contain?: Properties['contain']
600
+ // WEB ONLY values: inherit, inline, block, content
601
+ display?: 'inherit' | 'none' | 'inline' | 'block' | 'contents' | 'flex' | 'inline-flex'
602
+ // WEB ONLY
603
+ userSelect?: Properties['userSelect']
604
+ }
605
+
606
+ export type StackStylePropsBase = Omit<ViewStyle, 'display' | 'backfaceVisibility' | 'elevation'> &
607
+ TransformStyleProps &
608
+ StylePropsWebOnly
609
+
610
+ export type TextStylePropsBase = Omit<TextStyle, 'display' | 'backfaceVisibility'> &
611
+ TransformStyleProps &
612
+ StylePropsWebOnly & {
613
+ ellipse?: boolean
614
+ selectable?: boolean
615
+ textDecorationDistance?: number
616
+ textOverflow?: Properties['textOverflow']
617
+ whiteSpace?: Properties['whiteSpace']
618
+ wordWrap?: Properties['wordWrap']
619
+ }
620
+
621
+ //
622
+ // Stack
623
+ //
624
+
625
+ export type StackNonStyleProps = Omit<ViewProps, 'display' | 'children'> &
626
+ RNWViewProps &
627
+ TamaguiComponentPropsBase
628
+
629
+ export type StackStyleProps = WithThemeShorthandsPseudosMediaAnimation<StackStylePropsBase>
630
+ export type StackPropsBase = StackNonStyleProps & WithThemeAndShorthands<StackStylePropsBase>
631
+ export type StackProps = StackNonStyleProps & StackStyleProps
632
+
633
+ //
634
+ // Text props
635
+ //
636
+
637
+ export type TextNonStyleProps = Omit<ReactTextProps, 'children'> &
638
+ RNWTextProps &
639
+ TamaguiComponentPropsBase
640
+
641
+ export type TextPropsBase = TextNonStyleProps & WithThemeAndShorthands<TextStylePropsBase>
642
+ export type TextStyleProps = WithThemeShorthandsPseudosMediaAnimation<TextStylePropsBase>
643
+ export type TextProps = TextNonStyleProps & TextStyleProps
644
+
645
+ // could actually infer from parent
646
+ export type ViewOrTextProps = WithThemeShorthandsPseudosMediaAnimation<
647
+ Omit<TextStylePropsBase, keyof StackStylePropsBase> & StackStylePropsBase
648
+ >
649
+
650
+ //
651
+ // StaticComponent
652
+ //
653
+
654
+ export type TamaguiComponent<
655
+ Props = any,
656
+ Ref = any,
657
+ BaseProps = {},
658
+ VariantProps = {}
659
+ > = ReactComponentWithRef<Props, Ref> & StaticComponentObject
660
+
661
+ type StaticComponentObject = {
662
+ staticConfig: StaticConfig
663
+ /*
664
+ * Only needed for more complex components
665
+ * If you create a styled frame component this is a HoC to extract
666
+ * styles from all parents.
667
+ */
668
+ extractable: <X>(a: X, opts?: Partial<StaticConfig>) => X
669
+ }
670
+
671
+ export type TamaguiProviderProps = Partial<Omit<ThemeProviderProps, 'children'>> & {
672
+ config: TamaguiInternalConfig
673
+ disableInjectCSS?: boolean
674
+ children?: React.ReactNode
675
+ }
676
+
677
+ export type PropMapper = (
678
+ key: string,
679
+ value: any,
680
+ theme: ThemeParsed,
681
+ props: Record<string, any>,
682
+ state: Partial<SplitStyleState>,
683
+ languageContext?: FontLanguageProps,
684
+ avoidDefaultProps?: boolean,
685
+ debug?: DebugProp
686
+ ) => undefined | [string, any][]
687
+
688
+ export type StaticConfigParsed = StaticConfig & {
689
+ parsed: true
690
+ propMapper: PropMapper
691
+ variantsParsed?: {
692
+ [key: string]: {
693
+ [key: string]: any
694
+ }
695
+ }
696
+ }
697
+
698
+ export type GenericVariantDefinitions = {
699
+ [key: string]: {
700
+ [key: string]:
701
+ | ((a: any, b: any) => any)
702
+ | {
703
+ [key: string]: any
704
+ }
705
+ }
706
+ }
707
+
708
+ export type StaticConfig = {
709
+ Component?: React.FunctionComponent<any> & StaticComponentObject
710
+
711
+ variants?: GenericVariantDefinitions
712
+
713
+ /**
714
+ * Used for applying sub theme style
715
+ */
716
+ componentName?: string
717
+
718
+ /**
719
+ * (compiler) If you need to pass context or something, prevents from ever
720
+ * flattening. The 'jsx' option means it will never flatten. if you
721
+ * pass JSX as a children (if its purely string, it will still flatten).
722
+ */
723
+ neverFlatten?: boolean | 'jsx'
724
+
725
+ /**
726
+ * Determines ultimate output tag (Text vs View)
727
+ */
728
+ isText?: boolean
729
+
730
+ /**
731
+ * Attempts to attach focus styles at runtime (useful for native)
732
+ */
733
+ isInput?: boolean
734
+
735
+ /**
736
+ * React native web images need special handling for className support
737
+ */
738
+ isImage?: boolean
739
+
740
+ /**
741
+ * Which style keys are allowed to be extracted.
742
+ */
743
+ validStyles?: { [key: string]: boolean }
744
+
745
+ /**
746
+ * Same as React.defaultProps, be sure to sync
747
+ */
748
+ defaultProps: Record<string, any>
749
+
750
+ /**
751
+ * (compiler) If these props are encountered, bail on all optimization.
752
+ */
753
+ deoptProps?: Set<string>
754
+
755
+ /**
756
+ * (compiler) If these props are encountered, leave them un-extracted.
757
+ */
758
+ inlineProps?: Set<string>
759
+
760
+ /**
761
+ * (compiler) If not flattening, leave this prop as original value.
762
+ * Only applies to style attributes
763
+ */
764
+ inlineWhenUnflattened?: Set<string>
765
+
766
+ /**
767
+ * (compiler) A bit odd, only for more advanced heirarchies.
768
+ * Indicates that the component will set this prop so the
769
+ * static extraction can ensure it sets them to ={undefined}
770
+ * so they get overriddent. In the future, this can be smarter.
771
+ */
772
+ ensureOverriddenProp?: { [key: string]: boolean }
773
+
774
+ /**
775
+ * Auto-detected, but can ovverride. Wraps children to space them on top
776
+ */
777
+ isZStack?: boolean
778
+
779
+ /**
780
+ * Merges into defaultProps later on, used internally yonly
781
+ */
782
+ defaultVariants?: { [key: string]: any }
783
+
784
+ /**
785
+ * Auto-detect, but can ovverride, passes styles properly to react-native-web
786
+ */
787
+ isReactNativeWeb?: boolean
788
+
789
+ /**
790
+ * Used internally to keep reference to the original rnw component
791
+ */
792
+ reactNativeWebComponent?: any
793
+
794
+ /**
795
+ * Memoize the component
796
+ */
797
+ memo?: boolean
798
+
799
+ /**
800
+ * Auto-detect, but can ovverride, passes styles properly to react-native-web
801
+ */
802
+ isTamagui?: boolean
803
+
804
+ /**
805
+ * Used internally to handle extractable HoC separate
806
+ */
807
+ isHOC?: boolean
808
+
809
+ /**
810
+ * Used insternally to attach default props to names
811
+ */
812
+ parentNames?: string[]
813
+
814
+ /**
815
+ * By default if styled() doesn't recognize a parent Tamagui compoent or specific react-native views,
816
+ * it will assume the passed in component only accepts style={} for react-native compatibility.
817
+ * Setting `acceptsClassName: true` indicates Tamagui can pass in className props.
818
+ */
819
+ acceptsClassName?: boolean
820
+ }
821
+
822
+ /**
823
+ * --------------------------------------------
824
+ * variants
825
+ * --------------------------------------------
826
+ */
827
+
828
+ export type StylableComponent =
829
+ | TamaguiComponent
830
+ // * excessively deep type instantiation
831
+ // | TamaguiReactElement
832
+ | React.Component
833
+ | React.ForwardRefExoticComponent<any>
834
+ | ReactComponentWithRef<any, any>
835
+ | (new (props: any) => any)
836
+ | typeof View
837
+ | typeof Text
838
+ | typeof TextInput
839
+ | typeof Image
840
+
841
+ export type GetStyledVariants<A extends TamaguiComponent> = A extends TamaguiComponent<
842
+ any,
843
+ any,
844
+ any,
845
+ infer Variants
846
+ >
847
+ ? Variants
848
+ : never
849
+
850
+ export type GetBaseProps<A extends StylableComponent> = A extends TamaguiComponent<
851
+ any,
852
+ any,
853
+ infer BaseProps
854
+ >
855
+ ? BaseProps
856
+ : never
857
+
858
+ export type GetProps<A extends StylableComponent> = A extends TamaguiComponent<infer Props>
859
+ ? Props
860
+ : A extends TamaguiReactElement<infer Props>
861
+ ? Props
862
+ : A extends React.Component<infer Props>
863
+ ? GetGenericComponentTamaguiProps<Props>
864
+ : A extends new (props: infer Props) => any
865
+ ? GetGenericComponentTamaguiProps<Props>
866
+ : {}
867
+
868
+ type GetGenericComponentTamaguiProps<P> = P &
869
+ Omit<'textAlign' extends keyof P ? TextProps : StackProps, keyof P>
870
+
871
+ export type SpreadKeys =
872
+ | '...fontSize'
873
+ | '...fontStyle'
874
+ | '...fontTransform'
875
+ | '...lineHeight'
876
+ | '...letterSpacing'
877
+ | '...size'
878
+ | '...space'
879
+ | '...color'
880
+ | '...zIndex'
881
+ | '...theme'
882
+ | '...radius'
883
+
884
+ export type VariantDefinitions<
885
+ Parent extends StylableComponent = TamaguiComponent,
886
+ MyProps extends Object = GetProps<Parent>,
887
+ Val = any
888
+ > = VariantDefinitionFromProps<MyProps, Val>
889
+
890
+ export type VariantDefinitionFromProps<MyProps, Val> = MyProps extends Object
891
+ ? {
892
+ [propName: string]:
893
+ | VariantSpreadFunction<MyProps, Val>
894
+ | ({
895
+ [Key in SpreadKeys]?: Key extends '...fontSize'
896
+ ? FontSizeVariantSpreadFunction<MyProps>
897
+ : Key extends '...size'
898
+ ? SizeVariantSpreadFunction<MyProps>
899
+ : Key extends '...space'
900
+ ? SpaceVariantSpreadFunction<MyProps>
901
+ : Key extends '...color'
902
+ ? ColorVariantSpreadFunction<MyProps>
903
+ : Key extends '...lineHeight'
904
+ ? FontLineHeightVariantSpreadFunction<MyProps>
905
+ : Key extends '...fontTransform'
906
+ ? FontTransformVariantSpreadFunction<MyProps>
907
+ : Key extends '...fontStyle'
908
+ ? FontStyleVariantSpreadFunction<MyProps>
909
+ : Key extends '...letterSpacing'
910
+ ? FontLetterSpacingVariantSpreadFunction<MyProps>
911
+ : Key extends '...zIndex'
912
+ ? ZIndexVariantSpreadFunction<MyProps>
913
+ : Key extends '...radius'
914
+ ? RadiusVariantSpreadFunction<MyProps>
915
+ : Key extends '...theme'
916
+ ? ThemeVariantSpreadFunction<MyProps>
917
+ : never
918
+ } & {
919
+ [Key in string | number | 'true' | 'false']?:
920
+ | MyProps
921
+ | VariantSpreadFunction<MyProps, Val>
922
+ } & {
923
+ [Key in VariantTypeKeys]?: Key extends ':number'
924
+ ? VariantSpreadFunction<MyProps, number>
925
+ : Key extends ':boolean'
926
+ ? VariantSpreadFunction<MyProps, boolean>
927
+ : Key extends ':string'
928
+ ? VariantSpreadFunction<MyProps, string>
929
+ : never
930
+ })
931
+ }
932
+ : never
933
+
934
+ export type GenericStackVariants = VariantDefinitionFromProps<StackProps, any>
935
+ export type GenericTextVariants = VariantDefinitionFromProps<StackProps, any>
936
+
937
+ export type GetVariantProps<Variants> = {
938
+ [Key in keyof Variants]?: Variants[Key] extends VariantSpreadFunction<any, infer Val>
939
+ ? Val
940
+ : GetVariantValues<keyof Variants[Key]>
941
+ }
942
+
943
+ export type VariantSpreadExtras<Props> = {
944
+ fonts: TamaguiConfig['fonts']
945
+ tokens: TamaguiConfig['tokens']
946
+ theme: Themes extends { [key: string]: infer B } ? B : unknown
947
+ props: Props
948
+ }
949
+
950
+ type PropLike = { [key: string]: any }
951
+
952
+ export type VariantSpreadFunction<Props extends PropLike, Val = any> = (
953
+ val: Val,
954
+ config: VariantSpreadExtras<Props>
955
+ ) =>
956
+ | {
957
+ [Key in keyof Props]: Props[Key] | Variable
958
+ }
959
+ | null
960
+ | undefined
961
+
962
+ export type VariantTypeKeys = ':string' | ':boolean' | ':number'
963
+
964
+ export type GetVariantValues<Key> = Key extends `...${infer VariantSpread}`
965
+ ? ThemeValueByCategory<VariantSpread>
966
+ : Key extends 'true' | 'false'
967
+ ? boolean
968
+ : Key extends ':string'
969
+ ? string
970
+ : Key extends ':boolean'
971
+ ? boolean
972
+ : Key extends ':number'
973
+ ? number
974
+ : Key
975
+
976
+ export type FontSizeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
977
+ A,
978
+ FontSizeTokens
979
+ >
980
+ export type SizeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, SizeTokens>
981
+ export type SpaceVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, SpaceTokens>
982
+ export type ColorVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, ColorTokens>
983
+ export type FontLineHeightVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
984
+ A,
985
+ FontLineHeightTokens
986
+ >
987
+ export type FontLetterSpacingVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
988
+ A,
989
+ FontLetterSpacingTokens
990
+ >
991
+ export type FontStyleVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
992
+ A,
993
+ FontStyleTokens
994
+ >
995
+ export type FontTransformVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
996
+ A,
997
+ FontTransformTokens
998
+ >
999
+ export type ZIndexVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, ZIndexTokens>
1000
+ export type RadiusVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, RadiusTokens>
1001
+ export type ThemeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<A, ThemeTokens>
1002
+
1003
+ /**
1004
+ * --------------------------------------------
1005
+ * end variants
1006
+ * --------------------------------------------
1007
+ */
1008
+
1009
+ type SizeKeys =
1010
+ | 'width'
1011
+ | 'height'
1012
+ | 'minWidth'
1013
+ | 'minHeight'
1014
+ | 'maxWidth'
1015
+ | 'maxHeight'
1016
+ | 'shadowRadius'
1017
+
1018
+ type ColorKeys =
1019
+ | 'color'
1020
+ | 'backgroundColor'
1021
+ | 'borderColor'
1022
+ | 'borderBottomColor'
1023
+ | 'borderTopColor'
1024
+ | 'borderLeftColor'
1025
+ | 'borderRightColor'
1026
+ | 'shadowColor'
1027
+ | 'textShadowColor'
1028
+
1029
+ type SpaceKeys =
1030
+ | 'space'
1031
+ | 'padding'
1032
+ | 'paddingHorizontal'
1033
+ | 'paddingVertical'
1034
+ | 'paddingLeft'
1035
+ | 'paddingTop'
1036
+ | 'paddingBottom'
1037
+ | 'paddingLeft'
1038
+ | 'paddingRight'
1039
+ | 'paddingEnd'
1040
+ | 'paddingStart'
1041
+ | 'margin'
1042
+ | 'marginHorizontal'
1043
+ | 'marginVertical'
1044
+ | 'marginLeft'
1045
+ | 'marginTop'
1046
+ | 'marginBottom'
1047
+ | 'marginLeft'
1048
+ | 'marginRight'
1049
+ | 'marginEnd'
1050
+ | 'marginStart'
1051
+ | 'x'
1052
+ | 'y'
1053
+ | 'scale'
1054
+ | 'scaleX'
1055
+ | 'scaleY'
1056
+ | 'borderTopEndRadius'
1057
+ | 'borderTopLeftRadius'
1058
+ | 'borderTopRightRadius'
1059
+ | 'borderTopStartRadius'
1060
+ | 'borderBottomEndRadius'
1061
+ | 'borderBottomLeftRadius'
1062
+ | 'borderBottomRightRadius'
1063
+ | 'borderBottomStartRadius'
1064
+ | 'borderBottomWidth'
1065
+ | 'borderLeftWidth'
1066
+ | 'borderRadius'
1067
+ | 'borderRightWidth'
1068
+ | 'borderTopEndRadius'
1069
+ | 'borderTopLeftRadius'
1070
+ | 'borderTopRightRadius'
1071
+ | 'borderEndWidth'
1072
+ | 'borderStartWidth'
1073
+ | 'borderTopStartRadius'
1074
+ | 'borderTopWidth'
1075
+ | 'borderWidth'
1076
+ | 'left'
1077
+ | 'top'
1078
+ | 'right'
1079
+ | 'bottom'
1080
+ | 'shadowOffset'
1081
+
1082
+ type CSSColorNames =
1083
+ | 'aliceblue'
1084
+ | 'antiquewhite'
1085
+ | 'aqua'
1086
+ | 'aquamarine'
1087
+ | 'azure'
1088
+ | 'beige'
1089
+ | 'bisque'
1090
+ | 'black'
1091
+ | 'blanchedalmond'
1092
+ | 'blue'
1093
+ | 'blueviolet'
1094
+ | 'brown'
1095
+ | 'burlywood'
1096
+ | 'cadetblue'
1097
+ | 'chartreuse'
1098
+ | 'chocolate'
1099
+ | 'coral'
1100
+ | 'cornflowerblue'
1101
+ | 'cornsilk'
1102
+ | 'crimson'
1103
+ | 'cyan'
1104
+ | 'darkblue'
1105
+ | 'darkcyan'
1106
+ | 'darkgoldenrod'
1107
+ | 'darkgray'
1108
+ | 'darkgreen'
1109
+ | 'darkkhaki'
1110
+ | 'darkmagenta'
1111
+ | 'darkolivegreen'
1112
+ | 'darkorange'
1113
+ | 'darkorchid'
1114
+ | 'darkred'
1115
+ | 'darksalmon'
1116
+ | 'darkseagreen'
1117
+ | 'darkslateblue'
1118
+ | 'darkslategray'
1119
+ | 'darkturquoise'
1120
+ | 'darkviolet'
1121
+ | 'deeppink'
1122
+ | 'deepskyblue'
1123
+ | 'dimgray'
1124
+ | 'dodgerblue'
1125
+ | 'firebrick'
1126
+ | 'floralwhite'
1127
+ | 'forestgreen'
1128
+ | 'fuchsia'
1129
+ | 'gainsboro'
1130
+ | 'ghostwhite'
1131
+ | 'gold'
1132
+ | 'goldenrod'
1133
+ | 'gray'
1134
+ | 'green'
1135
+ | 'greenyellow'
1136
+ | 'honeydew'
1137
+ | 'hotpink'
1138
+ | 'indianred '
1139
+ | 'indigo '
1140
+ | 'ivory'
1141
+ | 'khaki'
1142
+ | 'lavender'
1143
+ | 'lavenderblush'
1144
+ | 'lawngreen'
1145
+ | 'lemonchiffon'
1146
+ | 'lightblue'
1147
+ | 'lightcoral'
1148
+ | 'lightcyan'
1149
+ | 'lightgoldenrodyellow'
1150
+ | 'lightgrey'
1151
+ | 'lightgreen'
1152
+ | 'lightpink'
1153
+ | 'lightsalmon'
1154
+ | 'lightseagreen'
1155
+ | 'lightskyblue'
1156
+ | 'lightslategray'
1157
+ | 'lightsteelblue'
1158
+ | 'lightyellow'
1159
+ | 'lime'
1160
+ | 'limegreen'
1161
+ | 'linen'
1162
+ | 'magenta'
1163
+ | 'maroon'
1164
+ | 'mediumaquamarine'
1165
+ | 'mediumblue'
1166
+ | 'mediumorchid'
1167
+ | 'mediumpurple'
1168
+ | 'mediumseagreen'
1169
+ | 'mediumslateblue'
1170
+ | 'mediumspringgreen'
1171
+ | 'mediumturquoise'
1172
+ | 'mediumvioletred'
1173
+ | 'midnightblue'
1174
+ | 'mintcream'
1175
+ | 'mistyrose'
1176
+ | 'moccasin'
1177
+ | 'navajowhite'
1178
+ | 'navy'
1179
+ | 'oldlace'
1180
+ | 'olive'
1181
+ | 'olivedrab'
1182
+ | 'orange'
1183
+ | 'orangered'
1184
+ | 'orchid'
1185
+ | 'palegoldenrod'
1186
+ | 'palegreen'
1187
+ | 'paleturquoise'
1188
+ | 'palevioletred'
1189
+ | 'papayawhip'
1190
+ | 'peachpuff'
1191
+ | 'peru'
1192
+ | 'pink'
1193
+ | 'plum'
1194
+ | 'powderblue'
1195
+ | 'purple'
1196
+ | 'red'
1197
+ | 'rosybrown'
1198
+ | 'royalblue'
1199
+ | 'saddlebrown'
1200
+ | 'salmon'
1201
+ | 'sandybrown'
1202
+ | 'seagreen'
1203
+ | 'seashell'
1204
+ | 'sienna'
1205
+ | 'silver'
1206
+ | 'skyblue'
1207
+ | 'slateblue'
1208
+ | 'slategray'
1209
+ | 'snow'
1210
+ | 'springgreen'
1211
+ | 'steelblue'
1212
+ | 'tan'
1213
+ | 'teal'
1214
+ | 'thistle'
1215
+ | 'tomato'
1216
+ | 'turquoise'
1217
+ | 'violet'
1218
+ | 'wheat'
1219
+ | 'white'
1220
+ | 'whitesmoke'
1221
+ | 'yellow'
1222
+ | 'yellowgreen'
1223
+
1224
+ export type TamaguiComponentState = {
1225
+ hover: boolean
1226
+ press: boolean
1227
+ pressIn: boolean
1228
+ focus: boolean
1229
+ mounted: boolean
1230
+ mediaState?: null | Record<string, boolean>
1231
+ hasAnimation?: boolean
1232
+ animation?: null | {
1233
+ style?: any
1234
+ avoidClasses?: boolean
1235
+ }
1236
+ }
1237
+
1238
+ export type SplitStyleState = TamaguiComponentState & {
1239
+ noClassNames?: boolean
1240
+ dynamicStylesInline?: boolean
1241
+ resolveVariablesAs?: ResolveVariableTypes
1242
+ fallbackProps?: Record<string, any>
1243
+ keepVariantsAsProps?: boolean
1244
+ hasTextAncestor?: boolean
1245
+ }
1246
+
1247
+ // Animations:
1248
+
1249
+ type AnimationConfig = {
1250
+ [key: string]: any
1251
+ }
1252
+
1253
+ // includes a very limited adapter between various impls for number => style
1254
+ // this is useful only in limited scenarios like `Sheet`, but necessary in those cases
1255
+
1256
+ export type AnimatedNumberStrategy =
1257
+ // only values shared between reanimated/react-native for now
1258
+ | {
1259
+ type: 'spring'
1260
+ stiffness?: number
1261
+ damping?: number
1262
+ mass?: number
1263
+ overshootClamping?: boolean
1264
+ restSpeedThreshold?: number
1265
+ restDisplacementThreshold?: number
1266
+ }
1267
+ | { type: 'timing'; duration: number }
1268
+ | { type: 'direct' }
1269
+
1270
+ export type UniversalAnimatedNumber<A> = {
1271
+ getInstance(): A
1272
+ getValue(): number
1273
+ setValue(next: number, config?: AnimatedNumberStrategy): void
1274
+ stop(): void
1275
+ }
1276
+
1277
+ export type AnimationDriver<A extends AnimationConfig = AnimationConfig> = {
1278
+ avoidClasses?: boolean
1279
+ useAnimations: UseAnimationHook
1280
+ useAnimatedNumber: (initial: number) => UniversalAnimatedNumber<any>
1281
+ useAnimatedNumberStyle: <V extends UniversalAnimatedNumber<any>>(
1282
+ val: V,
1283
+ getStyle: (current: any) => any
1284
+ ) => void
1285
+ useAnimatedNumberReaction: (
1286
+ val: UniversalAnimatedNumber<any>,
1287
+ onValue: (current: number) => void
1288
+ ) => void
1289
+ animations: A
1290
+ View?: any
1291
+ Text?: any
1292
+ }
1293
+
1294
+ export type UseAnimationProps = TamaguiComponentPropsBase & Record<string, any>
1295
+
1296
+ export type UseAnimationHelpers = {
1297
+ hostRef: RefObject<HTMLElement | View>
1298
+ staticConfig: StaticConfigParsed
1299
+ getStyle: (props?: {
1300
+ isEntering?: boolean
1301
+ isExiting?: boolean
1302
+ exitVariant?: string | null
1303
+ enterVariant?: string | null
1304
+ }) => ViewStyle
1305
+ state: SplitStyleState
1306
+ pseudos: PseudoProps<ViewStyle>
1307
+ // style: ViewStyle | null | undefined
1308
+ // isMounted: boolean
1309
+ // exitStyle?: ViewStyle | null
1310
+ onDidAnimate?: any
1311
+ delay?: number
1312
+ // mergedStyles(props?: { isExiting?: boolean }): ViewStyle
1313
+ }
1314
+
1315
+ export type UseAnimationHook = (
1316
+ props: UseAnimationProps,
1317
+ helpers: UseAnimationHelpers
1318
+ ) => null | {
1319
+ style?: StackStylePropsBase | StackStylePropsBase[]
1320
+ }
1321
+
1322
+ export type GestureReponderEvent = Exclude<View['props']['onResponderMove'], void> extends (
1323
+ event: infer Event
1324
+ ) => void
1325
+ ? Event
1326
+ : never