@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
@@ -0,0 +1,165 @@
1
+ 'use strict';
2
+
3
+ require('./tokens-BIIUTPKN.css');
4
+ require('./shared-NJHRNLRH.css');
5
+ require('./Empty-NQ72W3D7.css');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ // src/components/Empty/Empty.tsx
30
+ var Empty = React__namespace.forwardRef(({
31
+ title = "\u6682\u65E0\u5185\u5BB9",
32
+ description,
33
+ icon,
34
+ action,
35
+ size = "md",
36
+ variant = "default",
37
+ className = "",
38
+ ...rest
39
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `empty ${size} ${variant} ${className}`, ...rest, children: [
40
+ icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-ico", children: icon }),
41
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-title", children: title }),
42
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-desc", children: description }),
43
+ action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-action", children: action })
44
+ ] }));
45
+ Empty.displayName = "Empty";
46
+ var Spinner = React__namespace.forwardRef(({
47
+ size = 20,
48
+ tone = "accent",
49
+ label,
50
+ variant = "ring",
51
+ className = "",
52
+ style,
53
+ ...rest
54
+ }, ref) => {
55
+ const cls = `spinner ${variant} ${tone} ${className}`.trim();
56
+ const spinnerStyle = variant === "dots" ? { fontSize: size, ...style } : { width: size, height: size, ...style };
57
+ const spinner = variant === "dots" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cls, style: spinnerStyle, "aria-label": "Loading", children: [
58
+ /* @__PURE__ */ jsxRuntime.jsx("i", {}),
59
+ /* @__PURE__ */ jsxRuntime.jsx("i", {}),
60
+ /* @__PURE__ */ jsxRuntime.jsx("i", {})
61
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
62
+ "span",
63
+ {
64
+ className: cls,
65
+ style: spinnerStyle,
66
+ "aria-label": "Loading"
67
+ }
68
+ );
69
+ if (!label) {
70
+ return React__namespace.cloneElement(spinner, {
71
+ ref,
72
+ ...rest
73
+ });
74
+ }
75
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { ref, className: "spinner-wrap", style, ...rest, children: [
76
+ spinner,
77
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spinner-label", children: label })
78
+ ] });
79
+ });
80
+ Spinner.displayName = "Spinner";
81
+ var AVATAR_SIZE_PX = { sm: 32, md: 40, lg: 56 };
82
+ var Skeleton = React__namespace.forwardRef(({
83
+ width = "100%",
84
+ height = 16,
85
+ circle,
86
+ animation = "wave",
87
+ avatar,
88
+ title,
89
+ paragraph,
90
+ className = "",
91
+ style,
92
+ ...rest
93
+ }, ref) => {
94
+ const composite = avatar != null || title != null || paragraph != null;
95
+ if (!composite) {
96
+ return /* @__PURE__ */ jsxRuntime.jsx(
97
+ "span",
98
+ {
99
+ ref,
100
+ className: `skeleton ${animation} ${circle ? "circle" : ""} ${className}`.trim(),
101
+ style: { width, height, borderRadius: circle ? "50%" : void 0, ...style },
102
+ ...rest
103
+ }
104
+ );
105
+ }
106
+ const avatarCfg = avatar === true ? {} : avatar === false || avatar == null ? null : avatar;
107
+ const titleCfg = title === false ? null : title === true || title == null ? {} : title;
108
+ const paragraphCfg = paragraph === false ? null : paragraph === true || paragraph == null ? {} : paragraph;
109
+ const rows = paragraphCfg?.rows ?? 3;
110
+ const rowWidths = paragraphCfg?.width ?? [];
111
+ const resolveRowWidth = (idx) => {
112
+ if (idx < rowWidths.length) return rowWidths[idx];
113
+ if (idx === rows - 1) return "60%";
114
+ return "100%";
115
+ };
116
+ const avatarPx = avatarCfg != null ? AVATAR_SIZE_PX[avatarCfg.size ?? "md"] : 0;
117
+ const avatarShape = avatarCfg?.shape ?? "circle";
118
+ return /* @__PURE__ */ jsxRuntime.jsxs(
119
+ "div",
120
+ {
121
+ ref,
122
+ className: `skeleton-box ${className}`.trim(),
123
+ style,
124
+ ...rest,
125
+ children: [
126
+ avatarCfg && /* @__PURE__ */ jsxRuntime.jsx(
127
+ "span",
128
+ {
129
+ className: `skeleton ${animation} ${avatarShape === "circle" ? "circle" : ""} skeleton-avatar`.trim(),
130
+ style: {
131
+ width: avatarPx,
132
+ height: avatarPx,
133
+ borderRadius: avatarShape === "circle" ? "50%" : void 0,
134
+ flexShrink: 0
135
+ }
136
+ }
137
+ ),
138
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "skeleton-content", children: [
139
+ titleCfg && /* @__PURE__ */ jsxRuntime.jsx(
140
+ "span",
141
+ {
142
+ className: `skeleton ${animation} skeleton-title`.trim(),
143
+ style: { width: titleCfg.width ?? "38%", height: 16 }
144
+ }
145
+ ),
146
+ paragraphCfg && Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
147
+ "span",
148
+ {
149
+ className: `skeleton ${animation} skeleton-row`.trim(),
150
+ style: { width: resolveRowWidth(i), height: 12 }
151
+ },
152
+ i
153
+ ))
154
+ ] })
155
+ ]
156
+ }
157
+ );
158
+ });
159
+ Skeleton.displayName = "Skeleton";
160
+
161
+ exports.Empty = Empty;
162
+ exports.Skeleton = Skeleton;
163
+ exports.Spinner = Spinner;
164
+ //# sourceMappingURL=chunk-TC5ZL2OS.cjs.map
165
+ //# sourceMappingURL=chunk-TC5ZL2OS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Empty/Empty.tsx"],"names":["React","jsxs","jsx"],"mappings":"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","file":"chunk-TC5ZL2OS.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Empty.css\";\nimport * as React from \"react\";\n\nexport interface EmptyProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n /** `subtle` drops the recessed icon well — good for inline / embedded use. */\n variant?: \"default\" | \"subtle\";\n className?: string;\n}\n\n/** `Empty` — empty state placeholder. */\nexport const Empty = React.forwardRef<HTMLDivElement, EmptyProps>(({\n title = \"暂无内容\",\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n className = \"\",\n ...rest\n}, ref) => (\n <div ref={ref} className={`empty ${size} ${variant} ${className}`} {...rest}>\n {icon && <div className=\"empty-ico\">{icon}</div>}\n <div className=\"empty-title\">{title}</div>\n {description && <div className=\"empty-desc\">{description}</div>}\n {action && <div className=\"empty-action\">{action}</div>}\n </div>\n));\nEmpty.displayName = \"Empty\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: number;\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\" | \"current\";\n /** Text rendered next to the spinner. */\n label?: React.ReactNode;\n /** `ring` is the default border spinner; `dots` is a three-dot bounce. */\n variant?: \"ring\" | \"dots\";\n className?: string;\n}\n\n/** `Spinner` — loading indicator. */\nexport const Spinner = React.forwardRef<HTMLSpanElement, SpinnerProps>(({\n size = 20,\n tone = \"accent\",\n label,\n variant = \"ring\",\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const cls = `spinner ${variant} ${tone} ${className}`.trim();\n const spinnerStyle =\n variant === \"dots\"\n ? ({ fontSize: size, ...style } as React.CSSProperties)\n : ({ width: size, height: size, ...style } as React.CSSProperties);\n const spinner =\n variant === \"dots\" ? (\n <span className={cls} style={spinnerStyle} aria-label=\"Loading\">\n <i /><i /><i />\n </span>\n ) : (\n <span\n className={cls}\n style={spinnerStyle}\n aria-label=\"Loading\"\n />\n );\n if (!label) {\n return React.cloneElement(spinner, {\n ref,\n ...rest,\n });\n }\n return (\n <span ref={ref} className=\"spinner-wrap\" style={style} {...rest}>\n {spinner}\n <span className=\"spinner-label\">{label}</span>\n </span>\n );\n});\nSpinner.displayName = \"Spinner\";\n\nexport interface SkeletonAvatarConfig {\n shape?: \"circle\" | \"square\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport interface SkeletonTitleConfig {\n width?: number | string;\n}\n\nexport interface SkeletonParagraphConfig {\n rows?: number;\n width?: (number | string)[];\n}\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n /* -------- primitive mode -------- */\n width?: number | string;\n height?: number | string;\n circle?: boolean;\n /** `wave` is a shimmer sweep; `pulse` fades opacity; `none` disables animation. */\n animation?: \"wave\" | \"pulse\" | \"none\";\n\n /* -------- composite mode -------- */\n /**\n * Render an avatar skeleton on the left. `true` gives the defaults (circle, md).\n * @example avatar\n * @example avatar={{ shape: \"square\", size: \"lg\" }}\n */\n avatar?: boolean | SkeletonAvatarConfig;\n /**\n * Render a title line skeleton. Defaults to `true` whenever the composite layout is active\n * (any of `avatar` / `paragraph` / `title` is set).\n */\n title?: boolean | SkeletonTitleConfig;\n /**\n * Render N paragraph lines. `true` gives 3 rows; passing `width` arrays lets you\n * control per-row widths (last row defaults to 60%).\n */\n paragraph?: boolean | SkeletonParagraphConfig;\n\n className?: string;\n}\n\nconst AVATAR_SIZE_PX = { sm: 32, md: 40, lg: 56 } as const;\n\n/**\n * `Skeleton` — content placeholder during loading.\n *\n * Two modes:\n * - **Primitive** (no composite prop set): renders a single block using `width` / `height` / `circle`.\n * - **Composite** (`avatar` / `title` / `paragraph`): renders the Ant-Design-style avatar + title + paragraph layout.\n *\n * @example\n * // primitive\n * <Skeleton height={14} width=\"60%\" />\n * @example\n * // composite\n * <Skeleton avatar title paragraph={{ rows: 4 }} />\n */\nexport const Skeleton = React.forwardRef<HTMLElement, SkeletonProps>(({\n width = \"100%\",\n height = 16,\n circle,\n animation = \"wave\",\n avatar,\n title,\n paragraph,\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const composite = avatar != null || title != null || paragraph != null;\n\n if (!composite) {\n return (\n <span\n ref={ref as React.ForwardedRef<HTMLSpanElement>}\n className={`skeleton ${animation} ${circle ? \"circle\" : \"\"} ${className}`.trim()}\n style={{ width, height, borderRadius: circle ? \"50%\" : undefined, ...style }}\n {...rest}\n />\n );\n }\n\n // --- composite mode ---\n const avatarCfg: SkeletonAvatarConfig | null =\n avatar === true ? {} : avatar === false || avatar == null ? null : avatar;\n const titleCfg: SkeletonTitleConfig | null =\n title === false ? null : title === true || title == null ? {} : title;\n const paragraphCfg: SkeletonParagraphConfig | null =\n paragraph === false ? null : paragraph === true || paragraph == null ? {} : paragraph;\n\n const rows = paragraphCfg?.rows ?? 3;\n const rowWidths = paragraphCfg?.width ?? [];\n const resolveRowWidth = (idx: number): number | string => {\n if (idx < rowWidths.length) return rowWidths[idx];\n if (idx === rows - 1) return \"60%\";\n return \"100%\";\n };\n\n const avatarPx =\n avatarCfg != null ? AVATAR_SIZE_PX[avatarCfg.size ?? \"md\"] : 0;\n const avatarShape = avatarCfg?.shape ?? \"circle\";\n\n return (\n <div\n ref={ref as React.ForwardedRef<HTMLDivElement>}\n className={`skeleton-box ${className}`.trim()}\n style={style as React.CSSProperties | undefined}\n {...rest}\n >\n {avatarCfg && (\n <span\n className={`skeleton ${animation} ${avatarShape === \"circle\" ? \"circle\" : \"\"} skeleton-avatar`.trim()}\n style={{\n width: avatarPx,\n height: avatarPx,\n borderRadius: avatarShape === \"circle\" ? \"50%\" : undefined,\n flexShrink: 0,\n }}\n />\n )}\n <div className=\"skeleton-content\">\n {titleCfg && (\n <span\n className={`skeleton ${animation} skeleton-title`.trim()}\n style={{ width: titleCfg.width ?? \"38%\", height: 16 }}\n />\n )}\n {paragraphCfg &&\n Array.from({ length: rows }).map((_, i) => (\n <span\n key={i}\n className={`skeleton ${animation} skeleton-row`.trim()}\n style={{ width: resolveRowWidth(i), height: 12 }}\n />\n ))}\n </div>\n </div>\n );\n});\nSkeleton.displayName = \"Skeleton\";\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
3
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Calendar-LHZELUDL.css');
@@ -28,15 +28,16 @@ function _interopNamespace(e) {
28
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
29
 
30
30
  var WEEKDAYS = ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
31
- var Calendar = ({
31
+ var Calendar = React__namespace.forwardRef(({
32
32
  value,
33
33
  defaultValue,
34
34
  onChange,
35
35
  min,
36
36
  max,
37
37
  disabledDate,
38
- className = ""
39
- }) => {
38
+ className = "",
39
+ ...rest
40
+ }, ref) => {
40
41
  const [inner, setInner] = React__namespace.useState(defaultValue ?? /* @__PURE__ */ new Date());
41
42
  const isControlled = value !== void 0;
42
43
  const sel = isControlled ? value : inner;
@@ -56,7 +57,7 @@ var Calendar = ({
56
57
  if (!isControlled) setInner(next);
57
58
  onChange?.(next);
58
59
  };
59
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `calendar ${className}`, children: [
60
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `calendar ${className}`, ...rest, children: [
60
61
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "calendar-head", children: [
61
62
  /* @__PURE__ */ jsxRuntime.jsx(
62
63
  "button",
@@ -65,7 +66,7 @@ var Calendar = ({
65
66
  className: "btn icon sm ghost",
66
67
  onClick: () => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1)),
67
68
  "aria-label": "Previous month",
68
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "chevLeft", size: 14 })
69
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "chevLeft", size: 14 })
69
70
  }
70
71
  ),
71
72
  /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: "calendar-title", children: [
@@ -81,7 +82,7 @@ var Calendar = ({
81
82
  className: "btn icon sm ghost",
82
83
  onClick: () => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1)),
83
84
  "aria-label": "Next month",
84
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "chevRight", size: 14 })
85
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "chevRight", size: 14 })
85
86
  }
