@tamagui/web 2.0.0-rc.3 → 2.0.0-rc.30

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 (929) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/.turbo/turbo-test$colon$web.log +15 -0
  3. package/dist/cjs/Tamagui.cjs +2 -2
  4. package/dist/cjs/Tamagui.native.js +2 -2
  5. package/dist/cjs/Tamagui.native.js.map +1 -1
  6. package/dist/cjs/_withStableStyle.cjs +17 -6
  7. package/dist/cjs/_withStableStyle.native.js +18 -5
  8. package/dist/cjs/_withStableStyle.native.js.map +1 -1
  9. package/dist/cjs/animationDriverTypes.test-d.cjs +11 -0
  10. package/dist/cjs/animationDriverTypes.test-d.native.js +11 -0
  11. package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -1
  12. package/dist/cjs/config.cjs +5 -1
  13. package/dist/cjs/config.native.js +5 -1
  14. package/dist/cjs/config.native.js.map +1 -1
  15. package/dist/cjs/constants/constants.cjs +2 -16
  16. package/dist/cjs/constants/constants.native.js +1 -14
  17. package/dist/cjs/constants/constants.native.js.map +1 -1
  18. package/dist/cjs/createComponent.cjs +92 -79
  19. package/dist/cjs/createComponent.native.js +112 -88
  20. package/dist/cjs/createComponent.native.js.map +1 -1
  21. package/dist/cjs/createTamagui.cjs +38 -37
  22. package/dist/cjs/createTamagui.native.js +41 -37
  23. package/dist/cjs/createTamagui.native.js.map +1 -1
  24. package/dist/cjs/createVariable.native.js.map +1 -1
  25. package/dist/cjs/eventHandling.cjs +1 -1
  26. package/dist/cjs/eventHandling.native.js +84 -57
  27. package/dist/cjs/eventHandling.native.js.map +1 -1
  28. package/dist/cjs/helpers/createDesignSystem.cjs +44 -7
  29. package/dist/cjs/helpers/createDesignSystem.native.js +36 -6
  30. package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
  31. package/dist/cjs/helpers/createMediaStyle.cjs +8 -5
  32. package/dist/cjs/helpers/createMediaStyle.native.js +10 -7
  33. package/dist/cjs/helpers/createMediaStyle.native.js.map +1 -1
  34. package/dist/cjs/helpers/createStyledContext.cjs +11 -7
  35. package/dist/cjs/helpers/createStyledContext.native.js +50 -46
  36. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  37. package/dist/cjs/helpers/defaultAnimationDriver.cjs +0 -2
  38. package/dist/cjs/helpers/defaultAnimationDriver.native.js +0 -2
  39. package/dist/cjs/helpers/defaultAnimationDriver.native.js.map +1 -1
  40. package/dist/cjs/helpers/expandStyle.cjs +2 -1
  41. package/dist/cjs/helpers/expandStyle.native.js +9 -0
  42. package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
  43. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +8 -8
  44. package/dist/cjs/helpers/getDefaultProps.cjs +3 -9
  45. package/dist/cjs/helpers/getDefaultProps.native.js +3 -4
  46. package/dist/cjs/helpers/getDefaultProps.native.js.map +1 -1
  47. package/dist/cjs/helpers/getGroupPropParts.cjs +2 -2
  48. package/dist/cjs/helpers/getGroupPropParts.native.js +2 -2
  49. package/dist/cjs/helpers/getGroupPropParts.native.js.map +1 -1
  50. package/dist/cjs/helpers/getSplitStyles.cjs +59 -28
  51. package/dist/cjs/helpers/getSplitStyles.native.js +114 -77
  52. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  53. package/dist/cjs/helpers/getThemeCSSRules.cjs +17 -9
  54. package/dist/cjs/helpers/getTokenForKey.cjs +127 -0
  55. package/dist/cjs/helpers/getTokenForKey.native.js +145 -0
  56. package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -0
  57. package/dist/cjs/helpers/insertStyleRule.cjs +1 -1
  58. package/dist/cjs/helpers/insertStyleRule.native.js +1 -1
  59. package/dist/cjs/helpers/mainThreadPressEvents.native.js +1 -1
  60. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  61. package/dist/cjs/helpers/mediaObjectToString.cjs +35 -0
  62. package/dist/cjs/helpers/mediaObjectToString.native.js +43 -0
  63. package/dist/cjs/helpers/mediaObjectToString.native.js.map +1 -0
  64. package/dist/cjs/helpers/mediaState.cjs +45 -0
  65. package/dist/cjs/helpers/mediaState.native.js +50 -0
  66. package/dist/cjs/helpers/mediaState.native.js.map +1 -0
  67. package/dist/cjs/helpers/normalizeColor.cjs +6 -1
  68. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +2 -1
  69. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +2 -1
  70. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  71. package/dist/cjs/helpers/parseNativeStyle.cjs +133 -0
  72. package/dist/cjs/helpers/parseNativeStyle.native.js +151 -0
  73. package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -0
  74. package/dist/cjs/{createTheme.cjs → helpers/parseOutlineShorthand.cjs} +5 -5
  75. package/dist/cjs/helpers/parseOutlineShorthand.native.js +58 -0
  76. package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -0
  77. package/dist/cjs/helpers/platformResolveValue.cjs +33 -0
  78. package/dist/cjs/helpers/platformResolveValue.native.js +62 -0
  79. package/dist/cjs/helpers/platformResolveValue.native.js.map +1 -0
  80. package/dist/cjs/helpers/propMapper.cjs +26 -96
  81. package/dist/cjs/helpers/propMapper.native.js +61 -108
  82. package/dist/cjs/helpers/propMapper.native.js.map +1 -1
  83. package/dist/cjs/helpers/pseudoTransitions.cjs +65 -0
  84. package/dist/cjs/helpers/pseudoTransitions.native.js +72 -0
  85. package/dist/cjs/helpers/pseudoTransitions.native.js.map +1 -0
  86. package/dist/cjs/{constants/webToNativeProps.cjs → helpers/resolveAnimationDriver.cjs} +7 -7
  87. package/dist/cjs/{views/Stack.native.js → helpers/resolveAnimationDriver.native.js} +9 -14
  88. package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -0
  89. package/dist/cjs/{views/Stack.cjs → helpers/resolveCompoundTokens.cjs} +16 -13
  90. package/dist/cjs/helpers/resolveCompoundTokens.native.js +40 -0
  91. package/dist/cjs/helpers/resolveCompoundTokens.native.js.map +1 -0
  92. package/dist/cjs/helpers/skipProps.cjs +1 -0
  93. package/dist/cjs/helpers/skipProps.native.js +1 -0
  94. package/dist/cjs/helpers/skipProps.native.js.map +1 -1
  95. package/dist/cjs/helpers/themeable.cjs +4 -2
  96. package/dist/cjs/helpers/themeable.native.js +4 -2
  97. package/dist/cjs/helpers/themeable.native.js.map +1 -1
  98. package/dist/cjs/helpers/useRenderElement.native.js +1 -1
  99. package/dist/cjs/helpers/useRenderElement.native.js.map +1 -1
  100. package/dist/cjs/hooks/useComponentState.cjs +9 -5
  101. package/dist/cjs/hooks/useComponentState.native.js +10 -6
  102. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  103. package/dist/cjs/hooks/useMedia.cjs +25 -48
  104. package/dist/cjs/hooks/useMedia.native.js +25 -55
  105. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  106. package/dist/cjs/hooks/useProps.cjs +3 -2
  107. package/dist/cjs/hooks/useProps.native.js +3 -2
  108. package/dist/cjs/hooks/useProps.native.js.map +1 -1
  109. package/dist/cjs/hooks/useTheme.cjs +4 -0
  110. package/dist/cjs/hooks/useTheme.native.js +4 -0
  111. package/dist/cjs/hooks/useTheme.native.js.map +1 -1
  112. package/dist/cjs/hooks/useThemeState.cjs +30 -12
  113. package/dist/cjs/hooks/useThemeState.native.js +28 -12
  114. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  115. package/dist/cjs/index.cjs +9 -5
  116. package/dist/cjs/index.js +86 -74
  117. package/dist/cjs/index.js.map +1 -1
  118. package/dist/cjs/index.native.js +9 -5
  119. package/dist/cjs/index.native.js.map +1 -1
  120. package/dist/cjs/styled.native.js.map +1 -1
  121. package/dist/cjs/views/TamaguiProvider.cjs +20 -33
  122. package/dist/cjs/views/TamaguiProvider.native.js +28 -39
  123. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  124. package/dist/cjs/views/TamaguiRoot.cjs +68 -0
  125. package/dist/cjs/{createTheme.native.js → views/TamaguiRoot.native.js} +8 -8
  126. package/dist/cjs/views/TamaguiRoot.native.js.map +1 -0
  127. package/dist/cjs/views/Text.cjs +2 -10
  128. package/dist/cjs/views/Text.native.js +0 -1
  129. package/dist/cjs/views/Text.native.js.map +1 -1
  130. package/dist/cjs/views/Theme.cjs +2 -0
  131. package/dist/cjs/views/Theme.native.js +2 -0
  132. package/dist/cjs/views/Theme.native.js.map +1 -1
  133. package/dist/cjs/views/ThemeProvider.cjs +3 -1
  134. package/dist/cjs/views/ThemeProvider.native.js +2 -0
  135. package/dist/cjs/views/ThemeProvider.native.js.map +1 -1
  136. package/dist/cjs/views/View.cjs +0 -2
  137. package/dist/cjs/views/View.native.js +0 -2
  138. package/dist/cjs/views/View.native.js.map +1 -1
  139. package/dist/esm/Tamagui.mjs +1 -1
  140. package/dist/esm/Tamagui.native.js +1 -1
  141. package/dist/esm/_withStableStyle.mjs +18 -7
  142. package/dist/esm/_withStableStyle.mjs.map +1 -1
  143. package/dist/esm/_withStableStyle.native.js +19 -6
  144. package/dist/esm/_withStableStyle.native.js.map +1 -1
  145. package/dist/esm/animationDriverTypes.test-d.mjs +11 -0
  146. package/dist/esm/animationDriverTypes.test-d.mjs.map +1 -1
  147. package/dist/esm/animationDriverTypes.test-d.native.js +11 -0
  148. package/dist/esm/animationDriverTypes.test-d.native.js.map +1 -1
  149. package/dist/esm/config.mjs +5 -1
  150. package/dist/esm/config.mjs.map +1 -1
  151. package/dist/esm/config.native.js +5 -1
  152. package/dist/esm/config.native.js.map +1 -1
  153. package/dist/esm/constants/constants.mjs +2 -14
  154. package/dist/esm/constants/constants.mjs.map +1 -1
  155. package/dist/esm/constants/constants.native.js +1 -12
  156. package/dist/esm/constants/constants.native.js.map +1 -1
  157. package/dist/esm/createComponent.mjs +91 -79
  158. package/dist/esm/createComponent.mjs.map +1 -1
  159. package/dist/esm/createComponent.native.js +112 -89
  160. package/dist/esm/createComponent.native.js.map +1 -1
  161. package/dist/esm/createTamagui.mjs +38 -37
  162. package/dist/esm/createTamagui.mjs.map +1 -1
  163. package/dist/esm/createTamagui.native.js +41 -37
  164. package/dist/esm/createTamagui.native.js.map +1 -1
  165. package/dist/esm/createVariable.mjs.map +1 -1
  166. package/dist/esm/eventHandling.mjs +1 -1
  167. package/dist/esm/eventHandling.mjs.map +1 -1
  168. package/dist/esm/eventHandling.native.js +84 -57
  169. package/dist/esm/eventHandling.native.js.map +1 -1
  170. package/dist/esm/helpers/createDesignSystem.mjs +43 -7
  171. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  172. package/dist/esm/helpers/createDesignSystem.native.js +35 -7
  173. package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
  174. package/dist/esm/helpers/createMediaStyle.mjs +7 -4
  175. package/dist/esm/helpers/createMediaStyle.mjs.map +1 -1
  176. package/dist/esm/helpers/createMediaStyle.native.js +9 -6
  177. package/dist/esm/helpers/createMediaStyle.native.js.map +1 -1
  178. package/dist/esm/helpers/createStyledContext.mjs +12 -8
  179. package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
  180. package/dist/esm/helpers/createStyledContext.native.js +11 -7
  181. package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
  182. package/dist/esm/helpers/defaultAnimationDriver.mjs +0 -2
  183. package/dist/esm/helpers/defaultAnimationDriver.mjs.map +1 -1
  184. package/dist/esm/helpers/defaultAnimationDriver.native.js +0 -2
  185. package/dist/esm/helpers/defaultAnimationDriver.native.js.map +1 -1
  186. package/dist/esm/helpers/expandStyle.mjs +0 -1
  187. package/dist/esm/helpers/expandStyle.mjs.map +1 -1
  188. package/dist/esm/helpers/expandStyle.native.js +9 -1
  189. package/dist/esm/helpers/expandStyle.native.js.map +1 -1
  190. package/dist/esm/helpers/getCSSStylesAtomic.mjs +8 -8
  191. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
  192. package/dist/esm/helpers/getDefaultProps.mjs +3 -9
  193. package/dist/esm/helpers/getDefaultProps.mjs.map +1 -1
  194. package/dist/esm/helpers/getDefaultProps.native.js +3 -4
  195. package/dist/esm/helpers/getDefaultProps.native.js.map +1 -1
  196. package/dist/esm/helpers/getGroupPropParts.mjs +1 -1
  197. package/dist/esm/helpers/getGroupPropParts.native.js +1 -1
  198. package/dist/esm/helpers/getSplitStyles.mjs +59 -29
  199. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  200. package/dist/esm/helpers/getSplitStyles.native.js +113 -77
  201. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  202. package/dist/esm/helpers/getThemeCSSRules.mjs +17 -9
  203. package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
  204. package/dist/esm/helpers/getTokenForKey.mjs +101 -0
  205. package/dist/esm/helpers/getTokenForKey.mjs.map +1 -0
  206. package/dist/esm/helpers/getTokenForKey.native.js +116 -0
  207. package/dist/esm/helpers/getTokenForKey.native.js.map +1 -0
  208. package/dist/esm/helpers/insertStyleRule.mjs +1 -1
  209. package/dist/esm/helpers/insertStyleRule.native.js +1 -1
  210. package/dist/esm/helpers/mainThreadPressEvents.native.js +1 -1
  211. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  212. package/dist/esm/helpers/mediaObjectToString.mjs +12 -0
  213. package/dist/esm/helpers/mediaObjectToString.mjs.map +1 -0
  214. package/dist/esm/helpers/mediaObjectToString.native.js +17 -0
  215. package/dist/esm/helpers/mediaObjectToString.native.js.map +1 -0
  216. package/dist/esm/helpers/mediaState.mjs +18 -0
  217. package/dist/esm/helpers/mediaState.mjs.map +1 -0
  218. package/dist/esm/helpers/mediaState.native.js +20 -0
  219. package/dist/esm/helpers/mediaState.native.js.map +1 -0
  220. package/dist/esm/helpers/normalizeColor.mjs +6 -1
  221. package/dist/esm/helpers/normalizeColor.mjs.map +1 -1
  222. package/dist/esm/helpers/normalizeValueWithProperty.mjs +2 -1
  223. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
  224. package/dist/esm/helpers/normalizeValueWithProperty.native.js +2 -1
  225. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
  226. package/dist/esm/helpers/parseNativeStyle.mjs +110 -0
  227. package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
  228. package/dist/esm/helpers/parseNativeStyle.native.js +125 -0
  229. package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -0
  230. package/dist/esm/helpers/parseOutlineShorthand.mjs +3 -0
  231. package/dist/esm/helpers/parseOutlineShorthand.mjs.map +1 -0
  232. package/dist/esm/helpers/parseOutlineShorthand.native.js +32 -0
  233. package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -0
  234. package/dist/esm/helpers/platformResolveValue.mjs +10 -0
  235. package/dist/esm/helpers/platformResolveValue.mjs.map +1 -0
  236. package/dist/esm/helpers/platformResolveValue.native.js +36 -0
  237. package/dist/esm/helpers/platformResolveValue.native.js.map +1 -0
  238. package/dist/esm/helpers/propMapper.mjs +24 -96
  239. package/dist/esm/helpers/propMapper.mjs.map +1 -1
  240. package/dist/esm/helpers/propMapper.native.js +60 -107
  241. package/dist/esm/helpers/propMapper.native.js.map +1 -1
  242. package/dist/esm/helpers/pseudoTransitions.mjs +41 -0
  243. package/dist/esm/helpers/pseudoTransitions.mjs.map +1 -0
  244. package/dist/esm/helpers/pseudoTransitions.native.js +45 -0
  245. package/dist/esm/helpers/pseudoTransitions.native.js.map +1 -0
  246. package/dist/esm/helpers/resolveAnimationDriver.mjs +5 -0
  247. package/dist/esm/helpers/resolveAnimationDriver.mjs.map +1 -0
  248. package/dist/esm/helpers/resolveAnimationDriver.native.js +6 -0
  249. package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -0
  250. package/dist/esm/helpers/resolveCompoundTokens.mjs +14 -0
  251. package/dist/esm/helpers/resolveCompoundTokens.mjs.map +1 -0
  252. package/dist/esm/helpers/resolveCompoundTokens.native.js +14 -0
  253. package/dist/esm/helpers/resolveCompoundTokens.native.js.map +1 -0
  254. package/dist/esm/helpers/skipProps.mjs +1 -1
  255. package/dist/esm/helpers/skipProps.mjs.map +1 -1
  256. package/dist/esm/helpers/skipProps.native.js +1 -1
  257. package/dist/esm/helpers/skipProps.native.js.map +1 -1
  258. package/dist/esm/helpers/themeable.mjs +4 -2
  259. package/dist/esm/helpers/themeable.mjs.map +1 -1
  260. package/dist/esm/helpers/themeable.native.js +4 -2
  261. package/dist/esm/helpers/themeable.native.js.map +1 -1
  262. package/dist/esm/helpers/useRenderElement.mjs.map +1 -1
  263. package/dist/esm/helpers/useRenderElement.native.js +1 -1
  264. package/dist/esm/helpers/useRenderElement.native.js.map +1 -1
  265. package/dist/esm/helpers/wrapStyleTags.native.js +0 -2
  266. package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -1
  267. package/dist/esm/hooks/getThemeProxied.mjs +0 -3
  268. package/dist/esm/hooks/getThemeProxied.mjs.map +1 -1
  269. package/dist/esm/hooks/useComponentState.mjs +9 -5
  270. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  271. package/dist/esm/hooks/useComponentState.native.js +10 -6
  272. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  273. package/dist/esm/hooks/useMedia.mjs +21 -39
  274. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  275. package/dist/esm/hooks/useMedia.native.js +22 -47
  276. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  277. package/dist/esm/hooks/useProps.mjs +2 -1
  278. package/dist/esm/hooks/useProps.mjs.map +1 -1
  279. package/dist/esm/hooks/useProps.native.js +2 -1
  280. package/dist/esm/hooks/useProps.native.js.map +1 -1
  281. package/dist/esm/hooks/useTheme.mjs +4 -0
  282. package/dist/esm/hooks/useTheme.mjs.map +1 -1
  283. package/dist/esm/hooks/useTheme.native.js +4 -0
  284. package/dist/esm/hooks/useTheme.native.js.map +1 -1
  285. package/dist/esm/hooks/useThemeState.mjs +30 -13
  286. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  287. package/dist/esm/hooks/useThemeState.native.js +28 -12
  288. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  289. package/dist/esm/index.js +67 -107
  290. package/dist/esm/index.js.map +1 -6
  291. package/dist/esm/index.mjs +5 -1
  292. package/dist/esm/index.mjs.map +1 -1
  293. package/dist/esm/index.native.js +5 -1
  294. package/dist/esm/index.native.js.map +1 -1
  295. package/dist/esm/insertFont.native.js +0 -1
  296. package/dist/esm/insertFont.native.js.map +1 -1
  297. package/dist/esm/styled.mjs.map +1 -1
  298. package/dist/esm/styled.native.js.map +1 -1
  299. package/dist/esm/views/TamaguiProvider.mjs +21 -34
  300. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  301. package/dist/esm/views/TamaguiProvider.native.js +28 -40
  302. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  303. package/dist/esm/views/TamaguiRoot.mjs +34 -0
  304. package/dist/esm/views/TamaguiRoot.mjs.map +1 -0
  305. package/dist/esm/views/TamaguiRoot.native.js +5 -0
  306. package/dist/esm/views/TamaguiRoot.native.js.map +1 -0
  307. package/dist/esm/views/Text.mjs +1 -9
  308. package/dist/esm/views/Text.mjs.map +1 -1
  309. package/dist/esm/views/Text.native.js +0 -1
  310. package/dist/esm/views/Text.native.js.map +1 -1
  311. package/dist/esm/views/Theme.mjs +2 -0
  312. package/dist/esm/views/Theme.mjs.map +1 -1
  313. package/dist/esm/views/Theme.native.js +2 -0
  314. package/dist/esm/views/Theme.native.js.map +1 -1
  315. package/dist/esm/views/ThemeProvider.mjs +3 -1
  316. package/dist/esm/views/ThemeProvider.mjs.map +1 -1
  317. package/dist/esm/views/ThemeProvider.native.js +2 -2
  318. package/dist/esm/views/ThemeProvider.native.js.map +1 -1
  319. package/dist/esm/views/View.mjs +0 -2
  320. package/dist/esm/views/View.mjs.map +1 -1
  321. package/dist/esm/views/View.native.js +0 -2
  322. package/dist/esm/views/View.native.js.map +1 -1
  323. package/inject-styles/index.cjs +2 -0
  324. package/inject-styles/index.js +2 -0
  325. package/inject-styles.cjs +1 -0
  326. package/package.json +21 -27
  327. package/src/Tamagui.ts +1 -1
  328. package/src/_withStableStyle.tsx +44 -16
  329. package/src/animationDriverTypes.test-d.ts +76 -0
  330. package/src/config.ts +5 -1
  331. package/src/constants/constants.ts +0 -17
  332. package/src/createComponent.tsx +224 -93
  333. package/src/createTamagui.ts +20 -11
  334. package/src/createVariable.ts +1 -1
  335. package/src/eventHandling.native.ts +78 -50
  336. package/src/eventHandling.ts +2 -1
  337. package/src/helpers/createDesignSystem.ts +77 -6
  338. package/src/helpers/createMediaStyle.ts +12 -4
  339. package/src/helpers/createStyledContext.tsx +27 -18
  340. package/src/helpers/defaultAnimationDriver.tsx +0 -2
  341. package/src/helpers/expandStyle.ts +11 -0
  342. package/src/helpers/getCSSStylesAtomic.ts +13 -14
  343. package/src/helpers/getDefaultProps.ts +4 -15
  344. package/src/helpers/getGroupPropParts.ts +1 -1
  345. package/src/helpers/getSplitStyles.tsx +174 -40
  346. package/src/helpers/getThemeCSSRules.ts +16 -14
  347. package/src/helpers/getTokenForKey.ts +223 -0
  348. package/src/helpers/insertStyleRule.tsx +1 -1
  349. package/src/helpers/mainThreadPressEvents.native.ts +2 -1
  350. package/src/helpers/mediaObjectToString.ts +30 -0
  351. package/src/helpers/mediaState.ts +32 -0
  352. package/src/helpers/normalizeColor.ts +12 -8
  353. package/src/helpers/normalizeValueWithProperty.ts +8 -1
  354. package/src/helpers/parseNativeStyle.ts +193 -0
  355. package/src/helpers/parseOutlineShorthand.native.ts +62 -0
  356. package/src/helpers/parseOutlineShorthand.ts +6 -0
  357. package/src/helpers/platformResolveValue.native.ts +72 -0
  358. package/src/helpers/platformResolveValue.ts +22 -0
  359. package/src/helpers/propMapper.ts +65 -221
  360. package/src/helpers/pseudoTransitions.ts +97 -0
  361. package/src/helpers/resolveAnimationDriver.ts +23 -0
  362. package/src/helpers/resolveCompoundTokens.ts +28 -0
  363. package/src/helpers/skipProps.ts +1 -0
  364. package/src/helpers/themeable.tsx +7 -5
  365. package/src/helpers/useRenderElement.tsx +7 -0
  366. package/src/hooks/useComponentState.ts +11 -8
  367. package/src/hooks/useMedia.tsx +28 -75
  368. package/src/hooks/useProps.tsx +2 -1
  369. package/src/hooks/useTheme.tsx +4 -0
  370. package/src/hooks/useThemeState.ts +57 -14
  371. package/src/index.ts +4 -4
  372. package/src/styled.tsx +2 -2
  373. package/src/types.tsx +205 -57
  374. package/src/views/TamaguiProvider.tsx +35 -54
  375. package/src/views/TamaguiRoot.native.tsx +9 -0
  376. package/src/views/TamaguiRoot.tsx +64 -0
  377. package/src/views/Text.tsx +1 -9
  378. package/src/views/Theme.tsx +2 -0
  379. package/src/views/ThemeProvider.tsx +3 -1
  380. package/src/views/View.tsx +0 -2
  381. package/tsconfig.json +44 -0
  382. package/tsconfig.test.json +9 -0
  383. package/types/_withStableStyle.d.ts +1 -1
  384. package/types/_withStableStyle.d.ts.map +1 -1
  385. package/types/config.d.ts.map +1 -1
  386. package/types/constants/constants.d.ts +0 -3
  387. package/types/constants/constants.d.ts.map +1 -1
  388. package/types/createComponent.d.ts.map +1 -1
  389. package/types/createTamagui.d.ts.map +1 -1
  390. package/types/createVariable.d.ts +1 -1
  391. package/types/createVariable.d.ts.map +1 -1
  392. package/types/eventHandling.d.ts +1 -1
  393. package/types/eventHandling.d.ts.map +1 -1
  394. package/types/eventHandling.native.d.ts +1 -1
  395. package/types/eventHandling.native.d.ts.map +1 -1
  396. package/types/helpers/createDesignSystem.d.ts +5 -2
  397. package/types/helpers/createDesignSystem.d.ts.map +1 -1
  398. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  399. package/types/helpers/createStyledContext.d.ts +1 -1
  400. package/types/helpers/createStyledContext.d.ts.map +1 -1
  401. package/types/helpers/defaultAnimationDriver.d.ts.map +1 -1
  402. package/types/helpers/expandStyle.d.ts.map +1 -1
  403. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
  404. package/types/helpers/getDefaultProps.d.ts +1 -1
  405. package/types/helpers/getDefaultProps.d.ts.map +1 -1
  406. package/types/helpers/getSplitStyles.d.ts +2 -2
  407. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  408. package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
  409. package/types/helpers/getTokenForKey.d.ts +6 -0
  410. package/types/helpers/getTokenForKey.d.ts.map +1 -0
  411. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
  412. package/types/helpers/mediaObjectToString.d.ts +3 -0
  413. package/types/helpers/mediaObjectToString.d.ts.map +1 -0
  414. package/types/helpers/mediaState.d.ts +7 -0
  415. package/types/helpers/mediaState.d.ts.map +1 -0
  416. package/types/helpers/normalizeColor.d.ts +1 -1
  417. package/types/helpers/normalizeColor.d.ts.map +1 -1
  418. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
  419. package/types/helpers/parseNativeStyle.d.ts +14 -0
  420. package/types/helpers/parseNativeStyle.d.ts.map +1 -0
  421. package/types/helpers/parseOutlineShorthand.d.ts +3 -0
  422. package/types/helpers/parseOutlineShorthand.d.ts.map +1 -0
  423. package/types/helpers/parseOutlineShorthand.native.d.ts +3 -0
  424. package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -0
  425. package/types/helpers/platformResolveValue.d.ts +6 -0
  426. package/types/helpers/platformResolveValue.d.ts.map +1 -0
  427. package/types/helpers/platformResolveValue.native.d.ts +7 -0
  428. package/types/helpers/platformResolveValue.native.d.ts.map +1 -0
  429. package/types/helpers/propMapper.d.ts +2 -2
  430. package/types/helpers/propMapper.d.ts.map +1 -1
  431. package/types/helpers/pseudoTransitions.d.ts +29 -0
  432. package/types/helpers/pseudoTransitions.d.ts.map +1 -0
  433. package/types/helpers/resolveAnimationDriver.d.ts +7 -0
  434. package/types/helpers/resolveAnimationDriver.d.ts.map +1 -0
  435. package/types/helpers/resolveCompoundTokens.d.ts +9 -0
  436. package/types/helpers/resolveCompoundTokens.d.ts.map +1 -0
  437. package/types/helpers/skipProps.d.ts +1 -0
  438. package/types/helpers/skipProps.d.ts.map +1 -1
  439. package/types/helpers/themeable.d.ts.map +1 -1
  440. package/types/helpers/useRenderElement.d.ts.map +1 -1
  441. package/types/helpers/webPropsToSkip.native.d.ts +20 -20
  442. package/types/hooks/useComponentState.d.ts +2 -1
  443. package/types/hooks/useComponentState.d.ts.map +1 -1
  444. package/types/hooks/useMedia.d.ts +1 -6
  445. package/types/hooks/useMedia.d.ts.map +1 -1
  446. package/types/hooks/useProps.d.ts.map +1 -1
  447. package/types/hooks/useTheme.d.ts.map +1 -1
  448. package/types/hooks/useThemeState.d.ts.map +1 -1
  449. package/types/index.d.ts +5 -1
  450. package/types/index.d.ts.map +1 -1
  451. package/types/styled.d.ts +2 -2
  452. package/types/styled.d.ts.map +1 -1
  453. package/types/types.d.ts +105 -30
  454. package/types/types.d.ts.map +1 -1
  455. package/types/views/TamaguiProvider.d.ts +1 -4
  456. package/types/views/TamaguiProvider.d.ts.map +1 -1
  457. package/types/views/TamaguiRoot.d.ts +15 -0
  458. package/types/views/TamaguiRoot.d.ts.map +1 -0
  459. package/types/views/TamaguiRoot.native.d.ts +7 -0
  460. package/types/views/TamaguiRoot.native.d.ts.map +1 -0
  461. package/types/views/Text.d.ts.map +1 -1
  462. package/types/views/Theme.d.ts.map +1 -1
  463. package/types/views/ThemeProvider.d.ts.map +1 -1
  464. package/types/views/View.d.ts.map +1 -1
  465. package/vitest.config.d.ts +3 -0
  466. package/vitest.config.d.ts.map +1 -0
  467. package/vitest.config.ts +14 -0
  468. package/dist/cjs/Tamagui.js +0 -56
  469. package/dist/cjs/Tamagui.js.map +0 -6
  470. package/dist/cjs/_withStableStyle.js +0 -33
  471. package/dist/cjs/_withStableStyle.js.map +0 -6
  472. package/dist/cjs/animationDriverTypes.test-d.js +0 -51
  473. package/dist/cjs/animationDriverTypes.test-d.js.map +0 -6
  474. package/dist/cjs/config.js +0 -109
  475. package/dist/cjs/config.js.map +0 -6
  476. package/dist/cjs/constants/accessibilityDirectMap.js +0 -25
  477. package/dist/cjs/constants/accessibilityDirectMap.js.map +0 -6
  478. package/dist/cjs/constants/constants.js +0 -43
  479. package/dist/cjs/constants/constants.js.map +0 -6
  480. package/dist/cjs/constants/isDevTools.js +0 -28
  481. package/dist/cjs/constants/isDevTools.js.map +0 -6
  482. package/dist/cjs/constants/webToNativeProps.js +0 -22
  483. package/dist/cjs/constants/webToNativeProps.js.map +0 -6
  484. package/dist/cjs/constants/webToNativeProps.native.js +0 -115
  485. package/dist/cjs/constants/webToNativeProps.native.js.map +0 -1
  486. package/dist/cjs/contexts/ComponentContext.js +0 -30
  487. package/dist/cjs/contexts/ComponentContext.js.map +0 -6
  488. package/dist/cjs/contexts/GroupContext.js +0 -22
  489. package/dist/cjs/contexts/GroupContext.js.map +0 -6
  490. package/dist/cjs/createComponent.js +0 -697
  491. package/dist/cjs/createComponent.js.map +0 -6
  492. package/dist/cjs/createFont.js +0 -53
  493. package/dist/cjs/createFont.js.map +0 -6
  494. package/dist/cjs/createShorthands.js +0 -23
  495. package/dist/cjs/createShorthands.js.map +0 -6
  496. package/dist/cjs/createTamagui.js +0 -190
  497. package/dist/cjs/createTamagui.js.map +0 -6
  498. package/dist/cjs/createTheme.js +0 -21
  499. package/dist/cjs/createTheme.js.map +0 -6
  500. package/dist/cjs/createTheme.native.js.map +0 -1
  501. package/dist/cjs/createTokens.js +0 -24
  502. package/dist/cjs/createTokens.js.map +0 -6
  503. package/dist/cjs/createVariable.js +0 -89
  504. package/dist/cjs/createVariable.js.map +0 -6
  505. package/dist/cjs/createVariables.js +0 -56
  506. package/dist/cjs/createVariables.js.map +0 -6
  507. package/dist/cjs/defaultComponentState.js +0 -38
  508. package/dist/cjs/defaultComponentState.js.map +0 -6
  509. package/dist/cjs/eventHandling.js +0 -41
  510. package/dist/cjs/eventHandling.js.map +0 -6
  511. package/dist/cjs/helpers/createDesignSystem.js +0 -120
  512. package/dist/cjs/helpers/createDesignSystem.js.map +0 -6
  513. package/dist/cjs/helpers/createMediaStyle.js +0 -74
  514. package/dist/cjs/helpers/createMediaStyle.js.map +0 -6
  515. package/dist/cjs/helpers/createStyledContext.js +0 -52
  516. package/dist/cjs/helpers/createStyledContext.js.map +0 -6
  517. package/dist/cjs/helpers/defaultAnimationDriver.js +0 -39
  518. package/dist/cjs/helpers/defaultAnimationDriver.js.map +0 -6
  519. package/dist/cjs/helpers/defaultOffset.js +0 -21
  520. package/dist/cjs/helpers/defaultOffset.js.map +0 -6
  521. package/dist/cjs/helpers/expandStyle.js +0 -73
  522. package/dist/cjs/helpers/expandStyle.js.map +0 -6
  523. package/dist/cjs/helpers/expandStyles.js +0 -34
  524. package/dist/cjs/helpers/expandStyles.js.map +0 -6
  525. package/dist/cjs/helpers/getCSSStylesAtomic.js +0 -156
  526. package/dist/cjs/helpers/getCSSStylesAtomic.js.map +0 -6
  527. package/dist/cjs/helpers/getDefaultProps.js +0 -31
  528. package/dist/cjs/helpers/getDefaultProps.js.map +0 -6
  529. package/dist/cjs/helpers/getDynamicVal.js +0 -62
  530. package/dist/cjs/helpers/getDynamicVal.js.map +0 -6
  531. package/dist/cjs/helpers/getExpandedShorthands.js +0 -34
  532. package/dist/cjs/helpers/getExpandedShorthands.js.map +0 -6
  533. package/dist/cjs/helpers/getFontLanguage.js +0 -21
  534. package/dist/cjs/helpers/getFontLanguage.js.map +0 -6
  535. package/dist/cjs/helpers/getGroupPropParts.js +0 -34
  536. package/dist/cjs/helpers/getGroupPropParts.js.map +0 -6
  537. package/dist/cjs/helpers/getShorthandValue.js +0 -23
  538. package/dist/cjs/helpers/getShorthandValue.js.map +0 -6
  539. package/dist/cjs/helpers/getSplitStyles.js +0 -630
  540. package/dist/cjs/helpers/getSplitStyles.js.map +0 -6
  541. package/dist/cjs/helpers/getThemeCSSRules.js +0 -89
  542. package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -6
  543. package/dist/cjs/helpers/getVariantExtras.js +0 -59
  544. package/dist/cjs/helpers/getVariantExtras.js.map +0 -6
  545. package/dist/cjs/helpers/insertStyleRule.js +0 -196
  546. package/dist/cjs/helpers/insertStyleRule.js.map +0 -6
  547. package/dist/cjs/helpers/isActivePlatform.js +0 -31
  548. package/dist/cjs/helpers/isActivePlatform.js.map +0 -6
  549. package/dist/cjs/helpers/isActiveTheme.js +0 -24
  550. package/dist/cjs/helpers/isActiveTheme.js.map +0 -6
  551. package/dist/cjs/helpers/isObj.js +0 -21
  552. package/dist/cjs/helpers/isObj.js.map +0 -6
  553. package/dist/cjs/helpers/isTamaguiComponent.js +0 -24
  554. package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -6
  555. package/dist/cjs/helpers/isTamaguiElement.js +0 -30
  556. package/dist/cjs/helpers/isTamaguiElement.js.map +0 -6
  557. package/dist/cjs/helpers/log.js +0 -33
  558. package/dist/cjs/helpers/log.js.map +0 -6
  559. package/dist/cjs/helpers/mainThreadPressEvents.js +0 -22
  560. package/dist/cjs/helpers/mainThreadPressEvents.js.map +0 -6
  561. package/dist/cjs/helpers/matchMedia.js +0 -34
  562. package/dist/cjs/helpers/matchMedia.js.map +0 -6
  563. package/dist/cjs/helpers/mergeProps.js +0 -55
  564. package/dist/cjs/helpers/mergeProps.js.map +0 -6
  565. package/dist/cjs/helpers/mergeRenderElementProps.js +0 -25
  566. package/dist/cjs/helpers/mergeRenderElementProps.js.map +0 -6
  567. package/dist/cjs/helpers/mergeSlotStyleProps.js +0 -29
  568. package/dist/cjs/helpers/mergeSlotStyleProps.js.map +0 -6
  569. package/dist/cjs/helpers/mergeVariants.js +0 -38
  570. package/dist/cjs/helpers/mergeVariants.js.map +0 -6
  571. package/dist/cjs/helpers/nativeOnlyProps.js +0 -55
  572. package/dist/cjs/helpers/nativeOnlyProps.js.map +0 -6
  573. package/dist/cjs/helpers/normalizeColor.js +0 -26
  574. package/dist/cjs/helpers/normalizeColor.js.map +0 -6
  575. package/dist/cjs/helpers/normalizeShadow.js +0 -40
  576. package/dist/cjs/helpers/normalizeShadow.js.map +0 -6
  577. package/dist/cjs/helpers/normalizeStyle.js +0 -36
  578. package/dist/cjs/helpers/normalizeStyle.js.map +0 -6
  579. package/dist/cjs/helpers/normalizeStylePropKeys.js +0 -21
  580. package/dist/cjs/helpers/normalizeStylePropKeys.js.map +0 -6
  581. package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -32
  582. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +0 -6
  583. package/dist/cjs/helpers/objectIdentityKey.js +0 -38
  584. package/dist/cjs/helpers/objectIdentityKey.js.map +0 -6
  585. package/dist/cjs/helpers/parseBorderShorthand.js +0 -22
  586. package/dist/cjs/helpers/parseBorderShorthand.js.map +0 -6
  587. package/dist/cjs/helpers/pointerEvents.js +0 -22
  588. package/dist/cjs/helpers/pointerEvents.js.map +0 -6
  589. package/dist/cjs/helpers/propMapper.js +0 -257
  590. package/dist/cjs/helpers/propMapper.js.map +0 -6
  591. package/dist/cjs/helpers/proxyThemeToParents.js +0 -40
  592. package/dist/cjs/helpers/proxyThemeToParents.js.map +0 -6
  593. package/dist/cjs/helpers/proxyThemeVariables.js +0 -31
  594. package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -6
  595. package/dist/cjs/helpers/pseudoDescriptors.js +0 -72
  596. package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -6
  597. package/dist/cjs/helpers/registerCSSVariable.js +0 -47
  598. package/dist/cjs/helpers/registerCSSVariable.js.map +0 -6
  599. package/dist/cjs/helpers/resolveRem.js +0 -27
  600. package/dist/cjs/helpers/resolveRem.js.map +0 -6
  601. package/dist/cjs/helpers/resolveSafeArea.js +0 -29
  602. package/dist/cjs/helpers/resolveSafeArea.js.map +0 -6
  603. package/dist/cjs/helpers/setElementProps.js +0 -24
  604. package/dist/cjs/helpers/setElementProps.js.map +0 -6
  605. package/dist/cjs/helpers/skipProps.js +0 -38
  606. package/dist/cjs/helpers/skipProps.js.map +0 -6
  607. package/dist/cjs/helpers/sortString.js +0 -21
  608. package/dist/cjs/helpers/sortString.js.map +0 -6
  609. package/dist/cjs/helpers/subscribeToContextGroup.js +0 -74
  610. package/dist/cjs/helpers/subscribeToContextGroup.js.map +0 -6
  611. package/dist/cjs/helpers/themeable.js +0 -56
  612. package/dist/cjs/helpers/themeable.js.map +0 -6
  613. package/dist/cjs/helpers/themes.js +0 -33
  614. package/dist/cjs/helpers/themes.js.map +0 -6
  615. package/dist/cjs/helpers/timer.js +0 -27
  616. package/dist/cjs/helpers/timer.js.map +0 -6
  617. package/dist/cjs/helpers/transformsToString.js +0 -33
  618. package/dist/cjs/helpers/transformsToString.js.map +0 -6
  619. package/dist/cjs/helpers/useRenderElement.js +0 -42
  620. package/dist/cjs/helpers/useRenderElement.js.map +0 -6
  621. package/dist/cjs/helpers/webPropsToSkip.js +0 -21
  622. package/dist/cjs/helpers/webPropsToSkip.js.map +0 -6
  623. package/dist/cjs/helpers/wrapStyleTags.js +0 -38
  624. package/dist/cjs/helpers/wrapStyleTags.js.map +0 -6
  625. package/dist/cjs/hooks/doesRootSchemeMatchSystem.js +0 -23
  626. package/dist/cjs/hooks/doesRootSchemeMatchSystem.js.map +0 -6
  627. package/dist/cjs/hooks/getThemeProxied.js +0 -56
  628. package/dist/cjs/hooks/getThemeProxied.js.map +0 -6
  629. package/dist/cjs/hooks/useComponentState.js +0 -96
  630. package/dist/cjs/hooks/useComponentState.js.map +0 -6
  631. package/dist/cjs/hooks/useDisableSSR.js +0 -24
  632. package/dist/cjs/hooks/useDisableSSR.js.map +0 -6
  633. package/dist/cjs/hooks/useIsTouchDevice.js +0 -22
  634. package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -6
  635. package/dist/cjs/hooks/useMedia.js +0 -183
  636. package/dist/cjs/hooks/useMedia.js.map +0 -6
  637. package/dist/cjs/hooks/useProps.js +0 -106
  638. package/dist/cjs/hooks/useProps.js.map +0 -6
  639. package/dist/cjs/hooks/useTheme.js +0 -35
  640. package/dist/cjs/hooks/useTheme.js.map +0 -6
  641. package/dist/cjs/hooks/useThemeName.js +0 -25
  642. package/dist/cjs/hooks/useThemeName.js.map +0 -6
  643. package/dist/cjs/hooks/useThemeState.js +0 -218
  644. package/dist/cjs/hooks/useThemeState.js.map +0 -6
  645. package/dist/cjs/inject-styles.js +0 -28
  646. package/dist/cjs/inject-styles.js.map +0 -6
  647. package/dist/cjs/insertFont.js +0 -68
  648. package/dist/cjs/insertFont.js.map +0 -6
  649. package/dist/cjs/interfaces/CSSColorNames.js +0 -14
  650. package/dist/cjs/interfaces/CSSColorNames.js.map +0 -6
  651. package/dist/cjs/interfaces/GetRef.js +0 -14
  652. package/dist/cjs/interfaces/GetRef.js.map +0 -6
  653. package/dist/cjs/interfaces/RNExclusiveTypes.js +0 -14
  654. package/dist/cjs/interfaces/RNExclusiveTypes.js.map +0 -6
  655. package/dist/cjs/interfaces/TamaguiComponentEvents.js +0 -14
  656. package/dist/cjs/interfaces/TamaguiComponentEvents.js.map +0 -6
  657. package/dist/cjs/interfaces/TamaguiComponentPropsBaseBase.js +0 -14
  658. package/dist/cjs/interfaces/TamaguiComponentPropsBaseBase.js.map +0 -6
  659. package/dist/cjs/setupHooks.js +0 -25
  660. package/dist/cjs/setupHooks.js.map +0 -6
  661. package/dist/cjs/setupReactNative.js +0 -43
  662. package/dist/cjs/setupReactNative.js.map +0 -6
  663. package/dist/cjs/styled.js +0 -116
  664. package/dist/cjs/styled.js.map +0 -6
  665. package/dist/cjs/styledHtml.test-d.js +0 -136
  666. package/dist/cjs/styledHtml.test-d.js.map +0 -6
  667. package/dist/cjs/type-utils.js +0 -14
  668. package/dist/cjs/type-utils.js.map +0 -6
  669. package/dist/cjs/types.js +0 -14
  670. package/dist/cjs/types.js.map +0 -6
  671. package/dist/cjs/views/Configuration.js +0 -33
  672. package/dist/cjs/views/Configuration.js.map +0 -6
  673. package/dist/cjs/views/FontLanguage.js +0 -32
  674. package/dist/cjs/views/FontLanguage.js.map +0 -6
  675. package/dist/cjs/views/Slot.js +0 -55
  676. package/dist/cjs/views/Slot.js.map +0 -6
  677. package/dist/cjs/views/Stack.js +0 -27
  678. package/dist/cjs/views/Stack.js.map +0 -6
  679. package/dist/cjs/views/Stack.native.js.map +0 -1
  680. package/dist/cjs/views/TamaguiProvider.js +0 -93
  681. package/dist/cjs/views/TamaguiProvider.js.map +0 -6
  682. package/dist/cjs/views/Text.js +0 -59
  683. package/dist/cjs/views/Text.js.map +0 -6
  684. package/dist/cjs/views/Theme.js +0 -124
  685. package/dist/cjs/views/Theme.js.map +0 -6
  686. package/dist/cjs/views/ThemeDebug.js +0 -81
  687. package/dist/cjs/views/ThemeDebug.js.map +0 -6
  688. package/dist/cjs/views/ThemeProvider.js +0 -42
  689. package/dist/cjs/views/ThemeProvider.js.map +0 -6
  690. package/dist/cjs/views/View.js +0 -26
  691. package/dist/cjs/views/View.js.map +0 -6
  692. package/dist/esm/Tamagui.js +0 -35
  693. package/dist/esm/Tamagui.js.map +0 -6
  694. package/dist/esm/_withStableStyle.js +0 -12
  695. package/dist/esm/_withStableStyle.js.map +0 -6
  696. package/dist/esm/animationDriverTypes.test-d.js +0 -51
  697. package/dist/esm/animationDriverTypes.test-d.js.map +0 -6
  698. package/dist/esm/config.js +0 -94
  699. package/dist/esm/config.js.map +0 -6
  700. package/dist/esm/constants/accessibilityDirectMap.js +0 -9
  701. package/dist/esm/constants/accessibilityDirectMap.js.map +0 -6
  702. package/dist/esm/constants/constants.js +0 -27
  703. package/dist/esm/constants/constants.js.map +0 -6
  704. package/dist/esm/constants/isDevTools.js +0 -12
  705. package/dist/esm/constants/isDevTools.js.map +0 -6
  706. package/dist/esm/constants/webToNativeProps.js +0 -6
  707. package/dist/esm/constants/webToNativeProps.js.map +0 -6
  708. package/dist/esm/constants/webToNativeProps.mjs +0 -4
  709. package/dist/esm/constants/webToNativeProps.mjs.map +0 -1
  710. package/dist/esm/constants/webToNativeProps.native.js +0 -88
  711. package/dist/esm/constants/webToNativeProps.native.js.map +0 -1
  712. package/dist/esm/contexts/ComponentContext.js +0 -15
  713. package/dist/esm/contexts/ComponentContext.js.map +0 -6
  714. package/dist/esm/contexts/GroupContext.js +0 -6
  715. package/dist/esm/contexts/GroupContext.js.map +0 -6
  716. package/dist/esm/createComponent.js +0 -702
  717. package/dist/esm/createComponent.js.map +0 -6
  718. package/dist/esm/createFont.js +0 -37
  719. package/dist/esm/createFont.js.map +0 -6
  720. package/dist/esm/createShorthands.js +0 -7
  721. package/dist/esm/createShorthands.js.map +0 -6
  722. package/dist/esm/createTamagui.js +0 -189
  723. package/dist/esm/createTamagui.js.map +0 -6
  724. package/dist/esm/createTheme.js +0 -5
  725. package/dist/esm/createTheme.js.map +0 -6
  726. package/dist/esm/createTheme.mjs +0 -3
  727. package/dist/esm/createTheme.mjs.map +0 -1
  728. package/dist/esm/createTheme.native.js +0 -5
  729. package/dist/esm/createTheme.native.js.map +0 -1
  730. package/dist/esm/createTokens.js +0 -8
  731. package/dist/esm/createTokens.js.map +0 -6
  732. package/dist/esm/createVariable.js +0 -75
  733. package/dist/esm/createVariable.js.map +0 -6
  734. package/dist/esm/createVariables.js +0 -42
  735. package/dist/esm/createVariables.js.map +0 -6
  736. package/dist/esm/defaultComponentState.js +0 -22
  737. package/dist/esm/defaultComponentState.js.map +0 -6
  738. package/dist/esm/eventHandling.js +0 -25
  739. package/dist/esm/eventHandling.js.map +0 -6
  740. package/dist/esm/helpers/createDesignSystem.js +0 -107
  741. package/dist/esm/helpers/createDesignSystem.js.map +0 -6
  742. package/dist/esm/helpers/createMediaStyle.js +0 -60
  743. package/dist/esm/helpers/createMediaStyle.js.map +0 -6
  744. package/dist/esm/helpers/createStyledContext.js +0 -31
  745. package/dist/esm/helpers/createStyledContext.js.map +0 -6
  746. package/dist/esm/helpers/defaultAnimationDriver.js +0 -23
  747. package/dist/esm/helpers/defaultAnimationDriver.js.map +0 -6
  748. package/dist/esm/helpers/defaultOffset.js +0 -5
  749. package/dist/esm/helpers/defaultOffset.js.map +0 -6
  750. package/dist/esm/helpers/expandStyle.js +0 -59
  751. package/dist/esm/helpers/expandStyle.js.map +0 -6
  752. package/dist/esm/helpers/expandStyles.js +0 -19
  753. package/dist/esm/helpers/expandStyles.js.map +0 -6
  754. package/dist/esm/helpers/getCSSStylesAtomic.js +0 -147
  755. package/dist/esm/helpers/getCSSStylesAtomic.js.map +0 -6
  756. package/dist/esm/helpers/getDefaultProps.js +0 -15
  757. package/dist/esm/helpers/getDefaultProps.js.map +0 -6
  758. package/dist/esm/helpers/getDynamicVal.js +0 -46
  759. package/dist/esm/helpers/getDynamicVal.js.map +0 -6
  760. package/dist/esm/helpers/getExpandedShorthands.js +0 -18
  761. package/dist/esm/helpers/getExpandedShorthands.js.map +0 -6
  762. package/dist/esm/helpers/getFontLanguage.js +0 -5
  763. package/dist/esm/helpers/getFontLanguage.js.map +0 -6
  764. package/dist/esm/helpers/getGroupPropParts.js +0 -19
  765. package/dist/esm/helpers/getGroupPropParts.js.map +0 -6
  766. package/dist/esm/helpers/getShorthandValue.js +0 -7
  767. package/dist/esm/helpers/getShorthandValue.js.map +0 -6
  768. package/dist/esm/helpers/getSplitStyles.js +0 -650
  769. package/dist/esm/helpers/getSplitStyles.js.map +0 -6
  770. package/dist/esm/helpers/getThemeCSSRules.js +0 -78
  771. package/dist/esm/helpers/getThemeCSSRules.js.map +0 -6
  772. package/dist/esm/helpers/getVariantExtras.js +0 -44
  773. package/dist/esm/helpers/getVariantExtras.js.map +0 -6
  774. package/dist/esm/helpers/insertStyleRule.js +0 -181
  775. package/dist/esm/helpers/insertStyleRule.js.map +0 -6
  776. package/dist/esm/helpers/isActivePlatform.js +0 -15
  777. package/dist/esm/helpers/isActivePlatform.js.map +0 -6
  778. package/dist/esm/helpers/isActiveTheme.js +0 -8
  779. package/dist/esm/helpers/isActiveTheme.js.map +0 -6
  780. package/dist/esm/helpers/isObj.js +0 -5
  781. package/dist/esm/helpers/isObj.js.map +0 -6
  782. package/dist/esm/helpers/isTamaguiComponent.js +0 -8
  783. package/dist/esm/helpers/isTamaguiComponent.js.map +0 -6
  784. package/dist/esm/helpers/isTamaguiElement.js +0 -7
  785. package/dist/esm/helpers/isTamaguiElement.js.map +0 -6
  786. package/dist/esm/helpers/log.js +0 -17
  787. package/dist/esm/helpers/log.js.map +0 -6
  788. package/dist/esm/helpers/mainThreadPressEvents.js +0 -6
  789. package/dist/esm/helpers/mainThreadPressEvents.js.map +0 -6
  790. package/dist/esm/helpers/matchMedia.js +0 -18
  791. package/dist/esm/helpers/matchMedia.js.map +0 -6
  792. package/dist/esm/helpers/mergeProps.js +0 -39
  793. package/dist/esm/helpers/mergeProps.js.map +0 -6
  794. package/dist/esm/helpers/mergeRenderElementProps.js +0 -9
  795. package/dist/esm/helpers/mergeRenderElementProps.js.map +0 -6
  796. package/dist/esm/helpers/mergeSlotStyleProps.js +0 -14
  797. package/dist/esm/helpers/mergeSlotStyleProps.js.map +0 -6
  798. package/dist/esm/helpers/mergeVariants.js +0 -22
  799. package/dist/esm/helpers/mergeVariants.js.map +0 -6
  800. package/dist/esm/helpers/nativeOnlyProps.js +0 -39
  801. package/dist/esm/helpers/nativeOnlyProps.js.map +0 -6
  802. package/dist/esm/helpers/normalizeColor.js +0 -10
  803. package/dist/esm/helpers/normalizeColor.js.map +0 -6
  804. package/dist/esm/helpers/normalizeShadow.js +0 -24
  805. package/dist/esm/helpers/normalizeShadow.js.map +0 -6
  806. package/dist/esm/helpers/normalizeStyle.js +0 -24
  807. package/dist/esm/helpers/normalizeStyle.js.map +0 -6
  808. package/dist/esm/helpers/normalizeStylePropKeys.js +0 -5
  809. package/dist/esm/helpers/normalizeStylePropKeys.js.map +0 -6
  810. package/dist/esm/helpers/normalizeValueWithProperty.js +0 -17
  811. package/dist/esm/helpers/normalizeValueWithProperty.js.map +0 -6
  812. package/dist/esm/helpers/objectIdentityKey.js +0 -22
  813. package/dist/esm/helpers/objectIdentityKey.js.map +0 -6
  814. package/dist/esm/helpers/parseBorderShorthand.js +0 -6
  815. package/dist/esm/helpers/parseBorderShorthand.js.map +0 -6
  816. package/dist/esm/helpers/pointerEvents.js +0 -6
  817. package/dist/esm/helpers/pointerEvents.js.map +0 -6
  818. package/dist/esm/helpers/propMapper.js +0 -251
  819. package/dist/esm/helpers/propMapper.js.map +0 -6
  820. package/dist/esm/helpers/proxyThemeToParents.js +0 -24
  821. package/dist/esm/helpers/proxyThemeToParents.js.map +0 -6
  822. package/dist/esm/helpers/proxyThemeVariables.js +0 -15
  823. package/dist/esm/helpers/proxyThemeVariables.js.map +0 -6
  824. package/dist/esm/helpers/pseudoDescriptors.js +0 -56
  825. package/dist/esm/helpers/pseudoDescriptors.js.map +0 -6
  826. package/dist/esm/helpers/registerCSSVariable.js +0 -31
  827. package/dist/esm/helpers/registerCSSVariable.js.map +0 -6
  828. package/dist/esm/helpers/resolveRem.js +0 -11
  829. package/dist/esm/helpers/resolveRem.js.map +0 -6
  830. package/dist/esm/helpers/resolveSafeArea.js +0 -13
  831. package/dist/esm/helpers/resolveSafeArea.js.map +0 -6
  832. package/dist/esm/helpers/setElementProps.js +0 -8
  833. package/dist/esm/helpers/setElementProps.js.map +0 -6
  834. package/dist/esm/helpers/skipProps.js +0 -23
  835. package/dist/esm/helpers/skipProps.js.map +0 -6
  836. package/dist/esm/helpers/sortString.js +0 -5
  837. package/dist/esm/helpers/sortString.js.map +0 -6
  838. package/dist/esm/helpers/subscribeToContextGroup.js +0 -59
  839. package/dist/esm/helpers/subscribeToContextGroup.js.map +0 -6
  840. package/dist/esm/helpers/themeable.js +0 -35
  841. package/dist/esm/helpers/themeable.js.map +0 -6
  842. package/dist/esm/helpers/themes.js +0 -17
  843. package/dist/esm/helpers/themes.js.map +0 -6
  844. package/dist/esm/helpers/timer.js +0 -11
  845. package/dist/esm/helpers/timer.js.map +0 -6
  846. package/dist/esm/helpers/transformsToString.js +0 -17
  847. package/dist/esm/helpers/transformsToString.js.map +0 -6
  848. package/dist/esm/helpers/useRenderElement.js +0 -28
  849. package/dist/esm/helpers/useRenderElement.js.map +0 -6
  850. package/dist/esm/helpers/webPropsToSkip.js +0 -5
  851. package/dist/esm/helpers/webPropsToSkip.js.map +0 -6
  852. package/dist/esm/helpers/wrapStyleTags.js +0 -23
  853. package/dist/esm/helpers/wrapStyleTags.js.map +0 -6
  854. package/dist/esm/hooks/doesRootSchemeMatchSystem.js +0 -7
  855. package/dist/esm/hooks/doesRootSchemeMatchSystem.js.map +0 -6
  856. package/dist/esm/hooks/getThemeProxied.js +0 -44
  857. package/dist/esm/hooks/getThemeProxied.js.map +0 -6
  858. package/dist/esm/hooks/useComponentState.js +0 -91
  859. package/dist/esm/hooks/useComponentState.js.map +0 -6
  860. package/dist/esm/hooks/useDisableSSR.js +0 -8
  861. package/dist/esm/hooks/useDisableSSR.js.map +0 -6
  862. package/dist/esm/hooks/useIsTouchDevice.js +0 -7
  863. package/dist/esm/hooks/useIsTouchDevice.js.map +0 -6
  864. package/dist/esm/hooks/useMedia.js +0 -172
  865. package/dist/esm/hooks/useMedia.js.map +0 -6
  866. package/dist/esm/hooks/useProps.js +0 -92
  867. package/dist/esm/hooks/useProps.js.map +0 -6
  868. package/dist/esm/hooks/useTheme.js +0 -21
  869. package/dist/esm/hooks/useTheme.js.map +0 -6
  870. package/dist/esm/hooks/useThemeName.js +0 -9
  871. package/dist/esm/hooks/useThemeName.js.map +0 -6
  872. package/dist/esm/hooks/useThemeState.js +0 -212
  873. package/dist/esm/hooks/useThemeState.js.map +0 -6
  874. package/dist/esm/inject-styles.js +0 -12
  875. package/dist/esm/inject-styles.js.map +0 -6
  876. package/dist/esm/insertFont.js +0 -56
  877. package/dist/esm/insertFont.js.map +0 -6
  878. package/dist/esm/interfaces/CSSColorNames.js +0 -1
  879. package/dist/esm/interfaces/CSSColorNames.js.map +0 -6
  880. package/dist/esm/interfaces/GetRef.js +0 -1
  881. package/dist/esm/interfaces/GetRef.js.map +0 -6
  882. package/dist/esm/interfaces/RNExclusiveTypes.js +0 -1
  883. package/dist/esm/interfaces/RNExclusiveTypes.js.map +0 -6
  884. package/dist/esm/interfaces/TamaguiComponentEvents.js +0 -1
  885. package/dist/esm/interfaces/TamaguiComponentEvents.js.map +0 -6
  886. package/dist/esm/interfaces/TamaguiComponentPropsBaseBase.js +0 -1
  887. package/dist/esm/interfaces/TamaguiComponentPropsBaseBase.js.map +0 -6
  888. package/dist/esm/setupHooks.js +0 -9
  889. package/dist/esm/setupHooks.js.map +0 -6
  890. package/dist/esm/setupReactNative.js +0 -27
  891. package/dist/esm/setupReactNative.js.map +0 -6
  892. package/dist/esm/styled.js +0 -102
  893. package/dist/esm/styled.js.map +0 -6
  894. package/dist/esm/styledHtml.test-d.js +0 -137
  895. package/dist/esm/styledHtml.test-d.js.map +0 -6
  896. package/dist/esm/type-utils.js +0 -1
  897. package/dist/esm/type-utils.js.map +0 -6
  898. package/dist/esm/types.js +0 -1
  899. package/dist/esm/types.js.map +0 -6
  900. package/dist/esm/views/Configuration.js +0 -12
  901. package/dist/esm/views/Configuration.js.map +0 -6
  902. package/dist/esm/views/FontLanguage.js +0 -16
  903. package/dist/esm/views/FontLanguage.js.map +0 -6
  904. package/dist/esm/views/Slot.js +0 -43
  905. package/dist/esm/views/Slot.js.map +0 -6
  906. package/dist/esm/views/Stack.js +0 -13
  907. package/dist/esm/views/Stack.js.map +0 -6
  908. package/dist/esm/views/Stack.mjs +0 -11
  909. package/dist/esm/views/Stack.mjs.map +0 -1
  910. package/dist/esm/views/Stack.native.js +0 -11
  911. package/dist/esm/views/Stack.native.js.map +0 -1
  912. package/dist/esm/views/TamaguiProvider.js +0 -77
  913. package/dist/esm/views/TamaguiProvider.js.map +0 -6
  914. package/dist/esm/views/Text.js +0 -44
  915. package/dist/esm/views/Text.js.map +0 -6
  916. package/dist/esm/views/Theme.js +0 -110
  917. package/dist/esm/views/Theme.js.map +0 -6
  918. package/dist/esm/views/ThemeDebug.js +0 -69
  919. package/dist/esm/views/ThemeDebug.js.map +0 -6
  920. package/dist/esm/views/ThemeProvider.js +0 -31
  921. package/dist/esm/views/ThemeProvider.js.map +0 -6
  922. package/dist/esm/views/View.js +0 -12
  923. package/dist/esm/views/View.js.map +0 -6
  924. package/types/constants/webToNativeProps.d.ts.map +0 -1
  925. package/types/constants/webToNativeProps.native.d.ts.map +0 -1
  926. package/types/createTheme.d.ts.map +0 -1
  927. package/types/helpers/expandStyle.native.d.ts.map +0 -1
  928. package/types/helpers/propMapper.native.d.ts.map +0 -1
  929. package/types/views/Stack.d.ts.map +0 -1
