@tamagui/core 1.0.1-beta.138 → 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 (519) 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 +14 -28
  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 +1 -0
  42. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +2 -2
  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 +2 -3
  50. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  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 +11 -2
  72. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  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 +6 -6
  84. package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
  85. package/dist/cjs/helpers/insertStyleRule.js +6 -1
  86. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  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 +18 -14
  98. package/dist/cjs/helpers/mergeProps.js.map +2 -2
  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 +2 -32
  128. package/dist/cjs/hooks/useId.js.map +2 -2
  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 +75 -92
  136. package/dist/cjs/hooks/useMedia.js.map +2 -2
  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 +60 -0
  140. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  141. package/dist/cjs/hooks/useTheme.js +3 -5
  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 +21 -3
  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 +2 -2
  170. package/dist/cjs/views/Slot.js.map +2 -2
  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} +37 -34
  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 +15 -29
  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 +1 -0
  226. package/dist/esm/helpers/assignNativePropsToWeb.js.map +2 -2
  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 +2 -3
  234. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  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 +11 -2
  256. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  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 +6 -6
  268. package/dist/esm/helpers/getVariantExtras.js.map +2 -2
  269. package/dist/esm/helpers/insertStyleRule.js +6 -1
  270. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  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 +18 -14
  282. package/dist/esm/helpers/mergeProps.js.map +2 -2
  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 +1 -28
  312. package/dist/esm/hooks/useId.js.map +2 -2
  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 +74 -92
  320. package/dist/esm/hooks/useMedia.js.map +2 -2
  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 +36 -0
  324. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  325. package/dist/esm/hooks/useTheme.js +4 -6
  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 +21 -2
  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 +2 -2
  354. package/dist/esm/views/Slot.js.map +2 -2
  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/createTamagui.d.ts +1 -1
  464. package/types/createTheme.d.ts +1 -1
  465. package/types/createVariable.d.ts +16 -12
  466. package/types/helpers/getSplitStyles.d.ts +1 -0
  467. package/types/helpers/mergeProps.d.ts +3 -1
  468. package/types/helpers/registerCSSVariable.d.ts +2 -2
  469. package/types/hooks/useId.d.ts +1 -8
  470. package/types/hooks/useMedia.d.ts +2 -1
  471. package/types/hooks/useSafeRef.d.ts +4 -0
  472. package/types/index.d.ts +3 -1
  473. package/types/types.d.ts +3 -3
  474. package/types/views/TamaguiProvider.d.ts +4 -0
  475. package/dist/cjs/Pressability.js +0 -32
  476. package/dist/cjs/Pressability.js.map +0 -7
  477. package/dist/cjs/Pressability.native.js +0 -32
  478. package/dist/cjs/Pressability.native.js.map +0 -7
  479. package/dist/cjs/ThemeContext.js +0 -30
  480. package/dist/cjs/ThemeContext.js.map +0 -7
  481. package/dist/cjs/ThemeManager.js +0 -211
  482. package/dist/cjs/ThemeManager.js.map +0 -7
  483. package/dist/cjs/defaultComponentState.js +0 -2
  484. package/dist/cjs/defaultComponentState.js.map +0 -7
  485. package/dist/cjs/ensureThemeVariable.js +0 -152
  486. package/dist/cjs/ensureThemeVariable.js.map +0 -7
  487. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  488. package/dist/cjs/helpers/ensureThemeVariable.js +0 -152
  489. package/dist/cjs/helpers/ensureThemeVariable.js.map +0 -7
  490. package/dist/cjs/helpers/nativeGestureHandler.native.js +0 -19
  491. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  492. package/dist/cjs/loadTheme.js +0 -64
  493. package/dist/cjs/loadTheme.js.map +0 -7
  494. package/dist/cjs/views/TextAncestorContext.js +0 -44
  495. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  496. package/dist/esm/Pressability.js +0 -7
  497. package/dist/esm/Pressability.js.map +0 -7
  498. package/dist/esm/Pressability.native.js +0 -7
  499. package/dist/esm/Pressability.native.js.map +0 -7
  500. package/dist/esm/ThemeContext.js +0 -6
  501. package/dist/esm/ThemeContext.js.map +0 -7
  502. package/dist/esm/ThemeManager.js +0 -185
  503. package/dist/esm/ThemeManager.js.map +0 -7
  504. package/dist/esm/defaultComponentState.js +0 -1
  505. package/dist/esm/defaultComponentState.js.map +0 -7
  506. package/dist/esm/ensureThemeVariable.js +0 -125
  507. package/dist/esm/ensureThemeVariable.js.map +0 -7
  508. package/dist/esm/helpers/createTamaguiProvider.js +0 -38
  509. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  510. package/dist/esm/helpers/ensureThemeVariable.js +0 -125
  511. package/dist/esm/helpers/ensureThemeVariable.js.map +0 -7
  512. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  513. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  514. package/dist/esm/loadTheme.js +0 -40
  515. package/dist/esm/loadTheme.js.map +0 -7
  516. package/dist/esm/views/TextAncestorContext.js +0 -15
  517. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  518. package/types/helpers/createTamaguiProvider.d.ts +0 -4
  519. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
