@chenzy-design/svelte 0.3.1 → 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
@@ -1,15 +1,17 @@
1
1
  <!--
2
- TimePicker — see specs/components/input/TimePicker.spec.md
3
- 单选 type='time'HH:mm:ss 三列滚动选择 (+ 12h 制 AM/PM 列)。受控/非受控。
4
- type='timeRange' (或 range):选起止两个时间,值为 [start, end] (双面板)
5
- value/defaultValue 支持 Date | string (如 '12:30:45'),字符串经 core parseTimeString 解析。
6
- format 字符串 (如 'HH:mm' / 'hh:mm A'):经 core parseFormatSpec 决定显示哪些列 + 12h,
7
- 显示经 core formatTime 序列化 (有 format 时),否则走 Intl.DateTimeFormat (不手拼时间串)。
8
- scrollIntoView 命令式调用 (非响应式 attachment)。
9
- 列项/禁用集生成 + 格式解析/序列化走 @chenzy-design/core 纯函数 (红线 #2)。
2
+ TimePicker — 严格对齐 Semi Design(semi-ui/timePicker/{TimePicker,Combobox,TimeInput}.tsx)。
3
+ 单选 type='time'HH:mm:ss 三列滚动选择(+ 12h 制 AM/PM 列)。受控/非受控。
4
+ type='timeRange':左右两个 Combobox(ScrollList)并排选起止两端,值 [start, end]。
5
+ 时间列复用本库 ScrollList/ScrollItem(mode='normal',选择走 onSelect,非自造 roving)。
6
+ 触发器复用本库 Input(可键入时间串,镜像 Semi TimeInput:<Input hideSuffix suffix={IconClock}>)。
7
+ value/defaultValue 支持 Date | string(如 '12:30:45'),字符串经 core parseTimeString 解析。
8
+ format 字符串(默认 'HH:mm:ss'):经 core parseFormatSpec 决定显示列与 12h(showSecond = 含 ss);
9
+ 显示经 core formatTime 序列化,否则走 Intl.DateTimeFormat(不手拼时间串)。
10
+ 列项/禁用集生成 + 格式解析/序列化走 @chenzy-design/core 纯函数(红线 #2)。
10
11
  -->
11
12
  <script lang="ts">
12
- import { tick, type Snippet } from 'svelte';
13
+ import { getContext, type Snippet } from 'svelte';
14
+ import { CONFIG_CONTEXT_KEY, type ConfigContextValue } from '../config-provider/index.js';
13
15
  import {
14
16
  useId,
15
17
  useDismiss,
@@ -23,124 +25,147 @@
23
25
  parseFormatSpec,
24
26
  formatTime,
25
27
  parseTimeString,
28
+ zonedWallTime,
26
29
  type Meridiem,
27
- type TimeOption,
30
+ type ScrollItemData,
31
+ type ScrollItemSelectPayload,
28
32
  } from '@chenzy-design/core';
33
+ import type { Placement } from '@chenzy-design/core';
29
34
  import { useLocale } from '../locale-provider/index.js';
35
+ import { floating } from '../_floating/use-floating.js';
36
+ import { IconClock } from '@chenzy-design/icons';
37
+ import Input from '../input/Input.svelte';
38
+ import ScrollList from '../scroll-list/ScrollList.svelte';
39
+ import ScrollItem from '../scroll-list/ScrollItem.svelte';
30
40
 
31
41
  type Size = 'small' | 'default' | 'large';
32
- type Status = 'default' | 'warning' | 'error';
42
+ type ValidateStatus = 'default' | 'warning' | 'error';
33
43
 
34
- /** 单选入参:Date 或时间字符串 (如 '12:30:45')。 */
44
+ /** 单选入参:Date 或时间字符串(如 '12:30:45')。 */
35
45
  type TimeInput = Date | string | null;
36
46
 
37
47
  interface Props {
38
- /** 单选时 Date|string;范围时 [start, end] (各自 Date|string)。 */
48
+ /** 单选时 Date|string;范围时 [start, end](各自 Date|string)。 */
39
49
  value?: TimeInput | [TimeInput, TimeInput] | null;
40
50
  defaultValue?: TimeInput | [TimeInput, TimeInput] | null;
41
- /** 'time' 单选 (默认) / 'timeRange' 范围选择 (等价 range=true)。 */
51
+ /** 'time' 单选(默认)/ 'timeRange' 范围选择。对齐 Semi type。 */
42
52
  type?: 'time' | 'timeRange';
43
- /** range=true 等价 type='timeRange'。 */
44
- range?: boolean;
45
53
  open?: boolean;
46
54
  defaultOpen?: boolean;
47
55
  placeholder?: string;
48
56
  size?: Size;
49
- status?: Status;
57
+ /** 校验态(对齐 Semi validateStatus,仅影响展示样式)。 */
58
+ validateStatus?: ValidateStatus;
50
59
  disabled?: boolean;
51
- clearable?: boolean;
52
60
  hourStep?: number;
53
61
  minuteStep?: number;
54
62
  secondStep?: number;
55
- showSecond?: boolean;
56
63
  use12Hours?: boolean;
57
- /** 格式串 (如 'HH:mm' / 'hh:mm A' / 'HH:mm:ss'):决定显示列与 12h,并作为展示/字符串值序列化格式。 */
64
+ /** 格式串(默认 'HH:mm:ss'):决定显示列与 12h(showSecond = ss),并作为展示/字符串值序列化格式。对齐 Semi format。 */
58
65
  format?: string;
66
+ /** 时区(数字偏移 / 'GMT±HH:mm' / IANA):仅作用于无 format 时的 Intl 显示层;自身优先,未传回退 ConfigProvider。对齐 Semi timeZone。 */
67
+ timeZone?: string | number;
59
68
  disabledHours?: () => number[];
60
69
  disabledMinutes?: (hour: number) => number[];
61
70
  disabledSeconds?: (hour: number, minute: number) => number[];
62
71
  hideDisabledOptions?: boolean;
72
+ /** locale 代码(Intl 本地化用)。对齐 Semi localeCode 语义。 */
63
73
  locale?: string;
64
74
  /** 单选回调 Date|null;范围回调 [Date|null, Date|null]。 */
65
75
  onChange?: (v: (Date | null) | [Date | null, Date | null]) => void;
66
76
  onOpenChange?: (open: boolean) => void;
67
- ariaLabel?: string;
68
- /** 浮层溢出自动调整(默认 true)。 */
77
+ /** 浮层溢出自动调整(默认 true)。对齐 Semi autoAdjustOverflow。 */
69
78
  autoAdjustOverflow?: boolean;
70
- /** 挂载时自动聚焦触发器。 */
79
+ /** 挂载时自动聚焦触发器。对齐 Semi autoFocus。 */
71
80
  autoFocus?: boolean;
72
- /** 自定义清除按钮图标。 */
81
+ /** 自定义清除按钮图标。对齐 Semi clearIcon。 */
73
82
  clearIcon?: Snippet;
74
- /** 是否显示清除按钮(clearable 别名)。 */
83
+ /** 是否显示清除按钮(默认 true)。对齐 Semi showClear。 */
75
84
  showClear?: boolean;
76
- /** 浮层 className。 */
77
- dropdownClassName?: string;
78
- /** 浮层溢出冗余。 */
85
+ /** 清除按钮 aria/title 文案(默认 'clear')。对齐 Semi clearText。 */
86
+ clearText?: string;
87
+ /** 浮层 className。对齐 Semi popupClassName。 */
88
+ popupClassName?: string;
89
+ /** 浮层溢出冗余。对齐 Semi dropdownMargin。 */
79
90
  dropdownMargin?: number | { x?: number; y?: number };
80
- /** 浮层内联样式。 */
81
- dropdownStyle?: string | Record<string, string>;
82
- /** 打开面板时自动聚焦第一列(默认 true)。 */
91
+ /** 浮层内联样式。对齐 Semi popupStyle。 */
92
+ popupStyle?: string | Record<string, string>;
93
+ /** 打开面板时自动聚焦(默认 false)。对齐 Semi focusOnOpen。 */
83
94
  focusOnOpen?: boolean;
84
- /** 浮层挂载容器。 */
95
+ /** 浮层挂载容器。对齐 Semi getPopupContainer。 */
85
96
  getPopupContainer?: () => HTMLElement;
86
- /** 面板展开动画(默认 true)。 */
97
+ /** 面板展开动画(默认 true)。对齐 Semi motion。 */
87
98
  motion?: boolean;
88
- /** 面板顶部自定义内容。 */
99
+ /** 面板顶部自定义内容。对齐 Semi panelHeader。 */
89
100
  panelHeader?: string | Snippet;
90
- /** 浮层弹出位置(默认 'bottomLeft')。 */
101
+ /** 面板底部自定义内容。对齐 Semi panelFooter。 */
102
+ panelFooter?: string | Snippet;
103
+ /** 浮层弹出位置(默认 'bottomLeft')。对齐 Semi position。 */
91
104
  position?: string;
92
- /** 触发器前缀内容。 */
93
- prefix?: string | Snippet;
94
- /** 范围模式分隔符(默认 '~')。 */
105
+ /** 范围模式分隔符(默认 ' ~ ')。对齐 Semi rangeSeparator(DEFAULT_RANGE_SEPARATOR)。 */
95
106
  rangeSeparator?: string;
96
- /** 滚动列 item 属性透传。 */
107
+ /** 滚动列 item 属性透传。对齐 Semi scrollItemProps。 */
97
108
  scrollItemProps?: Record<string, unknown>;
98
- /** 阻止浮层点击事件冒泡(默认 true)。 */
109
+ /** 阻止浮层点击事件冒泡(默认 true)。对齐 Semi stopPropagation。 */
99
110
  stopPropagation?: boolean;
100
- /** 浮层 z-index(默认 1030)。 */
111
+ /** 浮层 z-index(默认 1030,对齐 Semi popoverNumbers.DEFAULT_Z_INDEX)。 */
101
112
  zIndex?: number;
102
- /** 触发器失焦。 */
113
+ /** 触发器失焦。对齐 Semi onBlur。 */
103
114
  onBlur?: (e: FocusEvent) => void;
104
- /** 触发器聚焦。 */
115
+ /** 触发器聚焦。对齐 Semi onFocus。 */
105
116
  onFocus?: (e: FocusEvent) => void;
106
- /** onChange 参数 dateFirst 模式。 */
117
+ /** onChange 参数 dateFirst 模式(默认 true)。对齐 Semi onChangeWithDateFirst。 */
107
118
  onChangeWithDateFirst?: boolean;
108
- /** 点击外部触发。 */
109
- onClickOutSide?: (e: MouseEvent) => void;
110
- /** 范围模式禁用函数。 */
111
- disabledTime?: (date: Date) => { disabledHours?: () => number[]; disabledMinutes?: (h: number) => number[]; disabledSeconds?: (h: number, m: number) => number[] };
112
- /** 面板底部自定义内容(在"此刻"/"确定"按钮上方插入)。 */
113
- panelFooter?: string | Snippet;
114
- /** 输入框样式(透传到触发器 button)。 */
119
+ /** 范围模式禁用函数。对齐 Semi disabledTime。 */
120
+ disabledTime?: (date: Date | null, panelType?: 'left' | 'right') => { disabledHours?: () => number[]; disabledMinutes?: (h: number) => number[]; disabledSeconds?: (h: number, m: number) => number[] } | undefined;
121
+ /** 输入框样式(透传到 Input)。对齐 Semi inputStyle。 */
115
122
  inputStyle?: string | Record<string, string>;
116
- /** 输入框 readonly 属性(仅允许通过面板选择,不可键盘输入触发器文本)。 */
123
+ /** 输入框 readonly(仅允许通过面板选择,不可键入)。对齐 Semi inputReadOnly。 */
117
124
  inputReadOnly?: boolean;
118
- /** 完全自定义触发器渲染(替换默认 input + 图标区域)。 */
125
+ /** 内嵌标签(透传给 Input)。对齐 Semi insetLabel。 */
126
+ insetLabel?: Snippet | string;
127
+ /** 内嵌标签容器 id(透传给 Input)。对齐 Semi insetLabelId。 */
128
+ insetLabelId?: string;
129
+ /** 完全自定义触发器渲染(替换默认 Input + 图标区域)。对齐 Semi triggerRender。 */
119
130
  triggerRender?: Snippet<[{ value: Date | null; placeholder: string; open: boolean; disabled: boolean }]>;
120
- /** 无边框模式。 */
131
+ /** 无边框模式。对齐 Semi borderless。 */
121
132
  borderless?: boolean;
122
- /** focus 时阻止滚动(传给 focus({ preventScroll }) 调用)。 */
133
+ /** focus 时阻止滚动(传给 focus({ preventScroll }) 调用)。对齐 Semi preventScroll。 */
123
134
  preventScroll?: boolean;
135
+ /** 根节点类名。对齐 Semi className。 */
136
+ class?: string;
137
+ /** 根节点内联样式。对齐 Semi style。 */
138
+ style?: string;
139
+ /** 根节点 id。对齐 Semi id。 */
140
+ id?: string;
141
+ /** 无障碍:关联标签元素 id。对齐 Semi aria-labelledby。 */
142
+ ariaLabelledby?: string;
143
+ /** 无障碍:关联描述元素 id。对齐 Semi aria-describedby。 */
144
+ ariaDescribedby?: string;
145
+ /** 无障碍:关联错误信息 id。对齐 Semi aria-errormessage。 */
146
+ ariaErrormessage?: string;
147
+ /** 无障碍:校验失败态。对齐 Semi aria-invalid。 */
148
+ ariaInvalid?: boolean;
149
+ /** 无障碍:必填态。对齐 Semi aria-required。 */
150
+ ariaRequired?: boolean;
124
151
  }
125
152
 
126
153
  let {
127
154
  value,
128
155
  defaultValue = null,
129
156
  type = 'time',
130
- range = false,
131
157
  open,
132
158
  defaultOpen = false,
133
159
  placeholder,
134
160
  size = 'default',
135
- status = 'default',
161
+ validateStatus = 'default',
136
162
  disabled = false,
137
- clearable = true,
138
163
  hourStep = 1,
139
164
  minuteStep = 1,
140
165
  secondStep = 1,
141
- showSecond = true,
142
166
  use12Hours = false,
143
- format,
167
+ format = 'HH:mm:ss',
168
+ timeZone,
144
169
  disabledHours,
145
170
  disabledMinutes,
146
171
  disabledSeconds,
@@ -148,48 +173,53 @@
148
173
  locale = 'zh-CN',
149
174
  onChange,
150
175
  onOpenChange,
151
- ariaLabel,
152
176
  autoAdjustOverflow = true,
153
177
  autoFocus = false,
154
178
  clearIcon,
155
- showClear,
156
- dropdownClassName,
179
+ showClear = true,
180
+ clearText = 'clear',
181
+ popupClassName,
157
182
  dropdownMargin,
158
- dropdownStyle,
159
- focusOnOpen = true,
183
+ popupStyle,
184
+ focusOnOpen = false,
160
185
  getPopupContainer,
161
186
  motion = true,
162
187
  panelHeader,
188
+ panelFooter,
163
189
  position = 'bottomLeft',
164
- prefix,
165
- rangeSeparator = '~',
190
+ rangeSeparator = ' ~ ',
166
191
  scrollItemProps,
167
192
  stopPropagation = true,
168
193
  zIndex = 1030,
169
194
  onBlur,
170
195
  onFocus,
171
- onChangeWithDateFirst = false,
172
- onClickOutSide,
196
+ onChangeWithDateFirst = true,
173
197
  disabledTime,
174
- panelFooter,
175
198
  inputStyle,
176
199
  inputReadOnly = false,
200
+ insetLabel,
201
+ insetLabelId,
177
202
  triggerRender,
178
203
  borderless = false,
179
204
  preventScroll = false,
205
+ class: className,
206
+ style,
207
+ id,
208
+ ariaLabelledby,
209
+ ariaDescribedby,
210
+ ariaErrormessage,
211
+ ariaInvalid,
212
+ ariaRequired,
180
213
  }: Props = $props();
181
214
 
182
- const isRange = $derived(range || type === 'timeRange');
183
-
184
- // showClear 是 clearable 别名
185
- const effClearable = $derived(clearable ?? showClear ?? true);
215
+ const isRange = $derived(type === 'timeRange');
186
216
 
187
- // --- format 串解析 (红线 #2 经 core 纯函数):决定列与 12h;无 format 时回退 props ---
188
- const formatSpec = $derived(format ? parseFormatSpec(format) : null);
189
- const effShowSecond = $derived(formatSpec ? formatSpec.showSecond : showSecond);
190
- const effUse12Hours = $derived(formatSpec ? formatSpec.use12Hours : use12Hours);
217
+ // --- format 串解析(红线 #2 经 core 纯函数):决定列与 12h(对齐 Semi showSecond = 含 ss)---
218
+ const formatSpec = $derived(parseFormatSpec(format));
219
+ const effShowSecond = $derived(formatSpec.showSecond);
220
+ const effUse12Hours = $derived(use12Hours || formatSpec.use12Hours);
191
221
 
192
- // --- 字符串/Date 入参归一化为 Date|null (字符串经 core parseTimeString) ---
222
+ // --- 字符串/Date 入参归一化为 Date|null(字符串经 core parseTimeString)---
193
223
  function toDate(input: TimeInput): Date | null {
194
224
  if (input == null) return null;
195
225
  if (input instanceof Date) return input;
@@ -201,11 +231,10 @@
201
231
  }
202
232
 
203
233
  const loc = useLocale();
204
-
205
234
  const baseId = useId('cd-time-picker-panel');
206
235
 
207
- // --- 受控 value (红线 #1): 不无条件回写 value,仅 onChange ---
208
- // 内部统一用 [start, end] 元组表示 (单选只用 [0]),避免双分支。
236
+ // --- 受控 value(红线 #1):不无条件回写 value,仅 onChange ---
237
+ // 内部统一用 [start, end] 元组表示(单选只用 [0]),避免双分支。
209
238
  type Pair = [Date | null, Date | null];
210
239
 
211
240
  function toPair(input: Props['value']): Pair {
@@ -214,46 +243,26 @@
214
243
  }
215
244
 
216
245
  const isValueControlled = $derived(value !== undefined);
217
- // eslint-disable-next-line svelte/no-state-referencing-locally -- 仅捕获初始 defaultValue (非受控初值)
218
- let innerValue = $state<Pair>(getInitialPair());
219
-
246
+ // 仅捕获初始 defaultValue(非受控初值);用函数包裹避免 state_referenced_locally。
220
247
  function getInitialPair(): Pair {
221
248
  return toPair(defaultValue);
222
249
  }
250
+ let innerValue = $state<Pair>(getInitialPair());
223
251
  const currentPair = $derived<Pair>(isValueControlled ? toPair(value) : innerValue);
224
-
225
- // 单选视图:始终读 [0]
226
252
  const current = $derived<Date | null>(currentPair[0]);
227
253
 
228
- // 范围当前正在编辑的一端 (0=start, 1=end);打开时重置为 start
229
- let activeIndex = $state<0 | 1>(0);
230
- const activeDate = $derived<Date | null>(isRange ? currentPair[activeIndex] : currentPair[0]);
231
-
232
254
  function emit(next: Pair) {
233
255
  if (!isValueControlled) innerValue = next;
234
256
  onChange?.(isRange ? next : next[0]);
235
257
  }
236
258
 
237
- // 单选 setValue:写 [0]
238
- function setValue(next: Date | null) {
239
- emit([next, currentPair[1]]);
240
- }
241
-
242
- // 范围 setValue:写当前 activeIndex 端
243
- function setRangeValue(next: Date | null) {
244
- const pair: Pair = [...currentPair];
245
- pair[activeIndex] = next;
246
- emit(pair);
247
- }
248
-
249
- // --- 受控 open (红线 #1): 不无条件回写 open,仅 onOpenChange ---
259
+ // --- 受控 open(红线 #1):不无条件回写 open,仅 onOpenChange ---
250
260
  const isOpenControlled = $derived(open !== undefined);
251
- let innerOpen = $state(getInitialOpen());
252
- const isOpen = $derived(isOpenControlled ? !!open : innerOpen);
253
-
254
261
  function getInitialOpen(): boolean {
255
262
  return defaultOpen;
256
263
  }
264
+ let innerOpen = $state(getInitialOpen());
265
+ const isOpen = $derived(isOpenControlled ? !!open : innerOpen);
257
266
 
258
267
  function setOpen(next: boolean) {
259
268
  if (next === isOpen) return;
@@ -266,55 +275,44 @@
266
275
  setOpen(!isOpen);
267
276
  }
268
277
 
269
- // --- 选中的 h/m/s 派生 (24h 内部表示);从当前编辑端 activeDate 读取 ---
270
- const selectedHour = $derived(activeDate ? activeDate.getHours() : 0);
271
- const selectedMinute = $derived(activeDate ? activeDate.getMinutes() : 0);
272
- const selectedSecond = $derived(activeDate ? activeDate.getSeconds() : 0);
278
+ // 面板首次打开后常驻 DOM,关闭仅 CSS 隐藏(对齐 Semi Popover 惰性挂载)。
279
+ let hasOpened = $state(getInitialOpen());
280
+ $effect(() => {
281
+ if (isOpen) hasOpened = true;
282
+ });
273
283
 
274
- // --- 12h 制派生:当前 meridiem + 小时列显示值 (红线 #2 经 core 纯函数) ---
275
- const selectedMeridiem = $derived<Meridiem>(meridiemOf(selectedHour));
276
- const selectedHourDisplay = $derived(effUse12Hours ? to12Hour(selectedHour) : selectedHour);
284
+ // --- 单个编辑端(0=start,1=end)的 h/m/s 派生 + disabledTime 接线(对齐 Semi Combobox)---
285
+ // panelIndex:单选恒 0;范围左列 0 / 右列 1。
286
+ function dateOf(panelIndex: 0 | 1): Date | null {
287
+ return currentPair[panelIndex];
288
+ }
277
289
 
278
- // --- 列项 + 禁用集生成 (红线 #2: 派生纯函数) ---
279
- const hours = $derived(
280
- applyHideDisabled(
281
- buildHourOptions(hourStep, effUse12Hours, selectedMeridiem, disabledHours),
282
- hideDisabledOptions,
283
- ),
284
- );
285
- const minutes = $derived(
286
- applyHideDisabled(
287
- buildMinuteOptions(minuteStep, selectedHour, disabledMinutes),
288
- hideDisabledOptions,
289
- ),
290
- );
291
- const seconds = $derived(
292
- applyHideDisabled(
293
- buildSecondOptions(secondStep, selectedHour, selectedMinute, disabledSeconds),
294
- hideDisabledOptions,
295
- ),
296
- );
290
+ function disabledRulesFor(panelIndex: 0 | 1) {
291
+ if (!disabledTime) return undefined;
292
+ return disabledTime(dateOf(panelIndex), panelIndex === 0 ? 'left' : 'right');
293
+ }
297
294
 
298
- function pad2(n: number): string {
299
- return n < 10 ? `0${n}` : `${n}`;
295
+ // 合成 Date:基于当前编辑端或今天,写入 h/m/s(对齐 onChangeWithDateFirst 保留日期部分)。
296
+ function commit(panelIndex: 0 | 1, h: number, m: number, s: number) {
297
+ const src = dateOf(panelIndex);
298
+ const base = src ? new Date(src) : new Date();
299
+ base.setHours(h, m, s, 0);
300
+ const next: Pair = [...currentPair];
301
+ next[panelIndex] = base;
302
+ emit(next);
300
303
  }
301
304
 
302
- // --- Intl 本地化展示 (无 format 时;不手拼时间串);12h 制由 hour12 驱动 AM/PM ---
303
- const triggerFormat = $derived(
304
- new Intl.DateTimeFormat(locale, {
305
- hour: '2-digit',
306
- minute: '2-digit',
307
- second: effShowSecond ? '2-digit' : undefined,
308
- hour12: effUse12Hours,
309
- }),
310
- );
305
+ // --- Intl / core formatTime 展示(对齐 Semi 值层时区转换)---
306
+ const configCtx = getContext<ConfigContextValue | undefined>(CONFIG_CONTEXT_KEY);
307
+ const configTimeZone = $derived(configCtx?.current.timeZone);
308
+ const effectiveTimeZone = $derived<string | number | undefined>(timeZone ?? configTimeZone);
311
309
 
312
- // 单个 Date 的展示串:有 format 走 core formatTime (红线 #2),否则 Intl 本地化
313
310
  function displayOne(d: Date): string {
314
- if (format) {
315
- return formatTime({ hour: d.getHours(), minute: d.getMinutes(), second: d.getSeconds() }, format);
316
- }
317
- return triggerFormat.format(d);
311
+ const shown = zonedWallTime(d, effectiveTimeZone);
312
+ return formatTime(
313
+ { hour: shown.getHours(), minute: shown.getMinutes(), second: shown.getSeconds() },
314
+ format,
315
+ );
318
316
  }
319
317
 
320
318
  const placeholderText = $derived(placeholder ?? loc().t('TimePicker.placeholder'));
@@ -322,199 +320,168 @@
322
320
  const displayText = $derived.by(() => {
323
321
  if (isRange) {
324
322
  const [s, e] = currentPair;
325
- if (!s && !e) return placeholderText;
326
- const sep = ' ~ ';
327
- return `${s ? displayOne(s) : ''}${sep}${e ? displayOne(e) : ''}`;
323
+ if (!s && !e) return '';
324
+ return `${s ? displayOne(s) : ''}${rangeSeparator}${e ? displayOne(e) : ''}`;
328
325
  }
329
- return current ? displayOne(current) : placeholderText;
326
+ return current ? displayOne(current) : '';
330
327
  });
331
328
 
332
329
  const hasValue = $derived(isRange ? currentPair[0] !== null || currentPair[1] !== null : current !== null);
333
- const showClearBtn = $derived(effClearable && !disabled && hasValue);
334
-
335
- // 合成 Date: 基于当前编辑端或今天,写入 h/m/s;按模式写单选/范围端
336
- function commit(h: number, m: number, s: number) {
337
- const base = activeDate ? new Date(activeDate) : new Date();
338
- base.setHours(h, m, s, 0);
339
- if (isRange) setRangeValue(base);
340
- else setValue(base);
341
- }
342
-
343
- // 12h 制下小时列的值是显示小时 (1-12),按当前 meridiem 转回 24h 内部表示
344
- function pickHour(h: number) {
345
- const hour24 = effUse12Hours ? from12Hour(h, selectedMeridiem) : h;
346
- commit(hour24, selectedMinute, selectedSecond);
347
- }
348
- function pickMinute(m: number) {
349
- commit(selectedHour, m, selectedSecond);
350
- }
351
- function pickSecond(s: number) {
352
- commit(selectedHour, selectedMinute, s);
353
- }
354
- // 切换 AM/PM:保持当前显示小时,重算 24h 表示
355
- function pickMeridiem(m: Meridiem) {
356
- if (m === selectedMeridiem) return;
357
- commit(from12Hour(selectedHourDisplay, m), selectedMinute, selectedSecond);
358
- }
359
-
360
- function setNow() {
361
- const now = new Date();
362
- commit(now.getHours(), now.getMinutes(), now.getSeconds());
363
- }
364
330
 
365
- function confirm() {
366
- // 范围:在 start 端确认后切到 end 端继续选;end 端确认后关闭
367
- if (isRange && activeIndex === 0) {
368
- activeIndex = 1;
331
+ // --- 触发器可键入:解析输入串回写(镜像 Semi inputFoundation.handleInputChange/handleBlur)---
332
+ // 输入过程只做本地展示,Enter/Blur 时解析并提交(单选整串 时间;范围按 rangeSeparator 拆两端)。
333
+ let inputDraft = $state<string | null>(null);
334
+ const inputValue = $derived(inputDraft ?? displayText);
335
+
336
+ function parseAndCommit(raw: string) {
337
+ if (inputReadOnly) return;
338
+ const text = raw.trim();
339
+ if (text === '') {
340
+ emit([null, null]);
341
+ inputDraft = null;
369
342
  return;
370
343
  }
371
- setOpen(false);
344
+ if (isRange) {
345
+ const parts = text.split(rangeSeparator.trim() === '' ? '~' : rangeSeparator.trim());
346
+ const s = parts[0] ? toDate(parts[0].trim()) : null;
347
+ const e = parts[1] ? toDate(parts[1].trim()) : null;
348
+ if (s || e) emit([s, e]);
349
+ } else {
350
+ const d = toDate(text);
351
+ if (d) emit([d, currentPair[1]]);
352
+ }
353
+ inputDraft = null;
372
354
  }
373
355
 
374
- function clear(e: MouseEvent) {
375
- e.stopPropagation();
376
- if (disabled) return;
377
- if (isRange) emit([null, null]);
378
- else setValue(null);
356
+ function onInputChange(v: string) {
357
+ inputDraft = v;
379
358
  }
380
-
381
- function onTriggerKeydown(e: KeyboardEvent) {
359
+ function onInputBlur(e: FocusEvent) {
360
+ if (inputDraft !== null) parseAndCommit(inputDraft);
361
+ onBlur?.(e);
362
+ }
363
+ function onInputKeydown(e: KeyboardEvent) {
382
364
  if (disabled) return;
383
- switch (e.key) {
384
- case 'Enter':
385
- case ' ':
365
+ if (e.key === 'Enter') {
366
+ if (inputDraft !== null) parseAndCommit(inputDraft);
367
+ setOpen(true);
368
+ } else if (e.key === 'ArrowDown') {
369
+ if (!isOpen) setOpen(true);
370
+ } else if (e.key === 'Escape') {
371
+ if (isOpen) {
386
372
  e.preventDefault();
387
- setOpen(true);
388
- break;
389
- case 'ArrowDown':
390
- e.preventDefault();
391
- if (!isOpen) setOpen(true);
392
- break;
393
- case 'Escape':
394
- if (isOpen) {
395
- e.preventDefault();
396
- setOpen(false);
397
- }
398
- break;
399
- default:
400
- break;
373
+ setOpen(false);
374
+ }
401
375
  }
402
376
  }
403
377
 
404
- // --- 列容器引用 (红线 #3: 普通 bind:this,scrollIntoView 命令式调用) ---
405
- let hourCol = $state<HTMLUListElement | null>(null);
406
- let minuteCol = $state<HTMLUListElement | null>(null);
407
- let secondCol = $state<HTMLUListElement | null>(null);
408
- let meridiemCol = $state<HTMLUListElement | null>(null);
409
-
410
- function scrollColToSelected(col: HTMLUListElement | null) {
411
- if (!col) return;
412
- const target = col.querySelector<HTMLElement>('[aria-selected="true"]');
413
- target?.scrollIntoView({ block: 'center' });
378
+ function clear() {
379
+ if (disabled) return;
380
+ inputDraft = null;
381
+ emit([null, null]);
414
382
  }
415
383
 
416
- // --- 列内 roving 键盘导航(a11y §6 / WAI-ARIA APG listbox)---
417
- // 每列单一 Tab 停靠点:选中项(或首个可选项)tabindex=0,其余 -1。
418
- // 列间用 Tab/Shift+Tab(原生焦点序,停靠点即为各列入口)。
419
-
420
- // 列内可聚焦(非 disabled)选项,按 DOM 顺序漫游。
421
- function colOptions(col: HTMLUListElement | null): HTMLElement[] {
422
- if (!col) return [];
423
- return [...col.querySelectorAll<HTMLElement>('[role="option"]')].filter(
424
- (el) => el.getAttribute('aria-disabled') !== 'true',
425
- );
384
+ // --- 列数据构造(ScrollItemData):值/文案/禁用 + 选中态单位后缀 transform(对齐 Semi)---
385
+ function pad2(n: number): string {
386
+ return n < 10 ? `0${n}` : `${n}`;
426
387
  }
427
388
 
428
- // 纯派生 tabindex:列内选中项(无选中时首个可选项)为停靠点 0,其余 -1(红线 #2:render 期只读)。
429
- // selected 为该列当前选中值的 option(传 isSelected 布尔),col 标识用于「无选中回退首项」。
430
- function colItemTabindex(isSelectedOpt: boolean, isFirst: boolean, anySelected: boolean): 0 | -1 {
431
- if (anySelected) return isSelectedOpt ? 0 : -1;
432
- return isFirst ? 0 : -1;
389
+ function hourList(panelIndex: 0 | 1): ScrollItemData[] {
390
+ const d = dateOf(panelIndex);
391
+ const hour24 = d ? d.getHours() : 0;
392
+ const mer = meridiemOf(hour24);
393
+ const rules = disabledRulesFor(panelIndex);
394
+ const opts = applyHideDisabled(
395
+ buildHourOptions(hourStep, effUse12Hours, mer, rules?.disabledHours ?? disabledHours),
396
+ hideDisabledOptions,
397
+ );
398
+ const suffix = loc().t('TimePicker.hour');
399
+ return opts.map((o) => ({
400
+ value: o.value,
401
+ text: pad2(o.value),
402
+ disabled: o.disabled,
403
+ transform: (_v: unknown, t: string) => t + suffix,
404
+ }));
405
+ }
406
+
407
+ function minuteList(panelIndex: 0 | 1): ScrollItemData[] {
408
+ const d = dateOf(panelIndex);
409
+ const hour24 = d ? d.getHours() : 0;
410
+ const rules = disabledRulesFor(panelIndex);
411
+ const opts = applyHideDisabled(
412
+ buildMinuteOptions(minuteStep, hour24, rules?.disabledMinutes ?? disabledMinutes),
413
+ hideDisabledOptions,
414
+ );
415
+ const suffix = loc().t('TimePicker.minute');
416
+ return opts.map((o) => ({
417
+ value: o.value,
418
+ text: pad2(o.value),
419
+ disabled: o.disabled,
420
+ transform: (_v: unknown, t: string) => t + suffix,
421
+ }));
422
+ }
423
+
424
+ function secondList(panelIndex: 0 | 1): ScrollItemData[] {
425
+ const d = dateOf(panelIndex);
426
+ const hour24 = d ? d.getHours() : 0;
427
+ const minute = d ? d.getMinutes() : 0;
428
+ const rules = disabledRulesFor(panelIndex);
429
+ const opts = applyHideDisabled(
430
+ buildSecondOptions(secondStep, hour24, minute, rules?.disabledSeconds ?? disabledSeconds),
431
+ hideDisabledOptions,
432
+ );
433
+ const suffix = loc().t('TimePicker.second');
434
+ return opts.map((o) => ({
435
+ value: o.value,
436
+ text: pad2(o.value),
437
+ disabled: o.disabled,
438
+ transform: (_v: unknown, t: string) => t + suffix,
439
+ }));
440
+ }
441
+
442
+ function ampmList(): ScrollItemData[] {
443
+ return [
444
+ { value: 'am', text: loc().t('TimePicker.am') },
445
+ { value: 'pm', text: loc().t('TimePicker.pm') },
446
+ ];
447
+ }
448
+
449
+ // 选中项在列表中的索引(selectedIndex)。
450
+ function indexOfValue(list: ScrollItemData[], v: unknown): number {
451
+ const i = list.findIndex((it) => it.value === v);
452
+ return i < 0 ? 0 : i;
453
+ }
454
+
455
+ // --- onSelect 分发:按 type 区分列,映射回 24h 内部表示并提交 ---
456
+ function makeSelectHandler(panelIndex: 0 | 1, col: 'hour' | 'minute' | 'second' | 'ampm') {
457
+ return (payload: ScrollItemSelectPayload) => {
458
+ const d = dateOf(panelIndex);
459
+ const hour24 = d ? d.getHours() : 0;
460
+ const minute = d ? d.getMinutes() : 0;
461
+ const second = d ? d.getSeconds() : 0;
462
+ const mer = meridiemOf(hour24);
463
+ if (col === 'hour') {
464
+ const displayHour = payload.value as number;
465
+ const h = effUse12Hours ? from12Hour(displayHour, mer) : displayHour;
466
+ commit(panelIndex, h, minute, second);
467
+ } else if (col === 'minute') {
468
+ commit(panelIndex, hour24, payload.value as number, second);
469
+ } else if (col === 'second') {
470
+ commit(panelIndex, hour24, minute, payload.value as number);
471
+ } else {
472
+ // ampm
473
+ const nextMer = payload.value as Meridiem;
474
+ if (nextMer === mer) return;
475
+ const displayHour = to12Hour(hour24);
476
+ commit(panelIndex, from12Hour(displayHour, nextMer), minute, second);
477
+ }
478
+ };
433
479
  }
434
480
 
435
- // 各列是否存在可聚焦的选中项(决定 roving 停靠点是选中项还是回退首项;红线 #2:纯派生)。
436
- const hourSelected = $derived(hours.some((h) => h.value === selectedHourDisplay && !h.disabled));
437
- const minuteSelected = $derived(minutes.some((m) => m.value === selectedMinute && !m.disabled));
438
-
439
- // 列内 keydown:↑↓ 漫游(循环)、Home/End 跳首末、Enter/Space 选中。
440
- function onColKeydown(e: KeyboardEvent, col: HTMLUListElement | null, pick: (v: number) => void, value: number) {
441
- if (e.key === 'Enter' || e.key === ' ') {
442
- e.preventDefault();
443
- pick(value);
444
- return;
445
- }
446
- if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' && e.key !== 'Home' && e.key !== 'End') return;
447
- const opts = colOptions(col);
448
- if (opts.length === 0) return;
449
- const cur = opts.findIndex((el) => el === document.activeElement);
450
- e.preventDefault();
451
- let next = cur;
452
- if (e.key === 'ArrowDown') next = cur < 0 ? 0 : (cur + 1) % opts.length;
453
- else if (e.key === 'ArrowUp') next = cur < 0 ? opts.length - 1 : (cur - 1 + opts.length) % opts.length;
454
- else if (e.key === 'Home') next = 0;
455
- else if (e.key === 'End') next = opts.length - 1;
456
- const target = opts[next];
457
- if (!target) return;
458
- // 收敛 roving 停靠点到目标项(命令式写 DOM,非 render 期;红线 #2)。
459
- for (const el of opts) el.tabIndex = el === target ? 0 : -1;
460
- target.focus();
461
- }
462
-
463
- // meridiem 列(值为 'am'/'pm' 字符串)的 keydown:导航同 onColKeydown,激活走 pickMeridiem。
464
- function onMeridiemKeydown(e: KeyboardEvent, mer: Meridiem) {
465
- if (e.key === 'Enter' || e.key === ' ') {
466
- e.preventDefault();
467
- pickMeridiem(mer);
468
- return;
469
- }
470
- if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' && e.key !== 'Home' && e.key !== 'End') return;
471
- const opts = colOptions(meridiemCol);
472
- if (opts.length === 0) return;
473
- const cur = opts.findIndex((el) => el === document.activeElement);
474
- e.preventDefault();
475
- let next = cur;
476
- if (e.key === 'ArrowDown') next = cur < 0 ? 0 : (cur + 1) % opts.length;
477
- else if (e.key === 'ArrowUp') next = cur < 0 ? opts.length - 1 : (cur - 1 + opts.length) % opts.length;
478
- else if (e.key === 'Home') next = 0;
479
- else if (e.key === 'End') next = opts.length - 1;
480
- const target = opts[next];
481
- if (!target) return;
482
- for (const el of opts) el.tabIndex = el === target ? 0 : -1;
483
- target.focus();
484
- }
485
-
486
- // 打开后把焦点送进当前小时列的选中项(APG:打开浮层并聚焦当前小时列)。
487
- $effect(() => {
488
- if (!isOpen) return;
489
- void activeIndex;
490
- void tick().then(() => {
491
- const target =
492
- hourCol?.querySelector<HTMLElement>('[aria-selected="true"]') ??
493
- colOptions(hourCol)[0] ??
494
- null;
495
- target?.focus({ preventScroll });
496
- });
497
- });
498
-
499
- // 打开时重置范围编辑端为 start
500
- $effect(() => {
501
- if (isOpen) activeIndex = 0;
502
- });
503
-
504
- // 打开 / 切换编辑端时把列各自滚到选中项 (命令式,不放响应式 attachment)
505
- $effect(() => {
506
- if (!isOpen) return;
507
- void activeIndex; // 切端时重滚
508
- void tick().then(() => {
509
- scrollColToSelected(hourCol);
510
- scrollColToSelected(minuteCol);
511
- if (effShowSecond) scrollColToSelected(secondCol);
512
- });
513
- });
514
-
515
- // --- useDismiss (红线 #3): 绑定放进 $effect,open 时绑、cleanup 解绑 ---
481
+ // --- useDismiss(红线 #3):绑定放进 $effect,open 时绑、cleanup 解绑 ---
516
482
  let rootEl = $state<HTMLDivElement | null>(null);
517
- let triggerEl = $state<HTMLButtonElement | null>(null);
483
+ let inputComp = $state<{ focus: () => void; blur: () => void } | null>(null);
484
+ let panelEl = $state<HTMLDivElement | null>(null);
518
485
 
519
486
  $effect(() => {
520
487
  if (!isOpen || !rootEl) return;
@@ -522,249 +489,213 @@
522
489
  onDismiss: () => setOpen(false),
523
490
  escape: true,
524
491
  outsideClick: true,
492
+ extraTargets: [panelEl],
525
493
  });
526
494
  });
527
495
 
496
+ // position → use:floating 的 Placement。
497
+ const POSITION_TO_PLACEMENT: Record<string, Placement> = {
498
+ bottomLeft: 'bottomStart',
499
+ bottomRight: 'bottomEnd',
500
+ bottom: 'bottom',
501
+ topLeft: 'topStart',
502
+ topRight: 'topEnd',
503
+ top: 'top',
504
+ };
505
+ const panelPlacement = $derived<Placement>(POSITION_TO_PLACEMENT[position] ?? 'bottomStart');
506
+
528
507
  // autoFocus: 挂载时自动聚焦触发器
529
508
  $effect(() => {
530
- if (autoFocus && triggerEl) {
531
- triggerEl.focus({ preventScroll: true });
532
- }
509
+ if (autoFocus && inputComp) inputComp.focus();
533
510
  });
534
511
 
535
- // onClickOutSide: 监听 document mousedown,点击不在 rootEl 内时触发
512
+ // focusOnOpen: 打开面板时聚焦触发器
536
513
  $effect(() => {
537
- if (!onClickOutSide) return;
538
- function handler(e: MouseEvent) {
539
- if (rootEl && !rootEl.contains(e.target as Node)) {
540
- onClickOutSide!(e);
541
- }
542
- }
543
- document.addEventListener('mousedown', handler);
544
- return () => document.removeEventListener('mousedown', handler);
514
+ if (isOpen && focusOnOpen && inputComp) inputComp.focus();
545
515
  });
546
516
 
517
+ /** 命令式聚焦触发器(对齐 Semi focus())。 */
518
+ export function focus(): void {
519
+ inputComp?.focus();
520
+ }
521
+
522
+ /** 命令式移除焦点(对齐 Semi blur())。 */
523
+ export function blur(): void {
524
+ inputComp?.blur();
525
+ }
526
+
547
527
  function isSnippet(v: unknown): v is Snippet {
548
528
  return typeof v === 'function';
549
529
  }
550
530
 
551
- const inputStyleStr = $derived.by(() => {
531
+ const inputStyleStr = $derived.by<string | undefined>(() => {
552
532
  if (!inputStyle) return undefined;
553
533
  if (typeof inputStyle === 'string') return inputStyle;
554
- return Object.entries(inputStyle)
555
- .map(([k, v]) => `${k}:${v}`)
556
- .join(';');
534
+ return Object.entries(inputStyle).map(([k, v]) => `${k}:${v}`).join(';');
535
+ });
536
+
537
+ // 只在定义时透传给 Input 的可选属性(exactOptionalPropertyTypes:不显式赋 undefined)。
538
+ const inputOptionalProps = $derived({
539
+ ...(inputStyleStr !== undefined ? { inputStyle: inputStyleStr } : {}),
540
+ ...(insetLabel !== undefined ? { insetLabel } : {}),
541
+ ...(insetLabelId !== undefined ? { insetLabelId } : {}),
542
+ ...(clearIcon !== undefined ? { clearIcon } : {}),
543
+ ...(id !== undefined ? { id } : {}),
544
+ ...(ariaLabelledby !== undefined ? { ariaLabelledby } : {}),
545
+ ...(ariaDescribedby !== undefined ? { ariaDescribedby } : {}),
546
+ ...(ariaErrormessage !== undefined ? { ariaErrormessage } : {}),
547
+ ...(ariaRequired !== undefined ? { ariaRequired } : {}),
548
+ ...(onFocus !== undefined ? { onFocus } : {}),
549
+ });
550
+
551
+ const popupStyleStr = $derived.by(() => {
552
+ const zPart = `z-index:${zIndex}`;
553
+ if (!popupStyle) return zPart;
554
+ const base = typeof popupStyle === 'string'
555
+ ? popupStyle
556
+ : Object.entries(popupStyle).map(([k, v]) => `${k}:${v}`).join(';');
557
+ return `${zPart};${base}`;
557
558
  });
558
559
 
559
560
  const cls = $derived(
560
561
  [
561
562
  'cd-time-picker',
562
563
  `cd-time-picker--${size}`,
563
- `cd-time-picker--${status}`,
564
+ validateStatus !== 'default' && `cd-time-picker--${validateStatus}`,
564
565
  disabled && 'cd-time-picker--disabled',
565
566
  isOpen && 'cd-time-picker--open',
566
- !motion && 'cd-time-picker--no-motion',
567
- borderless && 'cd-time-picker--borderless',
567
+ isRange && 'cd-time-picker--range',
568
+ className,
569
+ ]
570
+ .filter(Boolean)
571
+ .join(' '),
572
+ );
573
+
574
+ const panelCls = $derived(
575
+ [
576
+ 'cd-time-picker__panel',
577
+ isRange && 'cd-time-picker__panel--range',
578
+ !motion && 'cd-time-picker__panel--no-motion',
579
+ popupClassName,
568
580
  ]
569
581
  .filter(Boolean)
570
582
  .join(' '),
571
583
  );
584
+
585
+ // 单列的 header 文案(范围:begin/end;单选:panelHeader 或空)。
586
+ const beginHeader = $derived(panelHeader ?? loc().t('TimePicker.rangeStart'));
587
+ const endHeader = $derived(loc().t('TimePicker.rangeEnd'));
572
588
  </script>
573
589
 
574
- <div class={cls} bind:this={rootEl} aria-invalid={status === 'error' || undefined} data-position={position}>
590
+ <div
591
+ class={cls}
592
+ {style}
593
+ {id}
594
+ bind:this={rootEl}
595
+ aria-invalid={ariaInvalid ?? (validateStatus === 'error' || undefined)}
596
+ data-position={position}
597
+ >
575
598
  {#if triggerRender}
576
- <!-- 自定义触发器:完全替换默认 input + 图标区域 -->
577
- <div class="cd-time-picker__control" onclick={toggleOpen} onkeydown={onTriggerKeydown} role="button" tabindex={disabled ? -1 : 0} aria-haspopup="dialog" aria-expanded={isOpen}>
599
+ <!-- 自定义触发器:完全替换默认 Input + 图标区域 -->
600
+ <div
601
+ class="cd-time-picker__control"
602
+ onclick={toggleOpen}
603
+ onkeydown={onInputKeydown}
604
+ role="button"
605
+ tabindex={disabled ? -1 : 0}
606
+ aria-haspopup="dialog"
607
+ aria-expanded={isOpen}
608
+ >
578
609
  {@render triggerRender({ value: current, placeholder: placeholderText, open: isOpen, disabled })}
579
610
  </div>
580
611
  {:else}
581
- <div class="cd-time-picker__control">
582
- <button
583
- type="button"
584
- class="cd-time-picker__trigger"
612
+ <!-- 触发器复用 Input(镜像 Semi TimeInput:<Input hideSuffix suffix={IconClock}>):可键入时间串 -->
613
+ <div class="cd-time-picker__control" onclick={toggleOpen} role="presentation">
614
+ <Input
615
+ bind:this={inputComp}
616
+ class="cd-time-picker__input"
617
+ value={inputValue}
618
+ placeholder={placeholderText}
619
+ {size}
620
+ {disabled}
621
+ {borderless}
622
+ {validateStatus}
623
+ {showClear}
624
+ readonly={inputReadOnly}
625
+ hideSuffix
626
+ role="combobox"
585
627
  aria-haspopup="dialog"
586
628
  aria-expanded={isOpen}
587
629
  aria-controls={baseId}
588
- aria-label={ariaLabel}
589
- {disabled}
590
- data-readonly={inputReadOnly || undefined}
591
- style={inputStyleStr}
592
- bind:this={triggerEl}
593
- onclick={toggleOpen}
594
- onkeydown={onTriggerKeydown}
595
- onfocus={onFocus}
596
- onblur={onBlur}
630
+ {...inputOptionalProps}
631
+ onChange={onInputChange}
632
+ onClear={clear}
633
+ onBlur={onInputBlur}
634
+ onKeyDown={onInputKeydown}
597
635
  >
598
- {#if prefix}
599
- <span class="cd-time-picker__prefix">
600
- {#if typeof prefix === 'string'}
601
- {prefix}
602
- {:else}
603
- {@render prefix()}
604
- {/if}
605
- </span>
606
- {/if}
607
- <span class="cd-time-picker__value" class:cd-time-picker__value--placeholder={current === null}>
608
- {displayText}
609
- </span>
610
- </button>
611
-
612
- {#if showClearBtn}
613
- <button type="button" class="cd-time-picker__clear" aria-label={loc().t('TimePicker.clear')} onclick={clear}>
614
- {#if clearIcon}
615
- {@render clearIcon()}
616
- {:else}
617
- <svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true" focusable="false">
618
- <path
619
- fill="currentColor"
620
- 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"
621
- />
622
- </svg>
623
- {/if}
624
- </button>
625
- {/if}
626
-
627
- <span class="cd-time-picker__icon" aria-hidden="true">
628
- <svg viewBox="0 0 16 16" width="14" height="14" focusable="false">
629
- <path
630
- fill="currentColor"
631
- d="M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm0 12a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11ZM8.5 4.5h-1v4l3 1.8.5-.85L8.5 8V4.5Z"
632
- />
633
- </svg>
634
- </span>
636
+ {#snippet suffix()}
637
+ <span class="cd-time-picker__icon" aria-hidden="true"><IconClock /></span>
638
+ {/snippet}
639
+ </Input>
635
640
  </div>
636
641
  {/if}
637
642
 
638
- {#if isOpen}
643
+ {#if hasOpened && rootEl}
644
+ <!-- 首次打开后常驻 DOM,关闭态 hidden。定位由 use:floating 接管(portal 到 body + 避让 + 跟随滚动)。 -->
639
645
  <div
640
- class="cd-time-picker__panel"
646
+ bind:this={panelEl}
647
+ class={panelCls}
648
+ style={popupStyleStr}
641
649
  id={baseId}
642
650
  role="dialog"
643
651
  aria-label={loc().t('TimePicker.triggerLabel')}
644
652
  tabindex="-1"
653
+ hidden={!isOpen || undefined}
654
+ onclick={(e) => stopPropagation && e.stopPropagation()}
655
+ onkeydown={(e) => e.key === 'Escape' && setOpen(false)}
656
+ use:floating={{ trigger: rootEl, placement: panelPlacement, autoAdjust: autoAdjustOverflow, offset: 4, getContainer: getPopupContainer, open: isOpen }}
645
657
  >
646
- {#if panelHeader}
647
- <div class="cd-time-picker__panel-header">
648
- {#if typeof panelHeader === 'string'}
649
- {panelHeader}
650
- {:else}
651
- {@render panelHeader()}
652
- {/if}
653
- </div>
654
- {/if}
655
658
  {#if isRange}
656
- <div class="cd-time-picker__range-tabs" role="tablist" aria-label={loc().t('TimePicker.triggerLabel')}>
657
- <button
658
- type="button"
659
- role="tab"
660
- class="cd-time-picker__range-tab"
661
- class:cd-time-picker__range-tab--active={activeIndex === 0}
662
- aria-selected={activeIndex === 0}
663
- onclick={() => (activeIndex = 0)}
664
- >
665
- {loc().t('TimePicker.rangeStart')}
666
- <span class="cd-time-picker__range-preview">{currentPair[0] ? displayOne(currentPair[0]) : '--'}</span>
667
- </button>
668
- <button
669
- type="button"
670
- role="tab"
671
- class="cd-time-picker__range-tab"
672
- class:cd-time-picker__range-tab--active={activeIndex === 1}
673
- aria-selected={activeIndex === 1}
674
- onclick={() => (activeIndex = 1)}
675
- >
676
- {loc().t('TimePicker.rangeEnd')}
677
- <span class="cd-time-picker__range-preview">{currentPair[1] ? displayOne(currentPair[1]) : '--'}</span>
678
- </button>
679
- </div>
680
- {/if}
681
-
682
- <div class="cd-time-picker__columns">
683
- <ul class="cd-time-picker__col" role="listbox" aria-label={loc().t('TimePicker.hour')} bind:this={hourCol}>
684
- {#each hours as h, hi (h.value)}
685
- <li
686
- class="cd-time-picker__item"
687
- class:cd-time-picker__item--selected={h.value === selectedHourDisplay}
688
- class:cd-time-picker__item--disabled={h.disabled}
689
- role="option"
690
- aria-selected={h.value === selectedHourDisplay}
691
- aria-disabled={h.disabled || undefined}
692
- tabindex={h.disabled ? -1 : colItemTabindex(h.value === selectedHourDisplay, hi === 0, hourSelected)}
693
- onclick={() => !h.disabled && pickHour(h.value)}
694
- onkeydown={(e) => !h.disabled && onColKeydown(e, hourCol, pickHour, h.value)}
695
- >
696
- {pad2(h.value)}
697
- </li>
659
+ <!-- range:左右两个 Combobox(ScrollList)并排(对齐 Semi RANGE_PANEL_LISTS)。 -->
660
+ <div class="cd-time-picker__lists">
661
+ {#each [0, 1] as const as pIdx (pIdx)}
662
+ {@const d = dateOf(pIdx)}
663
+ {@const hour24 = d ? d.getHours() : 0}
664
+ {@const hL = hourList(pIdx)}
665
+ {@const mL = minuteList(pIdx)}
666
+ {@const sL = secondList(pIdx)}
667
+ {@const aL = ampmList()}
668
+ <ScrollList header={pIdx === 0 ? beginHeader : endHeader} footer={panelFooter}>
669
+ {#if effUse12Hours}
670
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-ampm" list={aL} selectedIndex={meridiemOf(hour24) === 'am' ? 0 : 1} type="ampm" onSelect={makeSelectHandler(pIdx, 'ampm')} ariaLabel={loc().t('TimePicker.triggerLabel')} {...scrollItemProps} />
671
+ {/if}
672
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-hour" list={hL} selectedIndex={indexOfValue(hL, effUse12Hours ? to12Hour(hour24) : hour24)} type="hour" onSelect={makeSelectHandler(pIdx, 'hour')} ariaLabel={loc().t('TimePicker.hour')} {...scrollItemProps} />
673
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-minute" list={mL} selectedIndex={indexOfValue(mL, d ? d.getMinutes() : 0)} type="minute" onSelect={makeSelectHandler(pIdx, 'minute')} ariaLabel={loc().t('TimePicker.minute')} {...scrollItemProps} />
674
+ {#if effShowSecond}
675
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-second" list={sL} selectedIndex={indexOfValue(sL, d ? d.getSeconds() : 0)} type="second" onSelect={makeSelectHandler(pIdx, 'second')} ariaLabel={loc().t('TimePicker.second')} {...scrollItemProps} />
676
+ {/if}
677
+ </ScrollList>
698
678
  {/each}
699
- </ul>
700
-
701
- <ul class="cd-time-picker__col" role="listbox" aria-label={loc().t('TimePicker.minute')} bind:this={minuteCol}>
702
- {#each minutes as m, mi (m.value)}
703
- <li
704
- class="cd-time-picker__item"
705
- class:cd-time-picker__item--selected={m.value === selectedMinute}
706
- class:cd-time-picker__item--disabled={m.disabled}
707
- role="option"
708
- aria-selected={m.value === selectedMinute}
709
- aria-disabled={m.disabled || undefined}
710
- tabindex={m.disabled ? -1 : colItemTabindex(m.value === selectedMinute, mi === 0, minuteSelected)}
711
- onclick={() => !m.disabled && pickMinute(m.value)}
712
- onkeydown={(e) => !m.disabled && onColKeydown(e, minuteCol, pickMinute, m.value)}
713
- >
714
- {pad2(m.value)}
715
- </li>
716
- {/each}
717
- </ul>
718
-
719
- {#if effShowSecond}
720
- {@const secondSelected = seconds.some((s) => s.value === selectedSecond && !s.disabled)}
721
- <ul class="cd-time-picker__col" role="listbox" aria-label={loc().t('TimePicker.second')} bind:this={secondCol}>
722
- {#each seconds as s, si (s.value)}
723
- <li
724
- class="cd-time-picker__item"
725
- class:cd-time-picker__item--selected={s.value === selectedSecond}
726
- class:cd-time-picker__item--disabled={s.disabled}
727
- role="option"
728
- aria-selected={s.value === selectedSecond}
729
- aria-disabled={s.disabled || undefined}
730
- tabindex={s.disabled ? -1 : colItemTabindex(s.value === selectedSecond, si === 0, secondSelected)}
731
- onclick={() => !s.disabled && pickSecond(s.value)}
732
- onkeydown={(e) => !s.disabled && onColKeydown(e, secondCol, pickSecond, s.value)}
733
- >
734
- {pad2(s.value)}
735
- </li>
736
- {/each}
737
- </ul>
738
- {/if}
739
-
740
- {#if effUse12Hours}
741
- <ul class="cd-time-picker__col" role="listbox" aria-label={loc().t('TimePicker.triggerLabel')} bind:this={meridiemCol}>
742
- {#each ['am', 'pm'] as const as mer, meri (mer)}
743
- <li
744
- class="cd-time-picker__item"
745
- class:cd-time-picker__item--selected={mer === selectedMeridiem}
746
- role="option"
747
- aria-selected={mer === selectedMeridiem}
748
- tabindex={colItemTabindex(mer === selectedMeridiem, meri === 0, true)}
749
- onclick={() => pickMeridiem(mer)}
750
- onkeydown={(e) => onMeridiemKeydown(e, mer)}
751
- >
752
- {loc().t(`TimePicker.${mer}`)}
753
- </li>
754
- {/each}
755
- </ul>
756
- {/if}
757
- </div>
758
-
759
- {#if panelFooter !== undefined}
760
- <div class="cd-time-picker__panel-footer-extra">
761
- {#if isSnippet(panelFooter)}{@render panelFooter()}{:else}{panelFooter}{/if}
762
679
  </div>
680
+ {:else}
681
+ <!-- 单选:单个 Combobox(ScrollList),列内 ScrollItem mode=normal(对齐 Semi Combobox)。 -->
682
+ {@const d = dateOf(0)}
683
+ {@const hour24 = d ? d.getHours() : 0}
684
+ {@const hL = hourList(0)}
685
+ {@const mL = minuteList(0)}
686
+ {@const sL = secondList(0)}
687
+ {@const aL = ampmList()}
688
+ <ScrollList header={panelHeader} footer={panelFooter}>
689
+ {#if effUse12Hours}
690
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-ampm" list={aL} selectedIndex={meridiemOf(hour24) === 'am' ? 0 : 1} type="ampm" onSelect={makeSelectHandler(0, 'ampm')} ariaLabel={loc().t('TimePicker.triggerLabel')} {...scrollItemProps} />
691
+ {/if}
692
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-hour" list={hL} selectedIndex={indexOfValue(hL, effUse12Hours ? to12Hour(hour24) : hour24)} type="hour" onSelect={makeSelectHandler(0, 'hour')} ariaLabel={loc().t('TimePicker.hour')} {...scrollItemProps} />
693
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-minute" list={mL} selectedIndex={indexOfValue(mL, d ? d.getMinutes() : 0)} type="minute" onSelect={makeSelectHandler(0, 'minute')} ariaLabel={loc().t('TimePicker.minute')} {...scrollItemProps} />
694
+ {#if effShowSecond}
695
+ <ScrollItem mode="normal" class="cd-time-picker__panel-list-second" list={sL} selectedIndex={indexOfValue(sL, d ? d.getSeconds() : 0)} type="second" onSelect={makeSelectHandler(0, 'second')} ariaLabel={loc().t('TimePicker.second')} {...scrollItemProps} />
696
+ {/if}
697
+ </ScrollList>
763
698
  {/if}
764
- <div class="cd-time-picker__footer">
765
- <button type="button" class="cd-time-picker__now" onclick={setNow}>{loc().t('TimePicker.now')}</button>
766
- <button type="button" class="cd-time-picker__ok" onclick={confirm}>{loc().t('TimePicker.confirm')}</button>
767
- </div>
768
699
  </div>
769
700
  {/if}
770
701
  </div>
@@ -774,249 +705,100 @@
774
705
  position: relative;
775
706
  display: inline-flex;
776
707
  inline-size: 100%;
777
- font-size: var(--cd-input-font-size);
708
+ font-size: var(--cd-font-size-regular);
778
709
  }
779
710
  .cd-time-picker__control {
780
711
  position: relative;
781
712
  inline-size: 100%;
782
713
  }
783
- .cd-time-picker__trigger {
784
- display: flex;
785
- align-items: center;
786
- gap: var(--cd-spacing-tight);
787
- inline-size: 100%;
788
- block-size: var(--cd-input-height-default);
789
- padding-inline-start: var(--cd-input-padding-x);
790
- padding-inline-end: calc(var(--cd-input-padding-x) + 1.25rem);
791
- background: var(--cd-input-color-bg);
792
- color: var(--cd-input-color-text);
793
- border: 1px solid var(--cd-input-border);
794
- border-radius: var(--cd-input-radius);
795
- font: inherit;
796
- text-align: start;
797
- cursor: pointer;
798
- transition: border-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
799
- }
800
- .cd-time-picker--small .cd-time-picker__trigger {
801
- block-size: var(--cd-input-height-small);
802
- font-size: var(--cd-font-size-small);
803
- }
804
- .cd-time-picker--large .cd-time-picker__trigger {
805
- block-size: var(--cd-input-height-large);
806
- font-size: var(--cd-font-size-header-6);
807
- }
808
- .cd-time-picker__trigger:focus-visible {
809
- outline: none;
810
- border-color: var(--cd-input-border-active);
811
- box-shadow: var(--cd-focus-ring);
812
- }
813
- .cd-time-picker--open .cd-time-picker__trigger {
814
- border-color: var(--cd-input-border-active);
815
- }
816
- .cd-time-picker--warning .cd-time-picker__trigger {
817
- border-color: var(--cd-input-border-warning);
818
- }
819
- .cd-time-picker--error .cd-time-picker__trigger {
820
- border-color: var(--cd-input-border-error);
714
+ /* 触发器输入框圆角对齐 Semi $radius-timePicker_input。 */
715
+ .cd-time-picker :global(.cd-time-picker__input) {
716
+ border-radius: var(--cd-radius-time-picker-input);
821
717
  }
822
- .cd-time-picker--disabled .cd-time-picker__trigger {
823
- background: var(--cd-color-fill-0);
824
- color: var(--cd-color-text-3);
825
- cursor: not-allowed;
826
- }
827
- /* 无边框模式 */
828
- .cd-time-picker--borderless .cd-time-picker__trigger {
829
- border-color: transparent;
830
- background: transparent;
831
- }
832
- .cd-time-picker--borderless .cd-time-picker__trigger:focus-visible {
833
- border-color: var(--cd-input-border-active);
834
- background: var(--cd-input-color-bg);
835
- }
836
- .cd-time-picker__value {
837
- flex: 1 1 auto;
838
- overflow: hidden;
839
- white-space: nowrap;
840
- text-overflow: ellipsis;
841
- }
842
- .cd-time-picker__value--placeholder {
843
- color: var(--cd-input-color-placeholder);
844
- }
845
- .cd-time-picker__clear,
846
718
  .cd-time-picker__icon {
847
- position: absolute;
848
- inset-block-start: 50%;
849
- inset-inline-end: var(--cd-input-padding-x);
850
- transform: translateY(-50%);
851
719
  display: inline-flex;
852
720
  align-items: center;
853
721
  justify-content: center;
854
722
  color: var(--cd-color-text-2);
855
- pointer-events: none;
856
- }
857
- .cd-time-picker__clear {
858
- padding: 0;
859
- border: none;
860
- background: var(--cd-input-color-bg);
861
- cursor: pointer;
862
- opacity: 0;
863
- pointer-events: auto;
864
- transition: opacity var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
865
- }
866
- .cd-time-picker__control:hover .cd-time-picker__clear,
867
- .cd-time-picker__clear:focus-visible {
868
- opacity: 1;
869
- }
870
- .cd-time-picker__clear:focus-visible {
871
- outline: none;
872
- box-shadow: var(--cd-focus-ring);
873
- border-radius: var(--cd-border-radius-small);
874
- }
875
- .cd-time-picker__clear:hover {
876
- color: var(--cd-color-text-0);
877
- }
878
- .cd-time-picker__panel {
879
- position: absolute;
880
- inset-block-start: calc(100% + var(--cd-spacing-extra-tight));
881
- inset-inline-start: 0;
882
- z-index: var(--cd-date-picker-panel-z);
883
- background: var(--cd-date-picker-panel-bg);
884
- border-radius: var(--cd-date-picker-panel-radius);
885
- box-shadow: var(--cd-date-picker-panel-shadow);
886
723
  }
724
+
725
+ /* --- 面板容器(对齐 Semi timePicker.scss:range 面板走 timePicker 专属 shadow/border/radius,
726
+ 单选面板走 scrollList 自身样式;此处面板外壳只做 z-index 与动画)--- */
727
+ /* z-index 由 zIndex prop 经 popupStyle 内联注入(对齐 Semi popoverNumbers.DEFAULT_Z_INDEX=1030)。 */
887
728
  .cd-time-picker__panel:focus-visible {
888
729
  outline: none;
889
730
  }
890
- .cd-time-picker__panel-header {
891
- padding: var(--cd-spacing-tight) var(--cd-spacing-tight);
892
- border-block-end: 1px solid var(--cd-color-border);
893
- color: var(--cd-color-text-0);
894
- font-size: var(--cd-font-size-small);
895
- }
896
- .cd-time-picker__prefix {
897
- flex: 0 0 auto;
898
- color: var(--cd-color-text-2);
899
- }
900
- .cd-time-picker--no-motion .cd-time-picker__panel {
731
+ .cd-time-picker__panel--no-motion {
901
732
  transition: none;
902
733
  }
903
- .cd-time-picker__range-tabs {
904
- display: flex;
905
- border-block-end: 1px solid var(--cd-color-border);
734
+
735
+ /* 面板内列 flex: none(镜像 Semi `.semi-timepicker-panel .semi-scrolllist-item { flex: none }`),
736
+ 解除 ScrollList 默认 `flex: 1 1 0%` 的等分,让下面的列宽 width 生效。
737
+ 列间 1px 8% border 保留(对齐 Semi:scrollList `-item:not(:last-child)` 的 border-right,
738
+ Semi timePicker 只去了 -item-wheel 的 border,normal item 的 border-right 保留)。 */
739
+ :global(.cd-time-picker__panel .cd-scrolllist-item) {
740
+ flex: none;
906
741
  }
907
- .cd-time-picker__range-tab {
908
- flex: 1 1 0;
909
- display: flex;
910
- flex-direction: column;
911
- align-items: flex-start;
912
- gap: 2px;
913
- border: none;
914
- background: transparent;
915
- font: inherit;
916
- cursor: pointer;
917
- padding: var(--cd-spacing-tight);
918
- color: var(--cd-color-text-2);
919
- border-block-end: 2px solid transparent;
742
+ /* 列宽(镜像 Semi `.semi-timepicker-panel-list-{hour,minute,second,ampm} { width: 64px/72px }`:
743
+ Semi 是无祖先前缀的裸类,这里用 :global() 包裸类等价——面板 use:floating portal 到 body,
744
+ scoped 祖先选择器(如 .cd-time-picker)匹配不到 portal 出去的列。 */
745
+ :global(.cd-time-picker__panel-list-hour) {
746
+ inline-size: var(--cd-width-time-picker-panel-list-hour);
920
747
  }
921
- .cd-time-picker__range-tab--active {
922
- color: var(--cd-color-primary);
923
- border-block-end-color: var(--cd-color-primary);
748
+ :global(.cd-time-picker__panel-list-minute) {
749
+ inline-size: var(--cd-width-time-picker-panel-list-minute);
924
750
  }
925
- .cd-time-picker__range-tab:focus-visible {
926
- outline: none;
927
- box-shadow: var(--cd-focus-ring);
751
+ :global(.cd-time-picker__panel-list-second) {
752
+ inline-size: var(--cd-width-time-picker-panel-list-second);
928
753
  }
929
- .cd-time-picker__range-preview {
930
- font-size: var(--cd-font-size-small);
931
- color: var(--cd-color-text-0);
932
- font-variant-numeric: tabular-nums;
754
+ :global(.cd-time-picker__panel-list-ampm) {
755
+ inline-size: var(--cd-width-time-picker-panel-list-ampm);
933
756
  }
934
- .cd-time-picker__columns {
935
- display: flex;
757
+
758
+ /* 面板 body 高度对齐 Semi $height-timePicker_panel_body(252px)。 */
759
+ .cd-time-picker__panel :global(.cd-scrolllist-body) {
760
+ block-size: var(--cd-height-time-picker-panel-body);
936
761
  }
937
- .cd-time-picker__col {
938
- inline-size: var(--cd-time-picker-time-col-width);
939
- block-size: calc(var(--cd-time-picker-time-item-height) * 7);
940
- margin: 0;
941
- padding: 0;
942
- overflow-y: auto;
943
- list-style: none;
944
- scrollbar-width: thin;
762
+ /* 面板内 normal 列的居中留白按 Semi 公式重算:(panel_body - item) * 0.5(对齐 timePicker.scss,
763
+ ScrollList 默认用 300px 视窗高,timePicker 面板收窄到 252px 需重算 :before 与 padding-bottom,
764
+ 否则各列选中项垂直不居中)。 */
765
+ .cd-time-picker__panel :global(.cd-scrolllist-item > ul::before) {
766
+ block-size: calc((var(--cd-height-time-picker-panel-body) - var(--cd-height-scroll-list-item)) * 0.5);
945
767
  }
946
- .cd-time-picker__col + .cd-time-picker__col {
947
- border-inline-start: 1px solid var(--cd-color-border);
768
+ .cd-time-picker__panel :global(.cd-scrolllist-item > ul) {
769
+ padding-block-end: calc((var(--cd-height-time-picker-panel-body) - var(--cd-height-scroll-list-item)) * 0.5);
948
770
  }
949
- .cd-time-picker__item {
771
+ /* --- range 双列并排(对齐 Semi timePicker.scss `-range-panel .lists`)--- */
772
+ .cd-time-picker__lists {
950
773
  display: flex;
951
- align-items: center;
952
- justify-content: center;
953
- block-size: var(--cd-time-picker-time-item-height);
954
- color: var(--cd-color-text-0);
955
- cursor: pointer;
956
- transition: background var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
774
+ box-shadow: var(--cd-shadow-time-picker-range-panel);
775
+ border: var(--cd-width-time-picker-range-panel-border) solid var(--cd-color-time-picker-range-panel-border);
776
+ border-radius: var(--cd-radius-time-picker-range-panel);
957
777
  }
958
- .cd-time-picker__item:hover {
959
- background: var(--cd-date-picker-cell-bg-hover);
778
+ .cd-time-picker__lists :global(.cd-scrolllist:first-of-type) {
779
+ border-radius: var(--cd-radius-time-picker-range-panel) 0 0 var(--cd-radius-time-picker-range-panel);
960
780
  }
961
- .cd-time-picker__item:focus-visible {
962
- outline: none;
963
- box-shadow: var(--cd-focus-ring);
781
+ .cd-time-picker__lists :global(.cd-scrolllist:last-of-type) {
782
+ border-radius: 0 var(--cd-radius-time-picker-range-panel) var(--cd-radius-time-picker-range-panel) 0;
964
783
  }
965
- .cd-time-picker__item--selected,
966
- .cd-time-picker__item--selected:hover {
967
- background: var(--cd-date-picker-cell-bg-selected);
968
- color: var(--cd-date-picker-cell-color-selected);
784
+ .cd-time-picker__lists :global(.cd-scrolllist) {
785
+ box-shadow: none;
969
786
  }
970
- .cd-time-picker__item--disabled,
971
- .cd-time-picker__item--disabled:hover {
972
- color: var(--cd-color-text-3);
973
- background: transparent;
974
- cursor: not-allowed;
787
+ /* 双列中间分割线(左列 body 右侧描边)。 */
788
+ .cd-time-picker__lists :global(.cd-scrolllist:not(:last-child) .cd-scrolllist-body) {
789
+ border-inline-end: var(--cd-width-time-picker-range-panel-scrolllist-body-border) solid var(--cd-color-time-picker-range-picker-panel-split-border);
975
790
  }
976
- .cd-time-picker__panel-footer-extra {
977
- padding: var(--cd-spacing-tight);
978
- border-block-start: 1px solid var(--cd-color-border);
979
- }
980
- .cd-time-picker__footer {
981
- display: flex;
982
- align-items: center;
983
- justify-content: space-between;
984
- gap: var(--cd-spacing-tight);
985
- padding: var(--cd-spacing-tight);
986
- border-block-start: 1px solid var(--cd-color-border);
987
- }
988
- .cd-time-picker__now,
989
- .cd-time-picker__ok {
990
- border: none;
991
- background: transparent;
992
- font: inherit;
993
- cursor: pointer;
994
- border-radius: var(--cd-border-radius-small);
995
- padding-inline: var(--cd-spacing-tight);
996
- padding-block: var(--cd-spacing-extra-tight);
997
- }
998
- .cd-time-picker__now {
999
- color: var(--cd-color-primary);
1000
- }
1001
- .cd-time-picker__now:hover {
1002
- text-decoration: underline;
1003
- }
1004
- .cd-time-picker__ok {
1005
- color: var(--cd-color-white, #fff);
1006
- background: var(--cd-color-primary);
1007
- }
1008
- .cd-time-picker__ok:hover {
1009
- background: var(--cd-color-primary-hover, var(--cd-color-primary));
1010
- }
1011
- .cd-time-picker__now:focus-visible,
1012
- .cd-time-picker__ok:focus-visible {
1013
- outline: none;
1014
- box-shadow: var(--cd-focus-ring);
791
+ /* range 面板里 body 与 header 的 padding 覆盖为 0(镜像 Semi timePicker.scss L111-115
792
+ `.semi-scrolllist { .semi-scrolllist-body, .semi-scrolllist-header { padding: 0 } }`)。
793
+ ScrollList 默认 body 有 `padding: 0 16px`,在双列 range 布局里会把列内容与面板边缘/
794
+ 中间分割线推开 16px 空隙、视觉不紧凑——此处按 Semi 归零。之前只覆盖了 header 漏了 body。 */
795
+ .cd-time-picker__lists :global(.cd-scrolllist-body),
796
+ .cd-time-picker__lists :global(.cd-scrolllist-header) {
797
+ padding: var(--cd-spacing-time-picker-range-panel-scrolllist-header-body-padding);
1015
798
  }
799
+
1016
800
  @media (prefers-reduced-motion: reduce) {
1017
- .cd-time-picker__trigger,
1018
- .cd-time-picker__clear,
1019
- .cd-time-picker__item {
801
+ .cd-time-picker__panel {
1020
802
  transition: none;
1021
803
  }
1022
804
  }