@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14

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 (565) 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/codemods/modal-onCancel-to-onDismiss.js +69 -0
  103. package/es/AlignBox/component.json +89 -0
  104. package/es/AlignBox/index.css +1 -1
  105. package/es/AlignBox/index.d.ts +6 -2
  106. package/es/AlignBox/index.js +1 -1
  107. package/es/AlignBox/style/index.css +1 -1
  108. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  109. package/es/Anchor/anchorMenu/index.js +36 -33
  110. package/es/Anchor/component.json +130 -0
  111. package/es/Anchor/index.js +50 -47
  112. package/es/Anchor/type.d.ts +8 -4
  113. package/es/Argv/component.json +216 -0
  114. package/es/Argv/index.d.ts +5 -6
  115. package/es/AutoBox/component.json +133 -0
  116. package/es/AutoBox/index.d.ts +3 -3
  117. package/es/AutoBox/index.js +1 -1
  118. package/es/AutoBox/protal.d.ts +2 -2
  119. package/es/AutoBox/protal.js +32 -29
  120. package/es/AutoButton/component.json +109 -0
  121. package/es/AutoButton/index.js +1 -1
  122. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  123. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  124. package/es/AutoTips/component.json +121 -0
  125. package/es/Badge/component.json +92 -0
  126. package/es/Breadcrumbs/component.json +142 -0
  127. package/es/Breadcrumbs/index.js +1 -1
  128. package/es/Button/SplitButton.d.ts +2 -2
  129. package/es/Button/component.json +168 -0
  130. package/es/Button/index.js +44 -44
  131. package/es/ButtonGroup/component.json +132 -0
  132. package/es/ButtonGroup/index.d.ts +1 -1
  133. package/es/Card/component.json +162 -0
  134. package/es/Card/index.d.ts +2 -2
  135. package/es/Card/index.js +2 -2
  136. package/es/Carousel/component.json +142 -0
  137. package/es/Carousel/index.d.ts +1 -1
  138. package/es/Cascader/Cascader.js +188 -180
  139. package/es/Cascader/component.json +196 -0
  140. package/es/Cascader/hooks/useEntities.js +7 -7
  141. package/es/Cascader/interface.d.ts +1 -0
  142. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  143. package/es/Cascader/utils/commonUtil.js +16 -16
  144. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  145. package/es/Cascader/utils/treeUtil.js +1 -1
  146. package/es/Checkbox/component.json +138 -0
  147. package/es/CheckboxGroup/component.json +152 -0
  148. package/es/CodeEditor/component.json +189 -0
  149. package/es/CodeEditor/index.d.ts +10 -9
  150. package/es/Collapse/component.json +166 -0
  151. package/es/Collapse/index.d.ts +1 -1
  152. package/es/Collapse/index.js +41 -33
  153. package/es/CollapseBox/component.json +84 -0
  154. package/es/CollapseLayout/component.json +155 -0
  155. package/es/ColorPicker/component.json +142 -0
  156. package/es/ComboSelect/component.json +181 -0
  157. package/es/ComboSelect/index.js +299 -287
  158. package/es/ComboSelect/interface.d.ts +6 -3
  159. package/es/ComboSelect/utils.d.ts +3 -3
  160. package/es/ComboSelect/utils.js +1 -1
  161. package/es/Container/component.json +111 -0
  162. package/es/ContentBox/component.json +81 -0
  163. package/es/CopyText/component.json +118 -0
  164. package/es/CycleSelector/component.json +98 -0
  165. package/es/CycleSelector/index.js +14 -13
  166. package/es/DatePicker/component.json +192 -0
  167. package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  168. package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
  169. package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  170. package/es/DatePicker/generatePicker/index.d.ts +11 -4
  171. package/es/Descriptions/component.json +142 -0
  172. package/es/Descriptions/index.d.ts +1 -1
  173. package/es/Desktop/component.json +171 -0
  174. package/es/DragVerify/component.json +114 -0
  175. package/es/DragVerify/index.js +19 -19
  176. package/es/Drawer/component.json +200 -0
  177. package/es/Drawer/index.js +86 -86
  178. package/es/Drawer/interface.d.ts +1 -1
  179. package/es/Drawer/util.d.ts +1 -6
  180. package/es/Drawer/util.js +9 -6
  181. package/es/Dropdown/component.json +147 -0
  182. package/es/DynamicMultiBox/component.json +278 -0
  183. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  184. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  185. package/es/Empty/component.json +123 -0
  186. package/es/Empty/index.css +1 -1
  187. package/es/Empty/index.d.ts +2 -2
  188. package/es/Empty/index.js +27 -26
  189. package/es/Empty/style/index.css +1 -1
  190. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  191. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  192. package/es/FieldForm/Form.d.ts +2 -2
  193. package/es/FieldForm/FormList.d.ts +2 -2
  194. package/es/FieldForm/component.json +196 -0
  195. package/es/FieldForm/context.d.ts +5 -1
  196. package/es/FieldForm/context.js +2 -2
  197. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  198. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  199. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  200. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  201. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  202. package/es/FieldForm/hooks/useItemRef.js +6 -6
  203. package/es/Form/component.json +161 -0
  204. package/es/Form/index.d.ts +52 -49
  205. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  206. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  207. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  208. package/es/FormItem/compoments/formFile/index.js +8 -8
  209. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  210. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  211. package/es/FormItem/component.json +171 -0
  212. package/es/FormItem/index.d.ts +5 -5
  213. package/es/FormItem/index.js +23 -23
  214. package/es/FormItem/itemType.js +1 -1
  215. package/es/FunctionModal/component.json +197 -0
  216. package/es/FunctionModal/dialog.d.ts +1 -1
  217. package/es/FunctionModal/modalContext.d.ts +4 -1
  218. package/es/Help/component.json +118 -0
  219. package/es/HelperText/component.json +126 -0
  220. package/es/Image/component.json +165 -0
  221. package/es/InputCode/component.json +191 -0
  222. package/es/InputCode/index.d.ts +2 -2
  223. package/es/InputLang/component.json +205 -0
  224. package/es/InputLang/index.js +1 -1
  225. package/es/InputNumber/component.json +162 -0
  226. package/es/Label/component.json +126 -0
  227. package/es/Label/index.d.ts +2 -2
  228. package/es/Loading/component.json +91 -0
  229. package/es/Menu/component.json +180 -0
  230. package/es/Message/component.json +246 -0
  231. package/es/Message/index.d.ts +2 -2
  232. package/es/Message/index.js +2 -2
  233. package/es/Modal/Confirm/index.d.ts +1 -1
  234. package/es/Modal/Confirm/index.js +81 -75
  235. package/es/Modal/component.json +277 -0
  236. package/es/Modal/index.d.ts +97 -6
  237. package/es/Modal/index.js +174 -122
  238. package/es/Modal/interface.d.ts +1 -0
  239. package/es/MultiBox/component.json +216 -0
  240. package/es/MultiBox/index.js +19 -14
  241. package/es/Notification/component.json +184 -0
  242. package/es/OperateBtn/component.json +134 -0
  243. package/es/OperateBtn/index.d.ts +3 -3
  244. package/es/PageHeader/component.json +112 -0
  245. package/es/Pagination/component.json +181 -0
  246. package/es/Pagination/index.js +15 -15
  247. package/es/PasswordRules/component.json +105 -0
  248. package/es/PasswordRules/index.d.ts +4 -4
  249. package/es/PopConfirm/component.json +227 -0
  250. package/es/PopConfirm/index.d.ts +1 -1
  251. package/es/PopConfirm/index.js +1 -1
  252. package/es/PopMenu/component.json +131 -0
  253. package/es/PopMenu/hooks.d.ts +1 -1
  254. package/es/PopMenu/index.js +8 -8
  255. package/es/Popover/component.json +165 -0
  256. package/es/Popover/index.js +1 -1
  257. package/es/Progress/component.json +161 -0
  258. package/es/Prompt/component.json +144 -0
  259. package/es/Querying/component.json +96 -0
  260. package/es/Querying/index.css +1 -1
  261. package/es/Querying/index.d.ts +2 -2
  262. package/es/Querying/index.js +20 -19
  263. package/es/Querying/style/index.css +1 -1
  264. package/es/QuickReply/component.json +129 -0
  265. package/es/QuickReply/index.d.ts +1 -1
  266. package/es/Radio/component.json +136 -0
  267. package/es/RadioGroup/component.json +149 -0
  268. package/es/RangeInput/component.json +198 -0
  269. package/es/RangeInput/index.js +1 -1
  270. package/es/Result/component.json +104 -0
  271. package/es/ScrollBar/component.json +115 -0
  272. package/es/Search/component.json +177 -0
  273. package/es/Search/index.d.ts +1 -1
  274. package/es/Select/component.json +244 -0
  275. package/es/Select/index.js +113 -113
  276. package/es/SelectInput/component.json +184 -0
  277. package/es/Selector/component.json +203 -0
  278. package/es/Selector/index.js +28 -27
  279. package/es/Selector/interface.d.ts +1 -1
  280. package/es/Selector/selectorMain/index.js +2 -2
  281. package/es/Selector/selectorNode/index.js +1 -1
  282. package/es/Selector/util.d.ts +2 -2
  283. package/es/SelectorPicker/component.json +179 -0
  284. package/es/SelectorPicker/index.d.ts +5 -5
  285. package/es/SelectorPicker/index.js +15 -15
  286. package/es/SingleBox/component.json +151 -0
  287. package/es/SingleBox/index.d.ts +2 -2
  288. package/es/Slider/component.json +181 -0
  289. package/es/SortBox/component.json +108 -0
  290. package/es/Status/component.json +104 -0
  291. package/es/Stepper/component.json +129 -0
  292. package/es/Stepper/index.d.ts +2 -2
  293. package/es/Switch/component.json +207 -0
  294. package/es/Switch/index.css +1 -1
  295. package/es/Switch/index.d.ts +3 -2
  296. package/es/Switch/index.js +60 -59
  297. package/es/Switch/style/index.css +1 -1
  298. package/es/Table/component.json +547 -0
  299. package/es/Table/index.d.ts +2 -2
  300. package/es/Table/index.js +414 -414
  301. package/es/Table/interface.d.ts +6 -0
  302. package/es/Tabs/component.json +227 -0
  303. package/es/Tag/component.json +221 -0
  304. package/es/Tag/index.css +1 -1
  305. package/es/Tag/index.d.ts +1 -1
  306. package/es/Tag/index.js +20 -20
  307. package/es/Tag/style/index.css +1 -1
  308. package/es/TextEditor/component.json +186 -0
  309. package/es/TextEditor/index.d.ts +5 -5
  310. package/es/TextField/component.json +290 -0
  311. package/es/TextField/index.d.ts +2 -2
  312. package/es/TimePicker/component.json +176 -0
  313. package/es/Timeline/component.json +110 -0
  314. package/es/Title/component.json +156 -0
  315. package/es/ToggleButton/component.json +153 -0
  316. package/es/Tooltip/component.json +176 -0
  317. package/es/Tooltip/index.js +74 -63
  318. package/es/Tooltip/interface.d.ts +14 -1
  319. package/es/Tooltip/utils.js +6 -6
  320. package/es/Transfer/component.json +157 -0
  321. package/es/Tree/component.json +512 -0
  322. package/es/Upload/component.json +450 -0
  323. package/es/Utils/type.d.ts +0 -2
  324. package/es/index.d.ts +2 -0
  325. package/es/index.js +1 -1
  326. package/es/locale/en_US.d.ts +361 -0
  327. package/es/locale/en_US.js +364 -0
  328. package/es/locale/index.d.ts +1 -723
  329. package/es/locale/index2.js +10 -0
  330. package/es/locale/zh_CN.d.ts +361 -0
  331. package/es/locale/zh_CN.js +364 -0
  332. package/lib/AlignBox/component.json +89 -0
  333. package/lib/AlignBox/index.css +1 -1
  334. package/lib/AlignBox/index.d.ts +6 -2
  335. package/lib/AlignBox/index.js +1 -1
  336. package/lib/AlignBox/style/index.css +1 -1
  337. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  338. package/lib/Anchor/anchorMenu/index.js +1 -1
  339. package/lib/Anchor/component.json +130 -0
  340. package/lib/Anchor/index.js +1 -1
  341. package/lib/Anchor/type.d.ts +8 -4
  342. package/lib/Argv/component.json +216 -0
  343. package/lib/Argv/index.d.ts +5 -6
  344. package/lib/AutoBox/component.json +133 -0
  345. package/lib/AutoBox/index.d.ts +3 -3
  346. package/lib/AutoBox/index.js +1 -1
  347. package/lib/AutoBox/protal.d.ts +2 -2
  348. package/lib/AutoBox/protal.js +1 -1
  349. package/lib/AutoButton/component.json +109 -0
  350. package/lib/AutoButton/index.js +1 -1
  351. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  352. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  353. package/lib/AutoTips/component.json +121 -0
  354. package/lib/Badge/component.json +92 -0
  355. package/lib/Breadcrumbs/component.json +142 -0
  356. package/lib/Breadcrumbs/index.js +1 -1
  357. package/lib/Button/SplitButton.d.ts +2 -2
  358. package/lib/Button/component.json +168 -0
  359. package/lib/Button/index.js +1 -1
  360. package/lib/ButtonGroup/component.json +132 -0
  361. package/lib/ButtonGroup/index.d.ts +1 -1
  362. package/lib/Card/component.json +162 -0
  363. package/lib/Card/index.d.ts +2 -2
  364. package/lib/Card/index.js +1 -1
  365. package/lib/Carousel/component.json +142 -0
  366. package/lib/Carousel/index.d.ts +1 -1
  367. package/lib/Cascader/Cascader.js +1 -1
  368. package/lib/Cascader/component.json +196 -0
  369. package/lib/Cascader/hooks/useEntities.js +1 -1
  370. package/lib/Cascader/interface.d.ts +1 -0
  371. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  372. package/lib/Cascader/utils/commonUtil.js +1 -1
  373. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  374. package/lib/Cascader/utils/treeUtil.js +1 -1
  375. package/lib/Checkbox/component.json +138 -0
  376. package/lib/CheckboxGroup/component.json +152 -0
  377. package/lib/CodeEditor/component.json +189 -0
  378. package/lib/CodeEditor/index.d.ts +10 -9
  379. package/lib/Collapse/component.json +166 -0
  380. package/lib/Collapse/index.d.ts +1 -1
  381. package/lib/Collapse/index.js +1 -1
  382. package/lib/CollapseBox/component.json +84 -0
  383. package/lib/CollapseLayout/component.json +155 -0
  384. package/lib/ColorPicker/component.json +142 -0
  385. package/lib/ComboSelect/component.json +181 -0
  386. package/lib/ComboSelect/index.js +1 -1
  387. package/lib/ComboSelect/interface.d.ts +6 -3
  388. package/lib/ComboSelect/utils.d.ts +3 -3
  389. package/lib/ComboSelect/utils.js +1 -1
  390. package/lib/Container/component.json +111 -0
  391. package/lib/ContentBox/component.json +81 -0
  392. package/lib/CopyText/component.json +118 -0
  393. package/lib/CycleSelector/component.json +98 -0
  394. package/lib/CycleSelector/index.js +1 -1
  395. package/lib/DatePicker/component.json +192 -0
  396. package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  397. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  398. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  399. package/lib/DatePicker/generatePicker/index.d.ts +11 -4
  400. package/lib/Descriptions/component.json +142 -0
  401. package/lib/Descriptions/index.d.ts +1 -1
  402. package/lib/Desktop/component.json +171 -0
  403. package/lib/DragVerify/component.json +114 -0
  404. package/lib/DragVerify/index.js +1 -1
  405. package/lib/Drawer/component.json +200 -0
  406. package/lib/Drawer/index.js +1 -1
  407. package/lib/Drawer/interface.d.ts +1 -1
  408. package/lib/Drawer/util.d.ts +1 -6
  409. package/lib/Drawer/util.js +1 -1
  410. package/lib/Dropdown/component.json +147 -0
  411. package/lib/DynamicMultiBox/component.json +278 -0
  412. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  413. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  414. package/lib/Empty/component.json +123 -0
  415. package/lib/Empty/index.css +1 -1
  416. package/lib/Empty/index.d.ts +2 -2
  417. package/lib/Empty/index.js +1 -1
  418. package/lib/Empty/style/index.css +1 -1
  419. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  420. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  421. package/lib/FieldForm/Form.d.ts +2 -2
  422. package/lib/FieldForm/FormList.d.ts +2 -2
  423. package/lib/FieldForm/component.json +196 -0
  424. package/lib/FieldForm/context.d.ts +5 -1
  425. package/lib/FieldForm/context.js +1 -1
  426. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  427. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  428. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  429. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  430. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  431. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  432. package/lib/Form/component.json +161 -0
  433. package/lib/Form/index.d.ts +52 -49
  434. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  435. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  436. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  437. package/lib/FormItem/compoments/formFile/index.js +1 -1
  438. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  439. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  440. package/lib/FormItem/component.json +171 -0
  441. package/lib/FormItem/index.d.ts +5 -5
  442. package/lib/FormItem/index.js +1 -1
  443. package/lib/FormItem/itemType.js +1 -1
  444. package/lib/FunctionModal/component.json +197 -0
  445. package/lib/FunctionModal/dialog.d.ts +1 -1
  446. package/lib/FunctionModal/modalContext.d.ts +4 -1
  447. package/lib/Help/component.json +118 -0
  448. package/lib/HelperText/component.json +126 -0
  449. package/lib/Image/component.json +165 -0
  450. package/lib/InputCode/component.json +191 -0
  451. package/lib/InputCode/index.d.ts +2 -2
  452. package/lib/InputLang/component.json +205 -0
  453. package/lib/InputLang/index.js +1 -1
  454. package/lib/InputNumber/component.json +162 -0
  455. package/lib/Label/component.json +126 -0
  456. package/lib/Label/index.d.ts +2 -2
  457. package/lib/Loading/component.json +91 -0
  458. package/lib/Menu/component.json +180 -0
  459. package/lib/Message/component.json +246 -0
  460. package/lib/Message/index.d.ts +2 -2
  461. package/lib/Message/index.js +1 -1
  462. package/lib/Modal/Confirm/index.d.ts +1 -1
  463. package/lib/Modal/Confirm/index.js +1 -1
  464. package/lib/Modal/component.json +277 -0
  465. package/lib/Modal/index.d.ts +97 -6
  466. package/lib/Modal/index.js +1 -1
  467. package/lib/Modal/interface.d.ts +1 -0
  468. package/lib/MultiBox/component.json +216 -0
  469. package/lib/MultiBox/index.js +1 -1
  470. package/lib/Notification/component.json +184 -0
  471. package/lib/OperateBtn/component.json +134 -0
  472. package/lib/OperateBtn/index.d.ts +3 -3
  473. package/lib/PageHeader/component.json +112 -0
  474. package/lib/Pagination/component.json +181 -0
  475. package/lib/Pagination/index.js +1 -1
  476. package/lib/PasswordRules/component.json +105 -0
  477. package/lib/PasswordRules/index.d.ts +4 -4
  478. package/lib/PopConfirm/component.json +227 -0
  479. package/lib/PopConfirm/index.d.ts +1 -1
  480. package/lib/PopConfirm/index.js +1 -1
  481. package/lib/PopMenu/component.json +131 -0
  482. package/lib/PopMenu/hooks.d.ts +1 -1
  483. package/lib/PopMenu/index.js +1 -1
  484. package/lib/Popover/component.json +165 -0
  485. package/lib/Popover/index.js +1 -1
  486. package/lib/Progress/component.json +161 -0
  487. package/lib/Prompt/component.json +144 -0
  488. package/lib/Querying/component.json +96 -0
  489. package/lib/Querying/index.css +1 -1
  490. package/lib/Querying/index.d.ts +2 -2
  491. package/lib/Querying/index.js +1 -1
  492. package/lib/Querying/style/index.css +1 -1
  493. package/lib/QuickReply/component.json +129 -0
  494. package/lib/QuickReply/index.d.ts +1 -1
  495. package/lib/Radio/component.json +136 -0
  496. package/lib/RadioGroup/component.json +149 -0
  497. package/lib/RangeInput/component.json +198 -0
  498. package/lib/RangeInput/index.js +1 -1
  499. package/lib/Result/component.json +104 -0
  500. package/lib/ScrollBar/component.json +115 -0
  501. package/lib/Search/component.json +177 -0
  502. package/lib/Search/index.d.ts +1 -1
  503. package/lib/Select/component.json +244 -0
  504. package/lib/Select/index.js +1 -1
  505. package/lib/SelectInput/component.json +184 -0
  506. package/lib/Selector/component.json +203 -0
  507. package/lib/Selector/index.js +1 -1
  508. package/lib/Selector/interface.d.ts +1 -1
  509. package/lib/Selector/selectorMain/index.js +1 -1
  510. package/lib/Selector/selectorNode/index.js +1 -1
  511. package/lib/Selector/util.d.ts +2 -2
  512. package/lib/SelectorPicker/component.json +179 -0
  513. package/lib/SelectorPicker/index.d.ts +5 -5
  514. package/lib/SelectorPicker/index.js +1 -1
  515. package/lib/SingleBox/component.json +151 -0
  516. package/lib/SingleBox/index.d.ts +2 -2
  517. package/lib/Slider/component.json +181 -0
  518. package/lib/SortBox/component.json +108 -0
  519. package/lib/Status/component.json +104 -0
  520. package/lib/Stepper/component.json +129 -0
  521. package/lib/Stepper/index.d.ts +2 -2
  522. package/lib/Switch/component.json +207 -0
  523. package/lib/Switch/index.css +1 -1
  524. package/lib/Switch/index.d.ts +3 -2
  525. package/lib/Switch/index.js +1 -1
  526. package/lib/Switch/style/index.css +1 -1
  527. package/lib/Table/component.json +547 -0
  528. package/lib/Table/index.d.ts +2 -2
  529. package/lib/Table/index.js +1 -1
  530. package/lib/Table/interface.d.ts +6 -0
  531. package/lib/Tabs/component.json +227 -0
  532. package/lib/Tag/component.json +221 -0
  533. package/lib/Tag/index.css +1 -1
  534. package/lib/Tag/index.d.ts +1 -1
  535. package/lib/Tag/index.js +1 -1
  536. package/lib/Tag/style/index.css +1 -1
  537. package/lib/TextEditor/component.json +186 -0
  538. package/lib/TextEditor/index.d.ts +5 -5
  539. package/lib/TextField/component.json +290 -0
  540. package/lib/TextField/index.d.ts +2 -2
  541. package/lib/TimePicker/component.json +176 -0
  542. package/lib/Timeline/component.json +110 -0
  543. package/lib/Title/component.json +156 -0
  544. package/lib/ToggleButton/component.json +153 -0
  545. package/lib/Tooltip/component.json +176 -0
  546. package/lib/Tooltip/index.js +1 -1
  547. package/lib/Tooltip/interface.d.ts +14 -1
  548. package/lib/Tooltip/utils.js +1 -1
  549. package/lib/Transfer/component.json +157 -0
  550. package/lib/Tree/component.json +512 -0
  551. package/lib/Upload/component.json +450 -0
  552. package/lib/Utils/type.d.ts +0 -2
  553. package/lib/index.d.ts +2 -0
  554. package/lib/index.js +1 -1
  555. package/lib/locale/en_US.d.ts +361 -0
  556. package/lib/locale/en_US.js +2 -0
  557. package/lib/locale/index.d.ts +1 -723
  558. package/lib/locale/index2.js +2 -0
  559. package/lib/locale/zh_CN.d.ts +361 -0
  560. package/lib/locale/zh_CN.js +2 -0
  561. package/package.json +10 -3
  562. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  563. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  564. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  565. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -0,0 +1,136 @@