86
87
  )
87
88
  ] }),
@@ -105,8 +106,9 @@ var Calendar = ({
105
106
  })
106
107
  ] })
107
108
  ] });
108
- };
109
+ });
110
+ Calendar.displayName = "Calendar";
109
111
 
110
112
  exports.Calendar = Calendar;
111
- //# sourceMappingURL=chunk-XYVJ3FBQ.cjs.map
112
- //# sourceMappingURL=chunk-XYVJ3FBQ.cjs.map
113
+ //# sourceMappingURL=chunk-V24B7KWT.cjs.map
114
+ //# sourceMappingURL=chunk-V24B7KWT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["React","jsxs","jsx","Icon"],"mappings":"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","file":"chunk-V24B7KWT.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Calendar.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n /** Min selectable date. */\n min?: Date;\n /** Max selectable date. */\n max?: Date;\n /**\n * Predicate that marks an individual cell as disabled. Disabled cells are\n * greyed out, not clickable, and do not fire `onChange`.\n * @example\n * // disable weekends\n * disabledDate={(d) => d.getDay() === 0 || d.getDay() === 6}\n */\n disabledDate?: (date: Date) => boolean;\n className?: string;\n}\n\nconst WEEKDAYS = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\n\n/** `Calendar` — month-view date picker. */\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(({\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDate,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultValue ?? new Date());\n const isControlled = value !== undefined;\n const sel = isControlled ? value! : inner;\n const [view, setView] = React.useState(new Date(sel.getFullYear(), sel.getMonth(), 1));\n\n const first = new Date(view.getFullYear(), view.getMonth(), 1);\n const startDay = first.getDay();\n const daysInMonth = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells: (number | null)[] = [];\n for (let i = 0; i < startDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(d);\n\n const isSame = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\n const pick = (d: number) => {\n const next = new Date(view.getFullYear(), view.getMonth(), d);\n if (min && next < min) return;\n if (max && next > max) return;\n if (disabledDate?.(next)) return;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n return (\n <div ref={ref} className={`calendar ${className}`} {...rest}>\n <div className=\"calendar-head\">\n <button\n type=\"button\"\n className=\"btn icon sm ghost\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1))}\n aria-label=\"Previous month\"\n >\n <Icon name=\"chevLeft\" size={14} />\n </button>\n <button type=\"button\" className=\"calendar-title\">\n {view.getFullYear()} 年 {view.getMonth() + 1} 月\n </button>\n <button\n type=\"button\"\n className=\"btn icon sm ghost\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1))}\n aria-label=\"Next month\"\n >\n <Icon name=\"chevRight\" size={14} />\n </button>\n </div>\n <div className=\"calendar-grid\">\n {WEEKDAYS.map((w) => (\n <div key={w} className=\"calendar-dow\">{w}</div>\n ))}\n {cells.map((d, i) => {\n if (d === null) return <div key={i} className=\"calendar-cell out\" />;\n const date = new Date(view.getFullYear(), view.getMonth(), d);\n const disabled =\n (min && date < min) ||\n (max && date > max) ||\n (disabledDate?.(date) ?? false);\n return (\n <button\n key={i}\n type=\"button\"\n disabled={!!disabled}\n className={`calendar-cell ${isSame(date, sel) ? \"selected\" : \"\"} ${isSame(date, new Date()) ? \"today\" : \"\"} ${disabled ? \"disabled\" : \"\"}`}\n onClick={() => pick(d)}\n >\n {d}\n </button>\n );\n })}\n </div>\n </div>\n );\n});\nCalendar.displayName = \"Calendar\";\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
3
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Typography-NKPWTJCV.css');
@@ -74,8 +74,8 @@ var CopyAction = ({ config, fallbackText }) => {
74
74
  timerRef.current = window.setTimeout(() => setCopied(false), 2400);
75
75
  };