@@ -1,8 +1,9 @@
1
1
  import { composeRefs } from '@tamagui/compose-refs'
2
2
  import { isClient, isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
3
+ import { NativeMenuContext } from '@tamagui/native'
3
4
  import { composeEventHandlers } from '@tamagui/helpers'
4
5
  import { isEqualShallow } from '@tamagui/is-equal-shallow'
5
- import React, { useMemo } from 'react'
6
+ import React, { ReactElement, ReactNode, useMemo } from 'react'
6
7
  import { devConfig, getConfig } from './config'
7
8
  import { isDevTools } from './constants/isDevTools'
8
9
  import { ComponentContext } from './contexts/ComponentContext'
@@ -11,12 +12,17 @@ import { didGetVariableValue, setDidGetVariableValue } from './createVariable'
11
12
  import { defaultComponentStateMounted } from './defaultComponentState'
12
13
  import { getWebEvents, useEvents, wrapWithGestureDetector } from './eventHandling'
13
14
  import { getDefaultProps } from './helpers/getDefaultProps'
15
+ import { resolveAnimationDriver } from './helpers/resolveAnimationDriver'
14
16
  import { getSplitStyles, useSplitStyles } from './helpers/getSplitStyles'
15
17
  import { log } from './helpers/log'
16
- import { usePointerEvents } from './helpers/pointerEvents'
17
18
  import { type GenericProps, mergeComponentProps } from './helpers/mergeProps'
18
19
  import { mergeRenderElementProps } from './helpers/mergeRenderElementProps'
19
20
  import { objectIdentityKey } from './helpers/objectIdentityKey'
21
+ import { usePointerEvents } from './helpers/pointerEvents'
22
+ import {
23
+ extractPseudoState,
24
+ resolveEffectivePseudoTransition,
25
+ } from './helpers/pseudoTransitions'
20
26
  import { setElementProps } from './helpers/setElementProps'
21
27
  import { subscribeToContextGroup } from './helpers/subscribeToContextGroup'
22
28
  import { themeable } from './helpers/themeable'
@@ -46,9 +52,9 @@ import type {
46
52
  UseStyleEmitter,
47
53
  UseThemeWithStateProps,
48
54
  } from './types'
49
- import type { ViewProps } from './views/View'
50
55
  import { Slot } from './views/Slot'
51
56
  import { getThemedChildren } from './views/Theme'
57
+ import type { ViewProps } from './views/View'
52
58
 
53
59
  /**
54
60
  * All things that need one-time setup after createTamagui is called
@@ -229,7 +235,9 @@ export function createComponent<
229
235
  const { Component, isText, isHOC } = staticConfig
230
236
 
231
237
  const component = React.forwardRef<Ref, ComponentPropTypes>((propsIn, forwardedRef) => {
232
- config ||= getConfig()
238
+ 'use no memo'
239
+
240
+ config = config || getConfig()
233
241
 
234
242
  const internalID = process.env.NODE_ENV === 'development' ? React.useId() : ''
235
243
 
@@ -255,7 +263,8 @@ export function createComponent<
255
263
  // test only
256
264
  if (process.env.NODE_ENV === 'test') {
257
265
  if (propsIn['data-test-renders']) {
258
- propsIn['data-test-renders']['current'] ??= 0
266
+ propsIn['data-test-renders']['current'] =
267
+ propsIn['data-test-renders']['current'] ?? 0
259
268
  propsIn['data-test-renders']['current'] += 1
260
269
  }
261
270
  }
@@ -273,6 +282,14 @@ export function createComponent<
273
282
  const componentContext = React.useContext(ComponentContext)
274
283
  const hasTextAncestor = !!(isWeb && isText ? componentContext.inText : false)
275
284
 
285
+ // On Android, skip RNGH GestureDetector inside native menus (zeego) and use
286
+ // direct press events instead — GestureDetector consumes touches before they
287
+ // reach MenuView's native handler, preventing the menu from opening
288
+ const isInsideNativeMenu =
289
+ process.env.TAMAGUI_TARGET === 'native'
290
+ ? React.useContext(NativeMenuContext)
291
+ : false
292
+
276
293
  if (
277
294
  !process.env.TAMAGUI_IS_CORE_NODE &&
278
295
  process.env.NODE_ENV === 'development' &&
@@ -283,6 +300,10 @@ export function createComponent<
283
300
  time = timer.start()
284
301
  globalThis['time'] = time
285
302
  }
303
+ // pick up globalThis.time if set externally (e.g. by a profiling harness)
304
+ if (process.env.NODE_ENV === 'development' && !time && (globalThis as any).time) {
305
+ time = (globalThis as any).time
306
+ }
286
307
  if (process.env.NODE_ENV === 'development' && time) time`non-tamagui time (ignore)`
287
308
 
288
309
  // React inserts default props after your props for some reason...
@@ -292,11 +313,7 @@ export function createComponent<
292
313
  const componentName = props.componentName || staticConfig.componentName
293
314
 
294
315
  // merge both default props and styled context props - ensure order is preserved
295
- const defaultProps = getDefaultProps(
296
- staticConfig,
297
- props.componentName,
298
- isText && hasTextAncestor
299
- )
316
+ const defaultProps = getDefaultProps(staticConfig, props.componentName)
300
317
 
301
318
  // merge styled context props over defaults, ensure order is preserved
302
319
  const [nextProps, overrides] = mergeComponentProps(
@@ -361,7 +378,7 @@ export function createComponent<
361
378
  }
362
379
  }
363
380
 
364
- debugKeyListeners ||= new Set()
381
+ debugKeyListeners = debugKeyListeners || new Set()
365
382
  debugKeyListeners.add(debugVisualizerHandler)
366
383
 
367
384
  return () => {
@@ -373,20 +390,26 @@ export function createComponent<
373
390
 
374
391
  const groupContextParent = React.useContext(GroupContext)
375
392
 
376
- // Get animation driver - either from animatedBy prop lookup or context
393
+ // Get animation driver - either from animatedBy prop lookup or context/config fallback
377
394
  const animationDriver = (() => {
378
- if (props.animatedBy && config?.animations) {
379
- const animations = config.animations
380
- // If animations is an object with named drivers (has 'default' key)
381
- if ('default' in animations) {
395
+ if (props.animatedBy && config) {
396
+ // check animationDrivers for multi-driver config
397
+ if (config.animationDrivers) {
382
398
  return (
383
- (animations as Record<string, any>)[props.animatedBy] ?? animations.default
399
+ (config.animationDrivers as Record<string, any>)[props.animatedBy] ??
400
+ config.animations
384
401
  )
385
402
  }
386
- // Single driver config - only 'default' makes sense
387
- return props.animatedBy === 'default' ? animations : null
403
+ // single driver config - only 'default' makes sense
404
+ return props.animatedBy === 'default' ? config.animations : null
388
405
  }
389
- return componentContext.animationDriver
406
+ // fall back to context driver, then config.animations
407
+ // resolveAnimationDriver validates it's a real driver (not a raw multi-driver object)
408
+ return (
409
+ resolveAnimationDriver(componentContext.animationDriver) ??
410
+ resolveAnimationDriver(config?.animations) ??
411
+ null
412
+ )
390
413
  })()
391
414
 
392
415
  const useAnimations = animationDriver?.useAnimations as UseAnimationHook | undefined
@@ -412,7 +435,8 @@ export function createComponent<
412
435
  noClass,
413
436
  state,
414
437
  stateRef,
415
- supportsCSS,
438
+ inputStyle,
439
+ outputStyle,
416
440
  willBeAnimated,
417
441
  willBeAnimatedClient,
418
442
  startedUnhydrated,
@@ -478,25 +502,27 @@ export function createComponent<
478
502
 
479
503
  if (process.env.NODE_ENV === 'development' && time) time`use-state`
480
504
 
481
- const isTaggable = !Component || typeof Component === 'string'
505
+ // web-only - string-style not valid for native
482
506
  const renderProp = props.render
507
+ const isRenderString = !Component || typeof Component === 'string'
508
+
483
509
  // default to render prop, fallback to component (when both strings)
484
- const element = isWeb ? (isTaggable ? renderProp || Component : Component) : Component
510
+ const element = isWeb
511
+ ? isRenderString
512
+ ? renderProp || Component
513
+ : Component
514
+ : Component
485
515
 
486
516
  const BaseTextComponent = BaseText || element || 'span'
487
517
  const BaseViewComponent = BaseView || element || (hasTextAncestor ? 'span' : 'div')
518
+ const BaseComponent = isText ? BaseTextComponent : BaseViewComponent
488
519
 
489
- let elementType = isText ? BaseTextComponent : BaseViewComponent
520
+ let elementType = BaseComponent
490
521
 
491
- if (
492
- animationDriver &&
493
- isAnimated &&
494
- // this should really be behind another prop as it's not really related to
495
- // "needsWebStyles" basically with motion we just animate a plain div, but
496
- // we still have animated.View/Text for Sheet which wants to control
497
- // things declaratively
498
- !animationDriver.needsWebStyles
499
- ) {
522
+ const isAnimatedCustomComponent =
523
+ animationDriver && isAnimated && animationDriver.needsCustomComponent
524
+
525
+ if (isAnimatedCustomComponent) {
500
526
  elementType = animationDriver[isText ? 'Text' : 'View'] || elementType
501
527
  }
502
528
 
@@ -563,7 +589,7 @@ export function createComponent<
563
589
  if (isWeb) {
564
590
  console.info(`%c ${banner}`, 'background: green; color: white;')
565
591
  if (isServer) {
566
- log({ noClass, isAnimated, isWeb, supportsCSS })
592
+ log({ noClass, isAnimated, isWeb, inputStyle })
567
593
  } else {
568
594
  // if strict mode or something messes with our nesting this fixes:
569
595
  console.groupEnd()
@@ -586,7 +612,7 @@ export function createComponent<
586
612
  )
587
613
  log(`children:`, props.children)
588
614
  log({ overriddenContextProps, styledContextValue })
589
- log({ noClass, isAnimated, isWeb, supportsCSS })
615
+ log({ noClass, isAnimated, isWeb, inputStyle })
590
616
  }
591
617
  }
592
618
  }
@@ -608,7 +634,7 @@ export function createComponent<
608
634
 
609
635
  const resolveValues =
610
636
  // if HOC + mounted + has animation prop, resolve as value so it passes non-variable to child
611
- (isAnimated && !supportsCSS) ||
637
+ (isAnimated && inputStyle !== 'css') ||
612
638
  (isHOC && state.unmounted == false && hasAnimationProp)
613
639
  ? 'value'
614
640
  : 'auto'
@@ -639,7 +665,8 @@ export function createComponent<
639
665
  allGroupContexts,
640
666
  elementType,
641
667
  startedUnhydrated,
642
- debugProp
668
+ debugProp,
669
+ animationDriver
643
670
  )
644
671
 
645
672
  const isPassthrough = !splitStyles
@@ -656,7 +683,7 @@ export function createComponent<
656
683
  staticConfig.context || staticConfig.parentStaticConfig?.context
657
684
  if (contextForProps) {
658
685
  for (const key in splitStyles.overriddenContextProps) {
659
- overriddenContextProps ||= {}
686
+ overriddenContextProps = overriddenContextProps || {}
660
687
  overriddenContextProps[key] = splitStyles.overriddenContextProps[key]
661
688
  }
662
689
  // Use parent's context if this component doesn't have its own
@@ -689,10 +716,21 @@ export function createComponent<
689
716
 
690
717
  // avoids re-rendering if animation driver supports it
691
718
  // TODO believe we need to set some sort of "pendingState" in case it re-renders
719
+ // CRITICAL: Skip avoidReRenders for components with enter/exit transitions
720
+ // The exit state comes from AnimatePresence context, not local state, so
721
+ // updateStyleListener can fire before the component re-renders with the new
722
+ // presence value, causing wrong animation timing (e.g., using enter timing for exit)
723
+ const hasEnterExitTransition =
724
+ props.transition &&
725
+ typeof props.transition === 'object' &&
726
+ !Array.isArray(props.transition) &&
727
+ ('enter' in props.transition || 'exit' in props.transition)
728
+
692
729
  if (
693
730
  !isPassthrough &&
694
731
  (hasAnimationProp || groupName) &&
695
- animationDriver?.avoidReRenders
732
+ animationDriver?.avoidReRenders &&
733
+ !hasEnterExitTransition
696
734
  ) {
697
735
  const ogSetStateShallow = setStateShallow
698
736
 
@@ -725,10 +763,22 @@ export function createComponent<
725
763
  allGroupContexts,
726
764
  elementType,
727
765
  startedUnhydrated,
728
- debugProp
766
+ debugProp,
767
+ animationDriver
729
768
  )
730
769
 
731
- useStyleListener((nextStyles?.style || {}) as any)
770
+ // compute effective transition based on entering/exiting pseudo states
771
+ const effectiveTransition = resolveEffectivePseudoTransition(
772
+ stateRef.current.prevPseudoState,
773
+ updatedState,
774
+ nextStyles?.pseudoTransitions,
775
+ props.transition
776
+ )
777
+
778
+ // update prev state for next comparison (includes group states)
779
+ stateRef.current.prevPseudoState = extractPseudoState(updatedState)
780
+
781
+ useStyleListener((nextStyles?.style || {}) as any, effectiveTransition)
732
782
  }
733
783
 
734
784
  function updateGroupListeners() {
@@ -751,7 +801,8 @@ export function createComponent<
751
801
 
752
802
  // don't change this ever or else you break ComponentContext and cause re-rendering
753
803
  // use a Set of listeners so multiple components can register
754
- componentContext.mediaEmitListeners ||= new Set()
804
+ componentContext.mediaEmitListeners =
805
+ componentContext.mediaEmitListeners || new Set()
755
806
 
756
807
  // only register once per component instance
757
808
  if (!stateRef.current.mediaEmitCleanup) {
@@ -765,12 +816,14 @@ export function createComponent<
765
816
  }
766
817
  }
767
818
 
768
- componentContext.mediaEmit ||= (next) => {
769
- // notify all registered components
770
- for (const listener of componentContext.mediaEmitListeners!) {
771
- listener(next)
772
- }
773
- }
819
+ componentContext.mediaEmit =
820
+ componentContext.mediaEmit ||
821
+ ((next) => {
822
+ // notify all registered components
823
+ for (const listener of componentContext.mediaEmitListeners!) {
824
+ listener(next)
825
+ }
826
+ })
774
827
 
775
828
  stateRef.current.setStateShallow = (nextOrGetNext) => {
776
829
  const prev = stateRef.current.nextState || state
@@ -835,7 +888,7 @@ export function createComponent<
835
888
  props.untilMeasured === 'hide' &&
836
889
  !stateRef.current.hasMeasured
837
890
  ) {
838
- splitStyles.style ||= {}
891
+ splitStyles.style = splitStyles.style || {}
839
892
  splitStyles.style.opacity = 0
840
893
  }
841
894
 
@@ -903,7 +956,7 @@ export function createComponent<
903
956
  // so the type is pretty loose
904
957
  let viewProps = nonTamaguiProps
905
958
 
906
- if (!isTaggable && props.forceStyle) {
959
+ if (props.forceStyle) {
907
960
  viewProps.forceStyle = props.forceStyle
908
961
  }
909
962
 
@@ -916,16 +969,14 @@ export function createComponent<
916
969
  }
917
970
  }
918
971
 
919
- if (renderProp && elementType['acceptTagProp']) {
920
- viewProps.render = renderProp
921
- }
922
-
923
972
  // once you set animation prop don't remove it, you can set to undefined/false
924
973
  // reason is animations are heavy - no way around it, and must be run inline here (🙅 loading as a sub-component)
925
974
  let animationStyles: any
926
975
  const shouldUseAnimation =
927
976
  // if it supports css vars we run it on server too to get matching initial style
928
- (supportsCSS ? willBeAnimatedClient : willBeAnimated) && useAnimations && !isHOC
977
+ (inputStyle === 'css' ? willBeAnimatedClient : willBeAnimated) &&
978
+ useAnimations &&
979
+ !isHOC
929
980
 
930
981
  let animatedRef
931
982
 
@@ -936,10 +987,29 @@ export function createComponent<
936
987
  }
937
988
  : undefined
938
989
 
990
+ // compute effective transition once here (single source of truth)
991
+ // avoidReRenders path also computes this in updateStyleListener
992
+ const effectiveTransition = resolveEffectivePseudoTransition(
993
+ stateRef.current.prevPseudoState,
994
+ state,
995
+ splitStyles?.pseudoTransitions,
996
+ props.transition
997
+ )
998
+
999
+ // add effectiveTransition to splitStyles for drivers to consume
1000
+ if (splitStyles) {
1001
+ splitStyles.effectiveTransition = effectiveTransition
1002
+ }
1003
+
1004
+ // update prev state for next comparison (needed for non-avoidReRenders drivers like CSS)
1005
+ // avoidReRenders path also updates this in updateStyleListener
1006
+ stateRef.current.prevPseudoState = extractPseudoState(state)
1007
+
939
1008
  const animations = useAnimations({
940
1009
  props: propsWithAnimation,
941
- // if hydrating, send empty style
942
- style: splitStylesStyle || {},
1010
+ // clone style to prevent animation driver mutations from leaking to viewProps
1011
+ // during SSR/pre-hydration (CSS driver mutates style.transition in place)
1012
+ style: isHydrated ? splitStylesStyle || {} : { ...splitStylesStyle },
943
1013
  // @ts-ignore
944
1014
  styleState: splitStyles,
945
1015
  useStyleEmitter,
@@ -1087,7 +1157,7 @@ export function createComponent<
1087
1157
  // For CSS transitions, we need browser to paint enterStyle before removing it.
1088
1158
  // Double RAF guarantees paint: first RAF schedules after current frame,
1089
1159
  // second RAF schedules after that frame completes (including paint).
1090
- if (supportsCSS) {
1160
+ if (inputStyle === 'css') {
1091
1161
  let cancelled = false
1092
1162
  requestAnimationFrame(() => {
1093
1163
  if (cancelled) return
@@ -1108,7 +1178,7 @@ export function createComponent<
1108
1178
  componentSetStates.delete(setState)
1109
1179
  stateRef.current.mediaEmitCleanup?.()
1110
1180
  }
1111
- }, [state.unmounted, supportsCSS])
1181
+ }, [state.unmounted, inputStyle])
1112
1182
 
1113
1183
  useIsomorphicLayoutEffect(() => {
1114
1184
  if (disabled) return
@@ -1281,6 +1351,7 @@ export function createComponent<
1281
1351
  onFocus: (e) => {
1282
1352
  const next: Partial<typeof state> = {}
1283
1353
  if (componentContext.setParentFocusState) {
1354
+ componentContext.setParentFocusState({ focusWithin: true })
1284
1355
  next.focusWithin = true
1285
1356
  }
1286
1357
  if (pseudos?.focusVisibleStyle) {
@@ -1338,13 +1409,11 @@ export function createComponent<
1338
1409
  // Skip gesture setup for HOC components - they may return null which crashes GestureDetector
1339
1410
  const pressGesture =
1340
1411
  process.env.TAMAGUI_TARGET === 'native'
1341
- ? useEvents(events, viewProps, stateRef, staticConfig, isHOC)
1412
+ ? useEvents(events, viewProps, stateRef, staticConfig, isHOC, isInsideNativeMenu)
1342
1413
  : null
1343
1414
 
1344
1415
  if (process.env.NODE_ENV === 'development' && time) time`hooks`
1345
1416
 
1346
- let content = children
1347
-
1348
1417
  if (asChild) {
1349
1418
  elementType = Slot
1350
1419
  // on native this is already merged into viewProps in useEvents
@@ -1371,43 +1440,53 @@ export function createComponent<
1371
1440
 
1372
1441
  if (process.env.NODE_ENV === 'development' && time) time`spaced-as-child`
1373
1442
 
1443
+ let content: ReactNode | undefined
1444
+
1374
1445
  if (isPassthrough) {
1375
- content = propsIn.children
1376
- elementType = BaseViewComponent
1377
- viewProps = {
1378
- style: {
1379
- display: 'contents',
1446
+ // avoid re-parenting but avoid layout changes
1447
+ content = React.createElement(
1448
+ BaseComponent,
1449
+ {
1450
+ style: {
1451
+ display: 'contents',
1452
+ },
1380
1453
  },
1454
+ propsIn.children
1455
+ )
1456
+ } else {
1457
+ // here elementType is either the custom animated driver view, or base view
1458
+ if (hooks.useChildren) {
1459
+ // ONLY native:
1460
+ content = hooks.useChildren(elementType, content || children, viewProps)
1381
1461
  }
1382
- }
1383
1462
 
1384
- let useChildrenResult: any
1385
- if (hooks.useChildren) {
1386
- useChildrenResult = hooks.useChildren(elementType, content, viewProps)
1387
- }
1463
+ const isRenderPropString = typeof renderProp === 'string'
1464
+
1465
+ // this ONLY handles the case where render is NOT a string
1466
+ // either direct JSX, or a function that returns JSX, we always clone
1467
+ if (renderProp && !isRenderPropString) {
1468
+ const out = getCustomRender(
1469
+ renderProp,
1470
+ content || children,
1471
+ viewProps,
1472
+ componentState
1473
+ )
1474
+ if (out) {
1475
+ viewProps = out.viewProps
1476
+ elementType = out.elementType
1477
+ }
1478
+ }
1388
1479
 
1389
- if (process.env.NODE_ENV === 'development' && time) time`use-children`
1480
+ if (!content) {
1481
+ // web-only, handle render === string passing to custom animated component
1482
+ if (isRenderPropString) {
1483
+ viewProps.render === renderProp
1484
+ }
1390
1485
 
1391
- if (useChildrenResult) {
1392
- content = useChildrenResult
1393
- } else {
1394
- // Handle render prop variants: function, JSX element, or string
1395
- if (typeof renderProp === 'function') {
1396
- // Render function: full control with props and state
1397
- const renderProps = { ...viewProps, children: content }
1398
- content = renderProp(renderProps, state)
1399
- } else if (
1400
- renderProp &&
1401
- typeof renderProp === 'object' &&
1402
- React.isValidElement(renderProp)
1403
- ) {
1404
- // JSX element: clone with merged props
1405
- const elementProps = (renderProp as React.ReactElement).props || {}
1406
- const mergedProps = mergeRenderElementProps(elementProps, viewProps, content)
1407
- content = React.cloneElement(renderProp as React.ReactElement, mergedProps)
1408
- } else {
1409
- content = React.createElement(elementType, viewProps, content)
1486
+ content = React.createElement(elementType, viewProps, content || children)
1410
1487
  }
1488
+
1489
+ if (process.env.NODE_ENV === 'development' && time) time`use-children`
1411
1490
  }
1412
1491
 
1413
1492
  // wrap with GestureDetector for RNGH press handling (native only, no-op on web)
@@ -1442,7 +1521,7 @@ export function createComponent<
1442
1521
 
1443
1522
  if (process.env.NODE_ENV === 'development' && time) time`create-element`
1444
1523
 
1445
- if ('focusWithinStyle' in propsIn) {
1524
+ if ('focusWithinStyle' in propsIn || pseudos?.focusWithinStyle) {
1446
1525
  content = (
1447
1526
  <ComponentContext.Provider
1448
1527
  {...componentContext}
@@ -1673,3 +1752,55 @@ const fromPx = (val?: any): number => {
1673
1752
  if (typeof val === 'string') return +val.replace('px', '')
1674
1753
  return 0
1675
1754
  }
1755
+
1756
+ // handles all render logic - returns a new component
1757
+ const getCustomRender = (
1758
+ renderProp: ViewProps['render'],
1759
+ content: ReactNode,
1760
+ viewProps: Record<string, unknown>,
1761
+ state: any
1762
+ ):
1763
+ | undefined
1764
+ | {
1765
+ viewProps: Record<string, any>
1766
+ elementType: any
1767
+ } => {
1768
+ // Handle render prop variants: function, JSX element, or string
1769
+ if (typeof renderProp === 'function') {
1770
+ // Render function: full control with props and state
1771
+ const out = renderProp(viewProps, state)
1772
+ renderProp = getRenderElementForPlatform(out)
1773
+ }
1774
+
1775
+ if (renderProp) {
1776
+ if (typeof renderProp === 'object' && React.isValidElement(renderProp)) {
1777
+ // JSX element: clone with merged props
1778
+ const renderElement = getRenderElementForPlatform(renderProp)
1779
+ if (renderElement) {
1780
+ const elementProps = renderProp.props as Record<string, any> | undefined
1781
+ const mergedProps = elementProps
1782
+ ? mergeRenderElementProps(elementProps, viewProps, content)
1783
+ : viewProps
1784
+
1785
+ return {
1786
+ elementType: renderProp.type,
1787
+ viewProps: mergedProps,
1788
+ }
1789
+ }
1790
+ }
1791
+ }
1792
+ }
1793
+
1794
+ // avoid passing web-only elements to native
1795
+ function getRenderElementForPlatform(potential: ReactElement) {
1796
+ if (process.env.TAMAGUI_TARGET === 'native') {
1797
+ if (isHTMLElement(potential)) {
1798
+ return
1799
+ }
1800
+ }
1801
+ return potential
1802
+ }
1803
+
1804
+ function isHTMLElement(el: ReactElement) {
1805
+ return typeof el['type'] === 'string' && el['type'][0] === el['type'][0].toLowerCase()
1806
+ }
@@ -1,8 +1,8 @@
1
- import { isWeb } from '@tamagui/constants'
2
1
  import { getConfigMaybe, setConfig, setTokens } from './config'
3
2
  import type { DeepVariableObject } from './createVariables'
4
3
  import { createVariables } from './createVariables'
5
4
  import { defaultAnimationDriver } from './helpers/defaultAnimationDriver'
5
+ import { resolveAnimationDriver } from './helpers/resolveAnimationDriver'
6
6
  import {
7
7
  buildCSSRuleSets,
8
8
  createFontCSS,
@@ -182,9 +182,8 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
182
182
  const defaultPositionSetting = configIn.settings?.defaultPosition || 'static'
183
183
 
184
184
  const defaultProps = configIn.defaultProps || {}
185
- // Apply defaultPosition to viewDefaultStyles directly
186
- // This avoids the deprecated defaultProps pattern in createComponent
187
- if (process.env.TAMAGUI_TARGET === 'web') {
185
+ // apply defaultPosition via defaultProps when not static
186
+ if (process.env.TAMAGUI_TARGET === 'web' && defaultPositionSetting !== 'static') {
188
187
  defaultProps.View = {
189
188
  ...defaultProps.View,
190
189
  position: defaultPositionSetting,
@@ -194,20 +193,30 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
194
193
  // ensure prefixed with $
195
194
  const defaultFontToken = defaultFont ? `$${defaultFont}` : ''
196
195
 
197
- if (defaultFont) {
198
- defaultProps.Text = {
199
- ...defaultProps.Text,
200
- fontFamily: defaultFontToken,
201
- }
202
- }
196
+ // Text inherits font from root via CSS, no need for default fontFamily
197
+ // only explicit fontFamily prop should add font_* class
198
+
199
+ // normalize multi-driver animation config to default driver
200
+ // supports format: { default: motionDriver, css: cssDriver }
201
+ // stores full config in animationDrivers for component-level selection via animatedBy
202
+ const inputAnimations = configIn.animations
203
+ const resolvedDriver = resolveAnimationDriver(inputAnimations)
204
+ // multi-driver when resolveAnimationDriver extracted .default (returned different ref)
205
+ const isMultiDriver = resolvedDriver !== null && resolvedDriver !== inputAnimations
206
+ const resolvedAnimations = resolvedDriver ?? inputAnimations
207
+ const animationDrivers = isMultiDriver
208
+ ? (inputAnimations as Record<string, any>)
209
+ : undefined
203
210
 
204
211
  const config: TamaguiInternalConfig = {
205
212
  fonts: {},
206
213
  onlyAllowShorthands: false,
207
214
  fontLanguages: [],
208
- animations: defaultAnimationDriver,
209
215
  media: {},
210
216
  ...configIn,
217
+ // normalized animations (resolved from multi-driver format if needed)
218
+ animations: resolvedAnimations ?? defaultAnimationDriver,
219
+ animationDrivers,
211
220
  defaultProps,
212
221
  settings: {
213
222
  webContainerType: 'inline-size',
@@ -90,7 +90,7 @@ export function getVariableName(v: Variable | any) {
90
90
  return v
91
91
  }
92
92
 
93
- export function getVariableVariable(v: Variable | any) {
93
+ export function getVariableVariable(v: Variable | string | undefined) {
94
94
  if (isVariable(v)) return v.variable
95
95
  return v
96
96
  }