@tamagui/core 1.0.1-beta.139 → 1.0.1-beta.142

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 (640) hide show
  1. package/dist/cjs/Tamagui.js +2 -2
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/addTheme.js +28 -22
  4. package/dist/cjs/addTheme.js.map +2 -2
  5. package/dist/cjs/conf.js +0 -0
  6. package/dist/cjs/conf.js.map +0 -0
  7. package/dist/cjs/config.js +75 -0
  8. package/dist/cjs/config.js.map +7 -0
  9. package/dist/cjs/constants/constants.js +0 -0
  10. package/dist/cjs/constants/constants.js.map +0 -0
  11. package/dist/cjs/constants/platform.js +7 -1
  12. package/dist/cjs/constants/platform.js.map +2 -2
  13. package/dist/cjs/constants/platform.native.js +62 -0
  14. package/dist/cjs/constants/platform.native.js.map +7 -0
  15. package/dist/cjs/contexts/ButtonInsideButtonContext.js +0 -0
  16. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +0 -0
  17. package/dist/cjs/contexts/FontLanguageContext.js +0 -0
  18. package/dist/cjs/contexts/FontLanguageContext.js.map +0 -0
  19. package/dist/cjs/contexts/TextAncestorContext.js +0 -0
  20. package/dist/cjs/contexts/TextAncestorContext.js.map +0 -0
  21. package/dist/cjs/contexts/ThemeContext.js +0 -0
  22. package/dist/cjs/contexts/ThemeContext.js.map +0 -0
  23. package/dist/cjs/createComponent.js +77 -71
  24. package/dist/cjs/createComponent.js.map +2 -2
  25. package/dist/cjs/createComponent.server.js +431 -0
  26. package/dist/cjs/createComponent.server.js.map +7 -0
  27. package/dist/cjs/createFont.js +0 -0
  28. package/dist/cjs/createFont.js.map +0 -0
  29. package/dist/cjs/createShorthands.js +0 -0
  30. package/dist/cjs/createShorthands.js.map +0 -0
  31. package/dist/cjs/createTamagui.js +31 -32
  32. package/dist/cjs/createTamagui.js.map +2 -2
  33. package/dist/cjs/createTheme.js +0 -0
  34. package/dist/cjs/createTheme.js.map +0 -0
  35. package/dist/cjs/createTokens.js +0 -0
  36. package/dist/cjs/createTokens.js.map +0 -0
  37. package/dist/cjs/createVariable.js +21 -35
  38. package/dist/cjs/createVariable.js.map +2 -2
  39. package/dist/cjs/createVariables.js +5 -2
  40. package/dist/cjs/createVariables.js.map +2 -2
  41. package/dist/cjs/helpers/RNComponents.js +11 -11
  42. package/dist/cjs/helpers/RNComponents.js.map +2 -2
  43. package/dist/cjs/helpers/ThemeManager.js +7 -9
  44. package/dist/cjs/helpers/ThemeManager.js.map +2 -2
  45. package/dist/cjs/helpers/areEqualSets.js +0 -0
  46. package/dist/cjs/helpers/areEqualSets.js.map +0 -0
  47. package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -1
  48. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +2 -2
  49. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +0 -0
  50. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +0 -0
  51. package/dist/cjs/helpers/calc.js +0 -0
  52. package/dist/cjs/helpers/calc.js.map +0 -0
  53. package/dist/cjs/helpers/createMediaStyle.js +0 -0
  54. package/dist/cjs/helpers/createMediaStyle.js.map +0 -0
  55. package/dist/cjs/helpers/createPropMapper.js +3 -3
  56. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  57. package/dist/cjs/helpers/createShallowUpdate.js +0 -0
  58. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -0
  59. package/dist/cjs/helpers/cssHash.js +0 -0
  60. package/dist/cjs/helpers/cssHash.js.map +0 -0
  61. package/dist/cjs/helpers/expandStyle.js +0 -0
  62. package/dist/cjs/helpers/expandStyle.js.map +0 -0
  63. package/dist/cjs/helpers/expandStyles.js +4 -4
  64. package/dist/cjs/helpers/expandStyles.js.map +2 -2
  65. package/dist/cjs/helpers/extendStaticConfig.js +0 -0
  66. package/dist/cjs/helpers/extendStaticConfig.js.map +0 -0
  67. package/dist/cjs/helpers/fixNativeShadow.js +0 -0
  68. package/dist/cjs/helpers/fixNativeShadow.js.map +0 -0
  69. package/dist/cjs/{Pressability.js → helpers/getAnimationDriver.js} +10 -10
  70. package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
  71. package/dist/cjs/helpers/getExpandedShorthands.js +3 -3
  72. package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
  73. package/dist/cjs/helpers/getFont.js +1 -1
  74. package/dist/cjs/helpers/getFont.js.map +2 -2
  75. package/dist/cjs/helpers/getFontLanguage.js +0 -0
  76. package/dist/cjs/helpers/getFontLanguage.js.map +0 -0
  77. package/dist/cjs/helpers/getSize.js +2 -2
  78. package/dist/cjs/helpers/getSize.js.map +2 -2
  79. package/dist/cjs/helpers/getSplitStyles.js +12 -13
  80. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  81. package/dist/cjs/helpers/getStackSize.js +0 -0
  82. package/dist/cjs/helpers/getStackSize.js.map +0 -0
  83. package/dist/cjs/helpers/getStylesAtomic.js +6 -4
  84. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  85. package/dist/cjs/helpers/getStylesAtomic.native.js +0 -0
  86. package/dist/cjs/helpers/getStylesAtomic.native.js.map +0 -0
  87. package/dist/cjs/helpers/getThemeCSSRules.js +0 -0
  88. package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -0
  89. package/dist/cjs/helpers/getThemeCSSRules.native.js +0 -0
  90. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +0 -0
  91. package/dist/cjs/helpers/getVariantExtras.js +2 -2
  92. package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
  93. package/dist/cjs/helpers/insertStyleRule.js +0 -0
  94. package/dist/cjs/helpers/insertStyleRule.js.map +0 -0
  95. package/dist/cjs/helpers/isObj.js +0 -0
  96. package/dist/cjs/helpers/isObj.js.map +0 -0
  97. package/dist/cjs/helpers/isTamaguiComponent.js +0 -0
  98. package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -0
  99. package/dist/cjs/helpers/isTamaguiElement.js +0 -0
  100. package/dist/cjs/helpers/isTamaguiElement.js.map +0 -0
  101. package/dist/cjs/helpers/matchMedia.js +0 -0
  102. package/dist/cjs/helpers/matchMedia.js.map +0 -0
  103. package/dist/cjs/helpers/matchMedia.native.js +0 -0
  104. package/dist/cjs/helpers/matchMedia.native.js.map +0 -0
  105. package/dist/cjs/helpers/mergeProps.js +0 -0
  106. package/dist/cjs/helpers/mergeProps.js.map +0 -0
  107. package/dist/cjs/helpers/mergeTransform.js +0 -0
  108. package/dist/cjs/helpers/mergeTransform.js.map +0 -0
  109. package/dist/cjs/helpers/normalizeColor.js +2 -2
  110. package/dist/cjs/helpers/normalizeColor.js.map +2 -2
  111. package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -0
  112. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
  113. package/dist/cjs/helpers/proxyThemeVariables.js +0 -0
  114. package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -0
  115. package/dist/cjs/helpers/pseudoDescriptors.js +0 -0
  116. package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -0
  117. package/dist/cjs/helpers/registerCSSVariable.js +0 -0
  118. package/dist/cjs/helpers/registerCSSVariable.js.map +2 -2
  119. package/dist/cjs/helpers/startTransition.js +0 -0
  120. package/dist/cjs/helpers/startTransition.js.map +0 -0
  121. package/dist/cjs/helpers/themeable.js +0 -0
  122. package/dist/cjs/helpers/themeable.js.map +0 -0
  123. package/dist/cjs/helpers/themes.js +0 -0
  124. package/dist/cjs/helpers/themes.js.map +0 -0
  125. package/dist/cjs/helpers/useAnimationDriver.js +2 -0
  126. package/dist/cjs/{defaultComponentState.js.map → helpers/useAnimationDriver.js.map} +0 -0
  127. package/dist/cjs/helpers/validate.js +0 -0
  128. package/dist/cjs/helpers/validate.js.map +0 -0
  129. package/dist/cjs/helpers/withStaticProperties.js +0 -0
  130. package/dist/cjs/helpers/withStaticProperties.js.map +0 -0
  131. package/dist/cjs/hooks/getThemeUnwrapped.js +2 -0
  132. package/dist/cjs/hooks/getThemeUnwrapped.js.map +2 -2
  133. package/dist/cjs/hooks/useAnimationDriver.js +2 -0
  134. package/dist/{esm/defaultComponentState.js.map → cjs/hooks/useAnimationDriver.js.map} +0 -0
  135. package/dist/cjs/hooks/useConstant.js +3 -0
  136. package/dist/cjs/hooks/useConstant.js.map +2 -2
  137. package/dist/cjs/hooks/useFeatures.js +10 -2
  138. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  139. package/dist/cjs/hooks/useId.js +0 -0
  140. package/dist/cjs/hooks/useId.js.map +0 -0
  141. package/dist/cjs/hooks/useIsMounted.js +0 -0
  142. package/dist/cjs/hooks/useIsMounted.js.map +0 -0
  143. package/dist/cjs/hooks/useIsSSR.js +2 -2
  144. package/dist/cjs/hooks/useIsSSR.js.map +2 -2
  145. package/dist/cjs/hooks/useIsTouchDevice.js +0 -0
  146. package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -0
  147. package/dist/cjs/hooks/useMedia.js +0 -0
  148. package/dist/cjs/hooks/useMedia.js.map +0 -0
  149. package/dist/cjs/hooks/usePressable.js +0 -0
  150. package/dist/cjs/hooks/usePressable.js.map +0 -0
  151. package/dist/cjs/hooks/useSafeRef.js +0 -0
  152. package/dist/cjs/hooks/useSafeRef.js.map +0 -0
  153. package/dist/cjs/{helpers/nativeGestureHandler.native.js → hooks/useServerContext.js} +8 -6
  154. package/dist/cjs/hooks/useServerContext.js.map +7 -0
  155. package/dist/cjs/{ThemeContext.js → hooks/useServerHooks.js} +13 -7
  156. package/dist/cjs/hooks/useServerHooks.js.map +7 -0
  157. package/dist/cjs/hooks/useTheme.js +72 -44
  158. package/dist/cjs/hooks/useTheme.js.map +2 -2
  159. package/dist/cjs/hooks/useUnmountEffect.js +0 -0
  160. package/dist/cjs/hooks/useUnmountEffect.js.map +0 -0
  161. package/dist/cjs/index.js +8 -6
  162. package/dist/cjs/index.js.map +2 -2
  163. package/dist/cjs/{Pressability.native.js → injectStyles.js} +18 -10
  164. package/dist/cjs/injectStyles.js.map +7 -0
  165. package/dist/cjs/insertFont.js +2 -2
  166. package/dist/cjs/insertFont.js.map +2 -2
  167. package/dist/cjs/static.js +0 -0
  168. package/dist/cjs/static.js.map +0 -0
  169. package/dist/cjs/styled.js +11 -1
  170. package/dist/cjs/styled.js.map +2 -2
  171. package/dist/cjs/types-rnw.js +0 -0
  172. package/dist/cjs/types-rnw.js.map +0 -0
  173. package/dist/cjs/types.js +0 -0
  174. package/dist/cjs/types.js.map +1 -1
  175. package/dist/cjs/updateTheme.js +0 -0
  176. package/dist/cjs/updateTheme.js.map +0 -0
  177. package/dist/cjs/vendor/Pressability.js +0 -0
  178. package/dist/cjs/vendor/Pressability.js.map +0 -0
  179. package/dist/cjs/vendor/Pressability.native.js +0 -0
  180. package/dist/cjs/vendor/Pressability.native.js.map +0 -0
  181. package/dist/cjs/views/FontLanguage.js +0 -0
  182. package/dist/cjs/views/FontLanguage.js.map +0 -0
  183. package/dist/cjs/views/FontLanguage.native.js +0 -0
  184. package/dist/cjs/views/FontLanguage.native.js.map +0 -0
  185. package/dist/cjs/views/FontLanguage.types.js +0 -0
  186. package/dist/cjs/views/FontLanguage.types.js.map +0 -0
  187. package/dist/cjs/views/Slot.js +0 -0
  188. package/dist/cjs/views/Slot.js.map +0 -0
  189. package/dist/cjs/views/Stack.js +0 -0
  190. package/dist/cjs/views/Stack.js.map +0 -0
  191. package/dist/cjs/{helpers/createTamaguiProvider.js → views/TamaguiProvider.js} +41 -35
  192. package/dist/cjs/views/TamaguiProvider.js.map +7 -0
  193. package/dist/cjs/views/Text.js +0 -0
  194. package/dist/cjs/views/Text.js.map +0 -0
  195. package/dist/cjs/views/Theme.js +4 -3
  196. package/dist/cjs/views/Theme.js.map +2 -2
  197. package/dist/cjs/views/ThemeInverse.js +0 -0
  198. package/dist/cjs/views/ThemeInverse.js.map +0 -0
  199. package/dist/cjs/views/ThemeProvider.js +10 -6
  200. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  201. package/dist/cjs/views/ThemeReset.js +0 -0
  202. package/dist/cjs/views/ThemeReset.js.map +0 -0
  203. package/dist/esm/Tamagui.js +1 -1
  204. package/dist/esm/Tamagui.js.map +1 -1
  205. package/dist/esm/addTheme.js +27 -21
  206. package/dist/esm/addTheme.js.map +2 -2
  207. package/dist/esm/conf.js +0 -0
  208. package/dist/esm/conf.js.map +0 -0
  209. package/dist/esm/config.js +43 -0
  210. package/dist/esm/config.js.map +7 -0
  211. package/dist/esm/constants/constants.js +0 -0
  212. package/dist/esm/constants/constants.js.map +0 -0
  213. package/dist/esm/constants/platform.js +5 -1
  214. package/dist/esm/constants/platform.js.map +2 -2
  215. package/dist/esm/constants/platform.native.js +28 -0
  216. package/dist/esm/constants/platform.native.js.map +7 -0
  217. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -0
  218. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +0 -0
  219. package/dist/esm/contexts/FontLanguageContext.js +0 -0
  220. package/dist/esm/contexts/FontLanguageContext.js.map +0 -0
  221. package/dist/esm/contexts/TextAncestorContext.js +0 -0
  222. package/dist/esm/contexts/TextAncestorContext.js.map +0 -0
  223. package/dist/esm/contexts/ThemeContext.js +0 -0
  224. package/dist/esm/contexts/ThemeContext.js.map +0 -0
  225. package/dist/esm/createComponent.js +77 -73
  226. package/dist/esm/createComponent.js.map +2 -2
  227. package/dist/esm/createComponent.server.js +408 -0
  228. package/dist/esm/createComponent.server.js.map +7 -0
  229. package/dist/esm/createFont.js +0 -0
  230. package/dist/esm/createFont.js.map +0 -0
  231. package/dist/esm/createShorthands.js +0 -0
  232. package/dist/esm/createShorthands.js.map +0 -0
  233. package/dist/esm/createTamagui.js +30 -31
  234. package/dist/esm/createTamagui.js.map +2 -2
  235. package/dist/esm/createTheme.js +0 -0
  236. package/dist/esm/createTheme.js.map +0 -0
  237. package/dist/esm/createTokens.js +0 -0
  238. package/dist/esm/createTokens.js.map +0 -0
  239. package/dist/esm/createVariable.js +19 -33
  240. package/dist/esm/createVariable.js.map +2 -2
  241. package/dist/esm/createVariables.js +5 -2
  242. package/dist/esm/createVariables.js.map +2 -2
  243. package/dist/esm/helpers/RNComponents.js +11 -8
  244. package/dist/esm/helpers/RNComponents.js.map +2 -2
  245. package/dist/esm/helpers/ThemeManager.js +6 -8
  246. package/dist/esm/helpers/ThemeManager.js.map +2 -2
  247. package/dist/esm/helpers/areEqualSets.js +0 -0
  248. package/dist/esm/helpers/areEqualSets.js.map +0 -0
  249. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -1
  250. package/dist/esm/helpers/assignNativePropsToWeb.js.map +2 -2
  251. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -0
  252. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +0 -0
  253. package/dist/esm/helpers/calc.js +0 -0
  254. package/dist/esm/helpers/calc.js.map +0 -0
  255. package/dist/esm/helpers/createMediaStyle.js +0 -0
  256. package/dist/esm/helpers/createMediaStyle.js.map +0 -0
  257. package/dist/esm/helpers/createPropMapper.js +2 -2
  258. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  259. package/dist/esm/helpers/createShallowUpdate.js +0 -0
  260. package/dist/esm/helpers/createShallowUpdate.js.map +0 -0
  261. package/dist/esm/helpers/cssHash.js +0 -0
  262. package/dist/esm/helpers/cssHash.js.map +0 -0
  263. package/dist/esm/helpers/expandStyle.js +0 -0
  264. package/dist/esm/helpers/expandStyle.js.map +0 -0
  265. package/dist/esm/helpers/expandStyles.js +3 -3
  266. package/dist/esm/helpers/expandStyles.js.map +2 -2
  267. package/dist/esm/helpers/extendStaticConfig.js +0 -0
  268. package/dist/esm/helpers/extendStaticConfig.js.map +0 -0
  269. package/dist/esm/helpers/fixNativeShadow.js +0 -0
  270. package/dist/esm/helpers/fixNativeShadow.js.map +0 -0
  271. package/dist/esm/helpers/getAnimationDriver.js +8 -0
  272. package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
  273. package/dist/esm/helpers/getExpandedShorthands.js +2 -2
  274. package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
  275. package/dist/esm/helpers/getFont.js +1 -1
  276. package/dist/esm/helpers/getFont.js.map +2 -2
  277. package/dist/esm/helpers/getFontLanguage.js +0 -0
  278. package/dist/esm/helpers/getFontLanguage.js.map +0 -0
  279. package/dist/esm/helpers/getSize.js +1 -1
  280. package/dist/esm/helpers/getSize.js.map +1 -1
  281. package/dist/esm/helpers/getSplitStyles.js +12 -13
  282. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  283. package/dist/esm/helpers/getStackSize.js +0 -0
  284. package/dist/esm/helpers/getStackSize.js.map +0 -0
  285. package/dist/esm/helpers/getStylesAtomic.js +5 -3
  286. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  287. package/dist/esm/helpers/getStylesAtomic.native.js +0 -0
  288. package/dist/esm/helpers/getStylesAtomic.native.js.map +0 -0
  289. package/dist/esm/helpers/getThemeCSSRules.js +0 -0
  290. package/dist/esm/helpers/getThemeCSSRules.js.map +0 -0
  291. package/dist/esm/helpers/getThemeCSSRules.native.js +0 -0
  292. package/dist/esm/helpers/getThemeCSSRules.native.js.map +0 -0
  293. package/dist/esm/helpers/getVariantExtras.js +1 -1
  294. package/dist/esm/helpers/getVariantExtras.js.map +1 -1
  295. package/dist/esm/helpers/insertStyleRule.js +0 -0
  296. package/dist/esm/helpers/insertStyleRule.js.map +0 -0
  297. package/dist/esm/helpers/isObj.js +0 -0
  298. package/dist/esm/helpers/isObj.js.map +0 -0
  299. package/dist/esm/helpers/isTamaguiComponent.js +0 -0
  300. package/dist/esm/helpers/isTamaguiComponent.js.map +0 -0
  301. package/dist/esm/helpers/isTamaguiElement.js +0 -0
  302. package/dist/esm/helpers/isTamaguiElement.js.map +0 -0
  303. package/dist/esm/helpers/matchMedia.js +0 -0
  304. package/dist/esm/helpers/matchMedia.js.map +0 -0
  305. package/dist/esm/helpers/matchMedia.native.js +0 -0
  306. package/dist/esm/helpers/matchMedia.native.js.map +0 -0
  307. package/dist/esm/helpers/mergeProps.js +0 -0
  308. package/dist/esm/helpers/mergeProps.js.map +0 -0
  309. package/dist/esm/helpers/mergeTransform.js +0 -0
  310. package/dist/esm/helpers/mergeTransform.js.map +0 -0
  311. package/dist/esm/helpers/normalizeColor.js +1 -1
  312. package/dist/esm/helpers/normalizeColor.js.map +1 -1
  313. package/dist/esm/helpers/normalizeValueWithProperty.js +0 -0
  314. package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
  315. package/dist/esm/helpers/proxyThemeVariables.js +0 -0
  316. package/dist/esm/helpers/proxyThemeVariables.js.map +0 -0
  317. package/dist/esm/helpers/pseudoDescriptors.js +0 -0
  318. package/dist/esm/helpers/pseudoDescriptors.js.map +0 -0
  319. package/dist/esm/helpers/registerCSSVariable.js +0 -0
  320. package/dist/esm/helpers/registerCSSVariable.js.map +2 -2
  321. package/dist/esm/helpers/startTransition.js +0 -0
  322. package/dist/esm/helpers/startTransition.js.map +0 -0
  323. package/dist/esm/helpers/themeable.js +0 -0
  324. package/dist/esm/helpers/themeable.js.map +0 -0
  325. package/dist/esm/helpers/themes.js +0 -0
  326. package/dist/esm/helpers/themes.js.map +0 -0
  327. package/dist/esm/helpers/useAnimationDriver.js +1 -0
  328. package/dist/esm/helpers/useAnimationDriver.js.map +7 -0
  329. package/dist/esm/helpers/validate.js +0 -0
  330. package/dist/esm/helpers/validate.js.map +0 -0
  331. package/dist/esm/helpers/withStaticProperties.js +0 -0
  332. package/dist/esm/helpers/withStaticProperties.js.map +0 -0
  333. package/dist/esm/hooks/getThemeUnwrapped.js +2 -0
  334. package/dist/esm/hooks/getThemeUnwrapped.js.map +2 -2
  335. package/dist/esm/hooks/useAnimationDriver.js +1 -0
  336. package/dist/esm/hooks/useAnimationDriver.js.map +7 -0
  337. package/dist/esm/hooks/useConstant.js +4 -1
  338. package/dist/esm/hooks/useConstant.js.map +2 -2
  339. package/dist/esm/hooks/useFeatures.js +9 -1
  340. package/dist/esm/hooks/useFeatures.js.map +2 -2
  341. package/dist/esm/hooks/useId.js +0 -0
  342. package/dist/esm/hooks/useId.js.map +0 -0
  343. package/dist/esm/hooks/useIsMounted.js +0 -0
  344. package/dist/esm/hooks/useIsMounted.js.map +0 -0
  345. package/dist/esm/hooks/useIsSSR.js +4 -4
  346. package/dist/esm/hooks/useIsSSR.js.map +2 -2
  347. package/dist/esm/hooks/useIsTouchDevice.js +0 -0
  348. package/dist/esm/hooks/useIsTouchDevice.js.map +0 -0
  349. package/dist/esm/hooks/useMedia.js +0 -0
  350. package/dist/esm/hooks/useMedia.js.map +0 -0
  351. package/dist/esm/hooks/usePressable.js +0 -0
  352. package/dist/esm/hooks/usePressable.js.map +0 -0
  353. package/dist/esm/hooks/useSafeRef.js +0 -0
  354. package/dist/esm/hooks/useSafeRef.js.map +0 -0
  355. package/dist/esm/hooks/useServerContext.js +4 -0
  356. package/dist/esm/hooks/useServerContext.js.map +7 -0
  357. package/dist/esm/hooks/useServerHooks.js +11 -0
  358. package/dist/esm/hooks/useServerHooks.js.map +7 -0
  359. package/dist/esm/hooks/useTheme.js +73 -45
  360. package/dist/esm/hooks/useTheme.js.map +2 -2
  361. package/dist/esm/hooks/useUnmountEffect.js +0 -0
  362. package/dist/esm/hooks/useUnmountEffect.js.map +0 -0
  363. package/dist/esm/index.js +3 -1
  364. package/dist/esm/index.js.map +2 -2
  365. package/dist/esm/injectStyles.js +16 -0
  366. package/dist/esm/injectStyles.js.map +7 -0
  367. package/dist/esm/insertFont.js +1 -1
  368. package/dist/esm/insertFont.js.map +1 -1
  369. package/dist/esm/static.js +0 -0
  370. package/dist/esm/static.js.map +0 -0
  371. package/dist/esm/styled.js +11 -1
  372. package/dist/esm/styled.js.map +2 -2
  373. package/dist/esm/types-rnw.js +0 -0
  374. package/dist/esm/types-rnw.js.map +0 -0
  375. package/dist/esm/types.js +0 -0
  376. package/dist/esm/types.js.map +0 -0
  377. package/dist/esm/updateTheme.js +0 -0
  378. package/dist/esm/updateTheme.js.map +0 -0
  379. package/dist/esm/vendor/Pressability.js +0 -0
  380. package/dist/esm/vendor/Pressability.js.map +0 -0
  381. package/dist/esm/vendor/Pressability.native.js +0 -0
  382. package/dist/esm/vendor/Pressability.native.js.map +0 -0
  383. package/dist/esm/views/FontLanguage.js +0 -0
  384. package/dist/esm/views/FontLanguage.js.map +0 -0
  385. package/dist/esm/views/FontLanguage.native.js +0 -0
  386. package/dist/esm/views/FontLanguage.native.js.map +0 -0
  387. package/dist/esm/views/FontLanguage.types.js +0 -0
  388. package/dist/esm/views/FontLanguage.types.js.map +0 -0
  389. package/dist/esm/views/Slot.js +0 -0
  390. package/dist/esm/views/Slot.js.map +0 -0
  391. package/dist/esm/views/Stack.js +0 -0
  392. package/dist/esm/views/Stack.js.map +0 -0
  393. package/dist/esm/views/TamaguiProvider.js +46 -0
  394. package/dist/esm/views/TamaguiProvider.js.map +7 -0
  395. package/dist/esm/views/Text.js +0 -0
  396. package/dist/esm/views/Text.js.map +0 -0
  397. package/dist/esm/views/Theme.js +4 -3
  398. package/dist/esm/views/Theme.js.map +2 -2
  399. package/dist/esm/views/ThemeInverse.js +0 -0
  400. package/dist/esm/views/ThemeInverse.js.map +0 -0
  401. package/dist/esm/views/ThemeProvider.js +10 -6
  402. package/dist/esm/views/ThemeProvider.js.map +2 -2
  403. package/dist/esm/views/ThemeReset.js +0 -0
  404. package/dist/esm/views/ThemeReset.js.map +0 -0
  405. package/package.json +36 -14
  406. package/src/Tamagui.ts +44 -0
  407. package/src/addTheme.ts +66 -0
  408. package/src/config.ts +38 -0
  409. package/src/constants/constants.ts +15 -0
  410. package/src/constants/platform.native.ts +14 -0
  411. package/src/constants/platform.ts +24 -0
  412. package/src/contexts/ButtonInsideButtonContext.tsx +3 -0
  413. package/src/contexts/FontLanguageContext.tsx +5 -0
  414. package/src/contexts/TextAncestorContext.tsx +10 -0
  415. package/src/contexts/ThemeContext.tsx +5 -0
  416. package/src/createComponent.tsx +1338 -0
  417. package/src/createFont.ts +26 -0
  418. package/src/createShorthands.ts +5 -0
  419. package/src/createTamagui.ts +232 -0
  420. package/src/createTheme.ts +13 -0
  421. package/src/createTokens.ts +35 -0
  422. package/src/createVariable.ts +77 -0
  423. package/src/createVariables.ts +42 -0
  424. package/src/helpers/RNComponents.tsx +14 -0
  425. package/src/helpers/ThemeManager.tsx +229 -0
  426. package/src/helpers/areEqualSets.tsx +9 -0
  427. package/src/helpers/assignNativePropsToWeb.native.tsx +1 -0
  428. package/src/helpers/assignNativePropsToWeb.tsx +178 -0
  429. package/src/helpers/calc.ts +65 -0
  430. package/src/helpers/createMediaStyle.ts +48 -0
  431. package/src/helpers/createPropMapper.ts +457 -0
  432. package/src/helpers/createShallowUpdate.tsx +20 -0
  433. package/src/helpers/cssHash.ts +28 -0
  434. package/src/helpers/expandStyle.ts +81 -0
  435. package/src/helpers/expandStyles.ts +105 -0
  436. package/src/helpers/extendStaticConfig.ts +76 -0
  437. package/src/helpers/fixNativeShadow.tsx +2 -0
  438. package/src/helpers/getAnimationDriver.tsx +5 -0
  439. package/src/helpers/getExpandedShorthands.ts +15 -0
  440. package/src/helpers/getFont.tsx +40 -0
  441. package/src/helpers/getFontLanguage.ts +2 -0
  442. package/src/helpers/getSize.ts +22 -0
  443. package/src/helpers/getSplitStyles.tsx +685 -0
  444. package/src/helpers/getStackSize.ts +22 -0
  445. package/src/helpers/getStylesAtomic.native.ts +3 -0
  446. package/src/helpers/getStylesAtomic.ts +292 -0
  447. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  448. package/src/helpers/getThemeCSSRules.ts +105 -0
  449. package/src/helpers/getVariantExtras.tsx +83 -0
  450. package/src/helpers/insertStyleRule.tsx +150 -0
  451. package/src/helpers/isObj.ts +1 -0
  452. package/src/helpers/isTamaguiComponent.tsx +15 -0
  453. package/src/helpers/isTamaguiElement.tsx +14 -0
  454. package/src/helpers/matchMedia.native.ts +6 -0
  455. package/src/helpers/matchMedia.ts +16 -0
  456. package/src/helpers/mergeProps.ts +56 -0
  457. package/src/helpers/mergeTransform.ts +14 -0
  458. package/src/helpers/normalizeColor.ts +53 -0
  459. package/src/helpers/normalizeValueWithProperty.ts +78 -0
  460. package/src/helpers/proxyThemeVariables.tsx +13 -0
  461. package/src/helpers/pseudoDescriptors.ts +18 -0
  462. package/src/helpers/registerCSSVariable.ts +11 -0
  463. package/src/helpers/startTransition.ts +4 -0
  464. package/src/helpers/themeable.tsx +45 -0
  465. package/src/helpers/themes.ts +69 -0
  466. package/src/helpers/validate.ts +80 -0
  467. package/src/helpers/withStaticProperties.tsx +7 -0
  468. package/src/hooks/getThemeUnwrapped.tsx +8 -0
  469. package/src/hooks/useConstant.tsx +19 -0
  470. package/src/hooks/useFeatures.tsx +289 -0
  471. package/src/hooks/useId.tsx +1 -0
  472. package/src/hooks/useIsMounted.ts +17 -0
  473. package/src/hooks/useIsSSR.tsx +20 -0
  474. package/src/hooks/useIsTouchDevice.tsx +21 -0
  475. package/src/hooks/useMedia.tsx +167 -0
  476. package/src/hooks/usePressable.tsx +9 -0
  477. package/src/hooks/useSafeRef.ts +50 -0
  478. package/src/hooks/useServerHooks.tsx +13 -0
  479. package/src/hooks/useTheme.tsx +264 -0
  480. package/src/hooks/useUnmountEffect.ts +5 -0
  481. package/src/index.ts +80 -0
  482. package/src/injectStyles.ts +20 -0
  483. package/src/insertFont.ts +69 -0
  484. package/src/static.ts +15 -0
  485. package/src/styled.tsx +149 -0
  486. package/src/types-rnw.tsx +162 -0
  487. package/src/types.tsx +1267 -0
  488. package/src/updateTheme.ts +23 -0
  489. package/src/vendor/Pressability.native.tsx +3 -0
  490. package/src/vendor/Pressability.tsx +2 -0
  491. package/src/views/FontLanguage.native.tsx +9 -0
  492. package/src/views/FontLanguage.tsx +18 -0
  493. package/src/views/FontLanguage.types.ts +13 -0
  494. package/src/views/Slot.tsx +152 -0
  495. package/src/views/Stack.tsx +24 -0
  496. package/src/views/TamaguiProvider.tsx +57 -0
  497. package/src/views/Text.tsx +79 -0
  498. package/src/views/Theme.tsx +72 -0
  499. package/src/views/ThemeInverse.tsx +33 -0
  500. package/src/views/ThemeProvider.tsx +62 -0
  501. package/src/views/ThemeReset.tsx +43 -0
  502. package/types/Tamagui.d.ts +0 -0
  503. package/types/addTheme.d.ts +0 -0
  504. package/types/conf.d.ts +1 -1
  505. package/types/config.d.ts +27 -0
  506. package/types/constants/constants.d.ts +0 -0
  507. package/types/constants/platform.d.ts +1 -0
  508. package/types/constants/platform.native.d.ts +13 -0
  509. package/types/contexts/ButtonInsideButtonContext.d.ts +0 -0
  510. package/types/contexts/FontLanguageContext.d.ts +0 -0
  511. package/types/contexts/TextAncestorContext.d.ts +0 -0
  512. package/types/contexts/ThemeContext.d.ts +0 -0
  513. package/types/createComponent.d.ts +0 -0
  514. package/types/createComponent.server.d.ts +36 -0
  515. package/types/createFont.d.ts +0 -0
  516. package/types/createShorthands.d.ts +0 -0
  517. package/types/createTamagui.d.ts +1 -1
  518. package/types/createTheme.d.ts +1 -1
  519. package/types/createTokens.d.ts +0 -0
  520. package/types/createVariable.d.ts +15 -12
  521. package/types/createVariables.d.ts +0 -0
  522. package/types/helpers/RNComponents.d.ts +1 -1
  523. package/types/helpers/ThemeManager.d.ts +2 -8
  524. package/types/helpers/areEqualSets.d.ts +0 -0
  525. package/types/helpers/assignNativePropsToWeb.d.ts +0 -0
  526. package/types/helpers/assignNativePropsToWeb.native.d.ts +0 -0
  527. package/types/helpers/calc.d.ts +0 -0
  528. package/types/helpers/createMediaStyle.d.ts +0 -0
  529. package/types/helpers/createPropMapper.d.ts +0 -0
  530. package/types/helpers/createShallowUpdate.d.ts +0 -0
  531. package/types/helpers/cssHash.d.ts +0 -0
  532. package/types/helpers/expandStyle.d.ts +0 -0
  533. package/types/helpers/expandStyles.d.ts +0 -0
  534. package/types/helpers/extendStaticConfig.d.ts +0 -0
  535. package/types/helpers/fixNativeShadow.d.ts +0 -0
  536. package/types/helpers/getAnimationDriver.d.ts +6 -0
  537. package/types/helpers/getExpandedShorthands.d.ts +0 -0
  538. package/types/helpers/getFont.d.ts +0 -0
  539. package/types/helpers/getFontLanguage.d.ts +0 -0
  540. package/types/helpers/getSize.d.ts +0 -0
  541. package/types/helpers/getSplitStyles.d.ts +0 -0
  542. package/types/helpers/getStackSize.d.ts +0 -0
  543. package/types/helpers/getStylesAtomic.d.ts +0 -0
  544. package/types/helpers/getStylesAtomic.native.d.ts +0 -0
  545. package/types/helpers/getThemeCSSRules.d.ts +0 -0
  546. package/types/helpers/getThemeCSSRules.native.d.ts +0 -0
  547. package/types/helpers/getVariantExtras.d.ts +0 -0
  548. package/types/helpers/insertStyleRule.d.ts +0 -0
  549. package/types/helpers/isObj.d.ts +0 -0
  550. package/types/helpers/isTamaguiComponent.d.ts +0 -0
  551. package/types/helpers/isTamaguiElement.d.ts +0 -0
  552. package/types/helpers/matchMedia.d.ts +0 -0
  553. package/types/helpers/matchMedia.native.d.ts +0 -0
  554. package/types/helpers/mergeProps.d.ts +0 -0
  555. package/types/helpers/mergeTransform.d.ts +0 -0
  556. package/types/helpers/normalizeColor.d.ts +0 -0
  557. package/types/helpers/normalizeValueWithProperty.d.ts +0 -0
  558. package/types/helpers/proxyThemeVariables.d.ts +0 -0
  559. package/types/helpers/pseudoDescriptors.d.ts +0 -0
  560. package/types/helpers/registerCSSVariable.d.ts +2 -2
  561. package/types/helpers/startTransition.d.ts +0 -0
  562. package/types/helpers/themeable.d.ts +0 -0
  563. package/types/helpers/themes.d.ts +0 -0
  564. package/types/helpers/useAnimationDriver.d.ts +1 -0
  565. package/types/helpers/validate.d.ts +0 -0
  566. package/types/helpers/withStaticProperties.d.ts +0 -0
  567. package/types/hooks/getThemeUnwrapped.d.ts +0 -0
  568. package/types/hooks/useAnimationDriver.d.ts +1 -0
  569. package/types/hooks/useConstant.d.ts +0 -0
  570. package/types/hooks/useFeatures.d.ts +0 -0
  571. package/types/hooks/useId.d.ts +0 -0
  572. package/types/hooks/useIsMounted.d.ts +0 -0
  573. package/types/hooks/useIsSSR.d.ts +0 -0
  574. package/types/hooks/useIsTouchDevice.d.ts +0 -0
  575. package/types/hooks/useMedia.d.ts +0 -0
  576. package/types/hooks/usePressable.d.ts +0 -0
  577. package/types/hooks/useSafeRef.d.ts +0 -0
  578. package/types/hooks/useServerContext.d.ts +2 -0
  579. package/types/hooks/useServerHooks.d.ts +4 -0
  580. package/types/hooks/useTheme.d.ts +5 -21
  581. package/types/hooks/useUnmountEffect.d.ts +0 -0
  582. package/types/index.d.ts +3 -1
  583. package/types/injectStyles.d.ts +7 -0
  584. package/types/insertFont.d.ts +0 -0
  585. package/types/static.d.ts +0 -0
  586. package/types/styled.d.ts +0 -0
  587. package/types/types-rnw.d.ts +0 -0
  588. package/types/types.d.ts +24 -1
  589. package/types/updateTheme.d.ts +0 -0
  590. package/types/vendor/Pressability.d.ts +0 -0
  591. package/types/vendor/Pressability.native.d.ts +0 -0
  592. package/types/views/FontLanguage.d.ts +0 -0
  593. package/types/views/FontLanguage.native.d.ts +0 -0
  594. package/types/views/FontLanguage.types.d.ts +0 -0
  595. package/types/views/Slot.d.ts +0 -0
  596. package/types/views/Stack.d.ts +0 -0
  597. package/types/views/TamaguiProvider.d.ts +4 -0
  598. package/types/views/Text.d.ts +0 -0
  599. package/types/views/Theme.d.ts +0 -0
  600. package/types/views/ThemeInverse.d.ts +0 -0
  601. package/types/views/ThemeProvider.d.ts +0 -1
  602. package/types/views/ThemeReset.d.ts +0 -0
  603. package/dist/cjs/Pressability.js.map +0 -7
  604. package/dist/cjs/Pressability.native.js.map +0 -7
  605. package/dist/cjs/ThemeContext.js.map +0 -7
  606. package/dist/cjs/ThemeManager.js +0 -211
  607. package/dist/cjs/ThemeManager.js.map +0 -7
  608. package/dist/cjs/defaultComponentState.js +0 -2
  609. package/dist/cjs/ensureThemeVariable.js +0 -152
  610. package/dist/cjs/ensureThemeVariable.js.map +0 -7
  611. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  612. package/dist/cjs/helpers/ensureThemeVariable.js +0 -152
  613. package/dist/cjs/helpers/ensureThemeVariable.js.map +0 -7
  614. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  615. package/dist/cjs/loadTheme.js +0 -64
  616. package/dist/cjs/loadTheme.js.map +0 -7
  617. package/dist/cjs/views/TextAncestorContext.js +0 -44
  618. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  619. package/dist/esm/Pressability.js +0 -7
  620. package/dist/esm/Pressability.js.map +0 -7
  621. package/dist/esm/Pressability.native.js +0 -7
  622. package/dist/esm/Pressability.native.js.map +0 -7
  623. package/dist/esm/ThemeContext.js +0 -6
  624. package/dist/esm/ThemeContext.js.map +0 -7
  625. package/dist/esm/ThemeManager.js +0 -185
  626. package/dist/esm/ThemeManager.js.map +0 -7
  627. package/dist/esm/defaultComponentState.js +0 -1
  628. package/dist/esm/ensureThemeVariable.js +0 -125
  629. package/dist/esm/ensureThemeVariable.js.map +0 -7
  630. package/dist/esm/helpers/createTamaguiProvider.js +0 -40
  631. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  632. package/dist/esm/helpers/ensureThemeVariable.js +0 -125
  633. package/dist/esm/helpers/ensureThemeVariable.js.map +0 -7
  634. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  635. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  636. package/dist/esm/loadTheme.js +0 -40
  637. package/dist/esm/loadTheme.js.map +0 -7
  638. package/dist/esm/views/TextAncestorContext.js +0 -15
  639. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  640. package/types/helpers/createTamaguiProvider.d.ts +0 -4
