luna-plus 0.0.5

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 (459) hide show
  1. package/README.md +242 -0
  2. package/dist/Affix/Affix.svelte +97 -0
  3. package/dist/Affix/Affix.svelte.d.ts +14 -0
  4. package/dist/Affix/index.d.ts +4 -0
  5. package/dist/Affix/index.js +3 -0
  6. package/dist/Affix/types.d.ts +11 -0
  7. package/dist/Affix/types.js +1 -0
  8. package/dist/Alert/Alert.svelte +97 -0
  9. package/dist/Alert/Alert.svelte.d.ts +16 -0
  10. package/dist/Alert/index.d.ts +4 -0
  11. package/dist/Alert/index.js +3 -0
  12. package/dist/Alert/types.d.ts +23 -0
  13. package/dist/Alert/types.js +1 -0
  14. package/dist/Autocomplete/Autocomplete.svelte +163 -0
  15. package/dist/Autocomplete/Autocomplete.svelte.d.ts +20 -0
  16. package/dist/Autocomplete/index.d.ts +3 -0
  17. package/dist/Autocomplete/index.js +3 -0
  18. package/dist/Avatar/Avatar.svelte +97 -0
  19. package/dist/Avatar/Avatar.svelte.d.ts +14 -0
  20. package/dist/Avatar/index.d.ts +4 -0
  21. package/dist/Avatar/index.js +3 -0
  22. package/dist/Avatar/types.d.ts +26 -0
  23. package/dist/Avatar/types.js +1 -0
  24. package/dist/Backtop/Backtop.svelte +60 -0
  25. package/dist/Backtop/Backtop.svelte.d.ts +13 -0
  26. package/dist/Backtop/index.d.ts +4 -0
  27. package/dist/Backtop/index.js +3 -0
  28. package/dist/Backtop/types.d.ts +18 -0
  29. package/dist/Backtop/types.js +1 -0
  30. package/dist/Badge/Badge.svelte +68 -0
  31. package/dist/Badge/Badge.svelte.d.ts +13 -0
  32. package/dist/Badge/index.d.ts +4 -0
  33. package/dist/Badge/index.js +3 -0
  34. package/dist/Badge/types.d.ts +20 -0
  35. package/dist/Badge/types.js +1 -0
  36. package/dist/Breadcrumb/Breadcrumb.svelte +66 -0
  37. package/dist/Breadcrumb/Breadcrumb.svelte.d.ts +6 -0
  38. package/dist/Breadcrumb/BreadcrumbContext.d.ts +4 -0
  39. package/dist/Breadcrumb/BreadcrumbContext.js +1 -0
  40. package/dist/Breadcrumb/BreadcrumbItem.svelte +56 -0
  41. package/dist/Breadcrumb/BreadcrumbItem.svelte.d.ts +12 -0
  42. package/dist/Breadcrumb/index.d.ts +4 -0
  43. package/dist/Breadcrumb/index.js +3 -0
  44. package/dist/Breadcrumb/types.d.ts +10 -0
  45. package/dist/Breadcrumb/types.js +1 -0
  46. package/dist/Button/Button.svelte +61 -0
  47. package/dist/Button/Button.svelte.d.ts +4 -0
  48. package/dist/Button/index.d.ts +4 -0
  49. package/dist/Button/index.js +3 -0
  50. package/dist/Button/types.d.ts +42 -0
  51. package/dist/Button/types.js +1 -0
  52. package/dist/Calendar/Calendar.svelte +115 -0
  53. package/dist/Calendar/Calendar.svelte.d.ts +7 -0
  54. package/dist/Calendar/index.d.ts +3 -0
  55. package/dist/Calendar/index.js +3 -0
  56. package/dist/Card/Card.svelte +59 -0
  57. package/dist/Card/Card.svelte.d.ts +4 -0
  58. package/dist/Card/index.d.ts +4 -0
  59. package/dist/Card/index.js +4 -0
  60. package/dist/Card/types.d.ts +26 -0
  61. package/dist/Card/types.js +1 -0
  62. package/dist/Carousel/Carousel.svelte +206 -0
  63. package/dist/Carousel/Carousel.svelte.d.ts +19 -0
  64. package/dist/Carousel/CarouselContext.d.ts +6 -0
  65. package/dist/Carousel/CarouselContext.js +1 -0
  66. package/dist/Carousel/CarouselItem.svelte +42 -0
  67. package/dist/Carousel/CarouselItem.svelte.d.ts +11 -0
  68. package/dist/Carousel/index.d.ts +5 -0
  69. package/dist/Carousel/index.js +4 -0
  70. package/dist/Carousel/types.d.ts +43 -0
  71. package/dist/Carousel/types.js +1 -0
  72. package/dist/Cascader/Cascader.svelte +219 -0
  73. package/dist/Cascader/Cascader.svelte.d.ts +4 -0
  74. package/dist/Cascader/index.d.ts +4 -0
  75. package/dist/Cascader/index.js +3 -0
  76. package/dist/Cascader/types.d.ts +19 -0
  77. package/dist/Cascader/types.js +1 -0
  78. package/dist/Checkbox/Checkbox.svelte +55 -0
  79. package/dist/Checkbox/Checkbox.svelte.d.ts +15 -0
  80. package/dist/Checkbox/CheckboxGroup.svelte +43 -0
  81. package/dist/Checkbox/CheckboxGroup.svelte.d.ts +12 -0
  82. package/dist/Checkbox/index.d.ts +4 -0
  83. package/dist/Checkbox/index.js +3 -0
  84. package/dist/Checkbox/types.d.ts +24 -0
  85. package/dist/Checkbox/types.js +1 -0
  86. package/dist/Collapse/Collapse.svelte +62 -0
  87. package/dist/Collapse/Collapse.svelte.d.ts +11 -0
  88. package/dist/Collapse/CollapseContext.d.ts +6 -0
  89. package/dist/Collapse/CollapseContext.js +1 -0
  90. package/dist/Collapse/CollapseItem.svelte +175 -0
  91. package/dist/Collapse/CollapseItem.svelte.d.ts +11 -0
  92. package/dist/Collapse/index.d.ts +5 -0
  93. package/dist/Collapse/index.js +4 -0
  94. package/dist/Collapse/types.d.ts +27 -0
  95. package/dist/Collapse/types.js +1 -0
  96. package/dist/ColorPicker/ColorPicker.svelte +157 -0
  97. package/dist/ColorPicker/ColorPicker.svelte.d.ts +12 -0
  98. package/dist/ColorPicker/index.d.ts +4 -0
  99. package/dist/ColorPicker/index.js +3 -0
  100. package/dist/ColorPicker/types.d.ts +17 -0
  101. package/dist/ColorPicker/types.js +1 -0
  102. package/dist/Container/Aside.svelte +20 -0
  103. package/dist/Container/Aside.svelte.d.ts +9 -0
  104. package/dist/Container/Container.svelte +19 -0
  105. package/dist/Container/Container.svelte.d.ts +9 -0
  106. package/dist/Container/Footer.svelte +20 -0
  107. package/dist/Container/Footer.svelte.d.ts +9 -0
  108. package/dist/Container/Header.svelte +20 -0
  109. package/dist/Container/Header.svelte.d.ts +9 -0
  110. package/dist/Container/Main.svelte +18 -0
  111. package/dist/Container/Main.svelte.d.ts +8 -0
  112. package/dist/Container/index.d.ts +14 -0
  113. package/dist/Container/index.js +13 -0
  114. package/dist/Container/types.d.ts +46 -0
  115. package/dist/Container/types.js +1 -0
  116. package/dist/DatePicker/DatePicker.svelte +278 -0
  117. package/dist/DatePicker/DatePicker.svelte.d.ts +17 -0
  118. package/dist/DatePicker/index.d.ts +4 -0
  119. package/dist/DatePicker/index.js +3 -0
  120. package/dist/DatePicker/types.d.ts +29 -0
  121. package/dist/DatePicker/types.js +1 -0
  122. package/dist/DateTimePicker/DateTimePicker.svelte +500 -0
  123. package/dist/DateTimePicker/DateTimePicker.svelte.d.ts +4 -0
  124. package/dist/DateTimePicker/index.d.ts +4 -0
  125. package/dist/DateTimePicker/index.js +3 -0
  126. package/dist/DateTimePicker/types.d.ts +21 -0
  127. package/dist/DateTimePicker/types.js +1 -0
  128. package/dist/Descriptions/Descriptions.svelte +69 -0
  129. package/dist/Descriptions/Descriptions.svelte.d.ts +15 -0
  130. package/dist/Descriptions/DescriptionsContext.d.ts +8 -0
  131. package/dist/Descriptions/DescriptionsContext.js +1 -0
  132. package/dist/Descriptions/DescriptionsItem.svelte +59 -0
  133. package/dist/Descriptions/DescriptionsItem.svelte.d.ts +13 -0
  134. package/dist/Descriptions/index.d.ts +5 -0
  135. package/dist/Descriptions/index.js +4 -0
  136. package/dist/Descriptions/types.d.ts +41 -0
  137. package/dist/Descriptions/types.js +1 -0
  138. package/dist/Dialog/Dialog.svelte +151 -0
  139. package/dist/Dialog/Dialog.svelte.d.ts +20 -0
  140. package/dist/Dialog/index.d.ts +4 -0
  141. package/dist/Dialog/index.js +3 -0
  142. package/dist/Dialog/types.d.ts +32 -0
  143. package/dist/Dialog/types.js +1 -0
  144. package/dist/Divider/Divider.svelte +47 -0
  145. package/dist/Divider/Divider.svelte.d.ts +11 -0
  146. package/dist/Divider/index.d.ts +4 -0
  147. package/dist/Divider/index.js +3 -0
  148. package/dist/Divider/types.d.ts +20 -0
  149. package/dist/Divider/types.js +1 -0
  150. package/dist/Drawer/Drawer.svelte +141 -0
  151. package/dist/Drawer/Drawer.svelte.d.ts +26 -0
  152. package/dist/Drawer/index.d.ts +4 -0
  153. package/dist/Drawer/index.js +3 -0
  154. package/dist/Drawer/types.d.ts +40 -0
  155. package/dist/Drawer/types.js +1 -0
  156. package/dist/Dropdown/Dropdown.svelte +222 -0
  157. package/dist/Dropdown/Dropdown.svelte.d.ts +4 -0
  158. package/dist/Dropdown/DropdownContext.d.ts +7 -0
  159. package/dist/Dropdown/DropdownContext.js +8 -0
  160. package/dist/Dropdown/DropdownItem.svelte +51 -0
  161. package/dist/Dropdown/DropdownItem.svelte.d.ts +4 -0
  162. package/dist/Dropdown/DropdownMenu.svelte +13 -0
  163. package/dist/Dropdown/DropdownMenu.svelte.d.ts +4 -0
  164. package/dist/Dropdown/index.d.ts +5 -0
  165. package/dist/Dropdown/index.js +5 -0
  166. package/dist/Dropdown/types.d.ts +68 -0
  167. package/dist/Dropdown/types.js +1 -0
  168. package/dist/Empty/Empty.svelte +40 -0
  169. package/dist/Empty/Empty.svelte.d.ts +11 -0
  170. package/dist/Empty/index.d.ts +4 -0
  171. package/dist/Empty/index.js +3 -0
  172. package/dist/Empty/types.d.ts +14 -0
  173. package/dist/Empty/types.js +1 -0
  174. package/dist/Form/Form.svelte +88 -0
  175. package/dist/Form/Form.svelte.d.ts +15 -0
  176. package/dist/Form/FormContext.d.ts +19 -0
  177. package/dist/Form/FormContext.js +1 -0
  178. package/dist/Form/FormInternals.d.ts +40 -0
  179. package/dist/Form/FormInternals.js +152 -0
  180. package/dist/Form/FormItem.svelte +191 -0
  181. package/dist/Form/FormItem.svelte.d.ts +8 -0
  182. package/dist/Form/index.d.ts +3 -0
  183. package/dist/Form/index.js +2 -0
  184. package/dist/Form/types.d.ts +61 -0
  185. package/dist/Form/types.js +1 -0
  186. package/dist/Icon/Icon.svelte +59 -0
  187. package/dist/Icon/Icon.svelte.d.ts +11 -0
  188. package/dist/Icon/index.d.ts +5 -0
  189. package/dist/Icon/index.js +15 -0
  190. package/dist/Icon/types.d.ts +14 -0
  191. package/dist/Icon/types.js +1 -0
  192. package/dist/Image/Image.svelte +134 -0
  193. package/dist/Image/Image.svelte.d.ts +20 -0
  194. package/dist/Image/index.d.ts +4 -0
  195. package/dist/Image/index.js +3 -0
  196. package/dist/Image/types.d.ts +32 -0
  197. package/dist/Image/types.js +1 -0
  198. package/dist/Input/Input.svelte +177 -0
  199. package/dist/Input/Input.svelte.d.ts +4 -0
  200. package/dist/Input/index.d.ts +4 -0
  201. package/dist/Input/index.js +3 -0
  202. package/dist/Input/types.d.ts +72 -0
  203. package/dist/Input/types.js +1 -0
  204. package/dist/InputNumber/InputNumber.svelte +110 -0
  205. package/dist/InputNumber/InputNumber.svelte.d.ts +18 -0
  206. package/dist/InputNumber/index.d.ts +4 -0
  207. package/dist/InputNumber/index.js +3 -0
  208. package/dist/InputNumber/types.d.ts +29 -0
  209. package/dist/InputNumber/types.js +1 -0
  210. package/dist/InputTag/InputTag.svelte +160 -0
  211. package/dist/InputTag/InputTag.svelte.d.ts +4 -0
  212. package/dist/InputTag/index.d.ts +4 -0
  213. package/dist/InputTag/index.js +3 -0
  214. package/dist/InputTag/types.d.ts +21 -0
  215. package/dist/InputTag/types.js +1 -0
  216. package/dist/Link/Link.svelte +38 -0
  217. package/dist/Link/Link.svelte.d.ts +15 -0
  218. package/dist/Link/index.d.ts +4 -0
  219. package/dist/Link/index.js +3 -0
  220. package/dist/Link/types.d.ts +26 -0
  221. package/dist/Link/types.js +1 -0
  222. package/dist/Loading/Loading.svelte +56 -0
  223. package/dist/Loading/Loading.svelte.d.ts +14 -0
  224. package/dist/Loading/index.d.ts +4 -0
  225. package/dist/Loading/index.js +3 -0
  226. package/dist/Loading/types.d.ts +20 -0
  227. package/dist/Loading/types.js +1 -0
  228. package/dist/Menu/Menu.svelte +301 -0
  229. package/dist/Menu/Menu.svelte.d.ts +4 -0
  230. package/dist/Menu/types.d.ts +35 -0
  231. package/dist/Menu/types.js +1 -0
  232. package/dist/Message/Message.svelte +60 -0
  233. package/dist/Message/Message.svelte.d.ts +13 -0
  234. package/dist/Message/MessageQueue.svelte +65 -0
  235. package/dist/Message/MessageQueue.svelte.d.ts +10 -0
  236. package/dist/Message/index.d.ts +4 -0
  237. package/dist/Message/index.js +3 -0
  238. package/dist/Message/message.d.ts +19 -0
  239. package/dist/Message/message.js +95 -0
  240. package/dist/Message/types.d.ts +28 -0
  241. package/dist/Message/types.js +1 -0
  242. package/dist/MessageBox/MessageBox.svelte +133 -0
  243. package/dist/MessageBox/MessageBox.svelte.d.ts +7 -0
  244. package/dist/MessageBox/index.d.ts +4 -0
  245. package/dist/MessageBox/index.js +3 -0
  246. package/dist/MessageBox/messageBox.d.ts +13 -0
  247. package/dist/MessageBox/messageBox.js +32 -0
  248. package/dist/MessageBox/types.d.ts +23 -0
  249. package/dist/MessageBox/types.js +1 -0
  250. package/dist/Notification/Notification.svelte +142 -0
  251. package/dist/Notification/Notification.svelte.d.ts +7 -0
  252. package/dist/Notification/index.d.ts +4 -0
  253. package/dist/Notification/index.js +3 -0
  254. package/dist/Notification/notification.d.ts +11 -0
  255. package/dist/Notification/notification.js +19 -0
  256. package/dist/Notification/types.d.ts +26 -0
  257. package/dist/Notification/types.js +1 -0
  258. package/dist/Pagination/Pagination.svelte +413 -0
  259. package/dist/Pagination/Pagination.svelte.d.ts +21 -0
  260. package/dist/Pagination/index.d.ts +4 -0
  261. package/dist/Pagination/index.js +3 -0
  262. package/dist/Pagination/types.d.ts +32 -0
  263. package/dist/Pagination/types.js +1 -0
  264. package/dist/PinInput/PinInput.svelte +175 -0
  265. package/dist/PinInput/PinInput.svelte.d.ts +4 -0
  266. package/dist/PinInput/index.d.ts +4 -0
  267. package/dist/PinInput/index.js +3 -0
  268. package/dist/PinInput/types.d.ts +31 -0
  269. package/dist/PinInput/types.js +1 -0
  270. package/dist/Popconfirm/Popconfirm.svelte +293 -0
  271. package/dist/Popconfirm/Popconfirm.svelte.d.ts +4 -0
  272. package/dist/Popconfirm/index.d.ts +2 -0
  273. package/dist/Popconfirm/index.js +1 -0
  274. package/dist/Popconfirm/types.d.ts +53 -0
  275. package/dist/Popconfirm/types.js +1 -0
  276. package/dist/Popover/Popover.svelte +245 -0
  277. package/dist/Popover/Popover.svelte.d.ts +7 -0
  278. package/dist/Popover/index.d.ts +4 -0
  279. package/dist/Popover/index.js +3 -0
  280. package/dist/Popover/types.d.ts +24 -0
  281. package/dist/Popover/types.js +1 -0
  282. package/dist/Progress/Progress.svelte +33 -0
  283. package/dist/Progress/Progress.svelte.d.ts +11 -0
  284. package/dist/Progress/index.d.ts +4 -0
  285. package/dist/Progress/index.js +3 -0
  286. package/dist/Progress/types.d.ts +17 -0
  287. package/dist/Progress/types.js +1 -0
  288. package/dist/Radio/Radio.svelte +66 -0
  289. package/dist/Radio/Radio.svelte.d.ts +15 -0
  290. package/dist/Radio/RadioGroup.svelte +40 -0
  291. package/dist/Radio/RadioGroup.svelte.d.ts +13 -0
  292. package/dist/Radio/index.d.ts +4 -0
  293. package/dist/Radio/index.js +3 -0
  294. package/dist/Radio/types.d.ts +24 -0
  295. package/dist/Radio/types.js +1 -0
  296. package/dist/Rating/Rating.svelte +226 -0
  297. package/dist/Rating/Rating.svelte.d.ts +27 -0
  298. package/dist/Rating/index.d.ts +4 -0
  299. package/dist/Rating/index.js +3 -0
  300. package/dist/Rating/types.d.ts +43 -0
  301. package/dist/Rating/types.js +1 -0
  302. package/dist/Result/Result.svelte +58 -0
  303. package/dist/Result/Result.svelte.d.ts +14 -0
  304. package/dist/Result/index.d.ts +4 -0
  305. package/dist/Result/index.js +3 -0
  306. package/dist/Result/types.d.ts +20 -0
  307. package/dist/Result/types.js +1 -0
  308. package/dist/Segmented/Segmented.svelte +49 -0
  309. package/dist/Segmented/Segmented.svelte.d.ts +12 -0
  310. package/dist/Segmented/index.d.ts +4 -0
  311. package/dist/Segmented/index.js +3 -0
  312. package/dist/Segmented/types.d.ts +29 -0
  313. package/dist/Segmented/types.js +1 -0
  314. package/dist/Select/Option.svelte +30 -0
  315. package/dist/Select/Option.svelte.d.ts +9 -0
  316. package/dist/Select/OptionGroup.svelte +33 -0
  317. package/dist/Select/OptionGroup.svelte.d.ts +10 -0
  318. package/dist/Select/Select.svelte +245 -0
  319. package/dist/Select/Select.svelte.d.ts +4 -0
  320. package/dist/Select/index.d.ts +4 -0
  321. package/dist/Select/index.js +3 -0
  322. package/dist/Select/types.d.ts +41 -0
  323. package/dist/Select/types.js +1 -0
  324. package/dist/Skeleton/Skeleton.svelte +44 -0
  325. package/dist/Skeleton/Skeleton.svelte.d.ts +13 -0
  326. package/dist/Skeleton/SkeletonItem.svelte +14 -0
  327. package/dist/Skeleton/SkeletonItem.svelte.d.ts +8 -0
  328. package/dist/Skeleton/index.d.ts +5 -0
  329. package/dist/Skeleton/index.js +4 -0
  330. package/dist/Skeleton/types.d.ts +27 -0
  331. package/dist/Skeleton/types.js +1 -0
  332. package/dist/Slider/Slider.svelte +342 -0
  333. package/dist/Slider/Slider.svelte.d.ts +18 -0
  334. package/dist/Slider/index.d.ts +4 -0
  335. package/dist/Slider/index.js +3 -0
  336. package/dist/Slider/types.d.ts +28 -0
  337. package/dist/Slider/types.js +1 -0
  338. package/dist/Space/Space.svelte +89 -0
  339. package/dist/Space/Space.svelte.d.ts +17 -0
  340. package/dist/Space/index.d.ts +4 -0
  341. package/dist/Space/index.js +3 -0
  342. package/dist/Space/types.d.ts +32 -0
  343. package/dist/Space/types.js +1 -0
  344. package/dist/Statistic/Countdown.svelte +108 -0
  345. package/dist/Statistic/Countdown.svelte.d.ts +14 -0
  346. package/dist/Statistic/Statistic.svelte +63 -0
  347. package/dist/Statistic/Statistic.svelte.d.ts +15 -0
  348. package/dist/Statistic/index.d.ts +5 -0
  349. package/dist/Statistic/index.js +4 -0
  350. package/dist/Statistic/types.d.ts +41 -0
  351. package/dist/Statistic/types.js +1 -0
  352. package/dist/Steps/Step.svelte +58 -0
  353. package/dist/Steps/Step.svelte.d.ts +14 -0
  354. package/dist/Steps/Steps.svelte +60 -0
  355. package/dist/Steps/Steps.svelte.d.ts +15 -0
  356. package/dist/Steps/StepsContext.d.ts +12 -0
  357. package/dist/Steps/StepsContext.js +1 -0
  358. package/dist/Steps/index.d.ts +5 -0
  359. package/dist/Steps/index.js +4 -0
  360. package/dist/Steps/types.d.ts +41 -0
  361. package/dist/Steps/types.js +1 -0
  362. package/dist/Switch/Switch.svelte +122 -0
  363. package/dist/Switch/Switch.svelte.d.ts +22 -0
  364. package/dist/Switch/index.d.ts +4 -0
  365. package/dist/Switch/index.js +3 -0
  366. package/dist/Switch/types.d.ts +37 -0
  367. package/dist/Switch/types.js +1 -0
  368. package/dist/Table/Table.svelte +700 -0
  369. package/dist/Table/Table.svelte.d.ts +11 -0
  370. package/dist/Table/index.d.ts +4 -0
  371. package/dist/Table/index.js +3 -0
  372. package/dist/Table/types.d.ts +180 -0
  373. package/dist/Table/types.js +1 -0
  374. package/dist/Tabs/TabPane.svelte +37 -0
  375. package/dist/Tabs/TabPane.svelte.d.ts +13 -0
  376. package/dist/Tabs/Tabs.svelte +251 -0
  377. package/dist/Tabs/Tabs.svelte.d.ts +13 -0
  378. package/dist/Tabs/TabsContext.d.ts +11 -0
  379. package/dist/Tabs/TabsContext.js +1 -0
  380. package/dist/Tabs/index.d.ts +3 -0
  381. package/dist/Tabs/index.js +2 -0
  382. package/dist/Tabs/types.d.ts +39 -0
  383. package/dist/Tabs/types.js +1 -0
  384. package/dist/Tag/Tag.svelte +39 -0
  385. package/dist/Tag/Tag.svelte.d.ts +13 -0
  386. package/dist/Tag/index.d.ts +4 -0
  387. package/dist/Tag/index.js +3 -0
  388. package/dist/Tag/types.d.ts +22 -0
  389. package/dist/Tag/types.js +1 -0
  390. package/dist/Textarea/Textarea.svelte +76 -0
  391. package/dist/Textarea/Textarea.svelte.d.ts +16 -0
  392. package/dist/Textarea/index.d.ts +4 -0
  393. package/dist/Textarea/index.js +3 -0
  394. package/dist/Textarea/types.d.ts +25 -0
  395. package/dist/Textarea/types.js +1 -0
  396. package/dist/TimePicker/TimePicker.svelte +364 -0
  397. package/dist/TimePicker/TimePicker.svelte.d.ts +14 -0
  398. package/dist/TimePicker/index.d.ts +3 -0
  399. package/dist/TimePicker/index.js +3 -0
  400. package/dist/TimePicker/types.d.ts +21 -0
  401. package/dist/TimePicker/types.js +1 -0
  402. package/dist/Timeline/Timeline.svelte +18 -0
  403. package/dist/Timeline/Timeline.svelte.d.ts +8 -0
  404. package/dist/Timeline/TimelineItem.svelte +67 -0
  405. package/dist/Timeline/TimelineItem.svelte.d.ts +18 -0
  406. package/dist/Timeline/index.d.ts +5 -0
  407. package/dist/Timeline/index.js +4 -0
  408. package/dist/Timeline/types.d.ts +39 -0
  409. package/dist/Timeline/types.js +1 -0
  410. package/dist/Tooltip/OverflowTooltip.svelte +81 -0
  411. package/dist/Tooltip/OverflowTooltip.svelte.d.ts +4 -0
  412. package/dist/Tooltip/Tooltip.svelte +77 -0
  413. package/dist/Tooltip/Tooltip.svelte.d.ts +16 -0
  414. package/dist/Tooltip/index.d.ts +6 -0
  415. package/dist/Tooltip/index.js +5 -0
  416. package/dist/Tooltip/types.d.ts +51 -0
  417. package/dist/Tooltip/types.js +1 -0
  418. package/dist/Transfer/Transfer.svelte +145 -0
  419. package/dist/Transfer/Transfer.svelte.d.ts +14 -0
  420. package/dist/Transfer/index.d.ts +4 -0
  421. package/dist/Transfer/index.js +3 -0
  422. package/dist/Transfer/types.d.ts +16 -0
  423. package/dist/Transfer/types.js +1 -0
  424. package/dist/Tree/Tree.svelte +148 -0
  425. package/dist/Tree/Tree.svelte.d.ts +17 -0
  426. package/dist/Tree/TreeNode.svelte +133 -0
  427. package/dist/Tree/TreeNode.svelte.d.ts +19 -0
  428. package/dist/Tree/index.d.ts +4 -0
  429. package/dist/Tree/index.js +3 -0
  430. package/dist/Tree/types.d.ts +65 -0
  431. package/dist/Tree/types.js +1 -0
  432. package/dist/TreeSelect/TreeSelect.svelte +716 -0
  433. package/dist/TreeSelect/TreeSelect.svelte.d.ts +4 -0
  434. package/dist/TreeSelect/index.d.ts +4 -0
  435. package/dist/TreeSelect/index.js +3 -0
  436. package/dist/TreeSelect/types.d.ts +98 -0
  437. package/dist/TreeSelect/types.js +1 -0
  438. package/dist/Upload/Upload.svelte +396 -0
  439. package/dist/Upload/Upload.svelte.d.ts +28 -0
  440. package/dist/Upload/index.d.ts +4 -0
  441. package/dist/Upload/index.js +3 -0
  442. package/dist/Upload/types.d.ts +67 -0
  443. package/dist/Upload/types.js +1 -0
  444. package/dist/Watermark/Watermark.svelte +174 -0
  445. package/dist/Watermark/Watermark.svelte.d.ts +20 -0
  446. package/dist/Watermark/index.d.ts +4 -0
  447. package/dist/Watermark/index.js +3 -0
  448. package/dist/Watermark/types.d.ts +32 -0
  449. package/dist/Watermark/types.js +1 -0
  450. package/dist/index.d.ts +140 -0
  451. package/dist/index.js +85 -0
  452. package/dist/utils/floating.d.ts +28 -0
  453. package/dist/utils/floating.js +140 -0
  454. package/dist/utils/index.d.ts +3 -0
  455. package/dist/utils/index.js +34 -0
  456. package/dist/utils/portal.d.ts +9 -0
  457. package/dist/utils/portal.js +33 -0
  458. package/package.json +115 -0
  459. package/styles/index.css +1 -0
