@chenzy-design/svelte 0.3.0 → 0.4.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 (1299) hide show
  1. package/dist/_floating/use-floating.d.ts +6 -0
  2. package/dist/_floating/use-floating.d.ts.map +1 -1
  3. package/dist/_floating/use-floating.js +38 -0
  4. package/dist/ai-chat-dialogue/AIChatDialogue.svelte +243 -0
  5. package/dist/ai-chat-dialogue/AIChatDialogue.svelte.d.ts +60 -0
  6. package/dist/ai-chat-dialogue/AIChatDialogue.svelte.d.ts.map +1 -0
  7. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte +318 -0
  8. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte.d.ts +18 -0
  9. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte.d.ts.map +1 -0
  10. package/dist/ai-chat-dialogue/DialogueBox.svelte +403 -0
  11. package/dist/ai-chat-dialogue/DialogueBox.svelte.d.ts +50 -0
  12. package/dist/ai-chat-dialogue/DialogueBox.svelte.d.ts.map +1 -0
  13. package/dist/ai-chat-dialogue/index.d.ts +8 -0
  14. package/dist/ai-chat-dialogue/index.d.ts.map +1 -0
  15. package/dist/ai-chat-dialogue/index.js +6 -0
  16. package/dist/ai-chat-dialogue/meta.d.ts +174 -0
  17. package/dist/ai-chat-dialogue/meta.d.ts.map +1 -0
  18. package/dist/ai-chat-dialogue/meta.js +66 -0
  19. package/dist/ai-chat-dialogue/render-config.d.ts +57 -0
  20. package/dist/ai-chat-dialogue/render-config.d.ts.map +1 -0
  21. package/dist/ai-chat-input/AIChatInput.svelte +1196 -0
  22. package/dist/ai-chat-input/AIChatInput.svelte.d.ts +146 -0
  23. package/dist/ai-chat-input/AIChatInput.svelte.d.ts.map +1 -0
  24. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte +94 -0
  25. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte.d.ts +17 -0
  26. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte.d.ts.map +1 -0
  27. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte +40 -0
  28. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte.d.ts +16 -0
  29. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte.d.ts.map +1 -0
  30. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte +94 -0
  31. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte.d.ts +18 -0
  32. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte.d.ts.map +1 -0
  33. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte +52 -0
  34. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte.d.ts +17 -0
  35. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte.d.ts.map +1 -0
  36. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte +50 -0
  37. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte.d.ts +16 -0
  38. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte.d.ts.map +1 -0
  39. package/dist/ai-chat-input/InputSlotNode.svelte +50 -0
  40. package/dist/ai-chat-input/InputSlotNode.svelte.d.ts +5 -0
  41. package/dist/ai-chat-input/InputSlotNode.svelte.d.ts.map +1 -0
  42. package/dist/ai-chat-input/SelectSlotNode.svelte +54 -0
  43. package/dist/ai-chat-input/SelectSlotNode.svelte.d.ts +5 -0
  44. package/dist/ai-chat-input/SelectSlotNode.svelte.d.ts.map +1 -0
  45. package/dist/ai-chat-input/SkillSlotNode.svelte +82 -0
  46. package/dist/ai-chat-input/SkillSlotNode.svelte.d.ts +5 -0
  47. package/dist/ai-chat-input/SkillSlotNode.svelte.d.ts.map +1 -0
  48. package/dist/ai-chat-input/configure-context.d.ts +12 -0
  49. package/dist/ai-chat-input/configure-context.d.ts.map +1 -0
  50. package/dist/ai-chat-input/configure-context.js +14 -0
  51. package/dist/ai-chat-input/index.d.ts +9 -0
  52. package/dist/ai-chat-input/index.d.ts.map +1 -0
  53. package/dist/ai-chat-input/index.js +9 -0
  54. package/dist/ai-chat-input/input-slot-extension.d.ts +18 -0
  55. package/dist/ai-chat-input/input-slot-extension.d.ts.map +1 -0
  56. package/dist/ai-chat-input/input-slot-extension.js +55 -0
  57. package/dist/ai-chat-input/input-slot-plugins.d.ts +34 -0
  58. package/dist/ai-chat-input/input-slot-plugins.d.ts.map +1 -0
  59. package/dist/ai-chat-input/input-slot-plugins.js +478 -0
  60. package/dist/ai-chat-input/meta.d.ts +284 -0
  61. package/dist/ai-chat-input/meta.d.ts.map +1 -0
  62. package/dist/ai-chat-input/meta.js +106 -0
  63. package/dist/ai-chat-input/select-slot-extension.d.ts +16 -0
  64. package/dist/ai-chat-input/select-slot-extension.d.ts.map +1 -0
  65. package/dist/ai-chat-input/select-slot-extension.js +35 -0
  66. package/dist/ai-chat-input/skill-slot-extension.d.ts +22 -0
  67. package/dist/ai-chat-input/skill-slot-extension.d.ts.map +1 -0
  68. package/dist/ai-chat-input/skill-slot-extension.js +46 -0
  69. package/dist/anchor/Anchor.svelte +393 -242
  70. package/dist/anchor/Anchor.svelte.d.ts +40 -17
  71. package/dist/anchor/Anchor.svelte.d.ts.map +1 -1
  72. package/dist/anchor/AnchorLink.svelte +226 -0
  73. package/dist/anchor/AnchorLink.svelte.d.ts +19 -0
  74. package/dist/anchor/AnchorLink.svelte.d.ts.map +1 -0
  75. package/dist/anchor/context.d.ts +43 -0
  76. package/dist/anchor/context.d.ts.map +1 -0
  77. package/dist/anchor/context.js +26 -0
  78. package/dist/anchor/index.d.ts +11 -2
  79. package/dist/anchor/index.d.ts.map +1 -1
  80. package/dist/anchor/index.js +10 -1
  81. package/dist/anchor/meta.d.ts +92 -43
  82. package/dist/anchor/meta.d.ts.map +1 -1
  83. package/dist/anchor/meta.js +124 -38
  84. package/dist/anchor/types.d.ts +32 -5
  85. package/dist/anchor/types.d.ts.map +1 -1
  86. package/dist/audio-player/AudioPlayer.svelte +614 -0
  87. package/dist/audio-player/AudioPlayer.svelte.d.ts +21 -0
  88. package/dist/audio-player/AudioPlayer.svelte.d.ts.map +1 -0
  89. package/dist/audio-player/AudioSlider.svelte +162 -0
  90. package/dist/audio-player/AudioSlider.svelte.d.ts +20 -0
  91. package/dist/audio-player/AudioSlider.svelte.d.ts.map +1 -0
  92. package/dist/audio-player/index.d.ts +3 -0
  93. package/dist/audio-player/index.d.ts.map +1 -0
  94. package/dist/audio-player/index.js +2 -0
  95. package/dist/audio-player/meta.d.ts +74 -0
  96. package/dist/audio-player/meta.d.ts.map +1 -0
  97. package/dist/audio-player/meta.js +96 -0
  98. package/dist/autocomplete/AutoComplete.svelte +307 -411
  99. package/dist/autocomplete/AutoComplete.svelte.d.ts +52 -47
  100. package/dist/autocomplete/AutoComplete.svelte.d.ts.map +1 -1
  101. package/dist/autocomplete/meta.d.ts +150 -34
  102. package/dist/autocomplete/meta.d.ts.map +1 -1
  103. package/dist/autocomplete/meta.js +43 -21
  104. package/dist/avatar/Avatar.svelte +784 -211
  105. package/dist/avatar/Avatar.svelte.d.ts +28 -23
  106. package/dist/avatar/Avatar.svelte.d.ts.map +1 -1
  107. package/dist/avatar/AvatarGroup.svelte +151 -70
  108. package/dist/avatar/AvatarGroup.svelte.d.ts +16 -17
  109. package/dist/avatar/AvatarGroup.svelte.d.ts.map +1 -1
  110. package/dist/avatar/TopSlotSvg.svelte +62 -0
  111. package/dist/avatar/TopSlotSvg.svelte.d.ts +8 -0
  112. package/dist/avatar/TopSlotSvg.svelte.d.ts.map +1 -0
  113. package/dist/avatar/context.d.ts +28 -1
  114. package/dist/avatar/context.d.ts.map +1 -1
  115. package/dist/avatar/index.d.ts +2 -1
  116. package/dist/avatar/index.d.ts.map +1 -1
  117. package/dist/avatar/meta.d.ts +124 -36
  118. package/dist/avatar/meta.d.ts.map +1 -1
  119. package/dist/avatar/meta.js +117 -24
  120. package/dist/back-top/BackTop.svelte +81 -231
  121. package/dist/back-top/BackTop.svelte.d.ts +10 -33
  122. package/dist/back-top/BackTop.svelte.d.ts.map +1 -1
  123. package/dist/back-top/meta.d.ts +23 -72
  124. package/dist/back-top/meta.d.ts.map +1 -1
  125. package/dist/back-top/meta.js +19 -79
  126. package/dist/badge/Badge.svelte +187 -249
  127. package/dist/badge/Badge.svelte.d.ts +23 -14
  128. package/dist/badge/Badge.svelte.d.ts.map +1 -1
  129. package/dist/badge/meta.d.ts +52 -44
  130. package/dist/badge/meta.d.ts.map +1 -1
  131. package/dist/badge/meta.js +35 -33
  132. package/dist/banner/Banner.svelte +189 -274
  133. package/dist/banner/Banner.svelte.d.ts +20 -23
  134. package/dist/banner/Banner.svelte.d.ts.map +1 -1
  135. package/dist/banner/index.d.ts +2 -1
  136. package/dist/banner/index.d.ts.map +1 -1
  137. package/dist/banner/meta.d.ts +41 -87
  138. package/dist/banner/meta.d.ts.map +1 -1
  139. package/dist/banner/meta.js +59 -79
  140. package/dist/breadcrumb/Breadcrumb.svelte +240 -118
  141. package/dist/breadcrumb/Breadcrumb.svelte.d.ts +35 -19
  142. package/dist/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  143. package/dist/breadcrumb/Item.svelte +5 -5
  144. package/dist/breadcrumb/meta.d.ts +26 -19
  145. package/dist/breadcrumb/meta.d.ts.map +1 -1
  146. package/dist/breadcrumb/meta.js +51 -16
  147. package/dist/breadcrumb/types.d.ts +11 -1
  148. package/dist/breadcrumb/types.d.ts.map +1 -1
  149. package/dist/button/BaseButton.svelte +479 -0
  150. package/dist/button/BaseButton.svelte.d.ts +29 -0
  151. package/dist/button/BaseButton.svelte.d.ts.map +1 -0
  152. package/dist/button/Button.svelte +166 -296
  153. package/dist/button/Button.svelte.d.ts +12 -7
  154. package/dist/button/Button.svelte.d.ts.map +1 -1
  155. package/dist/button/ButtonGroup.svelte +66 -20
  156. package/dist/button/ButtonGroup.svelte.d.ts.map +1 -1
  157. package/dist/button/SplitButtonGroup.svelte +64 -101
  158. package/dist/button/SplitButtonGroup.svelte.d.ts +1 -21
  159. package/dist/button/SplitButtonGroup.svelte.d.ts.map +1 -1
  160. package/dist/button/meta.d.ts +28 -68
  161. package/dist/button/meta.d.ts.map +1 -1
  162. package/dist/button/meta.js +33 -24
  163. package/dist/calendar/Calendar.svelte +928 -1172
  164. package/dist/calendar/Calendar.svelte.d.ts +34 -104
  165. package/dist/calendar/Calendar.svelte.d.ts.map +1 -1
  166. package/dist/calendar/meta.d.ts +78 -168
  167. package/dist/calendar/meta.d.ts.map +1 -1
  168. package/dist/calendar/meta.js +123 -78
  169. package/dist/card/Card.svelte +171 -233
  170. package/dist/card/Card.svelte.d.ts +30 -24
  171. package/dist/card/Card.svelte.d.ts.map +1 -1
  172. package/dist/card/CardGroup.svelte +74 -0
  173. package/dist/card/CardGroup.svelte.d.ts +20 -0
  174. package/dist/card/CardGroup.svelte.d.ts.map +1 -0
  175. package/dist/card/CardMeta.svelte +38 -28
  176. package/dist/card/CardMeta.svelte.d.ts +5 -0
  177. package/dist/card/CardMeta.svelte.d.ts.map +1 -1
  178. package/dist/card/index.d.ts +3 -1
  179. package/dist/card/index.d.ts.map +1 -1
  180. package/dist/card/index.js +7 -2
  181. package/dist/card/meta.d.ts +177 -75
  182. package/dist/card/meta.d.ts.map +1 -1
  183. package/dist/card/meta.js +102 -45
  184. package/dist/carousel/Carousel.svelte +569 -569
  185. package/dist/carousel/Carousel.svelte.d.ts +37 -29
  186. package/dist/carousel/Carousel.svelte.d.ts.map +1 -1
  187. package/dist/carousel/meta.d.ts +73 -65
  188. package/dist/carousel/meta.d.ts.map +1 -1
  189. package/dist/carousel/meta.js +85 -43
  190. package/dist/cascader/Cascader.svelte +725 -391
  191. package/dist/cascader/Cascader.svelte.d.ts +48 -24
  192. package/dist/cascader/Cascader.svelte.d.ts.map +1 -1
  193. package/dist/cascader/meta.d.ts +281 -32
  194. package/dist/cascader/meta.d.ts.map +1 -1
  195. package/dist/cascader/meta.js +85 -12
  196. package/dist/chat/Chat.svelte +483 -0
  197. package/dist/chat/Chat.svelte.d.ts +76 -0
  198. package/dist/chat/Chat.svelte.d.ts.map +1 -0
  199. package/dist/chat/ChatBox.svelte +207 -0
  200. package/dist/chat/ChatBox.svelte.d.ts +26 -0
  201. package/dist/chat/ChatBox.svelte.d.ts.map +1 -0
  202. package/dist/chat/ChatBoxAction.svelte +190 -0
  203. package/dist/chat/ChatBoxAction.svelte.d.ts +18 -0
  204. package/dist/chat/ChatBoxAction.svelte.d.ts.map +1 -0
  205. package/dist/chat/ChatBoxAvatar.svelte +40 -0
  206. package/dist/chat/ChatBoxAvatar.svelte.d.ts +13 -0
  207. package/dist/chat/ChatBoxAvatar.svelte.d.ts.map +1 -0
  208. package/dist/chat/ChatBoxContent.svelte +238 -0
  209. package/dist/chat/ChatBoxContent.svelte.d.ts +17 -0
  210. package/dist/chat/ChatBoxContent.svelte.d.ts.map +1 -0
  211. package/dist/chat/ChatBoxTitle.svelte +40 -0
  212. package/dist/chat/ChatBoxTitle.svelte.d.ts +13 -0
  213. package/dist/chat/ChatBoxTitle.svelte.d.ts.map +1 -0
  214. package/dist/chat/ChatCode.svelte +139 -0
  215. package/dist/chat/ChatCode.svelte.d.ts +9 -0
  216. package/dist/chat/ChatCode.svelte.d.ts.map +1 -0
  217. package/dist/chat/Hint.svelte +82 -0
  218. package/dist/chat/Hint.svelte.d.ts +13 -0
  219. package/dist/chat/Hint.svelte.d.ts.map +1 -0
  220. package/dist/chat/InputBox.svelte +365 -0
  221. package/dist/chat/InputBox.svelte.d.ts +30 -0
  222. package/dist/chat/InputBox.svelte.d.ts.map +1 -0
  223. package/dist/chat/index.d.ts +7 -0
  224. package/dist/chat/index.d.ts.map +1 -0
  225. package/dist/chat/index.js +5 -0
  226. package/dist/chat/meta.d.ts +297 -0
  227. package/dist/chat/meta.d.ts.map +1 -0
  228. package/dist/chat/meta.js +230 -0
  229. package/dist/chat/types.d.ts +94 -0
  230. package/dist/chat/types.d.ts.map +1 -0
  231. package/dist/chat/types.js +1 -0
  232. package/dist/checkbox/Checkbox.svelte +339 -148
  233. package/dist/checkbox/Checkbox.svelte.d.ts +27 -8
  234. package/dist/checkbox/Checkbox.svelte.d.ts.map +1 -1
  235. package/dist/checkbox/CheckboxGroup.svelte +52 -20
  236. package/dist/checkbox/CheckboxGroup.svelte.d.ts +7 -4
  237. package/dist/checkbox/CheckboxGroup.svelte.d.ts.map +1 -1
  238. package/dist/checkbox/context.d.ts +17 -7
  239. package/dist/checkbox/context.d.ts.map +1 -1
  240. package/dist/checkbox/index.d.ts +1 -1
  241. package/dist/checkbox/index.d.ts.map +1 -1
  242. package/dist/checkbox/meta.d.ts +49 -22
  243. package/dist/checkbox/meta.d.ts.map +1 -1
  244. package/dist/checkbox/meta.js +15 -13
  245. package/dist/code-highlight/CodeHighlight.svelte +298 -0
  246. package/dist/code-highlight/CodeHighlight.svelte.d.ts +18 -0
  247. package/dist/code-highlight/CodeHighlight.svelte.d.ts.map +1 -0
  248. package/dist/code-highlight/index.d.ts +4 -0
  249. package/dist/code-highlight/index.d.ts.map +1 -0
  250. package/dist/code-highlight/index.js +3 -0
  251. package/dist/code-highlight/meta.d.ts +61 -0
  252. package/dist/code-highlight/meta.d.ts.map +1 -0
  253. package/dist/code-highlight/meta.js +51 -0
  254. package/dist/code-highlight/prism-modules.d.ts +15 -0
  255. package/dist/collapse/Collapse.svelte +134 -324
  256. package/dist/collapse/Collapse.svelte.d.ts +24 -38
  257. package/dist/collapse/Collapse.svelte.d.ts.map +1 -1
  258. package/dist/collapse/CollapsePanel.svelte +143 -73
  259. package/dist/collapse/CollapsePanel.svelte.d.ts +16 -7
  260. package/dist/collapse/CollapsePanel.svelte.d.ts.map +1 -1
  261. package/dist/collapse/context.d.ts +18 -32
  262. package/dist/collapse/context.d.ts.map +1 -1
  263. package/dist/collapse/index.d.ts +1 -2
  264. package/dist/collapse/index.d.ts.map +1 -1
  265. package/dist/collapse/meta.d.ts +71 -54
  266. package/dist/collapse/meta.d.ts.map +1 -1
  267. package/dist/collapse/meta.js +55 -52
  268. package/dist/collapsible/Collapsible.svelte +224 -0
  269. package/dist/collapsible/Collapsible.svelte.d.ts +35 -0
  270. package/dist/collapsible/Collapsible.svelte.d.ts.map +1 -0
  271. package/dist/collapsible/index.d.ts +3 -0
  272. package/dist/collapsible/index.d.ts.map +1 -0
  273. package/dist/collapsible/index.js +2 -0
  274. package/dist/collapsible/meta.d.ts +115 -0
  275. package/dist/collapsible/meta.d.ts.map +1 -0
  276. package/dist/collapsible/meta.js +89 -0
  277. package/dist/color-picker/ColorPicker.svelte +395 -839
  278. package/dist/color-picker/ColorPicker.svelte.d.ts +29 -39
  279. package/dist/color-picker/ColorPicker.svelte.d.ts.map +1 -1
  280. package/dist/color-picker/index.d.ts +1 -0
  281. package/dist/color-picker/index.d.ts.map +1 -1
  282. package/dist/color-picker/index.js +1 -0
  283. package/dist/color-picker/meta.d.ts +43 -90
  284. package/dist/color-picker/meta.d.ts.map +1 -1
  285. package/dist/color-picker/meta.js +49 -37
  286. package/dist/components.d.ts +1773 -422
  287. package/dist/components.json +17159 -9219
  288. package/dist/config-provider/ConfigProvider.svelte +186 -151
  289. package/dist/config-provider/ConfigProvider.svelte.d.ts +12 -44
  290. package/dist/config-provider/ConfigProvider.svelte.d.ts.map +1 -1
  291. package/dist/config-provider/context.d.ts +21 -13
  292. package/dist/config-provider/context.d.ts.map +1 -1
  293. package/dist/config-provider/index.d.ts +9 -7
  294. package/dist/config-provider/index.d.ts.map +1 -1
  295. package/dist/config-provider/index.js +21 -7
  296. package/dist/config-provider/meta.d.ts +30 -75
  297. package/dist/config-provider/meta.d.ts.map +1 -1
  298. package/dist/config-provider/meta.js +30 -73
  299. package/dist/cropper/Cropper.svelte +536 -0
  300. package/dist/cropper/Cropper.svelte.d.ts +47 -0
  301. package/dist/cropper/Cropper.svelte.d.ts.map +1 -0
  302. package/dist/cropper/index.d.ts +4 -0
  303. package/dist/cropper/index.d.ts.map +1 -0
  304. package/dist/cropper/index.js +2 -0
  305. package/dist/cropper/meta.d.ts +136 -0
  306. package/dist/cropper/meta.d.ts.map +1 -0
  307. package/dist/cropper/meta.js +97 -0
  308. package/dist/date-picker/DatePicker.svelte +1646 -360
  309. package/dist/date-picker/DatePicker.svelte.d.ts +90 -37
  310. package/dist/date-picker/DatePicker.svelte.d.ts.map +1 -1
  311. package/dist/date-picker/index.d.ts +0 -2
  312. package/dist/date-picker/index.d.ts.map +1 -1
  313. package/dist/date-picker/index.js +0 -2
  314. package/dist/date-picker/meta.d.ts +309 -26
  315. package/dist/date-picker/meta.d.ts.map +1 -1
  316. package/dist/date-picker/meta.js +89 -14
  317. package/dist/descriptions/Descriptions.svelte +213 -223
  318. package/dist/descriptions/Descriptions.svelte.d.ts +16 -25
  319. package/dist/descriptions/Descriptions.svelte.d.ts.map +1 -1
  320. package/dist/descriptions/DescriptionsItem.svelte +58 -28
  321. package/dist/descriptions/DescriptionsItem.svelte.d.ts +12 -4
  322. package/dist/descriptions/DescriptionsItem.svelte.d.ts.map +1 -1
  323. package/dist/descriptions/context.d.ts +9 -5
  324. package/dist/descriptions/context.d.ts.map +1 -1
  325. package/dist/descriptions/index.d.ts +2 -2
  326. package/dist/descriptions/index.d.ts.map +1 -1
  327. package/dist/descriptions/meta.d.ts +51 -49
  328. package/dist/descriptions/meta.d.ts.map +1 -1
  329. package/dist/descriptions/meta.js +41 -20
  330. package/dist/descriptions/types.d.ts +13 -3
  331. package/dist/descriptions/types.d.ts.map +1 -1
  332. package/dist/divider/Divider.svelte +86 -94
  333. package/dist/divider/Divider.svelte.d.ts +2 -2
  334. package/dist/divider/Divider.svelte.d.ts.map +1 -1
  335. package/dist/divider/meta.d.ts +19 -25
  336. package/dist/divider/meta.d.ts.map +1 -1
  337. package/dist/divider/meta.js +29 -11
  338. package/dist/drag-move/DragMove.svelte +106 -0
  339. package/dist/drag-move/DragMove.svelte.d.ts +30 -0
  340. package/dist/drag-move/DragMove.svelte.d.ts.map +1 -0
  341. package/dist/drag-move/index.d.ts +4 -0
  342. package/dist/drag-move/index.d.ts.map +1 -0
  343. package/dist/drag-move/index.js +3 -0
  344. package/dist/drag-move/meta.d.ts +102 -0
  345. package/dist/drag-move/meta.d.ts.map +1 -0
  346. package/dist/drag-move/meta.js +77 -0
  347. package/dist/dropdown/Dropdown.svelte +426 -344
  348. package/dist/dropdown/Dropdown.svelte.d.ts +55 -58
  349. package/dist/dropdown/Dropdown.svelte.d.ts.map +1 -1
  350. package/dist/dropdown/DropdownDivider.svelte +20 -8
  351. package/dist/dropdown/DropdownDivider.svelte.d.ts +7 -16
  352. package/dist/dropdown/DropdownDivider.svelte.d.ts.map +1 -1
  353. package/dist/dropdown/DropdownItem.svelte +163 -91
  354. package/dist/dropdown/DropdownItem.svelte.d.ts +25 -11
  355. package/dist/dropdown/DropdownItem.svelte.d.ts.map +1 -1
  356. package/dist/dropdown/DropdownMenu.svelte +21 -9
  357. package/dist/dropdown/DropdownMenu.svelte.d.ts +6 -1
  358. package/dist/dropdown/DropdownMenu.svelte.d.ts.map +1 -1
  359. package/dist/dropdown/DropdownTitle.svelte +38 -20
  360. package/dist/dropdown/DropdownTitle.svelte.d.ts +6 -1
  361. package/dist/dropdown/DropdownTitle.svelte.d.ts.map +1 -1
  362. package/dist/dropdown/context.d.ts +18 -6
  363. package/dist/dropdown/context.d.ts.map +1 -1
  364. package/dist/dropdown/index.d.ts +3 -6
  365. package/dist/dropdown/index.d.ts.map +1 -1
  366. package/dist/dropdown/index.js +3 -6
  367. package/dist/dropdown/meta.d.ts +183 -63
  368. package/dist/dropdown/meta.d.ts.map +1 -1
  369. package/dist/dropdown/meta.js +122 -73
  370. package/dist/dropdown/types.d.ts +39 -42
  371. package/dist/dropdown/types.d.ts.map +1 -1
  372. package/dist/dropdown/types.js +1 -12
  373. package/dist/empty/Empty.svelte +136 -249
  374. package/dist/empty/Empty.svelte.d.ts +23 -9
  375. package/dist/empty/Empty.svelte.d.ts.map +1 -1
  376. package/dist/empty/meta.d.ts +29 -18
  377. package/dist/empty/meta.d.ts.map +1 -1
  378. package/dist/empty/meta.js +21 -26
  379. package/dist/feedback/Feedback.svelte +330 -0
  380. package/dist/feedback/Feedback.svelte.d.ts +46 -0
  381. package/dist/feedback/Feedback.svelte.d.ts.map +1 -0
  382. package/dist/feedback/index.d.ts +4 -0
  383. package/dist/feedback/index.d.ts.map +1 -0
  384. package/dist/feedback/index.js +2 -0
  385. package/dist/feedback/meta.d.ts +105 -0
  386. package/dist/feedback/meta.d.ts.map +1 -0
  387. package/dist/feedback/meta.js +65 -0
  388. package/dist/float-button/FloatButton.svelte +161 -0
  389. package/dist/float-button/FloatButton.svelte.d.ts +5 -0
  390. package/dist/float-button/FloatButton.svelte.d.ts.map +1 -0
  391. package/dist/float-button/FloatButtonGroup.svelte +90 -0
  392. package/dist/float-button/FloatButtonGroup.svelte.d.ts +5 -0
  393. package/dist/float-button/FloatButtonGroup.svelte.d.ts.map +1 -0
  394. package/dist/float-button/index.d.ts +5 -0
  395. package/dist/float-button/index.d.ts.map +1 -0
  396. package/dist/float-button/index.js +3 -0
  397. package/dist/float-button/meta.d.ts +136 -0
  398. package/dist/float-button/meta.d.ts.map +1 -0
  399. package/dist/float-button/meta.js +104 -0
  400. package/dist/float-button/types.d.ts +59 -0
  401. package/dist/float-button/types.d.ts.map +1 -0
  402. package/dist/float-button/types.js +1 -0
  403. package/dist/form/Field.svelte +315 -192
  404. package/dist/form/Field.svelte.d.ts +70 -2
  405. package/dist/form/Field.svelte.d.ts.map +1 -1
  406. package/dist/form/FieldArray.svelte +115 -21
  407. package/dist/form/FieldArray.svelte.d.ts +21 -3
  408. package/dist/form/FieldArray.svelte.d.ts.map +1 -1
  409. package/dist/form/Form.svelte +260 -52
  410. package/dist/form/Form.svelte.d.ts +84 -12
  411. package/dist/form/Form.svelte.d.ts.map +1 -1
  412. package/dist/form/FormAutoComplete.svelte +52 -0
  413. package/dist/form/FormAutoComplete.svelte.d.ts +17 -0
  414. package/dist/form/FormAutoComplete.svelte.d.ts.map +1 -0
  415. package/dist/form/FormCascader.svelte +25 -55
  416. package/dist/form/FormCascader.svelte.d.ts +2 -13
  417. package/dist/form/FormCascader.svelte.d.ts.map +1 -1
  418. package/dist/form/FormCheckbox.svelte +24 -56
  419. package/dist/form/FormCheckbox.svelte.d.ts +2 -14
  420. package/dist/form/FormCheckbox.svelte.d.ts.map +1 -1
  421. package/dist/form/FormCheckboxGroup.svelte +48 -0
  422. package/dist/form/FormCheckboxGroup.svelte.d.ts +15 -0
  423. package/dist/form/FormCheckboxGroup.svelte.d.ts.map +1 -0
  424. package/dist/form/FormDatePicker.svelte +24 -53
  425. package/dist/form/FormDatePicker.svelte.d.ts +2 -13
  426. package/dist/form/FormDatePicker.svelte.d.ts.map +1 -1
  427. package/dist/form/FormErrorMessage.svelte +75 -29
  428. package/dist/form/FormErrorMessage.svelte.d.ts +17 -4
  429. package/dist/form/FormErrorMessage.svelte.d.ts.map +1 -1
  430. package/dist/form/FormInput.svelte +31 -70
  431. package/dist/form/FormInput.svelte.d.ts +7 -19
  432. package/dist/form/FormInput.svelte.d.ts.map +1 -1
  433. package/dist/form/FormInputGroup.svelte +146 -0
  434. package/dist/form/FormInputGroup.svelte.d.ts +32 -0
  435. package/dist/form/FormInputGroup.svelte.d.ts.map +1 -0
  436. package/dist/form/FormInputNumber.svelte +74 -0
  437. package/dist/form/FormInputNumber.svelte.d.ts +20 -0
  438. package/dist/form/FormInputNumber.svelte.d.ts.map +1 -0
  439. package/dist/form/FormLabel.svelte +133 -24
  440. package/dist/form/FormLabel.svelte.d.ts +17 -4
  441. package/dist/form/FormLabel.svelte.d.ts.map +1 -1
  442. package/dist/form/FormPinCode.svelte +52 -0
  443. package/dist/form/FormPinCode.svelte.d.ts +16 -0
  444. package/dist/form/FormPinCode.svelte.d.ts.map +1 -0
  445. package/dist/form/FormRadio.svelte +23 -55
  446. package/dist/form/FormRadio.svelte.d.ts +2 -14
  447. package/dist/form/FormRadio.svelte.d.ts.map +1 -1
  448. package/dist/form/FormRadioGroup.svelte +54 -0
  449. package/dist/form/FormRadioGroup.svelte.d.ts +16 -0
  450. package/dist/form/FormRadioGroup.svelte.d.ts.map +1 -0
  451. package/dist/form/FormRating.svelte +24 -58
  452. package/dist/form/FormRating.svelte.d.ts +2 -14
  453. package/dist/form/FormRating.svelte.d.ts.map +1 -1
  454. package/dist/form/FormSection.svelte +35 -25
  455. package/dist/form/FormSection.svelte.d.ts +3 -1
  456. package/dist/form/FormSection.svelte.d.ts.map +1 -1
  457. package/dist/form/FormSelect.svelte +44 -68
  458. package/dist/form/FormSelect.svelte.d.ts +5 -16
  459. package/dist/form/FormSelect.svelte.d.ts.map +1 -1
  460. package/dist/form/FormSlider.svelte +33 -65
  461. package/dist/form/FormSlider.svelte.d.ts +2 -14
  462. package/dist/form/FormSlider.svelte.d.ts.map +1 -1
  463. package/dist/form/FormSlot.svelte +61 -20
  464. package/dist/form/FormSlot.svelte.d.ts +16 -2
  465. package/dist/form/FormSlot.svelte.d.ts.map +1 -1
  466. package/dist/form/FormSwitch.svelte +27 -59
  467. package/dist/form/FormSwitch.svelte.d.ts +4 -15
  468. package/dist/form/FormSwitch.svelte.d.ts.map +1 -1
  469. package/dist/form/FormTagInput.svelte +24 -53
  470. package/dist/form/FormTagInput.svelte.d.ts +2 -13
  471. package/dist/form/FormTagInput.svelte.d.ts.map +1 -1
  472. package/dist/form/FormTextArea.svelte +66 -0
  473. package/dist/form/FormTextArea.svelte.d.ts +18 -0
  474. package/dist/form/FormTextArea.svelte.d.ts.map +1 -0
  475. package/dist/form/FormTimePicker.svelte +51 -0
  476. package/dist/form/FormTimePicker.svelte.d.ts +15 -0
  477. package/dist/form/FormTimePicker.svelte.d.ts.map +1 -0
  478. package/dist/form/FormTreeSelect.svelte +26 -57
  479. package/dist/form/FormTreeSelect.svelte.d.ts +3 -14
  480. package/dist/form/FormTreeSelect.svelte.d.ts.map +1 -1
  481. package/dist/form/FormUpload.svelte +22 -63
  482. package/dist/form/FormUpload.svelte.d.ts +3 -15
  483. package/dist/form/FormUpload.svelte.d.ts.map +1 -1
  484. package/dist/form/GroupHookPanel.svelte +21 -0
  485. package/dist/form/GroupHookPanel.svelte.d.ts +19 -0
  486. package/dist/form/GroupHookPanel.svelte.d.ts.map +1 -0
  487. package/dist/form/context.d.ts +0 -3
  488. package/dist/form/context.d.ts.map +1 -1
  489. package/dist/form/field-props.d.ts +84 -0
  490. package/dist/form/field-props.d.ts.map +1 -0
  491. package/dist/form/field-props.js +58 -0
  492. package/dist/form/hooks.d.ts +53 -0
  493. package/dist/form/hooks.d.ts.map +1 -0
  494. package/dist/form/hooks.js +36 -0
  495. package/dist/form/index.d.ts +57 -4
  496. package/dist/form/index.d.ts.map +1 -1
  497. package/dist/form/index.js +60 -3
  498. package/dist/form/input-group-context.d.ts +7 -0
  499. package/dist/form/input-group-context.d.ts.map +1 -0
  500. package/dist/form/input-group-context.js +17 -0
  501. package/dist/form/meta.d.ts +213 -16
  502. package/dist/form/meta.d.ts.map +1 -1
  503. package/dist/form/meta.js +103 -15
  504. package/dist/grid/Col.svelte +1482 -78
  505. package/dist/grid/Col.svelte.d.ts +3 -5
  506. package/dist/grid/Col.svelte.d.ts.map +1 -1
  507. package/dist/grid/Row.svelte +151 -69
  508. package/dist/grid/Row.svelte.d.ts +9 -7
  509. package/dist/grid/Row.svelte.d.ts.map +1 -1
  510. package/dist/grid/meta.d.ts +37 -28
  511. package/dist/grid/meta.d.ts.map +1 -1
  512. package/dist/grid/meta.js +31 -25
  513. package/dist/highlight/Highlight.svelte +46 -66
  514. package/dist/highlight/Highlight.svelte.d.ts +9 -22
  515. package/dist/highlight/Highlight.svelte.d.ts.map +1 -1
  516. package/dist/highlight/meta.d.ts +12 -51
  517. package/dist/highlight/meta.d.ts.map +1 -1
  518. package/dist/highlight/meta.js +16 -46
  519. package/dist/hotkeys/HotKeys.svelte +152 -0
  520. package/dist/hotkeys/HotKeys.svelte.d.ts +28 -0
  521. package/dist/hotkeys/HotKeys.svelte.d.ts.map +1 -0
  522. package/dist/hotkeys/index.d.ts +12 -0
  523. package/dist/hotkeys/index.d.ts.map +1 -0
  524. package/dist/hotkeys/index.js +8 -0
  525. package/dist/hotkeys/meta.d.ts +103 -0
  526. package/dist/hotkeys/meta.d.ts.map +1 -0
  527. package/dist/hotkeys/meta.js +65 -0
  528. package/dist/icon/index.d.ts +1 -1
  529. package/dist/icon/index.d.ts.map +1 -1
  530. package/dist/icon/index.js +1 -1
  531. package/dist/icon/meta.d.ts +20 -28
  532. package/dist/icon/meta.d.ts.map +1 -1
  533. package/dist/icon/meta.js +20 -20
  534. package/dist/iconbutton/IconButton.svelte +89 -0
  535. package/dist/iconbutton/IconButton.svelte.d.ts +53 -0
  536. package/dist/iconbutton/IconButton.svelte.d.ts.map +1 -0
  537. package/dist/iconbutton/index.d.ts +3 -0
  538. package/dist/iconbutton/index.d.ts.map +1 -0
  539. package/dist/iconbutton/index.js +2 -0
  540. package/dist/iconbutton/meta.d.ts +150 -0
  541. package/dist/iconbutton/meta.d.ts.map +1 -0
  542. package/dist/iconbutton/meta.js +53 -0
  543. package/dist/illustrations/IllustrationConstruction.svelte +25 -0
  544. package/dist/illustrations/IllustrationConstruction.svelte.d.ts +8 -0
  545. package/dist/illustrations/IllustrationConstruction.svelte.d.ts.map +1 -0
  546. package/dist/illustrations/IllustrationConstructionDark.svelte +25 -0
  547. package/dist/illustrations/IllustrationConstructionDark.svelte.d.ts +8 -0
  548. package/dist/illustrations/IllustrationConstructionDark.svelte.d.ts.map +1 -0
  549. package/dist/illustrations/IllustrationFailure.svelte +25 -0
  550. package/dist/illustrations/IllustrationFailure.svelte.d.ts +8 -0
  551. package/dist/illustrations/IllustrationFailure.svelte.d.ts.map +1 -0
  552. package/dist/illustrations/IllustrationFailureDark.svelte +25 -0
  553. package/dist/illustrations/IllustrationFailureDark.svelte.d.ts +8 -0
  554. package/dist/illustrations/IllustrationFailureDark.svelte.d.ts.map +1 -0
  555. package/dist/illustrations/IllustrationIdle.svelte +25 -0
  556. package/dist/illustrations/IllustrationIdle.svelte.d.ts +8 -0
  557. package/dist/illustrations/IllustrationIdle.svelte.d.ts.map +1 -0
  558. package/dist/illustrations/IllustrationIdleDark.svelte +25 -0
  559. package/dist/illustrations/IllustrationIdleDark.svelte.d.ts +8 -0
  560. package/dist/illustrations/IllustrationIdleDark.svelte.d.ts.map +1 -0
  561. package/dist/illustrations/IllustrationNoAccess.svelte +25 -0
  562. package/dist/illustrations/IllustrationNoAccess.svelte.d.ts +8 -0
  563. package/dist/illustrations/IllustrationNoAccess.svelte.d.ts.map +1 -0
  564. package/dist/illustrations/IllustrationNoAccessDark.svelte +25 -0
  565. package/dist/illustrations/IllustrationNoAccessDark.svelte.d.ts +8 -0
  566. package/dist/illustrations/IllustrationNoAccessDark.svelte.d.ts.map +1 -0
  567. package/dist/illustrations/IllustrationNoContent.svelte +25 -0
  568. package/dist/illustrations/IllustrationNoContent.svelte.d.ts +8 -0
  569. package/dist/illustrations/IllustrationNoContent.svelte.d.ts.map +1 -0
  570. package/dist/illustrations/IllustrationNoContentDark.svelte +25 -0
  571. package/dist/illustrations/IllustrationNoContentDark.svelte.d.ts +8 -0
  572. package/dist/illustrations/IllustrationNoContentDark.svelte.d.ts.map +1 -0
  573. package/dist/illustrations/IllustrationNoResult.svelte +25 -0
  574. package/dist/illustrations/IllustrationNoResult.svelte.d.ts +8 -0
  575. package/dist/illustrations/IllustrationNoResult.svelte.d.ts.map +1 -0
  576. package/dist/illustrations/IllustrationNoResultDark.svelte +25 -0
  577. package/dist/illustrations/IllustrationNoResultDark.svelte.d.ts +8 -0
  578. package/dist/illustrations/IllustrationNoResultDark.svelte.d.ts.map +1 -0
  579. package/dist/illustrations/IllustrationNotFound.svelte +25 -0
  580. package/dist/illustrations/IllustrationNotFound.svelte.d.ts +8 -0
  581. package/dist/illustrations/IllustrationNotFound.svelte.d.ts.map +1 -0
  582. package/dist/illustrations/IllustrationNotFoundDark.svelte +25 -0
  583. package/dist/illustrations/IllustrationNotFoundDark.svelte.d.ts +8 -0
  584. package/dist/illustrations/IllustrationNotFoundDark.svelte.d.ts.map +1 -0
  585. package/dist/illustrations/IllustrationSuccess.svelte +25 -0
  586. package/dist/illustrations/IllustrationSuccess.svelte.d.ts +8 -0
  587. package/dist/illustrations/IllustrationSuccess.svelte.d.ts.map +1 -0
  588. package/dist/illustrations/IllustrationSuccessDark.svelte +25 -0
  589. package/dist/illustrations/IllustrationSuccessDark.svelte.d.ts +8 -0
  590. package/dist/illustrations/IllustrationSuccessDark.svelte.d.ts.map +1 -0
  591. package/dist/illustrations/index.d.ts +22 -0
  592. package/dist/illustrations/index.d.ts.map +1 -0
  593. package/dist/illustrations/index.js +21 -0
  594. package/dist/image/Image.svelte +260 -283
  595. package/dist/image/Image.svelte.d.ts +20 -21
  596. package/dist/image/Image.svelte.d.ts.map +1 -1
  597. package/dist/image/ImagePreview.svelte +201 -297
  598. package/dist/image/ImagePreview.svelte.d.ts +7 -10
  599. package/dist/image/ImagePreview.svelte.d.ts.map +1 -1
  600. package/dist/image/PreviewFooter.svelte +400 -0
  601. package/dist/image/PreviewFooter.svelte.d.ts +62 -0
  602. package/dist/image/PreviewFooter.svelte.d.ts.map +1 -0
  603. package/dist/image/PreviewHeader.svelte +93 -0
  604. package/dist/image/PreviewHeader.svelte.d.ts +16 -0
  605. package/dist/image/PreviewHeader.svelte.d.ts.map +1 -0
  606. package/dist/image/PreviewImage.svelte +296 -0
  607. package/dist/image/PreviewImage.svelte.d.ts +26 -0
  608. package/dist/image/PreviewImage.svelte.d.ts.map +1 -0
  609. package/dist/image/PreviewInner.svelte +554 -0
  610. package/dist/image/PreviewInner.svelte.d.ts +58 -0
  611. package/dist/image/PreviewInner.svelte.d.ts.map +1 -0
  612. package/dist/image/download.d.ts +8 -0
  613. package/dist/image/download.d.ts.map +1 -0
  614. package/dist/image/download.js +29 -0
  615. package/dist/image/index.d.ts +6 -7
  616. package/dist/image/index.d.ts.map +1 -1
  617. package/dist/image/index.js +5 -5
  618. package/dist/image/meta.d.ts +231 -88
  619. package/dist/image/meta.d.ts.map +1 -1
  620. package/dist/image/meta.js +93 -83
  621. package/dist/image/previewContext.d.ts +29 -0
  622. package/dist/image/previewContext.d.ts.map +1 -0
  623. package/dist/image/previewContext.js +8 -0
  624. package/dist/image/previewGeometry.d.ts +70 -0
  625. package/dist/image/previewGeometry.d.ts.map +1 -0
  626. package/dist/image/previewGeometry.js +184 -0
  627. package/dist/image/types.d.ts +66 -0
  628. package/dist/image/types.d.ts.map +1 -0
  629. package/dist/image/types.js +1 -0
  630. package/dist/index.d.ts +48 -26
  631. package/dist/index.d.ts.map +1 -1
  632. package/dist/index.js +40 -22
  633. package/dist/input/Input.svelte +537 -320
  634. package/dist/input/Input.svelte.d.ts +69 -21
  635. package/dist/input/Input.svelte.d.ts.map +1 -1
  636. package/dist/input/InputGroup.svelte +188 -0
  637. package/dist/input/InputGroup.svelte.d.ts +35 -0
  638. package/dist/input/InputGroup.svelte.d.ts.map +1 -0
  639. package/dist/input/TextArea.svelte +788 -0
  640. package/dist/input/TextArea.svelte.d.ts +104 -0
  641. package/dist/input/TextArea.svelte.d.ts.map +1 -0
  642. package/dist/input/context.d.ts +13 -0
  643. package/dist/input/context.d.ts.map +1 -0
  644. package/dist/input/context.js +5 -0
  645. package/dist/input/index.d.ts +4 -1
  646. package/dist/input/index.d.ts.map +1 -1
  647. package/dist/input/index.js +5 -1
  648. package/dist/input/meta.d.ts +802 -22
  649. package/dist/input/meta.d.ts.map +1 -1
  650. package/dist/input/meta.js +196 -17
  651. package/dist/input-number/InputNumber.svelte +446 -427
  652. package/dist/input-number/InputNumber.svelte.d.ts +73 -45
  653. package/dist/input-number/InputNumber.svelte.d.ts.map +1 -1
  654. package/dist/input-number/meta.d.ts +140 -48
  655. package/dist/input-number/meta.d.ts.map +1 -1
  656. package/dist/input-number/meta.js +39 -22
  657. package/dist/json-viewer/JsonViewer.svelte +528 -0
  658. package/dist/json-viewer/JsonViewer.svelte.d.ts +43 -0
  659. package/dist/json-viewer/JsonViewer.svelte.d.ts.map +1 -0
  660. package/dist/json-viewer/index.d.ts +4 -0
  661. package/dist/json-viewer/index.d.ts.map +1 -0
  662. package/dist/json-viewer/index.js +2 -0
  663. package/dist/json-viewer/meta.d.ts +129 -0
  664. package/dist/{lottie-icon → json-viewer}/meta.d.ts.map +1 -1
  665. package/dist/json-viewer/meta.js +130 -0
  666. package/dist/json-viewer/semi-json-viewer-core.d.ts +94 -0
  667. package/dist/layout/Content.svelte +8 -25
  668. package/dist/layout/Content.svelte.d.ts +1 -3
  669. package/dist/layout/Content.svelte.d.ts.map +1 -1
  670. package/dist/layout/Footer.svelte +7 -40
  671. package/dist/layout/Footer.svelte.d.ts +1 -4
  672. package/dist/layout/Footer.svelte.d.ts.map +1 -1
  673. package/dist/layout/Header.svelte +7 -37
  674. package/dist/layout/Header.svelte.d.ts +1 -4
  675. package/dist/layout/Header.svelte.d.ts.map +1 -1
  676. package/dist/layout/Layout.svelte +30 -17
  677. package/dist/layout/Layout.svelte.d.ts +3 -1
  678. package/dist/layout/Layout.svelte.d.ts.map +1 -1
  679. package/dist/layout/Sider.svelte +71 -186
  680. package/dist/layout/Sider.svelte.d.ts +15 -19
  681. package/dist/layout/Sider.svelte.d.ts.map +1 -1
  682. package/dist/layout/meta.d.ts +28 -91
  683. package/dist/layout/meta.d.ts.map +1 -1
  684. package/dist/layout/meta.js +38 -56
  685. package/dist/list/List.svelte +158 -825
  686. package/dist/list/List.svelte.d.ts +32 -70
  687. package/dist/list/List.svelte.d.ts.map +1 -1
  688. package/dist/list/ListItem.svelte +129 -131
  689. package/dist/list/ListItem.svelte.d.ts +21 -12
  690. package/dist/list/ListItem.svelte.d.ts.map +1 -1
  691. package/dist/list/context.d.ts +32 -23
  692. package/dist/list/context.d.ts.map +1 -1
  693. package/dist/list/index.d.ts +3 -8
  694. package/dist/list/index.d.ts.map +1 -1
  695. package/dist/list/index.js +4 -8
  696. package/dist/list/meta.d.ts +110 -98
  697. package/dist/list/meta.d.ts.map +1 -1
  698. package/dist/list/meta.js +76 -58
  699. package/dist/lottie/Lottie.svelte +138 -0
  700. package/dist/lottie/Lottie.svelte.d.ts +32 -0
  701. package/dist/lottie/Lottie.svelte.d.ts.map +1 -0
  702. package/dist/lottie/index.d.ts +3 -0
  703. package/dist/lottie/index.d.ts.map +1 -0
  704. package/dist/lottie/index.js +2 -0
  705. package/dist/lottie/meta.d.ts +76 -0
  706. package/dist/lottie/meta.d.ts.map +1 -0
  707. package/dist/lottie/meta.js +81 -0
  708. package/dist/markdown-render/HastNode.svelte +66 -0
  709. package/dist/markdown-render/HastNode.svelte.d.ts +11 -0
  710. package/dist/markdown-render/HastNode.svelte.d.ts.map +1 -0
  711. package/dist/markdown-render/MarkdownRender.svelte +152 -0
  712. package/dist/markdown-render/MarkdownRender.svelte.d.ts +26 -0
  713. package/dist/markdown-render/MarkdownRender.svelte.d.ts.map +1 -0
  714. package/dist/markdown-render/components/MdCode.svelte +20 -0
  715. package/dist/markdown-render/components/MdCode.svelte.d.ts +9 -0
  716. package/dist/markdown-render/components/MdCode.svelte.d.ts.map +1 -0
  717. package/dist/markdown-render/components/MdHeading.svelte +29 -0
  718. package/dist/markdown-render/components/MdHeading.svelte.d.ts +11 -0
  719. package/dist/markdown-render/components/MdHeading.svelte.d.ts.map +1 -0
  720. package/dist/markdown-render/components/MdImage.svelte +28 -0
  721. package/dist/markdown-render/components/MdImage.svelte.d.ts +9 -0
  722. package/dist/markdown-render/components/MdImage.svelte.d.ts.map +1 -0
  723. package/dist/markdown-render/components/MdLink.svelte +33 -0
  724. package/dist/markdown-render/components/MdLink.svelte.d.ts +10 -0
  725. package/dist/markdown-render/components/MdLink.svelte.d.ts.map +1 -0
  726. package/dist/markdown-render/components/MdParagraph.svelte +19 -0
  727. package/dist/markdown-render/components/MdParagraph.svelte.d.ts +9 -0
  728. package/dist/markdown-render/components/MdParagraph.svelte.d.ts.map +1 -0
  729. package/dist/markdown-render/components/MdPre.svelte +48 -0
  730. package/dist/markdown-render/components/MdPre.svelte.d.ts +9 -0
  731. package/dist/markdown-render/components/MdPre.svelte.d.ts.map +1 -0
  732. package/dist/markdown-render/components/MdTable.svelte +53 -0
  733. package/dist/markdown-render/components/MdTable.svelte.d.ts +9 -0
  734. package/dist/markdown-render/components/MdTable.svelte.d.ts.map +1 -0
  735. package/dist/markdown-render/components/index.d.ts +26 -0
  736. package/dist/markdown-render/components/index.d.ts.map +1 -0
  737. package/dist/markdown-render/components/index.js +27 -0
  738. package/dist/markdown-render/index.d.ts +4 -0
  739. package/dist/markdown-render/index.d.ts.map +1 -0
  740. package/dist/markdown-render/index.js +2 -0
  741. package/dist/markdown-render/meta.d.ts +81 -0
  742. package/dist/markdown-render/meta.d.ts.map +1 -0
  743. package/dist/markdown-render/meta.js +105 -0
  744. package/dist/markdown-render/props.d.ts +15 -0
  745. package/dist/markdown-render/props.d.ts.map +1 -0
  746. package/dist/markdown-render/props.js +51 -0
  747. package/dist/modal/ConfirmModal.svelte +105 -86
  748. package/dist/modal/ConfirmModal.svelte.d.ts +7 -4
  749. package/dist/modal/ConfirmModal.svelte.d.ts.map +1 -1
  750. package/dist/modal/Modal.svelte +459 -343
  751. package/dist/modal/Modal.svelte.d.ts +71 -41
  752. package/dist/modal/Modal.svelte.d.ts.map +1 -1
  753. package/dist/modal/ModalContextHolder.svelte +22 -0
  754. package/dist/modal/ModalContextHolder.svelte.d.ts +8 -0
  755. package/dist/modal/ModalContextHolder.svelte.d.ts.map +1 -0
  756. package/dist/modal/command.svelte.d.ts +7 -1
  757. package/dist/modal/command.svelte.d.ts.map +1 -1
  758. package/dist/modal/command.svelte.js +1 -1
  759. package/dist/modal/index.d.ts +7 -1
  760. package/dist/modal/index.d.ts.map +1 -1
  761. package/dist/modal/index.js +8 -2
  762. package/dist/modal/meta.d.ts +149 -103
  763. package/dist/modal/meta.d.ts.map +1 -1
  764. package/dist/modal/meta.js +95 -109
  765. package/dist/modal/use-modal.svelte.d.ts +33 -0
  766. package/dist/modal/use-modal.svelte.d.ts.map +1 -0
  767. package/dist/modal/use-modal.svelte.js +44 -0
  768. package/dist/nav/Nav.svelte +329 -146
  769. package/dist/nav/Nav.svelte.d.ts +43 -30
  770. package/dist/nav/Nav.svelte.d.ts.map +1 -1
  771. package/dist/nav/NavCollapseButton.svelte +74 -0
  772. package/dist/nav/NavCollapseButton.svelte.d.ts +12 -0
  773. package/dist/nav/NavCollapseButton.svelte.d.ts.map +1 -0
  774. package/dist/nav/NavFooter.svelte +42 -47
  775. package/dist/nav/NavFooter.svelte.d.ts +6 -2
  776. package/dist/nav/NavFooter.svelte.d.ts.map +1 -1
  777. package/dist/nav/NavHeader.svelte +61 -12
  778. package/dist/nav/NavHeader.svelte.d.ts +8 -2
  779. package/dist/nav/NavHeader.svelte.d.ts.map +1 -1
  780. package/dist/nav/NavItem.svelte +21 -17
  781. package/dist/nav/NavItem.svelte.d.ts +12 -10
  782. package/dist/nav/NavItem.svelte.d.ts.map +1 -1
  783. package/dist/nav/NavItemRender.svelte +420 -0
  784. package/dist/nav/NavItemRender.svelte.d.ts +12 -0
  785. package/dist/nav/NavItemRender.svelte.d.ts.map +1 -0
  786. package/dist/nav/NavPopupNode.svelte +119 -0
  787. package/dist/nav/NavPopupNode.svelte.d.ts +8 -0
  788. package/dist/nav/NavPopupNode.svelte.d.ts.map +1 -0
  789. package/dist/nav/NavSub.svelte +44 -6
  790. package/dist/nav/NavSub.svelte.d.ts +20 -4
  791. package/dist/nav/NavSub.svelte.d.ts.map +1 -1
  792. package/dist/nav/NavSubPopup.svelte +90 -0
  793. package/dist/nav/NavSubPopup.svelte.d.ts +14 -0
  794. package/dist/nav/NavSubPopup.svelte.d.ts.map +1 -0
  795. package/dist/nav/context.d.ts +57 -8
  796. package/dist/nav/context.d.ts.map +1 -1
  797. package/dist/nav/context.js +6 -2
  798. package/dist/nav/index.d.ts +1 -1
  799. package/dist/nav/index.d.ts.map +1 -1
  800. package/dist/nav/meta.d.ts +131 -52
  801. package/dist/nav/meta.d.ts.map +1 -1
  802. package/dist/nav/meta.js +70 -29
  803. package/dist/nav/types.d.ts +89 -22
  804. package/dist/nav/types.d.ts.map +1 -1
  805. package/dist/nav/types.js +47 -26
  806. package/dist/notification/NotificationContainer.svelte +131 -119
  807. package/dist/notification/NotificationContainer.svelte.d.ts.map +1 -1
  808. package/dist/notification/NotificationHolder.svelte +18 -0
  809. package/dist/notification/NotificationHolder.svelte.d.ts +8 -0
  810. package/dist/notification/NotificationHolder.svelte.d.ts.map +1 -0
  811. package/dist/notification/NotificationItem.svelte +235 -289
  812. package/dist/notification/NotificationItem.svelte.d.ts +1 -5
  813. package/dist/notification/NotificationItem.svelte.d.ts.map +1 -1
  814. package/dist/notification/index.d.ts +3 -2
  815. package/dist/notification/index.d.ts.map +1 -1
  816. package/dist/notification/index.js +2 -1
  817. package/dist/notification/meta.d.ts +73 -50
  818. package/dist/notification/meta.d.ts.map +1 -1
  819. package/dist/notification/meta.js +85 -74
  820. package/dist/notification/store.d.ts +59 -44
  821. package/dist/notification/store.d.ts.map +1 -1
  822. package/dist/notification/store.js +68 -74
  823. package/dist/overflow-list/OverflowList.svelte +366 -470
  824. package/dist/overflow-list/OverflowList.svelte.d.ts +37 -40
  825. package/dist/overflow-list/OverflowList.svelte.d.ts.map +1 -1
  826. package/dist/overflow-list/meta.d.ts +71 -71
  827. package/dist/overflow-list/meta.d.ts.map +1 -1
  828. package/dist/overflow-list/meta.js +63 -78
  829. package/dist/pagination/Pagination.svelte +454 -251
  830. package/dist/pagination/Pagination.svelte.d.ts +38 -39
  831. package/dist/pagination/Pagination.svelte.d.ts.map +1 -1
  832. package/dist/pagination/meta.d.ts +75 -83
  833. package/dist/pagination/meta.d.ts.map +1 -1
  834. package/dist/pagination/meta.js +78 -57
  835. package/dist/pincode/PinCode.svelte +348 -0
  836. package/dist/pincode/PinCode.svelte.d.ts +47 -0
  837. package/dist/pincode/PinCode.svelte.d.ts.map +1 -0
  838. package/dist/pincode/index.d.ts +3 -0
  839. package/dist/pincode/index.d.ts.map +1 -0
  840. package/dist/pincode/index.js +2 -0
  841. package/dist/pincode/meta.d.ts +147 -0
  842. package/dist/pincode/meta.d.ts.map +1 -0
  843. package/dist/pincode/meta.js +91 -0
  844. package/dist/popconfirm/Popconfirm.svelte +313 -599
  845. package/dist/popconfirm/Popconfirm.svelte.d.ts +65 -68
  846. package/dist/popconfirm/Popconfirm.svelte.d.ts.map +1 -1
  847. package/dist/popconfirm/meta.d.ts +85 -161
  848. package/dist/popconfirm/meta.d.ts.map +1 -1
  849. package/dist/popconfirm/meta.js +68 -185
  850. package/dist/popover/Popover.svelte +342 -564
  851. package/dist/popover/Popover.svelte.d.ts +82 -52
  852. package/dist/popover/Popover.svelte.d.ts.map +1 -1
  853. package/dist/popover/meta.d.ts +102 -74
  854. package/dist/popover/meta.d.ts.map +1 -1
  855. package/dist/popover/meta.js +103 -62
  856. package/dist/progress/Progress.svelte +248 -309
  857. package/dist/progress/Progress.svelte.d.ts +19 -27
  858. package/dist/progress/Progress.svelte.d.ts.map +1 -1
  859. package/dist/progress/index.d.ts +1 -1
  860. package/dist/progress/index.d.ts.map +1 -1
  861. package/dist/progress/meta.d.ts +70 -62
  862. package/dist/progress/meta.d.ts.map +1 -1
  863. package/dist/progress/meta.js +68 -77
  864. package/dist/radio/Radio.svelte +451 -239
  865. package/dist/radio/Radio.svelte.d.ts +13 -7
  866. package/dist/radio/Radio.svelte.d.ts.map +1 -1
  867. package/dist/radio/RadioGroup.svelte +152 -121
  868. package/dist/radio/RadioGroup.svelte.d.ts +27 -6
  869. package/dist/radio/RadioGroup.svelte.d.ts.map +1 -1
  870. package/dist/radio/context.d.ts +23 -18
  871. package/dist/radio/context.d.ts.map +1 -1
  872. package/dist/radio/index.d.ts +1 -1
  873. package/dist/radio/index.d.ts.map +1 -1
  874. package/dist/radio/meta.d.ts +62 -23
  875. package/dist/radio/meta.d.ts.map +1 -1
  876. package/dist/radio/meta.js +60 -17
  877. package/dist/rating/Rating.svelte +358 -275
  878. package/dist/rating/Rating.svelte.d.ts +25 -18
  879. package/dist/rating/Rating.svelte.d.ts.map +1 -1
  880. package/dist/rating/meta.d.ts +73 -40
  881. package/dist/rating/meta.d.ts.map +1 -1
  882. package/dist/rating/meta.js +55 -28
  883. package/dist/resizable/Resizable.svelte +354 -0
  884. package/dist/resizable/Resizable.svelte.d.ts +61 -0
  885. package/dist/resizable/Resizable.svelte.d.ts.map +1 -0
  886. package/dist/resizable/ResizeGroup.svelte +308 -0
  887. package/dist/resizable/ResizeGroup.svelte.d.ts +13 -0
  888. package/dist/resizable/ResizeGroup.svelte.d.ts.map +1 -0
  889. package/dist/resizable/ResizeHandler.svelte +87 -0
  890. package/dist/resizable/ResizeHandler.svelte.d.ts +13 -0
  891. package/dist/resizable/ResizeHandler.svelte.d.ts.map +1 -0
  892. package/dist/resizable/ResizeItem.svelte +103 -0
  893. package/dist/resizable/ResizeItem.svelte.d.ts +20 -0
  894. package/dist/resizable/ResizeItem.svelte.d.ts.map +1 -0
  895. package/dist/resizable/context.d.ts +39 -0
  896. package/dist/resizable/context.d.ts.map +1 -0
  897. package/dist/resizable/context.js +1 -0
  898. package/dist/resizable/index.d.ts +8 -0
  899. package/dist/resizable/index.d.ts.map +1 -0
  900. package/dist/resizable/index.js +7 -0
  901. package/dist/resizable/meta.d.ts +243 -0
  902. package/dist/resizable/meta.d.ts.map +1 -0
  903. package/dist/resizable/meta.js +90 -0
  904. package/dist/resize-observer/ResizeObserver.svelte +12 -0
  905. package/dist/resize-observer/ResizeObserver.svelte.d.ts +7 -0
  906. package/dist/resize-observer/ResizeObserver.svelte.d.ts.map +1 -1
  907. package/dist/resize-observer/meta.d.ts +5 -0
  908. package/dist/resize-observer/meta.d.ts.map +1 -1
  909. package/dist/resize-observer/meta.js +6 -0
  910. package/dist/scroll-list/ScrollItem.svelte +612 -0
  911. package/dist/scroll-list/ScrollItem.svelte.d.ts +29 -0
  912. package/dist/scroll-list/ScrollItem.svelte.d.ts.map +1 -0
  913. package/dist/scroll-list/ScrollList.svelte +78 -227
  914. package/dist/scroll-list/ScrollList.svelte.d.ts +12 -41
  915. package/dist/scroll-list/ScrollList.svelte.d.ts.map +1 -1
  916. package/dist/scroll-list/index.d.ts +2 -2
  917. package/dist/scroll-list/index.d.ts.map +1 -1
  918. package/dist/scroll-list/index.js +1 -0
  919. package/dist/scroll-list/meta.d.ts +96 -101
  920. package/dist/scroll-list/meta.d.ts.map +1 -1
  921. package/dist/scroll-list/meta.js +84 -65
  922. package/dist/scroll-list/types.d.ts +2 -16
  923. package/dist/scroll-list/types.d.ts.map +1 -1
  924. package/dist/select/Select.svelte +683 -232
  925. package/dist/select/Select.svelte.d.ts +170 -37
  926. package/dist/select/Select.svelte.d.ts.map +1 -1
  927. package/dist/select/meta.d.ts +186 -40
  928. package/dist/select/meta.d.ts.map +1 -1
  929. package/dist/select/meta.js +54 -20
  930. package/dist/side-sheet/SideSheet.svelte +541 -500
  931. package/dist/side-sheet/SideSheet.svelte.d.ts +36 -49
  932. package/dist/side-sheet/SideSheet.svelte.d.ts.map +1 -1
  933. package/dist/side-sheet/meta.d.ts +77 -112
  934. package/dist/side-sheet/meta.d.ts.map +1 -1
  935. package/dist/side-sheet/meta.js +71 -71
  936. package/dist/sidebar/SideBar.svelte +168 -0
  937. package/dist/sidebar/SideBar.svelte.d.ts +28 -0
  938. package/dist/sidebar/SideBar.svelte.d.ts.map +1 -0
  939. package/dist/sidebar/SideBarAnnotation.svelte +453 -0
  940. package/dist/sidebar/SideBarAnnotation.svelte.d.ts +47 -0
  941. package/dist/sidebar/SideBarAnnotation.svelte.d.ts.map +1 -0
  942. package/dist/sidebar/SideBarCodeContent.svelte +201 -0
  943. package/dist/sidebar/SideBarCodeContent.svelte.d.ts +42 -0
  944. package/dist/sidebar/SideBarCodeContent.svelte.d.ts.map +1 -0
  945. package/dist/sidebar/SideBarContainer.svelte +478 -0
  946. package/dist/sidebar/SideBarContainer.svelte.d.ts +38 -0
  947. package/dist/sidebar/SideBarContainer.svelte.d.ts.map +1 -0
  948. package/dist/sidebar/SideBarFileContent.svelte +192 -0
  949. package/dist/sidebar/SideBarFileContent.svelte.d.ts +40 -0
  950. package/dist/sidebar/SideBarFileContent.svelte.d.ts.map +1 -0
  951. package/dist/sidebar/SideBarFileItem.svelte +311 -0
  952. package/dist/sidebar/SideBarFileItem.svelte.d.ts +21 -0
  953. package/dist/sidebar/SideBarFileItem.svelte.d.ts.map +1 -0
  954. package/dist/sidebar/SideBarImageUploadNode.svelte +103 -0
  955. package/dist/sidebar/SideBarImageUploadNode.svelte.d.ts +5 -0
  956. package/dist/sidebar/SideBarImageUploadNode.svelte.d.ts.map +1 -0
  957. package/dist/sidebar/SideBarMcpConfigure.svelte +544 -0
  958. package/dist/sidebar/SideBarMcpConfigure.svelte.d.ts +60 -0
  959. package/dist/sidebar/SideBarMcpConfigure.svelte.d.ts.map +1 -0
  960. package/dist/sidebar/SideBarOptions.svelte +137 -0
  961. package/dist/sidebar/SideBarOptions.svelte.d.ts +10 -0
  962. package/dist/sidebar/SideBarOptions.svelte.d.ts.map +1 -0
  963. package/dist/sidebar/file-extensions.d.ts +37 -0
  964. package/dist/sidebar/file-extensions.d.ts.map +1 -0
  965. package/dist/sidebar/file-extensions.js +45 -0
  966. package/dist/sidebar/index.d.ts +14 -0
  967. package/dist/sidebar/index.d.ts.map +1 -0
  968. package/dist/sidebar/index.js +9 -0
  969. package/dist/sidebar/meta.d.ts +373 -0
  970. package/dist/sidebar/meta.d.ts.map +1 -0
  971. package/dist/sidebar/meta.js +219 -0
  972. package/dist/sidebar/types.d.ts +70 -0
  973. package/dist/sidebar/types.d.ts.map +1 -0
  974. package/dist/sidebar/types.js +1 -0
  975. package/dist/skeleton/Skeleton.svelte +129 -97
  976. package/dist/skeleton/Skeleton.svelte.d.ts +7 -2
  977. package/dist/skeleton/Skeleton.svelte.d.ts.map +1 -1
  978. package/dist/skeleton/SkeletonAvatar.svelte +25 -68
  979. package/dist/skeleton/SkeletonAvatar.svelte.d.ts +6 -2
  980. package/dist/skeleton/SkeletonAvatar.svelte.d.ts.map +1 -1
  981. package/dist/skeleton/SkeletonButton.svelte +6 -77
  982. package/dist/skeleton/SkeletonButton.svelte.d.ts +0 -4
  983. package/dist/skeleton/SkeletonButton.svelte.d.ts.map +1 -1
  984. package/dist/skeleton/SkeletonImage.svelte +6 -87
  985. package/dist/skeleton/SkeletonImage.svelte.d.ts +0 -3
  986. package/dist/skeleton/SkeletonImage.svelte.d.ts.map +1 -1
  987. package/dist/skeleton/SkeletonParagraph.svelte +10 -87
  988. package/dist/skeleton/SkeletonParagraph.svelte.d.ts +1 -1
  989. package/dist/skeleton/SkeletonParagraph.svelte.d.ts.map +1 -1
  990. package/dist/skeleton/SkeletonTitle.svelte +6 -61
  991. package/dist/skeleton/SkeletonTitle.svelte.d.ts +0 -2
  992. package/dist/skeleton/SkeletonTitle.svelte.d.ts.map +1 -1
  993. package/dist/skeleton/index.d.ts +1 -1
  994. package/dist/skeleton/index.d.ts.map +1 -1
  995. package/dist/skeleton/meta.d.ts +99 -23
  996. package/dist/skeleton/meta.d.ts.map +1 -1
  997. package/dist/skeleton/meta.js +70 -28
  998. package/dist/slider/Slider.svelte +418 -419
  999. package/dist/slider/Slider.svelte.d.ts +45 -54
  1000. package/dist/slider/Slider.svelte.d.ts.map +1 -1
  1001. package/dist/slider/meta.d.ts +49 -87
  1002. package/dist/slider/meta.d.ts.map +1 -1
  1003. package/dist/slider/meta.js +50 -26
  1004. package/dist/space/Space.svelte +97 -49
  1005. package/dist/space/Space.svelte.d.ts +17 -4
  1006. package/dist/space/Space.svelte.d.ts.map +1 -1
  1007. package/dist/space/meta.d.ts +30 -17
  1008. package/dist/space/meta.d.ts.map +1 -1
  1009. package/dist/space/meta.js +29 -12
  1010. package/dist/spin/Spin.svelte +160 -195
  1011. package/dist/spin/Spin.svelte.d.ts +8 -12
  1012. package/dist/spin/Spin.svelte.d.ts.map +1 -1
  1013. package/dist/spin/meta.d.ts +36 -53
  1014. package/dist/spin/meta.d.ts.map +1 -1
  1015. package/dist/spin/meta.js +27 -47
  1016. package/dist/steps/Step.svelte +236 -0
  1017. package/dist/steps/Step.svelte.d.ts +5 -0
  1018. package/dist/steps/Step.svelte.d.ts.map +1 -0
  1019. package/dist/steps/Steps.svelte +521 -274
  1020. package/dist/steps/Steps.svelte.d.ts +14 -22
  1021. package/dist/steps/Steps.svelte.d.ts.map +1 -1
  1022. package/dist/steps/context.d.ts +41 -0
  1023. package/dist/steps/context.d.ts.map +1 -0
  1024. package/dist/steps/context.js +8 -0
  1025. package/dist/steps/index.d.ts +8 -2
  1026. package/dist/steps/index.d.ts.map +1 -1
  1027. package/dist/steps/index.js +5 -1
  1028. package/dist/steps/meta.d.ts +67 -42
  1029. package/dist/steps/meta.d.ts.map +1 -1
  1030. package/dist/steps/meta.js +169 -25
  1031. package/dist/steps/types.d.ts +30 -7
  1032. package/dist/steps/types.d.ts.map +1 -1
  1033. package/dist/switch/Switch.svelte +224 -205
  1034. package/dist/switch/Switch.svelte.d.ts +22 -43
  1035. package/dist/switch/Switch.svelte.d.ts.map +1 -1
  1036. package/dist/switch/meta.d.ts +44 -51
  1037. package/dist/switch/meta.d.ts.map +1 -1
  1038. package/dist/switch/meta.js +68 -27
  1039. package/dist/table/Table.svelte +1065 -600
  1040. package/dist/table/Table.svelte.d.ts +95 -1
  1041. package/dist/table/Table.svelte.d.ts.map +1 -1
  1042. package/dist/table/meta.d.ts +221 -2
  1043. package/dist/table/meta.d.ts.map +1 -1
  1044. package/dist/table/meta.js +119 -18
  1045. package/dist/table/types.d.ts +36 -6
  1046. package/dist/table/types.d.ts.map +1 -1
  1047. package/dist/tabs/TabPane.svelte +4 -1
  1048. package/dist/tabs/TabPane.svelte.d.ts +2 -0
  1049. package/dist/tabs/TabPane.svelte.d.ts.map +1 -1
  1050. package/dist/tabs/Tabs.svelte +453 -280
  1051. package/dist/tabs/Tabs.svelte.d.ts +41 -32
  1052. package/dist/tabs/Tabs.svelte.d.ts.map +1 -1
  1053. package/dist/tabs/context.d.ts +3 -0
  1054. package/dist/tabs/context.d.ts.map +1 -1
  1055. package/dist/tabs/meta.d.ts +43 -47
  1056. package/dist/tabs/meta.d.ts.map +1 -1
  1057. package/dist/tabs/meta.js +76 -47
  1058. package/dist/tabs/types.d.ts +3 -0
  1059. package/dist/tabs/types.d.ts.map +1 -1
  1060. package/dist/tag/SplitTagGroup.svelte +62 -0
  1061. package/dist/tag/SplitTagGroup.svelte.d.ts +15 -0
  1062. package/dist/tag/SplitTagGroup.svelte.d.ts.map +1 -0
  1063. package/dist/tag/Tag.svelte +394 -261
  1064. package/dist/tag/Tag.svelte.d.ts +40 -23
  1065. package/dist/tag/Tag.svelte.d.ts.map +1 -1
  1066. package/dist/tag/TagGroup.svelte +208 -0
  1067. package/dist/tag/TagGroup.svelte.d.ts +56 -0
  1068. package/dist/tag/TagGroup.svelte.d.ts.map +1 -0
  1069. package/dist/tag/index.d.ts +2 -0
  1070. package/dist/tag/index.d.ts.map +1 -1
  1071. package/dist/tag/index.js +4 -0
  1072. package/dist/tag/meta.d.ts +157 -51
  1073. package/dist/tag/meta.d.ts.map +1 -1
  1074. package/dist/tag/meta.js +82 -45
  1075. package/dist/tag-input/TagInput.svelte +575 -261
  1076. package/dist/tag-input/TagInput.svelte.d.ts +52 -17
  1077. package/dist/tag-input/TagInput.svelte.d.ts.map +1 -1
  1078. package/dist/tag-input/meta.d.ts +132 -20
  1079. package/dist/tag-input/meta.d.ts.map +1 -1
  1080. package/dist/tag-input/meta.js +49 -21
  1081. package/dist/tag-input/split.d.ts +8 -0
  1082. package/dist/tag-input/split.d.ts.map +1 -0
  1083. package/dist/tag-input/split.js +22 -0
  1084. package/dist/time-picker/TimePicker.svelte +504 -722
  1085. package/dist/time-picker/TimePicker.svelte.d.ts +67 -47
  1086. package/dist/time-picker/TimePicker.svelte.d.ts.map +1 -1
  1087. package/dist/time-picker/meta.d.ts +201 -19
  1088. package/dist/time-picker/meta.d.ts.map +1 -1
  1089. package/dist/time-picker/meta.js +73 -16
  1090. package/dist/timeline/Timeline.svelte +212 -548
  1091. package/dist/timeline/Timeline.svelte.d.ts +9 -22
  1092. package/dist/timeline/Timeline.svelte.d.ts.map +1 -1
  1093. package/dist/timeline/TimelineItem.svelte +101 -143
  1094. package/dist/timeline/TimelineItem.svelte.d.ts +20 -20
  1095. package/dist/timeline/TimelineItem.svelte.d.ts.map +1 -1
  1096. package/dist/timeline/context.d.ts +8 -12
  1097. package/dist/timeline/context.d.ts.map +1 -1
  1098. package/dist/timeline/index.d.ts +2 -2
  1099. package/dist/timeline/index.d.ts.map +1 -1
  1100. package/dist/timeline/meta.d.ts +59 -95
  1101. package/dist/timeline/meta.d.ts.map +1 -1
  1102. package/dist/timeline/meta.js +81 -86
  1103. package/dist/timeline/types.d.ts +16 -5
  1104. package/dist/timeline/types.d.ts.map +1 -1
  1105. package/dist/toast/ToastContainer.svelte +111 -125
  1106. package/dist/toast/ToastContainer.svelte.d.ts +3 -0
  1107. package/dist/toast/ToastContainer.svelte.d.ts.map +1 -1
  1108. package/dist/toast/ToastHolder.svelte +18 -0
  1109. package/dist/toast/ToastHolder.svelte.d.ts +8 -0
  1110. package/dist/toast/ToastHolder.svelte.d.ts.map +1 -0
  1111. package/dist/toast/ToastItem.svelte +209 -191
  1112. package/dist/toast/ToastItem.svelte.d.ts +7 -0
  1113. package/dist/toast/ToastItem.svelte.d.ts.map +1 -1
  1114. package/dist/toast/index.d.ts +3 -2
  1115. package/dist/toast/index.d.ts.map +1 -1
  1116. package/dist/toast/index.js +2 -1
  1117. package/dist/toast/meta.d.ts +84 -53
  1118. package/dist/toast/meta.d.ts.map +1 -1
  1119. package/dist/toast/meta.js +69 -62
  1120. package/dist/toast/store.d.ts +79 -51
  1121. package/dist/toast/store.d.ts.map +1 -1
  1122. package/dist/toast/store.js +179 -116
  1123. package/dist/tooltip/Tooltip.svelte +533 -203
  1124. package/dist/tooltip/Tooltip.svelte.d.ts +90 -20
  1125. package/dist/tooltip/Tooltip.svelte.d.ts.map +1 -1
  1126. package/dist/tooltip/index.d.ts +1 -0
  1127. package/dist/tooltip/index.d.ts.map +1 -1
  1128. package/dist/tooltip/index.js +1 -0
  1129. package/dist/tooltip/meta.d.ts +131 -34
  1130. package/dist/tooltip/meta.d.ts.map +1 -1
  1131. package/dist/tooltip/meta.js +92 -28
  1132. package/dist/tooltip/placement.d.ts +21 -1
  1133. package/dist/tooltip/placement.d.ts.map +1 -1
  1134. package/dist/tooltip/placement.js +57 -1
  1135. package/dist/transfer/Transfer.svelte +686 -1100
  1136. package/dist/transfer/Transfer.svelte.d.ts +68 -73
  1137. package/dist/transfer/Transfer.svelte.d.ts.map +1 -1
  1138. package/dist/transfer/meta.d.ts +44 -65
  1139. package/dist/transfer/meta.d.ts.map +1 -1
  1140. package/dist/transfer/meta.js +76 -31
  1141. package/dist/transfer/types.d.ts +5 -0
  1142. package/dist/transfer/types.d.ts.map +1 -1
  1143. package/dist/tree/Tree.svelte +973 -422
  1144. package/dist/tree/Tree.svelte.d.ts +291 -72
  1145. package/dist/tree/Tree.svelte.d.ts.map +1 -1
  1146. package/dist/tree/meta.d.ts +246 -79
  1147. package/dist/tree/meta.d.ts.map +1 -1
  1148. package/dist/tree/meta.js +238 -58
  1149. package/dist/tree-select/TreeSelect.svelte +591 -240
  1150. package/dist/tree-select/TreeSelect.svelte.d.ts +88 -54
  1151. package/dist/tree-select/TreeSelect.svelte.d.ts.map +1 -1
  1152. package/dist/tree-select/meta.d.ts +344 -57
  1153. package/dist/tree-select/meta.d.ts.map +1 -1
  1154. package/dist/tree-select/meta.js +80 -26
  1155. package/dist/tree-select/types.d.ts +2 -0
  1156. package/dist/tree-select/types.d.ts.map +1 -1
  1157. package/dist/typography/Numeral.svelte +117 -0
  1158. package/dist/typography/Numeral.svelte.d.ts +35 -0
  1159. package/dist/typography/Numeral.svelte.d.ts.map +1 -0
  1160. package/dist/typography/Paragraph.svelte +20 -34
  1161. package/dist/typography/Paragraph.svelte.d.ts +8 -13
  1162. package/dist/typography/Paragraph.svelte.d.ts.map +1 -1
  1163. package/dist/typography/Text.svelte +22 -33
  1164. package/dist/typography/Text.svelte.d.ts +11 -13
  1165. package/dist/typography/Text.svelte.d.ts.map +1 -1
  1166. package/dist/typography/Title.svelte +23 -28
  1167. package/dist/typography/Title.svelte.d.ts +10 -11
  1168. package/dist/typography/Title.svelte.d.ts.map +1 -1
  1169. package/dist/typography/TypographyBase.svelte +534 -479
  1170. package/dist/typography/TypographyBase.svelte.d.ts +44 -29
  1171. package/dist/typography/TypographyBase.svelte.d.ts.map +1 -1
  1172. package/dist/typography/index.d.ts +3 -3
  1173. package/dist/typography/index.d.ts.map +1 -1
  1174. package/dist/typography/index.js +3 -3
  1175. package/dist/typography/meta.d.ts +190 -185
  1176. package/dist/typography/meta.d.ts.map +1 -1
  1177. package/dist/typography/meta.js +112 -85
  1178. package/dist/upload/FileCard.svelte +634 -0
  1179. package/dist/upload/FileCard.svelte.d.ts +40 -0
  1180. package/dist/upload/FileCard.svelte.d.ts.map +1 -0
  1181. package/dist/upload/Upload.svelte +1112 -650
  1182. package/dist/upload/Upload.svelte.d.ts +118 -66
  1183. package/dist/upload/Upload.svelte.d.ts.map +1 -1
  1184. package/dist/upload/index.d.ts +2 -1
  1185. package/dist/upload/index.d.ts.map +1 -1
  1186. package/dist/upload/index.js +1 -0
  1187. package/dist/upload/meta.d.ts +231 -72
  1188. package/dist/upload/meta.d.ts.map +1 -1
  1189. package/dist/upload/meta.js +84 -42
  1190. package/dist/upload/types.d.ts +137 -3
  1191. package/dist/upload/types.d.ts.map +1 -1
  1192. package/dist/user-guide/UserGuide.svelte +655 -0
  1193. package/dist/user-guide/UserGuide.svelte.d.ts +75 -0
  1194. package/dist/user-guide/UserGuide.svelte.d.ts.map +1 -0
  1195. package/dist/user-guide/index.d.ts +4 -0
  1196. package/dist/user-guide/index.d.ts.map +1 -0
  1197. package/dist/user-guide/index.js +2 -0
  1198. package/dist/user-guide/meta.d.ts +162 -0
  1199. package/dist/user-guide/meta.d.ts.map +1 -0
  1200. package/dist/user-guide/meta.js +60 -0
  1201. package/dist/video-player/ErrorSvg.svelte +15 -0
  1202. package/dist/video-player/ErrorSvg.svelte.d.ts +19 -0
  1203. package/dist/video-player/ErrorSvg.svelte.d.ts.map +1 -0
  1204. package/dist/video-player/VideoPlayer.svelte +769 -0
  1205. package/dist/video-player/VideoPlayer.svelte.d.ts +43 -0
  1206. package/dist/video-player/VideoPlayer.svelte.d.ts.map +1 -0
  1207. package/dist/video-player/VideoProgress.svelte +267 -0
  1208. package/dist/video-player/VideoProgress.svelte.d.ts +18 -0
  1209. package/dist/video-player/VideoProgress.svelte.d.ts.map +1 -0
  1210. package/dist/video-player/index.d.ts +4 -0
  1211. package/dist/video-player/index.d.ts.map +1 -0
  1212. package/dist/video-player/index.js +2 -0
  1213. package/dist/video-player/meta.d.ts +200 -0
  1214. package/dist/video-player/meta.d.ts.map +1 -0
  1215. package/dist/video-player/meta.js +159 -0
  1216. package/package.json +29 -4
  1217. package/dist/collapse/types.d.ts +0 -6
  1218. package/dist/collapse/types.d.ts.map +0 -1
  1219. package/dist/date-picker/RangePicker.svelte +0 -775
  1220. package/dist/date-picker/RangePicker.svelte.d.ts +0 -38
  1221. package/dist/date-picker/RangePicker.svelte.d.ts.map +0 -1
  1222. package/dist/date-picker/range-meta.d.ts +0 -100
  1223. package/dist/date-picker/range-meta.d.ts.map +0 -1
  1224. package/dist/date-picker/range-meta.js +0 -43
  1225. package/dist/drawer/Drawer.svelte +0 -554
  1226. package/dist/drawer/Drawer.svelte.d.ts +0 -54
  1227. package/dist/drawer/Drawer.svelte.d.ts.map +0 -1
  1228. package/dist/drawer/index.d.ts +0 -3
  1229. package/dist/drawer/index.d.ts.map +0 -1
  1230. package/dist/drawer/index.js +0 -2
  1231. package/dist/drawer/meta.d.ts +0 -147
  1232. package/dist/drawer/meta.d.ts.map +0 -1
  1233. package/dist/drawer/meta.js +0 -126
  1234. package/dist/dropdown/DropdownItemNode.svelte +0 -355
  1235. package/dist/dropdown/DropdownItemNode.svelte.d.ts +0 -14
  1236. package/dist/dropdown/DropdownItemNode.svelte.d.ts.map +0 -1
  1237. package/dist/dropdown/DropdownSubMenu.svelte +0 -212
  1238. package/dist/dropdown/DropdownSubMenu.svelte.d.ts +0 -15
  1239. package/dist/dropdown/DropdownSubMenu.svelte.d.ts.map +0 -1
  1240. package/dist/grid/use-breakpoint.svelte.d.ts +0 -13
  1241. package/dist/grid/use-breakpoint.svelte.d.ts.map +0 -1
  1242. package/dist/grid/use-breakpoint.svelte.js +0 -41
  1243. package/dist/icon/Icon.svelte +0 -156
  1244. package/dist/icon/Icon.svelte.d.ts +0 -23
  1245. package/dist/icon/Icon.svelte.d.ts.map +0 -1
  1246. package/dist/image/ImagePreviewGroup.svelte +0 -93
  1247. package/dist/image/ImagePreviewGroup.svelte.d.ts +0 -14
  1248. package/dist/image/ImagePreviewGroup.svelte.d.ts.map +0 -1
  1249. package/dist/image/context.d.ts +0 -16
  1250. package/dist/image/context.d.ts.map +0 -1
  1251. package/dist/image/context.js +0 -8
  1252. package/dist/list/ListMeta.svelte +0 -73
  1253. package/dist/list/ListMeta.svelte.d.ts +0 -14
  1254. package/dist/list/ListMeta.svelte.d.ts.map +0 -1
  1255. package/dist/lottie-icon/LottieIcon.svelte +0 -330
  1256. package/dist/lottie-icon/LottieIcon.svelte.d.ts +0 -44
  1257. package/dist/lottie-icon/LottieIcon.svelte.d.ts.map +0 -1
  1258. package/dist/lottie-icon/index.d.ts +0 -4
  1259. package/dist/lottie-icon/index.d.ts.map +0 -1
  1260. package/dist/lottie-icon/index.js +0 -2
  1261. package/dist/lottie-icon/meta.d.ts +0 -147
  1262. package/dist/lottie-icon/meta.js +0 -161
  1263. package/dist/menu/Menu.svelte +0 -843
  1264. package/dist/menu/Menu.svelte.d.ts +0 -95
  1265. package/dist/menu/Menu.svelte.d.ts.map +0 -1
  1266. package/dist/menu/MenuPopupNode.svelte +0 -525
  1267. package/dist/menu/MenuPopupNode.svelte.d.ts +0 -52
  1268. package/dist/menu/MenuPopupNode.svelte.d.ts.map +0 -1
  1269. package/dist/menu/index.d.ts +0 -5
  1270. package/dist/menu/index.d.ts.map +0 -1
  1271. package/dist/menu/index.js +0 -3
  1272. package/dist/menu/meta.d.ts +0 -147
  1273. package/dist/menu/meta.d.ts.map +0 -1
  1274. package/dist/menu/meta.js +0 -141
  1275. package/dist/menu/types.d.ts +0 -88
  1276. package/dist/menu/types.d.ts.map +0 -1
  1277. package/dist/menu/types.js +0 -34
  1278. package/dist/scroll-list/ScrollColumn.svelte +0 -592
  1279. package/dist/scroll-list/ScrollColumn.svelte.d.ts +0 -34
  1280. package/dist/scroll-list/ScrollColumn.svelte.d.ts.map +0 -1
  1281. package/dist/skeleton/context.d.ts +0 -10
  1282. package/dist/skeleton/context.d.ts.map +0 -1
  1283. package/dist/skeleton/context.js +0 -1
  1284. package/dist/textarea/TextArea.svelte +0 -420
  1285. package/dist/textarea/TextArea.svelte.d.ts +0 -69
  1286. package/dist/textarea/TextArea.svelte.d.ts.map +0 -1
  1287. package/dist/textarea/index.d.ts +0 -3
  1288. package/dist/textarea/index.d.ts.map +0 -1
  1289. package/dist/textarea/index.js +0 -2
  1290. package/dist/textarea/meta.d.ts +0 -170
  1291. package/dist/textarea/meta.d.ts.map +0 -1
  1292. package/dist/textarea/meta.js +0 -104
  1293. package/dist/toast/live-region.d.ts +0 -21
  1294. package/dist/toast/live-region.d.ts.map +0 -1
  1295. package/dist/toast/live-region.js +0 -57
  1296. package/dist/typography/Link.svelte +0 -120
  1297. package/dist/typography/Link.svelte.d.ts +0 -35
  1298. package/dist/typography/Link.svelte.d.ts.map +0 -1
  1299. /package/dist/{collapse/types.js → ai-chat-dialogue/render-config.js} +0 -0
