@para-ui/core 5.0.0-beta.11 → 5.0.0-beta.13

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 (650) hide show
  1. package/AGENTS.md +315 -0
  2. package/AlignBox/component.json +89 -0
  3. package/Anchor/component.json +130 -0
  4. package/Argv/component.json +216 -0
  5. package/AutoBox/component.json +133 -0
  6. package/AutoButton/component.json +109 -0
  7. package/AutoTips/component.json +121 -0
  8. package/Badge/component.json +92 -0
  9. package/Breadcrumbs/component.json +142 -0
  10. package/Button/component.json +168 -0
  11. package/ButtonGroup/component.json +132 -0
  12. package/Card/component.json +162 -0
  13. package/Carousel/component.json +142 -0
  14. package/Cascader/component.json +196 -0
  15. package/Checkbox/component.json +138 -0
  16. package/CheckboxGroup/component.json +152 -0
  17. package/CodeEditor/component.json +189 -0
  18. package/Collapse/component.json +166 -0
  19. package/CollapseBox/component.json +84 -0
  20. package/CollapseLayout/component.json +155 -0
  21. package/ColorPicker/component.json +142 -0
  22. package/ComboSelect/component.json +181 -0
  23. package/Container/component.json +111 -0
  24. package/ContentBox/component.json +81 -0
  25. package/CopyText/component.json +118 -0
  26. package/CycleSelector/component.json +98 -0
  27. package/DatePicker/component.json +192 -0
  28. package/Descriptions/component.json +142 -0
  29. package/Desktop/component.json +171 -0
  30. package/DragVerify/component.json +114 -0
  31. package/Drawer/component.json +200 -0
  32. package/Dropdown/component.json +147 -0
  33. package/DynamicMultiBox/component.json +278 -0
  34. package/Empty/component.json +123 -0
  35. package/FieldForm/component.json +196 -0
  36. package/Form/component.json +161 -0
  37. package/FormItem/component.json +171 -0
  38. package/FunctionModal/component.json +197 -0
  39. package/Help/component.json +118 -0
  40. package/HelperText/component.json +126 -0
  41. package/Image/component.json +165 -0
  42. package/InputCode/component.json +191 -0
  43. package/InputLang/component.json +205 -0
  44. package/InputNumber/component.json +162 -0
  45. package/Label/component.json +126 -0
  46. package/Loading/component.json +91 -0
  47. package/Menu/component.json +180 -0
  48. package/Message/component.json +246 -0
  49. package/Modal/component.json +277 -0
  50. package/MultiBox/component.json +216 -0
  51. package/Notification/component.json +184 -0
  52. package/OperateBtn/component.json +134 -0
  53. package/PageHeader/component.json +112 -0
  54. package/Pagination/component.json +181 -0
  55. package/PasswordRules/component.json +105 -0
  56. package/PopConfirm/component.json +227 -0
  57. package/PopMenu/component.json +131 -0
  58. package/Popover/component.json +165 -0
  59. package/Progress/component.json +161 -0
  60. package/Prompt/component.json +144 -0
  61. package/Querying/component.json +96 -0
  62. package/QuickReply/component.json +129 -0
  63. package/Radio/component.json +136 -0
  64. package/RadioGroup/component.json +149 -0
  65. package/RangeInput/component.json +198 -0
  66. package/Result/component.json +104 -0
  67. package/ScrollBar/component.json +115 -0
  68. package/Search/component.json +177 -0
  69. package/Select/component.json +244 -0
  70. package/SelectInput/component.json +184 -0
  71. package/Selector/component.json +203 -0
  72. package/SelectorPicker/component.json +179 -0
  73. package/SingleBox/component.json +151 -0
  74. package/Slider/component.json +181 -0
  75. package/SortBox/component.json +108 -0
  76. package/Status/component.json +104 -0
  77. package/Stepper/component.json +129 -0
  78. package/Switch/component.json +207 -0
  79. package/Table/component.json +547 -0
  80. package/Tabs/component.json +227 -0
  81. package/Tag/component.json +221 -0
  82. package/TextEditor/component.json +186 -0
  83. package/TextField/component.json +290 -0
  84. package/TimePicker/component.json +176 -0
  85. package/Timeline/component.json +110 -0
  86. package/Title/component.json +156 -0
  87. package/ToggleButton/component.json +153 -0
  88. package/Tooltip/component.json +176 -0
  89. package/Transfer/component.json +157 -0
  90. package/Tree/component.json +512 -0
  91. package/Upload/component.json +450 -0
  92. package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
  93. package/ai-workflows/02-rbac-operation-buttons.md +290 -0
  94. package/ai-workflows/03-complex-form-async-cascade.md +350 -0
  95. package/ai-workflows/04-array-field-form.md +281 -0
  96. package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
  97. package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
  98. package/ai-workflows/07-search-filter-table-trio.md +387 -0
  99. package/ai-workflows/08-table-advanced-features.md +365 -0
  100. package/ai-workflows/09-batch-operation-export-progress.md +367 -0
  101. package/ai-workflows/10-cross-component-state-coordination.md +412 -0
  102. package/es/AlignBox/component.json +89 -0
  103. package/es/AlignBox/index.css +1 -1
  104. package/es/AlignBox/index.d.ts +6 -2
  105. package/es/AlignBox/index.js +1 -1
  106. package/es/AlignBox/style/index.css +1 -1
  107. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  108. package/es/Anchor/anchorMenu/index.js +36 -33
  109. package/es/Anchor/component.json +130 -0
  110. package/es/Anchor/index.js +52 -49
  111. package/es/Anchor/type.d.ts +8 -4
  112. package/es/Argv/component.json +216 -0
  113. package/es/Argv/dataGenerator/index.js +1 -1
  114. package/es/Argv/index.d.ts +5 -6
  115. package/es/Argv/index.js +1 -1
  116. package/es/AutoBox/component.json +133 -0
  117. package/es/AutoBox/index.d.ts +3 -3
  118. package/es/AutoBox/index.js +1 -1
  119. package/es/AutoBox/protal.d.ts +2 -2
  120. package/es/AutoBox/protal.js +33 -30
  121. package/es/AutoButton/component.json +109 -0
  122. package/es/AutoButton/index.js +1 -1
  123. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  124. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  125. package/es/AutoTips/component.json +121 -0
  126. package/es/AutoTips/index.js +1 -1
  127. package/es/Badge/component.json +92 -0
  128. package/es/Breadcrumbs/component.json +142 -0
  129. package/es/Breadcrumbs/index.js +1 -1
  130. package/es/Button/SplitButton.d.ts +2 -2
  131. package/es/Button/component.json +168 -0
  132. package/es/Button/index.js +44 -44
  133. package/es/ButtonGroup/component.json +132 -0
  134. package/es/ButtonGroup/index.d.ts +1 -1
  135. package/es/Card/component.json +162 -0
  136. package/es/Card/index.d.ts +2 -2
  137. package/es/Card/index.js +2 -2
  138. package/es/Carousel/component.json +142 -0
  139. package/es/Carousel/index.d.ts +1 -1
  140. package/es/Cascader/Cascader.js +1 -1
  141. package/es/Cascader/OptionList/Column.js +1 -1
  142. package/es/Cascader/OptionList/index.js +1 -1
  143. package/es/Cascader/component.json +196 -0
  144. package/es/Cascader/hooks/useEntities.js +7 -7
  145. package/es/Cascader/interface.d.ts +1 -0
  146. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  147. package/es/Cascader/utils/commonUtil.js +16 -16
  148. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  149. package/es/Cascader/utils/treeUtil.js +1 -1
  150. package/es/Checkbox/component.json +138 -0
  151. package/es/CheckboxGroup/component.json +152 -0
  152. package/es/CheckboxGroup/index.js +1 -1
  153. package/es/CodeEditor/component.json +189 -0
  154. package/es/CodeEditor/index.d.ts +11 -10
  155. package/es/CodeEditor/index.js +19 -19
  156. package/es/Collapse/component.json +166 -0
  157. package/es/Collapse/index.d.ts +1 -1
  158. package/es/Collapse/index.js +23 -22
  159. package/es/CollapseBox/component.json +84 -0
  160. package/es/CollapseLayout/component.json +155 -0
  161. package/es/ColorPicker/component.json +142 -0
  162. package/es/ComboSelect/component.json +181 -0
  163. package/es/ComboSelect/index.js +115 -109
  164. package/es/ComboSelect/interface.d.ts +2 -2
  165. package/es/ComboSelect/utils.d.ts +3 -3
  166. package/es/ComboSelect/utils.js +1 -1
  167. package/es/Container/component.json +111 -0
  168. package/es/ContentBox/component.json +81 -0
  169. package/es/CopyText/component.json +118 -0
  170. package/es/CycleSelector/component.json +98 -0
  171. package/es/CycleSelector/index.js +14 -13
  172. package/es/DatePicker/component.json +192 -0
  173. package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
  174. package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
  175. package/es/Descriptions/component.json +142 -0
  176. package/es/Descriptions/index.d.ts +1 -1
  177. package/es/Desktop/component.json +171 -0
  178. package/es/Desktop/index.js +1 -1
  179. package/es/DragVerify/component.json +114 -0
  180. package/es/DragVerify/index.js +19 -19
  181. package/es/Drawer/component.json +200 -0
  182. package/es/Drawer/index.js +86 -86
  183. package/es/Drawer/interface.d.ts +1 -1
  184. package/es/Drawer/util.d.ts +1 -6
  185. package/es/Drawer/util.js +9 -6
  186. package/es/Dropdown/component.json +147 -0
  187. package/es/Dropdown/index.js +1 -1
  188. package/es/DynamicMultiBox/component.json +278 -0
  189. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  190. package/es/DynamicMultiBox/index.js +1 -1
  191. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  192. package/es/Empty/component.json +123 -0
  193. package/es/Empty/index.css +1 -1
  194. package/es/Empty/index.d.ts +2 -2
  195. package/es/Empty/index.js +27 -26
  196. package/es/Empty/style/index.css +1 -1
  197. package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  198. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  199. package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  200. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  201. package/es/FieldForm/Form.d.ts +2 -2
  202. package/es/FieldForm/Form.js +1 -1
  203. package/es/FieldForm/FormItemInput.js +1 -1
  204. package/es/FieldForm/FormItemLabel.js +1 -1
  205. package/es/FieldForm/FormList.d.ts +2 -2
  206. package/es/FieldForm/component.json +196 -0
  207. package/es/FieldForm/context.d.ts +5 -1
  208. package/es/FieldForm/context.js +2 -2
  209. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  210. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  211. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  212. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  213. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  214. package/es/FieldForm/hooks/useItemRef.js +6 -6
  215. package/es/Form/component.json +161 -0
  216. package/es/Form/index.d.ts +52 -49
  217. package/es/Form/index.js +1 -1
  218. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  219. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  220. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  221. package/es/FormItem/compoments/formFile/index.js +8 -8
  222. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  223. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  224. package/es/FormItem/component.json +171 -0
  225. package/es/FormItem/index.d.ts +5 -5
  226. package/es/FormItem/index.js +23 -23
  227. package/es/FormItem/itemType.js +1 -1
  228. package/es/FunctionModal/component.json +197 -0
  229. package/es/FunctionModal/dialog.d.ts +1 -1
  230. package/es/FunctionModal/modalContext.d.ts +4 -1
  231. package/es/GlobalContext/confirmLocale.js +1 -1
  232. package/es/GlobalContext/index.js +1 -1
  233. package/es/Help/component.json +118 -0
  234. package/es/HelperText/component.json +126 -0
  235. package/es/Image/PreviewGroup.js +1 -1
  236. package/es/Image/component.json +165 -0
  237. package/es/Image/index.js +1 -1
  238. package/es/InputCode/component.json +191 -0
  239. package/es/InputCode/index.d.ts +2 -2
  240. package/es/InputLang/component.json +205 -0
  241. package/es/InputLang/index.js +2 -2
  242. package/es/InputNumber/component.json +162 -0
  243. package/es/Label/component.json +126 -0
  244. package/es/Label/index.d.ts +2 -2
  245. package/es/Loading/component.json +91 -0
  246. package/es/Menu/component.json +180 -0
  247. package/es/Menu/verticalMenuList.js +1 -1
  248. package/es/Message/component.json +246 -0
  249. package/es/Message/index.d.ts +2 -2
  250. package/es/Message/index.js +2 -2
  251. package/es/Modal/Confirm/index.d.ts +1 -1
  252. package/es/Modal/Confirm/index.js +1 -1
  253. package/es/Modal/component.json +277 -0
  254. package/es/Modal/index.d.ts +85 -5
  255. package/es/Modal/index.js +159 -122
  256. package/es/Modal/interface.d.ts +1 -0
  257. package/es/MultiBox/component.json +216 -0
  258. package/es/MultiBox/index.js +19 -14
  259. package/es/Notification/component.json +184 -0
  260. package/es/OperateBtn/component.json +134 -0
  261. package/es/OperateBtn/index.d.ts +3 -3
  262. package/es/PageHeader/component.json +112 -0
  263. package/es/PageHeader/horizontalMeun.js +1 -1
  264. package/es/PageHeader/horizontalMeunRight.js +1 -1
  265. package/es/Pagination/component.json +181 -0
  266. package/es/Pagination/index.js +15 -15
  267. package/es/ParauiProvider/index.js +1 -1
  268. package/es/PasswordRules/component.json +105 -0
  269. package/es/PasswordRules/index.d.ts +4 -4
  270. package/es/PopConfirm/component.json +227 -0
  271. package/es/PopConfirm/index.d.ts +1 -1
  272. package/es/PopConfirm/index.js +1 -1
  273. package/es/PopMenu/component.json +131 -0
  274. package/es/PopMenu/hooks.d.ts +1 -1
  275. package/es/PopMenu/index.js +8 -8
  276. package/es/Popover/component.json +165 -0
  277. package/es/Popover/index.js +1 -1
  278. package/es/Progress/component.json +161 -0
  279. package/es/Prompt/component.json +144 -0
  280. package/es/Querying/component.json +96 -0
  281. package/es/Querying/index.css +1 -1
  282. package/es/Querying/index.d.ts +2 -2
  283. package/es/Querying/index.js +20 -19
  284. package/es/Querying/style/index.css +1 -1
  285. package/es/QuickReply/QuickReplyCode/index.js +1 -1
  286. package/es/QuickReply/component.json +129 -0
  287. package/es/QuickReply/index.d.ts +1 -1
  288. package/es/Radio/component.json +136 -0
  289. package/es/RadioGroup/component.json +149 -0
  290. package/es/RangeInput/component.json +198 -0
  291. package/es/RangeInput/index.js +20 -20
  292. package/es/Result/component.json +104 -0
  293. package/es/ScrollBar/component.json +115 -0
  294. package/es/Search/component.json +177 -0
  295. package/es/Search/index.d.ts +1 -1
  296. package/es/Select/component.json +244 -0
  297. package/es/Select/index.js +114 -114
  298. package/es/SelectInput/component.json +184 -0
  299. package/es/Selector/component.json +203 -0
  300. package/es/Selector/index.js +56 -50
  301. package/es/Selector/interface.d.ts +2 -2
  302. package/es/Selector/selectorData/index.js +1 -1
  303. package/es/Selector/selectorMain/index.js +3 -3
  304. package/es/Selector/selectorNode/index.js +1 -1
  305. package/es/Selector/util.d.ts +3 -3
  306. package/es/Selector/util.js +6 -12
  307. package/es/SelectorPicker/component.json +179 -0
  308. package/es/SelectorPicker/index.d.ts +5 -5
  309. package/es/SelectorPicker/index.js +15 -15
  310. package/es/SingleBox/component.json +151 -0
  311. package/es/SingleBox/index.d.ts +2 -2
  312. package/es/Slider/component.json +181 -0
  313. package/es/SortBox/component.json +108 -0
  314. package/es/Status/component.json +104 -0
  315. package/es/Stepper/component.json +129 -0
  316. package/es/Stepper/index.d.ts +2 -2
  317. package/es/Switch/component.json +207 -0
  318. package/es/Switch/index.css +1 -1
  319. package/es/Switch/index.d.ts +3 -2
  320. package/es/Switch/index.js +60 -59
  321. package/es/Switch/style/index.css +1 -1
  322. package/es/Table/component.json +547 -0
  323. package/es/Table/index.d.ts +2 -2
  324. package/es/Table/index.js +385 -382
  325. package/es/Table/interface.d.ts +30 -0
  326. package/es/Table/tableHead.js +1 -1
  327. package/es/Table/util.d.ts +1 -1
  328. package/es/Table/util.js +3 -12
  329. package/es/Tabs/component.json +227 -0
  330. package/es/Tag/component.json +221 -0
  331. package/es/Tag/index.css +1 -1
  332. package/es/Tag/index.d.ts +1 -1
  333. package/es/Tag/index.js +20 -20
  334. package/es/Tag/style/index.css +1 -1
  335. package/es/TextEditor/component.json +186 -0
  336. package/es/TextEditor/index.d.ts +5 -5
  337. package/es/TextEditor/index.js +1 -1
  338. package/es/TextField/component.json +290 -0
  339. package/es/TextField/index.d.ts +2 -2
  340. package/es/TextField/index.js +1 -1
  341. package/es/TimePicker/component.json +176 -0
  342. package/es/Timeline/component.json +110 -0
  343. package/es/Title/component.json +156 -0
  344. package/es/ToggleButton/component.json +153 -0
  345. package/es/ToggleButton/index.js +1 -1
  346. package/es/Tooltip/component.json +176 -0
  347. package/es/Tooltip/index.js +58 -53
  348. package/es/Tooltip/interface.d.ts +14 -1
  349. package/es/Tooltip/utils.js +6 -6
  350. package/es/Transfer/component.json +157 -0
  351. package/es/Tree/OperateBar/index.js +1 -1
  352. package/es/Tree/Tree.js +3 -3
  353. package/es/Tree/component.json +512 -0
  354. package/es/Tree/interface.d.ts +1 -1
  355. package/es/Upload/component.json +450 -0
  356. package/es/Upload/util.js +1 -1
  357. package/es/Utils/snack-kit-shims.d.ts +18 -0
  358. package/es/Utils/snack-kit-shims.js +19 -0
  359. package/es/Utils/type.d.ts +0 -2
  360. package/es/_virtual/index.js +5 -3
  361. package/es/_virtual/index2.js +2 -5
  362. package/es/index.d.ts +2 -0
  363. package/es/index.js +1 -1
  364. package/es/locale/en_US.d.ts +361 -0
  365. package/es/locale/en_US.js +364 -0
  366. package/es/locale/index.d.ts +1 -723
  367. package/es/locale/index2.js +10 -0
  368. package/es/locale/zh_CN.d.ts +361 -0
  369. package/es/locale/zh_CN.js +364 -0
  370. package/es/node_modules/classnames/index.js +1 -1
  371. package/lib/AlignBox/component.json +89 -0
  372. package/lib/AlignBox/index.css +1 -1
  373. package/lib/AlignBox/index.d.ts +6 -2
  374. package/lib/AlignBox/index.js +1 -1
  375. package/lib/AlignBox/style/index.css +1 -1
  376. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  377. package/lib/Anchor/anchorMenu/index.js +1 -1
  378. package/lib/Anchor/component.json +130 -0
  379. package/lib/Anchor/index.js +1 -1
  380. package/lib/Anchor/type.d.ts +8 -4
  381. package/lib/Argv/component.json +216 -0
  382. package/lib/Argv/dataGenerator/index.js +1 -1
  383. package/lib/Argv/index.d.ts +5 -6
  384. package/lib/Argv/index.js +1 -1
  385. package/lib/AutoBox/component.json +133 -0
  386. package/lib/AutoBox/index.d.ts +3 -3
  387. package/lib/AutoBox/index.js +1 -1
  388. package/lib/AutoBox/protal.d.ts +2 -2
  389. package/lib/AutoBox/protal.js +1 -1
  390. package/lib/AutoButton/component.json +109 -0
  391. package/lib/AutoButton/index.js +1 -1
  392. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  393. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  394. package/lib/AutoTips/component.json +121 -0
  395. package/lib/AutoTips/index.js +1 -1
  396. package/lib/Badge/component.json +92 -0
  397. package/lib/Breadcrumbs/component.json +142 -0
  398. package/lib/Breadcrumbs/index.js +1 -1
  399. package/lib/Button/SplitButton.d.ts +2 -2
  400. package/lib/Button/component.json +168 -0
  401. package/lib/Button/index.js +1 -1
  402. package/lib/ButtonGroup/component.json +132 -0
  403. package/lib/ButtonGroup/index.d.ts +1 -1
  404. package/lib/Card/component.json +162 -0
  405. package/lib/Card/index.d.ts +2 -2
  406. package/lib/Card/index.js +1 -1
  407. package/lib/Carousel/component.json +142 -0
  408. package/lib/Carousel/index.d.ts +1 -1
  409. package/lib/Cascader/Cascader.js +1 -1
  410. package/lib/Cascader/OptionList/Column.js +1 -1
  411. package/lib/Cascader/OptionList/index.js +1 -1
  412. package/lib/Cascader/component.json +196 -0
  413. package/lib/Cascader/hooks/useEntities.js +1 -1
  414. package/lib/Cascader/interface.d.ts +1 -0
  415. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  416. package/lib/Cascader/utils/commonUtil.js +1 -1
  417. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  418. package/lib/Cascader/utils/treeUtil.js +1 -1
  419. package/lib/Checkbox/component.json +138 -0
  420. package/lib/CheckboxGroup/component.json +152 -0
  421. package/lib/CheckboxGroup/index.js +1 -1
  422. package/lib/CodeEditor/component.json +189 -0
  423. package/lib/CodeEditor/index.d.ts +11 -10
  424. package/lib/CodeEditor/index.js +1 -1
  425. package/lib/Collapse/component.json +166 -0
  426. package/lib/Collapse/index.d.ts +1 -1
  427. package/lib/Collapse/index.js +1 -1
  428. package/lib/CollapseBox/component.json +84 -0
  429. package/lib/CollapseLayout/component.json +155 -0
  430. package/lib/ColorPicker/component.json +142 -0
  431. package/lib/ComboSelect/component.json +181 -0
  432. package/lib/ComboSelect/index.js +1 -1
  433. package/lib/ComboSelect/interface.d.ts +2 -2
  434. package/lib/ComboSelect/utils.d.ts +3 -3
  435. package/lib/ComboSelect/utils.js +1 -1
  436. package/lib/Container/component.json +111 -0
  437. package/lib/ContentBox/component.json +81 -0
  438. package/lib/CopyText/component.json +118 -0
  439. package/lib/CycleSelector/component.json +98 -0
  440. package/lib/CycleSelector/index.js +1 -1
  441. package/lib/DatePicker/component.json +192 -0
  442. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  443. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  444. package/lib/Descriptions/component.json +142 -0
  445. package/lib/Descriptions/index.d.ts +1 -1
  446. package/lib/Desktop/component.json +171 -0
  447. package/lib/Desktop/index.js +1 -1
  448. package/lib/DragVerify/component.json +114 -0
  449. package/lib/DragVerify/index.js +1 -1
  450. package/lib/Drawer/component.json +200 -0
  451. package/lib/Drawer/index.js +1 -1
  452. package/lib/Drawer/interface.d.ts +1 -1
  453. package/lib/Drawer/util.d.ts +1 -6
  454. package/lib/Drawer/util.js +1 -1
  455. package/lib/Dropdown/component.json +147 -0
  456. package/lib/Dropdown/index.js +1 -1
  457. package/lib/DynamicMultiBox/component.json +278 -0
  458. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  459. package/lib/DynamicMultiBox/index.js +1 -1
  460. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  461. package/lib/Empty/component.json +123 -0
  462. package/lib/Empty/index.css +1 -1
  463. package/lib/Empty/index.d.ts +2 -2
  464. package/lib/Empty/index.js +1 -1
  465. package/lib/Empty/style/index.css +1 -1
  466. package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  467. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  468. package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  469. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  470. package/lib/FieldForm/Form.d.ts +2 -2
  471. package/lib/FieldForm/Form.js +1 -1
  472. package/lib/FieldForm/FormItemInput.js +1 -1
  473. package/lib/FieldForm/FormItemLabel.js +1 -1
  474. package/lib/FieldForm/FormList.d.ts +2 -2
  475. package/lib/FieldForm/component.json +196 -0
  476. package/lib/FieldForm/context.d.ts +5 -1
  477. package/lib/FieldForm/context.js +1 -1
  478. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  479. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  480. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  481. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  482. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  483. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  484. package/lib/Form/component.json +161 -0
  485. package/lib/Form/index.d.ts +52 -49
  486. package/lib/Form/index.js +1 -1
  487. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  488. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  489. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  490. package/lib/FormItem/compoments/formFile/index.js +1 -1
  491. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  492. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  493. package/lib/FormItem/component.json +171 -0
  494. package/lib/FormItem/index.d.ts +5 -5
  495. package/lib/FormItem/index.js +1 -1
  496. package/lib/FormItem/itemType.js +1 -1
  497. package/lib/FunctionModal/component.json +197 -0
  498. package/lib/FunctionModal/dialog.d.ts +1 -1
  499. package/lib/FunctionModal/modalContext.d.ts +4 -1
  500. package/lib/GlobalContext/confirmLocale.js +1 -1
  501. package/lib/GlobalContext/index.js +1 -1
  502. package/lib/Help/component.json +118 -0
  503. package/lib/HelperText/component.json +126 -0
  504. package/lib/Image/PreviewGroup.js +1 -1
  505. package/lib/Image/component.json +165 -0
  506. package/lib/Image/index.js +1 -1
  507. package/lib/InputCode/component.json +191 -0
  508. package/lib/InputCode/index.d.ts +2 -2
  509. package/lib/InputLang/component.json +205 -0
  510. package/lib/InputLang/index.js +1 -1
  511. package/lib/InputNumber/component.json +162 -0
  512. package/lib/Label/component.json +126 -0
  513. package/lib/Label/index.d.ts +2 -2
  514. package/lib/Loading/component.json +91 -0
  515. package/lib/Menu/component.json +180 -0
  516. package/lib/Menu/verticalMenuList.js +1 -1
  517. package/lib/Message/component.json +246 -0
  518. package/lib/Message/index.d.ts +2 -2
  519. package/lib/Message/index.js +1 -1
  520. package/lib/Modal/Confirm/index.d.ts +1 -1
  521. package/lib/Modal/Confirm/index.js +1 -1
  522. package/lib/Modal/component.json +277 -0
  523. package/lib/Modal/index.d.ts +85 -5
  524. package/lib/Modal/index.js +1 -1
  525. package/lib/Modal/interface.d.ts +1 -0
  526. package/lib/MultiBox/component.json +216 -0
  527. package/lib/MultiBox/index.js +1 -1
  528. package/lib/Notification/component.json +184 -0
  529. package/lib/OperateBtn/component.json +134 -0
  530. package/lib/OperateBtn/index.d.ts +3 -3
  531. package/lib/PageHeader/component.json +112 -0
  532. package/lib/PageHeader/horizontalMeun.js +1 -1
  533. package/lib/PageHeader/horizontalMeunRight.js +1 -1
  534. package/lib/Pagination/component.json +181 -0
  535. package/lib/Pagination/index.js +1 -1
  536. package/lib/ParauiProvider/index.js +1 -1
  537. package/lib/PasswordRules/component.json +105 -0
  538. package/lib/PasswordRules/index.d.ts +4 -4
  539. package/lib/PopConfirm/component.json +227 -0
  540. package/lib/PopConfirm/index.d.ts +1 -1
  541. package/lib/PopConfirm/index.js +1 -1
  542. package/lib/PopMenu/component.json +131 -0
  543. package/lib/PopMenu/hooks.d.ts +1 -1
  544. package/lib/PopMenu/index.js +1 -1
  545. package/lib/Popover/component.json +165 -0
  546. package/lib/Popover/index.js +1 -1
  547. package/lib/Progress/component.json +161 -0
  548. package/lib/Prompt/component.json +144 -0
  549. package/lib/Querying/component.json +96 -0
  550. package/lib/Querying/index.css +1 -1
  551. package/lib/Querying/index.d.ts +2 -2
  552. package/lib/Querying/index.js +1 -1
  553. package/lib/Querying/style/index.css +1 -1
  554. package/lib/QuickReply/QuickReplyCode/index.js +1 -1
  555. package/lib/QuickReply/component.json +129 -0
  556. package/lib/QuickReply/index.d.ts +1 -1
  557. package/lib/Radio/component.json +136 -0
  558. package/lib/RadioGroup/component.json +149 -0
  559. package/lib/RangeInput/component.json +198 -0
  560. package/lib/RangeInput/index.js +1 -1
  561. package/lib/Result/component.json +104 -0
  562. package/lib/ScrollBar/component.json +115 -0
  563. package/lib/Search/component.json +177 -0
  564. package/lib/Search/index.d.ts +1 -1
  565. package/lib/Select/component.json +244 -0
  566. package/lib/Select/index.js +1 -1
  567. package/lib/SelectInput/component.json +184 -0
  568. package/lib/Selector/component.json +203 -0
  569. package/lib/Selector/index.js +1 -1
  570. package/lib/Selector/interface.d.ts +2 -2
  571. package/lib/Selector/selectorData/index.js +1 -1
  572. package/lib/Selector/selectorMain/index.js +1 -1
  573. package/lib/Selector/selectorNode/index.js +1 -1
  574. package/lib/Selector/util.d.ts +3 -3
  575. package/lib/Selector/util.js +1 -1
  576. package/lib/SelectorPicker/component.json +179 -0
  577. package/lib/SelectorPicker/index.d.ts +5 -5
  578. package/lib/SelectorPicker/index.js +1 -1
  579. package/lib/SingleBox/component.json +151 -0
  580. package/lib/SingleBox/index.d.ts +2 -2
  581. package/lib/Slider/component.json +181 -0
  582. package/lib/SortBox/component.json +108 -0
  583. package/lib/Status/component.json +104 -0
  584. package/lib/Stepper/component.json +129 -0
  585. package/lib/Stepper/index.d.ts +2 -2
  586. package/lib/Switch/component.json +207 -0
  587. package/lib/Switch/index.css +1 -1
  588. package/lib/Switch/index.d.ts +3 -2
  589. package/lib/Switch/index.js +1 -1
  590. package/lib/Switch/style/index.css +1 -1
  591. package/lib/Table/component.json +547 -0
  592. package/lib/Table/index.d.ts +2 -2
  593. package/lib/Table/index.js +1 -1
  594. package/lib/Table/interface.d.ts +30 -0
  595. package/lib/Table/tableHead.js +1 -1
  596. package/lib/Table/util.d.ts +1 -1
  597. package/lib/Table/util.js +1 -1
  598. package/lib/Tabs/component.json +227 -0
  599. package/lib/Tag/component.json +221 -0
  600. package/lib/Tag/index.css +1 -1
  601. package/lib/Tag/index.d.ts +1 -1
  602. package/lib/Tag/index.js +1 -1
  603. package/lib/Tag/style/index.css +1 -1
  604. package/lib/TextEditor/component.json +186 -0
  605. package/lib/TextEditor/index.d.ts +5 -5
  606. package/lib/TextEditor/index.js +1 -1
  607. package/lib/TextField/component.json +290 -0
  608. package/lib/TextField/index.d.ts +2 -2
  609. package/lib/TextField/index.js +1 -1
  610. package/lib/TimePicker/component.json +176 -0
  611. package/lib/Timeline/component.json +110 -0
  612. package/lib/Title/component.json +156 -0
  613. package/lib/ToggleButton/component.json +153 -0
  614. package/lib/ToggleButton/index.js +1 -1
  615. package/lib/Tooltip/component.json +176 -0
  616. package/lib/Tooltip/index.js +1 -1
  617. package/lib/Tooltip/interface.d.ts +14 -1
  618. package/lib/Tooltip/utils.js +1 -1
  619. package/lib/Transfer/component.json +157 -0
  620. package/lib/Tree/OperateBar/index.js +2 -2
  621. package/lib/Tree/Tree.js +1 -1
  622. package/lib/Tree/component.json +512 -0
  623. package/lib/Tree/interface.d.ts +1 -1
  624. package/lib/Upload/component.json +450 -0
  625. package/lib/Upload/util.js +1 -1
  626. package/lib/Utils/snack-kit-shims.d.ts +18 -0
  627. package/lib/Utils/snack-kit-shims.js +2 -0
  628. package/lib/Utils/type.d.ts +0 -2
  629. package/lib/_virtual/index.js +1 -1
  630. package/lib/_virtual/index2.js +1 -1
  631. package/lib/index.d.ts +2 -0
  632. package/lib/index.js +1 -1
  633. package/lib/locale/en_US.d.ts +361 -0
  634. package/lib/locale/en_US.js +2 -0
  635. package/lib/locale/index.d.ts +1 -723
  636. package/lib/locale/index2.js +2 -0
  637. package/lib/locale/zh_CN.d.ts +361 -0
  638. package/lib/locale/zh_CN.js +2 -0
  639. package/lib/node_modules/classnames/index.js +1 -1
  640. package/package.json +11 -4
  641. package/es/_virtual/index3.js +0 -5
  642. package/es/_virtual/index4.js +0 -5
  643. package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
  644. package/lib/_virtual/index3.js +0 -2
  645. package/lib/_virtual/index4.js +0 -2
  646. package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
  647. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  648. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  649. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  650. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "Badge",
