@xhsreds/reds-rn-next 0.0.23 → 0.1.0

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 (371) hide show
  1. package/benchmarks/out.json +332 -0
  2. package/coverage/.tmp/coverage-0.json +1 -0
  3. package/coverage/.tmp/coverage-1.json +1 -0
  4. package/coverage/.tmp/coverage-2.json +1 -0
  5. package/coverage/.tmp/coverage-3.json +1 -0
  6. package/coverage/.tmp/coverage-4.json +1 -0
  7. package/coverage/.tmp/coverage-5.json +1 -0
  8. package/coverage/.tmp/coverage-6.json +1 -0
  9. package/coverage/.tmp/coverage-7.json +1 -0
  10. package/coverage/.tmp/coverage-8.json +1 -0
  11. package/coverage/.tmp/coverage-9.json +1 -0
  12. package/lib/cjs/_chunks/8GiEQzJI.js +14 -0
  13. package/lib/cjs/_chunks/8GiEQzJI.js.map +1 -0
  14. package/lib/cjs/_chunks/C61-qTj5.js +45 -0
  15. package/lib/cjs/_chunks/C61-qTj5.js.map +1 -0
  16. package/lib/cjs/_chunks/CH-nghLh.js +25 -0
  17. package/lib/cjs/_chunks/CH-nghLh.js.map +1 -0
  18. package/lib/cjs/_chunks/CvikiypO.js +20 -0
  19. package/lib/cjs/_chunks/CvikiypO.js.map +1 -0
  20. package/lib/cjs/_chunks/CyggXkdu.js +20 -0
  21. package/lib/cjs/_chunks/CyggXkdu.js.map +1 -0
  22. package/lib/cjs/_chunks/{0oZeAV32.js → D9ngGICz.js} +14 -1
  23. package/lib/cjs/_chunks/{0oZeAV32.js.map → D9ngGICz.js.map} +1 -1
  24. package/lib/cjs/_chunks/DOAnQxcP.js +16 -0
  25. package/lib/cjs/_chunks/DOAnQxcP.js.map +1 -0
  26. package/lib/cjs/_chunks/{BUZe8G-Q.js → DkF74KKv.js} +31 -10
  27. package/lib/cjs/_chunks/DkF74KKv.js.map +1 -0
  28. package/lib/cjs/_chunks/Dmk9_Zw3.js +20 -0
  29. package/lib/cjs/_chunks/Dmk9_Zw3.js.map +1 -0
  30. package/lib/cjs/_chunks/y2LtPP5n.js +21 -0
  31. package/lib/cjs/_chunks/y2LtPP5n.js.map +1 -0
  32. package/lib/cjs/_chunks/zrKJYx9X.js +49 -0
  33. package/lib/cjs/_chunks/zrKJYx9X.js.map +1 -0
  34. package/lib/cjs/components/Button/Button.js +44 -0
  35. package/lib/cjs/components/Button/Button.js.map +1 -0
  36. package/lib/cjs/components/Button/index.js +25 -8
  37. package/lib/cjs/components/Button/index.js.map +1 -1
  38. package/lib/cjs/components/Button/interface/index.js +5 -11
  39. package/lib/cjs/components/Button/interface/index.js.map +1 -1
  40. package/lib/cjs/components/Button/styleMap.js +24 -8
  41. package/lib/cjs/components/Button/styleMap.js.map +1 -1
  42. package/lib/cjs/components/Collapse/Collapse.js +60 -0
  43. package/lib/cjs/components/Collapse/Collapse.js.map +1 -0
  44. package/lib/cjs/components/Collapse/Item/Item.js +113 -0
  45. package/lib/cjs/components/Collapse/Item/Item.js.map +1 -0
  46. package/lib/cjs/components/Collapse/Item/interface/index.js +12 -0
  47. package/lib/cjs/components/Collapse/Item/interface/index.js.map +1 -0
  48. package/lib/cjs/components/Collapse/Item/styles.js +36 -0
  49. package/lib/cjs/components/Collapse/Item/styles.js.map +1 -0
  50. package/lib/cjs/components/Collapse/hooks/useCollapseContext.js +14 -0
  51. package/lib/cjs/components/Collapse/hooks/useCollapseContext.js.map +1 -0
  52. package/lib/cjs/components/Collapse/index.js +21 -0
  53. package/lib/cjs/components/Collapse/index.js.map +1 -0
  54. package/lib/cjs/components/Collapse/interface/index.js +11 -0
  55. package/lib/cjs/components/Collapse/interface/index.js.map +1 -0
  56. package/lib/cjs/components/ConfigProvider/ConfigProvider.js +1 -1
  57. package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
  58. package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
  59. package/lib/cjs/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
  60. package/lib/cjs/components/ConfigProvider/index.js +13 -22
  61. package/lib/cjs/components/ConfigProvider/index.js.map +1 -1
  62. package/lib/cjs/components/ConfigProvider/interface/index.js +5 -34
  63. package/lib/cjs/components/ConfigProvider/interface/index.js.map +1 -1
  64. package/lib/cjs/components/Empty/Empty.js +44 -0
  65. package/lib/cjs/components/Empty/Empty.js.map +1 -0
  66. package/lib/cjs/components/Empty/hooks/useDefaultIcon.js +10 -0
  67. package/lib/cjs/components/Empty/hooks/useDefaultIcon.js.map +1 -0
  68. package/lib/cjs/components/Empty/index.js +22 -0
  69. package/lib/cjs/components/Empty/index.js.map +1 -0
  70. package/lib/cjs/components/Empty/interface/index.js +8 -0
  71. package/lib/cjs/components/Empty/interface/index.js.map +1 -0
  72. package/lib/cjs/components/Empty/styles.js +38 -0
  73. package/lib/cjs/components/Empty/styles.js.map +1 -0
  74. package/lib/cjs/components/Image/Image.js +130 -0
  75. package/lib/cjs/components/Image/Image.js.map +1 -0
  76. package/lib/cjs/components/Image/hook/index.js +2 -2
  77. package/lib/cjs/components/Image/index.js +4 -4
  78. package/lib/cjs/components/Image/index.js.map +1 -1
  79. package/lib/cjs/components/Image/interface/index.js +8 -35
  80. package/lib/cjs/components/Image/interface/index.js.map +1 -1
  81. package/lib/cjs/components/Popover/Popover.js +128 -0
  82. package/lib/cjs/components/Popover/Popover.js.map +1 -0
  83. package/lib/cjs/components/Popover/component.js +1 -1
  84. package/lib/cjs/components/Popover/hook.js +1 -1
  85. package/lib/cjs/components/Popover/index.js +12 -120
  86. package/lib/cjs/components/Popover/index.js.map +1 -1
  87. package/lib/cjs/components/Popover/interface/index.js +5 -11
  88. package/lib/cjs/components/Popover/interface/index.js.map +1 -1
  89. package/lib/cjs/components/Popover/styles.js +29 -0
  90. package/lib/cjs/components/Popover/styles.js.map +1 -0
  91. package/lib/cjs/components/Result/Result.js +52 -0
  92. package/lib/cjs/components/Result/Result.js.map +1 -0
  93. package/lib/cjs/components/Result/hooks/useDefaultIcon.js +19 -0
  94. package/lib/cjs/components/Result/hooks/useDefaultIcon.js.map +1 -0
  95. package/lib/cjs/components/Result/index.js +22 -0
  96. package/lib/cjs/components/Result/index.js.map +1 -0
  97. package/lib/cjs/components/Result/interface/index.js +8 -0
  98. package/lib/cjs/components/Result/interface/index.js.map +1 -0
  99. package/lib/cjs/components/Result/styles.js +47 -0
  100. package/lib/cjs/components/Result/styles.js.map +1 -0
  101. package/lib/cjs/components/Switch/Switch.js +80 -0
  102. package/lib/cjs/components/Switch/Switch.js.map +1 -0
  103. package/lib/cjs/components/Switch/index.js +10 -63
  104. package/lib/cjs/components/Switch/index.js.map +1 -1
  105. package/lib/cjs/components/Switch/interface/index.js +4 -9
  106. package/lib/cjs/components/Switch/interface/index.js.map +1 -1
  107. package/lib/cjs/components/Switch/styles.js.map +1 -1
  108. package/lib/cjs/components/Tag/Tag.js +203 -0
  109. package/lib/cjs/components/Tag/Tag.js.map +1 -0
  110. package/lib/cjs/components/Tag/index.js +10 -207
  111. package/lib/cjs/components/Tag/index.js.map +1 -1
  112. package/lib/cjs/components/Tag/interface/index.js +4 -17
  113. package/lib/cjs/components/Tag/interface/index.js.map +1 -1
  114. package/lib/cjs/components/Tag/styles.js +29 -0
  115. package/lib/cjs/components/Tag/styles.js.map +1 -0
  116. package/lib/cjs/components/Text/Text.js +159 -0
  117. package/lib/cjs/components/Text/Text.js.map +1 -0
  118. package/lib/cjs/components/Text/hooks/cloneContainer.js +1 -1
  119. package/lib/cjs/components/Text/hooks/index.js +1 -1
  120. package/lib/cjs/components/Text/hooks/loadFontFromFile.js +1 -1
  121. package/lib/cjs/components/Text/index.js +12 -146
  122. package/lib/cjs/components/Text/index.js.map +1 -1
  123. package/lib/cjs/components/Text/interface/index.js +5 -12
  124. package/lib/cjs/components/Text/interface/index.js.map +1 -1
  125. package/lib/cjs/components/Text/styles.js +1 -1
  126. package/lib/cjs/index.js +46 -22
  127. package/lib/cjs/index.js.map +1 -1
  128. package/lib/esm/_chunks/B3zY_xWO.js +17 -0
  129. package/lib/esm/_chunks/B3zY_xWO.js.map +1 -0
  130. package/lib/esm/_chunks/BITrbAAT.js +42 -0
  131. package/lib/esm/_chunks/BITrbAAT.js.map +1 -0
  132. package/lib/esm/_chunks/BKS4Pa1R.js +13 -0
  133. package/lib/esm/_chunks/BKS4Pa1R.js.map +1 -0
  134. package/lib/esm/_chunks/BfaGqGMC.js +11 -0
  135. package/lib/esm/_chunks/BfaGqGMC.js.map +1 -0
  136. package/lib/esm/_chunks/BswK5qRp.js +18 -0
  137. package/lib/esm/_chunks/BswK5qRp.js.map +1 -0
  138. package/lib/esm/_chunks/Bw08lvHs.js +17 -0
  139. package/lib/esm/_chunks/Bw08lvHs.js.map +1 -0
  140. package/lib/esm/_chunks/CszwJiJx.js +22 -0
  141. package/lib/esm/_chunks/CszwJiJx.js.map +1 -0
  142. package/lib/esm/_chunks/D7oyCwVx.js +17 -0
  143. package/lib/esm/_chunks/D7oyCwVx.js.map +1 -0
  144. package/lib/esm/_chunks/DKABHJAn.js +41 -0
  145. package/lib/esm/_chunks/DKABHJAn.js.map +1 -0
  146. package/lib/esm/_chunks/{C6lwOm3T.js → DhfjJNaB.js} +31 -11
  147. package/lib/esm/_chunks/DhfjJNaB.js.map +1 -0
  148. package/lib/esm/_chunks/{zVU7tqWk.js → GCWGuPmB.js} +14 -2
  149. package/lib/esm/_chunks/{zVU7tqWk.js.map → GCWGuPmB.js.map} +1 -1
  150. package/lib/esm/components/Button/Button.js +36 -0
  151. package/lib/esm/components/Button/Button.js.map +1 -0
  152. package/lib/esm/components/Button/index.js +27 -8
  153. package/lib/esm/components/Button/index.js.map +1 -1
  154. package/lib/esm/components/Button/interface/index.js +1 -11
  155. package/lib/esm/components/Button/interface/index.js.map +1 -1
  156. package/lib/esm/components/Button/styleMap.js +23 -8
  157. package/lib/esm/components/Button/styleMap.js.map +1 -1
  158. package/lib/esm/components/Collapse/Collapse.js +56 -0
  159. package/lib/esm/components/Collapse/Collapse.js.map +1 -0
  160. package/lib/esm/components/Collapse/Item/Item.js +109 -0
  161. package/lib/esm/components/Collapse/Item/Item.js.map +1 -0
  162. package/lib/esm/components/Collapse/Item/interface/index.js +10 -0
  163. package/lib/esm/components/Collapse/Item/interface/index.js.map +1 -0
  164. package/lib/esm/components/Collapse/Item/styles.js +32 -0
  165. package/lib/esm/components/Collapse/Item/styles.js.map +1 -0
  166. package/lib/esm/components/Collapse/hooks/useCollapseContext.js +12 -0
  167. package/lib/esm/components/Collapse/hooks/useCollapseContext.js.map +1 -0
  168. package/lib/esm/components/Collapse/index.js +14 -0
  169. package/lib/esm/components/Collapse/index.js.map +1 -0
  170. package/lib/esm/components/Collapse/interface/index.js +9 -0
  171. package/lib/esm/components/Collapse/interface/index.js.map +1 -0
  172. package/lib/esm/components/ConfigProvider/ConfigProvider.js +1 -1
  173. package/lib/esm/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
  174. package/lib/esm/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
  175. package/lib/esm/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
  176. package/lib/esm/components/ConfigProvider/index.js +10 -22
  177. package/lib/esm/components/ConfigProvider/index.js.map +1 -1
  178. package/lib/esm/components/ConfigProvider/interface/index.js +1 -34
  179. package/lib/esm/components/ConfigProvider/interface/index.js.map +1 -1
  180. package/lib/esm/components/Empty/Empty.js +40 -0
  181. package/lib/esm/components/Empty/Empty.js.map +1 -0
  182. package/lib/esm/components/Empty/hooks/useDefaultIcon.js +8 -0
  183. package/lib/esm/components/Empty/hooks/useDefaultIcon.js.map +1 -0
  184. package/lib/esm/components/Empty/index.js +16 -0
  185. package/lib/esm/components/Empty/index.js.map +1 -0
  186. package/lib/esm/components/Empty/interface/index.js +2 -0
  187. package/lib/esm/components/Empty/interface/index.js.map +1 -0
  188. package/lib/esm/components/Empty/styles.js +34 -0
  189. package/lib/esm/components/Empty/styles.js.map +1 -0
  190. package/lib/esm/components/Image/Image.js +126 -0
  191. package/lib/esm/components/Image/Image.js.map +1 -0
  192. package/lib/esm/components/Image/hook/index.js +2 -2
  193. package/lib/esm/components/Image/index.js +4 -4
  194. package/lib/esm/components/Image/index.js.map +1 -1
  195. package/lib/esm/components/Image/interface/index.js +1 -32
  196. package/lib/esm/components/Image/interface/index.js.map +1 -1
  197. package/lib/esm/components/Popover/Popover.js +124 -0
  198. package/lib/esm/components/Popover/Popover.js.map +1 -0
  199. package/lib/esm/components/Popover/component.js +1 -1
  200. package/lib/esm/components/Popover/hook.js +1 -1
  201. package/lib/esm/components/Popover/index.js +10 -120
  202. package/lib/esm/components/Popover/index.js.map +1 -1
  203. package/lib/esm/components/Popover/interface/index.js +1 -11
  204. package/lib/esm/components/Popover/interface/index.js.map +1 -1
  205. package/lib/esm/components/Popover/styles.js +25 -0
  206. package/lib/esm/components/Popover/styles.js.map +1 -0
  207. package/lib/esm/components/Result/Result.js +48 -0
  208. package/lib/esm/components/Result/Result.js.map +1 -0
  209. package/lib/esm/components/Result/hooks/useDefaultIcon.js +17 -0
  210. package/lib/esm/components/Result/hooks/useDefaultIcon.js.map +1 -0
  211. package/lib/esm/components/Result/index.js +16 -0
  212. package/lib/esm/components/Result/index.js.map +1 -0
  213. package/lib/esm/components/Result/interface/index.js +2 -0
  214. package/lib/esm/components/Result/interface/index.js.map +1 -0
  215. package/lib/esm/components/Result/styles.js +43 -0
  216. package/lib/esm/components/Result/styles.js.map +1 -0
  217. package/lib/esm/components/Switch/Switch.js +76 -0
  218. package/lib/esm/components/Switch/Switch.js.map +1 -0
  219. package/lib/esm/components/Switch/index.js +8 -63
  220. package/lib/esm/components/Switch/index.js.map +1 -1
  221. package/lib/esm/components/Switch/interface/index.js +2 -11
  222. package/lib/esm/components/Switch/interface/index.js.map +1 -1
  223. package/lib/esm/components/Switch/styles.js.map +1 -1
  224. package/lib/esm/components/Tag/Tag.js +199 -0
  225. package/lib/esm/components/Tag/Tag.js.map +1 -0
  226. package/lib/esm/components/Tag/index.js +8 -207
  227. package/lib/esm/components/Tag/index.js.map +1 -1
  228. package/lib/esm/components/Tag/interface/index.js +1 -18
  229. package/lib/esm/components/Tag/interface/index.js.map +1 -1
  230. package/lib/esm/components/Tag/styles.js +25 -0
  231. package/lib/esm/components/Tag/styles.js.map +1 -0
  232. package/lib/esm/components/Text/Text.js +155 -0
  233. package/lib/esm/components/Text/Text.js.map +1 -0
  234. package/lib/esm/components/Text/hooks/cloneContainer.js +1 -1
  235. package/lib/esm/components/Text/hooks/index.js +1 -1
  236. package/lib/esm/components/Text/hooks/loadFontFromFile.js +1 -1
  237. package/lib/esm/components/Text/index.js +10 -146
  238. package/lib/esm/components/Text/index.js.map +1 -1
  239. package/lib/esm/components/Text/interface/index.js +1 -12
  240. package/lib/esm/components/Text/interface/index.js.map +1 -1
  241. package/lib/esm/components/Text/styles.js +1 -1
  242. package/lib/esm/index.js +28 -11
  243. package/lib/esm/index.js.map +1 -1
  244. package/lib/types/components/Button/Button.d.ts +4 -0
  245. package/lib/types/components/Button/index.d.ts +3 -3
  246. package/lib/types/components/Button/interface/index.d.ts +2 -0
  247. package/lib/types/components/Button/styleMap.d.ts +8 -0
  248. package/lib/types/components/Collapse/Collapse.d.ts +13 -0
  249. package/lib/types/components/Collapse/Item/Item.d.ts +7 -0
  250. package/lib/types/components/Collapse/Item/interface/index.d.ts +12 -0
  251. package/lib/types/components/Collapse/Item/styles.d.ts +19 -0
  252. package/lib/types/components/Collapse/demo/index.d.ts +2 -0
  253. package/lib/types/components/Collapse/hooks/useCollapseContext.d.ts +3 -0
  254. package/lib/types/components/Collapse/index.d.ts +3 -0
  255. package/lib/types/components/Collapse/interface/index.d.ts +24 -0
  256. package/lib/types/components/Collapse/test/demo.d.ts +2 -0
  257. package/lib/types/components/Collapse/test/index.bench.d.ts +1 -0
  258. package/lib/types/components/Collapse/test/index.test.d.ts +1 -0
  259. package/lib/types/components/ConfigProvider/hooks/ConfigCache/interface.d.ts +1 -1
  260. package/lib/types/components/ConfigProvider/index.d.ts +2 -0
  261. package/lib/types/components/Empty/Empty.d.ts +9 -0
  262. package/lib/types/components/Empty/demo/index.d.ts +2 -0
  263. package/lib/types/components/Empty/hooks/useDefaultIcon.d.ts +5 -0
  264. package/lib/types/components/Empty/index.d.ts +4 -0
  265. package/lib/types/components/Empty/interface/index.d.ts +9 -0
  266. package/lib/types/components/Empty/styles.d.ts +20 -0
  267. package/lib/types/components/Empty/test/index.bench.d.ts +1 -0
  268. package/lib/types/components/Empty/test/index.test.d.ts +1 -0
  269. package/lib/types/components/Image/Image.d.ts +5 -0
  270. package/lib/types/components/Image/index.d.ts +4 -5
  271. package/lib/types/components/Popover/Popover.d.ts +4 -0
  272. package/lib/types/components/Popover/index.d.ts +4 -4
  273. package/lib/types/components/Popover/styles.d.ts +20 -0
  274. package/lib/types/components/Result/Result.d.ts +11 -0
  275. package/lib/types/components/Result/demo/index.d.ts +2 -0
  276. package/lib/types/components/Result/hooks/useDefaultIcon.d.ts +14 -0
  277. package/lib/types/components/Result/index.d.ts +4 -0
  278. package/lib/types/components/Result/interface/index.d.ts +13 -0
  279. package/lib/types/components/Result/styles.d.ts +29 -0
  280. package/lib/types/components/Result/test/Demo.d.ts +2 -0
  281. package/lib/types/components/Result/test/index.bench.d.ts +1 -0
  282. package/lib/types/components/Result/test/index.test.d.ts +1 -0
  283. package/lib/types/components/Switch/Switch.d.ts +13 -0
  284. package/lib/types/components/Switch/index.d.ts +3 -12
  285. package/lib/types/components/Tag/Tag.d.ts +4 -0
  286. package/lib/types/components/Tag/index.d.ts +3 -3
  287. package/lib/types/components/Tag/interface/index.d.ts +2 -5
  288. package/lib/types/components/Tag/styles.d.ts +20 -0
  289. package/lib/types/components/Text/Text.d.ts +4 -0
  290. package/lib/types/components/Text/index.d.ts +4 -4
  291. package/lib/types/index.d.ts +10 -10
  292. package/package.json +2 -2
  293. package/src/components/Button/{index.tsx → Button.tsx} +5 -2
  294. package/src/components/Button/demo/index.tsx +4 -1
  295. package/src/components/Button/doc/index.mdx +15 -13
  296. package/src/components/Button/index.ts +5 -0
  297. package/src/components/Button/interface/index.ts +2 -0
  298. package/src/components/Button/styleMap.ts +9 -0
  299. package/src/components/Button/test/__snapshots__/index.test.tsx.snap +3 -0
  300. package/src/components/Button/test/index.test.tsx +25 -1
  301. package/src/components/Collapse/Collapse.tsx +72 -0
  302. package/src/components/Collapse/Item/Item.tsx +103 -0
  303. package/src/components/Collapse/Item/interface/index.ts +21 -0
  304. package/src/components/Collapse/Item/styles.ts +27 -0
  305. package/src/components/Collapse/demo/index.tsx +60 -0
  306. package/src/components/Collapse/doc/index.mdx +24 -0
  307. package/src/components/Collapse/hooks/useCollapseContext.ts +8 -0
  308. package/src/components/Collapse/index.ts +4 -0
  309. package/src/components/Collapse/interface/index.ts +25 -0
  310. package/src/components/Collapse/test/demo.tsx +62 -0
  311. package/src/components/Collapse/test/index.bench.tsx +13 -0
  312. package/src/components/Collapse/test/index.test.tsx +61 -0
  313. package/src/components/ConfigProvider/doc/index.mdx +8 -8
  314. package/src/components/ConfigProvider/hooks/ConfigCache/interface.ts +1 -1
  315. package/src/components/ConfigProvider/index.ts +3 -0
  316. package/src/components/Empty/Empty.tsx +29 -0
  317. package/src/components/Empty/demo/index.tsx +39 -0
  318. package/src/components/Empty/doc/index.mdx +19 -0
  319. package/src/components/Empty/hooks/useDefaultIcon.ts +5 -0
  320. package/src/components/Empty/index.ts +5 -0
  321. package/src/components/Empty/interface/index.ts +10 -0
  322. package/src/components/Empty/styles.ts +29 -0
  323. package/src/components/Empty/test/index.bench.tsx +12 -0
  324. package/src/components/Empty/test/index.test.tsx +26 -0
  325. package/src/components/Image/Image.tsx +121 -0
  326. package/src/components/Image/demo/index.tsx +2 -1
  327. package/src/components/Image/doc/index.mdx +13 -13
  328. package/src/components/Image/index.ts +5 -0
  329. package/src/components/Image/index.tsx +1 -2
  330. package/src/components/Popover/demo/index.tsx +2 -2
  331. package/src/components/Popover/doc/index.mdx +15 -15
  332. package/src/components/Popover/index.ts +5 -0
  333. package/src/components/Popover/styles.ts +24 -0
  334. package/src/components/Result/Result.tsx +35 -0
  335. package/src/components/Result/demo/index.tsx +58 -0
  336. package/src/components/Result/doc/index.mdx +21 -0
  337. package/src/components/Result/hooks/useDefaultIcon.ts +21 -0
  338. package/src/components/Result/index.ts +5 -0
  339. package/src/components/Result/interface/index.ts +14 -0
  340. package/src/components/Result/styles.ts +38 -0
  341. package/src/components/Result/test/Demo.tsx +80 -0
  342. package/src/components/Result/test/index.bench.tsx +12 -0
  343. package/src/components/Result/test/index.test.tsx +101 -0
  344. package/src/components/Switch/{index.tsx → Switch.tsx} +23 -9
  345. package/src/components/Switch/demo/index.tsx +7 -1
  346. package/src/components/Switch/doc/index.mdx +11 -11
  347. package/src/components/Switch/index.ts +5 -0
  348. package/src/components/Switch/test/index.bench.tsx +1 -1
  349. package/src/components/Switch/test/paper.bench.tsx +1 -1
  350. package/src/components/Tag/Tag.tsx +195 -0
  351. package/src/components/Tag/demo/index.tsx +0 -24
  352. package/src/components/Tag/doc/index.mdx +18 -20
  353. package/src/components/Tag/index.ts +5 -0
  354. package/src/components/Tag/interface/index.ts +1 -5
  355. package/src/components/{Switch/styles.tsx → Tag/styles.ts} +1 -1
  356. package/src/components/Tag/test/index.test.tsx +4 -32
  357. package/src/components/Text/doc/index.mdx +17 -17
  358. package/src/components/Text/index.ts +5 -0
  359. package/src/index.ts +10 -12
  360. package/lib/cjs/_chunks/BUZe8G-Q.js.map +0 -1
  361. package/lib/cjs/components/Popover/manifest.js +0 -3
  362. package/lib/cjs/components/Popover/manifest.js.map +0 -1
  363. package/lib/esm/_chunks/C6lwOm3T.js.map +0 -1
  364. package/lib/esm/components/Popover/manifest.js +0 -2
  365. package/lib/esm/components/Popover/manifest.js.map +0 -1
  366. package/lib/types/components/Popover/manifest.d.ts +0 -3
  367. package/src/components/Popover/manifest.ts +0 -3
  368. package/src/components/Tag/index.tsx +0 -199
  369. /package/src/components/Popover/{index.tsx → Popover.tsx} +0 -0
  370. /package/src/components/{ConfigProvider/index.tsx → Switch/styles.ts} +0 -0
  371. /package/src/components/Text/{index.tsx → Text.tsx} +0 -0
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from "react";
2
+ type ActiveValueType = Array<string | number>;
3
+ export interface ICollapseContext {
4
+ isActiveValue?: (key: string | number) => boolean;
5
+ addActiveValue?: (key: string | number) => void;
6
+ removeActiveValue?: (key: string | number) => void;
7
+ activeValue?: Array<string | number>;
8
+ }
9
+ export interface RedsCollapse {
10
+ activeValue?: ActiveValueType;
11
+ accordion?: boolean;
12
+ defaultActiveValue?: ActiveValueType;
13
+ onChange?: (activeValue: ActiveValueType) => void;
14
+ children: ReactNode;
15
+ }
16
+ export interface RedsCollapseEvent {
17
+ }
18
+ export declare const CollapseDefaultProps: {
19
+ activeValue: never[];
20
+ accordion: boolean;
21
+ defaultActiveValue: never[];
22
+ children: null;
23
+ };
24
+ export {};
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -7,7 +7,7 @@ export type ThemeColor = {
7
7
  [key in LightToken | DarkToken]: ValueOf<typeof lightColor | typeof darkColor>;
8
8
  };