1
+ {
2
+ "name": "Radio",
3
+ "category": "Data Entry",
4
+ "description": "单选框,用于在多个选项中选择一个,支持受控/非受控及 disabled tooltip",
5
+ "semantic": {
6
+ "intent": [
7
+ "单项选择",
8
+ "互斥选择"
9
+ ],
10
+ "useCases": [
11
+ "性别选择",
12
+ "支付方式",
13
+ "配置切换"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "独立单选框"
20
+ },
21
+ "group": {
22
+ "meaning": "单选框组"
23
+ },
24
+ "button": {
25
+ "meaning": "按钮样式单选"
26
+ }
27
+ },
28
+ "states": [
29
+ "checked",
30
+ "unchecked",
31
+ "disabled"
32
+ ],
33
+ "idealProps": {
34
+ "checked": {
35
+ "type": "boolean",
36
+ "description": "受控选中态;父维护 state · 互斥实现:`checked={selectedValue === thisValue}`;**onChange 仅 unchecked → checked 单向触发**(单选框选中后无法 UI 取消)"
37
+ },
38
+ "defaultChecked": {
39
+ "type": "boolean",
40
+ "description": "非受控初始选中态;首次渲染后内部维护;onChange 仍单向触发"
41
+ },
42
+ "disabled": {
43
+ "type": "boolean",
44
+ "default": false,
45
+ "description": "禁用(无法点击/触发 onChange);**本组件无 readOnly prop**,只读场景用 disabled+CSS 灰度覆盖"
46
+ },
47
+ "label": {
48
+ "type": "ReactNode",
49
+ "description": "标题文案;支持 ReactNode(AutoTips 包裹可实现超长截断+hover 显示完整,详见 codeString.ts labelOverflowRadio)"
50
+ },
51
+ "labelTooltip": {
52
+ "type": "LabelTooltipProps",
53
+ "description": "**帮助图标式 tooltip**:label 旁渲染 ? 图标 · hover 显示 tooltip;**不是文字截断省略**(截断需配 AutoTips 包 label · 见 codeString.ts)"
54
+ },
55
+ "width": {
56
+ "type": "string",
57
+ "description": "组件外层容器宽度;常用配合 label 截断(`width='100px'`)"
58
+ },
59
+ "onChange": {
60
+ "type": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
61
+ "description": "选中态变化回调(src/Radio/index.tsx:38 interface 实证,签名为 MouseEvent on HTMLLabelElement,非 ChangeEvent);**仅在 unchecked → checked 单向触发一次**;第二参数 checked = 切换后的新状态(本组件场景下永远为 true)"
62
+ },
63
+ "size": {
64
+ "type": "enum",
65
+ "values": ["small", "medium", "large"],
66
+ "default": "large",
67
+ "description": "单选框大小(src/Radio/index.tsx:24,46,77 实证:default='large';控制 CSS 类 paraui-v4-radio-{size})"
68
+ },
69
+ "disabledTooltip": {
70
+ "type": "TooltipProps",
71
+ "description": "禁用状态下的 Tooltip 配置(src/Radio/index.tsx:34-35,136-142 实证:disabled 时将整个 Radio 包裹在 Tooltip 内,透传全部 TooltipProps,字段名 `title` 作为提示内容)"
72
+ },
73
+ "inputProps": {
74
+ "type": "React.InputHTMLAttributes<HTMLInputElement>",
75
+ "description": "内层原生 radio input 的额外 props(src/Radio/index.tsx:36,118 实证:透传到 `<input type='radio' {...props.inputProps} />`,可用于设置 name/value 等原生属性)"
76
+ },
77
+ "className": {
78
+ "type": "string",
79
+ "description": "自定义类名(src/Radio/index.tsx:14,43 实证,追加到根 label 元素的 className)"
80
+ },
81
+ "style": {
82
+ "type": "React.CSSProperties",
83
+ "description": "自定义样式(src/Radio/index.tsx:16,51,102 实证,透传到根 label 元素的 style;与 width prop 合并)"
84
+ }
85
+ },
86
+ "do": [
87
+ "选项较少(< 5)时优先展示所有选项而非使用 Select",
88
+ "Radio Group 能够清晰展示所有可用选项",
89
+ "**多 Radio 互斥**:父维护 `useState<string> selectedValue` · 每个 Radio 用 `checked={selectedValue === thisValue}` + onChange 触发后 `setSelectedValue(thisValue)`(完整示例见 docs/view/radio/codeString.ts multiRadioGroup)",
90
+ "**label 超长截断 + hover 完整显示**:用 `AutoTips` 包 label,如 `<Radio label={<AutoTips tipMaxWidth='none'>超长 label</AutoTips>} width='180px' />`"
91
+ ],
92
+ "dont": [
93
+ "在可以多选的场景使用 Radio",
94
+ "Radio 选中后无法取消(设计上应保持选中状态;若需 on/off 切换语义请用 Checkbox)",
95
+ "**期望 onChange 在选中后再次点击会再触发(单向触发,只在 unchecked → checked 触发一次)**",
96
+ "**依赖 labelTooltip 实现 label 文字截断省略**(labelTooltip 只是 ? 帮助图标 tooltip · 不截断;截断用 AutoTips 包 label)",
97
+ "**期望 Radio 有 readOnly prop**(无;只读用 disabled + CSS)"
98
+ ],
99
+ "events": {
100
+ "onChange": {
101
+ "signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
102
+ "asyncSupported": false,
103
+ "examples": [
104
+ "受控互斥:onChange={(e, checked) => { if (checked) setSelectedValue(thisValue); }}",
105
+ "非受控监听:onChange={(e, checked) => console.log('选中', checked)} // checked 永远为 true",
106
+ "阻止冒泡:onChange={(e, checked) => { e.stopPropagation(); setSelected(checked); }}"
107
+ ],
108
+ "commonMistakes": [
109
+ "期望回调签名是 (e: ChangeEvent<HTMLInputElement>) → 实际是 MouseEvent<HTMLLabelElement>,监听 e.target 行为不同",
110
+ "期望 checked 参数可以是 false(已选后再次点击)——onChange 只在 unchecked→checked 触发,checked 永远为 true",
111
+ "用 onChange 做「取消选中」逻辑——Radio 无法通过点击取消选中;需要 toggle 语义请用 Checkbox"
112
+ ]
113
+ }
114
+ },
115
+ "typescriptPitfalls": [
116
+ {
117
+ "issue": "onChange 签名是 MouseEvent on HTMLLabelElement,不是 ChangeEvent<HTMLInputElement>",
118
+ "wrong": "onChange={(e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.checked)} // 类型不匹配",
119
+ "right": "onChange={(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => { if (checked) setValue(thisValue); }}"
120
+ },
121
+ {
122
+ "issue": "disabledTooltip 的类型是 TooltipProps(完整对象),不是字符串",
123
+ "wrong": "disabledTooltip='此项不可选' // 类型报错,应传对象",
124
+ "right": "disabledTooltip={{ title: '此项不可选', placement: 'top' }}"
125
+ },
126
+ {
127
+ "issue": "size 默认值是 'large'(不是 'medium'),与 antd/MUI 业界惯例不同",
128
+ "wrong": "// 不传 size 期望得到中等大小\n<Radio label='选项' /> // 实际渲染 large 尺寸",
129
+ "right": "<Radio label='选项' size='medium' /> // 明确指定 size 避免布局意外"
130
+ }
131
+ ],
132
+ "mapping": {
133
+ "realComponent": "Radio",
134
+ "adapter": null
135
+ }
136
+ }
@@ -0,0 +1,149 @@
1
+ {
2
+ "name": "RadioGroup",
3
+ "category": "Data Entry",
4
+ "description": "单选框组,统一管理一组 Radio 的受控选中态,支持泛型约束和二维布局",
5
+ "semantic": {
6
+ "intent": [
7
+ "单选",
8
+ "互斥选择"
9
+ ],
10
+ "useCases": [
11
+ "选项切换",
12
+ "模式选择",
13
+ "单选配置"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "默认样式"
20
+ }
21
+ },
22
+ "states": [
23
+ "default",
24
+ "disabled"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "RadioListProps[] | RadioListProps[][]",
29
+ "description": "选项数据(必填)。**RadioListProps extends RadioProps**(可含 label/disabled 等 Radio prop)。⚠️ 默认以 `item[id]` 取值(id prop 默认 'name'),list 每项必须有对应字段;传二维数组 `RadioListProps[][]` 时按行分组渲染"
30
+ },
31
+ "value": {
32
+ "type": "T",
33
+ "description": "当前选中值(受控);类型 T 由泛型推断(默认 unknown);与 list 项的 item[id] 字段值对比决定哪项选中"
34
+ },
35
+ "defaultValue": {
36
+ "type": "T",
37
+ "description": "默认选中值(非受控初始态);与 value 互斥——传 value 则受控"
38
+ },
39
+ "onChange": {
40
+ "type": "(val: T, item?: RadioListProps) => void",
41
+ "description": "值变化回调;val = item[id](即 list 项中 id 字段对应的值);item 是被点击的完整 list 项对象"
42
+ },
43
+ "id": {
44
+ "type": "string",
45
+ "default": "name",
46
+ "description": "**list 每项的取值字段名**(默认 'name',不是 'value')——RadioGroup 内部取 item[id] 作为选中值;⚠️ 这是常见混淆点:字段名是 'name' 不是 'value'"
47
+ },
48
+ "label": {
49
+ "type": "ReactNode",
50
+ "description": "组标题"
51
+ },
52
+ "labelTooltip": {
53
+ "type": "LabelTooltipProps",
54
+ "description": "组标题旁的帮助图标 tooltip"
55
+ },
56
+ "required": {
57
+ "type": "boolean",
58
+ "default": false,
59
+ "description": "是否必填(显示红色星号)"
60
+ },
61
+ "row": {
62
+ "type": "boolean",
63
+ "default": true,
64
+ "description": "布局方式;true=横向排列;false=纵向排列"
65
+ },
66
+ "spacing": {
67
+ "type": "string",
68
+ "default": "32px",
69
+ "description": "横向布局时每项之间的间距(CSS 值,如 '16px');row=false 时不生效"
70
+ },
71
+ "itemWidth": {
72
+ "type": "string",
73
+ "description": "每项的固定宽度(CSS 值,如 '120px');配合 row=false 的栅格对齐"
74
+ },
75
+ "size": {
76
+ "type": "enum",
77
+ "values": ["small", "medium", "large"],
78
+ "default": "large",
79
+ "description": "尺寸,透传给每个 Radio(src/RadioGroup/index.tsx:65 实证,default='large')"
80
+ },
81
+ "disabled": {
82
+ "type": "boolean",
83
+ "default": false,
84
+ "description": "全局禁用所有选项(优先于 list 每项的 disabled)"
85
+ },
86
+ "error": {
87
+ "type": "boolean",
88
+ "default": false,
89
+ "description": "错误状态(显示红色边框 + helperText 错误样式,来自 HelperTextDetailProps 继承)"
90
+ },
91
+ "helperText": {
92
+ "type": "ReactNode",
93
+ "default": "",
94
+ "description": "错误或提示文字(error=true 时红色显示,error=false 时灰色显示)"
95
+ },
96
+ "hideErrorDom": {
97
+ "type": "boolean",
98
+ "description": "是否隐藏错误文字 DOM(表单布局固定高度时防止错误文字撑开布局)"
99
+ }
100
+ },
101
+ "do": [
102
+ "配合 Radio 使用——RadioGroup 统一管理 checked 状态,无需每个 Radio 手动维护",
103
+ "选项数量适中(2-5),超出 5 个考虑 Select",
104
+ "list 项必须有 id 对应字段(默认 'name')作为选中值,如 `list={[{ name: 'a', label: '选项A' }]}` 且不传 id prop",
105
+ "支持泛型收窄类型:`<RadioGroup<'male' | 'female'>>` 让 value/onChange 类型推断更精确"
106
+ ],
107
+ "dont": [
108
+ "选项过多(应使用 Select)",
109
+ "忽略默认选中——至少通过 defaultValue 或 value 提供初始状态,否则所有项均未选中",
110
+ "以为 list 项的取值字段是 'value'——RadioGroup 默认取 item['name'],需要用 'value' 字段时需传 id='value'"
111
+ ],
112
+ "events": {
113
+ "onChange": {
114
+ "signature": "(val: T, item?: RadioListProps) => void",
115
+ "asyncSupported": false,
116
+ "examples": [
117
+ "受控写法:value={selected} onChange={(val) => setSelected(val)}",
118
+ "获取完整 item:onChange={(val, item) => { setSelected(val); logItem(item); }}",
119
+ "泛型收窄:<RadioGroup<'a' | 'b'> list={...} value={v} onChange={(val) => setV(val)}>"
120
+ ],
121
+ "commonMistakes": [
122
+ "假设 val 是 item.value——RadioGroup 取 item[id](默认 item.name),不是 item.value",
123
+ "不回写 value prop 导致选中态不更新——RadioGroup 是受控组件,onChange 后必须 setState 回写 value",
124
+ "list 项缺少 id 字段——id 默认 'name',list 项无 name 字段时 val 会是 undefined"
125
+ ]
126
+ }
127
+ },
128
+ "typescriptPitfalls": [
129
+ {
130
+ "issue": "id prop 指定取值字段名,默认是 'name' 不是 'value',混淆导致 onChange 收到 undefined",
131
+ "wrong": "// list 每项有 value 字段,但不传 id:\nlist={[{ value: 'male', label: '男' }]} // onChange 收到 undefined,因为取的是 item['name']",
132
+ "right": "// 方案A:list 项用 name 字段\nlist={[{ name: 'male', label: '男' }]}\n// 方案B:显式传 id='value'\n<RadioGroup id='value' list={[{ value: 'male', label: '男' }]} />"
133
+ },
134
+ {
135
+ "issue": "RadioGroup 泛型参数 T 默认 unknown,value/onChange 类型过宽,建议显式传泛型",
136
+ "wrong": "// T=unknown,onChange val 类型 unknown,需 as 强转:\nconst [v, setV] = useState<string>(); onChange={(val) => setV(val as string)}",
137
+ "right": "const [v, setV] = useState<string>(); <RadioGroup<string> value={v} onChange={(val) => setV(val)} />"
138
+ },
139
+ {
140
+ "issue": "list 支持二维数组分行,但每行内项的 onChange 逻辑相同——误以为二维数组需要特殊处理",
141
+ "wrong": "// 二维数组时自己实现 checked 逻辑\nlist={[[...], [...]]} value={v} onChange不传 // 组件已内部处理,不需要额外逻辑",
142
+ "right": "<RadioGroup list={[[item1, item2], [item3, item4]]} value={v} onChange={(val) => setV(val)} />"
143
+ }
144
+ ],
145
+ "mapping": {
146
+ "realComponent": "RadioGroup",
147
+ "adapter": null
148
+ }
149
+ }
@@ -0,0 +1,198 @@
1
+ {
2
+ "name": "RangeInput",
3
+ "category": "Data Entry",
4
+ "description": "范围输入框,两个 InputNumber 组成数值区间,自动 swap 防止 min>max",
5
+ "semantic": {
6
+ "intent": [
7
+ "范围输入",
8
+ "区间选择"
9
+ ],
10
+ "useCases": [
11
+ "价格区间",
12
+ "数量范围",
13
+ "时间范围"
14
+ ],
15
+ "riskLevel": "normal"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "默认样式"
20
+ }
21
+ },
22
+ "states": [
23
+ "default",
24
+ "disabled",
25
+ "error"
26
+ ],
27
+ "idealProps": {
28
+ "value": {
29
+ "type": "Clearable extends true ? [number | null, number | null] : [number | undefined, number | undefined]",
30
+ "description": "当前值(受控)。**类型随 clearable 泛型条件切换**(协议 RI1):clearable=true → `[number | null, number | null]`(任一端可 null 表示清空);clearable=false(默认)→ `[number | undefined, number | undefined]`(直接传 null TS 报错)"
31
+ },
32
+ "defaultValue": {
33
+ "type": "Clearable extends true ? [number | null, number | null] : [number | undefined, number | undefined]",
34
+ "description": "默认值(非受控);类型规则同 value(随 clearable 切换)"
35
+ },
36
+ "onChange": {
37
+ "type": "(val, index) => void",
38
+ "description": "值变化回调。**val 类型**:clearable=true → `[number | null, number | null]`;clearable=false → `[number, number]`。**index** 是触发输入框下标(0/1),index=-1 表示内部 swap 触发(min>max 自动交换)。**业务 [number, number] 桥接**:`(val) => onChange([val[0] ?? 0, val[1] ?? 0])`(协议 RI2)"
39
+ },
40
+ "clearable": {
41
+ "type": "boolean",
42
+ "default": false,
43
+ "description": "是否允许清空(协议 RI1)。**默认 false**;true 时全链路类型放宽到 `number | null`,清空后 onChange 回传含 null 的二元组(不是 null 本体);false 时类型收窄。**业务需要清空必须显式 `clearable={true}`**"
44
+ },
45
+ "size": {
46
+ "type": "enum",
47
+ "values": [
48
+ "small",
49
+ "medium",
50
+ "large"
51
+ ],
52
+ "default": "large",
53
+ "description": "控件大小(三档全部支持)"
54
+ },
55
+ "label": {
56
+ "type": "ReactNode",
57
+ "description": "组标题"
58
+ },
59
+ "labelTooltip": {
60
+ "type": "LabelTooltipProps",
61
+ "description": "标题旁帮助图标 tooltip"
62
+ },
63
+ "required": {
64
+ "type": "boolean",
65
+ "default": false,
66
+ "description": "是否必填(显示红色星号)"
67
+ },
68
+ "disabled": {
69
+ "type": "boolean | [boolean, boolean]",
70
+ "default": false,
71
+ "description": "禁用;boolean=两侧都禁;[boolean, boolean]=分别控制左右"
72
+ },
73
+ "disabledTooltip": {
74
+ "type": "TooltipProps | [TooltipProps, TooltipProps]",
75
+ "description": "禁用状态 tooltip;单值=两侧共享;数组=分别控制左右(src/RangeInput/index.tsx:34 interface 实证)"
76
+ },
77
+ "separator": {
78
+ "type": "ReactNode",
79
+ "default": "~",
80
+ "description": "中间分隔符"
81
+ },
82
+ "unit": {
83
+ "type": "ReactNode",
84
+ "description": "单位文本(显示在右侧)"
85
+ },
86
+ "placeholder": {
87
+ "type": "ReactNode | [ReactNode, ReactNode]",
88
+ "description": "占位文本;单值=两侧共享;数组=分别控制左右"
89
+ },
90
+ "warningMessage": {
91
+ "type": "ReactNode",
92
+ "description": "min>max 自动 swap 后展示的警告文案(swap 发生后显示 warnTime 毫秒)"
93
+ },
94
+ "warnTime": {
95
+ "type": "number",
96
+ "default": 2000,
97
+ "description": "warningMessage 自动消失时间(毫秒)"
98
+ },
99
+ "otherProps": {
100
+ "type": "[InputNumberProps, InputNumberProps]",
101
+ "description": "左右两个 InputNumber 的额外 props,分别透传(src/RangeInput/index.tsx:60 interface 实证)"
102
+ },
103
+ "error": {
104
+ "type": "boolean",
105
+ "default": false,
106
+ "description": "错误状态"
107
+ },
108
+ "helperText": {
109
+ "type": "ReactNode",
110
+ "description": "错误/提示文字"
111
+ },
112
+ "onBlur": {
113
+ "type": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
114
+ "description": "失去焦点回调;index=0/1 区分左右;swap 逻辑在整体失焦后触发(rAF 延后)"
115
+ },
116
+ "onFocus": {
117
+ "type": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
118
+ "description": "获得焦点回调;index=0/1 区分左右"
119
+ },
120
+ "onEnter": {
121
+ "type": "(event: React.KeyboardEvent<HTMLInputElement>, index: number) => void",
122
+ "description": "回车回调;index=0/1 区分左右"
123
+ }
124
+ },
125
+ "crossPropInteractions": [
126
+ "clearable=true + value 类型 = 全链路放宽 [number | null, number | null]",
127
+ "clearable=false(默认)+ value 类型 = 收窄 [number | undefined, number | undefined]",
128
+ "onChange val + index = index=0/1 触发位,-1 表示内部 swap(min>max 自动交换)",
129
+ "disabled [boolean, boolean] + disabledTooltip [TooltipProps, TooltipProps] = 分别控制左右",
130
+ "size + 三档全部支持 = small / medium / large(api.ts 与 component.json 已对齐)"
131
+ ],
132
+ "commonMisconceptions": [
133
+ "❌ 默认就能传 [null, null] 清空 — 必须显式 clearable={true}",
134
+ "❌ clearable=true 清空回传 null 本体 — 实际回传 [null, null] 二元组",
135
+ "❌ onChange 永远是 [number | null, number | null] — clearable=false 时实为 [number, number]",
136
+ "❌ size 只支持 small/large — 三档全部支持(api.ts 已修正)",
137
+ "❌ value desc 说「默认值 受控」— 历史 typo,实际是「当前值 受控」"
138
+ ],
139
+ "do": [
140
+ "校验最小值不能大于最大值——组件会在整体失焦后自动 swap,配合 warningMessage 提示用户",
141
+ "提供清晰的分隔符(默认 '~',可自定义如 ' 至 ')",
142
+ "业务需要清空功能时显式传 clearable={true}(类型全链路放宽)",
143
+ "业务 [number, number] 严格非 null 时不传 clearable(类型收窄保护,onChange 回参直接是 [number, number])"
144
+ ],
145
+ "dont": [
146
+ "忽略边界校验——min>max 时组件虽自动 swap,但最好在 onChange 里加业务层校验",
147
+ "不提示输入错误——配合 error + helperText 展示校验失败原因",
148
+ "默认 clearable=false 时传 [null, null](TS 报错)"
149
+ ],
150
+ "events": {
151
+ "onChange": {
152
+ "signature": "(val: [number | null, number | null] | [number, number], index: number) => void",
153
+ "asyncSupported": false,
154
+ "examples": [
155
+ "受控写法:value={range} onChange={(val, index) => setRange(val)}",
156
+ "区分触发位:onChange={(val, index) => { if (index === 0) validateMin(val[0]); else if (index === 1) validateMax(val[1]); else console.log('swap 触发'); }}",
157
+ "clearable=false 桥接:onChange={(val) => setBizRange([val[0] ?? 0, val[1] ?? 0])}"
158
+ ],
159
+ "commonMistakes": [
160
+ "index=-1 时 val 两端都变化(swap)——不能只看 val[index],index=-1 时应同时处理两端",
161
+ "clearable=false 时 onChange val 里出现 null——理论上不会,但渐进过渡期需兼容",
162
+ "忘记回写 value prop——RangeInput 是受控组件,onChange 后必须 setState 回写,否则页面回弹"
163
+ ]
164
+ },
165
+ "onBlur": {
166
+ "signature": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
167
+ "asyncSupported": false,
168
+ "examples": [
169
+ "整体失焦时才触发 swap——左右切焦时 onBlur 会被调但 swap 不触发(rAF 检测 activeElement 仍在组件内)",
170
+ "onBlur={(e, index) => { if (!rootRef.current?.contains(document.activeElement)) doValidation(); }}"
171
+ ],
172
+ "commonMistakes": [
173
+ "在 onBlur 里立即读 value 期望拿到 swap 后的值——swap 是通过 rAF 异步触发,onBlur 调用时 swap 尚未执行"
174
+ ]
175
+ }
176
+ },
177
+ "typescriptPitfalls": [
178
+ {
179
+ "issue": "clearable=false(默认)时 value 类型是 [number | undefined, number | undefined],直接传 [null, null] TS 报错",
180
+ "wrong": "value={[null, null]} // clearable=false 时类型不允许 null",
181
+ "right": "<RangeInput<true> clearable value={[null, null]} /> // 显式泛型 true 或 clearable={true}"
182
+ },
183
+ {
184
+ "issue": "onChange val 类型随 clearable 泛型变化,不显式传泛型时 val 类型推断可能宽泛",
185
+ "wrong": "// clearable=false 但 onChange handler 写成接受 null:\nonChange={(val: [number | null, number | null]) => ...} // 与 clearable=false 合约不符",
186
+ "right": "// clearable=false(默认)\nonChange={(val: [number, number]) => setRange(val)}"
187
+ },
188
+ {
189
+ "issue": "disabled 支持 [boolean, boolean] 元组,但传普通 boolean[] 数组类型不精确",
190
+ "wrong": "const flags: boolean[] = [true, false]; <RangeInput disabled={flags} /> // 类型报错",
191
+ "right": "const flags: [boolean, boolean] = [true, false]; <RangeInput disabled={flags} />"
192
+ }
193
+ ],
194
+ "mapping": {
195
+ "realComponent": "RangeInput",
196
+ "adapter": null
197
+ }
198
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "Result",
3
+ "category": "Feedback",
4
+ "description": "用于反馈一系列操作任务的处理结果",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示结果",
8
+ "引导下一步",
9
+ "明确状态"
10
+ ],
11
+ "useCases": [
12
+ "提交成功",
13
+ "提交失败",
14
+ "加载中"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "success": {
20
+ "meaning": "成功(src 实装)"
21
+ },
22
+ "error": {
23
+ "meaning": "错误(src 实装)"
24
+ },
25
+ "loading": {
26
+ "meaning": "加载中(src 实装)"
27
+ },
28
+ "_blueprint_403": {
29
+ "meaning": "(蓝图 / src 未实装)无权限页 — 当前需用 icon 自定义模拟,见 discussions/Result-status-expansion-and-footer-epic.md"
30
+ },
31
+ "_blueprint_404": {
32
+ "meaning": "(蓝图 / src 未实装)未找到页 — 当前需用 icon 自定义模拟"
33
+ },
34
+ "_blueprint_500": {
35
+ "meaning": "(蓝图 / src 未实装)服务器错误页 — 当前需用 icon 自定义模拟"
36
+ },
37
+ "_blueprint_warning": {
38
+ "meaning": "(蓝图 / src 未实装)警告反馈 — 当前需用 icon 自定义模拟"
39
+ },
40
+ "_blueprint_info": {
41
+ "meaning": "(蓝图 / src 未实装)信息反馈 — 当前需用 icon 自定义模拟"
42
+ }
43
+ },
44
+ "states": [
45
+ "visible"
46
+ ],
47
+ "idealProps": {
48
+ "status": {
49
+ "type": "'success' | 'error' | 'loading'",
50
+ "values": ["success", "error", "loading"],
51
+ "description": "结果状态;⚠️ src 当前仅实装这 3 个枚举值(src/Result/index.tsx:22 实证);蓝图 404/403/500/warning/info 见 variants._blueprint_* 与 discussions/Result-status-expansion-and-footer-epic.md;业务侧需要这些状态时,用 icon 自定义模拟"
52
+ },
53
+ "title": {
54
+ "type": "ReactNode",
55
+ "description": "标题;src 内部经 AutoTips 包装,长文案自动 Tooltip"
56
+ },
57
+ "subTitle": {
58
+ "type": "ReactNode",
59
+ "description": "副标题;无 AutoTips 包装"
60
+ },
61
+ "icon": {
62
+ "type": "ReactNode",
63
+ "description": "自定义结果图标;优先级【高于】status 默认图标;src 内部包在 .icon-box 容器中"
64
+ },
65
+ "footer": {
66
+ "type": "ReactNode",
67
+ "description": "⚠️ 操作区(底部);prop 名是 footer(不是 extra)!component.json 历史版本写过 extra 是蓝图笔误,src 实际实装的是 footer(src/Result/index.tsx:30 实证);通常放 1-2 个按钮"
68
+ }
69
+ },
70
+ "do": [
71
+ "在关键环节(支付/提交)结束后用 Result 反馈结果",
72
+ "提供明确的返回或重试按钮(放在 footer 插槽)",
73
+ "shape: 404/403/500/warning 等业务状态,通过 icon 自定义图标 + title 文案表达",
74
+ "长 title 文案放心使用 — 组件内部经 AutoTips 自动 Tooltip"
75
+ ],
76
+ "dont": [
77
+ "**不要传 status='404' / '403' / '500' / 'warning' / 'info'** — src 当前仅 success/error/loading 3 枚举,会触发 tsc 类型错误",
78
+ "**不要用 extra prop** — 操作区是 footer(extra 是蓝图未实装)",
79
+ "在简单的操作反馈中使用 Result(应使用 Message)",
80
+ "在 footer 内放过多按钮(2 个为佳:主+次)"
81
+ ],
82
+ "events": {},
83
+ "typescriptPitfalls": [
84
+ {
85
+ "issue": "status 枚举仅有 3 个值,传 '404'/'403'/'500'/'warning'/'info' 触发 TS 类型错误",
86
+ "wrong": "<Result status='404' title='Not Found' /> // TS 报 '404' 不属于 'success' | 'error' | 'loading'",
87
+ "right": "<Result icon={<NotFoundIcon />} title='404 - Not Found' /> // 用 icon 自定义模拟"
88
+ },
89
+ {
90
+ "issue": "操作区插槽名是 footer,不是 extra(历史蓝图遗留 extra 但 src 未实装)",
91
+ "wrong": "<Result status='success' extra={<Button>返回</Button>} /> // extra prop 不存在,静默无效",
92
+ "right": "<Result status='success' footer={<Button>返回</Button>} /> // src/Result/index.tsx:30 实证 footer"
93
+ },
94
+ {
95
+ "issue": "icon 与 status 同时传时 icon 优先,status 图标被覆盖",
96
+ "wrong": "// 期望用 status 图标同时用自定义外层容器 → icon 覆盖 status 图标",
97
+ "right": "// 需要自定义图标时只传 icon,无需传 status;需要预设图标时只传 status,不传 icon"
98
+ }
99
+ ],
100
+ "mapping": {
101
+ "realComponent": "Result",
102
+ "adapter": null
103
+ }
104
+ }