@tamagui/core 1.0.1-beta.99 → 1.0.1-rc.0

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