@tamagui/core 1.0.0-alpha.0 → 1.0.0-alpha.12

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 (426) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/constants/constants.js +50 -0
  3. package/dist/cjs/constants/constants.js.map +7 -0
  4. package/dist/cjs/constants/platform.js +43 -0
  5. package/dist/cjs/constants/platform.js.map +7 -0
  6. package/dist/cjs/constants/pseudos.js +25 -0
  7. package/dist/cjs/constants/pseudos.js.map +7 -0
  8. package/dist/cjs/constants/rnw.js +28 -0
  9. package/dist/cjs/constants/rnw.js.map +7 -0
  10. package/dist/cjs/createComponent.js +532 -0
  11. package/dist/cjs/createComponent.js.map +7 -0
  12. package/dist/cjs/createFont.js +50 -0
  13. package/dist/cjs/createFont.js.map +7 -0
  14. package/dist/cjs/createShorthands.js +16 -0
  15. package/dist/cjs/createShorthands.js.map +7 -0
  16. package/dist/cjs/createTamagui.js +206 -0
  17. package/dist/cjs/createTamagui.js.map +7 -0
  18. package/dist/cjs/createTheme.js +42 -0
  19. package/dist/cjs/createTheme.js.map +7 -0
  20. package/dist/cjs/createTokens.js +55 -0
  21. package/dist/cjs/createTokens.js.map +7 -0
  22. package/dist/cjs/createVariable.js +47 -0
  23. package/dist/cjs/createVariable.js.map +7 -0
  24. package/dist/cjs/helpers/addStylesUsingClassname.js +79 -0
  25. package/dist/cjs/helpers/addStylesUsingClassname.js.map +7 -0
  26. package/dist/cjs/helpers/createMediaStyle.js +56 -0
  27. package/dist/cjs/helpers/createMediaStyle.js.map +7 -0
  28. package/dist/cjs/helpers/createPropMapper.js +197 -0
  29. package/dist/cjs/helpers/createPropMapper.js.map +7 -0
  30. package/dist/cjs/helpers/createTamaguiProvider.js +74 -0
  31. package/dist/cjs/helpers/createTamaguiProvider.js.map +7 -0
  32. package/dist/cjs/helpers/extendStaticConfig.js +82 -0
  33. package/dist/cjs/helpers/extendStaticConfig.js.map +7 -0
  34. package/dist/cjs/helpers/fixNativeShadow.js +14 -0
  35. package/dist/cjs/helpers/fixNativeShadow.js.map +7 -0
  36. package/dist/cjs/helpers/fixNativeShadow.native.js +36 -0
  37. package/dist/cjs/helpers/fixNativeShadow.native.js.map +7 -0
  38. package/dist/cjs/helpers/getSplitStyles.js +180 -0
  39. package/dist/cjs/helpers/getSplitStyles.js.map +7 -0
  40. package/dist/cjs/helpers/getStylesAtomic.js +117 -0
  41. package/dist/cjs/helpers/getStylesAtomic.js.map +7 -0
  42. package/dist/cjs/helpers/getStylesAtomic.native.js +16 -0
  43. package/dist/cjs/helpers/getStylesAtomic.native.js.map +7 -0
  44. package/dist/cjs/helpers/insertStyleRule.js +46 -0
  45. package/dist/cjs/helpers/insertStyleRule.js.map +7 -0
  46. package/dist/cjs/helpers/isObj.js +13 -0
  47. package/dist/cjs/helpers/isObj.js.map +7 -0
  48. package/dist/cjs/helpers/isTamaguiElement.js +33 -0
  49. package/dist/cjs/helpers/isTamaguiElement.js.map +7 -0
  50. package/dist/cjs/helpers/matchMedia.js +24 -0
  51. package/dist/cjs/helpers/matchMedia.js.map +7 -0
  52. package/dist/cjs/helpers/matchMedia.native.js +31 -0
  53. package/dist/cjs/helpers/matchMedia.native.js.map +7 -0
  54. package/dist/cjs/helpers/themeable.js +78 -0
  55. package/dist/cjs/helpers/themeable.js.map +7 -0
  56. package/dist/cjs/helpers/validate.js +82 -0
  57. package/dist/cjs/helpers/validate.js.map +7 -0
  58. package/dist/cjs/hooks/useConstant.js +37 -0
  59. package/dist/cjs/hooks/useConstant.js.map +7 -0
  60. package/dist/cjs/hooks/useFeatures.js +100 -0
  61. package/dist/cjs/hooks/useFeatures.js.map +7 -0
  62. package/dist/cjs/hooks/useMedia.js +206 -0
  63. package/dist/cjs/hooks/useMedia.js.map +7 -0
  64. package/dist/cjs/hooks/usePressable.js +50 -0
  65. package/dist/cjs/hooks/usePressable.js.map +7 -0
  66. package/dist/cjs/hooks/useTheme.js +111 -0
  67. package/dist/cjs/hooks/useTheme.js.map +7 -0
  68. package/dist/cjs/index.js +55 -0
  69. package/dist/cjs/index.js.map +7 -0
  70. package/dist/cjs/static/postProcessStyles.js +40 -0
  71. package/dist/cjs/static/postProcessStyles.js.map +7 -0
  72. package/dist/cjs/static.js +34 -0
  73. package/dist/cjs/static.js.map +7 -0
  74. package/dist/cjs/styled.js +72 -0
  75. package/dist/cjs/styled.js.map +7 -0
  76. package/dist/cjs/types.js +4 -0
  77. package/dist/cjs/types.js.map +7 -0
  78. package/dist/cjs/views/Animated.js +129 -0
  79. package/dist/cjs/views/Animated.js.map +7 -0
  80. package/dist/cjs/views/Stack.js +51 -0
  81. package/dist/cjs/views/Stack.js.map +7 -0
  82. package/dist/cjs/views/Text.js +93 -0
  83. package/dist/cjs/views/Text.js.map +7 -0
  84. package/dist/cjs/views/TextAncestorContext.js +41 -0
  85. package/dist/cjs/views/TextAncestorContext.js.map +7 -0
  86. package/dist/cjs/views/Theme.js +91 -0
  87. package/dist/cjs/views/Theme.js.map +7 -0
  88. package/dist/cjs/views/ThemeContext.js +29 -0
  89. package/dist/cjs/views/ThemeContext.js.map +7 -0
  90. package/dist/cjs/views/ThemeInverse.js +48 -0
  91. package/dist/cjs/views/ThemeInverse.js.map +7 -0
  92. package/dist/cjs/views/ThemeManagerContext.js +84 -0
  93. package/dist/cjs/views/ThemeManagerContext.js.map +7 -0
  94. package/dist/cjs/views/ThemeProvider.js +67 -0
  95. package/dist/cjs/views/ThemeProvider.js.map +7 -0
  96. package/dist/constants/platform.js +1 -1
  97. package/dist/constants/platform.js.map +2 -2
  98. package/dist/createComponent.js +51 -32
  99. package/dist/createComponent.js.map +2 -2
  100. package/dist/createFont.js +4 -0
  101. package/dist/createFont.js.map +2 -2
  102. package/dist/createTamagui.js +11 -2
  103. package/dist/createTamagui.js.map +2 -2
  104. package/dist/createTokens.js +4 -0
  105. package/dist/createTokens.js.map +2 -2
  106. package/dist/createVariable.js +3 -0
  107. package/dist/createVariable.js.map +2 -2
  108. package/{_ → dist/esm}/constants/constants.js +0 -0
  109. package/{_ → dist/esm}/constants/constants.js.map +1 -1
  110. package/{_ → dist/esm}/constants/platform.js +1 -2
  111. package/dist/esm/constants/platform.js.map +7 -0
  112. package/{_ → dist/esm}/constants/pseudos.js +0 -0
  113. package/{_ → dist/esm}/constants/pseudos.js.map +1 -1
  114. package/{_ → dist/esm}/constants/rnw.js +0 -0
  115. package/{_ → dist/esm}/constants/rnw.js.map +1 -1
  116. package/{_ → dist/esm}/createComponent.js +115 -78
  117. package/dist/esm/createComponent.js.map +7 -0
  118. package/dist/esm/createFont.js +28 -0
  119. package/dist/esm/createFont.js.map +7 -0
  120. package/{_ → dist/esm}/createShorthands.js +0 -0
  121. package/{_ → dist/esm}/createShorthands.js.map +1 -1
  122. package/{_ → dist/esm}/createTamagui.js +61 -15
  123. package/dist/esm/createTamagui.js.map +7 -0
  124. package/{_ → dist/esm}/createTheme.js +0 -0
  125. package/{_ → dist/esm}/createTheme.js.map +1 -1
  126. package/{_ → dist/esm}/createTokens.js +4 -0
  127. package/dist/esm/createTokens.js.map +7 -0
  128. package/{_ → dist/esm}/createVariable.js +3 -0
  129. package/{_ → dist/esm}/createVariable.js.map +3 -3
  130. package/dist/esm/helpers/addStylesUsingClassname.js +57 -0
  131. package/dist/esm/helpers/addStylesUsingClassname.js.map +7 -0
  132. package/{_ → dist/esm}/helpers/createMediaStyle.js +0 -0
  133. package/{_ → dist/esm}/helpers/createMediaStyle.js.map +1 -1
  134. package/dist/esm/helpers/createPropMapper.js +160 -0
  135. package/dist/esm/helpers/createPropMapper.js.map +7 -0
  136. package/{_ → dist/esm}/helpers/createTamaguiProvider.js +2 -19
  137. package/dist/esm/helpers/createTamaguiProvider.js.map +7 -0
  138. package/dist/esm/helpers/extendStaticConfig.js +59 -0
  139. package/dist/esm/helpers/extendStaticConfig.js.map +7 -0
  140. package/{_ → dist/esm}/helpers/fixNativeShadow.js +0 -0
  141. package/{_ → dist/esm}/helpers/fixNativeShadow.js.map +1 -1
  142. package/{_ → dist/esm}/helpers/fixNativeShadow.native.js +0 -0
  143. package/{_ → dist/esm}/helpers/fixNativeShadow.native.js.map +1 -1
  144. package/{_ → dist/esm}/helpers/getSplitStyles.js +18 -28
  145. package/dist/esm/helpers/getSplitStyles.js.map +7 -0
  146. package/{_ → dist/esm}/helpers/getStylesAtomic.js +1 -2
  147. package/{_ → dist/esm}/helpers/getStylesAtomic.js.map +2 -2
  148. package/{_ → dist/esm}/helpers/getStylesAtomic.native.js +0 -0
  149. package/{_ → dist/esm}/helpers/getStylesAtomic.native.js.map +1 -1
  150. package/{_ → dist/esm}/helpers/insertStyleRule.js +0 -0
  151. package/{_ → dist/esm}/helpers/insertStyleRule.js.map +1 -1
  152. package/dist/esm/helpers/isObj.js +7 -0
  153. package/dist/esm/helpers/isObj.js.map +7 -0
  154. package/dist/esm/helpers/isTamaguiElement.js +10 -0
  155. package/dist/esm/helpers/isTamaguiElement.js.map +7 -0
  156. package/{_ → dist/esm}/helpers/matchMedia.js +3 -0
  157. package/dist/esm/helpers/matchMedia.js.map +7 -0
  158. package/{_ → dist/esm}/helpers/matchMedia.native.js +1 -0
  159. package/{_ → dist/esm}/helpers/matchMedia.native.js.map +3 -3
  160. package/{_ → dist/esm}/helpers/themeable.js +1 -1
  161. package/{_ → dist/esm}/helpers/themeable.js.map +2 -2
  162. package/dist/esm/helpers/validate.js +60 -0
  163. package/dist/esm/helpers/validate.js.map +7 -0
  164. package/{_ → dist/esm}/hooks/useConstant.js +0 -0
  165. package/{_ → dist/esm}/hooks/useConstant.js.map +1 -1
  166. package/{_ → dist/esm}/hooks/useFeatures.js +39 -51
  167. package/dist/esm/hooks/useFeatures.js.map +7 -0
  168. package/{_ → dist/esm}/hooks/useMedia.js +7 -7
  169. package/dist/esm/hooks/useMedia.js.map +7 -0
  170. package/{_ → dist/esm}/hooks/usePressable.js +1 -2
  171. package/{_ → dist/esm}/hooks/usePressable.js.map +2 -2
  172. package/{_ → dist/esm}/hooks/useTheme.js +6 -11
  173. package/dist/esm/hooks/useTheme.js.map +7 -0
  174. package/{_ → dist/esm}/index.js +3 -1
  175. package/dist/esm/index.js.map +7 -0
  176. package/{_ → dist/esm}/static/postProcessStyles.js +0 -0
  177. package/{_ → dist/esm}/static/postProcessStyles.js.map +1 -1
  178. package/{_ → dist/esm}/static.js +3 -0
  179. package/dist/esm/static.js.map +7 -0
  180. package/{_ → dist/esm}/styled.js +2 -2
  181. package/dist/esm/styled.js.map +7 -0
  182. package/{_ → dist/esm}/types.js +0 -0
  183. package/{_ → dist/esm}/types.js.map +0 -0
  184. package/{_ → dist/esm}/views/Animated.js +0 -0
  185. package/{_ → dist/esm}/views/Animated.js.map +1 -1
  186. package/{_ → dist/esm}/views/Stack.js +0 -0
  187. package/{_ → dist/esm}/views/Stack.js.map +1 -1
  188. package/{_ → dist/esm}/views/Text.js +0 -0
  189. package/{_ → dist/esm}/views/Text.js.map +1 -1
  190. package/{_ → dist/esm}/views/TextAncestorContext.js +1 -2
  191. package/{_ → dist/esm}/views/TextAncestorContext.js.map +2 -2
  192. package/{_ → dist/esm}/views/Theme.js +25 -14
  193. package/dist/esm/views/Theme.js.map +7 -0
  194. package/{_ → dist/esm}/views/ThemeContext.js +0 -0
  195. package/{_ → dist/esm}/views/ThemeContext.js.map +1 -1
  196. package/{_ → dist/esm}/views/ThemeInverse.js +0 -1
  197. package/{_ → dist/esm}/views/ThemeInverse.js.map +3 -3
  198. package/{_ → dist/esm}/views/ThemeManagerContext.js +12 -7
  199. package/dist/esm/views/ThemeManagerContext.js.map +7 -0
  200. package/{_ → dist/esm}/views/ThemeProvider.js +0 -0
  201. package/{_ → dist/esm}/views/ThemeProvider.js.map +1 -1
  202. package/dist/helpers/createPropMapper.js +16 -9
  203. package/dist/helpers/createPropMapper.js.map +2 -2
  204. package/dist/helpers/getSplitStyles.js +13 -23
  205. package/dist/helpers/getSplitStyles.js.map +2 -2
  206. package/dist/helpers/isComponent.js +10 -0
  207. package/dist/helpers/isComponent.js.map +7 -0
  208. package/dist/helpers/isTamaguiComponent.js +10 -0
  209. package/dist/helpers/isTamaguiComponent.js.map +7 -0
  210. package/dist/helpers/isTamaguiElement.js +10 -0
  211. package/dist/helpers/isTamaguiElement.js.map +7 -0
  212. package/dist/helpers/matchMedia.js +3 -0
  213. package/dist/helpers/matchMedia.js.map +2 -2
  214. package/dist/helpers/matchMedia.native.js +1 -0
  215. package/dist/helpers/matchMedia.native.js.map +2 -2
  216. package/dist/helpers/validate.js +60 -0
  217. package/dist/helpers/validate.js.map +7 -0
  218. package/dist/helpers/validateConfig.js +46 -0
  219. package/dist/helpers/validateConfig.js.map +7 -0
  220. package/dist/helpers/validateTokens.js +29 -0
  221. package/dist/helpers/validateTokens.js.map +7 -0
  222. package/dist/hooks/useFeatures.js +39 -51
  223. package/dist/hooks/useFeatures.js.map +2 -2
  224. package/dist/hooks/useMedia.js +5 -3
  225. package/dist/hooks/useMedia.js.map +2 -2
  226. package/dist/hooks/useTheme.js +5 -9
  227. package/dist/hooks/useTheme.js.map +2 -2
  228. package/dist/index.cjs +274 -197
  229. package/dist/index.cjs.map +3 -3
  230. package/dist/index.js +1 -2
  231. package/dist/index.js.map +2 -2
  232. package/dist/jsx/constants/constants.js +13 -0
  233. package/dist/jsx/constants/platform.js +18 -0
  234. package/dist/jsx/constants/pseudos.js +17 -0
  235. package/dist/jsx/constants/rnw.js +21 -0
  236. package/dist/jsx/createComponent.js +458 -0
  237. package/dist/jsx/createFont.js +27 -0
  238. package/dist/jsx/createShorthands.js +9 -0
  239. package/dist/jsx/createTamagui.js +167 -0
  240. package/dist/jsx/createTheme.js +19 -0
  241. package/dist/jsx/createTokens.js +32 -0
  242. package/dist/jsx/createVariable.js +24 -0
  243. package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
  244. package/dist/jsx/helpers/createMediaStyle.js +33 -0
  245. package/dist/jsx/helpers/createPropMapper.js +159 -0
  246. package/dist/jsx/helpers/createTamaguiProvider.js +19 -0
  247. package/dist/jsx/helpers/extendStaticConfig.js +58 -0
  248. package/dist/jsx/helpers/fixNativeShadow.js +7 -0
  249. package/dist/jsx/helpers/fixNativeShadow.native.js +29 -0
  250. package/dist/jsx/helpers/getSplitStyles.js +149 -0
  251. package/dist/jsx/helpers/getStylesAtomic.js +82 -0
  252. package/dist/jsx/helpers/getStylesAtomic.native.js +9 -0
  253. package/dist/jsx/helpers/insertStyleRule.js +23 -0
  254. package/dist/jsx/helpers/isObj.js +6 -0
  255. package/dist/jsx/helpers/isTamaguiElement.js +9 -0
  256. package/dist/jsx/helpers/matchMedia.js +17 -0
  257. package/dist/jsx/helpers/matchMedia.native.js +8 -0
  258. package/dist/jsx/helpers/themeable.js +23 -0
  259. package/dist/jsx/helpers/validate.js +59 -0
  260. package/dist/jsx/hooks/useConstant.js +14 -0
  261. package/dist/jsx/hooks/useFeatures.js +57 -0
  262. package/dist/jsx/hooks/useMedia.js +172 -0
  263. package/dist/jsx/hooks/usePressable.js +12 -0
  264. package/dist/jsx/hooks/useTheme.js +88 -0
  265. package/dist/jsx/index.js +31 -0
  266. package/dist/jsx/static/postProcessStyles.js +17 -0
  267. package/dist/jsx/static.js +14 -0
  268. package/dist/jsx/styled.js +20 -0
  269. package/dist/jsx/types.js +0 -0
  270. package/dist/jsx/views/Animated.js +74 -0
  271. package/dist/jsx/views/Stack.js +11 -0
  272. package/dist/jsx/views/Text.js +59 -0
  273. package/dist/jsx/views/TextAncestorContext.js +14 -0
  274. package/dist/jsx/views/Theme.js +62 -0
  275. package/dist/jsx/views/ThemeContext.js +5 -0
  276. package/dist/jsx/views/ThemeInverse.js +22 -0
  277. package/dist/jsx/views/ThemeManagerContext.js +60 -0
  278. package/dist/jsx/views/ThemeProvider.js +39 -0
  279. package/dist/views/Theme.js +25 -13
  280. package/dist/views/Theme.js.map +2 -2
  281. package/dist/views/ThemeInverse.js +0 -1
  282. package/dist/views/ThemeInverse.js.map +2 -2
  283. package/dist/views/ThemeManagerContext.js +11 -5
  284. package/dist/views/ThemeManagerContext.js.map +2 -2
  285. package/package.json +17 -9
  286. package/src/constants/platform.ts +1 -1
  287. package/src/createComponent.tsx +59 -41
  288. package/src/createFont.ts +5 -0
  289. package/src/createTamagui.ts +11 -1
  290. package/src/createTokens.ts +6 -1
  291. package/src/createVariable.ts +4 -0
  292. package/src/helpers/createPropMapper.ts +16 -8
  293. package/src/helpers/getSplitStyles.tsx +16 -26
  294. package/src/helpers/isTamaguiElement.tsx +5 -0
  295. package/src/helpers/matchMedia.native.ts +3 -0
  296. package/src/helpers/matchMedia.ts +9 -1
  297. package/src/helpers/validate.ts +59 -0
  298. package/src/hooks/useFeatures.tsx +54 -53
  299. package/src/hooks/useMedia.tsx +5 -3
  300. package/src/hooks/useTheme.tsx +7 -8
  301. package/src/index.ts +1 -2
  302. package/src/types.tsx +9 -8
  303. package/src/views/Text.tsx +2 -1
  304. package/src/views/Theme.tsx +42 -21
  305. package/src/views/ThemeInverse.tsx +0 -1
  306. package/src/views/ThemeManagerContext.tsx +18 -6
  307. package/types/constants/constants.d.ts +8 -0
  308. package/types/constants/constants.d.ts.map +1 -0
  309. package/types/constants/platform.d.ts +9 -0
  310. package/types/constants/platform.d.ts.map +1 -0
  311. package/types/constants/pseudos.d.ts +15 -0
  312. package/types/constants/pseudos.d.ts.map +1 -0
  313. package/types/constants/rnw.d.ts +2 -0
  314. package/types/constants/rnw.d.ts.map +1 -0
  315. package/types/createComponent.d.ts +17 -0
  316. package/types/createComponent.d.ts.map +1 -0
  317. package/types/createFont.d.ts +3 -0
  318. package/types/createFont.d.ts.map +1 -0
  319. package/types/createShorthands.d.ts +2 -0
  320. package/types/createShorthands.d.ts.map +1 -0
  321. package/types/createTamagui.d.ts +38 -0
  322. package/types/createTamagui.d.ts.map +1 -0
  323. package/types/createTheme.d.ts +5 -0
  324. package/types/createTheme.d.ts.map +1 -0
  325. package/types/createTokens.d.ts +55 -0
  326. package/types/createTokens.d.ts.map +1 -0
  327. package/types/createVariable.d.ts +15 -0
  328. package/types/createVariable.d.ts.map +1 -0
  329. package/types/helpers/addStylesUsingClassname.d.ts +3 -0
  330. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -0
  331. package/types/helpers/createMediaStyle.d.ts +8 -0
  332. package/types/helpers/createMediaStyle.d.ts.map +1 -0
  333. package/types/helpers/createPropMapper.d.ts +3 -0
  334. package/types/helpers/createPropMapper.d.ts.map +1 -0
  335. package/types/helpers/createTamaguiProvider.d.ts +5 -0
  336. package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
  337. package/types/helpers/extendStaticConfig.d.ts +5 -0
  338. package/types/helpers/extendStaticConfig.d.ts.map +1 -0
  339. package/types/helpers/fixNativeShadow.d.ts +2 -0
  340. package/types/helpers/fixNativeShadow.d.ts.map +1 -0
  341. package/types/helpers/fixNativeShadow.native.d.ts +2 -0
  342. package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
  343. package/types/helpers/getSplitStyles.d.ts +15 -0
  344. package/types/helpers/getSplitStyles.d.ts.map +1 -0
  345. package/types/helpers/getStylesAtomic.d.ts +3 -0
  346. package/types/helpers/getStylesAtomic.d.ts.map +1 -0
  347. package/types/helpers/getStylesAtomic.native.d.ts +2 -0
  348. package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
  349. package/types/helpers/insertStyleRule.d.ts +2 -0
  350. package/types/helpers/insertStyleRule.d.ts.map +1 -0
  351. package/types/helpers/isObj.d.ts +2 -0
  352. package/types/helpers/isObj.d.ts.map +1 -0
  353. package/types/helpers/isTamaguiElement.d.ts +3 -0
  354. package/types/helpers/isTamaguiElement.d.ts.map +1 -0
  355. package/types/helpers/matchMedia.d.ts +2 -0
  356. package/types/helpers/matchMedia.d.ts.map +1 -0
  357. package/types/helpers/matchMedia.native.d.ts +3 -0
  358. package/types/helpers/matchMedia.native.d.ts.map +1 -0
  359. package/types/helpers/themeable.d.ts +10 -0
  360. package/types/helpers/themeable.d.ts.map +1 -0
  361. package/types/helpers/validate.d.ts +4 -0
  362. package/types/helpers/validate.d.ts.map +1 -0
  363. package/types/hooks/useConstant.d.ts +2 -0
  364. package/types/hooks/useConstant.d.ts.map +1 -0
  365. package/types/hooks/useFeatures.d.ts +5 -0
  366. package/types/hooks/useFeatures.d.ts.map +1 -0
  367. package/types/hooks/useMedia.d.ts +16 -0
  368. package/types/hooks/useMedia.d.ts.map +1 -0
  369. package/types/hooks/usePressable.d.ts +3 -0
  370. package/types/hooks/usePressable.d.ts.map +1 -0
  371. package/types/hooks/useTheme.d.ts +20 -0
  372. package/types/hooks/useTheme.d.ts.map +1 -0
  373. package/types/index.d.ts +29 -0
  374. package/types/index.d.ts.map +1 -0
  375. package/types/static/postProcessStyles.d.ts +7 -0
  376. package/types/static/postProcessStyles.d.ts.map +1 -0
  377. package/types/static.d.ts +15 -0
  378. package/types/static.d.ts.map +1 -0
  379. package/types/styled.d.ts +21 -0
  380. package/types/styled.d.ts.map +1 -0
  381. package/types/types.d.ts +306 -0
  382. package/types/types.d.ts.map +1 -0
  383. package/types/views/Animated.d.ts +15 -0
  384. package/types/views/Animated.d.ts.map +1 -0
  385. package/types/views/Stack.d.ts +3 -0
  386. package/types/views/Stack.d.ts.map +1 -0
  387. package/types/views/Text.d.ts +3 -0
  388. package/types/views/Text.d.ts.map +1 -0
  389. package/types/views/TextAncestorContext.d.ts +3 -0
  390. package/types/views/TextAncestorContext.d.ts.map +1 -0
  391. package/types/views/Theme.d.ts +8 -0
  392. package/types/views/Theme.d.ts.map +1 -0
  393. package/types/views/ThemeContext.d.ts +18 -0
  394. package/types/views/ThemeContext.d.ts.map +1 -0
  395. package/types/views/ThemeInverse.d.ts +10 -0
  396. package/types/views/ThemeInverse.d.ts.map +1 -0
  397. package/types/views/ThemeManagerContext.d.ts +22 -0
  398. package/types/views/ThemeManagerContext.d.ts.map +1 -0
  399. package/types/views/ThemeProvider.d.ts +10 -0
  400. package/types/views/ThemeProvider.d.ts.map +1 -0
  401. package/.ultra.cache.json +0 -1
  402. package/_/constants/platform.js.map +0 -7
  403. package/_/createComponent.js.map +0 -7
  404. package/_/createTamagui.js.map +0 -7
  405. package/_/createTokens.js.map +0 -7
  406. package/_/helpers/addStylesUsingClassname.js +0 -32
  407. package/_/helpers/addStylesUsingClassname.js.map +0 -7
  408. package/_/helpers/createTamaguiProvider.js.map +0 -7
  409. package/_/helpers/extendStaticConfig.js +0 -176
  410. package/_/helpers/extendStaticConfig.js.map +0 -7
  411. package/_/helpers/getSplitStyles.js.map +0 -7
  412. package/_/helpers/matchMedia.js.map +0 -7
  413. package/_/hooks/useFeatures.js.map +0 -7
  414. package/_/hooks/useForceUpdate.js +0 -28
  415. package/_/hooks/useForceUpdate.js.map +0 -7
  416. package/_/hooks/useMedia.js.map +0 -7
  417. package/_/hooks/useTheme.js.map +0 -7
  418. package/_/index.js.map +0 -7
  419. package/_/static.js.map +0 -7
  420. package/_/styled.js.map +0 -7
  421. package/_/views/Theme.js.map +0 -7
  422. package/_/views/ThemeManagerContext.js.map +0 -7
  423. package/src/hooks/useForceUpdate.tsx +0 -26
  424. package/src/views/SafeAreaProvider.tsx +0 -33
  425. package/tsconfig.json +0 -8
  426. package/types.d.ts +0 -558
