@chenzy-design/svelte 0.1.0 → 0.2.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 (974) hide show
  1. package/README.md +66 -0
  2. package/dist/badge/Badge.svelte +5 -2
  3. package/dist/badge/Badge.svelte.d.ts.map +1 -1
  4. package/dist/components.json +1 -1
  5. package/package.json +9 -9
  6. package/dist/anchor/Anchor.a11y.test.d.ts +0 -2
  7. package/dist/anchor/Anchor.a11y.test.d.ts.map +0 -1
  8. package/dist/anchor/Anchor.a11y.test.js +0 -44
  9. package/dist/anchor/Anchor.kbd.test.d.ts +0 -2
  10. package/dist/anchor/Anchor.kbd.test.d.ts.map +0 -1
  11. package/dist/anchor/Anchor.kbd.test.js +0 -59
  12. package/dist/anchor/AnchorKbdFixture.svelte +0 -24
  13. package/dist/anchor/AnchorKbdFixture.svelte.d.ts +0 -19
  14. package/dist/anchor/AnchorKbdFixture.svelte.d.ts.map +0 -1
  15. package/dist/autocomplete/AutoComplete.a11y.test.d.ts +0 -2
  16. package/dist/autocomplete/AutoComplete.a11y.test.d.ts.map +0 -1
  17. package/dist/autocomplete/AutoComplete.a11y.test.js +0 -45
  18. package/dist/autocomplete/AutoComplete.kbd.test.d.ts +0 -2
  19. package/dist/autocomplete/AutoComplete.kbd.test.d.ts.map +0 -1
  20. package/dist/autocomplete/AutoComplete.kbd.test.js +0 -60
  21. package/dist/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
  22. package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts +0 -4
  23. package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts.map +0 -1
  24. package/dist/avatar/Avatar.a11y.test.d.ts +0 -2
  25. package/dist/avatar/Avatar.a11y.test.d.ts.map +0 -1
  26. package/dist/avatar/Avatar.a11y.test.js +0 -34
  27. package/dist/back-top/BackTop.a11y.test.d.ts +0 -2
  28. package/dist/back-top/BackTop.a11y.test.d.ts.map +0 -1
  29. package/dist/back-top/BackTop.a11y.test.js +0 -37
  30. package/dist/badge/Badge.a11y.test.d.ts +0 -2
  31. package/dist/badge/Badge.a11y.test.d.ts.map +0 -1
  32. package/dist/badge/Badge.a11y.test.js +0 -32
  33. package/dist/badge/BadgeA11yFixture.svelte +0 -18
  34. package/dist/badge/BadgeA11yFixture.svelte.d.ts +0 -7
  35. package/dist/badge/BadgeA11yFixture.svelte.d.ts.map +0 -1
  36. package/dist/banner/Banner.a11y.test.d.ts +0 -2
  37. package/dist/banner/Banner.a11y.test.d.ts.map +0 -1
  38. package/dist/banner/Banner.a11y.test.js +0 -43
  39. package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts +0 -2
  40. package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts.map +0 -1
  41. package/dist/breadcrumb/Breadcrumb.a11y.test.js +0 -31
  42. package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts +0 -2
  43. package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts.map +0 -1
  44. package/dist/breadcrumb/Breadcrumb.kbd.test.js +0 -37
  45. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
  46. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts +0 -19
  47. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts.map +0 -1
  48. package/dist/button/Button.a11y.test.d.ts +0 -2
  49. package/dist/button/Button.a11y.test.d.ts.map +0 -1
  50. package/dist/button/Button.a11y.test.js +0 -49
  51. package/dist/calendar/Calendar.a11y.test.d.ts +0 -2
  52. package/dist/calendar/Calendar.a11y.test.d.ts.map +0 -1
  53. package/dist/calendar/Calendar.a11y.test.js +0 -46
  54. package/dist/calendar/Calendar.kbd.test.d.ts +0 -2
  55. package/dist/calendar/Calendar.kbd.test.d.ts.map +0 -1
  56. package/dist/calendar/Calendar.kbd.test.js +0 -50
  57. package/dist/calendar/CalendarKbdFixture.svelte +0 -23
  58. package/dist/calendar/CalendarKbdFixture.svelte.d.ts +0 -19
  59. package/dist/calendar/CalendarKbdFixture.svelte.d.ts.map +0 -1
  60. package/dist/card/Card.a11y.test.d.ts +0 -2
  61. package/dist/card/Card.a11y.test.d.ts.map +0 -1
  62. package/dist/card/Card.a11y.test.js +0 -35
  63. package/dist/carousel/Carousel.a11y.test.d.ts +0 -2
  64. package/dist/carousel/Carousel.a11y.test.d.ts.map +0 -1
  65. package/dist/carousel/Carousel.a11y.test.js +0 -43
  66. package/dist/carousel/Carousel.kbd.test.d.ts +0 -2
  67. package/dist/carousel/Carousel.kbd.test.d.ts.map +0 -1
  68. package/dist/carousel/Carousel.kbd.test.js +0 -51
  69. package/dist/carousel/CarouselA11yFixture.svelte +0 -25
  70. package/dist/carousel/CarouselA11yFixture.svelte.d.ts +0 -8
  71. package/dist/carousel/CarouselA11yFixture.svelte.d.ts.map +0 -1
  72. package/dist/carousel/CarouselKbdFixture.svelte +0 -24
  73. package/dist/carousel/CarouselKbdFixture.svelte.d.ts +0 -19
  74. package/dist/carousel/CarouselKbdFixture.svelte.d.ts.map +0 -1
  75. package/dist/cascader/Cascader.a11y.test.d.ts +0 -2
  76. package/dist/cascader/Cascader.a11y.test.d.ts.map +0 -1
  77. package/dist/cascader/Cascader.a11y.test.js +0 -55
  78. package/dist/cascader/Cascader.kbd.test.d.ts +0 -2
  79. package/dist/cascader/Cascader.kbd.test.d.ts.map +0 -1
  80. package/dist/cascader/Cascader.kbd.test.js +0 -47
  81. package/dist/cascader/CascaderKbdFixture.svelte +0 -31
  82. package/dist/cascader/CascaderKbdFixture.svelte.d.ts +0 -19
  83. package/dist/cascader/CascaderKbdFixture.svelte.d.ts.map +0 -1
  84. package/dist/checkbox/CheckboxGroup.a11y.test.d.ts +0 -2
  85. package/dist/checkbox/CheckboxGroup.a11y.test.d.ts.map +0 -1
  86. package/dist/checkbox/CheckboxGroup.a11y.test.js +0 -38
  87. package/dist/checkbox/CheckboxGroup.kbd.test.d.ts +0 -2
  88. package/dist/checkbox/CheckboxGroup.kbd.test.d.ts.map +0 -1
  89. package/dist/checkbox/CheckboxGroup.kbd.test.js +0 -33
  90. package/dist/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
  91. package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts +0 -19
  92. package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts.map +0 -1
  93. package/dist/collapse/Collapse.a11y.test.d.ts +0 -2
  94. package/dist/collapse/Collapse.a11y.test.d.ts.map +0 -1
  95. package/dist/collapse/Collapse.a11y.test.js +0 -46
  96. package/dist/collapse/Collapse.kbd.test.d.ts +0 -2
  97. package/dist/collapse/Collapse.kbd.test.d.ts.map +0 -1
  98. package/dist/collapse/Collapse.kbd.test.js +0 -70
  99. package/dist/collapse/CollapseA11yFixture.svelte +0 -27
  100. package/dist/collapse/CollapseA11yFixture.svelte.d.ts +0 -9
  101. package/dist/collapse/CollapseA11yFixture.svelte.d.ts.map +0 -1
  102. package/dist/collapse/CollapseKbdFixture.svelte +0 -25
  103. package/dist/collapse/CollapseKbdFixture.svelte.d.ts +0 -19
  104. package/dist/collapse/CollapseKbdFixture.svelte.d.ts.map +0 -1
  105. package/dist/color-picker/ColorPicker.a11y.test.d.ts +0 -2
  106. package/dist/color-picker/ColorPicker.a11y.test.d.ts.map +0 -1
  107. package/dist/color-picker/ColorPicker.a11y.test.js +0 -54
  108. package/dist/color-picker/ColorPicker.kbd.test.d.ts +0 -2
  109. package/dist/color-picker/ColorPicker.kbd.test.d.ts.map +0 -1
  110. package/dist/color-picker/ColorPicker.kbd.test.js +0 -59
  111. package/dist/color-picker/ColorPickerKbdFixture.svelte +0 -25
  112. package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts +0 -4
  113. package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts.map +0 -1
  114. package/dist/date-picker/DatePicker.a11y.test.d.ts +0 -2
  115. package/dist/date-picker/DatePicker.a11y.test.d.ts.map +0 -1
  116. package/dist/date-picker/DatePicker.a11y.test.js +0 -42
  117. package/dist/date-picker/DatePicker.kbd.test.d.ts +0 -2
  118. package/dist/date-picker/DatePicker.kbd.test.d.ts.map +0 -1
  119. package/dist/date-picker/DatePicker.kbd.test.js +0 -59
  120. package/dist/date-picker/DatePickerKbdFixture.svelte +0 -26
  121. package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts +0 -4
  122. package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts.map +0 -1
  123. package/dist/date-picker/RangePicker.kbd.test.d.ts +0 -2
  124. package/dist/date-picker/RangePicker.kbd.test.d.ts.map +0 -1
  125. package/dist/date-picker/RangePicker.kbd.test.js +0 -60
  126. package/dist/date-picker/RangePickerKbdFixture.svelte +0 -30
  127. package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts +0 -7
  128. package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts.map +0 -1
  129. package/dist/descriptions/Descriptions.a11y.test.d.ts +0 -2
  130. package/dist/descriptions/Descriptions.a11y.test.d.ts.map +0 -1
  131. package/dist/descriptions/Descriptions.a11y.test.js +0 -31
  132. package/dist/divider/Divider.a11y.test.d.ts +0 -2
  133. package/dist/divider/Divider.a11y.test.d.ts.map +0 -1
  134. package/dist/divider/Divider.a11y.test.js +0 -21
  135. package/dist/drawer/Drawer.a11y.test.d.ts +0 -2
  136. package/dist/drawer/Drawer.a11y.test.d.ts.map +0 -1
  137. package/dist/drawer/Drawer.a11y.test.js +0 -33
  138. package/dist/drawer/Drawer.kbd.test.d.ts +0 -2
  139. package/dist/drawer/Drawer.kbd.test.d.ts.map +0 -1
  140. package/dist/drawer/Drawer.kbd.test.js +0 -53
  141. package/dist/drawer/DrawerKbdFixture.svelte +0 -28
  142. package/dist/drawer/DrawerKbdFixture.svelte.d.ts +0 -4
  143. package/dist/drawer/DrawerKbdFixture.svelte.d.ts.map +0 -1
  144. package/dist/dropdown/Dropdown.a11y.test.d.ts +0 -2
  145. package/dist/dropdown/Dropdown.a11y.test.d.ts.map +0 -1
  146. package/dist/dropdown/Dropdown.a11y.test.js +0 -39
  147. package/dist/dropdown/Dropdown.kbd.test.d.ts +0 -2
  148. package/dist/dropdown/Dropdown.kbd.test.d.ts.map +0 -1
  149. package/dist/dropdown/Dropdown.kbd.test.js +0 -47
  150. package/dist/dropdown/DropdownA11yFixture.svelte +0 -24
  151. package/dist/dropdown/DropdownA11yFixture.svelte.d.ts +0 -11
  152. package/dist/dropdown/DropdownA11yFixture.svelte.d.ts.map +0 -1
  153. package/dist/dropdown/DropdownKbdFixture.svelte +0 -26
  154. package/dist/dropdown/DropdownKbdFixture.svelte.d.ts +0 -19
  155. package/dist/dropdown/DropdownKbdFixture.svelte.d.ts.map +0 -1
  156. package/dist/dropdown/types.test.d.ts +0 -2
  157. package/dist/dropdown/types.test.d.ts.map +0 -1
  158. package/dist/dropdown/types.test.js +0 -40
  159. package/dist/empty/Empty.a11y.test.d.ts +0 -2
  160. package/dist/empty/Empty.a11y.test.d.ts.map +0 -1
  161. package/dist/empty/Empty.a11y.test.js +0 -22
  162. package/dist/form/Form.a11y.test.d.ts +0 -2
  163. package/dist/form/Form.a11y.test.d.ts.map +0 -1
  164. package/dist/form/Form.a11y.test.js +0 -36
  165. package/dist/form/FormA11yFixture.svelte +0 -31
  166. package/dist/form/FormA11yFixture.svelte.d.ts +0 -19
  167. package/dist/form/FormA11yFixture.svelte.d.ts.map +0 -1
  168. package/dist/grid/Grid.a11y.test.d.ts +0 -2
  169. package/dist/grid/Grid.a11y.test.d.ts.map +0 -1
  170. package/dist/grid/Grid.a11y.test.js +0 -13
  171. package/dist/grid/GridA11yFixture.svelte +0 -12
  172. package/dist/grid/GridA11yFixture.svelte.d.ts +0 -19
  173. package/dist/grid/GridA11yFixture.svelte.d.ts.map +0 -1
  174. package/dist/highlight/Highlight.a11y.test.d.ts +0 -2
  175. package/dist/highlight/Highlight.a11y.test.d.ts.map +0 -1
  176. package/dist/highlight/Highlight.a11y.test.js +0 -23
  177. package/dist/image/Image.a11y.test.d.ts +0 -2
  178. package/dist/image/Image.a11y.test.d.ts.map +0 -1
  179. package/dist/image/Image.a11y.test.js +0 -27
  180. package/dist/image/ImagePreview.kbd.test.d.ts +0 -2
  181. package/dist/image/ImagePreview.kbd.test.d.ts.map +0 -1
  182. package/dist/image/ImagePreview.kbd.test.js +0 -44
  183. package/dist/image/ImagePreviewKbdFixture.svelte +0 -32
  184. package/dist/image/ImagePreviewKbdFixture.svelte.d.ts +0 -4
  185. package/dist/image/ImagePreviewKbdFixture.svelte.d.ts.map +0 -1
  186. package/dist/input/Input.a11y.test.d.ts +0 -2
  187. package/dist/input/Input.a11y.test.d.ts.map +0 -1
  188. package/dist/input/Input.a11y.test.js +0 -53
  189. package/dist/input-number/InputNumber.a11y.test.d.ts +0 -2
  190. package/dist/input-number/InputNumber.a11y.test.d.ts.map +0 -1
  191. package/dist/input-number/InputNumber.a11y.test.js +0 -40
  192. package/dist/input-number/InputNumber.kbd.test.d.ts +0 -2
  193. package/dist/input-number/InputNumber.kbd.test.d.ts.map +0 -1
  194. package/dist/input-number/InputNumber.kbd.test.js +0 -35
  195. package/dist/input-number/InputNumberKbdFixture.svelte +0 -15
  196. package/dist/input-number/InputNumberKbdFixture.svelte.d.ts +0 -19
  197. package/dist/input-number/InputNumberKbdFixture.svelte.d.ts.map +0 -1
  198. package/dist/layout/Layout.a11y.test.d.ts +0 -2
  199. package/dist/layout/Layout.a11y.test.d.ts.map +0 -1
  200. package/dist/layout/Layout.a11y.test.js +0 -32
  201. package/dist/layout/LayoutA11yFixture.svelte +0 -21
  202. package/dist/layout/LayoutA11yFixture.svelte.d.ts +0 -7
  203. package/dist/layout/LayoutA11yFixture.svelte.d.ts.map +0 -1
  204. package/dist/list/List.a11y.test.d.ts +0 -2
  205. package/dist/list/List.a11y.test.d.ts.map +0 -1
  206. package/dist/list/List.a11y.test.js +0 -62
  207. package/dist/list/List.bench.d.ts +0 -2
  208. package/dist/list/List.bench.d.ts.map +0 -1
  209. package/dist/list/List.bench.js +0 -16
  210. package/dist/list/List.kbd.test.d.ts +0 -2
  211. package/dist/list/List.kbd.test.d.ts.map +0 -1
  212. package/dist/list/List.kbd.test.js +0 -60
  213. package/dist/list/ListA11yFixture.svelte +0 -38
  214. package/dist/list/ListA11yFixture.svelte.d.ts +0 -10
  215. package/dist/list/ListA11yFixture.svelte.d.ts.map +0 -1
  216. package/dist/list/ListBenchFixture.svelte +0 -22
  217. package/dist/list/ListBenchFixture.svelte.d.ts +0 -7
  218. package/dist/list/ListBenchFixture.svelte.d.ts.map +0 -1
  219. package/dist/list/ListKbdFixture.svelte +0 -31
  220. package/dist/list/ListKbdFixture.svelte.d.ts +0 -19
  221. package/dist/list/ListKbdFixture.svelte.d.ts.map +0 -1
  222. package/dist/menu/Menu.a11y.test.d.ts +0 -2
  223. package/dist/menu/Menu.a11y.test.d.ts.map +0 -1
  224. package/dist/menu/Menu.a11y.test.js +0 -49
  225. package/dist/menu/Menu.kbd.test.d.ts +0 -2
  226. package/dist/menu/Menu.kbd.test.d.ts.map +0 -1
  227. package/dist/menu/Menu.kbd.test.js +0 -56
  228. package/dist/menu/MenuKbdFixture.svelte +0 -22
  229. package/dist/menu/MenuKbdFixture.svelte.d.ts +0 -19
  230. package/dist/menu/MenuKbdFixture.svelte.d.ts.map +0 -1
  231. package/dist/meta.test.d.ts +0 -2
  232. package/dist/meta.test.d.ts.map +0 -1
  233. package/dist/meta.test.js +0 -164
  234. package/dist/modal/Modal.a11y.test.d.ts +0 -2
  235. package/dist/modal/Modal.a11y.test.d.ts.map +0 -1
  236. package/dist/modal/Modal.a11y.test.js +0 -38
  237. package/dist/modal/Modal.kbd.test.d.ts +0 -2
  238. package/dist/modal/Modal.kbd.test.d.ts.map +0 -1
  239. package/dist/modal/Modal.kbd.test.js +0 -52
  240. package/dist/modal/ModalKbdFixture.svelte +0 -24
  241. package/dist/modal/ModalKbdFixture.svelte.d.ts +0 -4
  242. package/dist/modal/ModalKbdFixture.svelte.d.ts.map +0 -1
  243. package/dist/notification/NotificationItem.a11y.test.d.ts +0 -2
  244. package/dist/notification/NotificationItem.a11y.test.d.ts.map +0 -1
  245. package/dist/notification/NotificationItem.a11y.test.js +0 -64
  246. package/dist/overflow-list/OverflowList.a11y.test.d.ts +0 -2
  247. package/dist/overflow-list/OverflowList.a11y.test.d.ts.map +0 -1
  248. package/dist/overflow-list/OverflowList.a11y.test.js +0 -41
  249. package/dist/overflow-list/OverflowList.kbd.test.d.ts +0 -2
  250. package/dist/overflow-list/OverflowList.kbd.test.d.ts.map +0 -1
  251. package/dist/overflow-list/OverflowList.kbd.test.js +0 -28
  252. package/dist/overflow-list/OverflowListA11yFixture.svelte +0 -22
  253. package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts +0 -8
  254. package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts.map +0 -1
  255. package/dist/overflow-list/OverflowListKbdFixture.svelte +0 -21
  256. package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts +0 -19
  257. package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts.map +0 -1
  258. package/dist/pagination/Pagination.a11y.test.d.ts +0 -2
  259. package/dist/pagination/Pagination.a11y.test.d.ts.map +0 -1
  260. package/dist/pagination/Pagination.a11y.test.js +0 -57
  261. package/dist/pagination/Pagination.kbd.test.d.ts +0 -2
  262. package/dist/pagination/Pagination.kbd.test.d.ts.map +0 -1
  263. package/dist/pagination/Pagination.kbd.test.js +0 -54
  264. package/dist/pagination/PaginationKbdFixture.svelte +0 -15
  265. package/dist/pagination/PaginationKbdFixture.svelte.d.ts +0 -19
  266. package/dist/pagination/PaginationKbdFixture.svelte.d.ts.map +0 -1
  267. package/dist/popconfirm/Popconfirm.a11y.test.d.ts +0 -2
  268. package/dist/popconfirm/Popconfirm.a11y.test.d.ts.map +0 -1
  269. package/dist/popconfirm/Popconfirm.a11y.test.js +0 -37
  270. package/dist/popconfirm/Popconfirm.kbd.test.d.ts +0 -2
  271. package/dist/popconfirm/Popconfirm.kbd.test.d.ts.map +0 -1
  272. package/dist/popconfirm/Popconfirm.kbd.test.js +0 -36
  273. package/dist/popconfirm/PopconfirmA11yFixture.svelte +0 -34
  274. package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts +0 -11
  275. package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts.map +0 -1
  276. package/dist/popconfirm/PopconfirmKbdFixture.svelte +0 -17
  277. package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts +0 -19
  278. package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts.map +0 -1
  279. package/dist/popover/Popover.a11y.test.d.ts +0 -2
  280. package/dist/popover/Popover.a11y.test.d.ts.map +0 -1
  281. package/dist/popover/Popover.a11y.test.js +0 -47
  282. package/dist/popover/Popover.kbd.test.d.ts +0 -2
  283. package/dist/popover/Popover.kbd.test.d.ts.map +0 -1
  284. package/dist/popover/Popover.kbd.test.js +0 -36
  285. package/dist/popover/PopoverA11yFixture.svelte +0 -35
  286. package/dist/popover/PopoverA11yFixture.svelte.d.ts +0 -11
  287. package/dist/popover/PopoverA11yFixture.svelte.d.ts.map +0 -1
  288. package/dist/popover/PopoverKbdFixture.svelte +0 -18
  289. package/dist/popover/PopoverKbdFixture.svelte.d.ts +0 -19
  290. package/dist/popover/PopoverKbdFixture.svelte.d.ts.map +0 -1
  291. package/dist/progress/Progress.a11y.test.d.ts +0 -2
  292. package/dist/progress/Progress.a11y.test.d.ts.map +0 -1
  293. package/dist/progress/Progress.a11y.test.js +0 -34
  294. package/dist/radio/RadioGroup.a11y.test.d.ts +0 -2
  295. package/dist/radio/RadioGroup.a11y.test.d.ts.map +0 -1
  296. package/dist/radio/RadioGroup.a11y.test.js +0 -38
  297. package/dist/radio/RadioGroup.kbd.test.d.ts +0 -2
  298. package/dist/radio/RadioGroup.kbd.test.d.ts.map +0 -1
  299. package/dist/radio/RadioGroup.kbd.test.js +0 -59
  300. package/dist/radio/RadioGroupKbdFixture.svelte +0 -21
  301. package/dist/radio/RadioGroupKbdFixture.svelte.d.ts +0 -19
  302. package/dist/radio/RadioGroupKbdFixture.svelte.d.ts.map +0 -1
  303. package/dist/rating/Rating.a11y.test.d.ts +0 -2
  304. package/dist/rating/Rating.a11y.test.d.ts.map +0 -1
  305. package/dist/rating/Rating.a11y.test.js +0 -38
  306. package/dist/rating/Rating.kbd.test.d.ts +0 -2
  307. package/dist/rating/Rating.kbd.test.d.ts.map +0 -1
  308. package/dist/rating/Rating.kbd.test.js +0 -41
  309. package/dist/rating/RatingKbdFixture.svelte +0 -15
  310. package/dist/rating/RatingKbdFixture.svelte.d.ts +0 -19
  311. package/dist/rating/RatingKbdFixture.svelte.d.ts.map +0 -1
  312. package/dist/select/Select.a11y.test.d.ts +0 -2
  313. package/dist/select/Select.a11y.test.d.ts.map +0 -1
  314. package/dist/select/Select.a11y.test.js +0 -53
  315. package/dist/select/Select.kbd.test.d.ts +0 -2
  316. package/dist/select/Select.kbd.test.d.ts.map +0 -1
  317. package/dist/select/Select.kbd.test.js +0 -47
  318. package/dist/select/SelectKbdFixture.svelte +0 -29
  319. package/dist/select/SelectKbdFixture.svelte.d.ts +0 -4
  320. package/dist/select/SelectKbdFixture.svelte.d.ts.map +0 -1
  321. package/dist/side-sheet/SideSheet.a11y.test.d.ts +0 -2
  322. package/dist/side-sheet/SideSheet.a11y.test.d.ts.map +0 -1
  323. package/dist/side-sheet/SideSheet.a11y.test.js +0 -46
  324. package/dist/side-sheet/SideSheet.kbd.test.d.ts +0 -2
  325. package/dist/side-sheet/SideSheet.kbd.test.d.ts.map +0 -1
  326. package/dist/side-sheet/SideSheet.kbd.test.js +0 -49
  327. package/dist/side-sheet/SideSheetKbdFixture.svelte +0 -30
  328. package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts +0 -4
  329. package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts.map +0 -1
  330. package/dist/skeleton/Skeleton.a11y.test.d.ts +0 -2
  331. package/dist/skeleton/Skeleton.a11y.test.d.ts.map +0 -1
  332. package/dist/skeleton/Skeleton.a11y.test.js +0 -32
  333. package/dist/slider/Slider.a11y.test.d.ts +0 -2
  334. package/dist/slider/Slider.a11y.test.d.ts.map +0 -1
  335. package/dist/slider/Slider.a11y.test.js +0 -40
  336. package/dist/slider/Slider.kbd.test.d.ts +0 -2
  337. package/dist/slider/Slider.kbd.test.d.ts.map +0 -1
  338. package/dist/slider/Slider.kbd.test.js +0 -63
  339. package/dist/slider/SliderKbdFixture.svelte +0 -21
  340. package/dist/slider/SliderKbdFixture.svelte.d.ts +0 -19
  341. package/dist/slider/SliderKbdFixture.svelte.d.ts.map +0 -1
  342. package/dist/space/Space.a11y.test.d.ts +0 -2
  343. package/dist/space/Space.a11y.test.d.ts.map +0 -1
  344. package/dist/space/Space.a11y.test.js +0 -20
  345. package/dist/space/SpaceA11yFixture.svelte +0 -17
  346. package/dist/space/SpaceA11yFixture.svelte.d.ts +0 -7
  347. package/dist/space/SpaceA11yFixture.svelte.d.ts.map +0 -1
  348. package/dist/spin/Spin.a11y.test.d.ts +0 -2
  349. package/dist/spin/Spin.a11y.test.d.ts.map +0 -1
  350. package/dist/spin/Spin.a11y.test.js +0 -27
  351. package/dist/spin/SpinA11yFixture.svelte +0 -18
  352. package/dist/spin/SpinA11yFixture.svelte.d.ts +0 -7
  353. package/dist/spin/SpinA11yFixture.svelte.d.ts.map +0 -1
  354. package/dist/steps/Steps.a11y.test.d.ts +0 -2
  355. package/dist/steps/Steps.a11y.test.d.ts.map +0 -1
  356. package/dist/steps/Steps.a11y.test.js +0 -35
  357. package/dist/steps/Steps.kbd.test.d.ts +0 -2
  358. package/dist/steps/Steps.kbd.test.d.ts.map +0 -1
  359. package/dist/steps/Steps.kbd.test.js +0 -59
  360. package/dist/steps/StepsKbdFixture.svelte +0 -21
  361. package/dist/steps/StepsKbdFixture.svelte.d.ts +0 -19
  362. package/dist/steps/StepsKbdFixture.svelte.d.ts.map +0 -1
  363. package/dist/switch/Switch.a11y.test.d.ts +0 -2
  364. package/dist/switch/Switch.a11y.test.d.ts.map +0 -1
  365. package/dist/switch/Switch.a11y.test.js +0 -42
  366. package/dist/switch/Switch.kbd.test.d.ts +0 -2
  367. package/dist/switch/Switch.kbd.test.d.ts.map +0 -1
  368. package/dist/switch/Switch.kbd.test.js +0 -34
  369. package/dist/switch/SwitchKbdFixture.svelte +0 -22
  370. package/dist/switch/SwitchKbdFixture.svelte.d.ts +0 -4
  371. package/dist/switch/SwitchKbdFixture.svelte.d.ts.map +0 -1
  372. package/dist/table/Table.a11y.test.d.ts +0 -2
  373. package/dist/table/Table.a11y.test.d.ts.map +0 -1
  374. package/dist/table/Table.a11y.test.js +0 -59
  375. package/dist/table/Table.bench.d.ts +0 -2
  376. package/dist/table/Table.bench.d.ts.map +0 -1
  377. package/dist/table/Table.bench.js +0 -31
  378. package/dist/table/Table.kbd.test.d.ts +0 -2
  379. package/dist/table/Table.kbd.test.d.ts.map +0 -1
  380. package/dist/table/Table.kbd.test.js +0 -74
  381. package/dist/table/TableKbdFixture.svelte +0 -35
  382. package/dist/table/TableKbdFixture.svelte.d.ts +0 -19
  383. package/dist/table/TableKbdFixture.svelte.d.ts.map +0 -1
  384. package/dist/table/grid-nav.test.d.ts +0 -2
  385. package/dist/table/grid-nav.test.d.ts.map +0 -1
  386. package/dist/table/grid-nav.test.js +0 -133
  387. package/dist/tabs/Tabs.a11y.test.d.ts +0 -2
  388. package/dist/tabs/Tabs.a11y.test.d.ts.map +0 -1
  389. package/dist/tabs/Tabs.a11y.test.js +0 -43
  390. package/dist/tabs/Tabs.kbd.test.d.ts +0 -2
  391. package/dist/tabs/Tabs.kbd.test.d.ts.map +0 -1
  392. package/dist/tabs/Tabs.kbd.test.js +0 -63
  393. package/dist/tabs/TabsA11yFixture.svelte +0 -20
  394. package/dist/tabs/TabsA11yFixture.svelte.d.ts +0 -8
  395. package/dist/tabs/TabsA11yFixture.svelte.d.ts.map +0 -1
  396. package/dist/tabs/TabsKbdFixture.svelte +0 -25
  397. package/dist/tabs/TabsKbdFixture.svelte.d.ts +0 -7
  398. package/dist/tabs/TabsKbdFixture.svelte.d.ts.map +0 -1
  399. package/dist/tag/Tag.a11y.test.d.ts +0 -2
  400. package/dist/tag/Tag.a11y.test.d.ts.map +0 -1
  401. package/dist/tag/Tag.a11y.test.js +0 -30
  402. package/dist/tag/TagA11yFixture.svelte +0 -18
  403. package/dist/tag/TagA11yFixture.svelte.d.ts +0 -8
  404. package/dist/tag/TagA11yFixture.svelte.d.ts.map +0 -1
  405. package/dist/tag-input/TagInput.a11y.test.d.ts +0 -2
  406. package/dist/tag-input/TagInput.a11y.test.d.ts.map +0 -1
  407. package/dist/tag-input/TagInput.a11y.test.js +0 -38
  408. package/dist/tag-input/reorder.test.d.ts +0 -2
  409. package/dist/tag-input/reorder.test.d.ts.map +0 -1
  410. package/dist/tag-input/reorder.test.js +0 -48
  411. package/dist/test-utils/LocaleHarness.svelte +0 -29
  412. package/dist/test-utils/LocaleHarness.svelte.d.ts +0 -11
  413. package/dist/test-utils/LocaleHarness.svelte.d.ts.map +0 -1
  414. package/dist/test-utils/a11y.d.ts +0 -36
  415. package/dist/test-utils/a11y.d.ts.map +0 -1
  416. package/dist/test-utils/a11y.js +0 -68
  417. package/dist/test-utils/kbd.d.ts +0 -26
  418. package/dist/test-utils/kbd.d.ts.map +0 -1
  419. package/dist/test-utils/kbd.js +0 -38
  420. package/dist/textarea/TextArea.a11y.test.d.ts +0 -2
  421. package/dist/textarea/TextArea.a11y.test.d.ts.map +0 -1
  422. package/dist/textarea/TextArea.a11y.test.js +0 -41
  423. package/dist/time-picker/TimePicker.a11y.test.d.ts +0 -2
  424. package/dist/time-picker/TimePicker.a11y.test.d.ts.map +0 -1
  425. package/dist/time-picker/TimePicker.a11y.test.js +0 -42
  426. package/dist/time-picker/TimePicker.kbd.test.d.ts +0 -2
  427. package/dist/time-picker/TimePicker.kbd.test.d.ts.map +0 -1
  428. package/dist/time-picker/TimePicker.kbd.test.js +0 -59
  429. package/dist/time-picker/TimePickerKbdFixture.svelte +0 -23
  430. package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts +0 -4
  431. package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts.map +0 -1
  432. package/dist/timeline/Timeline.a11y.test.d.ts +0 -2
  433. package/dist/timeline/Timeline.a11y.test.d.ts.map +0 -1
  434. package/dist/timeline/Timeline.a11y.test.js +0 -51
  435. package/dist/toast/Toast.a11y.test.d.ts +0 -2
  436. package/dist/toast/Toast.a11y.test.d.ts.map +0 -1
  437. package/dist/toast/Toast.a11y.test.js +0 -58
  438. package/dist/tooltip/Tooltip.a11y.test.d.ts +0 -2
  439. package/dist/tooltip/Tooltip.a11y.test.d.ts.map +0 -1
  440. package/dist/tooltip/Tooltip.a11y.test.js +0 -33
  441. package/dist/tooltip/Tooltip.kbd.test.d.ts +0 -2
  442. package/dist/tooltip/Tooltip.kbd.test.d.ts.map +0 -1
  443. package/dist/tooltip/Tooltip.kbd.test.js +0 -31
  444. package/dist/tooltip/TooltipA11yFixture.svelte +0 -31
  445. package/dist/tooltip/TooltipA11yFixture.svelte.d.ts +0 -11
  446. package/dist/tooltip/TooltipA11yFixture.svelte.d.ts.map +0 -1
  447. package/dist/tooltip/TooltipKbdFixture.svelte +0 -16
  448. package/dist/tooltip/TooltipKbdFixture.svelte.d.ts +0 -19
  449. package/dist/tooltip/TooltipKbdFixture.svelte.d.ts.map +0 -1
  450. package/dist/transfer/Transfer.a11y.test.d.ts +0 -2
  451. package/dist/transfer/Transfer.a11y.test.d.ts.map +0 -1
  452. package/dist/transfer/Transfer.a11y.test.js +0 -59
  453. package/dist/transfer/Transfer.kbd.test.d.ts +0 -2
  454. package/dist/transfer/Transfer.kbd.test.d.ts.map +0 -1
  455. package/dist/transfer/Transfer.kbd.test.js +0 -64
  456. package/dist/transfer/TransferKbdFixture.svelte +0 -23
  457. package/dist/transfer/TransferKbdFixture.svelte.d.ts +0 -4
  458. package/dist/transfer/TransferKbdFixture.svelte.d.ts.map +0 -1
  459. package/dist/transfer/group.test.d.ts +0 -2
  460. package/dist/transfer/group.test.d.ts.map +0 -1
  461. package/dist/transfer/group.test.js +0 -47
  462. package/dist/transfer/reorder.test.d.ts +0 -2
  463. package/dist/transfer/reorder.test.d.ts.map +0 -1
  464. package/dist/transfer/reorder.test.js +0 -42
  465. package/dist/transfer/tree.test.d.ts +0 -2
  466. package/dist/transfer/tree.test.d.ts.map +0 -1
  467. package/dist/transfer/tree.test.js +0 -39
  468. package/dist/tree/Tree.a11y.test.d.ts +0 -2
  469. package/dist/tree/Tree.a11y.test.d.ts.map +0 -1
  470. package/dist/tree/Tree.a11y.test.js +0 -56
  471. package/dist/tree/Tree.kbd.test.d.ts +0 -2
  472. package/dist/tree/Tree.kbd.test.d.ts.map +0 -1
  473. package/dist/tree/Tree.kbd.test.js +0 -78
  474. package/dist/tree/TreeKbdFixture.svelte +0 -30
  475. package/dist/tree/TreeKbdFixture.svelte.d.ts +0 -19
  476. package/dist/tree/TreeKbdFixture.svelte.d.ts.map +0 -1
  477. package/dist/tree-select/TreeSelect.a11y.test.d.ts +0 -2
  478. package/dist/tree-select/TreeSelect.a11y.test.d.ts.map +0 -1
  479. package/dist/tree-select/TreeSelect.a11y.test.js +0 -48
  480. package/dist/tree-select/TreeSelect.kbd.test.d.ts +0 -2
  481. package/dist/tree-select/TreeSelect.kbd.test.d.ts.map +0 -1
  482. package/dist/tree-select/TreeSelect.kbd.test.js +0 -46
  483. package/dist/tree-select/TreeSelectKbdFixture.svelte +0 -20
  484. package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts +0 -19
  485. package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts.map +0 -1
  486. package/dist/tree-select/virtual.test.d.ts +0 -2
  487. package/dist/tree-select/virtual.test.d.ts.map +0 -1
  488. package/dist/tree-select/virtual.test.js +0 -86
  489. package/dist/typography/Typography.a11y.test.d.ts +0 -2
  490. package/dist/typography/Typography.a11y.test.d.ts.map +0 -1
  491. package/dist/typography/Typography.a11y.test.js +0 -31
  492. package/dist/typography/TypographyA11yFixture.svelte +0 -27
  493. package/dist/typography/TypographyA11yFixture.svelte.d.ts +0 -9
  494. package/dist/typography/TypographyA11yFixture.svelte.d.ts.map +0 -1
  495. package/dist/upload/Upload.a11y.test.d.ts +0 -2
  496. package/dist/upload/Upload.a11y.test.d.ts.map +0 -1
  497. package/dist/upload/Upload.a11y.test.js +0 -49
  498. package/dist/upload/UploadA11yFixture.svelte +0 -23
  499. package/dist/upload/UploadA11yFixture.svelte.d.ts +0 -10
  500. package/dist/upload/UploadA11yFixture.svelte.d.ts.map +0 -1
  501. package/src/_floating/use-floating.ts +0 -208
  502. package/src/anchor/Anchor.a11y.test.ts +0 -49
  503. package/src/anchor/Anchor.kbd.test.ts +0 -70
  504. package/src/anchor/Anchor.svelte +0 -359
  505. package/src/anchor/AnchorKbdFixture.svelte +0 -24
  506. package/src/anchor/index.ts +0 -3
  507. package/src/anchor/meta.ts +0 -70
  508. package/src/anchor/types.ts +0 -8
  509. package/src/autocomplete/AutoComplete.a11y.test.ts +0 -49
  510. package/src/autocomplete/AutoComplete.kbd.test.ts +0 -69
  511. package/src/autocomplete/AutoComplete.svelte +0 -706
  512. package/src/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
  513. package/src/autocomplete/index.ts +0 -2
  514. package/src/autocomplete/meta.ts +0 -41
  515. package/src/avatar/Avatar.a11y.test.ts +0 -37
  516. package/src/avatar/Avatar.svelte +0 -315
  517. package/src/avatar/AvatarGroup.svelte +0 -142
  518. package/src/avatar/context.ts +0 -21
  519. package/src/avatar/index.ts +0 -10
  520. package/src/avatar/meta.ts +0 -73
  521. package/src/back-top/BackTop.a11y.test.ts +0 -40
  522. package/src/back-top/BackTop.svelte +0 -314
  523. package/src/back-top/index.ts +0 -2
  524. package/src/back-top/meta.ts +0 -108
  525. package/src/badge/Badge.a11y.test.ts +0 -35
  526. package/src/badge/Badge.svelte +0 -328
  527. package/src/badge/BadgeA11yFixture.svelte +0 -18
  528. package/src/badge/index.ts +0 -2
  529. package/src/badge/meta.ts +0 -62
  530. package/src/banner/Banner.a11y.test.ts +0 -48
  531. package/src/banner/Banner.svelte +0 -368
  532. package/src/banner/index.ts +0 -3
  533. package/src/banner/meta.ts +0 -121
  534. package/src/breadcrumb/Breadcrumb.a11y.test.ts +0 -35
  535. package/src/breadcrumb/Breadcrumb.kbd.test.ts +0 -45
  536. package/src/breadcrumb/Breadcrumb.svelte +0 -414
  537. package/src/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
  538. package/src/breadcrumb/Item.svelte +0 -77
  539. package/src/breadcrumb/context.ts +0 -27
  540. package/src/breadcrumb/index.ts +0 -21
  541. package/src/breadcrumb/meta.ts +0 -128
  542. package/src/breadcrumb/types.ts +0 -4
  543. package/src/button/Button.a11y.test.ts +0 -54
  544. package/src/button/Button.svelte +0 -176
  545. package/src/button/index.ts +0 -2
  546. package/src/button/meta.ts +0 -28
  547. package/src/calendar/Calendar.a11y.test.ts +0 -51
  548. package/src/calendar/Calendar.kbd.test.ts +0 -59
  549. package/src/calendar/Calendar.svelte +0 -1344
  550. package/src/calendar/CalendarKbdFixture.svelte +0 -23
  551. package/src/calendar/index.ts +0 -3
  552. package/src/calendar/meta.ts +0 -117
  553. package/src/card/Card.a11y.test.ts +0 -38
  554. package/src/card/Card.svelte +0 -341
  555. package/src/card/CardMeta.svelte +0 -60
  556. package/src/card/index.ts +0 -8
  557. package/src/card/meta.ts +0 -83
  558. package/src/carousel/Carousel.a11y.test.ts +0 -53
  559. package/src/carousel/Carousel.kbd.test.ts +0 -67
  560. package/src/carousel/Carousel.svelte +0 -806
  561. package/src/carousel/CarouselA11yFixture.svelte +0 -25
  562. package/src/carousel/CarouselKbdFixture.svelte +0 -24
  563. package/src/carousel/index.ts +0 -2
  564. package/src/carousel/meta.ts +0 -74
  565. package/src/cascader/Cascader.a11y.test.ts +0 -59
  566. package/src/cascader/Cascader.kbd.test.ts +0 -56
  567. package/src/cascader/Cascader.svelte +0 -1570
  568. package/src/cascader/CascaderKbdFixture.svelte +0 -31
  569. package/src/cascader/index.ts +0 -3
  570. package/src/cascader/meta.ts +0 -57
  571. package/src/cascader/types.ts +0 -9
  572. package/src/checkbox/Checkbox.svelte +0 -281
  573. package/src/checkbox/CheckboxGroup.a11y.test.ts +0 -43
  574. package/src/checkbox/CheckboxGroup.kbd.test.ts +0 -40
  575. package/src/checkbox/CheckboxGroup.svelte +0 -122
  576. package/src/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
  577. package/src/checkbox/context.ts +0 -31
  578. package/src/checkbox/index.ts +0 -4
  579. package/src/checkbox/meta.ts +0 -67
  580. package/src/collapse/Collapse.a11y.test.ts +0 -53
  581. package/src/collapse/Collapse.kbd.test.ts +0 -89
  582. package/src/collapse/Collapse.svelte +0 -406
  583. package/src/collapse/CollapseA11yFixture.svelte +0 -27
  584. package/src/collapse/CollapseKbdFixture.svelte +0 -25
  585. package/src/collapse/CollapsePanel.svelte +0 -102
  586. package/src/collapse/context.ts +0 -54
  587. package/src/collapse/index.ts +0 -17
  588. package/src/collapse/meta.ts +0 -79
  589. package/src/collapse/types.ts +0 -5
  590. package/src/color-picker/ColorPicker.a11y.test.ts +0 -60
  591. package/src/color-picker/ColorPicker.kbd.test.ts +0 -73
  592. package/src/color-picker/ColorPicker.svelte +0 -985
  593. package/src/color-picker/ColorPickerKbdFixture.svelte +0 -25
  594. package/src/color-picker/index.ts +0 -2
  595. package/src/color-picker/meta.ts +0 -47
  596. package/src/config-provider/ConfigProvider.svelte +0 -227
  597. package/src/config-provider/context.ts +0 -29
  598. package/src/config-provider/index.ts +0 -48
  599. package/src/config-provider/meta.ts +0 -128
  600. package/src/date-picker/DatePicker.a11y.test.ts +0 -45
  601. package/src/date-picker/DatePicker.kbd.test.ts +0 -71
  602. package/src/date-picker/DatePicker.svelte +0 -1798
  603. package/src/date-picker/DatePickerKbdFixture.svelte +0 -26
  604. package/src/date-picker/RangePicker.kbd.test.ts +0 -69
  605. package/src/date-picker/RangePicker.svelte +0 -775
  606. package/src/date-picker/RangePickerKbdFixture.svelte +0 -30
  607. package/src/date-picker/index.ts +0 -4
  608. package/src/date-picker/meta.ts +0 -67
  609. package/src/date-picker/range-meta.ts +0 -44
  610. package/src/descriptions/Descriptions.a11y.test.ts +0 -33
  611. package/src/descriptions/Descriptions.svelte +0 -287
  612. package/src/descriptions/DescriptionsItem.svelte +0 -43
  613. package/src/descriptions/context.ts +0 -21
  614. package/src/descriptions/index.ts +0 -16
  615. package/src/descriptions/meta.ts +0 -45
  616. package/src/descriptions/types.ts +0 -6
  617. package/src/divider/Divider.a11y.test.ts +0 -23
  618. package/src/divider/Divider.svelte +0 -154
  619. package/src/divider/index.ts +0 -2
  620. package/src/divider/meta.ts +0 -23
  621. package/src/drawer/Drawer.a11y.test.ts +0 -41
  622. package/src/drawer/Drawer.kbd.test.ts +0 -67
  623. package/src/drawer/Drawer.svelte +0 -554
  624. package/src/drawer/DrawerKbdFixture.svelte +0 -28
  625. package/src/drawer/index.ts +0 -2
  626. package/src/drawer/meta.ts +0 -127
  627. package/src/dropdown/Dropdown.a11y.test.ts +0 -46
  628. package/src/dropdown/Dropdown.kbd.test.ts +0 -56
  629. package/src/dropdown/Dropdown.svelte +0 -573
  630. package/src/dropdown/DropdownA11yFixture.svelte +0 -24
  631. package/src/dropdown/DropdownDivider.svelte +0 -17
  632. package/src/dropdown/DropdownItem.svelte +0 -127
  633. package/src/dropdown/DropdownItemNode.svelte +0 -355
  634. package/src/dropdown/DropdownKbdFixture.svelte +0 -26
  635. package/src/dropdown/DropdownMenu.svelte +0 -24
  636. package/src/dropdown/DropdownSubMenu.svelte +0 -212
  637. package/src/dropdown/DropdownTitle.svelte +0 -34
  638. package/src/dropdown/context.ts +0 -13
  639. package/src/dropdown/index.ts +0 -36
  640. package/src/dropdown/meta.ts +0 -97
  641. package/src/dropdown/types.test.ts +0 -50
  642. package/src/dropdown/types.ts +0 -67
  643. package/src/empty/Empty.a11y.test.ts +0 -24
  644. package/src/empty/Empty.svelte +0 -304
  645. package/src/empty/index.ts +0 -2
  646. package/src/empty/meta.ts +0 -41
  647. package/src/form/Field.svelte +0 -492
  648. package/src/form/FieldArray.svelte +0 -75
  649. package/src/form/Form.a11y.test.ts +0 -39
  650. package/src/form/Form.svelte +0 -243
  651. package/src/form/FormA11yFixture.svelte +0 -31
  652. package/src/form/FormCascader.svelte +0 -82
  653. package/src/form/FormCheckbox.svelte +0 -83
  654. package/src/form/FormDatePicker.svelte +0 -80
  655. package/src/form/FormErrorMessage.svelte +0 -44
  656. package/src/form/FormInput.svelte +0 -95
  657. package/src/form/FormLabel.svelte +0 -46
  658. package/src/form/FormRadio.svelte +0 -83
  659. package/src/form/FormRating.svelte +0 -85
  660. package/src/form/FormSection.svelte +0 -45
  661. package/src/form/FormSelect.svelte +0 -96
  662. package/src/form/FormSlider.svelte +0 -95
  663. package/src/form/FormSlot.svelte +0 -51
  664. package/src/form/FormSwitch.svelte +0 -82
  665. package/src/form/FormTagInput.svelte +0 -79
  666. package/src/form/FormTreeSelect.svelte +0 -85
  667. package/src/form/FormUpload.svelte +0 -92
  668. package/src/form/context.ts +0 -47
  669. package/src/form/index.ts +0 -22
  670. package/src/form/meta.ts +0 -85
  671. package/src/grid/Col.svelte +0 -142
  672. package/src/grid/Grid.a11y.test.ts +0 -14
  673. package/src/grid/GridA11yFixture.svelte +0 -12
  674. package/src/grid/Row.svelte +0 -116
  675. package/src/grid/index.ts +0 -3
  676. package/src/grid/meta.ts +0 -72
  677. package/src/grid/use-breakpoint.svelte.ts +0 -48
  678. package/src/highlight/Highlight.a11y.test.ts +0 -25
  679. package/src/highlight/Highlight.svelte +0 -99
  680. package/src/highlight/index.ts +0 -2
  681. package/src/highlight/meta.ts +0 -80
  682. package/src/icon/Icon.svelte +0 -156
  683. package/src/icon/index.ts +0 -2
  684. package/src/icon/meta.ts +0 -41
  685. package/src/image/Image.a11y.test.ts +0 -30
  686. package/src/image/Image.svelte +0 -387
  687. package/src/image/ImagePreview.kbd.test.ts +0 -52
  688. package/src/image/ImagePreview.svelte +0 -309
  689. package/src/image/ImagePreviewGroup.svelte +0 -93
  690. package/src/image/ImagePreviewKbdFixture.svelte +0 -32
  691. package/src/image/context.ts +0 -26
  692. package/src/image/index.ts +0 -15
  693. package/src/image/meta.ts +0 -131
  694. package/src/index.ts +0 -208
  695. package/src/input/Input.a11y.test.ts +0 -58
  696. package/src/input/Input.svelte +0 -505
  697. package/src/input/index.ts +0 -2
  698. package/src/input/meta.ts +0 -40
  699. package/src/input-number/InputNumber.a11y.test.ts +0 -43
  700. package/src/input-number/InputNumber.kbd.test.ts +0 -41
  701. package/src/input-number/InputNumber.svelte +0 -674
  702. package/src/input-number/InputNumberKbdFixture.svelte +0 -15
  703. package/src/input-number/index.ts +0 -2
  704. package/src/input-number/meta.ts +0 -65
  705. package/src/layout/Content.svelte +0 -37
  706. package/src/layout/Footer.svelte +0 -49
  707. package/src/layout/Header.svelte +0 -46
  708. package/src/layout/Layout.a11y.test.ts +0 -34
  709. package/src/layout/Layout.svelte +0 -60
  710. package/src/layout/LayoutA11yFixture.svelte +0 -21
  711. package/src/layout/Sider.svelte +0 -207
  712. package/src/layout/index.ts +0 -26
  713. package/src/layout/meta.ts +0 -116
  714. package/src/list/List.a11y.test.ts +0 -69
  715. package/src/list/List.bench.ts +0 -26
  716. package/src/list/List.kbd.test.ts +0 -71
  717. package/src/list/List.svelte +0 -920
  718. package/src/list/ListA11yFixture.svelte +0 -38
  719. package/src/list/ListBenchFixture.svelte +0 -22
  720. package/src/list/ListItem.svelte +0 -175
  721. package/src/list/ListKbdFixture.svelte +0 -31
  722. package/src/list/ListMeta.svelte +0 -73
  723. package/src/list/context.ts +0 -39
  724. package/src/list/index.ts +0 -21
  725. package/src/list/meta.ts +0 -99
  726. package/src/locale-provider/LocaleProvider.svelte +0 -110
  727. package/src/locale-provider/context.ts +0 -22
  728. package/src/locale-provider/index.ts +0 -21
  729. package/src/locale-provider/meta.ts +0 -93
  730. package/src/locale-provider/use-locale.ts +0 -25
  731. package/src/lottie-icon/LottieIcon.svelte +0 -330
  732. package/src/lottie-icon/index.ts +0 -9
  733. package/src/lottie-icon/meta.ts +0 -162
  734. package/src/menu/Menu.a11y.test.ts +0 -54
  735. package/src/menu/Menu.kbd.test.ts +0 -69
  736. package/src/menu/Menu.svelte +0 -762
  737. package/src/menu/MenuKbdFixture.svelte +0 -22
  738. package/src/menu/MenuPopupNode.svelte +0 -525
  739. package/src/menu/index.ts +0 -4
  740. package/src/menu/meta.ts +0 -137
  741. package/src/menu/types.ts +0 -120
  742. package/src/meta.test.ts +0 -173
  743. package/src/modal/ConfirmModal.svelte +0 -173
  744. package/src/modal/Modal.a11y.test.ts +0 -46
  745. package/src/modal/Modal.kbd.test.ts +0 -65
  746. package/src/modal/Modal.svelte +0 -511
  747. package/src/modal/ModalKbdFixture.svelte +0 -24
  748. package/src/modal/command.svelte.ts +0 -103
  749. package/src/modal/index.ts +0 -30
  750. package/src/modal/meta.ts +0 -165
  751. package/src/modal/z-stack.ts +0 -26
  752. package/src/notification/NotificationContainer.svelte +0 -192
  753. package/src/notification/NotificationItem.a11y.test.ts +0 -73
  754. package/src/notification/NotificationItem.svelte +0 -368
  755. package/src/notification/index.ts +0 -9
  756. package/src/notification/meta.ts +0 -120
  757. package/src/notification/store.ts +0 -191
  758. package/src/overflow-list/OverflowList.a11y.test.ts +0 -46
  759. package/src/overflow-list/OverflowList.kbd.test.ts +0 -34
  760. package/src/overflow-list/OverflowList.svelte +0 -539
  761. package/src/overflow-list/OverflowListA11yFixture.svelte +0 -22
  762. package/src/overflow-list/OverflowListKbdFixture.svelte +0 -21
  763. package/src/overflow-list/index.ts +0 -2
  764. package/src/overflow-list/meta.ts +0 -138
  765. package/src/pagination/Pagination.a11y.test.ts +0 -62
  766. package/src/pagination/Pagination.kbd.test.ts +0 -66
  767. package/src/pagination/Pagination.svelte +0 -428
  768. package/src/pagination/PaginationKbdFixture.svelte +0 -15
  769. package/src/pagination/index.ts +0 -2
  770. package/src/pagination/meta.ts +0 -73
  771. package/src/popconfirm/Popconfirm.a11y.test.ts +0 -46
  772. package/src/popconfirm/Popconfirm.kbd.test.ts +0 -42
  773. package/src/popconfirm/Popconfirm.svelte +0 -724
  774. package/src/popconfirm/PopconfirmA11yFixture.svelte +0 -34
  775. package/src/popconfirm/PopconfirmKbdFixture.svelte +0 -17
  776. package/src/popconfirm/index.ts +0 -2
  777. package/src/popconfirm/meta.ts +0 -200
  778. package/src/popover/Popover.a11y.test.ts +0 -58
  779. package/src/popover/Popover.kbd.test.ts +0 -42
  780. package/src/popover/Popover.svelte +0 -643
  781. package/src/popover/PopoverA11yFixture.svelte +0 -35
  782. package/src/popover/PopoverKbdFixture.svelte +0 -18
  783. package/src/popover/index.ts +0 -2
  784. package/src/popover/meta.ts +0 -103
  785. package/src/progress/Progress.a11y.test.ts +0 -37
  786. package/src/progress/Progress.svelte +0 -423
  787. package/src/progress/index.ts +0 -3
  788. package/src/progress/meta.ts +0 -132
  789. package/src/radio/Radio.svelte +0 -330
  790. package/src/radio/RadioGroup.a11y.test.ts +0 -43
  791. package/src/radio/RadioGroup.kbd.test.ts +0 -75
  792. package/src/radio/RadioGroup.svelte +0 -199
  793. package/src/radio/RadioGroupKbdFixture.svelte +0 -21
  794. package/src/radio/context.ts +0 -42
  795. package/src/radio/index.ts +0 -4
  796. package/src/radio/meta.ts +0 -68
  797. package/src/rating/Rating.a11y.test.ts +0 -41
  798. package/src/rating/Rating.kbd.test.ts +0 -48
  799. package/src/rating/Rating.svelte +0 -407
  800. package/src/rating/RatingKbdFixture.svelte +0 -15
  801. package/src/rating/index.ts +0 -2
  802. package/src/rating/meta.ts +0 -40
  803. package/src/resize-observer/ResizeObserver.svelte +0 -169
  804. package/src/resize-observer/action.ts +0 -80
  805. package/src/resize-observer/index.ts +0 -9
  806. package/src/resize-observer/meta.ts +0 -102
  807. package/src/scroll-list/ScrollColumn.svelte +0 -592
  808. package/src/scroll-list/ScrollList.svelte +0 -257
  809. package/src/scroll-list/index.ts +0 -4
  810. package/src/scroll-list/meta.ts +0 -93
  811. package/src/scroll-list/types.ts +0 -18
  812. package/src/select/Select.a11y.test.ts +0 -59
  813. package/src/select/Select.kbd.test.ts +0 -59
  814. package/src/select/Select.svelte +0 -1155
  815. package/src/select/SelectKbdFixture.svelte +0 -29
  816. package/src/select/index.ts +0 -3
  817. package/src/select/meta.ts +0 -78
  818. package/src/select/types.ts +0 -2
  819. package/src/side-sheet/SideSheet.a11y.test.ts +0 -53
  820. package/src/side-sheet/SideSheet.kbd.test.ts +0 -63
  821. package/src/side-sheet/SideSheet.svelte +0 -659
  822. package/src/side-sheet/SideSheetKbdFixture.svelte +0 -30
  823. package/src/side-sheet/index.ts +0 -2
  824. package/src/side-sheet/meta.ts +0 -116
  825. package/src/skeleton/Skeleton.a11y.test.ts +0 -35
  826. package/src/skeleton/Skeleton.svelte +0 -131
  827. package/src/skeleton/SkeletonAvatar.svelte +0 -82
  828. package/src/skeleton/SkeletonButton.svelte +0 -90
  829. package/src/skeleton/SkeletonImage.svelte +0 -100
  830. package/src/skeleton/SkeletonParagraph.svelte +0 -103
  831. package/src/skeleton/SkeletonTitle.svelte +0 -74
  832. package/src/skeleton/context.ts +0 -11
  833. package/src/skeleton/index.ts +0 -8
  834. package/src/skeleton/meta.ts +0 -65
  835. package/src/slider/Slider.a11y.test.ts +0 -44
  836. package/src/slider/Slider.kbd.test.ts +0 -74
  837. package/src/slider/Slider.svelte +0 -716
  838. package/src/slider/SliderKbdFixture.svelte +0 -21
  839. package/src/slider/index.ts +0 -2
  840. package/src/slider/meta.ts +0 -55
  841. package/src/space/Space.a11y.test.ts +0 -22
  842. package/src/space/Space.svelte +0 -109
  843. package/src/space/SpaceA11yFixture.svelte +0 -17
  844. package/src/space/index.ts +0 -2
  845. package/src/space/meta.ts +0 -27
  846. package/src/spin/Spin.a11y.test.ts +0 -29
  847. package/src/spin/Spin.svelte +0 -293
  848. package/src/spin/SpinA11yFixture.svelte +0 -18
  849. package/src/spin/index.ts +0 -2
  850. package/src/spin/meta.ts +0 -72
  851. package/src/steps/Steps.a11y.test.ts +0 -39
  852. package/src/steps/Steps.kbd.test.ts +0 -73
  853. package/src/steps/Steps.svelte +0 -392
  854. package/src/steps/StepsKbdFixture.svelte +0 -21
  855. package/src/steps/index.ts +0 -3
  856. package/src/steps/meta.ts +0 -59
  857. package/src/steps/types.ts +0 -8
  858. package/src/switch/Switch.a11y.test.ts +0 -46
  859. package/src/switch/Switch.kbd.test.ts +0 -40
  860. package/src/switch/Switch.svelte +0 -310
  861. package/src/switch/SwitchKbdFixture.svelte +0 -22
  862. package/src/switch/index.ts +0 -2
  863. package/src/switch/meta.ts +0 -44
  864. package/src/table/Table.a11y.test.ts +0 -70
  865. package/src/table/Table.bench.ts +0 -51
  866. package/src/table/Table.kbd.test.ts +0 -94
  867. package/src/table/Table.svelte +0 -2327
  868. package/src/table/TableKbdFixture.svelte +0 -35
  869. package/src/table/grid-nav.test.ts +0 -173
  870. package/src/table/grid-nav.ts +0 -146
  871. package/src/table/index.ts +0 -13
  872. package/src/table/meta.ts +0 -121
  873. package/src/table/types.ts +0 -133
  874. package/src/tabs/TabPane.svelte +0 -92
  875. package/src/tabs/Tabs.a11y.test.ts +0 -47
  876. package/src/tabs/Tabs.kbd.test.ts +0 -74
  877. package/src/tabs/Tabs.svelte +0 -1128
  878. package/src/tabs/TabsA11yFixture.svelte +0 -20
  879. package/src/tabs/TabsKbdFixture.svelte +0 -25
  880. package/src/tabs/context.ts +0 -43
  881. package/src/tabs/index.ts +0 -14
  882. package/src/tabs/meta.ts +0 -152
  883. package/src/tabs/types.ts +0 -6
  884. package/src/tag/Tag.a11y.test.ts +0 -33
  885. package/src/tag/Tag.svelte +0 -366
  886. package/src/tag/TagA11yFixture.svelte +0 -18
  887. package/src/tag/index.ts +0 -2
  888. package/src/tag/meta.ts +0 -92
  889. package/src/tag-input/TagInput.a11y.test.ts +0 -41
  890. package/src/tag-input/TagInput.svelte +0 -544
  891. package/src/tag-input/index.ts +0 -2
  892. package/src/tag-input/meta.ts +0 -43
  893. package/src/tag-input/reorder.test.ts +0 -59
  894. package/src/tag-input/reorder.ts +0 -41
  895. package/src/test-utils/LocaleHarness.svelte +0 -29
  896. package/src/test-utils/a11y.ts +0 -108
  897. package/src/test-utils/kbd.ts +0 -52
  898. package/src/textarea/TextArea.a11y.test.ts +0 -44
  899. package/src/textarea/TextArea.svelte +0 -420
  900. package/src/textarea/index.ts +0 -2
  901. package/src/textarea/meta.ts +0 -104
  902. package/src/time-picker/TimePicker.a11y.test.ts +0 -45
  903. package/src/time-picker/TimePicker.kbd.test.ts +0 -70
  904. package/src/time-picker/TimePicker.svelte +0 -1023
  905. package/src/time-picker/TimePickerKbdFixture.svelte +0 -23
  906. package/src/time-picker/index.ts +0 -2
  907. package/src/time-picker/meta.ts +0 -64
  908. package/src/timeline/Timeline.a11y.test.ts +0 -54
  909. package/src/timeline/Timeline.svelte +0 -599
  910. package/src/timeline/TimelineItem.svelte +0 -164
  911. package/src/timeline/context.ts +0 -28
  912. package/src/timeline/index.ts +0 -16
  913. package/src/timeline/meta.ts +0 -129
  914. package/src/timeline/types.ts +0 -9
  915. package/src/toast/Toast.a11y.test.ts +0 -67
  916. package/src/toast/ToastContainer.svelte +0 -184
  917. package/src/toast/ToastItem.svelte +0 -247
  918. package/src/toast/index.ts +0 -9
  919. package/src/toast/live-region.ts +0 -78
  920. package/src/toast/meta.ts +0 -95
  921. package/src/toast/store.ts +0 -187
  922. package/src/tooltip/Tooltip.a11y.test.ts +0 -41
  923. package/src/tooltip/Tooltip.kbd.test.ts +0 -37
  924. package/src/tooltip/Tooltip.svelte +0 -416
  925. package/src/tooltip/TooltipA11yFixture.svelte +0 -31
  926. package/src/tooltip/TooltipKbdFixture.svelte +0 -16
  927. package/src/tooltip/index.ts +0 -2
  928. package/src/tooltip/meta.ts +0 -59
  929. package/src/tooltip/placement.ts +0 -6
  930. package/src/transfer/Transfer.a11y.test.ts +0 -63
  931. package/src/transfer/Transfer.kbd.test.ts +0 -75
  932. package/src/transfer/Transfer.svelte +0 -1451
  933. package/src/transfer/TransferKbdFixture.svelte +0 -23
  934. package/src/transfer/group.test.ts +0 -55
  935. package/src/transfer/group.ts +0 -61
  936. package/src/transfer/index.ts +0 -3
  937. package/src/transfer/meta.ts +0 -55
  938. package/src/transfer/reorder.test.ts +0 -52
  939. package/src/transfer/reorder.ts +0 -42
  940. package/src/transfer/tree.test.ts +0 -44
  941. package/src/transfer/tree.ts +0 -52
  942. package/src/transfer/types.ts +0 -32
  943. package/src/tree/Tree.a11y.test.ts +0 -63
  944. package/src/tree/Tree.kbd.test.ts +0 -91
  945. package/src/tree/Tree.svelte +0 -1500
  946. package/src/tree/TreeKbdFixture.svelte +0 -30
  947. package/src/tree/index.ts +0 -3
  948. package/src/tree/meta.ts +0 -152
  949. package/src/tree-select/TreeSelect.a11y.test.ts +0 -52
  950. package/src/tree-select/TreeSelect.kbd.test.ts +0 -53
  951. package/src/tree-select/TreeSelect.svelte +0 -1611
  952. package/src/tree-select/TreeSelectKbdFixture.svelte +0 -20
  953. package/src/tree-select/index.ts +0 -3
  954. package/src/tree-select/meta.ts +0 -73
  955. package/src/tree-select/types.ts +0 -11
  956. package/src/tree-select/virtual.test.ts +0 -104
  957. package/src/typography/Link.svelte +0 -120
  958. package/src/typography/Paragraph.svelte +0 -92
  959. package/src/typography/Text.svelte +0 -93
  960. package/src/typography/Title.svelte +0 -91
  961. package/src/typography/Typography.a11y.test.ts +0 -34
  962. package/src/typography/TypographyA11yFixture.svelte +0 -27
  963. package/src/typography/TypographyBase.svelte +0 -807
  964. package/src/typography/index.ts +0 -16
  965. package/src/typography/meta.ts +0 -158
  966. package/src/upload/Upload.a11y.test.ts +0 -58
  967. package/src/upload/Upload.svelte +0 -1094
  968. package/src/upload/UploadA11yFixture.svelte +0 -23
  969. package/src/upload/index.ts +0 -3
  970. package/src/upload/meta.ts +0 -64
  971. package/src/upload/types.ts +0 -16
  972. package/src/virtual-list/VirtualList.svelte +0 -401
  973. package/src/virtual-list/index.ts +0 -2
  974. package/src/virtual-list/meta.ts +0 -106
