@tamagui/core 1.0.1-beta.140 → 1.0.1-beta.141

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 (514) hide show
  1. package/dist/cjs/Tamagui.js +0 -0
  2. package/dist/cjs/Tamagui.js.map +0 -0
  3. package/dist/cjs/addTheme.js +0 -0
  4. package/dist/cjs/addTheme.js.map +0 -0
  5. package/dist/cjs/conf.js +0 -0
  6. package/dist/cjs/conf.js.map +0 -0
  7. package/dist/cjs/constants/constants.js +0 -0
  8. package/dist/cjs/constants/constants.js.map +0 -0
  9. package/dist/cjs/constants/platform.js +0 -0
  10. package/dist/cjs/constants/platform.js.map +0 -0
  11. package/dist/cjs/contexts/ButtonInsideButtonContext.js +0 -0
  12. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +0 -0
  13. package/dist/cjs/contexts/FontLanguageContext.js +0 -0
  14. package/dist/cjs/contexts/FontLanguageContext.js.map +0 -0
  15. package/dist/cjs/contexts/TextAncestorContext.js +0 -0
  16. package/dist/cjs/contexts/TextAncestorContext.js.map +0 -0
  17. package/dist/cjs/contexts/ThemeContext.js +0 -0
  18. package/dist/cjs/contexts/ThemeContext.js.map +0 -0
  19. package/dist/cjs/createComponent.js +6 -13
  20. package/dist/cjs/createComponent.js.map +2 -2
  21. package/dist/cjs/createFont.js +0 -0
  22. package/dist/cjs/createFont.js.map +0 -0
  23. package/dist/cjs/createShorthands.js +0 -0
  24. package/dist/cjs/createShorthands.js.map +0 -0
  25. package/dist/cjs/createTamagui.js +24 -27
  26. package/dist/cjs/createTamagui.js.map +2 -2
  27. package/dist/cjs/createTheme.js +0 -0
  28. package/dist/cjs/createTheme.js.map +0 -0
  29. package/dist/cjs/createTokens.js +0 -0
  30. package/dist/cjs/createTokens.js.map +0 -0
  31. package/dist/cjs/createVariable.js +18 -26
  32. package/dist/cjs/createVariable.js.map +2 -2
  33. package/dist/cjs/createVariables.js +0 -0
  34. package/dist/cjs/createVariables.js.map +0 -0
  35. package/dist/cjs/helpers/RNComponents.js +0 -0
  36. package/dist/cjs/helpers/RNComponents.js.map +0 -0
  37. package/dist/cjs/helpers/ThemeManager.js +0 -0
  38. package/dist/cjs/helpers/ThemeManager.js.map +0 -0
  39. package/dist/cjs/helpers/areEqualSets.js +0 -0
  40. package/dist/cjs/helpers/areEqualSets.js.map +0 -0
  41. package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -0
  42. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +0 -0
  43. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +0 -0
  44. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +0 -0
  45. package/dist/cjs/helpers/calc.js +0 -0
  46. package/dist/cjs/helpers/calc.js.map +0 -0
  47. package/dist/cjs/helpers/createMediaStyle.js +0 -0
  48. package/dist/cjs/helpers/createMediaStyle.js.map +0 -0
  49. package/dist/cjs/helpers/createPropMapper.js +0 -0
  50. package/dist/cjs/helpers/createPropMapper.js.map +0 -0
  51. package/dist/cjs/helpers/createShallowUpdate.js +0 -0
  52. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -0
  53. package/dist/cjs/helpers/cssHash.js +0 -0
  54. package/dist/cjs/helpers/cssHash.js.map +0 -0
  55. package/dist/cjs/helpers/expandStyle.js +0 -0
  56. package/dist/cjs/helpers/expandStyle.js.map +0 -0
  57. package/dist/cjs/helpers/expandStyles.js +0 -0
  58. package/dist/cjs/helpers/expandStyles.js.map +0 -0
  59. package/dist/cjs/helpers/extendStaticConfig.js +0 -0
  60. package/dist/cjs/helpers/extendStaticConfig.js.map +0 -0
  61. package/dist/cjs/helpers/fixNativeShadow.js +0 -0
  62. package/dist/cjs/helpers/fixNativeShadow.js.map +0 -0
  63. package/dist/cjs/helpers/getExpandedShorthands.js +0 -0
  64. package/dist/cjs/helpers/getExpandedShorthands.js.map +0 -0
  65. package/dist/cjs/helpers/getFont.js +0 -0
  66. package/dist/cjs/helpers/getFont.js.map +0 -0
  67. package/dist/cjs/helpers/getFontLanguage.js +0 -0
  68. package/dist/cjs/helpers/getFontLanguage.js.map +0 -0
  69. package/dist/cjs/helpers/getSize.js +0 -0
  70. package/dist/cjs/helpers/getSize.js.map +0 -0
  71. package/dist/cjs/helpers/getSplitStyles.js +0 -0
  72. package/dist/cjs/helpers/getSplitStyles.js.map +0 -0
  73. package/dist/cjs/helpers/getStackSize.js +0 -0
  74. package/dist/cjs/helpers/getStackSize.js.map +0 -0
  75. package/dist/cjs/helpers/getStylesAtomic.js +0 -0
  76. package/dist/cjs/helpers/getStylesAtomic.js.map +0 -0
  77. package/dist/cjs/helpers/getStylesAtomic.native.js +0 -0
  78. package/dist/cjs/helpers/getStylesAtomic.native.js.map +0 -0
  79. package/dist/cjs/helpers/getThemeCSSRules.js +0 -0
  80. package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -0
  81. package/dist/cjs/helpers/getThemeCSSRules.native.js +0 -0
  82. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +0 -0
  83. package/dist/cjs/helpers/getVariantExtras.js +0 -0
  84. package/dist/cjs/helpers/getVariantExtras.js.map +0 -0
  85. package/dist/cjs/helpers/insertStyleRule.js +0 -0
  86. package/dist/cjs/helpers/insertStyleRule.js.map +0 -0
  87. package/dist/cjs/helpers/isObj.js +0 -0
  88. package/dist/cjs/helpers/isObj.js.map +0 -0
  89. package/dist/cjs/helpers/isTamaguiComponent.js +0 -0
  90. package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -0
  91. package/dist/cjs/helpers/isTamaguiElement.js +0 -0
  92. package/dist/cjs/helpers/isTamaguiElement.js.map +0 -0
  93. package/dist/cjs/helpers/matchMedia.js +0 -0
  94. package/dist/cjs/helpers/matchMedia.js.map +0 -0
  95. package/dist/cjs/helpers/matchMedia.native.js +0 -0
  96. package/dist/cjs/helpers/matchMedia.native.js.map +0 -0
  97. package/dist/cjs/helpers/mergeProps.js +0 -0
  98. package/dist/cjs/helpers/mergeProps.js.map +0 -0
  99. package/dist/cjs/helpers/mergeTransform.js +0 -0
  100. package/dist/cjs/helpers/mergeTransform.js.map +0 -0
  101. package/dist/cjs/helpers/normalizeColor.js +0 -0
  102. package/dist/cjs/helpers/normalizeColor.js.map +0 -0
  103. package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -0
  104. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +0 -0
  105. package/dist/cjs/helpers/proxyThemeVariables.js +0 -0
  106. package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -0
  107. package/dist/cjs/helpers/pseudoDescriptors.js +0 -0
  108. package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -0
  109. package/dist/cjs/helpers/registerCSSVariable.js +0 -0
  110. package/dist/cjs/helpers/registerCSSVariable.js.map +2 -2
  111. package/dist/cjs/helpers/startTransition.js +0 -0
  112. package/dist/cjs/helpers/startTransition.js.map +0 -0
  113. package/dist/cjs/helpers/themeable.js +0 -0
  114. package/dist/cjs/helpers/themeable.js.map +0 -0
  115. package/dist/cjs/helpers/themes.js +0 -0
  116. package/dist/cjs/helpers/themes.js.map +0 -0
  117. package/dist/cjs/helpers/validate.js +0 -0
  118. package/dist/cjs/helpers/validate.js.map +0 -0
  119. package/dist/cjs/helpers/withStaticProperties.js +0 -0
  120. package/dist/cjs/helpers/withStaticProperties.js.map +0 -0
  121. package/dist/cjs/hooks/getThemeUnwrapped.js +0 -0
  122. package/dist/cjs/hooks/getThemeUnwrapped.js.map +0 -0
  123. package/dist/cjs/hooks/useConstant.js +3 -0
  124. package/dist/cjs/hooks/useConstant.js.map +2 -2
  125. package/dist/cjs/hooks/useFeatures.js +8 -0
  126. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  127. package/dist/cjs/hooks/useId.js +0 -0
  128. package/dist/cjs/hooks/useId.js.map +0 -0
  129. package/dist/cjs/hooks/useIsMounted.js +0 -0
  130. package/dist/cjs/hooks/useIsMounted.js.map +0 -0
  131. package/dist/cjs/hooks/useIsSSR.js +2 -2
  132. package/dist/cjs/hooks/useIsSSR.js.map +2 -2
  133. package/dist/cjs/hooks/useIsTouchDevice.js +0 -0
  134. package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -0
  135. package/dist/cjs/hooks/useMedia.js +0 -0
  136. package/dist/cjs/hooks/useMedia.js.map +0 -0
  137. package/dist/cjs/hooks/usePressable.js +0 -0
  138. package/dist/cjs/hooks/usePressable.js.map +0 -0
  139. package/dist/cjs/hooks/useSafeRef.js +0 -0
  140. package/dist/cjs/hooks/useSafeRef.js.map +0 -0
  141. package/dist/cjs/hooks/useTheme.js +1 -3
  142. package/dist/cjs/hooks/useTheme.js.map +2 -2
  143. package/dist/cjs/hooks/useUnmountEffect.js +0 -0
  144. package/dist/cjs/hooks/useUnmountEffect.js.map +0 -0
  145. package/dist/cjs/index.js +1 -0
  146. package/dist/cjs/index.js.map +2 -2
  147. package/dist/cjs/insertFont.js +0 -0
  148. package/dist/cjs/insertFont.js.map +1 -1
  149. package/dist/cjs/static.js +0 -0
  150. package/dist/cjs/static.js.map +0 -0
  151. package/dist/cjs/styled.js +0 -0
  152. package/dist/cjs/styled.js.map +0 -0
  153. package/dist/cjs/types-rnw.js +0 -0
  154. package/dist/cjs/types-rnw.js.map +0 -0
  155. package/dist/cjs/types.js +0 -0
  156. package/dist/cjs/types.js.map +1 -1
  157. package/dist/cjs/updateTheme.js +0 -0
  158. package/dist/cjs/updateTheme.js.map +0 -0
  159. package/dist/cjs/vendor/Pressability.js +0 -0
  160. package/dist/cjs/vendor/Pressability.js.map +0 -0
  161. package/dist/cjs/vendor/Pressability.native.js +0 -0
  162. package/dist/cjs/vendor/Pressability.native.js.map +0 -0
  163. package/dist/cjs/views/FontLanguage.js +0 -0
  164. package/dist/cjs/views/FontLanguage.js.map +0 -0
  165. package/dist/cjs/views/FontLanguage.native.js +0 -0
  166. package/dist/cjs/views/FontLanguage.native.js.map +0 -0
  167. package/dist/cjs/views/FontLanguage.types.js +0 -0
  168. package/dist/cjs/views/FontLanguage.types.js.map +0 -0
  169. package/dist/cjs/views/Slot.js +0 -0
  170. package/dist/cjs/views/Slot.js.map +0 -0
  171. package/dist/cjs/views/Stack.js +0 -0
  172. package/dist/cjs/views/Stack.js.map +0 -0
  173. package/dist/cjs/{helpers/createTamaguiProvider.js → views/TamaguiProvider.js} +36 -37
  174. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  175. package/dist/cjs/views/Text.js +0 -0
  176. package/dist/cjs/views/Text.js.map +0 -0
  177. package/dist/cjs/views/Theme.js +4 -3
  178. package/dist/cjs/views/Theme.js.map +2 -2
  179. package/dist/cjs/views/ThemeInverse.js +0 -0
  180. package/dist/cjs/views/ThemeInverse.js.map +0 -0
  181. package/dist/cjs/views/ThemeProvider.js +2 -2
  182. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  183. package/dist/cjs/views/ThemeReset.js +0 -0
  184. package/dist/cjs/views/ThemeReset.js.map +0 -0
  185. package/dist/esm/Tamagui.js +0 -0
  186. package/dist/esm/Tamagui.js.map +0 -0
  187. package/dist/esm/addTheme.js +0 -0
  188. package/dist/esm/addTheme.js.map +0 -0
  189. package/dist/esm/conf.js +0 -0
  190. package/dist/esm/conf.js.map +0 -0
  191. package/dist/esm/constants/constants.js +0 -0
  192. package/dist/esm/constants/constants.js.map +0 -0
  193. package/dist/esm/constants/platform.js +0 -0
  194. package/dist/esm/constants/platform.js.map +0 -0
  195. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  196. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +0 -0
  197. package/dist/esm/contexts/FontLanguageContext.js +0 -0
  198. package/dist/esm/contexts/FontLanguageContext.js.map +0 -0
  199. package/dist/esm/contexts/TextAncestorContext.js +0 -0
  200. package/dist/esm/contexts/TextAncestorContext.js.map +0 -0
  201. package/dist/esm/contexts/ThemeContext.js +0 -0
  202. package/dist/esm/contexts/ThemeContext.js.map +0 -0
  203. package/dist/esm/createComponent.js +7 -14
  204. package/dist/esm/createComponent.js.map +2 -2
  205. package/dist/esm/createFont.js +0 -0
  206. package/dist/esm/createFont.js.map +0 -0
  207. package/dist/esm/createShorthands.js +0 -0
  208. package/dist/esm/createShorthands.js.map +0 -0
  209. package/dist/esm/createTamagui.js +24 -27
  210. package/dist/esm/createTamagui.js.map +2 -2
  211. package/dist/esm/createTheme.js +0 -0
  212. package/dist/esm/createTheme.js.map +0 -0
  213. package/dist/esm/createTokens.js +0 -0
  214. package/dist/esm/createTokens.js.map +0 -0
  215. package/dist/esm/createVariable.js +16 -24
  216. package/dist/esm/createVariable.js.map +2 -2
  217. package/dist/esm/createVariables.js +0 -0
  218. package/dist/esm/createVariables.js.map +0 -0
  219. package/dist/esm/helpers/RNComponents.js +0 -0
  220. package/dist/esm/helpers/RNComponents.js.map +0 -0
  221. package/dist/esm/helpers/ThemeManager.js +0 -0
  222. package/dist/esm/helpers/ThemeManager.js.map +0 -0
  223. package/dist/esm/helpers/areEqualSets.js +0 -0
  224. package/dist/esm/helpers/areEqualSets.js.map +0 -0
  225. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -0
  226. package/dist/esm/helpers/assignNativePropsToWeb.js.map +0 -0
  227. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -0
  228. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +0 -0
  229. package/dist/esm/helpers/calc.js +0 -0
  230. package/dist/esm/helpers/calc.js.map +0 -0
  231. package/dist/esm/helpers/createMediaStyle.js +0 -0
  232. package/dist/esm/helpers/createMediaStyle.js.map +0 -0
  233. package/dist/esm/helpers/createPropMapper.js +0 -0
  234. package/dist/esm/helpers/createPropMapper.js.map +0 -0
  235. package/dist/esm/helpers/createShallowUpdate.js +0 -0
  236. package/dist/esm/helpers/createShallowUpdate.js.map +0 -0
  237. package/dist/esm/helpers/cssHash.js +0 -0
  238. package/dist/esm/helpers/cssHash.js.map +0 -0
  239. package/dist/esm/helpers/expandStyle.js +0 -0
  240. package/dist/esm/helpers/expandStyle.js.map +0 -0
  241. package/dist/esm/helpers/expandStyles.js +0 -0
  242. package/dist/esm/helpers/expandStyles.js.map +0 -0
  243. package/dist/esm/helpers/extendStaticConfig.js +0 -0
  244. package/dist/esm/helpers/extendStaticConfig.js.map +0 -0
  245. package/dist/esm/helpers/fixNativeShadow.js +0 -0
  246. package/dist/esm/helpers/fixNativeShadow.js.map +0 -0
  247. package/dist/esm/helpers/getExpandedShorthands.js +0 -0
  248. package/dist/esm/helpers/getExpandedShorthands.js.map +0 -0
  249. package/dist/esm/helpers/getFont.js +0 -0
  250. package/dist/esm/helpers/getFont.js.map +0 -0
  251. package/dist/esm/helpers/getFontLanguage.js +0 -0
  252. package/dist/esm/helpers/getFontLanguage.js.map +0 -0
  253. package/dist/esm/helpers/getSize.js +0 -0
  254. package/dist/esm/helpers/getSize.js.map +0 -0
  255. package/dist/esm/helpers/getSplitStyles.js +0 -0
  256. package/dist/esm/helpers/getSplitStyles.js.map +0 -0
  257. package/dist/esm/helpers/getStackSize.js +0 -0
  258. package/dist/esm/helpers/getStackSize.js.map +0 -0
  259. package/dist/esm/helpers/getStylesAtomic.js +0 -0
  260. package/dist/esm/helpers/getStylesAtomic.js.map +0 -0
  261. package/dist/esm/helpers/getStylesAtomic.native.js +0 -0
  262. package/dist/esm/helpers/getStylesAtomic.native.js.map +0 -0
  263. package/dist/esm/helpers/getThemeCSSRules.js +0 -0
  264. package/dist/esm/helpers/getThemeCSSRules.js.map +0 -0
  265. package/dist/esm/helpers/getThemeCSSRules.native.js +0 -0
  266. package/dist/esm/helpers/getThemeCSSRules.native.js.map +0 -0
  267. package/dist/esm/helpers/getVariantExtras.js +0 -0
  268. package/dist/esm/helpers/getVariantExtras.js.map +0 -0
  269. package/dist/esm/helpers/insertStyleRule.js +0 -0
  270. package/dist/esm/helpers/insertStyleRule.js.map +0 -0
  271. package/dist/esm/helpers/isObj.js +0 -0
  272. package/dist/esm/helpers/isObj.js.map +0 -0
  273. package/dist/esm/helpers/isTamaguiComponent.js +0 -0
  274. package/dist/esm/helpers/isTamaguiComponent.js.map +0 -0
  275. package/dist/esm/helpers/isTamaguiElement.js +0 -0
  276. package/dist/esm/helpers/isTamaguiElement.js.map +0 -0
  277. package/dist/esm/helpers/matchMedia.js +0 -0
  278. package/dist/esm/helpers/matchMedia.js.map +0 -0
  279. package/dist/esm/helpers/matchMedia.native.js +0 -0
  280. package/dist/esm/helpers/matchMedia.native.js.map +0 -0
  281. package/dist/esm/helpers/mergeProps.js +0 -0
  282. package/dist/esm/helpers/mergeProps.js.map +0 -0
  283. package/dist/esm/helpers/mergeTransform.js +0 -0
  284. package/dist/esm/helpers/mergeTransform.js.map +0 -0
  285. package/dist/esm/helpers/normalizeColor.js +0 -0
  286. package/dist/esm/helpers/normalizeColor.js.map +0 -0
  287. package/dist/esm/helpers/normalizeValueWithProperty.js +0 -0
  288. package/dist/esm/helpers/normalizeValueWithProperty.js.map +0 -0
  289. package/dist/esm/helpers/proxyThemeVariables.js +0 -0
  290. package/dist/esm/helpers/proxyThemeVariables.js.map +0 -0
  291. package/dist/esm/helpers/pseudoDescriptors.js +0 -0
  292. package/dist/esm/helpers/pseudoDescriptors.js.map +0 -0
  293. package/dist/esm/helpers/registerCSSVariable.js +0 -0
  294. package/dist/esm/helpers/registerCSSVariable.js.map +2 -2
  295. package/dist/esm/helpers/startTransition.js +0 -0
  296. package/dist/esm/helpers/startTransition.js.map +0 -0
  297. package/dist/esm/helpers/themeable.js +0 -0
  298. package/dist/esm/helpers/themeable.js.map +0 -0
  299. package/dist/esm/helpers/themes.js +0 -0
  300. package/dist/esm/helpers/themes.js.map +0 -0
  301. package/dist/esm/helpers/validate.js +0 -0
  302. package/dist/esm/helpers/validate.js.map +0 -0
  303. package/dist/esm/helpers/withStaticProperties.js +0 -0
  304. package/dist/esm/helpers/withStaticProperties.js.map +0 -0
  305. package/dist/esm/hooks/getThemeUnwrapped.js +0 -0
  306. package/dist/esm/hooks/getThemeUnwrapped.js.map +0 -0
  307. package/dist/esm/hooks/useConstant.js +4 -1
  308. package/dist/esm/hooks/useConstant.js.map +2 -2
  309. package/dist/esm/hooks/useFeatures.js +8 -0
  310. package/dist/esm/hooks/useFeatures.js.map +2 -2
  311. package/dist/esm/hooks/useId.js +0 -0
  312. package/dist/esm/hooks/useId.js.map +0 -0
  313. package/dist/esm/hooks/useIsMounted.js +0 -0
  314. package/dist/esm/hooks/useIsMounted.js.map +0 -0
  315. package/dist/esm/hooks/useIsSSR.js +4 -4
  316. package/dist/esm/hooks/useIsSSR.js.map +2 -2
  317. package/dist/esm/hooks/useIsTouchDevice.js +0 -0
  318. package/dist/esm/hooks/useIsTouchDevice.js.map +0 -0
  319. package/dist/esm/hooks/useMedia.js +0 -0
  320. package/dist/esm/hooks/useMedia.js.map +0 -0
  321. package/dist/esm/hooks/usePressable.js +0 -0
  322. package/dist/esm/hooks/usePressable.js.map +0 -0
  323. package/dist/esm/hooks/useSafeRef.js +0 -0
  324. package/dist/esm/hooks/useSafeRef.js.map +0 -0
  325. package/dist/esm/hooks/useTheme.js +2 -4
  326. package/dist/esm/hooks/useTheme.js.map +2 -2
  327. package/dist/esm/hooks/useUnmountEffect.js +0 -0
  328. package/dist/esm/hooks/useUnmountEffect.js.map +0 -0
  329. package/dist/esm/index.js +1 -0
  330. package/dist/esm/index.js.map +2 -2
  331. package/dist/esm/insertFont.js +0 -0
  332. package/dist/esm/insertFont.js.map +1 -1
  333. package/dist/esm/static.js +0 -0
  334. package/dist/esm/static.js.map +0 -0
  335. package/dist/esm/styled.js +0 -0
  336. package/dist/esm/styled.js.map +0 -0
  337. package/dist/esm/types-rnw.js +0 -0
  338. package/dist/esm/types-rnw.js.map +0 -0
  339. package/dist/esm/types.js +0 -0
  340. package/dist/esm/types.js.map +0 -0
  341. package/dist/esm/updateTheme.js +0 -0
  342. package/dist/esm/updateTheme.js.map +0 -0
  343. package/dist/esm/vendor/Pressability.js +0 -0
  344. package/dist/esm/vendor/Pressability.js.map +0 -0
  345. package/dist/esm/vendor/Pressability.native.js +0 -0
  346. package/dist/esm/vendor/Pressability.native.js.map +0 -0
  347. package/dist/esm/views/FontLanguage.js +0 -0
  348. package/dist/esm/views/FontLanguage.js.map +0 -0
  349. package/dist/esm/views/FontLanguage.native.js +0 -0
  350. package/dist/esm/views/FontLanguage.native.js.map +0 -0
  351. package/dist/esm/views/FontLanguage.types.js +0 -0
  352. package/dist/esm/views/FontLanguage.types.js.map +0 -0
  353. package/dist/esm/views/Slot.js +0 -0
  354. package/dist/esm/views/Slot.js.map +0 -0
  355. package/dist/esm/views/Stack.js +0 -0
  356. package/dist/esm/views/Stack.js.map +0 -0
  357. package/dist/esm/views/TamaguiProvider.js +41 -0
  358. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  359. package/dist/esm/views/Text.js +0 -0
  360. package/dist/esm/views/Text.js.map +0 -0
  361. package/dist/esm/views/Theme.js +4 -3
  362. package/dist/esm/views/Theme.js.map +2 -2
  363. package/dist/esm/views/ThemeInverse.js +0 -0
  364. package/dist/esm/views/ThemeInverse.js.map +0 -0
  365. package/dist/esm/views/ThemeProvider.js +2 -2
  366. package/dist/esm/views/ThemeProvider.js.map +2 -2
  367. package/dist/esm/views/ThemeReset.js +0 -0
  368. package/dist/esm/views/ThemeReset.js.map +0 -0
  369. package/package.json +9 -8
  370. package/src/Tamagui.ts +44 -0
  371. package/src/addTheme.ts +54 -0
  372. package/src/conf.ts +34 -0
  373. package/src/constants/constants.ts +15 -0
  374. package/src/constants/platform.ts +13 -0
  375. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  376. package/src/contexts/FontLanguageContext.tsx +5 -0
  377. package/src/contexts/TextAncestorContext.tsx +10 -0
  378. package/src/contexts/ThemeContext.tsx +5 -0
  379. package/src/createComponent.tsx +1322 -0
  380. package/src/createFont.ts +26 -0
  381. package/src/createShorthands.ts +5 -0
  382. package/src/createTamagui.ts +226 -0
  383. package/src/createTheme.ts +13 -0
  384. package/src/createTokens.ts +35 -0
  385. package/src/createVariable.ts +94 -0
  386. package/src/createVariables.ts +39 -0
  387. package/src/helpers/RNComponents.tsx +14 -0
  388. package/src/helpers/ThemeManager.tsx +226 -0
  389. package/src/helpers/areEqualSets.tsx +9 -0
  390. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  391. package/src/helpers/assignNativePropsToWeb.tsx +179 -0
  392. package/src/helpers/calc.ts +65 -0
  393. package/src/helpers/createMediaStyle.ts +48 -0
  394. package/src/helpers/createPropMapper.ts +457 -0
  395. package/src/helpers/createShallowUpdate.tsx +20 -0
  396. package/src/helpers/cssHash.ts +28 -0
  397. package/src/helpers/expandStyle.ts +81 -0
  398. package/src/helpers/expandStyles.ts +104 -0
  399. package/src/helpers/extendStaticConfig.ts +76 -0
  400. package/src/helpers/fixNativeShadow.tsx +2 -0
  401. package/src/helpers/getExpandedShorthands.ts +15 -0
  402. package/src/helpers/getFont.tsx +40 -0
  403. package/src/helpers/getFontLanguage.ts +2 -0
  404. package/src/helpers/getSize.ts +22 -0
  405. package/src/helpers/getSplitStyles.tsx +686 -0
  406. package/src/helpers/getStackSize.ts +22 -0
  407. package/src/helpers/getStylesAtomic.native.ts +3 -0
  408. package/src/helpers/getStylesAtomic.ts +289 -0
  409. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  410. package/src/helpers/getThemeCSSRules.ts +105 -0
  411. package/src/helpers/getVariantExtras.tsx +83 -0
  412. package/src/helpers/insertStyleRule.tsx +150 -0
  413. package/src/helpers/isObj.ts +1 -0
  414. package/src/helpers/isTamaguiComponent.tsx +15 -0
  415. package/src/helpers/isTamaguiElement.tsx +14 -0
  416. package/src/helpers/matchMedia.native.ts +6 -0
  417. package/src/helpers/matchMedia.ts +16 -0
  418. package/src/helpers/mergeProps.ts +56 -0
  419. package/src/helpers/mergeTransform.ts +14 -0
  420. package/src/helpers/normalizeColor.ts +53 -0
  421. package/src/helpers/normalizeValueWithProperty.ts +76 -0
  422. package/src/helpers/proxyThemeVariables.tsx +13 -0
  423. package/src/helpers/pseudoDescriptors.ts +18 -0
  424. package/src/helpers/registerCSSVariable.ts +11 -0
  425. package/src/helpers/startTransition.ts +4 -0
  426. package/src/helpers/themeable.tsx +45 -0
  427. package/src/helpers/themes.ts +69 -0
  428. package/src/helpers/validate.ts +80 -0
  429. package/src/helpers/withStaticProperties.tsx +7 -0
  430. package/src/hooks/getThemeUnwrapped.tsx +7 -0
  431. package/src/hooks/useConstant.tsx +19 -0
  432. package/src/hooks/useFeatures.tsx +288 -0
  433. package/src/hooks/useId.tsx +1 -0
  434. package/src/hooks/useIsMounted.ts +17 -0
  435. package/src/hooks/useIsSSR.tsx +20 -0
  436. package/src/hooks/useIsTouchDevice.tsx +21 -0
  437. package/src/hooks/useMedia.tsx +167 -0
  438. package/src/hooks/usePressable.tsx +9 -0
  439. package/src/hooks/useSafeRef.ts +50 -0
  440. package/src/hooks/useTheme.tsx +218 -0
  441. package/src/hooks/useUnmountEffect.ts +5 -0
  442. package/src/index.ts +79 -0
  443. package/src/insertFont.ts +69 -0
  444. package/src/static.ts +15 -0
  445. package/src/styled.tsx +135 -0
  446. package/src/types-rnw.tsx +162 -0
  447. package/src/types.tsx +1234 -0
  448. package/src/updateTheme.ts +23 -0
  449. package/src/vendor/Pressability.native.tsx +3 -0
  450. package/src/vendor/Pressability.tsx +2 -0
  451. package/src/views/FontLanguage.native.tsx +9 -0
  452. package/src/views/FontLanguage.tsx +18 -0
  453. package/src/views/FontLanguage.types.ts +13 -0
  454. package/src/views/Slot.tsx +152 -0
  455. package/src/views/Stack.tsx +24 -0
  456. package/src/views/TamaguiProvider.tsx +50 -0
  457. package/src/views/Text.tsx +79 -0
  458. package/src/views/Theme.tsx +72 -0
  459. package/src/views/ThemeInverse.tsx +33 -0
  460. package/src/views/ThemeProvider.tsx +59 -0
  461. package/src/views/ThemeReset.tsx +43 -0
  462. package/types/conf.d.ts +1 -1
  463. package/types/constants/platform.d.ts +2 -2
  464. package/types/createTamagui.d.ts +1 -1
  465. package/types/createTheme.d.ts +1 -1
  466. package/types/createVariable.d.ts +16 -12
  467. package/types/helpers/registerCSSVariable.d.ts +2 -2
  468. package/types/index.d.ts +1 -0
  469. package/types/types.d.ts +1 -1
  470. package/types/views/TamaguiProvider.d.ts +4 -0
  471. package/dist/cjs/Pressability.js +0 -32
  472. package/dist/cjs/Pressability.js.map +0 -7
  473. package/dist/cjs/Pressability.native.js +0 -32
  474. package/dist/cjs/Pressability.native.js.map +0 -7
  475. package/dist/cjs/ThemeContext.js +0 -30
  476. package/dist/cjs/ThemeContext.js.map +0 -7
  477. package/dist/cjs/ThemeManager.js +0 -211
  478. package/dist/cjs/ThemeManager.js.map +0 -7
  479. package/dist/cjs/defaultComponentState.js +0 -2
  480. package/dist/cjs/defaultComponentState.js.map +0 -7
  481. package/dist/cjs/ensureThemeVariable.js +0 -152
  482. package/dist/cjs/ensureThemeVariable.js.map +0 -7
  483. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  484. package/dist/cjs/helpers/ensureThemeVariable.js +0 -152
  485. package/dist/cjs/helpers/ensureThemeVariable.js.map +0 -7
  486. package/dist/cjs/helpers/nativeGestureHandler.native.js +0 -19
  487. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  488. package/dist/cjs/loadTheme.js +0 -64
  489. package/dist/cjs/loadTheme.js.map +0 -7
  490. package/dist/cjs/views/TextAncestorContext.js +0 -44
  491. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  492. package/dist/esm/Pressability.js +0 -7
  493. package/dist/esm/Pressability.js.map +0 -7
  494. package/dist/esm/Pressability.native.js +0 -7
  495. package/dist/esm/Pressability.native.js.map +0 -7
  496. package/dist/esm/ThemeContext.js +0 -6
  497. package/dist/esm/ThemeContext.js.map +0 -7
  498. package/dist/esm/ThemeManager.js +0 -185
  499. package/dist/esm/ThemeManager.js.map +0 -7
  500. package/dist/esm/defaultComponentState.js +0 -1
  501. package/dist/esm/defaultComponentState.js.map +0 -7
  502. package/dist/esm/ensureThemeVariable.js +0 -125
  503. package/dist/esm/ensureThemeVariable.js.map +0 -7
  504. package/dist/esm/helpers/createTamaguiProvider.js +0 -42
  505. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  506. package/dist/esm/helpers/ensureThemeVariable.js +0 -125
  507. package/dist/esm/helpers/ensureThemeVariable.js.map +0 -7
  508. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  509. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  510. package/dist/esm/loadTheme.js +0 -40
  511. package/dist/esm/loadTheme.js.map +0 -7
  512. package/dist/esm/views/TextAncestorContext.js +0 -15
  513. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  514. package/types/helpers/createTamaguiProvider.d.ts +0 -3
