@fangxinyan/lumina 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/README.md +18 -7
  2. package/dist/{Accordion-3TQPKNN3.css → Accordion-REMDCQUD.css} +0 -1
  3. package/dist/Accordion.cjs +2 -2
  4. package/dist/Accordion.js +1 -1
  5. package/dist/Alert.cjs +2 -2
  6. package/dist/Alert.js +1 -1
  7. package/dist/AppShell.cjs +5 -5
  8. package/dist/AppShell.js +1 -1
  9. package/dist/Avatar.cjs +2 -2
  10. package/dist/Avatar.js +1 -1
  11. package/dist/Button.cjs +3 -3
  12. package/dist/Button.js +1 -1
  13. package/dist/Calendar.cjs +2 -2
  14. package/dist/Calendar.js +1 -1
  15. package/dist/Card.cjs +3 -3
  16. package/dist/Card.js +1 -1
  17. package/dist/{Cascader-DTRTTXC2.css → Cascader-VSYEKQCG.css} +1 -1
  18. package/dist/Cascader.cjs +2 -2
  19. package/dist/Cascader.js +1 -1
  20. package/dist/Checkbox.cjs +3 -3
  21. package/dist/Checkbox.js +1 -1
  22. package/dist/{ColorPicker-GP7AQYUU.css → ColorPicker-SDDQGHCM.css} +1 -1
  23. package/dist/ColorPicker.cjs +2 -2
  24. package/dist/ColorPicker.js +1 -1
  25. package/dist/CommandPalette-T45DBMPY.css +139 -0
  26. package/dist/CommandPalette.cjs +14 -0
  27. package/dist/CommandPalette.cjs.map +1 -0
  28. package/dist/CommandPalette.d.cts +65 -0
  29. package/dist/CommandPalette.d.ts +65 -0
  30. package/dist/CommandPalette.js +5 -0
  31. package/dist/CommandPalette.js.map +1 -0
  32. package/dist/ContextMenu-FKW6CQW4.css +76 -0
  33. package/dist/ContextMenu.cjs +12 -0
  34. package/dist/ContextMenu.cjs.map +1 -0
  35. package/dist/ContextMenu.d.cts +50 -0
  36. package/dist/ContextMenu.d.ts +50 -0
  37. package/dist/ContextMenu.js +3 -0
  38. package/dist/ContextMenu.js.map +1 -0
  39. package/dist/Divider.cjs +2 -2
  40. package/dist/Divider.js +1 -1
  41. package/dist/Drawer.cjs +2 -2
  42. package/dist/Drawer.js +1 -1
  43. package/dist/Empty.cjs +4 -4
  44. package/dist/Empty.js +1 -1
  45. package/dist/{Image-WYWORJT4.css → Image-4MN34O6P.css} +1 -1
  46. package/dist/Image.cjs +3 -3
  47. package/dist/Image.js +1 -1
  48. package/dist/Input.cjs +3 -3
  49. package/dist/Input.js +1 -1
  50. package/dist/List.cjs +2 -2
  51. package/dist/List.js +1 -1
  52. package/dist/{Modal-N4YVLEWW.css → Modal-XSDMU4XJ.css} +1 -1
  53. package/dist/Modal.cjs +3 -3
  54. package/dist/Modal.js +2 -2
  55. package/dist/Pagination.cjs +4 -4
  56. package/dist/Pagination.js +3 -3
  57. package/dist/{Popover-MGCMOXYP.css → Popover-NYEKT5CQ.css} +1 -1
  58. package/dist/Popover.cjs +2 -2
  59. package/dist/Popover.js +1 -1
  60. package/dist/Progress.cjs +3 -3
  61. package/dist/Progress.js +1 -1
  62. package/dist/{Select-EDG37C37.css → Select-J3CCVFJ7.css} +1 -1
  63. package/dist/Select.cjs +3 -3
  64. package/dist/Select.js +2 -2
  65. package/dist/Slider.cjs +2 -2
  66. package/dist/Slider.js +1 -1
  67. package/dist/Splitter-DHNOY4NC.css +66 -0
  68. package/dist/Splitter.cjs +12 -0
  69. package/dist/Splitter.cjs.map +1 -0
  70. package/dist/Splitter.d.cts +44 -0
  71. package/dist/Splitter.d.ts +44 -0
  72. package/dist/Splitter.js +3 -0
  73. package/dist/Splitter.js.map +1 -0
  74. package/dist/StatusBar-CDS2GPSI.css +58 -0
  75. package/dist/StatusBar.cjs +16 -0
  76. package/dist/StatusBar.cjs.map +1 -0
  77. package/dist/StatusBar.d.cts +39 -0
  78. package/dist/StatusBar.d.ts +39 -0
  79. package/dist/StatusBar.js +3 -0
  80. package/dist/StatusBar.js.map +1 -0
  81. package/dist/Switch.cjs +2 -2
  82. package/dist/Switch.js +1 -1
  83. package/dist/{Table-ADVN6LXP.css → Table-2LPTOUIR.css} +2 -2
  84. package/dist/Table.cjs +7 -7
  85. package/dist/Table.js +5 -5
  86. package/dist/Tabs.cjs +3 -3
  87. package/dist/Tabs.js +1 -1
  88. package/dist/Tag.cjs +3 -3
  89. package/dist/Tag.js +1 -1
  90. package/dist/Theme.cjs +10 -10
  91. package/dist/Theme.js +1 -1
  92. package/dist/{Toast-ERHDN3WG.css → Toast-6PVSAXQ5.css} +1 -1
  93. package/dist/Toast.cjs +3 -3
  94. package/dist/Toast.js +1 -1
  95. package/dist/Tooltip.cjs +2 -2
  96. package/dist/Tooltip.js +1 -1
  97. package/dist/Typography.cjs +6 -6
  98. package/dist/Typography.js +1 -1
  99. package/dist/{chunk-5WF6M47X.cjs → chunk-24FAK7QU.cjs} +3 -3
  100. package/dist/{chunk-5WF6M47X.cjs.map → chunk-24FAK7QU.cjs.map} +1 -1
  101. package/dist/{chunk-AJZKESHB.js → chunk-276NALYW.js} +3 -3
  102. package/dist/{chunk-AJZKESHB.js.map → chunk-276NALYW.js.map} +1 -1
  103. package/dist/{chunk-FI7QO3I5.cjs → chunk-33TIL25B.cjs} +3 -3
  104. package/dist/{chunk-FI7QO3I5.cjs.map → chunk-33TIL25B.cjs.map} +1 -1
  105. package/dist/{chunk-RDLPX7RK.cjs → chunk-3HNRKO3M.cjs} +31 -5
  106. package/dist/chunk-3HNRKO3M.cjs.map +1 -0
  107. package/dist/{chunk-GZGZR4FT.js → chunk-3LI6QH2Q.js} +3 -3
  108. package/dist/{chunk-GZGZR4FT.js.map → chunk-3LI6QH2Q.js.map} +1 -1
  109. package/dist/{chunk-NE4YEBFH.js → chunk-3UU2PUK4.js} +4 -4
  110. package/dist/{chunk-NE4YEBFH.js.map → chunk-3UU2PUK4.js.map} +1 -1
  111. package/dist/chunk-47Z4NIU4.js +118 -0
  112. package/dist/chunk-47Z4NIU4.js.map +1 -0
  113. package/dist/{chunk-4U4OY5RA.js → chunk-4SCDDSXY.js} +3 -3
  114. package/dist/{chunk-4U4OY5RA.js.map → chunk-4SCDDSXY.js.map} +1 -1
  115. package/dist/{chunk-NXOAYNG2.cjs → chunk-5BFETKVP.cjs} +3 -3
  116. package/dist/{chunk-NXOAYNG2.cjs.map → chunk-5BFETKVP.cjs.map} +1 -1
  117. package/dist/{chunk-VICGQC6G.cjs → chunk-5EAVXFFD.cjs} +3 -3
  118. package/dist/{chunk-VICGQC6G.cjs.map → chunk-5EAVXFFD.cjs.map} +1 -1
  119. package/dist/{chunk-OYGFMXAA.js → chunk-5N7347MI.js} +3 -3
  120. package/dist/{chunk-OYGFMXAA.js.map → chunk-5N7347MI.js.map} +1 -1
  121. package/dist/{chunk-VJN637MT.js → chunk-5PREWYTB.js} +3 -3
  122. package/dist/{chunk-VJN637MT.js.map → chunk-5PREWYTB.js.map} +1 -1
  123. package/dist/{chunk-77BVQNAQ.js → chunk-5UOBYRYJ.js} +3 -3
  124. package/dist/{chunk-77BVQNAQ.js.map → chunk-5UOBYRYJ.js.map} +1 -1
  125. package/dist/{chunk-BBPNQ44M.js → chunk-6GNFRP2H.js} +3 -3
  126. package/dist/{chunk-BBPNQ44M.js.map → chunk-6GNFRP2H.js.map} +1 -1
  127. package/dist/{chunk-TZSWDH5T.cjs → chunk-7JYI5THC.cjs} +3 -3
  128. package/dist/{chunk-TZSWDH5T.cjs.map → chunk-7JYI5THC.cjs.map} +1 -1
  129. package/dist/chunk-7T2SLRNL.cjs +140 -0
  130. package/dist/chunk-7T2SLRNL.cjs.map +1 -0
  131. package/dist/chunk-7YQWG7HR.cjs +45 -0
  132. package/dist/chunk-7YQWG7HR.cjs.map +1 -0
  133. package/dist/chunk-AGN3JSUH.cjs +209 -0
  134. package/dist/chunk-AGN3JSUH.cjs.map +1 -0
  135. package/dist/{chunk-CCBHZYE6.cjs → chunk-AR4M7QGF.cjs} +7 -7
  136. package/dist/{chunk-CCBHZYE6.cjs.map → chunk-AR4M7QGF.cjs.map} +1 -1
  137. package/dist/{chunk-K7PVJLW4.cjs → chunk-AWLBLRQX.cjs} +5 -5
  138. package/dist/{chunk-K7PVJLW4.cjs.map → chunk-AWLBLRQX.cjs.map} +1 -1
  139. package/dist/{chunk-PBBHUUXU.cjs → chunk-B5JH7NRZ.cjs} +3 -3
  140. package/dist/{chunk-PBBHUUXU.cjs.map → chunk-B5JH7NRZ.cjs.map} +1 -1
  141. package/dist/{chunk-Z5X5AMLA.cjs → chunk-CALRTZZ7.cjs} +3 -3
  142. package/dist/{chunk-Z5X5AMLA.cjs.map → chunk-CALRTZZ7.cjs.map} +1 -1
  143. package/dist/{chunk-H6FCIJOP.js → chunk-DBJIK4JE.js} +3 -3
  144. package/dist/{chunk-H6FCIJOP.js.map → chunk-DBJIK4JE.js.map} +1 -1
  145. package/dist/{chunk-QESLHLTG.cjs → chunk-EHO2JH2L.cjs} +4 -4
  146. package/dist/{chunk-QESLHLTG.cjs.map → chunk-EHO2JH2L.cjs.map} +1 -1
  147. package/dist/{chunk-WNGG25QX.js → chunk-FFZLSY2N.js} +3 -3
  148. package/dist/{chunk-WNGG25QX.js.map → chunk-FFZLSY2N.js.map} +1 -1
  149. package/dist/{chunk-AEJJGUEN.cjs → chunk-GOIQR4OH.cjs} +3 -3
  150. package/dist/{chunk-AEJJGUEN.cjs.map → chunk-GOIQR4OH.cjs.map} +1 -1
  151. package/dist/{chunk-Z7P6QGMT.js → chunk-GR5STMOA.js} +3 -3
  152. package/dist/{chunk-Z7P6QGMT.js.map → chunk-GR5STMOA.js.map} +1 -1
  153. package/dist/{chunk-URF6RBW6.cjs → chunk-HNVRMOL3.cjs} +3 -3
  154. package/dist/{chunk-URF6RBW6.cjs.map → chunk-HNVRMOL3.cjs.map} +1 -1
  155. package/dist/{chunk-RPD2OIIP.js → chunk-I2HHC6QW.js} +4 -4
  156. package/dist/{chunk-RPD2OIIP.js.map → chunk-I2HHC6QW.js.map} +1 -1
  157. package/dist/{chunk-AXMEZGEG.cjs → chunk-IZDJCEMF.cjs} +3 -3
  158. package/dist/{chunk-AXMEZGEG.cjs.map → chunk-IZDJCEMF.cjs.map} +1 -1
  159. package/dist/{chunk-V34OPWKZ.js → chunk-JSDQVVQB.js} +3 -3
  160. package/dist/{chunk-V34OPWKZ.js.map → chunk-JSDQVVQB.js.map} +1 -1
  161. package/dist/{chunk-QTGDYQOT.cjs → chunk-LLNEDEST.cjs} +4 -4
  162. package/dist/{chunk-QTGDYQOT.cjs.map → chunk-LLNEDEST.cjs.map} +1 -1
  163. package/dist/{chunk-C5TGQ7CV.cjs → chunk-MFWOBALK.cjs} +3 -3
  164. package/dist/{chunk-C5TGQ7CV.cjs.map → chunk-MFWOBALK.cjs.map} +1 -1
  165. package/dist/{chunk-LDENBYRC.cjs → chunk-MKR4X57L.cjs} +3 -3
  166. package/dist/{chunk-LDENBYRC.cjs.map → chunk-MKR4X57L.cjs.map} +1 -1
  167. package/dist/{chunk-LSLYY5FN.js → chunk-MTCLJHXU.js} +5 -5
  168. package/dist/{chunk-LSLYY5FN.js.map → chunk-MTCLJHXU.js.map} +1 -1
  169. package/dist/{chunk-JKLQOB2F.cjs → chunk-MUFMJPRT.cjs} +3 -3
  170. package/dist/{chunk-JKLQOB2F.cjs.map → chunk-MUFMJPRT.cjs.map} +1 -1
  171. package/dist/{chunk-OEHCA5IV.js → chunk-NGQDVJH3.js} +4 -4
  172. package/dist/{chunk-OEHCA5IV.js.map → chunk-NGQDVJH3.js.map} +1 -1
  173. package/dist/{chunk-7H453VPW.cjs → chunk-NQQWCIE6.cjs} +3 -3
  174. package/dist/{chunk-7H453VPW.cjs.map → chunk-NQQWCIE6.cjs.map} +1 -1
  175. package/dist/{chunk-ZWP4LSS3.js → chunk-NS3C2ZSE.js} +3 -3
  176. package/dist/{chunk-ZWP4LSS3.js.map → chunk-NS3C2ZSE.js.map} +1 -1
  177. package/dist/{chunk-HKAQILD2.cjs → chunk-O2HMH5BI.cjs} +4 -4
  178. package/dist/{chunk-HKAQILD2.cjs.map → chunk-O2HMH5BI.cjs.map} +1 -1
  179. package/dist/chunk-OWNVDXRQ.js +42 -0
  180. package/dist/chunk-OWNVDXRQ.js.map +1 -0
  181. package/dist/{chunk-3UFU63X7.cjs → chunk-OZVPJWXO.cjs} +3 -3
  182. package/dist/{chunk-3UFU63X7.cjs.map → chunk-OZVPJWXO.cjs.map} +1 -1
  183. package/dist/{chunk-M6CGYGEO.js → chunk-Q2EXOT4B.js} +3 -3
  184. package/dist/{chunk-M6CGYGEO.js.map → chunk-Q2EXOT4B.js.map} +1 -1
  185. package/dist/{chunk-7U6I44RV.cjs → chunk-Q7CDWNM6.cjs} +3 -3
  186. package/dist/{chunk-7U6I44RV.cjs.map → chunk-Q7CDWNM6.cjs.map} +1 -1
  187. package/dist/{chunk-437LB2V4.js → chunk-QJGKI2BD.js} +3 -3
  188. package/dist/{chunk-437LB2V4.js.map → chunk-QJGKI2BD.js.map} +1 -1
  189. package/dist/chunk-RFU5HN4E.js +149 -0
  190. package/dist/chunk-RFU5HN4E.js.map +1 -0
  191. package/dist/{chunk-IKI5CS4L.cjs → chunk-RIDCBNCM.cjs} +4 -4
  192. package/dist/{chunk-IKI5CS4L.cjs.map → chunk-RIDCBNCM.cjs.map} +1 -1
  193. package/dist/{chunk-OPTTHURA.cjs → chunk-RSZNFKCQ.cjs} +3 -3
  194. package/dist/{chunk-OPTTHURA.cjs.map → chunk-RSZNFKCQ.cjs.map} +1 -1
  195. package/dist/{chunk-EPFYIR63.cjs → chunk-RVSWH4RH.cjs} +7 -7
  196. package/dist/{chunk-EPFYIR63.cjs.map → chunk-RVSWH4RH.cjs.map} +1 -1
  197. package/dist/{chunk-TWBJCFEJ.cjs → chunk-SVVB6POY.cjs} +4 -4
  198. package/dist/{chunk-TWBJCFEJ.cjs.map → chunk-SVVB6POY.cjs.map} +1 -1
  199. package/dist/{chunk-QPZZNSRB.js → chunk-TMZVX6NO.js} +4 -4
  200. package/dist/{chunk-QPZZNSRB.js.map → chunk-TMZVX6NO.js.map} +1 -1
  201. package/dist/{chunk-YEOARJKR.cjs → chunk-TQLCIXCK.cjs} +3 -3
  202. package/dist/{chunk-YEOARJKR.cjs.map → chunk-TQLCIXCK.cjs.map} +1 -1
  203. package/dist/{chunk-GIVMKGZN.js → chunk-TY5EAKEI.js} +3 -3
  204. package/dist/{chunk-GIVMKGZN.js.map → chunk-TY5EAKEI.js.map} +1 -1
  205. package/dist/{chunk-4MR4GVTD.js → chunk-U4K7HOMW.js} +31 -5
  206. package/dist/chunk-U4K7HOMW.js.map +1 -0
  207. package/dist/{chunk-IWVKITPN.js → chunk-U5BZ7E3F.js} +3 -3
  208. package/dist/{chunk-IWVKITPN.js.map → chunk-U5BZ7E3F.js.map} +1 -1
  209. package/dist/{chunk-3WAFIUDQ.js → chunk-UQB5OHMO.js} +3 -3
  210. package/dist/{chunk-3WAFIUDQ.js.map → chunk-UQB5OHMO.js.map} +1 -1
  211. package/dist/{chunk-ZVCMXDTP.js → chunk-URLSZPS5.js} +5 -5
  212. package/dist/{chunk-ZVCMXDTP.js.map → chunk-URLSZPS5.js.map} +1 -1
  213. package/dist/{chunk-I7SSCSFH.js → chunk-W6I67HQQ.js} +3 -3
  214. package/dist/{chunk-I7SSCSFH.js.map → chunk-W6I67HQQ.js.map} +1 -1
  215. package/dist/{chunk-NSUD5B22.js → chunk-WBMF7WM3.js} +3 -3
  216. package/dist/{chunk-NSUD5B22.js.map → chunk-WBMF7WM3.js.map} +1 -1
  217. package/dist/{chunk-4GT5TOHP.js → chunk-WDBJVKSR.js} +3 -3
  218. package/dist/{chunk-4GT5TOHP.js.map → chunk-WDBJVKSR.js.map} +1 -1
  219. package/dist/{chunk-TYQ5CN2C.js → chunk-WQFC5EMC.js} +4 -4
  220. package/dist/{chunk-TYQ5CN2C.js.map → chunk-WQFC5EMC.js.map} +1 -1
  221. package/dist/{chunk-IFERLHCL.cjs → chunk-WREHBIJ5.cjs} +10 -10
  222. package/dist/{chunk-IFERLHCL.cjs.map → chunk-WREHBIJ5.cjs.map} +1 -1
  223. package/dist/chunk-WZ73TWB2.cjs +174 -0
  224. package/dist/chunk-WZ73TWB2.cjs.map +1 -0
  225. package/dist/chunk-XDFZRV3V.js +184 -0
  226. package/dist/chunk-XDFZRV3V.js.map +1 -0
  227. package/dist/{chunk-F7HW2PYR.cjs → chunk-XUT2Z2L6.cjs} +3 -3
  228. package/dist/{chunk-F7HW2PYR.cjs.map → chunk-XUT2Z2L6.cjs.map} +1 -1
  229. package/dist/{chunk-55NTFU7Y.js → chunk-XZ22B3NW.js} +6 -6
  230. package/dist/{chunk-55NTFU7Y.js.map → chunk-XZ22B3NW.js.map} +1 -1
  231. package/dist/{chunk-K5MHL732.js → chunk-YXKJOPYT.js} +4 -4
  232. package/dist/{chunk-K5MHL732.js.map → chunk-YXKJOPYT.js.map} +1 -1
  233. package/dist/{chunk-IDM6JJLP.cjs → chunk-YZ2I7CDF.cjs} +3 -3
  234. package/dist/{chunk-IDM6JJLP.cjs.map → chunk-YZ2I7CDF.cjs.map} +1 -1
  235. package/dist/index.cjs +142 -118
  236. package/dist/index.cjs.map +1 -1
  237. package/dist/index.d.cts +5 -1
  238. package/dist/index.d.ts +5 -1
  239. package/dist/index.js +35 -31
  240. package/dist/index.js.map +1 -1
  241. package/dist/styles.css +26 -19
  242. package/dist/{tokens-HWQ7KWPG.css → tokens-BIIUTPKN.css} +17 -9
  243. package/dist/tokens.css +17 -9
  244. package/docs/llms/accordion.md +66 -0
  245. package/docs/llms/alert.md +64 -0
  246. package/docs/llms/avatar.md +55 -0
  247. package/docs/llms/badge.md +41 -0
  248. package/docs/llms/button.md +122 -0
  249. package/docs/llms/calendar.md +44 -0
  250. package/docs/llms/card.md +68 -0
  251. package/docs/llms/cascader.md +33 -0
  252. package/docs/llms/checkbox.md +41 -0
  253. package/docs/llms/colorpicker.md +82 -0
  254. package/docs/llms/commandpalette.md +58 -0
  255. package/docs/llms/contextmenu.md +55 -0
  256. package/docs/llms/divider.md +69 -0
  257. package/docs/llms/drawer.md +70 -0
  258. package/docs/llms/empty.md +52 -0
  259. package/docs/llms/icon.md +34 -0
  260. package/docs/llms/image.md +39 -0
  261. package/docs/llms/input.md +127 -0
  262. package/docs/llms/intro.md +6 -0
  263. package/docs/llms/list.md +41 -0
  264. package/docs/llms/modal.md +89 -0
  265. package/docs/llms/pagination.md +82 -0
  266. package/docs/llms/popover.md +34 -0
  267. package/docs/llms/progress.md +58 -0
  268. package/docs/llms/radio.md +43 -0
  269. package/docs/llms/select.md +99 -0
  270. package/docs/llms/sidebar.md +43 -0
  271. package/docs/llms/skeleton.md +88 -0
  272. package/docs/llms/slider.md +72 -0
  273. package/docs/llms/spinner.md +58 -0
  274. package/docs/llms/splitter.md +63 -0
  275. package/docs/llms/statusbar.md +53 -0
  276. package/docs/llms/switch.md +60 -0
  277. package/docs/llms/table.md +188 -0
  278. package/docs/llms/tablepro.md +56 -0
  279. package/docs/llms/tabs.md +50 -0
  280. package/docs/llms/tag.md +77 -0
  281. package/docs/llms/theme.md +165 -0
  282. package/docs/llms/titlebar.md +40 -0
  283. package/docs/llms/toast.md +51 -0
  284. package/docs/llms/tooltip.md +38 -0
  285. package/docs/llms/typography.md +103 -0
  286. package/docs/llms/windowcontrols.md +31 -0
  287. package/docs/llms.md +101 -0
  288. package/package.json +8 -2
  289. package/dist/chunk-4MR4GVTD.js.map +0 -1
  290. package/dist/chunk-RDLPX7RK.cjs.map +0 -1
