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,40 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+
4
+ interface EmptyProps {
5
+ description?: string
6
+ image?: Snippet
7
+ children?: Snippet // description slot
8
+ actions?: Snippet
9
+ class?: string
10
+ }
11
+
12
+ let { description = '暂无数据', image, children, actions, class: cls = '', ...attrs }: EmptyProps = $props()
13
+
14
+ const classes = $derived(cls ? `lm-empty ${cls}` : 'lm-empty')
15
+ </script>
16
+
17
+ <div {...attrs} class={classes} aria-live="polite">
18
+ <div class="lm-empty__image" aria-hidden="true">
19
+ {#if image}
20
+ {@render image()}
21
+ {:else}
22
+ <svg viewBox="0 0 64 41" width="64" height="41" xmlns="http://www.w3.org/2000/svg" fill="none">
23
+ <g opacity=".8" stroke="#D3D4DA">
24
+ <path d="M63 30H1l8-10 10 6 12-16 8 10 7-6z" />
25
+ <circle cx="24" cy="7" r="2" />
26
+ </g>
27
+ </svg>
28
+ {/if}
29
+ </div>
30
+ <div class="lm-empty__description">
31
+ {#if children}
32
+ {@render children()}
33
+ {:else}
34
+ {description}
35
+ {/if}
36
+ </div>
37
+ {#if actions}
38
+ <div class="lm-empty__actions">{@render actions()}</div>
39
+ {/if}
40
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface EmptyProps {
3
+ description?: string;
4
+ image?: Snippet;
5
+ children?: Snippet;
6
+ actions?: Snippet;
7
+ class?: string;
8
+ }
9
+ declare const Empty: import("svelte").Component<EmptyProps, {}, "">;
10
+ type Empty = ReturnType<typeof Empty>;
11
+ export default Empty;
@@ -0,0 +1,4 @@
1
+ import Empty from './Empty.svelte';
2
+ export { Empty };
3
+ export type { EmptyProps } from './types';
4
+ export default Empty;
@@ -0,0 +1,3 @@
1
+ import Empty from './Empty.svelte';
2
+ export { Empty };
3
+ export default Empty;
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ /** Empty 属性 */
3
+ export interface EmptyProps {
4
+ /** 描述文字 */
5
+ description?: string;
6
+ /** 自定义图片 */
7
+ image?: Snippet;
8
+ /** 子内容(描述插槽) */
9
+ children?: Snippet;
10
+ /** 操作区域 */
11
+ actions?: Snippet;
12
+ /** 自定义类名 */
13
+ class?: string;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,88 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import type { FormProps } from './types'
4
+ import { setContext } from 'svelte'
5
+ import { FORM_CONTEXT_KEY } from './FormContext'
6
+ import { createFormController } from './FormInternals'
7
+
8
+ interface Props extends FormProps {
9
+ children?: Snippet
10
+ }
11
+
12
+ let {
13
+ model = $bindable({}),
14
+ rules = {},
15
+ inline = false,
16
+ labelWidth = '80px',
17
+ size = 'medium',
18
+ disabled = false,
19
+ class: cls = '',
20
+ onsubmit: onSubmit,
21
+ children,
22
+ ...attrs
23
+ }: Props = $props()
24
+
25
+ let formRef = $state<HTMLFormElement | null>(null)
26
+
27
+ const dispatch = (name: string, detail?: any): void => {
28
+ formRef?.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable: true }))
29
+ }
30
+
31
+ const {
32
+ context: formContext,
33
+ validate,
34
+ validateField,
35
+ clearValidation,
36
+ resetFields,
37
+ scrollToField,
38
+ } = createFormController({
39
+ get model() {
40
+ return model
41
+ },
42
+ get rules() {
43
+ return rules
44
+ },
45
+ get labelWidth() {
46
+ return labelWidth
47
+ },
48
+ get size() {
49
+ return size
50
+ },
51
+ get disabled() {
52
+ return disabled
53
+ },
54
+ get inline() {
55
+ return inline
56
+ },
57
+ dispatch,
58
+ })
59
+
60
+ setContext(FORM_CONTEXT_KEY, formContext)
61
+
62
+ const classes = $derived(`lm-form lm-form--${size}${inline ? ' lm-form--inline' : ''}${disabled ? ' is-disabled' : ''}${cls ? ` ${cls}` : ''}`)
63
+
64
+ const clearValidate = (props?: string[]) => clearValidation(props)
65
+
66
+ export { validate, validateField, clearValidation, clearValidate, resetFields, scrollToField }
67
+
68
+ const VALIDATED_SUBMIT_FLAG = '__lm_form_validated_submit__'
69
+
70
+ const handleSubmit = async (event: SubmitEvent): Promise<void> => {
71
+ if (event instanceof CustomEvent && (event as any)?.detail?.[VALIDATED_SUBMIT_FLAG]) {
72
+ return
73
+ }
74
+
75
+ event.preventDefault()
76
+
77
+ const isValid = await validate()
78
+ const detail = { [VALIDATED_SUBMIT_FLAG]: true, valid: isValid, model, event }
79
+ onSubmit?.(new CustomEvent('submit', { detail, cancelable: true }))
80
+ dispatch('submit', detail)
81
+ }
82
+ </script>
83
+
84
+ <form bind:this={formRef} class={classes} onsubmit={handleSubmit} {...attrs}>
85
+ {#if children}
86
+ {@render children()}
87
+ {/if}
88
+ </form>
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { FormProps } from './types';
3
+ interface Props extends FormProps {
4
+ children?: Snippet;
5
+ }
6
+ declare const Form: import("svelte").Component<Props, {
7
+ validate: (props?: string[]) => Promise<boolean>;
8
+ validateField: (props: string | string[]) => Promise<boolean>;
9
+ clearValidation: (props?: string[]) => void;
10
+ clearValidate: (props?: string[]) => void;
11
+ resetFields: (props?: string[]) => void;
12
+ scrollToField: (prop: string) => void;
13
+ }, "model">;
14
+ type Form = ReturnType<typeof Form>;
15
+ export default Form;
@@ -0,0 +1,19 @@
1
+ import type { FormItemRule, FormValidateTrigger } from './types';
2
+ export interface FormRegisterItem {
3
+ prop: string;
4
+ el?: HTMLElement | null;
5
+ validate: (trigger?: FormValidateTrigger) => Promise<boolean>;
6
+ clearValidation: () => void;
7
+ resetField: () => void;
8
+ }
9
+ export interface FormContext {
10
+ model: Record<string, any>;
11
+ rules: Record<string, FormItemRule[]>;
12
+ labelWidth?: string;
13
+ size?: 'small' | 'medium' | 'large';
14
+ disabled?: boolean;
15
+ inline?: boolean;
16
+ register: (item: FormRegisterItem) => void;
17
+ unregister: (prop: string) => void;
18
+ }
19
+ export declare const FORM_CONTEXT_KEY: unique symbol;
@@ -0,0 +1 @@
1
+ export const FORM_CONTEXT_KEY = Symbol('form-context');
@@ -0,0 +1,40 @@
1
+ import type { FormContext } from './FormContext';
2
+ import type { FormItemRule, FormItemValidateResult } from './types';
3
+ export interface RunValidateOptions {
4
+ value: any;
5
+ rules: FormItemRule[];
6
+ trigger?: 'input' | 'change' | 'blur' | 'submit';
7
+ setState: (s: {
8
+ message?: string;
9
+ type?: 'error' | 'success' | 'warning';
10
+ } | null) => void;
11
+ setValidating: (v: boolean) => void;
12
+ }
13
+ export interface CreateFormControllerOptions {
14
+ model: Record<string, any>;
15
+ rules: Record<string, FormItemRule[]>;
16
+ labelWidth?: string;
17
+ size?: 'small' | 'medium' | 'large';
18
+ disabled?: boolean;
19
+ inline?: boolean;
20
+ dispatch: (name: string, detail?: any) => void;
21
+ }
22
+ export declare const runValidate: ({ value, rules, trigger, setState, setValidating }: RunValidateOptions) => Promise<FormItemValidateResult>;
23
+ export declare const createFormController: (opts: CreateFormControllerOptions) => {
24
+ context: FormContext;
25
+ validate: (props?: string[]) => Promise<boolean>;
26
+ validateField: (props: string | string[]) => Promise<boolean>;
27
+ clearValidation: (props?: string[]) => void;
28
+ resetFields: (props?: string[]) => void;
29
+ scrollToField: (prop: string) => void;
30
+ };
31
+ interface MergeRulesParams {
32
+ required: boolean;
33
+ label?: string;
34
+ prop: string;
35
+ itemRules?: FormItemRule[];
36
+ formRules?: FormItemRule[];
37
+ }
38
+ export declare const mergeFormItemRules: ({ required, label, prop, itemRules, formRules }: MergeRulesParams) => FormItemRule[];
39
+ export declare const shouldTriggerChange: (rules: FormItemRule[]) => boolean;
40
+ export {};
@@ -0,0 +1,152 @@
1
+ import Schema from 'async-validator';
2
+ // 验证逻辑
3
+ export const runValidate = async ({ value, rules, trigger, setState, setValidating }) => {
4
+ if (!rules?.length) {
5
+ setState(null);
6
+ return { valid: true };
7
+ }
8
+ setValidating(true);
9
+ try {
10
+ const shouldFilterByTrigger = !!trigger && trigger !== 'submit';
11
+ const filteredRules = rules
12
+ .filter(Boolean)
13
+ .filter((r) => {
14
+ if (!shouldFilterByTrigger)
15
+ return true;
16
+ // ElementPlus 行为:未配置 trigger 时默认按 change 触发
17
+ if (!r.trigger)
18
+ return trigger === 'change';
19
+ return Array.isArray(r.trigger) ? r.trigger.includes(trigger) : r.trigger === trigger;
20
+ })
21
+ .map((r) => {
22
+ const mapped = { ...r };
23
+ if (mapped.pattern && typeof mapped.pattern === 'string') {
24
+ mapped.pattern = new RegExp(mapped.pattern);
25
+ }
26
+ // 将简化版 validator 适配为 async-validator 的签名
27
+ if (typeof mapped.validator === 'function' && typeof mapped.asyncValidator !== 'function') {
28
+ const userValidator = mapped.validator;
29
+ mapped.validator = async (_rule, v, callback) => {
30
+ try {
31
+ const res = userValidator(v);
32
+ const result = typeof res === 'boolean' || typeof res === 'string' ? res : await res;
33
+ if (result === true)
34
+ return callback();
35
+ if (typeof result === 'string')
36
+ return callback(new Error(result));
37
+ return callback(new Error(mapped.message || '格式不正确'));
38
+ }
39
+ catch {
40
+ return callback(new Error(mapped.message || '验证失败'));
41
+ }
42
+ };
43
+ }
44
+ // async-validator 不认识 trigger:只用于触发过滤
45
+ delete mapped.trigger;
46
+ // UI 字段不参与校验
47
+ delete mapped.messageType;
48
+ return mapped;
49
+ });
50
+ if (!filteredRules.length) {
51
+ setState(null);
52
+ return { valid: true };
53
+ }
54
+ const schema = new Schema({ __value__: filteredRules });
55
+ try {
56
+ await schema.validate({ __value__: value }, { first: true });
57
+ setState(null);
58
+ return { valid: true };
59
+ }
60
+ catch (err) {
61
+ const first = Array.isArray(err?.errors) ? err.errors[0] : undefined;
62
+ const msg = first?.message || '校验未通过';
63
+ const type = 'error';
64
+ setState({ message: msg, type });
65
+ return { valid: false, message: msg, type };
66
+ }
67
+ }
68
+ finally {
69
+ setValidating(false);
70
+ }
71
+ };
72
+ // 表单控制器
73
+ export const createFormController = (opts) => {
74
+ const itemMap = new Map();
75
+ const register = (item) => {
76
+ if (!item.prop)
77
+ return;
78
+ itemMap.set(item.prop, item);
79
+ };
80
+ const unregister = (prop) => {
81
+ if (!prop)
82
+ return;
83
+ itemMap.delete(prop);
84
+ };
85
+ const resolveTargets = (props) => {
86
+ if (!props || !props.length)
87
+ return [...itemMap.values()];
88
+ const set = new Set(props);
89
+ return [...itemMap.values()].filter((i) => set.has(i.prop));
90
+ };
91
+ const validate = async (props) => {
92
+ const targets = resolveTargets(props);
93
+ try {
94
+ const results = await Promise.all(targets.map((i) => i.validate('submit')));
95
+ const valid = results.every(Boolean);
96
+ opts.dispatch('validate', { valid, model: opts.model });
97
+ return valid;
98
+ }
99
+ catch (error) {
100
+ opts.dispatch('validate', { valid: false, model: opts.model, error });
101
+ return false;
102
+ }
103
+ };
104
+ const validateField = async (props) => {
105
+ const list = Array.isArray(props) ? props : [props];
106
+ return validate(list);
107
+ };
108
+ const clearValidation = (props) => {
109
+ const targets = resolveTargets(props);
110
+ targets.forEach((i) => i.clearValidation());
111
+ opts.dispatch('clear-validation', { props: props || targets.map((i) => i.prop) });
112
+ };
113
+ const resetFields = (props) => {
114
+ const targets = resolveTargets(props);
115
+ targets.forEach((i) => i.resetField());
116
+ opts.dispatch('reset', { props: props || targets.map((i) => i.prop) });
117
+ };
118
+ const context = {
119
+ model: opts.model,
120
+ rules: opts.rules,
121
+ labelWidth: opts.labelWidth,
122
+ size: opts.size,
123
+ disabled: opts.disabled,
124
+ inline: opts.inline,
125
+ register,
126
+ unregister,
127
+ };
128
+ const scrollToField = (prop) => {
129
+ const item = itemMap.get(prop);
130
+ const el = item?.el;
131
+ if (!el)
132
+ return;
133
+ el.scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'smooth' });
134
+ };
135
+ return { context, validate, validateField, clearValidation, resetFields, scrollToField };
136
+ };
137
+ export const mergeFormItemRules = ({ required, label, prop, itemRules = [], formRules = [] }) => {
138
+ const requiredRule = required
139
+ ? [
140
+ {
141
+ required: true,
142
+ message: `${label || prop}是必填项`,
143
+ },
144
+ ]
145
+ : [];
146
+ return [...requiredRule, ...itemRules, ...formRules];
147
+ };
148
+ export const shouldTriggerChange = (rules) => rules.some((r) => {
149
+ if (!r.trigger)
150
+ return true;
151
+ return Array.isArray(r.trigger) ? r.trigger.includes('change') : r.trigger === 'change';
152
+ });
@@ -0,0 +1,191 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import type { FormItemProps, FormItemRule } from './types'
4
+ import { getContext, onDestroy } from 'svelte'
5
+ import { FORM_CONTEXT_KEY } from './FormContext'
6
+ import type { FormContext } from './FormContext'
7
+ import { runValidate, mergeFormItemRules, shouldTriggerChange } from './FormInternals'
8
+
9
+ interface Props extends FormItemProps {
10
+ children?: Snippet
11
+ }
12
+
13
+ let { prop, label = '', rules = [], showMessage = true, inlineMessage = false, size = undefined, required = false, class: cls = '', children, ...attrs }: Props = $props()
14
+
15
+ const form = getContext<FormContext>(FORM_CONTEXT_KEY)
16
+
17
+ let message = $state<string | undefined>(undefined)
18
+ let messageType = $state<'error' | 'success' | 'warning' | undefined>(undefined)
19
+ let validating = $state(false)
20
+ const currentProp = $derived(prop)
21
+ let originalValue = $state<any>(undefined)
22
+ let rootEl = $state<HTMLElement | null>(null)
23
+
24
+ const getByPath = (obj: any, path: string): any => {
25
+ if (!obj || !path) return undefined
26
+ const parts = path.split('.').filter(Boolean)
27
+ let cur = obj
28
+ for (const key of parts) {
29
+ if (cur == null) return undefined
30
+ cur = cur[key]
31
+ }
32
+ return cur
33
+ }
34
+
35
+ const setByPath = (obj: any, path: string, next: any): void => {
36
+ if (!obj || !path) return
37
+ const parts = path.split('.').filter(Boolean)
38
+ if (!parts.length) return
39
+ let cur = obj
40
+ for (let i = 0; i < parts.length - 1; i++) {
41
+ const key = parts[i]
42
+ const val = cur[key]
43
+ if (val == null || typeof val !== 'object') {
44
+ cur[key] = {}
45
+ }
46
+ cur = cur[key]
47
+ }
48
+ cur[parts[parts.length - 1]] = next
49
+ }
50
+
51
+ $effect(() => {
52
+ const v = getByPath(form?.model, currentProp)
53
+ if (originalValue === undefined && v !== undefined) {
54
+ originalValue = v
55
+ }
56
+ })
57
+
58
+ const effectiveSize = $derived(size || form?.size || 'medium')
59
+ const currentValue = $derived(getByPath(form?.model, currentProp))
60
+
61
+ let allRules: FormItemRule[] = $state([])
62
+ $effect(() => {
63
+ allRules = mergeFormItemRules({
64
+ required,
65
+ label,
66
+ prop: currentProp,
67
+ itemRules: Array.isArray(rules) ? rules : [],
68
+ formRules: Array.isArray(getByPath(form?.rules, currentProp)) ? getByPath(form?.rules, currentProp) : [],
69
+ })
70
+ })
71
+
72
+ const validate = async (trigger?: string): Promise<boolean> => {
73
+ if (!currentProp || !form) return true
74
+
75
+ try {
76
+ validating = true
77
+ const result = await runValidate({
78
+ value: currentValue,
79
+ rules: allRules,
80
+ trigger: trigger as any,
81
+ setState: (res) => {
82
+ if (!res) {
83
+ message = undefined
84
+ messageType = undefined
85
+ } else {
86
+ message = res.message
87
+ messageType = res.type
88
+ }
89
+ },
90
+ setValidating: (v) => {
91
+ validating = v
92
+ },
93
+ })
94
+
95
+ return result.valid
96
+ } catch (error) {
97
+ console.error(`Validation error for ${currentProp}:`, error)
98
+ message = '验证出错'
99
+ messageType = 'error'
100
+ return false
101
+ } finally {
102
+ validating = false
103
+ }
104
+ }
105
+
106
+ const clearValidation = (): void => {
107
+ message = undefined
108
+ messageType = undefined
109
+ validating = false
110
+ }
111
+
112
+ const resetField = (): void => {
113
+ if (form?.model && currentProp) setByPath(form.model, currentProp, originalValue)
114
+ clearValidation()
115
+ }
116
+
117
+ const formItemHandler = {
118
+ get prop() {
119
+ return currentProp
120
+ },
121
+ get el() {
122
+ return rootEl
123
+ },
124
+ validate,
125
+ clearValidation,
126
+ resetField,
127
+ }
128
+
129
+ $effect(() => {
130
+ if (form?.register && currentProp) {
131
+ form.register(formItemHandler)
132
+ }
133
+ })
134
+
135
+ onDestroy(() => {
136
+ if (form?.unregister && currentProp) {
137
+ form.unregister(currentProp)
138
+ }
139
+ })
140
+
141
+ const classes = $derived(
142
+ `lm-form-item lm-form-item--${effectiveSize}${messageType ? ` is-${messageType}` : ''}${validating ? ' is-validating' : ''}${inlineMessage ? ' is-inline-message' : ''}${form?.disabled ? ' is-disabled' : ''}${cls ? ` ${cls}` : ''}`
143
+ )
144
+
145
+ const labelStyle = $derived(form?.labelWidth ? `width: ${form.labelWidth}` : undefined)
146
+
147
+ const handleInputCapture = () => {
148
+ validate('input')
149
+ }
150
+
151
+ const handleChangeCapture = () => {
152
+ if (shouldTriggerChange(allRules)) validate('change')
153
+ }
154
+
155
+ const handleBlurCapture = () => {
156
+ validate('blur')
157
+ }
158
+ </script>
159
+
160
+ <div
161
+ class={classes}
162
+ bind:this={rootEl}
163
+ oninputcapture={handleInputCapture}
164
+ onchangecapture={handleChangeCapture}
165
+ onfocusoutcapture={handleBlurCapture}
166
+ {...attrs}
167
+ >
168
+ {#if label}
169
+ <div class="lm-form-item__label" style={labelStyle}>
170
+ {label}
171
+ </div>
172
+ {/if}
173
+
174
+ <div class="lm-form-item__content">
175
+ {#if children}
176
+ {@render children()}
177
+ {/if}
178
+
179
+ {#if showMessage && (message || validating)}
180
+ <div
181
+ class="lm-form-item__message"
182
+ class:is-inline={inlineMessage}
183
+ class:is-error={messageType === 'error'}
184
+ class:is-success={messageType === 'success'}
185
+ class:is-warning={messageType === 'warning'}
186
+ >
187
+ {validating ? '校验中...' : message}
188
+ </div>
189
+ {/if}
190
+ </div>
191
+ </div>
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { FormItemProps } from './types';
3
+ interface Props extends FormItemProps {
4
+ children?: Snippet;
5
+ }
6
+ declare const FormItem: import("svelte").Component<Props, {}, "">;
7
+ type FormItem = ReturnType<typeof FormItem>;
8
+ export default FormItem;
@@ -0,0 +1,3 @@
1
+ export { default as Form } from './Form.svelte';
2
+ export { default as FormItem } from './FormItem.svelte';
3
+ export type * from './types';
@@ -0,0 +1,2 @@
1
+ export { default as Form } from './Form.svelte';
2
+ export { default as FormItem } from './FormItem.svelte';
@@ -0,0 +1,61 @@
1
+ import type { HTMLFormAttributes } from 'svelte/elements';
2
+ export type FormSize = 'small' | 'medium' | 'large';
3
+ export type FormValidateTrigger = 'input' | 'change' | 'blur' | 'submit';
4
+ export type FormValidateMessageType = 'error' | 'success' | 'warning';
5
+ export interface FormItemValidateResult {
6
+ valid: boolean;
7
+ message?: string;
8
+ type?: FormValidateMessageType;
9
+ }
10
+ export interface FormItemRule {
11
+ required?: boolean;
12
+ message?: string;
13
+ /** 校验提示消息的类型(用于 UI 呈现) */
14
+ messageType?: FormValidateMessageType;
15
+ trigger?: FormValidateTrigger | FormValidateTrigger[];
16
+ /** async-validator 的 type(常见:string/number/boolean/array/object/email/url/date 等) */
17
+ type?: string;
18
+ /** 是否将仅包含空白字符视为无效(常用于 required 场景) */
19
+ whitespace?: boolean;
20
+ /** 枚举值 */
21
+ enum?: any[];
22
+ /** 字符串长度下限 */
23
+ min?: number;
24
+ /** 字符串长度上限 */
25
+ max?: number;
26
+ /** 字符串长度必须等于 */
27
+ len?: number;
28
+ /** 正则校验 */
29
+ pattern?: RegExp | string;
30
+ /** 值变换(用于校验前预处理) */
31
+ transform?: (value: any) => any;
32
+ /** 自定义校验(简化版:返回 true/false 或错误消息字符串,支持 Promise) */
33
+ validator?: (value: any) => boolean | string | Promise<boolean | string>;
34
+ /** 高级自定义校验(async-validator 原生签名) */
35
+ asyncValidator?: (...args: any[]) => void | Promise<void>;
36
+ }
37
+ export interface FormProps extends Omit<HTMLFormAttributes, 'size' | 'class' | 'children' | 'onsubmit'> {
38
+ model?: Record<string, any>;
39
+ rules?: Record<string, FormItemRule[]>;
40
+ inline?: boolean;
41
+ labelWidth?: string;
42
+ size?: FormSize;
43
+ disabled?: boolean;
44
+ class?: string;
45
+ /** 校验完成后的提交回调(Enter/原生 submit/点击 submit 均会走这里) */
46
+ onsubmit?: (event: CustomEvent<{
47
+ valid: boolean;
48
+ model: Record<string, any>;
49
+ event: SubmitEvent;
50
+ } & Record<string, any>>) => void;
51
+ }
52
+ export interface FormItemProps {
53
+ prop: string;
54
+ label?: string;
55
+ rules?: FormItemRule[];
56
+ showMessage?: boolean;
57
+ inlineMessage?: boolean;
58
+ size?: FormSize;
59
+ required?: boolean;
60
+ class?: string;
61
+ }
@@ -0,0 +1 @@
1
+ export {};