@@ -0,0 +1,23 @@
1
+ import { addTheme } from './addTheme'
2
+ import { activeThemeManagers } from './hooks/useTheme'
3
+ import { ThemeObject } from './types'
4
+
5
+ export function updateTheme({ name, theme }: { name: string; theme: ThemeObject }) {
6
+ const next = addTheme({ name, theme, insertCSS: true, update: true })
7
+
8
+ if (process.env.TAMAGUI_TARGET === 'native') {
9
+ activeThemeManagers.forEach((manager) => {
10
+ if (manager.name === name) {
11
+ manager.update(
12
+ {
13
+ name,
14
+ theme: next.theme,
15
+ },
16
+ true
17
+ )
18
+ }
19
+ })
20
+ }
21
+
22
+ return next
23
+ }
@@ -0,0 +1,3 @@
1
+ export const Pressability = require('react-native/Libraries/Pressability/Pressability').default
2
+ export const usePressability =
3
+ require('react-native/Libraries/Pressability/usePressability').default
@@ -0,0 +1,2 @@
1
+ export const Pressability = {} as any
2
+ export const usePressability = {} as Function
@@ -0,0 +1,9 @@
1
+ import React, { useMemo } from 'react'
2
+
3
+ import { FontLanguageContext } from '../contexts/FontLanguageContext'
4
+ import { FontLanguageProps } from './FontLanguage.types'
5
+
6
+ export const FontLanguage = ({ children, ...props }: FontLanguageProps) => {
7
+ const value = useMemo(() => props, [JSON.stringify(props)])
8
+ return <FontLanguageContext.Provider value={value}>{children}</FontLanguageContext.Provider>
9
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react'
2
+
3
+ import { FontLanguageProps } from './FontLanguage.types'
4
+
5
+ export const FontLanguage = ({ children, ...props }: FontLanguageProps) => {
6
+ return (
7
+ <div
8
+ style={{
9
+ display: 'contents',
10
+ }}
11
+ className={Object.entries(props)
12
+ .map(([name, language]) => `t_lang-${name}-${language}`)
13
+ .join(' ')}
14
+ >
15
+ {children}
16
+ </div>
17
+ )
18
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+
3
+ import { FontLanguages, FontTokens } from '../types'
4
+
5
+ type FontFamilies = FontTokens extends `$${infer Token}` ? Token : never
6
+
7
+ export type LanguageContextType = Partial<{
8
+ [key in FontFamilies]: FontLanguages | 'default'
9
+ }>
10
+
11
+ export type FontLanguageProps = LanguageContextType & {
12
+ children?: React.ReactNode
13
+ }
@@ -0,0 +1,152 @@
1
+ // via radix
2
+
3
+ import { composeRefs } from '@tamagui/compose-refs'
4
+ import * as React from 'react'
5
+
6
+ import { isWeb } from '../constants/platform'
7
+
8
+ /* -------------------------------------------------------------------------------------------------
9
+ * Slot
10
+ * -----------------------------------------------------------------------------------------------*/
11
+
12
+ export type SlotProps = {
13
+ children?: React.ReactNode
14
+ }
15
+
16
+ export const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {
17
+ const { children, ...slotProps } = props
18
+ const childrenArray = React.Children.toArray(children)
19
+ const slottable = childrenArray.find(isSlottable)
20
+
21
+ if (slottable) {
22
+ // the new element to render is the one passed as a child of `Slottable`
23
+ const newElement = slottable.props.children as React.ReactNode
24
+
25
+ const newChildren = childrenArray.map((child) => {
26
+ if (child === slottable) {
27
+ // because the new element will be the one rendered, we are only interested
28
+ // in grabbing its children (`newElement.props.children`)
29
+ if (React.Children.count(newElement) > 1) return React.Children.only(null)
30
+ return React.isValidElement(newElement)
31
+ ? (newElement.props.children as React.ReactNode)
32
+ : null
33
+ } else {
34
+ return child
35
+ }
36
+ })
37
+
38
+ return (
39
+ <SlotClone {...slotProps} ref={forwardedRef}>
40
+ {React.isValidElement(newElement)
41
+ ? React.cloneElement(newElement, undefined, newChildren)
42
+ : null}
43
+ </SlotClone>
44
+ )
45
+ }
46
+
47
+ return (
48
+ <SlotClone {...slotProps} ref={forwardedRef}>
49
+ {children}
50
+ </SlotClone>
51
+ )
52
+ })
53
+
54
+ Slot.displayName = 'Slot'
55
+
56
+ /* -------------------------------------------------------------------------------------------------
57
+ * SlotClone
58
+ * -----------------------------------------------------------------------------------------------*/
59
+
60
+ interface SlotCloneProps {
61
+ children: React.ReactNode
62
+ }
63
+
64
+ const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {
65
+ const { children, ...slotProps } = props
66
+
67
+ if (React.isValidElement(children)) {
68
+ const childProps = {
69
+ ...mergeSlotProps(children, slotProps),
70
+ ref: composeRefs(forwardedRef, (children as any).ref),
71
+ }
72
+ return React.cloneElement(children, childProps)
73
+ }
74
+
75
+ return React.Children.count(children) > 1 ? React.Children.only(null) : null
76
+ })
77
+
78
+ SlotClone.displayName = 'SlotClone'
79
+
80
+ /* -------------------------------------------------------------------------------------------------
81
+ * Slottable
82
+ * -----------------------------------------------------------------------------------------------*/
83
+
84
+ export const Slottable = ({ children }: { children: React.ReactNode }) => {
85
+ return <>{children}</>
86
+ }
87
+
88
+ /* ---------------------------------------------------------------------------------------------- */
89
+
90
+ type AnyProps = Record<string, any>
91
+
92
+ function isSlottable(child: React.ReactNode): child is React.ReactElement {
93
+ return React.isValidElement(child) && child.type === Slottable
94
+ }
95
+
96
+ const pressMap = isWeb
97
+ ? {
98
+ onPress: 'onClick',
99
+ onPressOut: 'onMouseUp',
100
+ onPressIn: 'onMouseDown',
101
+ }
102
+ : {}
103
+
104
+ function mergeSlotProps(child: any, slotProps: AnyProps) {
105
+ const childProps = child.props
106
+
107
+ // all child props should override
108
+ const overrideProps = { ...childProps }
109
+ const isHTMLChild = typeof child.type === 'string'
110
+
111
+ if (isHTMLChild) {
112
+ for (const key in pressMap) {
113
+ if (key in slotProps) {
114
+ slotProps[pressMap[key]] = slotProps[key]
115
+ delete slotProps[key]
116
+ }
117
+ }
118
+ }
119
+
120
+ for (let propName in childProps) {
121
+ const slotPropValue = slotProps[propName]
122
+ const childPropValue = childProps[propName]
123
+
124
+ if (isHTMLChild && pressMap[propName]) {
125
+ propName = pressMap[propName]
126
+ delete overrideProps[propName]
127
+ }
128
+
129
+ const isHandler = handleRegex.test(propName)
130
+ // if it's a handler, modify the override by composing the base handler
131
+ if (isHandler) {
132
+ overrideProps[propName] = mergeEvent(childPropValue, slotPropValue)
133
+ }
134
+ // if it's `style`, we merge them
135
+ else if (propName === 'style') {
136
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue }
137
+ } else if (propName === 'className') {
138
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ')
139
+ }
140
+ }
141
+
142
+ return { ...slotProps, ...overrideProps }
143
+ }
144
+
145
+ const handleRegex = /^on[A-Z]/
146
+
147
+ export function mergeEvent(a?: Function, b?: Function) {
148
+ return (...args: unknown[]) => {
149
+ a?.(...args)
150
+ b?.(...args)
151
+ }
152
+ }
@@ -0,0 +1,24 @@
1
+ import { View } from 'react-native'
2
+
3
+ import { stackDefaultStyles } from '../constants/constants'
4
+ import { createComponent } from '../createComponent'
5
+ import { StackProps, StackPropsBase } from '../types'
6
+
7
+ export const Stack = createComponent<StackProps, View, StackPropsBase>({
8
+ componentName: 'Stack',
9
+ defaultProps: {
10
+ ...stackDefaultStyles,
11
+ flexDirection: 'column',
12
+ },
13
+ })
14
+
15
+ // test types
16
+ // export const YStack = styled(Stack, {
17
+ // flexDirection: 'column',
18
+ // })
19
+ // // test types
20
+ // const x00 = <Stack missing={0} /> // should err
21
+ // const x0 = <YStack missing={0} /> // should err
22
+ // const x1 = (props: StackProps) => <YStack {...props} />
23
+ // type ys = typeof YStack
24
+ // type ysv = ys extends StaticComponent<any, infer V> ? V : unknown
@@ -0,0 +1,50 @@
1
+ import * as React from 'react'
2
+
3
+ import { getConfig } from '../conf'
4
+ import { isClient, isSSR } from '../constants/platform'
5
+ import { ButtonInsideButtonContext } from '../contexts/ButtonInsideButtonContext'
6
+ import { TextAncestorProvider } from '../contexts/TextAncestorContext'
7
+ import { useMediaQueryListeners } from '../hooks/useMedia'
8
+ import { TamaguiProviderProps } from '../types'
9
+ import { ThemeProvider } from './ThemeProvider'
10
+
11
+ export function TamaguiProvider({
12
+ children,
13
+ disableInjectCSS,
14
+ config,
15
+ ...themePropsProvider
16
+ }: TamaguiProviderProps) {
17
+ if (!isSSR) {
18
+ useMediaQueryListeners()
19
+ }
20
+
21
+ if (isClient) {
22
+ // inject CSS if asked to (not SSR compliant)
23
+ // eslint-disable-next-line react-hooks/rules-of-hooks
24
+ React.useLayoutEffect(() => {
25
+ if (disableInjectCSS) return
26
+ const style = document.createElement('style')
27
+ style.appendChild(document.createTextNode(config.getCSS()))
28
+ document.head.appendChild(style)
29
+ return () => {
30
+ document.head.removeChild(style)
31
+ }
32
+ }, [config, disableInjectCSS])
33
+ }
34
+
35
+ return (
36
+ <ButtonInsideButtonContext.Provider value={false}>
37
+ <TextAncestorProvider>
38
+ <ThemeProvider
39
+ themes={config.themes}
40
+ defaultTheme={config.defaultTheme || 'light'}
41
+ themeClassNameOnRoot={config.themeClassNameOnRoot}
42
+ disableRootThemeClass={config.disableRootThemeClass}
43
+ {...themePropsProvider}
44
+ >
45
+ {children}
46
+ </ThemeProvider>
47
+ </TextAncestorProvider>
48
+ </ButtonInsideButtonContext.Provider>
49
+ )
50
+ }
@@ -0,0 +1,79 @@
1
+ import { stylePropsTextOnly, validStyles } from '@tamagui/helpers'
2
+ import { Text as TextView } from 'react-native'
3
+
4
+ import { isWeb } from '../constants/platform'
5
+ import { createComponent } from '../createComponent'
6
+ import { TextProps, TextPropsBase } from '../types'
7
+
8
+ const ellipseStyle = {
9
+ maxWidth: '100%',
10
+ overflow: 'hidden',
11
+ textOverflow: 'ellipsis',
12
+ whiteSpace: 'nowrap',
13
+ }
14
+
15
+ export const Text = createComponent<TextProps, TextView, TextPropsBase>({
16
+ componentName: 'Text',
17
+ isText: true,
18
+
19
+ defaultProps: {
20
+ display: 'flex',
21
+ fontFamily: 'System',
22
+ ...(isWeb && {
23
+ display: 'inline',
24
+ boxSizing: 'border-box',
25
+ wordWrap: 'break-word',
26
+ }),
27
+ },
28
+
29
+ variants: {
30
+ ...(isWeb && {
31
+ numberOfLines: {
32
+ 1: ellipseStyle,
33
+
34
+ ':number': (numberOfLines) =>
35
+ numberOfLines >= 1
36
+ ? {
37
+ WebkitLineClamp: numberOfLines,
38
+ WebkitBoxOrient: 'vertical',
39
+ display: '-webkit-box',
40
+ overflow: 'hidden',
41
+ }
42
+ : null,
43
+ },
44
+ }),
45
+
46
+ selectable: {
47
+ true: {
48
+ userSelect: 'text',
49
+ cursor: 'text',
50
+ },
51
+ false: {
52
+ userSelect: 'none',
53
+ cursor: 'inherit',
54
+ },
55
+ },
56
+
57
+ pressable: {
58
+ true: {
59
+ cursor: 'pointer',
60
+ },
61
+ },
62
+
63
+ ellipse: {
64
+ true: isWeb
65
+ ? ellipseStyle
66
+ : {
67
+ numberOfLines: 1,
68
+ lineBreakMode: 'clip',
69
+ },
70
+ },
71
+ },
72
+
73
+ deoptProps: new Set(isWeb ? [] : ['ellipse']),
74
+
75
+ validStyles: {
76
+ ...validStyles,
77
+ ...stylePropsTextOnly,
78
+ },
79
+ })
@@ -0,0 +1,72 @@
1
+ import React, { memo, useMemo } from 'react'
2
+
3
+ import { isWeb } from '../constants/platform'
4
+ import { variableToString } from '../createVariable'
5
+ import { ThemeManager, ThemeManagerContext } from '../helpers/ThemeManager'
6
+ import { ThemeProps, useChangeThemeEffect } from '../hooks/useTheme'
7
+
8
+ // bugfix esbuild strips react jsx: 'preserve'
9
+ React['createElement']
10
+
11
+ export const Theme = memo(function Theme(props: ThemeProps) {
12
+ const { name, theme, themeManager, themes, className } = useChangeThemeEffect(
13
+ props.name,
14
+ props.componentName,
15
+ props
16
+ )
17
+
18
+ const missingTheme = !themes || !name || !theme
19
+
20
+ // memo here, changing theme without re-rendering all children is a critical optimization
21
+ // may require some effort of end user to memoize but without this memo they'd have no option
22
+ const contents = useMemo(
23
+ () => (missingTheme ? null : wrapThemeManagerContext(props.children, themeManager)),
24
+ [missingTheme, props.children, themeManager]
25
+ )
26
+
27
+ if (missingTheme) {
28
+ if (name && !theme && process.env.NODE_ENV === 'development') {
29
+ // eslint-disable-next-line no-console
30
+ console.warn(`No theme found by name ${name}`)
31
+ }
32
+ return props.children
33
+ }
34
+
35
+ if (isWeb) {
36
+ return (
37
+ <span
38
+ className={(!props.disableThemeClass
39
+ ? [props.className, className].filter(Boolean)
40
+ : []
41
+ ).join(' ')}
42
+ style={{
43
+ display: 'contents',
44
+ // in order to provide currentColor, set color by default
45
+ color: variableToString(themes[name]?.color),
46
+ }}
47
+ >
48
+ {contents}
49
+ </span>
50
+ )
51
+ }
52
+
53
+ return contents
54
+ })
55
+
56
+ export function wrapThemeManagerContext(
57
+ children: any,
58
+ themeManager?: ThemeManager | null,
59
+ shouldSetChildrenThemeToParent?: boolean
60
+ ) {
61
+ return themeManager ? (
62
+ <ThemeManagerContext.Provider value={themeManager}>
63
+ {shouldSetChildrenThemeToParent ? (
64
+ <Theme name={themeManager.parentName}>{children}</Theme>
65
+ ) : (
66
+ children
67
+ )}
68
+ </ThemeManagerContext.Provider>
69
+ ) : (
70
+ children
71
+ )
72
+ }
@@ -0,0 +1,33 @@
1
+ import React, { useState } from 'react'
2
+
3
+ import { useIsomorphicLayoutEffect } from '../constants/platform'
4
+ import { useDefaultThemeName, useThemeName } from '../hooks/useTheme'
5
+ import { Theme } from './Theme'
6
+
7
+ export const ThemeInverse = ({
8
+ children,
9
+ disable,
10
+ }: {
11
+ children: React.ReactNode
12
+ disable?: boolean
13
+ }) => {
14
+ const themeName = useThemeName()
15
+ const defaultTheme = useDefaultThemeName()
16
+ const [name, setName] = useState<null | string>(null)
17
+
18
+ // ssr
19
+ useIsomorphicLayoutEffect(() => {
20
+ if (themeName.startsWith('dark')) {
21
+ setName('light')
22
+ }
23
+ if (themeName.startsWith('light')) {
24
+ setName('dark')
25
+ }
26
+ }, [defaultTheme, themeName])
27
+
28
+ if (disable) {
29
+ return children as JSX.Element
30
+ }
31
+
32
+ return <Theme name={name}>{children}</Theme>
33
+ }
@@ -0,0 +1,59 @@
1
+ import React, { useLayoutEffect, useMemo } from 'react'
2
+
3
+ import { getHasConfigured } from '../conf'
4
+ import { THEME_CLASSNAME_PREFIX } from '../constants/constants'
5
+ import { ThemeContext } from '../contexts/ThemeContext'
6
+ import { Theme } from './Theme'
7
+
8
+ // bugfix esbuild strips react jsx: 'preserve'
9
+ React['createElement']
10
+
11
+ export type ThemeProviderProps = {
12
+ className?: string
13
+ themes: any
14
+ defaultTheme: string
15
+ disableRootThemeClass?: boolean
16
+ themeClassNameOnRoot?: boolean
17
+ children?: any
18
+ reset?: boolean
19
+ }
20
+
21
+ export const ThemeProvider = (props: ThemeProviderProps) => {
22
+ if (!getHasConfigured()) {
23
+ throw new Error(`Missing configureThemes() call, add to your root file`)
24
+ }
25
+
26
+ // ensure theme is attached to root body node as well to work with modals by default
27
+ if (typeof document !== 'undefined') {
28
+ useLayoutEffect(() => {
29
+ if (props.disableRootThemeClass) {
30
+ return
31
+ }
32
+ const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`
33
+ const target = props.themeClassNameOnRoot ? document.documentElement : document.body
34
+ target.classList.add(cn)
35
+ return () => {
36
+ target.classList.remove(cn)
37
+ }
38
+ }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot])
39
+ }
40
+
41
+ const themeContext = useMemo(() => {
42
+ return {
43
+ themes: props.themes,
44
+ defaultTheme: props.defaultTheme,
45
+ }
46
+ }, [props.defaultTheme, props.themes])
47
+
48
+ return (
49
+ <ThemeContext.Provider value={themeContext}>
50
+ <Theme
51
+ className={props.className}
52
+ name={props.defaultTheme}
53
+ disableThemeClass={props.disableRootThemeClass}
54
+ >
55
+ {props.children}
56
+ </Theme>
57
+ </ThemeContext.Provider>
58
+ )
59
+ }
@@ -0,0 +1,43 @@
1
+ import React, { useContext, useLayoutEffect, useState } from 'react'
2
+
3
+ import { isWeb } from '../constants/platform'
4
+ import { ThemeManagerContext } from '../helpers/ThemeManager'
5
+ import { Theme } from './Theme'
6
+
7
+ // bugfix esbuild strips react jsx: 'preserve'
8
+ React['createElement']
9
+
10
+ // resets the theme to the parent theme
11
+ export const ThemeReset = (props: { children?: any }) => {
12
+ const themeManager = useContext(ThemeManagerContext)
13
+ const [name, setName] = useState<string | null>(null)
14
+
15
+ // this component doesn't work with SSR, so must run only client side
16
+ // we could at least prevent more flickering by having the ssr head script
17
+ // that changes to dark initially also go through and change all of these
18
+ if (!isWeb || typeof document !== 'undefined') {
19
+ useLayoutEffect(() => {
20
+ if (!themeManager) return
21
+ if (name !== themeManager.parentName) {
22
+ setName(themeManager.parentName)
23
+ }
24
+ }, [themeManager?.parentName])
25
+
26
+ useLayoutEffect(() => {
27
+ if (!themeManager) return
28
+ return themeManager.onChangeTheme(() => {
29
+ setName(themeManager.parentName)
30
+ })
31
+ }, [])
32
+ }
33
+
34
+ if (!themeManager || !props.children) {
35
+ return props.children || null
36
+ }
37
+
38
+ return (
39
+ <Theme className="tui-theme-reset" reset name={name}>
40
+ {props.children}
41
+ </Theme>
42
+ )
43
+ }
package/types/conf.d.ts CHANGED
@@ -15,7 +15,7 @@ export declare const getConfig: () => TamaguiInternalConfig<import("./types").Cr
15
15
  [key: string]: any;
16
16
  };
17
17
  }, import("./types").GenericFonts>;
18
- export declare const getTokens: () => import("./types").CreateTokens<import("./createVariable").Variable<any>>;
18
+ export declare const getTokens: () => import("./types").CreateTokens<import("./createVariable").Variable<import("./createVariable").VariableValue>>;
19
19
  export declare const getThemes: () => {
20
20
  [key: string]: Partial<import("./types").TamaguiBaseTheme> & {
21
21
  [key: string]: import("./types").VariableVal;
@@ -1,11 +1,11 @@
1
- import { useLayoutEffect } from 'react';
1
+ import { useEffect } from 'react';
2
2
  export declare const isAndroid: boolean;
3
3
  export declare const isIOS: boolean;
4
4
  export declare const isWeb: boolean;
5
5
  export declare const isWindowDefined: boolean;
6
6
  export declare const isSSR: boolean;
7
7
  export declare const isClient: boolean;
8
- export declare const useIsomorphicLayoutEffect: typeof useLayoutEffect;
8
+ export declare const useIsomorphicLayoutEffect: typeof useEffect;
9
9
  export declare const isChrome: boolean;
10
10
  export declare const isWebTouchable: boolean;
11
11
  export declare const isTouchable: boolean;
@@ -1,3 +1,3 @@
1
1
  import { CreateTamaguiProps, InferTamaguiConfig } from './types';
2
- export declare function createTamagui<Conf extends CreateTamaguiProps>(config: Conf): InferTamaguiConfig<Conf>;
2
+ export declare function createTamagui<Conf extends CreateTamaguiProps>(configIn: Conf): InferTamaguiConfig<Conf>;
3
3
  //# sourceMappingURL=createTamagui.d.ts.map
@@ -2,6 +2,6 @@ import { Variable } from './createVariable';
2
2
  declare type GenericTheme = {
3
3
  [key: string]: string | Variable;
4
4
  };
5
- export declare const createTheme: <Theme extends GenericTheme>(theme: Theme) => { [K in keyof Theme]: string | Variable<any> | Theme[K]; };
5
+ export declare const createTheme: <Theme extends GenericTheme>(theme: Theme) => { [K in keyof Theme]: string | Variable<import("./createVariable").VariableValue> | Theme[K]; };
6
6
  export {};
7
7
  //# sourceMappingURL=createTheme.d.ts.map
@@ -1,21 +1,25 @@
1
- declare const IS_VARIABLE_SYMBOL = "__isVariable__";
2
- declare type VariableIn<A extends string | number = any> = {
1
+ import { VariableColorVal } from './types';
2
+ declare const IS_VAR = "__isVar__";
3
+ export declare type VariableValue = string | number;
4
+ declare type VariableIn<A extends VariableValue = VariableValue> = {
3
5
  val: A;
4
6
  name: string;
5
7
  key: string;
6
8
  isFloating?: boolean;
7
9
  };
8
- export declare class Variable<A extends string | number = any> {
9
- [IS_VARIABLE_SYMBOL]: boolean;
10
- key: string;
11
- name: string;
12
- val: A;
10
+ export declare type Variable<A extends VariableValue = VariableValue> = VariableIn<A> & {
11
+ [IS_VAR]?: true;
12
+ variable?: string;
13
+ };
14
+ export declare const createVariable: <A extends string | number = any>(props: VariableIn<A>) => VariableIn<A> | {
13
15
  variable: string;
14
- isFloating: boolean;
15
- constructor(props: VariableIn);
16
- toString(): string;
17
- }
18
- export declare const createVariable: <A extends string | number = any>(props: VariableIn<A>) => Variable<any>;
16
+ val: A;
17
+ name: string;
18
+ key: string;
19
+ isFloating?: boolean | undefined;
20
+ __isVar__: boolean;
21
+ };
22
+ export declare function variableToString(vrble?: Variable | VariableColorVal): string;
19
23
  export declare function isVariable(v: Variable | any): v is Variable;
20
24
  export declare function getVariableValue(v: Variable | any): any;
21
25
  export declare function getVariableName(v: Variable | any): any;
@@ -1,5 +1,5 @@
1
- import { Variable } from '../createVariable';
1
+ import { Variable, VariableValue } from '../createVariable';
2
2
  export declare const registerCSSVariable: (v: Variable) => void;
3
3
  export declare const variableToCSS: (v: Variable) => string;
4
- export declare const tokensValueToVariable: Map<string, Variable<any>>;
4
+ export declare const tokensValueToVariable: Map<VariableValue, any>;
5
5
  //# sourceMappingURL=registerCSSVariable.d.ts.map