@tamagui/web 3.0.0-beta.831.1 → 3.0.0-beta.889.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 (474) hide show
  1. package/dist/cjs/createComponent.cjs +12 -1
  2. package/dist/cjs/createComponent.native.cjs +12 -1
  3. package/dist/cjs/createComponent.native.js +12 -1
  4. package/dist/cjs/createComponent.native.js.map +1 -1
  5. package/dist/cjs/createStyledHOC.cjs +1 -1
  6. package/dist/cjs/createStyledHOC.native.cjs +1 -1
  7. package/dist/cjs/createStyledHOC.native.js +1 -1
  8. package/dist/cjs/createStyledHOC.native.js.map +1 -1
  9. package/dist/cjs/createVariable.cjs +0 -10
  10. package/dist/cjs/createVariable.native.cjs +0 -10
  11. package/dist/cjs/createVariable.native.js +0 -10
  12. package/dist/cjs/createVariable.native.js.map +1 -1
  13. package/dist/cjs/helpers/borderComponents.cjs +62 -0
  14. package/dist/cjs/helpers/borderComponents.native.cjs +82 -0
  15. package/dist/cjs/helpers/borderComponents.native.js +84 -0
  16. package/dist/cjs/helpers/borderComponents.native.js.map +1 -0
  17. package/dist/cjs/helpers/createDesignSystem.cjs +0 -2
  18. package/dist/cjs/helpers/createStyledContext.cjs +10 -18
  19. package/dist/cjs/helpers/createStyledContext.native.cjs +14 -18
  20. package/dist/cjs/helpers/createStyledContext.native.js +14 -18
  21. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  22. package/dist/cjs/helpers/formatDiagnostic.cjs +6 -6
  23. package/dist/cjs/helpers/formatDiagnostic.native.cjs +6 -6
  24. package/dist/cjs/helpers/formatDiagnostic.native.js +6 -6
  25. package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
  26. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +128 -109
  27. package/dist/cjs/helpers/getCSSStylesAtomic.native.cjs +11 -3
  28. package/dist/cjs/helpers/getCSSStylesAtomic.native.js +11 -3
  29. package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -1
  30. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.cjs +13 -1
  31. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.cjs +15 -1
  32. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js +15 -1
  33. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  34. package/dist/cjs/helpers/getDynamicVal.cjs +5 -1
  35. package/dist/cjs/helpers/getDynamicVal.native.cjs +5 -1
  36. package/dist/cjs/helpers/getDynamicVal.native.js +5 -1
  37. package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -1
  38. package/dist/cjs/helpers/getSplitStyles.cjs +1042 -1715
  39. package/dist/cjs/helpers/getSplitStyles.native.cjs +1081 -1887
  40. package/dist/cjs/helpers/getSplitStyles.native.js +1081 -1887
  41. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  42. package/dist/cjs/helpers/grammarConfig.cjs +163 -1
  43. package/dist/cjs/helpers/grammarConfig.native.cjs +186 -1
  44. package/dist/cjs/helpers/grammarConfig.native.js +186 -1
  45. package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
  46. package/dist/cjs/helpers/insertStyleRule.cjs +5 -1
  47. package/dist/cjs/helpers/insertStyleRule.native.cjs +7 -1
  48. package/dist/cjs/helpers/insertStyleRule.native.js +7 -1
  49. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  50. package/dist/cjs/helpers/log.cjs +9 -8
  51. package/dist/cjs/helpers/log.native.cjs +9 -8
  52. package/dist/cjs/helpers/log.native.js +9 -8
  53. package/dist/cjs/helpers/log.native.js.map +1 -1
  54. package/dist/cjs/helpers/mergeVariants.cjs +44 -13
  55. package/dist/cjs/helpers/mergeVariants.native.cjs +79 -14
  56. package/dist/cjs/helpers/mergeVariants.native.js +79 -14
  57. package/dist/cjs/helpers/mergeVariants.native.js.map +1 -1
  58. package/dist/cjs/helpers/nativeOnlyProps.cjs +0 -1
  59. package/dist/cjs/helpers/nativeOnlyProps.native.cjs +0 -1
  60. package/dist/cjs/helpers/nativeOnlyProps.native.js +0 -1
  61. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
  62. package/dist/cjs/helpers/nativeStyleEngine.cjs +34 -14
  63. package/dist/cjs/helpers/nativeStyleEngine.native.cjs +36 -14
  64. package/dist/cjs/helpers/nativeStyleEngine.native.js +36 -14
  65. package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
  66. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +7 -8
  67. package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +9 -8
  68. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +9 -8
  69. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  70. package/dist/cjs/helpers/parseBorderShorthand.native.cjs +25 -56
  71. package/dist/cjs/helpers/parseBorderShorthand.native.js +25 -56
  72. package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -1
  73. package/dist/cjs/helpers/parseOutlineShorthand.native.cjs +9 -49
  74. package/dist/cjs/helpers/parseOutlineShorthand.native.js +9 -49
  75. package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -1
  76. package/dist/cjs/helpers/resolveSafeArea.cjs +35 -100
  77. package/dist/cjs/helpers/resolveVariantStyle.cjs +57 -0
  78. package/dist/cjs/helpers/resolveVariantStyle.native.cjs +67 -0
  79. package/dist/cjs/helpers/resolveVariantStyle.native.js +69 -0
  80. package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -0
  81. package/dist/cjs/helpers/styleStaticConfig.cjs +1 -50
  82. package/dist/cjs/helpers/styleStaticConfig.native.cjs +1 -51
  83. package/dist/cjs/helpers/styleStaticConfig.native.js +1 -51
  84. package/dist/cjs/helpers/styleStaticConfig.native.js.map +1 -1
  85. package/dist/cjs/helpers/styleStaticConfigCore.cjs +107 -0
  86. package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +127 -0
  87. package/dist/cjs/helpers/styleStaticConfigCore.native.js +129 -0
  88. package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -0
  89. package/dist/cjs/helpers/styledDynamic.cjs +160 -0
  90. package/dist/cjs/helpers/styledDynamic.native.cjs +195 -0
  91. package/dist/cjs/helpers/styledDynamic.native.js +197 -0
  92. package/dist/cjs/helpers/styledDynamic.native.js.map +1 -0
  93. package/dist/cjs/helpers/tokenCategories.cjs +15 -38
  94. package/dist/cjs/helpers/tokenCategories.native.cjs +15 -40
  95. package/dist/cjs/helpers/tokenCategories.native.js +15 -40
  96. package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
  97. package/dist/cjs/helpers/variableValue.cjs +17 -12
  98. package/dist/cjs/helpers/variableValue.native.cjs +46 -23
  99. package/dist/cjs/helpers/variableValue.native.js +46 -23
  100. package/dist/cjs/helpers/variableValue.native.js.map +1 -1
  101. package/dist/cjs/helpers/warnOnce.cjs +5 -4
  102. package/dist/cjs/helpers/warnOnce.native.cjs +6 -4
  103. package/dist/cjs/helpers/warnOnce.native.js +6 -4
  104. package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
  105. package/dist/cjs/hooks/useAnimationDriver.cjs +2 -2
  106. package/dist/cjs/hooks/useAnimationDriver.native.cjs +2 -2
  107. package/dist/cjs/hooks/useAnimationDriver.native.js +2 -2
  108. package/dist/cjs/hooks/useAnimationDriver.native.js.map +1 -1
  109. package/dist/cjs/hooks/useComponentState.cjs +41 -82
  110. package/dist/cjs/hooks/useComponentState.native.cjs +45 -84
  111. package/dist/cjs/hooks/useComponentState.native.js +45 -84
  112. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  113. package/dist/cjs/hooks/useMedia.cjs +2 -2
  114. package/dist/cjs/hooks/useMedia.native.cjs +2 -2
  115. package/dist/cjs/hooks/useMedia.native.js +2 -2
  116. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  117. package/dist/cjs/{helpers/directStyleCSS.native.js → hooks/useStyle.cjs} +16 -8
  118. package/dist/cjs/{helpers/directStyleCSS.native.cjs → hooks/useStyle.native.cjs} +16 -4
  119. package/dist/cjs/hooks/useStyle.native.js +34 -0
  120. package/dist/cjs/hooks/useStyle.native.js.map +1 -0
  121. package/dist/cjs/hooks/useThemeState.cjs +25 -90
  122. package/dist/cjs/hooks/useThemeState.native.cjs +34 -94
  123. package/dist/cjs/hooks/useThemeState.native.js +34 -94
  124. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  125. package/dist/cjs/index.cjs +6 -3
  126. package/dist/cjs/index.native.cjs +6 -3
  127. package/dist/cjs/index.native.js +6 -3
  128. package/dist/cjs/index.native.js.map +1 -1
  129. package/dist/cjs/static-resolve.cjs +2 -2
  130. package/dist/cjs/static-resolve.native.cjs +2 -2
  131. package/dist/cjs/static-resolve.native.js +2 -2
  132. package/dist/cjs/static-resolve.native.js.map +1 -1
  133. package/dist/cjs/style.cjs +91 -0
  134. package/dist/cjs/style.native.cjs +98 -0
  135. package/dist/cjs/style.native.js +100 -0
  136. package/dist/cjs/style.native.js.map +1 -0
  137. package/dist/cjs/styled.cjs +11 -6
  138. package/dist/cjs/styled.native.cjs +11 -6
  139. package/dist/cjs/styled.native.js +11 -6
  140. package/dist/cjs/styled.native.js.map +1 -1
  141. package/dist/cjs/types.cjs +6 -4
  142. package/dist/cjs/types.native.cjs +6 -4
  143. package/dist/cjs/types.native.js +6 -4
  144. package/dist/cjs/types.native.js.map +1 -1
  145. package/dist/cjs/views/TamaguiProvider.cjs +1 -2
  146. package/dist/cjs/views/TamaguiProvider.native.cjs +1 -2
  147. package/dist/cjs/views/TamaguiProvider.native.js +1 -2
  148. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  149. package/dist/cjs/views/Text.cjs +17 -12
  150. package/dist/cjs/views/Text.native.cjs +1 -0
  151. package/dist/cjs/views/Text.native.js +1 -0
  152. package/dist/cjs/views/Text.native.js.map +1 -1
  153. package/dist/cjs/views/Theme.cjs +3 -3
  154. package/dist/cjs/views/Theme.native.cjs +3 -3
  155. package/dist/cjs/views/Theme.native.js +3 -3
  156. package/dist/cjs/views/Theme.native.js.map +1 -1
  157. package/dist/cjs/views/ThemeDebug.cjs +1 -4
  158. package/dist/esm/createComponent.mjs +12 -1
  159. package/dist/esm/createComponent.mjs.map +1 -1
  160. package/dist/esm/createComponent.native.js +12 -1
  161. package/dist/esm/createComponent.native.js.map +1 -1
  162. package/dist/esm/createStyledHOC.mjs +1 -1
  163. package/dist/esm/createStyledHOC.mjs.map +1 -1
  164. package/dist/esm/createStyledHOC.native.js +1 -1
  165. package/dist/esm/createStyledHOC.native.js.map +1 -1
  166. package/dist/esm/createVariable.mjs +1 -9
  167. package/dist/esm/createVariable.mjs.map +1 -1
  168. package/dist/esm/createVariable.native.js +1 -9
  169. package/dist/esm/createVariable.native.js.map +1 -1
  170. package/dist/esm/helpers/borderComponents.mjs +37 -0
  171. package/dist/esm/helpers/borderComponents.mjs.map +1 -0
  172. package/dist/esm/helpers/borderComponents.native.js +55 -0
  173. package/dist/esm/helpers/borderComponents.native.js.map +1 -0
  174. package/dist/esm/helpers/createDesignSystem.mjs +0 -2
  175. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  176. package/dist/esm/helpers/createStyledContext.mjs +10 -18
  177. package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
  178. package/dist/esm/helpers/createStyledContext.native.js +14 -18
  179. package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
  180. package/dist/esm/helpers/formatDiagnostic.mjs +6 -6
  181. package/dist/esm/helpers/formatDiagnostic.mjs.map +1 -1
  182. package/dist/esm/helpers/formatDiagnostic.native.js +6 -6
  183. package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
  184. package/dist/esm/helpers/getCSSStylesAtomic.mjs +126 -109
  185. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
  186. package/dist/esm/helpers/getCSSStylesAtomic.native.js +7 -4
  187. package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -1
  188. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs +8 -1
  189. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs.map +1 -1
  190. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js +10 -1
  191. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  192. package/dist/esm/helpers/getDynamicVal.mjs +5 -1
  193. package/dist/esm/helpers/getDynamicVal.mjs.map +1 -1
  194. package/dist/esm/helpers/getDynamicVal.native.js +5 -1
  195. package/dist/esm/helpers/getDynamicVal.native.js.map +1 -1
  196. package/dist/esm/helpers/getSplitStyles.mjs +1034 -1705
  197. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  198. package/dist/esm/helpers/getSplitStyles.native.js +1071 -1871
  199. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  200. package/dist/esm/helpers/grammarConfig.mjs +164 -2
  201. package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
  202. package/dist/esm/helpers/grammarConfig.native.js +187 -2
  203. package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
  204. package/dist/esm/helpers/insertStyleRule.mjs +5 -2
  205. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
  206. package/dist/esm/helpers/insertStyleRule.native.js +7 -2
  207. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
  208. package/dist/esm/helpers/log.mjs +9 -8
  209. package/dist/esm/helpers/log.mjs.map +1 -1
  210. package/dist/esm/helpers/log.native.js +9 -8
  211. package/dist/esm/helpers/log.native.js.map +1 -1
  212. package/dist/esm/helpers/mergeVariants.mjs +44 -13
  213. package/dist/esm/helpers/mergeVariants.mjs.map +1 -1
  214. package/dist/esm/helpers/mergeVariants.native.js +79 -14
  215. package/dist/esm/helpers/mergeVariants.native.js.map +1 -1
  216. package/dist/esm/helpers/nativeOnlyProps.mjs +0 -1
  217. package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -1
  218. package/dist/esm/helpers/nativeOnlyProps.native.js +0 -1
  219. package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -1
  220. package/dist/esm/helpers/nativeStyleEngine.mjs +34 -15
  221. package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
  222. package/dist/esm/helpers/nativeStyleEngine.native.js +36 -15
  223. package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
  224. package/dist/esm/helpers/normalizeValueWithProperty.mjs +7 -8
  225. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
  226. package/dist/esm/helpers/normalizeValueWithProperty.native.js +9 -8
  227. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
  228. package/dist/esm/helpers/parseBorderShorthand.native.js +23 -56
  229. package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -1
  230. package/dist/esm/helpers/parseOutlineShorthand.native.js +10 -49
  231. package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -1
  232. package/dist/esm/helpers/resolveSafeArea.mjs +35 -97
  233. package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -1
  234. package/dist/esm/helpers/resolveVariantStyle.mjs +38 -0
  235. package/dist/esm/helpers/resolveVariantStyle.mjs.map +1 -0
  236. package/dist/esm/helpers/resolveVariantStyle.native.js +46 -0
  237. package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -0
  238. package/dist/esm/helpers/styleStaticConfig.mjs +1 -50
  239. package/dist/esm/helpers/styleStaticConfig.mjs.map +1 -1
  240. package/dist/esm/helpers/styleStaticConfig.native.js +1 -51
  241. package/dist/esm/helpers/styleStaticConfig.native.js.map +1 -1
  242. package/dist/esm/helpers/styleStaticConfigCore.mjs +88 -0
  243. package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -0
  244. package/dist/esm/helpers/styleStaticConfigCore.native.js +106 -0
  245. package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -0
  246. package/dist/esm/helpers/styledDynamic.mjs +136 -0
  247. package/dist/esm/helpers/styledDynamic.mjs.map +1 -0
  248. package/dist/esm/helpers/styledDynamic.native.js +169 -0
  249. package/dist/esm/helpers/styledDynamic.native.js.map +1 -0
  250. package/dist/esm/helpers/tokenCategories.mjs +15 -36
  251. package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
  252. package/dist/esm/helpers/tokenCategories.native.js +15 -38
  253. package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
  254. package/dist/esm/helpers/variableValue.mjs +17 -12
  255. package/dist/esm/helpers/variableValue.mjs.map +1 -1
  256. package/dist/esm/helpers/variableValue.native.js +46 -23
  257. package/dist/esm/helpers/variableValue.native.js.map +1 -1
  258. package/dist/esm/helpers/warnOnce.mjs +5 -4
  259. package/dist/esm/helpers/warnOnce.mjs.map +1 -1
  260. package/dist/esm/helpers/warnOnce.native.js +6 -4
  261. package/dist/esm/helpers/warnOnce.native.js.map +1 -1
  262. package/dist/esm/hooks/useAnimationDriver.mjs +2 -2
  263. package/dist/esm/hooks/useAnimationDriver.mjs.map +1 -1
  264. package/dist/esm/hooks/useAnimationDriver.native.js +2 -2
  265. package/dist/esm/hooks/useAnimationDriver.native.js.map +1 -1
  266. package/dist/esm/hooks/useComponentState.mjs +41 -82
  267. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  268. package/dist/esm/hooks/useComponentState.native.js +45 -84
  269. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  270. package/dist/esm/hooks/useMedia.mjs +2 -2
  271. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  272. package/dist/esm/hooks/useMedia.native.js +2 -2
  273. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  274. package/dist/esm/hooks/useStyle.mjs +11 -0
  275. package/dist/esm/hooks/useStyle.mjs.map +1 -0
  276. package/dist/esm/hooks/useStyle.native.js +11 -0
  277. package/dist/esm/hooks/useStyle.native.js.map +1 -0
  278. package/dist/esm/hooks/useThemeState.mjs +25 -90
  279. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  280. package/dist/esm/hooks/useThemeState.native.js +34 -94
  281. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  282. package/dist/esm/index.js +6 -4
  283. package/dist/esm/index.mjs +6 -4
  284. package/dist/esm/index.native.js +6 -4
  285. package/dist/esm/static-resolve.mjs +3 -3
  286. package/dist/esm/static-resolve.mjs.map +1 -1
  287. package/dist/esm/static-resolve.native.js +3 -3
  288. package/dist/esm/static-resolve.native.js.map +1 -1
  289. package/dist/esm/style.mjs +58 -0
  290. package/dist/esm/style.mjs.map +1 -0
  291. package/dist/esm/style.native.js +63 -0
  292. package/dist/esm/style.native.js.map +1 -0
  293. package/dist/esm/styled.mjs +12 -6
  294. package/dist/esm/styled.mjs.map +1 -1
  295. package/dist/esm/styled.native.js +12 -6
  296. package/dist/esm/styled.native.js.map +1 -1
  297. package/dist/esm/types.mjs +3 -4
  298. package/dist/esm/types.mjs.map +1 -1
  299. package/dist/esm/types.native.js +3 -4
  300. package/dist/esm/types.native.js.map +1 -1
  301. package/dist/esm/views/TamaguiProvider.mjs +1 -2
  302. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  303. package/dist/esm/views/TamaguiProvider.native.js +1 -2
  304. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  305. package/dist/esm/views/Text.mjs +17 -12
  306. package/dist/esm/views/Text.mjs.map +1 -1
  307. package/dist/esm/views/Theme.mjs +3 -3
  308. package/dist/esm/views/Theme.mjs.map +1 -1
  309. package/dist/esm/views/Theme.native.js +3 -3
  310. package/dist/esm/views/Theme.native.js.map +1 -1
  311. package/dist/esm/views/ThemeDebug.mjs +1 -4
  312. package/dist/esm/views/ThemeDebug.mjs.map +1 -1
  313. package/package.json +15 -15
  314. package/src/createComponent.tsx +21 -1
  315. package/src/createStyledHOC.tsx +4 -2
  316. package/src/createVariable.ts +0 -10
  317. package/src/helpers/borderComponents.ts +62 -0
  318. package/src/helpers/createDesignSystem.ts +0 -2
  319. package/src/helpers/createStyledContext.tsx +15 -53
  320. package/src/helpers/formatDiagnostic.ts +9 -9
  321. package/src/helpers/getCSSStylesAtomic.native.ts +6 -3
  322. package/src/helpers/getCSSStylesAtomic.ts +192 -207
  323. package/src/helpers/getCSSStylesAtomicCompiled.ts +13 -1
  324. package/src/helpers/getDynamicVal.ts +4 -0
  325. package/src/helpers/getSplitStyles.tsx +2080 -3270
  326. package/src/helpers/grammarConfig.ts +218 -1
  327. package/src/helpers/insertStyleRule.tsx +4 -2
  328. package/src/helpers/log.ts +12 -11
  329. package/src/helpers/mergeVariants.ts +55 -18
  330. package/src/helpers/nativeOnlyProps.ts +0 -1
  331. package/src/helpers/nativeStyleEngine.ts +55 -14
  332. package/src/helpers/normalizeValueWithProperty.ts +10 -12
  333. package/src/helpers/parseBorderShorthand.native.ts +23 -45
  334. package/src/helpers/parseOutlineShorthand.native.ts +9 -40
  335. package/src/helpers/resolveSafeArea.ts +34 -101
  336. package/src/helpers/resolveVariantStyle.ts +77 -0
  337. package/src/helpers/styleFrontend.ts +8 -5
  338. package/src/helpers/styleStaticConfig.ts +5 -72
  339. package/src/helpers/styleStaticConfigCore.ts +110 -0
  340. package/src/helpers/styledDynamic.ts +191 -0
  341. package/src/helpers/tokenCategories.ts +40 -65
  342. package/src/helpers/variableValue.ts +20 -15
  343. package/src/helpers/warnOnce.ts +5 -4
  344. package/src/hooks/useAnimationDriver.ts +6 -2
  345. package/src/hooks/useComponentState.ts +55 -183
  346. package/src/hooks/useMedia.tsx +10 -8
  347. package/src/hooks/useStyle.ts +10 -0
  348. package/src/hooks/useThemeState.ts +51 -264
  349. package/src/index.ts +6 -6
  350. package/src/internalRuntimeTypes.ts +1 -0
  351. package/src/static-resolve.ts +7 -4
  352. package/src/style.ts +97 -0
  353. package/src/styled.tsx +39 -68
  354. package/src/types.tsx +105 -169
  355. package/src/views/TamaguiProvider.tsx +0 -2
  356. package/src/views/Text.tsx +20 -14
  357. package/src/views/Theme.tsx +13 -9
  358. package/src/views/ThemeDebug.tsx +0 -1
  359. package/types/createComponent.d.ts.map +1 -1
  360. package/types/createStyledHOC.d.ts +1 -1
  361. package/types/createStyledHOC.d.ts.map +1 -1
  362. package/types/createVariable.d.ts +0 -2
  363. package/types/createVariable.d.ts.map +1 -1
  364. package/types/helpers/borderComponents.d.ts +10 -0
  365. package/types/helpers/borderComponents.d.ts.map +1 -0
  366. package/types/helpers/createDesignSystem.d.ts.map +1 -1
  367. package/types/helpers/createStyledContext.d.ts.map +1 -1
  368. package/types/helpers/getCSSStylesAtomic.d.ts +20 -19
  369. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
  370. package/types/helpers/getCSSStylesAtomic.native.d.ts +5 -0
  371. package/types/helpers/getCSSStylesAtomic.native.d.ts.map +1 -1
  372. package/types/helpers/getCSSStylesAtomicCompiled.d.ts +6 -1
  373. package/types/helpers/getCSSStylesAtomicCompiled.d.ts.map +1 -1
  374. package/types/helpers/getDynamicVal.d.ts.map +1 -1
  375. package/types/helpers/getSplitStyles.d.ts +3 -5
  376. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  377. package/types/helpers/grammarConfig.d.ts +25 -2
  378. package/types/helpers/grammarConfig.d.ts.map +1 -1
  379. package/types/helpers/insertStyleRule.d.ts +1 -0
  380. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  381. package/types/helpers/log.d.ts.map +1 -1
  382. package/types/helpers/mergeVariants.d.ts.map +1 -1
  383. package/types/helpers/nativeOnlyProps.d.ts +0 -1
  384. package/types/helpers/nativeOnlyProps.d.ts.map +1 -1
  385. package/types/helpers/nativeStyleEngine.d.ts +6 -0
  386. package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
  387. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
  388. package/types/helpers/parseBorderShorthand.native.d.ts +1 -0
  389. package/types/helpers/parseBorderShorthand.native.d.ts.map +1 -1
  390. package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -1
  391. package/types/helpers/resolveSafeArea.d.ts +0 -1
  392. package/types/helpers/resolveSafeArea.d.ts.map +1 -1
  393. package/types/helpers/resolveVariantStyle.d.ts +3 -0
  394. package/types/helpers/resolveVariantStyle.d.ts.map +1 -0
  395. package/types/helpers/styleFrontend.d.ts +3 -5
  396. package/types/helpers/styleFrontend.d.ts.map +1 -1
  397. package/types/helpers/styleStaticConfig.d.ts +4 -9
  398. package/types/helpers/styleStaticConfig.d.ts.map +1 -1
  399. package/types/helpers/styleStaticConfigCore.d.ts +4 -0
  400. package/types/helpers/styleStaticConfigCore.d.ts.map +1 -0
  401. package/types/helpers/styledDynamic.d.ts +18 -0
  402. package/types/helpers/styledDynamic.d.ts.map +1 -0
  403. package/types/helpers/tokenCategories.d.ts +0 -1
  404. package/types/helpers/tokenCategories.d.ts.map +1 -1
  405. package/types/helpers/variableValue.d.ts.map +1 -1
  406. package/types/helpers/warnOnce.d.ts.map +1 -1
  407. package/types/helpers/webPropsToSkip.native.d.ts +68 -68
  408. package/types/hooks/useAnimationDriver.d.ts.map +1 -1
  409. package/types/hooks/useComponentState.d.ts.map +1 -1
  410. package/types/hooks/useMedia.d.ts.map +1 -1
  411. package/types/hooks/useStyle.d.ts +4 -0
  412. package/types/hooks/useStyle.d.ts.map +1 -0
  413. package/types/hooks/useThemeState.d.ts +1 -11
  414. package/types/hooks/useThemeState.d.ts.map +1 -1
  415. package/types/index.d.ts +6 -4
  416. package/types/index.d.ts.map +1 -1
  417. package/types/internalRuntimeTypes.d.ts +1 -1
  418. package/types/internalRuntimeTypes.d.ts.map +1 -1
  419. package/types/static-resolve.d.ts.map +1 -1
  420. package/types/style.d.ts +18 -0
  421. package/types/style.d.ts.map +1 -0
  422. package/types/styled.d.ts +10 -10
  423. package/types/styled.d.ts.map +1 -1
  424. package/types/types.d.ts +74 -49
  425. package/types/types.d.ts.map +1 -1
  426. package/types/views/TamaguiProvider.d.ts +1 -1
  427. package/types/views/TamaguiProvider.d.ts.map +1 -1
  428. package/types/views/Text.d.ts.map +1 -1
  429. package/types/views/Theme.d.ts.map +1 -1
  430. package/types/views/ThemeDebug.d.ts.map +1 -1
  431. package/dist/cjs/helpers/directStyleCSS.cjs +0 -345
  432. package/dist/cjs/helpers/directStyleCSS.native.js.map +0 -1
  433. package/dist/cjs/helpers/directStyleCSSCompiled.cjs +0 -40
  434. package/dist/cjs/helpers/directStyleCSSCompiled.native.cjs +0 -46
  435. package/dist/cjs/helpers/directStyleCSSCompiled.native.js +0 -48
  436. package/dist/cjs/helpers/directStyleCSSCompiled.native.js.map +0 -1
  437. package/dist/cjs/helpers/getVariantExtras.cjs +0 -91
  438. package/dist/cjs/helpers/getVariantExtras.native.cjs +0 -94
  439. package/dist/cjs/helpers/getVariantExtras.native.js +0 -96
  440. package/dist/cjs/helpers/getVariantExtras.native.js.map +0 -1
  441. package/dist/cjs/helpers/variantResolvers.cjs +0 -87
  442. package/dist/cjs/helpers/variantResolvers.native.cjs +0 -140
  443. package/dist/cjs/helpers/variantResolvers.native.js +0 -142
  444. package/dist/cjs/helpers/variantResolvers.native.js.map +0 -1
  445. package/dist/esm/helpers/directStyleCSS.mjs +0 -317
  446. package/dist/esm/helpers/directStyleCSS.mjs.map +0 -1
  447. package/dist/esm/helpers/directStyleCSS.native.js +0 -1
  448. package/dist/esm/helpers/directStyleCSSCompiled.mjs +0 -11
  449. package/dist/esm/helpers/directStyleCSSCompiled.mjs.map +0 -1
  450. package/dist/esm/helpers/directStyleCSSCompiled.native.js +0 -15
  451. package/dist/esm/helpers/directStyleCSSCompiled.native.js.map +0 -1
  452. package/dist/esm/helpers/getVariantExtras.mjs +0 -69
  453. package/dist/esm/helpers/getVariantExtras.mjs.map +0 -1
  454. package/dist/esm/helpers/getVariantExtras.native.js +0 -70
  455. package/dist/esm/helpers/getVariantExtras.native.js.map +0 -1
  456. package/dist/esm/helpers/variantResolvers.mjs +0 -65
  457. package/dist/esm/helpers/variantResolvers.mjs.map +0 -1
  458. package/dist/esm/helpers/variantResolvers.native.js +0 -116
  459. package/dist/esm/helpers/variantResolvers.native.js.map +0 -1
  460. package/src/helpers/directStyleCSS.native.ts +0 -1
  461. package/src/helpers/directStyleCSS.ts +0 -513
  462. package/src/helpers/directStyleCSSCompiled.ts +0 -32
  463. package/src/helpers/getVariantExtras.tsx +0 -95
  464. package/src/helpers/variantResolvers.ts +0 -121
  465. package/types/helpers/directStyleCSS.d.ts +0 -28
  466. package/types/helpers/directStyleCSS.d.ts.map +0 -1
  467. package/types/helpers/directStyleCSS.native.d.ts +0 -2
  468. package/types/helpers/directStyleCSS.native.d.ts.map +0 -1
  469. package/types/helpers/directStyleCSSCompiled.d.ts +0 -10
  470. package/types/helpers/directStyleCSSCompiled.d.ts.map +0 -1
  471. package/types/helpers/getVariantExtras.d.ts +0 -4
  472. package/types/helpers/getVariantExtras.d.ts.map +0 -1
  473. package/types/helpers/variantResolvers.d.ts +0 -9
  474. package/types/helpers/variantResolvers.d.ts.map +0 -1