9
9
  export type ColorMode = "light" | "dark";
10
- export type Component = "Button" | "Popover" | "Text" | "Tag" | "Switch";
10
+ export type Component = "Button" | "Popover" | "Text" | "Tag" | "Switch" | "Icon" | "Result" | "Empty";
11
11
  export type ComponentColor = {
12
12
  [key in Component]: ThemeColor;
13
13
  };
@@ -1,3 +1,5 @@
1
1
  import ConfigProvider from "./ConfigProvider";
2
+ import * as ConfigProviderType from "./interface";
2
3
  export { useThemeColor } from "./hooks/themeToken/useThemeToken";
3
4
  export default ConfigProvider;
5
+ export { ConfigProvider, ConfigProviderType };
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { RedsEmpty } from "./interface/index";
3
+ declare const Empty: {
4
+ (props: RedsEmpty): React.JSX.Element;
5
+ defaultProps: {
6
+ description: string;
7
+ };
8
+ };
9
+ export default Empty;
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ export declare const defaultIcon: {
2
+ default: {
3
+ image: string;
4
+ };
5
+ };
@@ -0,0 +1,4 @@
1
+ import Empty from "./Empty";
2
+ import * as EmptyType from "./interface";
3
+ export default Empty;
4
+ export { Empty, EmptyType };
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from "react";
2
+ export interface RedsEmpty {
3
+ description?: string;
4
+ action?: ReactNode;
5
+ image?: ReactNode;
6
+ }
7
+ export declare const EmptyDefaultProps: {
8
+ description: string;
9
+ };
@@ -0,0 +1,20 @@
1
+ declare const createStyles: () => {
2
+ container: {
3
+ alignItems: "center";
4
+ paddingHorizontal: number;
5
+ paddingVertical: number;
6
+ };
7
+ description: {
8
+ marginTop: number;
9
+ };
10
+ descriptionText: {
11
+ fontSize: number;
12
+ fontWeight: "400" | "500" | "600" | "700";
13
+ lineHeight: number;
14
+ color: string;
15
+ };
16
+ action: {
17
+ marginTop: number;
18
+ };
19
+ };
20
+ export default createStyles;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ import "@testing-library/react-native/extend-expect";
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { Image as RNImage, ImageProps } from "react-native";
3
+ import { RedsImage } from "./interface/index";
4
+ declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<RedsImage & Omit<ImageProps, keyof RedsImage> & React.RefAttributes<RNImage>>>;
5
+ export default _default;
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { Image as RNImage, ImageProps } from "react-native";
3
- import { RedsImage } from "./interface/index";
4
- declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<RedsImage & Omit<ImageProps, keyof RedsImage> & React.RefAttributes<RNImage>>>;
5
- export default _default;
1
+ import Image from "./Image";
2
+ import * as ImageType from "./interface";
3
+ export default Image;
4
+ export { Image, ImageType };
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RedsPopover } from "./interface/index";
3
+ declare const _default: ({ mode, opacity, content, children, placement, closeOnClickAgain, trigger, zIndex, visible: defaultVisible, onVisibleChange, }: RedsPopover) => React.JSX.Element;
4
+ export default _default;
@@ -1,4 +1,4 @@
1
- import React from "react";
2
- import { RedsPopover } from "./interface/index";
3
- declare const _default: ({ mode, opacity, content, children, placement, closeOnClickAgain, trigger, zIndex, visible: defaultVisible, onVisibleChange, }: RedsPopover) => React.JSX.Element;
4
- export default _default;
1
+ import Popover from "./Popover";
2
+ import * as PopoverType from "./interface";
3
+ export default Popover;
4
+ export { Popover, PopoverType };
@@ -0,0 +1,20 @@
1
+ declare const styles: {
2
+ PopoverContainer: {
3
+ width: number;
4
+ height: number;
5
+ borderRadius: number;
6
+ justifyContent: "center";
7
+ alignItems: "center";
8
+ };
9
+ thumb: {
10
+ width: number;
11
+ height: number;
12
+ borderRadius: number;
13
+ backgroundColor: string;
14
+ justifyContent: "center";
15
+ alignItems: "center";
16
+ position: "absolute";
17
+ left: number;
18
+ };
19
+ };
20
+ export default styles;
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { RedsResult } from "./interface/index";
3
+ declare const Result: {
4
+ (props: RedsResult): React.JSX.Element;
5
+ defaultProps: {
6
+ type: string;
7
+ title: string;
8
+ description: string;
9
+ };
10
+ };
11
+ export default Result;
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function App(): React.JSX.Element;
@@ -0,0 +1,14 @@
1
+ export declare const defaultIcon: {
2
+ Success: {
3
+ title: string;
4
+ image: string;
5
+ };
6
+ Warning: {
7
+ title: string;
8
+ image: string;
9
+ };
10
+ Info: {
11
+ title: string;
12
+ image: string;
13
+ };
14
+ };
@@ -0,0 +1,4 @@
1
+ import Result from "./Result";
2
+ import * as ResultType from "./interface";
3
+ export default Result;
4
+ export { Result, ResultType };
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from "react";
2
+ export interface RedsResult {
3
+ type?: "Success" | "Warning" | "Info";
4
+ title?: string;
5
+ description?: string;
6
+ action?: ReactNode;
7
+ image?: ReactNode;
8
+ }
9
+ export declare const ResultDefaultProps: {
10
+ type: string;
11
+ title: string;
12
+ description: string;
13
+ };
@@ -0,0 +1,29 @@
1
+ declare const createStyles: () => {
2
+ container: {
3
+ alignItems: "center";
4
+ paddingHorizontal: number;
5
+ paddingVertical: number;
6
+ };
7
+ title: {
8
+ marginTop: number;
9
+ };
10
+ titleText: {
11
+ fontSize: number;
12
+ fontWeight: "400" | "500" | "600" | "700";
13
+ lineHeight: number;
14
+ color: string;
15
+ };
16
+ description: {
17
+ marginTop: number;
18
+ };
19
+ descriptionText: {
20
+ fontSize: number;
21
+ fontWeight: "400" | "500" | "600" | "700";
22
+ lineHeight: number;
23
+ color: string;
24
+ };
25
+ action: {
26
+ marginTop: number;
27
+ };
28
+ };
29
+ export default createStyles;
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function Demo(): React.JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { RedsSwitch } from "./interface/index";
3
+ declare const Switch: {
4
+ ({ value, defaultValue, onChange, onClick, trackOnColor, trackOffColor, disabled }: RedsSwitch): React.JSX.Element;
5
+ defaultProps: {
6
+ value: undefined;
7
+ defaultValue: boolean;
8
+ disabled: boolean;
9
+ trackOnColor: string;
10
+ trackOffColor: string;
11
+ };
12
+ };
13
+ export default Switch;
@@ -1,13 +1,4 @@
1
- import React from "react";
2
- import { RedsSwitch } from "./interface/index";
3
- declare const Switch: {
4
- ({ value, defaultValue, onChange, onClick, trackOnColor, trackOffColor }: RedsSwitch): React.JSX.Element;
5
- defaultProps: {
6
- value: undefined;
7
- defaultValue: boolean;
8
- disabled: boolean;
9
- trackOnColor: string;
10
- trackOffColor: string;
11
- };
12
- };
1
+ import Switch from "./Switch";
2
+ import * as SwitchType from "./interface";
13
3
  export default Switch;
