@chenzy-design/svelte 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1299) hide show
  1. package/dist/_floating/use-floating.d.ts +6 -0
  2. package/dist/_floating/use-floating.d.ts.map +1 -1
  3. package/dist/_floating/use-floating.js +38 -0
  4. package/dist/ai-chat-dialogue/AIChatDialogue.svelte +243 -0
  5. package/dist/ai-chat-dialogue/AIChatDialogue.svelte.d.ts +60 -0
  6. package/dist/ai-chat-dialogue/AIChatDialogue.svelte.d.ts.map +1 -0
  7. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte +318 -0
  8. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte.d.ts +18 -0
  9. package/dist/ai-chat-dialogue/ContentItemRenderer.svelte.d.ts.map +1 -0
  10. package/dist/ai-chat-dialogue/DialogueBox.svelte +403 -0
  11. package/dist/ai-chat-dialogue/DialogueBox.svelte.d.ts +50 -0
  12. package/dist/ai-chat-dialogue/DialogueBox.svelte.d.ts.map +1 -0
  13. package/dist/ai-chat-dialogue/index.d.ts +8 -0
  14. package/dist/ai-chat-dialogue/index.d.ts.map +1 -0
  15. package/dist/ai-chat-dialogue/index.js +6 -0
  16. package/dist/ai-chat-dialogue/meta.d.ts +174 -0
  17. package/dist/ai-chat-dialogue/meta.d.ts.map +1 -0
  18. package/dist/ai-chat-dialogue/meta.js +66 -0
  19. package/dist/ai-chat-dialogue/render-config.d.ts +57 -0
  20. package/dist/ai-chat-dialogue/render-config.d.ts.map +1 -0
  21. package/dist/ai-chat-input/AIChatInput.svelte +1196 -0
  22. package/dist/ai-chat-input/AIChatInput.svelte.d.ts +146 -0
  23. package/dist/ai-chat-input/AIChatInput.svelte.d.ts.map +1 -0
  24. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte +94 -0
  25. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte.d.ts +17 -0
  26. package/dist/ai-chat-input/AIChatInputConfigureButton.svelte.d.ts.map +1 -0
  27. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte +40 -0
  28. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte.d.ts +16 -0
  29. package/dist/ai-chat-input/AIChatInputConfigureItem.svelte.d.ts.map +1 -0
  30. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte +94 -0
  31. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte.d.ts +18 -0
  32. package/dist/ai-chat-input/AIChatInputConfigureMcp.svelte.d.ts.map +1 -0
  33. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte +52 -0
  34. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte.d.ts +17 -0
  35. package/dist/ai-chat-input/AIChatInputConfigureRadioButton.svelte.d.ts.map +1 -0
  36. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte +50 -0
  37. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte.d.ts +16 -0
  38. package/dist/ai-chat-input/AIChatInputConfigureSelect.svelte.d.ts.map +1 -0
  39. package/dist/ai-chat-input/InputSlotNode.svelte +50 -0
  40. package/dist/ai-chat-input/InputSlotNode.svelte.d.ts +5 -0
  41. package/dist/ai-chat-input/InputSlotNode.svelte.d.ts.map +1 -0
  42. package/dist/ai-chat-input/SelectSlotNode.svelte +54 -0
  43. package/dist/ai-chat-input/SelectSlotNode.svelte.d.ts +5 -0
  44. package/dist/ai-chat-input/SelectSlotNode.svelte.d.ts.map +1 -0
  45. package/dist/ai-chat-input/SkillSlotNode.svelte +82 -0
  46. package/dist/ai-chat-input/SkillSlotNode.svelte.d.ts +5 -0
  47. package/dist/ai-chat-input/SkillSlotNode.svelte.d.ts.map +1 -0
  48. package/dist/ai-chat-input/configure-context.d.ts +12 -0
  49. package/dist/ai-chat-input/configure-context.d.ts.map +1 -0
  50. package/dist/ai-chat-input/configure-context.js +14 -0
  51. package/dist/ai-chat-input/index.d.ts +9 -0
  52. package/dist/ai-chat-input/index.d.ts.map +1 -0
  53. package/dist/ai-chat-input/index.js +9 -0
  54. package/dist/ai-chat-input/input-slot-extension.d.ts +18 -0
  55. package/dist/ai-chat-input/input-slot-extension.d.ts.map +1 -0
  56. package/dist/ai-chat-input/input-slot-extension.js +55 -0
  57. package/dist/ai-chat-input/input-slot-plugins.d.ts +34 -0
  58. package/dist/ai-chat-input/input-slot-plugins.d.ts.map +1 -0
  59. package/dist/ai-chat-input/input-slot-plugins.js +478 -0
  60. package/dist/ai-chat-input/meta.d.ts +284 -0
  61. package/dist/ai-chat-input/meta.d.ts.map +1 -0
  62. package/dist/ai-chat-input/meta.js +106 -0
  63. package/dist/ai-chat-input/select-slot-extension.d.ts +16 -0
  64. package/dist/ai-chat-input/select-slot-extension.d.ts.map +1 -0
  65. package/dist/ai-chat-input/select-slot-extension.js +35 -0
  66. package/dist/ai-chat-input/skill-slot-extension.d.ts +22 -0
  67. package/dist/ai-chat-input/skill-slot-extension.d.ts.map +1 -0
  68. package/dist/ai-chat-input/skill-slot-extension.js +46 -0
  69. package/dist/anchor/Anchor.svelte +393 -242
  70. package/dist/anchor/Anchor.svelte.d.ts +40 -17
  71. package/dist/anchor/Anchor.svelte.d.ts.map +1 -1
  72. package/dist/anchor/AnchorLink.svelte +226 -0
  73. package/dist/anchor/AnchorLink.svelte.d.ts +19 -0
  74. package/dist/anchor/AnchorLink.svelte.d.ts.map +1 -0
  75. package/dist/anchor/context.d.ts +43 -0
  76. package/dist/anchor/context.d.ts.map +1 -0
  77. package/dist/anchor/context.js +26 -0
  78. package/dist/anchor/index.d.ts +11 -2
  79. package/dist/anchor/index.d.ts.map +1 -1
  80. package/dist/anchor/index.js +10 -1
  81. package/dist/anchor/meta.d.ts +92 -43
  82. package/dist/anchor/meta.d.ts.map +1 -1
  83. package/dist/anchor/meta.js +124 -38
  84. package/dist/anchor/types.d.ts +32 -5
  85. package/dist/anchor/types.d.ts.map +1 -1
  86. package/dist/audio-player/AudioPlayer.svelte +614 -0
  87. package/dist/audio-player/AudioPlayer.svelte.d.ts +21 -0
  88. package/dist/audio-player/AudioPlayer.svelte.d.ts.map +1 -0
  89. package/dist/audio-player/AudioSlider.svelte +162 -0
  90. package/dist/audio-player/AudioSlider.svelte.d.ts +20 -0
  91. package/dist/audio-player/AudioSlider.svelte.d.ts.map +1 -0
  92. package/dist/audio-player/index.d.ts +3 -0
  93. package/dist/audio-player/index.d.ts.map +1 -0
  94. package/dist/audio-player/index.js +2 -0
  95. package/dist/audio-player/meta.d.ts +74 -0
  96. package/dist/audio-player/meta.d.ts.map +1 -0
  97. package/dist/audio-player/meta.js +96 -0
  98. package/dist/autocomplete/AutoComplete.svelte +307 -411
  99. package/dist/autocomplete/AutoComplete.svelte.d.ts +52 -47
  100. package/dist/autocomplete/AutoComplete.svelte.d.ts.map +1 -1
  101. package/dist/autocomplete/meta.d.ts +150 -34
  102. package/dist/autocomplete/meta.d.ts.map +1 -1
  103. package/dist/autocomplete/meta.js +43 -21
  104. package/dist/avatar/Avatar.svelte +784 -211
  105. package/dist/avatar/Avatar.svelte.d.ts +28 -23
  106. package/dist/avatar/Avatar.svelte.d.ts.map +1 -1
  107. package/dist/avatar/AvatarGroup.svelte +151 -70
  108. package/dist/avatar/AvatarGroup.svelte.d.ts +16 -17
  109. package/dist/avatar/AvatarGroup.svelte.d.ts.map +1 -1
  110. package/dist/avatar/TopSlotSvg.svelte +62 -0
  111. package/dist/avatar/TopSlotSvg.svelte.d.ts +8 -0
  112. package/dist/avatar/TopSlotSvg.svelte.d.ts.map +1 -0
  113. package/dist/avatar/context.d.ts +28 -1
  114. package/dist/avatar/context.d.ts.map +1 -1
  115. package/dist/avatar/index.d.ts +2 -1
  116. package/dist/avatar/index.d.ts.map +1 -1
  117. package/dist/avatar/meta.d.ts +124 -36
  118. package/dist/avatar/meta.d.ts.map +1 -1
  119. package/dist/avatar/meta.js +117 -24
  120. package/dist/back-top/BackTop.svelte +81 -231
  121. package/dist/back-top/BackTop.svelte.d.ts +10 -33
  122. package/dist/back-top/BackTop.svelte.d.ts.map +1 -1
  123. package/dist/back-top/meta.d.ts +23 -72
  124. package/dist/back-top/meta.d.ts.map +1 -1
  125. package/dist/back-top/meta.js +19 -79
  126. package/dist/badge/Badge.svelte +187 -249
  127. package/dist/badge/Badge.svelte.d.ts +23 -14
  128. package/dist/badge/Badge.svelte.d.ts.map +1 -1
  129. package/dist/badge/meta.d.ts +52 -44
  130. package/dist/badge/meta.d.ts.map +1 -1
  131. package/dist/badge/meta.js +35 -33
  132. package/dist/banner/Banner.svelte +189 -274
  133. package/dist/banner/Banner.svelte.d.ts +20 -23
  134. package/dist/banner/Banner.svelte.d.ts.map +1 -1
  135. package/dist/banner/index.d.ts +2 -1
  136. package/dist/banner/index.d.ts.map +1 -1
  137. package/dist/banner/meta.d.ts +41 -87
  138. package/dist/banner/meta.d.ts.map +1 -1
  139. package/dist/banner/meta.js +59 -79
  140. package/dist/breadcrumb/Breadcrumb.svelte +240 -118
  141. package/dist/breadcrumb/Breadcrumb.svelte.d.ts +35 -19
  142. package/dist/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  143. package/dist/breadcrumb/Item.svelte +5 -5
  144. package/dist/breadcrumb/meta.d.ts +26 -19
  145. package/dist/breadcrumb/meta.d.ts.map +1 -1
  146. package/dist/breadcrumb/meta.js +51 -16
  147. package/dist/breadcrumb/types.d.ts +11 -1
  148. package/dist/breadcrumb/types.d.ts.map +1 -1
  149. package/dist/button/BaseButton.svelte +479 -0
  150. package/dist/button/BaseButton.svelte.d.ts +29 -0
  151. package/dist/button/BaseButton.svelte.d.ts.map +1 -0
  152. package/dist/button/Button.svelte +166 -296
  153. package/dist/button/Button.svelte.d.ts +12 -7
  154. package/dist/button/Button.svelte.d.ts.map +1 -1
  155. package/dist/button/ButtonGroup.svelte +66 -20
  156. package/dist/button/ButtonGroup.svelte.d.ts.map +1 -1
  157. package/dist/button/SplitButtonGroup.svelte +64 -101
  158. package/dist/button/SplitButtonGroup.svelte.d.ts +1 -21
  159. package/dist/button/SplitButtonGroup.svelte.d.ts.map +1 -1
  160. package/dist/button/meta.d.ts +28 -68
  161. package/dist/button/meta.d.ts.map +1 -1
  162. package/dist/button/meta.js +33 -24
  163. package/dist/calendar/Calendar.svelte +928 -1172
  164. package/dist/calendar/Calendar.svelte.d.ts +34 -104
  165. package/dist/calendar/Calendar.svelte.d.ts.map +1 -1
  166. package/dist/calendar/meta.d.ts +78 -168
  167. package/dist/calendar/meta.d.ts.map +1 -1
  168. package/dist/calendar/meta.js +123 -78
  169. package/dist/card/Card.svelte +171 -233
  170. package/dist/card/Card.svelte.d.ts +30 -24
  171. package/dist/card/Card.svelte.d.ts.map +1 -1
  172. package/dist/card/CardGroup.svelte +74 -0
  173. package/dist/card/CardGroup.svelte.d.ts +20 -0
  174. package/dist/card/CardGroup.svelte.d.ts.map +1 -0
  175. package/dist/card/CardMeta.svelte +38 -28
  176. package/dist/card/CardMeta.svelte.d.ts +5 -0
  177. package/dist/card/CardMeta.svelte.d.ts.map +1 -1
  178. package/dist/card/index.d.ts +3 -1
  179. package/dist/card/index.d.ts.map +1 -1
  180. package/dist/card/index.js +7 -2
  181. package/dist/card/meta.d.ts +177 -75
  182. package/dist/card/meta.d.ts.map +1 -1
  183. package/dist/card/meta.js +102 -45
  184. package/dist/carousel/Carousel.svelte +569 -569
  185. package/dist/carousel/Carousel.svelte.d.ts +37 -29
  186. package/dist/carousel/Carousel.svelte.d.ts.map +1 -1
  187. package/dist/carousel/meta.d.ts +73 -65
  188. package/dist/carousel/meta.d.ts.map +1 -1
  189. package/dist/carousel/meta.js +85 -43
  190. package/dist/cascader/Cascader.svelte +725 -391
  191. package/dist/cascader/Cascader.svelte.d.ts +48 -24
  192. package/dist/cascader/Cascader.svelte.d.ts.map +1 -1
  193. package/dist/cascader/meta.d.ts +281 -32
  194. package/dist/cascader/meta.d.ts.map +1 -1
  195. package/dist/cascader/meta.js +85 -12
  196. package/dist/chat/Chat.svelte +483 -0
  197. package/dist/chat/Chat.svelte.d.ts +76 -0
  198. package/dist/chat/Chat.svelte.d.ts.map +1 -0
  199. package/dist/chat/ChatBox.svelte +207 -0
  200. package/dist/chat/ChatBox.svelte.d.ts +26 -0
  201. package/dist/chat/ChatBox.svelte.d.ts.map +1 -0
  202. package/dist/chat/ChatBoxAction.svelte +190 -0
  203. package/dist/chat/ChatBoxAction.svelte.d.ts +18 -0
  204. package/dist/chat/ChatBoxAction.svelte.d.ts.map +1 -0
  205. package/dist/chat/ChatBoxAvatar.svelte +40 -0
  206. package/dist/chat/ChatBoxAvatar.svelte.d.ts +13 -0
  207. package/dist/chat/ChatBoxAvatar.svelte.d.ts.map +1 -0
  208. package/dist/chat/ChatBoxContent.svelte +238 -0
  209. package/dist/chat/ChatBoxContent.svelte.d.ts +17 -0
  210. package/dist/chat/ChatBoxContent.svelte.d.ts.map +1 -0
  211. package/dist/chat/ChatBoxTitle.svelte +40 -0
  212. package/dist/chat/ChatBoxTitle.svelte.d.ts +13 -0
  213. package/dist/chat/ChatBoxTitle.svelte.d.ts.map +1 -0
  214. package/dist/chat/ChatCode.svelte +139 -0
  215. package/dist/chat/ChatCode.svelte.d.ts +9 -0
  216. package/dist/chat/ChatCode.svelte.d.ts.map +1 -0
  217. package/dist/chat/Hint.svelte +82 -0
  218. package/dist/chat/Hint.svelte.d.ts +13 -0
  219. package/dist/chat/Hint.svelte.d.ts.map +1 -0
  220. package/dist/chat/InputBox.svelte +365 -0
  221. package/dist/chat/InputBox.svelte.d.ts +30 -0
  222. package/dist/chat/InputBox.svelte.d.ts.map +1 -0
  223. package/dist/chat/index.d.ts +7 -0
  224. package/dist/chat/index.d.ts.map +1 -0
  225. package/dist/chat/index.js +5 -0
  226. package/dist/chat/meta.d.ts +297 -0
  227. package/dist/chat/meta.d.ts.map +1 -0
  228. package/dist/chat/meta.js +230 -0
  229. package/dist/chat/types.d.ts +94 -0
  230. package/dist/chat/types.d.ts.map +1 -0
  231. package/dist/chat/types.js +1 -0
  232. package/dist/checkbox/Checkbox.svelte +339 -148
  233. package/dist/checkbox/Checkbox.svelte.d.ts +27 -8
  234. package/dist/checkbox/Checkbox.svelte.d.ts.map +1 -1
  235. package/dist/checkbox/CheckboxGroup.svelte +52 -20
  236. package/dist/checkbox/CheckboxGroup.svelte.d.ts +7 -4
  237. package/dist/checkbox/CheckboxGroup.svelte.d.ts.map +1 -1
  238. package/dist/checkbox/context.d.ts +17 -7
  239. package/dist/checkbox/context.d.ts.map +1 -1
  240. package/dist/checkbox/index.d.ts +1 -1
  241. package/dist/checkbox/index.d.ts.map +1 -1
  242. package/dist/checkbox/meta.d.ts +49 -22
  243. package/dist/checkbox/meta.d.ts.map +1 -1
  244. package/dist/checkbox/meta.js +15 -13
  245. package/dist/code-highlight/CodeHighlight.svelte +298 -0
  246. package/dist/code-highlight/CodeHighlight.svelte.d.ts +18 -0
  247. package/dist/code-highlight/CodeHighlight.svelte.d.ts.map +1 -0
  248. package/dist/code-highlight/index.d.ts +4 -0
  249. package/dist/code-highlight/index.d.ts.map +1 -0
  250. package/dist/code-highlight/index.js +3 -0
  251. package/dist/code-highlight/meta.d.ts +61 -0
  252. package/dist/code-highlight/meta.d.ts.map +1 -0
  253. package/dist/code-highlight/meta.js +51 -0
  254. package/dist/code-highlight/prism-modules.d.ts +15 -0
  255. package/dist/collapse/Collapse.svelte +134 -324
  256. package/dist/collapse/Collapse.svelte.d.ts +24 -38
  257. package/dist/collapse/Collapse.svelte.d.ts.map +1 -1
  258. package/dist/collapse/CollapsePanel.svelte +143 -73
  259. package/dist/collapse/CollapsePanel.svelte.d.ts +16 -7
  260. package/dist/collapse/CollapsePanel.svelte.d.ts.map +1 -1
  261. package/dist/collapse/context.d.ts +18 -32
  262. package/dist/collapse/context.d.ts.map +1 -1
  263. package/dist/collapse/index.d.ts +1 -2
  264. package/dist/collapse/index.d.ts.map +1 -1
  265. package/dist/collapse/meta.d.ts +71 -54
  266. package/dist/collapse/meta.d.ts.map +1 -1
  267. package/dist/collapse/meta.js +55 -52
  268. package/dist/collapsible/Collapsible.svelte +224 -0
  269. package/dist/collapsible/Collapsible.svelte.d.ts +35 -0
  270. package/dist/collapsible/Collapsible.svelte.d.ts.map +1 -0
  271. package/dist/collapsible/index.d.ts +3 -0
  272. package/dist/collapsible/index.d.ts.map +1 -0
  273. package/dist/collapsible/index.js +2 -0
  274. package/dist/collapsible/meta.d.ts +115 -0
  275. package/dist/collapsible/meta.d.ts.map +1 -0
  276. package/dist/collapsible/meta.js +89 -0
  277. package/dist/color-picker/ColorPicker.svelte +395 -839
  278. package/dist/color-picker/ColorPicker.svelte.d.ts +29 -39
  279. package/dist/color-picker/ColorPicker.svelte.d.ts.map +1 -1
  280. package/dist/color-picker/index.d.ts +1 -0
  281. package/dist/color-picker/index.d.ts.map +1 -1
  282. package/dist/color-picker/index.js +1 -0
  283. package/dist/color-picker/meta.d.ts +43 -90
  284. package/dist/color-picker/meta.d.ts.map +1 -1
  285. package/dist/color-picker/meta.js +49 -37
  286. package/dist/components.d.ts +1773 -422
  287. package/dist/components.json +17159 -9219
  288. package/dist/config-provider/ConfigProvider.svelte +186 -151
  289. package/dist/config-provider/ConfigProvider.svelte.d.ts +12 -44
  290. package/dist/config-provider/ConfigProvider.svelte.d.ts.map +1 -1
  291. package/dist/config-provider/context.d.ts +21 -13
  292. package/dist/config-provider/context.d.ts.map +1 -1
  293. package/dist/config-provider/index.d.ts +9 -7
  294. package/dist/config-provider/index.d.ts.map +1 -1
  295. package/dist/config-provider/index.js +21 -7
  296. package/dist/config-provider/meta.d.ts +30 -75
  297. package/dist/config-provider/meta.d.ts.map +1 -1
  298. package/dist/config-provider/meta.js +30 -73
  299. package/dist/cropper/Cropper.svelte +536 -0
  300. package/dist/cropper/Cropper.svelte.d.ts +47 -0
  301. package/dist/cropper/Cropper.svelte.d.ts.map +1 -0
  302. package/dist/cropper/index.d.ts +4 -0
  303. package/dist/cropper/index.d.ts.map +1 -0
  304. package/dist/cropper/index.js +2 -0
  305. package/dist/cropper/meta.d.ts +136 -0
  306. package/dist/cropper/meta.d.ts.map +1 -0
  307. package/dist/cropper/meta.js +97 -0
  308. package/dist/date-picker/DatePicker.svelte +1646 -360
  309. package/dist/date-picker/DatePicker.svelte.d.ts +90 -37
  310. package/dist/date-picker/DatePicker.svelte.d.ts.map +1 -1
  311. package/dist/date-picker/index.d.ts +0 -2
  312. package/dist/date-picker/index.d.ts.map +1 -1
  313. package/dist/date-picker/index.js +0 -2
  314. package/dist/date-picker/meta.d.ts +309 -26
  315. package/dist/date-picker/meta.d.ts.map +1 -1
  316. package/dist/date-picker/meta.js +89 -14
  317. package/dist/descriptions/Descriptions.svelte +213 -223
  318. package/dist/descriptions/Descriptions.svelte.d.ts +16 -25
  319. package/dist/descriptions/Descriptions.svelte.d.ts.map +1 -1
  320. package/dist/descriptions/DescriptionsItem.svelte +58 -28
  321. package/dist/descriptions/DescriptionsItem.svelte.d.ts +12 -4
  322. package/dist/descriptions/DescriptionsItem.svelte.d.ts.map +1 -1
  323. package/dist/descriptions/context.d.ts +9 -5
  324. package/dist/descriptions/context.d.ts.map +1 -1
  325. package/dist/descriptions/index.d.ts +2 -2
  326. package/dist/descriptions/index.d.ts.map +1 -1
  327. package/dist/descriptions/meta.d.ts +51 -49
  328. package/dist/descriptions/meta.d.ts.map +1 -1
  329. package/dist/descriptions/meta.js +41 -20
  330. package/dist/descriptions/types.d.ts +13 -3
  331. package/dist/descriptions/types.d.ts.map +1 -1
  332. package/dist/divider/Divider.svelte +86 -94
  333. package/dist/divider/Divider.svelte.d.ts +2 -2
  334. package/dist/divider/Divider.svelte.d.ts.map +1 -1
  335. package/dist/divider/meta.d.ts +19 -25
  336. package/dist/divider/meta.d.ts.map +1 -1
  337. package/dist/divider/meta.js +29 -11
  338. package/dist/drag-move/DragMove.svelte +106 -0
  339. package/dist/drag-move/DragMove.svelte.d.ts +30 -0
  340. package/dist/drag-move/DragMove.svelte.d.ts.map +1 -0
  341. package/dist/drag-move/index.d.ts +4 -0
  342. package/dist/drag-move/index.d.ts.map +1 -0
  343. package/dist/drag-move/index.js +3 -0
  344. package/dist/drag-move/meta.d.ts +102 -0
  345. package/dist/drag-move/meta.d.ts.map +1 -0
  346. package/dist/drag-move/meta.js +77 -0
  347. package/dist/dropdown/Dropdown.svelte +426 -344
  348. package/dist/dropdown/Dropdown.svelte.d.ts +55 -58
  349. package/dist/dropdown/Dropdown.svelte.d.ts.map +1 -1
  350. package/dist/dropdown/DropdownDivider.svelte +20 -8
  351. package/dist/dropdown/DropdownDivider.svelte.d.ts +7 -16
  352. package/dist/dropdown/DropdownDivider.svelte.d.ts.map +1 -1
  353. package/dist/dropdown/DropdownItem.svelte +163 -91
  354. package/dist/dropdown/DropdownItem.svelte.d.ts +25 -11
  355. package/dist/dropdown/DropdownItem.svelte.d.ts.map +1 -1
  356. package/dist/dropdown/DropdownMenu.svelte +21 -9
  357. package/dist/dropdown/DropdownMenu.svelte.d.ts +6 -1
  358. package/dist/dropdown/DropdownMenu.svelte.d.ts.map +1 -1
  359. package/dist/dropdown/DropdownTitle.svelte +38 -20
  360. package/dist/dropdown/DropdownTitle.svelte.d.ts +6 -1
  361. package/dist/dropdown/DropdownTitle.svelte.d.ts.map +1 -1
  362. package/dist/dropdown/context.d.ts +18 -6
  363. package/dist/dropdown/context.d.ts.map +1 -1
  364. package/dist/dropdown/index.d.ts +3 -6
  365. package/dist/dropdown/index.d.ts.map +1 -1
  366. package/dist/dropdown/index.js +3 -6
  367. package/dist/dropdown/meta.d.ts +183 -63
  368. package/dist/dropdown/meta.d.ts.map +1 -1
  369. package/dist/dropdown/meta.js +122 -73
  370. package/dist/dropdown/types.d.ts +39 -42
  371. package/dist/dropdown/types.d.ts.map +1 -1
  372. package/dist/dropdown/types.js +1 -12
  373. package/dist/empty/Empty.svelte +136 -249
  374. package/dist/empty/Empty.svelte.d.ts +23 -9
  375. package/dist/empty/Empty.svelte.d.ts.map +1 -1
  376. package/dist/empty/meta.d.ts +29 -18
  377. package/dist/empty/meta.d.ts.map +1 -1
  378. package/dist/empty/meta.js +21 -26
  379. package/dist/feedback/Feedback.svelte +330 -0
  380. package/dist/feedback/Feedback.svelte.d.ts +46 -0
  381. package/dist/feedback/Feedback.svelte.d.ts.map +1 -0
  382. package/dist/feedback/index.d.ts +4 -0
  383. package/dist/feedback/index.d.ts.map +1 -0
  384. package/dist/feedback/index.js +2 -0
  385. package/dist/feedback/meta.d.ts +105 -0
  386. package/dist/feedback/meta.d.ts.map +1 -0
  387. package/dist/feedback/meta.js +65 -0
  388. package/dist/float-button/FloatButton.svelte +161 -0
  389. package/dist/float-button/FloatButton.svelte.d.ts +5 -0
  390. package/dist/float-button/FloatButton.svelte.d.ts.map +1 -0
  391. package/dist/float-button/FloatButtonGroup.svelte +90 -0
  392. package/dist/float-button/FloatButtonGroup.svelte.d.ts +5 -0
  393. package/dist/float-button/FloatButtonGroup.svelte.d.ts.map +1 -0
  394. package/dist/float-button/index.d.ts +5 -0
  395. package/dist/float-button/index.d.ts.map +1 -0
  396. package/dist/float-button/index.js +3 -0
  397. package/dist/float-button/meta.d.ts +136 -0
  398. package/dist/float-button/meta.d.ts.map +1 -0
  399. package/dist/float-button/meta.js +104 -0
  400. package/dist/float-button/types.d.ts +59 -0
  401. package/dist/float-button/types.d.ts.map +1 -0
  402. package/dist/float-button/types.js +1 -0
  403. package/dist/form/Field.svelte +315 -192
  404. package/dist/form/Field.svelte.d.ts +70 -2
  405. package/dist/form/Field.svelte.d.ts.map +1 -1
  406. package/dist/form/FieldArray.svelte +115 -21
  407. package/dist/form/FieldArray.svelte.d.ts +21 -3
  408. package/dist/form/FieldArray.svelte.d.ts.map +1 -1
  409. package/dist/form/Form.svelte +260 -52
  410. package/dist/form/Form.svelte.d.ts +84 -12
  411. package/dist/form/Form.svelte.d.ts.map +1 -1
  412. package/dist/form/FormAutoComplete.svelte +52 -0
  413. package/dist/form/FormAutoComplete.svelte.d.ts +17 -0
  414. package/dist/form/FormAutoComplete.svelte.d.ts.map +1 -0
  415. package/dist/form/FormCascader.svelte +25 -55
  416. package/dist/form/FormCascader.svelte.d.ts +2 -13
  417. package/dist/form/FormCascader.svelte.d.ts.map +1 -1
  418. package/dist/form/FormCheckbox.svelte +24 -56
  419. package/dist/form/FormCheckbox.svelte.d.ts +2 -14
  420. package/dist/form/FormCheckbox.svelte.d.ts.map +1 -1
  421. package/dist/form/FormCheckboxGroup.svelte +48 -0
  422. package/dist/form/FormCheckboxGroup.svelte.d.ts +15 -0
  423. package/dist/form/FormCheckboxGroup.svelte.d.ts.map +1 -0
  424. package/dist/form/FormDatePicker.svelte +24 -53
  425. package/dist/form/FormDatePicker.svelte.d.ts +2 -13
  426. package/dist/form/FormDatePicker.svelte.d.ts.map +1 -1
  427. package/dist/form/FormErrorMessage.svelte +75 -29
  428. package/dist/form/FormErrorMessage.svelte.d.ts +17 -4
  429. package/dist/form/FormErrorMessage.svelte.d.ts.map +1 -1
  430. package/dist/form/FormInput.svelte +31 -70
  431. package/dist/form/FormInput.svelte.d.ts +7 -19
  432. package/dist/form/FormInput.svelte.d.ts.map +1 -1
  433. package/dist/form/FormInputGroup.svelte +146 -0
  434. package/dist/form/FormInputGroup.svelte.d.ts +32 -0
  435. package/dist/form/FormInputGroup.svelte.d.ts.map +1 -0
  436. package/dist/form/FormInputNumber.svelte +74 -0
  437. package/dist/form/FormInputNumber.svelte.d.ts +20 -0
  438. package/dist/form/FormInputNumber.svelte.d.ts.map +1 -0
  439. package/dist/form/FormLabel.svelte +133 -24
  440. package/dist/form/FormLabel.svelte.d.ts +17 -4
  441. package/dist/form/FormLabel.svelte.d.ts.map +1 -1
  442. package/dist/form/FormPinCode.svelte +52 -0
  443. package/dist/form/FormPinCode.svelte.d.ts +16 -0
  444. package/dist/form/FormPinCode.svelte.d.ts.map +1 -0
  445. package/dist/form/FormRadio.svelte +23 -55
  446. package/dist/form/FormRadio.svelte.d.ts +2 -14
  447. package/dist/form/FormRadio.svelte.d.ts.map +1 -1
  448. package/dist/form/FormRadioGroup.svelte +54 -0
  449. package/dist/form/FormRadioGroup.svelte.d.ts +16 -0
  450. package/dist/form/FormRadioGroup.svelte.d.ts.map +1 -0
  451. package/dist/form/FormRating.svelte +24 -58
  452. package/dist/form/FormRating.svelte.d.ts +2 -14
  453. package/dist/form/FormRating.svelte.d.ts.map +1 -1
  454. package/dist/form/FormSection.svelte +35 -25
  455. package/dist/form/FormSection.svelte.d.ts +3 -1
  456. package/dist/form/FormSection.svelte.d.ts.map +1 -1
  457. package/dist/form/FormSelect.svelte +44 -68
  458. package/dist/form/FormSelect.svelte.d.ts +5 -16
  459. package/dist/form/FormSelect.svelte.d.ts.map +1 -1
  460. package/dist/form/FormSlider.svelte +33 -65
  461. package/dist/form/FormSlider.svelte.d.ts +2 -14
  462. package/dist/form/FormSlider.svelte.d.ts.map +1 -1
  463. package/dist/form/FormSlot.svelte +61 -20
  464. package/dist/form/FormSlot.svelte.d.ts +16 -2
  465. package/dist/form/FormSlot.svelte.d.ts.map +1 -1
  466. package/dist/form/FormSwitch.svelte +27 -59
  467. package/dist/form/FormSwitch.svelte.d.ts +4 -15
  468. package/dist/form/FormSwitch.svelte.d.ts.map +1 -1
  469. package/dist/form/FormTagInput.svelte +24 -53
  470. package/dist/form/FormTagInput.svelte.d.ts +2 -13
  471. package/dist/form/FormTagInput.svelte.d.ts.map +1 -1
  472. package/dist/form/FormTextArea.svelte +66 -0
  473. package/dist/form/FormTextArea.svelte.d.ts +18 -0
  474. package/dist/form/FormTextArea.svelte.d.ts.map +1 -0
  475. package/dist/form/FormTimePicker.svelte +51 -0
  476. package/dist/form/FormTimePicker.svelte.d.ts +15 -0
  477. package/dist/form/FormTimePicker.svelte.d.ts.map +1 -0
  478. package/dist/form/FormTreeSelect.svelte +26 -57
  479. package/dist/form/FormTreeSelect.svelte.d.ts +3 -14
  480. package/dist/form/FormTreeSelect.svelte.d.ts.map +1 -1
  481. package/dist/form/FormUpload.svelte +22 -63
  482. package/dist/form/FormUpload.svelte.d.ts +3 -15
  483. package/dist/form/FormUpload.svelte.d.ts.map +1 -1
  484. package/dist/form/GroupHookPanel.svelte +21 -0
  485. package/dist/form/GroupHookPanel.svelte.d.ts +19 -0
  486. package/dist/form/GroupHookPanel.svelte.d.ts.map +1 -0
  487. package/dist/form/context.d.ts +0 -3
  488. package/dist/form/context.d.ts.map +1 -1
  489. package/dist/form/field-props.d.ts +84 -0
  490. package/dist/form/field-props.d.ts.map +1 -0
  491. package/dist/form/field-props.js +58 -0
  492. package/dist/form/hooks.d.ts +53 -0
  493. package/dist/form/hooks.d.ts.map +1 -0
  494. package/dist/form/hooks.js +36 -0
  495. package/dist/form/index.d.ts +57 -4
  496. package/dist/form/index.d.ts.map +1 -1
  497. package/dist/form/index.js +60 -3
  498. package/dist/form/input-group-context.d.ts +7 -0
  499. package/dist/form/input-group-context.d.ts.map +1 -0
  500. package/dist/form/input-group-context.js +17 -0
  501. package/dist/form/meta.d.ts +213 -16
  502. package/dist/form/meta.d.ts.map +1 -1
  503. package/dist/form/meta.js +103 -15
  504. package/dist/grid/Col.svelte +1482 -78
  505. package/dist/grid/Col.svelte.d.ts +3 -5
  506. package/dist/grid/Col.svelte.d.ts.map +1 -1
  507. package/dist/grid/Row.svelte +151 -69
  508. package/dist/grid/Row.svelte.d.ts +9 -7
  509. package/dist/grid/Row.svelte.d.ts.map +1 -1
  510. package/dist/grid/meta.d.ts +37 -28
  511. package/dist/grid/meta.d.ts.map +1 -1
  512. package/dist/grid/meta.js +31 -25
  513. package/dist/highlight/Highlight.svelte +46 -66
  514. package/dist/highlight/Highlight.svelte.d.ts +9 -22
  515. package/dist/highlight/Highlight.svelte.d.ts.map +1 -1
  516. package/dist/highlight/meta.d.ts +12 -51
  517. package/dist/highlight/meta.d.ts.map +1 -1
  518. package/dist/highlight/meta.js +16 -46
  519. package/dist/hotkeys/HotKeys.svelte +152 -0
  520. package/dist/hotkeys/HotKeys.svelte.d.ts +28 -0
  521. package/dist/hotkeys/HotKeys.svelte.d.ts.map +1 -0
  522. package/dist/hotkeys/index.d.ts +12 -0
  523. package/dist/hotkeys/index.d.ts.map +1 -0
  524. package/dist/hotkeys/index.js +8 -0
  525. package/dist/hotkeys/meta.d.ts +103 -0
  526. package/dist/hotkeys/meta.d.ts.map +1 -0
  527. package/dist/hotkeys/meta.js +65 -0
  528. package/dist/icon/index.d.ts +1 -1
  529. package/dist/icon/index.d.ts.map +1 -1
  530. package/dist/icon/index.js +1 -1
  531. package/dist/icon/meta.d.ts +20 -28
  532. package/dist/icon/meta.d.ts.map +1 -1
  533. package/dist/icon/meta.js +20 -20
  534. package/dist/iconbutton/IconButton.svelte +89 -0
  535. package/dist/iconbutton/IconButton.svelte.d.ts +53 -0
  536. package/dist/iconbutton/IconButton.svelte.d.ts.map +1 -0
  537. package/dist/iconbutton/index.d.ts +3 -0
  538. package/dist/iconbutton/index.d.ts.map +1 -0
  539. package/dist/iconbutton/index.js +2 -0
  540. package/dist/iconbutton/meta.d.ts +150 -0
  541. package/dist/iconbutton/meta.d.ts.map +1 -0
  542. package/dist/iconbutton/meta.js +53 -0
  543. package/dist/illustrations/IllustrationConstruction.svelte +25 -0
  544. package/dist/illustrations/IllustrationConstruction.svelte.d.ts +8 -0
  545. package/dist/illustrations/IllustrationConstruction.svelte.d.ts.map +1 -0
  546. package/dist/illustrations/IllustrationConstructionDark.svelte +25 -0
  547. package/dist/illustrations/IllustrationConstructionDark.svelte.d.ts +8 -0
  548. package/dist/illustrations/IllustrationConstructionDark.svelte.d.ts.map +1 -0
  549. package/dist/illustrations/IllustrationFailure.svelte +25 -0
  550. package/dist/illustrations/IllustrationFailure.svelte.d.ts +8 -0
  551. package/dist/illustrations/IllustrationFailure.svelte.d.ts.map +1 -0
  552. package/dist/illustrations/IllustrationFailureDark.svelte +25 -0
  553. package/dist/illustrations/IllustrationFailureDark.svelte.d.ts +8 -0
  554. package/dist/illustrations/IllustrationFailureDark.svelte.d.ts.map +1 -0
  555. package/dist/illustrations/IllustrationIdle.svelte +25 -0
  556. package/dist/illustrations/IllustrationIdle.svelte.d.ts +8 -0
  557. package/dist/illustrations/IllustrationIdle.svelte.d.ts.map +1 -0
  558. package/dist/illustrations/IllustrationIdleDark.svelte +25 -0
  559. package/dist/illustrations/IllustrationIdleDark.svelte.d.ts +8 -0
  560. package/dist/illustrations/IllustrationIdleDark.svelte.d.ts.map +1 -0
  561. package/dist/illustrations/IllustrationNoAccess.svelte +25 -0
  562. package/dist/illustrations/IllustrationNoAccess.svelte.d.ts +8 -0
  563. package/dist/illustrations/IllustrationNoAccess.svelte.d.ts.map +1 -0
  564. package/dist/illustrations/IllustrationNoAccessDark.svelte +25 -0
  565. package/dist/illustrations/IllustrationNoAccessDark.svelte.d.ts +8 -0
  566. package/dist/illustrations/IllustrationNoAccessDark.svelte.d.ts.map +1 -0
  567. package/dist/illustrations/IllustrationNoContent.svelte +25 -0
  568. package/dist/illustrations/IllustrationNoContent.svelte.d.ts +8 -0
  569. package/dist/illustrations/IllustrationNoContent.svelte.d.ts.map +1 -0
  570. package/dist/illustrations/IllustrationNoContentDark.svelte +25 -0
  571. package/dist/illustrations/IllustrationNoContentDark.svelte.d.ts +8 -0
  572. package/dist/illustrations/IllustrationNoContentDark.svelte.d.ts.map +1 -0
  573. package/dist/illustrations/IllustrationNoResult.svelte +25 -0
  574. package/dist/illustrations/IllustrationNoResult.svelte.d.ts +8 -0
  575. package/dist/illustrations/IllustrationNoResult.svelte.d.ts.map +1 -0
  576. package/dist/illustrations/IllustrationNoResultDark.svelte +25 -0
  577. package/dist/illustrations/IllustrationNoResultDark.svelte.d.ts +8 -0
  578. package/dist/illustrations/IllustrationNoResultDark.svelte.d.ts.map +1 -0
  579. package/dist/illustrations/IllustrationNotFound.svelte +25 -0
  580. package/dist/illustrations/IllustrationNotFound.svelte.d.ts +8 -0
  581. package/dist/illustrations/IllustrationNotFound.svelte.d.ts.map +1 -0
  582. package/dist/illustrations/IllustrationNotFoundDark.svelte +25 -0
  583. package/dist/illustrations/IllustrationNotFoundDark.svelte.d.ts +8 -0
  584. package/dist/illustrations/IllustrationNotFoundDark.svelte.d.ts.map +1 -0
  585. package/dist/illustrations/IllustrationSuccess.svelte +25 -0
  586. package/dist/illustrations/IllustrationSuccess.svelte.d.ts +8 -0
  587. package/dist/illustrations/IllustrationSuccess.svelte.d.ts.map +1 -0
  588. package/dist/illustrations/IllustrationSuccessDark.svelte +25 -0
  589. package/dist/illustrations/IllustrationSuccessDark.svelte.d.ts +8 -0
  590. package/dist/illustrations/IllustrationSuccessDark.svelte.d.ts.map +1 -0
  591. package/dist/illustrations/index.d.ts +22 -0
  592. package/dist/illustrations/index.d.ts.map +1 -0
  593. package/dist/illustrations/index.js +21 -0
  594. package/dist/image/Image.svelte +260 -283
  595. package/dist/image/Image.svelte.d.ts +20 -21
  596. package/dist/image/Image.svelte.d.ts.map +1 -1
  597. package/dist/image/ImagePreview.svelte +201 -297
  598. package/dist/image/ImagePreview.svelte.d.ts +7 -10
  599. package/dist/image/ImagePreview.svelte.d.ts.map +1 -1
  600. package/dist/image/PreviewFooter.svelte +400 -0
  601. package/dist/image/PreviewFooter.svelte.d.ts +62 -0
  602. package/dist/image/PreviewFooter.svelte.d.ts.map +1 -0
  603. package/dist/image/PreviewHeader.svelte +93 -0
  604. package/dist/image/PreviewHeader.svelte.d.ts +16 -0
  605. package/dist/image/PreviewHeader.svelte.d.ts.map +1 -0
  606. package/dist/image/PreviewImage.svelte +296 -0
  607. package/dist/image/PreviewImage.svelte.d.ts +26 -0
  608. package/dist/image/PreviewImage.svelte.d.ts.map +1 -0
  609. package/dist/image/PreviewInner.svelte +554 -0
  610. package/dist/image/PreviewInner.svelte.d.ts +58 -0
  611. package/dist/image/PreviewInner.svelte.d.ts.map +1 -0
  612. package/dist/image/download.d.ts +8 -0
  613. package/dist/image/download.d.ts.map +1 -0
  614. package/dist/image/download.js +29 -0
  615. package/dist/image/index.d.ts +6 -7
  616. package/dist/image/index.d.ts.map +1 -1
  617. package/dist/image/index.js +5 -5
  618. package/dist/image/meta.d.ts +231 -88
  619. package/dist/image/meta.d.ts.map +1 -1
  620. package/dist/image/meta.js +93 -83
  621. package/dist/image/previewContext.d.ts +29 -0
  622. package/dist/image/previewContext.d.ts.map +1 -0
  623. package/dist/image/previewContext.js +8 -0
  624. package/dist/image/previewGeometry.d.ts +70 -0
  625. package/dist/image/previewGeometry.d.ts.map +1 -0
  626. package/dist/image/previewGeometry.js +184 -0
  627. package/dist/image/types.d.ts +66 -0
  628. package/dist/image/types.d.ts.map +1 -0
  629. package/dist/image/types.js +1 -0
  630. package/dist/index.d.ts +48 -26
  631. package/dist/index.d.ts.map +1 -1
  632. package/dist/index.js +40 -22
  633. package/dist/input/Input.svelte +537 -320
  634. package/dist/input/Input.svelte.d.ts +69 -21
  635. package/dist/input/Input.svelte.d.ts.map +1 -1
  636. package/dist/input/InputGroup.svelte +188 -0
  637. package/dist/input/InputGroup.svelte.d.ts +35 -0
  638. package/dist/input/InputGroup.svelte.d.ts.map +1 -0
  639. package/dist/input/TextArea.svelte +788 -0
  640. package/dist/input/TextArea.svelte.d.ts +104 -0
  641. package/dist/input/TextArea.svelte.d.ts.map +1 -0
  642. package/dist/input/context.d.ts +13 -0
  643. package/dist/input/context.d.ts.map +1 -0
  644. package/dist/input/context.js +5 -0
  645. package/dist/input/index.d.ts +4 -1
  646. package/dist/input/index.d.ts.map +1 -1
  647. package/dist/input/index.js +5 -1
  648. package/dist/input/meta.d.ts +802 -22
  649. package/dist/input/meta.d.ts.map +1 -1
  650. package/dist/input/meta.js +196 -17
  651. package/dist/input-number/InputNumber.svelte +446 -427
  652. package/dist/input-number/InputNumber.svelte.d.ts +73 -45
  653. package/dist/input-number/InputNumber.svelte.d.ts.map +1 -1
  654. package/dist/input-number/meta.d.ts +140 -48
  655. package/dist/input-number/meta.d.ts.map +1 -1
  656. package/dist/input-number/meta.js +39 -22
  657. package/dist/json-viewer/JsonViewer.svelte +528 -0
  658. package/dist/json-viewer/JsonViewer.svelte.d.ts +43 -0
  659. package/dist/json-viewer/JsonViewer.svelte.d.ts.map +1 -0
  660. package/dist/json-viewer/index.d.ts +4 -0
  661. package/dist/json-viewer/index.d.ts.map +1 -0
  662. package/dist/json-viewer/index.js +2 -0
  663. package/dist/json-viewer/meta.d.ts +129 -0
  664. package/dist/{lottie-icon → json-viewer}/meta.d.ts.map +1 -1
  665. package/dist/json-viewer/meta.js +130 -0
  666. package/dist/json-viewer/semi-json-viewer-core.d.ts +94 -0
  667. package/dist/layout/Content.svelte +8 -25
  668. package/dist/layout/Content.svelte.d.ts +1 -3
  669. package/dist/layout/Content.svelte.d.ts.map +1 -1
  670. package/dist/layout/Footer.svelte +7 -40
  671. package/dist/layout/Footer.svelte.d.ts +1 -4
  672. package/dist/layout/Footer.svelte.d.ts.map +1 -1
  673. package/dist/layout/Header.svelte +7 -37
  674. package/dist/layout/Header.svelte.d.ts +1 -4
  675. package/dist/layout/Header.svelte.d.ts.map +1 -1
  676. package/dist/layout/Layout.svelte +30 -17
  677. package/dist/layout/Layout.svelte.d.ts +3 -1
  678. package/dist/layout/Layout.svelte.d.ts.map +1 -1
  679. package/dist/layout/Sider.svelte +71 -186
  680. package/dist/layout/Sider.svelte.d.ts +15 -19
  681. package/dist/layout/Sider.svelte.d.ts.map +1 -1
  682. package/dist/layout/meta.d.ts +28 -91
  683. package/dist/layout/meta.d.ts.map +1 -1
  684. package/dist/layout/meta.js +38 -56
  685. package/dist/list/List.svelte +158 -825
  686. package/dist/list/List.svelte.d.ts +32 -70
  687. package/dist/list/List.svelte.d.ts.map +1 -1
  688. package/dist/list/ListItem.svelte +129 -131
  689. package/dist/list/ListItem.svelte.d.ts +21 -12
  690. package/dist/list/ListItem.svelte.d.ts.map +1 -1
  691. package/dist/list/context.d.ts +32 -23
  692. package/dist/list/context.d.ts.map +1 -1
  693. package/dist/list/index.d.ts +3 -8
  694. package/dist/list/index.d.ts.map +1 -1
  695. package/dist/list/index.js +4 -8
  696. package/dist/list/meta.d.ts +110 -98
  697. package/dist/list/meta.d.ts.map +1 -1
  698. package/dist/list/meta.js +76 -58
  699. package/dist/lottie/Lottie.svelte +138 -0
  700. package/dist/lottie/Lottie.svelte.d.ts +32 -0
  701. package/dist/lottie/Lottie.svelte.d.ts.map +1 -0
  702. package/dist/lottie/index.d.ts +3 -0
  703. package/dist/lottie/index.d.ts.map +1 -0
  704. package/dist/lottie/index.js +2 -0
  705. package/dist/lottie/meta.d.ts +76 -0
  706. package/dist/lottie/meta.d.ts.map +1 -0
  707. package/dist/lottie/meta.js +81 -0
  708. package/dist/markdown-render/HastNode.svelte +66 -0
  709. package/dist/markdown-render/HastNode.svelte.d.ts +11 -0
  710. package/dist/markdown-render/HastNode.svelte.d.ts.map +1 -0
  711. package/dist/markdown-render/MarkdownRender.svelte +152 -0
  712. package/dist/markdown-render/MarkdownRender.svelte.d.ts +26 -0
  713. package/dist/markdown-render/MarkdownRender.svelte.d.ts.map +1 -0
  714. package/dist/markdown-render/components/MdCode.svelte +20 -0
  715. package/dist/markdown-render/components/MdCode.svelte.d.ts +9 -0
  716. package/dist/markdown-render/components/MdCode.svelte.d.ts.map +1 -0
  717. package/dist/markdown-render/components/MdHeading.svelte +29 -0
  718. package/dist/markdown-render/components/MdHeading.svelte.d.ts +11 -0
  719. package/dist/markdown-render/components/MdHeading.svelte.d.ts.map +1 -0
  720. package/dist/markdown-render/components/MdImage.svelte +28 -0
  721. package/dist/markdown-render/components/MdImage.svelte.d.ts +9 -0
  722. package/dist/markdown-render/components/MdImage.svelte.d.ts.map +1 -0
  723. package/dist/markdown-render/components/MdLink.svelte +33 -0
  724. package/dist/markdown-render/components/MdLink.svelte.d.ts +10 -0
  725. package/dist/markdown-render/components/MdLink.svelte.d.ts.map +1 -0
  726. package/dist/markdown-render/components/MdParagraph.svelte +19 -0
  727. package/dist/markdown-render/components/MdParagraph.svelte.d.ts +9 -0
  728. package/dist/markdown-render/components/MdParagraph.svelte.d.ts.map +1 -0
  729. package/dist/markdown-render/components/MdPre.svelte +48 -0
  730. package/dist/markdown-render/components/MdPre.svelte.d.ts +9 -0
  731. package/dist/markdown-render/components/MdPre.svelte.d.ts.map +1 -0
  732. package/dist/markdown-render/components/MdTable.svelte +53 -0
  733. package/dist/markdown-render/components/MdTable.svelte.d.ts +9 -0
  734. package/dist/markdown-render/components/MdTable.svelte.d.ts.map +1 -0
  735. package/dist/markdown-render/components/index.d.ts +26 -0
  736. package/dist/markdown-render/components/index.d.ts.map +1 -0
  737. package/dist/markdown-render/components/index.js +27 -0
  738. package/dist/markdown-render/index.d.ts +4 -0
  739. package/dist/markdown-render/index.d.ts.map +1 -0
  740. package/dist/markdown-render/index.js +2 -0
  741. package/dist/markdown-render/meta.d.ts +81 -0
  742. package/dist/markdown-render/meta.d.ts.map +1 -0
  743. package/dist/markdown-render/meta.js +105 -0
  744. package/dist/markdown-render/props.d.ts +15 -0
  745. package/dist/markdown-render/props.d.ts.map +1 -0
  746. package/dist/markdown-render/props.js +51 -0
  747. package/dist/modal/ConfirmModal.svelte +105 -86
  748. package/dist/modal/ConfirmModal.svelte.d.ts +7 -4
  749. package/dist/modal/ConfirmModal.svelte.d.ts.map +1 -1
  750. package/dist/modal/Modal.svelte +459 -343
  751. package/dist/modal/Modal.svelte.d.ts +71 -41
  752. package/dist/modal/Modal.svelte.d.ts.map +1 -1
  753. package/dist/modal/ModalContextHolder.svelte +22 -0
  754. package/dist/modal/ModalContextHolder.svelte.d.ts +8 -0
  755. package/dist/modal/ModalContextHolder.svelte.d.ts.map +1 -0
  756. package/dist/modal/command.svelte.d.ts +7 -1
  757. package/dist/modal/command.svelte.d.ts.map +1 -1
  758. package/dist/modal/command.svelte.js +1 -1
  759. package/dist/modal/index.d.ts +7 -1
  760. package/dist/modal/index.d.ts.map +1 -1
  761. package/dist/modal/index.js +8 -2
  762. package/dist/modal/meta.d.ts +149 -103
  763. package/dist/modal/meta.d.ts.map +1 -1
  764. package/dist/modal/meta.js +95 -109
  765. package/dist/modal/use-modal.svelte.d.ts +33 -0
  766. package/dist/modal/use-modal.svelte.d.ts.map +1 -0
  767. package/dist/modal/use-modal.svelte.js +44 -0
  768. package/dist/nav/Nav.svelte +329 -146
  769. package/dist/nav/Nav.svelte.d.ts +43 -30
  770. package/dist/nav/Nav.svelte.d.ts.map +1 -1
  771. package/dist/nav/NavCollapseButton.svelte +74 -0
  772. package/dist/nav/NavCollapseButton.svelte.d.ts +12 -0
  773. package/dist/nav/NavCollapseButton.svelte.d.ts.map +1 -0
  774. package/dist/nav/NavFooter.svelte +42 -47
  775. package/dist/nav/NavFooter.svelte.d.ts +6 -2
  776. package/dist/nav/NavFooter.svelte.d.ts.map +1 -1
  777. package/dist/nav/NavHeader.svelte +61 -12
  778. package/dist/nav/NavHeader.svelte.d.ts +8 -2
  779. package/dist/nav/NavHeader.svelte.d.ts.map +1 -1
  780. package/dist/nav/NavItem.svelte +21 -17
  781. package/dist/nav/NavItem.svelte.d.ts +12 -10
  782. package/dist/nav/NavItem.svelte.d.ts.map +1 -1
  783. package/dist/nav/NavItemRender.svelte +420 -0
  784. package/dist/nav/NavItemRender.svelte.d.ts +12 -0
  785. package/dist/nav/NavItemRender.svelte.d.ts.map +1 -0
  786. package/dist/nav/NavPopupNode.svelte +119 -0
  787. package/dist/nav/NavPopupNode.svelte.d.ts +8 -0
  788. package/dist/nav/NavPopupNode.svelte.d.ts.map +1 -0
  789. package/dist/nav/NavSub.svelte +44 -6
  790. package/dist/nav/NavSub.svelte.d.ts +20 -4
  791. package/dist/nav/NavSub.svelte.d.ts.map +1 -1
  792. package/dist/nav/NavSubPopup.svelte +90 -0
  793. package/dist/nav/NavSubPopup.svelte.d.ts +14 -0
  794. package/dist/nav/NavSubPopup.svelte.d.ts.map +1 -0
  795. package/dist/nav/context.d.ts +57 -8
  796. package/dist/nav/context.d.ts.map +1 -1
  797. package/dist/nav/context.js +6 -2
  798. package/dist/nav/index.d.ts +1 -1
  799. package/dist/nav/index.d.ts.map +1 -1
  800. package/dist/nav/meta.d.ts +131 -52
  801. package/dist/nav/meta.d.ts.map +1 -1
  802. package/dist/nav/meta.js +70 -29
  803. package/dist/nav/types.d.ts +89 -22
  804. package/dist/nav/types.d.ts.map +1 -1
  805. package/dist/nav/types.js +47 -26
  806. package/dist/notification/NotificationContainer.svelte +131 -119
  807. package/dist/notification/NotificationContainer.svelte.d.ts.map +1 -1
  808. package/dist/notification/NotificationHolder.svelte +18 -0
  809. package/dist/notification/NotificationHolder.svelte.d.ts +8 -0
  810. package/dist/notification/NotificationHolder.svelte.d.ts.map +1 -0
  811. package/dist/notification/NotificationItem.svelte +235 -289
  812. package/dist/notification/NotificationItem.svelte.d.ts +1 -5
  813. package/dist/notification/NotificationItem.svelte.d.ts.map +1 -1
  814. package/dist/notification/index.d.ts +3 -2
  815. package/dist/notification/index.d.ts.map +1 -1
  816. package/dist/notification/index.js +2 -1
  817. package/dist/notification/meta.d.ts +73 -50
  818. package/dist/notification/meta.d.ts.map +1 -1
  819. package/dist/notification/meta.js +85 -74
  820. package/dist/notification/store.d.ts +59 -44
  821. package/dist/notification/store.d.ts.map +1 -1
  822. package/dist/notification/store.js +68 -74
  823. package/dist/overflow-list/OverflowList.svelte +366 -470
  824. package/dist/overflow-list/OverflowList.svelte.d.ts +37 -40
  825. package/dist/overflow-list/OverflowList.svelte.d.ts.map +1 -1
  826. package/dist/overflow-list/meta.d.ts +71 -71
  827. package/dist/overflow-list/meta.d.ts.map +1 -1
  828. package/dist/overflow-list/meta.js +63 -78
  829. package/dist/pagination/Pagination.svelte +454 -251
  830. package/dist/pagination/Pagination.svelte.d.ts +38 -39
  831. package/dist/pagination/Pagination.svelte.d.ts.map +1 -1
  832. package/dist/pagination/meta.d.ts +75 -83
  833. package/dist/pagination/meta.d.ts.map +1 -1
  834. package/dist/pagination/meta.js +78 -57
  835. package/dist/pincode/PinCode.svelte +348 -0
  836. package/dist/pincode/PinCode.svelte.d.ts +47 -0
  837. package/dist/pincode/PinCode.svelte.d.ts.map +1 -0
  838. package/dist/pincode/index.d.ts +3 -0
  839. package/dist/pincode/index.d.ts.map +1 -0
  840. package/dist/pincode/index.js +2 -0
  841. package/dist/pincode/meta.d.ts +147 -0
  842. package/dist/pincode/meta.d.ts.map +1 -0
  843. package/dist/pincode/meta.js +91 -0
  844. package/dist/popconfirm/Popconfirm.svelte +313 -599
  845. package/dist/popconfirm/Popconfirm.svelte.d.ts +65 -68
  846. package/dist/popconfirm/Popconfirm.svelte.d.ts.map +1 -1
  847. package/dist/popconfirm/meta.d.ts +85 -161
  848. package/dist/popconfirm/meta.d.ts.map +1 -1
  849. package/dist/popconfirm/meta.js +68 -185
  850. package/dist/popover/Popover.svelte +342 -564
  851. package/dist/popover/Popover.svelte.d.ts +82 -52
  852. package/dist/popover/Popover.svelte.d.ts.map +1 -1
  853. package/dist/popover/meta.d.ts +102 -74
  854. package/dist/popover/meta.d.ts.map +1 -1
  855. package/dist/popover/meta.js +103 -62
  856. package/dist/progress/Progress.svelte +248 -309
  857. package/dist/progress/Progress.svelte.d.ts +19 -27
  858. package/dist/progress/Progress.svelte.d.ts.map +1 -1
  859. package/dist/progress/index.d.ts +1 -1
  860. package/dist/progress/index.d.ts.map +1 -1
  861. package/dist/progress/meta.d.ts +70 -62
  862. package/dist/progress/meta.d.ts.map +1 -1
  863. package/dist/progress/meta.js +68 -77
  864. package/dist/radio/Radio.svelte +451 -239
  865. package/dist/radio/Radio.svelte.d.ts +13 -7
  866. package/dist/radio/Radio.svelte.d.ts.map +1 -1
  867. package/dist/radio/RadioGroup.svelte +152 -121
  868. package/dist/radio/RadioGroup.svelte.d.ts +27 -6
  869. package/dist/radio/RadioGroup.svelte.d.ts.map +1 -1
  870. package/dist/radio/context.d.ts +23 -18
  871. package/dist/radio/context.d.ts.map +1 -1
  872. package/dist/radio/index.d.ts +1 -1
  873. package/dist/radio/index.d.ts.map +1 -1
  874. package/dist/radio/meta.d.ts +62 -23
  875. package/dist/radio/meta.d.ts.map +1 -1
  876. package/dist/radio/meta.js +60 -17
  877. package/dist/rating/Rating.svelte +358 -275
  878. package/dist/rating/Rating.svelte.d.ts +25 -18
  879. package/dist/rating/Rating.svelte.d.ts.map +1 -1
  880. package/dist/rating/meta.d.ts +73 -40
  881. package/dist/rating/meta.d.ts.map +1 -1
  882. package/dist/rating/meta.js +55 -28
  883. package/dist/resizable/Resizable.svelte +354 -0
  884. package/dist/resizable/Resizable.svelte.d.ts +61 -0
  885. package/dist/resizable/Resizable.svelte.d.ts.map +1 -0
  886. package/dist/resizable/ResizeGroup.svelte +308 -0
  887. package/dist/resizable/ResizeGroup.svelte.d.ts +13 -0
  888. package/dist/resizable/ResizeGroup.svelte.d.ts.map +1 -0
  889. package/dist/resizable/ResizeHandler.svelte +87 -0
  890. package/dist/resizable/ResizeHandler.svelte.d.ts +13 -0
  891. package/dist/resizable/ResizeHandler.svelte.d.ts.map +1 -0
  892. package/dist/resizable/ResizeItem.svelte +103 -0
  893. package/dist/resizable/ResizeItem.svelte.d.ts +20 -0
  894. package/dist/resizable/ResizeItem.svelte.d.ts.map +1 -0
  895. package/dist/resizable/context.d.ts +39 -0
  896. package/dist/resizable/context.d.ts.map +1 -0
  897. package/dist/resizable/context.js +1 -0
  898. package/dist/resizable/index.d.ts +8 -0
  899. package/dist/resizable/index.d.ts.map +1 -0
  900. package/dist/resizable/index.js +7 -0
  901. package/dist/resizable/meta.d.ts +243 -0
  902. package/dist/resizable/meta.d.ts.map +1 -0
  903. package/dist/resizable/meta.js +90 -0
  904. package/dist/resize-observer/ResizeObserver.svelte +12 -0
  905. package/dist/resize-observer/ResizeObserver.svelte.d.ts +7 -0
  906. package/dist/resize-observer/ResizeObserver.svelte.d.ts.map +1 -1
  907. package/dist/resize-observer/meta.d.ts +5 -0
  908. package/dist/resize-observer/meta.d.ts.map +1 -1
  909. package/dist/resize-observer/meta.js +6 -0
  910. package/dist/scroll-list/ScrollItem.svelte +612 -0
  911. package/dist/scroll-list/ScrollItem.svelte.d.ts +29 -0
  912. package/dist/scroll-list/ScrollItem.svelte.d.ts.map +1 -0
  913. package/dist/scroll-list/ScrollList.svelte +78 -227
  914. package/dist/scroll-list/ScrollList.svelte.d.ts +12 -41
  915. package/dist/scroll-list/ScrollList.svelte.d.ts.map +1 -1
  916. package/dist/scroll-list/index.d.ts +2 -2
  917. package/dist/scroll-list/index.d.ts.map +1 -1
  918. package/dist/scroll-list/index.js +1 -0
  919. package/dist/scroll-list/meta.d.ts +96 -101
  920. package/dist/scroll-list/meta.d.ts.map +1 -1
  921. package/dist/scroll-list/meta.js +84 -65
  922. package/dist/scroll-list/types.d.ts +2 -16
  923. package/dist/scroll-list/types.d.ts.map +1 -1
  924. package/dist/select/Select.svelte +683 -232
  925. package/dist/select/Select.svelte.d.ts +170 -37
  926. package/dist/select/Select.svelte.d.ts.map +1 -1
  927. package/dist/select/meta.d.ts +186 -40
  928. package/dist/select/meta.d.ts.map +1 -1
  929. package/dist/select/meta.js +54 -20
  930. package/dist/side-sheet/SideSheet.svelte +541 -500
  931. package/dist/side-sheet/SideSheet.svelte.d.ts +36 -49
  932. package/dist/side-sheet/SideSheet.svelte.d.ts.map +1 -1
  933. package/dist/side-sheet/meta.d.ts +77 -112
  934. package/dist/side-sheet/meta.d.ts.map +1 -1
  935. package/dist/side-sheet/meta.js +71 -71
  936. package/dist/sidebar/SideBar.svelte +168 -0
  937. package/dist/sidebar/SideBar.svelte.d.ts +28 -0
  938. package/dist/sidebar/SideBar.svelte.d.ts.map +1 -0
  939. package/dist/sidebar/SideBarAnnotation.svelte +453 -0
  940. package/dist/sidebar/SideBarAnnotation.svelte.d.ts +47 -0
  941. package/dist/sidebar/SideBarAnnotation.svelte.d.ts.map +1 -0
  942. package/dist/sidebar/SideBarCodeContent.svelte +201 -0
  943. package/dist/sidebar/SideBarCodeContent.svelte.d.ts +42 -0
  944. package/dist/sidebar/SideBarCodeContent.svelte.d.ts.map +1 -0
  945. package/dist/sidebar/SideBarContainer.svelte +478 -0
  946. package/dist/sidebar/SideBarContainer.svelte.d.ts +38 -0
  947. package/dist/sidebar/SideBarContainer.svelte.d.ts.map +1 -0
  948. package/dist/sidebar/SideBarFileContent.svelte +192 -0
  949. package/dist/sidebar/SideBarFileContent.svelte.d.ts +40 -0
  950. package/dist/sidebar/SideBarFileContent.svelte.d.ts.map +1 -0
  951. package/dist/sidebar/SideBarFileItem.svelte +311 -0
  952. package/dist/sidebar/SideBarFileItem.svelte.d.ts +21 -0
  953. package/dist/sidebar/SideBarFileItem.svelte.d.ts.map +1 -0
  954. package/dist/sidebar/SideBarImageUploadNode.svelte +103 -0
  955. package/dist/sidebar/SideBarImageUploadNode.svelte.d.ts +5 -0
  956. package/dist/sidebar/SideBarImageUploadNode.svelte.d.ts.map +1 -0
  957. package/dist/sidebar/SideBarMcpConfigure.svelte +544 -0
  958. package/dist/sidebar/SideBarMcpConfigure.svelte.d.ts +60 -0
  959. package/dist/sidebar/SideBarMcpConfigure.svelte.d.ts.map +1 -0
  960. package/dist/sidebar/SideBarOptions.svelte +137 -0
  961. package/dist/sidebar/SideBarOptions.svelte.d.ts +10 -0
  962. package/dist/sidebar/SideBarOptions.svelte.d.ts.map +1 -0
  963. package/dist/sidebar/file-extensions.d.ts +37 -0
  964. package/dist/sidebar/file-extensions.d.ts.map +1 -0
  965. package/dist/sidebar/file-extensions.js +45 -0
  966. package/dist/sidebar/index.d.ts +14 -0
  967. package/dist/sidebar/index.d.ts.map +1 -0
  968. package/dist/sidebar/index.js +9 -0
  969. package/dist/sidebar/meta.d.ts +373 -0
  970. package/dist/sidebar/meta.d.ts.map +1 -0
  971. package/dist/sidebar/meta.js +219 -0
  972. package/dist/sidebar/types.d.ts +70 -0
  973. package/dist/sidebar/types.d.ts.map +1 -0
  974. package/dist/sidebar/types.js +1 -0
  975. package/dist/skeleton/Skeleton.svelte +129 -97
  976. package/dist/skeleton/Skeleton.svelte.d.ts +7 -2
  977. package/dist/skeleton/Skeleton.svelte.d.ts.map +1 -1
  978. package/dist/skeleton/SkeletonAvatar.svelte +25 -68
  979. package/dist/skeleton/SkeletonAvatar.svelte.d.ts +6 -2
  980. package/dist/skeleton/SkeletonAvatar.svelte.d.ts.map +1 -1
  981. package/dist/skeleton/SkeletonButton.svelte +6 -77
  982. package/dist/skeleton/SkeletonButton.svelte.d.ts +0 -4
  983. package/dist/skeleton/SkeletonButton.svelte.d.ts.map +1 -1
  984. package/dist/skeleton/SkeletonImage.svelte +6 -87
  985. package/dist/skeleton/SkeletonImage.svelte.d.ts +0 -3
  986. package/dist/skeleton/SkeletonImage.svelte.d.ts.map +1 -1
  987. package/dist/skeleton/SkeletonParagraph.svelte +10 -87
  988. package/dist/skeleton/SkeletonParagraph.svelte.d.ts +1 -1
  989. package/dist/skeleton/SkeletonParagraph.svelte.d.ts.map +1 -1
  990. package/dist/skeleton/SkeletonTitle.svelte +6 -61
  991. package/dist/skeleton/SkeletonTitle.svelte.d.ts +0 -2
  992. package/dist/skeleton/SkeletonTitle.svelte.d.ts.map +1 -1
  993. package/dist/skeleton/index.d.ts +1 -1
  994. package/dist/skeleton/index.d.ts.map +1 -1
  995. package/dist/skeleton/meta.d.ts +99 -23
  996. package/dist/skeleton/meta.d.ts.map +1 -1
  997. package/dist/skeleton/meta.js +70 -28
  998. package/dist/slider/Slider.svelte +418 -419
  999. package/dist/slider/Slider.svelte.d.ts +45 -54
  1000. package/dist/slider/Slider.svelte.d.ts.map +1 -1
  1001. package/dist/slider/meta.d.ts +49 -87
  1002. package/dist/slider/meta.d.ts.map +1 -1
  1003. package/dist/slider/meta.js +50 -26
  1004. package/dist/space/Space.svelte +97 -49
  1005. package/dist/space/Space.svelte.d.ts +17 -4
  1006. package/dist/space/Space.svelte.d.ts.map +1 -1
  1007. package/dist/space/meta.d.ts +30 -17
  1008. package/dist/space/meta.d.ts.map +1 -1
  1009. package/dist/space/meta.js +29 -12
  1010. package/dist/spin/Spin.svelte +160 -195
  1011. package/dist/spin/Spin.svelte.d.ts +8 -12
  1012. package/dist/spin/Spin.svelte.d.ts.map +1 -1
  1013. package/dist/spin/meta.d.ts +36 -53
  1014. package/dist/spin/meta.d.ts.map +1 -1
  1015. package/dist/spin/meta.js +27 -47
  1016. package/dist/steps/Step.svelte +236 -0
  1017. package/dist/steps/Step.svelte.d.ts +5 -0
  1018. package/dist/steps/Step.svelte.d.ts.map +1 -0
  1019. package/dist/steps/Steps.svelte +521 -274
  1020. package/dist/steps/Steps.svelte.d.ts +14 -22
  1021. package/dist/steps/Steps.svelte.d.ts.map +1 -1
  1022. package/dist/steps/context.d.ts +41 -0
  1023. package/dist/steps/context.d.ts.map +1 -0
  1024. package/dist/steps/context.js +8 -0
  1025. package/dist/steps/index.d.ts +8 -2
  1026. package/dist/steps/index.d.ts.map +1 -1
  1027. package/dist/steps/index.js +5 -1
  1028. package/dist/steps/meta.d.ts +67 -42
  1029. package/dist/steps/meta.d.ts.map +1 -1
  1030. package/dist/steps/meta.js +169 -25
  1031. package/dist/steps/types.d.ts +30 -7
  1032. package/dist/steps/types.d.ts.map +1 -1
  1033. package/dist/switch/Switch.svelte +224 -205
  1034. package/dist/switch/Switch.svelte.d.ts +22 -43
  1035. package/dist/switch/Switch.svelte.d.ts.map +1 -1
  1036. package/dist/switch/meta.d.ts +44 -51
  1037. package/dist/switch/meta.d.ts.map +1 -1
  1038. package/dist/switch/meta.js +68 -27
  1039. package/dist/table/Table.svelte +1065 -600
  1040. package/dist/table/Table.svelte.d.ts +95 -1
  1041. package/dist/table/Table.svelte.d.ts.map +1 -1
  1042. package/dist/table/meta.d.ts +221 -2
  1043. package/dist/table/meta.d.ts.map +1 -1
  1044. package/dist/table/meta.js +119 -18
  1045. package/dist/table/types.d.ts +36 -6
  1046. package/dist/table/types.d.ts.map +1 -1
  1047. package/dist/tabs/TabPane.svelte +4 -1
  1048. package/dist/tabs/TabPane.svelte.d.ts +2 -0
  1049. package/dist/tabs/TabPane.svelte.d.ts.map +1 -1
  1050. package/dist/tabs/Tabs.svelte +453 -280
  1051. package/dist/tabs/Tabs.svelte.d.ts +41 -32
  1052. package/dist/tabs/Tabs.svelte.d.ts.map +1 -1
  1053. package/dist/tabs/context.d.ts +3 -0
  1054. package/dist/tabs/context.d.ts.map +1 -1
  1055. package/dist/tabs/meta.d.ts +43 -47
  1056. package/dist/tabs/meta.d.ts.map +1 -1
  1057. package/dist/tabs/meta.js +76 -47
  1058. package/dist/tabs/types.d.ts +3 -0
  1059. package/dist/tabs/types.d.ts.map +1 -1
  1060. package/dist/tag/SplitTagGroup.svelte +62 -0
  1061. package/dist/tag/SplitTagGroup.svelte.d.ts +15 -0
  1062. package/dist/tag/SplitTagGroup.svelte.d.ts.map +1 -0
  1063. package/dist/tag/Tag.svelte +394 -261
  1064. package/dist/tag/Tag.svelte.d.ts +40 -23
  1065. package/dist/tag/Tag.svelte.d.ts.map +1 -1
  1066. package/dist/tag/TagGroup.svelte +208 -0
  1067. package/dist/tag/TagGroup.svelte.d.ts +56 -0
  1068. package/dist/tag/TagGroup.svelte.d.ts.map +1 -0
  1069. package/dist/tag/index.d.ts +2 -0
  1070. package/dist/tag/index.d.ts.map +1 -1
  1071. package/dist/tag/index.js +4 -0
  1072. package/dist/tag/meta.d.ts +157 -51
  1073. package/dist/tag/meta.d.ts.map +1 -1
  1074. package/dist/tag/meta.js +82 -45
  1075. package/dist/tag-input/TagInput.svelte +575 -261
  1076. package/dist/tag-input/TagInput.svelte.d.ts +52 -17
  1077. package/dist/tag-input/TagInput.svelte.d.ts.map +1 -1
  1078. package/dist/tag-input/meta.d.ts +132 -20
  1079. package/dist/tag-input/meta.d.ts.map +1 -1
  1080. package/dist/tag-input/meta.js +49 -21
  1081. package/dist/tag-input/split.d.ts +8 -0
  1082. package/dist/tag-input/split.d.ts.map +1 -0
  1083. package/dist/tag-input/split.js +22 -0
  1084. package/dist/time-picker/TimePicker.svelte +504 -722
  1085. package/dist/time-picker/TimePicker.svelte.d.ts +67 -47
  1086. package/dist/time-picker/TimePicker.svelte.d.ts.map +1 -1
  1087. package/dist/time-picker/meta.d.ts +201 -19
  1088. package/dist/time-picker/meta.d.ts.map +1 -1
  1089. package/dist/time-picker/meta.js +73 -16
  1090. package/dist/timeline/Timeline.svelte +212 -548
  1091. package/dist/timeline/Timeline.svelte.d.ts +9 -22
  1092. package/dist/timeline/Timeline.svelte.d.ts.map +1 -1
  1093. package/dist/timeline/TimelineItem.svelte +101 -143
  1094. package/dist/timeline/TimelineItem.svelte.d.ts +20 -20
  1095. package/dist/timeline/TimelineItem.svelte.d.ts.map +1 -1
  1096. package/dist/timeline/context.d.ts +8 -12
  1097. package/dist/timeline/context.d.ts.map +1 -1
  1098. package/dist/timeline/index.d.ts +2 -2
  1099. package/dist/timeline/index.d.ts.map +1 -1
  1100. package/dist/timeline/meta.d.ts +59 -95
  1101. package/dist/timeline/meta.d.ts.map +1 -1
  1102. package/dist/timeline/meta.js +81 -86
  1103. package/dist/timeline/types.d.ts +16 -5
  1104. package/dist/timeline/types.d.ts.map +1 -1
  1105. package/dist/toast/ToastContainer.svelte +111 -125
  1106. package/dist/toast/ToastContainer.svelte.d.ts +3 -0
  1107. package/dist/toast/ToastContainer.svelte.d.ts.map +1 -1
  1108. package/dist/toast/ToastHolder.svelte +18 -0
  1109. package/dist/toast/ToastHolder.svelte.d.ts +8 -0
  1110. package/dist/toast/ToastHolder.svelte.d.ts.map +1 -0
  1111. package/dist/toast/ToastItem.svelte +209 -191
  1112. package/dist/toast/ToastItem.svelte.d.ts +7 -0
  1113. package/dist/toast/ToastItem.svelte.d.ts.map +1 -1
  1114. package/dist/toast/index.d.ts +3 -2
  1115. package/dist/toast/index.d.ts.map +1 -1
  1116. package/dist/toast/index.js +2 -1
  1117. package/dist/toast/meta.d.ts +84 -53
  1118. package/dist/toast/meta.d.ts.map +1 -1
  1119. package/dist/toast/meta.js +69 -62
  1120. package/dist/toast/store.d.ts +79 -51
  1121. package/dist/toast/store.d.ts.map +1 -1
  1122. package/dist/toast/store.js +179 -116
  1123. package/dist/tooltip/Tooltip.svelte +533 -203
  1124. package/dist/tooltip/Tooltip.svelte.d.ts +90 -20
  1125. package/dist/tooltip/Tooltip.svelte.d.ts.map +1 -1
  1126. package/dist/tooltip/index.d.ts +1 -0
  1127. package/dist/tooltip/index.d.ts.map +1 -1
  1128. package/dist/tooltip/index.js +1 -0
  1129. package/dist/tooltip/meta.d.ts +131 -34
  1130. package/dist/tooltip/meta.d.ts.map +1 -1
  1131. package/dist/tooltip/meta.js +92 -28
  1132. package/dist/tooltip/placement.d.ts +21 -1
  1133. package/dist/tooltip/placement.d.ts.map +1 -1
  1134. package/dist/tooltip/placement.js +57 -1
  1135. package/dist/transfer/Transfer.svelte +686 -1100
  1136. package/dist/transfer/Transfer.svelte.d.ts +68 -73
  1137. package/dist/transfer/Transfer.svelte.d.ts.map +1 -1
  1138. package/dist/transfer/meta.d.ts +44 -65
  1139. package/dist/transfer/meta.d.ts.map +1 -1
  1140. package/dist/transfer/meta.js +76 -31
  1141. package/dist/transfer/types.d.ts +5 -0
  1142. package/dist/transfer/types.d.ts.map +1 -1
  1143. package/dist/tree/Tree.svelte +973 -422
  1144. package/dist/tree/Tree.svelte.d.ts +291 -72
  1145. package/dist/tree/Tree.svelte.d.ts.map +1 -1
  1146. package/dist/tree/meta.d.ts +246 -79
  1147. package/dist/tree/meta.d.ts.map +1 -1
  1148. package/dist/tree/meta.js +238 -58
  1149. package/dist/tree-select/TreeSelect.svelte +591 -240
  1150. package/dist/tree-select/TreeSelect.svelte.d.ts +88 -54
  1151. package/dist/tree-select/TreeSelect.svelte.d.ts.map +1 -1
  1152. package/dist/tree-select/meta.d.ts +344 -57
  1153. package/dist/tree-select/meta.d.ts.map +1 -1
  1154. package/dist/tree-select/meta.js +80 -26
  1155. package/dist/tree-select/types.d.ts +2 -0
  1156. package/dist/tree-select/types.d.ts.map +1 -1
  1157. package/dist/typography/Numeral.svelte +117 -0
  1158. package/dist/typography/Numeral.svelte.d.ts +35 -0
  1159. package/dist/typography/Numeral.svelte.d.ts.map +1 -0
  1160. package/dist/typography/Paragraph.svelte +20 -34
  1161. package/dist/typography/Paragraph.svelte.d.ts +8 -13
  1162. package/dist/typography/Paragraph.svelte.d.ts.map +1 -1
  1163. package/dist/typography/Text.svelte +22 -33
  1164. package/dist/typography/Text.svelte.d.ts +11 -13
  1165. package/dist/typography/Text.svelte.d.ts.map +1 -1
  1166. package/dist/typography/Title.svelte +23 -28
  1167. package/dist/typography/Title.svelte.d.ts +10 -11
  1168. package/dist/typography/Title.svelte.d.ts.map +1 -1
  1169. package/dist/typography/TypographyBase.svelte +534 -479
  1170. package/dist/typography/TypographyBase.svelte.d.ts +44 -29
  1171. package/dist/typography/TypographyBase.svelte.d.ts.map +1 -1
  1172. package/dist/typography/index.d.ts +3 -3
  1173. package/dist/typography/index.d.ts.map +1 -1
  1174. package/dist/typography/index.js +3 -3
  1175. package/dist/typography/meta.d.ts +190 -185
  1176. package/dist/typography/meta.d.ts.map +1 -1
  1177. package/dist/typography/meta.js +112 -85
  1178. package/dist/upload/FileCard.svelte +634 -0
  1179. package/dist/upload/FileCard.svelte.d.ts +40 -0
  1180. package/dist/upload/FileCard.svelte.d.ts.map +1 -0
  1181. package/dist/upload/Upload.svelte +1112 -650
  1182. package/dist/upload/Upload.svelte.d.ts +118 -66
  1183. package/dist/upload/Upload.svelte.d.ts.map +1 -1
  1184. package/dist/upload/index.d.ts +2 -1
  1185. package/dist/upload/index.d.ts.map +1 -1
  1186. package/dist/upload/index.js +1 -0
  1187. package/dist/upload/meta.d.ts +231 -72
  1188. package/dist/upload/meta.d.ts.map +1 -1
  1189. package/dist/upload/meta.js +84 -42
  1190. package/dist/upload/types.d.ts +137 -3
  1191. package/dist/upload/types.d.ts.map +1 -1
  1192. package/dist/user-guide/UserGuide.svelte +655 -0
  1193. package/dist/user-guide/UserGuide.svelte.d.ts +75 -0
  1194. package/dist/user-guide/UserGuide.svelte.d.ts.map +1 -0
  1195. package/dist/user-guide/index.d.ts +4 -0
  1196. package/dist/user-guide/index.d.ts.map +1 -0
  1197. package/dist/user-guide/index.js +2 -0
  1198. package/dist/user-guide/meta.d.ts +162 -0
  1199. package/dist/user-guide/meta.d.ts.map +1 -0
  1200. package/dist/user-guide/meta.js +60 -0
  1201. package/dist/video-player/ErrorSvg.svelte +15 -0
  1202. package/dist/video-player/ErrorSvg.svelte.d.ts +19 -0
  1203. package/dist/video-player/ErrorSvg.svelte.d.ts.map +1 -0
  1204. package/dist/video-player/VideoPlayer.svelte +769 -0
  1205. package/dist/video-player/VideoPlayer.svelte.d.ts +43 -0
  1206. package/dist/video-player/VideoPlayer.svelte.d.ts.map +1 -0
  1207. package/dist/video-player/VideoProgress.svelte +267 -0
  1208. package/dist/video-player/VideoProgress.svelte.d.ts +18 -0
  1209. package/dist/video-player/VideoProgress.svelte.d.ts.map +1 -0
  1210. package/dist/video-player/index.d.ts +4 -0
  1211. package/dist/video-player/index.d.ts.map +1 -0
  1212. package/dist/video-player/index.js +2 -0
  1213. package/dist/video-player/meta.d.ts +200 -0
  1214. package/dist/video-player/meta.d.ts.map +1 -0
  1215. package/dist/video-player/meta.js +159 -0
  1216. package/package.json +29 -4
  1217. package/dist/collapse/types.d.ts +0 -6
  1218. package/dist/collapse/types.d.ts.map +0 -1
  1219. package/dist/date-picker/RangePicker.svelte +0 -775
  1220. package/dist/date-picker/RangePicker.svelte.d.ts +0 -38
  1221. package/dist/date-picker/RangePicker.svelte.d.ts.map +0 -1
  1222. package/dist/date-picker/range-meta.d.ts +0 -100
  1223. package/dist/date-picker/range-meta.d.ts.map +0 -1
  1224. package/dist/date-picker/range-meta.js +0 -43
  1225. package/dist/drawer/Drawer.svelte +0 -554
  1226. package/dist/drawer/Drawer.svelte.d.ts +0 -54
  1227. package/dist/drawer/Drawer.svelte.d.ts.map +0 -1
  1228. package/dist/drawer/index.d.ts +0 -3
  1229. package/dist/drawer/index.d.ts.map +0 -1
  1230. package/dist/drawer/index.js +0 -2
  1231. package/dist/drawer/meta.d.ts +0 -147
  1232. package/dist/drawer/meta.d.ts.map +0 -1
  1233. package/dist/drawer/meta.js +0 -126
  1234. package/dist/dropdown/DropdownItemNode.svelte +0 -355
  1235. package/dist/dropdown/DropdownItemNode.svelte.d.ts +0 -14
  1236. package/dist/dropdown/DropdownItemNode.svelte.d.ts.map +0 -1
  1237. package/dist/dropdown/DropdownSubMenu.svelte +0 -212
  1238. package/dist/dropdown/DropdownSubMenu.svelte.d.ts +0 -15
  1239. package/dist/dropdown/DropdownSubMenu.svelte.d.ts.map +0 -1
  1240. package/dist/grid/use-breakpoint.svelte.d.ts +0 -13
  1241. package/dist/grid/use-breakpoint.svelte.d.ts.map +0 -1
  1242. package/dist/grid/use-breakpoint.svelte.js +0 -41
  1243. package/dist/icon/Icon.svelte +0 -156
  1244. package/dist/icon/Icon.svelte.d.ts +0 -23
  1245. package/dist/icon/Icon.svelte.d.ts.map +0 -1
  1246. package/dist/image/ImagePreviewGroup.svelte +0 -93
  1247. package/dist/image/ImagePreviewGroup.svelte.d.ts +0 -14
  1248. package/dist/image/ImagePreviewGroup.svelte.d.ts.map +0 -1
  1249. package/dist/image/context.d.ts +0 -16
  1250. package/dist/image/context.d.ts.map +0 -1
  1251. package/dist/image/context.js +0 -8
  1252. package/dist/list/ListMeta.svelte +0 -73
  1253. package/dist/list/ListMeta.svelte.d.ts +0 -14
  1254. package/dist/list/ListMeta.svelte.d.ts.map +0 -1
  1255. package/dist/lottie-icon/LottieIcon.svelte +0 -330
  1256. package/dist/lottie-icon/LottieIcon.svelte.d.ts +0 -44
  1257. package/dist/lottie-icon/LottieIcon.svelte.d.ts.map +0 -1
  1258. package/dist/lottie-icon/index.d.ts +0 -4
  1259. package/dist/lottie-icon/index.d.ts.map +0 -1
  1260. package/dist/lottie-icon/index.js +0 -2
  1261. package/dist/lottie-icon/meta.d.ts +0 -147
  1262. package/dist/lottie-icon/meta.js +0 -161
  1263. package/dist/menu/Menu.svelte +0 -843
  1264. package/dist/menu/Menu.svelte.d.ts +0 -95
  1265. package/dist/menu/Menu.svelte.d.ts.map +0 -1
  1266. package/dist/menu/MenuPopupNode.svelte +0 -525
  1267. package/dist/menu/MenuPopupNode.svelte.d.ts +0 -52
  1268. package/dist/menu/MenuPopupNode.svelte.d.ts.map +0 -1
  1269. package/dist/menu/index.d.ts +0 -5
  1270. package/dist/menu/index.d.ts.map +0 -1
  1271. package/dist/menu/index.js +0 -3
  1272. package/dist/menu/meta.d.ts +0 -147
  1273. package/dist/menu/meta.d.ts.map +0 -1
  1274. package/dist/menu/meta.js +0 -141
  1275. package/dist/menu/types.d.ts +0 -88
  1276. package/dist/menu/types.d.ts.map +0 -1
  1277. package/dist/menu/types.js +0 -34
  1278. package/dist/scroll-list/ScrollColumn.svelte +0 -592
  1279. package/dist/scroll-list/ScrollColumn.svelte.d.ts +0 -34
  1280. package/dist/scroll-list/ScrollColumn.svelte.d.ts.map +0 -1
  1281. package/dist/skeleton/context.d.ts +0 -10
  1282. package/dist/skeleton/context.d.ts.map +0 -1
  1283. package/dist/skeleton/context.js +0 -1
  1284. package/dist/textarea/TextArea.svelte +0 -420
  1285. package/dist/textarea/TextArea.svelte.d.ts +0 -69
  1286. package/dist/textarea/TextArea.svelte.d.ts.map +0 -1
  1287. package/dist/textarea/index.d.ts +0 -3
  1288. package/dist/textarea/index.d.ts.map +0 -1
  1289. package/dist/textarea/index.js +0 -2
  1290. package/dist/textarea/meta.d.ts +0 -170
  1291. package/dist/textarea/meta.d.ts.map +0 -1
  1292. package/dist/textarea/meta.js +0 -104
  1293. package/dist/toast/live-region.d.ts +0 -21
  1294. package/dist/toast/live-region.d.ts.map +0 -1
  1295. package/dist/toast/live-region.js +0 -57
  1296. package/dist/typography/Link.svelte +0 -120
  1297. package/dist/typography/Link.svelte.d.ts +0 -35
  1298. package/dist/typography/Link.svelte.d.ts.map +0 -1
  1299. /package/dist/{collapse/types.js → ai-chat-dialogue/render-config.js} +0 -0