76
76
  const [defIcon, doneIcon] = config.icon ?? [
77
- /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "copy", size: 12 }, "def"),
78
- /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "check", size: 12 }, "done")
77
+ /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "copy", size: 12 }, "def"),
78
+ /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "check", size: 12 }, "done")
79
79
  ];
80
80
  const tipText = config.tooltips === false ? void 0 : Array.isArray(config.tooltips) ? copied ? config.tooltips[1] : config.tooltips[0] : copied ? "\u5DF2\u590D\u5236" : "\u590D\u5236";
81
81
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -213,7 +213,7 @@ function useTypographyBody(props) {
213
213
  }
214
214
  },
215
215
  className: "typo-action typo-edit",
216
- children: editConf.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "edit", size: 12 })
216
+ children: editConf.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "edit", size: 12 })
217
217
  }
218
218
  );
219
219
  }
@@ -473,7 +473,7 @@ var Link = React__namespace.forwardRef(
473
473
  ...anchorRest,
474
474
  children: [
475
475
  body.inner,
476
- external && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-link-ext", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: externalIcon, size: 12 }) }),
476
+ external && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-link-ext", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: externalIcon, size: 12 }) }),
477
477
  body.expandNode,
478
478
  body.copyNode,
479
479
  body.editIconNode
@@ -506,5 +506,5 @@ exports.Paragraph = Paragraph;
506
506
  exports.Text = Text;
507
507
  exports.Title = Title;
508
508
  exports.Typography = Typography;
509
- //# sourceMappingURL=chunk-3BZ47QNV.cjs.map
510
- //# sourceMappingURL=chunk-3BZ47QNV.cjs.map
509
+ //# sourceMappingURL=chunk-V5KSJITO.cjs.map
510
+ //# sourceMappingURL=chunk-V5KSJITO.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Typography/Typography.tsx"],"names":["React","Icon","jsx","jsxs"],"mappings":"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","file":"chunk-3BZ47QNV.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Typography.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\n/* ============================================================================\n * Shared types\n * ========================================================================== */\n\nexport type TypographyType = \"secondary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface CopyableConfig {\n /** Text to copy. Defaults to the rendered children string. */\n text?: string;\n /** Fired after a successful copy. */\n onCopy?: (event: React.MouseEvent<HTMLSpanElement>) => void;\n /** Custom icons `[default, copied]`. */\n icon?: [React.ReactNode, React.ReactNode];\n /** Custom tooltip text `[default, copied]`. Pass `false` to disable. */\n tooltips?: [React.ReactNode, React.ReactNode] | false;\n /** Format/MIME hint when calling `navigator.clipboard.write` is not used. */\n format?: \"text/plain\" | \"text/html\";\n}\n\nexport interface EditableConfig {\n /** Controlled editing flag. Omit for uncontrolled (click icon to start). */\n editing?: boolean;\n /** Text shown in the editor; falls back to `children` string. */\n text?: string;\n /** Fired with the new value when the user confirms. */\n onChange?: (value: string) => void;\n /** Fired when the user cancels (Escape or blur without confirm). */\n onCancel?: () => void;\n /** Fired when editing starts. */\n onStart?: () => void;\n /** Fired when editing ends (regardless of save/cancel). */\n onEnd?: () => void;\n /** Maximum input length. */\n maxLength?: number;\n /** Auto resize textarea. `true` = autosize; or pass row bounds. */\n autoSize?: boolean | { minRows?: number; maxRows?: number };\n /** What triggers entering edit mode. Defaults to `[\"icon\"]`. */\n triggerType?: Array<\"icon\" | \"text\">;\n /** Override the edit icon. */\n icon?: React.ReactNode;\n /** Tooltip text on the trigger icon. Pass `false` to disable. */\n tooltip?: React.ReactNode | false;\n /** Use a single-line input instead of textarea. */\n enterIcon?: React.ReactNode;\n}\n\nexport interface EllipsisConfig {\n /** Number of rows to clamp at. Defaults to 1. */\n rows?: number;\n /** Show an \"Expand\" affordance after clamping. */\n expandable?: boolean;\n /** Custom expand-button label. */\n symbol?: React.ReactNode;\n /** Fired on expand. */\n onExpand?: (event: React.MouseEvent<HTMLElement>) => void;\n /** Show full text in a `title` attribute. */\n tooltip?: boolean | React.ReactNode;\n /** Optional suffix that should always remain visible (e.g. an em-dash author). */\n suffix?: string;\n}\n\nexport interface BaseTypographyProps {\n /** Semantic color. */\n type?: TypographyType;\n /** Render disabled (muted + not selectable). */\n disabled?: boolean;\n /** Highlight with mark background. */\n mark?: boolean;\n /** Render as inline `<code>`. */\n code?: boolean;\n /** Render as keyboard key `<kbd>`. */\n keyboard?: boolean;\n /** Underline. */\n underline?: boolean;\n /** Strikethrough. */\n delete?: boolean;\n /** Bold. */\n strong?: boolean;\n /** Italic. */\n italic?: boolean;\n /** Add a copy button. Pass an object to customize. */\n copyable?: boolean | CopyableConfig;\n /** Add an edit button. Pass an object to customize. */\n editable?: boolean | EditableConfig;\n /** Truncate to N rows with optional expand affordance. */\n ellipsis?: boolean | EllipsisConfig;\n /** Extra class names. */\n className?: string;\n /** Inline style. */\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\n/* ============================================================================\n * Internals\n * ========================================================================== */\n\nfunction toText(node: React.ReactNode): string {\n if (node == null || node === false) return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(toText).join(\"\");\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode };\n return toText(props.children);\n }\n return \"\";\n}\n\nfunction buildClass(props: BaseTypographyProps, base: string, extra?: string) {\n return [\n base,\n props.type,\n props.disabled && \"disabled\",\n props.mark && \"mark\",\n props.code && \"code\",\n props.keyboard && \"kbd\",\n props.underline && \"underline\",\n props.delete && \"del\",\n props.strong && \"strong\",\n props.italic && \"italic\",\n extra,\n props.className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/* ---------- Copy button ---------- */\n\nconst CopyAction: React.FC<{\n config: CopyableConfig;\n fallbackText: string;\n}> = ({ config, fallbackText }) => {\n const [copied, setCopied] = React.useState(false);\n const timerRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n return () => {\n if (timerRef.current != null) window.clearTimeout(timerRef.current);\n };\n }, []);\n\n const handleCopy = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.stopPropagation();\n const text = config.text ?? fallbackText;\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n navigator.clipboard.writeText(text).catch(() => {\n /* swallow — user-visible feedback is already minimal */\n });\n }\n config.onCopy?.(event);\n setCopied(true);\n if (timerRef.current != null) window.clearTimeout(timerRef.current);\n timerRef.current = window.setTimeout(() => setCopied(false), 2400);\n };\n\n const [defIcon, doneIcon] = config.icon ?? [\n <Icon key=\"def\" name=\"copy\" size={12} />,\n <Icon key=\"done\" name=\"check\" size={12} />,\n ];\n const tipText =\n config.tooltips === false\n ? undefined\n : Array.isArray(config.tooltips)\n ? copied\n ? config.tooltips[1]\n : config.tooltips[0]\n : copied\n ? \"已复制\"\n : \"复制\";\n\n return (\n <span\n role=\"button\"\n aria-label={typeof tipText === \"string\" ? tipText : \"Copy\"}\n tabIndex={0}\n title={typeof tipText === \"string\" ? tipText : undefined}\n onClick={handleCopy}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleCopy(e as unknown as React.MouseEvent<HTMLSpanElement>);\n }\n }}\n className={`typo-action typo-copy ${copied ? \"copied\" : \"\"}`}\n >\n {copied ? doneIcon : defIcon}\n </span>\n );\n};\n\n/* ---------- Edit affordance + inline editor ---------- */\n\nconst EditableEditor: React.FC<{\n initial: string;\n multiline: boolean;\n maxLength?: number;\n autoSize?: EditableConfig[\"autoSize\"];\n onConfirm: (value: string) => void;\n onCancel: () => void;\n}> = ({ initial, multiline, maxLength, autoSize, onConfirm, onCancel }) => {\n const [value, setValue] = React.useState(initial);\n const ref = React.useRef<HTMLTextAreaElement | HTMLInputElement | null>(null);\n\n React.useEffect(() => {\n const el = ref.current;\n if (el) {\n el.focus();\n const len = el.value.length;\n el.setSelectionRange(len, len);\n }\n }, []);\n\n const resize = React.useCallback(() => {\n const el = ref.current as HTMLTextAreaElement | null;\n if (!el || !multiline || !autoSize) return;\n el.style.height = \"auto\";\n const computed = window.getComputedStyle(el);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const padding =\n parseFloat(computed.paddingTop) + parseFloat(computed.paddingBottom);\n const bounds = typeof autoSize === \"object\" ? autoSize : {};\n const min = (bounds.minRows ?? 1) * lineHeight + padding;\n const max = bounds.maxRows ? bounds.maxRows * lineHeight + padding : Infinity;\n const next = Math.min(Math.max(el.scrollHeight, min), max);\n el.style.height = `${next}px`;\n el.style.overflowY = el.scrollHeight > max ? \"auto\" : \"hidden\";\n }, [autoSize, multiline]);\n\n React.useEffect(() => {\n resize();\n }, [value, resize]);\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLTextAreaElement | HTMLInputElement>\n ) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n onCancel();\n return;\n }\n if (e.key === \"Enter\" && (!multiline || (e.metaKey || e.ctrlKey))) {\n e.preventDefault();\n onConfirm(value);\n }\n };\n\n const common = {\n ref: ref as never,\n value,\n maxLength,\n className: \"typo-editor\",\n onChange: (\n e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n ) => setValue(e.target.value),\n onBlur: () => onConfirm(value),\n onKeyDown: handleKeyDown,\n } as const;\n\n return multiline ? (\n <textarea rows={1} {...common} />\n ) : (\n <input type=\"text\" {...common} />\n );\n};\n\n/* ============================================================================\n * Hook: shared rendering body\n * ========================================================================== */\n\ninterface RenderableProps extends BaseTypographyProps {\n ellipsisRows?: number;\n multilineEdit?: boolean;\n}\n\nfunction useTypographyBody(props: RenderableProps) {\n const fallbackText = React.useMemo(\n () => toText(props.children),\n [props.children]\n );\n\n /* ---- editable state ---- */\n const editable = props.editable;\n const editConf: EditableConfig =\n editable && typeof editable === \"object\" ? editable : {};\n const triggers = editConf.triggerType ?? [\"icon\"];\n const isControlledEdit = editConf.editing != null;\n const [editingState, setEditingState] = React.useState(false);\n const editing = isControlledEdit ? editConf.editing! : editingState;\n\n const startEdit = () => {\n editConf.onStart?.();\n if (!isControlledEdit) setEditingState(true);\n };\n const endEdit = () => {\n editConf.onEnd?.();\n if (!isControlledEdit) setEditingState(false);\n };\n const handleConfirm = (value: string) => {\n if (value !== (editConf.text ?? fallbackText)) editConf.onChange?.(value);\n endEdit();\n };\n const handleCancel = () => {\n editConf.onCancel?.();\n endEdit();\n };\n\n /* ---- ellipsis state ---- */\n const ellipsis = props.ellipsis;\n const ellConf: EllipsisConfig =\n ellipsis && typeof ellipsis === \"object\" ? ellipsis : {};\n const rows = ellConf.rows ?? props.ellipsisRows ?? 1;\n const wantClamp = !!ellipsis;\n const [expanded, setExpanded] = React.useState(false);\n\n /* ---- content ---- */\n let inner: React.ReactNode = props.children;\n\n if (props.code) inner = <code>{inner}</code>;\n if (props.keyboard) inner = <kbd>{inner}</kbd>;\n if (props.mark) inner = <mark>{inner}</mark>;\n if (props.delete) inner = <del>{inner}</del>;\n if (props.underline) inner = <u>{inner}</u>;\n if (props.strong) inner = <strong>{inner}</strong>;\n if (props.italic) inner = <i>{inner}</i>;\n\n /* ---- copy node ---- */\n let copyNode: React.ReactNode = null;\n if (props.copyable) {\n const conf =\n typeof props.copyable === \"object\" ? props.copyable : ({} as CopyableConfig);\n copyNode = <CopyAction config={conf} fallbackText={fallbackText} />;\n }\n\n /* ---- edit node ---- */\n let editIconNode: React.ReactNode = null;\n if (editable) {\n const tip = editConf.tooltip ?? \"编辑\";\n editIconNode = (\n <span\n role=\"button\"\n aria-label={typeof tip === \"string\" ? tip : \"Edit\"}\n tabIndex={0}\n title={typeof tip === \"string\" && tip !== \"\" ? tip : undefined}\n onClick={(e) => {\n e.stopPropagation();\n startEdit();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n startEdit();\n }\n }}\n className=\"typo-action typo-edit\"\n >\n {editConf.icon ?? <Icon name=\"edit\" size={12} />}\n </span>\n );\n }\n\n /* ---- text-trigger edit ---- */\n if (editable && triggers.includes(\"text\") && !editing) {\n inner = (\n <span\n className=\"typo-edit-text-trigger\"\n onClick={() => startEdit()}\n >\n {inner}\n </span>\n );\n }\n\n /* ---- clamp / expand ---- */\n let style: React.CSSProperties | undefined = props.style;\n let extraCls: string | undefined;\n if (wantClamp && !expanded) {\n extraCls = rows > 1 ? \"ellipsis-multi\" : \"ellipsis\";\n if (rows > 1) {\n style = {\n ...style,\n WebkitLineClamp: rows,\n } as React.CSSProperties;\n }\n }\n\n let expandNode: React.ReactNode = null;\n if (wantClamp && ellConf.expandable && !expanded) {\n expandNode = (\n <a\n className=\"typo-expand\"\n onClick={(e) => {\n ellConf.onExpand?.(e);\n setExpanded(true);\n }}\n >\n {ellConf.symbol ?? \"展开\"}\n </a>\n );\n }\n\n /* ---- title attribute fallback ---- */\n const titleAttr =\n wantClamp && ellConf.tooltip\n ? typeof ellConf.tooltip === \"string\"\n ? ellConf.tooltip\n : fallbackText\n : undefined;\n\n return {\n editing,\n editConf,\n fallbackText,\n handleConfirm,\n handleCancel,\n inner,\n copyNode,\n editIconNode,\n expandNode,\n style,\n extraCls,\n titleAttr,\n };\n}\n\n/* ============================================================================\n * Title (h1–h5)\n * ========================================================================== */\n\nexport type TitleLevel = 1 | 2 | 3 | 4 | 5;\n\nexport interface TitleProps extends BaseTypographyProps {\n /** Heading level — 1..5. Defaults to 1. */\n level?: TitleLevel;\n}\n\n/**\n * `Typography.Title` — semantic heading.\n *\n * @example\n * <Title level={2} copyable>章节标题</Title>\n */\nexport const Title = React.forwardRef<HTMLElement, TitleProps>((props, ref) => {\n const { level = 1, ...rest } = props;\n const body = useTypographyBody({ ...rest, multilineEdit: false });\n const Tag = (`h${level}`) as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\";\n\n if (body.editing) {\n return (\n <Tag\n ref={ref as React.Ref<HTMLHeadingElement>}\n className={buildClass(rest, `typo typo-title h${level}`, \"editing\")}\n style={rest.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </Tag>\n );\n }\n\n return (\n <Tag\n ref={ref as React.Ref<HTMLHeadingElement>}\n className={buildClass(rest, `typo typo-title h${level}`, body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </Tag>\n );\n});\nTitle.displayName = \"Typography.Title\";\n\n/* ============================================================================\n * Text — inline span\n * ========================================================================== */\n\nexport interface TextProps extends BaseTypographyProps {\n /** Force the rendered tag (default `<span>`). */\n as?: keyof JSX.IntrinsicElements;\n}\n\n/**\n * `Typography.Text` — inline text with semantic / decorative variants.\n *\n * @example\n * <Text type=\"success\" strong>成功</Text>\n * <Text code>npm install</Text>\n * <Text copyable>可复制内容</Text>\n */\nexport const Text = React.forwardRef<HTMLElement, TextProps>((props, ref) => {\n const { as = \"span\", ...rest } = props;\n const body = useTypographyBody({ ...rest, multilineEdit: false });\n const Tag = as as \"span\";\n\n if (body.editing) {\n return (\n <Tag\n ref={ref as React.Ref<HTMLSpanElement>}\n className={buildClass(rest, \"typo typo-text\", \"editing\")}\n style={rest.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </Tag>\n );\n }\n\n return (\n <Tag\n ref={ref as React.Ref<HTMLSpanElement>}\n className={buildClass(rest, \"typo typo-text\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </Tag>\n );\n});\nText.displayName = \"Typography.Text\";\n\n/* ============================================================================\n * Paragraph — block <p>\n * ========================================================================== */\n\nexport interface ParagraphProps extends BaseTypographyProps {}\n\n/**\n * `Typography.Paragraph` — block paragraph with the same decorations as `Text`.\n *\n * @example\n * <Paragraph ellipsis={{ rows: 3, expandable: true }}>{long}</Paragraph>\n */\nexport const Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n (props, ref) => {\n const body = useTypographyBody({ ...props, multilineEdit: true });\n\n if (body.editing) {\n return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n className={buildClass(props, \"typo typo-paragraph\", \"editing\")}\n style={props.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize ?? true}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </div>\n );\n }\n\n return (\n <p\n ref={ref}\n className={buildClass(props, \"typo typo-paragraph\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </p>\n );\n }\n);\nParagraph.displayName = \"Typography.Paragraph\";\n\n/* ============================================================================\n * Link — anchor\n * ========================================================================== */\n\nexport interface LinkProps\n extends BaseTypographyProps,\n Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n keyof BaseTypographyProps | \"type\"\n > {\n href?: string;\n /** Add the leading external icon. */\n external?: boolean;\n /** Override the external icon. */\n externalIcon?: IconName;\n}\n\n/**\n * `Typography.Link` — styled `<a>` that participates in the same decoration\n * system as `Text`. Adds a small `arrow` for `external` links.\n *\n * @example\n * <Link href=\"https://example.com\" external>外部链接</Link>\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (props, ref) => {\n const {\n type,\n disabled,\n mark,\n code,\n keyboard,\n underline,\n delete: del,\n strong,\n italic,\n copyable,\n editable,\n ellipsis,\n className,\n style,\n children,\n external,\n externalIcon = \"arrowRight\",\n target,\n rel,\n ...anchorRest\n } = props;\n const body = useTypographyBody({\n type,\n disabled,\n mark,\n code,\n keyboard,\n underline,\n delete: del,\n strong,\n italic,\n copyable,\n editable,\n ellipsis,\n className,\n style,\n children,\n });\n\n const safeRel =\n target === \"_blank\" ? rel ?? \"noopener noreferrer\" : rel;\n\n if (body.editing) {\n return (\n <span\n className={buildClass(props, \"typo typo-link\", \"editing\")}\n style={style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </span>\n );\n }\n\n return (\n <a\n ref={ref}\n className={buildClass(props, \"typo typo-link\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n target={target}\n rel={safeRel}\n aria-disabled={disabled || undefined}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n anchorRest.onClick?.(e);\n }}\n {...anchorRest}\n >\n {body.inner}\n {external && (\n <span className=\"typo-link-ext\" aria-hidden>\n <Icon name={externalIcon} size={12} />\n </span>\n )}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </a>\n );\n }\n);\nLink.displayName = \"Typography.Link\";\n\n/* ============================================================================\n * Typography wrapper (article-style block)\n * ========================================================================== */\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\ninterface TypographyComponent\n extends React.ForwardRefExoticComponent<\n TypographyProps & React.RefAttributes<HTMLDivElement>\n > {\n Title: typeof Title;\n Text: typeof Text;\n Paragraph: typeof Paragraph;\n Link: typeof Link;\n}\n\n/**\n * `Typography` — optional article-style wrapper that applies consistent\n * vertical rhythm to its `Title` / `Paragraph` / `Text` / `Link` children.\n *\n * @example\n * <Typography>\n * <Typography.Title level={2}>标题</Typography.Title>\n * <Typography.Paragraph>段落…</Typography.Paragraph>\n * </Typography>\n */\nconst TypographyBase = React.forwardRef<HTMLDivElement, TypographyProps>(\n ({ className = \"\", children, ...rest }, ref) => (\n <article\n ref={ref as unknown as React.Ref<HTMLElement>}\n className={`typo-root ${className}`}\n {...(rest as React.HTMLAttributes<HTMLElement>)}\n >\n {children}\n </article>\n )\n) as unknown as TypographyComponent;\n\nTypographyBase.Title = Title;\nTypographyBase.Text = Text;\nTypographyBase.Paragraph = Paragraph;\nTypographyBase.Link = Link;\n(TypographyBase as React.ForwardRefExoticComponent<unknown>).displayName =\n \"Typography\";\n\nexport const Typography = TypographyBase;\n"]}
1
+ {"version":3,"sources":["../src/components/Typography/Typography.tsx"],"names":["React","Icon","jsx","jsxs"],"mappings":"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","file":"chunk-V5KSJITO.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Typography.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\n/* ============================================================================\n * Shared types\n * ========================================================================== */\n\nexport type TypographyType = \"secondary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface CopyableConfig {\n /** Text to copy. Defaults to the rendered children string. */\n text?: string;\n /** Fired after a successful copy. */\n onCopy?: (event: React.MouseEvent<HTMLSpanElement>) => void;\n /** Custom icons `[default, copied]`. */\n icon?: [React.ReactNode, React.ReactNode];\n /** Custom tooltip text `[default, copied]`. Pass `false` to disable. */\n tooltips?: [React.ReactNode, React.ReactNode] | false;\n /** Format/MIME hint when calling `navigator.clipboard.write` is not used. */\n format?: \"text/plain\" | \"text/html\";\n}\n\nexport interface EditableConfig {\n /** Controlled editing flag. Omit for uncontrolled (click icon to start). */\n editing?: boolean;\n /** Text shown in the editor; falls back to `children` string. */\n text?: string;\n /** Fired with the new value when the user confirms. */\n onChange?: (value: string) => void;\n /** Fired when the user cancels (Escape or blur without confirm). */\n onCancel?: () => void;\n /** Fired when editing starts. */\n onStart?: () => void;\n /** Fired when editing ends (regardless of save/cancel). */\n onEnd?: () => void;\n /** Maximum input length. */\n maxLength?: number;\n /** Auto resize textarea. `true` = autosize; or pass row bounds. */\n autoSize?: boolean | { minRows?: number; maxRows?: number };\n /** What triggers entering edit mode. Defaults to `[\"icon\"]`. */\n triggerType?: Array<\"icon\" | \"text\">;\n /** Override the edit icon. */\n icon?: React.ReactNode;\n /** Tooltip text on the trigger icon. Pass `false` to disable. */\n tooltip?: React.ReactNode | false;\n /** Use a single-line input instead of textarea. */\n enterIcon?: React.ReactNode;\n}\n\nexport interface EllipsisConfig {\n /** Number of rows to clamp at. Defaults to 1. */\n rows?: number;\n /** Show an \"Expand\" affordance after clamping. */\n expandable?: boolean;\n /** Custom expand-button label. */\n symbol?: React.ReactNode;\n /** Fired on expand. */\n onExpand?: (event: React.MouseEvent<HTMLElement>) => void;\n /** Show full text in a `title` attribute. */\n tooltip?: boolean | React.ReactNode;\n /** Optional suffix that should always remain visible (e.g. an em-dash author). */\n suffix?: string;\n}\n\nexport interface BaseTypographyProps {\n /** Semantic color. */\n type?: TypographyType;\n /** Render disabled (muted + not selectable). */\n disabled?: boolean;\n /** Highlight with mark background. */\n mark?: boolean;\n /** Render as inline `<code>`. */\n code?: boolean;\n /** Render as keyboard key `<kbd>`. */\n keyboard?: boolean;\n /** Underline. */\n underline?: boolean;\n /** Strikethrough. */\n delete?: boolean;\n /** Bold. */\n strong?: boolean;\n /** Italic. */\n italic?: boolean;\n /** Add a copy button. Pass an object to customize. */\n copyable?: boolean | CopyableConfig;\n /** Add an edit button. Pass an object to customize. */\n editable?: boolean | EditableConfig;\n /** Truncate to N rows with optional expand affordance. */\n ellipsis?: boolean | EllipsisConfig;\n /** Extra class names. */\n className?: string;\n /** Inline style. */\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\n/* ============================================================================\n * Internals\n * ========================================================================== */\n\nfunction toText(node: React.ReactNode): string {\n if (node == null || node === false) return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(toText).join(\"\");\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode };\n return toText(props.children);\n }\n return \"\";\n}\n\nfunction buildClass(props: BaseTypographyProps, base: string, extra?: string) {\n return [\n base,\n props.type,\n props.disabled && \"disabled\",\n props.mark && \"mark\",\n props.code && \"code\",\n props.keyboard && \"kbd\",\n props.underline && \"underline\",\n props.delete && \"del\",\n props.strong && \"strong\",\n props.italic && \"italic\",\n extra,\n props.className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/* ---------- Copy button ---------- */\n\nconst CopyAction: React.FC<{\n config: CopyableConfig;\n fallbackText: string;\n}> = ({ config, fallbackText }) => {\n const [copied, setCopied] = React.useState(false);\n const timerRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n return () => {\n if (timerRef.current != null) window.clearTimeout(timerRef.current);\n };\n }, []);\n\n const handleCopy = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.stopPropagation();\n const text = config.text ?? fallbackText;\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n navigator.clipboard.writeText(text).catch(() => {\n /* swallow — user-visible feedback is already minimal */\n });\n }\n config.onCopy?.(event);\n setCopied(true);\n if (timerRef.current != null) window.clearTimeout(timerRef.current);\n timerRef.current = window.setTimeout(() => setCopied(false), 2400);\n };\n\n const [defIcon, doneIcon] = config.icon ?? [\n <Icon key=\"def\" name=\"copy\" size={12} />,\n <Icon key=\"done\" name=\"check\" size={12} />,\n ];\n const tipText =\n config.tooltips === false\n ? undefined\n : Array.isArray(config.tooltips)\n ? copied\n ? config.tooltips[1]\n : config.tooltips[0]\n : copied\n ? \"已复制\"\n : \"复制\";\n\n return (\n <span\n role=\"button\"\n aria-label={typeof tipText === \"string\" ? tipText : \"Copy\"}\n tabIndex={0}\n title={typeof tipText === \"string\" ? tipText : undefined}\n onClick={handleCopy}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleCopy(e as unknown as React.MouseEvent<HTMLSpanElement>);\n }\n }}\n className={`typo-action typo-copy ${copied ? \"copied\" : \"\"}`}\n >\n {copied ? doneIcon : defIcon}\n </span>\n );\n};\n\n/* ---------- Edit affordance + inline editor ---------- */\n\nconst EditableEditor: React.FC<{\n initial: string;\n multiline: boolean;\n maxLength?: number;\n autoSize?: EditableConfig[\"autoSize\"];\n onConfirm: (value: string) => void;\n onCancel: () => void;\n}> = ({ initial, multiline, maxLength, autoSize, onConfirm, onCancel }) => {\n const [value, setValue] = React.useState(initial);\n const ref = React.useRef<HTMLTextAreaElement | HTMLInputElement | null>(null);\n\n React.useEffect(() => {\n const el = ref.current;\n if (el) {\n el.focus();\n const len = el.value.length;\n el.setSelectionRange(len, len);\n }\n }, []);\n\n const resize = React.useCallback(() => {\n const el = ref.current as HTMLTextAreaElement | null;\n if (!el || !multiline || !autoSize) return;\n el.style.height = \"auto\";\n const computed = window.getComputedStyle(el);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const padding =\n parseFloat(computed.paddingTop) + parseFloat(computed.paddingBottom);\n const bounds = typeof autoSize === \"object\" ? autoSize : {};\n const min = (bounds.minRows ?? 1) * lineHeight + padding;\n const max = bounds.maxRows ? bounds.maxRows * lineHeight + padding : Infinity;\n const next = Math.min(Math.max(el.scrollHeight, min), max);\n el.style.height = `${next}px`;\n el.style.overflowY = el.scrollHeight > max ? \"auto\" : \"hidden\";\n }, [autoSize, multiline]);\n\n React.useEffect(() => {\n resize();\n }, [value, resize]);\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLTextAreaElement | HTMLInputElement>\n ) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n onCancel();\n return;\n }\n if (e.key === \"Enter\" && (!multiline || (e.metaKey || e.ctrlKey))) {\n e.preventDefault();\n onConfirm(value);\n }\n };\n\n const common = {\n ref: ref as never,\n value,\n maxLength,\n className: \"typo-editor\",\n onChange: (\n e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n ) => setValue(e.target.value),\n onBlur: () => onConfirm(value),\n onKeyDown: handleKeyDown,\n } as const;\n\n return multiline ? (\n <textarea rows={1} {...common} />\n ) : (\n <input type=\"text\" {...common} />\n );\n};\n\n/* ============================================================================\n * Hook: shared rendering body\n * ========================================================================== */\n\ninterface RenderableProps extends BaseTypographyProps {\n ellipsisRows?: number;\n multilineEdit?: boolean;\n}\n\nfunction useTypographyBody(props: RenderableProps) {\n const fallbackText = React.useMemo(\n () => toText(props.children),\n [props.children]\n );\n\n /* ---- editable state ---- */\n const editable = props.editable;\n const editConf: EditableConfig =\n editable && typeof editable === \"object\" ? editable : {};\n const triggers = editConf.triggerType ?? [\"icon\"];\n const isControlledEdit = editConf.editing != null;\n const [editingState, setEditingState] = React.useState(false);\n const editing = isControlledEdit ? editConf.editing! : editingState;\n\n const startEdit = () => {\n editConf.onStart?.();\n if (!isControlledEdit) setEditingState(true);\n };\n const endEdit = () => {\n editConf.onEnd?.();\n if (!isControlledEdit) setEditingState(false);\n };\n const handleConfirm = (value: string) => {\n if (value !== (editConf.text ?? fallbackText)) editConf.onChange?.(value);\n endEdit();\n };\n const handleCancel = () => {\n editConf.onCancel?.();\n endEdit();\n };\n\n /* ---- ellipsis state ---- */\n const ellipsis = props.ellipsis;\n const ellConf: EllipsisConfig =\n ellipsis && typeof ellipsis === \"object\" ? ellipsis : {};\n const rows = ellConf.rows ?? props.ellipsisRows ?? 1;\n const wantClamp = !!ellipsis;\n const [expanded, setExpanded] = React.useState(false);\n\n /* ---- content ---- */\n let inner: React.ReactNode = props.children;\n\n if (props.code) inner = <code>{inner}</code>;\n if (props.keyboard) inner = <kbd>{inner}</kbd>;\n if (props.mark) inner = <mark>{inner}</mark>;\n if (props.delete) inner = <del>{inner}</del>;\n if (props.underline) inner = <u>{inner}</u>;\n if (props.strong) inner = <strong>{inner}</strong>;\n if (props.italic) inner = <i>{inner}</i>;\n\n /* ---- copy node ---- */\n let copyNode: React.ReactNode = null;\n if (props.copyable) {\n const conf =\n typeof props.copyable === \"object\" ? props.copyable : ({} as CopyableConfig);\n copyNode = <CopyAction config={conf} fallbackText={fallbackText} />;\n }\n\n /* ---- edit node ---- */\n let editIconNode: React.ReactNode = null;\n if (editable) {\n const tip = editConf.tooltip ?? \"编辑\";\n editIconNode = (\n <span\n role=\"button\"\n aria-label={typeof tip === \"string\" ? tip : \"Edit\"}\n tabIndex={0}\n title={typeof tip === \"string\" && tip !== \"\" ? tip : undefined}\n onClick={(e) => {\n e.stopPropagation();\n startEdit();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n startEdit();\n }\n }}\n className=\"typo-action typo-edit\"\n >\n {editConf.icon ?? <Icon name=\"edit\" size={12} />}\n </span>\n );\n }\n\n /* ---- text-trigger edit ---- */\n if (editable && triggers.includes(\"text\") && !editing) {\n inner = (\n <span\n className=\"typo-edit-text-trigger\"\n onClick={() => startEdit()}\n >\n {inner}\n </span>\n );\n }\n\n /* ---- clamp / expand ---- */\n let style: React.CSSProperties | undefined = props.style;\n let extraCls: string | undefined;\n if (wantClamp && !expanded) {\n extraCls = rows > 1 ? \"ellipsis-multi\" : \"ellipsis\";\n if (rows > 1) {\n style = {\n ...style,\n WebkitLineClamp: rows,\n } as React.CSSProperties;\n }\n }\n\n let expandNode: React.ReactNode = null;\n if (wantClamp && ellConf.expandable && !expanded) {\n expandNode = (\n <a\n className=\"typo-expand\"\n onClick={(e) => {\n ellConf.onExpand?.(e);\n setExpanded(true);\n }}\n >\n {ellConf.symbol ?? \"展开\"}\n </a>\n );\n }\n\n /* ---- title attribute fallback ---- */\n const titleAttr =\n wantClamp && ellConf.tooltip\n ? typeof ellConf.tooltip === \"string\"\n ? ellConf.tooltip\n : fallbackText\n : undefined;\n\n return {\n editing,\n editConf,\n fallbackText,\n handleConfirm,\n handleCancel,\n inner,\n copyNode,\n editIconNode,\n expandNode,\n style,\n extraCls,\n titleAttr,\n };\n}\n\n/* ============================================================================\n * Title (h1–h5)\n * ========================================================================== */\n\nexport type TitleLevel = 1 | 2 | 3 | 4 | 5;\n\nexport interface TitleProps extends BaseTypographyProps {\n /** Heading level — 1..5. Defaults to 1. */\n level?: TitleLevel;\n}\n\n/**\n * `Typography.Title` — semantic heading.\n *\n * @example\n * <Title level={2} copyable>章节标题</Title>\n */\nexport const Title = React.forwardRef<HTMLElement, TitleProps>((props, ref) => {\n const { level = 1, ...rest } = props;\n const body = useTypographyBody({ ...rest, multilineEdit: false });\n const Tag = (`h${level}`) as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\";\n\n if (body.editing) {\n return (\n <Tag\n ref={ref as React.Ref<HTMLHeadingElement>}\n className={buildClass(rest, `typo typo-title h${level}`, \"editing\")}\n style={rest.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </Tag>\n );\n }\n\n return (\n <Tag\n ref={ref as React.Ref<HTMLHeadingElement>}\n className={buildClass(rest, `typo typo-title h${level}`, body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </Tag>\n );\n});\nTitle.displayName = \"Typography.Title\";\n\n/* ============================================================================\n * Text — inline span\n * ========================================================================== */\n\nexport interface TextProps extends BaseTypographyProps {\n /** Force the rendered tag (default `<span>`). */\n as?: keyof JSX.IntrinsicElements;\n}\n\n/**\n * `Typography.Text` — inline text with semantic / decorative variants.\n *\n * @example\n * <Text type=\"success\" strong>成功</Text>\n * <Text code>npm install</Text>\n * <Text copyable>可复制内容</Text>\n */\nexport const Text = React.forwardRef<HTMLElement, TextProps>((props, ref) => {\n const { as = \"span\", ...rest } = props;\n const body = useTypographyBody({ ...rest, multilineEdit: false });\n const Tag = as as \"span\";\n\n if (body.editing) {\n return (\n <Tag\n ref={ref as React.Ref<HTMLSpanElement>}\n className={buildClass(rest, \"typo typo-text\", \"editing\")}\n style={rest.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </Tag>\n );\n }\n\n return (\n <Tag\n ref={ref as React.Ref<HTMLSpanElement>}\n className={buildClass(rest, \"typo typo-text\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </Tag>\n );\n});\nText.displayName = \"Typography.Text\";\n\n/* ============================================================================\n * Paragraph — block <p>\n * ========================================================================== */\n\nexport interface ParagraphProps extends BaseTypographyProps {}\n\n/**\n * `Typography.Paragraph` — block paragraph with the same decorations as `Text`.\n *\n * @example\n * <Paragraph ellipsis={{ rows: 3, expandable: true }}>{long}</Paragraph>\n */\nexport const Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n (props, ref) => {\n const body = useTypographyBody({ ...props, multilineEdit: true });\n\n if (body.editing) {\n return (\n <div\n ref={ref as unknown as React.Ref<HTMLDivElement>}\n className={buildClass(props, \"typo typo-paragraph\", \"editing\")}\n style={props.style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize ?? true}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </div>\n );\n }\n\n return (\n <p\n ref={ref}\n className={buildClass(props, \"typo typo-paragraph\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n >\n {body.inner}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </p>\n );\n }\n);\nParagraph.displayName = \"Typography.Paragraph\";\n\n/* ============================================================================\n * Link — anchor\n * ========================================================================== */\n\nexport interface LinkProps\n extends BaseTypographyProps,\n Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n keyof BaseTypographyProps | \"type\"\n > {\n href?: string;\n /** Add the leading external icon. */\n external?: boolean;\n /** Override the external icon. */\n externalIcon?: IconName;\n}\n\n/**\n * `Typography.Link` — styled `<a>` that participates in the same decoration\n * system as `Text`. Adds a small `arrow` for `external` links.\n *\n * @example\n * <Link href=\"https://example.com\" external>外部链接</Link>\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (props, ref) => {\n const {\n type,\n disabled,\n mark,\n code,\n keyboard,\n underline,\n delete: del,\n strong,\n italic,\n copyable,\n editable,\n ellipsis,\n className,\n style,\n children,\n external,\n externalIcon = \"arrowRight\",\n target,\n rel,\n ...anchorRest\n } = props;\n const body = useTypographyBody({\n type,\n disabled,\n mark,\n code,\n keyboard,\n underline,\n delete: del,\n strong,\n italic,\n copyable,\n editable,\n ellipsis,\n className,\n style,\n children,\n });\n\n const safeRel =\n target === \"_blank\" ? rel ?? \"noopener noreferrer\" : rel;\n\n if (body.editing) {\n return (\n <span\n className={buildClass(props, \"typo typo-link\", \"editing\")}\n style={style}\n >\n <EditableEditor\n initial={body.editConf.text ?? body.fallbackText}\n multiline={false}\n maxLength={body.editConf.maxLength}\n autoSize={body.editConf.autoSize}\n onConfirm={body.handleConfirm}\n onCancel={body.handleCancel}\n />\n </span>\n );\n }\n\n return (\n <a\n ref={ref}\n className={buildClass(props, \"typo typo-link\", body.extraCls)}\n style={body.style}\n title={body.titleAttr}\n target={target}\n rel={safeRel}\n aria-disabled={disabled || undefined}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n anchorRest.onClick?.(e);\n }}\n {...anchorRest}\n >\n {body.inner}\n {external && (\n <span className=\"typo-link-ext\" aria-hidden>\n <Icon name={externalIcon} size={12} />\n </span>\n )}\n {body.expandNode}\n {body.copyNode}\n {body.editIconNode}\n </a>\n );\n }\n);\nLink.displayName = \"Typography.Link\";\n\n/* ============================================================================\n * Typography wrapper (article-style block)\n * ========================================================================== */\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\ninterface TypographyComponent\n extends React.ForwardRefExoticComponent<\n TypographyProps & React.RefAttributes<HTMLDivElement>\n > {\n Title: typeof Title;\n Text: typeof Text;\n Paragraph: typeof Paragraph;\n Link: typeof Link;\n}\n\n/**\n * `Typography` — optional article-style wrapper that applies consistent\n * vertical rhythm to its `Title` / `Paragraph` / `Text` / `Link` children.\n *\n * @example\n * <Typography>\n * <Typography.Title level={2}>标题</Typography.Title>\n * <Typography.Paragraph>段落…</Typography.Paragraph>\n * </Typography>\n */\nconst TypographyBase = React.forwardRef<HTMLDivElement, TypographyProps>(\n ({ className = \"\", children, ...rest }, ref) => (\n <article\n ref={ref as unknown as React.Ref<HTMLElement>}\n className={`typo-root ${className}`}\n {...(rest as React.HTMLAttributes<HTMLElement>)}\n >\n {children}\n </article>\n )\n) as unknown as TypographyComponent;\n\nTypographyBase.Title = Title;\nTypographyBase.Text = Text;\nTypographyBase.Paragraph = Paragraph;\nTypographyBase.Link = Link;\n(TypographyBase as React.ForwardRefExoticComponent<unknown>).displayName =\n \"Typography\";\n\nexport const Typography = TypographyBase;\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
3
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Input-33CAH4O6.css');
@@ -81,7 +81,7 @@ var Input = React__namespace.forwardRef(
81
81
  const count = currentValue ? currentValue.length : 0;
82
82
  const inputElement = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: wrapCls, children: [
83
83
  leadingIcon && /* @__PURE__ */ jsxRuntime.jsx(
84
- chunkYCHUHMNP_cjs.Icon,
84
+ chunkDH4NYYJP_cjs.Icon,
85
85
  {
86
86
  name: leadingIcon,
87
87
  size: 14,
@@ -114,11 +114,11 @@ var Input = React__namespace.forwardRef(
114
114
  tabIndex: -1,
115
115
  onMouseDown: (e) => e.preventDefault(),
116
116
  onClick: handleClear,
117
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "x", size: 12 })
117
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "x", size: 12 })
118
118
  }
119
119
  ),
120
120
  trailingIcon && /* @__PURE__ */ jsxRuntime.jsx(
121
- chunkYCHUHMNP_cjs.Icon,
121
+ chunkDH4NYYJP_cjs.Icon,
122
122
  {
123
123
  name: trailingIcon,
124
124
  size: 14,
@@ -191,7 +191,7 @@ var Textarea = React__namespace.forwardRef(
191
191
  tabIndex: -1,
192
192
  onMouseDown: (e) => e.preventDefault(),
193
193
  onClick: handleClear,
194
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "x", size: 12 })
194
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "x", size: 12 })
195
195
  }
196
196
  )
197
197
  ] });
@@ -206,5 +206,5 @@ Textarea.displayName = "Textarea";
206
206
 
207
207
  exports.Input = Input;
208
208
  exports.Textarea = Textarea;
209
- //# sourceMappingURL=chunk-YFBHVTKN.cjs.map
210
- //# sourceMappingURL=chunk-YFBHVTKN.cjs.map
209
+ //# sourceMappingURL=chunk-WFFWVQK4.cjs.map
210
+ //# sourceMappingURL=chunk-WFFWVQK4.cjs.map