@@ -3,28 +3,30 @@
3
3
  单选 / 多选 / 本地过滤 / 键盘导航 / 浮层。Token-driven, a11y-correct.
4
4
  下拉 portal 到 body + position:fixed(脱离 overflow:hidden 裁剪),matchWidth 跟随触发器宽度,flip 避让。
5
5
  maxTagCount:多选 tag 超出折叠为 +N。allowCreate:filter 无匹配时可创建新选项。
6
- 分组:options 含 { label, options:[] } 时按组渲染组标题;逻辑/键盘/filter 基于扁平序列。
7
- remote:提供 onSearch 时输入防抖回调(searchDebounce ms),由外部更新 options;loading 显示 spinner。
8
- 虚拟化:virtualized=true 时下拉只渲染视口内 option(复用 core fixedRange),spacer 撑总高、
6
+ 分组:optionList 含 { label, options:[] } 时按组渲染组标题;逻辑/键盘/filter 基于扁平序列。
7
+ remote:remote=true 时输入防抖回调 onSearch(value, event),由外部更新 optionList;loading 显示 spinner。
8
+ 虚拟化:传入 virtualize 对象时下拉只渲染视口内 option(复用 core fixedRange),spacer 撑总高、
9
9
  option 绝对定位按索引偏移;scrollTop 由命令式 scroll 回调 + rAF 节流写入本地 $state,可见区间
