@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,162 @@
1
+ {
2
+ "name": "Card",
3
+ "category": "Data Display",
4
+ "description": "list-driven 卡片容器——按 list 数据源渲染多张卡片,支持每行个数 / 加载更多 / 投影边框配置。**注意:不是 antd 风格的单卡片容器**(没有 title / extra / hoverable / actions 这些 prop)",
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
+ "loadingMore"
26
+ ],
27
+ "idealProps": {
28
+ "list": {
29
+ "type": "CardItemProps[]",
30
+ "itemSchema": {
31
+ "render": { "type": "ReactNode", "description": "卡片内容,静态 ReactNode(不是函数),闭包引用循环变量:data.map(d => ({ render: <div>{d.title}</div> }))" },
32
+ "style": { "type": "React.CSSProperties", "description": "透传到该卡片外层 div 的样式(可覆盖 boxShadow / border 等组件级配置)" }
33
+ },
34
+ "description": "卡片数据源数组。**`CardItemProps = { render?: ReactNode; style?: CSSProperties; [key]: any }`**——核心字段:①`render` 是**静态 ReactNode**(不是 `(item) => ReactNode` 函数!直接写 JSX 即可,需引用循环变量时用闭包:`docs.map(d => ({ render: <div>{d.title}</div> }))`,不要写 `render: () => <div>{d.title}</div>`);②`style` 透传到该卡片外层 div;③允许任意业务字段平铺存放(`id` / `title` 等仅供业务方在 render 中闭包引用,不被 Card 内部使用)。**list 项**不需要传 React `key`——src 内部用数组 index 做 key。"
35
+ },
36
+ "lineNum": {
37
+ "type": "number | CardLineNumProps[]",
38
+ "itemSchema": {
39
+ "width": { "type": "number", "required": true, "description": "容器宽度阈值(px),当容器宽度超过此值时使用此断点配置" },
40
+ "size": { "type": "number", "required": true, "description": "该断点下每行展示的卡片数" }
41
+ },
42
+ "description": "**每行展示的卡片数**(不是总行数!)。与 `width` 互斥:仅当未传 `width` 时 `lineNum` 才生效,每张卡片宽度按容器宽度均分。传数组可做响应式:`[{width: 容器宽阈值, size: 该断点每行个数}]`,src 按 width 升序匹配第一个 `item.width > 容器宽` 的 size;都不命中时取最大档 size。**src 行为细节**(DEFECT-006):src 内部按 width 升序自动 sort,Infinity 作 width 合法且与 `>` 比较恒真;\"最大档\" = 排序后最后一项(width 最大),与 size 数值无关。"
43
+ },
44
+ "width": {
45
+ "type": "string",
46
+ "default": "300px",
47
+ "description": "每张卡片固定宽度(与 `lineNum` 互斥,**`width` 优先级高于 `lineNum`**——src 在 `props.width === undefined` 时才进入 `lineNum` 分支)。仅接受 px 等具体单位字符串;不支持 `'auto'` / 百分比(src 直接 inline style 透传,但宽度模式下 Card 不会重新计算 marginRight 收尾对齐)。"
48
+ },
49
+ "height": {
50
+ "type": "string",
51
+ "default": "140px",
52
+ "description": "每张卡片高度。仅接受 px 等具体单位字符串;**不支持 `'auto'`**——src 把 height 直接写到外层 div inline style,'auto' 会让卡片高度按 render 内容撑开但失去等高网格视觉。如需自适应内容高度,需在 render 内部用 `display: flex; flex-direction: column` 自管理。**height 不支持 'auto' / 百分比**(DEFECT-008):如需高度跟随内容,父组件需先测量后传 px 字符串(可用 ResizeObserver),Card 不感知父容器高度变化。"
53
+ },
54
+ "boxShadow": {
55
+ "type": "boolean | string",
56
+ "default": false,
57
+ "description": "是否带投影。`true` 默认值 `'1px 1px 10px 2px rgba(212,218,227,0.40)'`(src/Card/index.tsx:203);传字符串则直接作为 CSS box-shadow 值透传。**作用于所有卡片**(组件级);单卡覆盖在 list[].style.boxShadow 中传值,后者优先(Card-DEFECT-003(详见 docs/superpowers/ai-test/defects.md))。"
58
+ },
59
+ "border": {
60
+ "type": "boolean | string",
61
+ "default": false,
62
+ "description": "是否带边框。`true` 默认值 `'1px solid rgba(212, 218, 227, 0.4)'`(src/Card/index.tsx:210);传字符串则直接作为 CSS border 简写值(如 `'2px dashed #1677ff'`)透传。**作用于所有卡片**(组件级);单卡覆盖在 list[].style.border 中传值,后者优先(Card-DEFECT-003(详见 docs/superpowers/ai-test/defects.md))。"
63
+ },
64
+ "marginRight": {
65
+ "type": "string",
66
+ "default": "20px",
67
+ "description": "**卡片之间的右间距**(不是 Card 容器外边距)。每张卡片 inline `style.marginRight`;每行最后一张卡片自动重置为 0。"
68
+ },
69
+ "marginBottom": {
70
+ "type": "string",
71
+ "default": "20px",
72
+ "description": "**卡片之间的下间距**(不是 Card 容器外边距)。每张卡片 inline `style.marginBottom`。"
73
+ },
74
+ "showMore": {
75
+ "type": "boolean",
76
+ "default": false,
77
+ "description": "是否启用『加载更多』机制(与 `onMore` 配合:showMore=true 时滚动到底部触发 onMore;底部展示 moreRender / loadingMoreRender 文案)。**注意**:5.x 没有独立 `hasMore` prop——『已加载完所有数据』需在业务方 `onMore` 内自行判断后 return 短路(参见 do 段)。议题见 discussions/Card-hasMore-prop.md。"
78
+ },
79
+ "moreRender": {
80
+ "type": "ReactNode",
81
+ "default": "intl('more')",
82
+ "description": "底部『可加载』状态展示节点(非 loading 时)。点击后触发 onMore。与 loadingMoreRender 互斥:loadingMore 状态展示 loadingMoreRender,否则展示 moreRender。"
83
+ },
84
+ "loadingMoreRender": {
85
+ "type": "ReactNode",
86
+ "default": "intl('loadingMore')",
87
+ "description": "底部『加载中』状态展示节点(onMore 执行期间)。与 moreRender 互斥(见 moreRender 描述)。"
88
+ },
89
+ "onMore": {
90
+ "type": "function",
91
+ "signature": "() => Promise<void> | void",
92
+ "description": "加载更多回调(showMore=true 时滚动到底部触发)。返回 Promise 时 Card 自动管理 loadingMore 状态——业务方应在 onMore 内 await 数据请求后 setState 追加 list;同步返回时立即结束 loading。**业务方需自行维护 hasMore 标记**:到达末页时在 onMore 入口 `if (!hasMore) return` 短路。"
93
+ },
94
+ "backgroundImage": {
95
+ "type": "string",
96
+ "description": "**作用于所有卡片的统一背景图**(组件级,Card-DEFECT-002(详见 docs/superpowers/ai-test/defects.md):所有卡片共享同一张背景图,不是按 list[].cover 渲染单卡封面)。url 设置后 Card 自动追加 `backgroundSize: 100% 100%; backgroundRepeat: no-repeat`。如需每张卡封面不同,请在 list[].render 内自管理图片渲染。"
97
+ },
98
+ "className": {
99
+ "type": "string",
100
+ "description": "卡片容器自定义类名(src/Card/index.tsx:33 interface 实证,透传到根容器 div)"
101
+ },
102
+ "style": {
103
+ "type": "React.CSSProperties",
104
+ "description": "卡片容器自定义样式(src/Card/index.tsx:35 interface 实证,透传到根容器 div)"
105
+ }
106
+ },
107
+ "do": [
108
+ "用 list 一次传入数据源,让 Card 自动按 lineNum / width 排版",
109
+ "**业务数据派生 list 时**:用 `data.map(d => ({ render: <CardContent {...d} /> }))` 或 `data.map(d => ({ render: <div>{d.title}</div> }))` —— render 直接写 JSX 节点(闭包引用循环变量 d),**不要写 `render: () => <div>...</div>` 函数形式**",
110
+ "**自定义渲染撑满整张卡片**:render 节点内部用 `<div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>...</div>`,因为 Card 已经把外层 div 高度固定为 props.height",
111
+ "在 render 根 div 加 `boxSizing: border-box`(DEFECT-007):因 Card 外层 height 固定时,padding 默认会撑超溢出",
112
+ "需要响应式列数时给 lineNum 传数组(按容器宽断点;按 width 升序匹配第一个超过容器宽的档位)",
113
+ "数据较多时启用 showMore + onMore 实现分页加载;**业务方在 onMore 入口判断业务侧 hasMore 标记,到达末页 `if (!hasMore) return`** 短路(src 无 hasMore prop)",
114
+ "lineNum / width 二选一即可——传 width 时 lineNum 不生效(src 在 props.width === undefined 时才进入 lineNum 分支)",
115
+ "list 项不需要传 React `key`——src 内部用数组 index 做 key(业务字段 `id` 仅供业务方 render 内闭包引用)"
116
+ ],
117
+ "dont": [
118
+ "**不要把 render 写成 `() => ReactNode` 函数形式**——CardItemProps.render 是静态 `ReactNode`,传函数会被 React 当作 child 直接渲染,触发 `Warning: Functions are not valid as a React child` 警告(runtime 层验证失败)",
119
+ "lineNum 与 width 同时传(互斥;src 在 width 已定义时直接走 width 分支,lineNum 被忽略)",
120
+ "在 list 中传入超大 ReactNode 致渲染卡顿(应只放轻量数据,render 用 memo)",
121
+ "**试图传 antd 风格 prop**:`title` / `extra` / `hoverable` / `actions` / `cover` / `renderItem` / `dataSource` —— 这些 prop 不存在;自定义渲染只能通过 `list[].render` 节点",
122
+ "传 `height='auto'` 或百分比——src 直接 inline 透传,'auto' 会让卡片高度按内容撑开但失去等高视觉",
123
+ "依赖 `showMore=false` 切换来停止 onMore 触发——切换 false 会让底部按钮消失但已触发的 onMore 不会撤销;正确做法是 `onMore` 内 `if (!业务侧 hasMore) return`"
124
+ ],
125
+ "events": {
126
+ "onMore": {
127
+ "signature": "() => Promise<void> | void",
128
+ "asyncSupported": true,
129
+ "examples": [
130
+ "基础分页加载:onMore={async () => { const data = await api.getPage(page++); setList(prev => [...prev, ...data]); }}",
131
+ "Card 自动管理 loadingMore 状态——onMore 执行期间显示 loadingMoreRender,执行完毕自动恢复",
132
+ "业务侧维护 hasMore 标记:onMore={async () => { if (!hasMore) return; const res = await load(); if (!res.hasNext) setHasMore(false); }}"
133
+ ],
134
+ "commonMistakes": [
135
+ "期望 src 自动检测是否到达末页——src 无 hasMore prop,到达末页需在 onMore 内 return 短路",
136
+ "依赖 showMore=false 停止触发——切换 false 只隐藏底部按钮,已触发的 onMore Promise 不会撤销",
137
+ "onMore 里直接 setState 覆盖整个 list 而非追加——滚动加载应追加新数据:setList(prev => [...prev, ...newItems])"
138
+ ]
139
+ }
140
+ },
141
+ "typescriptPitfalls": [
142
+ {
143
+ "issue": "list[].render 是静态 ReactNode,不是 (item) => ReactNode 函数——传函数导致 React child 警告",
144
+ "wrong": "const list = data.map(d => ({ render: () => <CardContent data={d} /> })); // 函数被当作 child 渲染,报 Warning",
145
+ "right": "const list = data.map(d => ({ render: <CardContent data={d} /> })); // 闭包引用 d,直接写 JSX"
146
+ },
147
+ {
148
+ "issue": "lineNum 与 width 互斥——同时传时 width 优先(src 在 props.width === undefined 时才进 lineNum 分支)",
149
+ "wrong": "// 期望 lineNum 和 width 都生效\n<Card list={list} width='300px' lineNum={4} /> // lineNum 被忽略",
150
+ "right": "// 二选一:固定宽度用 width;响应式列数用 lineNum(不传 width)\n<Card list={list} lineNum={4} />"
151
+ },
152
+ {
153
+ "issue": "height 不支持 'auto'——src 直接 inline 透传,'auto' 会破坏等高网格视觉",
154
+ "wrong": "<Card list={list} height='auto' /> // 卡片高度按内容撑开,等高网格失效",
155
+ "right": "// 如需自适应内容高度,先测量再传 px 字符串,或在 render 内部自管理\n<Card list={list} height='200px' />"
156
+ }
157
+ ],
158
+ "mapping": {
159
+ "realComponent": "Card",
160
+ "adapter": null
161
+ }
162
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "Carousel",
3
+ "category": "Data Display",
4
+ "description": "走马灯,用于一组图片或卡片的轮播",
5
+ "semantic": {
6
+ "intent": [
7
+ "轮播展示",
8
+ "吸引注意",
9
+ "节省空间"
10
+ ],
11
+ "useCases": [
12
+ "首页 Banner",
13
+ "产品展示",
14
+ "图片画廊"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "默认轮播"
21
+ }
22
+ },
23
+ "states": [
24
+ "active"
25
+ ],
26
+ "idealProps": {
27
+ "autoplay": {
28
+ "type": "boolean",
29
+ "default": false,
30
+ "description": "是否自动切换"
31
+ },
32
+ "autoplaySpeed": {
33
+ "type": "number",
34
+ "default": 3000,
35
+ "description": "自动播放间隔(ms),需配合 autoplay=true 使用",
36
+ "required": false
37
+ },
38
+ "infinite": {
39
+ "type": "boolean",
40
+ "default": true,
41
+ "description": "无限循环;设为 false 时到最后一张停止",
42
+ "required": false
43
+ },
44
+ "slidesToShow": {
45
+ "type": "number",
46
+ "default": 1,
47
+ "description": "一帧显示幻灯片数",
48
+ "required": false
49
+ },
50
+ "slidesToScroll": {
51
+ "type": "number",
52
+ "default": 1,
53
+ "description": "一次滚动幻灯片数",
54
+ "required": false
55
+ },
56
+ "arrows": {
57
+ "type": "boolean",
58
+ "default": false,
59
+ "description": "是否显示前后箭头",
60
+ "required": false
61
+ },
62
+ "dotPosition": {
63
+ "type": "enum",
64
+ "values": ["top", "bottom", "left", "right"],
65
+ "default": "bottom",
66
+ "description": "指示点位置",
67
+ "required": false
68
+ },
69
+ "pauseOnHover": {
70
+ "type": "boolean",
71
+ "default": true,
72
+ "description": "悬停时暂停自动播放",
73
+ "required": false
74
+ },
75
+ "dots": {
76
+ "type": "boolean",
77
+ "default": true,
78
+ "description": "是否显示指示点"
79
+ },
80
+ "effect": {
81
+ "type": "enum",
82
+ "values": [
83
+ "scrollx",
84
+ "fade"
85
+ ],
86
+ "default": "scrollx",
87
+ "description": "动画效果"
88
+ },
89
+ "afterChange": {
90
+ "type": "function",
91
+ "signature": "(current: number) => void",
92
+ "description": "切换面板的回调"
93
+ }
94
+ },
95
+ "do": [
96
+ "使用高质量的图片",
97
+ "限制 Carousel 的数量(<5)以保证性能",
98
+ "需要命令式控制(goTo/next/prev)时通过 forwardRef + useRef<CarouselRef> 获取实例方法"
99
+ ],
100
+ "dont": [
101
+ "在移动端使用非触摸友好的 Carousel",
102
+ "自动播放速度过快 (<2s) 导致用户无法看清",
103
+ "不要传 prevArrow / nextArrow prop——这两个 prop 已从 CarouselProps 中移除(TypeScript 会报错);自定义箭头外观请通过 CSS 覆盖 `.slick-prev` / `.slick-next` 样式"
104
+ ],
105
+ "events": {
106
+ "afterChange": {
107
+ "signature": "(current: number) => void",
108
+ "asyncSupported": false,
109
+ "examples": [
110
+ "切换后同步外部状态:afterChange={(index) => setActiveIndex(index)}",
111
+ "切换后更新指示器:afterChange={(index) => setTitle(slides[index].title)}",
112
+ "切换后埋点:afterChange={(index) => analytics.track('carousel_change', { slide: index })}"
113
+ ],
114
+ "commonMistakes": [
115
+ "期望 beforeChange 回调——CarouselProps 只有 afterChange,beforeChange 来自 react-slick Settings 但未在 CarouselProps 类型覆盖中暴露",
116
+ "期望 afterChange 在自动播放切换时也触发——autoplay 切换同样会触发 afterChange",
117
+ "current 参数是 0-based 索引,从 infinite=true 模式下 current 可能超过 children 数量(react-slick 克隆节点)"
118
+ ]
119
+ }
120
+ },
121
+ "typescriptPitfalls": [
122
+ {
123
+ "issue": "prevArrow 和 nextArrow 已从 CarouselProps 中通过 Omit 移除——传入会有 TS 报错",
124
+ "wrong": "<Carousel prevArrow={<MyPrev />} nextArrow={<MyNext />} /> // TS: Omit<Settings, '...prevArrow | nextArrow'>",
125
+ "right": "// 通过 CSS 覆盖箭头样式\n// .paraui-v4-carousel .slick-prev { ... }\n// .paraui-v4-carousel .slick-next { ... }"
126
+ },
127
+ {
128
+ "issue": "CarouselRef 的命令式方法(goTo/next/prev/play/pause)需要通过 forwardRef 接收,useRef 泛型必须指定",
129
+ "wrong": "const ref = useRef(null);\n// ref.current.goTo(2); // TS: null 上不存在 goTo",
130
+ "right": "import type { CarouselRef } from '@para-ui/core/Carousel';\nconst ref = useRef<CarouselRef>(null);\n// ref.current?.goTo(2);"
131
+ },
132
+ {
133
+ "issue": "effect prop 值只有 'scrollx' | 'fade'——不是 react-slick 原生的 fade boolean,内部做了映射",
134
+ "wrong": "<Carousel fade={true} /> // fade 是 react-slick 原生字段,CarouselProps 用 effect 替代",
135
+ "right": "<Carousel effect='fade' /> // src 内部将 effect='fade' 映射为 newProps.fade=true"
136
+ }
137
+ ],
138
+ "mapping": {
139
+ "realComponent": "Carousel",
140
+ "adapter": null
141
+ }
142
+ }
@@ -0,0 +1,196 @@
1
+ {
2
+ "name": "Cascader",
3
+ "category": "Data Entry",
4
+ "description": "级联选择,用于多层级数据的选择",
5
+ "semantic": {
6
+ "intent": [
7
+ "层级选择",
8
+ "地域选择",
9
+ "分类选择"
10
+ ],
11
+ "useCases": [
12
+ "省市区选择",
13
+ "商品分类",
14
+ "组织架构"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准级联"
21
+ }
22
+ },
23
+ "states": [
24
+ "default",
25
+ "disabled",
26
+ "error",
27
+ "loading"
28
+ ],
29
+ "idealProps": {
30
+ "options": {
31
+ "type": "array",
32
+ "itemSchema": {
33
+ "label": { "type": "ReactNode", "required": true, "description": "选项显示文案" },
34
+ "value": { "type": "string | number | null", "description": "选项值" },
35
+ "children": { "type": "DefaultOptionType[]", "description": "子级选项,形成层级结构" },
36
+ "disabled": { "type": "boolean", "description": "是否禁用该选项" },
37
+ "disableCheckbox": { "type": "boolean", "description": "禁用 checkbox(checkable 模式)" },
38
+ "disableTitle": { "type": "string", "description": "禁用时 tooltip 提示文案" }
39
+ },
40
+ "description": "数据源,元素类型为 `DefaultOptionType`(包含 `label / value / children / disabled / disableTitle`;⚠️ `loading` 和 `isLeaf` **不在 DefaultOptionType 中**,是 loadData 场景扩展字段,需在业务类型中另声明)。业务自有节点类型对接三种推荐写法:(1) 泛型 `<Cascader<RegionNode> options={tree} />`(首选,Cascader 已暴露 `<OptionType extends BaseOptionType = DefaultOptionType>` 泛型);(2) 声明合并 `interface RegionNode extends DefaultOptionType { ... }`;(3) as 强转 `options={tree as DefaultOptionType[]}`(快速逃逸)。详见 docs/view/cascader/codeString.ts customOptionTypeCascader 示例。"
41
+ },
42
+ "value": {
43
+ "type": "(string | number)[]",
44
+ "description": "受控选中值;级联路径数组,每层一个值,如 `['guangdong', 'guangzhou']`。⚠️ 类型是 (string | number)[],不是 string[] 或 any[],传纯 string 路径需在调用侧 as string[]"
45
+ },
46
+ "defaultValue": {
47
+ "type": "(string | number)[]",
48
+ "description": "非受控初始选中值;格式同 value,如 `['guangdong', 'guangzhou']`。不要同时传 value + defaultValue"
49
+ },
50
+ "onChange": {
51
+ "type": "function",
52
+ "signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
53
+ "description": "选中值改变回调。**完整签名**:第一参 value 是选中路径各级节点 value 组成的数组(如 ['guangdong', 'guangzhou']);第二参 selectedOptions 是路径各级节点完整对象数组。⚠️ **TS7006 陷阱(noImplicitAny)**:内联回调参数必须显式标注类型——`onChange={(value: (string | number)[]) => ...}` ✅;`onChange={(value) => ...}` ❌ 报 TS7006。**桥接 string[] 场景推荐写法**:`onChange={(value: (string | number)[]) => onPathChange(value as string[])}`"
54
+ },
55
+ "onDropdownVisibleChange": {
56
+ "type": "function",
57
+ "signature": "(visible: boolean) => void",
58
+ "description": "弹出层显示状态改变时的回调,visible=true 表示打开,false 表示关闭"
59
+ },
60
+ "changeOnSelect": {
61
+ "type": "boolean",
62
+ "default": false,
63
+ "description": "选择任一级即触发 onChange,无需选到末级"
64
+ },
65
+ "expandTrigger": {
66
+ "type": "enum",
67
+ "values": [
68
+ "click",
69
+ "hover"
70
+ ],
71
+ "default": "click",
72
+ "description": "展开触发方式"
73
+ },
74
+ "expandIcon": {
75
+ "type": "ReactNode",
76
+ "description": "展开箭头图标"
77
+ },
78
+ "loadingIcon": {
79
+ "type": "ReactNode",
80
+ "description": "异步加载状态图标"
81
+ },
82
+ "expandJoin": {
83
+ "type": "string",
84
+ "default": "/",
85
+ "description": "已选路径文本拼接符"
86
+ },
87
+ "fieldNames": {
88
+ "type": "object",
89
+ "default": "{ label: 'label', value: 'value', children: 'children' }",
90
+ "objectShape": {
91
+ "label": { "type": "string", "description": "数据中作为显示文案的字段名,默认 'label'" },
92
+ "value": { "type": "string", "description": "数据中作为值的字段名,默认 'value'" },
93
+ "children": { "type": "string", "description": "数据中作为子级的字段名,默认 'children'" }
94
+ },
95
+ "description": "自定义节点字段名映射"
96
+ },
97
+ "placeholder": {
98
+ "type": "string",
99
+ "default": "请选择",
100
+ "description": "占位符"
101
+ },
102
+ "disabled": {
103
+ "type": "boolean",
104
+ "default": false,
105
+ "description": "是否整体禁用"
106
+ },
107
+ "disabledTooltip": {
108
+ "type": "TooltipProps",
109
+ "description": "disabled 时悬浮于触发框的 Tooltip 配置"
110
+ },
111
+ "optionsTitle": {
112
+ "type": "Array<string | null>",
113
+ "default": "[]",
114
+ "description": "每级面板顶部标题文案,下标对应级数"
115
+ },
116
+ "checkable": {
117
+ "type": "boolean | ReactNode",
118
+ "default": false,
119
+ "description": "是否多选;true 显示 checkbox,传 ReactNode 自定义勾选图标"
120
+ },
121
+ "displayRender": {
122
+ "type": "function",
123
+ "signature": "(label: string[], selectedOptions?: DefaultOptionType[]) => ReactNode",
124
+ "description": "自定义触发框已选项渲染。label 是路径各级节点 label 的字符串数组(非单一字符串);selectedOptions 是路径各级节点完整对象数组"
125
+ },
126
+ "loadData": {
127
+ "type": "function",
128
+ "signature": "(selectedOptions: DefaultOptionType[]) => void",
129
+ "description": "异步加载下一级数据。触发条件:用户展开 isLeaf=false 且无 children 的节点。selectedOptions 为当前展开路径各级节点数组。在回调内修改数据源并通过外部 setState 更新 options(标准模式:setOptions([...options]))"
130
+ },
131
+ "notFoundContent": {
132
+ "type": "ReactNode",
133
+ "description": "options 为空或搜索无匹配时的空状态"
134
+ }
135
+ },
136
+ "do": [
137
+ "用于有明确层级关系的数据选择",
138
+ "数据量较大会延迟加载(loadData)",
139
+ "onChange 内联回调必须显式标注类型参数,避免 noImplicitAny 报错:onChange={(value: (string|number)[]) => ...}"
140
+ ],
141
+ "dont": [
142
+ "层级过深(>5级)导致横向滚动过长",
143
+ "在非层级数据中使用 Cascader(应使用 Select)"
144
+ ],
145
+ "events": {
146
+ "onChange": {
147
+ "signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
148
+ "asyncSupported": false,
149
+ "examples": [
150
+ "基础用法:onChange={(value) => setPath(value)} // value 是路径各级 value 数组,如 ['guangdong', 'guangzhou']",
151
+ "获取完整路径对象:onChange={(value, selectedOptions) => setLabel(selectedOptions.map(o => o.label).join(' / '))}",
152
+ "桥接 string[] 类型:onChange={(value: (string|number)[]) => onPathChange(value as string[])}"
153
+ ],
154
+ "commonMistakes": [
155
+ "内联回调不标注参数类型导致 TS7006 noImplicitAny 报错——必须显式声明 value: (string|number)[]",
156
+ "期望 onChange 在 changeOnSelect=false 时每级展开都触发——只有选到末级(或 changeOnSelect=true 时任意级)才触发",
157
+ "用 value[value.length-1] 取最终叶节点值——这是最后一级的 value,但当 checkable 多选时 value 结构不同(多维数组)"
158
+ ]
159
+ },
160
+ "onDropdownVisibleChange": {
161
+ "signature": "(visible: boolean) => void",
162
+ "asyncSupported": false,
163
+ "examples": [
164
+ "弹出层打开时加载数据:onDropdownVisibleChange={(v) => { if (v && !loaded) fetchOptions(); }}",
165
+ "弹出层关闭时重置搜索:onDropdownVisibleChange={(v) => { if (!v) setSearch(''); }}",
166
+ "受控弹层:onDropdownVisibleChange={(v) => setOpen(v)}"
167
+ ],
168
+ "commonMistakes": [
169
+ "期望 onOpen / onClose 独立回调——Cascader 只有 onDropdownVisibleChange,通过 visible 参数区分",
170
+ "在 onDropdownVisibleChange 里直接 loadData——loadData prop 是每级展开时的异步回调,不是全局弹层回调",
171
+ "visible=false 时立即清空 options——关闭动画期间 Cascader 仍需 options 数据,过早清空会闪烁"
172
+ ]
173
+ }
174
+ },
175
+ "typescriptPitfalls": [
176
+ {
177
+ "issue": "onChange 内联回调参数必须显式标注类型,否则 noImplicitAny 报 TS7006",
178
+ "wrong": "<Cascader onChange={(value) => setV(value)} /> // TS7006: 'value' 参数隐式具有 'any' 类型",
179
+ "right": "<Cascader onChange={(value: (string | number)[]) => setV(value)} />"
180
+ },
181
+ {
182
+ "issue": "业务自有节点类型必须 extends BaseOptionType(含索引签名),否则泛型约束失败",
183
+ "wrong": "interface Region { label: string; value: string; code: string; } // 无索引签名\n<Cascader<Region> options={regions} /> // TS 报错:Region 不满足 BaseOptionType",
184
+ "right": "interface Region extends DefaultOptionType { code: string; } // 继承 DefaultOptionType 或直接继承 BaseOptionType"
185
+ },
186
+ {
187
+ "issue": "DefaultOptionType 的 loading 和 isLeaf 字段不在类型定义中——loadData 场景需扩展类型",
188
+ "wrong": "const node: DefaultOptionType = { label: '北京', value: 'bj', isLeaf: false }; // TS: isLeaf 不在 DefaultOptionType",
189
+ "right": "interface LazyOption extends DefaultOptionType { isLeaf?: boolean; loading?: boolean; }\nconst node: LazyOption = { label: '北京', value: 'bj', isLeaf: false };"
190
+ }
191
+ ],
192
+ "mapping": {
193
+ "realComponent": "Cascader",
194
+ "adapter": null
195
+ }
196
+ }
@@ -0,0 +1,138 @@
1
+ {
2
+ "name": "Checkbox",
3
+ "category": "Data Entry",
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
+ "group": {
23
+ "meaning": "多选框组"
24
+ }
25
+ },
26
+ "states": [
27
+ "checked",
28
+ "unchecked",
29
+ "indeterminate",
30
+ "disabled"
31
+ ],
32
+ "idealProps": {
33
+ "checked": {
34
+ "type": "boolean",
35
+ "description": "是否选中"
36
+ },
37
+ "defaultChecked": {
38
+ "type": "boolean",
39
+ "default": false,
40
+ "description": "初始是否选中"
41
+ },
42
+ "disabled": {
43
+ "type": "boolean",
44
+ "default": false,
45
+ "description": "是否禁用"
46
+ },
47
+ "onChange": {
48
+ "type": "function",
49
+ "signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
50
+ "description": "变化时回调(src/Checkbox/index.tsx:40 interface 实证:签名为 MouseEvent on HTMLLabelElement;indeterminate=true 时 checked 参数永远为 true;正常场景 checked 为切换后的新状态)"
51
+ },
52
+ "indeterminate": {
53
+ "type": "boolean",
54
+ "default": false,
55
+ "description": "不确定状态(src/Checkbox/index.tsx:36,51,90 实证:仅控制样式——追加 paraui-v4-checkbox-indeterminate 类,并使 onChange 固定传 checked=true;不影响内部 checked state 的实际计算)"
56
+ },
57
+ "label": {
58
+ "type": "ReactNode",
59
+ "description": "显示的文本(src/Checkbox/index.tsx:20 实证:类型为 ReactNode,支持字符串/ReactNode;label 为 null/''/undefined 时不渲染 Label 组件,src:137-139 实证)"
60
+ },
61
+ "size": {
62
+ "type": "enum",
63
+ "values": ["small", "medium", "large"],
64
+ "default": "large",
65
+ "description": "多选框大小(src/Checkbox/index.tsx:24,48,88 实证:默认 'large',控制 CSS 类 paraui-v4-checkbox-{size})"
66
+ },
67
+ "width": {
68
+ "type": "string",
69
+ "description": "组件外层容器宽度(src/Checkbox/index.tsx:18,52,117 实证:写入根 label 的 style.width,与 style prop 合并)"
70
+ },
71
+ "labelTooltip": {
72
+ "type": "LabelTooltipProps",
73
+ "description": "label 旁的帮助图标 tooltip 配置(src/Checkbox/index.tsx:22,47,92-93 实证:tooltipType 字段会追加到根容器类名;className/helpClassName 字段控制额外样式;透传给内部 Label 组件)"
74
+ },
75
+ "disabledTooltip": {
76
+ "type": "TooltipProps",
77
+ "description": "禁用状态下的 Tooltip 配置(src/Checkbox/index.tsx:34-35,150-156 实证:存在 disabledTooltip 时将整个 Checkbox 包裹在 Tooltip 内,disabled 固定为 true,透传全部 TooltipProps)"
78
+ },
79
+ "inputProps": {
80
+ "type": "React.InputHTMLAttributes<HTMLInputElement>",
81
+ "description": "内层原生 checkbox input 的额外 props(src/Checkbox/index.tsx:38,133 实证:透传到 `<input type='checkbox' {...props.inputProps} />`)"
82
+ },
83
+ "className": {
84
+ "type": "string",
85
+ "description": "自定义类名(src/Checkbox/index.tsx:14,45 实证,追加到根 label 元素)"
86
+ },
87
+ "style": {
88
+ "type": "React.CSSProperties",
89
+ "description": "自定义样式(src/Checkbox/index.tsx:16,54,116 实证,与 width prop 合并后透传到根 label 元素)"
90
+ }
91
+ },
92
+ "do": [
93
+ "使用 Checkbox Group 处理一组相关的选项",
94
+ "明确 Label 的含义",
95
+ "受控用 checked + onChange,非受控用 defaultChecked;二者不要混用"
96
+ ],
97
+ "dont": [
98
+ "在单选场景中使用 Checkbox(应使用 Radio)",
99
+ "Checkbox 选项过多导致布局混乱"
100
+ ],
101
+ "events": {
102
+ "onChange": {
103
+ "signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
104
+ "asyncSupported": false,
105
+ "examples": [
106
+ "基础受控:onChange={(e, checked) => setChecked(checked)}",
107
+ "indeterminate 模式下 checked 永远为 true:onChange={(e, checked) => { if (indeterminate) setIndeterminate(false); setChecked(checked); }}",
108
+ "非受控+监听:onChange={(e, checked) => analytics.track('checkbox', { checked })}"
109
+ ],
110
+ "commonMistakes": [
111
+ "期望 onChange 签名是 (e: React.ChangeEvent<HTMLInputElement>) => void(antd 风格)——Checkbox 实际签名第一参是 MouseEvent on HTMLLabelElement,不是 ChangeEvent",
112
+ "期望通过 e.target.checked 获取新状态——e.target 是 label 元素,checked 字段是第二参,不要从 e.target 取",
113
+ "indeterminate=true 时期望 checked 随用户操作在 true/false 切换——indeterminate 模式下 src 固定传 checked=true,需业务方在 onChange 里手动管理状态"
114
+ ]
115
+ }
116
+ },
117
+ "typescriptPitfalls": [
118
+ {
119
+ "issue": "onChange 第一参是 MouseEvent on HTMLLabelElement,不是 ChangeEvent on HTMLInputElement",
120
+ "wrong": "// antd 风格,期望 ChangeEvent\nonChange={(e: React.ChangeEvent<HTMLInputElement>) => setChecked(e.target.checked)} // 类型不匹配",
121
+ "right": "// para-ui Checkbox onChange 签名\nonChange={(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => setChecked(checked)}"
122
+ },
123
+ {
124
+ "issue": "defaultChecked 只在 mount 时读取一次(useEffect 依赖 []),后续引用变化不重新初始化",
125
+ "wrong": "// 期望 defaultChecked 动态更新\n<Checkbox defaultChecked={serverValue} /> // serverValue 异步返回后不会重新初始化",
126
+ "right": "// 需要动态初始化用受控 checked + 外部 state\n<Checkbox checked={checked} onChange={(e, v) => setChecked(v)} />"
127
+ },
128
+ {
129
+ "issue": "disabledTooltip 类型是 TooltipProps(整个 Tooltip 的 props 对象),不是简单字符串",
130
+ "wrong": "<Checkbox disabled disabledTooltip='权限不足' /> // 字符串不符合 TooltipProps",
131
+ "right": "<Checkbox disabled disabledTooltip={{ title: '权限不足', placement: 'top' }} />"
132
+ }
133
+ ],
134
+ "mapping": {
135
+ "realComponent": "Checkbox",
136
+ "adapter": null
137
+ }
138
+ }