@tamagui/core 1.1.7 → 1.1.9

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 (255) hide show
  1. package/dist/cjs/Tamagui.js +4 -0
  2. package/dist/cjs/Tamagui.js.map +1 -1
  3. package/dist/cjs/addTheme.js +1 -0
  4. package/dist/cjs/addTheme.js.map +1 -1
  5. package/dist/cjs/config.js.map +1 -1
  6. package/dist/cjs/createComponent.js +54 -27
  7. package/dist/cjs/createComponent.js.map +1 -1
  8. package/dist/cjs/createFont.js.map +1 -1
  9. package/dist/cjs/createTamagui.js +4 -0
  10. package/dist/cjs/createTamagui.js.map +2 -2
  11. package/dist/cjs/createTokens.web.test.js +1 -0
  12. package/dist/cjs/createTokens.web.test.js.map +1 -1
  13. package/dist/cjs/createVariable.js.map +1 -1
  14. package/dist/cjs/createVariables.js.map +1 -1
  15. package/dist/cjs/helpers/RNComponents.js +1 -0
  16. package/dist/cjs/helpers/RNComponents.js.map +1 -1
  17. package/dist/cjs/helpers/ThemeManager.js +1 -0
  18. package/dist/cjs/helpers/ThemeManager.js.map +1 -1
  19. package/dist/cjs/helpers/ThemeManager.test.js.map +1 -1
  20. package/dist/cjs/helpers/createMediaStyle.js.map +1 -1
  21. package/dist/cjs/helpers/createPropMapper.js.map +1 -1
  22. package/dist/cjs/helpers/expandStyle.js +2 -0
  23. package/dist/cjs/helpers/expandStyle.js.map +1 -1
  24. package/dist/cjs/helpers/expandStyles.js +2 -8
  25. package/dist/cjs/helpers/expandStyles.js.map +3 -3
  26. package/dist/cjs/helpers/extendStaticConfig.js.map +1 -1
  27. package/dist/cjs/helpers/getExpandedShorthands.js.map +1 -1
  28. package/dist/cjs/helpers/getFontLanguage.js.map +1 -1
  29. package/dist/cjs/helpers/getSplitStyles.js +4 -4
  30. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  31. package/dist/cjs/helpers/getStylesAtomic.js +3 -0
  32. package/dist/cjs/helpers/getStylesAtomic.js.map +1 -1
  33. package/dist/cjs/helpers/getThemeCSSRules.js.map +1 -1
  34. package/dist/cjs/helpers/getVariantExtras.js +3 -0
  35. package/dist/cjs/helpers/getVariantExtras.js.map +1 -1
  36. package/dist/cjs/helpers/insertStyleRule.js.map +1 -1
  37. package/dist/cjs/helpers/matchMedia.native.js.map +1 -1
  38. package/dist/cjs/helpers/mergeProps.js.map +1 -1
  39. package/dist/cjs/helpers/mergeTransform.js.map +1 -1
  40. package/dist/cjs/helpers/normalizeColor.js +9 -5
  41. package/dist/cjs/helpers/normalizeColor.js.map +3 -3
  42. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +1 -1
  43. package/dist/cjs/helpers/proxyThemeVariables.js.map +1 -1
  44. package/dist/cjs/helpers/themeable.js +16 -9
  45. package/dist/cjs/helpers/themeable.js.map +1 -1
  46. package/dist/cjs/helpers/themes.js.map +1 -1
  47. package/dist/cjs/helpers/useShallowSetState.js.map +1 -1
  48. package/dist/cjs/helpers/warnOnce.js.map +1 -1
  49. package/dist/cjs/hooks/useMedia.js +23 -19
  50. package/dist/cjs/hooks/useMedia.js.map +2 -2
  51. package/dist/cjs/hooks/useTheme.js +2 -0
  52. package/dist/cjs/hooks/useTheme.js.map +1 -1
  53. package/dist/cjs/hooks/useThemeName.js.map +1 -1
  54. package/dist/cjs/inject-styles.js.map +1 -1
  55. package/dist/cjs/insertFont.js.map +1 -1
  56. package/dist/cjs/setupReactNative.js.map +1 -1
  57. package/dist/cjs/styled.js +2 -0
  58. package/dist/cjs/styled.js.map +1 -1
  59. package/dist/cjs/views/FontLanguage.js +10 -7
  60. package/dist/cjs/views/FontLanguage.js.map +1 -1
  61. package/dist/cjs/views/FontLanguage.native.js +1 -4
  62. package/dist/cjs/views/FontLanguage.native.js.map +1 -1
  63. package/dist/cjs/views/Slot.js +1 -3
  64. package/dist/cjs/views/Slot.js.map +1 -1
  65. package/dist/cjs/views/Stack.web.test.js +2 -11
  66. package/dist/cjs/views/Stack.web.test.js.map +1 -1
  67. package/dist/cjs/views/TamaguiProvider.js +22 -18
  68. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  69. package/dist/cjs/views/Text.js +2 -0
  70. package/dist/cjs/views/Text.js.map +1 -1
  71. package/dist/cjs/views/Theme.js +16 -18
  72. package/dist/cjs/views/Theme.js.map +1 -1
  73. package/dist/cjs/views/ThemeProvider.js +20 -14
  74. package/dist/cjs/views/ThemeProvider.js.map +1 -1
  75. package/dist/esm/addTheme.js +1 -0
  76. package/dist/esm/addTheme.js.map +1 -1
  77. package/dist/esm/config.js.map +1 -1
  78. package/dist/esm/createComponent.js +50 -27
  79. package/dist/esm/createComponent.js.map +1 -1
  80. package/dist/esm/createFont.js.map +1 -1
  81. package/dist/esm/createTamagui.js +4 -0
  82. package/dist/esm/createTamagui.js.map +2 -2
  83. package/dist/esm/createTokens.web.test.js +1 -0
  84. package/dist/esm/createTokens.web.test.js.map +1 -1
  85. package/dist/esm/createVariable.js.map +1 -1
  86. package/dist/esm/createVariables.js.map +1 -1
  87. package/dist/esm/helpers/RNComponents.js +1 -0
  88. package/dist/esm/helpers/RNComponents.js.map +1 -1
  89. package/dist/esm/helpers/ThemeManager.js +1 -0
  90. package/dist/esm/helpers/ThemeManager.js.map +1 -1
  91. package/dist/esm/helpers/ThemeManager.test.js.map +1 -1
  92. package/dist/esm/helpers/createMediaStyle.js.map +1 -1
  93. package/dist/esm/helpers/createPropMapper.js.map +1 -1
  94. package/dist/esm/helpers/expandStyle.js +2 -0
  95. package/dist/esm/helpers/expandStyle.js.map +1 -1
  96. package/dist/esm/helpers/expandStyles.js +1 -1
  97. package/dist/esm/helpers/expandStyles.js.map +2 -2
  98. package/dist/esm/helpers/extendStaticConfig.js.map +1 -1
  99. package/dist/esm/helpers/getExpandedShorthands.js.map +1 -1
  100. package/dist/esm/helpers/getFontLanguage.js.map +1 -1
  101. package/dist/esm/helpers/getSplitStyles.js +4 -4
  102. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  103. package/dist/esm/helpers/getStylesAtomic.js +3 -0
  104. package/dist/esm/helpers/getStylesAtomic.js.map +1 -1
  105. package/dist/esm/helpers/getThemeCSSRules.js.map +1 -1
  106. package/dist/esm/helpers/getVariantExtras.js +3 -0
  107. package/dist/esm/helpers/getVariantExtras.js.map +1 -1
  108. package/dist/esm/helpers/insertStyleRule.js.map +1 -1
  109. package/dist/esm/helpers/matchMedia.native.js.map +1 -1
  110. package/dist/esm/helpers/mergeProps.js.map +1 -1
  111. package/dist/esm/helpers/mergeTransform.js.map +1 -1
  112. package/dist/esm/helpers/normalizeColor.js +4 -4
  113. package/dist/esm/helpers/normalizeColor.js.map +3 -3
  114. package/dist/esm/helpers/normalizeValueWithProperty.js.map +1 -1
  115. package/dist/esm/helpers/proxyThemeVariables.js.map +1 -1
  116. package/dist/esm/helpers/themeable.js +12 -9
  117. package/dist/esm/helpers/themeable.js.map +1 -1
  118. package/dist/esm/helpers/themes.js.map +1 -1
  119. package/dist/esm/helpers/useShallowSetState.js.map +1 -1
  120. package/dist/esm/helpers/warnOnce.js.map +1 -1
  121. package/dist/esm/hooks/useMedia.js +23 -19
  122. package/dist/esm/hooks/useMedia.js.map +2 -2
  123. package/dist/esm/hooks/useTheme.js +2 -0
  124. package/dist/esm/hooks/useTheme.js.map +1 -1
  125. package/dist/esm/hooks/useThemeName.js.map +1 -1
  126. package/dist/esm/inject-styles.js.map +1 -1
  127. package/dist/esm/insertFont.js.map +1 -1
  128. package/dist/esm/setupReactNative.js.map +1 -1
  129. package/dist/esm/styled.js +2 -0
  130. package/dist/esm/styled.js.map +1 -1
  131. package/dist/esm/views/FontLanguage.js +10 -7
  132. package/dist/esm/views/FontLanguage.js.map +1 -1
  133. package/dist/esm/views/FontLanguage.native.js +1 -4
  134. package/dist/esm/views/FontLanguage.native.js.map +1 -1
  135. package/dist/esm/views/Slot.js +1 -3
  136. package/dist/esm/views/Slot.js.map +1 -1
  137. package/dist/esm/views/Stack.web.test.js +2 -11
  138. package/dist/esm/views/Stack.web.test.js.map +1 -1
  139. package/dist/esm/views/TamaguiProvider.js +18 -18
  140. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  141. package/dist/esm/views/Text.js +2 -0
  142. package/dist/esm/views/Text.js.map +1 -1
  143. package/dist/esm/views/Theme.js +16 -18
  144. package/dist/esm/views/Theme.js.map +1 -1
  145. package/dist/esm/views/ThemeProvider.js +20 -14
  146. package/dist/esm/views/ThemeProvider.js.map +1 -1
  147. package/package.json +12 -15
  148. package/src/createTamagui.ts +1 -0
  149. package/src/helpers/expandStyles.ts +1 -1
  150. package/src/helpers/getSplitStyles.tsx +0 -4
  151. package/src/helpers/normalizeColor.ts +5 -3
  152. package/src/hooks/useMedia.tsx +10 -11
  153. package/types/helpers/normalizeColor.d.ts +2 -1
  154. package/dist/cjs/contexts/ButtonInsideButtonContext.js +0 -30
  155. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +0 -7
  156. package/dist/cjs/contexts/ThemeContext.js +0 -30
  157. package/dist/cjs/contexts/ThemeContext.js.map +0 -7
  158. package/dist/cjs/createFont.test.js +0 -125
  159. package/dist/cjs/createFont.test.js.map +0 -7
  160. package/dist/cjs/createTokens.test.js +0 -27
  161. package/dist/cjs/createTokens.test.js.map +0 -7
  162. package/dist/cjs/createVariable.test.js +0 -7
  163. package/dist/cjs/createVariable.test.js.map +0 -7
  164. package/dist/cjs/helpers/areEqualSets.js +0 -38
  165. package/dist/cjs/helpers/areEqualSets.js.map +0 -7
  166. package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -188
  167. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +0 -7
  168. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +0 -30
  169. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +0 -7
  170. package/dist/cjs/helpers/cache.js +0 -43
  171. package/dist/cjs/helpers/cache.js.map +0 -7
  172. package/dist/cjs/helpers/calc.js +0 -71
  173. package/dist/cjs/helpers/calc.js.map +0 -7
  174. package/dist/cjs/helpers/getFont.js +0 -66
  175. package/dist/cjs/helpers/getFont.js.map +0 -7
  176. package/dist/cjs/helpers/getSize.js +0 -44
  177. package/dist/cjs/helpers/getSize.js.map +0 -7
  178. package/dist/cjs/helpers/getSplitStyles.test.js +0 -19
  179. package/dist/cjs/helpers/getSplitStyles.test.js.map +0 -7
  180. package/dist/cjs/helpers/getStackSize.js +0 -46
  181. package/dist/cjs/helpers/getStackSize.js.map +0 -7
  182. package/dist/cjs/helpers/startTransition.js +0 -36
  183. package/dist/cjs/helpers/startTransition.js.map +0 -7
  184. package/dist/cjs/hooks/useConstant.js +0 -39
  185. package/dist/cjs/hooks/useConstant.js.map +0 -7
  186. package/dist/cjs/hooks/useIsMounted.js +0 -40
  187. package/dist/cjs/hooks/useIsMounted.js.map +0 -7
  188. package/dist/cjs/hooks/usePressable.js +0 -36
  189. package/dist/cjs/hooks/usePressable.js.map +0 -7
  190. package/dist/cjs/hooks/useUnmountEffect.js +0 -32
  191. package/dist/cjs/hooks/useUnmountEffect.js.map +0 -7
  192. package/dist/cjs/injectStyles.js +0 -40
  193. package/dist/cjs/injectStyles.js.map +0 -7
  194. package/dist/cjs/views/Stack.test.js +0 -31
  195. package/dist/cjs/views/Stack.test.js.map +0 -7
  196. package/dist/cjs/views/ThemeInverse.js +0 -56
  197. package/dist/cjs/views/ThemeInverse.js.map +0 -7
  198. package/dist/cjs/views/ThemeReset.js +0 -69
  199. package/dist/cjs/views/ThemeReset.js.map +0 -7
  200. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -6
  201. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +0 -7
  202. package/dist/esm/contexts/ThemeContext.js +0 -6
  203. package/dist/esm/contexts/ThemeContext.js.map +0 -7
  204. package/dist/esm/createFont.test.js +0 -124
  205. package/dist/esm/createFont.test.js.map +0 -7
  206. package/dist/esm/createTokens.test.js +0 -26
  207. package/dist/esm/createTokens.test.js.map +0 -7
  208. package/dist/esm/createVariable.test.js +0 -6
  209. package/dist/esm/createVariable.test.js.map +0 -7
  210. package/dist/esm/helpers/areEqualSets.js +0 -14
  211. package/dist/esm/helpers/areEqualSets.js.map +0 -7
  212. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -164
  213. package/dist/esm/helpers/assignNativePropsToWeb.js.map +0 -7
  214. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -6
  215. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +0 -7
  216. package/dist/esm/helpers/cache.js +0 -18
  217. package/dist/esm/helpers/cache.js.map +0 -7
  218. package/dist/esm/helpers/calc.js +0 -47
  219. package/dist/esm/helpers/calc.js.map +0 -7
  220. package/dist/esm/helpers/getFont.js +0 -42
  221. package/dist/esm/helpers/getFont.js.map +0 -7
  222. package/dist/esm/helpers/getSize.js +0 -19
  223. package/dist/esm/helpers/getSize.js.map +0 -7
  224. package/dist/esm/helpers/getSplitStyles.test.js +0 -18
  225. package/dist/esm/helpers/getSplitStyles.test.js.map +0 -7
  226. package/dist/esm/helpers/getStackSize.js +0 -22
  227. package/dist/esm/helpers/getStackSize.js.map +0 -7
  228. package/dist/esm/helpers/startTransition.js +0 -6
  229. package/dist/esm/helpers/startTransition.js.map +0 -7
  230. package/dist/esm/hooks/useConstant.js +0 -15
  231. package/dist/esm/hooks/useConstant.js.map +0 -7
  232. package/dist/esm/hooks/useIsMounted.js +0 -16
  233. package/dist/esm/hooks/useIsMounted.js.map +0 -7
  234. package/dist/esm/hooks/usePressable.js +0 -12
  235. package/dist/esm/hooks/usePressable.js.map +0 -7
  236. package/dist/esm/hooks/useUnmountEffect.js +0 -8
  237. package/dist/esm/hooks/useUnmountEffect.js.map +0 -7
  238. package/dist/esm/injectStyles.js +0 -16
  239. package/dist/esm/injectStyles.js.map +0 -7
  240. package/dist/esm/views/Stack.test.js +0 -30
  241. package/dist/esm/views/Stack.test.js.map +0 -7
  242. package/dist/esm/views/ThemeInverse.js +0 -32
  243. package/dist/esm/views/ThemeInverse.js.map +0 -7
  244. package/dist/esm/views/ThemeReset.js +0 -39
  245. package/dist/esm/views/ThemeReset.js.map +0 -7
  246. package/src/createFont.web.test.tsx +0 -129
  247. package/src/createTokens.web.test.tsx +0 -29
  248. package/src/createVariable.web.test.tsx +0 -7
  249. package/src/helpers/ThemeManager.test.tsx +0 -497
  250. package/src/views/Stack.web.test.tsx +0 -71
  251. package/types/createFont.test.d.ts +0 -2
  252. package/types/createTokens.test.d.ts +0 -2
  253. package/types/createVariable.test.d.ts +0 -2
  254. package/types/helpers/getSplitStyles.test.d.ts +0 -2
  255. package/types/views/Stack.test.d.ts +0 -2
