taro-uno-ui 0.9.0 → 1.0.1

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 (312) hide show
  1. package/README.md +21 -0
  2. package/dist/js/{index-DffLRSro.js → index-CDFsvu80.js} +15369 -10741
  3. package/dist/js/index-CDFsvu80.js.map +1 -0
  4. package/dist/js/index-DFdcksbe.js.map +1 -1
  5. package/dist/js/index-DXRIkWX1.js.map +1 -1
  6. package/dist/js/{index-6NJ3A1Dn.js → index-JffnTUrv.js} +15430 -10801
  7. package/dist/js/index-JffnTUrv.js.map +1 -0
  8. package/dist/utils/http/request.d.ts +280 -0
  9. package/package.json +14 -10
  10. package/src/components/basic/Button/Button.tsx +53 -13
  11. package/src/components/basic/Button/Button.types.ts +45 -9
  12. package/src/components/basic/Divider/Divider.tsx +60 -29
  13. package/src/components/basic/Icon/Icon.data.ts +474 -0
  14. package/src/components/basic/Icon/Icon.test.tsx +2 -2
  15. package/src/components/basic/Icon/Icon.tsx +48 -35
  16. package/src/components/basic/Icon/IconManager.ts +229 -0
  17. package/src/components/basic/Text/Text.styles.ts +3 -3
  18. package/src/components/basic/Text/Text.types.ts +14 -4
  19. package/src/components/basic/Typography/Typography.styles.ts +10 -9
  20. package/src/components/basic/Typography/Typography.tsx +15 -13
  21. package/src/components/basic/Typography/Typography.types.ts +41 -41
  22. package/src/components/basic/Typography/index.tsx +1 -1
  23. package/src/components/basic/Video/Video.styles.ts +777 -0
  24. package/src/components/basic/Video/Video.test.tsx +490 -0
  25. package/src/components/basic/Video/Video.tsx +1468 -0
  26. package/src/components/basic/Video/Video.types.ts +500 -0
  27. package/src/components/basic/Video/index.tsx +26 -0
  28. package/src/components/basic/index.tsx +13 -15
  29. package/src/components/common/ErrorBoundary.tsx +1 -1
  30. package/src/components/common/LazyComponent.tsx +9 -8
  31. package/src/components/common/SecurityProvider.tsx +2 -14
  32. package/src/components/common/ThemeProvider.tsx +43 -56
  33. package/src/components/common/VirtualList.tsx +187 -205
  34. package/src/components/common/index.tsx +25 -0
  35. package/src/components/display/Avatar/Avatar.styles.ts +1 -1
  36. package/src/components/display/Avatar/Avatar.tsx +6 -19
  37. package/src/components/display/Avatar/Avatar.types.ts +1 -1
  38. package/src/components/display/Avatar/index.ts +1 -1
  39. package/src/components/display/Badge/Badge.tsx +3 -16
  40. package/src/components/display/Badge/Badge.types.ts +1 -1
  41. package/src/components/display/Badge/index.ts +1 -1
  42. package/src/components/display/Calendar/Calendar.styles.ts +36 -36
  43. package/src/components/display/Calendar/Calendar.test.tsx +27 -15
  44. package/src/components/display/Calendar/Calendar.tsx +56 -35
  45. package/src/components/display/Calendar/Calendar.types.ts +1 -1
  46. package/src/components/display/Calendar/index.ts +1 -1
  47. package/src/components/display/Card/Card.styles.ts +2 -2
  48. package/src/components/display/Card/Card.test.tsx +6 -4
  49. package/src/components/display/Card/Card.tsx +1 -1
  50. package/src/components/display/Card/Card.types.ts +4 -4
  51. package/src/components/display/Card/index.ts +1 -1
  52. package/src/components/display/Carousel/Carousel.styles.ts +31 -31
  53. package/src/components/display/Carousel/Carousel.tsx +34 -39
  54. package/src/components/display/Carousel/Carousel.types.ts +1 -1
  55. package/src/components/display/Carousel/index.ts +1 -1
  56. package/src/components/display/List/List.styles.ts +3 -3
  57. package/src/components/display/List/List.tsx +0 -1
  58. package/src/components/display/List/index.ts +1 -1
  59. package/src/components/display/Rate/Rate.styles.ts +5 -17
  60. package/src/components/display/Rate/Rate.tsx +6 -14
  61. package/src/components/display/Rate/Rate.types.ts +4 -3
  62. package/src/components/display/Rate/index.ts +3 -11
  63. package/src/components/display/Table/Table.test.tsx +2 -0
  64. package/src/components/display/Table/Table.tsx +3 -7
  65. package/src/components/display/Table/Table.types.ts +3 -2
  66. package/src/components/display/Tag/Tag.styles.ts +31 -31
  67. package/src/components/display/Tag/Tag.tsx +9 -26
  68. package/src/components/display/Tag/Tag.types.ts +1 -1
  69. package/src/components/display/Tag/index.ts +1 -1
  70. package/src/components/display/Timeline/Timeline.styles.ts +32 -32
  71. package/src/components/display/Timeline/Timeline.tsx +23 -42
  72. package/src/components/display/Timeline/Timeline.types.ts +1 -1
  73. package/src/components/display/Timeline/index.ts +1 -1
  74. package/src/components/display/index.tsx +33 -29
  75. package/src/components/feedback/Loading/Loading.tsx +6 -1
  76. package/src/components/feedback/Loading/index.ts +2 -5
  77. package/src/components/feedback/Message/Message.styles.ts +3 -3
  78. package/src/components/feedback/Message/index.ts +2 -5
  79. package/src/components/feedback/Modal/Modal.styles.ts +1 -1
  80. package/src/components/feedback/Modal/Modal.tsx +9 -31
  81. package/src/components/feedback/Modal/Modal.types.ts +12 -2
  82. package/src/components/feedback/Notification/Notification.styles.ts +49 -39
  83. package/src/components/feedback/Notification/Notification.test.tsx +1 -1
  84. package/src/components/feedback/Notification/Notification.tsx +97 -120
  85. package/src/components/feedback/Notification/Notification.types.ts +11 -8
  86. package/src/components/feedback/Notification/NotificationManager.tsx +135 -106
  87. package/src/components/feedback/Notification/index.ts +10 -3
  88. package/src/components/feedback/Notification/index.tsx +16 -26
  89. package/src/components/feedback/Progress/Progress.styles.ts +23 -14
  90. package/src/components/feedback/Progress/Progress.tsx +93 -113
  91. package/src/components/feedback/Progress/Progress.types.ts +1 -1
  92. package/src/components/feedback/Progress/index.ts +1 -1
  93. package/src/components/feedback/Progress/utils/animation.ts +12 -23
  94. package/src/components/feedback/Progress/utils/index.ts +2 -2
  95. package/src/components/feedback/Progress/utils/progress-calculator.ts +14 -32
  96. package/src/components/feedback/Result/Result.styles.ts +29 -29
  97. package/src/components/feedback/Result/Result.tsx +8 -20
  98. package/src/components/feedback/Result/Result.types.ts +7 -7
  99. package/src/components/feedback/Result/index.tsx +1 -1
  100. package/src/components/feedback/Toast/Toast.styles.ts +1 -1
  101. package/src/components/feedback/Toast/Toast.tsx +25 -13
  102. package/src/components/feedback/Tooltip/Tooltip.examples.tsx +21 -44
  103. package/src/components/feedback/Tooltip/Tooltip.styles.ts +16 -22
  104. package/src/components/feedback/Tooltip/Tooltip.test.tsx +1 -1
  105. package/src/components/feedback/Tooltip/Tooltip.tsx +65 -46
  106. package/src/components/feedback/Tooltip/Tooltip.types.ts +14 -20
  107. package/src/components/feedback/Tooltip/index.ts +1 -1
  108. package/src/components/feedback/Tooltip/index.tsx +12 -24
  109. package/src/components/feedback/index.tsx +54 -42
  110. package/src/components/form/Cascader/Cascader.styles.ts +2 -2
  111. package/src/components/form/Cascader/Cascader.tsx +84 -88
  112. package/src/components/form/Cascader/Cascader.types.ts +49 -50
  113. package/src/components/form/Cascader/hooks/useCascaderFieldNames.ts +11 -8
  114. package/src/components/form/Cascader/hooks/useCascaderOptions.ts +73 -55
  115. package/src/components/form/Cascader/hooks/useCascaderState.ts +31 -25
  116. package/src/components/form/Cascader/index.ts +1 -1
  117. package/src/components/form/Cascader/utils/formatDisplayValue.ts +4 -4
  118. package/src/components/form/Checkbox/Checkbox.styles.ts +83 -84
  119. package/src/components/form/Checkbox/Checkbox.tsx +2 -9
  120. package/src/components/form/Checkbox/CheckboxGroup.tsx +7 -7
  121. package/src/components/form/DatePicker/DatePicker.test.tsx +1 -1
  122. package/src/components/form/DatePicker/DatePicker.tsx +91 -75
  123. package/src/components/form/DatePicker/DatePicker.types.ts +4 -1
  124. package/src/components/form/Form/Form.tsx +66 -504
  125. package/src/components/form/Form/Form.types.ts +16 -1
  126. package/src/components/form/Form/useFormLogic.ts +497 -0
  127. package/src/components/form/Input/Input.styles.ts +8 -1
  128. package/src/components/form/Input/Input.tsx +55 -291
  129. package/src/components/form/Input/Input.types.ts +13 -1
  130. package/src/components/form/Input/useInputLogic.test.ts +82 -0
  131. package/src/components/form/Input/useInputLogic.ts +260 -0
  132. package/src/components/form/InputNumber/InputNumber.styles.ts +76 -25
  133. package/src/components/form/InputNumber/InputNumber.tsx +53 -21
  134. package/src/components/form/InputNumber/InputNumber.types.ts +21 -3
  135. package/src/components/form/InputNumber/components/InputNumberClearButton.tsx +3 -11
  136. package/src/components/form/InputNumber/components/InputNumberControls.tsx +3 -12
  137. package/src/components/form/InputNumber/hooks/index.ts +1 -1
  138. package/src/components/form/InputNumber/hooks/useInputNumberState.ts +7 -9
  139. package/src/components/form/InputNumber/hooks/useInputNumberValidation.ts +18 -17
  140. package/src/components/form/InputNumber/index.ts +7 -7
  141. package/src/components/form/Radio/Radio.styles.ts +1 -8
  142. package/src/components/form/Radio/Radio.tsx +3 -9
  143. package/src/components/form/Radio/Radio.types.ts +5 -1
  144. package/src/components/form/Select/Select.styles.ts +5 -1
  145. package/src/components/form/Select/Select.tsx +15 -15
  146. package/src/components/form/Select/Select.types.ts +2 -1
  147. package/src/components/form/Slider/Slider.styles.ts +13 -13
  148. package/src/components/form/Slider/Slider.tsx +19 -33
  149. package/src/components/form/Slider/Slider.types.ts +14 -12
  150. package/src/components/form/Slider/index.tsx +2 -9
  151. package/src/components/form/Switch/Switch.styles.ts +1 -7
  152. package/src/components/form/Switch/Switch.tsx +7 -13
  153. package/src/components/form/Textarea/Textarea.styles.ts +4 -4
  154. package/src/components/form/Textarea/Textarea.tsx +7 -1
  155. package/src/components/form/Textarea/Textarea.types.ts +4 -1
  156. package/src/components/form/TimePicker/TimePicker.styles.ts +8 -12
  157. package/src/components/form/TimePicker/TimePicker.tsx +122 -100
  158. package/src/components/form/TimePicker/TimePicker.types.ts +2 -2
  159. package/src/components/form/TimePicker/index.ts +1 -1
  160. package/src/components/form/Transfer/Transfer.styles.ts +3 -15
  161. package/src/components/form/Transfer/Transfer.tsx +146 -134
  162. package/src/components/form/Transfer/Transfer.types.ts +34 -26
  163. package/src/components/form/Transfer/components/TransferItem.tsx +55 -62
  164. package/src/components/form/Transfer/components/TransferList.tsx +212 -199
  165. package/src/components/form/Transfer/components/TransferOperations.tsx +52 -55
  166. package/src/components/form/Transfer/components/TransferPagination.tsx +115 -111
  167. package/src/components/form/Transfer/components/TransferSearch.tsx +52 -55
  168. package/src/components/form/Transfer/hooks/useTransferData.ts +91 -81
  169. package/src/components/form/Transfer/hooks/useTransferState.ts +22 -16
  170. package/src/components/form/Transfer/index.ts +2 -8
  171. package/src/components/form/Upload/Upload.styles.ts +21 -21
  172. package/src/components/form/Upload/Upload.tsx +189 -142
  173. package/src/components/form/Upload/Upload.types.ts +31 -31
  174. package/src/components/form/Upload/index.tsx +1 -1
  175. package/src/components/form/index.tsx +60 -29
  176. package/src/components/index.tsx +0 -1
  177. package/src/components/layout/Affix/Affix.styles.ts +16 -11
  178. package/src/components/layout/Affix/Affix.tsx +67 -75
  179. package/src/components/layout/Affix/Affix.types.ts +18 -18
  180. package/src/components/layout/Affix/index.tsx +1 -1
  181. package/src/components/layout/Col/Col.styles.ts +17 -17
  182. package/src/components/layout/Col/Col.test.tsx +7 -5
  183. package/src/components/layout/Col/Col.tsx +3 -21
  184. package/src/components/layout/Col/Col.types.ts +1 -1
  185. package/src/components/layout/Container/Container.styles.ts +3 -1
  186. package/src/components/layout/Container/Container.tsx +2 -11
  187. package/src/components/layout/Grid/Grid.tsx +3 -53
  188. package/src/components/layout/Layout/Content.tsx +24 -32
  189. package/src/components/layout/Layout/Footer.tsx +24 -32
  190. package/src/components/layout/Layout/Header.tsx +24 -32
  191. package/src/components/layout/Layout/Layout.styles.ts +17 -17
  192. package/src/components/layout/Layout/Layout.tsx +14 -25
  193. package/src/components/layout/Layout/Layout.types.ts +29 -29
  194. package/src/components/layout/Layout/Sider.tsx +44 -56
  195. package/src/components/layout/Layout/index.tsx +16 -2
  196. package/src/components/layout/Row/Row.tsx +15 -43
  197. package/src/components/layout/Space/Space.tsx +3 -11
  198. package/src/components/layout/Space/Space.types.ts +1 -1
  199. package/src/components/layout/index.tsx +29 -19
  200. package/src/components/navigation/Menu/Menu.constants.ts +69 -0
  201. package/src/components/navigation/Menu/Menu.stories.tsx +107 -0
  202. package/src/components/navigation/Menu/Menu.styles.ts +25 -37
  203. package/src/components/navigation/Menu/Menu.tsx +8 -11
  204. package/src/components/navigation/Menu/Menu.types.ts +2 -2
  205. package/src/components/navigation/Menu/Menu.utils.ts +17 -17
  206. package/src/components/navigation/Menu/MenuItem.tsx +9 -11
  207. package/src/components/navigation/Menu/SubMenu.tsx +8 -6
  208. package/src/components/navigation/Menu/index.tsx +4 -69
  209. package/src/components/navigation/NavBar/NavBar.styles.ts +1 -1
  210. package/src/components/navigation/NavBar/NavBar.tsx +7 -10
  211. package/src/components/navigation/NavBar/NavBar.types.ts +3 -3
  212. package/src/components/navigation/NavBar/index.tsx +1 -1
  213. package/src/components/navigation/Pagination/Pagination.test.tsx +2 -3
  214. package/src/components/navigation/Pagination/Pagination.tsx +3 -3
  215. package/src/components/navigation/Pagination/Pagination.types.ts +3 -2
  216. package/src/components/navigation/Pagination/index.ts +9 -3
  217. package/src/components/navigation/Steps/Step.tsx +24 -44
  218. package/src/components/navigation/Steps/Steps.styles.ts +28 -13
  219. package/src/components/navigation/Steps/Steps.test.tsx +2 -0
  220. package/src/components/navigation/Steps/Steps.tsx +88 -89
  221. package/src/components/navigation/Steps/Steps.types.ts +30 -30
  222. package/src/components/navigation/Steps/index.tsx +1 -1
  223. package/src/components/navigation/Tabs/Tabs.test.tsx +3 -2
  224. package/src/components/navigation/Tabs/Tabs.types.ts +4 -3
  225. package/src/components/navigation/index.tsx +21 -16
  226. package/src/constants/index.ts +1 -1
  227. package/src/hooks/index.ts +52 -102
  228. package/src/hooks/types.ts +4 -5
  229. package/src/hooks/useAsync.ts +46 -47
  230. package/src/hooks/useClickOutside.ts +52 -0
  231. package/src/hooks/useCounter.ts +87 -0
  232. package/src/hooks/useDebounce.ts +150 -0
  233. package/src/hooks/useDeepCompareEffect.ts +88 -0
  234. package/src/hooks/useEventListener.ts +77 -0
  235. package/src/hooks/useMediaQuery.ts +75 -0
  236. package/src/hooks/useMutation.ts +233 -0
  237. package/src/hooks/usePerformance.ts +1 -64
  238. package/src/hooks/usePlatform.ts +3 -1
  239. package/src/hooks/usePrevious.ts +25 -0
  240. package/src/hooks/useRequest.ts +12 -7
  241. package/src/hooks/useStateManagement.ts +1 -1
  242. package/src/hooks/useStorage.ts +169 -0
  243. package/src/hooks/useStyle.ts +8 -2
  244. package/src/hooks/useToggle.ts +54 -0
  245. package/src/index.ts +34 -9
  246. package/src/theme/ThemeProvider.tsx +3 -7
  247. package/src/theme/ThemeProvider.types.ts +1 -1
  248. package/src/theme/defaults.ts +1 -1
  249. package/src/theme/design-system.ts +2 -2
  250. package/src/theme/design-tokens.ts +85 -99
  251. package/src/theme/generated/dark-theme.scss +1 -1
  252. package/src/theme/generated/tokens.scss +82 -18
  253. package/src/theme/index.ts +8 -29
  254. package/src/theme/responsive.tsx +36 -34
  255. package/src/theme/styles.ts +1 -1
  256. package/src/theme/useThemeUtils.ts +43 -43
  257. package/src/theme/utils.ts +32 -32
  258. package/src/theme/variables.ts +70 -51
  259. package/src/types/accessibility.ts +36 -37
  260. package/src/types/button.ts +25 -27
  261. package/src/types/component-props.ts +6 -1
  262. package/src/types/glob.d.ts +4 -0
  263. package/src/types/index.ts +2 -2
  264. package/src/types/standardized-components.ts +9 -3
  265. package/src/types/utils.ts +13 -23
  266. package/src/utils/__tests__/responsiveUtils.test.ts +5 -4
  267. package/src/utils/abort-controller.ts +48 -0
  268. package/src/utils/cache.ts +2 -6
  269. package/src/utils/createNamespace.ts +4 -4
  270. package/src/utils/environment.ts +26 -6
  271. package/src/utils/error-handler.ts +2 -2
  272. package/src/utils/errorLogger.ts +16 -20
  273. package/src/utils/formatUtils.ts +38 -70
  274. package/src/utils/http/error-codes.ts +314 -0
  275. package/src/utils/http/http-client.test.ts +63 -0
  276. package/src/utils/{network → http}/http-client.ts +45 -35
  277. package/src/utils/http/request-cache.ts +127 -0
  278. package/src/utils/http/request.ts +954 -0
  279. package/src/utils/http/taro-adapter.test.ts +74 -0
  280. package/src/utils/http/taro-adapter.ts +24 -0
  281. package/src/utils/http/types.ts +414 -0
  282. package/src/utils/http/web-adapter.ts +33 -0
  283. package/src/utils/index.ts +5 -8
  284. package/src/utils/inputValidator.ts +17 -14
  285. package/src/utils/performance/performance.ts +60 -71
  286. package/src/utils/responsiveUtils.ts +7 -16
  287. package/src/utils/rtl-support.ts +29 -19
  288. package/src/utils/security/api-security.ts +47 -39
  289. package/src/utils/securityHeaders.ts +61 -67
  290. package/src/utils/typeHelpers.ts +10 -10
  291. package/src/utils/types/dataProcessing.ts +93 -92
  292. package/src/utils/types/typeHelpers.ts +31 -21
  293. package/src/utils/xssProtection.ts +96 -48
  294. package/dist/js/index-6NJ3A1Dn.js.map +0 -1
  295. package/dist/js/index-DffLRSro.js.map +0 -1
  296. package/src/components/form/Input/Input.enhanced.tsx +0 -732
  297. package/src/components/navigation/Menu/__tests__/Menu.test.tsx +0 -687
  298. package/src/components/navigation/Tree/Tree.styles.ts +0 -553
  299. package/src/components/navigation/Tree/Tree.test.basic.tsx +0 -7
  300. package/src/components/navigation/Tree/Tree.test.functional.tsx +0 -496
  301. package/src/components/navigation/Tree/Tree.test.import.check.tsx +0 -6
  302. package/src/components/navigation/Tree/Tree.test.import.tsx +0 -6
  303. package/src/components/navigation/Tree/Tree.test.minimal.tsx +0 -5
  304. package/src/components/navigation/Tree/Tree.test.simple.tsx +0 -30
  305. package/src/components/navigation/Tree/Tree.test.tsx +0 -908
  306. package/src/components/navigation/Tree/Tree.test.working.tsx +0 -673
  307. package/src/components/navigation/Tree/Tree.tsx +0 -600
  308. package/src/components/navigation/Tree/Tree.types.ts +0 -909
  309. package/src/components/navigation/Tree/Tree.utils.ts +0 -452
  310. package/src/components/navigation/Tree/index.ts +0 -33
  311. package/src/components/navigation/Tree/index.tsx +0 -23
  312. package/src/utils/network/http-client.test.ts +0 -18