10
10
  纯 $derived render 期只读(红线 #2/#3)。键盘移动 activeIndex 时命令式 scrollOffsetForIndex 滚到可见
11
11
  (未渲染的 active option 移动后会被滚进视口而渲染,a11y 取舍同 Tree 虚拟化)。
12
- 虚拟化仅作用于「非分组」扁平选项集(hasGroups 时回退全量渲染,忽略 virtualized)。
12
+ 虚拟化仅作用于「非分组」扁平选项集(hasGroups 时回退全量渲染,忽略 virtualize)。
13
13
  dropdownMatchSelectWidth:浮层宽度是否跟随触发器(默认 true);false 时浮层自适应内容宽度。
14
14
  destroyOnClose:关闭时销毁浮层 DOM(默认 false,保持挂载)。
15
- getPopupContainer:浮层挂载目标容器(由 use:floating action 接管)。
16
- emptyContent/empty snippet:空态自定义内容。
15
+ getPopupContainer:浮层挂载目标容器(透传给 use:floating getContainer,portal 到该容器;缺省 body)。
16
+ 命令式 Methods(bind:this):open/close/focus/clearInput/deselectAll/selectAll/search/rePosition,对齐 Semi ref。
17
+ emptyContent snippet:空态自定义内容。
17
18
  prefix/suffix/arrowIcon/clearIcon snippet:触发器前后缀与图标。
18
- dropdownHeader/dropdownFooter snippet:浮层顶/底固定区。
19
- option snippet:自定义单项渲染;label snippet:自定义选中值/Tag 渲染。
19
+ innerTopSlot/innerBottomSlot snippet:浮层滚动区内顶/底固定区;outerTopSlot/outerBottomSlot:滚动区外固定区。
20
+ renderOptionItem snippet:完全自定义候选项渲染;renderSelectedItem snippet:自定义选中值/Tag 渲染。
20
21
  onSelect/onDeselect/onClear/onCreate/onFocus/onBlur/onScrollToBottom/onExceed/onChangeWithObject。
21
22
  autoClearSearchValue:多选选中后自动清空搜索词(默认 true)。
22
- showRestTagsPopover:+N tag 悬停展示剩余 tags(利用 title 属性)。
23
+ 多选折叠复用 TagGroup(mode=custom):可见 tag + 折叠 +N + hover Popover 全由 TagGroup 承担。
24
+ showRestTagsPopover:+N tag 悬停用 Popover 浮层展示剩余全部 tags(接 TagGroup showPopover);restTagsPopoverProps 透传给该 Popover。
23
25
  borderless:无边框模式;autoFocus:挂载自动聚焦;id:关联外部 label。
24
- optionLabelProp:用作回显的字段名(默认 'label',当前 OptionData 仅支持 label/value)。
25
26
  -->
26
27
  <script lang="ts">
27
28
  import type { Snippet } from 'svelte';
29
+ import { untrack } from 'svelte';
28
30
  import {
29
31
  useId,
30
32
  useDismiss,
@@ -32,8 +34,12 @@
32
34
  scrollOffsetForIndex,
33
35
  type Placement,
34
36
  } from '@chenzy-design/core';
37
+ import { IconClear, IconChevronDown, IconTick } from '@chenzy-design/icons';
35
38
  import { useLocale } from '../locale-provider/index.js';
36
39
  import { floating } from '../_floating/use-floating.js';
40
+ import Tag from '../tag/Tag.svelte';
41
+ import TagGroup from '../tag/TagGroup.svelte';
42
+ import { getInputGroupContext } from '../input/context.js';
37
43
 
38
44
  type OptionValue = string | number;
39
45
  type OptionData = { label: string; value: OptionValue; disabled?: boolean; [key: string]: unknown };
@@ -42,6 +48,8 @@
42
48
  type OptionOrGroup = OptionData | OptionGroup;
43
49
  type Size = 'small' | 'default' | 'large';
44
50
  type Status = 'default' | 'warning' | 'error';
51
+ /** 单个多选 Tag 的渲染信息(选项 + 截断后显示文本 + 是否被截断)。 */
52
+ type TagInfo = { opt: OptionData; display: string; truncated: boolean };
45
53
 
46
54
  function isGroup(o: OptionOrGroup): o is OptionGroup {
47
55
  return Array.isArray((o as OptionGroup).options);
@@ -50,63 +58,150 @@
50
58
  interface Props {
51
59
  value?: OptionValue | OptionValue[];
52
60
  defaultValue?: OptionValue | OptionValue[];
53
- /** 选项;可含分组项 { label, options: [] } */
54
- options?: OptionOrGroup[];
61
+ /** 选项;可含分组项 { label, options: [] }(对齐 Semi optionList) */
62
+ optionList?: OptionOrGroup[];
55
63
  multiple?: boolean;
56
- filter?: boolean;
64
+ /**
65
+ * 是否开启输入过滤(对齐 Semi filter: boolean | function)。
66
+ * boolean:true 时按选项 label 本地包含匹配;
67
+ * function:自定义过滤逻辑 (input, option) => boolean,返回 true 保留该项。
68
+ */
69
+ filter?: boolean | ((input: string, option: OptionData) => boolean);
57
70
  open?: boolean;
58
71
  defaultOpen?: boolean;
59
72
  size?: Size;
60
- status?: Status;
61
- /** 下拉浮层 placement(默认 bottomStart,自动避让仍生效) */
62
- placement?: Placement;
73
+ /** 校验态样式(对齐 Semi validateStatus) */
74
+ validateStatus?: Status;
75
+ /** 下拉浮层弹出位置(对齐 Semi position,默认 bottomStart,自动避让仍生效) */
76
+ position?: Placement;
63
77
  placeholder?: string;
64
78
  /** combobox 触发器可访问名;缺省回退到 placeholder 或 locale 默认 */
65
79
  ariaLabel?: string;
66
80
  /** 关联外部 label 的 id(优先于 ariaLabel) */
67
81
  ariaLabelledby?: string;
82
+ /** 关联外部辅助说明的 id(对齐 Semi withField aria-describedby 注入) */
83
+ ariaDescribedby?: string;
84
+ /** 关联外部错误提示的 id(对齐 Semi withField aria-errormessage 注入) */
85
+ ariaErrormessage?: string;
86
+ /** 标记为必填(对齐 Semi withField aria-required 注入) */
87
+ ariaRequired?: boolean;
68
88
  /** 绑定到触发器的 id 属性,用于关联外部 <label for="..."> */
69
89
  id?: string;
70
90
  disabled?: boolean;
71
- clearable?: boolean;
91
+ /** 多选/单选是否显示清除按钮(对齐 Semi showClear,默认 false) */
92
+ showClear?: boolean;
93
+ /** 多选最多可选项数(对齐 Semi max);达到上限后新增项被忽略并触发 onExceed */
94
+ max?: number;
72
95
  /** 多选 tag 最大显示数,超出折叠为 +N(0=不折叠) */
73
96
  maxTagCount?: number;
74
97
  /** 多选单个 Tag 文本最大长度,超出截断为「前缀…」,完整文本经 title 查看(不截则不传) */
75
98
  maxTagTextLength?: number;
76
99
  /** filter 无匹配时允许创建新选项(值=输入文本) */
77
100
  allowCreate?: boolean;
78
- /** 远程搜索:输入防抖后回调(由外部更新 options,不再本地过滤) */
79
- onSearch?: (query: string) => void;
101
+ /**
102
+ * 远程搜索(对齐 Semi remote,默认 false):为 true 时不本地过滤,
103
+ * 输入防抖后回调 onSearch,由外部按 query 更新 optionList。
104
+ */
105
+ remote?: boolean;
106
+ /** 搜索输入回调(对齐 Semi onSearch(value, event));remote=true 时防抖触发 */
107
+ onSearch?: (value: string, event?: Event) => void;
80
108
  /** 远程加载中(显示 spinner) */
81
109
  loading?: boolean;
82
- /** onSearch 防抖毫秒(默认 300) */
83
- searchDebounce?: number;
84
- /** 选项虚拟化:大数据下拉只渲染视口内 option(仅非分组生效,默认 false) */
85
- virtualized?: boolean;
86
- /** 虚拟化选项行高(px,默认 32);需与样式实际行高一致 */
87
- optionHeight?: number;
88
- /** 下拉最大高度(px,默认 256);虚拟化时同时作为视口高度 */
110
+ /**
111
+ * 选项虚拟化(对齐 Semi virtualize 对象):非分组大数据下拉只渲染视口内 option。
112
+ * itemSize:选项行高(px,默认 32,需与样式实际行高一致);
113
+ * height:虚拟视口高度(px,默认取 maxHeight);width:预留(当前跟随触发器宽度,忽略)。
114
+ * 传入该对象即开启虚拟化(仅非分组生效)。
115
+ */
116
+ virtualize?: { itemSize?: number; height?: number; width?: string | number };
117
+ /** 下拉最大高度(px,默认 270,对齐 Semi maxHeight) */
89
118
  maxHeight?: number;
90
119
  /** 浮层宽度是否跟随触发器(默认 true);false 时浮层自适应内容宽度 */
91
120
  dropdownMatchSelectWidth?: boolean;
121
+ /** 浮层根 div 追加的自定义 className(与内置 cd-select__dropdown 并存) */
122
+ dropdownClassName?: string;
123
+ /** 浮层根 div 合并的自定义内联样式(拼在内置 style 之后;勿含 position/transform,会与定位冲突) */
124
+ dropdownStyle?: string;
125
+ /** 浮层层级(z-index);不传时由 CSS 层级 token 控制 */
126
+ zIndex?: number;
127
+ /**
128
+ * 浮层与触发器的间距(px),映射到 floating 主轴 offset;不传保持默认 4。
129
+ * 兼容 Semi object 形态 { top?, bottom?, left?, right? }:按 placement 主轴方向取值
130
+ * (bottom/top 系取 bottom/top,left/right 系取 left/right),缺项回退默认。
131
+ */
132
+ dropdownMargin?: number | { top?: number; bottom?: number; left?: number; right?: number };
133
+ /** 浮层点击是否 stopPropagation(对齐 Semi stopPropagation,默认 true),避免冒泡到外层触发无关点击 */
134
+ stopPropagation?: boolean;
135
+ /** 触发器鼠标进入回调(对齐 Semi onMouseEnter) */
136
+ onMouseEnter?: (e: MouseEvent) => void;
137
+ /** 触发器鼠标离开回调(对齐 Semi onMouseLeave) */
138
+ onMouseLeave?: (e: MouseEvent) => void;
92
139
  /** 关闭时销毁浮层 DOM(默认 false,复用节点避免重建开销) */
93
140
  destroyOnClose?: boolean;
94
141
  /** 浮层挂载目标容器(默认 body) */
95
142
  getPopupContainer?: () => HTMLElement;
143
+ /** 浮层溢出视口时自动翻转到反向 placement(默认 true,对齐 Semi autoAdjustOverflow) */
144
+ autoAdjustOverflow?: boolean;
96
145
  /** 无边框模式:移除触发器边框 */
97
146
  borderless?: boolean;
98
147
  /** 挂载后自动聚焦触发器 */
99
148
  autoFocus?: boolean;
100
149
  /** 多选选中后自动清空搜索词(默认 true) */
101
150
  autoClearSearchValue?: boolean;
102
- /** 超出 maxTagCount 时,将 +N 悬停展示剩余 tags(title tooltip) */
151
+ /** 超出 maxTagCount 折叠出 +N 时,hover +N 用 Popover 浮层展示剩余全部 Tag(对齐 Semi restTagsPopover) */
103
152
  showRestTagsPopover?: boolean;
104
- /** 透传给 +N 悬停 popover 的参数(预留,当前通过 title 实现) */
153
+ /** 透传给 +N 悬停 Popover 浮层的配置(spread Popover,可覆盖 position/trigger/spacing 等) */
105
154
  restTagsPopoverProps?: Record<string, unknown>;
106
- /** 用作回显的字段名(默认 'label');当选项含自定义字段时取对应值作显示文本 */
107
- optionLabelProp?: string;
155
+ /**
156
+ * 打开浮层时是否默认高亮第一个可用选项(键盘 Enter 可直接选中,对齐 Semi v2.17+ 默认 true)。
157
+ * 接入 activeIndex 初始化:打开时把 activeIndex 定位到首个非禁用选项(filter 输入变化后同样重定位)。
158
+ */
159
+ defaultActiveFirstOption?: boolean;
160
+ /**
161
+ * 透传给搜索 input 的额外属性(filter 搜索框;searchPosition='trigger' 内联 input 与 'dropdown' 浮层 input 均生效)。
162
+ * 对齐 Semi:勿传 value/onChange/onFocus 等会覆盖组件内部搜索回调的键(内部绑定优先,展开在前)。
163
+ */
164
+ inputProps?: Record<string, unknown>;
165
+ /** 是否显示触发器右侧下拉箭头(默认 true);false 时隐藏箭头区(suffix 存在时以 suffix 为准) */
166
+ showArrow?: boolean;
167
+ /** 浮层已展开时,点击触发器是否收起浮层(默认 false;对齐 Semi clickToHide) */
168
+ clickToHide?: boolean;
169
+ /** 浮层选项列表滚动时的回调(对齐 Semi onListScroll,携带原生 scroll 事件) */
170
+ onListScroll?: (e: Event) => void;
171
+ /** autoFocus/命令式聚焦触发器时是否传入 focus({ preventScroll }),避免页面跳动(对齐 Semi preventScroll) */
172
+ preventScroll?: boolean;
173
+ /**
174
+ * 多选且 maxTagCount 折叠出 +N 时,浮层打开状态下是否就地展开剩余全部 Tag(对齐 Semi expandRestTagsOnClick)。
175
+ * 对齐 Semi renderMultipleSelection:为 true 且浮层打开时全量展开(NotOneLine 分支),关闭时复位折叠;
176
+ * 展开为纯展示态,不影响选中值。点击触发器即打开浮层→展开,无需单独点击 +N。
177
+ */
178
+ expandRestTagsOnClick?: boolean;
179
+ /**
180
+ * 多选且存在 maxTagCount 时,对溢出部分的可见 Tag 做省略处理(最后一个可见 Tag 文本超出触发器宽度时截断为「前缀…」)。
181
+ * 对齐 Semi ellipsisTrigger:纯 CSS 单行省略,完整文本经 title 查看;不影响选中值。
182
+ */
183
+ ellipsisTrigger?: boolean;
184
+ /**
185
+ * 搜索框位置(对齐 Semi searchPosition,默认 'trigger'):'trigger'(搜索输入内联在触发器上)
186
+ * | 'dropdown'(浮层内独立搜索框)。仅在 filter 开启时生效。'trigger' 时输入框长驻触发器
187
+ * (单选选中值作 placeholder,多选与 tags 并排),键入即就地过滤。
188
+ */
189
+ searchPosition?: 'dropdown' | 'trigger';
190
+ /** 搜索框占位文本(对齐 Semi searchPlaceholder);缺省走 locale Select.searchPlaceholder */
191
+ searchPlaceholder?: string;
192
+ /**
193
+ * 内嵌标签:浮入触发器左侧的常驻标签(string 或 Snippet),用于「标签+值」一体式触发器。
194
+ * 渲染在前缀之后、内容之前,不影响选中值/过滤逻辑(纯展示,对齐 DatePicker insetInput 的展示层定位)。
195
+ */
196
+ insetLabel?: string | Snippet;
197
+ /**
198
+ * insetLabel 的 id,挂到内嵌标签元素上并经 aria-labelledby 关联触发器 combobox,
199
+ * 使屏幕阅读器把内嵌标签朗读为触发器可访问名的一部分。仅 insetLabel 存在时生效。
200
+ */
201
+ insetLabelId?: string;
108
202
  onChange?: (v: OptionValue | OptionValue[]) => void;
109
- onOpenChange?: (open: boolean) => void;
203
+ /** 浮层显隐变化回调(对齐 Semi onDropdownVisibleChange) */
204
+ onDropdownVisibleChange?: (open: boolean) => void;
110
205
  /** 选中某项时触发(多选:每次单个 toggle 选中时;单选:选中时) */
111
206
  onSelect?: (value: OptionValue, option: OptionData) => void;
112
207
  /** 多选取消某项时触发 */
@@ -129,63 +224,123 @@
129
224
  prefix?: Snippet;
130
225
  /** 触发器右侧后缀(覆盖默认箭头区域) */
131
226
  suffix?: Snippet;
227
+ /** 根容器内联样式(对齐 Semi style,可设 width 等) */
228
+ style?: string;
229
+ /** 根容器自定义类名(与内置 cd-select 并存,对齐 Semi className) */
230
+ class?: string;
132
231
  /** 自定义清除按钮图标 */
133
232
  clearIcon?: Snippet;
134
233
  /** 自定义下拉箭头图标 */
135
234
  arrowIcon?: Snippet;
136
- /** 自定义空态内容(字符串或 Snippet 均可,为字符串时直接渲染文本) */
235
+ /** 自定义空态内容(字符串或 Snippet 均可,为字符串时直接渲染文本,对齐 Semi emptyContent) */
137
236
  emptyContent?: string | Snippet;
138
- /** 自定义空态 snippet(与 emptyContent 等价,优先级同) */
139
- empty?: Snippet;
140
- /** 浮层顶部固定区 */
141
- dropdownHeader?: Snippet;
142
- /** 浮层底部固定区 */
143
- dropdownFooter?: Snippet;
144
- /** 自定义单项渲染 */
145
- option?: Snippet<[{ option: OptionData; selected: boolean; active: boolean }]>;
146
- /** 自定义选中值/Tag 渲染 */
147
- label?: Snippet<[{ option: OptionData }]>;
237
+ /** 浮层顶部固定区(inner:渲染在滚动列表内部顶端,随 optionList 滚动,对齐 Semi innerTopSlot) */
238
+ innerTopSlot?: Snippet;
239
+ /** 浮层底部固定区(inner:渲染在滚动列表内部底端,随 optionList 滚动,对齐 Semi innerBottomSlot) */
240
+ innerBottomSlot?: Snippet;
241
+ /** 浮层最外层顶部 slot(outer:与滚动列表平级、位于滚动区之外,始终固定展现,对齐 Semi outerTopSlot) */
242
+ outerTopSlot?: Snippet;
243
+ /** 浮层最外层底部 slot(outer:与滚动列表平级、位于滚动区之外,始终固定展现,对齐 Semi outerBottomSlot) */
244
+ outerBottomSlot?: Snippet;
245
+ /** 完全自定义候选项渲染(对齐 Semi renderOptionItem,入参含 selected/focused/onMouseEnter/onClick) */
246
+ renderOptionItem?: Snippet<
247
+ [
248
+ {
249
+ option: OptionData;
250
+ selected: boolean;
251
+ focused: boolean;
252
+ onMouseEnter: () => void;
253
+ onClick: () => void;
254
+ },
255
+ ]
256
+ >;
257
+ /** 自定义已选项标签/回显渲染(对齐 Semi renderSelectedItem,单选返回节点,多选逐个 Tag 内容) */
258
+ renderSelectedItem?: Snippet<[{ option: OptionData }]>;
148
259
  /** 自定义"创建xxx"项渲染 */
149
260
  renderCreateItem?: Snippet<[string]>;
261
+ /**
262
+ * 完全自定义触发器渲染,替换默认 combobox 触发框。
263
+ * 入参含当前 value/选中项/placeholder/open 态,供调用方自绘触发器。
264
+ * a11y 注意:默认触发框携带的 role=combobox / aria-expanded / 键盘(↑↓/Enter/Esc)随之移除;
265
+ * 自定义触发器需自行把必要 aria(role/aria-expanded/aria-controls)与聚焦/键盘事件挂到自绘元素上,
266
+ * 或复用 params 里透传的 open/toggle/onTriggerKeydown 保持键盘可达。
267
+ */
268
+ triggerRender?: Snippet<
269
+ [
270
+ {
271
+ value: OptionValue | OptionValue[] | undefined;
272
+ selectedOptions: OptionData[];
273
+ placeholder: string;
274
+ open: boolean;
275
+ disabled: boolean;
276
+ toggle: () => void;
277
+ onTriggerKeydown: (e: KeyboardEvent) => void;
278
+ },
279
+ ]
280
+ >;
150
281
  }
151
282
 
152
283
  let {
153
284
  value = $bindable(),
154
285
  defaultValue,
155
- options = [],
286
+ optionList = [],
156
287
  multiple = false,
157
288
  filter = false,
158
- open = $bindable(),
289
+ open: openProp = $bindable(),
159
290
  defaultOpen = false,
160
- size = 'default',
161
- status = 'default',
162
- placement = 'bottomStart',
291
+ size: sizeProp,
292
+ style,
293
+ class: className,
294
+ validateStatus = 'default',
295
+ position = 'bottomStart',
163
296
  placeholder,
164
297
  ariaLabel,
165
298
  ariaLabelledby,
299
+ ariaDescribedby,
300
+ ariaErrormessage,
301
+ ariaRequired,
166
302
  id,
167
- disabled = false,
168
- clearable = false,
303
+ disabled: disabledProp,
304
+ showClear = false,
305
+ max,
169
306
  maxTagCount = 0,
170
307
  maxTagTextLength,
171
308
  allowCreate = false,
309
+ remote = false,
172
310
  onSearch,
173
311
  loading = false,
174
- searchDebounce = 300,
175
- virtualized = false,
176
- optionHeight = 32,
177
- maxHeight = 256,
312
+ virtualize,
313
+ maxHeight = 270,
178
314
  dropdownMatchSelectWidth = true,
315
+ dropdownClassName,
316
+ dropdownStyle,
317
+ zIndex,
318
+ dropdownMargin,
319
+ stopPropagation = true,
320
+ onMouseEnter,
321
+ onMouseLeave,
179
322
  destroyOnClose = false,
180
323
  getPopupContainer,
324
+ autoAdjustOverflow = true,
181
325
  borderless = false,
182
326
  autoFocus = false,
183
327
  autoClearSearchValue = true,
184
328
  showRestTagsPopover = false,
185
329
  restTagsPopoverProps,
186
- optionLabelProp = 'label',
330
+ defaultActiveFirstOption = true,
331
+ inputProps,
332
+ showArrow = true,
333
+ clickToHide = false,
334
+ onListScroll,
335
+ preventScroll = false,
336
+ expandRestTagsOnClick = false,
337
+ ellipsisTrigger = false,
338
+ searchPosition = 'trigger',
339
+ searchPlaceholder,
340
+ insetLabel,
341
+ insetLabelId,
187
342
  onChange,
188
- onOpenChange,
343
+ onDropdownVisibleChange,
189
344
  onSelect,
190
345
  onDeselect,
191
346
  onClear,
@@ -200,14 +355,21 @@
200
355
  clearIcon,
201
356
  arrowIcon,
202
357
  emptyContent,
203
- empty,
204
- dropdownHeader,
205
- dropdownFooter,
206
- option: optionSnippet,
207
- label: labelSnippet,
358
+ innerTopSlot,
359
+ innerBottomSlot,
360
+ outerTopSlot,
361
+ outerBottomSlot,
362
+ renderOptionItem,
363
+ renderSelectedItem,
208
364
  renderCreateItem,
365
+ triggerRender,
209
366
  }: Props = $props();
210
367
 
368
+ // InputGroup 组级默认(size/disabled):显式 prop 始终优先,否则回退组级,再回退组件默认。
369
+ const group = getInputGroupContext();
370
+ const size = $derived<Size>(sizeProp ?? group?.size ?? 'default');
371
+ const disabled = $derived<boolean>(disabledProp ?? group?.disabled ?? false);
372
+
211
373
  const loc = useLocale();
212
374
 
213
375
  const listId = useId('cd-select-list');
@@ -235,10 +397,10 @@
235
397
  onChange?.(next);
236
398
  }
237
399
 
238
- // --- 受控 open (红线 #1): 不无条件回写 open,仅 onOpenChange ---
239
- const isOpenControlled = $derived(open !== undefined);
400
+ // --- 受控 open (红线 #1): 不无条件回写 open,仅 onDropdownVisibleChange ---
401
+ const isOpenControlled = $derived(openProp !== undefined);
240
402
  let innerOpen = $state(getInitialOpen());
241
- const isOpen = $derived(isOpenControlled ? !!open : innerOpen);
403
+ const isOpen = $derived(isOpenControlled ? !!openProp : innerOpen);
242
404
 
243
405
  function getInitialOpen(): boolean {
244
406
  return defaultOpen;
@@ -247,42 +409,53 @@
247
409
  function setOpen(next: boolean) {
248
410
  if (next === isOpen) return;
249
411
  if (!isOpenControlled) innerOpen = next;
250
- onOpenChange?.(next);
412
+ onDropdownVisibleChange?.(next);
251
413
  if (!next) {
252
414
  activeIndex = -1;
253
415
  query = '';
254
416
  }
255
417
  }
256
418
 
257
- // 挂载自动聚焦(autoFocus)。
419
+ // rePosition() 命令式重定位钩子:递增该 key 传入 use:floating 参数,触发 action 的 update
420
+ // 在原位重算浮层位置(use-floating action 参数变化且 trigger/placement 不变时走 handle.update())。
421
+ let reposKey = $state(0);
422
+
423
+ // 挂载自动聚焦(autoFocus);preventScroll 时透传给 focus 避免页面跳动。
258
424
  $effect(() => {
259
425
  if (!autoFocus || !rootEl) return;
260
426
  const trigger = rootEl.querySelector<HTMLElement>('[role="combobox"]');
261
- trigger?.focus();
427
+ trigger?.focus({ preventScroll });
262
428
  });
263
429
 
264
430
  // --- 本地过滤搜索 ---
265
431
  let query = $state('');
266
432
 
267
433
  // 是否含分组:决定渲染走分组结构还是扁平。
268
- const hasGroups = $derived(options.some(isGroup));
434
+ const hasGroups = $derived(optionList.some(isGroup));
269
435
  // 扁平选项序列(拍平分组)——逻辑/键盘/filter/回显统一基于它。
270
436
  const flatBase = $derived<OptionData[]>(
271
- options.flatMap((o) => (isGroup(o) ? o.options : [o])),
437
+ optionList.flatMap((o) => (isGroup(o) ? o.options : [o])),
272
438
  );
273
439
 
274
- // allowCreate:本地已创建选项,合并进选项集供回显与列表(不写回 options prop)。
440
+ // allowCreate:本地已创建选项,合并进选项集供回显与列表(不写回 optionList prop)。
275
441
  let createdOptions = $state<OptionData[]>([]);
276
442
  const mergedOptions = $derived<OptionData[]>(
277
443
  createdOptions.length === 0 ? flatBase : [...flatBase, ...createdOptions],
278
444
  );
279
445
 
280
- // remote 模式:外部已按 query 更新 options,本地不再过滤。
281
- const isRemote = $derived(onSearch !== undefined);
446
+ // remote 模式(对齐 Semi remote 布尔):外部已按 query 更新 optionList,本地不再过滤。
447
+ const isRemote = $derived(remote);
448
+ // filter 是否开启(boolean true 或函数形态)。
449
+ const filterEnabled = $derived(filter === true || typeof filter === 'function');
282
450
 
283
451
  const filteredOptions = $derived.by(() => {
284
452
  if (isRemote) return mergedOptions;
285
- if (!filter || query.trim() === '') return mergedOptions;
453
+ if (!filterEnabled || query.trim() === '') return mergedOptions;
454
+ // 函数形态:自定义过滤逻辑 (input, option) => boolean(对齐 Semi filter function)。
455
+ if (typeof filter === 'function') {
456
+ const q = query.trim();
457
+ return mergedOptions.filter((o) => (filter as (i: string, o: OptionData) => boolean)(q, o));
458
+ }
286
459
  const q = query.toLowerCase();
287
460
  return mergedOptions.filter((o) => o.label.toLowerCase().includes(q));
288
461
  });
@@ -293,7 +466,7 @@
293
466
  if (!hasGroups) return [];
294
467
  const out: { label: string | null; items: { opt: OptionData; flatIndex: number }[] }[] = [];
295
468
  const indexOf = (opt: OptionData) => filteredOptions.indexOf(opt);
296
- for (const o of options) {
469
+ for (const o of optionList) {
297
470
  if (isGroup(o)) {
298
471
  const items = o.options
299
472
  .filter((opt) => filteredOptions.includes(opt))
@@ -314,7 +487,7 @@
314
487
  // 当前输入是否可创建新选项:allowCreate + filter 有输入 + 无 label 完全匹配。
315
488
  const canCreate = $derived(
316
489
  allowCreate &&
317
- filter &&
490
+ filterEnabled &&
318
491
  query.trim() !== '' &&
319
492
  !mergedOptions.some((o) => o.label.toLowerCase() === query.trim().toLowerCase()),
320
493
  );
@@ -332,6 +505,20 @@
332
505
  // --- roving 高亮 (红线 #2): activeIndex 为本地 $state,不依赖挂载 registry ---
333
506
  let activeIndex = $state(-1);
334
507
 
508
+ // defaultActiveFirstOption(对齐 Semi 默认 true):浮层打开时默认高亮首个可用选项,
509
+ // 使键盘 Enter 可直接选中;filter 输入变化导致选项集变更后同样重定位到首项。
510
+ // 依赖 isOpen + filteredOptions(选项集)触发;activeIndex 以 untrack 读取避免自触发循环
511
+ // (写回 activeIndex 不应再次调度本 effect —— 参考记忆「声明式子组件注册勿用 $state 数组」的自循环坑)。
512
+ $effect(() => {
513
+ if (!defaultActiveFirstOption || !isOpen) return;
514
+ const list = filteredOptions; // 显式建立依赖:选项集变化后重算
515
+ const len = list.length;
516
+ const cur = untrack(() => activeIndex);
517
+ if (cur < 0 || cur >= len) {
518
+ activeIndex = list.findIndex((o) => !o.disabled);
519
+ }
520
+ });
521
+
335
522
  const activeOptionId = $derived(
336
523
  activeIndex >= 0 && activeIndex < filteredOptions.length
337
524
  ? `${listId}-opt-${activeIndex}`
@@ -341,10 +528,11 @@
341
528
  // --- 选项虚拟化(仅非分组生效;分组时回退全量渲染)---
342
529
  // 视口=下拉容器自身滚动;scrollTop 由命令式 scroll 回调写入本地 $state,
343
530
  // 可见区间纯 $derived render 期只读不读 DOM(红线 #2/#3)。
531
+ // virtualize 对象(对齐 Semi):传入即开启(仅非分组);itemSize 行高、height 视口高。
344
532
  const VIRTUAL_OVERSCAN = 4;
345
- const isVirtual = $derived(virtualized && !hasGroups);
346
- const vOptionHeight = $derived(optionHeight > 0 ? optionHeight : 32);
347
- const vViewportH = $derived(maxHeight > 0 ? maxHeight : 256);
533
+ const isVirtual = $derived(virtualize !== undefined && !hasGroups);
534
+ const vOptionHeight = $derived(virtualize?.itemSize && virtualize.itemSize > 0 ? virtualize.itemSize : 32);
535
+ const vViewportH = $derived(virtualize?.height && virtualize.height > 0 ? virtualize.height : (maxHeight > 0 ? maxHeight : 270));
348
536
  // 仅由 scroll 回调写入的本地 scrollTop,render 期只读。
349
537
  let scrollTop = $state(0);
350
538
  // rAF 节流句柄(非响应式)。
@@ -370,25 +558,34 @@
370
558
  return text.length > limit ? `${text.slice(0, limit)}…` : text;
371
559
  }
372
560
 
373
- // maxTagCount 折叠:显示前 N tag + 隐藏数。
561
+ // maxTagCount 折叠:折叠逻辑复用 TagGroup(mode=custom),本组件只组装 tag 数据 + 折叠开关。
374
562
  // maxTagTextLength 仅影响 tag 显示文本(截断派生),实际值/回显不变(红线 #1/#2)。
375
- const visibleTags = $derived(
376
- (maxTagCount > 0 ? selectedOptions.slice(0, maxTagCount) : selectedOptions).map(
377
- (opt) => {
378
- const raw = getOptionLabel(opt);
379
- const display = truncate(raw, maxTagTextLength);
380
- return { opt, display, truncated: display !== raw };
381
- },
382
- ),
563
+ // expandRestTagsOnClick 且已点击 +N 展开(restTagsExpanded)时,视为不折叠、全量展示(对齐 Semi)。
564
+ // 对齐 Semi renderMultipleSelection:expandRestTagsOnClick 且浮层打开时全量展开(NotOneLine 分支),
565
+ // 否则折叠。展开由「浮层打开」驱动(点击触发器即开浮层→展开),无需 +N 单独点击态。
566
+ const tagsCollapsed = $derived(
567
+ maxTagCount > 0 && !(expandRestTagsOnClick && isOpen),
568
+ );
569
+ // 全部已选项的显示信息(label 截断态一并算好,供 tag 内容渲染)。
570
+ const allTags = $derived(
571
+ selectedOptions.map((opt) => {
572
+ const raw = getOptionLabel(opt);
573
+ const display = truncate(raw, maxTagTextLength);
574
+ return { opt, display, truncated: display !== raw };
575
+ }),
576
+ );
577
+ // 折叠时透传给 TagGroup 的 maxTagCount(对齐 Semi:n = length>max ? max : undefined)。
578
+ const tagGroupMaxCount = $derived(
579
+ tagsCollapsed && selectedOptions.length > maxTagCount ? maxTagCount : undefined,
383
580
  );
384
- const hiddenTagCount = $derived(
385
- maxTagCount > 0 ? Math.max(0, selectedOptions.length - maxTagCount) : 0,
581
+ // 折叠时透传给 TagGroup 的 restCount(对齐 Semi:selectedItems.length - maxTagCount)。
582
+ const tagGroupRestCount = $derived(
583
+ tagsCollapsed ? Math.max(0, selectedOptions.length - maxTagCount) : undefined,
386
584
  );
387
585
 
388
- // optionLabelProp:取选项对应字段作为显示文本(默认 'label')。
586
+ // 取选项显示文本(对齐 Semi:以 label 字段回显)。
389
587
  function getOptionLabel(opt: OptionData): string {
390
- const val = opt[optionLabelProp];
391
- return typeof val === 'string' ? val : opt.label;
588
+ return opt.label;
392
589
  }
393
590
 
394
591
  const singleLabel = $derived(
@@ -396,7 +593,7 @@
396
593
  );
397
594
 
398
595
  const hasSelection = $derived(selectedValues.length > 0);
399
- const showClear = $derived(clearable && !disabled && hasSelection);
596
+ const showClearBtn = $derived(showClear && !disabled && hasSelection);
400
597
 
401
598
  function isSelected(v: OptionValue): boolean {
402
599
  return selectedValues.includes(v);
@@ -409,6 +606,11 @@
409
606
  const idx = set.indexOf(opt.value);
410
607
  const isAdd = idx === -1;
411
608
  if (isAdd) {
609
+ // max(对齐 Semi):已达上限时忽略新增并通知 onExceed,不改变选中值。
610
+ if (max !== undefined && max >= 0 && set.length >= max) {
611
+ onExceed?.(opt);
612
+ return;
613
+ }
412
614
  set.push(opt.value);
413
615
  onSelect?.(opt.value, opt);
414
616
  // onExceed:新增后超出 maxTagCount 时,把被隐藏的 option 逐个通知
@@ -454,9 +656,57 @@
454
656
 
455
657
  function toggleOpen() {
456
658
  if (disabled) return;
659
+ // clickToHide(对齐 Semi,默认 false):展开态下点击触发器默认不收起浮层,
660
+ // 仅 clickToHide=true 时点击收起;关闭态点击始终打开。
661
+ if (isOpen && !clickToHide) return;
457
662
  setOpen(!isOpen);
458
663
  }
459
664
 
665
+ // --- 命令式 Methods(对齐 Semi ref API 形状;配 bind:this 调用)---
666
+ // open()/close() 与 open prop 不冲突:prop 已解构为 openProp,open 标识符在此供方法名占用。
667
+ /** 打开浮层 */
668
+ export function open(): void {
669
+ setOpen(true);
670
+ }
671
+ /** 关闭浮层 */
672
+ export function close(): void {
673
+ setOpen(false);
674
+ }
675
+ /** 聚焦触发器(复用 autoFocus 的 combobox 查询 + preventScroll 透传) */
676
+ export function focus(): void {
677
+ rootEl?.querySelector<HTMLElement>('[role="combobox"]')?.focus({ preventScroll });
678
+ }
679
+ /** 清空搜索框(写 query state 即经 $derived 重算 filteredOptions;一并回调 onSearch('')) */
680
+ export function clearInput(): void {
681
+ query = '';
682
+ emitSearch('');
683
+ }
684
+ /** 清空所有已选(复用 clearAll 的值/回调逻辑,无事件) */
685
+ export function deselectAll(): void {
686
+ if (disabled) return;
687
+ setValue(multiple ? [] : '');
688
+ onClear?.();
689
+ }
690
+ /** 全选(仅多选生效):选中全量选项集里所有非禁用项的 value */
691
+ export function selectAll(): void {
692
+ if (!multiple || disabled) return;
693
+ // mergedOptions = flatBase(拍平分组) + createdOptions,即全量可选源(非 filteredOptions)。
694
+ const all = mergedOptions.filter((o) => !o.disabled).map((o) => o.value);
695
+ setValue(all);
696
+ const newSelected = mergedOptions.filter((o) => all.includes(o.value));
697
+ onChangeWithObject?.(newSelected);
698
+ }
699
+ /** 命令式设置搜索值并触发过滤(比照 onSearchInput:写 query 重算 filteredOptions;回调 onSearch) */
700
+ export function search(value: string): void {
701
+ query = value;
702
+ activeIndex = -1;
703
+ emitSearch(value);
704
+ }
705
+ /** 触发浮层重新定位(递增 reposKey 触发 use:floating action 原位重算) */
706
+ export function rePosition(): void {
707
+ reposKey += 1;
708
+ }
709
+
460
710
  function moveActive(delta: number) {
461
711
  const len = filteredOptions.length;
462
712
  if (len === 0) return;
@@ -564,29 +814,23 @@
564
814
  }
565
815
  }
566
816
 
567
- // --- remote 搜索防抖(命令式定时器 + cleanup,红线 #3)---
568
- let searchTimer: ReturnType<typeof setTimeout> | undefined;
569
- function scheduleSearch(q: string) {
570
- if (searchTimer !== undefined) clearTimeout(searchTimer);
571
- searchTimer = setTimeout(() => {
572
- searchTimer = undefined;
573
- onSearch?.(q);
574
- }, Math.max(0, searchDebounce));
817
+ // --- 搜索回调(对齐 Semi onSearch(value, event);防抖交由使用方处理)---
818
+ function emitSearch(q: string, event?: Event) {
819
+ onSearch?.(q, event);
575
820
  }
576
- // 卸载兜底清理。
577
- $effect(() => () => {
578
- if (searchTimer !== undefined) clearTimeout(searchTimer);
579
- });
580
821
 
581
822
  function onSearchInput(e: Event & { currentTarget: HTMLInputElement }) {
582
823
  query = e.currentTarget.value;
583
824
  if (!isOpen) setOpen(true);
584
825
  activeIndex = -1;
585
- if (isRemote) scheduleSearch(query);
826
+ emitSearch(query, e);
586
827
  }
587
828
 
588
- // --- DOM 引用:触发根 + portal 下拉(定位由 use:floating action 接管)---
829
+ // --- DOM 引用:触发根 + portal 下拉外层容器 + 内层滚动列表(定位由 use:floating action 接管)---
589
830
  let rootEl = $state<HTMLDivElement | null>(null);
831
+ // dropdownRootEl:浮层最外层(use:floating 定位、outer slot 所在层)。
832
+ let dropdownRootEl = $state<HTMLDivElement | null>(null);
833
+ // dropdownEl:内层 role=listbox 滚动容器(onListScroll/虚拟化/触底/浮层搜索聚焦均以它为准)。
590
834
  let dropdownEl = $state<HTMLDivElement | null>(null);
591
835
 
592
836
  // --- 虚拟化滚动监听(命令式 + rAF 节流 + cleanup,红线 #3)---
@@ -599,7 +843,7 @@
599
843
  // 重新打开时复位滚动位置,避免沿用上次 scrollTop。
600
844
  scrollTop = el.scrollTop;
601
845
  }
602
- function onScroll() {
846
+ function onScroll(e: Event) {
603
847
  if (isVirtual) {
604
848
  if (rafId) return;
605
849
  rafId = requestAnimationFrame(() => {
@@ -607,6 +851,8 @@
607
851
  if (el) scrollTop = el.scrollTop;
608
852
  });
609
853
  }
854
+ // 选项列表滚动回调(对齐 Semi onListScroll,携带原生事件)
855
+ onListScroll?.(e);
610
856
  // 触底检测(1px 容差)
611
857
  if (onScrollToBottom && el) {
612
858
  const atBottom = el.scrollTop + el.clientHeight >= el.scrollHeight - 1;
@@ -630,116 +876,189 @@
630
876
  onDismiss: () => setOpen(false),
631
877
  escape: true,
632
878
  outsideClick: true,
633
- extraTargets: [dropdownEl],
879
+ extraTargets: [dropdownRootEl],
634
880
  });
635
881
  return cleanup;
636
882
  });
637
883
 
884
+ // dropdownMargin → floating 主轴 offset:number 直用;object 按 placement 主轴取值(缺项回退 4)。
885
+ const dropdownOffset = $derived.by(() => {
886
+ if (dropdownMargin === undefined) return 4;
887
+ if (typeof dropdownMargin === 'number') return dropdownMargin;
888
+ const horizontal = position.startsWith('left') || position.startsWith('right');
889
+ if (horizontal) return (position.startsWith('left') ? dropdownMargin.left : dropdownMargin.right) ?? 4;
890
+ return (position.startsWith('top') ? dropdownMargin.top : dropdownMargin.bottom) ?? 4;
891
+ });
892
+
893
+ // 浮层根 div class:内置类名 + dropdownClassName。
894
+ const dropdownCls = $derived(
895
+ ['cd-select__dropdown', dropdownClassName].filter(Boolean).join(' '),
896
+ );
897
+
898
+ // 浮层最外层 div 内联样式:可选 z-index + dropdownStyle(用户自定义样式,如 width)。
899
+ // 注意 use:floating 后写 position/transform(inline 优先级更高),此串勿含二者。
900
+ const dropdownRootInlineStyle = $derived(
901
+ [
902
+ zIndex !== undefined ? `z-index:${zIndex}` : undefined,
903
+ dropdownStyle,
904
+ ]
905
+ .filter(Boolean)
906
+ .join(';') || undefined,
907
+ );
908
+
909
+ // 内层滚动列表内联样式:max-block-size 限高 + 溢出滚动(outer slot 不受此限高裁剪)。
910
+ const dropdownListInlineStyle = $derived(`max-block-size:${maxHeight}px`);
911
+
638
912
  const cls = $derived(
639
913
  [
640
914
  'cd-select',
641
915
  `cd-select--${size}`,
642
- `cd-select--${status}`,
916
+ // 校验态(对齐 Semi validateStatus):仅 warning/error 有视觉样式,default 不加类。
917
+ validateStatus === 'warning' && 'cd-select--warning',
918
+ validateStatus === 'error' && 'cd-select--error',
643
919
  disabled && 'cd-select--disabled',
644
920
  isOpen && 'cd-select--open',
645
921
  multiple && 'cd-select--multiple',
646
922
  borderless && 'cd-select--borderless',
923
+ // ellipsisTrigger:多选 tag 溢出时对可见 tag 文本作单行省略(对齐 Semi)。
924
+ ellipsisTrigger && multiple && 'cd-select--ellipsis-trigger',
925
+ className,
647
926
  ]
648
927
  .filter(Boolean)
649
928
  .join(' '),
650
929
  );
651
930
 
652
- // combobox 可访问名:ariaLabelledby > ariaLabel > placeholder > locale 默认
931
+ // insetLabel 提供 insetLabelId 时,把内嵌标签纳入 combobox aria-labelledby,
932
+ // 使屏幕阅读器把内嵌标签朗读为触发器可访问名的一部分(与外部 ariaLabelledby 拼接)。
933
+ const hasInsetLabel = $derived(insetLabel !== undefined);
934
+ const resolvedLabelledby = $derived(
935
+ [ariaLabelledby, hasInsetLabel && insetLabelId ? insetLabelId : undefined]
936
+ .filter(Boolean)
937
+ .join(' ') || undefined,
938
+ );
939
+
940
+ // combobox 可访问名:aria-labelledby(含内嵌标签)> ariaLabel > placeholder > locale 默认
653
941
  const triggerAriaLabel = $derived(
654
- ariaLabelledby ? undefined : (ariaLabel || placeholder || loc().t('Select.ariaLabel')),
942
+ resolvedLabelledby ? undefined : (ariaLabel || placeholder || loc().t('Select.ariaLabel')),
655
943
  );
944
+
945
+ // searchPosition='trigger' 且 filter 时,搜索框内联在触发器上(无需浮层内独立搜索框)。
946
+ const triggerSearch = $derived(filterEnabled && searchPosition === 'trigger');
947
+ // 搜索框占位文本(对齐 Semi searchPlaceholder):显式 prop 优先,缺省走 locale。
948
+ const searchPlaceholderText = $derived(searchPlaceholder ?? loc().t('Select.searchPlaceholder'));
949
+
950
+ // searchPosition='dropdown' 时,打开浮层后自动聚焦浮层内搜索框,便于直接键入过滤。
951
+ $effect(() => {
952
+ if (!isOpen || triggerSearch || !filterEnabled || !dropdownEl) return;
953
+ const searchEl = dropdownEl.querySelector<HTMLInputElement>('.cd-select__search--dropdown');
954
+ searchEl?.focus();
955
+ });
656
956
  </script>
657
957
 
658
- <div class={cls} bind:this={rootEl}>
958
+ <div class={cls} {style} bind:this={rootEl}>
959
+ {#if triggerRender}
960
+ {@render triggerRender({
961
+ value: currentValue,
962
+ selectedOptions,
963
+ placeholder: placeholder ?? loc().t('Select.placeholder'),
964
+ open: isOpen,
965
+ disabled,
966
+ toggle: toggleOpen,
967
+ onTriggerKeydown,
968
+ })}
969
+ {:else}
659
970
  <div
660
971
  class="cd-select__trigger"
661
972
  role="combobox"
662
973
  {id}
663
974
  aria-label={triggerAriaLabel}
664
- aria-labelledby={ariaLabelledby}
975
+ aria-labelledby={resolvedLabelledby}
976
+ aria-describedby={ariaDescribedby}
977
+ aria-errormessage={ariaErrormessage}
978
+ aria-required={ariaRequired || undefined}
665
979
  aria-expanded={isOpen}
666
980
  aria-haspopup="listbox"
667
981
  aria-controls={listId}
668
982
  aria-activedescendant={activeOptionId}
669
983
  aria-disabled={disabled || undefined}
670
- aria-invalid={status === 'error' || undefined}
984
+ aria-invalid={validateStatus === 'error' || undefined}
671
985
  tabindex={disabled ? -1 : 0}
672
986
  onclick={toggleOpen}
673
987
  onkeydown={onTriggerKeydown}
674
988
  onfocus={() => onFocus?.()}
675
989
  onblur={() => onBlur?.()}
990
+ onmouseenter={(e) => onMouseEnter?.(e)}
991
+ onmouseleave={(e) => onMouseLeave?.(e)}
676
992
  >
677
993
  {#if prefix}
678
994
  <span class="cd-select__prefix">{@render prefix()}</span>
679
995
  {/if}
680
996
 
997
+ {#if hasInsetLabel}
998
+ <span class="cd-select__inset-label" id={insetLabelId}>
999
+ {#if typeof insetLabel === 'string'}
1000
+ {insetLabel}
1001
+ {:else if insetLabel}
1002
+ {@render insetLabel()}
1003
+ {/if}
1004
+ </span>
1005
+ {/if}
1006
+
681
1007
  <div class="cd-select__content">
682
1008
  {#if multiple && selectedOptions.length > 0}
683
- {#each visibleTags as tag (tag.opt.value)}
684
- <span class="cd-select__tag">
685
- {#if labelSnippet}
686
- {@render labelSnippet({ option: tag.opt })}
687
- {:else}
688
- <span
689
- class="cd-select__tag-label"
690
- title={tag.truncated ? getOptionLabel(tag.opt) : undefined}
691
- >{tag.display}</span>
692
- {/if}
693
- <button
694
- type="button"
695
- class="cd-select__tag-close"
696
- aria-label={loc().t('Select.removeItem', { label: getOptionLabel(tag.opt) })}
697
- onclick={(e) => {
698
- e.stopPropagation();
699
- removeTag(tag.opt.value);
700
- }}
701
- >
702
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
703
- <path
704
- fill="currentColor"
705
- d="M9.1 8l3.2-3.2-1.1-1.1L8 6.9 4.8 3.7 3.7 4.8 6.9 8l-3.2 3.2 1.1 1.1L8 9.1l3.2 3.2 1.1-1.1L9.1 8Z"
706
- />
707
- </svg>
708
- </button>
709
- </span>
710
- {/each}
711
- {#if hiddenTagCount > 0}
712
- {@const hiddenOpts = selectedOptions.slice(maxTagCount)}
713
- <span
714
- class="cd-select__tag cd-select__tag--rest"
715
- title={showRestTagsPopover ? hiddenOpts.map((o) => getOptionLabel(o)).join(', ') : undefined}
716
- >+{hiddenTagCount}</span>
1009
+ {#if tagsCollapsed}
1010
+ <!--
1011
+ 折叠态:复用 TagGroup(mode=custom)承担「可见 tag + 折叠 +N + hover Popover」。
1012
+ - tagList:全部已选项的 custom tag 节点(TagGroup 内部按 maxTagCount 切可见/剩余);
1013
+ - maxTagCount/restCount:对齐 Semi renderOneLineTags 传参;
1014
+ - showPopover 接 showRestTagsPopover;popoverProps 接 restTagsPopoverProps。
1015
+ expandRestTagsOnClick 展开由浮层打开态驱动(见 tagsCollapsed 派生),无需 +N 单独点击。
1016
+ -->
1017
+ <TagGroup
1018
+ class="cd-select__tag-group"
1019
+ mode="custom"
1020
+ tagList={allTags.map((tag) => ({ tagKey: tag.opt.value, tagInfo: tag }))}
1021
+ maxTagCount={tagGroupMaxCount}
1022
+ restCount={tagGroupRestCount}
1023
+ size="small"
1024
+ showPopover={showRestTagsPopover}
1025
+ popoverProps={restTagsPopoverProps}
1026
+ renderTagItem={customTagItem}
1027
+ />
1028
+ {:else}
1029
+ <!-- 展开态(无 maxTagCount,或 expandRestTagsOnClick 已展开):直接逐个渲染全部 tag(对齐 Semi NotOneLine 分支) -->
1030
+ {#each allTags as tag (tag.opt.value)}
1031
+ {@render selectTag(tag)}
1032
+ {/each}
717
1033
  {/if}
718
- {#if filter}
1034
+ {#if triggerSearch}
719
1035
  <input
1036
+ {...inputProps}
720
1037
  class="cd-select__search"
721
1038
  type="text"
722
1039
  value={query}
723
- aria-label={loc().t('Select.searchPlaceholder')}
1040
+ placeholder={searchPlaceholderText}
1041
+ aria-label={searchPlaceholderText}
724
1042
  oninput={onSearchInput}
725
1043
  onkeydown={onTriggerKeydown}
726
1044
  onclick={(e) => e.stopPropagation()}
727
1045
  />
728
1046
  {/if}
729
- {:else if filter}
1047
+ {:else if triggerSearch}
730
1048
  <input
1049
+ {...inputProps}
731
1050
  class="cd-select__search"
732
1051
  type="text"
733
1052
  value={query}
734
1053
  placeholder={hasSelection ? singleLabel : (placeholder ?? loc().t('Select.placeholder'))}
735
- aria-label={loc().t('Select.searchPlaceholder')}
1054
+ aria-label={searchPlaceholderText}
736
1055
  oninput={onSearchInput}
737
1056
  onkeydown={onTriggerKeydown}
738
1057
  onclick={(e) => e.stopPropagation()}
739
1058
  />
740
1059
  {:else if hasSelection}
741
- {#if labelSnippet}
742
- {@render labelSnippet({ option: selectedOptions[0]! })}
1060
+ {#if renderSelectedItem}
1061
+ {@render renderSelectedItem({ option: selectedOptions[0]! })}
743
1062
  {:else}
744
1063
  <span class="cd-select__value">{singleLabel}</span>
745
1064
  {/if}
@@ -748,7 +1067,7 @@
748
1067
  {/if}
749
1068
  </div>
750
1069
 
751
- {#if showClear}
1070
+ {#if showClearBtn}
752
1071
  <button
753
1072
  type="button"
754
1073
  class="cd-select__clear"
@@ -758,45 +1077,69 @@
758
1077
  {#if clearIcon}
759
1078
  {@render clearIcon()}
760
1079
  {:else}
761
- <svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true" focusable="false">
762
- <path
763
- fill="currentColor"
764
- d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1Zm2.5 9.1-1.4 1.4L8 9.4 6.5 11l-1.4-1.4L6.6 8 5.1 6.5 6.5 5.1 8 6.6 9.5 5.1l1.4 1.4L9.4 8l1.1 1.1Z"
765
- />
766
- </svg>
1080
+ <IconClear aria-hidden="true" />
767
1081
  {/if}
768
1082
  </button>
769
1083
  {/if}
770
1084
 
771
1085
  {#if suffix}
772
1086
  <span class="cd-select__suffix">{@render suffix()}</span>
773
- {:else}
1087
+ {:else if showArrow}
774
1088
  <span class="cd-select__arrow" aria-hidden="true">
775
1089
  {#if arrowIcon}
776
1090
  {@render arrowIcon()}
777
1091
  {:else}
778
- <svg viewBox="0 0 16 16" width="12" height="12" focusable="false">
779
- <path fill="currentColor" d="M3.5 6 8 10.5 12.5 6l-1-1L8 8.5 4.5 5l-1 1Z" />
780
- </svg>
1092
+ <IconChevronDown aria-hidden="true" />
781
1093
  {/if}
782
1094
  </span>
783
1095
  {/if}
784
1096
  </div>
1097
+ {/if}
785
1098
 
786
1099
  {#if isOpen || !destroyOnClose}
1100
+ <!--
1101
+ 浮层最外层容器(use:floating 定位):承载 outerTopSlot / 滚动列表 / outerBottomSlot 三层。
1102
+ outer slot 与滚动列表平级、位于滚动区之外,始终固定展现(对齐 Semi outer*Slot);
1103
+ 滚动/虚拟化/onListScroll/触底检测均作用于内部 role=listbox 的滚动容器(dropdownEl)。
1104
+ -->
787
1105
  <div
788
- class="cd-select__dropdown"
789
- bind:this={dropdownEl}
790
- use:floating={{ trigger: rootEl, placement, autoAdjust: true, offset: 4, matchWidth: dropdownMatchSelectWidth }}
791
- role="listbox"
792
- id={listId}
793
- aria-multiselectable={multiple}
794
- aria-busy={loading || undefined}
795
- style={`max-block-size:${maxHeight}px`}
1106
+ class={dropdownCls}
1107
+ bind:this={dropdownRootEl}
1108
+ use:floating={{ trigger: rootEl, placement: position, autoAdjust: autoAdjustOverflow, offset: dropdownOffset, matchWidth: dropdownMatchSelectWidth, getContainer: getPopupContainer, rePosKey: reposKey }}
1109
+ style={dropdownRootInlineStyle}
796
1110
  hidden={!isOpen || undefined}
797
1111
  >
798
- {#if dropdownHeader}
799
- <div class="cd-select__dropdown-header">{@render dropdownHeader()}</div>
1112
+ {#if outerTopSlot}
1113
+ <div class="cd-select__outer-top">{@render outerTopSlot()}</div>
1114
+ {/if}
1115
+ <div
1116
+ class="cd-select__list"
1117
+ bind:this={dropdownEl}
1118
+ role="listbox"
1119
+ id={listId}
1120
+ aria-multiselectable={multiple}
1121
+ aria-busy={loading || undefined}
1122
+ style={dropdownListInlineStyle}
1123
+ >
1124
+ {#if filterEnabled && !triggerSearch}
1125
+ <!-- searchPosition='dropdown':搜索框在浮层顶部 -->
1126
+ <div class="cd-select__dropdown-search">
1127
+ <input
1128
+ {...inputProps}
1129
+ class="cd-select__search cd-select__search--dropdown"
1130
+ type="text"
1131
+ value={query}
1132
+ placeholder={searchPlaceholderText}
1133
+ aria-label={searchPlaceholderText}
1134
+ aria-controls={listId}
1135
+ oninput={onSearchInput}
1136
+ onkeydown={onTriggerKeydown}
1137
+ onclick={(e) => e.stopPropagation()}
1138
+ />
1139
+ </div>
1140
+ {/if}
1141
+ {#if innerTopSlot}
1142
+ <div class="cd-select__dropdown-header">{@render innerTopSlot()}</div>
800
1143
  {/if}
801
1144
  {#if loading}
802
1145
  <div class="cd-select__loading">
@@ -822,9 +1165,7 @@
822
1165
  {/if}
823
1166
  {#if filteredOptions.length === 0 && !canCreate && !loading}
824
1167
  <div class="cd-select__empty">
825
- {#if empty}
826
- {@render empty()}
827
- {:else if emptyContent !== undefined}
1168
+ {#if emptyContent !== undefined}
828
1169
  {#if typeof emptyContent === 'string'}
829
1170
  {emptyContent}
830
1171
  {:else}
@@ -859,8 +1200,12 @@
859
1200
  {@render optionRow(opt, i)}
860
1201
  {/each}
861
1202
  {/if}
862
- {#if dropdownFooter}
863
- <div class="cd-select__dropdown-footer">{@render dropdownFooter()}</div>
1203
+ {#if innerBottomSlot}
1204
+ <div class="cd-select__dropdown-footer">{@render innerBottomSlot()}</div>
1205
+ {/if}
1206
+ </div>
1207
+ {#if outerBottomSlot}
1208
+ <div class="cd-select__outer-bottom">{@render outerBottomSlot()}</div>
864
1209
  {/if}
865
1210
  </div>
866
1211
  {/if}
@@ -884,18 +1229,21 @@
884
1229
  }}
885
1230
  onclick={() => selectOption(opt)}
886
1231
  >
887
- {#if optionSnippet}
888
- {@render optionSnippet({ option: opt, selected: isSelected(opt.value), active: i === activeIndex })}
1232
+ {#if renderOptionItem}
1233
+ {@render renderOptionItem({
1234
+ option: opt,
1235
+ selected: isSelected(opt.value),
1236
+ focused: i === activeIndex,
1237
+ onMouseEnter: () => {
1238
+ if (!opt.disabled) activeIndex = i;
1239
+ },
1240
+ onClick: () => selectOption(opt),
1241
+ })}
889
1242
  {:else}
890
1243
  {#if multiple}
891
1244
  <span class="cd-select__check" aria-hidden="true">
892
1245
  {#if isSelected(opt.value)}
893
- <svg viewBox="0 0 16 16" width="12" height="12" focusable="false">
894
- <path
895
- fill="currentColor"
896
- d="M6.2 11.2 2.9 7.9l1.1-1.1 2.2 2.2 5-5L12.3 5l-6.1 6.2Z"
897
- />
898
- </svg>
1246
+ <IconTick aria-hidden="true" />
899
1247
  {/if}
900
1248
  </span>
901
1249
  {/if}
@@ -904,6 +1252,41 @@
904
1252
  </div>
905
1253
  {/snippet}
906
1254
 
1255
+ <!--
1256
+ 单个多选 Tag(对齐 Semi renderTag:color=white、closable+onClose 删除该项)。
1257
+ 可见 tag(展开态)与折叠态经 TagGroup custom 渲染的可见/剩余 tag 均复用此 snippet。
1258
+ -->
1259
+ {#snippet selectTag(tag: TagInfo)}
1260
+ <Tag
1261
+ class="cd-select__tag"
1262
+ size="small"
1263
+ color="white"
1264
+ closable={!disabled}
1265
+ ariaLabel={loc().t('Select.removeItem', { label: getOptionLabel(tag.opt) })}
1266
+ onClose={(_c, e) => {
1267
+ (e as Event)?.stopPropagation?.();
1268
+ removeTag(tag.opt.value);
1269
+ }}
1270
+ >
1271
+ {#if renderSelectedItem}
1272
+ {@render renderSelectedItem({ option: tag.opt })}
1273
+ {:else}
1274
+ <span
1275
+ class="cd-select__tag-label"
1276
+ title={tag.truncated ? getOptionLabel(tag.opt) : undefined}
1277
+ >{tag.display}</span>
1278
+ {/if}
1279
+ </Tag>
1280
+ {/snippet}
1281
+
1282
+ <!-- TagGroup mode=custom 的每项渲染入口:从 tagList 项取回 tagInfo,委托 selectTag。 -->
1283
+ {#snippet customTagItem(item: Record<string, unknown>)}
1284
+ {@const tag = item.tagInfo as TagInfo | undefined}
1285
+ {#if tag}
1286
+ {@render selectTag(tag)}
1287
+ {/if}
1288
+ {/snippet}
1289
+
907
1290
  <style>
908
1291
  .cd-select {
909
1292
  position: relative;
@@ -922,9 +1305,14 @@
922
1305
  border: 1px solid var(--cd-select-border);
923
1306
  border-radius: var(--cd-select-radius);
924
1307
  cursor: pointer;
1308
+ /* 过渡/变换由 select 专属 transition/transform token 接管(对齐 Semi animation.scss):
1309
+ 默认 duration=0ms(无过渡),主题/DSM 可开启。 */
925
1310
  transition:
926
- border-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard),
927
- background-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
1311
+ background-color var(--cd-transition-duration-select-bg)
1312
+ var(--cd-transition-function-select-bg) var(--cd-transition-delay-select-bg),
1313
+ border-color var(--cd-transition-duration-select-border)
1314
+ var(--cd-transition-function-select-border) var(--cd-transition-delay-select-border);
1315
+ transform: var(--cd-transform-scale-select);
928
1316
  }
929
1317
  .cd-select--small .cd-select__trigger {
930
1318
  min-block-size: var(--cd-select-height-small);
@@ -946,12 +1334,33 @@
946
1334
  background: var(--cd-select-bg);
947
1335
  border-color: var(--cd-select-border-active);
948
1336
  }
1337
+ /* 校验态 warning(对齐 Semi &-warning:背景 + 描边 light 变体,聚焦时描边加深) */
1338
+ .cd-select--warning .cd-select__trigger {
1339
+ background: var(--cd-color-select-warning-bg);
1340
+ border-color: var(--cd-color-select-warning-border);
1341
+ }
1342
+ .cd-select--warning:not(.cd-select--disabled) .cd-select__trigger:hover {
1343
+ background: var(--cd-color-select-warning-bg-hover);
1344
+ }
1345
+ .cd-select--warning .cd-select__trigger:focus-visible,
1346
+ .cd-select--warning.cd-select--open .cd-select__trigger {
1347
+ border-color: var(--cd-color-select-warning-border-focus);
1348
+ }
1349
+ /* 校验态 error(对齐 Semi &-error:danger light 背景 + 描边,聚焦时描边加深) */
949
1350
  .cd-select--error .cd-select__trigger {
950
- border-color: var(--cd-select-border-error);
1351
+ background: var(--cd-color-select-danger-bg);
1352
+ border-color: var(--cd-color-select-danger-border);
1353
+ }
1354
+ .cd-select--error:not(.cd-select--disabled) .cd-select__trigger:hover {
1355
+ background: var(--cd-color-select-danger-bg-hover);
1356
+ }
1357
+ .cd-select--error .cd-select__trigger:focus-visible,
1358
+ .cd-select--error.cd-select--open .cd-select__trigger {
1359
+ border-color: var(--cd-color-select-danger-border-focus);
951
1360
  }
952
1361
  .cd-select--disabled .cd-select__trigger {
953
- background: var(--cd-color-disabled-fill, var(--cd-color-fill-0));
954
- color: var(--cd-color-text-3);
1362
+ background: var(--cd-color-select-input-disabled-bg);
1363
+ color: var(--cd-color-select-input-disabled-text);
955
1364
  cursor: not-allowed;
956
1365
  }
957
1366
  .cd-select__content {
@@ -963,10 +1372,37 @@
963
1372
  min-inline-size: 0;
964
1373
  }
965
1374
  .cd-select__placeholder {
966
- color: var(--cd-input-color-placeholder);
1375
+ color: var(--cd-color-select-input-placeholder-text);
1376
+ }
1377
+ /* 内嵌标签:常驻触发器左侧的标签文本 */
1378
+ .cd-select__inset-label {
1379
+ display: inline-flex;
1380
+ align-items: center;
1381
+ flex: 0 0 auto;
1382
+ margin-inline-end: var(--cd-spacing-extra-tight);
1383
+ color: var(--cd-color-select-prefix-suffix-text-default);
1384
+ user-select: none;
1385
+ }
1386
+ /* searchPosition='dropdown':浮层顶部搜索框容器 */
1387
+ .cd-select__dropdown-search {
1388
+ padding: var(--cd-spacing-extra-tight) var(--cd-select-option-padding, var(--cd-spacing-tight));
1389
+ }
1390
+ .cd-select__search--dropdown {
1391
+ inline-size: 100%;
1392
+ box-sizing: border-box;
1393
+ min-block-size: var(--cd-select-height-small);
1394
+ padding-inline: var(--cd-select-padding-x);
1395
+ border: 1px solid var(--cd-select-border);
1396
+ border-radius: var(--cd-select-radius);
1397
+ background: var(--cd-select-bg);
1398
+ }
1399
+ .cd-select__search--dropdown:focus-visible {
1400
+ border-color: var(--cd-select-border-active);
1401
+ box-shadow: var(--cd-focus-ring);
967
1402
  }
968
1403
  .cd-select__value {
969
1404
  overflow: hidden;
1405
+ color: var(--cd-color-select-main-text-default);
970
1406
  white-space: nowrap;
971
1407
  text-overflow: ellipsis;
972
1408
  }
@@ -982,35 +1418,28 @@
982
1418
  outline: none;
983
1419
  }
984
1420
  .cd-select__search::placeholder {
985
- color: var(--cd-input-color-placeholder);
1421
+ color: var(--cd-color-select-input-placeholder-text);
986
1422
  }
987
- .cd-select__tag {
1423
+ /* 折叠态 TagGroup 实例:在触发器 flex 内联排布(与 search input 并排),随内容换行 */
1424
+ .cd-select :global(.cd-select__tag-group) {
988
1425
  display: inline-flex;
1426
+ flex-wrap: wrap;
989
1427
  align-items: center;
990
- gap: var(--cd-spacing-extra-tight);
991
- padding-inline: var(--cd-spacing-tight);
992
- background: var(--cd-color-fill-1);
993
- border-radius: var(--cd-border-radius-small);
994
- font-size: var(--cd-font-size-small);
995
- }
996
- .cd-select__tag--rest {
997
- color: var(--cd-color-text-2);
1428
+ min-inline-size: 0;
1429
+ height: auto;
998
1430
  }
999
- .cd-select__option--create {
1000
- color: var(--cd-color-primary);
1431
+ /* ellipsisTrigger:多选 tag 溢出时,对可见 tag 文本做单行省略(完整文本经 title 查看) */
1432
+ .cd-select--ellipsis-trigger .cd-select__content {
1433
+ flex-wrap: nowrap;
1434
+ overflow: hidden;
1001
1435
  }
1002
- .cd-select__tag-close {
1003
- display: inline-flex;
1004
- align-items: center;
1005
- justify-content: center;
1006
- padding: 0;
1007
- border: none;
1008
- background: transparent;
1009
- color: var(--cd-color-text-2);
1010
- cursor: pointer;
1436
+ .cd-select--ellipsis-trigger .cd-select__tag-label {
1437
+ overflow: hidden;
1438
+ white-space: nowrap;
1439
+ text-overflow: ellipsis;
1011
1440
  }
1012
- .cd-select__tag-close:hover {
1013
- color: var(--cd-color-text-0);
1441
+ .cd-select__option--create {
1442
+ color: var(--cd-color-select-option-keyword-text);
1014
1443
  }
1015
1444
  .cd-select__clear,
1016
1445
  .cd-select__arrow {
@@ -1018,46 +1447,66 @@
1018
1447
  align-items: center;
1019
1448
  justify-content: center;
1020
1449
  flex: 0 0 auto;
1021
- color: var(--cd-color-text-2);
1450
+ color: var(--cd-color-select-icon-default);
1022
1451
  }
1023
1452
  .cd-select__clear {
1024
1453
  padding: 0;
1025
1454
  border: none;
1026
1455
  background: transparent;
1456
+ color: var(--cd-color-select-clearbtn-text-default);
1027
1457
  cursor: pointer;
1028
1458
  }
1029
1459
  .cd-select__clear:hover {
1030
- color: var(--cd-color-text-0);
1460
+ color: var(--cd-color-select-clearbtn-text-hover);
1031
1461
  }
1032
1462
  .cd-select__arrow {
1033
- transition: transform var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
1463
+ transform: var(--cd-transform-rotate-select-arrow);
1464
+ transition: transform var(--cd-transition-duration-select-border)
1465
+ var(--cd-transition-function-select-border) var(--cd-transition-delay-select-border);
1034
1466
  }
1035
1467
  .cd-select--open .cd-select__arrow {
1036
1468
  transform: rotate(180deg);
1037
1469
  }
1038
- /* 下拉 portal 到 body,由 JS 写 position:fixed + transform + matchWidth */
1470
+ /* 下拉 portal 到 body,由 JS 写 position:fixed + transform + matchWidth
1471
+ 外层容器只负责底色/圆角/阴影/层级;滚动限高在内层 .cd-select__list(使 outer slot 固定不滚) */
1039
1472
  .cd-select__dropdown {
1040
1473
  z-index: var(--cd-select-dropdown-z);
1041
- max-block-size: 16rem;
1042
- overflow-y: auto;
1043
- padding-block: var(--cd-spacing-extra-tight);
1474
+ display: flex;
1475
+ flex-direction: column;
1044
1476
  background: var(--cd-select-dropdown-bg);
1045
1477
  border-radius: var(--cd-select-dropdown-radius);
1046
1478
  box-shadow: var(--cd-select-dropdown-shadow);
1047
1479
  }
1480
+ /* destroyOnClose=false 时浮层保持挂载,靠 [hidden] 隐藏;
1481
+ display:flex 会压过 [hidden] 的 UA display:none,故显式补一条属性选择器(对齐关闭态真正不可见)。 */
1482
+ .cd-select__dropdown[hidden] {
1483
+ display: none;
1484
+ }
1485
+ /* 内层滚动列表:optionList + inner header/footer + 浮层搜索框,超出 maxHeight 时纵向滚动 */
1486
+ .cd-select__list {
1487
+ max-block-size: 16rem;
1488
+ overflow-y: auto;
1489
+ padding-block: var(--cd-spacing-extra-tight);
1490
+ }
1491
+ /* outer slot:与滚动列表平级、位于滚动区之外,始终固定展现 */
1492
+ .cd-select__outer-top,
1493
+ .cd-select__outer-bottom {
1494
+ flex: 0 0 auto;
1495
+ padding: var(--cd-spacing-extra-tight) var(--cd-select-option-padding, var(--cd-spacing-tight));
1496
+ }
1048
1497
  /* 虚拟化:spacer 撑出未渲染选项的总高,可见 option 绝对定位于其内 */
1049
1498
  .cd-select__spacer {
1050
1499
  position: relative;
1051
1500
  inline-size: 100%;
1052
1501
  }
1053
- /* 虚拟化行带固定 block-size + 内边距,需 border-box 保证行高与 optionHeight 一致 */
1502
+ /* 虚拟化行带固定 block-size + 内边距,需 border-box 保证行高与 virtualize.itemSize 一致 */
1054
1503
  .cd-select__spacer .cd-select__option {
1055
1504
  box-sizing: border-box;
1056
1505
  overflow: hidden;
1057
1506
  }
1058
1507
  .cd-select__group-label {
1059
1508
  padding: var(--cd-spacing-extra-tight) var(--cd-select-option-padding, var(--cd-spacing-tight));
1060
- color: var(--cd-color-text-3);
1509
+ color: var(--cd-color-select-group-text);
1061
1510
  font-size: var(--cd-font-size-small);
1062
1511
  font-weight: var(--cd-font-weight-medium, 500);
1063
1512
  user-select: none;
@@ -1068,16 +1517,18 @@
1068
1517
  gap: var(--cd-spacing-tight);
1069
1518
  padding: var(--cd-select-option-padding);
1070
1519
  cursor: pointer;
1520
+ transition: background-color var(--cd-transition-duration-select-option-bg)
1521
+ var(--cd-transition-function-select-option-bg) var(--cd-transition-delay-select-option-bg);
1071
1522
  }
1072
1523
  .cd-select__option--active {
1073
1524
  background: var(--cd-select-option-bg-hover);
1074
1525
  }
1075
1526
  .cd-select__option--selected {
1076
1527
  color: var(--cd-select-option-color-selected);
1077
- background: var(--cd-select-option-bg-active);
1528
+ background: var(--cd-select-option-bg-selected);
1078
1529
  }
1079
1530
  .cd-select__option[aria-disabled='true'] {
1080
- color: var(--cd-color-text-3);
1531
+ color: var(--cd-color-select-option-disabled-text);
1081
1532
  cursor: not-allowed;
1082
1533
  }
1083
1534
  .cd-select__check {
@@ -1104,8 +1555,8 @@
1104
1555
  .cd-select__spinner {
1105
1556
  inline-size: 1em;
1106
1557
  block-size: 1em;
1107
- border: 2px solid var(--cd-color-border);
1108
- border-block-start-color: var(--cd-color-primary);
1558
+ border: 2px solid var(--cd-color-select-option-border-default);
1559
+ border-block-start-color: var(--cd-color-select-option-keyword-text);
1109
1560
  border-radius: var(--cd-border-radius-full);
1110
1561
  animation: cd-select-spin 0.7s linear infinite;
1111
1562
  }
@@ -1129,7 +1580,7 @@
1129
1580
  display: inline-flex;
1130
1581
  align-items: center;
1131
1582
  flex: 0 0 auto;
1132
- color: var(--cd-color-text-2);
1583
+ color: var(--cd-color-select-prefix-suffix-text-default);
1133
1584
  }
1134
1585
  .cd-select__prefix {
1135
1586
  margin-inline-end: var(--cd-spacing-extra-tight);
@@ -1141,7 +1592,7 @@
1141
1592
  .cd-select__dropdown-header,
1142
1593
  .cd-select__dropdown-footer {
1143
1594
  padding: var(--cd-spacing-extra-tight) var(--cd-select-option-padding, var(--cd-spacing-tight));
1144
- border-block-color: var(--cd-color-border);
1595
+ border-block-color: var(--cd-color-select-option-border-default);
1145
1596
  }
1146
1597
  .cd-select__dropdown-header {
1147
1598
  border-block-end-width: 1px;