@@ -1,497 +0,0 @@
1
- import { getDefaultTamaguiConfig } from '@tamagui/config-default-node'
2
- import { beforeAll, describe, expect, test } from 'vitest'
3
-
4
- import { createTamagui } from '../createTamagui'
5
- import { ThemeManager } from './ThemeManager'
6
-
7
- const conf = getDefaultTamaguiConfig()
8
-
9
- describe('ThemeManager', () => {
10
- beforeAll(() => {
11
- createTamagui(conf)
12
- })
13
-
14
- test('Changes theme to dark', () => {
15
- const manager = new ThemeManager(
16
- {
17
- name: 'dark',
18
- },
19
- 'root'
20
- )
21
- expect(manager.state.name).toBe('dark')
22
- })
23
-
24
- test('Given parent theme "dark" and child theme "red" to return theme "dark_red"', () => {
25
- const parent = new ThemeManager(
26
- {
27
- name: 'dark',
28
- },
29
- 'root'
30
- )
31
- const child = new ThemeManager(
32
- {
33
- name: 'red',
34
- },
35
- parent
36
- )
37
- expect(parent.state.name).toBe('dark')
38
- expect(child.state.name).toBe('dark_red')
39
- })
40
-
41
- test('Given parent theme "dark", child theme "red_alt2" and component "Button" returns "dark_red_alt2_Button"', () => {
42
- const parent = new ThemeManager(
43
- {
44
- name: 'dark',
45
- },
46
- 'root'
47
- )
48
- const child1 = new ThemeManager(
49
- {
50
- name: 'red',
51
- },
52
- parent
53
- )
54
- expect(child1.state.name).toBe('dark_red')
55
- const child2 = new ThemeManager(
56
- {
57
- name: 'alt2',
58
- componentName: 'Button',
59
- },
60
- child1
61
- )
62
- expect(child2.state.name).toBe('dark_red_alt2_Button')
63
- })
64
-
65
- test('Given parent theme "dark", child theme "red" and component "Button" returns "dark_red_Button"', () => {
66
- const parent = new ThemeManager(
67
- {
68
- name: 'dark',
69
- },
70
- 'root'
71
- )
72
- const child1 = new ThemeManager(
73
- {
74
- name: 'red',
75
- },
76
- parent
77
- )
78
- expect(child1.state.name).toBe('dark_red')
79
- const child2 = new ThemeManager(
80
- {
81
- componentName: 'Button',
82
- },
83
- child1
84
- )
85
- expect(child2.state.name).toBe('dark_red_Button')
86
- })
87
-
88
- test('Given parent theme "dark", child theme "red" and missing component "Card" returns "dark_red"', () => {
89
- const parent = new ThemeManager(
90
- {
91
- name: 'dark',
92
- },
93
- 'root'
94
- )
95
- const child1 = new ThemeManager(
96
- {
97
- name: 'red',
98
- },
99
- parent
100
- )
101
- expect(child1.state.name).toBe('dark_red')
102
- const child2 = new ThemeManager(
103
- {
104
- componentName: 'Card',
105
- },
106
- child1
107
- )
108
- expect(child2.state.name).toBe('dark_red')
109
- })
110
-
111
- test('Changes "light" to "dark"', () => {
112
- const parent = new ThemeManager(
113
- {
114
- name: 'light',
115
- },
116
- 'root'
117
- )
118
- const child = new ThemeManager(
119
- {
120
- name: 'dark',
121
- },
122
- parent
123
- )
124
- expect(parent.state.name).toBe('light')
125
- expect(child.state.name).toBe('dark')
126
- })
127
-
128
- test('Inverts "light" to "dark"', () => {
129
- const parent = new ThemeManager(
130
- {
131
- name: 'light',
132
- },
133
- 'root'
134
- )
135
- const child1 = new ThemeManager(
136
- {
137
- inverse: true,
138
- },
139
- parent
140
- )
141
- expect(child1.state.name).toBe('dark')
142
- })
143
-
144
- test('Inverts "light_red" to "dark_red"', () => {
145
- const parent = new ThemeManager(
146
- {
147
- name: 'light',
148
- },
149
- 'root'
150
- )
151
- const child1 = new ThemeManager(
152
- {
153
- name: 'red',
154
- inverse: true,
155
- },
156
- parent
157
- )
158
- expect(child1.state.name).toBe('dark_red')
159
- })
160
-
161
- test('Updates state', () => {
162
- const parent = new ThemeManager(
163
- {
164
- name: 'light',
165
- },
166
- 'root'
167
- )
168
- const newState = parent.updateState({
169
- name: 'dark',
170
- })
171
- expect(newState).toMatchInlineSnapshot(`
172
- {
173
- "className": "t_dark",
174
- "name": "dark",
175
- "parentName": "",
176
- "theme": {
177
- "background": {
178
- "isVar": true,
179
- "key": "color-2",
180
- "name": "background",
181
- "val": "#000",
182
- "variable": "",
183
- },
184
- "color": {
185
- "isVar": true,
186
- "key": "color-1",
187
- "name": "color",
188
- "val": "#fff",
189
- "variable": "",
190
- },
191
- },
192
- }
193
- `)
194
- expect(parent.state.name).toBe('dark')
195
- })
196
-
197
- test('Returns parent on empty', () => {
198
- const parent = new ThemeManager(
199
- {
200
- name: 'light',
201
- },
202
- 'root'
203
- )
204
- const child = new ThemeManager(
205
- {
206
- name: null,
207
- },
208
- parent
209
- )
210
- expect(child).toBe(parent)
211
- })
212
-
213
- test('Resets theme', () => {
214
- const parent = new ThemeManager(
215
- {
216
- name: 'light',
217
- },
218
- 'root'
219
- )
220
- const child = new ThemeManager(
221
- {
222
- name: 'dark',
223
- },
224
- parent
225
- )
226
- expect(child.state.name).toBe('dark')
227
- expect(child.parentManager).toBe(parent)
228
- const child2 = new ThemeManager(
229
- {
230
- reset: true,
231
- },
232
- child
233
- )
234
- expect(child2.parentManager).toBe(child)
235
- expect(child2.state.name).toBe('light')
236
- })
237
-
238
- test('Nested invert and reset', () => {
239
- const parent = new ThemeManager(
240
- {
241
- name: 'light',
242
- },
243
- 'root'
244
- )
245
- const child = new ThemeManager(
246
- {
247
- name: 'dark',
248
- },
249
- parent
250
- )
251
- const child2 = new ThemeManager(
252
- {
253
- reset: true,
254
- },
255
- child
256
- )
257
- const child3 = new ThemeManager(
258
- {
259
- inverse: true,
260
- },
261
- child2
262
- )
263
- expect(child3.state.name).toBe('dark')
264
- })
265
-
266
- test('Updates from null the new theme nested 3 themes', () => {
267
- const a = new ThemeManager(
268
- {
269
- name: 'dark',
270
- },
271
- 'root'
272
- )
273
- const b = new ThemeManager(
274
- {
275
- name: 'red',
276
- },
277
- a
278
- )
279
- expect(b.state.name).toBe('dark_red')
280
- const c = new ThemeManager(
281
- {
282
- name: 'alt2',
283
- },
284
- b
285
- )
286
- expect(c.state.name).toBe('dark_red_alt2')
287
- })
288
-
289
- test('Ignored dup themes', () => {
290
- const a = new ThemeManager(
291
- {
292
- name: 'dark',
293
- },
294
- 'root'
295
- )
296
- const b = new ThemeManager(
297
- {
298
- name: 'dark',
299
- },
300
- a
301
- )
302
- expect(b === a).toBe(true)
303
- })
304
-
305
- test('Nested component themes fallback to grandparents', () => {
306
- const parent = new ThemeManager(
307
- {
308
- name: 'dark',
309
- },
310
- 'root'
311
- )
312
- const child = new ThemeManager(
313
- {
314
- name: 'red',
315
- componentName: 'Button',
316
- },
317
- parent
318
- )
319
- const child2 = new ThemeManager(
320
- {
321
- name: 'blue',
322
- },
323
- child
324
- )
325
- expect(child2.state.name).toBe('dark_blue')
326
- const child3 = new ThemeManager(
327
- {
328
- componentName: 'Button',
329
- },
330
- child2
331
- )
332
- expect(child3.state.name).toBe('dark_blue_Button')
333
- })
334
-
335
- test(`Component theme with sub component that doesn't exist keeps same theme`, () => {
336
- const parent = new ThemeManager(
337
- {
338
- name: 'dark',
339
- },
340
- 'root'
341
- )
342
- const child = new ThemeManager(
343
- {
344
- name: 'red',
345
- componentName: 'Button',
346
- },
347
- parent
348
- )
349
- const child2 = new ThemeManager(
350
- {
351
- componentName: 'Spacer',
352
- },
353
- child
354
- )
355
- expect(child2).toBe(child)
356
- })
357
-
358
- test(`Doesn't find invalid parent when only passing component`, () => {
359
- expect(!!conf.themes['dark_Card']).toBeTruthy()
360
-
361
- const parent = new ThemeManager(
362
- {
363
- name: 'dark_red',
364
- },
365
- 'root'
366
- )
367
-
368
- const child = new ThemeManager(
369
- {
370
- componentName: 'Card',
371
- },
372
- parent
373
- )
374
-
375
- // dont find dark_Card because dark_red is highest it should climb
376
- expect(child.state.name).toBe(parent.state.name)
377
- })
378
-
379
- test(`Finds sub-theme when componentName and name are passed but componentName doesn't exist`, () => {
380
- const parent = new ThemeManager(
381
- {
382
- name: 'dark',
383
- },
384
- 'root'
385
- )
386
-
387
- const child = new ThemeManager(
388
- {
389
- name: 'red',
390
- componentName: 'Missing',
391
- },
392
- parent
393
- )
394
-
395
- // dont find dark_Card because dark_red is highest it should climb
396
- expect(child.state.name).toBe('dark_red')
397
- })
398
-
399
- test('Uses the full className without the light/dark prefix', () => {
400
- const parent = new ThemeManager(
401
- {
402
- name: 'dark',
403
- },
404
- 'root'
405
- )
406
- const child = new ThemeManager(
407
- {
408
- name: 'red_alt2',
409
- },
410
- parent
411
- )
412
- expect(child.state.className).toBe('t_red_alt2')
413
-
414
- const child2 = new ThemeManager(
415
- {
416
- name: 'red',
417
- },
418
- parent
419
- )
420
- const child3 = new ThemeManager(
421
- {
422
- name: 'alt2',
423
- },
424
- child2
425
- )
426
- expect(child3.state.className).toBe('t_red_alt2')
427
- })
428
-
429
- test('Finds component dark_red + Button', () => {
430
- const parent = new ThemeManager(
431
- {
432
- name: 'dark_red',
433
- },
434
- 'root'
435
- )
436
- const child = new ThemeManager(
437
- {
438
- name: 'dark_red',
439
- componentName: 'Button',
440
- },
441
- parent
442
- )
443
- expect(child.state.className).toBe('t_red_Button')
444
- expect(child.state.name).toBe('dark_red_Button')
445
- })
446
-
447
- test('Drops componentName if only regular name found at stronger level', () => {
448
- const parent = new ThemeManager(
449
- {
450
- name: 'dark_red',
451
- },
452
- 'root'
453
- )
454
- const child = new ThemeManager(
455
- {
456
- name: 'alt1',
457
- componentName: 'Button',
458
- },
459
- parent
460
- )
461
- expect(child.state.name).toBe('dark_red_alt1')
462
- })
463
-
464
- test('Component name + theme change when nested already', () => {
465
- const parent = new ThemeManager(
466
- {
467
- name: 'dark_red',
468
- },
469
- 'root'
470
- )
471
- const child = new ThemeManager(
472
- {
473
- name: 'yellow',
474
- componentName: 'Button',
475
- },
476
- parent
477
- )
478
- expect(child.state.name).toBe('dark_yellow_Button')
479
- })
480
-
481
- test('Component name + name finds one up when component name missing', () => {
482
- const parent = new ThemeManager(
483
- {
484
- name: 'dark_red_alt1',
485
- },
486
- 'root'
487
- )
488
- const child = new ThemeManager(
489
- {
490
- name: 'alt2',
491
- componentName: 'Missing',
492
- },
493
- parent
494
- )
495
- expect(child.state.name).toBe('dark_red_alt2')
496
- })
497
- })
@@ -1,71 +0,0 @@
1
- process.env.TAMAGUI_TARGET = 'web'
2
-
3
- import { getDefaultTamaguiConfig } from '@tamagui/config-default-node'
4
- import { render } from '@testing-library/react'
5
- import { describe, expect, test } from 'vitest'
6
-
7
- import { Stack, StackProps, TamaguiProvider, createTamagui } from '..'
8
-
9
- const conf = createTamagui(getDefaultTamaguiConfig())
10
-
11
- const TestStackRenders = ({
12
- renderCount,
13
- ...props
14
- }: StackProps & { renderCount: { current: number } }) => {
15
- return (
16
- <TamaguiProvider config={conf} defaultTheme="light">
17
- <Stack data-test-renders={renderCount} {...props} />
18
- </TamaguiProvider>
19
- )
20
- }
21
-
22
- describe('Stack', () => {
23
- test('renders once', async () => {
24
- const renderCount = { current: 0 }
25
- render(<TestStackRenders renderCount={renderCount} />)
26
- expect(renderCount.current).toBe(1)
27
- })
28
-
29
- // test(`doesn't re-render on media query change if CSS`, async () => {
30
- // const renderCount = { current: 0 }
31
-
32
- // render(
33
- // <TestStackRenders
34
- // renderCount={renderCount}
35
- // backgroundColor="blue"
36
- // $sm={{ backgroundColor: 'red' }}
37
- // />
38
- // )
39
-
40
- // expect(renderCount.current).toBe(1)
41
-
42
- // // re-configuring re-runs the media queries...
43
- // configureMedia(conf)
44
-
45
- // expect(renderCount.current).toBe(1)
46
- // })
47
-
48
- // test(`does re-render on media query change if not CSS`, async () => {
49
- // const renderCount = { current: 0 }
50
-
51
- // render(
52
- // <TestStackRenders
53
- // renderCount={renderCount}
54
- // backgroundColor="blue"
55
- // // @ts-ignore
56
- // $sm={{ space: '$2' }}
57
- // />
58
- // )
59
-
60
- // expect(renderCount.current).toBe(1)
61
-
62
- // // re-configuring re-runs the media queries...
63
- // // configureMedia({
64
- // // ...conf,
65
- // // media: {
66
- // // def
67
- // // },
68
- // // })
69
- // // expect(renderCount.current).toBe(2)
70
- // })
71
- })
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=createFont.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=createTokens.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=createVariable.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getSplitStyles.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Stack.test.d.ts.map