@@ -70,7 +70,9 @@ export const MenuItemComponent: React.FC<MenuItemProps> = ({
70
70
  })}
71
71
  className={item.className}
72
72
  >
73
- {itemRender ? itemRender(item) : (
73
+ {itemRender ? (
74
+ itemRender(item)
75
+ ) : (
74
76
  <Text style={menuStyles.getLabelStyle({ size, selected, disabled: item.disabled, danger: item.danger })}>
75
77
  {item.label}
76
78
  </Text>
@@ -96,24 +98,20 @@ export const MenuItemComponent: React.FC<MenuItemProps> = ({
96
98
  >
97
99
  {/* 图标 */}
98
100
  {item.icon && (
99
- <View style={menuStyles.getIconStyle({ size, selected, disabled: item.disabled })}>
100
- {item.icon}
101
- </View>
101
+ <View style={menuStyles.getIconStyle({ size, selected, disabled: item.disabled })}>{item.icon}</View>
102
102
  )}
103
103
 
104
104
  {/* 标签 */}
105
- {itemRender ? itemRender(item) : (
105
+ {itemRender ? (
106
+ itemRender(item)
107
+ ) : (
106
108
  <Text style={menuStyles.getLabelStyle({ size, selected, disabled: item.disabled, danger: item.danger })}>
107
109
  {item.label}
108
110
  </Text>
109
111
  )}
110
112
 
111
113
  {/* 额外信息 */}
112
- {item.extra && (
113
- <View style={menuStyles.extra}>
114
- {item.extra}
115
- </View>
116
- )}
114
+ {item.extra && <View style={menuStyles.extra}>{item.extra}</View>}
117
115
 
118
116
  {/* 徽章 */}
119
117
  {item.badge && (
@@ -123,4 +121,4 @@ export const MenuItemComponent: React.FC<MenuItemProps> = ({
123
121
  )}
124
122
  </View>
125
123
  );
126
- };
124
+ };
@@ -99,14 +99,16 @@ export const SubMenuComponent: React.FC<SubMenuProps> = ({
99
99
  >
100
100
  {/* 图标 */}
101
101
  {item.icon && (
102
- <View style={menuStyles.getIconStyle({ size, selected: false, disabled: item.disabled })}>
103
- {item.icon}
104
- </View>
102
+ <View style={menuStyles.getIconStyle({ size, selected: false, disabled: item.disabled })}>{item.icon}</View>
105
103
  )}
106
104
 
107
105
  {/* 标签 */}
108
- {subMenuTitleRender ? subMenuTitleRender(item) : (
109
- <Text style={menuStyles.getLabelStyle({ size, selected: false, disabled: item.disabled, danger: item.danger })}>
106
+ {subMenuTitleRender ? (
107
+ subMenuTitleRender(item)
108
+ ) : (
109
+ <Text
110
+ style={menuStyles.getLabelStyle({ size, selected: false, disabled: item.disabled, danger: item.danger })}
111
+ >
110
112
  {item.label}
111
113
  </Text>
112
114
  )}
@@ -145,4 +147,4 @@ export const SubMenuComponent: React.FC<SubMenuProps> = ({
145
147
  )}
146
148
  </View>
147
149
  );
148
- };
150
+ };
@@ -4,9 +4,8 @@
4
4
  */
5
5
 
6
6
  // 导入工具类和类型
7
- import { MenuUtils } from './Menu.utils';
8
- import type { MenuItem } from './Menu.types';
9
7
  import { menuStyles as menuStylesExport } from './Menu.styles';
8
+ import { MENU_VERSION, MENU_CONFIG, MenuLibraryUtils } from './Menu.constants';
10
9
 
11
10
  // 导出菜单组件
12
11
  export { Menu } from './Menu';
@@ -40,72 +39,8 @@ export { menuStyles } from './Menu.styles';
40
39
  // 导出默认配置
41
40
  export { DEFAULT_MENU_CONFIG } from './Menu.types';
42
41
 
43
- // 菜单组件版本
44
- export const MENU_VERSION = '1.0.0';
45
-
46
- // 菜单组件配置
47
- export const MENU_CONFIG = {
48
- version: MENU_VERSION,
49
- platform: 'taro',
50
- features: {
51
- multiple: true,
52
- accordion: true,
53
- collapsible: true,
54
- contextMenu: true,
55
- accessibility: true,
56
- theme: true,
57
- responsive: true,
58
- typescript: true,
59
- },
60
- };
61
-
62
- // 菜单组件工具函数
63
- export const MenuLibraryUtils = {
64
- /**
65
- * 获取菜单组件版本
66
- */
67
- getVersion: (): string => MENU_VERSION,
68
-
69
- /**
70
- * 获取菜单组件配置
71
- */
72
- getConfig: () => MENU_CONFIG,
73
-
74
- /**
75
- * 格式化菜单数据
76
- */
77
- formatMenuData: (data: any[]) => {
78
- return MenuUtils.formatMenuData(data);
79
- },
80
-
81
- /**
82
- * 查找菜单项
83
- */
84
- findMenuItem: (items: MenuItem[], key: string) => {
85
- return MenuUtils.findItem(items, key);
86
- },
87
-
88
- /**
89
- * 获取菜单项路径
90
- */
91
- getMenuItemPath: (items: MenuItem[], key: string) => {
92
- return MenuUtils.getItemPath(items, key);
93
- },
94
-
95
- /**
96
- * 展开菜单项的所有父级
97
- */
98
- expandParentKeys: (items: MenuItem[], key: string) => {
99
- return MenuUtils.expandParents(items, key);
100
- },
101
-
102
- /**
103
- * 验证菜单项
104
- */
105
- validateMenuItem: (item: MenuItem) => {
106
- return MenuUtils.validateItem(item);
107
- },
108
- };
42
+ // 导出常量和工具库
43
+ export { MENU_VERSION, MENU_CONFIG, MenuLibraryUtils } from './Menu.constants';
109
44
 
110
45
  // 默认导出
111
46
  export default {
@@ -121,4 +56,4 @@ export default {
121
56
  // 配置
122
57
  CONFIG: MENU_CONFIG,
123
58
  VERSION: MENU_VERSION,
124
- };
59
+ };
@@ -126,4 +126,4 @@ export const navBarStyles = {
126
126
  borderBottomColor: '#333333',
127
127
  },
128
128
  },
129
- } as const;
129
+ } as const;
@@ -94,7 +94,7 @@ export const NavBarComponent = forwardRef<NavBarRef, NavBarProps>((props, ref) =
94
94
  const getContainerStyle = () => {
95
95
  const baseStyle = {
96
96
  ...navBarStyles.container,
97
- backgroundColor: backgroundColor || (transparent ? 'transparent' : (theme === 'dark' ? '#1a1a1a' : '#ffffff')),
97
+ backgroundColor: backgroundColor || (transparent ? 'transparent' : theme === 'dark' ? '#1a1a1a' : '#ffffff'),
98
98
  ...(border && !transparent ? navBarStyles.border : {}),
99
99
  ...(position === 'fixed' ? navBarStyles.fixed : {}),
100
100
  ...style,
@@ -153,7 +153,7 @@ export const NavBarComponent = forwardRef<NavBarRef, NavBarProps>((props, ref) =
153
153
  setInternalBackArrow(false);
154
154
  },
155
155
  }),
156
- []
156
+ [],
157
157
  );
158
158
 
159
159
  // 计算类名
@@ -164,7 +164,9 @@ export const NavBarComponent = forwardRef<NavBarRef, NavBarProps>((props, ref) =
164
164
  transparent ? 'taro-uno-navbar--transparent' : '',
165
165
  border ? 'taro-uno-navbar--border' : '',
166
166
  className || '',
167
- ].filter(Boolean).join(' ');
167
+ ]
168
+ .filter(Boolean)
169
+ .join(' ');
168
170
 
169
171
  return (
170
172
  <>
@@ -180,12 +182,7 @@ export const NavBarComponent = forwardRef<NavBarRef, NavBarProps>((props, ref) =
180
182
  )}
181
183
 
182
184
  {/* NavBar容器 */}
183
- <View
184
- ref={navBarRef}
185
- className={containerClassName}
186
- style={getContainerStyle()}
187
- {...restProps}
188
- >
185
+ <View ref={navBarRef} className={containerClassName} style={getContainerStyle()} {...restProps}>
189
186
  {/* 内容区域 */}
190
187
  <View className="taro-uno-navbar__content" style={getContentStyle()}>
191
188
  {/* 左侧区域 */}
@@ -228,4 +225,4 @@ NavBarComponent.displayName = 'NavBar';
228
225
 
229
226
  /** 导出NavBar组件 */
230
227
  export const NavBar = NavBarComponent;
231
- export default NavBarComponent;
228
+ export default NavBarComponent;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { BaseComponentProps } from '../../../types';
2
+ import { BaseComponentProps as StandardBaseComponentProps } from '../../../types/component-props';
3
3
 
4
4
  /** NavBar位置 */
5
5
  export type NavBarPosition = 'top' | 'fixed' | 'static';
@@ -24,7 +24,7 @@ export interface NavBarRef {
24
24
  }
25
25
 
26
26
  /** NavBar组件属性 */
27
- export interface NavBarProps extends BaseComponentProps {
27
+ export interface NavBarProps extends StandardBaseComponentProps {
28
28
  /** 标题 */
29
29
  title?: React.ReactNode;
30
30
  /** 左侧内容 */
@@ -51,4 +51,4 @@ export interface NavBarProps extends BaseComponentProps {
51
51
  placeholder?: boolean;
52
52
  /** 安全区域适配 */
53
53
  safeAreaInsetTop?: boolean;
54
- }
54
+ }
@@ -1,3 +1,3 @@
1
1
  export { NavBar } from './NavBar';
2
2
  export type { NavBarProps, NavBarRef, NavBarPosition, NavBarTheme } from './NavBar.types';
3
- export { default } from './NavBar';
3
+ export { default } from './NavBar';
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
- import { render, screen, fireEvent, act } from '@testing-library/react'
2
+ import { render, fireEvent, screen, act } from '@testing-library/react'
3
3
  import { Pagination } from '../Pagination'
4
4
  import type { PaginationProps, PaginationRef } from './Pagination.types'
5
- import { vi } from 'vitest'
5
+ import { vi, describe, it, expect, beforeEach } from 'vitest'
6
6
 
7
7
  // Mock Taro components
8
8
  vi.mock('@tarojs/components', () => ({
@@ -14,7 +14,6 @@ vi.mock('@tarojs/components', () => ({
14
14
  return (
15
15
  <select {...props} role="combobox" onChange={(e) => {
16
16
  const selectedIndex = parseInt(e.target.value);
17
- const selectedValue = range ? range[selectedIndex] : selectedIndex;
18
17
  onChange && onChange({ detail: { value: selectedIndex } });
19
18
  }}>
20
19
  {range?.map((value, index) => (
@@ -19,8 +19,8 @@ export const PaginationComponent = forwardRef<PaginationRef, PaginationProps>((p
19
19
  pageSizeOptions = [10, 20, 50, 100],
20
20
  disabled = false,
21
21
  simple = false,
22
- showMore = true,
23
- showLessItems = false,
22
+ showMore: _showMore = true,
23
+ showLessItems: _showLessItems = false,
24
24
  position = 'bottom',
25
25
  align = 'right',
26
26
  itemRender,
@@ -274,7 +274,7 @@ export const PaginationComponent = forwardRef<PaginationRef, PaginationProps>((p
274
274
  const renderSizeChanger = () => {
275
275
  if (!showSizeChanger) return null;
276
276
 
277
- const sizeIndex = pageSizeOptions.findIndex(size => size === internalPageSize);
277
+ const sizeIndex = pageSizeOptions.findIndex((size) => size === internalPageSize);
278
278
 
279
279
  return (
280
280
  <View className="taro-uno-pagination__size-changer">
@@ -1,6 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  // import { View } from '@tarojs/components'; // Commented out - unused
3
- import { BaseComponentProps, Size } from '../../../types';
3
+ import { BaseComponentProps as StandardBaseComponentProps } from '../../../types/component-props';
4
+ import { Size } from '../../../types';
4
5
 
5
6
  /** 分页尺寸 */
6
7
  export type PaginationSize = Size | 'small' | 'medium' | 'large';
@@ -40,7 +41,7 @@ export interface PaginationRef {
40
41
  }
41
42
 
42
43
  /** 分页组件属性 */
43
- export interface PaginationProps extends BaseComponentProps {
44
+ export interface PaginationProps extends StandardBaseComponentProps {
44
45
  /** 当前页码 */
45
46
  current?: number;
46
47
  /** 默认当前页码 */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Pagination 分页组件
3
- *
3
+ *
4
4
  * 企业级分页组件,支持:
5
5
  * - 多种尺寸和样式配置
6
6
  * - 简单模式和完整模式
@@ -11,8 +11,14 @@
11
11
  */
12
12
 
13
13
  export { Pagination, PaginationComponent } from './Pagination';
14
- export type { PaginationProps, PaginationRef, PaginationSize, PaginationPosition, PaginationAlign } from './Pagination.types';
14
+ export type {
15
+ PaginationProps,
16
+ PaginationRef,
17
+ PaginationSize,
18
+ PaginationPosition,
19
+ PaginationAlign,
20
+ } from './Pagination.types';
15
21
  export { paginationStyles } from './Pagination.styles';
16
22
 
17
23
  // 默认导出
18
- export { Pagination as default } from './Pagination';
24
+ export { Pagination as default } from './Pagination';
@@ -1,56 +1,36 @@
1
- import React, { forwardRef, useImperativeHandle } from 'react'
2
- import { View, Text } from '@tarojs/components'
3
- import { StepProps, StepRef } from './Steps.types'
1
+ import React, { forwardRef, useImperativeHandle } from 'react';
2
+ import { View, Text } from '@tarojs/components';
3
+ import { StepProps, StepRef } from './Steps.types';
4
4
  import {
5
5
  getStepItemStyle,
6
6
  getStepIconStyle,
7
7
  getStepContentStyle,
8
8
  getStepTitleStyle,
9
- getStepDescriptionStyle
10
- } from './Steps.styles'
9
+ getStepDescriptionStyle,
10
+ } from './Steps.styles';
11
11
 
12
- export const Step = forwardRef<StepRef, StepProps>(({
13
- className,
14
- style,
15
- title,
16
- description,
17
- status = 'wait',
18
- icon,
19
- disabled,
20
- stepNumber,
21
- ...props
22
- }, ref) => {
23
- const stepRef = React.useRef<any>(null)
12
+ export const Step = forwardRef<StepRef, StepProps>(
13
+ ({ className, style, title, description, status = 'wait', icon, disabled: _disabled, stepNumber, ...props }, ref) => {
14
+ const stepRef = React.useRef<any>(null);
24
15
 
25
- useImperativeHandle(ref, () => ({
26
- getStep: () => stepRef.current,
27
- }))
16
+ useImperativeHandle(ref, () => ({
17
+ getStep: () => stepRef.current,
18
+ }));
28
19
 
29
- return (
30
- <View
31
- className={className}
32
- style={style}
33
- {...props}
34
- >
35
- <View style={getStepItemStyle()}>
36
- <View style={getStepIconStyle(status)}>
37
- {icon || stepNumber}
38
- </View>
39
- <View style={getStepContentStyle()}>
40
- <Text style={getStepTitleStyle(status)}>
41
- {title}
42
- </Text>
43
- {description && (
44
- <Text style={getStepDescriptionStyle()}>
45
- {description}
46
- </Text>
47
- )}
20
+ return (
21
+ <View className={className} style={style} {...props}>
22
+ <View style={getStepItemStyle()}>
23
+ <View style={getStepIconStyle(status)}>{icon || stepNumber}</View>
24
+ <View style={getStepContentStyle()}>
25
+ <Text style={getStepTitleStyle(status)}>{title}</Text>
26
+ {description && <Text style={getStepDescriptionStyle()}>{description}</Text>}
27
+ </View>
48
28
  </View>
49
29
  </View>
50
- </View>
51
- )
52
- })
30
+ );
31
+ },
32
+ );
53
33
 
54
- Step.displayName = 'Step'
34
+ Step.displayName = 'Step';
55
35
 
56
- export default Step
36
+ export default Step;
@@ -97,58 +97,73 @@ export const stepsStyles = {
97
97
  width: 1,
98
98
  height: '100%',
99
99
  },
100
- }
100
+ };
101
101
 
102
102
  export const getStepsStyle = (direction?: 'horizontal' | 'vertical', customStyle?: React.CSSProperties) => ({
103
103
  ...stepsStyles.steps,
104
104
  ...(direction === 'horizontal' && stepsStyles.stepsHorizontal),
105
105
  ...(direction === 'vertical' && stepsStyles.stepsVertical),
106
106
  ...customStyle,
107
- })
107
+ });
108
108
 
109
- export const getStepStyle = (direction?: 'horizontal' | 'vertical', isLast?: boolean, customStyle?: React.CSSProperties) => ({
109
+ export const getStepStyle = (
110
+ direction?: 'horizontal' | 'vertical',
111
+ isLast?: boolean,
112
+ customStyle?: React.CSSProperties,
113
+ ) => ({
110
114
  ...stepsStyles.step,
111
115
  ...(direction === 'horizontal' && stepsStyles.stepHorizontal),
112
116
  ...(direction === 'vertical' && stepsStyles.stepVertical),
113
117
  ...(isLast && stepsStyles.stepLast),
114
118
  ...customStyle,
115
- })
119
+ });
116
120
 
117
121
  export const getStepItemStyle = (customStyle?: React.CSSProperties) => ({
118
122
  ...stepsStyles.stepItem,
119
123
  ...customStyle,
120
- })
124
+ });
121
125
 
122
- export const getStepIconStyle = (status?: 'wait' | 'process' | 'finish' | 'error', size?: 'default' | 'small', customStyle?: React.CSSProperties) => ({
126
+ export const getStepIconStyle = (
127
+ status?: 'wait' | 'process' | 'finish' | 'error',
128
+ size?: 'default' | 'small',
129
+ customStyle?: React.CSSProperties,
130
+ ) => ({
123
131
  ...stepsStyles.stepIcon,
124
132
  ...(status === 'process' && stepsStyles.stepIconProcess),
125
133
  ...(status === 'finish' && stepsStyles.stepIconFinish),
126
134
  ...(status === 'error' && stepsStyles.stepIconError),
127
135
  ...(size === 'small' && stepsStyles.stepIconSmall),
128
136
  ...customStyle,
129
- })
137
+ });
130
138
 
131
139
  export const getStepContentStyle = (customStyle?: React.CSSProperties) => ({
132
140
  ...stepsStyles.stepContent,
133
141
  ...customStyle,
134
- })
142
+ });
135
143
 
136
- export const getStepTitleStyle = (status?: 'wait' | 'process' | 'finish' | 'error', customStyle?: React.CSSProperties) => ({
144
+ export const getStepTitleStyle = (
145
+ status?: 'wait' | 'process' | 'finish' | 'error',
146
+ customStyle?: React.CSSProperties,
147
+ ) => ({
137
148
  ...stepsStyles.stepTitle,
138
149
  ...(status === 'process' && stepsStyles.stepTitleProcess),
139
150
  ...(status === 'finish' && stepsStyles.stepTitleFinish),
140
151
  ...(status === 'error' && stepsStyles.stepTitleError),
141
152
  ...customStyle,
142
- })
153
+ });
143
154
 
144
155
  export const getStepDescriptionStyle = (customStyle?: React.CSSProperties) => ({
145
156
  ...stepsStyles.stepDescription,
146
157
  ...customStyle,
147
- })
158
+ });
148
159
 
149
- export const getStepTailStyle = (direction?: 'horizontal' | 'vertical', isFinish?: boolean, customStyle?: React.CSSProperties) => ({
160
+ export const getStepTailStyle = (
161
+ direction?: 'horizontal' | 'vertical',
162
+ isFinish?: boolean,
163
+ customStyle?: React.CSSProperties,
164
+ ) => ({
150
165
  ...stepsStyles.stepTail,
151
166
  ...(isFinish && stepsStyles.stepTailFinish),
152
167
  ...(direction === 'vertical' && stepsStyles.stepVerticalTail),
153
168
  ...customStyle,
154
- })
169
+ });
@@ -1,6 +1,8 @@
1
1
  import { render, screen } from '@testing-library/react'
2
2
  import React from 'react'
3
3
  import { Steps } from './Steps'
4
+ import { describe, it, expect } from 'vitest'
5
+ import '@testing-library/jest-dom'
4
6
 
5
7
  describe('Steps', () => {
6
8
  it('renders step items', () => {