@fangxinyan/lumina 0.5.0 → 0.6.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 (382) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.d.cts +2 -2
  3. package/dist/Accordion.d.ts +2 -2
  4. package/dist/Accordion.js +2 -2
  5. package/dist/Alert.cjs +3 -3
  6. package/dist/Alert.d.cts +2 -2
  7. package/dist/Alert.d.ts +2 -2
  8. package/dist/Alert.js +2 -2
  9. package/dist/AppShell.cjs +5 -5
  10. package/dist/AppShell.d.cts +8 -8
  11. package/dist/AppShell.d.ts +8 -8
  12. package/dist/AppShell.js +1 -1
  13. package/dist/AutoComplete.cjs +5 -5
  14. package/dist/AutoComplete.d.cts +1 -4
  15. package/dist/AutoComplete.d.ts +1 -4
  16. package/dist/AutoComplete.js +4 -4
  17. package/dist/Avatar.cjs +2 -2
  18. package/dist/Avatar.d.cts +1 -1
  19. package/dist/Avatar.d.ts +1 -1
  20. package/dist/Avatar.js +1 -1
  21. package/dist/Button.cjs +4 -4
  22. package/dist/Button.js +2 -2
  23. package/dist/Calendar.cjs +3 -3
  24. package/dist/Calendar.d.cts +2 -2
  25. package/dist/Calendar.d.ts +2 -2
  26. package/dist/Calendar.js +2 -2
  27. package/dist/Cascader.cjs +4 -4
  28. package/dist/Cascader.d.cts +2 -2
  29. package/dist/Cascader.d.ts +2 -2
  30. package/dist/Cascader.js +3 -3
  31. package/dist/Checkbox.cjs +4 -4
  32. package/dist/Checkbox.d.cts +5 -5
  33. package/dist/Checkbox.d.ts +5 -5
  34. package/dist/Checkbox.js +2 -2
  35. package/dist/ColorPicker.cjs +3 -3
  36. package/dist/ColorPicker.d.cts +1 -3
  37. package/dist/ColorPicker.d.ts +1 -3
  38. package/dist/ColorPicker.js +2 -2
  39. package/dist/CommandPalette.cjs +4 -4
  40. package/dist/CommandPalette.d.cts +2 -2
  41. package/dist/CommandPalette.d.ts +2 -2
  42. package/dist/CommandPalette.js +3 -3
  43. package/dist/ContextMenu.cjs +2 -2
  44. package/dist/ContextMenu.d.cts +2 -2
  45. package/dist/ContextMenu.d.ts +2 -2
  46. package/dist/ContextMenu.js +1 -1
  47. package/dist/Divider.cjs +2 -2
  48. package/dist/Divider.d.cts +1 -1
  49. package/dist/Divider.d.ts +1 -1
  50. package/dist/Divider.js +1 -1
  51. package/dist/Drawer.cjs +3 -3
  52. package/dist/Drawer.d.cts +2 -2
  53. package/dist/Drawer.d.ts +2 -2
  54. package/dist/Drawer.js +2 -2
  55. package/dist/Empty.cjs +4 -4
  56. package/dist/Empty.d.cts +6 -6
  57. package/dist/Empty.d.ts +6 -6
  58. package/dist/Empty.js +1 -1
  59. package/dist/Form.cjs +4 -4
  60. package/dist/Form.d.cts +2 -2
  61. package/dist/Form.d.ts +2 -2
  62. package/dist/Form.js +1 -1
  63. package/dist/Icon.cjs +3 -3
  64. package/dist/Icon.d.cts +2 -2
  65. package/dist/Icon.d.ts +2 -2
  66. package/dist/Icon.js +1 -1
  67. package/dist/Image.cjs +4 -4
  68. package/dist/Image.d.cts +4 -4
  69. package/dist/Image.d.ts +4 -4
  70. package/dist/Image.js +2 -2
  71. package/dist/Input.cjs +4 -4
  72. package/dist/Input.js +2 -2
  73. package/dist/InputNumber.cjs +4 -4
  74. package/dist/InputNumber.d.cts +1 -5
  75. package/dist/InputNumber.d.ts +1 -5
  76. package/dist/InputNumber.js +3 -3
  77. package/dist/List.cjs +2 -2
  78. package/dist/List.d.cts +2 -2
  79. package/dist/List.d.ts +2 -2
  80. package/dist/List.js +1 -1
  81. package/dist/Modal.cjs +4 -4
  82. package/dist/Modal.d.cts +2 -2
  83. package/dist/Modal.d.ts +2 -2
  84. package/dist/Modal.js +3 -3
  85. package/dist/Pagination.cjs +6 -6
  86. package/dist/Pagination.d.cts +2 -2
  87. package/dist/Pagination.d.ts +2 -2
  88. package/dist/Pagination.js +5 -5
  89. package/dist/Popover-DVGQGWX6.css +103 -0
  90. package/dist/Popover.cjs +3 -3
  91. package/dist/Popover.d.cts +25 -3
  92. package/dist/Popover.d.ts +25 -3
  93. package/dist/Popover.js +2 -2
  94. package/dist/Progress-CHV7DN6Y.css +80 -0
  95. package/dist/Progress.cjs +2 -6
  96. package/dist/Progress.d.cts +5 -13
  97. package/dist/Progress.d.ts +5 -13
  98. package/dist/Progress.js +1 -1
  99. package/dist/Select.cjs +5 -5
  100. package/dist/Select.d.cts +6 -3
  101. package/dist/Select.d.ts +6 -3
  102. package/dist/Select.js +4 -4
  103. package/dist/Splitter.cjs +2 -2
  104. package/dist/Splitter.d.cts +2 -2
  105. package/dist/Splitter.d.ts +2 -2
  106. package/dist/Splitter.js +1 -1
  107. package/dist/StatusBar.cjs +3 -3
  108. package/dist/StatusBar.d.cts +3 -2
  109. package/dist/StatusBar.d.ts +3 -2
  110. package/dist/StatusBar.js +1 -1
  111. package/dist/Switch.cjs +2 -2
  112. package/dist/Switch.d.cts +2 -2
  113. package/dist/Switch.d.ts +2 -2
  114. package/dist/Switch.js +1 -1
  115. package/dist/Table.cjs +9 -9
  116. package/dist/Table.d.cts +4 -3
  117. package/dist/Table.d.ts +4 -3
  118. package/dist/Table.js +7 -7
  119. package/dist/Tabs.cjs +3 -3
  120. package/dist/Tabs.d.cts +5 -5
  121. package/dist/Tabs.d.ts +5 -5
  122. package/dist/Tabs.js +1 -1
  123. package/dist/Tag.cjs +4 -4
  124. package/dist/Tag.d.cts +2 -2
  125. package/dist/Tag.d.ts +2 -2
  126. package/dist/Tag.js +2 -2
  127. package/dist/Timeline-RHZAZKZ7.css +136 -0
  128. package/dist/Timeline.cjs +13 -0
  129. package/dist/Timeline.cjs.map +1 -0
  130. package/dist/Timeline.d.cts +38 -0
  131. package/dist/Timeline.d.ts +38 -0
  132. package/dist/Timeline.js +4 -0
  133. package/dist/Timeline.js.map +1 -0
  134. package/dist/{Toast-6PVSAXQ5.css → Toast-YSACW3EM.css} +2 -2
  135. package/dist/Toast.cjs +4 -4
  136. package/dist/Toast.d.cts +2 -2
  137. package/dist/Toast.d.ts +2 -2
  138. package/dist/Toast.js +2 -2
  139. package/dist/{Tooltip-ST24GY4S.css → Tooltip-DMKUPC24.css} +1 -0
  140. package/dist/Tooltip.cjs +3 -3
  141. package/dist/Tooltip.d.cts +2 -2
  142. package/dist/Tooltip.d.ts +2 -2
  143. package/dist/Tooltip.js +2 -2
  144. package/dist/Typography.cjs +7 -7
  145. package/dist/Typography.js +2 -2
  146. package/dist/{chunk-QVFEKGKI.cjs → chunk-2K5HZLXW.cjs} +6 -3
  147. package/dist/chunk-2K5HZLXW.cjs.map +1 -0
  148. package/dist/chunk-2LIX7ZHX.js +29 -0
  149. package/dist/chunk-2LIX7ZHX.js.map +1 -0
  150. package/dist/{chunk-N73JGXYZ.cjs → chunk-2TNJ7TC4.cjs} +22 -12
  151. package/dist/chunk-2TNJ7TC4.cjs.map +1 -0
  152. package/dist/chunk-3EGZ6TBF.cjs +65 -0
  153. package/dist/chunk-3EGZ6TBF.cjs.map +1 -0
  154. package/dist/{chunk-RFU5HN4E.js → chunk-3LJO33HI.js} +25 -7
  155. package/dist/chunk-3LJO33HI.js.map +1 -0
  156. package/dist/{chunk-RZ2E3XEU.cjs → chunk-3XIDJEYR.cjs} +21 -6
  157. package/dist/chunk-3XIDJEYR.cjs.map +1 -0
  158. package/dist/{chunk-UQB5OHMO.js → chunk-44AVDO3T.js} +27 -19
  159. package/dist/chunk-44AVDO3T.js.map +1 -0
  160. package/dist/chunk-474MXYO5.cjs +108 -0
  161. package/dist/chunk-474MXYO5.cjs.map +1 -0
  162. package/dist/{chunk-XCYE4OQV.js → chunk-4DNHASZU.js} +10 -8
  163. package/dist/chunk-4DNHASZU.js.map +1 -0
  164. package/dist/{chunk-OM76QWUN.js → chunk-4JHFGSNH.js} +24 -13
  165. package/dist/chunk-4JHFGSNH.js.map +1 -0
  166. package/dist/{chunk-6Z24VO3K.js → chunk-4XSP4HHZ.js} +18 -8
  167. package/dist/chunk-4XSP4HHZ.js.map +1 -0
  168. package/dist/{chunk-CTYW42GG.js → chunk-5VIOJW6M.js} +142 -129
  169. package/dist/chunk-5VIOJW6M.js.map +1 -0
  170. package/dist/{chunk-O7C6S644.js → chunk-6CAEGNCK.js} +10 -8
  171. package/dist/chunk-6CAEGNCK.js.map +1 -0
  172. package/dist/{chunk-JXHMJUVI.js → chunk-6FSOJLY6.js} +3 -3
  173. package/dist/{chunk-JXHMJUVI.js.map → chunk-6FSOJLY6.js.map} +1 -1
  174. package/dist/{chunk-LLNEDEST.cjs → chunk-6TRVGFFX.cjs} +18 -7
  175. package/dist/chunk-6TRVGFFX.cjs.map +1 -0
  176. package/dist/{chunk-7T2SLRNL.cjs → chunk-74VZZAUT.cjs} +14 -7
  177. package/dist/chunk-74VZZAUT.cjs.map +1 -0
  178. package/dist/{chunk-GR5STMOA.js → chunk-A3IJM7IX.js} +76 -50
  179. package/dist/chunk-A3IJM7IX.js.map +1 -0
  180. package/dist/{chunk-V2DIQ3RH.js → chunk-ANAQER3T.js} +21 -6
  181. package/dist/chunk-ANAQER3T.js.map +1 -0
  182. package/dist/{chunk-WZ73TWB2.cjs → chunk-AXRABZLY.cjs} +25 -7
  183. package/dist/chunk-AXRABZLY.cjs.map +1 -0
  184. package/dist/{chunk-QOGROEVD.js → chunk-BSHHQOFY.js} +27 -21
  185. package/dist/chunk-BSHHQOFY.js.map +1 -0
  186. package/dist/{chunk-JSDQVVQB.js → chunk-CVEGVB2C.js} +17 -12
  187. package/dist/chunk-CVEGVB2C.js.map +1 -0
  188. package/dist/{chunk-LXNR6TQK.js → chunk-D242UJZO.js} +14 -11
  189. package/dist/chunk-D242UJZO.js.map +1 -0
  190. package/dist/{chunk-AESLEYST.js → chunk-DB5JMXOI.js} +11 -9
  191. package/dist/chunk-DB5JMXOI.js.map +1 -0
  192. package/dist/{chunk-OWNVDXRQ.js → chunk-DCX36FYD.js} +23 -10
  193. package/dist/chunk-DCX36FYD.js.map +1 -0
  194. package/dist/{chunk-YCHUHMNP.cjs → chunk-DH4NYYJP.cjs} +46 -20
  195. package/dist/chunk-DH4NYYJP.cjs.map +1 -0
  196. package/dist/{chunk-ZFJHUOFU.js → chunk-DUNQNSVK.js} +21 -11
  197. package/dist/chunk-DUNQNSVK.js.map +1 -0
  198. package/dist/{chunk-5PREWYTB.js → chunk-E6K6GYUC.js} +21 -27
  199. package/dist/chunk-E6K6GYUC.js.map +1 -0
  200. package/dist/{chunk-IHACXMOI.js → chunk-EARCKSI7.js} +6 -3
  201. package/dist/chunk-EARCKSI7.js.map +1 -0
  202. package/dist/chunk-EHZXEZI2.cjs +78 -0
  203. package/dist/chunk-EHZXEZI2.cjs.map +1 -0
  204. package/dist/{chunk-HJIKU6MF.cjs → chunk-FBQLNAUI.cjs} +11 -9
  205. package/dist/chunk-FBQLNAUI.cjs.map +1 -0
  206. package/dist/chunk-FCIPCZAK.cjs +53 -0
  207. package/dist/chunk-FCIPCZAK.cjs.map +1 -0
  208. package/dist/{chunk-7M7NAMR5.js → chunk-FSOJHDXH.js} +18 -7
  209. package/dist/chunk-FSOJHDXH.js.map +1 -0
  210. package/dist/{chunk-BCPAY65C.cjs → chunk-HHSVGNJA.cjs} +7 -7
  211. package/dist/chunk-HHSVGNJA.cjs.map +1 -0
  212. package/dist/{chunk-WVBFQB26.cjs → chunk-HQO7EZNQ.cjs} +24 -14
  213. package/dist/chunk-HQO7EZNQ.cjs.map +1 -0
  214. package/dist/{chunk-MDQNUKCP.cjs → chunk-IL523MTN.cjs} +146 -133
  215. package/dist/chunk-IL523MTN.cjs.map +1 -0
  216. package/dist/{chunk-SMHXSEBD.cjs → chunk-JAGJQDAV.cjs} +22 -13
  217. package/dist/chunk-JAGJQDAV.cjs.map +1 -0
  218. package/dist/{chunk-RWHWEQQX.cjs → chunk-JF2WNLPF.cjs} +6 -6
  219. package/dist/{chunk-RWHWEQQX.cjs.map → chunk-JF2WNLPF.cjs.map} +1 -1
  220. package/dist/chunk-JS6U7UQS.js +86 -0
  221. package/dist/chunk-JS6U7UQS.js.map +1 -0
  222. package/dist/{chunk-TZXEZFCI.cjs → chunk-KA3XLPQJ.cjs} +34 -9
  223. package/dist/chunk-KA3XLPQJ.cjs.map +1 -0
  224. package/dist/{chunk-NS3C2ZSE.js → chunk-KWE2PXJQ.js} +8 -5
  225. package/dist/chunk-KWE2PXJQ.js.map +1 -0
  226. package/dist/{chunk-E62JFAHW.js → chunk-LSQD2GFA.js} +4 -4
  227. package/dist/chunk-LSQD2GFA.js.map +1 -0
  228. package/dist/{chunk-77TZHI76.cjs → chunk-MU4GGX6C.cjs} +14 -12
  229. package/dist/chunk-MU4GGX6C.cjs.map +1 -0
  230. package/dist/{chunk-IOWREUEP.js → chunk-MXIWTYNC.js} +17 -7
  231. package/dist/chunk-MXIWTYNC.js.map +1 -0
  232. package/dist/{chunk-5EAVXFFD.cjs → chunk-NRP3X3PE.cjs} +17 -12
  233. package/dist/chunk-NRP3X3PE.cjs.map +1 -0
  234. package/dist/{chunk-VQBZKRIB.cjs → chunk-P4CGE5C7.cjs} +19 -9
  235. package/dist/chunk-P4CGE5C7.cjs.map +1 -0
  236. package/dist/{chunk-TZLM5GF4.js → chunk-PX5ABNKV.js} +19 -10
  237. package/dist/chunk-PX5ABNKV.js.map +1 -0
  238. package/dist/{chunk-RQV7SMIZ.cjs → chunk-QCNHDDSD.cjs} +36 -13
  239. package/dist/chunk-QCNHDDSD.cjs.map +1 -0
  240. package/dist/{chunk-5N7347MI.js → chunk-QRSPBK3X.js} +8 -6
  241. package/dist/chunk-QRSPBK3X.js.map +1 -0
  242. package/dist/{chunk-6XZ362VL.js → chunk-RHZOBQON.js} +36 -15
  243. package/dist/chunk-RHZOBQON.js.map +1 -0
  244. package/dist/chunk-RNVE2LMJ.cjs +162 -0
  245. package/dist/chunk-RNVE2LMJ.cjs.map +1 -0
  246. package/dist/{chunk-TQLCIXCK.cjs → chunk-RXL26GSI.cjs} +28 -5
  247. package/dist/chunk-RXL26GSI.cjs.map +1 -0
  248. package/dist/{chunk-NN7WMXY4.cjs → chunk-S3OSBW7R.cjs} +19 -14
  249. package/dist/chunk-S3OSBW7R.cjs.map +1 -0
  250. package/dist/{chunk-33TIL25B.cjs → chunk-SREMTSVI.cjs} +47 -19
  251. package/dist/chunk-SREMTSVI.cjs.map +1 -0
  252. package/dist/{chunk-6GNFRP2H.js → chunk-SWB57EA2.js} +9 -7
  253. package/dist/chunk-SWB57EA2.js.map +1 -0
  254. package/dist/{chunk-KW7Z4IQC.js → chunk-T7ZBJJC4.js} +12 -7
  255. package/dist/chunk-T7ZBJJC4.js.map +1 -0
  256. package/dist/chunk-TC5ZL2OS.cjs +165 -0
  257. package/dist/chunk-TC5ZL2OS.cjs.map +1 -0
  258. package/dist/{chunk-XYVJ3FBQ.cjs → chunk-V24B7KWT.cjs} +12 -10
  259. package/dist/chunk-V24B7KWT.cjs.map +1 -0
  260. package/dist/{chunk-3BZ47QNV.cjs → chunk-V5KSJITO.cjs} +7 -7
  261. package/dist/{chunk-3BZ47QNV.cjs.map → chunk-V5KSJITO.cjs.map} +1 -1
  262. package/dist/{chunk-YFBHVTKN.cjs → chunk-WFFWVQK4.cjs} +7 -7
  263. package/dist/{chunk-YFBHVTKN.cjs.map → chunk-WFFWVQK4.cjs.map} +1 -1
  264. package/dist/{chunk-I7WLFADD.js → chunk-WLFMOWUY.js} +3 -3
  265. package/dist/{chunk-I7WLFADD.js.map → chunk-WLFMOWUY.js.map} +1 -1
  266. package/dist/{chunk-I2HHC6QW.js → chunk-X3QINITU.js} +17 -6
  267. package/dist/chunk-X3QINITU.js.map +1 -0
  268. package/dist/{chunk-2ENTRT7R.cjs → chunk-XMFVAYBP.cjs} +20 -9
  269. package/dist/chunk-XMFVAYBP.cjs.map +1 -0
  270. package/dist/{chunk-HXSAH4Y6.cjs → chunk-XMINE4TN.cjs} +28 -17
  271. package/dist/chunk-XMINE4TN.cjs.map +1 -0
  272. package/dist/{chunk-YZ2I7CDF.cjs → chunk-XXE5TQ7I.cjs} +9 -7
  273. package/dist/chunk-XXE5TQ7I.cjs.map +1 -0
  274. package/dist/chunk-XYGRVPUA.js +140 -0
  275. package/dist/chunk-XYGRVPUA.js.map +1 -0
  276. package/dist/chunk-Y7BZMMAV.cjs +51 -0
  277. package/dist/chunk-Y7BZMMAV.cjs.map +1 -0
  278. package/dist/{chunk-FFZLSY2N.js → chunk-YRAQRENN.js} +40 -13
  279. package/dist/chunk-YRAQRENN.js.map +1 -0
  280. package/dist/{chunk-IJA26LRY.cjs → chunk-YVSZLQTQ.cjs} +19 -9
  281. package/dist/chunk-YVSZLQTQ.cjs.map +1 -0
  282. package/dist/{chunk-OZVPJWXO.cjs → chunk-ZA36BJIY.cjs} +41 -14
  283. package/dist/chunk-ZA36BJIY.cjs.map +1 -0
  284. package/dist/{chunk-47Z4NIU4.js → chunk-ZHCQEJ2Z.js} +14 -7
  285. package/dist/chunk-ZHCQEJ2Z.js.map +1 -0
  286. package/dist/{chunk-T4PI2ZX7.cjs → chunk-ZM4P6ELG.cjs} +46 -25
  287. package/dist/chunk-ZM4P6ELG.cjs.map +1 -0
  288. package/dist/{chunk-PKXXR76Q.js → chunk-ZN6VS6SO.js} +18 -13
  289. package/dist/chunk-ZN6VS6SO.js.map +1 -0
  290. package/dist/{chunk-FXQGPHK2.js → chunk-ZPDMAMWC.js} +21 -11
  291. package/dist/chunk-ZPDMAMWC.js.map +1 -0
  292. package/dist/{chunk-WUOFJPZ4.js → chunk-ZZXNHPF3.js} +3 -3
  293. package/dist/{chunk-WUOFJPZ4.js.map → chunk-ZZXNHPF3.js.map} +1 -1
  294. package/dist/index.cjs +98 -97
  295. package/dist/index.cjs.map +1 -1
  296. package/dist/index.d.cts +3 -2
  297. package/dist/index.d.ts +3 -2
  298. package/dist/index.js +38 -37
  299. package/dist/index.js.map +1 -1
  300. package/dist/styles.css +136 -36
  301. package/docs/llms/appshell.md +36 -0
  302. package/docs/llms/popover.md +138 -6
  303. package/docs/llms/progress.md +10 -18
  304. package/docs/llms/timeline.md +140 -0
  305. package/docs/llms.md +9 -6
  306. package/package.json +80 -1
  307. package/dist/Popover-NYEKT5CQ.css +0 -10
  308. package/dist/Progress-IXRSO5TW.css +0 -63
  309. package/dist/chunk-2ENTRT7R.cjs.map +0 -1
  310. package/dist/chunk-33TIL25B.cjs.map +0 -1
  311. package/dist/chunk-3UU2PUK4.js +0 -66
  312. package/dist/chunk-3UU2PUK4.js.map +0 -1
  313. package/dist/chunk-47Z4NIU4.js.map +0 -1
  314. package/dist/chunk-5BFETKVP.cjs +0 -52
  315. package/dist/chunk-5BFETKVP.cjs.map +0 -1
  316. package/dist/chunk-5EAVXFFD.cjs.map +0 -1
  317. package/dist/chunk-5N7347MI.js.map +0 -1
  318. package/dist/chunk-5PREWYTB.js.map +0 -1
  319. package/dist/chunk-6GNFRP2H.js.map +0 -1
  320. package/dist/chunk-6XZ362VL.js.map +0 -1
  321. package/dist/chunk-6Z24VO3K.js.map +0 -1
  322. package/dist/chunk-77TZHI76.cjs.map +0 -1
  323. package/dist/chunk-7M7NAMR5.js.map +0 -1
  324. package/dist/chunk-7T2SLRNL.cjs.map +0 -1
  325. package/dist/chunk-7YQWG7HR.cjs +0 -45
  326. package/dist/chunk-7YQWG7HR.cjs.map +0 -1
  327. package/dist/chunk-AESLEYST.js.map +0 -1
  328. package/dist/chunk-BCPAY65C.cjs.map +0 -1
  329. package/dist/chunk-CTYW42GG.js.map +0 -1
  330. package/dist/chunk-E62JFAHW.js.map +0 -1
  331. package/dist/chunk-FFZLSY2N.js.map +0 -1
  332. package/dist/chunk-FXQGPHK2.js.map +0 -1
  333. package/dist/chunk-GR5STMOA.js.map +0 -1
  334. package/dist/chunk-HJIKU6MF.cjs.map +0 -1
  335. package/dist/chunk-HXSAH4Y6.cjs.map +0 -1
  336. package/dist/chunk-I2HHC6QW.js.map +0 -1
  337. package/dist/chunk-IHACXMOI.js.map +0 -1
  338. package/dist/chunk-IJA26LRY.cjs.map +0 -1
  339. package/dist/chunk-IOWREUEP.js.map +0 -1
  340. package/dist/chunk-IZDJCEMF.cjs +0 -31
  341. package/dist/chunk-IZDJCEMF.cjs.map +0 -1
  342. package/dist/chunk-JSDQVVQB.js.map +0 -1
  343. package/dist/chunk-KW7Z4IQC.js.map +0 -1
  344. package/dist/chunk-LLNEDEST.cjs.map +0 -1
  345. package/dist/chunk-LXNR6TQK.js.map +0 -1
  346. package/dist/chunk-MDQNUKCP.cjs.map +0 -1
  347. package/dist/chunk-N73JGXYZ.cjs.map +0 -1
  348. package/dist/chunk-NN7WMXY4.cjs.map +0 -1
  349. package/dist/chunk-NQQWCIE6.cjs +0 -20
  350. package/dist/chunk-NQQWCIE6.cjs.map +0 -1
  351. package/dist/chunk-NS3C2ZSE.js.map +0 -1
  352. package/dist/chunk-O2HMH5BI.cjs +0 -88
  353. package/dist/chunk-O2HMH5BI.cjs.map +0 -1
  354. package/dist/chunk-O7C6S644.js.map +0 -1
  355. package/dist/chunk-OM76QWUN.js.map +0 -1
  356. package/dist/chunk-OWNVDXRQ.js.map +0 -1
  357. package/dist/chunk-OZVPJWXO.cjs.map +0 -1
  358. package/dist/chunk-PKXXR76Q.js.map +0 -1
  359. package/dist/chunk-QOGROEVD.js.map +0 -1
  360. package/dist/chunk-QVFEKGKI.cjs.map +0 -1
  361. package/dist/chunk-RFU5HN4E.js.map +0 -1
  362. package/dist/chunk-RQV7SMIZ.cjs.map +0 -1
  363. package/dist/chunk-RZ2E3XEU.cjs.map +0 -1
  364. package/dist/chunk-SMHXSEBD.cjs.map +0 -1
  365. package/dist/chunk-T4PI2ZX7.cjs.map +0 -1
  366. package/dist/chunk-TQLCIXCK.cjs.map +0 -1
  367. package/dist/chunk-TZLM5GF4.js.map +0 -1
  368. package/dist/chunk-TZXEZFCI.cjs.map +0 -1
  369. package/dist/chunk-UQB5OHMO.js.map +0 -1
  370. package/dist/chunk-V2DIQ3RH.js.map +0 -1
  371. package/dist/chunk-VQBZKRIB.cjs.map +0 -1
  372. package/dist/chunk-WDBJVKSR.js +0 -18
  373. package/dist/chunk-WDBJVKSR.js.map +0 -1
  374. package/dist/chunk-WVBFQB26.cjs.map +0 -1
  375. package/dist/chunk-WZ73TWB2.cjs.map +0 -1
  376. package/dist/chunk-XCYE4OQV.js.map +0 -1
  377. package/dist/chunk-XUT2Z2L6.cjs +0 -119
  378. package/dist/chunk-XUT2Z2L6.cjs.map +0 -1
  379. package/dist/chunk-XYVJ3FBQ.cjs.map +0 -1
  380. package/dist/chunk-YCHUHMNP.cjs.map +0 -1
  381. package/dist/chunk-YZ2I7CDF.cjs.map +0 -1
  382. package/dist/chunk-ZFJHUOFU.js.map +0 -1
