@tamagui/web 3.0.0-beta.924.1 → 3.0.1

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 (636) hide show
  1. package/dist/cjs/_withNativeStyle.cjs +3 -0
  2. package/dist/cjs/_withNativeStyle.native.cjs +3 -0
  3. package/dist/cjs/_withNativeStyle.native.js +3 -0
  4. package/dist/cjs/_withNativeStyle.native.js.map +1 -1
  5. package/dist/cjs/_withStableStyle.native.cjs +1 -5
  6. package/dist/cjs/_withStableStyle.native.js +1 -5
  7. package/dist/cjs/_withStableStyle.native.js.map +1 -1
  8. package/dist/cjs/config.cjs +6 -3
  9. package/dist/cjs/config.native.cjs +7 -5
  10. package/dist/cjs/config.native.js +7 -5
  11. package/dist/cjs/config.native.js.map +1 -1
  12. package/dist/cjs/contexts/ComponentContext.cjs +1 -0
  13. package/dist/cjs/contexts/ComponentContext.native.cjs +8 -0
  14. package/dist/cjs/contexts/ComponentContext.native.js +8 -0
  15. package/dist/cjs/contexts/ComponentContext.native.js.map +1 -1
  16. package/dist/cjs/createComponent.cjs +46 -32
  17. package/dist/cjs/createComponent.native.cjs +92 -72
  18. package/dist/cjs/createComponent.native.js +92 -72
  19. package/dist/cjs/createComponent.native.js.map +1 -1
  20. package/dist/cjs/createTamagui.cjs +32 -14
  21. package/dist/cjs/createTamagui.native.cjs +33 -19
  22. package/dist/cjs/createTamagui.native.js +33 -19
  23. package/dist/cjs/createTamagui.native.js.map +1 -1
  24. package/dist/cjs/createTokens.native.cjs +1 -5
  25. package/dist/cjs/createTokens.native.js +1 -5
  26. package/dist/cjs/createTokens.native.js.map +1 -1
  27. package/dist/cjs/createVariable.native.cjs +1 -5
  28. package/dist/cjs/createVariable.native.js +1 -5
  29. package/dist/cjs/createVariable.native.js.map +1 -1
  30. package/dist/cjs/createVariables.native.cjs +2 -6
  31. package/dist/cjs/createVariables.native.js +2 -6
  32. package/dist/cjs/createVariables.native.js.map +1 -1
  33. package/dist/cjs/dom/html.cjs +87 -329
  34. package/dist/cjs/dom/html.native.cjs +53 -2
  35. package/dist/cjs/dom/html.native.js +53 -2
  36. package/dist/cjs/dom/html.native.js.map +1 -1
  37. package/dist/cjs/{helpers/timer.native.js → dom/htmlReset.cjs} +6 -12
  38. package/dist/cjs/{helpers/timer.native.cjs → dom/htmlReset.native.cjs} +6 -8
  39. package/dist/cjs/dom/htmlReset.native.js +30 -0
  40. package/dist/cjs/dom/htmlReset.native.js.map +1 -0
  41. package/dist/cjs/dom/htmlRuntime.native.cjs +4 -0
  42. package/dist/cjs/dom/htmlRuntime.native.js +4 -0
  43. package/dist/cjs/dom/htmlRuntime.native.js.map +1 -1
  44. package/dist/cjs/dom/htmlStaticConfig.cjs +44 -0
  45. package/dist/cjs/dom/htmlStaticConfig.native.cjs +46 -0
  46. package/dist/cjs/dom/htmlStaticConfig.native.js +48 -0
  47. package/dist/cjs/dom/htmlStaticConfig.native.js.map +1 -0
  48. package/dist/cjs/dom/primitives.native.cjs +81 -34
  49. package/dist/cjs/dom/primitives.native.js +81 -34
  50. package/dist/cjs/dom/primitives.native.js.map +1 -1
  51. package/dist/cjs/eventHandling.cjs +10 -4
  52. package/dist/cjs/eventHandling.native.cjs +52 -16
  53. package/dist/cjs/eventHandling.native.js +52 -16
  54. package/dist/cjs/eventHandling.native.js.map +1 -1
  55. package/dist/cjs/helpers/NativeTextBinding.cjs +36 -0
  56. package/dist/cjs/helpers/NativeTextBinding.native.cjs +39 -0
  57. package/dist/cjs/helpers/NativeTextBinding.native.js +41 -0
  58. package/dist/cjs/helpers/NativeTextBinding.native.js.map +1 -0
  59. package/dist/cjs/helpers/configVariables.native.cjs +2 -6
  60. package/dist/cjs/helpers/configVariables.native.js +2 -6
  61. package/dist/cjs/helpers/configVariables.native.js.map +1 -1
  62. package/dist/cjs/helpers/createDesignSystem.cjs +14 -10
  63. package/dist/cjs/helpers/createDesignSystem.native.cjs +5 -4
  64. package/dist/cjs/helpers/createDesignSystem.native.js +5 -4
  65. package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
  66. package/dist/cjs/helpers/createStyledContext.native.cjs +1 -5
  67. package/dist/cjs/helpers/createStyledContext.native.js +1 -5
  68. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  69. package/dist/cjs/helpers/expandStyle.cjs +45 -1
  70. package/dist/cjs/helpers/expandStyle.native.cjs +38 -2
  71. package/dist/cjs/helpers/expandStyle.native.js +38 -2
  72. package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
  73. package/dist/cjs/helpers/expandStyles.cjs +15 -3
  74. package/dist/cjs/helpers/expandStyles.native.cjs +14 -8
  75. package/dist/cjs/helpers/expandStyles.native.js +14 -8
  76. package/dist/cjs/helpers/expandStyles.native.js.map +1 -1
  77. package/dist/cjs/helpers/fluid.cjs +56 -0
  78. package/dist/cjs/helpers/fluid.native.cjs +58 -0
  79. package/dist/cjs/helpers/fluid.native.js +60 -0
  80. package/dist/cjs/helpers/fluid.native.js.map +1 -0
  81. package/dist/cjs/helpers/formatDiagnostic.native.cjs +2 -6
  82. package/dist/cjs/helpers/formatDiagnostic.native.js +2 -6
  83. package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
  84. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +6 -6
  85. package/dist/cjs/helpers/getSplitStyles.cjs +366 -150
  86. package/dist/cjs/helpers/getSplitStyles.native.cjs +584 -184
  87. package/dist/cjs/helpers/getSplitStyles.native.js +584 -184
  88. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  89. package/dist/cjs/helpers/getThemeCSSRules.cjs +37 -25
  90. package/dist/cjs/helpers/grammarConfig.cjs +6 -14
  91. package/dist/cjs/helpers/grammarConfig.native.cjs +32 -22
  92. package/dist/cjs/helpers/grammarConfig.native.js +32 -22
  93. package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
  94. package/dist/cjs/helpers/insertStyleRule.cjs +11 -4
  95. package/dist/cjs/helpers/insertStyleRule.native.cjs +8 -11
  96. package/dist/cjs/helpers/insertStyleRule.native.js +8 -11
  97. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  98. package/dist/cjs/helpers/isObj.native.cjs +1 -5
  99. package/dist/cjs/helpers/isObj.native.js +1 -5
  100. package/dist/cjs/helpers/isObj.native.js.map +1 -1
  101. package/dist/cjs/helpers/mainThreadPressEvents.native.cjs +48 -100
  102. package/dist/cjs/helpers/mainThreadPressEvents.native.js +48 -100
  103. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  104. package/dist/cjs/helpers/mergeProps.cjs +18 -21
  105. package/dist/cjs/helpers/mergeProps.native.cjs +20 -23
  106. package/dist/cjs/helpers/mergeProps.native.js +20 -23
  107. package/dist/cjs/helpers/mergeProps.native.js.map +1 -1
  108. package/dist/cjs/helpers/nativeOnlyProps.cjs +0 -1
  109. package/dist/cjs/helpers/nativeOnlyProps.native.cjs +0 -1
  110. package/dist/cjs/helpers/nativeOnlyProps.native.js +0 -1
  111. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
  112. package/dist/cjs/helpers/nativeTextMetrics.cjs +74 -0
  113. package/dist/cjs/helpers/nativeTextMetrics.native.cjs +77 -0
  114. package/dist/cjs/helpers/nativeTextMetrics.native.js +79 -0
  115. package/dist/cjs/helpers/nativeTextMetrics.native.js.map +1 -0
  116. package/dist/cjs/helpers/normalizeColor.native.cjs +17 -2
  117. package/dist/cjs/helpers/normalizeColor.native.js +17 -2
  118. package/dist/cjs/helpers/normalizeColor.native.js.map +1 -1
  119. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +2 -1
  120. package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +3 -6
  121. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +3 -6
  122. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  123. package/dist/cjs/helpers/objectIdentityKey.native.cjs +1 -5
  124. package/dist/cjs/helpers/objectIdentityKey.native.js +1 -5
  125. package/dist/cjs/helpers/objectIdentityKey.native.js.map +1 -1
  126. package/dist/cjs/helpers/parseNativeStyle.cjs +187 -0
  127. package/dist/cjs/helpers/parseNativeStyle.native.cjs +6 -4
  128. package/dist/cjs/helpers/parseNativeStyle.native.js +6 -4
  129. package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -1
  130. package/dist/cjs/helpers/proxyThemeToParents.cjs +9 -2
  131. package/dist/cjs/helpers/proxyThemeToParents.native.cjs +28 -2
  132. package/dist/cjs/helpers/proxyThemeToParents.native.js +28 -2
  133. package/dist/cjs/helpers/proxyThemeToParents.native.js.map +1 -1
  134. package/dist/cjs/helpers/resolveAnimationDriver.native.cjs +1 -5
  135. package/dist/cjs/helpers/resolveAnimationDriver.native.js +1 -5
  136. package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -1
  137. package/dist/cjs/helpers/{timer.cjs → resolveNativeUnits.cjs} +12 -8
  138. package/dist/cjs/helpers/resolveNativeUnits.native.cjs +205 -0
  139. package/dist/cjs/helpers/resolveNativeUnits.native.js +207 -0
  140. package/dist/cjs/helpers/resolveNativeUnits.native.js.map +1 -0
  141. package/dist/cjs/helpers/resolveRem.native.cjs +18 -21
  142. package/dist/cjs/helpers/resolveRem.native.js +18 -21
  143. package/dist/cjs/helpers/resolveRem.native.js.map +1 -1
  144. package/dist/cjs/helpers/resolveSizing.cjs +124 -0
  145. package/dist/cjs/helpers/resolveSizing.native.cjs +133 -0
  146. package/dist/cjs/helpers/resolveSizing.native.js +135 -0
  147. package/dist/cjs/helpers/resolveSizing.native.js.map +1 -0
  148. package/dist/cjs/helpers/resolveVariableValue.cjs +7 -7
  149. package/dist/cjs/helpers/resolveVariableValue.native.cjs +7 -9
  150. package/dist/cjs/helpers/resolveVariableValue.native.js +7 -9
  151. package/dist/cjs/helpers/resolveVariableValue.native.js.map +1 -1
  152. package/dist/cjs/helpers/resolveVariantStyle.native.cjs +2 -6
  153. package/dist/cjs/helpers/resolveVariantStyle.native.js +2 -6
  154. package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -1
  155. package/dist/cjs/helpers/skipProps.cjs +0 -1
  156. package/dist/cjs/helpers/skipProps.native.cjs +0 -1
  157. package/dist/cjs/helpers/skipProps.native.js +0 -1
  158. package/dist/cjs/helpers/skipProps.native.js.map +1 -1
  159. package/dist/cjs/helpers/styleFrontend.cjs +23 -1
  160. package/dist/cjs/helpers/styleFrontend.native.cjs +23 -1
  161. package/dist/cjs/helpers/styleFrontend.native.js +23 -1
  162. package/dist/cjs/helpers/styleFrontend.native.js.map +1 -1
  163. package/dist/cjs/helpers/styleStaticConfigCore.cjs +5 -4
  164. package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +7 -4
  165. package/dist/cjs/helpers/styleStaticConfigCore.native.js +7 -4
  166. package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -1
  167. package/dist/cjs/helpers/styledDynamic.cjs +5 -0
  168. package/dist/cjs/helpers/styledDynamic.native.cjs +8 -7
  169. package/dist/cjs/helpers/styledDynamic.native.js +8 -7
  170. package/dist/cjs/helpers/styledDynamic.native.js.map +1 -1
  171. package/dist/cjs/helpers/subscribeToContextGroup.cjs +16 -7
  172. package/dist/cjs/helpers/subscribeToContextGroup.native.cjs +18 -8
  173. package/dist/cjs/helpers/subscribeToContextGroup.native.js +18 -8
  174. package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +1 -1
  175. package/dist/cjs/helpers/themeRef.native.cjs +1 -5
  176. package/dist/cjs/helpers/themeRef.native.js +1 -5
  177. package/dist/cjs/helpers/themeRef.native.js.map +1 -1
  178. package/dist/cjs/helpers/themes.cjs +26 -11
  179. package/dist/cjs/helpers/themes.native.cjs +26 -11
  180. package/dist/cjs/helpers/themes.native.js +26 -11
  181. package/dist/cjs/helpers/themes.native.js.map +1 -1
  182. package/dist/cjs/helpers/tokenCategories.cjs +2 -2
  183. package/dist/cjs/helpers/tokenCategories.native.cjs +2 -2
  184. package/dist/cjs/helpers/tokenCategories.native.js +2 -2
  185. package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
  186. package/dist/cjs/helpers/variables.cjs +1 -1
  187. package/dist/cjs/helpers/variables.native.cjs +4 -8
  188. package/dist/cjs/helpers/variables.native.js +4 -8
  189. package/dist/cjs/helpers/variables.native.js.map +1 -1
  190. package/dist/cjs/helpers/warnOnce.cjs +6 -0
  191. package/dist/cjs/helpers/warnOnce.native.cjs +6 -0
  192. package/dist/cjs/helpers/warnOnce.native.js +6 -0
  193. package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
  194. package/dist/cjs/helpers/webPropsToSkip.native.cjs +3 -3
  195. package/dist/cjs/helpers/webPropsToSkip.native.js +3 -3
  196. package/dist/cjs/helpers/webPropsToSkip.native.js.map +1 -1
  197. package/dist/cjs/helpers/wrapStyleTags.cjs +1 -1
  198. package/dist/cjs/helpers/wrapStyleTags.native.cjs +1 -1
  199. package/dist/cjs/helpers/wrapStyleTags.native.js +1 -1
  200. package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -1
  201. package/dist/cjs/hooks/useComponentState.native.cjs +1 -5
  202. package/dist/cjs/hooks/useComponentState.native.js +1 -5
  203. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  204. package/dist/cjs/hooks/useMedia.cjs +27 -34
  205. package/dist/cjs/hooks/useMedia.native.cjs +45 -51
  206. package/dist/cjs/hooks/useMedia.native.js +45 -51
  207. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  208. package/dist/cjs/hooks/useSplitStyles.cjs +1 -1
  209. package/dist/cjs/hooks/useSplitStyles.native.cjs +1 -1
  210. package/dist/cjs/hooks/useSplitStyles.native.js +1 -1
  211. package/dist/cjs/hooks/useSplitStyles.native.js.map +1 -1
  212. package/dist/cjs/hooks/useThemeState.cjs +37 -47
  213. package/dist/cjs/hooks/useThemeState.native.cjs +44 -50
  214. package/dist/cjs/hooks/useThemeState.native.js +44 -50
  215. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  216. package/dist/cjs/index.cjs +7 -0
  217. package/dist/cjs/index.native.cjs +7 -0
  218. package/dist/cjs/index.native.js +7 -0
  219. package/dist/cjs/index.native.js.map +1 -1
  220. package/dist/cjs/internal-runtime.cjs +22 -0
  221. package/dist/cjs/internal-runtime.native.cjs +22 -0
  222. package/dist/cjs/internal-runtime.native.js +22 -0
  223. package/dist/cjs/internal-runtime.native.js.map +1 -1
  224. package/dist/cjs/static-resolve.native.cjs +2 -9
  225. package/dist/cjs/static-resolve.native.js +2 -9
  226. package/dist/cjs/static-resolve.native.js.map +1 -1
  227. package/dist/cjs/style.cjs +1 -1
  228. package/dist/cjs/style.native.cjs +4 -7
  229. package/dist/cjs/style.native.js +4 -7
  230. package/dist/cjs/style.native.js.map +1 -1
  231. package/dist/cjs/views/Theme.cjs +10 -17
  232. package/dist/cjs/views/Theme.native.cjs +9 -11
  233. package/dist/cjs/views/Theme.native.js +9 -11
  234. package/dist/cjs/views/Theme.native.js.map +1 -1
  235. package/dist/cjs/views/ThemeDebug.cjs +1 -1
  236. package/dist/cjs/views/ThemeUpdate.cjs +1 -1
  237. package/dist/cjs/views/ThemeUpdate.native.cjs +1 -1
  238. package/dist/cjs/views/ThemeUpdate.native.js +1 -1
  239. package/dist/cjs/views/ThemeUpdate.native.js.map +1 -1
  240. package/dist/esm/_withNativeStyle.mjs +4 -1
  241. package/dist/esm/_withNativeStyle.mjs.map +1 -1
  242. package/dist/esm/_withNativeStyle.native.js +4 -1
  243. package/dist/esm/_withNativeStyle.native.js.map +1 -1
  244. package/dist/esm/_withStableStyle.native.js +1 -5
  245. package/dist/esm/_withStableStyle.native.js.map +1 -1
  246. package/dist/esm/config.mjs +6 -3
  247. package/dist/esm/config.mjs.map +1 -1
  248. package/dist/esm/config.native.js +7 -5
  249. package/dist/esm/config.native.js.map +1 -1
  250. package/dist/esm/contexts/ComponentContext.mjs +9 -9
  251. package/dist/esm/contexts/ComponentContext.mjs.map +1 -1
  252. package/dist/esm/contexts/ComponentContext.native.js +16 -9
  253. package/dist/esm/contexts/ComponentContext.native.js.map +1 -1
  254. package/dist/esm/createComponent.mjs +45 -42
  255. package/dist/esm/createComponent.mjs.map +1 -1
  256. package/dist/esm/createComponent.native.js +93 -82
  257. package/dist/esm/createComponent.native.js.map +1 -1
  258. package/dist/esm/createTamagui.mjs +33 -15
  259. package/dist/esm/createTamagui.mjs.map +1 -1
  260. package/dist/esm/createTamagui.native.js +34 -20
  261. package/dist/esm/createTamagui.native.js.map +1 -1
  262. package/dist/esm/createTokens.native.js +1 -5
  263. package/dist/esm/createTokens.native.js.map +1 -1
  264. package/dist/esm/createVariable.native.js +1 -5
  265. package/dist/esm/createVariable.native.js.map +1 -1
  266. package/dist/esm/createVariables.native.js +2 -6
  267. package/dist/esm/createVariables.native.js.map +1 -1
  268. package/dist/esm/dom/html.mjs +87 -329
  269. package/dist/esm/dom/html.mjs.map +1 -1
  270. package/dist/esm/dom/html.native.js +53 -2
  271. package/dist/esm/dom/html.native.js.map +1 -1
  272. package/dist/esm/dom/htmlReset.mjs +6 -0
  273. package/dist/esm/dom/htmlReset.mjs.map +1 -0
  274. package/dist/esm/dom/htmlReset.native.js +6 -0
  275. package/dist/esm/dom/htmlReset.native.js.map +1 -0
  276. package/dist/esm/dom/htmlRuntime.native.js +4 -0
  277. package/dist/esm/dom/htmlRuntime.native.js.map +1 -1
  278. package/dist/esm/dom/htmlStaticConfig.mjs +22 -0
  279. package/dist/esm/dom/htmlStaticConfig.mjs.map +1 -0
  280. package/dist/esm/dom/htmlStaticConfig.native.js +22 -0
  281. package/dist/esm/dom/htmlStaticConfig.native.js.map +1 -0
  282. package/dist/esm/dom/primitives.native.js +81 -34
  283. package/dist/esm/dom/primitives.native.js.map +1 -1
  284. package/dist/esm/eventHandling.mjs +10 -4
  285. package/dist/esm/eventHandling.mjs.map +1 -1
  286. package/dist/esm/eventHandling.native.js +52 -16
  287. package/dist/esm/eventHandling.native.js.map +1 -1
  288. package/dist/esm/helpers/NativeTextBinding.mjs +17 -0
  289. package/dist/esm/helpers/NativeTextBinding.mjs.map +1 -0
  290. package/dist/esm/helpers/NativeTextBinding.native.js +18 -0
  291. package/dist/esm/helpers/NativeTextBinding.native.js.map +1 -0
  292. package/dist/esm/helpers/configVariables.native.js +2 -6
  293. package/dist/esm/helpers/configVariables.native.js.map +1 -1
  294. package/dist/esm/helpers/createDesignSystem.mjs +14 -10
  295. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  296. package/dist/esm/helpers/createDesignSystem.native.js +4 -4
  297. package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
  298. package/dist/esm/helpers/createStyledContext.native.js +1 -5
  299. package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
  300. package/dist/esm/helpers/expandStyle.mjs +41 -1
  301. package/dist/esm/helpers/expandStyle.mjs.map +1 -1
  302. package/dist/esm/helpers/expandStyle.native.js +36 -3
  303. package/dist/esm/helpers/expandStyle.native.js.map +1 -1
  304. package/dist/esm/helpers/expandStyles.mjs +15 -3
  305. package/dist/esm/helpers/expandStyles.mjs.map +1 -1
  306. package/dist/esm/helpers/expandStyles.native.js +14 -8
  307. package/dist/esm/helpers/expandStyles.native.js.map +1 -1
  308. package/dist/esm/helpers/fluid.mjs +36 -0
  309. package/dist/esm/helpers/fluid.mjs.map +1 -0
  310. package/dist/esm/helpers/fluid.native.js +36 -0
  311. package/dist/esm/helpers/fluid.native.js.map +1 -0
  312. package/dist/esm/helpers/formatDiagnostic.native.js +2 -6
  313. package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
  314. package/dist/esm/helpers/getCSSStylesAtomic.mjs +6 -6
  315. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
  316. package/dist/esm/helpers/getSplitStyles.mjs +364 -150
  317. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  318. package/dist/esm/helpers/getSplitStyles.native.js +588 -188
  319. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  320. package/dist/esm/helpers/getThemeCSSRules.mjs +37 -25
  321. package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
  322. package/dist/esm/helpers/grammarConfig.mjs +6 -14
  323. package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
  324. package/dist/esm/helpers/grammarConfig.native.js +32 -22
  325. package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
  326. package/dist/esm/helpers/insertStyleRule.mjs +11 -4
  327. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
  328. package/dist/esm/helpers/insertStyleRule.native.js +4 -4
  329. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
  330. package/dist/esm/helpers/isObj.native.js +1 -5
  331. package/dist/esm/helpers/isObj.native.js.map +1 -1
  332. package/dist/esm/helpers/mainThreadPressEvents.native.js +48 -100
  333. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  334. package/dist/esm/helpers/mergeProps.mjs +18 -21
  335. package/dist/esm/helpers/mergeProps.mjs.map +1 -1
  336. package/dist/esm/helpers/mergeProps.native.js +20 -23
  337. package/dist/esm/helpers/mergeProps.native.js.map +1 -1
  338. package/dist/esm/helpers/nativeOnlyProps.mjs +0 -1
  339. package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -1
  340. package/dist/esm/helpers/nativeOnlyProps.native.js +0 -1
  341. package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -1
  342. package/dist/esm/helpers/nativeTextMetrics.mjs +55 -0
  343. package/dist/esm/helpers/nativeTextMetrics.mjs.map +1 -0
  344. package/dist/esm/helpers/nativeTextMetrics.native.js +56 -0
  345. package/dist/esm/helpers/nativeTextMetrics.native.js.map +1 -0
  346. package/dist/esm/helpers/normalizeColor.native.js +17 -2
  347. package/dist/esm/helpers/normalizeColor.native.js.map +1 -1
  348. package/dist/esm/helpers/normalizeValueWithProperty.mjs +2 -1
  349. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
  350. package/dist/esm/helpers/normalizeValueWithProperty.native.js +3 -6
  351. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
  352. package/dist/esm/helpers/objectIdentityKey.native.js +1 -5
  353. package/dist/esm/helpers/objectIdentityKey.native.js.map +1 -1
  354. package/dist/esm/helpers/parseNativeStyle.mjs +168 -0
  355. package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
  356. package/dist/esm/helpers/parseNativeStyle.native.js +4 -1
  357. package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -1
  358. package/dist/esm/helpers/proxyThemeToParents.mjs +10 -2
  359. package/dist/esm/helpers/proxyThemeToParents.mjs.map +1 -1
  360. package/dist/esm/helpers/proxyThemeToParents.native.js +29 -2
  361. package/dist/esm/helpers/proxyThemeToParents.native.js.map +1 -1
  362. package/dist/esm/helpers/resolveAnimationDriver.native.js +1 -5
  363. package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -1
  364. package/dist/esm/helpers/resolveNativeUnits.mjs +9 -0
  365. package/dist/esm/helpers/resolveNativeUnits.mjs.map +1 -0
  366. package/dist/esm/helpers/resolveNativeUnits.native.js +178 -0
  367. package/dist/esm/helpers/resolveNativeUnits.native.js.map +1 -0
  368. package/dist/esm/helpers/resolveRem.native.js +18 -21
  369. package/dist/esm/helpers/resolveRem.native.js.map +1 -1
  370. package/dist/esm/helpers/resolveSizing.mjs +102 -0
  371. package/dist/esm/helpers/resolveSizing.mjs.map +1 -0
  372. package/dist/esm/helpers/resolveSizing.native.js +109 -0
  373. package/dist/esm/helpers/resolveSizing.native.js.map +1 -0
  374. package/dist/esm/helpers/resolveVariableValue.mjs +7 -7
  375. package/dist/esm/helpers/resolveVariableValue.mjs.map +1 -1
  376. package/dist/esm/helpers/resolveVariableValue.native.js +7 -9
  377. package/dist/esm/helpers/resolveVariableValue.native.js.map +1 -1
  378. package/dist/esm/helpers/resolveVariantStyle.native.js +2 -6
  379. package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -1
  380. package/dist/esm/helpers/skipProps.mjs +0 -1
  381. package/dist/esm/helpers/skipProps.mjs.map +1 -1
  382. package/dist/esm/helpers/skipProps.native.js +0 -1
  383. package/dist/esm/helpers/skipProps.native.js.map +1 -1
  384. package/dist/esm/helpers/styleFrontend.mjs +20 -1
  385. package/dist/esm/helpers/styleFrontend.mjs.map +1 -1
  386. package/dist/esm/helpers/styleFrontend.native.js +20 -1
  387. package/dist/esm/helpers/styleFrontend.native.js.map +1 -1
  388. package/dist/esm/helpers/styleStaticConfigCore.mjs +5 -4
  389. package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -1
  390. package/dist/esm/helpers/styleStaticConfigCore.native.js +7 -4
  391. package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -1
  392. package/dist/esm/helpers/styledDynamic.mjs +5 -0
  393. package/dist/esm/helpers/styledDynamic.mjs.map +1 -1
  394. package/dist/esm/helpers/styledDynamic.native.js +8 -7
  395. package/dist/esm/helpers/styledDynamic.native.js.map +1 -1
  396. package/dist/esm/helpers/subscribeToContextGroup.mjs +16 -7
  397. package/dist/esm/helpers/subscribeToContextGroup.mjs.map +1 -1
  398. package/dist/esm/helpers/subscribeToContextGroup.native.js +18 -8
  399. package/dist/esm/helpers/subscribeToContextGroup.native.js.map +1 -1
  400. package/dist/esm/helpers/themeRef.native.js +1 -5
  401. package/dist/esm/helpers/themeRef.native.js.map +1 -1
  402. package/dist/esm/helpers/themes.mjs +20 -11
  403. package/dist/esm/helpers/themes.mjs.map +1 -1
  404. package/dist/esm/helpers/themes.native.js +20 -11
  405. package/dist/esm/helpers/themes.native.js.map +1 -1
  406. package/dist/esm/helpers/tokenCategories.mjs +2 -2
  407. package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
  408. package/dist/esm/helpers/tokenCategories.native.js +2 -2
  409. package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
  410. package/dist/esm/helpers/variables.mjs +1 -1
  411. package/dist/esm/helpers/variables.mjs.map +1 -1
  412. package/dist/esm/helpers/variables.native.js +4 -8
  413. package/dist/esm/helpers/variables.native.js.map +1 -1
  414. package/dist/esm/helpers/warnOnce.mjs +6 -1
  415. package/dist/esm/helpers/warnOnce.mjs.map +1 -1
  416. package/dist/esm/helpers/warnOnce.native.js +6 -1
  417. package/dist/esm/helpers/warnOnce.native.js.map +1 -1
  418. package/dist/esm/helpers/webPropsToSkip.native.js +3 -3
  419. package/dist/esm/helpers/webPropsToSkip.native.js.map +1 -1
  420. package/dist/esm/helpers/wrapStyleTags.mjs +1 -1
  421. package/dist/esm/helpers/wrapStyleTags.mjs.map +1 -1
  422. package/dist/esm/helpers/wrapStyleTags.native.js +1 -1
  423. package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -1
  424. package/dist/esm/hooks/useComponentState.native.js +1 -5
  425. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  426. package/dist/esm/hooks/useMedia.mjs +27 -34
  427. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  428. package/dist/esm/hooks/useMedia.native.js +45 -51
  429. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  430. package/dist/esm/hooks/useSplitStyles.mjs +1 -1
  431. package/dist/esm/hooks/useSplitStyles.mjs.map +1 -1
  432. package/dist/esm/hooks/useSplitStyles.native.js +1 -1
  433. package/dist/esm/hooks/useSplitStyles.native.js.map +1 -1
  434. package/dist/esm/hooks/useThemeState.mjs +36 -48
  435. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  436. package/dist/esm/hooks/useThemeState.native.js +44 -50
  437. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  438. package/dist/esm/index.js +4 -1
  439. package/dist/esm/index.mjs +4 -1
  440. package/dist/esm/index.native.js +4 -1
  441. package/dist/esm/internal-runtime.mjs +22 -3
  442. package/dist/esm/internal-runtime.mjs.map +1 -1
  443. package/dist/esm/internal-runtime.native.js +22 -3
  444. package/dist/esm/internal-runtime.native.js.map +1 -1
  445. package/dist/esm/static-resolve.native.js +2 -9
  446. package/dist/esm/static-resolve.native.js.map +1 -1
  447. package/dist/esm/style.mjs +1 -1
  448. package/dist/esm/style.mjs.map +1 -1
  449. package/dist/esm/style.native.js +4 -7
  450. package/dist/esm/style.native.js.map +1 -1
  451. package/dist/esm/views/Theme.mjs +15 -14
  452. package/dist/esm/views/Theme.mjs.map +1 -1
  453. package/dist/esm/views/Theme.native.js +15 -15
  454. package/dist/esm/views/Theme.native.js.map +1 -1
  455. package/dist/esm/views/ThemeDebug.mjs +1 -1
  456. package/dist/esm/views/ThemeDebug.mjs.map +1 -1
  457. package/dist/esm/views/ThemeUpdate.mjs +1 -1
  458. package/dist/esm/views/ThemeUpdate.mjs.map +1 -1
  459. package/dist/esm/views/ThemeUpdate.native.js +1 -1
  460. package/dist/esm/views/ThemeUpdate.native.js.map +1 -1
  461. package/package.json +20 -18
  462. package/reset.css +11 -0
  463. package/src/_withNativeStyle.tsx +6 -1
  464. package/src/config.ts +6 -6
  465. package/src/contexts/ComponentContext.tsx +8 -0
  466. package/src/createComponent.tsx +177 -57
  467. package/src/createStyledHOC.tsx +25 -26
  468. package/src/createTamagui.ts +47 -28
  469. package/src/dom/contract.ts +4 -1
  470. package/src/dom/html.native.tsx +55 -2
  471. package/src/dom/html.tsx +189 -388
  472. package/src/dom/htmlReset.ts +15 -0
  473. package/src/dom/htmlRuntime.native.tsx +5 -0
  474. package/src/dom/htmlStaticConfig.ts +40 -0
  475. package/src/dom/primitives.native.tsx +138 -33
  476. package/src/dom/standalone.ts +2 -1
  477. package/src/dom/styleTypes.ts +82 -92
  478. package/src/eventHandling.native.ts +61 -11
  479. package/src/eventHandling.ts +19 -4
  480. package/src/helpers/NativeTextBinding.tsx +26 -0
  481. package/src/helpers/createDesignSystem.ts +24 -8
  482. package/src/helpers/expandStyle.ts +88 -4
  483. package/src/helpers/expandStyles.ts +6 -11
  484. package/src/helpers/fluid.ts +66 -0
  485. package/src/helpers/getCSSStylesAtomic.ts +11 -6
  486. package/src/helpers/getSplitStyles.tsx +1032 -296
  487. package/src/helpers/getThemeCSSRules.ts +73 -35
  488. package/src/helpers/grammarConfig.ts +23 -8
  489. package/src/helpers/insertStyleRule.tsx +14 -8
  490. package/src/helpers/mainThreadPressEvents.native.ts +65 -141
  491. package/src/helpers/mergeProps.ts +29 -62
  492. package/src/helpers/nativeOnlyProps.ts +0 -1
  493. package/src/helpers/nativeTextMetrics.ts +77 -0
  494. package/src/helpers/normalizeColor.native.ts +29 -4
  495. package/src/helpers/normalizeValueWithProperty.ts +2 -1
  496. package/src/helpers/{parseNativeStyle.native.ts → parseNativeStyle.ts} +8 -1
  497. package/src/helpers/proxyThemeToParents.ts +13 -2
  498. package/src/helpers/resolveNativeUnits.native.ts +247 -0
  499. package/src/helpers/resolveNativeUnits.ts +10 -0
  500. package/src/helpers/resolveRem.native.ts +25 -26
  501. package/src/helpers/resolveSizing.ts +167 -0
  502. package/src/helpers/resolveVariableValue.ts +21 -17
  503. package/src/helpers/skipProps.ts +0 -1
  504. package/src/helpers/styleFrontend.ts +39 -0
  505. package/src/helpers/styleProvenance.ts +1 -1
  506. package/src/helpers/styleStaticConfigCore.ts +15 -4
  507. package/src/helpers/styledDynamic.ts +3 -1
  508. package/src/helpers/subscribeToContextGroup.tsx +16 -7
  509. package/src/helpers/themes.ts +27 -11
  510. package/src/helpers/tokenCategories.ts +15 -3
  511. package/src/helpers/variables.ts +2 -2
  512. package/src/helpers/warnOnce.ts +6 -0
  513. package/src/helpers/webPropsToSkip.native.ts +9 -3
  514. package/src/helpers/wrapStyleTags.tsx +4 -1
  515. package/src/hooks/useMedia.tsx +36 -47
  516. package/src/hooks/useSplitStyles.tsx +4 -1
  517. package/src/hooks/useThemeState.ts +69 -74
  518. package/src/index.ts +13 -0
  519. package/src/interfaces/RNExclusiveTypes.ts +1 -3
  520. package/src/internal-runtime.ts +43 -2
  521. package/src/style.ts +4 -1
  522. package/src/styled.tsx +34 -3
  523. package/src/types.tsx +412 -132
  524. package/src/views/Theme.tsx +18 -21
  525. package/src/views/ThemeDebug.tsx +1 -1
  526. package/src/views/ThemeUpdate.tsx +1 -1
  527. package/types/_withNativeStyle.d.ts.map +1 -1
  528. package/types/config.d.ts.map +1 -1
  529. package/types/contexts/ComponentContext.d.ts +1 -1
  530. package/types/contexts/ComponentContext.d.ts.map +1 -1
  531. package/types/createComponent.d.ts.map +1 -1
  532. package/types/createStyledHOC.d.ts +5 -2
  533. package/types/createStyledHOC.d.ts.map +1 -1
  534. package/types/createTamagui.d.ts.map +1 -1
  535. package/types/dom/contract.d.ts +4 -1
  536. package/types/dom/contract.d.ts.map +1 -1
  537. package/types/dom/html.d.ts +60 -51
  538. package/types/dom/html.d.ts.map +1 -1
  539. package/types/dom/html.native.d.ts.map +1 -1
  540. package/types/dom/htmlReset.d.ts +10 -0
  541. package/types/dom/htmlReset.d.ts.map +1 -0
  542. package/types/dom/htmlRuntime.native.d.ts.map +1 -1
  543. package/types/dom/htmlStaticConfig.d.ts +22 -0
  544. package/types/dom/htmlStaticConfig.d.ts.map +1 -0
  545. package/types/dom/primitives.native.d.ts.map +1 -1
  546. package/types/dom/standalone.d.ts +2 -1
  547. package/types/dom/standalone.d.ts.map +1 -1
  548. package/types/dom/styleTypes.d.ts +63 -84
  549. package/types/dom/styleTypes.d.ts.map +1 -1
  550. package/types/eventHandling.d.ts +12 -4
  551. package/types/eventHandling.d.ts.map +1 -1
  552. package/types/eventHandling.native.d.ts.map +1 -1
  553. package/types/helpers/NativeTextBinding.d.ts +11 -0
  554. package/types/helpers/NativeTextBinding.d.ts.map +1 -0
  555. package/types/helpers/createDesignSystem.d.ts.map +1 -1
  556. package/types/helpers/expandStyle.d.ts +1 -0
  557. package/types/helpers/expandStyle.d.ts.map +1 -1
  558. package/types/helpers/expandStyles.d.ts.map +1 -1
  559. package/types/helpers/fluid.d.ts +21 -0
  560. package/types/helpers/fluid.d.ts.map +1 -0
  561. package/types/helpers/getCSSStylesAtomic.d.ts +3 -1
  562. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
  563. package/types/helpers/getSplitStyles.d.ts +2 -1
  564. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  565. package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
  566. package/types/helpers/grammarConfig.d.ts.map +1 -1
  567. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  568. package/types/helpers/mainThreadPressEvents.native.d.ts +0 -7
  569. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
  570. package/types/helpers/mergeProps.d.ts +1 -15
  571. package/types/helpers/mergeProps.d.ts.map +1 -1
  572. package/types/helpers/nativeOnlyProps.d.ts +0 -1
  573. package/types/helpers/nativeOnlyProps.d.ts.map +1 -1
  574. package/types/helpers/nativeTextMetrics.d.ts +16 -0
  575. package/types/helpers/nativeTextMetrics.d.ts.map +1 -0
  576. package/types/helpers/normalizeColor.native.d.ts +4 -1
  577. package/types/helpers/normalizeColor.native.d.ts.map +1 -1
  578. package/types/helpers/normalizeShadow.native.d.ts +3 -1
  579. package/types/helpers/normalizeShadow.native.d.ts.map +1 -1
  580. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
  581. package/types/helpers/{parseNativeStyle.native.d.ts → parseNativeStyle.d.ts} +1 -1
  582. package/types/helpers/parseNativeStyle.d.ts.map +1 -0
  583. package/types/helpers/proxyThemeToParents.d.ts +1 -1
  584. package/types/helpers/proxyThemeToParents.d.ts.map +1 -1
  585. package/types/helpers/resolveNativeUnits.d.ts +6 -0
  586. package/types/helpers/resolveNativeUnits.d.ts.map +1 -0
  587. package/types/helpers/resolveNativeUnits.native.d.ts +16 -0
  588. package/types/helpers/resolveNativeUnits.native.d.ts.map +1 -0
  589. package/types/helpers/resolveRem.native.d.ts +6 -4
  590. package/types/helpers/resolveRem.native.d.ts.map +1 -1
  591. package/types/helpers/resolveSizing.d.ts +90 -0
  592. package/types/helpers/resolveSizing.d.ts.map +1 -0
  593. package/types/helpers/resolveVariableValue.d.ts.map +1 -1
  594. package/types/helpers/skipProps.d.ts +0 -1
  595. package/types/helpers/skipProps.d.ts.map +1 -1
  596. package/types/helpers/styleFrontend.d.ts +21 -0
  597. package/types/helpers/styleFrontend.d.ts.map +1 -1
  598. package/types/helpers/styleProvenance.d.ts +1 -1
  599. package/types/helpers/styleProvenance.d.ts.map +1 -1
  600. package/types/helpers/styleStaticConfigCore.d.ts.map +1 -1
  601. package/types/helpers/styledDynamic.d.ts +1 -1
  602. package/types/helpers/styledDynamic.d.ts.map +1 -1
  603. package/types/helpers/themes.d.ts +4 -0
  604. package/types/helpers/themes.d.ts.map +1 -1
  605. package/types/helpers/tokenCategories.d.ts +1 -1
  606. package/types/helpers/tokenCategories.d.ts.map +1 -1
  607. package/types/helpers/warnOnce.d.ts +1 -0
  608. package/types/helpers/warnOnce.d.ts.map +1 -1
  609. package/types/helpers/webPropsToSkip.native.d.ts +6 -2
  610. package/types/helpers/webPropsToSkip.native.d.ts.map +1 -1
  611. package/types/helpers/wrapStyleTags.d.ts.map +1 -1
  612. package/types/hooks/useMedia.d.ts +5 -2
  613. package/types/hooks/useMedia.d.ts.map +1 -1
  614. package/types/hooks/useSplitStyles.d.ts.map +1 -1
  615. package/types/hooks/useThemeState.d.ts.map +1 -1
  616. package/types/index.d.ts +4 -1
  617. package/types/index.d.ts.map +1 -1
  618. package/types/interfaces/RNExclusiveTypes.d.ts +2 -3
  619. package/types/interfaces/RNExclusiveTypes.d.ts.map +1 -1
  620. package/types/internal-runtime.d.ts +12 -1
  621. package/types/internal-runtime.d.ts.map +1 -1
  622. package/types/style.d.ts.map +1 -1
  623. package/types/styled.d.ts +7 -4
  624. package/types/styled.d.ts.map +1 -1
  625. package/types/types.d.ts +258 -102
  626. package/types/types.d.ts.map +1 -1
  627. package/types/views/Theme.d.ts.map +1 -1
  628. package/dist/cjs/helpers/timer.native.js.map +0 -1
  629. package/dist/esm/helpers/timer.mjs +0 -13
  630. package/dist/esm/helpers/timer.mjs.map +0 -1
  631. package/dist/esm/helpers/timer.native.js +0 -13
  632. package/dist/esm/helpers/timer.native.js.map +0 -1
  633. package/src/helpers/timer.ts +0 -9
  634. package/types/helpers/parseNativeStyle.native.d.ts.map +0 -1
  635. package/types/helpers/timer.d.ts +0 -2
  636. package/types/helpers/timer.d.ts.map +0 -1