@@ -15,7 +15,7 @@
15
15
  后代部分选中父行半选 indeterminate),true=父子独立(向后兼容)。联动 {checked,half} 经 core
16
16
  conductRows/toggleRowCheck 纯函数据整棵可见行树派生 (红线 #2);内部存叶子级 base,
17
17
  onChange 回传含父行的完整 checked 集;半选写 input.indeterminate 复用 attachment (红线 #3)。
18
- 行虚拟滚动:virtualized=true 时 .cd-table-wrap 自身纵向滚动(固定 height),thead sticky 固定顶部,
18
+ 行虚拟滚动:virtualized=true 时 .cd-table-body 自身纵向滚动(固定 height),thead sticky 固定顶部,
19
19
  tbody 仅渲染视口内行切片(复用 core fixedRange 算可见区间),首尾各一个 padding spacer tr 撑出
20
20
  未渲染行总高(保持原生 <table>/<tr>/<td> 语义与 a11y)。scrollTop 命令式 scroll 回调 + rAF 节流写入
21
21
  本地 $state,可见区间纯 $derived render 期只读(红线 #2/#3)。virtualized 与 pagination 互斥(虚拟时
@@ -35,14 +35,23 @@
35
35
  fixedRange,
36
36
  useLiveAnnouncer,
37
37
  useId,
38
+ createResizeDrag,
38
39
  type RowKey,
39
40
  type SortState,
40
41
  type FlatRow,
42
+ type ResizeDragController,
41
43
  } from '@chenzy-design/core';
42
44
  import { tick } from 'svelte';
43
45
  import type { Snippet } from 'svelte';
44
46
  import { SvelteMap } from 'svelte/reactivity';
45
47
  import { Pagination } from '../pagination/index.js';
48
+ import {
49
+ IconCaretup,
50
+ IconCaretdown,
51
+ IconFilter,
52
+ IconChevronRight,
53
+ IconTreeTriangleRight,
54
+ } from '@chenzy-design/icons';
46
55
  import { floating } from '../_floating/use-floating.js';
47
56
  import { useDismiss } from '@chenzy-design/core';
48
57
  import { useLocale } from '../locale-provider/index.js';
@@ -112,8 +121,26 @@
112
121
  indentSize: indentSizeProp = 20,
113
122
  groupBy,
114
123
  renderGroupSection,
124
+ clickGroupedRowToExpand = false,
125
+ defaultExpandAllGroupRows,
126
+ expandAllGroupRows,
127
+ onGroupExpandChange,
128
+ onGroupedRow,
115
129
  titleSnippet,
116
130
  footerSnippet,
131
+ renderPagination,
132
+ expandIcon,
133
+ hideExpandedColumn = true,
134
+ rowSpanHover = false,
135
+ headerStyle,
136
+ direction = 'ltr',
137
+ title,
138
+ footer,
139
+ childrenRecordName,
140
+ class: className,
141
+ style,
142
+ components,
143
+ getVirtualizedListRef,
117
144
  }: {
118
145
  columns?: ColumnDef<T>[];
119
146
  dataSource?: T[];
@@ -187,9 +214,9 @@
187
214
  /** 筛选浮层挂载容器,默认跟随触发按钮 */
188
215
  getPopupContainer?: () => HTMLElement;
189
216
  /** 行级事件与属性(返回 onClick/onDoubleClick/className/style) */
190
- onRow?: (record: T, index: number) => { onClick?: (e: MouseEvent) => void; onDoubleClick?: (e: MouseEvent) => void; className?: string; style?: string };
217
+ onRow?: (record: T, index: number, rowStatus?: { disabled?: boolean; selected?: boolean }) => { onClick?: (e: MouseEvent) => void; onDoubleClick?: (e: MouseEvent) => void; onMouseEnter?: (e: MouseEvent) => void; onMouseLeave?: (e: MouseEvent) => void; className?: string; style?: string };
191
218
  /** 表头行级事件与属性 */
192
- onHeaderRow?: (columns: ColumnDef<T>[], index: number) => { onClick?: (e: MouseEvent) => void; className?: string; style?: string };
219
+ onHeaderRow?: (columns: ColumnDef<T>[], index: number) => { onClick?: (e: MouseEvent) => void; onMouseEnter?: (e: MouseEvent) => void; onMouseLeave?: (e: MouseEvent) => void; className?: string; style?: string };
193
220
  /** 点击行体时触发展开/收起,默认 false */
194
221
  expandRowByClick?: boolean;
195
222
  /** 展开图标列固定方向 */
@@ -202,12 +229,81 @@
202
229
  groupBy?: string | ((record: T) => string);
203
230
  /** 自定义分组标题渲染 */
204
231
  renderGroupSection?: Snippet<[{ groupKey: string; group: T[] }]>;
232
+ /** 点击分组标题行时折叠/展开该组内的数据行,默认 false(groupBy 时生效) */
233
+ clickGroupedRowToExpand?: boolean;
234
+ /** 非受控:初始默认展开全部分组。缺省(未配置任一分组展开 props)时向后兼容为全展开;
235
+ * 显式传 false 则初始全部折叠。动态加载数据时不生效。 */
236
+ defaultExpandAllGroupRows?: boolean;
237
+ /** 受控:为 true 展开全部分组、false 折叠全部分组。受控时不回写,仅经 onGroupExpandChange 通知(红线 #1) */
238
+ expandAllGroupRows?: boolean;
239
+ /** 分组展开/收起变化回调(点击分组标题行触发),回传当前展开的分组 key 集合 */
240
+ onGroupExpandChange?: (info: { groupKey: string; expanded: boolean; expandedGroupKeys: string[] }) => void;
241
+ /** 分组标题行的自定义属性回调(类似 onRow,仅作用于分组头行),返回值合并进分组头行 tr。groupBy 时生效 */
242
+ onGroupedRow?: (group: T[], index: number) => { onClick?: (e: MouseEvent) => void; onDoubleClick?: (e: MouseEvent) => void; onMouseEnter?: (e: MouseEvent) => void; onMouseLeave?: (e: MouseEvent) => void; className?: string; style?: string };
205
243
  /** 表格顶部标题区域 */
206
244
  titleSnippet?: Snippet;
207
245
  /** 表格底部内容区域(接收 currentData) */
208
246
  footerSnippet?: Snippet<[{ currentData: T[] }]>;
247
+ /**
248
+ * 自定义分页器渲染,替换内置 Pagination UI。入参含分页状态与翻页回调(调用 onChange(page) 触发内部翻页,
249
+ * 受控 current 仍不回写,红线 #1)。仅在 paginationEnabled 且有数据时消费。
250
+ */
251
+ renderPagination?: Snippet<[{ total: number; currentPage: number; pageSize: number; onChange: (page: number) => void }]>;
252
+ /**
253
+ * 自定义展开行的展开/收起图标(替换默认三角)。入参 { expanded, record }。
254
+ * 仅在 expandable 展开列生效(树形行的展开三角另有渲染,不受此影响)。
255
+ */
256
+ expandIcon?: Snippet<[{ expanded: boolean; record: T }]>;
257
+ /**
258
+ * 展开按钮是否与首列文案渲染在同一单元格。默认 true(并入首列,对齐 Semi);
259
+ * 传 false 时展开按钮单独作为一列渲染(首列前的独立 expand 列)。仅 expandable 时生效。
260
+ */
261
+ hideExpandedColumn?: boolean;
262
+ /** 合并单元格(column.render 返回 rowSpan)时 hover 是否高亮整个合并区。默认 false */
263
+ rowSpanHover?: boolean;
264
+ /** 表头单元格(所有 th,含 fixed 表头)的自定义内联样式。字符串或键值对象 */
265
+ headerStyle?: string | Record<string, string>;
266
+ /** RTL/LTR 方向,默认 ltr(对齐 Semi direction) */
267
+ direction?: 'ltr' | 'rtl';
268
+ /** 表格标题(字符串;富内容用 titleSnippet) */
269
+ title?: string;
270
+ /** 表格尾部(字符串;富内容用 footerSnippet) */
271
+ footer?: string;
272
+ /** 树形 dataSource 中子级字段名,默认 'children'(对齐 Semi childrenRecordName;tree.childrenColumnName 优先) */
273
+ childrenRecordName?: string;
274
+ /** 最外层 .cd-table-wrapper 自定义样式名(对齐 Semi className) */
275
+ class?: string;
276
+ /** 最外层 .cd-table-wrapper 内联样式(对齐 Semi style) */
277
+ style?: string;
278
+ /**
279
+ * 覆盖组成元素的 tag 名(对齐 Semi components)。Svelte 侧以标签名字符串生效,
280
+ * 经 <svelte:element> 渲染,内部 class/role/事件仍注入。缺省用原生
281
+ * table/thead/tbody/tr/th/td。常见用法:body.row='div' 配合拖拽库。
282
+ */
283
+ components?: {
284
+ table?: string;
285
+ header?: { wrapper?: string; row?: string; cell?: string };
286
+ body?: { wrapper?: string; row?: string; cell?: string };
287
+ };
288
+ /**
289
+ * 返回虚拟化滚动控制句柄(对齐 Semi getVirtualizedListRef)。仅 virtualized 时有效。
290
+ * 句柄含 scrollTo(offset) 与 scrollToItem(index),命令式驱动表体滚动。
291
+ */
292
+ getVirtualizedListRef?: (ref: {
293
+ scrollTo: (offset: number) => void;
294
+ scrollToItem: (index: number) => void;
295
+ }) => void;
209
296
  } = $props();
210
297
 
298
+ // 解析各槽位 tag,缺省回退原生(对齐 Semi DEFAULT_COMPONENTS)。
299
+ const tagTable = $derived(components?.table ?? 'table');
300
+ const tagThead = $derived(components?.header?.wrapper ?? 'thead');
301
+ const tagTbody = $derived(components?.body?.wrapper ?? 'tbody');
302
+ const tagHeaderRow = $derived(components?.header?.row ?? 'tr');
303
+ const tagHeaderCell = $derived(components?.header?.cell ?? 'th');
304
+ const tagBodyRow = $derived(components?.body?.row ?? 'tr');
305
+ const tagBodyCell = $derived(components?.body?.cell ?? 'td');
306
+
211
307
  const loc = useLocale();
212
308
  // 单例 live region(polite):排序结果播报给屏幕阅读器(命令式写入在事件回调,红线 #3)。
213
309
  const announcer = useLiveAnnouncer();
@@ -219,6 +315,59 @@
219
315
  const colKeyOf = (col: ColumnDef<T>, index: number): string =>
220
316
  col.key ?? col.dataIndex ?? String(index);
221
317
 
318
+ // --- 表头合并(column.children):叶子列驱动 body/ColGroup/固定列,父列只作表头分组 ---
319
+ // 无 children 时 leafColumns 与 columns 等价(零行为变化)。
320
+ function flattenLeaves(cols: ColumnDef<T>[]): ColumnDef<T>[] {
321
+ const out: ColumnDef<T>[] = [];
322
+ for (const c of cols) {
323
+ if (c.children && c.children.length > 0) out.push(...flattenLeaves(c.children));
324
+ else out.push(c);
325
+ }
326
+ return out;
327
+ }
328
+ const leafColumns = $derived(flattenLeaves(columns));
329
+ const hasHeaderMerge = $derived(columns.some((c) => c.children && c.children.length > 0));
330
+
331
+ function leafCount(col: ColumnDef<T>): number {
332
+ if (!col.children || col.children.length === 0) return 1;
333
+ return col.children.reduce((s, c) => s + leafCount(c), 0);
334
+ }
335
+ const headerDepth = $derived.by(() => {
336
+ const depth = (col: ColumnDef<T>): number =>
337
+ col.children && col.children.length > 0 ? 1 + Math.max(...col.children.map(depth)) : 1;
338
+ return columns.length ? Math.max(...columns.map(depth)) : 1;
339
+ });
340
+ interface HeaderCell {
341
+ col: ColumnDef<T>;
342
+ colSpan: number;
343
+ rowSpan: number;
344
+ leafIndex: number; // 叶子格:其在 leafColumns 的下标;父分组格:-1
345
+ isLeaf: boolean;
346
+ }
347
+ // 二维表头:rows[r] 是第 r 行的表头格序列。叶子列 rowSpan 纵向合并到底行。
348
+ const headerRows = $derived.by<HeaderCell[][]>(() => {
349
+ const depth = headerDepth;
350
+ const rows: HeaderCell[][] = Array.from({ length: depth }, () => []);
351
+ const walk = (col: ColumnDef<T>, rowIndex: number, startLeaf: number): void => {
352
+ if (!col.children || col.children.length === 0) {
353
+ rows[rowIndex]?.push({ col, colSpan: 1, rowSpan: depth - rowIndex, leafIndex: startLeaf, isLeaf: true });
354
+ } else {
355
+ rows[rowIndex]?.push({ col, colSpan: leafCount(col), rowSpan: 1, leafIndex: -1, isLeaf: false });
356
+ let childLeaf = startLeaf;
357
+ for (const child of col.children) {
358
+ walk(child, rowIndex + 1, childLeaf);
359
+ childLeaf += leafCount(child);
360
+ }
361
+ }
362
+ };
363
+ let cursor = 0;
364
+ for (const col of columns) {
365
+ walk(col, 0, cursor);
366
+ cursor += leafCount(col);
367
+ }
368
+ return rows;
369
+ });
370
+
222
371
  // --- 列宽拖拽:本地覆盖宽度 (colKey → px),不写回 columns prop (红线 #1) ---
223
372
  const MIN_COL_WIDTH = 40;
224
373
  const widthOverrides = new SvelteMap<string, number>();
@@ -234,9 +383,11 @@
234
383
  return col.width;
235
384
  }