package/dist/styles.css CHANGED
@@ -711,11 +711,28 @@ input, textarea, select { font-family: inherit; color: inherit; }
711
711
  .slider.disabled .slider-mark { pointer-events: none; }
712
712
  /* ============ Progress ============ */
713
713
  .progress {
714
+ --progress-fill: var(--accent);
715
+ --progress-fill-glow: var(--accent-glow);
716
+ --progress-inset: 2px;
714
717
  width: 100%;
715
718
  display: flex;
716
719
  flex-direction: column;
717
720
  gap: 6px;
718
721
  }
722
+ .progress.sm { --progress-inset: 1px; }
723
+ .progress.lg { --progress-inset: 2px; }
724
+ .progress.success {
725
+ --progress-fill: var(--success);
726
+ --progress-fill-glow: color-mix(in oklch, var(--success) 35%, transparent);
727
+ }
728
+ .progress.warning {
729
+ --progress-fill: var(--warning);
730
+ --progress-fill-glow: color-mix(in oklch, var(--warning) 35%, transparent);
731
+ }
732
+ .progress.danger {
733
+ --progress-fill: var(--danger);
734
+ --progress-fill-glow: color-mix(in oklch, var(--danger) 35%, transparent);
735
+ }
719
736
  .progress-label {
720
737
  display: flex;
721
738
  justify-content: space-between;
@@ -727,7 +744,13 @@ input, textarea, select { font-family: inherit; color: inherit; }
727
744
  width: 100%;
728
745
  height: 10px;
729
746
  border-radius: 999px;
730
- background: var(--bg);
747
+ padding: var(--progress-inset);
748
+ box-sizing: border-box;
749
+ background: linear-gradient(
750
+ 180deg,
751
+ color-mix(in oklch, var(--bg) 88%, var(--shadow-light)),
752
+ color-mix(in oklch, var(--bg) 92%, var(--shadow-dark))
753
+ );
731
754
  box-shadow: var(--neu-in-sm);
732
755
  overflow: hidden;
733
756
  position: relative;
@@ -735,41 +758,36 @@ input, textarea, select { font-family: inherit; color: inherit; }
735
758
  .progress.sm .progress-track { height: 6px; }
736
759
  .progress.lg .progress-track { height: 14px; }
737
760
  .progress-bar {
738
- height: 100%;
739
- background: linear-gradient(90deg, color-mix(in oklch, var(--accent) 70%, white), var(--accent));
740
- border-radius: 999px;
741
- box-shadow: 0 0 12px var(--accent-glow);
742
- transition: width var(--dur-slow) var(--ease);
743
- }
744
- .progress.success .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--success) 70%, white), var(--success)); box-shadow: 0 0 10px color-mix(in oklch, var(--success) 35%, transparent); }
745
- .progress.warning .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--warning) 70%, white), var(--warning)); box-shadow: 0 0 10px color-mix(in oklch, var(--warning) 35%, transparent); }
746
- .progress.danger .progress-bar { background: linear-gradient(90deg, color-mix(in oklch, var(--danger) 70%, white), var(--danger)); box-shadow: 0 0 10px color-mix(in oklch, var(--danger) 35%, transparent); }
747
- .ring {
748
- --size: 72px;
749
- --val: 50;
750
- width: var(--size); height: var(--size);
751
- border-radius: 999px;
752
- background: conic-gradient(var(--accent) calc(var(--val) * 1%), var(--bg-sunken) 0);
753
- display: grid; place-items: center;
754
761
  position: relative;
755
- box-shadow: var(--neu-out-sm);
762
+ height: 100%;
763
+ border-radius: inherit;
764
+ background: linear-gradient(
765
+ 180deg,
766
+ color-mix(in oklch, var(--progress-fill) 68%, var(--shadow-light)) 0%,
767
+ var(--progress-fill) 55%,
768
+ color-mix(in oklch, var(--progress-fill) 84%, var(--shadow-dark)) 100%
769
+ );
770
+ box-shadow:
771
+ inset 1px 1px 2px color-mix(in oklch, var(--progress-fill) 18%, var(--shadow-dark)),
772
+ inset -1px -1px 2px color-mix(in oklch, var(--progress-fill) 14%, var(--shadow-light)),
773
+ 1px 1px 4px color-mix(in oklch, var(--progress-fill) 16%, var(--shadow-dark)),
774
+ -1px -1px 4px color-mix(in oklch, var(--progress-fill) 10%, var(--shadow-light)),
775
+ 0 0 10px var(--progress-fill-glow);
776
+ transition: width var(--dur-slow) var(--ease), box-shadow var(--dur) var(--ease);
777
+ overflow: hidden;
756
778
  }
