lumen-plus 0.0.1

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 (434) hide show
  1. package/dist/components/Affix/Affix.svelte +97 -0
  2. package/dist/components/Affix/Affix.svelte.d.ts +14 -0
  3. package/dist/components/Affix/index.d.ts +4 -0
  4. package/dist/components/Affix/index.js +3 -0
  5. package/dist/components/Affix/types.d.ts +11 -0
  6. package/dist/components/Affix/types.js +1 -0
  7. package/dist/components/Alert/Alert.svelte +77 -0
  8. package/dist/components/Alert/Alert.svelte.d.ts +16 -0
  9. package/dist/components/Alert/index.d.ts +4 -0
  10. package/dist/components/Alert/index.js +3 -0
  11. package/dist/components/Alert/types.d.ts +23 -0
  12. package/dist/components/Alert/types.js +1 -0
  13. package/dist/components/Autocomplete/Autocomplete.svelte +163 -0
  14. package/dist/components/Autocomplete/Autocomplete.svelte.d.ts +20 -0
  15. package/dist/components/Autocomplete/index.d.ts +3 -0
  16. package/dist/components/Autocomplete/index.js +3 -0
  17. package/dist/components/Avatar/Avatar.svelte +50 -0
  18. package/dist/components/Avatar/Avatar.svelte.d.ts +14 -0
  19. package/dist/components/Avatar/index.d.ts +4 -0
  20. package/dist/components/Avatar/index.js +3 -0
  21. package/dist/components/Avatar/types.d.ts +26 -0
  22. package/dist/components/Avatar/types.js +1 -0
  23. package/dist/components/Backtop/Backtop.svelte +60 -0
  24. package/dist/components/Backtop/Backtop.svelte.d.ts +13 -0
  25. package/dist/components/Backtop/index.d.ts +4 -0
  26. package/dist/components/Backtop/index.js +3 -0
  27. package/dist/components/Backtop/types.d.ts +18 -0
  28. package/dist/components/Backtop/types.js +1 -0
  29. package/dist/components/Badge/Badge.svelte +53 -0
  30. package/dist/components/Badge/Badge.svelte.d.ts +13 -0
  31. package/dist/components/Badge/index.d.ts +4 -0
  32. package/dist/components/Badge/index.js +3 -0
  33. package/dist/components/Badge/types.d.ts +20 -0
  34. package/dist/components/Badge/types.js +1 -0
  35. package/dist/components/Breadcrumb/Breadcrumb.svelte +35 -0
  36. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +6 -0
  37. package/dist/components/Breadcrumb/index.d.ts +4 -0
  38. package/dist/components/Breadcrumb/index.js +3 -0
  39. package/dist/components/Breadcrumb/types.d.ts +10 -0
  40. package/dist/components/Breadcrumb/types.js +1 -0
  41. package/dist/components/Button/Button.svelte +61 -0
  42. package/dist/components/Button/Button.svelte.d.ts +5 -0
  43. package/dist/components/Button/index.d.ts +4 -0
  44. package/dist/components/Button/index.js +3 -0
  45. package/dist/components/Button/types.d.ts +42 -0
  46. package/dist/components/Button/types.js +1 -0
  47. package/dist/components/Calendar/Calendar.svelte +115 -0
  48. package/dist/components/Calendar/Calendar.svelte.d.ts +7 -0
  49. package/dist/components/Calendar/index.d.ts +3 -0
  50. package/dist/components/Calendar/index.js +3 -0
  51. package/dist/components/Card/Card.svelte +59 -0
  52. package/dist/components/Card/Card.svelte.d.ts +4 -0
  53. package/dist/components/Card/index.d.ts +4 -0
  54. package/dist/components/Card/index.js +4 -0
  55. package/dist/components/Card/types.d.ts +26 -0
  56. package/dist/components/Card/types.js +1 -0
  57. package/dist/components/Carousel/Carousel.svelte +158 -0
  58. package/dist/components/Carousel/Carousel.svelte.d.ts +19 -0
  59. package/dist/components/Carousel/CarouselContext.d.ts +6 -0
  60. package/dist/components/Carousel/CarouselContext.js +1 -0
  61. package/dist/components/Carousel/CarouselItem.svelte +26 -0
  62. package/dist/components/Carousel/CarouselItem.svelte.d.ts +11 -0
  63. package/dist/components/Carousel/index.d.ts +5 -0
  64. package/dist/components/Carousel/index.js +4 -0
  65. package/dist/components/Carousel/types.d.ts +43 -0
  66. package/dist/components/Carousel/types.js +1 -0
  67. package/dist/components/Cascader/Cascader.svelte +191 -0
  68. package/dist/components/Cascader/Cascader.svelte.d.ts +4 -0
  69. package/dist/components/Cascader/index.d.ts +4 -0
  70. package/dist/components/Cascader/index.js +3 -0
  71. package/dist/components/Cascader/types.d.ts +19 -0
  72. package/dist/components/Cascader/types.js +1 -0
  73. package/dist/components/Checkbox/Checkbox.svelte +55 -0
  74. package/dist/components/Checkbox/Checkbox.svelte.d.ts +16 -0
  75. package/dist/components/Checkbox/index.d.ts +4 -0
  76. package/dist/components/Checkbox/index.js +3 -0
  77. package/dist/components/Checkbox/types.d.ts +24 -0
  78. package/dist/components/Checkbox/types.js +1 -0
  79. package/dist/components/Collapse/Collapse.svelte +48 -0
  80. package/dist/components/Collapse/Collapse.svelte.d.ts +11 -0
  81. package/dist/components/Collapse/CollapseContext.d.ts +6 -0
  82. package/dist/components/Collapse/CollapseContext.js +1 -0
  83. package/dist/components/Collapse/CollapseItem.svelte +133 -0
  84. package/dist/components/Collapse/CollapseItem.svelte.d.ts +11 -0
  85. package/dist/components/Collapse/index.d.ts +5 -0
  86. package/dist/components/Collapse/index.js +4 -0
  87. package/dist/components/Collapse/types.d.ts +27 -0
  88. package/dist/components/Collapse/types.js +1 -0
  89. package/dist/components/ColorPicker/ColorPicker.svelte +112 -0
  90. package/dist/components/ColorPicker/ColorPicker.svelte.d.ts +12 -0
  91. package/dist/components/ColorPicker/index.d.ts +4 -0
  92. package/dist/components/ColorPicker/index.js +3 -0
  93. package/dist/components/ColorPicker/types.d.ts +17 -0
  94. package/dist/components/ColorPicker/types.js +1 -0
  95. package/dist/components/Container/Aside.svelte +20 -0
  96. package/dist/components/Container/Aside.svelte.d.ts +9 -0
  97. package/dist/components/Container/Container.svelte +19 -0
  98. package/dist/components/Container/Container.svelte.d.ts +9 -0
  99. package/dist/components/Container/Footer.svelte +20 -0
  100. package/dist/components/Container/Footer.svelte.d.ts +9 -0
  101. package/dist/components/Container/Header.svelte +20 -0
  102. package/dist/components/Container/Header.svelte.d.ts +9 -0
  103. package/dist/components/Container/Main.svelte +18 -0
  104. package/dist/components/Container/Main.svelte.d.ts +8 -0
  105. package/dist/components/Container/index.d.ts +6 -0
  106. package/dist/components/Container/index.js +5 -0
  107. package/dist/components/Container/types.d.ts +46 -0
  108. package/dist/components/Container/types.js +1 -0
  109. package/dist/components/DatePicker/DatePicker.svelte +206 -0
  110. package/dist/components/DatePicker/DatePicker.svelte.d.ts +17 -0
  111. package/dist/components/DatePicker/index.d.ts +4 -0
  112. package/dist/components/DatePicker/index.js +3 -0
  113. package/dist/components/DatePicker/types.d.ts +29 -0
  114. package/dist/components/DatePicker/types.js +1 -0
  115. package/dist/components/DateTimePicker/DateTimePicker.svelte +387 -0
  116. package/dist/components/DateTimePicker/DateTimePicker.svelte.d.ts +4 -0
  117. package/dist/components/DateTimePicker/index.d.ts +4 -0
  118. package/dist/components/DateTimePicker/index.js +3 -0
  119. package/dist/components/DateTimePicker/types.d.ts +21 -0
  120. package/dist/components/DateTimePicker/types.js +1 -0
  121. package/dist/components/Descriptions/Descriptions.svelte +69 -0
  122. package/dist/components/Descriptions/Descriptions.svelte.d.ts +15 -0
  123. package/dist/components/Descriptions/DescriptionsContext.d.ts +8 -0
  124. package/dist/components/Descriptions/DescriptionsContext.js +1 -0
  125. package/dist/components/Descriptions/DescriptionsItem.svelte +59 -0
  126. package/dist/components/Descriptions/DescriptionsItem.svelte.d.ts +13 -0
  127. package/dist/components/Descriptions/index.d.ts +5 -0
  128. package/dist/components/Descriptions/index.js +4 -0
  129. package/dist/components/Descriptions/types.d.ts +41 -0
  130. package/dist/components/Descriptions/types.js +1 -0
  131. package/dist/components/Dialog/Dialog.svelte +122 -0
  132. package/dist/components/Dialog/Dialog.svelte.d.ts +20 -0
  133. package/dist/components/Dialog/index.d.ts +4 -0
  134. package/dist/components/Dialog/index.js +3 -0
  135. package/dist/components/Dialog/types.d.ts +32 -0
  136. package/dist/components/Dialog/types.js +1 -0
  137. package/dist/components/Divider/Divider.svelte +23 -0
  138. package/dist/components/Divider/Divider.svelte.d.ts +11 -0
  139. package/dist/components/Divider/index.d.ts +4 -0
  140. package/dist/components/Divider/index.js +3 -0
  141. package/dist/components/Divider/types.d.ts +20 -0
  142. package/dist/components/Divider/types.js +1 -0
  143. package/dist/components/Drawer/Drawer.svelte +141 -0
  144. package/dist/components/Drawer/Drawer.svelte.d.ts +26 -0
  145. package/dist/components/Drawer/index.d.ts +4 -0
  146. package/dist/components/Drawer/index.js +3 -0
  147. package/dist/components/Drawer/types.d.ts +40 -0
  148. package/dist/components/Drawer/types.js +1 -0
  149. package/dist/components/Dropdown/Dropdown.svelte +387 -0
  150. package/dist/components/Dropdown/Dropdown.svelte.d.ts +4 -0
  151. package/dist/components/Dropdown/DropdownContext.d.ts +7 -0
  152. package/dist/components/Dropdown/DropdownContext.js +8 -0
  153. package/dist/components/Dropdown/DropdownItem.svelte +50 -0
  154. package/dist/components/Dropdown/DropdownItem.svelte.d.ts +4 -0
  155. package/dist/components/Dropdown/DropdownMenu.svelte +16 -0
  156. package/dist/components/Dropdown/DropdownMenu.svelte.d.ts +4 -0
  157. package/dist/components/Dropdown/index.d.ts +5 -0
  158. package/dist/components/Dropdown/index.js +5 -0
  159. package/dist/components/Dropdown/types.d.ts +81 -0
  160. package/dist/components/Dropdown/types.js +1 -0
  161. package/dist/components/Empty/Empty.svelte +40 -0
  162. package/dist/components/Empty/Empty.svelte.d.ts +11 -0
  163. package/dist/components/Empty/index.d.ts +4 -0
  164. package/dist/components/Empty/index.js +3 -0
  165. package/dist/components/Empty/types.d.ts +14 -0
  166. package/dist/components/Empty/types.js +1 -0
  167. package/dist/components/Form/Form.svelte +88 -0
  168. package/dist/components/Form/Form.svelte.d.ts +15 -0
  169. package/dist/components/Form/FormContext.d.ts +19 -0
  170. package/dist/components/Form/FormContext.js +1 -0
  171. package/dist/components/Form/FormInternals.d.ts +40 -0
  172. package/dist/components/Form/FormInternals.js +152 -0
  173. package/dist/components/Form/FormItem.svelte +191 -0
  174. package/dist/components/Form/FormItem.svelte.d.ts +8 -0
  175. package/dist/components/Form/index.d.ts +3 -0
  176. package/dist/components/Form/index.js +2 -0
  177. package/dist/components/Form/types.d.ts +61 -0
  178. package/dist/components/Form/types.js +1 -0
  179. package/dist/components/Icon/Icon.svelte +43 -0
  180. package/dist/components/Icon/Icon.svelte.d.ts +12 -0
  181. package/dist/components/Icon/index.d.ts +5 -0
  182. package/dist/components/Icon/index.js +15 -0
  183. package/dist/components/Icon/types.d.ts +14 -0
  184. package/dist/components/Icon/types.js +1 -0
  185. package/dist/components/Image/Image.svelte +134 -0
  186. package/dist/components/Image/Image.svelte.d.ts +20 -0
  187. package/dist/components/Image/index.d.ts +4 -0
  188. package/dist/components/Image/index.js +3 -0
  189. package/dist/components/Image/types.d.ts +32 -0
  190. package/dist/components/Image/types.js +1 -0
  191. package/dist/components/Input/Input.svelte +177 -0
  192. package/dist/components/Input/Input.svelte.d.ts +4 -0
  193. package/dist/components/Input/index.d.ts +4 -0
  194. package/dist/components/Input/index.js +3 -0
  195. package/dist/components/Input/types.d.ts +72 -0
  196. package/dist/components/Input/types.js +1 -0
  197. package/dist/components/InputNumber/InputNumber.svelte +110 -0
  198. package/dist/components/InputNumber/InputNumber.svelte.d.ts +18 -0
  199. package/dist/components/InputNumber/index.d.ts +4 -0
  200. package/dist/components/InputNumber/index.js +3 -0
  201. package/dist/components/InputNumber/types.d.ts +29 -0
  202. package/dist/components/InputNumber/types.js +1 -0
  203. package/dist/components/InputTag/InputTag.svelte +160 -0
  204. package/dist/components/InputTag/InputTag.svelte.d.ts +4 -0
  205. package/dist/components/InputTag/index.d.ts +4 -0
  206. package/dist/components/InputTag/index.js +3 -0
  207. package/dist/components/InputTag/types.d.ts +21 -0
  208. package/dist/components/InputTag/types.js +1 -0
  209. package/dist/components/Link/Link.svelte +38 -0
  210. package/dist/components/Link/Link.svelte.d.ts +15 -0
  211. package/dist/components/Link/index.d.ts +4 -0
  212. package/dist/components/Link/index.js +3 -0
  213. package/dist/components/Link/types.d.ts +26 -0
  214. package/dist/components/Link/types.js +1 -0
  215. package/dist/components/Loading/Loading.svelte +56 -0
  216. package/dist/components/Loading/Loading.svelte.d.ts +15 -0
  217. package/dist/components/Loading/index.d.ts +4 -0
  218. package/dist/components/Loading/index.js +3 -0
  219. package/dist/components/Loading/types.d.ts +20 -0
  220. package/dist/components/Loading/types.js +1 -0
  221. package/dist/components/Menu/Menu.svelte +283 -0
  222. package/dist/components/Menu/Menu.svelte.d.ts +4 -0
  223. package/dist/components/Menu/index.d.ts +4 -0
  224. package/dist/components/Menu/index.js +3 -0
  225. package/dist/components/Menu/types.d.ts +18 -0
  226. package/dist/components/Menu/types.js +1 -0
  227. package/dist/components/Message/MessageBox.svelte +56 -0
  228. package/dist/components/Message/MessageBox.svelte.d.ts +10 -0
  229. package/dist/components/Message/index.d.ts +15 -0
  230. package/dist/components/Message/index.js +102 -0
  231. package/dist/components/Message/types.d.ts +28 -0
  232. package/dist/components/Message/types.js +1 -0
  233. package/dist/components/MessageBox/MessageBox.svelte +85 -0
  234. package/dist/components/MessageBox/MessageBox.svelte.d.ts +7 -0
  235. package/dist/components/MessageBox/index.d.ts +4 -0
  236. package/dist/components/MessageBox/index.js +3 -0
  237. package/dist/components/MessageBox/types.d.ts +21 -0
  238. package/dist/components/MessageBox/types.js +1 -0
  239. package/dist/components/Notification/Notification.svelte +90 -0
  240. package/dist/components/Notification/Notification.svelte.d.ts +7 -0
  241. package/dist/components/Notification/index.d.ts +4 -0
  242. package/dist/components/Notification/index.js +3 -0
  243. package/dist/components/Notification/types.d.ts +24 -0
  244. package/dist/components/Notification/types.js +1 -0
  245. package/dist/components/Pagination/Pagination.svelte +180 -0
  246. package/dist/components/Pagination/Pagination.svelte.d.ts +21 -0
  247. package/dist/components/Pagination/index.d.ts +4 -0
  248. package/dist/components/Pagination/index.js +3 -0
  249. package/dist/components/Pagination/types.d.ts +35 -0
  250. package/dist/components/Pagination/types.js +1 -0
  251. package/dist/components/PinInput/PinInput.svelte +175 -0
  252. package/dist/components/PinInput/PinInput.svelte.d.ts +4 -0
  253. package/dist/components/PinInput/index.d.ts +4 -0
  254. package/dist/components/PinInput/index.js +3 -0
  255. package/dist/components/PinInput/types.d.ts +31 -0
  256. package/dist/components/PinInput/types.js +1 -0
  257. package/dist/components/Popconfirm/Popconfirm.svelte +228 -0
  258. package/dist/components/Popconfirm/Popconfirm.svelte.d.ts +24 -0
  259. package/dist/components/Popconfirm/index.d.ts +4 -0
  260. package/dist/components/Popconfirm/index.js +3 -0
  261. package/dist/components/Popconfirm/types.d.ts +21 -0
  262. package/dist/components/Popconfirm/types.js +1 -0
  263. package/dist/components/Popover/Popover.svelte +176 -0
  264. package/dist/components/Popover/Popover.svelte.d.ts +7 -0
  265. package/dist/components/Popover/index.d.ts +4 -0
  266. package/dist/components/Popover/index.js +3 -0
  267. package/dist/components/Popover/types.d.ts +24 -0
  268. package/dist/components/Popover/types.js +1 -0
  269. package/dist/components/Progress/Progress.svelte +33 -0
  270. package/dist/components/Progress/Progress.svelte.d.ts +11 -0
  271. package/dist/components/Progress/index.d.ts +4 -0
  272. package/dist/components/Progress/index.js +3 -0
  273. package/dist/components/Progress/types.d.ts +17 -0
  274. package/dist/components/Progress/types.js +1 -0
  275. package/dist/components/Radio/Radio.svelte +48 -0
  276. package/dist/components/Radio/Radio.svelte.d.ts +15 -0
  277. package/dist/components/Radio/index.d.ts +4 -0
  278. package/dist/components/Radio/index.js +3 -0
  279. package/dist/components/Radio/types.d.ts +24 -0
  280. package/dist/components/Radio/types.js +1 -0
  281. package/dist/components/Rating/Rating.svelte +226 -0
  282. package/dist/components/Rating/Rating.svelte.d.ts +27 -0
  283. package/dist/components/Rating/index.d.ts +4 -0
  284. package/dist/components/Rating/index.js +3 -0
  285. package/dist/components/Rating/types.d.ts +43 -0
  286. package/dist/components/Rating/types.js +1 -0
  287. package/dist/components/Result/Result.svelte +58 -0
  288. package/dist/components/Result/Result.svelte.d.ts +14 -0
  289. package/dist/components/Result/index.d.ts +4 -0
  290. package/dist/components/Result/index.js +3 -0
  291. package/dist/components/Result/types.d.ts +20 -0
  292. package/dist/components/Result/types.js +1 -0
  293. package/dist/components/Segmented/Segmented.svelte +49 -0
  294. package/dist/components/Segmented/Segmented.svelte.d.ts +12 -0
  295. package/dist/components/Segmented/index.d.ts +4 -0
  296. package/dist/components/Segmented/index.js +3 -0
  297. package/dist/components/Segmented/types.d.ts +29 -0
  298. package/dist/components/Segmented/types.js +1 -0
  299. package/dist/components/Select/Select.svelte +215 -0
  300. package/dist/components/Select/Select.svelte.d.ts +4 -0
  301. package/dist/components/Select/index.d.ts +4 -0
  302. package/dist/components/Select/index.js +3 -0
  303. package/dist/components/Select/types.d.ts +41 -0
  304. package/dist/components/Select/types.js +1 -0
  305. package/dist/components/Skeleton/Skeleton.svelte +44 -0
  306. package/dist/components/Skeleton/Skeleton.svelte.d.ts +13 -0
  307. package/dist/components/Skeleton/SkeletonItem.svelte +14 -0
  308. package/dist/components/Skeleton/SkeletonItem.svelte.d.ts +8 -0
  309. package/dist/components/Skeleton/index.d.ts +5 -0
  310. package/dist/components/Skeleton/index.js +4 -0
  311. package/dist/components/Skeleton/types.d.ts +27 -0
  312. package/dist/components/Skeleton/types.js +1 -0
  313. package/dist/components/Slider/Slider.svelte +292 -0
  314. package/dist/components/Slider/Slider.svelte.d.ts +18 -0
  315. package/dist/components/Slider/index.d.ts +4 -0
  316. package/dist/components/Slider/index.js +3 -0
  317. package/dist/components/Slider/types.d.ts +28 -0
  318. package/dist/components/Slider/types.js +1 -0
  319. package/dist/components/Space/Space.svelte +59 -0
  320. package/dist/components/Space/Space.svelte.d.ts +18 -0
  321. package/dist/components/Space/index.d.ts +4 -0
  322. package/dist/components/Space/index.js +3 -0
  323. package/dist/components/Space/types.d.ts +32 -0
  324. package/dist/components/Space/types.js +1 -0
  325. package/dist/components/Statistic/Countdown.svelte +108 -0
  326. package/dist/components/Statistic/Countdown.svelte.d.ts +14 -0
  327. package/dist/components/Statistic/Statistic.svelte +63 -0
  328. package/dist/components/Statistic/Statistic.svelte.d.ts +15 -0
  329. package/dist/components/Statistic/index.d.ts +5 -0
  330. package/dist/components/Statistic/index.js +4 -0
  331. package/dist/components/Statistic/types.d.ts +41 -0
  332. package/dist/components/Statistic/types.js +1 -0
  333. package/dist/components/Steps/Step.svelte +58 -0
  334. package/dist/components/Steps/Step.svelte.d.ts +14 -0
  335. package/dist/components/Steps/Steps.svelte +60 -0
  336. package/dist/components/Steps/Steps.svelte.d.ts +15 -0
  337. package/dist/components/Steps/StepsContext.d.ts +12 -0
  338. package/dist/components/Steps/StepsContext.js +1 -0
  339. package/dist/components/Steps/index.d.ts +5 -0
  340. package/dist/components/Steps/index.js +4 -0
  341. package/dist/components/Steps/types.d.ts +41 -0
  342. package/dist/components/Steps/types.js +1 -0
  343. package/dist/components/Switch/Switch.svelte +122 -0
  344. package/dist/components/Switch/Switch.svelte.d.ts +22 -0
  345. package/dist/components/Switch/index.d.ts +4 -0
  346. package/dist/components/Switch/index.js +3 -0
  347. package/dist/components/Switch/styles/index.scss +1 -0
  348. package/dist/components/Switch/styles/switch.scss +194 -0
  349. package/dist/components/Switch/types.d.ts +37 -0
  350. package/dist/components/Switch/types.js +1 -0
  351. package/dist/components/Table/Table.svelte +575 -0
  352. package/dist/components/Table/Table.svelte.d.ts +11 -0
  353. package/dist/components/Table/index.d.ts +4 -0
  354. package/dist/components/Table/index.js +3 -0
  355. package/dist/components/Table/types.d.ts +180 -0
  356. package/dist/components/Table/types.js +1 -0
  357. package/dist/components/Tabs/TabPane.svelte +37 -0
  358. package/dist/components/Tabs/TabPane.svelte.d.ts +13 -0
  359. package/dist/components/Tabs/Tabs.svelte +251 -0
  360. package/dist/components/Tabs/Tabs.svelte.d.ts +13 -0
  361. package/dist/components/Tabs/TabsContext.d.ts +11 -0
  362. package/dist/components/Tabs/TabsContext.js +1 -0
  363. package/dist/components/Tabs/index.d.ts +3 -0
  364. package/dist/components/Tabs/index.js +2 -0
  365. package/dist/components/Tabs/types.d.ts +39 -0
  366. package/dist/components/Tabs/types.js +1 -0
  367. package/dist/components/Tag/Tag.svelte +39 -0
  368. package/dist/components/Tag/Tag.svelte.d.ts +13 -0
  369. package/dist/components/Tag/index.d.ts +4 -0
  370. package/dist/components/Tag/index.js +3 -0
  371. package/dist/components/Tag/types.d.ts +22 -0
  372. package/dist/components/Tag/types.js +1 -0
  373. package/dist/components/Textarea/Textarea.svelte +76 -0
  374. package/dist/components/Textarea/Textarea.svelte.d.ts +16 -0
  375. package/dist/components/Textarea/index.d.ts +4 -0
  376. package/dist/components/Textarea/index.js +3 -0
  377. package/dist/components/Textarea/types.d.ts +25 -0
  378. package/dist/components/Textarea/types.js +1 -0
  379. package/dist/components/TimePicker/TimePicker.svelte +297 -0
  380. package/dist/components/TimePicker/TimePicker.svelte.d.ts +14 -0
  381. package/dist/components/TimePicker/index.d.ts +3 -0
  382. package/dist/components/TimePicker/index.js +3 -0
  383. package/dist/components/Timeline/Timeline.svelte +18 -0
  384. package/dist/components/Timeline/Timeline.svelte.d.ts +8 -0
  385. package/dist/components/Timeline/TimelineItem.svelte +67 -0
  386. package/dist/components/Timeline/TimelineItem.svelte.d.ts +18 -0
  387. package/dist/components/Timeline/index.d.ts +5 -0
  388. package/dist/components/Timeline/index.js +4 -0
  389. package/dist/components/Timeline/types.d.ts +39 -0
  390. package/dist/components/Timeline/types.js +1 -0
  391. package/dist/components/Tooltip/OverflowTooltip.svelte +81 -0
  392. package/dist/components/Tooltip/OverflowTooltip.svelte.d.ts +4 -0
  393. package/dist/components/Tooltip/Tooltip.svelte +51 -0
  394. package/dist/components/Tooltip/Tooltip.svelte.d.ts +16 -0
  395. package/dist/components/Tooltip/index.d.ts +6 -0
  396. package/dist/components/Tooltip/index.js +5 -0
  397. package/dist/components/Tooltip/types.d.ts +51 -0
  398. package/dist/components/Tooltip/types.js +1 -0
  399. package/dist/components/Transfer/Transfer.svelte +145 -0
  400. package/dist/components/Transfer/Transfer.svelte.d.ts +14 -0
  401. package/dist/components/Transfer/index.d.ts +4 -0
  402. package/dist/components/Transfer/index.js +3 -0
  403. package/dist/components/Transfer/types.d.ts +16 -0
  404. package/dist/components/Transfer/types.js +1 -0
  405. package/dist/components/Tree/Tree.svelte +148 -0
  406. package/dist/components/Tree/Tree.svelte.d.ts +17 -0
  407. package/dist/components/Tree/TreeNode.svelte +133 -0
  408. package/dist/components/Tree/TreeNode.svelte.d.ts +19 -0
  409. package/dist/components/Tree/index.d.ts +4 -0
  410. package/dist/components/Tree/index.js +3 -0
  411. package/dist/components/Tree/types.d.ts +65 -0
  412. package/dist/components/Tree/types.js +1 -0
  413. package/dist/components/TreeSelect/TreeSelect.svelte +656 -0
  414. package/dist/components/TreeSelect/TreeSelect.svelte.d.ts +4 -0
  415. package/dist/components/TreeSelect/index.d.ts +4 -0
  416. package/dist/components/TreeSelect/index.js +3 -0
  417. package/dist/components/TreeSelect/types.d.ts +98 -0
  418. package/dist/components/TreeSelect/types.js +1 -0
  419. package/dist/components/Upload/Upload.svelte +323 -0
  420. package/dist/components/Upload/Upload.svelte.d.ts +28 -0
  421. package/dist/components/Upload/index.d.ts +4 -0
  422. package/dist/components/Upload/index.js +3 -0
  423. package/dist/components/Upload/types.d.ts +67 -0
  424. package/dist/components/Upload/types.js +1 -0
  425. package/dist/components/Watermark/Watermark.svelte +174 -0
  426. package/dist/components/Watermark/Watermark.svelte.d.ts +20 -0
  427. package/dist/components/Watermark/index.d.ts +4 -0
  428. package/dist/components/Watermark/index.js +3 -0
  429. package/dist/components/Watermark/types.d.ts +32 -0
  430. package/dist/components/Watermark/types.js +1 -0
  431. package/dist/index.d.ts +64 -0
  432. package/dist/index.js +64 -0
  433. package/dist/theme/index.css +9737 -0
  434. package/package.json +51 -0
