@hsu-react/ui 0.0.25 → 2.0.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 (709) hide show
  1. package/README.md +18 -3
  2. package/es/components/Button/index.d.ts +49 -8
  3. package/es/components/Button/index.js +68 -25
  4. package/es/components/Button/index.module.scss +38 -0
  5. package/es/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
  6. package/es/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
  7. package/es/components/ChainGraph/index.js +3 -1
  8. package/es/components/ChainGraph/index.module.scss +2 -2
  9. package/es/components/Chart/Group/index.module.scss +1 -1
  10. package/es/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
  11. package/es/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
  12. package/es/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
  13. package/es/components/Chat/ChatHistory/index.module.scss +3 -3
  14. package/es/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
  15. package/es/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
  16. package/es/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
  17. package/es/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
  18. package/es/components/Chat/ChatInput/_components/UploadButton/index.js +1 -1
  19. package/es/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
  20. package/es/components/Chat/ChatInput/_utils/index.js +1 -1
  21. package/es/components/Chat/ChatInput/index.module.scss +12 -11
  22. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.js +1 -1
  23. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
  24. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.js +3 -1
  25. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
  26. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
  27. package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
  28. package/es/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
  29. package/es/components/Chat/ChatList/_components/User/index.module.scss +21 -10
  30. package/es/components/Chat/ChatList/index.js +35 -30
  31. package/es/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
  32. package/es/components/Checkbox/index.module.scss +23 -28
  33. package/es/components/CodeMirror/index.module.scss +6 -6
  34. package/es/components/Copy/index.d.ts +8 -2
  35. package/es/components/Copy/index.js +45 -22
  36. package/es/components/Copy/index.module.scss +5 -5
  37. package/es/components/DatePicker/RangePicker/index.js +5 -1
  38. package/es/components/DatePicker/RangePicker/index.module.scss +10 -1
  39. package/es/components/DatePicker/StepPicker/index.module.scss +6 -4
  40. package/es/components/DatePicker/index.js +14 -3
  41. package/es/components/DatePicker/index.module.scss +2 -2
  42. package/es/components/Descriptions/index.d.ts +6 -2
  43. package/es/components/Descriptions/index.js +15 -8
  44. package/es/components/Editor/index.module.scss +7 -7
  45. package/es/components/FileCol/index.js +3 -3
  46. package/es/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
  47. package/es/components/FilePreview/_components/PdfPreview/index.js +9 -2
  48. package/es/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
  49. package/es/components/FilePreview/index.module.scss +4 -4
  50. package/es/components/Form/DrawerForm/index.js +10 -18
  51. package/es/components/Form/ImportForm/index.js +15 -16
  52. package/es/components/Form/ModalForm/index.d.ts +1 -1
  53. package/es/components/Form/ModalForm/index.js +14 -16
  54. package/es/components/Form/index.d.ts +12 -0
  55. package/es/components/Form/index.js +7 -1
  56. package/es/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
  57. package/es/components/FormItem/FormRadio/index.module.scss +11 -13
  58. package/es/components/FormItem/FormSegmented/index.module.scss +1 -1
  59. package/es/components/FormItem/FormSlider/index.module.scss +1 -1
  60. package/es/components/FormItem/FormUpload/FormImage/index.js +1 -1
  61. package/es/components/FormItem/FormUpload/index.js +2 -1
  62. package/es/components/FormItem/FormUpload/index.module.scss +17 -17
  63. package/es/components/FormItem/ItemContainer/index.js +4 -4
  64. package/es/components/FormItem/ItemContainer/index.module.scss +33 -7
  65. package/es/components/Input/Number/index.js +41 -55
  66. package/es/components/Input/Number/index.module.scss +27 -54
  67. package/es/components/Input/Range/index.module.scss +16 -5
  68. package/es/components/Input/TextArea/index.module.scss +13 -13
  69. package/es/components/Input/index.d.ts +3 -1
  70. package/es/components/Input/index.js +2 -0
  71. package/es/components/Input/index.module.scss +1 -1
  72. package/es/components/Markdown/Editor/index.module.scss +4 -4
  73. package/es/components/Markdown/Views/MermaidBlock.js +15 -1
  74. package/es/components/Markdown/Views/blocks.module.scss +13 -13
  75. package/es/components/Markdown/Views/index.module.scss +3 -3
  76. package/es/components/Modal/index.d.ts +12 -2
  77. package/es/components/Modal/index.js +31 -11
  78. package/es/components/Modal/index.module.scss +11 -1
  79. package/es/components/Operate/index.js +3 -1
  80. package/es/components/Operate/index.module.scss +1 -1
  81. package/es/components/Pagination/index.module.scss +19 -18
  82. package/es/components/Panel/DefaultPanel/index.module.scss +3 -3
  83. package/es/components/Panel/IframePanel/index.js +3 -1
  84. package/es/components/Panel/IframePanel/index.module.scss +2 -2
  85. package/es/components/Panel/ListPanel/ListModalPanel/index.d.ts +2 -2
  86. package/es/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
  87. package/es/components/Panel/ListPanel/_components/ColumnMgt/index.js +9 -17
  88. package/es/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
  89. package/es/components/Panel/ListPanel/_components/ToolBar/index.js +1 -1
  90. package/es/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
  91. package/es/components/Panel/ListPanel/index.d.ts +2 -2
  92. package/es/components/Panel/ListPanel/index.module.scss +9 -9
  93. package/es/components/Search/SearchAdvanced/index.d.ts +3 -3
  94. package/es/components/Search/SearchCard/index.module.scss +15 -15
  95. package/es/components/Search/SearchCollapsible/index.d.ts +3 -3
  96. package/es/components/Search/SearchWithFilter/index.d.ts +3 -3
  97. package/es/components/Search/SearchWithMore/index.d.ts +3 -3
  98. package/es/components/Search/_components/ButtonGroup/index.d.ts +4 -4
  99. package/es/components/Search/_components/ButtonGroup/index.js +2 -2
  100. package/es/components/Search/_components/FilterDropdown/index.js +3 -1
  101. package/es/components/Search/_hooks/useSearchCommon.d.ts +3 -3
  102. package/es/components/Search/_types/index.d.ts +3 -3
  103. package/es/components/Search/index.d.ts +3 -3
  104. package/es/components/Search/index.module.scss +33 -5
  105. package/es/components/SecondConf/index.js +16 -6
  106. package/es/components/SecondConf/index.module.scss +3 -3
  107. package/es/components/Select/AutoCompleteSelect/index.js +17 -7
  108. package/es/components/Select/AutoCompleteSelect/index.module.scss +73 -132
  109. package/es/components/Select/IconSelect/index.js +67 -60
  110. package/es/components/Select/IconSelect/index.module.scss +4 -3
  111. package/es/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.d.ts +1 -1
  112. package/es/components/Select/TreeSelect/index.js +18 -7
  113. package/es/components/Select/TreeSelect/index.module.scss +19 -44
  114. package/es/components/Select/index.d.ts +17 -2
  115. package/es/components/Select/index.js +22 -4
  116. package/es/components/Select/index.module.scss +71 -131
  117. package/es/components/Slider/index.module.scss +1 -1
  118. package/es/components/Switch/index.module.scss +1 -1
  119. package/es/components/TabBar/index.module.scss +11 -11
  120. package/es/components/Table/_components/Drag/index.js +4 -1
  121. package/es/components/Table/_hooks/useTableColumns.js +1 -1
  122. package/es/components/Table/_utils/tableUtils.d.ts +1 -1
  123. package/es/components/Table/_utils/tableUtils.js +4 -3
  124. package/es/components/Table/index.d.ts +18 -2
  125. package/es/components/Table/index.js +9 -0
  126. package/es/components/Table/index.module.scss +14 -14
  127. package/es/components/Tags/_components/EllipsisTag/index.js +1 -1
  128. package/es/components/TextEllipsis/index.js +12 -8
  129. package/es/components/Tree/index.d.ts +8 -2
  130. package/es/components/Tree/index.js +2 -0
  131. package/es/components/Tree/index.module.scss +6 -6
  132. package/es/components/Upload/_components/UploadedItem/index.js +3 -3
  133. package/es/components/Upload/_components/UploadingItem/index.js +3 -3
  134. package/es/components/Upload/_utils/normalUpload.d.ts +1 -1
  135. package/es/components/Upload/_utils/validateFile.js +49 -2
  136. package/es/components/Upload/index.d.ts +8 -2
  137. package/es/components/Upload/index.js +11 -4
  138. package/es/config-provider/index.d.ts +34 -2
  139. package/es/config-provider/index.js +59 -5
  140. package/es/feedback/index.d.ts +20 -0
  141. package/es/feedback/index.js +130 -0
  142. package/es/hooks/index.d.ts +5 -0
  143. package/es/hooks/index.js +4 -1
  144. package/es/hooks/useBreakpoint.d.ts +24 -0
  145. package/es/hooks/useBreakpoint.js +57 -0
  146. package/es/hooks/useIsDark.d.ts +9 -0
  147. package/es/hooks/useIsDark.js +64 -0
  148. package/es/hooks/usePointerType.d.ts +22 -0
  149. package/es/hooks/usePointerType.js +62 -0
  150. package/es/index.d.ts +4 -4
  151. package/es/index.js +19 -5
  152. package/es/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.d.ts +10 -0
  153. package/es/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.js +19 -0
  154. package/es/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.d.ts +11 -0
  155. package/es/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.js +26 -0
  156. package/es/layout/Breadcrumb/_hooks/useBreadcrumbPath.d.ts +5 -0
  157. package/es/layout/Breadcrumb/_hooks/useBreadcrumbPath.js +104 -0
  158. package/es/layout/Breadcrumb/_utils/formatMenu.d.ts +9 -0
  159. package/es/layout/Breadcrumb/_utils/formatMenu.js +28 -0
  160. package/es/layout/Breadcrumb/_utils/formatRoutes.d.ts +9 -0
  161. package/es/layout/Breadcrumb/_utils/formatRoutes.js +76 -0
  162. package/es/layout/Breadcrumb/_utils/pathMatch.d.ts +8 -0
  163. package/es/layout/Breadcrumb/_utils/pathMatch.js +45 -0
  164. package/es/layout/Breadcrumb/index.d.ts +19 -0
  165. package/es/layout/Breadcrumb/index.js +96 -0
  166. package/es/layout/Breadcrumb/index.module.scss +15 -0
  167. package/es/layout/Header/index.d.ts +39 -0
  168. package/es/layout/Header/index.js +166 -0
  169. package/es/layout/Header/index.module.scss +215 -0
  170. package/es/layout/I18n/I18nStore.d.ts +29 -0
  171. package/es/layout/I18n/I18nStore.js +94 -0
  172. package/es/layout/I18n/index.d.ts +14 -0
  173. package/es/layout/I18n/index.js +33 -0
  174. package/es/layout/I18n/locales/en-US.d.ts +2 -0
  175. package/es/layout/I18n/locales/en-US.js +15 -0
  176. package/es/layout/I18n/locales/zh-CN.d.ts +2 -0
  177. package/es/layout/I18n/locales/zh-CN.js +15 -0
  178. package/es/layout/Menu/_components/SecondaryHeader/index.d.ts +22 -0
  179. package/es/layout/Menu/_components/SecondaryHeader/index.js +48 -0
  180. package/es/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
  181. package/es/layout/Menu/_hooks/useMenuPath.d.ts +17 -0
  182. package/es/layout/Menu/_hooks/useMenuPath.js +91 -0
  183. package/es/layout/Menu/_hooks/useOnlyLvOneMenu.d.ts +13 -0
  184. package/es/layout/Menu/_hooks/useOnlyLvOneMenu.js +25 -0
  185. package/es/layout/Menu/_utils/formatMenu.d.ts +10 -0
  186. package/es/layout/Menu/_utils/formatMenu.js +55 -0
  187. package/es/layout/Menu/_utils/pathMatch.d.ts +8 -0
  188. package/es/layout/Menu/_utils/pathMatch.js +42 -0
  189. package/es/layout/Menu/_utils/setActiveIcon.d.ts +7 -0
  190. package/es/layout/Menu/_utils/setActiveIcon.js +20 -0
  191. package/es/layout/Menu/index.d.ts +34 -0
  192. package/es/layout/Menu/index.js +195 -0
  193. package/es/layout/Menu/index.module.scss +50 -0
  194. package/es/layout/NavTabBar/_components/SortableTab/index.d.ts +9 -0
  195. package/es/layout/NavTabBar/_components/SortableTab/index.js +34 -0
  196. package/es/layout/NavTabBar/_components/TabContextMenu/index.d.ts +20 -0
  197. package/es/layout/NavTabBar/_components/TabContextMenu/index.js +124 -0
  198. package/es/layout/NavTabBar/_components/TabDragOverlay/index.d.ts +20 -0
  199. package/es/layout/NavTabBar/_components/TabDragOverlay/index.js +50 -0
  200. package/es/layout/NavTabBar/_components/TabLabel/index.d.ts +22 -0
  201. package/es/layout/NavTabBar/_components/TabLabel/index.js +61 -0
  202. package/es/layout/NavTabBar/_hooks/useDropTabKey.d.ts +5 -0
  203. package/es/layout/NavTabBar/_hooks/useDropTabKey.js +25 -0
  204. package/es/layout/NavTabBar/_hooks/useTabContextMenu.d.ts +8 -0
  205. package/es/layout/NavTabBar/_hooks/useTabContextMenu.js +31 -0
  206. package/es/layout/NavTabBar/_hooks/useTabPath.d.ts +16 -0
  207. package/es/layout/NavTabBar/_hooks/useTabPath.js +131 -0
  208. package/es/layout/NavTabBar/_hooks/useTabTitle.d.ts +5 -0
  209. package/es/layout/NavTabBar/_hooks/useTabTitle.js +29 -0
  210. package/es/layout/NavTabBar/_utils/formatNavTabBar.d.ts +9 -0
  211. package/es/layout/NavTabBar/_utils/formatNavTabBar.js +48 -0
  212. package/es/layout/NavTabBar/_utils/pathMatch.d.ts +8 -0
  213. package/es/layout/NavTabBar/_utils/pathMatch.js +33 -0
  214. package/es/layout/NavTabBar/_utils/tabActions.d.ts +21 -0
  215. package/es/layout/NavTabBar/_utils/tabActions.js +114 -0
  216. package/es/layout/NavTabBar/index.d.ts +21 -0
  217. package/es/layout/NavTabBar/index.js +224 -0
  218. package/es/layout/NavTabBar/index.module.scss +179 -0
  219. package/es/layout/Theme/ThemeStore.d.ts +18 -0
  220. package/es/layout/Theme/ThemeStore.js +80 -0
  221. package/es/layout/Theme/index.d.ts +30 -0
  222. package/es/layout/Theme/index.js +89 -0
  223. package/es/layout/Theme/index.module.scss +6 -0
  224. package/es/layout/_hooks/useDropTab.d.ts +6 -0
  225. package/es/layout/_hooks/useDropTab.js +13 -0
  226. package/es/layout/_hooks/useReload.d.ts +6 -0
  227. package/es/layout/_hooks/useReload.js +10 -0
  228. package/es/layout/_hooks/useSetTabTitle.d.ts +6 -0
  229. package/es/layout/_hooks/useSetTabTitle.js +10 -0
  230. package/es/layout/_utils/storage.d.ts +6 -0
  231. package/es/layout/_utils/storage.js +32 -0
  232. package/es/layout/index.d.ts +43 -0
  233. package/es/layout/index.js +50 -0
  234. package/es/layout/types.d.ts +51 -0
  235. package/es/layout/types.js +1 -0
  236. package/es/request/index.js +15 -1
  237. package/es/styles/_responsive.scss +53 -0
  238. package/es/styles/antd-overload.scss +77 -21
  239. package/es/styles/tokens.d.ts +113 -13
  240. package/es/styles/tokens.js +176 -28
  241. package/es/styles/tokens.json +82 -0
  242. package/es/styles/tokens.scss +99 -52
  243. package/es/types/antd.d.ts +35 -0
  244. package/es/types/antd.js +1 -0
  245. package/es/utils/semantic.d.ts +31 -0
  246. package/es/utils/semantic.js +37 -0
  247. package/lib/components/Button/index.d.ts +49 -8
  248. package/lib/components/Button/index.js +62 -20
  249. package/lib/components/Button/index.module.scss +38 -0
  250. package/lib/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
  251. package/lib/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
  252. package/lib/components/ChainGraph/index.js +3 -1
  253. package/lib/components/ChainGraph/index.module.scss +2 -2
  254. package/lib/components/Chart/Group/index.module.scss +1 -1
  255. package/lib/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
  256. package/lib/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
  257. package/lib/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
  258. package/lib/components/Chat/ChatHistory/index.module.scss +3 -3
  259. package/lib/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
  260. package/lib/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
  261. package/lib/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
  262. package/lib/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
  263. package/lib/components/Chat/ChatInput/_components/UploadButton/index.js +1 -1
  264. package/lib/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
  265. package/lib/components/Chat/ChatInput/_utils/index.js +6 -6
  266. package/lib/components/Chat/ChatInput/index.module.scss +12 -11
  267. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.js +2 -2
  268. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
  269. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.js +3 -1
  270. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
  271. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
  272. package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
  273. package/lib/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
  274. package/lib/components/Chat/ChatList/_components/User/index.module.scss +21 -10
  275. package/lib/components/Chat/ChatList/index.js +33 -27
  276. package/lib/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
  277. package/lib/components/Checkbox/index.module.scss +23 -28
  278. package/lib/components/CodeMirror/index.module.scss +6 -6
  279. package/lib/components/Copy/index.d.ts +8 -2
  280. package/lib/components/Copy/index.js +38 -23
  281. package/lib/components/Copy/index.module.scss +5 -5
  282. package/lib/components/DatePicker/RangePicker/index.js +5 -1
  283. package/lib/components/DatePicker/RangePicker/index.module.scss +10 -1
  284. package/lib/components/DatePicker/StepPicker/index.module.scss +6 -4
  285. package/lib/components/DatePicker/index.js +14 -3
  286. package/lib/components/DatePicker/index.module.scss +2 -2
  287. package/lib/components/Descriptions/index.d.ts +6 -2
  288. package/lib/components/Descriptions/index.js +14 -12
  289. package/lib/components/Editor/index.module.scss +7 -7
  290. package/lib/components/FileCol/index.js +3 -3
  291. package/lib/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
  292. package/lib/components/FilePreview/_components/PdfPreview/index.js +9 -2
  293. package/lib/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
  294. package/lib/components/FilePreview/index.module.scss +4 -4
  295. package/lib/components/Form/DrawerForm/index.js +10 -17
  296. package/lib/components/Form/ImportForm/index.js +13 -18
  297. package/lib/components/Form/ModalForm/index.d.ts +1 -1
  298. package/lib/components/Form/ModalForm/index.js +11 -17
  299. package/lib/components/Form/index.d.ts +12 -0
  300. package/lib/components/Form/index.js +7 -1
  301. package/lib/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
  302. package/lib/components/FormItem/FormRadio/index.module.scss +11 -13
  303. package/lib/components/FormItem/FormSegmented/index.module.scss +1 -1
  304. package/lib/components/FormItem/FormSlider/index.module.scss +1 -1
  305. package/lib/components/FormItem/FormUpload/FormImage/index.js +3 -3
  306. package/lib/components/FormItem/FormUpload/index.js +3 -2
  307. package/lib/components/FormItem/FormUpload/index.module.scss +17 -17
  308. package/lib/components/FormItem/ItemContainer/index.js +4 -4
  309. package/lib/components/FormItem/ItemContainer/index.module.scss +33 -7
  310. package/lib/components/Input/Number/index.js +38 -54
  311. package/lib/components/Input/Number/index.module.scss +27 -54
  312. package/lib/components/Input/Range/index.module.scss +16 -5
  313. package/lib/components/Input/TextArea/index.module.scss +13 -13
  314. package/lib/components/Input/index.d.ts +3 -1
  315. package/lib/components/Input/index.js +2 -0
  316. package/lib/components/Input/index.module.scss +1 -1
  317. package/lib/components/Markdown/Editor/index.module.scss +4 -4
  318. package/lib/components/Markdown/Views/MermaidBlock.js +15 -1
  319. package/lib/components/Markdown/Views/blocks.module.scss +13 -13
  320. package/lib/components/Markdown/Views/index.module.scss +3 -3
  321. package/lib/components/Modal/index.d.ts +12 -2
  322. package/lib/components/Modal/index.js +30 -10
  323. package/lib/components/Modal/index.module.scss +11 -1
  324. package/lib/components/Operate/index.js +3 -1
  325. package/lib/components/Operate/index.module.scss +1 -1
  326. package/lib/components/Pagination/index.module.scss +19 -18
  327. package/lib/components/Panel/DefaultPanel/index.module.scss +3 -3
  328. package/lib/components/Panel/IframePanel/index.js +3 -1
  329. package/lib/components/Panel/IframePanel/index.module.scss +2 -2
  330. package/lib/components/Panel/ListPanel/ListModalPanel/index.d.ts +2 -2
  331. package/lib/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
  332. package/lib/components/Panel/ListPanel/_components/ColumnMgt/index.js +9 -20
  333. package/lib/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
  334. package/lib/components/Panel/ListPanel/_components/ToolBar/index.js +1 -1
  335. package/lib/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
  336. package/lib/components/Panel/ListPanel/index.d.ts +2 -2
  337. package/lib/components/Panel/ListPanel/index.module.scss +9 -9
  338. package/lib/components/Search/SearchAdvanced/index.d.ts +3 -3
  339. package/lib/components/Search/SearchCard/index.module.scss +15 -15
  340. package/lib/components/Search/SearchCollapsible/index.d.ts +3 -3
  341. package/lib/components/Search/SearchWithFilter/index.d.ts +3 -3
  342. package/lib/components/Search/SearchWithMore/index.d.ts +3 -3
  343. package/lib/components/Search/_components/ButtonGroup/index.d.ts +4 -4
  344. package/lib/components/Search/_components/ButtonGroup/index.js +2 -2
  345. package/lib/components/Search/_components/FilterDropdown/index.js +3 -1
  346. package/lib/components/Search/_hooks/useSearchCommon.d.ts +3 -3
  347. package/lib/components/Search/_types/index.d.ts +3 -3
  348. package/lib/components/Search/index.d.ts +3 -3
  349. package/lib/components/Search/index.module.scss +33 -5
  350. package/lib/components/SecondConf/index.js +14 -6
  351. package/lib/components/SecondConf/index.module.scss +3 -3
  352. package/lib/components/Select/AutoCompleteSelect/index.js +15 -5
  353. package/lib/components/Select/AutoCompleteSelect/index.module.scss +73 -132
  354. package/lib/components/Select/IconSelect/index.js +64 -57
  355. package/lib/components/Select/IconSelect/index.module.scss +4 -3
  356. package/lib/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.d.ts +1 -1
  357. package/lib/components/Select/TreeSelect/index.js +18 -7
  358. package/lib/components/Select/TreeSelect/index.module.scss +19 -44
  359. package/lib/components/Select/index.d.ts +17 -2
  360. package/lib/components/Select/index.js +22 -4
  361. package/lib/components/Select/index.module.scss +71 -131
  362. package/lib/components/Slider/index.module.scss +1 -1
  363. package/lib/components/Switch/index.module.scss +1 -1
  364. package/lib/components/TabBar/index.module.scss +11 -11
  365. package/lib/components/Table/_components/Drag/index.js +6 -2
  366. package/lib/components/Table/_hooks/useTableColumns.js +1 -1
  367. package/lib/components/Table/_utils/tableUtils.d.ts +1 -1
  368. package/lib/components/Table/_utils/tableUtils.js +4 -3
  369. package/lib/components/Table/index.d.ts +18 -2
  370. package/lib/components/Table/index.js +9 -0
  371. package/lib/components/Table/index.module.scss +14 -14
  372. package/lib/components/Tags/_components/EllipsisTag/index.js +1 -1
  373. package/lib/components/TextEllipsis/index.js +6 -4
  374. package/lib/components/Tree/index.d.ts +8 -2
  375. package/lib/components/Tree/index.js +2 -0
  376. package/lib/components/Tree/index.module.scss +6 -6
  377. package/lib/components/Upload/_components/UploadedItem/index.js +3 -3
  378. package/lib/components/Upload/_components/UploadingItem/index.js +3 -3
  379. package/lib/components/Upload/_utils/normalUpload.d.ts +1 -1
  380. package/lib/components/Upload/_utils/validateFile.js +47 -2
  381. package/lib/components/Upload/index.d.ts +8 -2
  382. package/lib/components/Upload/index.js +11 -4
  383. package/lib/config-provider/index.d.ts +34 -2
  384. package/lib/config-provider/index.js +55 -4
  385. package/lib/feedback/index.d.ts +20 -0
  386. package/lib/feedback/index.js +115 -0
  387. package/lib/hooks/index.d.ts +5 -0
  388. package/lib/hooks/index.js +21 -0
  389. package/lib/hooks/useBreakpoint.d.ts +24 -0
  390. package/lib/hooks/useBreakpoint.js +49 -0
  391. package/lib/hooks/useIsDark.d.ts +9 -0
  392. package/lib/hooks/useIsDark.js +54 -0
  393. package/lib/hooks/usePointerType.d.ts +22 -0
  394. package/lib/hooks/usePointerType.js +55 -0
  395. package/lib/index.d.ts +4 -4
  396. package/lib/index.js +78 -19
  397. package/lib/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.d.ts +10 -0
  398. package/lib/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.js +26 -0
  399. package/lib/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.d.ts +11 -0
  400. package/lib/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.js +32 -0
  401. package/lib/layout/Breadcrumb/_hooks/useBreadcrumbPath.d.ts +5 -0
  402. package/lib/layout/Breadcrumb/_hooks/useBreadcrumbPath.js +89 -0
  403. package/lib/layout/Breadcrumb/_utils/formatMenu.d.ts +9 -0
  404. package/lib/layout/Breadcrumb/_utils/formatMenu.js +31 -0
  405. package/lib/layout/Breadcrumb/_utils/formatRoutes.d.ts +9 -0
  406. package/lib/layout/Breadcrumb/_utils/formatRoutes.js +67 -0
  407. package/lib/layout/Breadcrumb/_utils/pathMatch.d.ts +8 -0
  408. package/lib/layout/Breadcrumb/_utils/pathMatch.js +47 -0
  409. package/lib/layout/Breadcrumb/index.d.ts +19 -0
  410. package/lib/layout/Breadcrumb/index.js +96 -0
  411. package/lib/layout/Breadcrumb/index.module.scss +15 -0
  412. package/lib/layout/Header/index.d.ts +39 -0
  413. package/lib/layout/Header/index.js +172 -0
  414. package/lib/layout/Header/index.module.scss +215 -0
  415. package/lib/layout/I18n/I18nStore.d.ts +29 -0
  416. package/lib/layout/I18n/I18nStore.js +82 -0
  417. package/lib/layout/I18n/index.d.ts +14 -0
  418. package/lib/layout/I18n/index.js +45 -0
  419. package/lib/layout/I18n/locales/en-US.d.ts +2 -0
  420. package/lib/layout/I18n/locales/en-US.js +21 -0
  421. package/lib/layout/I18n/locales/zh-CN.d.ts +2 -0
  422. package/lib/layout/I18n/locales/zh-CN.js +21 -0
  423. package/lib/layout/Menu/_components/SecondaryHeader/index.d.ts +22 -0
  424. package/lib/layout/Menu/_components/SecondaryHeader/index.js +49 -0
  425. package/lib/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
  426. package/lib/layout/Menu/_hooks/useMenuPath.d.ts +17 -0
  427. package/lib/layout/Menu/_hooks/useMenuPath.js +75 -0
  428. package/lib/layout/Menu/_hooks/useOnlyLvOneMenu.d.ts +13 -0
  429. package/lib/layout/Menu/_hooks/useOnlyLvOneMenu.js +31 -0
  430. package/lib/layout/Menu/_utils/formatMenu.d.ts +10 -0
  431. package/lib/layout/Menu/_utils/formatMenu.js +55 -0
  432. package/lib/layout/Menu/_utils/pathMatch.d.ts +8 -0
  433. package/lib/layout/Menu/_utils/pathMatch.js +44 -0
  434. package/lib/layout/Menu/_utils/setActiveIcon.d.ts +7 -0
  435. package/lib/layout/Menu/_utils/setActiveIcon.js +27 -0
  436. package/lib/layout/Menu/index.d.ts +34 -0
  437. package/lib/layout/Menu/index.js +158 -0
  438. package/lib/layout/Menu/index.module.scss +50 -0
  439. package/lib/layout/NavTabBar/_components/SortableTab/index.d.ts +9 -0
  440. package/lib/layout/NavTabBar/_components/SortableTab/index.js +39 -0
  441. package/lib/layout/NavTabBar/_components/TabContextMenu/index.d.ts +20 -0
  442. package/lib/layout/NavTabBar/_components/TabContextMenu/index.js +129 -0
  443. package/lib/layout/NavTabBar/_components/TabDragOverlay/index.d.ts +20 -0
  444. package/lib/layout/NavTabBar/_components/TabDragOverlay/index.js +54 -0
  445. package/lib/layout/NavTabBar/_components/TabLabel/index.d.ts +22 -0
  446. package/lib/layout/NavTabBar/_components/TabLabel/index.js +68 -0
  447. package/lib/layout/NavTabBar/_hooks/useDropTabKey.d.ts +5 -0
  448. package/lib/layout/NavTabBar/_hooks/useDropTabKey.js +32 -0
  449. package/lib/layout/NavTabBar/_hooks/useTabContextMenu.d.ts +8 -0
  450. package/lib/layout/NavTabBar/_hooks/useTabContextMenu.js +28 -0
  451. package/lib/layout/NavTabBar/_hooks/useTabPath.d.ts +16 -0
  452. package/lib/layout/NavTabBar/_hooks/useTabPath.js +107 -0
  453. package/lib/layout/NavTabBar/_hooks/useTabTitle.d.ts +5 -0
  454. package/lib/layout/NavTabBar/_hooks/useTabTitle.js +32 -0
  455. package/lib/layout/NavTabBar/_utils/formatNavTabBar.d.ts +9 -0
  456. package/lib/layout/NavTabBar/_utils/formatNavTabBar.js +49 -0
  457. package/lib/layout/NavTabBar/_utils/pathMatch.d.ts +8 -0
  458. package/lib/layout/NavTabBar/_utils/pathMatch.js +37 -0
  459. package/lib/layout/NavTabBar/_utils/tabActions.d.ts +21 -0
  460. package/lib/layout/NavTabBar/_utils/tabActions.js +93 -0
  461. package/lib/layout/NavTabBar/index.d.ts +21 -0
  462. package/lib/layout/NavTabBar/index.js +206 -0
  463. package/lib/layout/NavTabBar/index.module.scss +179 -0
  464. package/lib/layout/Theme/ThemeStore.d.ts +18 -0
  465. package/lib/layout/Theme/ThemeStore.js +63 -0
  466. package/lib/layout/Theme/index.d.ts +30 -0
  467. package/lib/layout/Theme/index.js +100 -0
  468. package/lib/layout/Theme/index.module.scss +6 -0
  469. package/lib/layout/_hooks/useDropTab.d.ts +6 -0
  470. package/lib/layout/_hooks/useDropTab.js +21 -0
  471. package/lib/layout/_hooks/useReload.d.ts +6 -0
  472. package/lib/layout/_hooks/useReload.js +18 -0
  473. package/lib/layout/_hooks/useSetTabTitle.d.ts +6 -0
  474. package/lib/layout/_hooks/useSetTabTitle.js +18 -0
  475. package/lib/layout/_utils/storage.d.ts +6 -0
  476. package/lib/layout/_utils/storage.js +39 -0
  477. package/lib/layout/index.d.ts +43 -0
  478. package/lib/layout/index.js +95 -0
  479. package/lib/layout/types.d.ts +51 -0
  480. package/lib/layout/types.js +5 -0
  481. package/lib/request/index.js +5 -1
  482. package/lib/styles/_responsive.scss +53 -0
  483. package/lib/styles/antd-overload.scss +77 -21
  484. package/lib/styles/tokens.d.ts +113 -13
  485. package/lib/styles/tokens.js +157 -30
  486. package/lib/styles/tokens.json +82 -0
  487. package/lib/styles/tokens.scss +99 -52
  488. package/lib/types/antd.d.ts +35 -0
  489. package/lib/types/antd.js +5 -0
  490. package/lib/utils/semantic.d.ts +31 -0
  491. package/lib/utils/semantic.js +40 -0
  492. package/package.json +28 -22
  493. package/src/components/Button/index.md +54 -10
  494. package/src/components/Button/index.module.scss +38 -0
  495. package/src/components/Button/index.tsx +107 -51
  496. package/src/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
  497. package/src/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
  498. package/src/components/ChainGraph/index.module.scss +2 -2
  499. package/src/components/ChainGraph/index.tsx +1 -1
  500. package/src/components/Chart/Group/index.module.scss +1 -1
  501. package/src/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
  502. package/src/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
  503. package/src/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
  504. package/src/components/Chat/ChatHistory/index.module.scss +3 -3
  505. package/src/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
  506. package/src/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
  507. package/src/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
  508. package/src/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
  509. package/src/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
  510. package/src/components/Chat/ChatInput/_components/UploadButton/index.tsx +1 -1
  511. package/src/components/Chat/ChatInput/_utils/index.ts +1 -1
  512. package/src/components/Chat/ChatInput/index.module.scss +12 -11
  513. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
  514. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.tsx +1 -1
  515. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
  516. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.tsx +1 -1
  517. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
  518. package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
  519. package/src/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
  520. package/src/components/Chat/ChatList/_components/User/index.module.scss +21 -10
  521. package/src/components/Chat/ChatList/index.tsx +5 -2
  522. package/src/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
  523. package/src/components/Checkbox/index.module.scss +23 -28
  524. package/src/components/CodeMirror/index.module.scss +6 -6
  525. package/src/components/Copy/index.module.scss +5 -5
  526. package/src/components/Copy/index.tsx +41 -25
  527. package/src/components/DatePicker/RangePicker/index.module.scss +10 -1
  528. package/src/components/DatePicker/RangePicker/index.tsx +5 -3
  529. package/src/components/DatePicker/StepPicker/index.module.scss +6 -4
  530. package/src/components/DatePicker/index.module.scss +2 -2
  531. package/src/components/DatePicker/index.tsx +11 -3
  532. package/src/components/Descriptions/index.md +8 -0
  533. package/src/components/Descriptions/index.tsx +21 -14
  534. package/src/components/Editor/index.module.scss +7 -7
  535. package/src/components/FileCol/index.tsx +4 -2
  536. package/src/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
  537. package/src/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
  538. package/src/components/FilePreview/_components/PdfPreview/index.tsx +8 -2
  539. package/src/components/FilePreview/index.module.scss +4 -4
  540. package/src/components/Form/DrawerForm/index.tsx +10 -11
  541. package/src/components/Form/ImportForm/index.tsx +11 -12
  542. package/src/components/Form/ModalForm/index.tsx +10 -12
  543. package/src/components/Form/index.md +18 -0
  544. package/src/components/Form/index.tsx +18 -0
  545. package/src/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
  546. package/src/components/FormItem/FormRadio/index.module.scss +11 -13
  547. package/src/components/FormItem/FormSegmented/index.module.scss +1 -1
  548. package/src/components/FormItem/FormSlider/index.module.scss +1 -1
  549. package/src/components/FormItem/FormUpload/FormImage/index.tsx +2 -1
  550. package/src/components/FormItem/FormUpload/index.module.scss +17 -17
  551. package/src/components/FormItem/FormUpload/index.tsx +2 -1
  552. package/src/components/FormItem/ItemContainer/index.module.scss +33 -7
  553. package/src/components/FormItem/ItemContainer/index.tsx +3 -3
  554. package/src/components/Input/Number/index.module.scss +27 -54
  555. package/src/components/Input/Number/index.tsx +49 -65
  556. package/src/components/Input/Range/index.module.scss +16 -5
  557. package/src/components/Input/TextArea/index.module.scss +13 -13
  558. package/src/components/Input/index.md +14 -0
  559. package/src/components/Input/index.module.scss +1 -1
  560. package/src/components/Input/index.tsx +4 -0
  561. package/src/components/Markdown/Editor/index.module.scss +4 -4
  562. package/src/components/Markdown/Views/MermaidBlock.tsx +15 -1
  563. package/src/components/Markdown/Views/blocks.module.scss +13 -13
  564. package/src/components/Markdown/Views/index.module.scss +3 -3
  565. package/src/components/Markdown/index.md +22 -0
  566. package/src/components/Modal/index.md +22 -1
  567. package/src/components/Modal/index.module.scss +11 -1
  568. package/src/components/Modal/index.tsx +46 -13
  569. package/src/components/Operate/index.module.scss +1 -1
  570. package/src/components/Operate/index.tsx +1 -1
  571. package/src/components/Pagination/index.md +107 -0
  572. package/src/components/Pagination/index.module.scss +19 -18
  573. package/src/components/Pagination/index.tsx +2 -2
  574. package/src/components/Panel/DefaultPanel/index.module.scss +3 -3
  575. package/src/components/Panel/IframePanel/index.module.scss +2 -2
  576. package/src/components/Panel/IframePanel/index.tsx +5 -1
  577. package/src/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
  578. package/src/components/Panel/ListPanel/ListModalPanel/index.tsx +2 -2
  579. package/src/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
  580. package/src/components/Panel/ListPanel/_components/ColumnMgt/index.tsx +7 -11
  581. package/src/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
  582. package/src/components/Panel/ListPanel/_components/ToolBar/index.tsx +2 -2
  583. package/src/components/Panel/ListPanel/index.module.scss +9 -9
  584. package/src/components/Panel/ListPanel/index.tsx +2 -2
  585. package/src/components/Panel/index.md +1 -1
  586. package/src/components/Search/SearchAdvanced/index.tsx +3 -3
  587. package/src/components/Search/SearchCard/index.module.scss +15 -15
  588. package/src/components/Search/SearchCollapsible/index.tsx +3 -3
  589. package/src/components/Search/SearchWithFilter/index.tsx +3 -3
  590. package/src/components/Search/SearchWithMore/index.tsx +3 -3
  591. package/src/components/Search/_components/ButtonGroup/index.tsx +9 -11
  592. package/src/components/Search/_components/FilterDropdown/index.tsx +1 -1
  593. package/src/components/Search/_hooks/useSearchCommon.ts +4 -4
  594. package/src/components/Search/_types/index.ts +3 -3
  595. package/src/components/Search/index.md +2 -2
  596. package/src/components/Search/index.module.scss +33 -5
  597. package/src/components/Search/index.tsx +3 -3
  598. package/src/components/SecondConf/index.md +1 -1
  599. package/src/components/SecondConf/index.module.scss +3 -3
  600. package/src/components/SecondConf/index.tsx +11 -7
  601. package/src/components/Select/AutoCompleteSelect/index.module.scss +73 -132
  602. package/src/components/Select/AutoCompleteSelect/index.tsx +13 -7
  603. package/src/components/Select/IconSelect/index.module.scss +4 -3
  604. package/src/components/Select/IconSelect/index.tsx +7 -9
  605. package/src/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.ts +4 -1
  606. package/src/components/Select/TreeSelect/index.module.scss +19 -44
  607. package/src/components/Select/TreeSelect/index.tsx +16 -8
  608. package/src/components/Select/index.md +12 -0
  609. package/src/components/Select/index.module.scss +71 -131
  610. package/src/components/Select/index.tsx +38 -10
  611. package/src/components/Slider/index.module.scss +1 -1
  612. package/src/components/Switch/index.module.scss +1 -1
  613. package/src/components/TabBar/index.module.scss +11 -11
  614. package/src/components/Table/_components/Drag/index.tsx +3 -2
  615. package/src/components/Table/_hooks/useTableColumns.tsx +1 -1
  616. package/src/components/Table/_utils/tableUtils.ts +3 -2
  617. package/src/components/Table/index.md +16 -0
  618. package/src/components/Table/index.module.scss +14 -14
  619. package/src/components/Table/index.tsx +27 -1
  620. package/src/components/Tags/_components/EllipsisTag/index.tsx +1 -1
  621. package/src/components/TextEllipsis/index.tsx +6 -4
  622. package/src/components/Tree/index.md +9 -0
  623. package/src/components/Tree/index.module.scss +6 -6
  624. package/src/components/Tree/index.tsx +12 -2
  625. package/src/components/Upload/_components/UploadedItem/index.tsx +2 -2
  626. package/src/components/Upload/_components/UploadingItem/index.tsx +2 -2
  627. package/src/components/Upload/_utils/normalUpload.ts +1 -1
  628. package/src/components/Upload/_utils/validateFile.ts +55 -2
  629. package/src/components/Upload/index.md +9 -0
  630. package/src/components/Upload/index.tsx +22 -7
  631. package/src/config-provider/index.tsx +84 -4
  632. package/src/feedback/index.tsx +141 -0
  633. package/src/hooks/index.ts +5 -0
  634. package/src/hooks/useBreakpoint.ts +62 -0
  635. package/src/hooks/useIsDark.ts +64 -0
  636. package/src/hooks/usePointerType.ts +59 -0
  637. package/src/index.ts +37 -5
  638. package/src/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.tsx +26 -0
  639. package/src/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.tsx +32 -0
  640. package/src/layout/Breadcrumb/_hooks/useBreadcrumbPath.ts +111 -0
  641. package/src/layout/Breadcrumb/_utils/formatMenu.ts +30 -0
  642. package/src/layout/Breadcrumb/_utils/formatRoutes.ts +71 -0
  643. package/src/layout/Breadcrumb/_utils/pathMatch.ts +52 -0
  644. package/src/layout/Breadcrumb/index.md +37 -0
  645. package/src/layout/Breadcrumb/index.module.scss +15 -0
  646. package/src/layout/Breadcrumb/index.tsx +103 -0
  647. package/src/layout/Header/index.md +105 -0
  648. package/src/layout/Header/index.module.scss +215 -0
  649. package/src/layout/Header/index.tsx +198 -0
  650. package/src/layout/I18n/I18nStore.ts +98 -0
  651. package/src/layout/I18n/index.md +45 -0
  652. package/src/layout/I18n/index.tsx +44 -0
  653. package/src/layout/I18n/locales/en-US.ts +16 -0
  654. package/src/layout/I18n/locales/zh-CN.ts +16 -0
  655. package/src/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
  656. package/src/layout/Menu/_components/SecondaryHeader/index.tsx +61 -0
  657. package/src/layout/Menu/_hooks/useMenuPath.ts +81 -0
  658. package/src/layout/Menu/_hooks/useOnlyLvOneMenu.ts +44 -0
  659. package/src/layout/Menu/_utils/formatMenu.ts +57 -0
  660. package/src/layout/Menu/_utils/pathMatch.ts +48 -0
  661. package/src/layout/Menu/_utils/setActiveIcon.ts +23 -0
  662. package/src/layout/Menu/index.md +43 -0
  663. package/src/layout/Menu/index.module.scss +50 -0
  664. package/src/layout/Menu/index.tsx +208 -0
  665. package/src/layout/NavTabBar/_components/SortableTab/index.tsx +40 -0
  666. package/src/layout/NavTabBar/_components/TabContextMenu/index.tsx +157 -0
  667. package/src/layout/NavTabBar/_components/TabDragOverlay/index.tsx +69 -0
  668. package/src/layout/NavTabBar/_components/TabLabel/index.tsx +84 -0
  669. package/src/layout/NavTabBar/_hooks/useDropTabKey.ts +27 -0
  670. package/src/layout/NavTabBar/_hooks/useTabContextMenu.ts +23 -0
  671. package/src/layout/NavTabBar/_hooks/useTabPath.ts +118 -0
  672. package/src/layout/NavTabBar/_hooks/useTabTitle.ts +28 -0
  673. package/src/layout/NavTabBar/_utils/formatNavTabBar.ts +50 -0
  674. package/src/layout/NavTabBar/_utils/pathMatch.ts +37 -0
  675. package/src/layout/NavTabBar/_utils/tabActions.ts +131 -0
  676. package/src/layout/NavTabBar/index.md +76 -0
  677. package/src/layout/NavTabBar/index.module.scss +179 -0
  678. package/src/layout/NavTabBar/index.tsx +236 -0
  679. package/src/layout/Theme/ThemeStore.ts +70 -0
  680. package/src/layout/Theme/index.md +48 -0
  681. package/src/layout/Theme/index.module.scss +6 -0
  682. package/src/layout/Theme/index.tsx +105 -0
  683. package/src/layout/_hooks/useDropTab.ts +23 -0
  684. package/src/layout/_hooks/useReload.ts +19 -0
  685. package/src/layout/_hooks/useSetTabTitle.ts +19 -0
  686. package/src/layout/_utils/storage.ts +34 -0
  687. package/src/layout/index.ts +66 -0
  688. package/src/layout/types.ts +58 -0
  689. package/src/request/index.ts +8 -1
  690. package/src/styles/_responsive.scss +53 -0
  691. package/src/styles/antd-overload.scss +77 -21
  692. package/src/styles/tokens.json +82 -0
  693. package/src/styles/tokens.scss +99 -52
  694. package/src/styles/tokens.ts +198 -33
  695. package/src/types/antd.ts +46 -0
  696. package/src/utils/semantic.ts +45 -0
  697. package/es/components/Button/ChakraButton/index.d.ts +0 -11
  698. package/es/components/Button/ChakraButton/index.js +0 -66
  699. package/es/components/Button/ChakraButton/index.module.scss +0 -20
  700. package/es/components/ChakraRoot/index.d.ts +0 -6
  701. package/es/components/ChakraRoot/index.js +0 -42
  702. package/lib/components/Button/ChakraButton/index.d.ts +0 -11
  703. package/lib/components/Button/ChakraButton/index.js +0 -70
  704. package/lib/components/Button/ChakraButton/index.module.scss +0 -20
  705. package/lib/components/ChakraRoot/index.d.ts +0 -6
  706. package/lib/components/ChakraRoot/index.js +0 -46
  707. package/src/components/Button/ChakraButton/index.module.scss +0 -20
  708. package/src/components/Button/ChakraButton/index.tsx +0 -83
  709. package/src/components/ChakraRoot/index.tsx +0 -43