3
+ "category": "Data Display",
4
+ "description": "出现在子元素角部的标记节点。**注意:不接受 antd 风格的 count / dot / maxCount / overflowCount 这些 prop**——本组件用 sign 作为核心标记内容(ReactNode),不传 sign 时退化为小圆点;传 null 时不显示",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示数量",
8
+ "展示状态",
9
+ "吸引注意"
10
+ ],
11
+ "useCases": [
12
+ "消息计数",
13
+ "在线状态",
14
+ "新功能标记"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "默认(带 sign 内容时按 sign 渲染;不传 sign 退化为小圆点)"
21
+ }
22
+ },
23
+ "states": [
24
+ "visible",
25
+ "hidden"
26
+ ],
27
+ "idealProps": {
28
+ "children": {
29
+ "type": "ReactNode",
30
+ "description": "被徽标包裹的目标元素,Badge 会在其右上角(或 placement 指定位置)叠加徽标显示",
31
+ "required": false
32
+ },
33
+ "sign": {
34
+ "type": "ReactNode",
35
+ "description": "标记内容。**核心 prop**:传数字 / 字符串显示文本徽标;不传退化为小圆点;传 null 时整个徽标不显示(用于条件展示)"
36
+ },
37
+ "backgroundColor": {
38
+ "type": "string",
39
+ "description": "徽标背景色(CSS 颜色字符串)"
40
+ },
41
+ "color": {
42
+ "type": "string",
43
+ "description": "徽标文字色(CSS 颜色字符串)"
44
+ },
45
+ "offset": {
46
+ "type": "[number, number]",
47
+ "description": "徽标相对默认位置的像素偏移 [x, y]"
48
+ },
49
+ "placement": {
50
+ "type": "enum",
51
+ "values": [
52
+ "top-left",
53
+ "top-right",
54
+ "bottom-left",
55
+ "bottom-right"
56
+ ],
57
+ "default": "top-right",
58
+ "description": "徽标在子元素四角的位置"
59
+ }
60
+ },
61
+ "do": [
62
+ "用 sign 传 ReactNode 作为标记(数字 / 短字符串 / 状态点)",
63
+ "条件展示:传 sign={null} 隐藏徽标但保留 children 占位",
64
+ "超过 999 的数字自动显示 '999+',无需业务方手动判断"
65
+ ],
66
+ "dont": [
67
+ "传 count / dot / maxCount / overflowCount / status——这些 antd 风格 prop 不存在",
68
+ "把核心内容放到 children——children 是被标记的目标元素,不是徽标本身"
69
+ ],
70
+ "events": {},
71
+ "typescriptPitfalls": [
72
+ {
73
+ "issue": "sign 是 ReactNode 而非数字,传 null 和不传 sign 含义不同",
74
+ "wrong": "// 期望隐藏徽标,传 sign={0} 却仍然显示数字 0\n<Badge sign={0}>图标</Badge> // 0 是数字,显示'0'文本徽标",
75
+ "right": "// 传 null 才能隐藏徽标\n<Badge sign={null}>图标</Badge> // handleType 返回 'null',handleSign 返回 null 不渲染"
76
+ },
77
+ {
78
+ "issue": "offset 是 [number, number] 元组,不是对象 { x, y }",
79
+ "wrong": "<Badge offset={{ x: 4, y: -4 }}>图标</Badge> // TS 类型报错:期望 [number, number]",
80
+ "right": "<Badge offset={[4, -4]}>图标</Badge> // [offsetX, offsetY],正数向右/向下"
81
+ },
82
+ {
83
+ "issue": "不要传 antd 风格的 count / dot / maxCount / overflowCount prop——它们不存在于 BadgeProps",
84
+ "wrong": "<Badge count={5} dot={false}>图标</Badge> // count/dot 不在 BadgeProps,静默失效",
85
+ "right": "<Badge sign={5}>图标</Badge> // para-ui 用 sign 作为核心标记内容"
86
+ }
87
+ ],
88
+ "mapping": {
89
+ "realComponent": "Badge",
90
+ "adapter": null
91
+ }
92
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "Breadcrumbs",
3
+ "category": "Navigation",
4
+ "description": "面包屑导航,显示当前页面在系统层级结构中的位置;内置自适应收缩:容器宽度不足时自动折叠中间项到'更多'弹层",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示路径",
8
+ "向上导航",
9
+ "定位上下文"
10
+ ],
11
+ "useCases": [
12
+ "多级菜单",
13
+ "详情页",
14
+ "层级浏览"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准面包屑"
21
+ }
22
+ },
23
+ "states": [
24
+ "default"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "listOptions[]",
29
+ "typeDefinition": "interface listOptions { label: ReactNode; maxWidth?: string; disabled?: boolean; [name: string]: any }",
30
+ "description": "路由数据列表。**每项必填 label**(显示文案,ReactNode);disabled=true 时该项不可点击;maxWidth 覆盖单项最大宽度(默认用顶层 maxWidth)。**末尾项(最后一项)自动不可点击**(src:154 实证)"
31
+ },
32
+ "separator": {
33
+ "type": "string",
34
+ "default": "/",
35
+ "description": "分隔符(src:38 interface 实证:类型为 string,不是 ReactNode)"
36
+ },
37
+ "maxWidth": {
38
+ "type": "string",
39
+ "default": "160px",
40
+ "description": "每项最大宽度(px),超出则内部 AutoTips 自动截断显示省略号"
41
+ },
42
+ "isShrink": {
43
+ "type": "boolean",
44
+ "default": true,
45
+ "description": "是否启用自适应收缩(容器宽度不足时折叠中间项到'更多'弹层)"
46
+ },
47
+ "minNum": {
48
+ "type": "number",
49
+ "default": 2,
50
+ "description": "收缩时最少保留显示的项数(末尾 N 项始终显示)"
51
+ },
52
+ "isBack": {
53
+ "type": "boolean",
54
+ "default": false,
55
+ "description": "是否显示返回按钮(在面包屑右侧)"
56
+ },
57
+ "backRender": {
58
+ "type": "ReactNode",
59
+ "description": "自定义返回按钮内容(不传时显示默认返回图标 + 文字)"
60
+ },
61
+ "onClickItem": {
62
+ "type": "(ops: listOptions) => void",
63
+ "description": "点击非末尾且非 disabled 项时的回调(末尾项和 disabled 项不触发)"
64
+ },
65
+ "onBack": {
66
+ "type": "() => void",
67
+ "description": "点击返回按钮的回调;不传时默认点击 list 倒数第二项"
68
+ },
69
+ "trigger": {
70
+ "type": "'hover' | 'click'",
71
+ "default": "hover",
72
+ "description": "收缩弹层的触发方式"
73
+ },
74
+ "placement": {
75
+ "type": "string",
76
+ "default": "bottomLeft",
77
+ "description": "收缩弹层的弹出位置"
78
+ }
79
+ },
80
+ "do": [
81
+ "在层级较深的系统中提供 Breadcrumbs",
82
+ "保持层级路径清晰,避免过深 (>5级)",
83
+ "list 末尾项自动不可点击,无需手动设 disabled",
84
+ "需要返回上级功能用 isBack=true,需要自定义返回行为用 onBack 回调"
85
+ ],
86
+ "dont": [
87
+ "在扁平化结构的站点强行使用 Breadcrumbs",
88
+ "Breadcrumbs 替代主导航",
89
+ "传 separator={<Icon />} ReactNode 类型——src interface 类型为 string,传 ReactNode 会有 TS 警告"
90
+ ],
91
+ "events": {
92
+ "onClickItem": {
93
+ "signature": "(ops: listOptions) => void",
94
+ "asyncSupported": false,
95
+ "examples": [
96
+ "点击面包屑项导航:onClickItem={(item) => router.push(item.path)}",
97
+ "传入回调时只有非末尾、非 disabled 的项才触发(src:154 实证)",
98
+ "结合 list 的扩展字段:onClickItem={(item) => { if (item.href) window.location.href = item.href; }}"
99
+ ],
100
+ "commonMistakes": [
101
+ "期望末尾项也能 onClickItem——末尾项(list.length-1 === index)在 src:154 被拦截,永远不触发",
102
+ "把路由信息放到 onClickItem 回调参数之外——item 是 listOptions 对象,可通过索引签名携带任意业务字段",
103
+ "期望 onClickItem 携带 index 参数——签名只有 (ops: listOptions),无 index;需要 index 请在 list 中嵌入业务 id"
104
+ ]
105
+ },
106
+ "onBack": {
107
+ "signature": "() => void",
108
+ "asyncSupported": false,
109
+ "examples": [
110
+ "自定义返回行为:onBack={() => navigate(-1)}",
111
+ "不传时默认点击 list 倒数第二项(触发 onClickItem)",
112
+ "配合 isBack=true 使用:<Breadcrumbs isBack onBack={handleBack} />"
113
+ ],
114
+ "commonMistakes": [
115
+ "传了 onBack 但忘传 isBack=true——onBack 存在但不显示返回按钮,回调永远不触发",
116
+ "期望 onBack 携带当前最后一项——回调无参数,最后一项可从 list[list.length-1] 直接取",
117
+ "同时期望 onBack 和返回按钮的默认行为(点 list[-2])——传了 onBack 就完全覆盖默认行为"
118
+ ]
119
+ }
120
+ },
121
+ "typescriptPitfalls": [
122
+ {
123
+ "issue": "separator 类型为 string,不支持 ReactNode,传 ReactNode 会有 TS 报错",
124
+ "wrong": "<Breadcrumbs separator={<ChevronRight />} list={list} /> // TS: ReactNode 不可分配给 string",
125
+ "right": "<Breadcrumbs separator='>' list={list} /> // 只接受字符串"
126
+ },
127
+ {
128
+ "issue": "listOptions 有索引签名 [name: string]: any,但 label 是必填字段,不传会导致运行时显示空白",
129
+ "wrong": "const list = [{ path: '/home' }, { path: '/detail' }]; // 缺少 label,显示空白",
130
+ "right": "const list: listOptions[] = [{ label: '首页', path: '/home' }, { label: '详情', path: '/detail' }];"
131
+ },
132
+ {
133
+ "issue": "disabled 字段是 listOptions 可选属性(boolean),但 TypeScript 在索引签名下不强制检查类型",
134
+ "wrong": "const list = [{ label: '返回', disabled: 'true' }]; // 字符串 'true' 在 runtime 按 truthy 处理,但语义错",
135
+ "right": "const list: listOptions[] = [{ label: '返回', disabled: true }]; // 显式声明 listOptions[] 让 TS 检查"
136
+ }
137
+ ],
138
+ "mapping": {
139
+ "realComponent": "Breadcrumbs",
140
+ "adapter": null
141
+ }
142
+ }
@@ -0,0 +1,168 @@
1
+ {
2
+ "name": "Button",
3
+ "category": "Basic",
4
+ "description": "用于触发用户操作的按钮组件",
5
+ "semantic": {
6
+ "intent": [
7
+ "提交",
8
+ "确认",
9
+ "触发操作",
10
+ "导航"
11
+ ],
12
+ "useCases": [
13
+ "表单提交",
14
+ "弹窗确认",
15
+ "页面主操作",
16
+ "表格操作栏"
17
+ ],
18
+ "riskLevel": "normal"
19
+ },
20
+ "variants": {
21
+ "contained": {
22
+ "meaning": "主要操作,强调引导用户点击",
23
+ "constraints": [
24
+ "一个操作区域通常只放置一个 contained 按钮"
25
+ ]
26
+ },
27
+ "outlined": {
28
+ "meaning": "次要操作,作为一个替代选择"
29
+ },
30
+ "text": {
31
+ "meaning": "最轻量级的操作,通常用于表格行内或辅助位置"
32
+ }
33
+ },
34
+ "modifiers": {
35
+ "danger": {
36
+ "meaning": "高风险操作标识(如删除、重置),与 variant 正交——可与 contained/outlined/text 任一组合",
37
+ "constraints": [
38
+ "建议配合二次确认(如 PopConfirm)使用,但非强制"
39
+ ]
40
+ }
41
+ },
42
+ "states": [
43
+ "default",
44
+ "disabled",
45
+ "loading"
46
+ ],
47
+ "idealProps": {
48
+ "variant": {
49
+ "type": "enum",
50
+ "values": [
51
+ "contained",
52
+ "outlined",
53
+ "text"
54
+ ],
55
+ "default": "contained"
56
+ },
57
+ "size": {
58
+ "type": "enum",
59
+ "values": [
60
+ "small",
61
+ "medium",
62
+ "large"
63
+ ],
64
+ "default": "large",
65
+ "description": "按钮尺寸。**注意:默认 large**(与 antd/MUI 业界惯例 medium 不同——这是 para-ui 的设计选择,DEFECT-003 wont-fix 留设计评审)。如需业界默认尺寸请显式传 size='medium'"
66
+ },
67
+ "loading": {
68
+ "type": "boolean | { delay: number }",
69
+ "default": false,
70
+ "description": "载入状态。loading=true 时按钮显示 loading 图标 + 自动加 disabled 属性(**隐含 disabled,onClick 不触发**)——与 antd/MUI 惯例一致。`loading={delay: ms}`:loading spinner 最短可见时长(delay 毫秒),防止快速请求场景闪烁",
71
+ "behaviorNote": "v5.x DEFECT-001 修复:之前需要 `disabled={loading}` 双写防御,**现在 loading=true 已自动隐含 disabled(onClick 不触发),无需再写 disabled={loading}**——双写不造成 bug 但属于冗余代码。零破坏:src 业务 0 引用此 prop;docs 仅 1 处示例不受影响"
72
+ },
73
+ "disabled": {
74
+ "type": "boolean",
75
+ "default": false
76
+ },
77
+ "danger": {
78
+ "type": "boolean",
79
+ "default": false,
80
+ "description": "危险操作修饰符;与 variant 正交(可与 contained/outlined/text 任一组合)。详见顶层 modifiers.danger"
81
+ },
82
+ "startIcon": {
83
+ "type": "ReactNode",
84
+ "description": "前置图标"
85
+ },
86
+ "endIcon": {
87
+ "type": "ReactNode",
88
+ "description": "后置图标"
89
+ },
90
+ "href": {
91
+ "type": "string",
92
+ "description": "跳转链接,传入此属性时行为类似 a 标签"
93
+ },
94
+ "target": {
95
+ "type": "string",
96
+ "description": "链接打开方式"
97
+ },
98
+ "toolTipTitle": {
99
+ "type": "ReactNode",
100
+ "description": "**hover 悬停提示(最简快捷写法)——仅 disabled=false 时生效**。src 内 toolTipTitle 路径把 Tooltip `disabled={disabled}` 透传,因此按钮禁用时 Tooltip 同时被禁用(tooltip 不显示)。⚠️ Tooltip 相关共有 3 个 prop(toolTipTitle / TooltipProps / disabledTooltip),命名风格不一致 + 职责重叠是已知问题(DEFECT-002,独立 epic 评审中——src 内 134+ 处使用)。**优先级(src 实证)**:① disabled=true + disabledTooltip 有值 → 走 disabledTooltip 路径;② toolTipTitle 非空 → 显示 Tooltip(disabled=false 时);③ TooltipProps 覆盖 toolTipTitle 的 arrow/placement 等样式参数。**结论:disabled 状态的悬停提示必须用 disabledTooltip,toolTipTitle 在 disabled=true 时不显示**。**传 undefined / null / false 时等价于不传,不渲染 Tooltip wrapper,不影响点击区域**"
101
+ },
102
+ "disabledTooltip": {
103
+ "type": "{ title: ReactNode; placement?: string; arrow?: boolean; [key: string]: any }",
104
+ "description": "**disabled=true 时的悬停提示**(toolTipTitle 在 disabled=true 时不生效,需用此 prop)。TooltipProps 核心字段:`title: ReactNode`(必填)/ `placement?`(弹出方向,默认 'top')/ `arrow?: boolean`(箭头)。**最简写法**:`disabledTooltip={{ title: '不可操作原因' }}`"
105
+ },
106
+ "children": {
107
+ "type": "ReactNode",
108
+ "description": "**按钮文案或内容(正式 prop)**。通过 React 标准 children 传入;可传字符串或 ReactNode,与 startIcon/endIcon 可同时使用。ButtonProps extends ButtonOrAnchorAttributes(继承自 React.ButtonHTMLAttributes),children 是标准 React prop——不单独在此处列出不代表不支持"
109
+ }
110
+ },
111
+ "do": [
112
+ "主要操作使用 contained",
113
+ "重要但非主要操作使用 outlined",
114
+ "危险操作必须明确标识(danger 属性)",
115
+ "表单提交场景传 `type='submit'`(默认 `type='button'` 防意外表单提交;Button 通过 restProps 透传 HTML 原生 button 属性,`type='submit'` 会覆盖默认值生效)。⚠️ **type 是 HTML native attribute · 只接受 'button' / 'submit' / 'reset'。若你想用 antd 风格 `type='primary'` · paraui 对应是 `variant='contained'`;若你想 antd `type='default'` · paraui 用 `variant='outlined'`;若 antd `type='danger'` · paraui 用 `danger={true}`(modifier · 与 variant 正交)**",
116
+ "disabled 状态需要悬停提示时用 disabledTooltip(toolTipTitle 在 disabled=true 时不显示)",
117
+ "loading 状态无需额外写 disabled={loading}——loading=true 已自动隐含 disabled(DEFECT-001 修复)",
118
+ "**ButtonProps extends ButtonOrAnchorAttributes**(src/Button/index.tsx:21):所有原生 button/a 属性均可安全透传,TypeScript 严格模式下不会类型报错——`type='submit'` / `name` / `form`(关联 form id)/ `disabled` / `aria-*` 等均可用"
119
+ ],
120
+ "dont": [
121
+ "在同一区域放置过多 contained 按钮",
122
+ "使用 disabled 按钮作为唯一的禁用反馈(应配合 Tooltip 解释原因)",
123
+ "❌ 不要用 `type='primary'` / `type='default'` / `type='danger'`(antd 风格)· paraui 用 `variant='contained'` / `variant='outlined'` / `danger={true}`(modifier 与 variant 正交)",
124
+ "❌ 不要用 `color='primary'`(MUI 风格)· paraui 用 variant + danger 拆分语义"
125
+ ],
126
+ "events": {
127
+ "onClick": {
128
+ "signature": "(event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void",
129
+ "asyncSupported": false,
130
+ "examples": [
131
+ "基本点击处理:onClick={() => handleSubmit()}",
132
+ "需要阻止冒泡:onClick={(e) => { e.stopPropagation(); doAction(); }}",
133
+ "loading 状态下 onClick 不触发(已自动隐含 disabled):无需 onClick 里手动判断 isLoading"
134
+ ],
135
+ "commonMistakes": [
136
+ "loading=true 时期望 onClick 还触发——loading 自动隐含 disabled,onClick 被屏蔽;无需再写 disabled={loading}",
137
+ "disabled=true 时用 toolTipTitle 做禁用提示——disabled 状态下 toolTipTitle 不显示;需改用 disabledTooltip prop",
138
+ "在 href 模式(传了 href)下期望 onClick 阻止跳转——渲染为 <a>,onClick 里需 e.preventDefault() 才能阻止"
139
+ ]
140
+ }
141
+ },
142
+ "typescriptPitfalls": [
143
+ {
144
+ "issue": "variant 不是 antd 的 type,不接受 'primary'/'default'/'danger',只接受 'contained'/'outlined'/'text'",
145
+ "wrong": "// antd 风格:\n<Button type='primary'>提交</Button> // 这里 type 是 HTML button type,不是样式!",
146
+ "right": "// para-ui 风格:\n<Button variant='contained'>提交</Button> // 主要操作用 contained\n<Button variant='outlined'>取消</Button> // 次要操作用 outlined\n<Button danger>删除</Button> // 危险操作加 danger modifier"
147
+ },
148
+ {
149
+ "issue": "type prop 是 HTML 原生 button type('button'|'submit'|'reset'),不是样式 variant",
150
+ "wrong": "<Button type='primary'>提交</Button> // TypeScript 报错:'primary' 不在 'button'|'submit'|'reset' 联合类型",
151
+ "right": "<Button variant='contained' type='submit'>提交</Button> // type 只管 form 提交行为,默认 'button'"
152
+ },
153
+ {
154
+ "issue": "loading 的对象形式需要传 { delay: number },不能传其他结构",
155
+ "wrong": "loading={{ duration: 300 }} // TS 类型报错:对象形式只接受 { delay: number }",
156
+ "right": "loading={{ delay: 300 }} // delay 是 loading spinner 最短可见毫秒数"
157
+ },
158
+ {
159
+ "issue": "disabledTooltip 的 title 字段必填,TooltipProps 的 disabled 字段含义是'禁用 tooltip 本身'——不要传 disabled",
160
+ "wrong": "disabledTooltip={{ disabled: true, title: '...' }} // disabled 是 Tooltip 的开关,传 true 反而不显示",
161
+ "right": "disabledTooltip={{ title: '不可操作原因' }} // 只需 title,Button disabled=true 时自动触发"
162
+ }
163
+ ],
164
+ "mapping": {
165
+ "realComponent": "Button",
166
+ "adapter": null
167
+ }
168
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "name": "ButtonGroup",
3
+ "category": "General",
4
+ "description": "按钮组,将多个按钮组合在一起",
5
+ "semantic": {
6
+ "intent": [
7
+ "操作分组",
8
+ "互斥选择"
9
+ ],
10
+ "useCases": [
11
+ "视图切换",
12
+ "格式化工具栏",
13
+ "分段控制"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "icon": {
19
+ "meaning": "图标模式"
20
+ },
21
+ "iconSplit": {
22
+ "meaning": "图标分割模式"
23
+ },
24
+ "text": {
25
+ "meaning": "文本模式"
26
+ }
27
+ },
28
+ "states": [
29
+ "default",
30
+ "disabled"
31
+ ],
32
+ "idealProps": {
33
+ "data": {
34
+ "type": "ButtonItem[]",
35
+ "itemSchema": {
36
+ "icon": { "type": "ReactNode", "description": "按钮图标" },
37
+ "text": { "type": "ReactNode", "description": "按钮文本(icon/iconSplit 模式下仅作 tooltip 默认值;text 模式下为显示文字)" },
38
+ "disabled": { "type": "boolean", "description": "单项禁用(覆盖组件级 disabled)" },
39
+ "toolTipTitle": { "type": "ReactNode", "description": "该项 tooltip 文案(优先级高于 text)" },
40
+ "variant": { "type": "'contained' | 'outlined' | 'text'", "description": "继承自 ButtonProps,text 模式下用于标识激活态" }
41
+ },
42
+ "description": "按钮组数据数组,每项 ButtonItem extends ButtonProps(来自 src/Button — 可用 variant / size / loading / type 等全部 Button 字段),额外含 ButtonGroup 专用字段 icon? / text? / toolTipTitle? + 索引签名透传业务字段;src/ButtonGroup/index.tsx:15。**text 字段双语义**:icon/iconSplit 模式下 text 仅作 tooltip 默认值(不显示为按钮文字),text 模式下 text 才是按钮显示文字。**ButtonItem.value 字段冲突**:继承自 Button 类型为 `string | number | readonly string[] | undefined`,**不是单纯 string** — 业务标识请用 viewId / actionKey / menuKey 等独有名避免 tsc 报错(R22 ButtonGroup-004 实证)。**data[].disabled** 是单项独立覆盖字段(boolean,非字符串)"
43
+ },
44
+ "mode": {
45
+ "type": "enum",
46
+ "values": [
47
+ "icon",
48
+ "iconSplit",
49
+ "text"
50
+ ],
51
+ "default": "icon",
52
+ "description": "按钮组模式(icon=纯图标 / iconSplit=分割可见 / text=纯文字)。**text 模式下 variant 切换有效**:variant='contained' 实心高亮 / variant='outlined' 描边弱化 — 配合外部 activeKey state 实现 tabs 视觉切换(组件无内置 active 状态)"
53
+ },
54
+ "layout": {
55
+ "type": "enum",
56
+ "values": [
57
+ "horizontal",
58
+ "vertical"
59
+ ],
60
+ "default": "horizontal",
61
+ "description": "布局方向"
62
+ },
63
+ "showToolTip": {
64
+ "type": "boolean",
65
+ "default": "false",
66
+ "description": "对每按钮显示 tooltip,未设 toolTipTitle 时自动用 text 作为提示;单项 toolTipTitle 优先级高于此自动逻辑"
67
+ },
68
+ "showIcon": {
69
+ "type": "boolean",
70
+ "default": "false",
71
+ "description": "text 模式下文字前显示 icon(icon/iconSplit 模式无效)"
72
+ },
73
+ "disabled": {
74
+ "type": "boolean",
75
+ "default": "false",
76
+ "description": "整组禁用;单项可通过 data[].disabled(**boolean,不是字符串 'true'**)单独覆盖;src/ButtonGroup/index.tsx:88 单项若未设则继承顶层"
77
+ },
78
+ "onClick": {
79
+ "type": "(item: ButtonItem, event?: React.MouseEvent) => void",
80
+ "description": "点击回调;**item 是被点击的整个 ButtonItem 对象**(含 data 项里的所有自定义字段,如业务 id / viewId 等)— 推荐做法:在 data 每项上挂 value / viewId 等业务字段,onClick 内 item.viewId 直取(不必维护 index → 业务 id 的映射)"
81
+ }
82
+ },
83
+ "do": [
84
+ "用于互斥或相关操作的分组",
85
+ "保持按钮数量适中(2-5)",
86
+ "在 data 每项透传业务字段(如 value / viewId / actionKey),onClick 内 item.业务字段 取值"
87
+ ],
88
+ "dont": [
89
+ "ButtonGroup 内放置不相关的操作",
90
+ "按钮过多导致布局拥挤",
91
+ "把 data[].disabled 传字符串 'true'(必须 boolean — runtime 行为不可信)",
92
+ "假设 ButtonGroup 有内置 active/selected 状态(无此 prop — tabs 切换需外部 state 维护 activeKey,根据 activeKey 在 data 项里切 variant: 'contained' | 'outlined')",
93
+ "把业务标识透传到 ButtonItem.value 字段(value 继承自 Button 是宽类型 `string | number | readonly string[] | undefined` — tsc 会报错;业务标识用 viewId / actionKey / menuKey 等独有名)"
94
+ ],
95
+ "events": {
96
+ "onClick": {
97
+ "signature": "(item: ButtonItem, event?: React.MouseEvent) => void",
98
+ "asyncSupported": false,
99
+ "examples": [
100
+ "通用点击入口:onClick={(item) => dispatch({ type: item.actionKey })}",
101
+ "获取被点击项的业务标识:onClick={(item) => navigate(item.viewId)}",
102
+ "需要事件对象:onClick={(item, event) => { event?.stopPropagation(); handleItem(item); }}"
103
+ ],
104
+ "commonMistakes": [
105
+ "期望 item 只是 index 或 key——item 是被点击的完整 ButtonItem 对象,含 data[] 中该项的所有字段",
106
+ "在 data 里用 ButtonItem.value 存业务 id——value 继承自 Button 是宽类型 string|number|readonly string[]|undefined,建议用 viewId/actionKey 等独有字段名",
107
+ "event 参数是可选的(签名 event?),回调内直接访问 event.target 前需检查 event 非 undefined"
108
+ ]
109
+ }
110
+ },
111
+ "typescriptPitfalls": [
112
+ {
113
+ "issue": "ButtonItem 继承自 ButtonProps,value 字段类型是 string|number|readonly string[]|undefined,不是单纯 string",
114
+ "wrong": "const items: ButtonItem[] = [{ icon: <Icon/>, text: '编辑', value: 'edit' }];\n// onClick 中:const id: string = item.value; // TS 报错:不可分配给 string",
115
+ "right": "// 使用自定义字段名避免冲突\nconst items: ButtonItem[] = [{ icon: <Icon/>, text: '编辑', actionKey: 'edit' }];\n// onClick 中:const key = (item as any).actionKey;"
116
+ },
117
+ {
118
+ "issue": "ButtonGroup 没有内置 active/selected 状态,需要外部 state 维护并通过 variant 切换视觉",
119
+ "wrong": "// 期望有 activeKey prop 自动高亮\n<ButtonGroup data={tabs} activeKey='tab1' /> // activeKey 不在 ButtonGroupProps,静默失效",
120
+ "right": "// 外部维护 activeKey,按需设置 variant\nconst [active, setActive] = useState('tab1');\n<ButtonGroup\n mode='text'\n data={tabs.map(t => ({ ...t, variant: t.id === active ? 'contained' : 'outlined' }))}\n onClick={(item) => setActive((item as any).id)}\n/>"
121
+ },
122
+ {
123
+ "issue": "data[].disabled 必须是 boolean,不能是字符串 'true',因为 ButtonGroup src 用 typeof _disabled === 'undefined' 做判断",
124
+ "wrong": "const items: ButtonItem[] = [{ text: '删除', disabled: 'true' as any }]; // 字符串 'true' 是 truthy,不是 boolean true",
125
+ "right": "const items: ButtonItem[] = [{ text: '删除', disabled: true }]; // 明确传 boolean"
126
+ }
127
+ ],
128
+ "mapping": {
129
+ "realComponent": "ButtonGroup",
130
+ "adapter": null
131
+ }
132
+ }