@@ -0,0 +1,656 @@
1
+ <script lang="ts">
2
+ import { onMount, onDestroy, tick } from 'svelte'
3
+ import { slide } from 'svelte/transition'
4
+ import { createDropdownTransition } from '../../utils'
5
+ import Icon from '../Icon'
6
+ import Checkbox from '../../Checkbox/src'
7
+ import Tag from '../../Tag/src'
8
+ import { ChevronDown, ChevronRight, X, Check, Loader2 } from 'lucide'
9
+ import type { TreeSelectNode, TreeSelectProps } from './types'
10
+
11
+ let {
12
+ modelValue = $bindable(),
13
+ data = [],
14
+ placeholder = '请选择',
15
+ disabled = false,
16
+ clearable = false,
17
+ multiple = false,
18
+ collapseTags = false,
19
+ maxCollapseTags = 1,
20
+ size = 'default',
21
+ filterable = false,
22
+ filterMethod,
23
+ noMatchText = '无匹配数据',
24
+ noDataText = '暂无数据',
25
+ showCheckbox = false,
26
+ checkStrictly = false,
27
+ checkOnClickNode = false,
28
+ defaultExpandAll = false,
29
+ defaultExpandedKeys = [],
30
+ leafOnly = true,
31
+ props: propsConfig,
32
+ highlightCurrent = false,
33
+ lazy = false,
34
+ load,
35
+ showMenuArrow = true,
36
+ onvisiblechange,
37
+ onchange,
38
+ onnodeclick,
39
+ onclear,
40
+ onremove,
41
+ renderLabel,
42
+ class: cls = '',
43
+ ...attrs
44
+ }: TreeSelectProps = $props()
45
+
46
+ // 属性映射
47
+ const getNodeValue = (node: TreeSelectNode): string | number => {
48
+ const key = propsConfig?.value ?? 'value'
49
+ return (node as Record<string, unknown>)[key] as string | number
50
+ }
51
+
52
+ const getNodeLabel = (node: TreeSelectNode): string => {
53
+ const key = propsConfig?.label ?? 'label'
54
+ return String((node as Record<string, unknown>)[key] ?? '')
55
+ }
56
+
57
+ const getNodeChildren = (node: TreeSelectNode): TreeSelectNode[] | undefined => {
58
+ const key = propsConfig?.children ?? 'children'
59
+ return (node as Record<string, unknown>)[key] as TreeSelectNode[] | undefined
60
+ }
61
+
62
+ const isNodeDisabled = (node: TreeSelectNode): boolean => {
63
+ const key = propsConfig?.disabled ?? 'disabled'
64
+ return Boolean((node as Record<string, unknown>)[key])
65
+ }
66
+
67
+ const isNodeLeaf = (node: TreeSelectNode): boolean => {
68
+ const key = propsConfig?.isLeaf ?? 'isLeaf'
69
+ const children = getNodeChildren(node)
70
+ if ((node as Record<string, unknown>)[key] !== undefined) {
71
+ return Boolean((node as Record<string, unknown>)[key])
72
+ }
73
+ return !children || children.length === 0
74
+ }
75
+
76
+ // 状态
77
+ let visible = $state(false)
78
+ let filterQuery = $state('')
79
+ let containerRef: HTMLDivElement | null = $state(null)
80
+ let inputRef: HTMLInputElement | null = $state(null)
81
+ let expandedKeys = $state(new Set<string | number>())
82
+ let loadingKeys = $state(new Set<string | number>())
83
+ let currentKey = $state<string | number | null>(null)
84
+ let loadedLazyData = $state(new Map<string | number, TreeSelectNode[]>())
85
+ let reduceMotion = $state(false)
86
+
87
+ const expandCollapseDuration = $derived(reduceMotion ? 0 : 180)
88
+
89
+ const dropdownTransition = $derived(createDropdownTransition(reduceMotion))
90
+
91
+ // 计算选中值数组
92
+ const selectedValues = $derived.by((): (string | number)[] => {
93
+ if (multiple) return Array.isArray(modelValue) ? modelValue : []
94
+ return modelValue !== undefined && modelValue !== null && !Array.isArray(modelValue) ? [modelValue] : []
95
+ })
96
+
97
+ // 构建扁平节点映射
98
+ const flattenNodes = $derived.by(() => {
99
+ const map = new Map<string | number, TreeSelectNode>()
100
+ const traverse = (nodes: TreeSelectNode[]): void => {
101
+ for (const node of nodes) {
102
+ map.set(getNodeValue(node), node)
103
+ const children = getNodeChildren(node)
104
+ if (children) traverse(children)
105
+ }
106
+ }
107
+ traverse(data)
108
+ // 也遍历懒加载的数据
109
+ loadedLazyData.forEach((children) => traverse(children))
110
+ return map
111
+ })
112
+
113
+ // 查找节点
114
+ const findNode = (value: string | number): TreeSelectNode | undefined => {
115
+ return flattenNodes.get(value)
116
+ }
117
+
118
+ // 获取所有 key
119
+ const getAllKeys = (nodes: TreeSelectNode[]): (string | number)[] => {
120
+ const keys: (string | number)[] = []
121
+ const traverse = (items: TreeSelectNode[]): void => {
122
+ for (const item of items) {
123
+ keys.push(getNodeValue(item))
124
+ const children = getNodeChildren(item)
125
+ if (children) traverse(children)
126
+ }
127
+ }
128
+ traverse(nodes)
129
+ return keys
130
+ }
131
+
132
+ // 过滤节点
133
+ const defaultFilterMethod = (query: string, node: TreeSelectNode): boolean => {
134
+ return getNodeLabel(node).toLowerCase().includes(query.toLowerCase())
135
+ }
136
+
137
+ const filterNodes = (nodes: TreeSelectNode[], query: string): TreeSelectNode[] => {
138
+ if (!query) return nodes
139
+
140
+ const filter = filterMethod ?? defaultFilterMethod
141
+ const result: TreeSelectNode[] = []
142
+
143
+ for (const node of nodes) {
144
+ const children = getNodeChildren(node)
145
+ const filteredChildren = children ? filterNodes(children, query) : []
146
+ const nodeMatches = filter(query, node)
147
+
148
+ if (nodeMatches || filteredChildren.length > 0) {
149
+ result.push({
150
+ ...node,
151
+ children: filteredChildren.length > 0 ? filteredChildren : children,
152
+ })
153
+ }
154
+ }
155
+
156
+ return result
157
+ }
158
+
159
+ const filteredData = $derived.by(() => {
160
+ if (!filterable || !filterQuery) return data
161
+ return filterNodes(data, filterQuery)
162
+ })
163
+
164
+ const hasData = $derived(filteredData.length > 0)
165
+ const showNoMatch = $derived(filterable && filterQuery && !hasData)
166
+ const showNoData = $derived(!filterable && data.length === 0)
167
+
168
+ // 展开/收起
169
+ const toggleExpand = async (node: TreeSelectNode, e?: MouseEvent): Promise<void> => {
170
+ e?.stopPropagation()
171
+ const value = getNodeValue(node)
172
+
173
+ // 懒加载
174
+ if (lazy && !isNodeLeaf(node) && !loadedLazyData.has(value) && load) {
175
+ loadingKeys = new Set([...loadingKeys, value])
176
+
177
+ await new Promise<void>((resolve) => {
178
+ load(node, (children) => {
179
+ loadedLazyData = new Map([...loadedLazyData, [value, children]])
180
+ loadingKeys = new Set([...loadingKeys].filter((k) => k !== value))
181
+ resolve()
182
+ })
183
+ })
184
+ }
185
+
186
+ const newExpanded = new Set(expandedKeys)
187
+ if (newExpanded.has(value)) {
188
+ newExpanded.delete(value)
189
+ } else {
190
+ newExpanded.add(value)
191
+ }
192
+ expandedKeys = newExpanded
193
+ }
194
+
195
+ // 选中节点
196
+ const selectNode = (node: TreeSelectNode): void => {
197
+ if (isNodeDisabled(node)) return
198
+
199
+ const value = getNodeValue(node)
200
+
201
+ // leafOnly 模式下只能选择叶子节点(非叶子点击由上层逻辑负责展开/收起)
202
+ if (leafOnly && !isNodeLeaf(node)) return
203
+
204
+ onnodeclick?.(node)
205
+
206
+ if (multiple) {
207
+ const values = Array.isArray(modelValue) ? [...modelValue] : []
208
+ const index = values.indexOf(value)
209
+ if (index > -1) {
210
+ values.splice(index, 1)
211
+ } else {
212
+ values.push(value)
213
+ }
214
+ modelValue = values
215
+ onchange?.(values)
216
+ } else {
217
+ modelValue = value
218
+ onchange?.(value)
219
+ visible = false
220
+ }
221
+
222
+ if (highlightCurrent) {
223
+ currentKey = value
224
+ }
225
+ }
226
+
227
+ // 复选框逻辑(支持父子关联或不关联)
228
+ const handleCheck = (node: TreeSelectNode, checked: boolean): void => {
229
+ if (isNodeDisabled(node)) return
230
+
231
+ // leafOnly 模式下只允许勾选叶子节点
232
+ if (leafOnly && !isNodeLeaf(node)) return
233
+
234
+ const value = getNodeValue(node)
235
+ let values = Array.isArray(modelValue) ? [...modelValue] : []
236
+
237
+ if (checkStrictly) {
238
+ // 父子不关联
239
+ if (checked) {
240
+ if (!values.includes(value)) values.push(value)
241
+ } else {
242
+ values = values.filter((v) => v !== value)
243
+ }
244
+ } else {
245
+ // 父子关联
246
+ const getAllDescendants = (n: TreeSelectNode): (string | number)[] => {
247
+ const descendants: (string | number)[] = [getNodeValue(n)]
248
+ const children = getNodeChildren(n)
249
+ if (children) {
250
+ for (const child of children) {
251
+ descendants.push(...getAllDescendants(child))
252
+ }
253
+ }
254
+ return descendants
255
+ }
256
+
257
+ const descendants = getAllDescendants(node)
258
+
259
+ if (checked) {
260
+ for (const d of descendants) {
261
+ if (!values.includes(d)) values.push(d)
262
+ }
263
+ } else {
264
+ values = values.filter((v) => !descendants.includes(v))
265
+ }
266
+ }
267
+
268
+ modelValue = values
269
+ onchange?.(values)
270
+ }
271
+
272
+ // 是否选中
273
+ const isSelected = (node: TreeSelectNode): boolean => {
274
+ return selectedValues.includes(getNodeValue(node))
275
+ }
276
+
277
+ // 是否展开
278
+ const isExpanded = (node: TreeSelectNode): boolean => {
279
+ return expandedKeys.has(getNodeValue(node))
280
+ }
281
+
282
+ // 是否正在加载
283
+ const isLoading = (node: TreeSelectNode): boolean => {
284
+ return loadingKeys.has(getNodeValue(node))
285
+ }
286
+
287
+ // 获取节点的实际子节点(支持懒加载)
288
+ const getActualChildren = (node: TreeSelectNode): TreeSelectNode[] | undefined => {
289
+ const value = getNodeValue(node)
290
+ if (lazy && loadedLazyData.has(value)) {
291
+ return loadedLazyData.get(value)
292
+ }
293
+ return getNodeChildren(node)
294
+ }
295
+
296
+ // 复选框状态(半选)
297
+ const getCheckState = (node: TreeSelectNode): 'checked' | 'indeterminate' | 'unchecked' => {
298
+ const value = getNodeValue(node)
299
+ if (selectedValues.includes(value)) return 'checked'
300
+
301
+ if (!checkStrictly) {
302
+ const children = getActualChildren(node)
303
+ if (children && children.length > 0) {
304
+ const checkedCount = children.filter((c) => selectedValues.includes(getNodeValue(c))).length
305
+ if (checkedCount === children.length) return 'checked'
306
+ if (checkedCount > 0) return 'indeterminate'
307
+ }
308
+ }
309
+
310
+ return 'unchecked'
311
+ }
312
+
313
+ // 显示值
314
+ const displayLabels = $derived.by(() => {
315
+ return selectedValues.map((v) => {
316
+ const node = findNode(v)
317
+ return node ? getNodeLabel(node) : String(v)
318
+ })
319
+ })
320
+
321
+ const displayValue = $derived.by(() => {
322
+ if (multiple) return ''
323
+ return displayLabels[0] ?? ''
324
+ })
325
+
326
+ // 打开/关闭
327
+ const open = (): void => {
328
+ if (disabled) return
329
+ visible = true
330
+ onvisiblechange?.(true)
331
+ if (filterable) {
332
+ tick().then(() => inputRef?.focus())
333
+ }
334
+ }
335
+
336
+ const close = (): void => {
337
+ visible = false
338
+ filterQuery = ''
339
+ onvisiblechange?.(false)
340
+ }
341
+
342
+ const toggle = (): void => {
343
+ if (visible) close()
344
+ else open()
345
+ }
346
+
347
+ // 清空
348
+ const handleClear = (e: MouseEvent): void => {
349
+ e.stopPropagation()
350
+ modelValue = multiple ? [] : undefined
351
+ filterQuery = ''
352
+ onchange?.(multiple ? [] : undefined)
353
+ onclear?.()
354
+ }
355
+
356
+ // 移除 Tag
357
+ const handleRemoveTag = (value: string | number): void => {
358
+ if (disabled) return
359
+ const values = (Array.isArray(modelValue) ? modelValue : []).filter((v) => v !== value)
360
+ modelValue = values
361
+ onchange?.(values)
362
+ onremove?.(value)
363
+ }
364
+
365
+ // 点击外部关闭
366
+ const handleClickOutside = (e: MouseEvent): void => {
367
+ if (containerRef && !containerRef.contains(e.target as Node)) {
368
+ close()
369
+ }
370
+ }
371
+
372
+ // 键盘事件
373
+ const handleKeydown = (e: KeyboardEvent): void => {
374
+ if (e.key === 'Escape') {
375
+ close()
376
+ } else if (e.key === 'Enter' && !visible) {
377
+ open()
378
+ }
379
+ }
380
+
381
+ // 输入过滤
382
+ const handleFilterInput = (e: Event): void => {
383
+ const target = e.target as HTMLInputElement
384
+ filterQuery = target.value
385
+
386
+ // 过滤时自动展开匹配的节点
387
+ if (filterQuery) {
388
+ const matchedKeys = new Set<string | number>()
389
+ const findMatchedParents = (nodes: TreeSelectNode[], parents: (string | number)[] = []): void => {
390
+ for (const node of nodes) {
391
+ const value = getNodeValue(node)
392
+ const children = getNodeChildren(node)
393
+ const currentPath = [...parents, value]
394
+
395
+ const filter = filterMethod ?? defaultFilterMethod
396
+ if (filter(filterQuery, node)) {
397
+ parents.forEach((p) => matchedKeys.add(p))
398
+ }
399
+
400
+ if (children) {
401
+ findMatchedParents(children, currentPath)
402
+ }
403
+ }
404
+ }
405
+ findMatchedParents(data)
406
+ expandedKeys = new Set([...expandedKeys, ...matchedKeys])
407
+ }
408
+ }
409
+
410
+ // 初始化
411
+ onMount(() => {
412
+ document.addEventListener('click', handleClickOutside)
413
+
414
+ if (typeof window !== 'undefined') {
415
+ reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches ?? false
416
+ }
417
+
418
+ // 默认展开
419
+ if (defaultExpandAll) {
420
+ expandedKeys = new Set(getAllKeys(data))
421
+ } else if (defaultExpandedKeys.length > 0) {
422
+ expandedKeys = new Set(defaultExpandedKeys)
423
+ }
424
+ })
425
+
426
+ onDestroy(() => {
427
+ document.removeEventListener('click', handleClickOutside)
428
+ })
429
+
430
+ // 节点点击处理
431
+ const handleNodeClick = (node: TreeSelectNode): void => {
432
+ // 非叶子节点点击:展开/收起(而不是选中)
433
+ if ((lazy && !isNodeLeaf(node)) || (getActualChildren(node)?.length ?? 0) > 0) {
434
+ if (!isNodeDisabled(node)) {
435
+ void toggleExpand(node)
436
+ }
437
+ return
438
+ }
439
+
440
+ if (showCheckbox && multiple) {
441
+ // 有复选框时,点击节点切换复选框
442
+ if (checkOnClickNode) {
443
+ const state = getCheckState(node)
444
+ handleCheck(node, state !== 'checked')
445
+ }
446
+ } else {
447
+ selectNode(node)
448
+ }
449
+ }
450
+
451
+ const classes = $derived(
452
+ [
453
+ 'lm-tree-select',
454
+ disabled && 'is-disabled',
455
+ visible && 'is-focus',
456
+ multiple && 'is-multiple',
457
+ size !== 'default' && `lm-tree-select--${size}`,
458
+ cls,
459
+ ]
460
+ .filter(Boolean)
461
+ .join(' ')
462
+ )
463
+ </script>
464
+
465
+ {#snippet treeNode(node: TreeSelectNode, level: number = 0)}
466
+ {@const nodeValue = getNodeValue(node)}
467
+ {@const nodeLabel = getNodeLabel(node)}
468
+ {@const nodeDisabled = isNodeDisabled(node)}
469
+ {@const nodeLeaf = isNodeLeaf(node)}
470
+ {@const children = getActualChildren(node)}
471
+ {@const hasChildren = children && children.length > 0}
472
+ {@const expanded = isExpanded(node)}
473
+ {@const loading = isLoading(node)}
474
+ {@const selected = isSelected(node)}
475
+ {@const checkState = showCheckbox ? getCheckState(node) : 'unchecked'}
476
+ {@const isCurrent = currentKey === nodeValue}
477
+
478
+ <div class="lm-tree-select__tree-node" class:is-current={highlightCurrent && isCurrent}>
479
+ <div
480
+ class="lm-tree-select__node-content"
481
+ class:is-selected={selected && !showCheckbox}
482
+ class:is-disabled={nodeDisabled}
483
+ style="padding-left: {level * 18 + 8}px"
484
+ onclick={() => handleNodeClick(node)}
485
+ onkeydown={(e: KeyboardEvent) => {
486
+ if (e.key === 'Enter' || e.key === ' ') {
487
+ e.preventDefault()
488
+ handleNodeClick(node)
489
+ }
490
+ }}
491
+ role="treeitem"
492
+ tabindex={nodeDisabled ? -1 : 0}
493
+ aria-selected={selected}
494
+ aria-expanded={hasChildren || (lazy && !nodeLeaf) ? expanded : undefined}
495
+ aria-disabled={nodeDisabled}
496
+ >
497
+ <!-- 展开/收起按钮 -->
498
+ <button
499
+ type="button"
500
+ class="lm-tree-select__expand-icon"
501
+ class:is-expanded={expanded}
502
+ class:is-leaf={nodeLeaf && !lazy}
503
+ onclick={(e: MouseEvent) => toggleExpand(node, e)}
504
+ aria-label={expanded ? '收起' : '展开'}
505
+ tabindex="-1"
506
+ >
507
+ {#if loading}
508
+ <span class="lm-tree-select__loading">
509
+ <Icon icon={Loader2} size={14} />
510
+ </span>
511
+ {:else if !nodeLeaf || (lazy && !loadedLazyData.has(nodeValue) && !node.isLeaf)}
512
+ <Icon icon={ChevronRight} size={14} />
513
+ {/if}
514
+ </button>
515
+
516
+ <!-- 复选框 -->
517
+ {#if showCheckbox && multiple}
518
+ <span class="lm-tree-select__checkbox" role="presentation">
519
+ <Checkbox
520
+ checked={checkState === 'checked'}
521
+ indeterminate={checkState === 'indeterminate'}
522
+ disabled={nodeDisabled}
523
+ onchange={(checked) => handleCheck(node, checked)}
524
+ />
525
+ </span>
526
+ {/if}
527
+
528
+ <!-- 节点内容 -->
529
+ <span class="lm-tree-select__node-label">
530
+ {#if renderLabel}
531
+ {@render renderLabel({ node })}
532
+ {:else}
533
+ {nodeLabel}
534
+ {/if}
535
+ </span>
536
+
537
+ <!-- 选中标记(单选无复选框模式) -->
538
+ {#if selected && !showCheckbox && !multiple}
539
+ <span class="lm-tree-select__check-icon">
540
+ <Icon icon={Check} size={14} />
541
+ </span>
542
+ {/if}
543
+ </div>
544
+
545
+ <!-- 子节点 -->
546
+ {#if (hasChildren || loading) && expanded}
547
+ <div class="lm-tree-select__children" transition:slide={{ duration: expandCollapseDuration }}>
548
+ {#if children}
549
+ {#each children as child (getNodeValue(child))}
550
+ {@render treeNode(child, level + 1)}
551
+ {/each}
552
+ {/if}
553
+ </div>
554
+ {/if}
555
+ </div>
556
+ {/snippet}
557
+
558
+ <div bind:this={containerRef} class={classes} {...attrs}>
559
+ <!-- 触发器 -->
560
+ <div
561
+ class="lm-tree-select__trigger"
562
+ class:is-focus={visible}
563
+ onclick={toggle}
564
+ onkeydown={handleKeydown}
565
+ role="combobox"
566
+ tabindex={disabled ? -1 : 0}
567
+ aria-expanded={visible}
568
+ aria-controls="lm-tree-select-dropdown"
569
+ aria-haspopup="tree"
570
+ aria-disabled={disabled}
571
+ >
572
+ {#if multiple && selectedValues.length > 0}
573
+ <!-- 多选 Tags -->
574
+ <div class="lm-tree-select__tags">
575
+ {#if collapseTags}
576
+ {#each displayLabels.slice(0, maxCollapseTags) as label, i (selectedValues[i])}
577
+ <Tag size="small" closable onclose={() => handleRemoveTag(selectedValues[i])}>
578
+ {label}
579
+ </Tag>
580
+ {/each}
581
+ {#if selectedValues.length > maxCollapseTags}
582
+ <Tag size="small">+{selectedValues.length - maxCollapseTags}</Tag>
583
+ {/if}
584
+ {:else}
585
+ {#each displayLabels as label, i (selectedValues[i])}
586
+ <Tag size="small" closable onclose={() => handleRemoveTag(selectedValues[i])}>
587
+ {label}
588
+ </Tag>
589
+ {/each}
590
+ {/if}
591
+
592
+ {#if filterable}
593
+ <input
594
+ bind:this={inputRef}
595
+ class="lm-tree-select__filter-input"
596
+ type="text"
597
+ value={filterQuery}
598
+ oninput={handleFilterInput}
599
+ onclick={(e: MouseEvent) => e.stopPropagation()}
600
+ placeholder={selectedValues.length === 0 ? placeholder : ''}
601
+ />
602
+ {/if}
603
+ </div>
604
+ {:else}
605
+ <!-- 单选显示 -->
606
+ {#if filterable && visible}
607
+ <input
608
+ bind:this={inputRef}
609
+ class="lm-tree-select__input"
610
+ type="text"
611
+ value={filterQuery}
612
+ oninput={handleFilterInput}
613
+ {placeholder}
614
+ />
615
+ {:else}
616
+ <span class="lm-tree-select__value" class:is-placeholder={!displayValue}>
617
+ {displayValue || placeholder}
618
+ </span>
619
+ {/if}
620
+ {/if}
621
+
622
+ <!-- 清空/箭头 -->
623
+ <span class="lm-tree-select__suffix">
624
+ {#if clearable && selectedValues.length > 0 && !disabled}
625
+ <button type="button" class="lm-tree-select__clear" onclick={handleClear} aria-label="清除">
626
+ <Icon icon={X} size={14} />
627
+ </button>
628
+ {:else}
629
+ <span class="lm-tree-select__arrow" class:is-open={visible}>
630
+ <Icon icon={ChevronDown} size={14} />
631
+ </span>
632
+ {/if}
633
+ </span>
634
+ </div>
635
+
636
+ <!-- 下拉面板 -->
637
+ {#if visible}
638
+ <div class="lm-tree-select__dropdown" role="tree" id="lm-tree-select-dropdown" transition:dropdownTransition>
639
+ {#if showMenuArrow}
640
+ <div class="lm-tree-select__menu-arrow" aria-hidden="true"></div>
641
+ {/if}
642
+
643
+ <div class="lm-tree-select__dropdown-content">
644
+ {#if showNoData}
645
+ <div class="lm-tree-select__empty">{noDataText}</div>
646
+ {:else if showNoMatch}
647
+ <div class="lm-tree-select__empty">{noMatchText}</div>
648
+ {:else}
649
+ {#each filteredData as node (getNodeValue(node))}
650
+ {@render treeNode(node, 0)}
651
+ {/each}
652
+ {/if}
653
+ </div>
654
+ </div>
655
+ {/if}
656
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TreeSelectProps } from './types';
2
+ declare const TreeSelect: import("svelte").Component<TreeSelectProps, {}, "modelValue">;
3
+ type TreeSelect = ReturnType<typeof TreeSelect>;
4
+ export default TreeSelect;
@@ -0,0 +1,4 @@
1
+ import TreeSelect from './TreeSelect.svelte';
2
+ export default TreeSelect;
3
+ export { TreeSelect };
4
+ export type { TreeSelectNode, TreeSelectProps, TreeSelectPropsConfig, TreeSelectSize } from './types';
@@ -0,0 +1,3 @@
1
+ import TreeSelect from './TreeSelect.svelte';
2
+ export default TreeSelect;
3
+ export { TreeSelect };