@@ -0,0 +1,236 @@
1
+ import { Tabs as AntdTabs, Tooltip } from "antd";
2
+ import React, { ReactNode, useCallback, useMemo, useState } from "react";
3
+ import { useNavigate } from "react-router";
4
+ import type { DragEndEvent, DragStartEvent } from "@dnd-kit/core";
5
+ import {
6
+ closestCenter,
7
+ DndContext,
8
+ PointerSensor,
9
+ useSensor,
10
+ } from "@dnd-kit/core";
11
+ import {
12
+ restrictToHorizontalAxis,
13
+ restrictToParentElement,
14
+ } from "@dnd-kit/modifiers";
15
+ import {
16
+ arrayMove,
17
+ horizontalListSortingStrategy,
18
+ SortableContext,
19
+ } from "@dnd-kit/sortable";
20
+
21
+ import { RouteType } from "../types";
22
+ import styles from "./index.module.scss";
23
+ import { useAliveController } from "react-activation";
24
+ import useReload from "../_hooks/useReload";
25
+ import { formatNavTabBar } from "./_utils/formatNavTabBar";
26
+ import { useTabPath } from "./_hooks/useTabPath";
27
+ import { useTabContextMenu } from "./_hooks/useTabContextMenu";
28
+ import { useDropTabKey } from "./_hooks/useDropTabKey";
29
+ import { useTabTitle } from "./_hooks/useTabTitle";
30
+ import TabLabel from "./_components/TabLabel";
31
+ import DraggableTabNode from "./_components/SortableTab";
32
+ import TabDragOverlay from "./_components/TabDragOverlay";
33
+ import { isLegacyHasSelectorBrowser } from "../../utils/cssSupports";
34
+ import Button from "../../components/Button";
35
+ import Icon from "../../components/Icon";
36
+
37
+ export interface TabType {
38
+ label: ReactNode;
39
+ key: string;
40
+ element?: React.ReactNode;
41
+ children?: TabType[];
42
+ path?: string;
43
+ name?: ReactNode;
44
+ affix?: boolean;
45
+ icon?: ReactNode;
46
+ }
47
+
48
+ export interface NavTabBarProps {
49
+ router: RouteType[];
50
+ affixRouter?: string[];
51
+ basePath?: string;
52
+ /** 页签栏最前面的「刷新当前页」按钮 */
53
+ showReload?: boolean;
54
+ }
55
+
56
+ const NavTabBar: React.FC<NavTabBarProps> = (props) => {
57
+ const {
58
+ router,
59
+ affixRouter = [],
60
+ basePath = "/",
61
+ showReload = true,
62
+ } = props;
63
+ const navigate = useNavigate();
64
+ const { drop, refresh } = useAliveController();
65
+ const onReload = useReload();
66
+ const legacyHasSelector = isLegacyHasSelectorBrowser();
67
+
68
+ const items = useMemo(() => {
69
+ return formatNavTabBar(router);
70
+ }, [router]);
71
+
72
+ const { tabKey, openKeys, setOpenkeys } = useTabPath({
73
+ items,
74
+ affixRouter,
75
+ });
76
+
77
+ const { open, setOpen } = useTabContextMenu();
78
+
79
+ useDropTabKey(setOpenkeys);
80
+ useTabTitle(setOpenkeys);
81
+
82
+ // ID of the tab currently being dragged
83
+ const [activeId, setActiveId] = useState<string | null>(null);
84
+
85
+ // Configure the drag sensor with a 10px activation distance to avoid accidental drags
86
+ const sensor = useSensor(PointerSensor, {
87
+ activationConstraint: { distance: 10 },
88
+ });
89
+
90
+ // Handle the drag start event
91
+ const onDragStart = (event: DragStartEvent) => {
92
+ setActiveId(String(event.active.id));
93
+ };
94
+
95
+ // Handle the drag end event
96
+ const onDragEnd = ({ active, over }: DragEndEvent) => {
97
+ if (active.id !== over?.id) {
98
+ setOpenkeys((prev) => {
99
+ const activeIndex = prev.findIndex((i) => i.key === active.id);
100
+ const overIndex = prev.findIndex((i) => i.key === over?.id);
101
+ return arrayMove(prev, activeIndex, overIndex);
102
+ });
103
+ }
104
+ setActiveId(null);
105
+ };
106
+
107
+ // Handle the drag cancel event
108
+ const onDragCancel = () => {
109
+ setActiveId(null);
110
+ };
111
+
112
+ /**
113
+ * 刷新当前页。走的是和右键菜单「重新加载」完全相同的两步:`onReload` 通知页面自己重挂,
114
+ * `refresh` 让 react-activation 丢掉这份缓存。少调其中任何一个,都会出现「看上去刷新了、
115
+ * 实际还是那棵旧组件树」。
116
+ *
117
+ * key 要去掉 query —— 缓存是按路径存的,带上 `?a=1` 会找不到对应的那份。
118
+ */
119
+ const reloadCurrent = useCallback(() => {
120
+ const key = tabKey?.split("?")[0];
121
+ if (!key) return;
122
+ onReload(key);
123
+ refresh(key);
124
+ }, [tabKey, onReload, refresh]);
125
+
126
+ return (
127
+ <AntdTabs
128
+ className={styles.NavTabBar}
129
+ items={openKeys?.map((item, idx) => {
130
+ const closable = !(affixRouter.includes(item.key) || item.affix);
131
+
132
+ return {
133
+ label: (
134
+ <TabLabel
135
+ item={item}
136
+ index={idx}
137
+ openKeys={openKeys}
138
+ basePath={basePath}
139
+ affixRouter={affixRouter}
140
+ open={open}
141
+ onReload={onReload}
142
+ refresh={refresh}
143
+ drop={drop}
144
+ setOpenkeys={setOpenkeys}
145
+ setOpen={setOpen}
146
+ navigate={navigate}
147
+ className={
148
+ legacyHasSelector && closable
149
+ ? styles.legacyClosableTabLabel
150
+ : undefined
151
+ }
152
+ />
153
+ ),
154
+ key: item.key,
155
+ closeIcon: closable ? undefined : false,
156
+ };
157
+ })}
158
+ activeKey={tabKey}
159
+ tabBarExtraContent={
160
+ showReload
161
+ ? {
162
+ left: (
163
+ // 不用 Button 的 title —— 本库的 Button 把 title 当作 children 的兜底
164
+ // (children ?? title),传了会把文案画到按钮里,而不是变成悬浮提示
165
+ <Tooltip title="刷新当前页">
166
+ <Button
167
+ className={styles.reload}
168
+ type="text"
169
+ size="small"
170
+ aria-label="刷新当前页"
171
+ icon={<Icon icon="ep:refresh" />}
172
+ onClick={reloadCurrent}
173
+ />
174
+ </Tooltip>
175
+ ),
176
+ }
177
+ : undefined
178
+ }
179
+ hideAdd
180
+ type="editable-card"
181
+ onEdit={(key, action) => {
182
+ if (action === "remove") {
183
+ drop((key as string)?.split("?")[0] || "");
184
+ // Find the index of the tab being closed
185
+ const currentIndex = openKeys.findIndex((item) => item.key === key);
186
+ const newOpenKeys = openKeys.filter((item) => item.key !== key);
187
+ setOpenkeys(newOpenKeys);
188
+ setOpen("");
189
+ if (key === tabKey) {
190
+ // If the active tab is closed, select the previous tab; fall back to the first one
191
+ const targetIndex = currentIndex > 0 ? currentIndex - 1 : 0;
192
+ navigate(newOpenKeys[targetIndex]?.key || basePath);
193
+ }
194
+ }
195
+ }}
196
+ size="small"
197
+ renderTabBar={(tabBarProps, DefaultTabBar) => (
198
+ <DndContext
199
+ sensors={[sensor]}
200
+ onDragStart={onDragStart}
201
+ onDragEnd={onDragEnd}
202
+ onDragCancel={onDragCancel}
203
+ collisionDetection={closestCenter}
204
+ modifiers={[restrictToHorizontalAxis, restrictToParentElement]}
205
+ >
206
+ <SortableContext
207
+ items={openKeys.map((i) => i.key)}
208
+ strategy={horizontalListSortingStrategy}
209
+ >
210
+ <DefaultTabBar {...tabBarProps}>
211
+ {(node) => (
212
+ <DraggableTabNode {...node.props} key={node.key}>
213
+ {node}
214
+ </DraggableTabNode>
215
+ )}
216
+ </DefaultTabBar>
217
+ </SortableContext>
218
+ <TabDragOverlay
219
+ activeId={activeId}
220
+ openKeys={openKeys}
221
+ basePath={basePath}
222
+ affixRouter={affixRouter}
223
+ open={open}
224
+ onReload={onReload}
225
+ refresh={refresh}
226
+ drop={drop}
227
+ setOpenkeys={setOpenkeys}
228
+ setOpen={setOpen}
229
+ navigate={navigate}
230
+ />
231
+ </DndContext>
232
+ )}
233
+ />
234
+ );
235
+ };
236
+ export default NavTabBar;
@@ -0,0 +1,70 @@
1
+ import { readStorage, writeStorage, STORAGE_KEY } from "../_utils/storage";
2
+ import { makeAutoObservable } from "mobx";
3
+
4
+ export type Layout = "left" | "top" | "mixed";
5
+
6
+ export type Theme = "light" | "dark";
7
+
8
+ export type HeaderTheme = "light" | "dark" | "theme";
9
+
10
+ // Three appearance modes (light / dark / follow system)
11
+ export type Appearance = "light" | "dark" | "system";
12
+
13
+ class ThemeStore {
14
+ // Appearance mode selected by the user
15
+ get appearance() {
16
+ return this._appearance;
17
+ }
18
+ private _appearance: Appearance = "system";
19
+
20
+ // Whether the system is currently dark (takes effect when appearance=system)
21
+ private _systemDark = false;
22
+
23
+ // Resolved actual dark-mode state
24
+ get isDark(): boolean {
25
+ if (this._appearance === "system") return this._systemDark;
26
+ return this._appearance === "dark";
27
+ }
28
+
29
+ // Fixed left layout; switching is no longer offered
30
+ get layout(): Layout {
31
+ return "left";
32
+ }
33
+
34
+ // Nav light/dark follows the appearance
35
+ get headerTheme(): HeaderTheme {
36
+ return this.isDark ? "dark" : "light";
37
+ }
38
+
39
+ // Content theme follows the appearance
40
+ get theme(): Theme {
41
+ return this.isDark ? "dark" : "light";
42
+ }
43
+
44
+ constructor() {
45
+ makeAutoObservable(this);
46
+
47
+ const cached = readStorage(STORAGE_KEY.APPEARANCE) as Appearance | undefined;
48
+ if (cached === "light" || cached === "dark" || cached === "system") {
49
+ this._appearance = cached;
50
+ }
51
+
52
+ // Listen for system color-scheme changes, following in real time when appearance=system
53
+ if (typeof window !== "undefined" && window.matchMedia) {
54
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
55
+ this._systemDark = mq.matches;
56
+ mq.addEventListener("change", (e) => this._setSystemDark(e.matches));
57
+ }
58
+ }
59
+
60
+ private _setSystemDark = (v: boolean) => {
61
+ this._systemDark = v;
62
+ };
63
+
64
+ public setAppearance = (appearance: Appearance) => {
65
+ this._appearance = appearance;
66
+ writeStorage(STORAGE_KEY.APPEARANCE, appearance);
67
+ };
68
+ }
69
+
70
+ export default new ThemeStore();
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: Theme 外观
3
+ order: 5
4
+ ---
5
+
6
+ # Theme 外观
7
+
8
+ 外观三态(浅色 / 深色 / 跟随系统)与导航区专属配色。
9
+
10
+ ## 引入
11
+
12
+ ```ts
13
+ import Layout from "@hsu-react/ui/es/layout";
14
+
15
+ <Layout.Theme>{children}</Layout.Theme>;
16
+ ```
17
+
18
+ ## 与 ConfigProvider 的分工
19
+
20
+ 这两个组件**不是二选一,也不重复**:
21
+
22
+ - [`ConfigProvider`](/components/config-provider) 提供**全局主题** —— 色板、圆角、字号、控件高度、明暗算法、focus ring,全部从设计令牌产出
23
+ - `Layout.Theme` 只做两件它独有的事:
24
+ 1. 写 `html[data-theme]`。令牌的 CSS 变量与 `useIsDark` 都监听这个属性,但没有别的地方写它 —— 外观三态就落在这儿
25
+ 2. 叠加导航区配色。菜单选中态的胶囊、深色侧栏的渐变,这些是布局特有的,通用令牌覆盖不到。选中态的颜色取**当前生效的主色**(antd `useToken` 读到的 `colorPrimary`),所以在 `ConfigProvider` 上换 `primaryColor`,菜单会跟着换
26
+
27
+ 所以顺序是 `ConfigProvider` 在外、`Layout.Theme` 在内(antd 的嵌套主题规则是内层胜)。
28
+
29
+ ## API
30
+
31
+ | 属性 | 说明 | 类型 | 默认值 |
32
+ | --- | --- | --- | --- |
33
+ | children | 子节点 | `ReactNode` | - |
34
+ | navDarkColors | 深色导航渐变的两端色 | `{ top: string; bottom: string }` | `{ top: "#1f1f1f", bottom: "#141414" }` |
35
+
36
+ ## ThemeStore
37
+
38
+ 外观状态是一个 mobx store,应用侧可直接读写(`Layout.Header` 的外观切换器用的就是它):
39
+
40
+ ```ts | pure
41
+ import Layout from "@hsu-react/ui/es/layout";
42
+
43
+ Layout.ThemeStore.appearance; // "light" | "dark" | "system"
44
+ Layout.ThemeStore.isDark; // 解析 system 之后的实际明暗
45
+ Layout.ThemeStore.setAppearance("dark"); // 切换,并写入 localStorage
46
+ ```
47
+
48
+ `appearance` 持久化在 `localStorage["hsu-ui:appearance"]`;选了 `system` 时会跟随 `prefers-color-scheme` 实时变化。
@@ -0,0 +1,6 @@
1
+ .theme {
2
+ width: 100vw;
3
+ height: 100vh;
4
+
5
+ overflow: hidden;
6
+ }
@@ -0,0 +1,105 @@
1
+ import React, { useEffect, useMemo } from "react";
2
+ import { ConfigProvider as AntdConfigProvider, theme as antdTheme } from "antd";
3
+ import { observer } from "mobx-react-lite";
4
+ import classNames from "classnames";
5
+
6
+ import styles from "./index.module.scss";
7
+ import ThemeStore from "./ThemeStore";
8
+ import { lightTokens, darkTokens, withAlpha } from "../../styles/tokens";
9
+
10
+ export interface ThemeProps {
11
+ children?: React.ReactNode;
12
+ /** 深色导航渐变的两端色,不传用内置值 */
13
+ navDarkColors?: { top: string; bottom: string };
14
+ }
15
+
16
+ /**
17
+ * 外观控制器 + 布局专属配色。
18
+ *
19
+ * 这里刻意**不**做全局主题 —— 色板、圆角、字号、控件高度、明暗算法、focus ring 都由本库的
20
+ * `ConfigProvider` 从设计令牌统一产出。这个组件只负责两件它独有的事:
21
+ *
22
+ * 1. **写 `html[data-theme]`**。令牌的 CSS 变量与 `useIsDark` 都监听这个属性,但**没有人写它** ——
23
+ * 这是外观三态(light / dark / 跟随系统)落地的地方,也是这个组件存在的主要理由。
24
+ * 2. **侧栏与导航的配色**。菜单选中态的胶囊、深色导航的渐变,这些是布局特有的,
25
+ * 通用令牌覆盖不到,用一层就近的 antd ConfigProvider 叠加(antd 的嵌套规则:内层胜)。
26
+ *
27
+ * 移植时去掉的(本库已有,留着会重复甚至打架):
28
+ * - 自己包一层 antd ConfigProvider 做全局主题、切 darkAlgorithm -> ConfigProvider
29
+ * - hexToRgba -> styles/tokens 的 withAlpha
30
+ * - 自存一份主题色(原来固定是青色) -> antd useToken 里当前生效的 colorPrimary
31
+ * - matchMedia 监听系统深色 -> useIsDark
32
+ * - borderRadius / colorBorder / Table / Card / Button / Input 等成套 token 覆盖 -> toAntdTheme
33
+ * - 在包裹元素上内联重定义 --cf-*:那会盖掉 tokens.scss 生成的值,属于主动帮倒忙
34
+ */
35
+ const Theme: React.FC<ThemeProps> = observer((props) => {
36
+ const { children, navDarkColors } = props;
37
+ const { isDark } = ThemeStore;
38
+
39
+ const t = isDark ? darkTokens : lightTokens;
40
+
41
+ // 主色取**当前生效**的那个,而不是自己再存一份 —— 消费方在 ConfigProvider 上换了
42
+ // primaryColor,导航的选中态要跟着换,否则菜单会是一个和全站无关的颜色。
43
+ const { token } = antdTheme.useToken();
44
+ const primaryColor = token.colorPrimary;
45
+
46
+ // 写 data-theme:CSS 变量与 useIsDark 都看它。
47
+ useEffect(() => {
48
+ document.documentElement.dataset.theme = isDark ? "dark" : "light";
49
+ }, [isDark]);
50
+
51
+ const themeConfig = useMemo(
52
+ () => ({
53
+ components: {
54
+ Layout: {
55
+ headerBg: t.surface,
56
+ siderBg: t.surface,
57
+ },
58
+ Menu: {
59
+ // 背景透明,好让导航的渐变透出来;选中态是一颗圆角胶囊
60
+ darkItemBg: "transparent",
61
+ darkSubMenuItemBg: "transparent",
62
+ darkPopupBg: t.surface,
63
+ darkItemColor: "rgba(255, 255, 255, 0.82)",
64
+ darkItemHoverColor: "#ffffff",
65
+ darkItemHoverBg: "rgba(255, 255, 255, 0.14)",
66
+ darkItemSelectedBg: withAlpha(primaryColor, 0.16),
67
+ darkItemSelectedColor: primaryColor,
68
+ itemSelectedBg: withAlpha(primaryColor, 0.12),
69
+ itemSelectedColor: primaryColor,
70
+ itemActiveBg: withAlpha(primaryColor, 0.12),
71
+ itemHoverBg: isDark
72
+ ? "rgba(255, 255, 255, 0.06)"
73
+ : "rgba(0, 0, 0, 0.04)",
74
+ itemColor: t.foreground,
75
+ itemBorderRadius: 6,
76
+ itemMarginInline: 8,
77
+ itemMarginBlock: 2,
78
+ itemHeight: 38,
79
+ horizontalItemHoverBg: "#0000000a",
80
+ },
81
+ },
82
+ }),
83
+ [isDark, primaryColor, t]
84
+ );
85
+
86
+ return (
87
+ <AntdConfigProvider theme={themeConfig}>
88
+ <div
89
+ className={classNames(styles.theme, isDark ? "dark" : "light")}
90
+ style={
91
+ {
92
+ "--nav-dark-top": navDarkColors?.top ?? "#1f1f1f",
93
+ "--nav-dark-bottom": navDarkColors?.bottom ?? "#141414",
94
+ } as React.CSSProperties
95
+ }
96
+ >
97
+ {children}
98
+ </div>
99
+ </AntdConfigProvider>
100
+ );
101
+ });
102
+
103
+ Theme.displayName = "Theme";
104
+
105
+ export default Theme;
@@ -0,0 +1,23 @@
1
+ import { createContext, useContext, useCallback } from "react";
2
+
3
+ export const NavTabBarContent = createContext<{
4
+ dropKey?: string;
5
+ setDropKey?: (key: string) => void;
6
+ }>({});
7
+
8
+ export default function useDropTab() {
9
+ const { setDropKey } = useContext(NavTabBarContent);
10
+
11
+ const drop = useCallback(
12
+ (key: string) => {
13
+ setDropKey?.(key);
14
+
15
+ setTimeout(() => {
16
+ setDropKey?.("");
17
+ }, 0);
18
+ },
19
+ [setDropKey]
20
+ );
21
+
22
+ return drop;
23
+ }
@@ -0,0 +1,19 @@
1
+ import { createContext, useCallback, useContext } from "react";
2
+
3
+ export const ReloadContent = createContext<{
4
+ id?: string;
5
+ setId?: (id: string) => void;
6
+ }>({});
7
+
8
+ export default function useReload() {
9
+ const { setId: setReLoadId } = useContext(ReloadContent);
10
+
11
+ const onReload = useCallback(
12
+ (id: string) => {
13
+ setReLoadId?.(id);
14
+ },
15
+ [setReLoadId]
16
+ );
17
+
18
+ return onReload;
19
+ }
@@ -0,0 +1,19 @@
1
+ import { createContext, useContext, useCallback } from "react";
2
+
3
+ export const NavTabBarTitleContent = createContext<{
4
+ tabTitles?: Record<string, React.ReactNode>;
5
+ setTabTitle?: (key: string, title: React.ReactNode) => void;
6
+ }>({});
7
+
8
+ export default function useSetTabTitle() {
9
+ const { setTabTitle: _setTabTitle } = useContext(NavTabBarTitleContent);
10
+
11
+ const setTabTitle = useCallback(
12
+ (key: string, title: React.ReactNode) => {
13
+ _setTabTitle?.(key, title);
14
+ },
15
+ [_setTabTitle]
16
+ );
17
+
18
+ return setTabTitle;
19
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 布局层用到的一点点本地持久化:外观模式与语言,各是一个字符串。
3
+ *
4
+ * 消费方原本用的是一个 web-storage-cache 封装 + 一张全局 CACHE_KEY 表。那张表属于应用,
5
+ * 不该跟着组件进库;而这里的需求只有「读一个字符串 / 写一个字符串」,直接用 localStorage
6
+ * 就够了,也不必为此多一个运行时依赖。
7
+ *
8
+ * key 统一加 `hsu-ui:` 前缀,避免和消费方自己的存储撞名。
9
+ */
10
+ const PREFIX = "hsu-ui:";
11
+
12
+ export const readStorage = (key: string): string | undefined => {
13
+ if (typeof window === "undefined") return undefined;
14
+ try {
15
+ return window.localStorage.getItem(PREFIX + key) ?? undefined;
16
+ } catch {
17
+ // 隐私模式 / 禁用存储时 localStorage 会抛异常,静默降级为「没有缓存」
18
+ return undefined;
19
+ }
20
+ };
21
+
22
+ export const writeStorage = (key: string, value: string): void => {
23
+ if (typeof window === "undefined") return;
24
+ try {
25
+ window.localStorage.setItem(PREFIX + key, value);
26
+ } catch {
27
+ // 同上:写不进去不该让界面崩掉
28
+ }
29
+ };
30
+
31
+ export const STORAGE_KEY = {
32
+ APPEARANCE: "appearance",
33
+ LANG: "lang",
34
+ } as const;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * 中后台布局组件。
3
+ *
4
+ * 这几个组件是路由驱动的:菜单、面包屑、页签都从一份 `RouteType[]` 里读展示信息,并用
5
+ * react-router 的 `useLocation` / `useNavigate` 决定当前位置与跳转。因此 **`react-router`
6
+ * 与 `react-intl` 是可选 peerDependency** —— 只用 Button、Table 这些的项目完全不受影响,
7
+ * 用到 `Layout.*` 的项目才需要装。
8
+ *
9
+ * 与本库其余部分的分工:主题、色板、圆角这些由 `ConfigProvider` 统一提供,`Layout.Theme`
10
+ * 只负责外观三态(light / dark / 跟随系统)与侧栏导航的专属配色。
11
+ */
12
+ import Breadcrumb from "./Breadcrumb";
13
+ import Header from "./Header";
14
+ import I18n from "./I18n";
15
+ import Menu from "./Menu";
16
+ import NavTabBar from "./NavTabBar";
17
+ import Theme from "./Theme";
18
+
19
+ import I18nStore from "./I18n/I18nStore";
20
+ import ThemeStore from "./Theme/ThemeStore";
21
+
22
+ export type { RouteType, MetaType } from "./types";
23
+ export type { ThemeProps } from "./Theme";
24
+
25
+ export { default as useSetTabTitle, NavTabBarTitleContent } from "./_hooks/useSetTabTitle";
26
+ export { default as useReload, ReloadContent } from "./_hooks/useReload";
27
+ export { default as useDropTab, NavTabBarContent } from "./_hooks/useDropTab";
28
+
29
+ /**
30
+ * 显式标注这个命名空间的类型,而不是让 TS 去推断。
31
+ *
32
+ * 推断会把两类东西泄进 d.ts:mobx store 的私有字段(TS4094),以及各组件的 Props 类型 ——
33
+ * 那些没有被导出,消费方那边无法解析(TS4023)。react-intl 的内部依赖同理(TS2742)。
34
+ * 这些都只在开了 declaration 的发包构建里才会暴露,本地跑 dev 看不出来。
35
+ */
36
+ interface LayoutNamespace {
37
+ Header: typeof Header;
38
+ Menu: typeof Menu;
39
+ Breadcrumb: typeof Breadcrumb;
40
+ NavTabBar: typeof NavTabBar;
41
+ Theme: typeof Theme;
42
+ I18n: typeof I18n;
43
+ ThemeStore: typeof ThemeStore;
44
+ I18nStore: typeof I18nStore;
45
+ }
46
+
47
+ const Layout: LayoutNamespace = {
48
+ /** 顶栏:标题、面包屑、语言与外观切换、账号菜单 */
49
+ Header,
50
+ /** 侧边 / 顶部菜单 */
51
+ Menu,
52
+ /** 面包屑 */
53
+ Breadcrumb,
54
+ /** 多页签栏(可拖拽排序、右键菜单) */
55
+ NavTabBar,
56
+ /** 外观三态与布局配色 */
57
+ Theme,
58
+ /** react-intl provider + antd locale */
59
+ I18n,
60
+ /** 外观状态(mobx),供应用侧读写 appearance */
61
+ ThemeStore,
62
+ /** 语言状态(mobx),供应用侧读写 locale */
63
+ I18nStore,
64
+ };
65
+
66
+ export default Layout;
@@ -0,0 +1,58 @@
1
+ import type { ReactNode } from "react";
2
+ import type { RouteObject } from "react-router";
3
+
4
+ /**
5
+ * 路由的附加信息。菜单、面包屑、页签这三个组件都从这里取展示所需的一切 ——
6
+ * 它们不认识业务,只认识这个形状。
7
+ *
8
+ * 字段分两类,下面用分组标出:**布局组件真正会读的**,以及**只是搭车放在这里、由消费方
9
+ * 自己消费的**。后者原样保留是因为它们本来就写在同一份路由配置里(鉴权守卫、KeepAlive
10
+ * 包装、懒加载装配各取所需),把它们从类型里删掉只会逼消费方再声明一次。
11
+ */
12
+ export interface MetaType {
13
+ // —— 布局组件会读的 ——
14
+
15
+ /** 菜单项 / 面包屑 / 页签上显示的文案 */
16
+ name?: string;
17
+ /**
18
+ * 是否作为菜单项展示。注意是**显式开启**:只有为 `true` 的路由才会进 Menu,
19
+ * 不写等同于不进菜单(但路由本身照常可访问)。
20
+ */
21
+ menu?: boolean;
22
+ icon?: ReactNode;
23
+ /** 选中态图标;不传则沿用 `icon`。只对没有子项的菜单项生效 */
24
+ activeIcon?: ReactNode;
25
+ /** 菜单项置灰不可点 */
26
+ disabled?: boolean;
27
+ /** 固定页签,不可关闭,也不会被「关闭其他 / 关闭右侧」清掉 */
28
+ affix?: boolean;
29
+ /** 不进入页签栏 */
30
+ noTabsView?: boolean;
31
+ /** 二级导航:该路由的子级换到次级菜单里展示(配合 Menu 的 secondaryHeader) */
32
+ secondary?: boolean;
33
+
34
+ // —— 布局组件不读,留给消费方 ——
35
+
36
+ /** 页面标题,供消费方写 document.title 等用途 */
37
+ title?: string;
38
+ /** 不做页面缓存,供消费方决定是否用 react-activation 的 KeepAlive 包裹 */
39
+ noCache?: boolean;
40
+ /** 不走懒加载,供消费方装配路由时判断 */
41
+ noLazy?: boolean;
42
+ /** 无需登录即可访问,供消费方的鉴权守卫判断 */
43
+ noAuth?: boolean;
44
+ /** 权限码,供消费方在生成路由时用 usePermissions / ConfigProvider.permissions 过滤 */
45
+ hasPermi?: string[];
46
+ }
47
+
48
+ /**
49
+ * 路由配置。在 react-router 的 `RouteObject` 上加了 `meta`。
50
+ *
51
+ * 这个类型原本定义在消费方的 `@/router/router.config` 里,布局组件反过来 import 它 ——
52
+ * 那样组件就绑死在某个具体应用上了。收进库里之后,消费方改为让自己的路由配置符合这个
53
+ * 形状(`RouteObject` 本来就是 react-router 的标准类型,通常不用改任何东西)。
54
+ */
55
+ export type RouteType = {
56
+ children?: RouteType[];
57
+ meta?: MetaType;
58
+ } & RouteObject;