@@ -0,0 +1,88 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useForceUpdate } from "@tamagui/use-force-update";
4
+ import { useContext, useEffect, useMemo, useRef, useState } from "react";
5
+ import { useIsomorphicLayoutEffect } from "../constants/platform";
6
+ import { Variable } from "../createVariable";
7
+ import { ThemeContext } from "../views/ThemeContext";
8
+ import { ThemeManagerContext } from "../views/ThemeManagerContext";
9
+ import { GET_DEFAULT_THEME } from "../views/ThemeProvider";
10
+ const areEqualSets = /* @__PURE__ */ __name((a, b) => {
11
+ if (a.size !== b.size)
12
+ return false;
13
+ for (const val in a) {
14
+ if (!b.has(val)) {
15
+ return false;
16
+ }
17
+ }
18
+ return true;
19
+ }, "areEqualSets");
20
+ const useThemeName = /* @__PURE__ */ __name((opts) => {
21
+ const parent = useContext(ThemeManagerContext);
22
+ const [name, setName] = useState(parent.name);
23
+ useIsomorphicLayoutEffect(() => {
24
+ return parent.onChangeTheme((next, manager) => {
25
+ setName(opts?.parent ? manager.parentName : next);
26
+ });
27
+ }, [parent]);
28
+ return name || "light";
29
+ }, "useThemeName");
30
+ const useDefaultThemeName = /* @__PURE__ */ __name(() => {
31
+ return useContext(ThemeContext)[GET_DEFAULT_THEME];
32
+ }, "useDefaultThemeName");
33
+ const useTheme = /* @__PURE__ */ __name(() => {
34
+ const forceUpdate = useForceUpdate();
35
+ const manager = useContext(ThemeManagerContext);
36
+ const themes = useContext(ThemeContext);
37
+ const state = useRef();
38
+ if (!state.current) {
39
+ state.current = {
40
+ uuid: {},
41
+ keys: new Set(),
42
+ isRendering: true
43
+ };
44
+ }
45
+ state.current.isRendering = true;
46
+ useIsomorphicLayoutEffect(() => {
47
+ const st = state.current;
48
+ st.isRendering = false;
49
+ const cur = manager.keys.get(st.uuid);
50
+ if (!cur || !areEqualSets(st.keys, cur)) {
51
+ manager.track(st.uuid, st.keys);
52
+ }
53
+ });
54
+ useEffect(() => {
55
+ return manager.onUpdate(state.current.uuid, forceUpdate);
56
+ }, []);
57
+ const theme = (manager.name ? themes[manager.name] : themes.light) ?? themes.light;
58
+ return useMemo(() => {
59
+ return new Proxy(theme, {
60
+ get(_, key) {
61
+ const name = manager.name;
62
+ if (!name) {
63
+ return Reflect.get(_, key);
64
+ }
65
+ let activeTheme = themes[name];
66
+ if (!activeTheme) {
67
+ console.error("No theme by name", name, "only:", themes, "keeping current theme");
68
+ activeTheme = theme;
69
+ }
70
+ const val = activeTheme[key];
71
+ if (process.env.NODE_ENV === "development") {
72
+ if (typeof val === "undefined") {
73
+ throw new Error(`No theme value "${String(key)}" in: ${Object.keys(activeTheme)}`);
74
+ }
75
+ }
76
+ if (state.current.isRendering) {
77
+ state.current.keys.add(key);
78
+ }
79
+ return new Variable({ val: val.val, name: key });
80
+ }
81
+ });
82
+ }, []);
83
+ }, "useTheme");
84
+ export {
85
+ useDefaultThemeName,
86
+ useTheme,
87
+ useThemeName
88
+ };
@@ -0,0 +1,31 @@
1
+ export * from "./createComponent";
2
+ export * from "./createShorthands";
3
+ export * from "./createTheme";
4
+ export * from "./createTamagui";
5
+ export * from "./createFont";
6
+ import { createTokens } from "./createTokens";
7
+ export * from "./createVariable";
8
+ export * from "./styled";
9
+ export * from "./types";
10
+ export * from "./constants/pseudos";
11
+ export * from "./constants/constants";
12
+ export * from "./constants/platform";
13
+ export * from "./constants/rnw";
14
+ export * from "./helpers/isObj";
15
+ export * from "./helpers/getStylesAtomic";
16
+ export * from "./helpers/matchMedia";
17
+ export * from "./helpers/themeable";
18
+ export * from "./helpers/isTamaguiElement";
19
+ export * from "./hooks/useConstant";
20
+ export * from "./hooks/useMedia";
21
+ export * from "./hooks/useTheme";
22
+ export * from "./views/Animated";
23
+ export * from "./views/Stack";
24
+ export * from "./views/Text";
25
+ export * from "./views/Theme";
26
+ export * from "./views/ThemeInverse";
27
+ export * from "./views/ThemeProvider";
28
+ export * from "./views/TextAncestorContext";
29
+ export {
30
+ createTokens
31
+ };
@@ -0,0 +1,17 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { getSplitStyles } from "../helpers/getSplitStyles";
4
+ const postProcessStyles = /* @__PURE__ */ __name((inStyles, staticConfig, theme) => {
5
+ const { style, viewProps, pseudos, classNames } = getSplitStyles(inStyles, staticConfig, theme);
6
+ const next = {};
7
+ for (const s of style) {
8
+ if (!s)
9
+ continue;
10
+ Object.assign(next, s);
11
+ }
12
+ Object.assign(next, pseudos);
13
+ return { style: next, viewProps, classNames };
14
+ }, "postProcessStyles");
15
+ export {
16
+ postProcessStyles
17
+ };
@@ -0,0 +1,14 @@
1
+ export * from "./styled";
2
+ export * from "./createComponent";
3
+ export * from "./createFont";
4
+ export * from "./createTokens";
5
+ export * from "./createTamagui";
6
+ export * from "./constants/constants";
7
+ export * from "./hooks/useMedia";
8
+ export * from "./hooks/useTheme";
9
+ export * from "./helpers/isObj";
10
+ export * from "./helpers/getStylesAtomic";
11
+ export * from "./helpers/getSplitStyles";
12
+ export * from "@tamagui/helpers";
13
+ export * from "./constants/pseudos";
14
+ export * from "./static/postProcessStyles";
@@ -0,0 +1,20 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { createComponent } from "./createComponent";
4
+ import { extendStaticConfig } from "./helpers/extendStaticConfig";
5
+ function styled(Component, options, staticExtractionOptions) {
6
+ const staticConfigProps = (() => {
7
+ if (options) {
8
+ const { variants, ...defaultProps } = options;
9
+ return { ...staticExtractionOptions, variants, defaultProps };
10
+ }
11
+ return {};
12
+ })();
13
+ const config = extendStaticConfig(Component, staticConfigProps);
14
+ const component = createComponent(config);
15
+ return component;
16
+ }
17
+ __name(styled, "styled");
18
+ export {
19
+ styled
20
+ };
File without changes
@@ -0,0 +1,74 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useMemo } from "react";
4
+ import {
5
+ Animated
6
+ } from "react-native";
7
+ import { useIsomorphicLayoutEffect } from "../constants/platform";
8
+ import { useConstant } from "../hooks/useConstant";
9
+ import { Stack } from "./Stack";
10
+ const defaultAnimation = {
11
+ from: {
12
+ opacity: 0,
13
+ translateY: 12
14
+ },
15
+ to: {
16
+ opacity: 1,
17
+ translateY: 0
18
+ }
19
+ };
20
+ const styleKeys = {
21
+ opacity: true,
22
+ backgroundColor: true,
23
+ borderColor: true
24
+ };
25
+ const AnimatedStack = /* @__PURE__ */ __name(({
26
+ animateState = "in",
27
+ animation = defaultAnimation,
28
+ velocity = 6,
29
+ children,
30
+ animated,
31
+ ...props
32
+ }) => {
33
+ const driver = useConstant(() => {
34
+ return new Animated.Value(0);
35
+ });
36
+ const animatedProps = useMemo(() => {
37
+ if (!animated) {
38
+ return null;
39
+ }
40
+ const styleProps = {};
41
+ const transform = [];
42
+ for (const key in animation.from) {
43
+ const fromVal = animation.from[key];
44
+ const toVal = animation.to[key];
45
+ const interpolatedVal = driver.interpolate({
46
+ inputRange: [0, 1],
47
+ outputRange: [fromVal, toVal]
48
+ });
49
+ if (styleKeys[key]) {
50
+ styleProps[key] = interpolatedVal;
51
+ } else {
52
+ transform.push({
53
+ [key]: interpolatedVal
54
+ });
55
+ }
56
+ }
57
+ return { transform, ...styleProps };
58
+ }, [animated, animateState]);
59
+ useIsomorphicLayoutEffect(() => {
60
+ if (!animated) {
61
+ return;
62
+ }
63
+ Animated.spring(driver, {
64
+ useNativeDriver: true,
65
+ velocity,
66
+ toValue: animateState === "in" ? 1 : 0
67
+ }).start();
68
+ }, [animated, animateState]);
69
+ const childrenMemo = useMemo(() => children, [children]);
70
+ return <Stack animated={animated} {...props} {...animatedProps}>{childrenMemo}</Stack>;
71
+ }, "AnimatedStack");
72
+ export {
73
+ AnimatedStack
74
+ };
@@ -0,0 +1,11 @@
1
+ import { stackDefaultStyles } from "../constants/constants";
2
+ import { createComponent } from "../createComponent";
3
+ const Stack = createComponent({
4
+ defaultProps: {
5
+ ...stackDefaultStyles,
6
+ flexDirection: "column"
7
+ }
8
+ });
9
+ export {
10
+ Stack
11
+ };
@@ -0,0 +1,59 @@
1
+ import { isWeb } from "../constants/platform";
2
+ import { createComponent } from "../createComponent";
3
+ import { stylePropsTextOnly, validStyles } from "../static";
4
+ const ellipseStyle = {
5
+ maxWidth: "100%",
6
+ overflow: "hidden",
7
+ textOverflow: "ellipsis",
8
+ whiteSpace: "nowrap"
9
+ };
10
+ const Text = createComponent({
11
+ isText: true,
12
+ defaultProps: {
13
+ display: isWeb ? "inline" : "inline-flex",
14
+ boxSizing: "border-box",
15
+ fontFamily: "System",
16
+ wordWrap: "break-word"
17
+ },
18
+ variants: {
19
+ numberOfLines: {
20
+ 1: ellipseStyle,
21
+ "[number]": (lines) => lines > 1 ? { WebkitLineClamp: 1 } : null
22
+ },
23
+ selectable: {
24
+ true: {
25
+ userSelect: "text"
26
+ },
27
+ false: {
28
+ userSelect: "none"
29
+ }
30
+ },
31
+ pressable: {
32
+ true: {
33
+ cursor: "pointer"
34
+ }
35
+ },
36
+ ellipse: {
37
+ true: isWeb ? ellipseStyle : {
38
+ numberOfLines: 1,
39
+ lineBreakMode: "clip"
40
+ }
41
+ }
42
+ },
43
+ deoptProps: new Set(isWeb ? [] : ["ellipse"]),
44
+ validStyles: {
45
+ ...validStyles,
46
+ ...stylePropsTextOnly,
47
+ ...isWeb && {
48
+ userSelect: true,
49
+ textOverflow: true,
50
+ whiteSpace: true,
51
+ wordWrap: true,
52
+ selectable: true,
53
+ cursor: true
54
+ }
55
+ }
56
+ });
57
+ export {
58
+ Text
59
+ };
@@ -0,0 +1,14 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { rnw } from "../constants/rnw";
4
+ const TextAncestorContext = rnw?.TextAncestorContext;
5
+ const TextAncestorProvider = /* @__PURE__ */ __name((props) => {
6
+ if (TextAncestorContext) {
7
+ return <TextAncestorContext.Provider value={false}>{props.children}</TextAncestorContext.Provider>;
8
+ }
9
+ return props.children;
10
+ }, "TextAncestorProvider");
11
+ export {
12
+ TextAncestorContext,
13
+ TextAncestorProvider
14
+ };
@@ -0,0 +1,62 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useContext, useState } from "react";
4
+ import { isWeb, useIsomorphicLayoutEffect } from "../constants/platform";
5
+ import { getThemeParentClassName } from "../createTamagui";
6
+ import { useConstant } from "../hooks/useConstant";
7
+ import { ThemeContext } from "./ThemeContext";
8
+ import { ThemeManager, ThemeManagerContext } from "./ThemeManagerContext";
9
+ const Theme = /* @__PURE__ */ __name((props) => {
10
+ const parent = useContext(ThemeManagerContext);
11
+ const themes = useContext(ThemeContext);
12
+ const [parentName, setParentName] = useState(parent.name || "light");
13
+ if (!themes) {
14
+ console.warn("Error, no themes in context", props);
15
+ return props.children;
16
+ }
17
+ const nextNameParent = `${props.name}-${parentName}`;
18
+ const nextNameParentParent = `${props.name}-${parent.parentName}`;
19
+ const name = !props.name ? null : props.name in themes ? props.name : nextNameParent in themes ? nextNameParent : nextNameParentParent in themes ? nextNameParentParent : null;
20
+ const theme = name ? themes[name] : null;
21
+ const themeManager = useConstant(() => {
22
+ if (!theme) {
23
+ return null;
24
+ }
25
+ const manager = new ThemeManager();
26
+ if (name) {
27
+ manager.setActiveTheme({ name, theme: themes[name], parentName });
28
+ }
29
+ return manager;
30
+ });
31
+ useIsomorphicLayoutEffect(() => {
32
+ if (!themeManager) {
33
+ return;
34
+ }
35
+ if (name) {
36
+ themeManager.setActiveTheme({ name, theme, parentName });
37
+ }
38
+ return parent.onChangeTheme((next) => {
39
+ if (next) {
40
+ themeManager.setActiveTheme({ name: next, theme: themes[next], parentName });
41
+ setParentName(next);
42
+ }
43
+ });
44
+ }, [themes, name, parentName]);
45
+ if (!name || !theme) {
46
+ return props.children;
47
+ }
48
+ const contents = themeManager ? <ThemeManagerContext.Provider value={themeManager}>{props.children}</ThemeManagerContext.Provider> : props.children;
49
+ if (isWeb) {
50
+ if (props.disableThemeClass) {
51
+ return contents;
52
+ }
53
+ if (name) {
54
+ const color = themes[name]?.["color"]?.["variable"];
55
+ return <div className={getThemeParentClassName(props.name)} style={{ display: "contents", color }}>{contents}</div>;
56
+ }
57
+ }
58
+ return contents;
59
+ }, "Theme");
60
+ export {
61
+ Theme
62
+ };
@@ -0,0 +1,5 @@
1
+ import { createContext } from "react";
2
+ const ThemeContext = createContext(null);
3
+ export {
4
+ ThemeContext
5
+ };
@@ -0,0 +1,22 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useDefaultThemeName, useThemeName } from "../hooks/useTheme";
4
+ import { Theme } from "./Theme";
5
+ let inversions = {
6
+ light: "dark",
7
+ dark: "light"
8
+ };
9
+ function setThemeInversions(next) {
10
+ inversions = next;
11
+ }
12
+ __name(setThemeInversions, "setThemeInversions");
13
+ const ThemeInverse = /* @__PURE__ */ __name((props) => {
14
+ const themeName = useThemeName();
15
+ const defaultTheme = useDefaultThemeName();
16
+ const name = inversions[themeName] || inversions[defaultTheme] || null;
17
+ return <Theme name={name}>{props.children}</Theme>;
18
+ }, "ThemeInverse");
19
+ export {
20
+ ThemeInverse,
21
+ setThemeInversions
22
+ };
@@ -0,0 +1,60 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { createContext } from "react";
4
+ class ThemeManager {
5
+ constructor() {
6
+ this.name = "light";
7
+ this.parentName = null;
8
+ this.keys = new Map();
9
+ this.listeners = new Map();
10
+ this.themeListeners = new Set();
11
+ this.theme = null;
12
+ }
13
+ setActiveTheme({
14
+ name,
15
+ theme,
16
+ parentName
17
+ }) {
18
+ if (name === this.name)
19
+ return;
20
+ this.name = name;
21
+ this.theme = theme;
22
+ this.parentName = parentName || null;
23
+ this.update();
24
+ }
25
+ track(uuid, keys) {
26
+ if (!this.name)
27
+ return;
28
+ this.keys.set(uuid, keys);
29
+ }
30
+ update() {
31
+ if (!this.name) {
32
+ this.keys.clear();
33
+ }
34
+ for (const [uuid, keys] of this.keys.entries()) {
35
+ if (keys.size) {
36
+ this.listeners.get(uuid)?.();
37
+ }
38
+ }
39
+ this.themeListeners.forEach((cb) => cb(this.name, this));
40
+ }
41
+ onChangeTheme(cb) {
42
+ this.themeListeners.add(cb);
43
+ return () => {
44
+ this.themeListeners.delete(cb);
45
+ };
46
+ }
47
+ onUpdate(uuid, cb) {
48
+ this.listeners.set(uuid, cb);
49
+ return () => {
50
+ this.listeners.delete(uuid);
51
+ this.keys.delete(uuid);
52
+ };
53
+ }
54
+ }
55
+ __name(ThemeManager, "ThemeManager");
56
+ const ThemeManagerContext = createContext(new ThemeManager());
57
+ export {
58
+ ThemeManager,
59
+ ThemeManagerContext
60
+ };
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useMemo } from "react";
4
+ import { useIsomorphicLayoutEffect } from "../constants/platform";
5
+ import { getHasConfigured, getThemeParentClassName } from "../createTamagui";
6
+ import { Theme } from "./Theme";
7
+ import { ThemeContext } from "./ThemeContext";
8
+ const GET_DEFAULT_THEME = "___TGUI";
9
+ const ThemeProvider = /* @__PURE__ */ __name((props) => {
10
+ if (!getHasConfigured()) {
11
+ throw new Error(`Missing configureThemes() call, add to your root file`);
12
+ }
13
+ useIsomorphicLayoutEffect(() => {
14
+ if (props.disableRootThemeClass) {
15
+ return;
16
+ }
17
+ if (typeof document !== "undefined") {
18
+ const cns = getThemeParentClassName(`${props.defaultTheme}`).split(" ");
19
+ cns.forEach((cn) => document.body.classList.add(cn));
20
+ return () => {
21
+ cns.forEach((cn) => document.body.classList.remove(cn));
22
+ };
23
+ }
24
+ }, []);
25
+ const themeContext = useMemo(() => {
26
+ return new Proxy(props.themes, {
27
+ get(target, key) {
28
+ if (key === GET_DEFAULT_THEME)
29
+ return props.defaultTheme;
30
+ return Reflect.get(target, key);
31
+ }
32
+ });
33
+ }, [props.themes]);
34
+ return <ThemeContext.Provider value={themeContext}><Theme name={props.defaultTheme} disableThemeClass={props.disableRootThemeClass}>{props.children}</Theme></ThemeContext.Provider>;
35
+ }, "ThemeProvider");
36
+ export {
37
+ GET_DEFAULT_THEME,
38
+ ThemeProvider
39
+ };
@@ -11,28 +11,38 @@ const Theme = /* @__PURE__ */ __name((props) => {
11
11
  const themes = useContext(ThemeContext);
12
12
  const [parentName, setParentName] = useState(parent.name || "light");
13
13
  if (!themes) {
14
- console.warn("no themes???", props);
14
+ console.warn("Error, no themes in context", props);
15
15
  return props.children;
16
16
  }
17
- const name = props.name;
18
- const theme = themes[name] || themes[`${name}-${parentName}`];
17
+ const nextNameParent = `${props.name}-${parentName}`;
18
+ const nextNameParentParent = `${props.name}-${parent.parentName}`;
19
+ const name = !props.name ? null : props.name in themes ? props.name : nextNameParent in themes ? nextNameParent : nextNameParentParent in themes ? nextNameParentParent : null;
20
+ const theme = name ? themes[name] : null;
19
21
  const themeManager = useConstant(() => {
22
+ if (!theme) {
23
+ return null;
24
+ }
20
25
  const manager = new ThemeManager();
21
26
  if (name) {
22
- manager.setActiveTheme(name, themes[name]);
27
+ manager.setActiveTheme({ name, theme: themes[name], parentName });
23
28
  }
24
29
  return manager;
25
30
  });
26
31
  useIsomorphicLayoutEffect(() => {
27
- themeManager.setActiveTheme(name, theme);
32
+ if (!themeManager) {
33
+ return;
34
+ }
35
+ if (name) {
36
+ themeManager.setActiveTheme({ name, theme, parentName });
37
+ }
28
38
  return parent.onChangeTheme((next) => {
29
39
  if (next) {
30
- themeManager.setActiveTheme(next, themes[next]);
40
+ themeManager.setActiveTheme({ name: next, theme: themes[next], parentName });
31
41
  setParentName(next);
32
42
  }
33
43
  });
34
- }, [themes, name]);
35
- if (!name) {
44
+ }, [themes, name, parentName]);
45
+ if (!name || !theme) {
36
46
  return props.children;
37
47
  }
38
48
  const contents = themeManager ? /* @__PURE__ */ React.createElement(ThemeManagerContext.Provider, {
@@ -42,11 +52,13 @@ const Theme = /* @__PURE__ */ __name((props) => {
42
52
  if (props.disableThemeClass) {
43
53
  return contents;
44
54
  }
45
- const color = themes[name]?.["color"]?.["variable"];
46
- return /* @__PURE__ */ React.createElement("div", {
47
- className: getThemeParentClassName(name),
48
- style: { display: "contents", color }
49
- }, contents);
55
+ if (name) {
56
+ const color = themes[name]?.["color"]?.["variable"];
57
+ return /* @__PURE__ */ React.createElement("div", {
58
+ className: getThemeParentClassName(props.name),
59
+ style: { display: "contents", color }
60
+ }, contents);
61
+ }
50
62
  }
51
63
  return contents;
52
64
  }, "Theme");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/views/Theme.tsx"],
4
- "sourcesContent": ["import React, { useContext, useState } from 'react'\n\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../createTamagui'\nimport { useConstant } from '../hooks/useConstant'\nimport { ThemeName, Themes } from '../types'\nimport { ThemeContext } from './ThemeContext'\nimport { ThemeManager, ThemeManagerContext } from './ThemeManagerContext'\n\nexport type ThemeProps = {\n disableThemeClass?: boolean\n name: ThemeName | null\n children?: any\n}\n\nexport const Theme = (props: ThemeProps) => {\n const parent = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const [parentName, setParentName] = useState(parent.name || 'light')\n if (!themes) {\n console.warn('no themes???', props)\n return props.children\n }\n const name = props.name as string\n const theme = themes[name] || themes[`${name}-${parentName}`]\n const themeManager = useConstant<ThemeManager>(() => {\n const manager = new ThemeManager()\n if (name) {\n manager.setActiveTheme(name, themes[name])\n }\n return manager\n })\n\n useIsomorphicLayoutEffect(() => {\n themeManager.setActiveTheme(name, theme)\n return parent.onChangeTheme((next) => {\n if (next) {\n themeManager.setActiveTheme(next, themes[next])\n setParentName(next)\n }\n })\n }, [themes, name])\n\n if (!name) {\n return props.children\n }\n\n const contents = themeManager ? (\n <ThemeManagerContext.Provider value={themeManager}>\n {props.children}\n </ThemeManagerContext.Provider>\n ) : (\n props.children\n )\n\n if (isWeb) {\n if (props.disableThemeClass) {\n return contents\n }\n const color = themes[name]?.['color']?.['variable']\n return (\n <div\n className={getThemeParentClassName(name)}\n // in order to provide currentColor, set color by default\n style={{ display: 'contents', color }}\n >\n {contents}\n </div>\n )\n }\n\n return contents\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAQO,MAAM,QAAQ,wBAAC,UAAsB;AAC1C,QAAM,SAAS,WAAW;AAC1B,QAAM,SAAS,WAAW;AAC1B,QAAM,CAAC,YAAY,iBAAiB,SAAS,OAAO,QAAQ;AAC5D,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,gBAAgB;AAC7B,WAAO,MAAM;AAAA;AAEf,QAAM,OAAO,MAAM;AACnB,QAAM,QAAQ,OAAO,SAAS,OAAO,GAAG,QAAQ;AAChD,QAAM,eAAe,YAA0B,MAAM;AACnD,UAAM,UAAU,IAAI;AACpB,QAAI,MAAM;AACR,cAAQ,eAAe,MAAM,OAAO;AAAA;AAEtC,WAAO;AAAA;AAGT,4BAA0B,MAAM;AAC9B,iBAAa,eAAe,MAAM;AAClC,WAAO,OAAO,cAAc,CAAC,SAAS;AACpC,UAAI,MAAM;AACR,qBAAa,eAAe,MAAM,OAAO;AACzC,sBAAc;AAAA;AAAA;AAAA,KAGjB,CAAC,QAAQ;AAEZ,MAAI,CAAC,MAAM;AACT,WAAO,MAAM;AAAA;AAGf,QAAM,WAAW,eACf,oCAAC,oBAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KAClC,MAAM,YAGT,MAAM;AAGR,MAAI,OAAO;AACT,QAAI,MAAM,mBAAmB;AAC3B,aAAO;AAAA;AAET,UAAM,QAAQ,OAAO,QAAQ,WAAW;AACxC,WACE,oCAAC,OAAD;AAAA,MACE,WAAW,wBAAwB;AAAA,MAEnC,OAAO,EAAE,SAAS,YAAY;AAAA,OAE7B;AAAA;AAKP,SAAO;AAAA,GAxDY;",
4
+ "sourcesContent": ["import React, { useContext, useState } from 'react'\n\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../createTamagui'\nimport { useConstant } from '../hooks/useConstant'\nimport { ThemeName } from '../types'\nimport { ThemeContext } from './ThemeContext'\nimport { ThemeManager, ThemeManagerContext } from './ThemeManagerContext'\n\nexport type ThemeProps = {\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n children?: any\n}\n\nexport const Theme = (props: ThemeProps) => {\n const parent = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const [parentName, setParentName] = useState(parent.name || 'light')\n if (!themes) {\n console.warn('Error, no themes in context', props)\n return props.children\n }\n\n const nextNameParent = `${props.name}-${parentName}`\n const nextNameParentParent = `${props.name}-${parent.parentName}`\n const name = !props.name\n ? null\n : props.name in themes\n ? props.name\n : nextNameParent in themes\n ? nextNameParent\n : nextNameParentParent in themes\n ? nextNameParentParent\n : null\n const theme = name ? themes[name] : null\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!theme) {\n return null\n }\n const manager = new ThemeManager()\n if (name) {\n manager.setActiveTheme({ name, theme: themes[name], parentName })\n }\n return manager\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!themeManager) {\n return\n }\n if (name) {\n themeManager.setActiveTheme({ name, theme, parentName })\n }\n return parent.onChangeTheme((next) => {\n if (next) {\n themeManager.setActiveTheme({ name: next, theme: themes[next], parentName })\n setParentName(next)\n }\n })\n }, [themes, name, parentName])\n\n if (!name || !theme) {\n return props.children\n }\n\n const contents = themeManager ? (\n <ThemeManagerContext.Provider value={themeManager}>\n {props.children}\n </ThemeManagerContext.Provider>\n ) : (\n props.children\n )\n\n if (isWeb) {\n if (props.disableThemeClass) {\n return contents\n }\n if (name) {\n const color = themes[name]?.['color']?.['variable']\n return (\n <div\n className={getThemeParentClassName(props.name)}\n // in order to provide currentColor, set color by default\n style={{ display: 'contents', color }}\n >\n {contents}\n </div>\n )\n }\n }\n\n return contents\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAQO,MAAM,QAAQ,wBAAC,UAAsB;AAC1C,QAAM,SAAS,WAAW;AAC1B,QAAM,SAAS,WAAW;AAC1B,QAAM,CAAC,YAAY,iBAAiB,SAAS,OAAO,QAAQ;AAC5D,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,+BAA+B;AAC5C,WAAO,MAAM;AAAA;AAGf,QAAM,iBAAiB,GAAG,MAAM,QAAQ;AACxC,QAAM,uBAAuB,GAAG,MAAM,QAAQ,OAAO;AACrD,QAAM,OAAO,CAAC,MAAM,OAChB,OACA,MAAM,QAAQ,SACd,MAAM,OACN,kBAAkB,SAClB,iBACA,wBAAwB,SACxB,uBACA;AACJ,QAAM,QAAQ,OAAO,OAAO,QAAQ;AACpC,QAAM,eAAe,YAAiC,MAAM;AAC1D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA;AAET,UAAM,UAAU,IAAI;AACpB,QAAI,MAAM;AACR,cAAQ,eAAe,EAAE,MAAM,OAAO,OAAO,OAAO;AAAA;AAEtD,WAAO;AAAA;AAGT,4BAA0B,MAAM;AAC9B,QAAI,CAAC,cAAc;AACjB;AAAA;AAEF,QAAI,MAAM;AACR,mBAAa,eAAe,EAAE,MAAM,OAAO;AAAA;AAE7C,WAAO,OAAO,cAAc,CAAC,SAAS;AACpC,UAAI,MAAM;AACR,qBAAa,eAAe,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO;AAC/D,sBAAc;AAAA;AAAA;AAAA,KAGjB,CAAC,QAAQ,MAAM;AAElB,MAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,WAAO,MAAM;AAAA;AAGf,QAAM,WAAW,eACf,oCAAC,oBAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KAClC,MAAM,YAGT,MAAM;AAGR,MAAI,OAAO;AACT,QAAI,MAAM,mBAAmB;AAC3B,aAAO;AAAA;AAET,QAAI,MAAM;AACR,YAAM,QAAQ,OAAO,QAAQ,WAAW;AACxC,aACE,oCAAC,OAAD;AAAA,QACE,WAAW,wBAAwB,MAAM;AAAA,QAEzC,OAAO,EAAE,SAAS,YAAY;AAAA,SAE7B;AAAA;AAAA;AAMT,SAAO;AAAA,GA7EY;",
6
6
  "names": []
7
7
  }
@@ -15,7 +15,6 @@ const ThemeInverse = /* @__PURE__ */ __name((props) => {
15
15
  const themeName = useThemeName();
16
16
  const defaultTheme = useDefaultThemeName();
17
17
  const name = inversions[themeName] || inversions[defaultTheme] || null;
18
- console.log("todo fixme invert", { themeName, defaultTheme, next: name });
19
18
  return /* @__PURE__ */ React.createElement(Theme, {
20
19
  name
21
20
  }, props.children);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/views/ThemeInverse.tsx"],
4
- "sourcesContent": ["import React from 'react'\n\nimport { useDefaultThemeName, useThemeName } from '../hooks/useTheme'\nimport { Theme } from './Theme'\n\ntype StringRecord = { [key: string]: string }\n\nlet inversions: StringRecord = {\n light: 'dark',\n dark: 'light',\n}\n\nexport function setThemeInversions(next: StringRecord) {\n inversions = next\n}\n\nexport const ThemeInverse = (props: { children: any }) => {\n const themeName = useThemeName()\n const defaultTheme = useDefaultThemeName()\n const name = inversions[themeName] || inversions[defaultTheme] || null\n console.log('todo fixme invert', { themeName, defaultTheme, next: name })\n return <Theme name={name}>{props.children}</Theme>\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AAIA,IAAI,aAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA;AAGD,4BAA4B,MAAoB;AACrD,eAAa;AAAA;AADC;AAIT,MAAM,eAAe,wBAAC,UAA6B;AACxD,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,QAAM,OAAO,WAAW,cAAc,WAAW,iBAAiB;AAClE,UAAQ,IAAI,qBAAqB,EAAE,WAAW,cAAc,MAAM;AAClE,SAAO,oCAAC,OAAD;AAAA,IAAO;AAAA,KAAa,MAAM;AAAA,GALP;",
4
+ "sourcesContent": ["import React from 'react'\n\nimport { useDefaultThemeName, useThemeName } from '../hooks/useTheme'\nimport { Theme } from './Theme'\n\ntype StringRecord = { [key: string]: string }\n\nlet inversions: StringRecord = {\n light: 'dark',\n dark: 'light',\n}\n\nexport function setThemeInversions(next: StringRecord) {\n inversions = next\n}\n\nexport const ThemeInverse = (props: { children: any }) => {\n const themeName = useThemeName()\n const defaultTheme = useDefaultThemeName()\n const name = inversions[themeName] || inversions[defaultTheme] || null\n return <Theme name={name}>{props.children}</Theme>\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AAIA,IAAI,aAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA;AAGD,4BAA4B,MAAoB;AACrD,eAAa;AAAA;AADC;AAIT,MAAM,eAAe,wBAAC,UAA6B;AACxD,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,QAAM,OAAO,WAAW,cAAc,WAAW,iBAAiB;AAClE,SAAO,oCAAC,OAAD;AAAA,IAAO;AAAA,KAAa,MAAM;AAAA,GAJP;",
6
6
  "names": []
7
7
  }