236
385
 
237
- // 列头拖拽:命令式管理指针几何 (红线 #3)。
238
- // pointerdown 一次性把起始宽度 / clientX 存普通变量,document 上手动绑定
239
- // pointermove / pointerup,结束时解绑。绝不用响应式 attachment 读几何。
386
+ // 列头拖拽:收敛到 core 通用拖拽原语 createResizeDrag,命令式管理指针几何
387
+ // (红线 #3)。pointerdown 时以当前列 colKey / 起始宽度构建一次性拖拽实例,
388
+ // 由原语在 document 上绑定 pointermove/pointerup 并在结束/卸载时解绑;
389
+ // 绝不用响应式 attachment 读几何。
390
+ let activeDrag: ResizeDragController | null = null;
240
391
  function startResize(event: PointerEvent, col: ColumnDef<T>, index: number) {
241
392
  event.preventDefault();
242
393
  event.stopPropagation();
@@ -246,33 +397,31 @@
246
397
  const ov = widthOverrides.get(colKey);
247
398
  const startWidth =
248
399
  ov ?? (typeof col.width === 'number' ? col.width : (th?.getBoundingClientRect().width ?? MIN_COL_WIDTH));
249
- const startX = event.clientX;
250
400
 
251
- resizingKey = colKey;
252
-
253
- const onMove = (e: PointerEvent) => {
254
- const next = Math.max(MIN_COL_WIDTH, Math.round(startWidth + (e.clientX - startX)));
255
- widthOverrides.set(colKey, next);
256
- };
257
- const onUp = () => {
258
- document.removeEventListener('pointermove', onMove);
259
- document.removeEventListener('pointerup', onUp);
260
- activeMove = null;
261
- activeUp = null;
262
- resizingKey = null;
263
- };
264
- activeMove = onMove;
265
- activeUp = onUp;
266
- document.addEventListener('pointermove', onMove);
267
- document.addEventListener('pointerup', onUp);
401
+ activeDrag?.destroy();
402
+ const drag = createResizeDrag({
403
+ axis: 'x',
404
+ getStart: () => ({ width: startWidth }),
405
+ // 单数 min 作用于 x 轴:等价 Math.max(MIN_COL_WIDTH, ...),原语内部再 Math.round
406
+ min: MIN_COL_WIDTH,
407
+ onStart: () => {
408
+ resizingKey = colKey;
409
+ },
410
+ onMove: (s) => {
411
+ widthOverrides.set(colKey, s.width);
412
+ },
413
+ onEnd: () => {
414
+ resizingKey = null;
415
+ activeDrag = null;
416
+ },
417
+ });
418
+ activeDrag = drag;
419
+ drag.start(event, 'right');
268
420
  }