@@ -0,0 +1,41 @@
1
+ # List 列表
2
+
3
+ > 承载一组结构化的同质化数据。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { List } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础列表
14
+
15
+ ```tsx
16
+ <List items={[{ key, title, description, avatar, actions }]} />
17
+ ```
18
+
19
+ ## API
20
+
21
+ **List**
22
+
23
+ | Prop | 类型 | 默认 | 说明 |
24
+ | --- | --- | --- | --- |
25
+ | items \* | `ListItem[]` | — | 数据列表 |
26
+ | dividers | `boolean` | `true` | 项之间显示分隔线 |
27
+
28
+
29
+ **ListItem**
30
+
31
+ | Prop | 类型 | 默认 | 说明 |
32
+ | --- | --- | --- | --- |
33
+ | key \* | `string` | — | 唯一键 |
34
+ | title / description | `ReactNode` | — | 标题/描述 |
35
+ | avatar | `ReactNode` | — | 前置图标或头像 |
36
+ | actions | `ReactNode` | — | 右侧操作区 |
37
+ | onClick | `() => void` | — | 点击回调 |
38
+
39
+
40
+ ---
41
+ [← 回到索引](../llms.md)
@@ -0,0 +1,89 @@
1
+ # Modal 对话框
2
+
3
+ > 在不离开当前页面的前提下处理事务。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Modal } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础
14
+
15
+ ```tsx
16
+ <Modal open={m} onClose={...} title="标题">...</Modal>
17
+ ```
18
+
19
+ ### 确认操作 (footer 自定义)
20
+
21
+ 用 footer 自定义底部按钮。传 null 可以去掉 footer。
22
+
23
+ ```tsx
24
+ <Modal footer={<><Button>取消</Button><Button danger>删除</Button></>}>...
25
+ ```
26
+
27
+ ### onOk / onCancel + 按钮定制
28
+
29
+ 用默认 footer 的 onOk / onCancel 区分动作,okText / cancelText 改文案,okButtonProps 透传样式。
30
+
31
+ ```tsx
32
+ <Modal
33
+ onOk={handleSave}
34
+ onCancel={() => setOpen(false)}
35
+ okText="发布"
36
+ cancelText="不发了"
37
+ okButtonProps={{ icon: "send" }}
38
+ />
39
+ ```
40
+
41
+ ### 异步 confirmLoading
42
+
43
+ 提交过程中 confirmLoading 显示按钮 spinner 并自动禁用;完成后外层再 setOpen(false)。
44
+
45
+ ```tsx
46
+ <Modal confirmLoading={submitting} onOk={async () => {
47
+ setSubmitting(true);
48
+ await api.save();
49
+ setSubmitting(false);
50
+ setOpen(false);
51
+ }} />
52
+ ```
53
+
54
+ ### 隐藏关闭按钮
55
+
56
+ closable={false} 隐藏右上角 ×,closeIcon 可自定义。
57
+
58
+ ```tsx
59
+ <Modal closable={false} />
60
+ <Modal closeIcon={<Icon name="chevDown" />} />
61
+ ```
62
+
63
+ ## API
64
+
65
+ **Modal**
66
+
67
+ | Prop | 类型 | 默认 | 说明 |
68
+ | --- | --- | --- | --- |
69
+ | open \* | `boolean` | — | 是否可见 |
70
+ | onClose | `() => void` | — | 关闭回调(遮罩/Esc/关闭按钮) |
71
+ | onOk | `() => void` | — | 默认 OK 按钮点击 |
72
+ | onCancel | `() => void` | — | 默认 Cancel 按钮 / Esc / 关闭 / 遮罩触发,缺省则用 onClose |
73
+ | title / description | `ReactNode` | — | 标题/说明 |
74
+ | footer | `ReactNode` | — | 自定义底部(null 去除) |
75
+ | okText / cancelText | `ReactNode` | `"确定" / "取消"` | 默认按钮文案 |
76
+ | okButtonProps / cancelButtonProps | `Partial<ButtonProps>` | — | 透传给默认按钮 |
77
+ | confirmLoading | `boolean` | `false` | OK 按钮显示 spinner 并禁用 |
78
+ | closable | `boolean` | `true` | 显示右上角 × |
79
+ | closeIcon | `ReactNode` | — | 自定义关闭图标 |
80
+ | maskClosable | `boolean` | `true` | 点击遮罩关闭 |
81
+ | escClosable | `boolean` | `true` | Esc 关闭 |
82
+ | width | `number | string` | `440` | 宽度 |
83
+ | destroyOnClose | `boolean` | `false` | 关闭时卸载子树 |
84
+ | afterOpenChange | `(open: boolean) => void` | — | 动画结束后回调 |
85
+ | zIndex | `number` | — | 覆盖遮罩 z-index |
86
+
87
+
88
+ ---
89
+ [← 回到索引](../llms.md)
@@ -0,0 +1,82 @@
1
+ # Pagination 分页
2
+
3
+ > 分页控件,支持快速跳转与每页条数切换。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Pagination } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础用法
14
+
15
+ ```tsx
16
+ <Pagination total={85} page={page} onChange={setPage} />
17
+ ```
18
+
19
+ ### 快速跳转
20
+
21
+ 启用 showQuickJumper,输入页码按 Enter 跳转,超出范围会被夹紧。
22
+
23
+ ```tsx
24
+ <Pagination
25
+ total={250}
26
+ page={jumpPage}
27
+ onChange={setJumpPage}
28
+ showQuickJumper
29
+ />
30
+ ```
31
+
32
+ ### 每页条数
33
+
34
+ 启用 showSizeChanger,切换条数会回到第 1 页并触发 onShowSizeChange + onChange(1)。
35
+
36
+ ```tsx
37
+ <Pagination
38
+ total={320}
39
+ page={sizePage}
40
+ pageSize={pageSize}
41
+ onChange={setSizePage}
42
+ showSizeChanger
43
+ onShowSizeChange={(_cur, size) => setPageSize(size)}
44
+ />
45
+ ```
46
+
47
+ ### 跳转 + 条数 + 自定义选项
48
+
49
+ 同时启用两项,并通过 pageSizeOptions 自定义候选条数。
50
+
51
+ ```tsx
52
+ <Pagination
53
+ total={999}
54
+ page={fullPage}
55
+ pageSize={fullPageSize}
56
+ onChange={setFullPage}
57
+ showQuickJumper
58
+ showSizeChanger
59
+ pageSizeOptions={[20, 50, 100, 200]}
60
+ onShowSizeChange={(_cur, size) => setFullPageSize(size)}
61
+ />
62
+ ```
63
+
64
+ ## API
65
+
66
+ **Pagination**
67
+
68
+ | Prop | 类型 | 默认 | 说明 |
69
+ | --- | --- | --- | --- |
70
+ | total \* | `number` | — | 数据总条数 |
71
+ | pageSize | `number` | `10` | 每页条数 |
72
+ | page / defaultPage | `number` | `1` | 受控/初始页码 |
73
+ | onChange | `(page: number) => void` | — | 页码变化回调 |
74
+ | siblings | `number` | `1` | 当前页两侧可见的页码数 |
75
+ | showQuickJumper | `boolean` | `false` | 显示跳转输入框,按 Enter 跳转 |
76
+ | showSizeChanger | `boolean` | `false` | 显示每页条数选择器,切换后回到第 1 页 |
77
+ | pageSizeOptions | `number[]` | `[10, 20, 50, 100]` | 每页条数候选项 |
78
+ | onShowSizeChange | `(current: number, size: number) => void` | — | 每页条数变更回调 |
79
+
80
+
81
+ ---
82
+ [← 回到索引](../llms.md)
@@ -0,0 +1,34 @@
1
+ # Popover 气泡卡片
2
+
3
+ > 比 Tooltip 更丰富,可承载交互内容。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Popover } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础
14
+
15
+ ```tsx
16
+ <Popover content={<>...</>}>
17
+ <Button>触发</Button>
18
+ </Popover>
19
+ ```
20
+
21
+ ## API
22
+
23
+ **Popover**
24
+
25
+ | Prop | 类型 | 默认 | 说明 |
26
+ | --- | --- | --- | --- |
27
+ | content \* | `ReactNode` | — | 浮层内容 |
28
+ | placement | `"top" | "bottom" | "left" | "right"` | `"bottom"` | 位置 |
29
+ | trigger | `"click" | "hover"` | `"click"` | 触发方式 |
30
+ | open / defaultOpen / onOpenChange | `—` | — | 受控显示 |
31
+
32
+
33
+ ---
34
+ [← 回到索引](../llms.md)
@@ -0,0 +1,58 @@
1
+ # Progress 进度
2
+
3
+ > 条形进度 Progress 与环形进度 Ring。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Progress, Ring } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 条形进度
14
+
15
+ ```tsx
16
+ <Progress value={v} label="下载中" showValue />
17
+ ```
18
+
19
+ ### 尺寸
20
+
21
+ ```tsx
22
+ <Progress size="sm" value={60} />
23
+ <Progress value={60} />
24
+ <Progress size="lg" value={60} />
25
+ ```
26
+
27
+ ### 环形进度
28
+
29
+ ```tsx
30
+ <Ring value={65} />
31
+ <Ring value={90} tone="success" size={80}><strong>90%</strong></Ring>
32
+ ```
33
+
34
+ ## API
35
+
36
+ **Progress**
37
+
38
+ | Prop | 类型 | 默认 | 说明 |
39
+ | --- | --- | --- | --- |
40
+ | value \* | `number` | — | 0–max 之间 |
41
+ | max | `number` | `100` | 最大值 |
42
+ | tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
43
+ | size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
44
+ | label | `ReactNode` | — | 顶部文案 |
45
+ | showValue | `boolean` | `false` | 显示百分比 |
46
+
47
+
48
+ **Ring**
49
+
50
+ | Prop | 类型 | 默认 | 说明 |
51
+ | --- | --- | --- | --- |
52
+ | value \* | `number` | — | 0–100 |
53
+ | size | `number` | `72` | 直径 (px) |
54
+ | tone | `"accent" | "success" | ...` | `"accent"` | 色调 |
55
+
56
+
57
+ ---
58
+ [← 回到索引](../llms.md)
@@ -0,0 +1,43 @@
1
+ # Radio 单选
2
+
3
+ > 在多个互斥选项中进行单项选择。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { RadioGroup } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础用法
14
+
15
+ ```tsx
16
+ <RadioGroup value={v} onChange={setV} options={[
17
+ { value: "daily", label: "每日" },
18
+ { value: "weekly", label: "每周" },
19
+ ]} />
20
+ ```
21
+
22
+ ### 水平排列
23
+
24
+ direction='horizontal'。
25
+
26
+ ```tsx
27
+ <RadioGroup direction="horizontal" ... />
28
+ ```
29
+
30
+ ## API
31
+
32
+ **RadioGroup**
33
+
34
+ | Prop | 类型 | 默认 | 说明 |
35
+ | --- | --- | --- | --- |
36
+ | options \* | `{ value, label, disabled? }[]` | — | 选项数组 |
37
+ | value / defaultValue | `T` | — | 受控/初始 |
38
+ | onChange | `(value: T) => void` | — | 变更 |
39
+ | direction | `"vertical" | "horizontal"` | `"vertical"` | 方向 |
40
+
41
+
42
+ ---
43
+ [← 回到索引](../llms.md)
@@ -0,0 +1,99 @@
1
+ # Select 下拉选择
2
+
3
+ > 下拉选择,支持单/多选、搜索、分组、加载态。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Select } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 单选
14
+
15
+ ```tsx
16
+ <Select value={lang} onChange={setLang} options={[
17
+ { value: "zh", label: "简体中文" },
18
+ { value: "en", label: "English" },
19
+ ]} />
20
+ ```
21
+
22
+ ### 多选
23
+
24
+ multiple + Tag 形式呈现已选项。
25
+
26
+ ```tsx
27
+ <Select multiple clearable value={tags} onChange={setTags} options={...} />
28
+ ```
29
+
30
+ ### 搜索过滤
31
+
32
+ searchable + clearable + 选项 icon/description。
33
+
34
+ ```tsx
35
+ <Select searchable clearable
36
+ options={[{ value, label, icon, description }]}
37
+ />
38
+ ```
39
+
40
+ ### 分组
41
+
42
+ options 接受 { label, options } 表示分组。
43
+
44
+ ```tsx
45
+ options={[
46
+ { label: "前端", options: [...] },
47
+ { label: "后端", options: [...] },
48
+ ]}
49
+ ```
50
+
51
+ ### 加载态
52
+
53
+ loading 时显示 spinner,emptyContent 自定义空态。
54
+
55
+ ```tsx
56
+ <Select searchable loading={loading} options={asyncOpts} />
57
+ ```
58
+
59
+ ### 尺寸 / 状态
60
+
61
+ ```tsx
62
+ <Select size="sm" /> <Select /> <Select size="lg" />
63
+ <Select invalid /> <Select disabled />
64
+ ```
65
+
66
+ ## API
67
+
68
+ **Select**
69
+
70
+ | Prop | 类型 | 默认 | 说明 |
71
+ | --- | --- | --- | --- |
72
+ | options \* | `SelectItem<T>[]` | — | 选项,可含 { label, options } 分组 |
73
+ | value / defaultValue | `T | T[]` | — | 受控/初始 |
74
+ | onChange | `(value) => void` | — | 变更 |
75
+ | multiple | `boolean` | `false` | 多选 |
76
+ | maxTagCount | `number` | — | 多选时显示的标签数(超出折叠 +N) |
77
+ | searchable | `boolean` | `false` | 可搜索 |
78
+ | filterOption | `(input, option) => boolean` | — | 自定义过滤 |
79
+ | clearable | `boolean` | `false` | 可清除 |
80
+ | loading | `boolean` | `false` | 加载态 |
81
+ | emptyContent | `ReactNode` | — | 空态文案 |
82
+ | size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
83
+ | invalid | `boolean` | `false` | 错误态 |
84
+ | disabled | `boolean` | `false` | 禁用 |
85
+
86
+
87
+ **SelectOption**
88
+
89
+ | Prop | 类型 | 默认 | 说明 |
90
+ | --- | --- | --- | --- |
91
+ | value \* | `T` | — | 值 |
92
+ | label | `ReactNode` | — | 显示 |
93
+ | icon | `IconName` | — | 前置图标 |
94
+ | description | `ReactNode` | — | 次要描述 |
95
+ | disabled | `boolean` | `false` | 禁用项 |
96
+
97
+
98
+ ---
99
+ [← 回到索引](../llms.md)
@@ -0,0 +1,43 @@
1
+ # Sidebar 侧边栏
2
+
3
+ > 应用主导航,沿屏幕左侧垂直排列。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Sidebar } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础
14
+
15
+ ```tsx
16
+ <Sidebar items={[{ key, label, icon, badge }]} activeKey={active} onSelect={setActive} />
17
+ ```
18
+
19
+ ## API
20
+
21
+ **Sidebar**
22
+
23
+ | Prop | 类型 | 默认 | 说明 |
24
+ | --- | --- | --- | --- |
25
+ | items \* | `SidebarItem[]` | — | 导航项 |
26
+ | activeKey | `string` | — | 当前激活项 |
27
+ | onSelect | `(key: string) => void` | — | 选择回调 |
28
+ | collapsed | `boolean` | `false` | 折叠为图标 |
29
+ | header / footer | `ReactNode` | — | 头/尾内容 |
30
+
31
+
32
+ **SidebarItem**
33
+
34
+ | Prop | 类型 | 默认 | 说明 |
35
+ | --- | --- | --- | --- |
36
+ | key \* | `string` | — | 唯一键 |
37
+ | label | `ReactNode` | — | 文案 |
38
+ | icon | `ReactNode` | — | 前置图标 |
39
+ | badge | `ReactNode` | — | 尾部徽标 |
40
+
41
+
42
+ ---
43
+ [← 回到索引](../llms.md)
@@ -0,0 +1,88 @@
1
+ # Skeleton 骨架屏
2
+
3
+ > 数据加载前展示页面结构轮廓。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Skeleton } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础
14
+
15
+ ```tsx
16
+ <Skeleton height={16} width="40%" />
17
+ <Skeleton height={12} />
18
+ <Skeleton height={12} width="80%" />
19
+ ```
20
+
21
+ ### 手动组合:头像 + 文本
22
+
23
+ 使用原语 Skeleton 手动拼装 — 更灵活但需要自己写布局。
24
+
25
+ ```tsx
26
+ <Skeleton circle height={48} width={48} />
27
+ <Skeleton height={12} width="50%" />
28
+ ```
29
+
30
+ ### 组合模式 (avatar + title + paragraph)
31
+
32
+ 设置 avatar / title / paragraph 任一即切换到组合模式,自动拼装布局。
33
+
34
+ ```tsx
35
+ <Skeleton avatar title paragraph />
36
+ ```
37
+
38
+ ### 组合:自定义头像形状、段落行数
39
+
40
+ ```tsx
41
+ <Skeleton
42
+ avatar={{ shape: "square", size: "lg" }}
43
+ title={{ width: "30%" }}
44
+ paragraph={{ rows: 4, width: ["100%", "90%", "70%", "40%"] }}
45
+ />
46
+ ```
47
+
48
+ ### 组合:仅 title + paragraph
49
+
50
+ 关闭 avatar 只渲染标题与段落,其余布局自动调整。
51
+
52
+ ```tsx
53
+ <Skeleton title paragraph={{ rows: 2 }} />
54
+ ```
55
+
56
+ ### 动画
57
+
58
+ wave 是闪光流动,pulse 是透明度脉动,none 是静态占位。
59
+
60
+ ```tsx
61
+ <Skeleton animation="wave" />
62
+ <Skeleton animation="pulse" />
63
+ <Skeleton animation="none" />
64
+ ```
65
+
66
+ ## API
67
+
68
+ **Skeleton (原语模式)**
69
+
70
+ | Prop | 类型 | 默认 | 说明 |
71
+ | --- | --- | --- | --- |
72
+ | width | `number | string` | `"100%"` | 宽度 |
73
+ | height | `number | string` | `16` | 高度 |
74
+ | circle | `boolean` | `false` | 圆形 |
75
+ | animation | `"wave" | "pulse" | "none"` | `"wave"` | 动画 |
76
+
77
+
78
+ **Skeleton (组合模式)**
79
+
80
+ | Prop | 类型 | 默认 | 说明 |
81
+ | --- | --- | --- | --- |
82
+ | avatar | `boolean | { shape?: "circle" | "square"; size?: "sm" | "md" | "lg" }` | `false` | 左侧头像骨架。为对象时可定制 shape / size |
83
+ | title | `boolean | { width?: number | string }` | `true (composite)` | 标题行骨架。组合模式下默认 true |
84
+ | paragraph | `boolean | { rows?: number; width?: (number | string)[] }` | `{ rows: 3 }` | 段落行骨架。可指定 rows 与每行宽度(最后一行默认 60%) |
85
+
86
+
87
+ ---
88
+ [← 回到索引](../llms.md)
@@ -0,0 +1,72 @@
1
+ # Slider 滑块
2
+
3
+ > 在连续数值区间内取值。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Slider } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础用法
14
+
15
+ ```tsx
16
+ <Slider value={v} onChange={setV} showValue />
17
+ ```
18
+
19
+ ### 步进 / 范围
20
+
21
+ min/max/step 控制取值范围与步进。
22
+
23
+ ```tsx
24
+ <Slider min={0} max={10} step={1} defaultValue={5} showValue />
25
+ ```
26
+
27
+ ### 色调
28
+
29
+ ```tsx
30
+ <Slider tone="success" defaultValue={70} />
31
+ <Slider tone="warning" defaultValue={50} />
32
+ <Slider tone="danger" defaultValue={88} />
33
+ ```
34
+
35
+ ### 双滑块区间
36
+
37
+ range 模式下 value / onChange 采用 [min, max] 元组。
38
+
39
+ ```tsx
40
+ const [v, setV] = useState<[number, number]>([20, 70]);
41
+ <Slider range value={v} onChange={setV} showValue />
42
+ ```
43
+
44
+ ### 刻度标记
45
+
46
+ marks 提供可点击刻度,点击即可跳到该值。
47
+
48
+ ```tsx
49
+ <Slider
50
+ defaultValue={37}
51
+ marks={{ 0: "0°C", 26: "冷", 37: "正常", 100: "100°C" }}
52
+ />
53
+ ```
54
+
55
+ ## API
56
+
57
+ **Slider**
58
+
59
+ | Prop | 类型 | 默认 | 说明 |
60
+ | --- | --- | --- | --- |
61
+ | value / defaultValue | `number | [number, number]` | — | 受控/初始;range 模式下为 [number, number] |
62
+ | onChange | `(value) => void` | — | 变更回调,range 模式返回元组 |
63
+ | min / max / step | `number` | — | 区间与步进 |
64
+ | range | `boolean` | `false` | 是否为双滑块区间模式 |
65
+ | marks | `Record<number, ReactNode>` | — | 刻度,点击可跳到对应值 |
66
+ | tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
67
+ | showValue | `boolean` | `false` | 显示数值 |
68
+ | disabled | `boolean` | `false` | 禁用 |
69
+
70
+
71
+ ---
72
+ [← 回到索引](../llms.md)
@@ -0,0 +1,58 @@
1
+ # Spinner 加载
2
+
3
+ > 表示任务正在进行,提示用户等待。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { Spinner } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 基础
14
+
15
+ ```tsx
16
+ <Spinner />
17
+ <Spinner size={28} />
18
+ <Spinner size={40} />
19
+ ```
20
+
21
+ ### 色调
22
+
23
+ ```tsx
24
+ <Spinner tone="accent" />
25
+ <Spinner tone="success" />
26
+ <Spinner tone="warning" />
27
+ <Spinner tone="danger" />
28
+ ```
29
+
30
+ ### Dots 变体
31
+
32
+ ```tsx
33
+ <Spinner variant="dots" />
34
+ <Spinner variant="dots" size={24} />
35
+ <Spinner variant="dots" size={32} />
36
+ ```
37
+
38
+ ### 带文案
39
+
40
+ ```tsx
41
+ <Spinner label="加载中…" />
42
+ <Spinner variant="dots" tone="accent" label="正在同步" />
43
+ ```
44
+
45
+ ## API
46
+
47
+ **Spinner**
48
+
49
+ | Prop | 类型 | 默认 | 说明 |
50
+ | --- | --- | --- | --- |
51
+ | size | `number` | `20` | 尺寸 (px) |
52
+ | tone | `"accent" | "success" | "warning" | "danger" | "current"` | `"accent"` | 色调 |
53
+ | variant | `"ring" | "dots"` | `"ring"` | 样式 |
54
+ | label | `ReactNode` | — | 文案 |
55
+
56
+
57
+ ---
58
+ [← 回到索引](../llms.md)