757
- .ring.success { background: conic-gradient(var(--success) calc(var(--val) * 1%), var(--bg-sunken) 0); }
758
- .ring.warning { background: conic-gradient(var(--warning) calc(var(--val) * 1%), var(--bg-sunken) 0); }
759
- .ring.danger { background: conic-gradient(var(--danger) calc(var(--val) * 1%), var(--bg-sunken) 0); }
760
- .ring::before {
779
+ .progress-bar::before {
761
780
  content: "";
762
781
  position: absolute;
763
- inset: 8px;
764
- border-radius: 999px;
765
- background: var(--bg);
766
- box-shadow: var(--neu-in-sm);
767
- }
768
- .ring-label {
769
- position: relative;
770
- font-size: 13px;
771
- font-weight: 600;
772
- color: var(--accent-ink);
782
+ inset: 0;
783
+ border-radius: inherit;
784
+ background: linear-gradient(
785
+ 180deg,
786
+ color-mix(in oklch, var(--shadow-light) 72%, transparent) 0%,
787
+ color-mix(in oklch, var(--shadow-light) 28%, transparent) 38%,
788
+ transparent 70%
789
+ );
790
+ pointer-events: none;
773
791
  }
774
792
  /* ============ Tag & Badge ============ */
775
793
  .tag {
@@ -1542,6 +1560,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
1542
1560
  .tip-anchor {
1543
1561
  position: relative;
1544
1562
  display: inline-flex;
1563
+ align-self: flex-start;
1545
1564
  }
1546
1565
  .tip {
1547
1566
  background: var(--bg-sunken);
@@ -1576,7 +1595,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
1576
1595
  box-shadow: var(--neu-float);
1577
1596
  padding: 12px 16px;
1578
1597
  min-width: 240px;
1579
- display: flex; align-items: flex-start; gap: 10px;
1598
+ display: flex; align-items: center; gap: 10px;
1580
1599
  font-size: 13px;
1581
1600
  pointer-events: auto;
1582
1601
  animation: toastIn var(--dur-slow) var(--ease);
@@ -1585,7 +1604,7 @@ input, textarea, select { font-family: inherit; color: inherit; }
1585
1604
  .toast.success { border-color: var(--success); }
1586
1605
  .toast.warning { border-color: var(--warning); }
1587
1606
  .toast.danger { border-color: var(--danger); }
1588
- .toast .toast-icon { color: var(--accent); margin-top: 2px; }
1607
+ .toast .toast-icon { color: var(--accent); flex-shrink: 0; }
1589
1608
  .toast.success .toast-icon { color: var(--success); }
1590
1609
  .toast.warning .toast-icon { color: var(--warning); }
1591
1610
  .toast.danger .toast-icon { color: var(--danger); }
@@ -1606,10 +1625,91 @@ input, textarea, select { font-family: inherit; color: inherit; }
1606
1625
  z-index: 1000;
1607
1626
  background: var(--bg);
1608
1627
  border-radius: var(--r-md);
1609
- padding: var(--gap-3);
1610
1628
  min-width: 220px;
1611
1629
  box-shadow: var(--neu-float);
1612
- animation: menuIn var(--dur) var(--ease);
1630
+ position: relative;
1631
+ }
1632
+ /*
1633
+ * Direction-aware entrance.
1634
+ * We animate `opacity` + `translate` (the standalone property, NOT `transform`)
1635
+ * so we don't clobber the inline `transform: translateX(-50%)` that useFloating
1636
+ * applies for cross-axis centering.
1637
+ */
1638
+ .popover-bottom { animation: popoverInDown var(--dur) var(--ease); }
1639
+ .popover-top { animation: popoverInUp var(--dur) var(--ease); }
1640
+ .popover-left { animation: popoverInLeft var(--dur) var(--ease); }
1641
+ .popover-right { animation: popoverInRight var(--dur) var(--ease); }
1642
+ @keyframes popoverInDown { from { opacity: 0; translate: 0 -6px; } }
1643
+ @keyframes popoverInUp { from { opacity: 0; translate: 0 6px; } }
1644
+ @keyframes popoverInLeft { from { opacity: 0; translate: 6px 0; } }
1645
+ @keyframes popoverInRight { from { opacity: 0; translate: -6px 0; } }
1646
+ /* ---- Header ---- */
1647
+ .popover-header {
1648
+ display: flex;
1649
+ align-items: center;
1650
+ justify-content: space-between;
1651
+ padding: var(--gap-3) var(--gap-3) 0;
1652
+ gap: var(--gap-2);
1653
+ }
1654
+ .popover-title {
1655
+ font-weight: 600;
1656
+ font-size: 14px;
1657
+ color: var(--fg);
1658
+ }
1659
+ .popover-close {
1660
+ all: unset;
1661
+ cursor: pointer;
1662
+ font-size: 16px;
1663
+ color: var(--fg-muted);
1664
+ line-height: 1;
1665
+ padding: 2px 4px;
1666
+ border-radius: var(--r-xs);
1667
+ transition: color var(--dur-fast) var(--ease);
1668
+ margin-left: auto;
1669
+ }
1670
+ .popover-close:hover {
1671
+ color: var(--fg);
1672
+ }
1673
+ /* ---- Body ---- */
1674
+ .popover-body {
1675
+ padding: var(--gap-3);
1676
+ }
1677
+ .popover-header + .popover-body {
1678
+ padding-top: var(--gap-2);
1679
+ }
1680
+ /* ---- Arrow ---- */
1681
+ .popover-arrow {
1682
+ position: absolute;
1683
+ width: 10px;
1684
+ height: 10px;
1685
+ background: var(--bg);
1686
+ box-shadow: 2px 2px 4px rgba(163, 177, 198, 0.2);
1687
+ transform: rotate(45deg);
1688
+ pointer-events: none;
1689
+ }
1690
+ .popover-arrow-bottom {
1691
+ top: -5px;
1692
+ left: 50%;
1693
+ margin-left: -5px;
1694
+ box-shadow: -2px -2px 4px rgba(163, 177, 198, 0.2);
1695
+ }
1696
+ .popover-arrow-top {
1697
+ bottom: -5px;
1698
+ left: 50%;
1699
+ margin-left: -5px;
1700
+ box-shadow: 2px 2px 4px rgba(163, 177, 198, 0.2);
1701
+ }
1702
+ .popover-arrow-left {
1703
+ right: -5px;
1704
+ top: 50%;
1705
+ margin-top: -5px;
1706
+ box-shadow: 2px -2px 4px rgba(163, 177, 198, 0.2);
1707
+ }
1708
+ .popover-arrow-right {
1709
+ left: -5px;
1710
+ top: 50%;
1711
+ margin-top: -5px;
1712
+ box-shadow: -2px 2px 4px rgba(163, 177, 198, 0.2);
1613
1713
  }
1614
1714
  /* ============ Alert ============ */
1615
1715
  .alert {
@@ -0,0 +1,36 @@
1
+ # AppShell 应用外壳
2
+
3
+ > 组合 TitleBar、Sidebar 与主内容区的 Electron 桌面布局容器。
4
+
5
+ ## 导入
6
+
7
+ ```tsx
8
+ import { AppShell, TitleBar, Sidebar, StatusBar } from "@fangxinyan/lumina";
9
+ ```
10
+
11
+ ## 示例
12
+
13
+ ### 完整工作台外壳
14
+
15
+ ```tsx
16
+ <AppShell
17
+ titleBar={<TitleBar title="Lumina Mail" platform="mac" />}
18
+ sidebar={<Sidebar items={items} activeKey={active} onSelect={setActive} />}
19
+ >
20
+ <main>...</main>
21
+ </AppShell>
22
+ ```
23
+
24
+ ## API
25
+
26
+ **AppShell**
27
+
28
+ | Prop | 类型 | 默认 | 说明 |
29
+ | --- | --- | --- | --- |
30
+ | titleBar | `ReactNode` | — | 顶部标题栏区域 |
31
+ | sidebar | `ReactNode` | — | 左侧导航区域 |
32
+ | children | `ReactNode` | — | 主内容区 |
33
+
34
+
35
+ ---
36
+ [← 回到索引](../llms.md)
@@ -1,6 +1,6 @@
1
1
  # Popover 气泡卡片
2
2
 
3
- > 比 Tooltip 更丰富,可承载交互内容。
3
+ > 比 Tooltip 更丰富,可承载交互内容。
4
4
 
5
5
  ## 导入
6
6
 
@@ -10,11 +10,137 @@ import { Popover } from "@fangxinyan/lumina";
10
10
 
11
11
  ## 示例
12
12
 
13
- ### 基础
13
+ ### 基础用法
14
+
15
+ 点击触发,弹出气泡卡片
16
+
17
+ ```tsx
18
+ <Row gap={24}>
19
+ <Popover
20
+ title="确认删除?"
21
+ content={
22
+ <div>
23
+ <div style={{ color: "var(--fg-muted)", fontSize: 13, marginBottom: 12 }}>
24
+ 删除后无法恢复。
25
+ </div>
26
+ <Row gap={6}>
27
+ <Button size="sm" variant="ghost">取消</Button>
28
+ <Button size="sm" variant="danger">删除</Button>
29
+ </Row>
30
+ </div>
31
+ }
32
+ >
33
+ <Button variant="danger" icon="trash">删除项目</Button>
34
+ </Popover>
35
+
36
+ <Popover
37
+ placement="right"
38
+ content={
39
+ <div style={{ display: "flex", alignItems: "center", gap: 10, minWidth: 160 }}>
40
+ <Avatar alt="金" size="sm" />
41
+ <div>
42
+ <div style={{ fontSize: 13, fontWeight: 600 }}>金伟</div>
43
+ <div style={{ fontSize: 11, color: "var(--fg-muted)" }}>设计总监</div>
44
+ </div>
45
+ </div>
46
+ }
47
+ >
48
+ <Avatar alt="金" />
49
+ </Popover>
50
+ </Row>
51
+ ```
52
+
53
+ ### 四方向
54
+
55
+ 支持 top / bottom / left / right 四个方向
56
+
57
+ ```tsx
58
+ <div style={{ display: "flex", flexWrap: "wrap", justifyContent: "center", gap: 12 }}>
59
+ <Popover placement="top" arrow content={<div>上方弹出内容</div>}>
60
+ <Button variant="ghost">上方</Button>
61
+ </Popover>
62
+ <Popover placement="bottom" arrow content={<div>下方弹出内容</div>}>
63
+ <Button variant="ghost">下方</Button>
64
+ </Popover>
65
+ <Popover placement="left" arrow content={<div>左侧弹出内容</div>}>
66
+ <Button variant="ghost">左侧</Button>
67
+ </Popover>
68
+ <Popover placement="right" arrow content={<div>右侧弹出内容</div>}>
69
+ <Button variant="ghost">右侧</Button>
70
+ </Popover>
71
+ </div>
72
+ ```
73
+
74
+ ### 箭头
75
+
76
+ arrow 属性添加指向触发元素的小箭头
77
+
78
+ ```tsx
79
+ <Popover
80
+ arrow
81
+ title="系统通知"
82
+ content={<div style={{ color: "var(--fg-muted)", fontSize: 13 }}>你有 3 条未读消息。</div>}
83
+ >
84
+ <Button icon="bell">消息</Button>
85
+ </Popover>
86
+ ```
87
+
88
+ ### 可关闭
89
+
90
+ closable 显示关闭按钮,适合信息提示场景
91
+
92
+ ```tsx
93
+ <Popover
94
+ closable
95
+ arrow
96
+ title="注意事项"
97
+ content={<div style={{ color: "var(--fg-muted)", fontSize: 13 }}>此操作需要管理员权限才能执行。</div>}
98
+ >
99
+ <Button icon="alert">权限</Button>
100
+ </Popover>
101
+ ```
102
+
103
+ ### Hover 触发
104
+
105
+ trigger="hover" 鼠标悬停触发
106
+
107
+ ```tsx
108
+ <Popover
109
+ trigger="hover"
110
+ arrow
111
+ content={
112
+ <div style={{ display: "flex", alignItems: "center", gap: 10, minWidth: 160 }}>
113
+ <Avatar alt="云" size="sm" />
114
+ <div>
115
+ <div style={{ fontSize: 13, fontWeight: 600 }}>云曦</div>
116
+ <div style={{ fontSize: 11, color: "var(--fg-muted)" }}>前端工程师</div>
117
+ </div>
118
+ </div>
119
+ }
120
+ >
121
+ <Avatar alt="云" />
122
+ </Popover>
123
+ ```
124
+
125
+ ### 表单内容
126
+
127
+ 气泡内可放置表单等复杂交互
14
128
 
15
129
  ```tsx
16
- <Popover content={<>...</>}>
17
- <Button>触发</Button>
130
+ <Popover
131
+ title="快速备注"
132
+ closable
133
+ arrow
134
+ content={
135
+ <div style={{ display: "flex", flexDirection: "column", gap: 10 }}>
136
+ <Input placeholder="输入备注..." />
137
+ <div style={{ display: "flex", justifyContent: "flex-end", gap: 6 }}>
138
+ <Button size="sm">保存</Button>
139
+ </div>
140
+ </div>
141
+ }
142
+ >
143
+ <Button icon="edit">备注</Button>
18
144
  </Popover>
19
145
  ```
20
146
 
@@ -25,9 +151,15 @@ import { Popover } from "@fangxinyan/lumina";
25
151
  | Prop | 类型 | 默认 | 说明 |
26
152
  | --- | --- | --- | --- |
27
153
  | content \* | `ReactNode` | — | 浮层内容 |
28
- | placement | `"top" | "bottom" | "left" | "right"` | `"bottom"` | 位置 |
154
+ | title | `ReactNode` | — | 标题 |
155
+ | placement | `"top" | "bottom" | "left" | "right"` | `"bottom"` | 弹出位置 |
29
156
  | trigger | `"click" | "hover"` | `"click"` | 触发方式 |
30
- | open / defaultOpen / onOpenChange | `—` | — | 受控显示 |
157
+ | arrow | `boolean` | `false` | 显示箭头 |
158
+ | closable | `boolean` | `false` | 显示关闭按钮 |
159
+ | width | `number | "auto"` | — | 面板宽度,"auto" 自适应 |
160
+ | open | `boolean` | — | 受控显示状态 |
161
+ | defaultOpen | `boolean` | `false` | 非受控初始状态 |
162
+ | onOpenChange | `(open: boolean) => void` | — | 显示状态变化回调 |
31
163
 
32
164
 
33
165
  ---
@@ -1,11 +1,11 @@
1
1
  # Progress 进度
2
2
 
3
- > 条形进度 Progress 与环形进度 Ring。
3
+ > 条形进度 Progress。
4
4
 
5
5
  ## 导入
6
6
 
7
7
  ```tsx
8
- import { Progress, Ring } from "@fangxinyan/lumina";
8
+ import { Progress } from "@fangxinyan/lumina";
9
9
  ```
10
10
 
11
11
  ## 示例
@@ -16,19 +16,19 @@ import { Progress, Ring } from "@fangxinyan/lumina";
16
16
  <Progress value={v} label="下载中" showValue />
17
17
  ```
18
18
 
19
- ### 尺寸
19
+ ### 自定义颜色
20
20
 
21
21
  ```tsx
22
- <Progress size="sm" value={60} />
23
- <Progress value={60} />
24
- <Progress size="lg" value={60} />
22
+ <Progress value={66} color="oklch(72% 0.18 285)" label="品牌同步" showValue />
23
+ <Progress value={38} color="#22c1c3" label="音频缓冲" showValue />
25
24
  ```
26
25
 
27
- ### 环形进度
26
+ ### 尺寸
28
27
 
29
28
  ```tsx
30
- <Ring value={65} />
31
- <Ring value={90} tone="success" size={80}><strong>90%</strong></Ring>
29
+ <Progress size="sm" value={60} />
30
+ <Progress value={60} />
31
+ <Progress size="lg" value={60} />
32
32
  ```
33
33
 
34
34
  ## API
@@ -40,19 +40,11 @@ import { Progress, Ring } from "@fangxinyan/lumina";
40
40
  | value \* | `number` | — | 0–max 之间 |
41
41
  | max | `number` | `100` | 最大值 |
42
42
  | tone | `"accent" | "success" | "warning" | "danger"` | `"accent"` | 色调 |
43
+ | color | `string` | — | 自定义填充色,覆盖 tone |
43
44
  | size | `"sm" | "md" | "lg"` | `"md"` | 尺寸 |
44
45
  | label | `ReactNode` | — | 顶部文案 |
45
46
  | showValue | `boolean` | `false` | 显示百分比 |
46
47
 
47
48
 
48
- **Ring**
49
-
50
- | Prop | 类型 | 默认 | 说明 |
51
- | --- | --- | --- | --- |
52
- | value \* | `number` | — | 0–100 |
53
- | size | `number` | `72` | 直径 (px) |
54
- | tone | `"accent" | "success" | ...` | `"accent"` | 色调 |
55
-
56
-
57
49
  ---
58
50
  [← 回到索引](../llms.md)
@@ -0,0 +1,140 @@
1
+ # Timeline 时间线
2
+
3
+ > 垂直时间线,支持等待状态、自定义圆点、交替布局
4
+
5
+ ## 示例
6
+
7
+ ### 基础用法
8
+
9
+ 最简单的时间线
10
+
11
+ ```tsx
12
+ <Timeline
13
+ items={[
14
+ { children: "创建项目 2024-01-01" },
15
+ { children: "初始化仓库 2024-01-05" },
16
+ { children: "发布 v0.1.0 2024-02-01" },
17
+ { children: "里程碑达成 2024-03-15" },
18
+ ]}
19
+ />
20
+ ```
21
+
22
+ ### 彩色节点
23
+
24
+ 通过 color 区分不同状态
25
+
26
+ ```tsx
27
+ <Timeline
28
+ items={[
29
+ { children: "成功部署", color: "success" },
30
+ { children: "告警通知", color: "warning" },
31
+ { children: "构建失败", color: "danger" },
32
+ { children: "信息更新", color: "info" },
33
+ ]}
34
+ />
35
+ ```
36
+
37
+ ### 等待状态
38
+
39
+ pending 属性展示加载中的末尾节点,适合表示流程尚未结束
40
+
41
+ ```tsx
42
+ <Timeline
43
+ pending
44
+ pendingContent="部署中..."
45
+ items={[
46
+ { children: "提交代码 10:21", color: "success" },
47
+ { children: "代码审查通过 10:45", color: "success" },
48
+ { children: "CI 构建完成 11:02", color: "success" },
49
+ ]}
50
+ />
51
+ ```
52
+
53
+ ### 自定义等待图标
54
+
55
+ pending 传入 ReactNode 自定义等待指示器
56
+
57
+ ```tsx
58
+ <Timeline
59
+ pending={<Icon name="clock" size={14} />}
60
+ pendingContent="等待审批..."
61
+ items={[
62
+ { children: "提交申请" },
63
+ { children: "部门审核通过" },
64
+ ]}
65
+ />
66
+ ```
67
+
68
+ ### 自定义圆点
69
+
70
+ 通过 dot 字段自定义每个节点的图标
71
+
72
+ ```tsx
73
+ <Timeline
74
+ items={[
75
+ { children: "项目创建", dot: <Icon name="folder" size={14} /> },
76
+ { children: "代码提交", dot: <Icon name="code" size={14} /> },
77
+ { children: "发布上线", dot: <Icon name="zap" size={14} /> },
78
+ ]}
79
+ />
80
+ ```
81
+
82
+ ### 交替模式
83
+
84
+ mode="alternate" 让内容交替出现在两侧
85
+
86
+ ```tsx
87
+ <Timeline
88
+ mode="alternate"
89
+ items={[
90
+ { children: "创建项目", label: "2024-01" },
91
+ { children: "完成设计稿", label: "2024-02" },
92
+ { children: "开发完成", label: "2024-03" },
93
+ { children: "发布上线", label: "2024-04" },
94
+ ]}
95
+ />
96
+ ```
97
+
98
+ ### 倒序
99
+
100
+ reverse 属性将时间线反转,最新的事件在最上面
101
+
102
+ ```tsx
103
+ <Timeline
104
+ reverse
105
+ pending
106
+ pendingContent="进行中..."
107
+ items={[
108
+ { children: "第一步:需求确认", color: "success" },
109
+ { children: "第二步:开发中", color: "success" },
110
+ { children: "第三步:测试", color: "warning" },
111
+ ]}
112
+ />
113
+ ```
114
+
115
+ ## API
116
+
117
+ **Timeline**
118
+
119
+ | Prop | 类型 | 默认 | 说明 |
120
+ | --- | --- | --- | --- |
121
+ | items \* | `TimelineItemConfig[]` | — | 时间线节点数组 |
122
+ | pending | `boolean | ReactNode` | `false` | 显示末尾等待节点;true 显示默认 spinner,传 ReactNode 自定义 |
123
+ | pendingContent | `ReactNode` | `"加载中..."` | 等待节点的文字内容 |
124
+ | mode | `"left" | "right" | "alternate"` | `"left"` | 布局模式 |
125
+ | reverse | `boolean` | `false` | 反转节点顺序 |
126
+
127
+
128
+ **TimelineItemConfig**
129
+
130
+ | Prop | 类型 | 默认 | 说明 |
131
+ | --- | --- | --- | --- |
132
+ | key | `string` | — | 唯一标识 |
133
+ | children | `ReactNode` | — | 节点内容 |
134
+ | label | `ReactNode` | — | 对侧标签(alternate 模式下使用) |
135
+ | color | `"accent" | "success" | "warning" | "danger" | "info" | "muted"` | `"accent"` | 圆点颜色 |
136
+ | dot | `ReactNode` | — | 自定义圆点内容 |
137
+
138
+
139
+ ---
140
+ [← 回到索引](../llms.md)
package/docs/llms.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > 拟态风格的 React 18 组件库,目标是 Electron 桌面应用。**写给 AI 编程助手**的按需文档 —— 每个组件单独一个 `.md`,避免一次性读取全部。示例源自 playground 的 demo,可直接复制运行。
4
4
 
5
5
  - **包名**: `@fangxinyan/lumina`
6
- - **版本**: `0.5.0`
6
+ - **版本**: `0.6.0`
7
7
  - **React 最低版本**: 18
8
8
  - **环境**: 带打包器的 React 工程(Vite / Next.js / Webpack / Remix / Electron + Vite 等)
9
9
  - **零运行时依赖**: 只依赖 `react` / `react-dom` (peer deps)
@@ -23,13 +23,14 @@
23
23
  `npm install @fangxinyan/lumina`
24
24
  2. **引入样式**(任一即可):
25
25
  ```tsx
26
- import "@fangxinyan/lumina/styles"; // 一次性引入全部组件样式
26
+ import "@fangxinyan/lumina/styles"; // 设计令牌 + 全局 reset + 全部组件样式
27
27
  ```
28
28
  或按组件单独引入(适合 tree-shake 到极限):
29
29
  ```tsx
30
- import "@fangxinyan/lumina/tokens"; // 设计令牌 + 全局 reset
31
- import { Button } from "@fangxinyan/lumina"; // 会自动带上 Button.css
30
+ import "@fangxinyan/lumina/tokens"; // 仅设计令牌,不含全局 reset
31
+ import { Button } from "@fangxinyan/lumina"; // 会自动带上 Button.css / shared.css
32
32
  ```
33
+ 如果你还需要 reset / scrollbar / focus-visible 基线样式,请改用 `@fangxinyan/lumina/styles`。
33
34
  3. **TypeScript**: 所有 `XxxProps` 接口都是 `export`,可直接 `import { Button, type ButtonProps } from "@fangxinyan/lumina";`
34
35
  4. **主题**: 用 `<ThemeProvider>` 包根;运行时可通过 `useTheme()` 改。六种强调色 (`rose / sky / coral / mint / violet / amber`) × 两种模式 (`light / dark` + `system`) × 三档密度 (`compact / comfortable / spacious`)。详见 [`llms/theme.md`](./llms/theme.md)。
35
36
  5. **图标**: 所有接受 `icon / leadingIcon / trailingIcon` 的 prop 用字符串 `IconName`。完整列表见 [`llms/icon.md`](./llms/icon.md)。
@@ -71,7 +72,8 @@
71
72
  - [Avatar 头像](./llms/avatar.md) — 用图像、首字母代表用户或事物。
72
73
  - [Image 图片](./llms/image.md) — 凹陷外框包裹的图片容器,带预览、错误占位。
73
74
  - [Divider 分隔符](./llms/divider.md) — 对内容进行分割。
74
- - [Progress 进度](./llms/progress.md) — 条形进度 Progress 与环形进度 Ring。
75
+ - [Progress 进度](./llms/progress.md) — 条形进度 Progress。
76
+ - [Timeline 时间线](./llms/timeline.md) — 垂直时间线,支持等待状态、自定义圆点、交替布局
75
77
  - [List 列表](./llms/list.md) — 承载一组结构化的同质化数据。
76
78
  - [Table 表格](./llms/table.md) — 结构化数据展示。
77
79
  - [Table Pro](./llms/tablepro.md) — 带工具栏 / 搜索 / 筛选 / 排序 / 多选 / 分页的全功能表格。
@@ -86,7 +88,7 @@
86
88
  - [Drawer 抽屉](./llms/drawer.md) — 从屏幕边缘滑出的浮层。
87
89
  - [Toast 通知](./llms/toast.md) — 全局轻量提示,4 种语义。
88
90
  - [Tooltip 文字提示](./llms/tooltip.md) — 鼠标悬浮触发的简短说明。
89
- - [Popover 气泡卡片](./llms/popover.md) — 比 Tooltip 更丰富,可承载交互内容。
91
+ - [Popover 气泡卡片](./llms/popover.md) — 比 Tooltip 更丰富,可承载交互内容。
90
92
  - [Alert 警告提示](./llms/alert.md) — 页面中嵌入的警告/提示。
91
93
  - [Empty 空状态](./llms/empty.md) — 列表、页面或容器无数据时的占位。
92
94
  - [Spinner 加载](./llms/spinner.md) — 表示任务正在进行,提示用户等待。
@@ -98,6 +100,7 @@
98
100
  - [WindowControls 窗口控件](./llms/windowcontrols.md) — 独立的窗口控件按钮组。
99
101
  - [Sidebar 侧边栏](./llms/sidebar.md) — 应用主导航,沿屏幕左侧垂直排列。
100
102
  - [StatusBar 状态栏](./llms/statusbar.md) — 窗口底部状态栏,展示分支、编码、行列等应用元信息。
103
+ - [AppShell 应用外壳](./llms/appshell.md) — 组合 TitleBar、Sidebar 与主内容区的 Electron 桌面布局容器。
101
104
  - [Splitter 可拖拽分栏](./llms/splitter.md) — 两栏之间可拖拽的分隔条,支持横向、纵向与嵌套。
102
105
  - [ContextMenu 右键菜单](./llms/contextmenu.md) — 桌面应用风格的右键上下文菜单。
103
106
  - [CommandPalette ⌘K 命令面板](./llms/commandpalette.md) — 全局命令搜索与执行入口。