@@ -1,1128 +0,0 @@
1
- <!--
2
- Tabs — see specs/components/navigation/Tabs.spec.md
3
- 基础子集:line/card 类型、top 位置、数据驱动 tabList + 声明式 TabPane、
4
- roving tabindex + 键盘、closable。
5
- 溢出滚动:标签超出容器主轴时显示前/后滚动箭头(top/bottom 横向 scrollLeft、
6
- left/right 纵向 scrollTop),激活标签自动滚到可视区;几何测量 + ResizeObserver +
7
- 滚动操作全部命令式 + cleanup(红线 #3)。addable:末尾「+」按钮触发 onAdd(红线 #1 受控)。
8
- 溢出收纳:overflow='dropdown' 时把放不下的标签收进末尾「更多」下拉(复用 Dropdown),
9
- 离屏测量层命令式测宽 + computeTabOverflow(core 纯函数)算可见/溢出集,激活标签始终保持可见。
10
- type='button':分段按钮组样式(外包 fill 底,选中段填主色)。
11
- 纯声明式自动收集:未传 tabList 时,从子 <Tabs.Pane> 的 tab/itemKey/disabled/closable
12
- 自动收集推导 tabList(按源码顺序);TabPane 在 mount/unmount/同步副作用里写父级簿记
13
- 普通数组 + bump version $state,父 render 据 version 重建快照(红线 #2:副作用写 /
14
- 渲染读分离,子 effect 绝不读快照 → 无 effect_update_depth_exceeded 自循环)。
15
- renderTabBar:Snippet 完全自绘标签栏(接收 tab 列表 + 当前激活 key + 切换回调),
16
- 自定义渲染时跳过内置标签栏/溢出逻辑,面板内容仍按 activeKey 显隐。
17
-
18
- 约束:传 tabList 时标签栏数据驱动(与旧版完全一致);仅当不传 tabList 时才走声明式收集。
19
-
20
- 新增 props(本次补全):
21
- - tabBarExtraContent:标签栏右侧额外内容 Snippet
22
- - more:溢出折叠配置(数字或 {count,render,dropdownProps})
23
- - arrowPosition:折叠箭头位置('start'|'end'|'both',默认 'both')
24
- - renderArrow:自定义箭头 Snippet<[{type:'start'|'end', onClick}]>
25
- - showRestInDropdown:折叠模式是否展示收起 tabs(默认 true)
26
- - dropdownProps:透传给「更多」Dropdown 的参数
27
- - onVisibleTabsChange:溢出项变化回调(携带可见 tab keys)
28
- - contentStyle:内容区外层样式(string | CSSProperties)
29
- - preventScroll:Tab 聚焦是否阻止滚动
30
- - tabPaneMotion:面板切换动画(默认 true)
31
- -->
32
- <script lang="ts">
33
- import type { Snippet } from 'svelte';
34
- import { useId, computeTabOverflow } from '@chenzy-design/core';
35
- import { setTabsContext, type TabPaneRegistration } from './context.js';
36
- import { useLocale } from '../locale-provider/index.js';
37
- import Dropdown from '../dropdown/Dropdown.svelte';
38
- import type { DropdownItem } from '../dropdown/types.js';
39
- import type { TabItem } from './types.js';
40
-
41
- type TabKey = string | number;
42
- type TabType = 'line' | 'card' | 'button';
43
- type TabSize = 'small' | 'default' | 'large';
44
- type TabPosition = 'top' | 'bottom' | 'left' | 'right';
45
- type KeyboardActivation = 'auto' | 'manual';
46
- type OverflowMode = 'scroll' | 'dropdown';
47
-
48
- type MoreConfig = number | {
49
- count?: number;
50
- render?: Snippet;
51
- dropdownProps?: Record<string, unknown>;
52
- };
53
-
54
- interface Props {
55
- value?: TabKey;
56
- defaultValue?: TabKey;
57
- type?: TabType;
58
- size?: TabSize;
59
- tabPosition?: TabPosition;
60
- tabList?: TabItem[];
61
- closable?: boolean;
62
- keyboardActivation?: KeyboardActivation;
63
- /**
64
- * 横向溢出处理方式:
65
- * - 'scroll'(默认):标签超出容器时显示前/后滚动箭头,命令式滚动;
66
- * - 'dropdown':把放不下的标签收纳进末尾「更多」下拉,点下拉项跳到对应 tab。
67
- * 仅 top/bottom 横向标签栏生效;纵向(left/right)始终走滚动。
68
- */
69
- overflow?: OverflowMode;
70
- /**
71
- * line 风格横向溢出时启用折叠收纳(与 overflow='dropdown' 同效:放不下的标签进末尾「更多」下拉)。
72
- * 便捷开关:为 true 时强制走 dropdown 收纳(仅 top/bottom 横向生效)。默认 false。
73
- */
74
- collapsible?: boolean;
75
- /** 首次激活后才挂载面板内容 */
76
- lazy?: boolean;
77
- /** 激活过的面板切走后保留 DOM(display:none),而非卸载 */
78
- keepDOM?: boolean;
79
- /** 标签栏末尾显示「+」按钮,点击触发 onAdd(受控数据,由父组件追加) */
80
- addable?: boolean;
81
- /**
82
- * 溢出折叠配置:数字时等价于 { count: n };对象时含 count(收起阈值)、
83
- * render(自定义「更多」触发器 Snippet)、dropdownProps(透传下拉参数)。
84
- * 仅 overflow='dropdown'(或 collapsible=true)时生效。
85
- */
86
- more?: MoreConfig;
87
- /** 标签栏末尾「更多」下拉折叠时,折叠箭头位置(scroll 模式中的前/后箭头)。默认 'both'。 */
88
- arrowPosition?: 'start' | 'end' | 'both';
89
- /** 自定义前/后折叠箭头 Snippet,接收 { type:'start'|'end', onClick:()=>void } */
90
- renderArrow?: Snippet<[{ type: 'start' | 'end'; onClick: () => void }]>;
91
- /** dropdown 折叠模式是否在下拉中展示收起 tabs(默认 true) */
92
- showRestInDropdown?: boolean;
93
- /** 透传给「更多」Dropdown 组件的 props */
94
- dropdownProps?: Record<string, unknown>;
95
- /** 溢出项变化回调,携带当前可见 tab keys */
96
- onVisibleTabsChange?: (visibleTabKeys: TabKey[]) => void;
97
- /** 内容区外层样式(string 或 CSSProperties 对象) */
98
- contentStyle?: string | Record<string, string>;
99
- /** Tab 聚焦是否阻止页面滚动(默认 false) */
100
- preventScroll?: boolean;
101
- /** 面板切换是否启用动画(默认 true) */
102
- tabPaneMotion?: boolean;
103
- /** 标签栏右侧额外内容 */
104
- tabBarExtraContent?: Snippet;
105
- onChange?: (key: TabKey) => void;
106
- onTabClose?: (key: TabKey) => void;
107
- /**
108
- * 标签被点击回调(spec §4:on:tabClick)。含已选中标签(未必触发 onChange),
109
- * 在 disabled 拦截前发出,可用于埋点。
110
- */
111
- onTabClick?: (key: TabKey, event: MouseEvent) => void;
112
- /** addable=true 时点击「+」按钮回调(红线 #1:组件内部不改 tabList) */
113
- onAdd?: () => void;
114
- /**
115
- * 自定义整个标签栏的渲染(调用方完全自绘标签栏)。
116
- * 接收:当前 tab 列表(数据驱动 tabList 或声明式收集结果)、当前激活 key、
117
- * 切换回调 setActive(受控时仅触发 onChange,不回写 value,红线 #1)。
118
- * 传入时跳过内置标签栏与溢出处理;面板内容仍按 activeKey 显隐。
119
- */
120
- renderTabBar?: Snippet<[TabItem[], TabKey | undefined, (key: TabKey) => void]>;
121
- children?: Snippet;
122
- }
123
-
124
- let {
125
- value,
126
- defaultValue,
127
- type = 'line',
128
- size = 'default',
129
- tabPosition = 'top',
130
- tabList: tabListProp,
131
- closable = false,
132
- keyboardActivation = 'auto',
133
- overflow = 'scroll',
134
- collapsible = false,
135
- lazy = false,
136
- keepDOM = false,
137
- addable = false,
138
- more,
139
- arrowPosition = 'both',
140
- renderArrow,
141
- showRestInDropdown = true,
142
- dropdownProps,
143
- onVisibleTabsChange,
144
- contentStyle,
145
- preventScroll = false,
146
- tabPaneMotion = true,
147
- tabBarExtraContent,
148
- onChange,
149
- onTabClose,
150
- onTabClick,
151
- onAdd,
152
- renderTabBar,
153
- children,
154
- }: Props = $props();
155
-
156
- const baseId = useId('cd-tabs');
157
- const loc = useLocale();
158
-
159
- // --- 纯声明式自动收集 (红线 #2) ---
160
- // 仅当父未传 tabList(undefined)时启用:子 <Tabs.Pane> 在 mount/unmount/同步副作用里
161
- // 注册标签元数据。簿记 `paneOrder` 为普通数组(非 $state),避免在子注册 $effect 内
162
- // 既「读」又「写」同一 $state 数组(代理 push 读 length 再写元素)形成自循环;render 真正
163
- // 需要的「收集结果快照」仅由单独的 version $state 触发重建——子 effect 只 bump version,
164
- // 绝不读快照 → 副作用写 / 渲染读分离,无 effect_update_depth_exceeded。
165
- const usesDeclarativeTabs = $derived(tabListProp === undefined);
166
-
167
- interface PaneEntry extends TabPaneRegistration {
168
- id: number;
169
- }
170
- let paneNextId = 0;
171
- const paneOrder: PaneEntry[] = [];
172
- let paneVersion = $state(0);
173
-
174
- function bumpPaneVersion(): void {
175
- paneVersion += 1;
176
- }
177
-
178
- function registerPane(reg: TabPaneRegistration): number {
179
- const id = paneNextId++;
180
- paneOrder.push({ id, ...reg });
181
- bumpPaneVersion();
182
- return id;
183
- }
184
- function updatePane(id: number, reg: TabPaneRegistration): void {
185
- const entry = paneOrder.find((p) => p.id === id);
186
- if (!entry) return;
187
- // 仅在元数据实际变化时 bump(去重,避免无谓 render)。
188
- if (
189
- entry.itemKey === reg.itemKey &&
190
- entry.tab === reg.tab &&
191
- entry.disabled === reg.disabled &&
192
- entry.closable === reg.closable
193
- )
194
- return;
195
- Object.assign(entry, reg);
196
- bumpPaneVersion();
197
- }
198
- function unregisterPane(id: number): void {
199
- const i = paneOrder.findIndex((p) => p.id === id);
200
- if (i !== -1) {
201
- paneOrder.splice(i, 1);
202
- bumpPaneVersion();
203
- }
204
- }
205
-
206
- // 收集结果快照(纯派生,render 期只读):仅依赖 version(重建触发器)。
207
- // 重建只读普通数组 paneOrder,绝不在此写任何 $state。
208
- const collectedTabs = $derived.by<TabItem[]>(() => {
209
- void paneVersion; // 收集顺序/内容变化触发重建
210
- return paneOrder.map((p) => ({
211
- tab: p.tab,
212
- itemKey: p.itemKey,
213
- ...(p.disabled !== undefined ? { disabled: p.disabled } : {}),
214
- ...(p.closable !== undefined ? { closable: p.closable } : {}),
215
- }));
216
- });
217
-
218
- // 标签栏实际数据源:传 tabList 用之(数据驱动,向后兼容);否则用声明式收集结果。
219
- const tabList = $derived<TabItem[]>(usesDeclarativeTabs ? collectedTabs : (tabListProp ?? []));
220
-
221
- // top/bottom 为横向滚动(主轴 = inline / scrollLeft);left/right 为纵向(scrollTop)。
222
- const isVertical = $derived(tabPosition === 'left' || tabPosition === 'right');
223
-
224
- // dropdown 收纳仅在横向标签栏生效;纵向(left/right)始终走滚动(红线 #4 向后兼容:
225
- // 不传 overflow 时为 'scroll',行为与旧版完全一致)。
226
- // collapsible 为便捷开关:等价于 overflow='dropdown'(line 溢出折叠收纳)。
227
- const dropdownMode = $derived((overflow === 'dropdown' || collapsible) && !isVertical);
228
-
229
- // --- 受控 value (红线 #1):不无条件回写 value,仅 onChange ---
230
- const isControlled = $derived(value !== undefined);
231
- // inner 初值:defaultValue 优先,否则数据驱动取首项 key(声明式收集首项需待 pane 注册,
232
- // 故此处不读 derived tabList,初值可能为 undefined,由 activeKey 派生兜底首个可用标签)。
233
- let inner = $state<TabKey | undefined>(getInitialValue());
234
-
235
- function getInitialValue(): TabKey | undefined {
236
- if (defaultValue !== undefined) return defaultValue;
237
- return tabListProp?.[0]?.itemKey;
238
- }
239
-
240
- // activeKey 纯派生(红线 #1/#2,render 期只读):
241
- // 受控取 value;非受控取 inner,inner 未定(如声明式首帧或被关闭后失效)则兜底首个标签 key。
242
- const activeKey = $derived<TabKey | undefined>(
243
- isControlled ? value : (resolveUncontrolledKey()),
244
- );
245
-
246
- function resolveUncontrolledKey(): TabKey | undefined {
247
- if (inner !== undefined && tabList.some((t) => t.itemKey === inner)) return inner;
248
- return tabList[0]?.itemKey;
249
- }
250
-
251
- function setActive(key: TabKey) {
252
- if (key === activeKey) return;
253
- if (!isControlled) inner = key;
254
- onChange?.(key);
255
- }
256
-
257
- // 声明式 TabPane 通过 context 读取激活 key 决定显隐(红线 #2:getter,非数组注册)。
258
- // lazy/keepDOM 也经 context 暴露给 TabPane 决定挂载/保留策略。
259
- setTabsContext({
260
- getActiveKey: () => activeKey,
261
- getLazy: () => lazy,
262
- getKeepDOM: () => keepDOM,
263
- getTabId: tabId,
264
- getPanelId: panelId,
265
- registerPane,
266
- updatePane,
267
- unregisterPane,
268
- });
269
-
270
- function tabId(key: TabKey): string {
271
- return `${baseId}-tab-${key}`;
272
- }
273
- function panelId(key: TabKey): string {
274
- return `${baseId}-panel-${key}`;
275
- }
276
-
277
- function isClosable(item: TabItem): boolean {
278
- return item.closable ?? closable;
279
- }
280
-
281
- // 内部激活:仅切换激活态(disabled 拦截),不发 on:tabClick(无原始事件来源)。
282
- function activateTab(item: TabItem) {
283
- if (item.disabled) return;
284
- setActive(item.itemKey);
285
- }
286
-
287
- // 标签按钮点击:先发 spec §4 on:tabClick(含已选中、disabled 拦截前,可埋点),再激活。
288
- function handleTabClick(event: MouseEvent, item: TabItem) {
289
- onTabClick?.(item.itemKey, event);
290
- activateTab(item);
291
- }
292
-
293
- function closeTab(e: MouseEvent, item: TabItem) {
294
- e.stopPropagation();
295
- if (item.disabled) return;
296
- onTabClose?.(item.itemKey);
297
- }
298
-
299
- // --- 键盘导航 (红线 #2):roving tabindex 仅由 activeKey 决定,不读挂载数组 ---
300
- // tablist 内移动焦点到相邻未禁用 tab;auto 聚焦即激活,manual 需 Enter/Space。
301
- function enabledIndexes(): number[] {
302
- const out: number[] = [];
303
- for (let i = 0; i < tabList.length; i += 1) {
304
- if (!tabList[i]?.disabled) out.push(i);
305
- }
306
- return out;
307
- }
308
-
309
- function focusTab(index: number) {
310
- const item = tabList[index];
311
- if (!item) return;
312
- const el = document.getElementById(tabId(item.itemKey));
313
- el?.focus({ preventScroll });
314
- if (keyboardActivation === 'auto') setActive(item.itemKey);
315
- }
316
-
317
- function onTabKeydown(e: KeyboardEvent, item: TabItem) {
318
- const enabled = enabledIndexes();
319
- if (enabled.length === 0) return;
320
- const currentIdx = enabled.indexOf(tabList.indexOf(item));
321
- switch (e.key) {
322
- case 'ArrowRight':
323
- case 'ArrowDown': {
324
- e.preventDefault();
325
- const next = enabled[(currentIdx + 1) % enabled.length];
326
- if (next !== undefined) focusTab(next);
327
- break;
328
- }
329
- case 'ArrowLeft':
330
- case 'ArrowUp': {
331
- e.preventDefault();
332
- const prev = enabled[(currentIdx - 1 + enabled.length) % enabled.length];
333
- if (prev !== undefined) focusTab(prev);
334
- break;
335
- }
336
- case 'Home': {
337
- e.preventDefault();
338
- const first = enabled[0];
339
- if (first !== undefined) focusTab(first);
340
- break;
341
- }
342
- case 'End': {
343
- e.preventDefault();
344
- const lastIdx = enabled[enabled.length - 1];
345
- if (lastIdx !== undefined) focusTab(lastIdx);
346
- break;
347
- }
348
- case 'Enter':
349
- case ' ': {
350
- if (keyboardActivation === 'manual') {
351
- e.preventDefault();
352
- setActive(item.itemKey);
353
- }
354
- break;
355
- }
356
- default:
357
- break;
358
- }
359
- }
360
-
361
- // --- 溢出滚动 (红线 #3):几何测量/ResizeObserver/滚动操作全部命令式 + cleanup ---
362
- // navEl = 滚动视口(overflow:hidden,scrollLeft/scrollTop 在其上);listEl = 内部 role=tablist。
363
- // 横向比 scrollWidth>clientWidth,纵向比 scrollHeight>clientHeight 判断是否溢出。
364
- let navEl = $state<HTMLElement | null>(null);
365
- let listEl = $state<HTMLElement | null>(null);
366
-
367
- // 几何 $state(红线 #2):仅由命令式 measure() 写入,render 期只读,
368
- // 绝不在 render/$derived 里读 DOM 几何。
369
- let overflowing = $state(false); // 是否溢出(决定箭头是否渲染)
370
- let canScrollPrev = $state(false); // 前向箭头可用态
371
- let canScrollNext = $state(false); // 后向箭头可用态
372
-
373
- // 普通(非响应式)变量:rAF 句柄。
374
- let rafId = 0;
375
-
376
- // 每次滚动按钮点击的滚动步长(视口主轴尺寸的 ~80%)。
377
- const SCROLL_RATIO = 0.8;
378
-
379
- /** 命令式测量:读视口几何 → 写 overflowing / canScrollPrev / canScrollNext $state。 */
380
- function measure(): void {
381
- const nav = navEl;
382
- if (!nav) return;
383
- let viewport: number;
384
- let scrollSize: number;
385
- let scrollPos: number;
386
- if (isVertical) {
387
- viewport = nav.clientHeight;
388
- scrollSize = nav.scrollHeight;
389
- scrollPos = nav.scrollTop;
390
- } else {
391
- viewport = nav.clientWidth;
392
- scrollSize = nav.scrollWidth;
393
- scrollPos = nav.scrollLeft;
394
- }
395
- // 1px 容差,避免亚像素抖动。
396
- const over = scrollSize - viewport > 1;
397
- const prev = over && scrollPos > 1;
398
- const next = over && scrollPos < scrollSize - viewport - 1;
399
- if (over !== overflowing) overflowing = over;
400
- if (prev !== canScrollPrev) canScrollPrev = prev;
401
- if (next !== canScrollNext) canScrollNext = next;
402
- }
403
-
404
- function scheduleMeasure(): void {
405
- if (rafId) cancelAnimationFrame(rafId);
406
- rafId = requestAnimationFrame(() => {
407
- rafId = 0;
408
- measure();
409
- });
410
- }
411
-
412
- /** 命令式滚动一步(dir=-1 前 / 1 后)。 */
413
- function scrollByStep(dir: -1 | 1): void {
414
- const nav = navEl;
415
- if (!nav) return;
416
- if (isVertical) {
417
- const step = nav.clientHeight * SCROLL_RATIO * dir;
418
- nav.scrollTo({ top: nav.scrollTop + step, behavior: 'smooth' });
419
- } else {
420
- const step = nav.clientWidth * SCROLL_RATIO * dir;
421
- nav.scrollTo({ left: nav.scrollLeft + step, behavior: 'smooth' });
422
- }
423
- // 滚动后箭头可用态由 scroll 事件回调更新。
424
- }
425
-
426
- /** 把激活标签命令式滚动到可视区(若不在视口内)。 */
427
- function scrollActiveIntoView(): void {
428
- const nav = navEl;
429
- if (!nav || activeKey === undefined) return;
430
- const el = document.getElementById(tabId(activeKey));
431
- if (!el) return;
432
- if (isVertical) {
433
- const top = el.offsetTop;
434
- const bottom = top + el.offsetHeight;
435
- const viewTop = nav.scrollTop;
436
- const viewBottom = viewTop + nav.clientHeight;
437
- if (top < viewTop) nav.scrollTo({ top, behavior: 'smooth' });
438
- else if (bottom > viewBottom)
439
- nav.scrollTo({ top: bottom - nav.clientHeight, behavior: 'smooth' });
440
- } else {
441
- const left = el.offsetLeft;
442
- const right = left + el.offsetWidth;
443
- const viewLeft = nav.scrollLeft;
444
- const viewRight = viewLeft + nav.clientWidth;
445
- if (left < viewLeft) nav.scrollTo({ left, behavior: 'smooth' });
446
- else if (right > viewRight)
447
- nav.scrollTo({ left: right - nav.clientWidth, behavior: 'smooth' });
448
- }
449
- }
450
-
451
- // ResizeObserver:命令式创建 + observe(navEl) + observe(listEl),
452
- // 视口或内容尺寸变 → rAF 合批 measure;nav 滚动事件直接 measure。
453
- // 不依赖 overflowing/canScroll* $state,故 measure 写它们不会重跑此 effect(零循环)。
454
- $effect(() => {
455
- const nav = navEl;
456
- const list = listEl;
457
- if (!nav) return;
458
- measure();
459
- const ro = new ResizeObserver(() => scheduleMeasure());
460
- ro.observe(nav);
461
- if (list) ro.observe(list);
462
- const onScroll = (): void => measure();
463
- nav.addEventListener('scroll', onScroll, { passive: true });
464
- return () => {
465
- ro.disconnect();
466
- nav.removeEventListener('scroll', onScroll);
467
- if (rafId) {
468
- cancelAnimationFrame(rafId);
469
- rafId = 0;
470
- }
471
- };
472
- });
473
-
474
- // tabList 内容变化重测(仅依赖 tabList.length,不依赖几何 $state)。
475
- $effect(() => {
476
- void tabList.length;
477
- scheduleMeasure();
478
- });
479
-
480
- // 激活 key 变化时把激活标签滚到可视区(仅依赖 activeKey)。
481
- // 仅滚动模式需要——dropdown 模式由 measureDropdown 保证激活标签留可见。
482
- $effect(() => {
483
- void activeKey;
484
- if (dropdownMode) return;
485
- requestAnimationFrame(() => scrollActiveIntoView());
486
- });
487
-
488
- // --- dropdown 收纳 (红线 #2/#3):与 OverflowList 同构 ---
489
- // 离屏测量层渲染全部标签 + 「更多」样本,命令式读 offsetWidth → computeTabOverflow,
490
- // 把可见/溢出索引集写入 $state,render 期只读切片。measure 只由 RO(容器尺寸变)
491
- // 和 tabList/activeKey 变触发,绝不依赖 visible/overflow $state → 零循环。
492
- let barEl = $state<HTMLElement | null>(null); // dropdown 模式根(RO 观测对象 + containerSize 源)
493
- let measureEl = $state<HTMLElement | null>(null); // 离屏测量层
494
-
495
- // 几何 $state:仅由命令式 measureDropdown() 写入,render 期只读。初值全显(首帧降级防闪)。
496
- let visibleIdx = $state<number[]>([]);
497
- let overflowIdx = $state<number[]>([]);
498
-
499
- // 普通(非响应式)变量:rAF 句柄 + 上次结果指纹(去重写 $state)。
500
- let dropRaf = 0;
501
- let prevVisibleKey = '';
502
- let prevOverflowKey = '';
503
-
504
- /** 命令式测量(普通函数,绝不 $derived/不依赖 visible/overflow $state)。 */
505
- function measureDropdown(): void {
506
- const bar = barEl;
507
- const root = measureEl;
508
- if (!bar || !root) return;
509
- // 容器主轴可用宽:读 bar.clientWidth(block,随父宽变化,已扣 padding)。
510
- const containerSize = bar.clientWidth;
511
- const tabNodes = root.querySelectorAll<HTMLElement>('[data-cd-measure-tab]');
512
- const tabSizes: number[] = [];
513
- for (const node of tabNodes) tabSizes.push(node.offsetWidth);
514
- const moreNode = root.querySelector<HTMLElement>('[data-cd-measure-more]');
515
- const moreSize = moreNode ? moreNode.offsetWidth : 0;
516
- // gap 与 CSS 实际像素一致:dropdown 模式标签间距。
517
- const gapPx = size === 'small' ? 0 : size === 'large' ? 4 : 2;
518
- const activeIndex = activeKey === undefined ? -1 : tabList.findIndex((t) => t.itemKey === activeKey);
519
- const r = computeTabOverflow({ tabSizes, containerSize, moreSize, gap: gapPx, activeIndex });
520
- // 仅在结果实际变化时写 $state(写 $state 触发 render,但不回触发 measure)。
521
- const vKey = r.visibleIndexes.join(',');
522
- const oKey = r.overflowIndexes.join(',');
523
- if (vKey !== prevVisibleKey) {
524
- prevVisibleKey = vKey;
525
- visibleIdx = r.visibleIndexes;
526
- }
527
- if (oKey !== prevOverflowKey) {
528
- prevOverflowKey = oKey;
529
- overflowIdx = r.overflowIndexes;
530
- }
531
- }
532
-
533
- function scheduleDropMeasure(): void {
534
- if (dropRaf) cancelAnimationFrame(dropRaf);
535
- dropRaf = requestAnimationFrame(() => {
536
- dropRaf = 0;
537
- measureDropdown();
538
- });
539
- }
540
-
541
- // ResizeObserver:dropdown 模式命令式观测 barEl;容器尺寸变 → rAF 合批 measureDropdown。
542
- // 依赖 barEl + dropdownMode;不依赖 visible/overflow $state → 写它们不重跑此 effect。
543
- $effect(() => {
544
- if (!dropdownMode) return;
545
- const bar = barEl;
546
- if (!bar) return;
547
- measureDropdown();
548
- const ro = new ResizeObserver(() => scheduleDropMeasure());
549
- ro.observe(bar);
550
- return () => {
551
- ro.disconnect();
552
- if (dropRaf) {
553
- cancelAnimationFrame(dropRaf);
554
- dropRaf = 0;
555
- }
556
- };
557
- });
558
-
559
- // tabList 内容 / 激活标签变化 → 重测(仅依赖 tabList.length / activeKey,不依赖几何 $state)。
560
- $effect(() => {
561
- if (!dropdownMode) return;
562
- void tabList.length;
563
- void activeKey;
564
- scheduleDropMeasure();
565
- });
566
-
567
- // 渲染派生(红线 #2):可见/溢出标签集为纯 $derived,仅依赖 tabList + 索引集,不读 DOM。
568
- const visibleTabs = $derived(visibleIdx.map((i) => tabList[i]).filter(Boolean) as TabItem[]);
569
- const overflowTabs = $derived(overflowIdx.map((i) => tabList[i]).filter(Boolean) as TabItem[]);
570
-
571
- // onVisibleTabsChange:dropdown 模式下可见 tabs 变化时回调(仅依赖 visibleTabs,不读 DOM)。
572
- // 用普通变量存上次指纹,仅在真正变化时发出回调(去重),命令式 $effect,不返回 $derived。
573
- let prevVisibleTabsKey = '';
574
- $effect(() => {
575
- if (!dropdownMode || !onVisibleTabsChange) return;
576
- const key = visibleTabs.map((t) => t.itemKey).join(',');
577
- if (key === prevVisibleTabsKey) return;
578
- prevVisibleTabsKey = key;
579
- onVisibleTabsChange(visibleTabs.map((t) => t.itemKey));
580
- });
581
-
582
- // 溢出集中是否含激活标签(决定「更多」触发器高亮)。
583
- const moreActive = $derived(
584
- activeKey !== undefined && overflowTabs.some((t) => t.itemKey === activeKey),
585
- );
586
-
587
- // more 配置解析:支持 number 简写或对象形式
588
- const moreCount = $derived(
589
- typeof more === 'number' ? more : (more?.count ?? undefined),
590
- );
591
- const moreRender = $derived(
592
- typeof more === 'object' && more !== null ? more.render : undefined,
593
- );
594
- const moreDropdownProps = $derived(
595
- typeof more === 'object' && more !== null ? (more.dropdownProps ?? {}) : {},
596
- );
597
-
598
- // showRestInDropdown=false 时,「更多」下拉中不展示收起 tabs(只展示 overflow tabs 中被 moreCount 限制的部分)
599
- // 当前实现:showRestInDropdown=false 时隐藏溢出下拉(不渲染 Dropdown)
600
- const moreItems = $derived<DropdownItem[]>(
601
- showRestInDropdown
602
- ? overflowTabs.map((t) =>
603
- t.disabled ? { key: t.itemKey, label: t.tab, disabled: true } : { key: t.itemKey, label: t.tab },
604
- )
605
- : [],
606
- );
607
-
608
- // 「更多」按钮是否显示:有溢出 tabs 且 showRestInDropdown=true
609
- const showMoreDropdown = $derived(overflowTabs.length > 0 && showRestInDropdown);
610
-
611
- // contentStyle:字符串直接用;对象转 CSS 字符串。
612
- const contentStyleStr = $derived(
613
- contentStyle === undefined
614
- ? undefined
615
- : typeof contentStyle === 'string'
616
- ? contentStyle
617
- : Object.entries(contentStyle)
618
- .map(([k, v]) => `${k.replace(/([A-Z])/g, '-$1').toLowerCase()}:${v}`)
619
- .join(';'),
620
- );
621
-
622
- function onMoreSelect(key: string | number): void {
623
- const item = tabList.find((t) => t.itemKey === key);
624
- // 「更多」下拉项选择无原始 MouseEvent,仅激活(不发 on:tabClick)。
625
- if (item) activateTab(item);
626
- }
627
-
628
- const cls = $derived(
629
- [
630
- 'cd-tabs',
631
- `cd-tabs--${type}`,
632
- `cd-tabs--${size}`,
633
- `cd-tabs--${tabPosition}`,
634
- dropdownMode ? 'cd-tabs--dropdown' : '',
635
- !dropdownMode && overflowing ? 'cd-tabs--scrollable' : '',
636
- ]
637
- .filter(Boolean)
638
- .join(' '),
639
- );
640
-
641
- // 单个标签的渲染片段在 scroll/dropdown 两种模式共用(避免重复模板)。
642
- </script>
643
-
644
- <!-- 单个标签片段:scroll/dropdown 两模式共用,保证渲染/键盘/关闭逻辑唯一来源。 -->
645
- {#snippet tabNode(item: TabItem)}
646
- {@const selected = item.itemKey === activeKey}
647
- <div
648
- class="cd-tabs__tab"
649
- class:cd-tabs__tab--active={selected}
650
- class:cd-tabs__tab--disabled={item.disabled}
651
- >
652
- <button
653
- type="button"
654
- class="cd-tabs__tab-btn"
655
- role="tab"
656
- id={tabId(item.itemKey)}
657
- aria-selected={selected}
658
- aria-controls={panelId(item.itemKey)}
659
- tabindex={selected ? 0 : -1}
660
- disabled={item.disabled ?? false}
661
- onclick={(e) => handleTabClick(e, item)}
662
- onkeydown={(e) => onTabKeydown(e, item)}
663
- >
664
- {item.tab}
665
- </button>
666
- {#if isClosable(item)}
667
- <button
668
- type="button"
669
- class="cd-tabs__close"
670
- aria-label={loc().t('Tabs.closeTab', { tab: item.tab })}
671
- tabindex={selected ? 0 : -1}
672
- onclick={(e) => closeTab(e, item)}
673
- >
674
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
675
- <path
676
- fill="currentColor"
677
- d="M9.1 8l3.2-3.2-1.1-1.1L8 6.9 4.8 3.7 3.7 4.8 6.9 8l-3.2 3.2 1.1 1.1L8 9.1l3.2 3.2 1.1-1.1L9.1 8Z"
678
- />
679
- </svg>
680
- </button>
681
- {/if}
682
- </div>
683
- {/snippet}
684
-
685
- {#snippet addBtn()}
686
- {#if addable}
687
- <button
688
- type="button"
689
- class="cd-tabs__add"
690
- aria-label={loc().t('Tabs.add')}
691
- onclick={() => onAdd?.()}
692
- >
693
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
694
- <path fill="currentColor" d="M8.8 7.2V2.5H7.2v4.7H2.5v1.6h4.7v4.7h1.6V8.8h4.7V7.2H8.8Z" />
695
- </svg>
696
- </button>
697
- {/if}
698
- {/snippet}
699
-
700
- <div class={cls} class:cd-tabs--no-motion={!tabPaneMotion}>
701
- {#if renderTabBar}
702
- <!-- renderTabBar:调用方完全自绘标签栏;跳过内置标签栏/溢出逻辑,面板内容仍按 activeKey 显隐。 -->
703
- {@render renderTabBar(tabList, activeKey, setActive)}
704
- {:else if dropdownMode}
705
- <!-- dropdown 收纳:只渲染可见标签,溢出标签进末尾「更多」下拉。 -->
706
- <div class="cd-tabs__bar" bind:this={barEl}>
707
- <div class="cd-tabs__list" role="tablist">
708
- {#each visibleTabs as item (item.itemKey)}
709
- {@render tabNode(item)}
710
- {/each}
711
- </div>
712
-
713
- {#if showMoreDropdown}
714
- <div class="cd-tabs__more" class:cd-tabs__more--active={moreActive}>
715
- <Dropdown items={moreItems} trigger="click" onSelect={onMoreSelect} {...(moreDropdownProps ?? {})} {...(dropdownProps ?? {})}>
716
- {#snippet triggerContent()}
717
- {#if moreRender}
718
- {@render moreRender()}
719
- {:else}
720
- <button
721
- type="button"
722
- class="cd-tabs__more-btn"
723
- aria-label={loc().t('Tabs.more')}
724
- aria-haspopup="menu"
725
- >
726
- {loc().t('Tabs.more')}
727
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
728
- <path fill="currentColor" d="M3.2 5.5 8 10.3l4.8-4.8 1.1 1.1L8 12.5 2.1 6.6l1.1-1.1Z" />
729
- </svg>
730
- </button>
731
- {/if}
732
- {/snippet}
733
- </Dropdown>
734
- </div>
735
- {/if}
736
-
737
- {@render addBtn()}
738
-
739
- {#if tabBarExtraContent}
740
- <div class="cd-tabs__extra">{@render tabBarExtraContent()}</div>
741
- {/if}
742
- </div>
743
-
744
- <!-- 离屏测量层:渲染全部标签 + 「更多」样本,仅供命令式测宽,不进可视布局/Tab 序。 -->
745
- <div class="cd-tabs__measure" bind:this={measureEl} aria-hidden="true">
746
- {#each tabList as item (item.itemKey)}
747
- <div class="cd-tabs__tab" data-cd-measure-tab>
748
- <span class="cd-tabs__tab-btn">{item.tab}</span>
749
- {#if isClosable(item)}<span class="cd-tabs__close" style="width:18px"></span>{/if}
750
- </div>
751
- {/each}
752
- <span class="cd-tabs__more-btn" data-cd-measure-more>
753
- {loc().t('Tabs.more')}
754
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
755
- <path fill="currentColor" d="M3.2 5.5 8 10.3l4.8-4.8 1.1 1.1L8 12.5 2.1 6.6l1.1-1.1Z" />
756
- </svg>
757
- </span>
758
- </div>
759
- {:else}
760
- <!-- scroll 模式(默认):前/后箭头 + 可滚动视口,行为与旧版一致。 -->
761
- <div class="cd-tabs__bar">
762
- {#if overflowing && (arrowPosition === 'start' || arrowPosition === 'both')}
763
- {#if renderArrow}
764
- {@render renderArrow({ type: 'start', onClick: () => scrollByStep(-1) })}
765
- {:else}
766
- <button
767
- type="button"
768
- class="cd-tabs__scroll-btn cd-tabs__scroll-btn--prev"
769
- aria-label={loc().t('Tabs.scrollPrev')}
770
- disabled={!canScrollPrev}
771
- tabindex="-1"
772
- onclick={() => scrollByStep(-1)}
773
- >
774
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
775
- <path fill="currentColor" d="M10.5 3.2 5.7 8l4.8 4.8 1.1-1.1L7.9 8l3.7-3.7-1.1-1.1Z" />
776
- </svg>
777
- </button>
778
- {/if}
779
- {/if}
780
-
781
- <div class="cd-tabs__nav" bind:this={navEl}>
782
- <div
783
- class="cd-tabs__list"
784
- role="tablist"
785
- aria-orientation={isVertical ? 'vertical' : undefined}
786
- bind:this={listEl}
787
- >
788
- {#each tabList as item (item.itemKey)}
789
- {@render tabNode(item)}
790
- {/each}
791
- </div>
792
- </div>
793
-
794
- {#if overflowing && (arrowPosition === 'end' || arrowPosition === 'both')}
795
- {#if renderArrow}
796
- {@render renderArrow({ type: 'end', onClick: () => scrollByStep(1) })}
797
- {:else}
798
- <button
799
- type="button"
800
- class="cd-tabs__scroll-btn cd-tabs__scroll-btn--next"
801
- aria-label={loc().t('Tabs.scrollNext')}
802
- disabled={!canScrollNext}
803
- tabindex="-1"
804
- onclick={() => scrollByStep(1)}
805
- >
806
- <svg viewBox="0 0 16 16" width="12" height="12" aria-hidden="true" focusable="false">
807
- <path fill="currentColor" d="M5.5 3.2 10.3 8l-4.8 4.8-1.1-1.1L8.1 8 4.4 4.3l1.1-1.1Z" />
808
- </svg>
809
- </button>
810
- {/if}
811
- {/if}
812
-
813
- {@render addBtn()}
814
-
815
- {#if tabBarExtraContent}
816
- <div class="cd-tabs__extra">{@render tabBarExtraContent()}</div>
817
- {/if}
818
- </div>
819
- {/if}
820
-
821
- {#if children}
822
- <div class="cd-tabs__content" style={contentStyleStr}>
823
- {@render children()}
824
- </div>
825
- {/if}
826
- </div>
827
-
828
- <style>
829
- .cd-tabs {
830
- display: flex;
831
- flex-direction: column;
832
- font-size: var(--cd-tabs-tab-font-size);
833
- }
834
- .cd-tabs__bar {
835
- display: flex;
836
- flex-direction: row;
837
- align-items: stretch;
838
- }
839
- .cd-tabs--line .cd-tabs__bar {
840
- border-block-end: 1px solid var(--cd-tabs-bar-border);
841
- }
842
-
843
- /* 滚动视口:裁剪溢出,主轴可滚动;隐藏原生滚动条(滚动由箭头驱动)。 */
844
- .cd-tabs__nav {
845
- flex: 1 1 auto;
846
- min-inline-size: 0;
847
- overflow: hidden;
848
- }
849
- .cd-tabs__list {
850
- display: flex;
851
- flex-direction: row;
852
- flex-wrap: nowrap;
853
- align-items: stretch;
854
- }
855
-
856
- /* 滚动箭头 + 新增按钮:不收缩,垂直居中对齐标签栏。 */
857
- .cd-tabs__scroll-btn,
858
- .cd-tabs__add {
859
- flex: 0 0 auto;
860
- display: inline-flex;
861
- align-items: center;
862
- justify-content: center;
863
- padding: 0 var(--cd-spacing-1);
864
- border: none;
865
- background: transparent;
866
- color: var(--cd-tabs-tab-color);
867
- cursor: pointer;
868
- transition: color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
869
- }
870
- .cd-tabs__scroll-btn:hover:not(:disabled),
871
- .cd-tabs__add:hover {
872
- color: var(--cd-tabs-tab-color-active);
873
- }
874
- .cd-tabs__scroll-btn:disabled {
875
- color: var(--cd-tabs-tab-color-disabled);
876
- cursor: not-allowed;
877
- }
878
- .cd-tabs__scroll-btn:focus-visible,
879
- .cd-tabs__add:focus-visible {
880
- outline: none;
881
- box-shadow: var(--cd-focus-ring);
882
- border-radius: var(--cd-radius-1);
883
- }
884
-
885
- /* --- overflow=dropdown:bar 为可换行无关的单行 flex,溢出标签收进「更多」--- */
886
- .cd-tabs--dropdown .cd-tabs__bar {
887
- position: relative;
888
- flex-wrap: nowrap;
889
- min-inline-size: 0;
890
- }
891
- .cd-tabs--dropdown .cd-tabs__list {
892
- flex: 0 1 auto;
893
- min-inline-size: 0;
894
- overflow: hidden;
895
- }
896
- .cd-tabs__more {
897
- flex: 0 0 auto;
898
- display: inline-flex;
899
- align-items: stretch;
900
- }
901
- .cd-tabs__more-btn {
902
- display: inline-flex;
903
- align-items: center;
904
- gap: var(--cd-spacing-1);
905
- margin: 0;
906
- padding: var(--cd-tabs-tab-padding);
907
- border: none;
908
- background: transparent;
909
- color: var(--cd-tabs-tab-color);
910
- font: inherit;
911
- white-space: nowrap;
912
- cursor: pointer;
913
- transition: color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
914
- }
915
- .cd-tabs__more-btn:hover {
916
- color: var(--cd-tabs-tab-color-active);
917
- }
918
- .cd-tabs__more--active .cd-tabs__more-btn {
919
- color: var(--cd-tabs-tab-color-active);
920
- }
921
- .cd-tabs__more-btn:focus-visible {
922
- outline: none;
923
- box-shadow: var(--cd-focus-ring);
924
- border-radius: var(--cd-radius-1);
925
- }
926
- /* 离屏测量层:渲染全部标签,不可见、不可点、不进 Tab 序、不参与可视布局。 */
927
- .cd-tabs__measure {
928
- position: absolute;
929
- inset-block-start: 0;
930
- inset-inline-start: 0;
931
- display: flex;
932
- flex-direction: row;
933
- flex-wrap: nowrap;
934
- align-items: stretch;
935
- visibility: hidden;
936
- pointer-events: none;
937
- z-index: -1;
938
- }
939
-
940
- /* --- type=button:分段按钮组,整体包一层 fill 底,选中段填主色 --- */
941
- .cd-tabs--button .cd-tabs__bar {
942
- border-block-end: none;
943
- }
944
- .cd-tabs--button .cd-tabs__list {
945
- gap: var(--cd-tabs-button-gap);
946
- padding: var(--cd-tabs-button-pad);
947
- background: var(--cd-tabs-button-bg);
948
- border-radius: var(--cd-tabs-card-radius);
949
- }
950
- .cd-tabs--button .cd-tabs__tab {
951
- border-radius: var(--cd-tabs-card-radius);
952
- }
953
- .cd-tabs--button .cd-tabs__tab-btn {
954
- border: none;
955
- border-radius: var(--cd-tabs-card-radius);
956
- }
957
- .cd-tabs--button .cd-tabs__tab:hover:not(.cd-tabs__tab--disabled):not(.cd-tabs__tab--active) {
958
- background: var(--cd-tabs-button-bg-hover);
959
- }
960
- .cd-tabs--button .cd-tabs__tab--active {
961
- background: var(--cd-tabs-button-bg-active);
962
- }
963
- .cd-tabs--button .cd-tabs__tab--active .cd-tabs__tab-btn {
964
- color: var(--cd-tabs-button-color-active);
965
- }
966
-
967
- /* --- tabPosition: bottom(bar 在内容下方)--- */
968
- .cd-tabs--bottom {
969
- flex-direction: column-reverse;
970
- }
971
- .cd-tabs--bottom.cd-tabs--line .cd-tabs__bar {
972
- border-block-end: none;
973
- border-block-start: 1px solid var(--cd-tabs-bar-border);
974
- }
975
- .cd-tabs--bottom.cd-tabs--line .cd-tabs__tab-btn {
976
- border-block-end: none;
977
- border-block-start: var(--cd-tabs-ink-height) solid transparent;
978
- }
979
- .cd-tabs--bottom.cd-tabs--line .cd-tabs__tab--active .cd-tabs__tab-btn {
980
- border-block-start-color: var(--cd-tabs-ink-color);
981
- }
982
- .cd-tabs--bottom .cd-tabs__content {
983
- padding-block-start: 0;
984
- padding-block-end: var(--cd-spacing-3);
985
- }
986
-
987
- /* --- tabPosition: left / right(bar 竖向在侧)--- */
988
- .cd-tabs--left,
989
- .cd-tabs--right {
990
- flex-direction: row;
991
- }
992
- .cd-tabs--right {
993
- flex-direction: row-reverse;
994
- }
995
- .cd-tabs--left .cd-tabs__bar,
996
- .cd-tabs--right .cd-tabs__bar {
997
- flex-direction: column;
998
- align-items: stretch;
999
- /* 纵向滚动需要可约束的高度:随内容/父容器,溢出时由 nav 裁剪滚动。 */
1000
- max-block-size: 100%;
1001
- }
1002
- /* 纵向:nav 沿块轴裁剪滚动,list 纵向排列。 */
1003
- .cd-tabs--left .cd-tabs__nav,
1004
- .cd-tabs--right .cd-tabs__nav {
1005
- flex: 1 1 auto;
1006
- min-block-size: 0;
1007
- min-inline-size: 0;
1008
- }
1009
- .cd-tabs--left .cd-tabs__list,
1010
- .cd-tabs--right .cd-tabs__list {
1011
- flex-direction: column;
1012
- align-items: stretch;
1013
- }
1014
- .cd-tabs--left.cd-tabs--line .cd-tabs__bar {
1015
- border-block-end: none;
1016
- border-inline-end: 1px solid var(--cd-tabs-bar-border);
1017
- }
1018
- .cd-tabs--right.cd-tabs--line .cd-tabs__bar {
1019
- border-block-end: none;
1020
- border-inline-start: 1px solid var(--cd-tabs-bar-border);
1021
- }
1022
- .cd-tabs--left .cd-tabs__tab-btn,
1023
- .cd-tabs--right .cd-tabs__tab-btn {
1024
- inline-size: 100%;
1025
- text-align: start;
1026
- }
1027
- .cd-tabs--left.cd-tabs--line .cd-tabs__tab-btn {
1028
- border-block-end: none;
1029
- border-inline-end: var(--cd-tabs-ink-height) solid transparent;
1030
- }
1031
- .cd-tabs--right.cd-tabs--line .cd-tabs__tab-btn {
1032
- border-block-end: none;
1033
- border-inline-start: var(--cd-tabs-ink-height) solid transparent;
1034
- }
1035
- .cd-tabs--left.cd-tabs--line .cd-tabs__tab--active .cd-tabs__tab-btn {
1036
- border-inline-end-color: var(--cd-tabs-ink-color);
1037
- }
1038
- .cd-tabs--right.cd-tabs--line .cd-tabs__tab--active .cd-tabs__tab-btn {
1039
- border-inline-start-color: var(--cd-tabs-ink-color);
1040
- }
1041
- .cd-tabs--left .cd-tabs__content,
1042
- .cd-tabs--right .cd-tabs__content {
1043
- flex: 1 1 auto;
1044
- padding-block-start: 0;
1045
- padding-inline: var(--cd-spacing-4);
1046
- }
1047
- .cd-tabs__tab {
1048
- flex: 0 0 auto;
1049
- display: inline-flex;
1050
- align-items: center;
1051
- gap: var(--cd-spacing-1);
1052
- white-space: nowrap;
1053
- }
1054
- .cd-tabs--card .cd-tabs__tab {
1055
- background: var(--cd-tabs-card-bg);
1056
- border-radius: var(--cd-tabs-card-radius) var(--cd-tabs-card-radius) 0 0;
1057
- }
1058
- .cd-tabs--card .cd-tabs__tab--active {
1059
- background: var(--cd-tabs-card-bg-active);
1060
- }
1061
- .cd-tabs__tab-btn {
1062
- margin: 0;
1063
- padding: var(--cd-tabs-tab-padding);
1064
- border: none;
1065
- background: transparent;
1066
- color: var(--cd-tabs-tab-color);
1067
- font: inherit;
1068
- cursor: pointer;
1069
- transition: color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
1070
- }
1071
- .cd-tabs--line .cd-tabs__tab-btn {
1072
- border-block-end: var(--cd-tabs-ink-height) solid transparent;
1073
- }
1074
- .cd-tabs__tab--active .cd-tabs__tab-btn {
1075
- color: var(--cd-tabs-tab-color-active);
1076
- }
1077
- .cd-tabs--line .cd-tabs__tab--active .cd-tabs__tab-btn {
1078
- border-block-end-color: var(--cd-tabs-ink-color);
1079
- }
1080
- .cd-tabs__tab-btn:focus-visible {
1081
- outline: none;
1082
- box-shadow: var(--cd-focus-ring);
1083
- border-radius: var(--cd-radius-1);
1084
- }
1085
- .cd-tabs__tab--disabled .cd-tabs__tab-btn {
1086
- color: var(--cd-tabs-tab-color-disabled);
1087
- cursor: not-allowed;
1088
- }
1089
- .cd-tabs__close {
1090
- display: inline-flex;
1091
- align-items: center;
1092
- justify-content: center;
1093
- margin-inline-end: var(--cd-spacing-2);
1094
- padding: 0;
1095
- border: none;
1096
- background: transparent;
1097
- color: var(--cd-tabs-tab-color);
1098
- cursor: pointer;
1099
- }
1100
- .cd-tabs__close:hover {
1101
- color: var(--cd-tabs-tab-color-active);
1102
- }
1103
- .cd-tabs__close:focus-visible {
1104
- outline: none;
1105
- box-shadow: var(--cd-focus-ring);
1106
- border-radius: var(--cd-radius-1);
1107
- }
1108
- .cd-tabs__content {
1109
- padding-block-start: var(--cd-spacing-3);
1110
- }
1111
- /* tabBarExtraContent:标签栏右侧额外内容,靠右对齐 */
1112
- .cd-tabs__extra {
1113
- flex: 1 0 auto;
1114
- display: flex;
1115
- align-items: center;
1116
- justify-content: flex-end;
1117
- padding-inline-start: var(--cd-spacing-2);
1118
- }
1119
- /* tabPaneMotion=false:禁用面板切换过渡动画 */
1120
- .cd-tabs--no-motion .cd-tabs__content {
1121
- transition: none;
1122
- }
1123
- @media (prefers-reduced-motion: reduce) {
1124
- .cd-tabs__tab-btn {
1125
- transition: none;
1126
- }
1127
- }
1128
- </style>