@@ -0,0 +1,218 @@
1
+ import { useForceUpdate } from '@tamagui/use-force-update'
2
+ import React, { useContext, useLayoutEffect, useMemo, useRef, useState } from 'react'
3
+
4
+ import { getConfig } from '../conf'
5
+ import { isSSR, isWeb, useIsomorphicLayoutEffect } from '../constants/platform'
6
+ import { ThemeContext } from '../contexts/ThemeContext'
7
+ import { areEqualSets } from '../helpers/areEqualSets'
8
+ import {
9
+ GetNextThemeProps,
10
+ ThemeManager,
11
+ ThemeManagerContext,
12
+ emptyManager,
13
+ } from '../helpers/ThemeManager'
14
+ import { ThemeName, ThemeObject } from '../types'
15
+ import { GetThemeUnwrapped } from './getThemeUnwrapped'
16
+ import { useConstant } from './useConstant'
17
+
18
+ export type ThemeProps = {
19
+ className?: string
20
+ disableThemeClass?: boolean
21
+ name: Exclude<ThemeName, number> | null
22
+ componentName?: string
23
+ children?: any
24
+ reset?: boolean
25
+ debug?: boolean | 'verbose'
26
+ }
27
+
28
+ type UseThemeState = {
29
+ uuid: Object
30
+ keys: Set<string>
31
+ isRendering: boolean
32
+ }
33
+
34
+ export const useTheme = (
35
+ themeName?: string | null,
36
+ componentName?: string,
37
+ props?: ThemeProps,
38
+ forceUpdate?: any
39
+ ): ThemeObject => {
40
+ const { name, theme, themes, themeManager, className } = useChangeThemeEffect(
41
+ themeName,
42
+ componentName,
43
+ props,
44
+ forceUpdate
45
+ )
46
+
47
+ if (process.env.NODE_ENV === 'development') {
48
+ if (props?.debug === 'verbose') {
49
+ // eslint-disable-next-line no-console
50
+ console.log(' 🔹 useTheme', { themeName, componentName, name, className })
51
+ }
52
+ }
53
+
54
+ const state = useRef() as React.MutableRefObject<UseThemeState>
55
+ if (!state.current) {
56
+ state.current = {
57
+ uuid: {},
58
+ keys: new Set(),
59
+ isRendering: true,
60
+ }
61
+ }
62
+ state.current.isRendering = true
63
+
64
+ // track usage
65
+ useIsomorphicLayoutEffect(() => {
66
+ const st = state.current
67
+ st.isRendering = false
68
+ const cur = themeManager?.keys.get(st.uuid)
69
+ if (!cur || !areEqualSets(st.keys, cur)) {
70
+ themeManager?.track(st.uuid, st.keys)
71
+ }
72
+ })
73
+
74
+ const debugProp = props && props['debug']
75
+
76
+ if (!theme) {
77
+ if (process.env.NODE_ENV === 'development') {
78
+ // eslint-disable-next-line no-console
79
+ console.warn('No theme with name', themeName)
80
+ }
81
+ return themes[getConfig().defaultTheme || 'light']
82
+ }
83
+
84
+ return useMemo(() => {
85
+ return new Proxy(theme, {
86
+ has(_, key) {
87
+ if (typeof key === 'string') {
88
+ if (key[0] === '$') {
89
+ key = key.slice(1)
90
+ }
91
+ }
92
+ return Reflect.has(theme, key)
93
+ },
94
+ get(_, key) {
95
+ if (key === GetThemeUnwrapped) {
96
+ return theme
97
+ }
98
+ if (key === GetThemeManager) {
99
+ return themeManager
100
+ }
101
+ if (key === 'name') {
102
+ return name
103
+ }
104
+ if (key === 'className') {
105
+ return className
106
+ }
107
+ if (!name || key === '__proto__' || typeof key === 'symbol' || key === '$typeof') {
108
+ return Reflect.get(_, key)
109
+ }
110
+ if (!themeManager) {
111
+ console.error('No themeManager')
112
+ return
113
+ }
114
+ // auto convert variables to plain
115
+ if (key[0] === '$') {
116
+ key = key.slice(1)
117
+ }
118
+ if (state.current.isRendering && !state.current.keys.has(key)) {
119
+ state.current.keys.add(key)
120
+ if (process.env.NODE_ENV === 'development' && debugProp === 'verbose') {
121
+ console.log(' 🔸 tracking theme', key)
122
+ }
123
+ }
124
+ return themeManager.getValue(key)
125
+ },
126
+ })
127
+ }, [name, theme, componentName, className, debugProp])
128
+ }
129
+
130
+ const GetThemeManager = Symbol()
131
+
132
+ export const getThemeManager = (theme: any): ThemeManager | undefined => {
133
+ if (!theme) return
134
+ return theme[GetThemeManager]
135
+ }
136
+
137
+ export const useThemeName = (opts?: { parent?: true }) => {
138
+ const parent = useContext(ThemeManagerContext)
139
+ const [name, setName] = useState(parent?.name || '')
140
+
141
+ useIsomorphicLayoutEffect(() => {
142
+ if (!parent) return
143
+ return parent.onChangeTheme((next, manager) => {
144
+ const name = opts?.parent ? manager.parentName || next : next
145
+ if (!name) return
146
+ setName(name)
147
+ })
148
+ }, [parent])
149
+
150
+ return name
151
+ }
152
+
153
+ export const useDefaultThemeName = () => {
154
+ return useContext(ThemeContext)?.defaultTheme
155
+ }
156
+
157
+ export const activeThemeManagers = new Set<ThemeManager>()
158
+
159
+ export const useChangeThemeEffect = (
160
+ name?: string | null,
161
+ componentName?: string,
162
+ props?: ThemeProps,
163
+ forceUpdateProp?: any
164
+ ) => {
165
+ const debug = props && props['debug']
166
+ const parentManager = useContext(ThemeManagerContext) || emptyManager
167
+ const { themes } = useContext(ThemeContext)!
168
+ const reset = props?.reset || false
169
+ const getThemeProps: GetNextThemeProps = { name, componentName, themes, reset }
170
+ const next = parentManager.getNextTheme(getThemeProps, debug)
171
+ // eslint-disable-next-line react-hooks/rules-of-hooks
172
+ const forceUpdate = forceUpdateProp || useForceUpdate()
173
+
174
+ const themeManager = useConstant<ThemeManager | null>(() => {
175
+ // if (!next) return null
176
+ // RSC test
177
+ // if (typeof document === 'undefined') return null
178
+ return new ThemeManager(next.name, next.theme, parentManager, reset)
179
+ })
180
+
181
+ // if not SSR
182
+ if (!isSSR) {
183
+ // eslint-disable-next-line react-hooks/rules-of-hooks
184
+ useLayoutEffect(() => {
185
+ if (!themeManager) return
186
+
187
+ activeThemeManagers.add(themeManager)
188
+
189
+ if (next?.name) {
190
+ themeManager.update(next)
191
+ }
192
+
193
+ const disposeParentOnChange = parentManager.onChangeTheme(() => {
194
+ const next = parentManager.getNextTheme(getThemeProps, debug)
195
+ if (!next) return
196
+ if (themeManager.update(next)) {
197
+ forceUpdate()
198
+ }
199
+ })
200
+
201
+ return () => {
202
+ activeThemeManagers.delete(themeManager)
203
+ disposeParentOnChange()
204
+ }
205
+ // eslint-disable-next-line react-hooks/exhaustive-deps
206
+ }, [themes, name, componentName, debug, next?.name])
207
+ }
208
+
209
+ return {
210
+ ...(parentManager && {
211
+ name: parentManager.name,
212
+ theme: parentManager.theme,
213
+ }),
214
+ ...next,
215
+ themes,
216
+ themeManager,
217
+ }
218
+ }
@@ -0,0 +1,5 @@
1
+ import { useEffect } from 'react'
2
+
3
+ export function useUnmountEffect(callback: () => void) {
4
+ return useEffect(() => () => callback(), [])
5
+ }
package/src/index.ts ADDED
@@ -0,0 +1,79 @@
1
+ export * from './Tamagui'
2
+ export * from './createComponent'
3
+ export * from './createShorthands'
4
+ export * from './createTheme'
5
+ export * from './createTamagui'
6
+ export * from './createFont'
7
+ export * from './createTokens'
8
+ export * from './createVariable'
9
+ export * from './createVariables'
10
+ export * from './insertFont'
11
+ export * from './addTheme'
12
+ export * from './updateTheme'
13
+ export * from './styled'
14
+ export * from './types'
15
+
16
+ // for type portability
17
+ export type { RNWTextProps, RNWViewProps } from './types-rnw'
18
+ export { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'
19
+
20
+ export * from './constants/constants'
21
+ export * from './constants/platform'
22
+ export { createDOMProps } from '@tamagui/rnw'
23
+
24
+ export * from './helpers/calc'
25
+ export * from './helpers/createShallowUpdate'
26
+ export * from './helpers/getStackSize'
27
+ export * from './helpers/getVariantExtras'
28
+ export * from './helpers/getExpandedShorthands'
29
+ export * from './helpers/getSize'
30
+ export * from './helpers/getSplitStyles'
31
+ export * from './helpers/getStylesAtomic'
32
+ export * from './helpers/pseudoDescriptors'
33
+ export * from './helpers/mergeProps'
34
+ export * from './helpers/expandStyles'
35
+ export * from './helpers/getFont'
36
+ export * from './helpers/isObj'
37
+ export * from './helpers/isTamaguiElement'
38
+ export * from './helpers/isTamaguiComponent'
39
+ export * from './helpers/matchMedia'
40
+ export * from './helpers/startTransition'
41
+ export * from './helpers/themeable'
42
+ export * from './helpers/withStaticProperties'
43
+
44
+ export * from './contexts/ButtonInsideButtonContext'
45
+
46
+ export * from './hooks/useConstant'
47
+ export * from './hooks/useId'
48
+ export * from './hooks/useIsMounted'
49
+ export * from './hooks/useIsTouchDevice'
50
+ export {
51
+ configureMedia,
52
+ getMedia,
53
+ mediaState,
54
+ useMedia,
55
+ mediaObjectToString,
56
+ addMediaQueryListener,
57
+ removeMediaQueryListener,
58
+ mediaQueryConfig,
59
+ } from './hooks/useMedia'
60
+ export * from './hooks/usePressable'
61
+ export * from './hooks/useTheme'
62
+ export * from './hooks/useIsSSR'
63
+ export * from './hooks/useUnmountEffect'
64
+ export * from './hooks/useSafeRef'
65
+
66
+ export * from './views/Slot'
67
+ export * from './views/Stack'
68
+ export * from './views/Text'
69
+ export { TextAncestorProvider, TextAncestorContext } from './contexts/TextAncestorContext'
70
+ export * from './views/Theme'
71
+ export * from './views/ThemeInverse'
72
+ export * from './views/ThemeProvider'
73
+ export * from './views/ThemeReset'
74
+ export * from './views/FontLanguage'
75
+ export * from './views/TamaguiProvider'
76
+
77
+ export * from '@tamagui/use-force-update'
78
+ export * from '@tamagui/use-event'
79
+ export * from '@tamagui/helpers'
@@ -0,0 +1,69 @@
1
+ import { setConfigFont } from './conf'
2
+ import { createFont } from './createFont'
3
+ import { Variable } from './createVariable'
4
+ import { DeepVariableObject, createVariables } from './createVariables'
5
+ import { registerCSSVariable, variableToCSS } from './helpers/registerCSSVariable'
6
+ import { GenericFont } from './types'
7
+
8
+ /**
9
+ * Runtime dynamic insert font
10
+ */
11
+ export function insertFont<A extends GenericFont>(name: string, fontIn: A): DeepVariableObject<A> {
12
+ const font = createFont(fontIn)
13
+ const tokened = createVariables(font, name) as GenericFont
14
+ const parsed = parseFont(tokened) as DeepVariableObject<A>
15
+ if (process.env.TAMAGUI_TARGET === 'web' && typeof document !== 'undefined') {
16
+ const fontVars = registerFontVariables(parsed)
17
+ const style = document.createElement('style')
18
+ style.innerText = `:root .font_${name} {${fontVars.join(';')}}`
19
+ style.setAttribute('data-tamagui-font', name)
20
+ document.head.appendChild(style)
21
+ }
22
+ setConfigFont(name, tokened, parsed)
23
+ return parsed
24
+ }
25
+
26
+ export function parseFont<A extends GenericFont>(definition: A): DeepVariableObject<A> {
27
+ const parsed: any = {}
28
+ for (const attrKey in definition) {
29
+ const attr = definition[attrKey]
30
+ if (attrKey === 'family') {
31
+ parsed[attrKey] = attr
32
+ continue
33
+ }
34
+ parsed[attrKey] = {}
35
+ for (const key in attr) {
36
+ let val = attr[key] as any
37
+ // is a theme reference
38
+ if (val.val?.[0] === '$') {
39
+ val = val.val
40
+ }
41
+ parsed[attrKey][`$${key}`] = val
42
+ }
43
+ }
44
+ return parsed
45
+ }
46
+
47
+ export function registerFontVariables(parsedFont: any) {
48
+ const response: string[] = []
49
+
50
+ for (const fkey in parsedFont) {
51
+ if (fkey === 'family') {
52
+ const val = parsedFont[fkey] as Variable
53
+ registerCSSVariable(val)
54
+ response.push(variableToCSS(val))
55
+ } else {
56
+ for (const fskey in parsedFont[fkey]) {
57
+ const fval = parsedFont[fkey][fskey]
58
+ if (typeof fval === 'string') {
59
+ // no need to add its a theme reference like "$borderColor"
60
+ } else {
61
+ const val = parsedFont[fkey][fskey] as Variable
62
+ registerCSSVariable(val)
63
+ response.push(variableToCSS(val))
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return response
69
+ }
package/src/static.ts ADDED
@@ -0,0 +1,15 @@
1
+ // only stuff that gets extracted or needed by tamagui-static
2
+
3
+ export * from './index'
4
+
5
+ // for static
6
+
7
+ export {
8
+ createDOMProps,
9
+ useElementLayout,
10
+ useMergeRefs,
11
+ usePlatformMethods,
12
+ useResponderEvents,
13
+ } from '@tamagui/rnw'
14
+
15
+ export * from './helpers/proxyThemeVariables'
package/src/styled.tsx ADDED
@@ -0,0 +1,135 @@
1
+ import { Image, Text, TextInput } from 'react-native'
2
+
3
+ import { createComponent } from './createComponent'
4
+ import { RNComponents } from './helpers/RNComponents'
5
+ import {
6
+ GetProps,
7
+ GetVariantValues,
8
+ MediaProps,
9
+ PseudoProps,
10
+ StaticConfig,
11
+ StylableComponent,
12
+ TamaguiComponent,
13
+ VariantDefinitions,
14
+ VariantSpreadFunction,
15
+ } from './types'
16
+
17
+ // TODO may be able to use this in the options?: arg below directly
18
+ export type StyledOptions<ParentComponent extends StylableComponent> = GetProps<ParentComponent> & {
19
+ name?: string
20
+ variants?: VariantDefinitions<ParentComponent> | undefined
21
+ defaultVariants?: { [key: string]: any }
22
+ }
23
+
24
+ export function styled<
25
+ ParentComponent extends StylableComponent,
26
+ Variants extends VariantDefinitions<ParentComponent> | void = VariantDefinitions<ParentComponent> | void
27
+ >(
28
+ Component: ParentComponent,
29
+ // this should be Partial<GetProps<ParentComponent>> but causes excessively deep type issues
30
+ options?: GetProps<ParentComponent> & {
31
+ name?: string
32
+ variants?: Variants | undefined
33
+ // thought i had this typed, but can't get it linked
34
+ defaultVariants?: { [key: string]: any }
35
+ },
36
+ staticExtractionOptions?: Partial<StaticConfig>
37
+ ) {
38
+ const staticConfigProps = (() => {
39
+ const parentStaticConfig =
40
+ 'staticConfig' in Component ? (Component.staticConfig as StaticConfig) : null
41
+ if (options) {
42
+ const { variants, name, defaultVariants, ...defaultProps } = options
43
+ if (defaultVariants) {
44
+ Object.assign(defaultProps, defaultVariants)
45
+ }
46
+ const isReactNativeWeb = parentStaticConfig?.isReactNativeWeb || RNComponents.has(Component)
47
+ const reactNativeWebComponent = isReactNativeWeb
48
+ ? parentStaticConfig?.reactNativeWebComponent || Component
49
+ : null
50
+ const isTamagui = !isReactNativeWeb && !!parentStaticConfig
51
+ const Comp = reactNativeWebComponent || (Component as any)
52
+ const isImage = !!(defaultProps.isImage || (!isTamagui ? Comp === Image : false))
53
+ const isInput = !!(defaultProps.isInput || (!isTamagui ? Comp === TextInput : false))
54
+ const isText = !!(defaultProps.isText || (!isTamagui ? isInput || Comp === Text : false))
55
+
56
+ const conf: Partial<StaticConfig> = {
57
+ ...staticExtractionOptions,
58
+ ...(!isTamagui && {
59
+ Component: Comp,
60
+ }),
61
+ isTamagui,
62
+ // this type gets messed up by options?: Partial<GetProps<ParentComponent>> above
63
+ // take away the Partial<> and it's fine
64
+ variants,
65
+ defaultProps,
66
+ defaultVariants,
67
+ componentName: name,
68
+ isReactNativeWeb,
69
+ // for nesting multiple levels of rnw styled() need keep use the OG component
70
+ reactNativeWebComponent,
71
+ isInput,
72
+ isText,
73
+ isImage,
74
+ }
75
+
76
+ return conf
77
+ }
78
+ return {}
79
+ })()
80
+
81
+ const component = createComponent(staticConfigProps, Component)
82
+
83
+ // get parent props without pseudos and medias so we can rebuild both with new variants
84
+ type ParentPropsBase = ParentComponent extends TamaguiComponent<any, any, infer P>
85
+ ? P
86
+ : GetProps<ParentComponent>
87
+ type ParentVariants = ParentComponent extends TamaguiComponent<any, any, any, infer V> ? V : {}
88
+
89
+ type OurVariants = Variants extends void
90
+ ? {}
91
+ : {
92
+ [Key in keyof Variants]?: Variants[Key] extends VariantSpreadFunction<any, infer Val>
93
+ ? Val
94
+ : GetVariantValues<keyof Variants[Key]>
95
+ }
96
+
97
+ type VariantProps = Omit<ParentVariants, keyof OurVariants> & OurVariants
98
+ type OurPropsBase = ParentPropsBase & VariantProps
99
+
100
+ type Props = Variants extends void
101
+ ? GetProps<ParentComponent>
102
+ : // start with base props
103
+ OurPropsBase &
104
+ // add in media (+ pseudos nested)
105
+ MediaProps<Partial<OurPropsBase>> &
106
+ // add in pseudos
107
+ PseudoProps<Partial<OurPropsBase>>
108
+
109
+ return component as TamaguiComponent<
110
+ Props,
111
+ // TODO infer ref
112
+ any,
113
+ ParentPropsBase,
114
+ ParentVariants & OurVariants
115
+ >
116
+ }
117
+
118
+ // import { Stack } from './views/Stack'
119
+ // const X = styled(Stack, {
120
+ // variants: {
121
+ // size: {
122
+ // '...size': (val) => {
123
+ // return {}
124
+ // }
125
+ // },
126
+ // disabled: {
127
+ // true: {
128
+ // opacity: 0.5,
129
+ // pointerEvents: 'none',
130
+ // },
131
+ // },
132
+ // }
133
+ // })
134
+ // type variants = GetStyledVariants<typeof X>
135
+ // const y = <X disabled size="$10" />
@@ -0,0 +1,162 @@
1
+ // The following list is sourced from:
2
+ // - https://github.com/necolas/react-native-web/blob/0.17.5/packages/react-native-web/src/types/styles.js#L76
3
+ type RNWCursorValue =
4
+ | 'alias'
5
+ | 'all-scroll'
6
+ | 'auto'
7
+ | 'cell'
8
+ | 'context-menu'
9
+ | 'copy'
10
+ | 'crosshair'
11
+ | 'default'
12
+ | 'grab'
13
+ | 'grabbing'
14
+ | 'help'
15
+ | 'pointer'
16
+ | 'progress'
17
+ | 'wait'
18
+ | 'text'
19
+ | 'vertical-text'
20
+ | 'move'
21
+ | 'none'
22
+ | 'no-drop'
23
+ | 'not-allowed'
24
+ | 'zoom-in'
25
+ | 'zoom-out'
26
+ | 'col-resize'
27
+ | 'e-resize'
28
+ | 'ew-resize'
29
+ | 'n-resize'
30
+ | 'ne-resize'
31
+ | 'ns-resize'
32
+ | 'nw-resize'
33
+ | 'row-resize'
34
+ | 's-resize'
35
+ | 'se-resize'
36
+ | 'sw-resize'
37
+ | 'w-resize'
38
+ | 'nesw-resize'
39
+ | 'nwse-resize'
40
+
41
+ // This list is the combination of the following two lists:
42
+ // - https://github.com/necolas/react-native-web/blob/0.17.5/packages/react-native-web/src/modules/AccessibilityUtil/propsToAriaRole.js#L10
43
+ // - https://github.com/necolas/react-native-web/blob/0.17.5/packages/react-native-web/src/modules/AccessibilityUtil/propsToAccessibilityComponent.js#L12
44
+ // Plus the single hard-coded value "label" from here:
45
+ // - https://github.com/necolas/react-native-web/blob/0.17.5/packages/react-native-web/src/modules/AccessibilityUtil/propsToAccessibilityComponent.js#L36
46
+ type RNWWebAccessibilityRole =
47
+ | 'adjustable'
48
+ | 'article'
49
+ | 'banner'
50
+ | 'blockquote'
51
+ | 'button'
52
+ | 'code'
53
+ | 'complementary'
54
+ | 'contentinfo'
55
+ | 'deletion'
56
+ | 'emphasis'
57
+ | 'figure'
58
+ | 'form'
59
+ | 'header'
60
+ | 'image'
61
+ | 'imagebutton'
62
+ | 'insertion'
63
+ | 'keyboardkey'
64
+ | 'label'
65
+ | 'link'
66
+ | 'list'
67
+ | 'listitem'
68
+ | 'main'
69
+ | 'navigation'
70
+ | 'none'
71
+ | 'region'
72
+ | 'search'
73
+ | 'strong'
74
+ | 'summary'
75
+ | 'text'
76
+
77
+ export interface RNWViewProps {
78
+ // our internal hack to pass className down (until styleq transition)
79
+ dataSet?: any
80
+
81
+ // TODO get proper types:
82
+ target?: any
83
+ rel?: any
84
+ download?: any
85
+
86
+ accessibilityRole?: RNWWebAccessibilityRole
87
+ href?: string
88
+ hrefAttrs?: {
89
+ target?: '_blank' | '_self' | '_top' | 'blank' | 'self' | 'top'
90
+ rel?: string
91
+ download?: boolean
92
+ }
93
+ onMouseDown?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
94
+ onMouseUp?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
95
+ onMouseEnter?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
96
+ onMouseLeave?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
97
+ onFocus?: (event: React.FocusEvent<HTMLDivElement>) => void
98
+ onScroll?: (event: React.UIEvent<HTMLDivElement, UIEvent>) => void
99
+ // For compatibility with RNW internals
100
+ onScrollShouldSetResponder?: unknown
101
+ onScrollShouldSetResponderCapture?: unknown
102
+ onSelectionChangeShouldSetResponder?: unknown
103
+ onSelectionChangeShouldSetResponderCapture?: unknown
104
+ }
105
+
106
+ export interface RNWTextProps {
107
+ dir?: 'ltr' | 'rtl' | 'auto'
108
+ focusable?: boolean
109
+ accessibilityRole?: RNWWebAccessibilityRole
110
+ accessibilityState?: {
111
+ busy?: boolean
112
+ checked?: boolean | 'mixed'
113
+ disabled?: boolean
114
+ expanded?: boolean
115
+ grabbed?: boolean
116
+ hidden?: boolean
117
+ invalid?: boolean
118
+ pressed?: boolean
119
+ readonly?: boolean
120
+ required?: boolean
121
+ selected?: boolean
122
+ }
123
+ href?: string
124
+ // TODO hrefAttrs or come up with proper html escape hatch
125
+ // hrefAttrs?: {
126
+ // target?: '_blank' | '_self' | '_top' | 'blank' | 'self' | 'top'
127
+ // rel?: string
128
+ // download?: boolean
129
+ // }
130
+ onMouseEnter?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
131
+ onMouseLeave?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
132
+ onFocus?: (event: React.FocusEvent<HTMLDivElement>) => void
133
+ // For compatibility with RNW internals
134
+ onMoveShouldSetResponder?: unknown
135
+ onMoveShouldSetResponderCapture?: unknown
136
+ onResponderEnd?: unknown
137
+ onResponderGrant?: unknown
138
+ onResponderMove?: unknown
139
+ onResponderReject?: unknown
140
+ onResponderRelease?: unknown
141
+ onResponderStart?: unknown
142
+ onResponderTerminate?: unknown
143
+ onResponderTerminationRequest?: unknown
144
+ onScrollShouldSetResponder?: unknown
145
+ onScrollShouldSetResponderCapture?: unknown
146
+ onSelectionChangeShouldSetResponder?: unknown
147
+ onSelectionChangeShouldSetResponderCapture?: unknown
148
+ onStartShouldSetResponder?: unknown
149
+ onStartShouldSetResponderCapture?: unknown
150
+ }
151
+
152
+ export interface RNWViewStyle {
153
+ cursor?: RNWCursorValue
154
+ transitionProperty?: string
155
+ display?: 'flex' | 'inline-flex' | 'none'
156
+ }
157
+
158
+ export interface RNWTextStyle {
159
+ // The following list is sourced from:
160
+ // - https://github.com/necolas/react-native-web/blob/0.17.5/packages/react-native-web/src/types/styles.js#L128
161
+ userSelect?: 'all' | 'auto' | 'contain' | 'none' | 'text'
162
+ }