4
+ export { Switch, SwitchType };
@@ -0,0 +1,4 @@
1
+ import { FunctionComponent } from "react";
2
+ import { RedsTag } from "./interface";
3
+ declare const Tag: FunctionComponent<RedsTag>;
4
+ export default Tag;
@@ -1,4 +1,4 @@
1
- import { FunctionComponent } from "react";
2
- import { RedsTag } from "./interface";
3
- declare const Tag: FunctionComponent<RedsTag>;
1
+ import Tag from "./Tag";
2
+ import * as TagType from "./interface";
4
3
  export default Tag;
4
+ export { Tag, TagType };
@@ -1,3 +1,4 @@
1
+ import { GestureResponderEvent } from "react-native";
1
2
  export interface RedsTag {
2
3
  content?: string | Function;
3
4
  type?: "primary" | "default" | "warning" | "success" | "info" | "ghost";
@@ -6,15 +7,13 @@ export interface RedsTag {
6
7
  borderRadius?: number;
7
8
  disabled?: boolean;
8
9
  shape?: "square" | "round" | "mark";
9
- checkable?: boolean;
10
- checked?: boolean;
11
10
  closeabled?: boolean;
12
11
  icon?: string | any;
13
12
  afterIcon?: string | any;
14
13
  closeIcon?: string | any;
15
14
  children?: string | any;
16
- onCheck?: (value?: any) => any;
17
15
  onClose?: (value?: any) => any;
16
+ onClick?: (value: GestureResponderEvent) => any;
18
17
  }
19
18
  export interface RedsTagEvent {
20
19
  }
@@ -26,8 +25,6 @@ export declare const TagDefaultProps: {
26
25
  borderRadius: undefined;
27
26
  disabled: boolean;
28
27
  shape: string;
29
- checkable: boolean;
30
- checked: boolean;
31
28
  closeabled: boolean;
32
29
  icon: undefined;
33
30
  afterIcon: undefined;
@@ -0,0 +1,20 @@
1
+ declare const styles: {
2
+ TagContainer: {
3
+ width: number;
4
+ height: number;
5
+ borderRadius: number;
6
+ justifyContent: "center";
7
+ alignItems: "center";
8
+ };
9
+ thumb: {
10
+ width: number;
11
+ height: number;
12
+ borderRadius: number;
13
+ backgroundColor: string;
14
+ justifyContent: "center";
15
+ alignItems: "center";
16
+ position: "absolute";
17
+ left: number;
18
+ };
19
+ };
20
+ export default styles;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { RedsTextReal } from "./interface";
3
+ declare const _default: (props: RedsTextReal) => import("react").JSX.Element;
4
+ export default _default;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
2
- import { RedsTextReal } from "./interface";
3
- declare const _default: (props: RedsTextReal) => import("react").JSX.Element;
4
- export default _default;
1
+ import Text from "./Text";
2
+ import * as TextType from "./interface";
3
+ export default Text;
4
+ export { Text, TextType };
@@ -1,10 +1,10 @@
1
- import Tag from "./components/Tag";
2
- import Image from "./components/Image";
3
- import Button from "./components/Button";
4
- import Popover from "./components/Popover";
5
- import Switch from "./components/Switch";
6
- import ConfigProvider, { useThemeColor } from "./components/ConfigProvider";
7
- import Text from "./components/Text";
8
- export * from "./components/Popover/interface";
9
- export * from "./components/Image/interface";
10
- export { Button, Popover, Switch, ConfigProvider, useThemeColor, Text, Tag, Image };
1
+ export * from "./components/Tag";
2
+ export * from "./components/Image";
3
+ export * from "./components/Button";
4
+ export * from "./components/Popover";
5
+ export * from "./components/Switch";
6
+ export * from "./components/ConfigProvider";
7
+ export * from "./components/Text";
8
+ export * from "./components/Collapse";
9
+ export * from "./components/Empty";
10
+ export * from "./components/Result";
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@xhsreds/reds-rn-next",
3
- "version": "0.0.23",
3
+ "version": "0.1.0",
4
4
  "author": "贾斌(呀哈) <jiabin@xiaohongshu.com>",
5
5
  "license": "ISC",
6
6
  "dependencies": {
7
7
  "@floating-ui/react-native": "~0.10.6",
8
8
  "dayjs": "^1.10.7",
9
9
  "react-native-svg": "~15.4.0",
10
- "@xhsreds/reds-token-next": "0.0.13"
10
+ "@xhsreds/reds-token-next": "0.1.0"
11
11
  },
12
12
  "peerDependencies": {
13
13
  "react": "~18.2.0",
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { TouchableWithoutFeedback, View, Text, StyleSheet, ViewStyle, TextStyle } from "react-native";
3
3
  import { RedsButton, ButtonDefaultProps } from "./interface";
4
- import { sizeMap, getVariantStyles } from "./styleMap";
4
+ import { sizeMap, getVariantStyles, iconStyle } from "./styleMap";
5
5
 
6
6
  const styles = StyleSheet.create({
7
7
  button: {
@@ -11,6 +11,7 @@ const styles = StyleSheet.create({
11
11
  display: "flex",
12
12
  justifyContent: "center",
13
13
  alignItems: "center",
14
+ flexDirection: "row",
14
15
  },
15
16
  disabledButton: {
16
17
  opacity: 0.3,
@@ -23,7 +24,7 @@ const styles = StyleSheet.create({
23
24
 
24
25
  const Button: React.FC<RedsButton> = (props) => {
25
26
  const finalProps = { ...(ButtonDefaultProps as RedsButton), ...props };
26
- const { size, block, disabled, children, style = {}, onClick } = finalProps;
27
+ const { size, block, disabled, children, style = {}, onClick, iconLeft, iconRight } = finalProps;
27
28
  const sizeStyles = sizeMap[size!];
28
29
  const variantStyles = getVariantStyles(finalProps);
29
30
  const buttonStyles: ViewStyle[] = [styles.button, sizeStyles.button, variantStyles.button, style];
@@ -40,7 +41,9 @@ const Button: React.FC<RedsButton> = (props) => {
40
41
  return (
41
42
  <TouchableWithoutFeedback onPress={disabled ? undefined : onClick}>
42
43
  <View style={buttonStyles}>
44
+ {iconLeft && <View style={iconStyle.left}>{iconLeft}</View>}
43
45
  <Text style={textStyles}>{children}</Text>
46
+ {iconRight && <View style={iconStyle.right}>{iconRight}</View>}
44
47
  </View>
45
48
  </TouchableWithoutFeedback>
46
49
  );
@@ -1,6 +1,7 @@
1
1
  import React, { useRef, useEffect, useState } from "react";
2
2
  import { View, Text, StyleSheet, Alert, ScrollView } from "react-native";
3
3
  import { Button } from "@xhs/reds-rn-next";
4
+ import { Icon } from "react-native-paper";
4
5
 
5
6
  const styles = StyleSheet.create({
6
7
  container: {
@@ -23,7 +24,9 @@ export default function App() {
23
24
  const onClick = () => Alert.alert(Math.random().toFixed(2));
24
25
  return (
25
26
  <View style={styles.container}>
26
- <Button style={styles.item}>默认用法</Button>
27
+ <Button style={styles.item} iconLeft={<Text>🚀</Text>} iconRight={<Text>🚀</Text>}>
28
+ 默认用法
29
+ </Button>
27
30
  <Button style={styles.item} onClick={onClick} size="xLarge">
28
31
  小宽
29
32
  </Button>
@@ -10,19 +10,21 @@ import BaseDemo from "!!raw-loader!../demo/index.tsx";
10
10
 
11
11
  ### Props
12
12
 
13
- | 属性 | 描述 | 类型 | 默认值 |
14
- | -------- | ---------------------------- | ----------------- | ------- |
15
- | size | 按钮尺寸 | RedsButtonSize | medium |
16
- | type | 按钮类型 | RedsButtonType | default |
17
- | variant | 强调状态 | RedsButtonVariant | fill |
18
- | shape | 形状(暂时设计规范只支持胶囊) | "capsule" | capsule |
19
- | block | 按钮是否撑满父元素宽度 | boolean | false |
20
- | disabled | 按钮禁用或失效 | boolean | false |
21
- | style | 样式注入 | ViewStyle | `{}` |
22
- | children | 按钮禁用或失效 | React.ReactNode | |
13
+ | 属性 | 描述 | 类型 | 默认值 |
14
+ | --------- | ---------------------------- | ----------------- | ------- |
15
+ | size | 按钮尺寸 | RedsButtonSize | medium |
16
+ | type | 按钮类型 | RedsButtonType | default |
17
+ | variant | 强调状态 | RedsButtonVariant | fill |
18
+ | shape | 形状(暂时设计规范只支持胶囊) | "capsule" | capsule |
19
+ | block | 按钮是否撑满父元素宽度 | boolean | false |
20
+ | disabled | 按钮禁用或失效 | boolean | false |
21
+ | style | 样式注入 | ViewStyle | `{}` |
22
+ | children | 按钮禁用或失效 | React.ReactNode | |
23
+ | iconLeft | 左图标 | React.ReactNode | |
24
+ | iconRight | 右图标 | React.ReactNode | |
23
25
 
24
26
  ### Events
25
27
 
26
- | 事件 | 描述 | 类型 | 默认值 |
27
- | ----- | ------------ | -------------------------------------- | ------ |
28
- | click | 被点击时触发 | (value: GestureResponderEvent) => void | |
28
+ | 事件 | 描述 | 类型 | 默认值 |
29
+ | ------- | ------------ | -------------------------------------- | ------ |
30
+ | onClick | 被点击时触发 | (value: GestureResponderEvent) => void | |
@@ -0,0 +1,5 @@
1
+ import Button from "./Button";
2
+ import * as ButtonType from "./interface";
3
+
4
+ export default Button;
5
+ export { Button, ButtonType };
@@ -12,6 +12,8 @@ export interface RedsButton {
12
12
  disabled?: boolean;
13
13
  style?: ViewStyle;
14
14
  children?: React.ReactNode;
15
+ iconLeft?: React.ReactNode;
16
+ iconRight?: React.ReactNode;
15
17
  onClick?: (value: GestureResponderEvent) => void;
16
18
  }
17
19
 
@@ -125,3 +125,12 @@ export const getVariantStyles = (props: RedsButton) => {
125
125
  };
126
126
  return styles[props.variant!];
127
127
  };
128
+
129
+ export const iconStyle = {
130
+ left: {
131
+ marginRight: 5,
132
+ },
133
+ right: {
134
+ marginLeft: 5,
135
+ },
136
+ };
@@ -28,6 +28,7 @@ exports[`Button Component > applies the correct styles for size 1`] = `
28
28
  "borderStyle": "solid",
29
29
  "borderWidth": 0.5,
30
30
  "display": "flex",
31
+ "flexDirection": "row",
31
32
  "justifyContent": "center",
32
33
  },
33
34
  {
@@ -91,6 +92,7 @@ exports[`Button Component > applies the correct styles when block is true 1`] =
91
92
  "borderStyle": "solid",
92
93
  "borderWidth": 0.5,
93
94
  "display": "flex",
95
+ "flexDirection": "row",
94
96
  "justifyContent": "center",
95
97
  },
96
98
  {
@@ -157,6 +159,7 @@ exports[`Button Component > applies the correct styles when disabled is true 1`]
157
159
  "borderStyle": "solid",
158
160
  "borderWidth": 0.5,
159
161
  "display": "flex",
162
+ "flexDirection": "row",
160
163
  "justifyContent": "center",
161
164
  },
162
165
  {
@@ -3,7 +3,7 @@ import { render, fireEvent } from "@testing-library/react-native";
3
3
  import { describe, it, expect, vi } from "vitest";
4
4
 
5
5
  import Button from "../index";
6
- import { ViewStyle } from "react-native";
6
+ import { ViewStyle, Text } from "react-native";
7
7
 
8
8
  describe("Button Component", () => {
9
9
  it("renders correctly", () => {
@@ -53,4 +53,28 @@ describe("Button Component", () => {
53
53
 
54
54
  expect(mockFn).toHaveBeenCalled();
55
55
  });
56
+ it("renders correctly with iconLeft", () => {
57
+ const { getByText, getByTestId } = render(<Button iconLeft={<Text testID="icon-left">🚀</Text>}>Click Me</Button>);
58
+ expect(getByText("Click Me")).toBeTruthy();
59
+ expect(getByTestId("icon-left")).toBeTruthy();
60
+ });
61
+
62
+ it("renders correctly with iconRight", () => {
63
+ const { getByText, getByTestId } = render(
64
+ <Button iconRight={<Text testID="icon-right">🚀</Text>}>Click Me</Button>,
65
+ );
66
+ expect(getByText("Click Me")).toBeTruthy();
67
+ expect(getByTestId("icon-right")).toBeTruthy();
68
+ });
69
+
70
+ it("renders correctly with both iconLeft and iconRight", () => {
71
+ const { getByText, getByTestId } = render(
72
+ <Button iconLeft={<Text testID="icon-left">🚀</Text>} iconRight={<Text testID="icon-right">🚀</Text>}>
73
+ Click Me
74
+ </Button>,
75
+ );
76
+ expect(getByText("Click Me")).toBeTruthy();
77
+ expect(getByTestId("icon-left")).toBeTruthy();
78
+ expect(getByTestId("icon-right")).toBeTruthy();
79
+ });
56
80
  });