@@ -14,7 +14,6 @@ import {
14
14
  } from '../helpers/mediaState'
15
15
  export { mediaKeyMatch } from '../helpers/mediaState'
16
16
  import type {
17
- ComponentContextI,
18
17
  DebugProp,
19
18
  MediaQueryState,
20
19
  TamaguiInternalConfig,
@@ -171,6 +170,10 @@ type MediaState = {
171
170
  // for any earlier-rendered media-dependent sibling.
172
171
  const States = new WeakMap<any, MediaState>()
173
172
 
173
+ // the same per-instance rule holds for the emitter: createComponent passes its
174
+ // stateRef.current, so a media change restyles that component alone
175
+ type MediaEmitter = { mediaEmit?: (state: UseMediaState) => void }
176
+
174
177
  // shared "touch tracker" prototype: one object whose enumerable getter
175
178
  // properties are pre-defined for every configured media key. Hermes inlines
176
179
  // getter calls; the old `new Proxy(state, { get })` path forced an interpreted
@@ -247,8 +250,8 @@ type MediaRef = {
247
250
  // by mutating `proxyTarget` and re-reading it in the get trap.
248
251
  proxyTarget: MediaQueryState
249
252
  proxy: UseMediaState
250
- getSnapshot: () => MediaQueryState
251
- componentContext?: ComponentContextI
253
+ getSnapshot: (inRender?: boolean) => MediaQueryState
254
+ emitter?: MediaEmitter
252
255
  uid?: object
253
256
  debug?: DebugProp
254
257
  optimizeForFirstRender: boolean
@@ -318,7 +321,7 @@ function sameMediaKeys(a: Set<string> | null, b: Set<string> | null) {
318
321
  }
319
322
 
320
323
  export function useMedia(
321
- componentContext?: ComponentContextI,
324
+ emitter?: MediaEmitter,
322
325
  debug?: DebugProp,
323
326
  // per-component-instance key for the States map (createComponent passes
324
327
  // stateRef.current, matching its setMediaShouldUpdate call)
@@ -345,7 +348,7 @@ export function useMedia(
345
348
  proxyTarget: initial,
346
349
  proxy: undefined as unknown as UseMediaState,
347
350
  getSnapshot: undefined as unknown as () => MediaQueryState,
348
- componentContext,
351
+ emitter,
349
352
  uid,
350
353
  debug,
351
354
  optimizeForFirstRender,
@@ -362,56 +365,42 @@ export function useMedia(
362
365
  } as MediaRefSlot
363
366
  r.proxy = tracker as UseMediaState
364
367
  }
365
- r.getSnapshot = () => {
366
- if (r.optimizeForFirstRender) {
367
- const ms = getMedia()
368
- if (ms === r.lastState) {
369
- return r.lastState
370
- }
371
-
372
- if (r.componentContext?.mediaEmit) {
373
- r.componentContext.mediaEmit(ms)
374
- r.pendingState = ms
375
- return r.lastState
376
- }
377
-
378
- r.lastState = ms
379
- return ms
380
- }
381
-
382
- const curKeys = mediaListenKeys(r)!
383
- const { lastState, pendingState } = r
384
-
385
- if (!curKeys.size) {
386
- return lastState
387
- }
388
-
368
+ r.getSnapshot = (inRender) => {
369
+ const { lastState } = r
370
+ const curKeys = mediaListenKeys(r)
389
371
  const ms = getMedia()
390
- for (const key of curKeys) {
391
- if (ms[key] !== (pendingState || lastState)[key]) {
392
- if (process.env.NODE_ENV === 'development' && r.debug) {
393
- console.warn(`useMedia() ✍️`, key, lastState[key], '=>', ms[key])
372
+ if (curKeys) {
373
+ let changed = false
374
+ for (const key of curKeys) {
375
+ if (ms[key] !== (r.pendingState || lastState)[key]) {
376
+ if (process.env.NODE_ENV === 'development' && r.debug) {
377
+ console.warn(`useMedia() ✍️`, key, lastState[key], '=>', ms[key])
378
+ }
379
+ changed = true
380
+ break
394
381
  }
395
-
396
- // in emitter mode (no-rerender) avoid changing state, instead emit
397
- if (r.componentContext?.mediaEmit) {
398
- r.componentContext.mediaEmit(ms)
399
- r.pendingState = ms
400
- return lastState
401
- }
402
-
403
- r.lastState = ms
404
-
405
- return ms
406
382
  }
383
+ if (!changed) return lastState
384
+ } else if (ms === lastState) {
385
+ return lastState
407
386
  }
408
387
 
409
- return lastState
388
+ // render-time emits update siblings through setState, so defer those
389
+ // until render finishes; effect and subscription emits stay synchronous.
390
+ const mediaEmit = r.emitter?.mediaEmit
391
+ if (mediaEmit) {
392
+ if (inRender) queueMicrotask(() => mediaEmit(ms))
393
+ else mediaEmit(ms)
394
+ r.pendingState = ms
395
+ return lastState
396
+ }
397
+ r.lastState = ms
398
+ return ms
410
399
  }
411
400
  internalRef.current = r
412
401
  } else {
413
402
  // refresh per-render inputs the closures read through the ref
414
- internalRef.current.componentContext = componentContext
403
+ internalRef.current.emitter = emitter
415
404
  internalRef.current.uid = uid
416
405
  internalRef.current.debug = debug
417
406
  }
@@ -440,7 +429,7 @@ export function useMedia(
440
429
  ? initState
441
430
  : ref.optimizeForFirstRender && ref.renderVersion === 1
442
431
  ? ref.lastState
443
- : ref.getSnapshot()
432
+ : ref.getSnapshot(true)
444
433
  ref.proxyTarget = state
445
434
  if (!ref.optimizeForFirstRender) {
446
435
  ;(ref.proxy as any)[refSlot].proxyTarget = state
@@ -29,7 +29,10 @@ export const useSplitStyles: StyleSplitter = (
29
29
 
30
30
  const res = getSplitStyles(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
31
31
 
32
- if (!process.env.TAMAGUI_DID_OUTPUT_CSS && process.env.TAMAGUI_TARGET !== 'native') {
32
+ if (
33
+ process.env.TAMAGUI_RUNTIME !== 'island' &&
34
+ process.env.TAMAGUI_TARGET !== 'native'
35
+ ) {
33
36
  useInsertEffectCompat(() => {
34
37
  if (res) {
35
38
  insertStyleRules(res.rulesToInsert)
@@ -8,6 +8,7 @@ import {
8
8
  useRef,
9
9
  type MutableRefObject,
10
10
  } from 'react'
11
+ import { getThemeScheme as getScheme } from '@tamagui/helpers'
11
12
  import { getConfig, getSetting } from '../config'
12
13
  import { MISSING_THEME_MESSAGE } from '../constants/constants'
13
14
  import type {
@@ -17,6 +18,7 @@ import type {
17
18
  UseThemeWithStateProps,
18
19
  } from '../types'
19
20
  import type { ThemeUpdateState } from '../helpers/themeUpdateState'
21
+ import { getAuthoredThemeScheme } from '../helpers/themes'
20
22
 
21
23
  type ID = string
22
24
 
@@ -29,7 +31,6 @@ const HadTheme = new WeakMap<object, boolean>()
29
31
  const PendingUpdate = new Map<any, boolean | 'force'>()
30
32
 
31
33
  const states: Map<ID, ThemeState | undefined> = new Map()
32
- const localStates: Map<ID, ThemeState | undefined> = new Map()
33
34
 
34
35
  let shouldForce = false
35
36
  export const forceUpdateThemes = () => {
@@ -110,7 +111,7 @@ export const useThemeState = (
110
111
  }
111
112
 
112
113
  const id = useId()
113
- const propsKey = getPropsKey(props)
114
+ const propsKey = `${props.name || ''}${props.forceClassName || ''}${props._themeUpdate?.key || ''}`
114
115
 
115
116
  if (cascadeOnChange) {
116
117
  registerThemeProviderChain(id, parentId, props)
@@ -119,20 +120,14 @@ export const useThemeState = (
119
120
  const ref = useRef<ThemeStateRef>(null as any)
120
121
  const r = (ref.current ||= {
121
122
  id,
122
- parentId,
123
- props,
124
- propsKey,
125
- isRoot,
126
- keys,
127
- schemeKeys,
128
123
  optimizeForFirstRender,
129
124
  renderVersion: 0,
130
- })
125
+ } as ThemeStateRef)
131
126
  r.props = props
132
127
  r.propsKey = propsKey
133
128
  r.isRoot = isRoot
134
129
  r.keys = keys
135
- r.schemeKeys = schemeKeys
130
+ if (process.env.TAMAGUI_TARGET === 'native') r.schemeKeys = schemeKeys
136
131
  r.parentId = parentId
137
132
  r.renderVersion++
138
133
 
@@ -145,15 +140,15 @@ export const useThemeState = (
145
140
 
146
141
  if (r.lastSnap && !states.has(r.id)) {
147
142
  states.set(r.id, r.lastSnap)
148
- localStates.set(r.id, r.lastSnap)
143
+ r.state = r.lastSnap
149
144
  }
150
145
 
151
146
  if (cascadeOnChange && !themeProviderParents.has(r.id)) {
152
147
  registerThemeProviderChain(r.id, r.parentId, r.props)
153
148
  }
154
149
 
155
- if (r.unsubscribe && r.subscribedParentId !== r.parentId) {
156
- cleanupThemeSubscription(r)
150
+ if (r.unsubscribe && r.subscribedTo !== r.parentId) {
151
+ r.unsubscribe?.()
157
152
  }
158
153
 
159
154
  if (shouldSubscribeToTheme(r, cascadeOnChange)) {
@@ -177,19 +172,19 @@ export const useThemeState = (
177
172
  PendingUpdate.set(sid, forced ? 'force' : true)
178
173
  cb(forced)
179
174
  })
180
- r.subscribedParentId = pid
175
+ r.subscribedTo = pid
181
176
  r.unsubscribe = () => {
182
177
  allListeners.delete(sid)
183
178
  listenersByParent[pid]?.delete(sid)
184
- localStates.delete(sid)
179
+ r.state = undefined
185
180
  states.delete(sid)
186
181
  PendingUpdate.delete(sid)
187
182
  r.unsubscribe = undefined
188
- r.subscribedParentId = undefined
183
+ r.subscribedTo = undefined
189
184
  }
190
185
  }
191
186
  } else if (r.unsubscribe) {
192
- cleanupThemeSubscription(r)
187
+ r.unsubscribe?.()
193
188
  }
194
189
 
195
190
  return () => {
@@ -222,6 +217,7 @@ export const useThemeState = (
222
217
  }
223
218
 
224
219
  type SnapshotRef = {
220
+ state?: ThemeState
225
221
  id: string
226
222
  parentId: string
227
223
  props: UseThemeWithStateProps
@@ -235,7 +231,7 @@ type SnapshotRef = {
235
231
  type ThemeStateRef = SnapshotRef & {
236
232
  renderVersion: number
237
233
  unsubscribe?: () => void
238
- subscribedParentId?: string
234
+ subscribedTo?: string
239
235
  lastSnap?: ThemeState
240
236
  }
241
237
 
@@ -249,15 +245,11 @@ const shouldSubscribeToTheme = (r: ThemeStateRef, cascadeOnChange: boolean): boo
249
245
  r.props.needsUpdate?.()
250
246
  )
251
247
 
252
- function cleanupThemeSubscription(r: ThemeStateRef) {
253
- r.unsubscribe?.()
254
- }
255
-
256
248
  function cleanupThemeState(r: ThemeStateRef) {
257
249
  if (r.unsubscribe) {
258
- cleanupThemeSubscription(r)
250
+ r.unsubscribe()
259
251
  } else {
260
- localStates.delete(r.id)
252
+ r.state = undefined
261
253
  states.delete(r.id)
262
254
  PendingUpdate.delete(r.id)
263
255
  }
@@ -266,23 +258,17 @@ function cleanupThemeState(r: ThemeStateRef) {
266
258
  }
267
259
 
268
260
  const getSnapshotImpl = (r: SnapshotRef): ThemeState => {
269
- const {
270
- id,
271
- parentId,
272
- props,
273
- propsKey,
274
- isRoot,
275
- keys,
276
- schemeKeys,
277
- optimizeForFirstRender,
278
- } = r
279
- let local = localStates.get(id)
261
+ const { id, parentId, props, propsKey, isRoot, keys, optimizeForFirstRender } = r
262
+ const schemeKeys = process.env.TAMAGUI_TARGET === 'native' ? r.schemeKeys : undefined
263
+ // useId values repeat across server renders; each hook owns its snapshot.
264
+ let local = r.state
280
265
  const parentState = states.get(parentId)
281
266
 
282
267
  if (local && !PendingUpdate.has(id)) {
283
268
  if (
284
269
  parentState &&
285
270
  (local as any)._parentName === parentState.name &&
271
+ (local as any)._parentSchemeAuthored === parentState.schemeAuthored &&
286
272
  (local as any)._propsKey === propsKey
287
273
  ) {
288
274
  return local
@@ -299,17 +285,23 @@ const getSnapshotImpl = (r: SnapshotRef): ThemeState => {
299
285
  local.scheme !== parentState.scheme &&
300
286
  getThemeBaseName(local.name) === getThemeBaseName(parentState.name)
301
287
 
302
- const allKeysSchemeOptimized =
303
- !optimizeForFirstRender &&
304
- Boolean(keys.current?.size && schemeKeys?.current?.size === keys.current.size)
305
-
306
- const canSkipForSchemeChange = Boolean(isSchemeOnlyChange && allKeysSchemeOptimized)
288
+ const canSkipForSchemeChange = Boolean(
289
+ isSchemeOnlyChange &&
290
+ keys.current?.size &&
291
+ schemeKeys?.current?.size === keys.current.size
292
+ )
307
293
 
294
+ // forceClassName renders its resolved name as classes, so a nameless one that
295
+ // mirrors its parent still has to re-render when the parent's scheme flips
308
296
  const needsUpdate = props.passThrough
309
297
  ? false
310
298
  : optimizeForFirstRender
311
299
  ? true
312
- : isRoot || props.name === 'light' || props.name === 'dark' || props.name === null
300
+ : isRoot ||
301
+ props.forceClassName ||
302
+ props.name === 'light' ||
303
+ props.name === 'dark' ||
304
+ props.name === null
313
305
  ? true
314
306
  : !HasRenderedOnce.get(keys)
315
307
  ? true
@@ -343,7 +335,7 @@ const getSnapshotImpl = (r: SnapshotRef): ThemeState => {
343
335
 
344
336
  if (!local || rerender) {
345
337
  local = { ...next }
346
- localStates.set(id, local)
338
+ r.state = local
347
339
  }
348
340
 
349
341
  if (next !== local) {
@@ -351,6 +343,8 @@ const getSnapshotImpl = (r: SnapshotRef): ThemeState => {
351
343
  local.id = id
352
344
  }
353
345
  ;(local as any)._parentName = parentState?.name
346
+ // scheme intent can change while the resolved name stays the same.
347
+ ;(local as any)._parentSchemeAuthored = parentState?.schemeAuthored
354
348
  ;(local as any)._propsKey = propsKey
355
349
  states.set(id, next)
356
350
 
@@ -369,8 +363,10 @@ const getNextState = (
369
363
  ): [boolean, ThemeState] => {
370
364
  const parentState = states.get(parentId)
371
365
 
366
+ // passThrough adds no theme of its own, so it mirrors the parent's current
367
+ // state. preferring lastState froze it, and every descendant, on its first theme
372
368
  if (props.passThrough) {
373
- return [false, lastState || parentState || ({ name: '' } as any)]
369
+ return [false, parentState || lastState || ({ name: '' } as any)]
374
370
  }
375
371
 
376
372
  themes ||= getConfig().themes
@@ -383,20 +379,39 @@ const getNextState = (
383
379
  props,
384
380
  pendingUpdate === 'force' ? true : !!needsUpdate
385
381
  )
386
- const isSameAsParent = Boolean(parentState && (!name || name === parentState.name))
382
+ // explicit schemes pin even when resolution reuses the parent's theme name.
383
+ const authoredName = props.name
384
+ const parentSchemeAuthored = !!parentState?.schemeAuthored
385
+ const schemeAuthored = isRoot
386
+ ? !!props.forceClassName
387
+ : parentSchemeAuthored ||
388
+ !!(authoredName && getScheme(authoredName) && authoredName in themes)
389
+ const intentChanged = schemeAuthored !== parentSchemeAuthored
390
+ const resolvedName = name || parentState?.name
391
+ const sameAsLast =
392
+ lastState &&
393
+ lastState.name === resolvedName &&
394
+ !!lastState.schemeAuthored === schemeAuthored
395
+
396
+ const isSameAsParent = Boolean(
397
+ parentState && resolvedName === parentState.name && !intentChanged
398
+ )
387
399
  const shouldRerender = Boolean(
388
400
  pendingUpdate === 'force' ||
389
- (needsUpdate && (pendingUpdate || lastState?.name !== parentState?.name))
401
+ (needsUpdate &&
402
+ (pendingUpdate ||
403
+ lastState?.name !== parentState?.name ||
404
+ !!lastState?.schemeAuthored !== schemeAuthored))
390
405
  )
391
406
 
392
407
  if (isSameAsParent) {
393
- if (!shouldRerender && lastState && lastState.name === parentState!.name) {
408
+ if (!shouldRerender && sameAsLast) {
394
409
  return [false, lastState]
395
410
  }
396
411
  return [shouldRerender, { ...parentState!, isNew: false }]
397
412
  }
398
413
 
399
- if (!name) {
414
+ if (!resolvedName) {
400
415
  const next = lastState ??
401
416
  parentState ??
402
417
  rootThemeState ?? {
@@ -412,20 +427,22 @@ const getNextState = (
412
427
  return [false, next]
413
428
  }
414
429
 
415
- const scheme = getScheme(name)
430
+ // a same-name pin still introduces its own scope.
431
+ const scheme = getAuthoredThemeScheme(themes[resolvedName]) || getScheme(resolvedName)
416
432
  const parentInverses = parentState?.inverses ?? 0
417
433
  const isInverse = Boolean(parentState && scheme !== parentState.scheme)
418
434
  const inverses = parentInverses + (isInverse ? 1 : 0)
419
435
 
420
436
  const nextState: ThemeState = {
421
437
  id,
422
- name,
423
- theme: themes[name],
438
+ name: resolvedName,
439
+ theme: themes[resolvedName],
424
440
  scheme,
425
441
  parentId,
426
442
  parentName: parentState?.name,
427
443
  inverses,
428
444
  isInverse,
445
+ schemeAuthored,
429
446
  isNew: true,
430
447
  }
431
448
 
@@ -433,17 +450,7 @@ const getNextState = (
433
450
  rootThemeState = nextState
434
451
  }
435
452
 
436
- if (pendingUpdate !== 'force' && lastState && lastState.name === name) {
437
- return [false, nextState]
438
- }
439
-
440
- const shouldAvoidRerender =
441
- pendingUpdate !== 'force' &&
442
- lastState &&
443
- !needsUpdate &&
444
- nextState.name === lastState.name
445
-
446
- return [!shouldAvoidRerender, nextState]
453
+ return [pendingUpdate === 'force' || !sameAsLast, nextState]
447
454
  }
448
455
 
449
456
  function scheduleUpdate(id: string) {
@@ -468,15 +475,6 @@ function scheduleUpdate(id: string) {
468
475
  })
469
476
  }
470
477
 
471
- const validSchemes = {
472
- light: 'light',
473
- dark: 'dark',
474
- } as const
475
-
476
- function getScheme(name: string) {
477
- return validSchemes[name.split('_')[0]]
478
- }
479
-
480
478
  export function getNewThemeName(
481
479
  parentName = '',
482
480
  props: UseThemeWithStateProps,
@@ -534,15 +532,12 @@ export function resolveThemeName(
534
532
  }
535
533
  }
536
534
 
537
- if (!forceUpdate && found === parentName && !validSchemes[found]) {
535
+ if (!forceUpdate && found === parentName && found !== 'light' && found !== 'dark') {
538
536
  return null
539
537
  }
540
538
 
541
539
  return found
542
540
  }
543
541
 
544
- const getPropsKey = ({ name, forceClassName, _themeUpdate }: UseThemeWithStateProps) =>
545
- `${name || ''}${forceClassName || ''}${_themeUpdate?.key || ''}`
546
-
547
542
  export const hasThemeUpdatingProps = (props: UseThemeWithStateProps) =>
548
543
  'name' in props || 'forceClassName' in props || '_themeUpdate' in props
package/src/index.ts CHANGED
@@ -50,10 +50,18 @@ export {
50
50
  } from './helpers/splitStyleProps'
51
51
  export { normalizeColor } from './helpers/normalizeColor'
52
52
  export { normalizeStyle } from './helpers/normalizeStyle'
53
+ export { resolveTextMetrics } from './helpers/nativeTextMetrics'
54
+ export {
55
+ defaultSizing,
56
+ resolveSizing,
57
+ type ResolvedSizing,
58
+ type SizingEnv,
59
+ } from './helpers/resolveSizing'
53
60
  export { containsThemeRef, themeRefKey } from './helpers/themeRef'
54
61
  export { getStyleTags } from './helpers/wrapStyleTags'
55
62
 
56
63
  export { createFont } from './createFont'
64
+ export { fluid, type FluidOptions } from './helpers/fluid'
57
65
  export {
58
66
  createChangeEventDetails,
59
67
  type TamaguiChangeEventDetails,
@@ -86,12 +94,15 @@ export type {
86
94
  AnimationDriver,
87
95
  AnimationDriverStub,
88
96
  AnimationDriverWithAnimatedNumbers,
97
+ AnimatedTextChannel,
98
+ NativeTextMetrics,
89
99
  AnimationsConfig,
90
100
  BorderValue,
91
101
  BoxShadowValue,
92
102
  Color,
93
103
  ColorScheme,
94
104
  ColorTokens,
105
+ ComponentSize,
95
106
  CreateTamaguiConfig,
96
107
  CreateTamaguiProps,
97
108
  DebugProp,
@@ -113,6 +124,7 @@ export type {
113
124
  FontWeightTokens,
114
125
  Fonts,
115
126
  GenericFont,
127
+ GenericSizing,
116
128
  GenericStackVariants,
117
129
  GenericTamaguiConfig,
118
130
  GenericTextVariants,
@@ -153,6 +165,7 @@ export type {
153
165
  Shorthands,
154
166
  Size,
155
167
  SizeKeys,
168
+ SizeRecipe,
156
169
  SizeTokens,
157
170
  Space,
158
171
  SpaceTokens,
@@ -3,7 +3,7 @@ import type {
3
3
  LayoutChangeEvent,
4
4
  TextLayoutEventData,
5
5
  NativeSyntheticEvent,
6
- } from 'react-native'
6
+ } from '@tamagui/react-native-types'
7
7
 
8
8
  type OnLayout = ((event: LayoutChangeEvent) => void) | undefined
9
9
  type OnTextLayout =
@@ -16,7 +16,6 @@ export interface RNExtraProps {
16
16
  onSelectionChangeShouldSetResponder?: unknown
17
17
  onSelectionChangeShouldSetResponderCapture?: unknown
18
18
  onLayout?: OnLayout
19
- elevationAndroid?: number | string
20
19
  }
21
20
 
22
21
  export interface RNViewProps extends GestureResponderHandlers, RNExtraProps {
@@ -40,7 +39,6 @@ export type RNOnlyProps =
40
39
  | 'onTextLayout'
41
40
  | 'href'
42
41
  | 'hrefAttrs'
43
- | 'elevationAndroid'
44
42
  | 'rel'
45
43
  | 'download'
46
44
  | 'dir'
@@ -9,15 +9,20 @@
9
9
  */
10
10
  import type { FunctionComponent } from 'react'
11
11
  import { stylePropsUnitless } from '@tamagui/helpers'
12
+ import type { TagName } from '@tamagui/dom'
12
13
  import { createComponent } from './createComponent'
13
14
  import { createVariables as createVariablesImpl } from './createVariables'
15
+ import { html } from './dom/html'
14
16
  import { fixStyles as fixStylesImpl } from './helpers/expandStyles'
15
17
  import { styleToCSS as styleToCSSImpl } from './helpers/styleToCSS'
16
18
  import { getThemeCSSRules as getThemeCSSRulesImpl } from './helpers/getThemeCSSRules'
17
19
  import { normalizeValueWithProperty as normalizeValueWithPropertyImpl } from './helpers/normalizeValueWithProperty'
18
20
  import { proxyThemeToParents as proxyThemeToParentsImpl } from './helpers/proxyThemeToParents'
19
21
  import type { FrontendComponent, StyleFrontend } from './helpers/styleFrontend'
20
- import { ensureThemeVariable as ensureThemeVariableImpl } from './helpers/themes'
22
+ import {
23
+ copyAuthoredThemeScheme as copyAuthoredThemeSchemeImpl,
24
+ ensureThemeVariable as ensureThemeVariableImpl,
25
+ } from './helpers/themes'
21
26
  import { transformsToString as transformsToStringImpl } from './helpers/transformsToString'
22
27
  import {
23
28
  parseFont as parseFontImpl,
@@ -31,7 +36,7 @@ import { TamaguiProvider as TamaguiProviderImpl } from './views/TamaguiProvider'
31
36
  import { textStaticConfig } from './views/Text'
32
37
  import { viewStaticConfig } from './views/View'
33
38
 
34
- export { regularStyleFrontend } from './helpers/styleFrontend'
39
+ export { mergeFrontendCondition, regularStyleFrontend } from './helpers/styleFrontend'
35
40
  export type * from './internalRuntimeTypes'
36
41
 
37
42
  export const createVariables: (
@@ -57,6 +62,8 @@ export const proxyThemeToParents: (themeName: string, theme: any) => any =
57
62
  proxyThemeToParentsImpl
58
63
  export const ensureThemeVariable: (theme: any, key: string) => void =
59
64
  ensureThemeVariableImpl
65
+ export const copyAuthoredThemeScheme: <T>(target: T, source: any) => T =
66
+ copyAuthoredThemeSchemeImpl
60
67
  export const transformsToString: (transforms: object[]) => string = transformsToStringImpl
61
68
  export const styleToCSS: (style: Record<string, any>) => void = styleToCSSImpl
62
69
  export const useThemeWithState: (
@@ -131,3 +138,37 @@ export function createFrontendViews(frontend: StyleFrontend): {
131
138
  }),
132
139
  }
133
140
  }
141
+
142
+ /** the tags `createFrontendHTML` builds, which is every tag of the DOM contract */
143
+ export type FrontendHTMLTag = TagName
144
+
145
+ /**
146
+ * The DOM contract's elements rebuilt on another style frontend: same tags, same
147
+ * element defaults, same runtime, only the authoring syntax differs. Mirrors
148
+ * `createFrontendViews`, and is safe for the same reason: the regular singletons
149
+ * keep their own config objects and `createComponent` never mutates one.
150
+ */
151
+ export function createFrontendHTML(
152
+ frontend: StyleFrontend
153
+ ): Record<FrontendHTMLTag, FrontendComponent> {
154
+ const out = {} as Record<FrontendHTMLTag, FrontendComponent>
155
+ for (const tag in html) {
156
+ const source = html[tag] as FrontendComponent & {
157
+ rebindDOMTag?: (next: FrontendComponent) => FrontendComponent
158
+ }
159
+ // a tag native does not support is a thrower with nothing to rebuild
160
+ if (!source.staticConfig) {
161
+ out[tag] = source
162
+ continue
163
+ }
164
+ const rebuilt = createComponent({
165
+ ...source.staticConfig,
166
+ styleFrontend: frontend,
167
+ displayName: tag,
168
+ })
169
+ // on native the styling component is wrapped in the dom prop mapping, which
170
+ // the rebuild has to keep
171
+ out[tag] = source.rebindDOMTag ? source.rebindDOMTag(rebuilt) : rebuilt
172
+ }
173
+ return out
174
+ }
package/src/style.ts CHANGED
@@ -75,9 +75,12 @@ export function createStylePiece(
75
75
  */
76
76
  export function style(definition: StaticShapeStyle): StylePiece {
77
77
  if (process.env.NODE_ENV === 'development') {
78
+ // the owner is the component rendering right now. the hooks dispatcher
79
+ // (`H`) stays set between renders, so it flags module-scope pieces in any
80
+ // module loaded after the first render
78
81
  const internals = (React as any)
79
82
  .__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE
80
- if (internals?.H) {
83
+ if (internals?.A?.getOwner?.()) {
81
84
  warnOnce(
82
85
  '[tamagui] style() was called during render. Define style pieces at module scope so their rules compile once.'
83
86
  )