269
421
 
270
- // 卸载兜底:若拖拽未结束就卸载,清掉可能遗留的全局监听 (红线 #3)。
271
- let activeMove: ((e: PointerEvent) => void) | null = null;
272
- let activeUp: (() => void) | null = null;
422
+ // 卸载兜底:若拖拽未结束就卸载,销毁拖拽实例清掉可能遗留的全局监听 (红线 #3)。
273
423
  $effect(() => () => {
274
- if (activeMove) document.removeEventListener('pointermove', activeMove);
275
- if (activeUp) document.removeEventListener('pointerup', activeUp);
424
+ activeDrag?.destroy();
276
425
  });
277
426
 
278
427
  // --- 排序:受控 sortState 不回写 (红线 #1) ---
@@ -283,8 +432,8 @@
283
432
  );
284
433
  function initSort(): SortState {
285
434
  // Check for per-column defaultSortOrder
286
- for (let i = 0; i < columns.length; i++) {
287
- const col = columns[i] as ColumnDef<T>;
435
+ for (let i = 0; i < leafColumns.length; i++) {
436
+ const col = leafColumns[i] as ColumnDef<T>;
288
437
  if (col.defaultSortOrder != null) {
289
438
  return { key: colKeyOf(col, i), order: col.defaultSortOrder };
290
439
  }
@@ -333,7 +482,7 @@
333
482
  }
334
483
  // 筛选变化:单列 onFilterChange + 聚合 onChange。dataIndex 优先列 dataIndex,回退 colKey。
335
484
  function emitFilterChange(colKey: string, values: (string | number)[]) {
336
- const col = columns.find((c, i) => colKeyOf(c, i) === colKey);
485
+ const col = leafColumns.find((c, i) => colKeyOf(c, i) === colKey);
337
486
  onFilterChange?.({ dataIndex: col?.dataIndex ?? colKey, values });
338
487
  emitChange('filter');
339
488
  }
@@ -367,8 +516,8 @@
367
516
  const processed = $derived.by(() => {
368
517
  let data = [...dataSource];
369
518
  // 列筛选(多列 AND)
370
- for (let i = 0; i < columns.length; i++) {
371
- const col = columns[i] as ColumnDef<T>;
519
+ for (let i = 0; i < leafColumns.length; i++) {
520
+ const col = leafColumns[i] as ColumnDef<T>;
372
521
  const ck = colKeyOf(col, i);
373
522
  if (isEffectivelyFiltered(col, ck)) {
374
523
  const selected = effectiveFilterValues(col, ck);
@@ -387,7 +536,7 @@
387
536
  const { key, order } = currentSort;
388
537
  if (key && order) {
389
538
  let target: ColumnDef<T> | undefined;
390
- columns.forEach((col, i) => {
539
+ leafColumns.forEach((col, i) => {
391
540
  if (colKeyOf(col, i) === key) target = col;
392
541
  });
393
542
  if (target && target.sorter) {
@@ -425,6 +574,14 @@
425
574
  );
426
575
 
427
576
  const total = $derived(processed.length);
577
+ // 分页 range 文案(对齐 Semi Table pageText:显示第 X 条-第 Y 条,共 N 条)。
578
+ const pageRangeText = $derived(
579
+ loc().t('Table.pageText', {
580
+ currentStart: total === 0 ? 0 : (currentPage - 1) * pageSize + 1,
581
+ currentEnd: Math.min(currentPage * pageSize, total),
582
+ total,
583
+ }),
584
+ );
428
585
  const visibleRows = $derived(
429
586
  paginationEnabled ? paginate(processed, currentPage, pageSize) : processed,
430
587
  );
@@ -450,7 +607,7 @@
450
607
  // 受控 tree.expandedRowKeys 不回写,仅 onExpand 通知 (红线 #1)。
451
608
  const treeEnabled = $derived(tree !== undefined && tree !== false);
452
609
  const treeOpts = $derived<TreeTable>(typeof tree === 'object' ? tree : {});
453
- const childrenColumnName = $derived(treeOpts.childrenColumnName ?? 'children');
610
+ const childrenColumnName = $derived(treeOpts.childrenColumnName ?? childrenRecordName ?? 'children');
454
611
  const indentSize = $derived(treeOpts.indentSize ?? indentSizeProp);
455
612
 
456
613
  function getChildren(record: T): T[] | undefined {
@@ -534,6 +691,8 @@
534
691
  // 仅依赖本地 $state,render 期只读不读 DOM(红线 #2)。
535
692
  const VIRTUAL_OVERSCAN = 4;
536
693
  let scrollEl = $state<HTMLDivElement | null>(null);
694
+ // 最外层 wrapper 引用(scrollToFirstRowOnChange 无 scroll.y 时滚入视口)
695
+ let wrapperEl = $state<HTMLDivElement | null>(null);
537
696
  // 仅由 scroll 回调写入的本地 scrollTop,render 期只读。
538
697
  let scrollTop = $state(0);
539
698
  // rAF 节流句柄(非响应式)。
@@ -543,6 +702,22 @@
543
702
 
544
703
  const vRowHeight = $derived(rowHeight > 0 ? rowHeight : 48);
545
704
  const vTotalHeight = $derived(displayRows.length * vRowHeight);
705
+
706
+ // getVirtualizedListRef:virtualized 时把滚动控制句柄回传给使用方(对齐 Semi)。
707
+ // scrollTo(offset) 直接设 scrollTop;scrollToItem(index) 按行高换算偏移。命令式,非响应式读。
708
+ $effect(() => {
709
+ if (!virtualized || !scrollEl || !getVirtualizedListRef) return;
710
+ const el = scrollEl;
711
+ const rowH = vRowHeight;
712
+ getVirtualizedListRef({
713
+ scrollTo: (offset: number) => {
714
+ el.scrollTop = offset;
715
+ },
716
+ scrollToItem: (index: number) => {
717
+ el.scrollTop = index * rowH;
718
+ },
719
+ });
720
+ });
546
721
  const vRange = $derived(
547
722
  virtualized
548
723
  ? fixedRange(scrollTop, height, vRowHeight, displayRows.length, VIRTUAL_OVERSCAN)
@@ -638,10 +813,21 @@
638
813
 
639
814
  const hasSelection = $derived(rowSelection !== undefined);
640
815
  const hasExpand = $derived(expandable !== undefined);
816
+ // 展开按钮是否占独立前置列:hideExpandedColumn=false 时独立成列;默认 true 并入首列(对齐 Semi)。
817
+ const expandAsColumn = $derived(hasExpand && hideExpandedColumn === false);
641
818
  const colSpan = $derived(
642
- columns.length + (hasSelection ? 1 : 0) + (hasExpand ? 1 : 0),
819
+ leafColumns.length + (hasSelection ? 1 : 0) + (expandAsColumn ? 1 : 0),
643
820
  );
644
821
 
822
+ // 表头行内联 style:headerStyle 支持字符串或键值对象,统一序列化为 style 字符串。
823
+ const headerStyleStr = $derived.by(() => {
824
+ if (headerStyle == null) return undefined;
825
+ if (typeof headerStyle === 'string') return headerStyle;
826
+ return Object.entries(headerStyle)
827
+ .map(([k, v]) => `${k}:${v}`)
828
+ .join(';');
829
+ });
830
+
645
831
  // --- 展开行:受控 expandedRowKeys 不回写 (红线 #1) ---
646
832
  const isExpandControlled = $derived(expandable?.expandedRowKeys !== undefined);
647
833
  let innerExpanded = $state<RowKey[]>(initExpanded());
@@ -825,7 +1011,7 @@
825
1011
  const gridId = useId('cd-table-grid');
826
1012
  // 网格列扁平表:前置 expand/selection 占位列 + 数据列(纯函数 buildGridCols)。
827
1013
  const gridCols = $derived<GridCol[]>(
828
- buildGridCols({ hasExpand, hasSelection, dataColumnCount: columns.length }),
1014
+ buildGridCols({ hasExpand: expandAsColumn, hasSelection, dataColumnCount: leafColumns.length }),
829
1015
  );
830
1016
  const gridColCount = $derived(gridCols.length);
831
1017
  // 总行数(含表头行)= aria-rowcount,虚拟化时为逻辑总数而非渲染数(spec §6)。
@@ -952,7 +1138,7 @@
952
1138
  const cell = gridEl?.querySelector<HTMLElement>(`#${cssEscape(cellId(focusRow, focusCol))}`);
953
1139
  if (!cell) return false;
954
1140
  const focusable = cell.querySelector<HTMLElement>(
955
- 'button:not([disabled]),a[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]):not(.cd-table__cell)',
1141
+ 'button:not([disabled]),a[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]):not(.cd-table-row-cell)',
956
1142
  );
957
1143
  if (!focusable) return false;
958
1144
  cellInteractive = true;
@@ -993,7 +1179,7 @@
993
1179
  // 当前各列筛选选中值(colKey → values[]),仅含非空筛选列。
994
1180
  function snapshotFilters(): Record<string, (string | number)[]> {
995
1181
  const out: Record<string, (string | number)[]> = {};
996
- columns.forEach((col, i) => {
1182
+ leafColumns.forEach((col, i) => {
997
1183
  const ck = colKeyOf(col, i);
998
1184
  const vals = filterState.get(ck);
999
1185
  if (vals && vals.size > 0) out[ck] = [...vals];
@@ -1016,6 +1202,18 @@
1016
1202
  sorter: sorterOverride ?? currentSort,
1017
1203
  extra: { action },
1018
1204
  });
1205
+ maybeScrollToFirstRow();
1206
+ }
1207
+
1208
+ // scroll.scrollToFirstRowOnChange:分页/排序/筛选变化后滚到表格顶部(对齐 Semi)。
1209
+ // scroll.y 时重置表体内部滚动到顶;否则把表格滚入视口顶部。命令式写 DOM,非响应式。
1210
+ function maybeScrollToFirstRow() {
1211
+ if (!scroll?.scrollToFirstRowOnChange) return;
1212
+ if (scroll.y != null && scrollEl) {
1213
+ scrollEl.scrollTop = 0;
1214
+ } else if (wrapperEl) {
1215
+ wrapperEl.scrollIntoView({ block: 'start', behavior: 'smooth' });
1216
+ }
1019
1217
  }
1020
1218
 
1021
1219
  // --- 排序点击 ---
@@ -1078,17 +1276,30 @@
1078
1276
  if (w === undefined) return undefined;
1079
1277
  return typeof w === 'number' ? `width:${w}px` : `width:${w}`;
1080
1278
  }
1279
+ // ColGroup <col> 宽度:对齐 Semi(width + minWidth 同值),无宽则不设。
1280
+ function colGroupStyle(col: ColumnDef<T>, index: number): string | undefined {
1281
+ const w = resolveWidth(col, index);
1282
+ if (w === undefined) return undefined;
1283
+ const v = typeof w === 'number' ? `${w}px` : w;
1284
+ return `width:${v};min-width:${v}`;
1285
+ }
1286
+ // 选择列宽度:rowSelection.columnWidth 优先,否则 Semi 默认 48px(对齐 LEADING_W)。
1287
+ const selectionColWidth = $derived(
1288
+ typeof rowSelection?.columnWidth === 'number'
1289
+ ? rowSelection.columnWidth
1290
+ : 48,
1291
+ );
1081
1292
 
1082
1293
  // --- 固定列:纯 CSS sticky + 逐列像素偏移计算 ---
1083
- // selection / expand 前置列宽(与 CSS .cd-table__cell--selection/--expand 对齐)
1294
+ // selection / expand 前置列宽(与 CSS .cd-table-column-selection/--expand 对齐)
1084
1295
  const LEADING_W = 48;
1085
1296
  // 前置 leading 列(expand + selection)的总宽,作为 left 固定列偏移基数
1086
- const leadingWidth = $derived((hasExpand ? LEADING_W : 0) + (hasSelection ? LEADING_W : 0));
1087
- const hasFixed = $derived(columns.some((c) => c.fixed));
1297
+ const leadingWidth = $derived((expandAsColumn ? LEADING_W : 0) + (hasSelection ? LEADING_W : 0));
1298
+ const hasFixed = $derived(leafColumns.some((c) => c.fixed));
1088
1299
  // 固定列时 table 的最小总宽(列宽和 + 前置列),撑过容器以触发横滚
1089
1300
  const totalMinWidth = $derived(
1090
1301
  leadingWidth +
1091
- columns.reduce((sum, c, i) => {
1302
+ leafColumns.reduce((sum, c, i) => {
1092
1303
  const w = resolveWidth(c, i);
1093
1304
  return sum + (typeof w === 'number' ? w : 120);
1094
1305
  }, 0),
@@ -1104,8 +1315,8 @@
1104
1315
  const fixedLeftOffsets = $derived.by(() => {
1105
1316
  const out: (number | null)[] = [];
1106
1317
  let acc = leadingWidth;
1107
- for (let i = 0; i < columns.length; i++) {
1108
- const col = columns[i] as ColumnDef<T>;
1318
+ for (let i = 0; i < leafColumns.length; i++) {
1319
+ const col = leafColumns[i] as ColumnDef<T>;
1109
1320
  if (col.fixed === 'left') {
1110
1321
  out.push(acc);
1111
1322
  acc += colNumWidth(col, i);
@@ -1117,10 +1328,10 @@
1117
1328
  });
1118
1329
  // 每个数据列的 right 偏移(右固定列):之后所有右固定列宽之和
1119
1330
  const fixedRightOffsets = $derived.by(() => {
1120
- const out: (number | null)[] = new Array(columns.length).fill(null);
1331
+ const out: (number | null)[] = new Array(leafColumns.length).fill(null);
1121
1332
  let acc = 0;
1122
- for (let i = columns.length - 1; i >= 0; i--) {
1123
- const col = columns[i] as ColumnDef<T>;
1333
+ for (let i = leafColumns.length - 1; i >= 0; i--) {
1334
+ const col = leafColumns[i] as ColumnDef<T>;
1124
1335
  if (col.fixed === 'right') {
1125
1336
  out[i] = acc;
1126
1337
  acc += colNumWidth(col, i);
@@ -1131,12 +1342,12 @@
1131
1342
  // 最后一个左固定列 / 第一个右固定列索引(用于阴影边界)
1132
1343
  const lastLeftFixed = $derived.by(() => {
1133
1344
  let idx = -1;
1134
- columns.forEach((c, i) => {
1345
+ leafColumns.forEach((c, i) => {
1135
1346
  if (c.fixed === 'left') idx = i;
1136
1347
  });
1137
1348
  return idx;
1138
1349
  });
1139
- const firstRightFixed = $derived(columns.findIndex((c) => c.fixed === 'right'));
1350
+ const firstRightFixed = $derived(leafColumns.findIndex((c) => c.fixed === 'right'));
1140
1351
 
1141
1352
  // 组合某数据列的 sticky 行内样式(含宽度)
1142
1353
  function cellStyle(col: ColumnDef<T>, i: number): string | undefined {
@@ -1152,10 +1363,10 @@
1152
1363
 
1153
1364
  function fixedCellClass(i: number): string {
1154
1365
  if (fixedLeftOffsets[i] != null) {
1155
- return `cd-table__cell--fixed cd-table__cell--fixed-left${i === lastLeftFixed ? ' cd-table__cell--fixed-left-last' : ''}`;
1366
+ return `cd-table-cell-fixed cd-table-cell-fixed-left${i === lastLeftFixed ? ' cd-table-cell-fixed-left-last' : ''}`;
1156
1367
  }
1157
1368
  if (fixedRightOffsets[i] != null) {
1158
- return `cd-table__cell--fixed cd-table__cell--fixed-right${i === firstRightFixed ? ' cd-table__cell--fixed-right-first' : ''}`;
1369
+ return `cd-table-cell-fixed cd-table-cell-fixed-right${i === firstRightFixed ? ' cd-table-cell-fixed-right-first' : ''}`;
1159
1370
  }
1160
1371
  return '';
1161
1372
  }
@@ -1163,10 +1374,24 @@
1163
1374
  // 前置 leading 列在存在左固定列时也需 sticky 锁定在最左
1164
1375
  function leadingStyle(slot: 'expand' | 'selection'): string | undefined {
1165
1376
  if (!hasFixed || lastLeftFixed < 0) return undefined;
1166
- const offset = slot === 'expand' ? 0 : hasExpand ? LEADING_W : 0;
1377
+ const offset = slot === 'expand' ? 0 : expandAsColumn ? LEADING_W : 0;
1167
1378
  return `position:sticky;inset-inline-start:${offset}px`;
1168
1379
  }
1169
- const leadingFixedClass = $derived(hasFixed && lastLeftFixed >= 0 ? 'cd-table__cell--fixed cd-table__cell--fixed-left' : '');
1380
+ const leadingFixedClass = $derived(hasFixed && lastLeftFixed >= 0 ? 'cd-table-cell-fixed cd-table-cell-fixed-left' : '');
1381
+
1382
+ // 单元格 style 合并:把 onCell 返回的自定义 style 追加到该 td 已有的 sticky/宽度 style 之后。
1383
+ function mergeCellStyle(base: string | undefined, extra: string | undefined): string | undefined {
1384
+ if (!extra) return base;
1385
+ if (!base) return extra;
1386
+ return `${base};${extra}`;
1387
+ }
1388
+
1389
+ // 表头单元格 style 合并:把 headerStyle(应用到所有 th)追加到该 th 已有的 sticky/宽度 style 之后。
1390
+ function mergeHeaderStyle(base: string | undefined): string | undefined {
1391
+ if (!headerStyleStr) return base;
1392
+ if (!base) return headerStyleStr;
1393
+ return `${base};${headerStyleStr}`;
1394
+ }
1170
1395
 
1171
1396
  // --- 半选 indeterminate:用 attachment 命令式写具体 input 元素属性。
1172
1397
  // 仅读派生布尔值并写 DOM,不读几何,写属性不触发响应式,无循环风险 (不违反红线 #3)。
@@ -1179,10 +1404,11 @@
1179
1404
  const cls = $derived(
1180
1405
  [
1181
1406
  'cd-table',
1182
- `cd-table--${size}`,
1183
- bordered && 'cd-table--bordered',
1184
- stripe && 'cd-table--stripe',
1185
- hasFixed && 'cd-table--fixed',
1407
+ `cd-table-${size}`,
1408
+ bordered && 'cd-table-bordered',
1409
+ stripe && 'cd-table-stripe',
1410
+ hasFixed && 'cd-table-fixed',
1411
+ rowSpanHover && 'cd-table-row-span-hover',
1186
1412
  ]
1187
1413
  .filter(Boolean)
1188
1414
  .join(' '),
@@ -1236,66 +1462,139 @@
1236
1462
  }
1237
1463
  return parts.length ? parts.join(';') : undefined;
1238
1464
  });
1239
- const selectionFixedClass = $derived(rowSelection?.fixed ? 'cd-table__cell--fixed cd-table__cell--fixed-left' : '');
1465
+ const selectionFixedClass = $derived(rowSelection?.fixed ? 'cd-table-cell-fixed cd-table-cell-fixed-left' : '');
1240
1466
 
1241
1467
  // --- groupBy: build grouped display rows ---
1242
- type GroupRow = { type: 'group'; groupKey: string; group: T[] };
1468
+ type GroupRow = { type: 'group'; groupKey: string; group: T[]; expanded: boolean; groupIndex: number };
1243
1469
  type DataDisplayRow = FlatRow<T> & { type: 'data' };
1244
1470
  type RenderRow = DataDisplayRow | GroupRow;
1245
1471
 
1246
- const groupedDisplayRows = $derived.by<RenderRow[]>(() => {
1247
- if (!groupBy) {
1248
- return displayRows.map((r) => ({ ...r, type: 'data' as const }));
1249
- }
1250
- const getGroupKey = (record: T): string => {
1251
- if (typeof groupBy === 'function') return groupBy(record);
1252
- return String(record[groupBy as string] ?? '');
1253
- };
1254
- // Build ordered group buckets (only top-level rows are grouped)
1255
- const groupOrder: string[] = [];
1256
- const groupMap = new Map<string, T[]>();
1472
+ const isGrouped = $derived(groupBy !== undefined);
1473
+
1474
+ const groupKeyOf = (record: T): string => {
1475
+ if (typeof groupBy === 'function') return groupBy(record);
1476
+ return String(record[groupBy as string] ?? '');
1477
+ };
1478
+
1479
+ // 有序分组桶:仅顶层行参与分组。纯 $derived(红线 #2)。
1480
+ const groupBuckets = $derived.by<{ order: string[]; map: Map<string, T[]> }>(() => {
1481
+ const order: string[] = [];
1482
+ const map = new Map<string, T[]>();
1483
+ if (!groupBy) return { order, map };
1257
1484
  for (const row of displayRows) {
1258
1485
  if (row.level === 0) {
1259
- const gk = getGroupKey(row.record);
1260
- if (!groupMap.has(gk)) {
1261
- groupOrder.push(gk);
1262
- groupMap.set(gk, []);
1486
+ const gk = groupKeyOf(row.record);
1487
+ if (!map.has(gk)) {
1488
+ order.push(gk);
1489
+ map.set(gk, []);
1263
1490
  }
1264
- groupMap.get(gk)!.push(row.record);
1491
+ map.get(gk)!.push(row.record);
1265
1492
  }
1266
1493
  }
1494
+ return { order, map };
1495
+ });
1496
+
1497
+ // --- 可折叠分组:受控 expandAllGroupRows 不回写,仅经 onGroupExpandChange 通知 (红线 #1) ---
1498
+ // 受控(expandAllGroupRows 定义)时展开态由该值统一决定(true 全展/false 全折)。
1499
+ // 非受控时仅记录「用户显式切换过的分组 → 展开态」,未切换的分组回退到默认值:
1500
+ // defaultExpandAllGroupRows 显式 false → 默认折叠;缺省(undefined)或 true → 默认展开
1501
+ // (向后兼容既有「分组头+组内行都显示」)。默认值纯 $derived、不落地为 $state,
1502
+ // 故数据变化产生的新分组自动继承默认展开态,无需 effect seed(红线 #2)。
1503
+ const isGroupExpandControlled = $derived(expandAllGroupRows !== undefined);
1504
+ const groupDefaultExpanded = $derived(defaultExpandAllGroupRows !== false);
1505
+ // 用户显式覆盖:groupKey → 展开态(未在此表中的分组用 groupDefaultExpanded)。
1506
+ const groupOverrides = new SvelteMap<string, boolean>();
1507
+
1508
+ // 某分组是否展开:受控看 expandAllGroupRows,非受控看覆盖表 → 默认值。
1509
+ const isGroupExpanded = (groupKey: string): boolean => {
1510
+ if (isGroupExpandControlled) return expandAllGroupRows === true;
1511
+ return groupOverrides.get(groupKey) ?? groupDefaultExpanded;
1512
+ };
1513
+
1514
+ function toggleGroupExpand(groupKey: string) {
1515
+ const willExpand = !isGroupExpanded(groupKey);
1516
+ if (!isGroupExpandControlled) {
1517
+ groupOverrides.set(groupKey, willExpand);
1518
+ const expandedKeys = groupBuckets.order.filter((gk) => isGroupExpanded(gk));
1519
+ onGroupExpandChange?.({ groupKey, expanded: willExpand, expandedGroupKeys: expandedKeys });
1520
+ } else {
1521
+ // 受控:不回写,仅通知(回传「若操作生效」后的期望集合,由消费方决定)
1522
+ const expandedKeys = expandAllGroupRows === true ? groupBuckets.order.slice() : [];
1523
+ onGroupExpandChange?.({ groupKey, expanded: willExpand, expandedGroupKeys: expandedKeys });
1524
+ }
1525
+ }
1526
+
1527
+ const groupedDisplayRows = $derived.by<RenderRow[]>(() => {
1528
+ if (!groupBy) {
1529
+ return displayRows.map((r) => ({ ...r, type: 'data' as const }));
1530
+ }
1531
+ const { order, map } = groupBuckets;
1267
1532
  const result: RenderRow[] = [];
1268
- for (const gk of groupOrder) {
1269
- const group = groupMap.get(gk)!;
1270
- result.push({ type: 'group', groupKey: gk, group });
1533
+ let groupIndex = 0;
1534
+ for (const gk of order) {
1535
+ const group = map.get(gk)!;
1536
+ const expanded = isGroupExpanded(gk);
1537
+ result.push({ type: 'group', groupKey: gk, group, expanded, groupIndex: groupIndex++ });
1538
+ // 折叠的分组只渲染分组头,不铺开组内数据行。
1539
+ if (!expanded) continue;
1271
1540
  // Include all displayRows belonging to this group (incl. tree children)
1272
1541
  let inGroup = false;
1273
1542
  for (const row of displayRows) {
1274
1543
  if (row.level === 0) {
1275
- inGroup = getGroupKey(row.record) === gk;
1544
+ inGroup = groupKeyOf(row.record) === gk;
1276
1545
  }
1277
1546
  if (inGroup) result.push({ ...row, type: 'data' as const });
1278
1547
  }
1279
1548
  }
1280
1549
  return result;
1281
1550
  });
1282
-
1283
- // For render purposes when no groupBy: cast displayRows to RenderRow[]
1284
- const isGrouped = $derived(groupBy !== undefined);
1285
1551
  </script>
1286
1552
 
1287
- {#if titleSnippet}
1288
- <div class="cd-table__title-area">
1289
- {@render titleSnippet()}
1290
- </div>
1291
- {/if}
1553
+ <!-- 展开按钮:expandIcon 自定义图标覆盖默认三角。gridTab 为 grid 模式下的 roving tabindex(非 grid 时传 undefined)。 -->
1554
+ {#snippet expandButton(record: T, key: RowKey, gridTab: number | undefined)}
1555
+ <button
1556
+ type="button"
1557
+ class="cd-table-expand-icon"
1558
+ class:cd-table-expandedIcon-show={expandedSet.has(key)}
1559
+ aria-expanded={expandedSet.has(key)}
1560
+ aria-label={expandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
1561
+ tabindex={gridTab}
1562
+ onclick={(e) => {
1563
+ e.stopPropagation();
1564
+ toggleExpand(record);
1565
+ }}
1566
+ >
1567
+ {#if expandIcon}
1568
+ {@render expandIcon({ expanded: expandedSet.has(key), record })}
1569
+ {:else}
1570
+ <IconChevronRight size="small" aria-hidden="true" />
1571
+ {/if}
1572
+ </button>
1573
+ {/snippet}
1574
+
1575
+ <!-- 最外层 .semi-table-wrapper(含方向 ltr/rtl),对齐 Semi 分层 -->
1292
1576
  <div
1293
- class="cd-table-wrap"
1294
- class:cd-table-wrap--virtual={virtualized}
1295
- class:cd-table-wrap--scroll-body={scrollBody}
1296
- bind:this={scrollEl}
1297
- style={scrollWrapStyle}
1577
+ class="cd-table-wrapper cd-table-wrapper-{direction} {className ?? ''}"
1578
+ class:cd-table-wrapper-rtl={direction === 'rtl'}
1579
+ data-column-fixed={hasFixed ? 'true' : undefined}
1580
+ dir={direction}
1581
+ {style}
1582
+ bind:this={wrapperEl}
1298
1583
  >
1584
+ {#if titleSnippet || title}
1585
+ <div class="cd-table-title">
1586
+ {#if titleSnippet}{@render titleSnippet()}{:else}{title}{/if}
1587
+ </div>
1588
+ {/if}
1589
+ <!-- .semi-table-container:承载 body + footer -->
1590
+ <div class="cd-table-container">
1591
+ <div
1592
+ class="cd-table-body"
1593
+ class:cd-table-body-virtual={virtualized}
1594
+ class:cd-table-body-scroll={scrollBody}
1595
+ bind:this={scrollEl}
1596
+ style={scrollWrapStyle}
1597
+ >
1299
1598
  <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
1300
1599
  <!-- role=grid 是交互容器;tabindex=-1 仅作虚拟化焦点回收落点,不进 Tab 序列 -->
1301
1600
  <table
@@ -1309,26 +1608,43 @@
1309
1608
  tabindex={gridEnabled ? -1 : undefined}
1310
1609
  onkeydown={gridEnabled ? onGridKeydown : undefined}
1311
1610
  >
1611
+ <!-- ColGroup:对齐 Semi,每列一个 <col>,selection/expand 列带对应 class -->
1612
+ <colgroup class="cd-table-colgroup">
1613
+ {#if expandAsColumn}
1614
+ <col class="cd-table-column-expand" style="width:{LEADING_W}px" />
1615
+ {/if}
1616
+ {#if hasSelection}
1617
+ <col class="cd-table-column-selection" style="width:{selectionColWidth}px" />
1618
+ {/if}
1619
+ {#each leafColumns as col, i (colKeyOf(col, i))}
1620
+ <col class={col.className} style={colGroupStyle(col, i)} />
1621
+ {/each}
1622
+ </colgroup>
1312
1623
  {#if showHeader}
1313
1624
  {@const headerRowProps = onHeaderRow ? onHeaderRow(columns, 0) : undefined}
1314
- <thead
1315
- class="cd-table__head"
1316
- class:cd-table__head--sticky={isStickyHead}
1625
+ <svelte:element
1626
+ this={tagThead}
1627
+ class="cd-table-thead"
1628
+ class:cd-table-thead-sticky={isStickyHead}
1317
1629
  style={isStickyHead && stickyOffset > 0 ? `top:${stickyOffset}px` : undefined}
1318
1630
  >
1319
- <tr
1631
+ <svelte:element
1632
+ this={tagHeaderRow}
1320
1633
  role={gridEnabled ? 'row' : undefined}
1321
1634
  aria-rowindex={gridEnabled ? 1 : undefined}
1322
- class={headerRowProps?.className ?? undefined}
1635
+ class="cd-table-row {headerRowProps?.className ?? ''}"
1323
1636
  style={headerRowProps?.style ?? undefined}
1324
1637
  onclick={headerRowProps?.onClick ?? undefined}
1638
+ onmouseenter={headerRowProps?.onMouseEnter ?? undefined}
1639
+ onmouseleave={headerRowProps?.onMouseLeave ?? undefined}
1325
1640
  >
1326
- {#if hasExpand}
1641
+ {#if expandAsColumn}
1327
1642
  {@const gc = 0}
1328
1643
  <th
1329
- class="cd-table__cell cd-table__cell--expand {leadingFixedClass}"
1644
+ rowspan={hasHeaderMerge ? headerDepth : undefined}
1645
+ class="cd-table-row-head cd-table-column-expand {leadingFixedClass}"
1330
1646
  scope="col"
1331
- style={leadingStyle('expand')}
1647
+ style={mergeHeaderStyle(leadingStyle('expand'))}
1332
1648
  role={gridEnabled ? 'columnheader' : undefined}
1333
1649
  id={gridEnabled ? cellId(-1, gc) : undefined}
1334
1650
  tabindex={rovingTabindex(-1, gc)}
@@ -1337,13 +1653,14 @@
1337
1653
  ></th>
1338
1654
  {/if}
1339
1655
  {#if hasSelection}
1340
- {@const gc = hasExpand ? 1 : 0}
1656
+ {@const gc = expandAsColumn ? 1 : 0}
1341
1657
  {@const isRadio = rowSelection?.type === 'radio'}
1342
1658
  {@const showSelectAll = !isRadio && !rowSelection?.hideSelectAll}
1343
1659
  <th
1344
- class="cd-table__cell cd-table__cell--selection {selectionFixedClass || leadingFixedClass}"
1660
+ rowspan={hasHeaderMerge ? headerDepth : undefined}
1661
+ class="cd-table-row-head cd-table-column-selection {selectionFixedClass || leadingFixedClass}"
1345
1662
  scope="col"
1346
- style={selectionColStyle ?? leadingStyle('selection')}
1663
+ style={mergeHeaderStyle(selectionColStyle ?? leadingStyle('selection'))}
1347
1664
  role={gridEnabled ? 'columnheader' : undefined}
1348
1665
  id={gridEnabled ? cellId(-1, gc) : undefined}
1349
1666
  tabindex={rovingTabindex(-1, gc)}
@@ -1351,32 +1668,73 @@
1351
1668
  onfocusin={gridEnabled ? () => syncFocusCoord(-1, gc) : undefined}
1352
1669
  >
1353
1670
  {#if showSelectAll}
1354
- <input
1355
- type="checkbox"
1356
- class="cd-table__checkbox"
1357
- aria-label={loc().t('Table.selectAll')}
1358
- checked={headerSelect.checked}
1359
- tabindex={childTabindex(-1, gc)}
1360
- {@attach indeterminate(headerSelect.indeterminate)}
1361
- onchange={onToggleAll}
1362
- />
1671
+ <span class="cd-table-selection-wrap">
1672
+ <input
1673
+ type="checkbox"
1674
+ class="cd-table-selection-checkbox"
1675
+ aria-label={loc().t('Table.selectAll')}
1676
+ checked={headerSelect.checked}
1677
+ tabindex={childTabindex(-1, gc)}
1678
+ {@attach indeterminate(headerSelect.indeterminate)}
1679
+ onchange={onToggleAll}
1680
+ />
1681
+ </span>
1363
1682
  {/if}
1364
1683
  </th>
1365
1684
  {/if}
1366
- {#each columns as col, i (colKeyOf(col, i))}
1367
- {@const gc = (hasExpand ? 1 : 0) + (hasSelection ? 1 : 0) + i}
1685
+ {#if !hasHeaderMerge}
1686
+ {#each leafColumns as col, i (colKeyOf(col, i))}
1687
+ {@render leafHeaderCell(col, i, 1)}
1688
+ {/each}
1689
+ {:else}
1690
+ <!-- 合并模式首行:expand/selection th 已 rowspan 跨满,其后接 headerRows[0] -->
1691
+ {#each headerRows[0] ?? [] as hc (hc.isLeaf ? colKeyOf(hc.col, hc.leafIndex) : `g-${hc.col.title}-${hc.leafIndex}`)}
1692
+ {@render headerMergeCell(hc)}
1693
+ {/each}
1694
+ {/if}
1695
+ </svelte:element>
1696
+ {#if hasHeaderMerge}
1697
+ {#each headerRows.slice(1) as hrow, ri (ri)}
1698
+ <tr class="cd-table-row">
1699
+ {#each hrow as hc (hc.isLeaf ? colKeyOf(hc.col, hc.leafIndex) : `g-${hc.col.title}-${hc.leafIndex}`)}
1700
+ {@render headerMergeCell(hc)}
1701
+ {/each}
1702
+ </tr>
1703
+ {/each}
1704
+ {/if}
1705
+ </svelte:element>
1706
+ {/if}
1707
+ {#snippet headerMergeCell(hc: HeaderCell)}
1708
+ {#if hc.isLeaf}
1709
+ {@render leafHeaderCell(hc.col, hc.leafIndex, hc.rowSpan)}
1710
+ {:else}
1711
+ <th
1712
+ class="cd-table-row-head cd-table-align-{alignOf(hc.col)}"
1713
+ class:cd-table-row-cell-ellipsis={hc.col.ellipsis}
1714
+ scope="colgroup"
1715
+ colspan={hc.colSpan}
1716
+ role={gridEnabled ? 'columnheader' : undefined}
1717
+ style={mergeHeaderStyle(undefined)}
1718
+ >
1719
+ <span class="cd-table-row-head-title">{hc.col.title}</span>
1720
+ </th>
1721
+ {/if}
1722
+ {/snippet}
1723
+ {#snippet leafHeaderCell(col: ColumnDef<T>, i: number, thRowSpan: number)}
1724
+ {@const gc = (expandAsColumn ? 1 : 0) + (hasSelection ? 1 : 0) + i}
1368
1725
  {@const sortable = !!col.sorter}
1369
1726
  {@const colKey = colKeyOf(col, i)}
1370
1727
  {@const hasFilter = !!col.filters && col.filters.length > 0}
1371
1728
  {@const resizable = !!col.resizable}
1372
1729
  <th
1373
- class="cd-table__cell cd-table__cell--head cd-table__cell--{alignOf(col)} {fixedCellClass(i)}"
1374
- class:cd-table__cell--ellipsis={col.ellipsis}
1375
- class:cd-table__cell--has-filter={hasFilter}
1376
- class:cd-table__cell--resizable={resizable}
1377
- class:cd-table__cell--resizing={resizingKey === colKey}
1730
+ rowspan={thRowSpan > 1 ? thRowSpan : undefined}
1731
+ class="cd-table-row-head cd-table-align-{alignOf(col)} {fixedCellClass(i)}"
1732
+ class:cd-table-row-cell-ellipsis={col.ellipsis}
1733
+ class:cd-table-row-head-has-filter={hasFilter}
1734
+ class:cd-table-row-head-resizable={resizable}
1735
+ class:resizing={resizingKey === colKey}
1378
1736
  scope="col"
1379
- style={cellStyle(col, i)}
1737
+ style={mergeHeaderStyle(cellStyle(col, i))}
1380
1738
  aria-sort={sortable ? ariaSortFor(col, i) : undefined}
1381
1739
  role={gridEnabled ? 'columnheader' : undefined}
1382
1740
  id={gridEnabled ? cellId(-1, gc) : undefined}
@@ -1388,43 +1746,29 @@
1388
1746
  {@const order = col.sortOrder !== undefined ? col.sortOrder : (currentSort.key === colKeyOf(col, i) ? currentSort.order : null)}
1389
1747
  <button
1390
1748
  type="button"
1391
- class="cd-table__sort-btn"
1749
+ class="cd-table-column-sorter-wrapper"
1392
1750
  tabindex={childTabindex(-1, gc)}
1393
1751
  onclick={() => onSort(col, i)}
1394
1752
  >
1395
- <span class="cd-table__title">{col.title}</span>
1396
- <span class="cd-table__sort-icons" aria-hidden="true">
1397
- <svg
1398
- class="cd-table__sort-up"
1399
- class:cd-table__sort--active={order === 'ascend'}
1400
- viewBox="0 0 8 5"
1401
- width="8"
1402
- height="5"
1403
- focusable="false"
1404
- >
1405
- <path fill="currentColor" d="M4 0l4 5H0z" />
1406
- </svg>
1407
- <svg
1408
- class="cd-table__sort-down"
1409
- class:cd-table__sort--active={order === 'descend'}
1410
- viewBox="0 0 8 5"
1411
- width="8"
1412
- height="5"
1413
- focusable="false"
1414
- >
1415
- <path fill="currentColor" d="M4 5L0 0h8z" />
1416
- </svg>
1753
+ <span class="cd-table-row-head-title">{col.title}</span>
1754
+ <span class="cd-table-column-sorter" aria-hidden="true">
1755
+ <span class="cd-table-column-sorter-up" class:on={order === 'ascend'}>
1756
+ <IconCaretup size="small" />
1757
+ </span>
1758
+ <span class="cd-table-column-sorter-down" class:on={order === 'descend'}>
1759
+ <IconCaretdown size="small" />
1760
+ </span>
1417
1761
  </span>
1418
1762
  </button>
1419
1763
  {:else}
1420
- <span class="cd-table__title">{col.title}</span>
1764
+ <span class="cd-table-row-head-title">{col.title}</span>
1421
1765
  {/if}
1422
1766
 
1423
1767
  {#if hasFilter}
1424
1768
  <button
1425
1769
  type="button"
1426
- class="cd-table__filter-btn"
1427
- class:cd-table__filter-btn--active={isEffectivelyFiltered(col, colKey)}
1770
+ class="cd-table-column-filter"
1771
+ class:on={isEffectivelyFiltered(col, colKey)}
1428
1772
  aria-label={loc().t('Table.filter')}
1429
1773
  aria-expanded={openFilterKey === colKey}
1430
1774
  tabindex={childTabindex(-1, gc)}
@@ -1434,21 +1778,19 @@
1434
1778
  openFilterKey = openFilterKey === colKey ? null : colKey;
1435
1779
  }}
1436
1780
  >
1437
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
1438
- <path fill="currentColor" d="M2 3h12l-4.5 5.5V13L6.5 11V8.5L2 3Z" />
1439
- </svg>
1781
+ <IconFilter size="small" aria-hidden="true" />
1440
1782
  </button>
1441
1783
  {#if openFilterKey === colKey && filterTriggers[colKey]}
1442
1784
  {@const filterMultiple = col.filterMultiple !== false}
1443
1785
  <div
1444
- class="cd-table__filter-panel"
1786
+ class="cd-table-column-filter-dropdown"
1445
1787
  use:floating={{ trigger: filterTriggers[colKey], placement: 'bottomEnd', autoAdjust: true, offset: 4, getContainer: getPopupContainer }}
1446
1788
  bind:this={filterPanelEl}
1447
1789
  >
1448
- <ul class="cd-table__filter-list">
1790
+ <ul class="cd-table-column-filter-list">
1449
1791
  {#each col.filters ?? [] as f (f.value)}
1450
- <li class="cd-table__filter-option">
1451
- <label class="cd-table__filter-label">
1792
+ <li class="cd-table-column-filter-item">
1793
+ <label class="cd-table-column-filter-label">
1452
1794
  {#if filterMultiple}
1453
1795
  <input
1454
1796
  type="checkbox"
@@ -1471,11 +1813,11 @@
1471
1813
  </li>
1472
1814
  {/each}
1473
1815
  </ul>
1474
- <div class="cd-table__filter-actions">
1475
- <button type="button" class="cd-table__filter-reset" onclick={() => resetFilter(colKey)}>
1816
+ <div class="cd-table-column-filter-actions">
1817
+ <button type="button" class="cd-table-column-filter-reset" onclick={() => resetFilter(colKey)}>
1476
1818
  {loc().t('Table.filterReset')}
1477
1819
  </button>
1478
- <button type="button" class="cd-table__filter-confirm" onclick={() => (openFilterKey = null)}>
1820
+ <button type="button" class="cd-table-column-filter-confirm" onclick={() => (openFilterKey = null)}>
1479
1821
  {loc().t('Table.filterConfirm')}
1480
1822
  </button>
1481
1823
  </div>
@@ -1485,7 +1827,7 @@
1485
1827
 
1486
1828
  {#if resizable}
1487
1829
  <span
1488
- class="cd-table__resize-handle"
1830
+ class="react-resizable-handle"
1489
1831
  role="separator"
1490
1832
  aria-orientation="vertical"
1491
1833
  aria-label={loc().t('Table.resizeColumn')}
@@ -1494,15 +1836,12 @@
1494
1836
  ></span>
1495
1837
  {/if}
1496
1838
  </th>
1497
- {/each}
1498
- </tr>
1499
- </thead>
1500
- {/if}
1501
- <tbody class="cd-table__body">
1839
+ {/snippet}
1840
+ <svelte:element this={tagTbody} class="cd-table-tbody">
1502
1841
  {#if visibleRows.length === 0}
1503
- <tr class="cd-table__row cd-table__row--empty" role={gridEnabled ? 'row' : undefined}>
1842
+ <tr class="cd-table-row cd-table-row-placeholder" role={gridEnabled ? 'row' : undefined}>
1504
1843
  <td
1505
- class="cd-table__cell cd-table__cell--empty"
1844
+ class="cd-table-row-cell cd-table-placeholder"
1506
1845
  colspan={colSpan}
1507
1846
  role={gridEnabled ? 'gridcell' : undefined}
1508
1847
  aria-colindex={gridEnabled ? 1 : undefined}
@@ -1515,8 +1854,44 @@
1515
1854
  {#each groupedDisplayRows as groupRow (groupRow.type === 'group' ? `__group__${(groupRow as GroupRow).groupKey}` : (groupRow as DataDisplayRow).key)}
1516
1855
  {#if groupRow.type === 'group'}
1517
1856
  {@const gRow = groupRow as GroupRow}
1518
- <tr class="cd-table__row cd-table__row--group-header" role={gridEnabled ? 'row' : undefined}>
1519
- <td class="cd-table__cell cd-table__cell--group-header" colspan={colSpan}>
1857
+ {@const groupedRowProps = onGroupedRow ? onGroupedRow(gRow.group, gRow.groupIndex) : undefined}
1858
+ <tr
1859
+ class="cd-table-row cd-table-row-section {groupedRowProps?.className ?? ''}"
1860
+ class:cd-table-row-section-clickable={clickGroupedRowToExpand}
1861
+ role={gridEnabled ? 'row' : undefined}
1862
+ style={groupedRowProps?.style ?? undefined}
1863
+ ondblclick={groupedRowProps?.onDoubleClick ?? undefined}
1864
+ onmouseenter={groupedRowProps?.onMouseEnter ?? undefined}
1865
+ onmouseleave={groupedRowProps?.onMouseLeave ?? undefined}
1866
+ >
1867
+ <td
1868
+ class="cd-table-row-cell cd-table-row-cell-section"
1869
+ colspan={colSpan}
1870
+ role={clickGroupedRowToExpand ? 'button' : undefined}
1871
+ tabindex={clickGroupedRowToExpand ? 0 : undefined}
1872
+ aria-expanded={clickGroupedRowToExpand ? gRow.expanded : undefined}
1873
+ onclick={(e) => {
1874
+ if (clickGroupedRowToExpand) toggleGroupExpand(gRow.groupKey);
1875
+ groupedRowProps?.onClick?.(e);
1876
+ }}
1877
+ onkeydown={clickGroupedRowToExpand
1878
+ ? (e) => {
1879
+ if (e.key === 'Enter' || e.key === ' ') {
1880
+ e.preventDefault();
1881
+ toggleGroupExpand(gRow.groupKey);
1882
+ }
1883
+ }
1884
+ : undefined}
1885
+ >
1886
+ {#if clickGroupedRowToExpand}
1887
+ <span
1888
+ class="cd-table-expand-icon"
1889
+ class:cd-table-expandedIcon-show={gRow.expanded}
1890
+ aria-hidden="true"
1891
+ >
1892
+ <IconChevronRight size="small" aria-hidden="true" />
1893
+ </span>
1894
+ {/if}
1520
1895
  {#if renderGroupSection}
1521
1896
  {@render renderGroupSection({ groupKey: gRow.groupKey, group: gRow.group })}
1522
1897
  {:else}
@@ -1535,13 +1910,13 @@
1535
1910
  {@const rowDisabled = disabledSet.has(key)}
1536
1911
  {@const extra = rowClassName ? rowClassName(record, index) : ''}
1537
1912
  {@const clickable = !!onRowClick || expandRowByClick}
1538
- {@const rowProps = onRow ? onRow(record, index) : undefined}
1539
- <tr
1540
- class="cd-table__row {extra} {rowProps?.className ?? ''}"
1541
- class:cd-table__row--selected={selected}
1542
- class:cd-table__row--stripe={stripe && index % 2 === 1}
1543
- class:cd-table__row--clickable={clickable}
1544
- class:cd-table__row--child={treeEnabled && row.level > 0}
1913
+ {@const rowProps = onRow ? onRow(record, index, { disabled: rowDisabled, selected }) : undefined}
1914
+ <svelte:element this={tagBodyRow}
1915
+ class="cd-table-row {extra} {rowProps?.className ?? ''}"
1916
+ class:cd-table-row-selected={selected}
1917
+ class:cd-table-row-stripe={stripe && index % 2 === 1}
1918
+ class:cd-table-row-clickable={clickable}
1919
+ class:cd-table-row-child={treeEnabled && row.level > 0}
1545
1920
  role={gridEnabled ? 'row' : undefined}
1546
1921
  style={rowProps?.style ?? undefined}
1547
1922
  onclick={(e) => {
@@ -1551,41 +1926,32 @@
1551
1926
  if (rowProps?.onClick) rowProps.onClick(e);
1552
1927
  }}
1553
1928
  ondblclick={rowProps?.onDoubleClick ?? undefined}
1929
+ onmouseenter={rowProps?.onMouseEnter ?? undefined}
1930
+ onmouseleave={rowProps?.onMouseLeave ?? undefined}
1554
1931
  >
1555
- {#if hasExpand}
1556
- {@const gc = 0}
1932
+ {#if expandAsColumn}
1557
1933
  <td
1558
- class="cd-table__cell cd-table__cell--expand {leadingFixedClass}"
1934
+ class="cd-table-row-cell cd-table-column-expand {leadingFixedClass}"
1559
1935
  style={leadingStyle('expand')}
1560
1936
  role={gridEnabled ? 'gridcell' : undefined}
1561
1937
  >
1562
1938
  {#if canExpand(record)}
1563
- <button
1564
- type="button"
1565
- class="cd-table__expand-btn"
1566
- class:cd-table__expand-btn--open={expandedSet.has(key)}
1567
- aria-expanded={expandedSet.has(key)}
1568
- aria-label={expandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
1569
- onclick={(e) => { e.stopPropagation(); toggleExpand(record); }}
1570
- >
1571
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
1572
- <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M6 4l4 4-4 4" />
1573
- </svg>
1574
- </button>
1939
+ {@render expandButton(record, key, undefined)}
1575
1940
  {/if}
1576
1941
  </td>
1577
1942
  {/if}
1578
1943
  {#if hasSelection}
1579
1944
  {@const isRadio = rowSelection?.type === 'radio'}
1580
1945
  <td
1581
- class="cd-table__cell cd-table__cell--selection {selectionFixedClass || leadingFixedClass}"
1946
+ class="cd-table-row-cell cd-table-column-selection {selectionFixedClass || leadingFixedClass}"
1582
1947
  style={selectionColStyle ?? leadingStyle('selection')}
1583
1948
  role={gridEnabled ? 'gridcell' : undefined}
1584
1949
  >
1950
+ <span class="cd-table-selection-wrap" class:cd-table-selection-disabled={rowDisabled}>
1585
1951
  {#if isRadio}
1586
1952
  <input
1587
1953
  type="radio"
1588
- class="cd-table__checkbox"
1954
+ class="cd-table-selection-checkbox"
1589
1955
  aria-label={loc().t('Table.selectRow')}
1590
1956
  checked={selected}
1591
1957
  disabled={rowDisabled}
@@ -1595,7 +1961,7 @@
1595
1961
  {:else}
1596
1962
  <input
1597
1963
  type="checkbox"
1598
- class="cd-table__checkbox"
1964
+ class="cd-table-selection-checkbox"
1599
1965
  aria-label={loc().t('Table.selectRow')}
1600
1966
  checked={selected}
1601
1967
  disabled={rowDisabled}
@@ -1604,52 +1970,71 @@
1604
1970
  onchange={() => onToggleRow(record)}
1605
1971
  />
1606
1972
  {/if}
1973
+ </span>
1607
1974
  </td>
1608
1975
  {/if}
1609
- {#each columns as col, i (colKeyOf(col, i))}
1976
+ {#each leafColumns as col, i (colKeyOf(col, i))}
1610
1977
  {@const value = cellValue(col, record)}
1611
1978
  <td
1612
- class="cd-table__cell cd-table__cell--{alignOf(col)} {fixedCellClass(i)}"
1613
- class:cd-table__cell--ellipsis={col.ellipsis}
1979
+ class="cd-table-row-cell cd-table-align-{alignOf(col)} {fixedCellClass(i)}"
1980
+ class:cd-table-row-cell-ellipsis={col.ellipsis}
1614
1981
  style={cellStyle(col, i)}
1615
1982
  >
1616
- {#if treeEnabled && i === 0}
1617
- <span class="cd-table__tree-indent" style="inline-size:{row.level * indentSize}px" aria-hidden="true"></span>
1618
- {#if row.hasChildren}
1619
- <button
1620
- type="button"
1621
- class="cd-table__tree-toggle"
1622
- class:cd-table__tree-toggle--open={treeExpandedSet.has(key)}
1623
- aria-expanded={treeExpandedSet.has(key)}
1624
- aria-label={treeExpandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
1625
- onclick={(e) => { e.stopPropagation(); toggleTreeExpand(record); }}
1626
- >
1627
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
1628
- <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M6 4l4 4-4 4" />
1629
- </svg>
1630
- </button>
1631
- {:else}
1632
- <span class="cd-table__tree-toggle cd-table__tree-toggle--placeholder" aria-hidden="true"></span>
1983
+ {#snippet gExpandMaterial()}
1984
+ {#if hasExpand && !expandAsColumn && i === 0}
1985
+ <span class="cd-table-expand-icon-cell">
1986
+ {#if canExpand(record)}
1987
+ {@render expandButton(record, key, undefined)}
1988
+ {:else}
1989
+ <span class="cd-table-expand-icon cd-table-expand-icon-placeholder" aria-hidden="true"></span>
1990
+ {/if}
1991
+ </span>
1633
1992
  {/if}
1634
- {/if}
1635
- {#if col.render}
1636
- {@render col.render({ value, record, index })}
1993
+ {#if treeEnabled && i === 0}
1994
+ {#if row.hasChildren}
1995
+ <button
1996
+ type="button"
1997
+ class="cd-table-expand-icon"
1998
+ class:cd-table-expandedIcon-show={treeExpandedSet.has(key)}
1999
+ aria-expanded={treeExpandedSet.has(key)}
2000
+ aria-label={treeExpandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
2001
+ onclick={(e) => { e.stopPropagation(); toggleTreeExpand(record); }}
2002
+ >
2003
+ <IconTreeTriangleRight size="small" aria-hidden="true" />
2004
+ </button>
2005
+ {:else}
2006
+ <span class="cd-table-expand-icon cd-table-expand-icon-placeholder" aria-hidden="true"></span>
2007
+ {/if}
2008
+ {/if}
2009
+ {/snippet}
2010
+ {#snippet gIndentMaterial()}
2011
+ {#if treeEnabled && i === 0}
2012
+ <span class="cd-table-row-indent" style="inline-size:{row.level * indentSize}px" aria-hidden="true"></span>
2013
+ {/if}
2014
+ {/snippet}
2015
+ {#if col.useFullRender && col.render}
2016
+ {@render col.render({ value, record, index, expandIcon: gExpandMaterial, indentText: gIndentMaterial })}
1637
2017
  {:else}
1638
- {cellText(value)}
2018
+ {#if i === 0}{@render gIndentMaterial()}{@render gExpandMaterial()}{/if}
2019
+ {#if col.render}
2020
+ {@render col.render({ value, record, index })}
2021
+ {:else}
2022
+ {cellText(value)}
2023
+ {/if}
1639
2024
  {/if}
1640
2025
  </td>
1641
2026
  {/each}
1642
- </tr>
2027
+ </svelte:element>
1643
2028
  {#if hasExpand && canExpand(record)}
1644
2029
  {#if keepDOM}
1645
- <tr class="cd-table__row cd-table__row--expanded" role={gridEnabled ? 'row' : undefined} style={expandedSet.has(key) ? undefined : 'display:none'}>
1646
- <td class="cd-table__cell cd-table__cell--expanded-content" colspan={colSpan} role={gridEnabled ? 'gridcell' : undefined} aria-colindex={gridEnabled ? 1 : undefined}>
2030
+ <tr class="cd-table-row cd-table-row-expand" role={gridEnabled ? 'row' : undefined} style={expandedSet.has(key) ? undefined : 'display:none'}>
2031
+ <td class="cd-table-row-cell cd-table-row-cell-expanded-content" colspan={colSpan} role={gridEnabled ? 'gridcell' : undefined} aria-colindex={gridEnabled ? 1 : undefined}>
1647
2032
  {@render expandable!.expandedRowRender({ record, index })}
1648
2033
  </td>
1649
2034
  </tr>
1650
2035
  {:else if expandedSet.has(key)}
1651
- <tr class="cd-table__row cd-table__row--expanded" role={gridEnabled ? 'row' : undefined}>
1652
- <td class="cd-table__cell cd-table__cell--expanded-content" colspan={colSpan} role={gridEnabled ? 'gridcell' : undefined} aria-colindex={gridEnabled ? 1 : undefined}>
2036
+ <tr class="cd-table-row cd-table-row-expand" role={gridEnabled ? 'row' : undefined}>
2037
+ <td class="cd-table-row-cell cd-table-row-cell-expanded-content" colspan={colSpan} role={gridEnabled ? 'gridcell' : undefined} aria-colindex={gridEnabled ? 1 : undefined}>
1653
2038
  {@render expandable!.expandedRowRender({ record, index })}
1654
2039
  </td>
1655
2040
  </tr>
@@ -1659,7 +2044,7 @@
1659
2044
  {/each}
1660
2045
  {:else}
1661
2046
  {#if virtualized && vTopPad > 0}
1662
- <tr class="cd-table__row cd-table__row--spacer" aria-hidden="true">
2047
+ <tr class="cd-table-row cd-table-row-spacer" aria-hidden="true">
1663
2048
  <td colspan={colSpan} style="block-size:{vTopPad}px; padding:0; border:0"></td>
1664
2049
  </tr>
1665
2050
  {/if}
@@ -1673,13 +2058,13 @@
1673
2058
  {@const rowDisabled = disabledSet.has(key)}
1674
2059
  {@const extra = rowClassName ? rowClassName(record, index) : ''}
1675
2060
  {@const clickable = !!onRowClick || expandRowByClick}
1676
- {@const rowProps = onRow ? onRow(record, index) : undefined}
1677
- <tr
1678
- class="cd-table__row {extra} {rowProps?.className ?? ''}"
1679
- class:cd-table__row--selected={selected}
1680
- class:cd-table__row--stripe={stripe && index % 2 === 1}
1681
- class:cd-table__row--clickable={clickable}
1682
- class:cd-table__row--child={treeEnabled && row.level > 0}
2061
+ {@const rowProps = onRow ? onRow(record, index, { disabled: rowDisabled, selected }) : undefined}
2062
+ <svelte:element this={tagBodyRow}
2063
+ class="cd-table-row {extra} {rowProps?.className ?? ''}"
2064
+ class:cd-table-row-selected={selected}
2065
+ class:cd-table-row-stripe={stripe && index % 2 === 1}
2066
+ class:cd-table-row-clickable={clickable}
2067
+ class:cd-table-row-child={treeEnabled && row.level > 0}
1683
2068
  role={gridEnabled ? 'row' : undefined}
1684
2069
  aria-rowindex={gridEnabled ? gridRow + 2 : undefined}
1685
2070
  aria-selected={gridEnabled && hasSelection ? selected : undefined}
@@ -1691,11 +2076,13 @@
1691
2076
  if (rowProps?.onClick) rowProps.onClick(e);
1692
2077
  }}
1693
2078
  ondblclick={rowProps?.onDoubleClick ?? undefined}
2079
+ onmouseenter={rowProps?.onMouseEnter ?? undefined}
2080
+ onmouseleave={rowProps?.onMouseLeave ?? undefined}
1694
2081
  >
1695
- {#if hasExpand}
2082
+ {#if expandAsColumn}
1696
2083
  {@const gc = 0}
1697
2084
  <td
1698
- class="cd-table__cell cd-table__cell--expand {leadingFixedClass}"
2085
+ class="cd-table-row-cell cd-table-column-expand {leadingFixedClass}"
1699
2086
  style={leadingStyle('expand')}
1700
2087
  role={gridEnabled ? 'gridcell' : undefined}
1701
2088
  id={gridEnabled ? cellId(gridRow, gc) : undefined}
@@ -1704,30 +2091,15 @@
1704
2091
  onfocusin={gridEnabled ? () => syncFocusCoord(gridRow, gc) : undefined}
1705
2092
  >
1706
2093
  {#if canExpand(record)}
1707
- <button
1708
- type="button"
1709
- class="cd-table__expand-btn"
1710
- class:cd-table__expand-btn--open={expandedSet.has(key)}
1711
- aria-expanded={expandedSet.has(key)}
1712
- aria-label={expandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
1713
- tabindex={childTabindex(gridRow, gc)}
1714
- onclick={(e) => {
1715
- e.stopPropagation();
1716
- toggleExpand(record);
1717
- }}
1718
- >
1719
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
1720
- <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M6 4l4 4-4 4" />
1721
- </svg>
1722
- </button>
2094
+ {@render expandButton(record, key, childTabindex(gridRow, gc))}
1723
2095
  {/if}
1724
2096
  </td>
1725
2097
  {/if}
1726
2098
  {#if hasSelection}
1727
- {@const gc = hasExpand ? 1 : 0}
2099
+ {@const gc = expandAsColumn ? 1 : 0}
1728
2100
  {@const isRadio = rowSelection?.type === 'radio'}
1729
2101
  <td
1730
- class="cd-table__cell cd-table__cell--selection {selectionFixedClass || leadingFixedClass}"
2102
+ class="cd-table-row-cell cd-table-column-selection {selectionFixedClass || leadingFixedClass}"
1731
2103
  style={selectionColStyle ?? leadingStyle('selection')}
1732
2104
  role={gridEnabled ? 'gridcell' : undefined}
1733
2105
  id={gridEnabled ? cellId(gridRow, gc) : undefined}
@@ -1735,10 +2107,11 @@
1735
2107
  aria-colindex={gridEnabled ? gc + 1 : undefined}
1736
2108
  onfocusin={gridEnabled ? () => syncFocusCoord(gridRow, gc) : undefined}
1737
2109
  >
2110
+ <span class="cd-table-selection-wrap" class:cd-table-selection-disabled={rowDisabled}>
1738
2111
  {#if isRadio}
1739
2112
  <input
1740
2113
  type="radio"
1741
- class="cd-table__checkbox"
2114
+ class="cd-table-selection-checkbox"
1742
2115
  aria-label={loc().t('Table.selectRow')}
1743
2116
  checked={selected}
1744
2117
  disabled={rowDisabled}
@@ -1749,7 +2122,7 @@
1749
2122
  {:else}
1750
2123
  <input
1751
2124
  type="checkbox"
1752
- class="cd-table__checkbox"
2125
+ class="cd-table-selection-checkbox"
1753
2126
  aria-label={loc().t('Table.selectRow')}
1754
2127
  checked={selected}
1755
2128
  disabled={rowDisabled}
@@ -1759,62 +2132,87 @@
1759
2132
  onchange={() => onToggleRow(record)}
1760
2133
  />
1761
2134
  {/if}
2135
+ </span>
1762
2136
  </td>
1763
2137
  {/if}
1764
- {#each columns as col, i (colKeyOf(col, i))}
2138
+ {#each leafColumns as col, i (colKeyOf(col, i))}
1765
2139
  {@const value = cellValue(col, record)}
1766
- {@const gc = (hasExpand ? 1 : 0) + (hasSelection ? 1 : 0) + i}
1767
- {@const isRowHeader = gridEnabled && i === 0 && !hasSelection && !hasExpand}
2140
+ {@const gc = (expandAsColumn ? 1 : 0) + (hasSelection ? 1 : 0) + i}
2141
+ {@const isRowHeader = gridEnabled && i === 0 && !hasSelection && !expandAsColumn}
2142
+ {@const cellProps = col.onCell ? col.onCell(record, index) : undefined}
2143
+ {#if !(cellProps && (cellProps.colSpan === 0 || cellProps.rowSpan === 0))}
1768
2144
  <td
1769
- class="cd-table__cell cd-table__cell--{alignOf(col)} {fixedCellClass(i)}"
1770
- class:cd-table__cell--ellipsis={col.ellipsis}
1771
- style={cellStyle(col, i)}
2145
+ class="cd-table-row-cell cd-table-align-{alignOf(col)} {fixedCellClass(i)} {cellProps?.className ?? ''}"
2146
+ class:cd-table-row-cell-ellipsis={col.ellipsis}
2147
+ colspan={cellProps?.colSpan}
2148
+ rowspan={cellProps?.rowSpan}
2149
+ style={mergeCellStyle(cellStyle(col, i), cellProps?.style)}
1772
2150
  role={gridEnabled ? (isRowHeader ? 'rowheader' : 'gridcell') : undefined}
1773
2151
  id={gridEnabled ? cellId(gridRow, gc) : undefined}
1774
2152
  tabindex={rovingTabindex(gridRow, gc)}
1775
2153
  aria-colindex={gridEnabled ? gc + 1 : undefined}
1776
2154
  onfocusin={gridEnabled ? () => syncFocusCoord(gridRow, gc) : undefined}
1777
2155
  >
1778
- {#if treeEnabled && i === 0}
1779
- <span class="cd-table__tree-indent" style="inline-size:{row.level * indentSize}px" aria-hidden="true"></span>
1780
- {#if row.hasChildren}
1781
- <button
1782
- type="button"
1783
- class="cd-table__tree-toggle"
1784
- class:cd-table__tree-toggle--open={treeExpandedSet.has(key)}
1785
- aria-expanded={treeExpandedSet.has(key)}
1786
- aria-label={treeExpandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
1787
- tabindex={childTabindex(gridRow, gc)}
1788
- onclick={(e) => {
1789
- e.stopPropagation();
1790
- toggleTreeExpand(record);
1791
- }}
1792
- >
1793
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
1794
- <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M6 4l4 4-4 4" />
1795
- </svg>
1796
- </button>
1797
- {:else}
1798
- <span class="cd-table__tree-toggle cd-table__tree-toggle--placeholder" aria-hidden="true"></span>
2156
+ <!-- 展开图标 / 树形三角 / 缩进物料:useFullRender 时不自动前置,改注入 render 供自行摆放 -->
2157
+ {#snippet cellExpandMaterial()}
2158
+ {#if hasExpand && !expandAsColumn && i === 0}
2159
+ <span class="cd-table-expand-icon-cell">
2160
+ {#if canExpand(record)}
2161
+ {@render expandButton(record, key, childTabindex(gridRow, gc))}
2162
+ {:else}
2163
+ <span class="cd-table-expand-icon cd-table-expand-icon-placeholder" aria-hidden="true"></span>
2164
+ {/if}
2165
+ </span>
1799
2166
  {/if}
1800
- {/if}
1801
- {#if col.render}
1802
- {@render col.render({ value, record, index })}
2167
+ {#if treeEnabled && i === 0}
2168
+ {#if row.hasChildren}
2169
+ <button
2170
+ type="button"
2171
+ class="cd-table-expand-icon"
2172
+ class:cd-table-expandedIcon-show={treeExpandedSet.has(key)}
2173
+ aria-expanded={treeExpandedSet.has(key)}
2174
+ aria-label={treeExpandedSet.has(key) ? loc().t('Table.collapseRow') : loc().t('Table.expandRow')}
2175
+ tabindex={childTabindex(gridRow, gc)}
2176
+ onclick={(e) => {
2177
+ e.stopPropagation();
2178
+ toggleTreeExpand(record);
2179
+ }}
2180
+ >
2181
+ <IconTreeTriangleRight size="small" aria-hidden="true" />
2182
+ </button>
2183
+ {:else}
2184
+ <span class="cd-table-expand-icon cd-table-expand-icon-placeholder" aria-hidden="true"></span>
2185
+ {/if}
2186
+ {/if}
2187
+ {/snippet}
2188
+ {#snippet cellIndentMaterial()}
2189
+ {#if treeEnabled && i === 0}
2190
+ <span class="cd-table-row-indent" style="inline-size:{row.level * indentSize}px" aria-hidden="true"></span>
2191
+ {/if}
2192
+ {/snippet}
2193
+ {#if col.useFullRender && col.render}
2194
+ {@render col.render({ value, record, index, expandIcon: cellExpandMaterial, indentText: cellIndentMaterial })}
1803
2195
  {:else}
1804
- {cellText(value)}
2196
+ {#if i === 0}{@render cellIndentMaterial()}{@render cellExpandMaterial()}{/if}
2197
+ {#if col.render}
2198
+ {@render col.render({ value, record, index })}
2199
+ {:else}
2200
+ {cellText(value)}
2201
+ {/if}
1805
2202
  {/if}
1806
2203
  </td>
2204
+ {/if}
1807
2205
  {/each}
1808
- </tr>
2206
+ </svelte:element>
1809
2207
  {#if hasExpand && canExpand(record)}
1810
2208
  {#if keepDOM}
1811
2209
  <tr
1812
- class="cd-table__row cd-table__row--expanded"
2210
+ class="cd-table-row cd-table-row-expand"
1813
2211
  role={gridEnabled ? 'row' : undefined}
1814
2212
  style={expandedSet.has(key) ? undefined : 'display:none'}
1815
2213
  >
1816
2214
  <td
1817
- class="cd-table__cell cd-table__cell--expanded-content"
2215
+ class="cd-table-row-cell cd-table-row-cell-expanded-content"
1818
2216
  colspan={colSpan}
1819
2217
  role={gridEnabled ? 'gridcell' : undefined}
1820
2218
  aria-colindex={gridEnabled ? 1 : undefined}
@@ -1823,9 +2221,9 @@
1823
2221
  </td>
1824
2222
  </tr>
1825
2223
  {:else if expandedSet.has(key)}
1826
- <tr class="cd-table__row cd-table__row--expanded" role={gridEnabled ? 'row' : undefined}>
2224
+ <tr class="cd-table-row cd-table-row-expand" role={gridEnabled ? 'row' : undefined}>
1827
2225
  <td
1828
- class="cd-table__cell cd-table__cell--expanded-content"
2226
+ class="cd-table-row-cell cd-table-row-cell-expanded-content"
1829
2227
  colspan={colSpan}
1830
2228
  role={gridEnabled ? 'gridcell' : undefined}
1831
2229
  aria-colindex={gridEnabled ? 1 : undefined}
@@ -1837,345 +2235,390 @@
1837
2235
  {/if}
1838
2236
  {/each}
1839
2237
  {#if virtualized && vBottomPad > 0}
1840
- <tr class="cd-table__row cd-table__row--spacer" aria-hidden="true">
2238
+ <tr class="cd-table-row cd-table-row-spacer" aria-hidden="true">
1841
2239
  <td colspan={colSpan} style="block-size:{vBottomPad}px; padding:0; border:0"></td>
1842
2240
  </tr>
1843
2241
  {/if}
1844
2242
  {/if}
1845
2243
  {/if}
1846
- </tbody>
2244
+ </svelte:element>
1847
2245
  </table>
1848
-
1849
- {#if paginationEnabled && total > 0}
1850
- <div class="cd-table__pagination">
1851
- <Pagination
1852
- {total}
1853
- currentPage={currentPage}
1854
- {pageSize}
1855
- size={size === 'large' ? 'default' : size}
1856
- onChange={onPageChange}
1857
- />
2246
+ {#if loading}
2247
+ <div class="cd-table-loading" aria-hidden="true">
2248
+ <span class="cd-table-spinner"></span>
2249
+ </div>
2250
+ {/if}
1858
2251
  </div>
1859
- {/if}
2252
+ <!-- footer 在 .cd-table-container 内、body 之后(对齐 Semi) -->
2253
+ {#if footerSnippet || footer}
2254
+ <div class="cd-table-footer">
2255
+ {#if footerSnippet}{@render footerSnippet({ currentData: visibleRows })}{:else}{footer}{/if}
2256
+ </div>
2257
+ {/if}
2258
+ </div>
1860
2259
 
1861
- {#if loading}
1862
- <div class="cd-table__loading" aria-hidden="true">
1863
- <span class="cd-table__spinner"></span>
1864
- </div>
2260
+ {#if paginationEnabled && total > 0}
2261
+ {#if renderPagination}
2262
+ {@render renderPagination({ total, currentPage, pageSize, onChange: onPageChange })}
2263
+ {:else}
2264
+ <!-- 对齐 Semi Table 分页:左侧 range 文案(显示第 X-Y 条,共 N 条)+ 右侧 default 页码按钮。
2265
+ 表格 size(行高密度)不影响分页器,故分页固定 default 尺寸(不透传表格 size)。 -->
2266
+ <div class="cd-table-pagination-outer">
2267
+ <span class="cd-table-pagination-total">{pageRangeText}</span>
2268
+ <Pagination
2269
+ {total}
2270
+ currentPage={currentPage}
2271
+ {pageSize}
2272
+ size="default"
2273
+ onChange={onPageChange}
2274
+ />
2275
+ </div>
2276
+ {/if}
1865
2277
  {/if}
1866
2278
  </div>
1867
-
1868
- {#if footerSnippet}
1869
- <div class="cd-table__footer">
1870
- {@render footerSnippet({ currentData: visibleRows })}
1871
- </div>
1872
- {/if}
2279
+ <!-- /.cd-table-wrapper -->
1873
2280
 
1874
2281
  <style>
1875
- .cd-table-wrap {
2282
+ /* ===== 严格对齐 Semi Design table.scss —— 消费 Semi 全名 token ===== */
2283
+
2284
+ /* 最外层容器:.semi-table-wrapper */
2285
+ .cd-table-wrapper {
1876
2286
  position: relative;
2287
+ box-sizing: border-box;
2288
+ margin: 0;
2289
+ padding: 0;
1877
2290
  inline-size: 100%;
1878
- overflow-x: auto;
2291
+ color: var(--cd-color-table-text-default);
2292
+ font-size: var(--cd-font-table-base-fontsize);
1879
2293
  }
1880
2294
 
1881
- /* 行虚拟滚动:容器自身纵向滚动,表头 sticky 固定于顶部 */
1882
- .cd-table-wrap--virtual {
1883
- overflow: auto;
2295
+ /* body 滚动容器:.semi-table-body(横向 + 纵向滚动区) */
2296
+ .cd-table-body {
2297
+ position: relative;
2298
+ inline-size: 100%;
2299
+ box-sizing: border-box;
2300
+ overflow-x: auto;
1884
2301
  }
1885
- /* 非虚拟化的可滚动表体(onScroll/onReachBottom):约束高度纵向滚动,表头 sticky */
1886
- .cd-table-wrap--scroll-body {
2302
+ .cd-table-body-virtual,
2303
+ .cd-table-body-scroll {
1887
2304
  overflow: auto;
1888
2305
  }
1889
- .cd-table__head--sticky th {
2306
+
2307
+ /* 吸顶表头:thead sticky */
2308
+ .cd-table-thead-sticky th {
1890
2309
  position: sticky;
1891
2310
  inset-block-start: 0;
1892
- /* 高于固定列单元格(z-index:3),确保横向固定列表头不盖过纵向 sticky 表头 */
1893
- z-index: 5;
2311
+ z-index: calc(var(--cd-z-table-fixed-column) + 1);
1894
2312
  }
1895
- /* spacer 占位行无内容、无交互,仅撑高 */
1896
- .cd-table__row--spacer:hover {
2313
+ .cd-table-row-spacer:hover {
1897
2314
  background: transparent;
1898
2315
  }
1899
2316
 
2317
+ /* 表格本体:.semi-table */
1900
2318
  .cd-table {
1901
2319
  inline-size: 100%;
1902
- border-collapse: collapse;
1903
- background: var(--cd-table-bg);
1904
- color: var(--cd-table-cell-text);
1905
- border-radius: var(--cd-table-radius);
1906
- font-size: var(--cd-font-size-body);
1907
- }
1908
- /* 固定列:用 fixed 布局让列宽精确生效,min-width 撑过容器以触发横滚 */
1909
- .cd-table--fixed {
2320
+ text-align: left;
2321
+ border-collapse: separate;
2322
+ border-spacing: 0;
2323
+ font-size: inherit;
2324
+ display: table;
2325
+ background: var(--cd-color-table-bg-default);
2326
+ }
2327
+ /* fixed 布局:固定列 / 列宽精确 */
2328
+ .cd-table-fixed {
1910
2329
  inline-size: auto;
1911
2330
  min-inline-size: 100%;
1912
2331
  table-layout: fixed;
1913
2332
  }
1914
2333
 
1915
- .cd-table__cell {
1916
- padding-block: var(--cd-table-cell-padding-y);
1917
- padding-inline: var(--cd-table-cell-padding-x);
2334
+ /* ===== 表头 thead ===== */
2335
+ .cd-table-thead > .cd-table-row > .cd-table-row-head {
2336
+ background-color: var(--cd-color-table-th-bg-default);
2337
+ color: var(--cd-color-table-th-text-default);
2338
+ font-weight: var(--cd-font-weight-bold, 600);
1918
2339
  text-align: left;
1919
2340
  vertical-align: middle;
1920
- border-block-end: 1px solid var(--cd-table-border-color);
1921
- }
1922
- .cd-table--small .cd-table__cell {
1923
- padding-block: var(--cd-table-cell-padding-y-small);
1924
- }
1925
- .cd-table--large .cd-table__cell {
1926
- padding-block: var(--cd-table-cell-padding-y-large);
1927
- }
1928
-
1929
- .cd-table__cell--head {
1930
- color: var(--cd-table-header-text);
1931
- background: var(--cd-table-header-bg);
1932
- font-weight: 600;
1933
- }
1934
- .cd-table__head th {
1935
- background: var(--cd-table-header-bg);
1936
- color: var(--cd-table-header-text);
1937
- font-weight: 600;
2341
+ overflow-wrap: break-word;
2342
+ position: relative;
2343
+ padding-inline: var(--cd-spacing-table-row-head-paddingx);
2344
+ padding-block: var(--cd-spacing-table-row-head-paddingy);
2345
+ border-block-end: var(--cd-width-table-header-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-th-border-default);
1938
2346
  }
1939
-
1940
- .cd-table__cell--center {
1941
- text-align: center;
2347
+ /* 点击排序表头:clickSort */
2348
+ .cd-table-row-head-clicksort {
2349
+ cursor: pointer;
1942
2350
  }
1943
- .cd-table__cell--right {
1944
- text-align: right;
2351
+ .cd-table-row-head-clicksort:hover {
2352
+ background-image: linear-gradient(0deg, var(--cd-color-table-th-clicksort-bg-hover), var(--cd-color-table-th-clicksort-bg-hover));
2353
+ background-color: var(--cd-color-table-cell-bg-hover);
1945
2354
  }
1946
- .cd-table__cell--selection {
1947
- inline-size: 48px;
2355
+ .cd-table-row-head.cd-table-column-selection {
1948
2356
  text-align: center;
1949
- white-space: nowrap;
1950
2357
  }
1951
- .cd-table__cell--expand {
1952
- inline-size: 48px;
2358
+ .cd-table-row-head-ellipsis,
2359
+ .cd-table-row-head-ellipsis .cd-table-row-head-title {
2360
+ overflow: hidden;
1953
2361
  white-space: nowrap;
1954
- text-align: center;
1955
- }
1956
- .cd-table__expand-btn {
1957
- display: inline-flex;
1958
- align-items: center;
1959
- justify-content: center;
1960
- padding: 0;
1961
- border: none;
1962
- background: transparent;
1963
- color: var(--cd-color-text-2);
1964
- cursor: pointer;
1965
- transition: transform var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
2362
+ text-overflow: ellipsis;
1966
2363
  }
1967
- .cd-table__expand-btn:hover {
1968
- color: var(--cd-color-text-0);
2364
+
2365
+ /* ===== 表体 tbody ===== */
2366
+ .cd-table-tbody {
2367
+ display: table-row-group;
1969
2368
  }
1970
- .cd-table__expand-btn:focus-visible {
1971
- outline: none;
1972
- box-shadow: var(--cd-focus-ring);
1973
- border-radius: var(--cd-border-radius-small);
2369
+ .cd-table-tbody > .cd-table-row {
2370
+ display: table-row;
2371
+ background-color: var(--cd-color-table-body-bg-default);
1974
2372
  }
1975
- .cd-table__expand-btn--open {
1976
- transform: rotate(90deg);
2373
+ .cd-table-tbody > .cd-table-row > .cd-table-row-cell {
2374
+ display: table-cell;
2375
+ overflow-wrap: break-word;
2376
+ border-inline: none;
2377
+ border-block-end: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2378
+ padding: var(--cd-spacing-table-tbody-rowcell-padding);
2379
+ box-sizing: border-box;
2380
+ position: relative;
2381
+ vertical-align: middle;
1977
2382
  }
1978
- .cd-table__cell--expanded-content {
1979
- padding: var(--cd-table-cell-padding, var(--cd-spacing-base-tight));
1980
- background: var(--cd-color-fill-0);
2383
+ /* 尺寸档:middle / small 单元格纵向内边距 */
2384
+ .cd-table-middle .cd-table-tbody > .cd-table-row > .cd-table-row-cell {
2385
+ padding-block: var(--cd-spacing-table-middle-paddingy);
1981
2386
  }
1982
- @media (prefers-reduced-motion: reduce) {
1983
- .cd-table__expand-btn {
1984
- transition: none;
1985
- }
2387
+ .cd-table-small .cd-table-tbody > .cd-table-row > .cd-table-row-cell {
2388
+ padding-block: var(--cd-spacing-table-small-paddingy);
1986
2389
  }
1987
- .cd-table__cell--ellipsis {
1988
- max-inline-size: 0;
2390
+ .cd-table-row-cell-ellipsis {
1989
2391
  overflow: hidden;
1990
2392
  white-space: nowrap;
1991
2393
  text-overflow: ellipsis;
1992
2394
  }
1993
2395
 
1994
- /* --- 树形数据:缩进 + 展开三角 --- */
1995
- .cd-table__tree-indent {
1996
- display: inline-block;
1997
- vertical-align: middle;
2396
+ /* hover:Semi 用 background-image+background-color 双层(fill-0 半透 + bg-0 兜底) */
2397
+ .cd-table-tbody > .cd-table-row:hover > .cd-table-row-cell,
2398
+ .cd-table-tbody > .cd-table-row-hovered > .cd-table-row-cell {
2399
+ background-image: linear-gradient(0deg, var(--cd-color-table-body-bg-hover), var(--cd-color-table-body-bg-hover));
2400
+ background-color: var(--cd-color-table-cell-bg-hover);
1998
2401
  }
1999
- .cd-table__tree-toggle {
2000
- display: inline-flex;
2001
- align-items: center;
2002
- justify-content: center;
2003
- inline-size: 16px;
2004
- block-size: 16px;
2005
- margin-inline-end: var(--cd-spacing-extra-tight);
2006
- padding: 0;
2007
- border: none;
2008
- background: transparent;
2009
- color: var(--cd-color-text-2);
2010
- cursor: pointer;
2011
- vertical-align: middle;
2012
- transition: transform var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
2402
+ /* 固定列 hover:底色保持 body-default,避免透出横滚内容 */
2403
+ .cd-table-tbody > .cd-table-row:hover > .cd-table-cell-fixed-left,
2404
+ .cd-table-tbody > .cd-table-row:hover > .cd-table-cell-fixed-right,
2405
+ .cd-table-tbody > .cd-table-row-hovered > .cd-table-cell-fixed-left,
2406
+ .cd-table-tbody > .cd-table-row-hovered > .cd-table-cell-fixed-right {
2407
+ background-image: linear-gradient(0deg, var(--cd-color-table-body-bg-hover), var(--cd-color-table-body-bg-hover));
2408
+ background-color: var(--cd-color-table-body-bg-default);
2013
2409
  }
2014
- .cd-table__tree-toggle:hover {
2015
- color: var(--cd-color-text-0);
2016
- }
2017
- .cd-table__tree-toggle:focus-visible {
2018
- outline: none;
2019
- box-shadow: var(--cd-focus-ring);
2020
- border-radius: var(--cd-border-radius-small);
2410
+
2411
+ /* 对齐 */
2412
+ .cd-table-align-center {
2413
+ text-align: center;
2021
2414
  }
2022
- .cd-table__tree-toggle--open {
2023
- transform: rotate(90deg);
2415
+ .cd-table-align-right {
2416
+ text-align: right;
2024
2417
  }
2025
- .cd-table__tree-toggle--placeholder {
2026
- cursor: default;
2418
+
2419
+ /* 选择列 / 展开列固定宽度(对齐 Semi $width-table_column_selection = 48px) */
2420
+ .cd-table-column-selection,
2421
+ .cd-table-column-expand {
2422
+ inline-size: var(--cd-width-table-column-selection);
2423
+ text-align: center;
2424
+ white-space: nowrap;
2027
2425
  }
2028
- @media (prefers-reduced-motion: reduce) {
2029
- .cd-table__tree-toggle {
2030
- transition: none;
2031
- }
2426
+
2427
+ /* 斑马纹(chenzy-design 扩展;Semi 靠 demo onRow className 实现,此处保留组件级开关) */
2428
+ .cd-table-stripe .cd-table-tbody > .cd-table-row-stripe > .cd-table-row-cell {
2429
+ background-color: var(--cd-color-table-selection-bg-default);
2032
2430
  }
2033
2431
 
2034
- /* --- 固定列:sticky 单元格需不透明背景,避免透出横滚内容 --- */
2035
- .cd-table__cell--fixed {
2036
- z-index: 2;
2037
- background: var(--cd-table-bg);
2432
+ /* 选中行 */
2433
+ .cd-table-tbody > .cd-table-row-selected > .cd-table-row-cell {
2434
+ background-color: var(--cd-color-primary-light-default);
2038
2435
  }
2039
- .cd-table__head .cd-table__cell--fixed {
2040
- z-index: 3;
2041
- background: var(--cd-table-header-bg);
2436
+ .cd-table-row-clickable {
2437
+ cursor: pointer;
2042
2438
  }
2043
- /* 固定列随行态变色:hover / stripe / selected 时同步背景 */
2044
- .cd-table__row:hover .cd-table__cell--fixed {
2045
- background: var(--cd-table-row-hover-bg);
2439
+
2440
+ /* ===== 展开行 / 分组行 ===== */
2441
+ .cd-table-tbody > .cd-table-row-expand > .cd-table-row-cell {
2442
+ background-color: var(--cd-color-table-row-expanded-bg-default);
2046
2443
  }
2047
- .cd-table__row--stripe .cd-table__cell--fixed {
2048
- background: var(--cd-table-row-stripe-bg);
2444
+ .cd-table-row-cell-expanded-content {
2445
+ padding-inline: var(--cd-spacing-table-expand-row-paddingleft) var(--cd-spacing-table-expand-row-paddingright);
2446
+ padding-block: var(--cd-spacing-table-expand-row-paddingtop) var(--cd-spacing-table-expand-row-paddingbottom);
2447
+ background-color: var(--cd-color-table-row-expanded-bg-default);
2049
2448
  }
2050
- .cd-table__row--selected .cd-table__cell--fixed,
2051
- .cd-table__row--selected:hover .cd-table__cell--fixed {
2052
- background: var(--cd-table-row-selected-bg);
2449
+ .cd-table-row-hidden {
2450
+ display: none;
2053
2451
  }
2054
- /* 边界阴影:最后一个左固定列右侧、第一个右固定列左侧 */
2055
- .cd-table__cell--fixed-left-last::after,
2056
- .cd-table__cell--fixed-right-first::after {
2057
- content: '';
2058
- position: absolute;
2059
- inset-block: 0;
2060
- inline-size: 6px;
2061
- pointer-events: none;
2452
+
2453
+ /* 分组表头行 .semi-table-row-section */
2454
+ .cd-table-tbody > .cd-table-row-section > .cd-table-row-cell {
2455
+ background-color: var(--cd-color-table-selection-bg-default);
2456
+ border-block-end: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2062
2457
  }
2063
- .cd-table__cell--fixed-left-last {
2064
- position: sticky;
2458
+ .cd-table-tbody > .cd-table-row-section > .cd-table-row-cell:not(.cd-table-column-selection) {
2459
+ padding: var(--cd-spacing-table-tbody-rowselection-rowcell-notselection-paddingy) var(--cd-spacing-table-tbody-rowselection-rowcell-notselection-paddingx);
2065
2460
  }
2066
- .cd-table__cell--fixed-left-last::after {
2067
- inset-inline-end: -6px;
2068
- background: linear-gradient(
2069
- to right,
2070
- var(--cd-table-fixed-shadow, rgba(0, 0, 0, 0.12)),
2071
- transparent
2072
- );
2461
+ .cd-table-section-inner {
2462
+ display: inline-flex;
2463
+ align-items: center;
2073
2464
  }
2074
- .cd-table__cell--fixed-right-first::after {
2075
- inset-inline-start: -6px;
2076
- background: linear-gradient(
2077
- to left,
2078
- var(--cd-table-fixed-shadow, rgba(0, 0, 0, 0.12)),
2079
- transparent
2080
- );
2465
+ .cd-table-row-section-clickable .cd-table-row-cell-section {
2466
+ cursor: pointer;
2467
+ user-select: none;
2081
2468
  }
2082
- /* sticky cell 需相对定位以承载 ::after 阴影 */
2083
- .cd-table__cell--fixed {
2084
- position: sticky;
2469
+ .cd-table-row-cell-section:focus-visible {
2470
+ outline: 2px solid var(--cd-focus-ring, currentColor);
2471
+ outline-offset: -2px;
2085
2472
  }
2086
2473
 
2087
- .cd-table--bordered .cd-table__cell {
2088
- border-inline-end: 1px solid var(--cd-table-border-color);
2474
+ /* ===== 固定列:sticky + 边界阴影 ===== */
2475
+ .cd-table-cell-fixed-left,
2476
+ .cd-table-cell-fixed-right {
2477
+ z-index: var(--cd-z-table-fixed-column);
2478
+ position: sticky;
2479
+ background-color: var(--cd-color-table-bg-default);
2089
2480
  }
2090
- .cd-table--bordered .cd-table__cell:first-child {
2091
- border-inline-start: 1px solid var(--cd-table-border-color);
2481
+ .cd-table-thead > .cd-table-row > .cd-table-cell-fixed-left,
2482
+ .cd-table-thead > .cd-table-row > .cd-table-cell-fixed-right {
2483
+ background-color: var(--cd-color-table-th-bg-default);
2092
2484
  }
2093
- .cd-table--bordered .cd-table__head th {
2094
- border-block-start: 1px solid var(--cd-table-border-color);
2485
+ .cd-table-cell-fixed-left-last {
2486
+ border-inline-end: var(--cd-width-table-cell-fixed-left-last) solid var(--cd-color-table-shadow-border-default);
2487
+ box-shadow: var(--cd-shadow-table-right);
2095
2488
  }
2096
-
2097
- .cd-table__row--stripe {
2098
- background: var(--cd-table-row-stripe-bg);
2489
+ .cd-table-cell-fixed-right-first {
2490
+ border-inline-start: var(--cd-width-table-cell-fixed-right-first) solid var(--cd-color-table-shadow-border-default);
2491
+ box-shadow: var(--cd-shadow-table-left);
2099
2492
  }
2100
- .cd-table__row:hover {
2101
- background: var(--cd-table-row-hover-bg);
2493
+ /* 横滚到边隐藏对应阴影 */
2494
+ .cd-table-scroll-position-left .cd-table-cell-fixed-left-last {
2495
+ box-shadow: none;
2102
2496
  }
2103
- .cd-table__row--selected,
2104
- .cd-table__row--selected:hover {
2105
- background: var(--cd-table-row-selected-bg);
2497
+ .cd-table-scroll-position-right .cd-table-cell-fixed-right-first {
2498
+ box-shadow: none;
2106
2499
  }
2107
- .cd-table__row--clickable {
2108
- cursor: pointer;
2500
+
2501
+ /* ===== 带边框 bordered ===== */
2502
+ .cd-table-bordered > .cd-table-container {
2503
+ border: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2504
+ border-inline-end: 0;
2505
+ border-block-end: 0;
2506
+ }
2507
+ .cd-table-bordered .cd-table-thead > .cd-table-row > .cd-table-row-head,
2508
+ .cd-table-bordered .cd-table-tbody > .cd-table-row > .cd-table-row-cell {
2509
+ border-inline-end: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2109
2510
  }
2110
2511
 
2111
- .cd-table__cell--empty {
2112
- padding-block: var(--cd-spacing-loose, 32px);
2113
- color: var(--cd-table-empty-color);
2512
+ /* ===== 空数据占位 .semi-table-placeholder ===== */
2513
+ .cd-table-placeholder {
2514
+ padding: var(--cd-spacing-table-paddingy) var(--cd-spacing-table-paddingx);
2515
+ color: var(--cd-color-table-placeholder-text-default);
2516
+ font-size: var(--cd-font-table-base-fontsize);
2114
2517
  text-align: center;
2518
+ background: var(--cd-color-table-pl-bg-default);
2519
+ border-block-end: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2115
2520
  }
2116
2521
 
2117
- /* --- 列筛选 --- */
2118
- .cd-table__cell--has-filter {
2119
- position: relative;
2120
- }
2121
- .cd-table__filter-btn {
2522
+ /* ===== 排序 ColumnSorter ===== */
2523
+ .cd-table-column-sorter-wrapper {
2122
2524
  display: inline-flex;
2123
2525
  align-items: center;
2124
- justify-content: center;
2125
- margin-inline-start: var(--cd-spacing-extra-tight);
2126
- padding: 2px;
2127
- border: none;
2128
- background: transparent;
2129
- color: var(--cd-table-sort-icon-color);
2526
+ gap: var(--cd-spacing-table-column-sorter-marginleft);
2527
+ overflow: hidden;
2130
2528
  cursor: pointer;
2529
+ padding: 0;
2530
+ color: inherit;
2531
+ font: inherit;
2532
+ font-weight: var(--cd-font-weight-bold, 600);
2533
+ background: none;
2534
+ border: none;
2535
+ }
2536
+ .cd-table-column-sorter-wrapper:focus-visible {
2537
+ outline: none;
2538
+ box-shadow: var(--cd-focus-ring);
2131
2539
  border-radius: var(--cd-border-radius-small);
2540
+ }
2541
+ .cd-table-column-sorter {
2542
+ display: inline-block;
2543
+ inline-size: var(--cd-width-table-column-sorter-icon);
2544
+ block-size: var(--cd-height-table-column-sorter-icon);
2132
2545
  vertical-align: middle;
2546
+ text-align: center;
2547
+ }
2548
+ .cd-table-column-sorter-up,
2549
+ .cd-table-column-sorter-down {
2550
+ display: block;
2551
+ block-size: 0;
2552
+ color: var(--cd-color-table-sorter-text-default);
2133
2553
  }
2134
- .cd-table__filter-btn:hover {
2135
- color: var(--cd-color-text-0);
2554
+ .cd-table-column-sorter-up.on,
2555
+ .cd-table-column-sorter-down.on {
2556
+ color: var(--cd-color-table-sorter-on-text-default);
2136
2557
  }
2137
- .cd-table__filter-btn--active {
2138
- color: var(--cd-color-primary);
2558
+ .cd-table-column-sorter-up :global(svg),
2559
+ .cd-table-column-sorter-down :global(svg) {
2560
+ inline-size: var(--cd-width-table-column-sorter-icon);
2561
+ block-size: var(--cd-height-table-column-sorter-icon);
2139
2562
  }
2140
- .cd-table__filter-btn:focus-visible {
2563
+
2564
+ /* ===== 列筛选 ColumnFilter ===== */
2565
+ .cd-table-column-filter {
2566
+ margin-inline-start: var(--cd-spacing-table-column-filter-marginleft);
2567
+ display: inline-flex;
2568
+ align-items: center;
2569
+ cursor: pointer;
2570
+ color: var(--cd-color-table-filter-text-default);
2571
+ padding: 0;
2572
+ border: none;
2573
+ background: transparent;
2574
+ }
2575
+ .cd-table-column-filter :global(svg) {
2576
+ inline-size: var(--cd-width-table-column-filter-icon);
2577
+ block-size: var(--cd-height-table-column-filter-icon);
2578
+ }
2579
+ .cd-table-column-filter.on {
2580
+ color: var(--cd-color-table-filter-on-text-default);
2581
+ }
2582
+ .cd-table-column-filter:focus-visible {
2141
2583
  outline: none;
2142
2584
  box-shadow: var(--cd-focus-ring);
2143
2585
  }
2144
- .cd-table__filter-panel {
2145
- z-index: var(--cd-select-dropdown-z, 1050);
2586
+ /* 筛选下拉面板 .semi-table-column-filter-dropdown */
2587
+ .cd-table-column-filter-dropdown {
2588
+ z-index: var(--cd-z-dropdown, 1060);
2146
2589
  min-inline-size: 10rem;
2147
2590
  padding-block: var(--cd-spacing-extra-tight);
2148
- background: var(--cd-select-dropdown-bg, var(--cd-color-bg-0, #fff));
2149
- border-radius: var(--cd-select-dropdown-radius, 6px);
2150
- box-shadow: var(--cd-select-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
2151
- font-weight: 400;
2591
+ background: var(--cd-color-bg-3, #fff);
2592
+ border-radius: var(--cd-border-radius-medium, 6px);
2593
+ box-shadow: var(--cd-shadow-elevated, 0 4px 12px rgba(0, 0, 0, 0.12));
2594
+ font-weight: var(--cd-font-weight-regular, 400);
2152
2595
  }
2153
- .cd-table__filter-list {
2596
+ .cd-table-column-filter-list {
2154
2597
  margin: 0;
2155
2598
  padding: 0;
2156
2599
  list-style: none;
2157
- max-block-size: 14rem;
2600
+ max-block-size: var(--cd-height-table-column-filter-dropdown);
2158
2601
  overflow-y: auto;
2159
2602
  }
2160
- .cd-table__filter-label {
2603
+ .cd-table-column-filter-label {
2161
2604
  display: flex;
2162
2605
  align-items: center;
2163
2606
  gap: var(--cd-spacing-tight);
2164
2607
  padding: var(--cd-spacing-extra-tight) var(--cd-spacing-base-tight);
2165
2608
  cursor: pointer;
2166
2609
  }
2167
- .cd-table__filter-label:hover {
2168
- background: var(--cd-table-row-hover-bg);
2610
+ .cd-table-column-filter-label:hover {
2611
+ background: var(--cd-color-table-body-bg-hover);
2169
2612
  }
2170
- .cd-table__filter-actions {
2613
+ .cd-table-column-filter-actions {
2171
2614
  display: flex;
2172
2615
  justify-content: space-between;
2173
2616
  gap: var(--cd-spacing-tight);
2174
2617
  padding: var(--cd-spacing-extra-tight) var(--cd-spacing-base-tight);
2175
- border-block-start: 1px solid var(--cd-table-border-color);
2618
+ border-block-start: var(--cd-width-table-base-border) var(--cd-border-table-base-borderstyle) var(--cd-color-table-border-default);
2176
2619
  }
2177
- .cd-table__filter-reset,
2178
- .cd-table__filter-confirm {
2620
+ .cd-table-column-filter-reset,
2621
+ .cd-table-column-filter-confirm {
2179
2622
  padding: 0;
2180
2623
  border: none;
2181
2624
  background: transparent;
@@ -2183,104 +2626,147 @@
2183
2626
  font-size: var(--cd-font-size-small);
2184
2627
  cursor: pointer;
2185
2628
  }
2186
- .cd-table__filter-reset {
2187
- color: var(--cd-color-text-2);
2629
+ .cd-table-column-filter-reset {
2630
+ color: var(--cd-color-table-filter-text-default);
2188
2631
  }
2189
- .cd-table__filter-confirm {
2190
- color: var(--cd-color-primary);
2632
+ .cd-table-column-filter-confirm {
2633
+ color: var(--cd-color-table-filter-on-text-default);
2191
2634
  }
2192
2635
 
2193
- /* --- 列宽拖拽手柄 --- */
2194
- .cd-table__cell--resizable {
2636
+ /* ===== 列宽拖拽手柄 .react-resizable-handle ===== */
2637
+ .cd-table-row-head-resizable {
2195
2638
  position: relative;
2196
2639
  }
2197
- .cd-table__resize-handle {
2640
+ .react-resizable-handle {
2198
2641
  position: absolute;
2199
- inset-block: 0;
2200
- inset-inline-end: 0;
2201
- inline-size: 8px;
2642
+ inline-size: var(--cd-width-table-react-resizable-handle);
2643
+ block-size: calc(100% - var(--cd-spacing-table-resizable-offset-y) * 2);
2644
+ inset-block-end: var(--cd-spacing-table-resizable-bottom);
2645
+ inset-inline-end: var(--cd-spacing-table-react-resizable-handle-right);
2202
2646
  cursor: col-resize;
2203
- /* 提到固定列阴影/内容之上,确保可命中 */
2204
- z-index: 4;
2647
+ z-index: 0;
2205
2648
  touch-action: none;
2206
2649
  user-select: none;
2650
+ background-color: var(--cd-color-table-border-default);
2207
2651
  }
2208
- .cd-table__resize-handle::after {
2209
- content: '';
2210
- position: absolute;
2211
- inset-block: 25%;
2212
- inset-inline-end: 3px;
2213
- inline-size: 2px;
2214
- background: transparent;
2215
- transition: background var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
2216
- }
2217
- .cd-table__resize-handle:hover::after,
2218
- .cd-table__cell--resizing .cd-table__resize-handle::after {
2219
- background: var(--cd-color-primary);
2652
+ .react-resizable-handle:hover {
2653
+ background-color: var(--cd-color-table-resizer-bg-default);
2220
2654
  }
2221
- @media (prefers-reduced-motion: reduce) {
2222
- .cd-table__resize-handle::after {
2223
- transition: none;
2224
- }
2655
+ /* 拖拽中列:resizing 标示线 */
2656
+ .resizing.cd-table-row-head,
2657
+ .resizing.cd-table-row-cell {
2658
+ border-inline-end: var(--cd-width-table-resizer-border) solid var(--cd-color-table-resizer-bg-default);
2225
2659
  }
2226
2660
 
2227
- .cd-table__sort-btn {
2661
+ /* ===== 行选择 checkbox 包裹 .semi-table-selection-wrap ===== */
2662
+ .cd-table-selection-wrap {
2228
2663
  display: inline-flex;
2229
- align-items: center;
2230
- gap: var(--cd-spacing-extra-tight);
2231
- padding: 0;
2232
- color: inherit;
2233
- font: inherit;
2234
- font-weight: 600;
2235
- background: none;
2236
- border: none;
2664
+ vertical-align: bottom;
2665
+ }
2666
+ .cd-table-selection-disabled {
2667
+ cursor: not-allowed;
2668
+ }
2669
+ .cd-table-selection-checkbox {
2237
2670
  cursor: pointer;
2671
+ accent-color: var(--cd-color-primary);
2238
2672
  }
2239
- .cd-table__sort-btn:focus-visible {
2673
+ .cd-table-selection-checkbox:disabled {
2674
+ cursor: not-allowed;
2675
+ }
2676
+ .cd-table-selection-checkbox:focus-visible {
2240
2677
  outline: none;
2241
2678
  box-shadow: var(--cd-focus-ring);
2242
- border-radius: var(--cd-radius-small, 4px);
2243
2679
  }
2244
2680
 
2245
- .cd-table__sort-icons {
2681
+ /* ===== 展开图标 .semi-table-expand-icon ===== */
2682
+ .cd-table-expand-icon {
2246
2683
  display: inline-flex;
2247
- flex-direction: column;
2248
- gap: 1px;
2249
- color: var(--cd-table-sort-icon-color);
2250
- }
2251
- .cd-table__sort--active {
2252
- color: var(--cd-table-sort-active-color);
2253
- }
2254
-
2255
- .cd-table__checkbox {
2684
+ align-items: center;
2685
+ justify-content: center;
2686
+ user-select: none;
2687
+ position: relative;
2256
2688
  cursor: pointer;
2257
- accent-color: var(--cd-color-primary);
2689
+ padding: 0;
2690
+ border: none;
2691
+ vertical-align: middle;
2692
+ background: var(--cd-color-table-expanded-bg-default);
2693
+ color: var(--cd-color-table-expanded-icon-default);
2694
+ margin-inline-end: var(--cd-spacing-table-expand-icon-marginright);
2695
+ transition: transform 150ms cubic-bezier(0.62, 0.05, 0.36, 0.95);
2258
2696
  }
2259
- .cd-table__checkbox:disabled {
2260
- cursor: not-allowed;
2697
+ .cd-table-expand-icon:hover {
2698
+ color: var(--cd-color-table-text-default);
2261
2699
  }
2262
- .cd-table__checkbox:focus-visible {
2700
+ .cd-table-expand-icon:focus-visible {
2263
2701
  outline: none;
2264
2702
  box-shadow: var(--cd-focus-ring);
2703
+ border-radius: var(--cd-border-radius-small);
2704
+ }
2705
+ /* 旋转态:展开 90°(对齐 Semi -expandedIcon-show/-hide) */
2706
+ .cd-table-expandedIcon-show {
2707
+ transform: rotate(90deg);
2708
+ }
2709
+ .cd-table-expandedIcon-hide {
2710
+ transform: rotate(0deg);
2711
+ }
2712
+ .cd-table-expand-icon-placeholder {
2713
+ inline-size: 16px;
2714
+ block-size: 16px;
2715
+ background: transparent;
2716
+ pointer-events: none;
2717
+ cursor: default;
2718
+ }
2719
+ /* 展开按钮并入首列(hideExpandedColumn)内联包裹 */
2720
+ .cd-table-expand-icon-cell {
2721
+ display: inline-flex;
2722
+ align-items: center;
2723
+ justify-content: center;
2724
+ vertical-align: middle;
2725
+ }
2726
+ /* 树形缩进占位 */
2727
+ .cd-table-row-indent {
2728
+ display: inline-block;
2729
+ vertical-align: middle;
2265
2730
  }
2266
2731
 
2267
- .cd-table__pagination {
2732
+ /* ===== 分页器 .semi-table-pagination-outer ===== */
2733
+ .cd-table-pagination-outer {
2268
2734
  display: flex;
2269
- justify-content: flex-end;
2270
- margin-block-start: var(--cd-spacing-base-tight);
2735
+ justify-content: space-between;
2736
+ align-items: center;
2737
+ min-block-size: var(--cd-height-table-pagination-outer-min);
2738
+ color: var(--cd-color-table-page-text-default);
2739
+ }
2740
+ /* 分页左侧 range 文案(显示第 X-Y 条,共 N 条),对齐 Semi 灰色说明文字。 */
2741
+ .cd-table-pagination-total {
2742
+ color: var(--cd-color-table-page-text-default);
2743
+ font-size: var(--cd-font-size-regular, 14px);
2744
+ }
2745
+
2746
+ /* ===== 标题 / footer ===== */
2747
+ .cd-table-title {
2748
+ position: relative;
2749
+ padding-block: var(--cd-spacing-table-title-paddingy);
2750
+ padding-inline: var(--cd-spacing-table-title-paddingx);
2751
+ }
2752
+ .cd-table-footer {
2753
+ background-color: var(--cd-color-table-footer-bg-default);
2754
+ padding: var(--cd-spacing-table-footer-padding);
2755
+ margin: 0;
2756
+ position: relative;
2271
2757
  }
2272
2758
 
2273
- .cd-table__loading {
2759
+ /* ===== 加载态遮罩 ===== */
2760
+ .cd-table-loading {
2274
2761
  position: absolute;
2275
2762
  inset: 0;
2276
2763
  display: flex;
2277
2764
  align-items: center;
2278
2765
  justify-content: center;
2279
- background: var(--cd-table-loading-mask);
2766
+ background: var(--cd-color-table-bg-default);
2280
2767
  opacity: 0.6;
2281
2768
  }
2282
-
2283
- .cd-table__spinner {
2769
+ .cd-table-spinner {
2284
2770
  inline-size: 28px;
2285
2771
  block-size: 28px;
2286
2772
  border: 3px solid var(--cd-color-fill-1, rgba(0, 0, 0, 0.1));
@@ -2288,7 +2774,6 @@
2288
2774
  border-radius: 50%;
2289
2775
  animation: cd-table-spin 0.8s linear infinite;
2290
2776
  }
2291
-
2292
2777
  @keyframes cd-table-spin {
2293
2778
  to {
2294
2779
  transform: rotate(360deg);
@@ -2296,32 +2781,12 @@
2296
2781
  }
2297
2782
 
2298
2783
  @media (prefers-reduced-motion: reduce) {
2299
- .cd-table__spinner {
2784
+ .cd-table-spinner {
2300
2785
  animation: none;
2301
2786
  }
2302
- .cd-table__sort-up,
2303
- .cd-table__sort-down {
2787
+ .cd-table-expand-icon,
2788
+ .react-resizable-handle {
2304
2789
  transition: none;
2305
2790
  }
2306
2791
  }
2307
-
2308
- /* --- 分组标题行 --- */
2309
- .cd-table__row--group-header {
2310
- background: var(--cd-table-header-bg);
2311
- }
2312
- .cd-table__cell--group-header {
2313
- padding-block: var(--cd-table-cell-padding-y);
2314
- padding-inline: var(--cd-table-cell-padding-x);
2315
- font-weight: 600;
2316
- color: var(--cd-table-header-text);
2317
- border-block-end: 1px solid var(--cd-table-border-color);
2318
- }
2319
-
2320
- /* --- 表格顶部标题/底部区域 --- */
2321
- .cd-table__title-area {
2322
- margin-block-end: var(--cd-spacing-tight, 8px);
2323
- }
2324
- .cd-table__footer {
2325
- margin-block-start: var(--cd-spacing-base-tight, 12px);
2326
- }
2327
2792
  </style>