@@ -0,0 +1,26 @@
1
+ import { GenericFont } from './types'
2
+
3
+ export const createFont = <A extends GenericFont>(font: A): A => {
4
+ // fills in any missing values based on size keys being standard
5
+ const sizeKeys = Object.keys(font.size)
6
+
7
+ for (const key in font) {
8
+ if (key === 'size' || key === 'family') continue
9
+ const section = font[key] as Object
10
+ const keys = Object.keys(section)
11
+
12
+ // fill with first filled in value to start
13
+ let fillVal = section[keys[0]]
14
+
15
+ for (const sKey of sizeKeys) {
16
+ if (!(sKey in section)) {
17
+ section[sKey] = fillVal
18
+ } else {
19
+ // if exists, set as the fillVal
20
+ fillVal = section[sKey]
21
+ }
22
+ }
23
+ }
24
+
25
+ return Object.freeze(font)
26
+ }
@@ -0,0 +1,5 @@
1
+ // type helper
2
+
3
+ export function createShorthands<A extends Record<string, string>>(shorthands: A): A {
4
+ return Object.freeze(shorthands) as any
5
+ }
@@ -0,0 +1,232 @@
1
+ import { configListeners, setConfig } from './config'
2
+ import { isRSC, isWeb } from './constants/platform'
3
+ import { createVariables } from './createVariables'
4
+ import { getThemeCSSRules } from './helpers/getThemeCSSRules'
5
+ import { getAllRules } from './helpers/insertStyleRule'
6
+ import {
7
+ registerCSSVariable,
8
+ tokensValueToVariable,
9
+ variableToCSS,
10
+ } from './helpers/registerCSSVariable'
11
+ import { ensureThemeVariable, proxyThemeToParents } from './helpers/themes'
12
+ import { configureMedia } from './hooks/useMedia'
13
+ import { parseFont, registerFontVariables } from './insertFont'
14
+ import { Tamagui } from './Tamagui'
15
+ import { CreateTamaguiProps, InferTamaguiConfig, TamaguiInternalConfig, ThemeObject } from './types'
16
+
17
+ // config is re-run by the @tamagui/static, dont double validate
18
+ const createdConfigs = new WeakMap<any, boolean>()
19
+
20
+ export function createTamagui<Conf extends CreateTamaguiProps>(
21
+ configIn: Conf
22
+ ): InferTamaguiConfig<Conf> {
23
+ if (createdConfigs.has(configIn)) {
24
+ return configIn as any
25
+ }
26
+
27
+ if (process.env.NODE_ENV === 'development') {
28
+ if (!configIn.tokens) {
29
+ throw new Error(`Must define tokens`)
30
+ }
31
+ if (!configIn.themes) {
32
+ throw new Error(`Must define themes`)
33
+ }
34
+ if (!configIn.fonts) {
35
+ throw new Error(`Must define fonts`)
36
+ }
37
+ }
38
+
39
+ configureMedia({
40
+ queries: configIn.media as any,
41
+ defaultActive: configIn.mediaQueryDefaultActive,
42
+ })
43
+
44
+ const fontTokens = Object.fromEntries(
45
+ Object.entries(configIn.fonts!).map(([k, v]) => {
46
+ return [k, createVariables(v, 'f', true)]
47
+ })
48
+ )
49
+
50
+ const fontsParsed = (() => {
51
+ const res = {} as typeof fontTokens
52
+ for (const familyName in fontTokens) {
53
+ res[`$${familyName}`] = parseFont(fontTokens[familyName])
54
+ }
55
+ return res!
56
+ })()
57
+
58
+ const themeConfig = (() => {
59
+ const themes = { ...configIn.themes }
60
+ let cssRuleSets: string[] = []
61
+
62
+ if (isWeb) {
63
+ const declarations: string[] = []
64
+ const fontDeclarations: Record<
65
+ string,
66
+ { name: string; declarations: string[]; language?: string }
67
+ > = {}
68
+
69
+ for (const key in configIn.tokens) {
70
+ for (const skey in configIn.tokens[key]) {
71
+ const val = configIn.tokens[key][skey]
72
+ registerCSSVariable(val)
73
+ declarations.push(variableToCSS(val))
74
+ }
75
+ }
76
+
77
+ for (const key in fontsParsed) {
78
+ const fontParsed = fontsParsed[key]
79
+ const [name, language] = key.includes('_') ? key.split('_') : [key]
80
+ const fontVars = registerFontVariables(fontParsed)
81
+ fontDeclarations[key] = { name: name.slice(1), declarations: fontVars, language }
82
+ }
83
+
84
+ const sep = process.env.NODE_ENV === 'development' ? configIn.cssStyleSeparator || ' ' : ''
85
+
86
+ function declarationsToRuleSet(decs: string[], selector = '') {
87
+ return `:root${selector} {${sep}${[...decs].join(`;${sep}`)}${sep}}`
88
+ }
89
+
90
+ // non-font
91
+ cssRuleSets.push(declarationsToRuleSet(declarations))
92
+
93
+ // fonts
94
+ if (fontDeclarations) {
95
+ for (const key in fontDeclarations) {
96
+ const { name, declarations, language = 'default' } = fontDeclarations[key]
97
+ const fontSelector = `.font_${name}`
98
+ const langSelector = `:root .t_lang-${name}-${language} ${fontSelector}`
99
+ const selectors =
100
+ language === 'default' ? ` ${fontSelector}, ${langSelector}` : langSelector
101
+ const specificRuleSet = declarationsToRuleSet(declarations, selectors)
102
+ cssRuleSets.push(specificRuleSet)
103
+ }
104
+ }
105
+ }
106
+
107
+ // dedupe themes to avoid duplicate CSS generation
108
+ type DedupedTheme = {
109
+ names: string[]
110
+ theme: ThemeObject
111
+ }
112
+ const dedupedThemes: {
113
+ [key: string]: DedupedTheme
114
+ } = {}
115
+ const existing = new WeakMap<ThemeObject, DedupedTheme>()
116
+
117
+ // first, de-dupe and parse them
118
+ for (const themeName in themes) {
119
+ const rawTheme = themes[themeName]
120
+
121
+ // if existing, avoid
122
+ if (existing.has(rawTheme)) {
123
+ const e = existing.get(rawTheme)!
124
+ themes[themeName] = e.theme
125
+ e.names.push(themeName)
126
+ continue
127
+ }
128
+
129
+ // ensure each theme object unique for dedupe
130
+ const theme = { ...rawTheme }
131
+ // parse into variables
132
+ for (const key in theme) {
133
+ // make sure properly names theme variables
134
+ ensureThemeVariable(theme, key)
135
+ }
136
+ themes[themeName] = theme
137
+
138
+ // set deduped
139
+ dedupedThemes[themeName] = {
140
+ names: [themeName],
141
+ theme,
142
+ }
143
+ existing.set(rawTheme, dedupedThemes[themeName])
144
+ }
145
+
146
+ // then, generate CSS from de-duped
147
+ if (isWeb || isRSC) {
148
+ for (const themeName in dedupedThemes) {
149
+ cssRuleSets = [
150
+ ...cssRuleSets,
151
+ ...getThemeCSSRules({
152
+ config: configIn,
153
+ themeName,
154
+ ...dedupedThemes[themeName],
155
+ }),
156
+ ]
157
+ }
158
+ }
159
+
160
+ // proxy upwards to get parent variables (themes are subset going down)
161
+ for (const themeName in themes) {
162
+ themes[themeName] = proxyThemeToParents(themeName, themes[themeName], themes)
163
+ }
164
+
165
+ tokensValueToVariable.clear()
166
+ Object.freeze(cssRuleSets)
167
+ const css = cssRuleSets.join('\n')
168
+
169
+ return {
170
+ themes,
171
+ cssRuleSets,
172
+ css,
173
+ }
174
+ })()
175
+
176
+ // faster lookups token keys become $keys to match input
177
+ const tokensParsed: any = parseTokens(configIn.tokens)
178
+
179
+ const getCSS = () => {
180
+ return `${themeConfig.css}\n${getAllRules().join('\n')}`
181
+ }
182
+
183
+ const shorthands = configIn.shorthands || {}
184
+
185
+ const config: TamaguiInternalConfig = {
186
+ fontLanguages: [],
187
+ defaultTheme: 'light',
188
+ animations: {} as any,
189
+ media: {},
190
+ ...configIn,
191
+ // vite made this into a function if it wasn't set
192
+ shorthands: { ...shorthands },
193
+ inverseShorthands: shorthands
194
+ ? Object.fromEntries(Object.entries(shorthands).map(([k, v]) => [v, k]))
195
+ : {},
196
+ themes: themeConfig.themes,
197
+ fontsParsed,
198
+ themeConfig,
199
+ tokensParsed,
200
+ parsed: true,
201
+ getCSS,
202
+ }
203
+
204
+ setConfig(config)
205
+
206
+ if (configListeners.size) {
207
+ configListeners.forEach((cb) => cb(config))
208
+ configListeners.clear()
209
+ }
210
+
211
+ createdConfigs.set(config, true)
212
+
213
+ if (process.env.NODE_ENV === 'development') {
214
+ if (!globalThis['Tamagui']) {
215
+ globalThis['Tamagui'] = Tamagui
216
+ }
217
+ }
218
+
219
+ // @ts-expect-error
220
+ return config
221
+ }
222
+
223
+ const parseTokens = (tokens: any) => {
224
+ const res: any = {}
225
+ for (const key in tokens) {
226
+ res[key] = {}
227
+ for (const skey in tokens[key]) {
228
+ res[key][`$${skey}`] = tokens[key][skey]
229
+ }
230
+ }
231
+ return res
232
+ }
@@ -0,0 +1,13 @@
1
+ import { Variable } from './createVariable'
2
+
3
+ type GenericTheme = { [key: string]: string | Variable }
4
+
5
+ // export const themeToVariableToValueMap = new WeakMap<any, Record<string, string>>()
6
+
7
+ export const createTheme = <Theme extends GenericTheme>(
8
+ theme: Theme
9
+ ): {
10
+ [K in keyof Theme]: Theme[K] | string | Variable
11
+ } => {
12
+ return theme
13
+ }
@@ -0,0 +1,35 @@
1
+ import { Variable } from './createVariable'
2
+ import { createVariables } from './createVariables'
3
+ import { CreateTokens } from './types'
4
+
5
+ // tokens.color.dark.red ===> { var: `color-dark-red`, val: '' }
6
+ export function createTokens<T extends CreateTokens>(tokens: T): MakeTokens<T> {
7
+ return createVariables(tokens as any) as any
8
+ }
9
+
10
+ // verbose but gives us nice types...
11
+ type MakeTokens<T> = T extends {
12
+ color: infer E
13
+ space: infer F
14
+ size: infer G
15
+ radius: infer H
16
+ zIndex: infer J
17
+ }
18
+ ? {
19
+ color: {
20
+ [key in keyof E]: Variable
21
+ }
22
+ space: {
23
+ [key in keyof F]: Variable
24
+ }
25
+ size: {
26
+ [key in keyof G]: Variable
27
+ }
28
+ radius: {
29
+ [key in keyof H]: Variable
30
+ }
31
+ zIndex: {
32
+ [key in keyof J]: Variable
33
+ }
34
+ }
35
+ : never
@@ -0,0 +1,77 @@
1
+ import { isValidCSSCharCode, simpleHash } from '@tamagui/helpers'
2
+
3
+ import { isWeb } from './constants/platform'
4
+
5
+ /**
6
+ * Should rename this to Token
7
+ * Moving to objects for React Server Components support
8
+ */
9
+
10
+ const IS_VAR = '__isVar__'
11
+
12
+ export type VariableValue = string | number
13
+
14
+ type VariableIn<A extends VariableValue = VariableValue> = {
15
+ val: A
16
+ name: string
17
+ key: string
18
+ isFloating?: boolean
19
+ }
20
+
21
+ export type Variable<A extends VariableValue = VariableValue> = VariableIn<A> & {
22
+ [IS_VAR]?: true
23
+ variable?: string
24
+ }
25
+
26
+ export const createVariable = <A extends string | number = any>(props: VariableIn<A>) => {
27
+ if (isVariable(props)) {
28
+ return props
29
+ }
30
+ return {
31
+ [IS_VAR]: true,
32
+ // @ts-ignore
33
+ ...props,
34
+ variable: isWeb ? createCSSVariable(props.name) : '',
35
+ }
36
+ }
37
+
38
+ // on the client maybe we can change the prototype of variable object toString to keep backwards compat
39
+ export function variableToString(vrble?: any) {
40
+ if (!vrble) return ''
41
+ if (isVariable(vrble)) {
42
+ return `${isWeb ? vrble.variable : vrble.val}`
43
+ }
44
+ return `${vrble}`
45
+ }
46
+
47
+ export function isVariable(v: Variable | any): v is Variable {
48
+ return !!(v && v[IS_VAR])
49
+ }
50
+
51
+ export function getVariableValue(v: Variable | any) {
52
+ if (isVariable(v)) return v.val
53
+ return v
54
+ }
55
+
56
+ export function getVariableName(v: Variable | any) {
57
+ if (isVariable(v)) return v.name
58
+ return v
59
+ }
60
+
61
+ export function getVariableVariable(v: Variable | any) {
62
+ if (isVariable(v)) return v.variable
63
+ return v
64
+ }
65
+
66
+ // bugfix { space: { 0.5: 10 } } was generating var(--space-0.5) (invalid CSS):
67
+ export const createCSSVariable = (nameProp: string, includeVar = true) => {
68
+ if (process.env.NODE_ENV === 'development') {
69
+ if (!nameProp || typeof nameProp !== 'string') {
70
+ // eslint-disable-next-line no-console
71
+ console.trace('createCSSVariable invalid name', nameProp)
72
+ return ``
73
+ }
74
+ }
75
+ const name = simpleHash(nameProp, 60)
76
+ return includeVar ? `var(--${name})` : name
77
+ }
@@ -0,0 +1,42 @@
1
+ import { Variable, createVariable, isVariable } from './createVariable'
2
+
3
+ type DeepTokenObject<Val extends string | number = any> = {
4
+ [key: string]: Val | DeepTokenObject<Val>
5
+ }
6
+
7
+ export type DeepVariableObject<A extends DeepTokenObject> = {
8
+ [Key in keyof A]: A[Key] extends string | number
9
+ ? Variable<A[Key]>
10
+ : A[Key] extends DeepTokenObject
11
+ ? DeepVariableObject<A[Key]>
12
+ : never
13
+ }
14
+
15
+ export const createVariables = <A extends DeepTokenObject>(
16
+ tokens: A,
17
+ parentPath = '',
18
+ isFont = false
19
+ ): DeepVariableObject<A> => {
20
+ const res: any = {}
21
+ let i = 0
22
+ for (const key in tokens) {
23
+ i++
24
+ const variableName = isFont ? key.slice(0, 2) : i
25
+ const val = tokens[key]
26
+ if (isVariable(val)) {
27
+ res[key] = val
28
+ continue
29
+ }
30
+ let name = parentPath ? `${parentPath}-${variableName}` : key
31
+ if (isFont && name.includes('_')) {
32
+ name = name.replace(/_[a-z0-9]+/i, '')
33
+ }
34
+ if (val && typeof val === 'object') {
35
+ // recurse
36
+ res[key] = createVariables(tokens[key] as any, `${name}`)
37
+ continue
38
+ }
39
+ res[key] = isVariable(val) ? val : createVariable({ val, name, key })
40
+ }
41
+ return res
42
+ }
@@ -0,0 +1,14 @@
1
+ import { Image, Text, TextInput, View } from 'react-native'
2
+
3
+ // limited support
4
+ export const RNComponents = new Set<any>([
5
+ Image,
6
+ TextInput,
7
+ Text,
8
+ View,
9
+ // see fake-react-native + styled() check
10
+ 'Image',
11
+ 'TextInput',
12
+ 'Text',
13
+ 'View',
14
+ ])
@@ -0,0 +1,229 @@
1
+ import { createContext } from 'react'
2
+
3
+ import { getThemes } from '../config'
4
+ import { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from '../constants/constants'
5
+ import { getThemeUnwrapped } from '../hooks/getThemeUnwrapped'
6
+ import { ThemeObject, Themes } from '../types'
7
+
8
+ type ThemeListener = (name: string | null, themeManager: ThemeManager) => void
9
+
10
+ export type SetActiveThemeProps = {
11
+ className?: string
12
+ parentManager?: ThemeManager | null
13
+ name?: string | null
14
+ theme?: any
15
+ }
16
+
17
+ export type GetNextThemeProps = {
18
+ themes?: Themes
19
+ name?: string | null
20
+ componentName?: string | null
21
+ reset?: boolean
22
+ }
23
+
24
+ export class ThemeManager {
25
+ keys = new Map<any, Set<string>>()
26
+ listeners = new Map<any, Function>()
27
+ themeListeners = new Set<ThemeListener>()
28
+ className: string | null = null
29
+
30
+ constructor(
31
+ public name: string = '',
32
+ public theme: ThemeObject | null = null,
33
+ public parentManager: ThemeManager | null = null,
34
+ public reset: boolean = false
35
+ ) {
36
+ // find the nearest different parentManager
37
+ let parent = parentManager
38
+ let tries = 0
39
+ while (true) {
40
+ tries++
41
+ if (tries > 10) {
42
+ throw new Error(`Nested 10 of the same theme in a row, likely error`)
43
+ }
44
+ if (!parent) break
45
+ if (parent.name === name) {
46
+ // go up if same
47
+ parent = parent.parentManager
48
+ } else {
49
+ this.parentManager = parent
50
+ break
51
+ }
52
+ }
53
+ }
54
+
55
+ get didChangeTheme() {
56
+ return this.parentManager && this.name !== this.parentManager.fullName
57
+ }
58
+
59
+ get parentName() {
60
+ return this.parentManager?.name || null
61
+ }
62
+
63
+ get fullName(): string {
64
+ return this.getNextTheme().name || this.name || ''
65
+ // const parentName = this.parentManager?.fullName || ''
66
+ // const name = this.name || ''
67
+ // const parts = [...new Set([...`${parentName}_${name}`.split('_')])].filter(Boolean)
68
+ // return parts.join('_')
69
+ }
70
+
71
+ // gets value going up to parents
72
+ getValue(key: string) {
73
+ let theme = this.theme
74
+ let manager = this as ThemeManager | null
75
+ while (true) {
76
+ if (!theme) return
77
+ if (key in theme) {
78
+ return theme[key]
79
+ }
80
+ manager = this.parentManager
81
+ if (!manager || manager.theme === theme) {
82
+ return
83
+ }
84
+ theme = manager.theme
85
+ }
86
+ }
87
+
88
+ update({ name, theme, className }: SetActiveThemeProps = {}, force = false) {
89
+ if (!force) {
90
+ // className compare on web, avoids light/dark re-renders
91
+ const nameChanged = name !== this.name
92
+ if (!nameChanged) {
93
+ return false
94
+ }
95
+ }
96
+ this.className = className || null
97
+ this.name = name || ''
98
+ this.theme = theme
99
+ this.notifyListeners()
100
+ return true
101
+ }
102
+
103
+ getNextTheme(
104
+ props: GetNextThemeProps = {},
105
+ debug?: any
106
+ ): {
107
+ name: string
108
+ theme: ThemeObject | null
109
+ className: string | undefined
110
+ } {
111
+ const { themes = getThemes(), name, componentName } = props
112
+
113
+ if (props.reset && name) {
114
+ return {
115
+ name: name,
116
+ theme: themes[name],
117
+ className: this.getClassName(name),
118
+ }
119
+ }
120
+
121
+ const parentIsReset = this.parentManager?.reset
122
+
123
+ if (!name) {
124
+ if (componentName) {
125
+ // allow for _Card_Button or just _Button
126
+ const names = [
127
+ `${this.name}_${componentName}`,
128
+ `${withoutComponentName(this.name)}_${componentName}`,
129
+ ]
130
+ for (const name of names) {
131
+ if (name in themes) {
132
+ const className = this.getClassName(name)
133
+ return { name, theme: themes[name], className }
134
+ }
135
+ }
136
+ }
137
+ return {
138
+ name: this.name,
139
+ theme: this.theme,
140
+ className: undefined,
141
+ }
142
+ }
143
+
144
+ let nextName = name || this.name || ''
145
+ let parentName = parentIsReset ? this.parentName || this.fullName : this.fullName
146
+
147
+ while (true) {
148
+ if (nextName in themes) break
149
+ nextName = `${parentName}_${name}`
150
+ if (nextName in themes) break
151
+ // this is fine - some themes can not have parents
152
+ if (!parentName.includes(THEME_NAME_SEPARATOR)) break
153
+ // go up one
154
+ parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR))
155
+ }
156
+
157
+ if (componentName) {
158
+ // allow for _Card_Button or just _Button
159
+ const names = [
160
+ `${nextName}_${componentName}`,
161
+ `${withoutComponentName(nextName)}_${componentName}`,
162
+ ]
163
+ for (const name of names) {
164
+ if (name in themes) {
165
+ nextName = name
166
+ }
167
+ }
168
+ }
169
+
170
+ let theme = themes[nextName]
171
+ if (!theme) {
172
+ theme = themes[`light_${nextName}`]
173
+ }
174
+
175
+ if (process.env.NODE_ENV === 'development') {
176
+ if (debug) {
177
+ // eslint-disable-next-line no-console
178
+ console.log('getNextTheme', this.getClassName(nextName), { props, nextName, parentName })
179
+ }
180
+ }
181
+
182
+ return {
183
+ name: nextName,
184
+ theme: getThemeUnwrapped(theme),
185
+ className: this.getClassName(nextName),
186
+ }
187
+ }
188
+
189
+ getClassName(name: string) {
190
+ return `${THEME_CLASSNAME_PREFIX}${name} t_Theme`.replace('light_', '').replace('dark_', '')
191
+ }
192
+
193
+ track(uuid: any, keys: Set<string>) {
194
+ if (!this.name) return
195
+ this.keys.set(uuid, keys)
196
+ }
197
+
198
+ notifyListeners() {
199
+ if (!this.name) {
200
+ this.keys.clear()
201
+ }
202
+ for (const [uuid, keys] of this.keys.entries()) {
203
+ if (keys.size) {
204
+ this.listeners.get(uuid)?.()
205
+ }
206
+ }
207
+ this.themeListeners.forEach((cb) => cb(this.name, this))
208
+ }
209
+
210
+ onChangeTheme(cb: ThemeListener) {
211
+ this.themeListeners.add(cb)
212
+ return () => {
213
+ this.themeListeners.delete(cb)
214
+ }
215
+ }
216
+
217
+ onUpdate(uuid: any, cb: Function) {
218
+ this.listeners.set(uuid, cb)
219
+ return () => {
220
+ this.listeners.delete(uuid)
221
+ this.keys.delete(uuid)
222
+ }
223
+ }
224
+ }
225
+
226
+ export const ThemeManagerContext = createContext<ThemeManager | null>(null)
227
+ export const emptyManager = new ThemeManager()
228
+
229
+ const withoutComponentName = (name: string) => name.replace(/(\_[A-Z][a-zA-Z]+)+$/g, '')
@@ -0,0 +1,9 @@
1
+ export const areEqualSets = (a: Set<string>, b: Set<string>) => {
2
+ if (a.size !== b.size) return false
3
+ for (const val in a) {
4
+ if (!b.has(val)) {
5
+ return false
6
+ }
7
+ }
8
+ return true
9
+ }
@@ -0,0 +1 @@
1
+ export function assignNativePropsToWeb(elementType: string, viewProps: any, nativeProps: any) {}