@@ -0,0 +1,21 @@
1
+ export type InputTagSize = 'small' | 'default' | 'large';
2
+ export type InputTagTagType = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
3
+ export interface InputTagProps {
4
+ /** Tag list value */
5
+ modelValue?: string[];
6
+ placeholder?: string;
7
+ disabled?: boolean;
8
+ readonly?: boolean;
9
+ size?: InputTagSize;
10
+ /** Maximum tag count */
11
+ max?: number;
12
+ /** Allow duplicate tags */
13
+ allowDuplicates?: boolean;
14
+ /** Split pasted/typed input by separator. Default: /[,,\n]/ */
15
+ separator?: RegExp | string;
16
+ /** Tag visual style */
17
+ tagType?: InputTagTagType;
18
+ /** Fired after value changes */
19
+ onchange?: (value: string[]) => void;
20
+ class?: string;
21
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+
4
+ interface LinkProps {
5
+ href?: string
6
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info'
7
+ underline?: boolean
8
+ disabled?: boolean
9
+ children?: Snippet
10
+ onclick?: (e: MouseEvent) => void
11
+ target?: '_self' | '_blank' | '_parent' | '_top'
12
+ rel?: string
13
+ class?: string
14
+ }
15
+
16
+ let { href, type = 'default', underline = true, disabled = false, children, onclick, target, rel, class: cls = '', ...attrs }: LinkProps = $props()
17
+
18
+ const classes = $derived(`lm-link lm-link--${type}${underline ? ' is-underline' : ''}${disabled ? ' is-disabled' : ''}${cls ? ` ${cls}` : ''}`)
19
+
20
+ const handleClick = (e: MouseEvent): void => {
21
+ if (disabled) {
22
+ e.preventDefault()
23
+ e.stopPropagation()
24
+ return
25
+ }
26
+ onclick?.(e)
27
+ }
28
+ </script>
29
+
30
+ {#if href && !disabled}
31
+ <a {...attrs} class={classes} {href} {target} {rel} onclick={handleClick}>
32
+ {#if children}{@render children()}{/if}
33
+ </a>
34
+ {:else}
35
+ <span {...attrs} class={classes} role="link" aria-disabled={disabled || undefined} onclick={handleClick}>
36
+ {#if children}{@render children()}{/if}
37
+ </span>
38
+ {/if}
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface LinkProps {
3
+ href?: string;
4
+ type?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
5
+ underline?: boolean;
6
+ disabled?: boolean;
7
+ children?: Snippet;
8
+ onclick?: (e: MouseEvent) => void;
9
+ target?: '_self' | '_blank' | '_parent' | '_top';
10
+ rel?: string;
11
+ class?: string;
12
+ }
13
+ declare const Link: import("svelte").Component<LinkProps, {}, "">;
14
+ type Link = ReturnType<typeof Link>;
15
+ export default Link;
@@ -0,0 +1,4 @@
1
+ import Link from './Link.svelte';
2
+ export { Link };
3
+ export type { LinkProps, LinkType, LinkTarget } from './types';
4
+ export default Link;
@@ -0,0 +1,3 @@
1
+ import Link from './Link.svelte';
2
+ export { Link };
3
+ export default Link;
@@ -0,0 +1,26 @@
1
+ import type { Snippet } from 'svelte';
2
+ /** Link 类型 */
3
+ export type LinkType = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
4
+ /** Link 目标 */
5
+ export type LinkTarget = '_self' | '_blank' | '_parent' | '_top';
6
+ /** Link 属性 */
7
+ export interface LinkProps {
8
+ /** 链接地址 */
9
+ href?: string;
10
+ /** 类型 */
11
+ type?: LinkType;
12
+ /** 是否显示下划线 */
13
+ underline?: boolean;
14
+ /** 是否禁用 */
15
+ disabled?: boolean;
16
+ /** 子内容 */
17
+ children?: Snippet;
18
+ /** 点击事件 */
19
+ onclick?: (e: MouseEvent) => void;
20
+ /** 打开方式 */
21
+ target?: LinkTarget;
22
+ /** rel 属性 */
23
+ rel?: string;
24
+ /** 自定义类名 */
25
+ class?: string;
26
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import Icon from '../Icon/Icon.svelte'
4
+ import { Loader2 } from 'lucide'
5
+
6
+ interface LoadingProps {
7
+ visible?: boolean
8
+ fullscreen?: boolean
9
+ lock?: boolean
10
+ text?: string
11
+ background?: string
12
+ spinner?: Snippet
13
+ children?: Snippet
14
+ class?: string
15
+ }
16
+
17
+ let { visible = false, fullscreen = false, lock = true, text = '', background, spinner, children, class: cls = '', ...attrs }: LoadingProps = $props()
18
+
19
+ $effect(() => {
20
+ if (!fullscreen || !lock) return
21
+ document.body.style.overflow = visible ? 'hidden' : ''
22
+ return () => {
23
+ document.body.style.overflow = ''
24
+ }
25
+ })
26
+
27
+ const classes = $derived(`lm-loading${fullscreen ? ' is-fullscreen' : ''}${cls ? ` ${cls}` : ''}`)
28
+ const maskStyle = $derived.by(() => {
29
+ if (!background) return undefined
30
+ // 用 CSS 变量覆写默认遮罩背景(theme-chalk 会在 dark 下自动切换变量)
31
+ return `--lm-loading-mask-bg: ${background}`
32
+ })
33
+ </script>
34
+
35
+ <div class={classes} {...attrs} aria-busy={visible} aria-live="polite">
36
+ {#if children}
37
+ {@render children()}
38
+ {/if}
39
+
40
+ {#if visible}
41
+ <div class="lm-loading__mask" style={maskStyle} role="status" aria-label="Loading">
42
+ <div class="lm-loading__spinner">
43
+ {#if spinner}
44
+ {@render spinner()}
45
+ {:else}
46
+ <div class="lm-loading__icon">
47
+ <Icon icon={Loader2} size={42} />
48
+ </div>
49
+ {/if}
50
+ {#if text}
51
+ <p class="lm-loading__text">{text}</p>
52
+ {/if}
53
+ </div>
54
+ </div>
55
+ {/if}
56
+ </div>
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface LoadingProps {
3
+ visible?: boolean;
4
+ fullscreen?: boolean;
5
+ lock?: boolean;
6
+ text?: string;
7
+ background?: string;
8
+ spinner?: Snippet;
9
+ children?: Snippet;
10
+ class?: string;
11
+ }
12
+ declare const Loading: import("svelte").Component<LoadingProps, {}, "">;
13
+ type Loading = ReturnType<typeof Loading>;
14
+ export default Loading;
@@ -0,0 +1,4 @@
1
+ import Loading from './Loading.svelte';
2
+ export { Loading };
3
+ export type { LoadingProps } from './types';
4
+ export default Loading;
@@ -0,0 +1,3 @@
1
+ import Loading from './Loading.svelte';
2
+ export { Loading };
3
+ export default Loading;
@@ -0,0 +1,20 @@
1
+ import type { Snippet } from 'svelte';
2
+ /** Loading 属性 */
3
+ export interface LoadingProps {
4
+ /** 是否显示 */
5
+ visible?: boolean;
6
+ /** 是否全屏 */
7
+ fullscreen?: boolean;
8
+ /** 是否锁定滚动 */
9
+ lock?: boolean;
10
+ /** 加载文本 */
11
+ text?: string;
12
+ /** 背景色 */
13
+ background?: string;
14
+ /** 自定义图标 */
15
+ spinner?: Snippet;
16
+ /** 子内容(被遮罩的内容) */
17
+ children?: Snippet;
18
+ /** 自定义类名 */
19
+ class?: string;
20
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,301 @@
1
+ <script lang="ts">
2
+ import Icon from "../Icon/Icon.svelte";
3
+ import { ChevronRight, ChevronDown } from "lucide";
4
+ import { onMount, onDestroy } from "svelte";
5
+ import { slide, fade, scale } from "svelte/transition";
6
+ import type { MenuItem, MenuProps } from "./types";
7
+
8
+ type Props = MenuProps;
9
+
10
+ let {
11
+ items = [],
12
+ activeId,
13
+ mode = "vertical",
14
+ collapsed = false,
15
+ accordion = false,
16
+ class: cls = "",
17
+ onselect,
18
+ ...attrs
19
+ }: Props = $props();
20
+
21
+ // 展开的子菜单 ID 集合
22
+ let openIds = $state(new Set<string | number>());
23
+ // 悬停的菜单项 ID 集合(用于水平模式和折叠模式的弹出菜单)
24
+ let hoverIds = $state(new Set<string | number>());
25
+ // 悬停关闭定时器
26
+ const closeTimers = new Map<string | number, ReturnType<typeof setTimeout>>();
27
+ // 菜单根元素引用
28
+ let menuRef: HTMLElement | null = $state(null);
29
+
30
+ // 获取菜单项 ID
31
+ const getItemId = (item: MenuItem): string | number => item.id ?? item.label;
32
+
33
+ // 构建父级映射表
34
+ const buildParentMap = (
35
+ list: MenuItem[],
36
+ ): Map<string | number, string | number> => {
37
+ const map = new Map<string | number, string | number>();
38
+ const walk = (items: MenuItem[], parentId?: string | number): void => {
39
+ for (const item of items) {
40
+ const id = getItemId(item);
41
+ if (parentId !== undefined) map.set(id, parentId);
42
+ if (item.children?.length) walk(item.children, id);
43
+ }
44
+ };
45
+ walk(list);
46
+ return map;
47
+ };
48
+
49
+ // 获取祖先 ID 列表
50
+ const getAncestorIds = (
51
+ id: string | number,
52
+ parentMap: Map<string | number, string | number>,
53
+ ): (string | number)[] => {
54
+ const result: (string | number)[] = [];
55
+ let current: string | number | undefined = id;
56
+ while (current !== undefined) {
57
+ const parent = parentMap.get(current);
58
+ if (parent === undefined) break;
59
+ result.push(parent);
60
+ current = parent;
61
+ }
62
+ return result;
63
+ };
64
+
65
+ // 判断是否选中
66
+ const isActive = (item: MenuItem): boolean => activeId === getItemId(item);
67
+
68
+ // 判断是否展开(垂直模式)
69
+ const isOpen = (item: MenuItem): boolean => openIds.has(getItemId(item));
70
+
71
+ // 判断是否悬停(水平/折叠模式)
72
+ const isHover = (item: MenuItem): boolean => hoverIds.has(getItemId(item));
73
+
74
+ // 判断子级是否有选中项
75
+ const hasActiveChild = (item: MenuItem): boolean => {
76
+ if (!item.children) return false;
77
+ return item.children.some(
78
+ (child: MenuItem) => isActive(child) || hasActiveChild(child),
79
+ );
80
+ };
81
+
82
+ // 判断是否应该显示子菜单
83
+ const shouldShowSubmenu = (item: MenuItem): boolean => {
84
+ if (!item.children?.length) return false;
85
+ if (mode === "horizontal" || collapsed) return isHover(item);
86
+ return isOpen(item);
87
+ };
88
+
89
+ // 切换子菜单展开/收起
90
+ const toggleSubmenu = (id: string | number): void => {
91
+ const next = new Set(openIds);
92
+ if (next.has(id)) {
93
+ next.delete(id);
94
+ } else {
95
+ if (accordion) next.clear();
96
+ next.add(id);
97
+ }
98
+ openIds = next;
99
+ };
100
+
101
+ // 处理菜单项点击
102
+ const handleItemClick = (
103
+ item: MenuItem,
104
+ e: MouseEvent | KeyboardEvent,
105
+ ): void => {
106
+ e.stopPropagation();
107
+ if (item.disabled) return;
108
+
109
+ const id = getItemId(item);
110
+
111
+ if (item.children?.length) {
112
+ // 有子菜单:垂直非折叠模式下切换展开
113
+ if (mode === "vertical" && !collapsed) {
114
+ toggleSubmenu(id);
115
+ }
116
+ } else {
117
+ // 无子菜单:触发回调,由外部控制选中状态
118
+ onselect?.(id, item);
119
+ // 水平或折叠模式下关闭弹出菜单
120
+ if (mode === "horizontal" || collapsed) {
121
+ hoverIds = new Set();
122
+ }
123
+ }
124
+ };
125
+
126
+ // 处理箭头点击
127
+ const handleArrowClick = (
128
+ item: MenuItem,
129
+ e: MouseEvent | KeyboardEvent,
130
+ ): void => {
131
+ e.stopPropagation();
132
+ if (item.disabled || !item.children?.length) return;
133
+ if (mode !== "vertical" || collapsed) return;
134
+ toggleSubmenu(getItemId(item));
135
+ };
136
+
137
+ // 处理鼠标进入
138
+ const handleMouseEnter = (item: MenuItem): void => {
139
+ if (!(mode === "horizontal" || collapsed) || !item.children?.length) return;
140
+ const id = getItemId(item);
141
+ const timer = closeTimers.get(id);
142
+ if (timer) {
143
+ clearTimeout(timer);
144
+ closeTimers.delete(id);
145
+ }
146
+ hoverIds = new Set(hoverIds).add(id);
147
+ };
148
+
149
+ // 处理鼠标离开
150
+ const handleMouseLeave = (item: MenuItem): void => {
151
+ if (!(mode === "horizontal" || collapsed) || !item.children?.length) return;
152
+ const id = getItemId(item);
153
+ const timer = setTimeout(() => {
154
+ const next = new Set(hoverIds);
155
+ next.delete(id);
156
+ hoverIds = next;
157
+ closeTimers.delete(id);
158
+ }, 150);
159
+ closeTimers.set(id, timer);
160
+ };
161
+
162
+ // 处理键盘事件
163
+ const handleKeydown = (item: MenuItem, e: KeyboardEvent): void => {
164
+ if (e.key === "Enter" || e.key === " ") {
165
+ e.preventDefault();
166
+ handleItemClick(item, e);
167
+ }
168
+ };
169
+
170
+ // 处理点击外部
171
+ const handleClickOutside = (e: MouseEvent): void => {
172
+ if (mode === "vertical" && !collapsed) return;
173
+ if (menuRef && !menuRef.contains(e.target as Node)) {
174
+ hoverIds = new Set();
175
+ }
176
+ };
177
+
178
+ // 用于追踪上一次处理过的 activeId,避免重复处理
179
+ let lastProcessedActiveId: string | number | undefined = undefined;
180
+
181
+ // 初始化展开状态
182
+ const expandToActive = () => {
183
+ if (mode !== "vertical" || collapsed || activeId === undefined) return;
184
+ if (activeId === lastProcessedActiveId) return;
185
+ lastProcessedActiveId = activeId;
186
+
187
+ const parentMap = buildParentMap(items);
188
+ const ancestors = getAncestorIds(activeId, parentMap);
189
+ if (ancestors.length > 0) {
190
+ // 合并现有展开项和新的祖先项
191
+ const next = accordion
192
+ ? new Set(ancestors)
193
+ : new Set([...openIds, ...ancestors]);
194
+ openIds = next;
195
+ }
196
+ };
197
+
198
+ onMount(() => {
199
+ expandToActive();
200
+ document.addEventListener("click", handleClickOutside);
201
+ });
202
+
203
+ onDestroy(() => {
204
+ if (typeof document !== "undefined") {
205
+ document.removeEventListener("click", handleClickOutside);
206
+ }
207
+ closeTimers.forEach((t) => clearTimeout(t));
208
+ });
209
+
210
+ // CSS 类
211
+ const classes = $derived(
212
+ `lm-menu lm-menu--${mode}${collapsed ? " is-collapsed" : ""}${cls ? ` ${cls}` : ""}`,
213
+ );
214
+
215
+ // 箭头图标
216
+ const ArrowIcon = $derived(
217
+ mode === "horizontal" ? ChevronDown : ChevronRight,
218
+ );
219
+ </script>
220
+
221
+ {#snippet menuItem(item: MenuItem, depth: number = 0)}
222
+ {@const hasChildren = !!item.children?.length}
223
+ {@const showSubmenu = shouldShowSubmenu(item)}
224
+ {@const iconSize = depth === 0 ? 18 : 16}
225
+ <li
226
+ class="lm-menu__item"
227
+ class:is-active={isActive(item)}
228
+ class:has-active-child={hasActiveChild(item)}
229
+ class:is-disabled={item.disabled}
230
+ class:has-submenu={hasChildren}
231
+ class:is-open={isOpen(item) || isHover(item)}
232
+ onmouseenter={() => handleMouseEnter(item)}
233
+ onmouseleave={() => handleMouseLeave(item)}
234
+ >
235
+ <div
236
+ class="lm-menu__item-content"
237
+ role="menuitem"
238
+ tabindex={item.disabled ? -1 : 0}
239
+ aria-haspopup={hasChildren ? "true" : undefined}
240
+ aria-expanded={hasChildren ? showSubmenu : undefined}
241
+ onclick={(e: MouseEvent) => handleItemClick(item, e)}
242
+ onkeydown={(e: KeyboardEvent) => handleKeydown(item, e)}
243
+ >
244
+ {#if item.icon}
245
+ <span class="lm-menu__item-icon">
246
+ <Icon icon={item.icon} size={iconSize} />
247
+ </span>
248
+ {/if}
249
+ <span class="lm-menu__item-label">{item.label}</span>
250
+ {#if hasChildren}
251
+ <button
252
+ type="button"
253
+ class="lm-menu__item-arrow"
254
+ class:is-open={showSubmenu}
255
+ tabindex={mode === "vertical" && !collapsed ? 0 : -1}
256
+ aria-label="Toggle submenu"
257
+ onclick={(e: MouseEvent) => handleArrowClick(item, e)}
258
+ >
259
+ <Icon icon={ArrowIcon} size={14} />
260
+ </button>
261
+ {/if}
262
+ </div>
263
+
264
+ {#if hasChildren && showSubmenu}
265
+ {#if mode === "horizontal" || collapsed}
266
+ <ul
267
+ class="lm-menu__popup{depth > 0 ? ' lm-menu__popup--nested' : ''}"
268
+ role="menu"
269
+ transition:scale|global={{ duration: 150, start: 0.95, opacity: 0 }}
270
+ >
271
+ {#each item.children as child (getItemId(child))}
272
+ {@render menuItem(child, depth + 1)}
273
+ {/each}
274
+ </ul>
275
+ {:else}
276
+ <ul
277
+ class="lm-menu__submenu"
278
+ role="menu"
279
+ transition:slide|global={{ duration: 200 }}
280
+ >
281
+ {#each item.children as child (getItemId(child))}
282
+ {@render menuItem(child, depth + 1)}
283
+ {/each}
284
+ </ul>
285
+ {/if}
286
+ {/if}
287
+ </li>
288
+ {/snippet}
289
+
290
+ <nav bind:this={menuRef} class={classes} role="menu" {...attrs}>
291
+ <ul class="lm-menu__list" role="menubar">
292
+ {#each items as item (getItemId(item))}
293
+ {#if item.group && (items.indexOf(item) === 0 || items[items.indexOf(item) - 1]?.group !== item.group)}
294
+ <li class="lm-menu__group" role="presentation">
295
+ {#if !collapsed}{item.group}{/if}
296
+ </li>
297
+ {/if}
298
+ {@render menuItem(item, 0)}
299
+ {/each}
300
+ </ul>
301
+ </nav>
@@ -0,0 +1,4 @@
1
+ import type { MenuProps } from "./types";
2
+ declare const Menu: import("svelte").Component<MenuProps, {}, "">;
3
+ type Menu = ReturnType<typeof Menu>;
4
+ export default Menu;
@@ -0,0 +1,35 @@
1
+ import type { IconNode } from 'lucide';
2
+
3
+ export type MenuMode = 'vertical' | 'horizontal';
4
+
5
+ export interface MenuItem {
6
+ /** 唯一标识(未提供时会回退为 label) */
7
+ id?: string | number;
8
+ /** 显示文本 */
9
+ label: string;
10
+ /** 图标(lucide IconNode) */
11
+ icon?: IconNode;
12
+ /** 是否禁用 */
13
+ disabled?: boolean;
14
+ /** 子菜单 */
15
+ children?: MenuItem[];
16
+ /** 分组标题(相邻且相同 group 会自动合并显示) */
17
+ group?: string;
18
+ }
19
+
20
+ export interface MenuProps {
21
+ /** 菜单数据 */
22
+ items?: MenuItem[];
23
+ /** 当前选中 ID(受控) */
24
+ activeId?: string | number;
25
+ /** 展示模式 */
26
+ mode?: MenuMode;
27
+ /** 是否折叠(垂直模式下表现为弹出子菜单) */
28
+ collapsed?: boolean;
29
+ /** 是否手风琴(仅垂直非折叠模式有效) */
30
+ accordion?: boolean;
31
+ /** 自定义类名 */
32
+ class?: string;
33
+ /** 选中回调 */
34
+ onselect?: (id: string | number, item: MenuItem) => void;
35
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import Icon from "../Icon/Icon.svelte";
3
+ import { CheckCircle, AlertTriangle, XCircle, Info, X } from "lucide";
4
+ import { fly } from "svelte/transition";
5
+ import type { MessageType } from "./types";
6
+
7
+ interface MessageProps {
8
+ message: string;
9
+ type?: MessageType;
10
+ showClose?: boolean;
11
+ center?: boolean;
12
+ offset?: number;
13
+ onclose?: () => void;
14
+ class?: string;
15
+ }
16
+
17
+ let {
18
+ message,
19
+ type = "info",
20
+ showClose = false,
21
+ center = false,
22
+ offset = 20,
23
+ onclose,
24
+ class: cls = "",
25
+ ...attrs
26
+ }: MessageProps = $props();
27
+
28
+ const icons = {
29
+ success: CheckCircle,
30
+ warning: AlertTriangle,
31
+ error: XCircle,
32
+ info: Info,
33
+ };
34
+
35
+ const icon = $derived(icons[type]);
36
+ const classes = $derived(
37
+ `lm-message lm-message--${type}${center ? " is-center" : ""}${cls ? ` ${cls}` : ""}`,
38
+ );
39
+ </script>
40
+
41
+ <div
42
+ class={classes}
43
+ style:top="{offset}px"
44
+ role="alert"
45
+ transition:fly={{ y: -20, duration: 250, opacity: 0 }}
46
+ {...attrs}
47
+ >
48
+ <Icon {icon} class="lm-message__icon" />
49
+ <span class="lm-message__content">{message}</span>
50
+ {#if showClose}
51
+ <button
52
+ type="button"
53
+ class="lm-message__close"
54
+ onclick={onclose}
55
+ aria-label="关闭"
56
+ >
57
+ <Icon icon={X} size={14} />
58
+ </button>
59
+ {/if}
60
+ </div>
@@ -0,0 +1,13 @@
1
+ import type { MessageType } from "./types";
2
+ interface MessageProps {
3
+ message: string;
4
+ type?: MessageType;
5
+ showClose?: boolean;
6
+ center?: boolean;
7
+ offset?: number;
8
+ onclose?: () => void;
9
+ class?: string;
10
+ }
11
+ declare const Message: import("svelte").Component<MessageProps, {}, "">;
12
+ type Message = ReturnType<typeof Message>;
13
+ export default Message;