@@ -3,15 +3,9 @@ import { mergeIfNotShallowEqual } from '@tamagui/is-equal-shallow'
3
3
  import { useDidFinishSSR, useIsClientOnly } from '@tamagui/use-did-finish-ssr'
4
4
  import { useRef, useState } from 'react'
5
5
  import { getSetting } from '../config'
6
- import { formatDiagnostic } from '../helpers/formatDiagnostic'
7
6
  import { isOptimizedForFirstRender } from './isOptimizedForFirstRender'
8
- import {
9
- defaultComponentState,
10
- defaultComponentStateMounted,
11
- defaultComponentStateShouldEnter,
12
- } from '../defaultComponentState'
7
+ import { defaultComponentStateMounted } from '../defaultComponentState'
13
8
  import { isObj } from '../helpers/isObj'
14
- import { log } from '../helpers/log'
15
9
  import type {
16
10
  ComponentContextI,
17
11
  StaticConfig,
@@ -41,18 +35,14 @@ export const useComponentState = (
41
35
  const { isHOC } = staticConfig
42
36
 
43
37
  const stateRef = useRef<TamaguiComponentStateRef>(
44
- // performance: avoid creating object every render
45
38
  undefined as unknown as TamaguiComponentStateRef
46
39
  )
47
40
 
48
- if (!stateRef.current) {
49
- stateRef.current = {
50
- startedUnhydrated: needsHydration && !isHydrated,
51
- optimizeForFirstRender: isOptimizedForFirstRender(),
52
- }
53
- }
41
+ const curStateRef = (stateRef.current ||= {
42
+ startedUnhydrated: needsHydration && !isHydrated,
43
+ optimizeForFirstRender: isOptimizedForFirstRender(),
44
+ })
54
45
 
55
- // after we get states mount we need to turn off isAnimated for server side
56
46
  const hasAnimationProp = Boolean(
57
47
  (!isHOC && 'transition' in props) ||
58
48
  (props.style && hasAnimatedStyleValue(props.style))
@@ -60,18 +50,11 @@ export const useComponentState = (
60
50
 
61
51
  const inputStyle = animationDriver?.inputStyle ?? 'css'
62
52
  const outputStyle = animationDriver?.outputStyle ?? 'css'
63
- const curStateRef = stateRef.current
64
53
 
65
54
  if (!needsHydration && hasAnimationProp) {
66
55
  curStateRef.hasAnimated = true
67
56
  }
68
57
 
69
- // A renderer platform driver with native pseudo states (react-native-gpui)
70
- // makes any component with interaction clauses ride the animation-driver
71
- // emitter path — no per-site transition/animation prop required. the flip is
72
- // driver-sourced (hover) or event-sourced (press/focus) but either way applies
73
- // through the emitter with zero React commits; with no transition declared it
74
- // resolves instant (see createComponent's effectiveTransition default).
75
58
  const platformPseudoPossible = Boolean(
76
59
  !isHOC &&
77
60
  useAnimations &&
@@ -79,45 +62,29 @@ export const useComponentState = (
79
62
  getPlatformDriver()?.pseudo
80
63
  )
81
64
 
82
- let willBeAnimatedClient = (() => {
83
- const next = !!(
84
- (hasAnimationProp || platformPseudoPossible) &&
85
- !isHOC &&
86
- useAnimations
87
- )
88
- return Boolean(next || curStateRef.hasAnimated)
89
- })()
65
+ const willBeAnimatedClient = Boolean(
66
+ ((hasAnimationProp || platformPseudoPossible) && !isHOC && useAnimations) ||
67
+ curStateRef.hasAnimated
68
+ )
90
69
 
91
- let willBeAnimated = !isServer && willBeAnimatedClient
70
+ const willBeAnimated = !isServer && willBeAnimatedClient
92
71
 
93
- // once animated, always animated to preserve hooks / vdom structure
94
72
  if (willBeAnimated && hasAnimationProp && !curStateRef.hasAnimated) {
95
73
  curStateRef.hasAnimated = true
96
74
  }
97
75
 
98
76
  const { disableClassName } = props
99
77
 
100
- // HOOK
101
- // the registration decision must be current BEFORE this render commits: a
102
- // presence parent with zero registered consumers completes an exit
103
- // instantly, so an animated frame that only registers after a later
104
- // finalize pass never animates out. Everything the decision needs for the
105
- // transition-prop case is pre-pass knowledge; finalizeStyleFlags can only
106
- // widen it (pass-discovered platform pseudo), and a passThrough render
107
- // keeps the widened value.
108
- if (willBeAnimated && !isHOC && props['animatePresence'] !== false) {
78
+ const animatePresenceOptIn =
79
+ willBeAnimated && !isHOC && props['animatePresence'] !== false
80
+ if (animatePresenceOptIn) {
109
81
  curStateRef.shouldRegisterPresence = true
110
82
  } else {
111
83
  curStateRef.shouldRegisterPresence ??= false
112
84
  }
85
+
113
86
  const presenceResult = animationDriver?.usePresence?.(curStateRef) || null
114
- // the hook call position is fixed, but the OBSERVED presence keeps the old
115
- // conditional-call semantics: a frame that opted out (animatePresence false,
116
- // HOC, not animated) must not see presence state — downstream that state
117
- // wraps children in ResetPresence, which would null the context for the
118
- // frame that actually animates the exit
119
- const presence =
120
- !isHOC && willBeAnimated && props['animatePresence'] !== false ? presenceResult : null
87
+ const presence = animatePresenceOptIn ? presenceResult : null
121
88
 
122
89
  const presenceState = presence?.[2]
123
90
  const isExiting = presenceState?.isPresent === false
@@ -126,37 +93,20 @@ export const useComponentState = (
126
93
  const hasAnimationThatNeedsHydrate =
127
94
  hasAnimationProp && !isHydrated && inputStyle !== 'css'
128
95
 
129
- // two stage enter: because we switch from css driver to spring driver
130
- // - first render: render to match server with css driver
131
- // - second render: state.unmounted = should-enter, still rendering the initial,
132
- // non-entered state but now with the spring animation driver
133
-
134
- // the sole style pass decides whether an enter clause exists. A fresh first
135
- // frame stays provisionally unmounted until that pass reports its flags —
136
- // except an HOC, which never enters (shouldEnter is !isHOC && ...), so its
137
- // pass must not resolve enter clauses as active on the first frame
138
- const initialState = { ...defaultComponentStateMounted }
139
-
140
- // will be nice to deprecate half of these:
141
96
  const disabled = isDisabled(props)
142
97
 
143
- if (disabled != null) {
144
- initialState.disabled = disabled
145
- }
146
-
147
- // HOOK
148
- const states = useState<TamaguiComponentState>(initialState)
98
+ const [componentState, reactSetState] = useState<TamaguiComponentState>(() =>
99
+ disabled != null
100
+ ? { ...defaultComponentStateMounted, disabled }
101
+ : defaultComponentStateMounted
102
+ )
149
103
 
150
- // React owns a mounted state from the start. The first style pass gets a
151
- // render-local provisional `unmounted` value so it can discover enter
152
- // clauses without mutating React state during render. Only a real enter
153
- // frame is carried in the ref until the first state update consumes it.
154
104
  const initialStyleFrameUnmounted = curStateRef.initialStyleFrameUnmounted
155
105
  let state =
156
106
  (!curStateRef.didFinalizeInitialStyleFrame && !isHOC) ||
157
107
  initialStyleFrameUnmounted !== undefined
158
- ? { ...states[0] }
159
- : states[0]
108
+ ? { ...componentState }
109
+ : componentState
160
110
  if (!curStateRef.didFinalizeInitialStyleFrame && !isHOC) {
161
111
  state.unmounted = true
162
112
  }
@@ -164,43 +114,31 @@ export const useComponentState = (
164
114
  state.unmounted = initialStyleFrameUnmounted
165
115
  }
166
116
  if (props.forceStyle) {
167
- if (state === states[0]) state = { ...state }
117
+ if (state === componentState) state = { ...state }
168
118
  state[props.forceStyle] = true
169
119
  }
170
- if (!curStateRef.setState) {
171
- const reactSetState = states[1]
172
- curStateRef.setState = (stateOrGetState) => {
173
- const pendingUnmounted = curStateRef.initialStyleFrameUnmounted
174
- curStateRef.initialStyleFrameUnmounted = undefined
175
- reactSetState((previous) => {
176
- const current =
177
- pendingUnmounted !== undefined && previous.unmounted !== pendingUnmounted
178
- ? { ...previous, unmounted: pendingUnmounted }
179
- : previous
180
- return typeof stateOrGetState === 'function'
181
- ? stateOrGetState(current)
182
- : stateOrGetState
183
- })
184
- }
185
- }
186
- const setState = curStateRef.setState
187
120
 
188
- // apply states we never updated from avoiding re-renders in animation driver
189
- // unsafe yea yea
190
- // if (stateRef.current.nextComponentState) {
191
- // Object.assign(state, stateRef.current.nextComponentState)
192
- // }
121
+ const setState = (curStateRef.setState ||= (stateOrGetState) => {
122
+ const pendingUnmounted = curStateRef.initialStyleFrameUnmounted
123
+ curStateRef.initialStyleFrameUnmounted = undefined
124
+ reactSetState((previous) => {
125
+ const current =
126
+ pendingUnmounted !== undefined && previous.unmounted !== pendingUnmounted
127
+ ? { ...previous, unmounted: pendingUnmounted }
128
+ : previous
129
+ return typeof stateOrGetState === 'function'
130
+ ? stateOrGetState(current)
131
+ : stateOrGetState
132
+ })
133
+ })
193
134
 
194
- // only web server + initial client render run this when not hydrated:
195
135
  let isAnimated = willBeAnimated
196
- if (isWeb && hasAnimationThatNeedsHydrate && !staticConfig.isHOC && !isHydrated) {
136
+ if (isWeb && hasAnimationThatNeedsHydrate && !isHOC && !isHydrated) {
197
137
  isAnimated = false
198
138
  curStateRef.willHydrate = true
199
139
  }
200
140
 
201
- // immediately update disabled state and reset component state
202
141
  if (disabled !== state.disabled) {
203
- // if disabled remove all press/focus/hover states
204
142
  if (disabled) {
205
143
  Object.assign(state, defaultComponentStateMounted)
206
144
  }
@@ -210,107 +148,41 @@ export const useComponentState = (
210
148
 
211
149
  const groupName = props.group as any as string | undefined
212
150
 
213
- // hoisted shallow-set closure: created once per component instance and
214
- // reused every render. drops the useCallback hook that useCreateShallowSetState
215
- // would otherwise add. setState from useState is stable per instance so we
216
- // can safely capture it. debug is read off stateRef at call time.
217
- //
218
- // important: this lives on `baseSetStateShallow`, not `setStateShallow`.
219
- // createComponent's avoidReRenders path overwrites `stateRef.current.setStateShallow`
220
- // with an emitter wrapper and captures this base as its real-re-render escape hatch.
221
- // if the base shared the `setStateShallow` field, on the 2nd+ render this hook would
222
- // read back the wrapper, the wrapper's escape hatch would point at itself, and a real
223
- // re-render (e.g. unmounted 'should-enter' -> false) would never reach React, leaving
224
- // enter animations stuck at opacity 0.
225
- if (!stateRef.current.baseSetStateShallow) {
226
- const r = stateRef.current
227
- r.baseSetStateShallow = (stateOrGetState: any) => {
228
- setState((prev: any) => {
229
- const next =
230
- typeof stateOrGetState === 'function' ? stateOrGetState(prev) : stateOrGetState
231
- const update = mergeIfNotShallowEqual(prev, next)
232
- if (process.env.NODE_ENV === 'development') {
233
- const dbg = (r as any).__debug
234
- if (dbg && update !== prev) {
235
- console.groupCollapsed(`setStateShallow CHANGE`, '=>', update)
236
- console.info(`previously`, prev)
237
- console.trace()
238
- console.groupEnd()
239
- }
240
- }
241
- return update
242
- })
243
- }
244
- }
245
- if (process.env.NODE_ENV === 'development') {
246
- ;(stateRef.current as any).__debug = props.debug
247
- }
248
- const setStateShallow = stateRef.current.baseSetStateShallow!
249
- if (process.env.NODE_ENV === 'development' && globalThis.time)
250
- globalThis.time`state-useCreateShallowSetState`
251
-
252
- // merge AnimatePresence's `custom` onto a FRESH props object — never mutate the
253
- // caller's incoming props. with the ref-strip clone removed in createComponent, on
254
- // the no-defaults path that input IS React's own props object and must stay
255
- // immutable. the augmented copy is returned as `props` below.
151
+ const setStateShallow = (curStateRef.baseSetStateShallow ||= (stateOrGetState: any) => {
152
+ setState((prev: any) => {
153
+ const next =
154
+ typeof stateOrGetState === 'function' ? stateOrGetState(prev) : stateOrGetState
155
+ return mergeIfNotShallowEqual(prev, next)
156
+ })
157
+ })
158
+
256
159
  let outProps: typeof props = props
257
160
  if (presenceState && isAnimated && isHydrated && staticConfig.variants) {
258
- if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') {
259
- console.warn(
260
- formatDiagnostic(
261
- 'TAMAGUI_PRESENCE_STATE',
262
- staticConfig.Component?.displayName ||
263
- staticConfig.Component?.name ||
264
- 'TamaguiComponent',
265
- 'AnimatePresence supplied lifecycle state to an animated component',
266
- 'Remove debug="verbose" after inspecting the animation state',
267
- 'presenceState',
268
- presenceState
269
- )
270
- )
271
- }
272
161
  const { custom } = presenceState
273
162
  if (isObj(custom)) {
274
163
  outProps = { ...props, ...custom }
275
164
  }
276
165
  }
277
166
 
278
- let noClass = !isWeb || !!props.forceStyle
279
-
280
- if (!isHydrated) {
281
- noClass = false
282
- } else {
283
- // on server for SSR and animation compat added the && isHydrated but perhaps we want
284
- // disableClassName="until-hydrated" to be more straightforward
285
- // see issue if not, Button sets disableClassName to true <Button transition="" /> with
286
- // the react-native driver errors because it tries to animate var(--color) to rbga(..)
287
- // no matter what if fully unmounted or on the server we use className
288
- // only once we hydrate do we switch to spring animation drivers or disableClassName etc
289
- if (isWeb && isHydrated) {
290
- const isAnimatedAndHydrated =
291
- !!((hasAnimationProp || curStateRef.hasAnimated) && useAnimations && !isHOC) &&
292
- isHydrated
167
+ let noClass = !isWeb || Boolean(props.forceStyle)
293
168
 
169
+ if (isWeb) {
170
+ if (!isHydrated) {
171
+ noClass = false
172
+ } else {
173
+ const isAnimatedAndHydrated = Boolean(
174
+ (hasAnimationProp || curStateRef.hasAnimated) && useAnimations && !isHOC
175
+ )
294
176
  const isClassNameDisabled =
295
177
  !staticConfig.acceptsClassName && (getSetting('disableSSR') || !state.unmounted)
296
-
297
- const isDisabledManually = disableClassName && !state.unmounted
178
+ const isDisabledManually = Boolean(disableClassName && !state.unmounted)
298
179
 
299
180
  if (
300
- // Only disable className for animation drivers that output inline styles (not css)
301
181
  (isAnimatedAndHydrated && outputStyle !== 'css') ||
302
182
  isDisabledManually ||
303
183
  isClassNameDisabled
304
184
  ) {
305
185
  noClass = true
306
-
307
- if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') {
308
- log(`avoiding className`, {
309
- isAnimatedAndHydrated,
310
- isDisabledManually,
311
- isClassNameDisabled,
312
- })
313
- }
314
186
  }
315
187
  }
316
188
  }
@@ -369,7 +241,7 @@ export const useComponentState = (
369
241
  result.willBeAnimatedClient = nextWillBeAnimatedClient
370
242
  result.willBeAnimated = nextWillBeAnimated
371
243
  result.isAnimated =
372
- isWeb && hasAnimationThatNeedsHydrate && !staticConfig.isHOC && !isHydrated
244
+ isWeb && hasAnimationThatNeedsHydrate && !isHOC && !isHydrated
373
245
  ? false
374
246
  : nextWillBeAnimated
375
247
  if (nextWillBeAnimated && !isHOC && props['animatePresence'] !== false) {
@@ -75,14 +75,16 @@ export function setupMediaListeners() {
75
75
  const match = getMatch()
76
76
  if (!match) {
77
77
  throw new Error(
78
- formatDiagnostic(
79
- 'TAMAGUI_MEDIA_MATCH',
80
- 'useMedia',
81
- 'matchMedia returned no MediaQueryList',
82
- 'Provide a matchMedia implementation that returns a MediaQueryList',
83
- 'key,query,platform',
84
- { key, query: str, platform: isWeb ? 'web' : 'native' }
85
- )
78
+ process.env.NODE_ENV !== 'production'
79
+ ? formatDiagnostic(
80
+ 'TAMAGUI_MEDIA_MATCH',
81
+ 'useMedia',
82
+ 'matchMedia returned no MediaQueryList',
83
+ 'Provide a matchMedia implementation that returns a MediaQueryList',
84
+ 'key,query,platform',
85
+ { key, query: str, platform: isWeb ? 'web' : 'native' }
86
+ )
87
+ : '❌ Error 013'
86
88
  )
87
89
  }
88
90
 
@@ -0,0 +1,10 @@
1
+ import type { StylePiece, TextStyle } from '../types'
2
+ import { resolveStylePieceForTheme } from '../style'
3
+ import { useThemeWithState } from './useTheme'
4
+
5
+ /** Resolves a style piece to a native/inline style object for compatibility props. */
6
+ export function useStyle(piece?: StylePiece | null): TextStyle | undefined {
7
+ const [, themeState] = useThemeWithState({})
8
+ if (!piece) return
9
+ return resolveStylePieceForTheme(piece, themeState.theme, themeState.name)
10
+ }