@chenzy-design/svelte 0.1.0 → 0.2.0

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 (476) hide show
  1. package/dist/components.json +1 -1
  2. package/package.json +7 -8
  3. package/src/_floating/use-floating.ts +0 -208
  4. package/src/anchor/Anchor.a11y.test.ts +0 -49
  5. package/src/anchor/Anchor.kbd.test.ts +0 -70
  6. package/src/anchor/Anchor.svelte +0 -359
  7. package/src/anchor/AnchorKbdFixture.svelte +0 -24
  8. package/src/anchor/index.ts +0 -3
  9. package/src/anchor/meta.ts +0 -70
  10. package/src/anchor/types.ts +0 -8
  11. package/src/autocomplete/AutoComplete.a11y.test.ts +0 -49
  12. package/src/autocomplete/AutoComplete.kbd.test.ts +0 -69
  13. package/src/autocomplete/AutoComplete.svelte +0 -706
  14. package/src/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
  15. package/src/autocomplete/index.ts +0 -2
  16. package/src/autocomplete/meta.ts +0 -41
  17. package/src/avatar/Avatar.a11y.test.ts +0 -37
  18. package/src/avatar/Avatar.svelte +0 -315
  19. package/src/avatar/AvatarGroup.svelte +0 -142
  20. package/src/avatar/context.ts +0 -21
  21. package/src/avatar/index.ts +0 -10
  22. package/src/avatar/meta.ts +0 -73
  23. package/src/back-top/BackTop.a11y.test.ts +0 -40
  24. package/src/back-top/BackTop.svelte +0 -314
  25. package/src/back-top/index.ts +0 -2
  26. package/src/back-top/meta.ts +0 -108
  27. package/src/badge/Badge.a11y.test.ts +0 -35
  28. package/src/badge/Badge.svelte +0 -328
  29. package/src/badge/BadgeA11yFixture.svelte +0 -18
  30. package/src/badge/index.ts +0 -2
  31. package/src/badge/meta.ts +0 -62
  32. package/src/banner/Banner.a11y.test.ts +0 -48
  33. package/src/banner/Banner.svelte +0 -368
  34. package/src/banner/index.ts +0 -3
  35. package/src/banner/meta.ts +0 -121
  36. package/src/breadcrumb/Breadcrumb.a11y.test.ts +0 -35
  37. package/src/breadcrumb/Breadcrumb.kbd.test.ts +0 -45
  38. package/src/breadcrumb/Breadcrumb.svelte +0 -414
  39. package/src/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
  40. package/src/breadcrumb/Item.svelte +0 -77
  41. package/src/breadcrumb/context.ts +0 -27
  42. package/src/breadcrumb/index.ts +0 -21
  43. package/src/breadcrumb/meta.ts +0 -128
  44. package/src/breadcrumb/types.ts +0 -4
  45. package/src/button/Button.a11y.test.ts +0 -54
  46. package/src/button/Button.svelte +0 -176
  47. package/src/button/index.ts +0 -2
  48. package/src/button/meta.ts +0 -28
  49. package/src/calendar/Calendar.a11y.test.ts +0 -51
  50. package/src/calendar/Calendar.kbd.test.ts +0 -59
  51. package/src/calendar/Calendar.svelte +0 -1344
  52. package/src/calendar/CalendarKbdFixture.svelte +0 -23
  53. package/src/calendar/index.ts +0 -3
  54. package/src/calendar/meta.ts +0 -117
  55. package/src/card/Card.a11y.test.ts +0 -38
  56. package/src/card/Card.svelte +0 -341
  57. package/src/card/CardMeta.svelte +0 -60
  58. package/src/card/index.ts +0 -8
  59. package/src/card/meta.ts +0 -83
  60. package/src/carousel/Carousel.a11y.test.ts +0 -53
  61. package/src/carousel/Carousel.kbd.test.ts +0 -67
  62. package/src/carousel/Carousel.svelte +0 -806
  63. package/src/carousel/CarouselA11yFixture.svelte +0 -25
  64. package/src/carousel/CarouselKbdFixture.svelte +0 -24
  65. package/src/carousel/index.ts +0 -2
  66. package/src/carousel/meta.ts +0 -74
  67. package/src/cascader/Cascader.a11y.test.ts +0 -59
  68. package/src/cascader/Cascader.kbd.test.ts +0 -56
  69. package/src/cascader/Cascader.svelte +0 -1570
  70. package/src/cascader/CascaderKbdFixture.svelte +0 -31
  71. package/src/cascader/index.ts +0 -3
  72. package/src/cascader/meta.ts +0 -57
  73. package/src/cascader/types.ts +0 -9
  74. package/src/checkbox/Checkbox.svelte +0 -281
  75. package/src/checkbox/CheckboxGroup.a11y.test.ts +0 -43
  76. package/src/checkbox/CheckboxGroup.kbd.test.ts +0 -40
  77. package/src/checkbox/CheckboxGroup.svelte +0 -122
  78. package/src/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
  79. package/src/checkbox/context.ts +0 -31
  80. package/src/checkbox/index.ts +0 -4
  81. package/src/checkbox/meta.ts +0 -67
  82. package/src/collapse/Collapse.a11y.test.ts +0 -53
  83. package/src/collapse/Collapse.kbd.test.ts +0 -89
  84. package/src/collapse/Collapse.svelte +0 -406
  85. package/src/collapse/CollapseA11yFixture.svelte +0 -27
  86. package/src/collapse/CollapseKbdFixture.svelte +0 -25
  87. package/src/collapse/CollapsePanel.svelte +0 -102
  88. package/src/collapse/context.ts +0 -54
  89. package/src/collapse/index.ts +0 -17
  90. package/src/collapse/meta.ts +0 -79
  91. package/src/collapse/types.ts +0 -5
  92. package/src/color-picker/ColorPicker.a11y.test.ts +0 -60
  93. package/src/color-picker/ColorPicker.kbd.test.ts +0 -73
  94. package/src/color-picker/ColorPicker.svelte +0 -985
  95. package/src/color-picker/ColorPickerKbdFixture.svelte +0 -25
  96. package/src/color-picker/index.ts +0 -2
  97. package/src/color-picker/meta.ts +0 -47
  98. package/src/config-provider/ConfigProvider.svelte +0 -227
  99. package/src/config-provider/context.ts +0 -29
  100. package/src/config-provider/index.ts +0 -48
  101. package/src/config-provider/meta.ts +0 -128
  102. package/src/date-picker/DatePicker.a11y.test.ts +0 -45
  103. package/src/date-picker/DatePicker.kbd.test.ts +0 -71
  104. package/src/date-picker/DatePicker.svelte +0 -1798
  105. package/src/date-picker/DatePickerKbdFixture.svelte +0 -26
  106. package/src/date-picker/RangePicker.kbd.test.ts +0 -69
  107. package/src/date-picker/RangePicker.svelte +0 -775
  108. package/src/date-picker/RangePickerKbdFixture.svelte +0 -30
  109. package/src/date-picker/index.ts +0 -4
  110. package/src/date-picker/meta.ts +0 -67
  111. package/src/date-picker/range-meta.ts +0 -44
  112. package/src/descriptions/Descriptions.a11y.test.ts +0 -33
  113. package/src/descriptions/Descriptions.svelte +0 -287
  114. package/src/descriptions/DescriptionsItem.svelte +0 -43
  115. package/src/descriptions/context.ts +0 -21
  116. package/src/descriptions/index.ts +0 -16
  117. package/src/descriptions/meta.ts +0 -45
  118. package/src/descriptions/types.ts +0 -6
  119. package/src/divider/Divider.a11y.test.ts +0 -23
  120. package/src/divider/Divider.svelte +0 -154
  121. package/src/divider/index.ts +0 -2
  122. package/src/divider/meta.ts +0 -23
  123. package/src/drawer/Drawer.a11y.test.ts +0 -41
  124. package/src/drawer/Drawer.kbd.test.ts +0 -67
  125. package/src/drawer/Drawer.svelte +0 -554
  126. package/src/drawer/DrawerKbdFixture.svelte +0 -28
  127. package/src/drawer/index.ts +0 -2
  128. package/src/drawer/meta.ts +0 -127
  129. package/src/dropdown/Dropdown.a11y.test.ts +0 -46
  130. package/src/dropdown/Dropdown.kbd.test.ts +0 -56
  131. package/src/dropdown/Dropdown.svelte +0 -573
  132. package/src/dropdown/DropdownA11yFixture.svelte +0 -24
  133. package/src/dropdown/DropdownDivider.svelte +0 -17
  134. package/src/dropdown/DropdownItem.svelte +0 -127
  135. package/src/dropdown/DropdownItemNode.svelte +0 -355
  136. package/src/dropdown/DropdownKbdFixture.svelte +0 -26
  137. package/src/dropdown/DropdownMenu.svelte +0 -24
  138. package/src/dropdown/DropdownSubMenu.svelte +0 -212
  139. package/src/dropdown/DropdownTitle.svelte +0 -34
  140. package/src/dropdown/context.ts +0 -13
  141. package/src/dropdown/index.ts +0 -36
  142. package/src/dropdown/meta.ts +0 -97
  143. package/src/dropdown/types.test.ts +0 -50
  144. package/src/dropdown/types.ts +0 -67
  145. package/src/empty/Empty.a11y.test.ts +0 -24
  146. package/src/empty/Empty.svelte +0 -304
  147. package/src/empty/index.ts +0 -2
  148. package/src/empty/meta.ts +0 -41
  149. package/src/form/Field.svelte +0 -492
  150. package/src/form/FieldArray.svelte +0 -75
  151. package/src/form/Form.a11y.test.ts +0 -39
  152. package/src/form/Form.svelte +0 -243
  153. package/src/form/FormA11yFixture.svelte +0 -31
  154. package/src/form/FormCascader.svelte +0 -82
  155. package/src/form/FormCheckbox.svelte +0 -83
  156. package/src/form/FormDatePicker.svelte +0 -80
  157. package/src/form/FormErrorMessage.svelte +0 -44
  158. package/src/form/FormInput.svelte +0 -95
  159. package/src/form/FormLabel.svelte +0 -46
  160. package/src/form/FormRadio.svelte +0 -83
  161. package/src/form/FormRating.svelte +0 -85
  162. package/src/form/FormSection.svelte +0 -45
  163. package/src/form/FormSelect.svelte +0 -96
  164. package/src/form/FormSlider.svelte +0 -95
  165. package/src/form/FormSlot.svelte +0 -51
  166. package/src/form/FormSwitch.svelte +0 -82
  167. package/src/form/FormTagInput.svelte +0 -79
  168. package/src/form/FormTreeSelect.svelte +0 -85
  169. package/src/form/FormUpload.svelte +0 -92
  170. package/src/form/context.ts +0 -47
  171. package/src/form/index.ts +0 -22
  172. package/src/form/meta.ts +0 -85
  173. package/src/grid/Col.svelte +0 -142
  174. package/src/grid/Grid.a11y.test.ts +0 -14
  175. package/src/grid/GridA11yFixture.svelte +0 -12
  176. package/src/grid/Row.svelte +0 -116
  177. package/src/grid/index.ts +0 -3
  178. package/src/grid/meta.ts +0 -72
  179. package/src/grid/use-breakpoint.svelte.ts +0 -48
  180. package/src/highlight/Highlight.a11y.test.ts +0 -25
  181. package/src/highlight/Highlight.svelte +0 -99
  182. package/src/highlight/index.ts +0 -2
  183. package/src/highlight/meta.ts +0 -80
  184. package/src/icon/Icon.svelte +0 -156
  185. package/src/icon/index.ts +0 -2
  186. package/src/icon/meta.ts +0 -41
  187. package/src/image/Image.a11y.test.ts +0 -30
  188. package/src/image/Image.svelte +0 -387
  189. package/src/image/ImagePreview.kbd.test.ts +0 -52
  190. package/src/image/ImagePreview.svelte +0 -309
  191. package/src/image/ImagePreviewGroup.svelte +0 -93
  192. package/src/image/ImagePreviewKbdFixture.svelte +0 -32
  193. package/src/image/context.ts +0 -26
  194. package/src/image/index.ts +0 -15
  195. package/src/image/meta.ts +0 -131
  196. package/src/index.ts +0 -208
  197. package/src/input/Input.a11y.test.ts +0 -58
  198. package/src/input/Input.svelte +0 -505
  199. package/src/input/index.ts +0 -2
  200. package/src/input/meta.ts +0 -40
  201. package/src/input-number/InputNumber.a11y.test.ts +0 -43
  202. package/src/input-number/InputNumber.kbd.test.ts +0 -41
  203. package/src/input-number/InputNumber.svelte +0 -674
  204. package/src/input-number/InputNumberKbdFixture.svelte +0 -15
  205. package/src/input-number/index.ts +0 -2
  206. package/src/input-number/meta.ts +0 -65
  207. package/src/layout/Content.svelte +0 -37
  208. package/src/layout/Footer.svelte +0 -49
  209. package/src/layout/Header.svelte +0 -46
  210. package/src/layout/Layout.a11y.test.ts +0 -34
  211. package/src/layout/Layout.svelte +0 -60
  212. package/src/layout/LayoutA11yFixture.svelte +0 -21
  213. package/src/layout/Sider.svelte +0 -207
  214. package/src/layout/index.ts +0 -26
  215. package/src/layout/meta.ts +0 -116
  216. package/src/list/List.a11y.test.ts +0 -69
  217. package/src/list/List.bench.ts +0 -26
  218. package/src/list/List.kbd.test.ts +0 -71
  219. package/src/list/List.svelte +0 -920
  220. package/src/list/ListA11yFixture.svelte +0 -38
  221. package/src/list/ListBenchFixture.svelte +0 -22
  222. package/src/list/ListItem.svelte +0 -175
  223. package/src/list/ListKbdFixture.svelte +0 -31
  224. package/src/list/ListMeta.svelte +0 -73
  225. package/src/list/context.ts +0 -39
  226. package/src/list/index.ts +0 -21
  227. package/src/list/meta.ts +0 -99
  228. package/src/locale-provider/LocaleProvider.svelte +0 -110
  229. package/src/locale-provider/context.ts +0 -22
  230. package/src/locale-provider/index.ts +0 -21
  231. package/src/locale-provider/meta.ts +0 -93
  232. package/src/locale-provider/use-locale.ts +0 -25
  233. package/src/lottie-icon/LottieIcon.svelte +0 -330
  234. package/src/lottie-icon/index.ts +0 -9
  235. package/src/lottie-icon/meta.ts +0 -162
  236. package/src/menu/Menu.a11y.test.ts +0 -54
  237. package/src/menu/Menu.kbd.test.ts +0 -69
  238. package/src/menu/Menu.svelte +0 -762
  239. package/src/menu/MenuKbdFixture.svelte +0 -22
  240. package/src/menu/MenuPopupNode.svelte +0 -525
  241. package/src/menu/index.ts +0 -4
  242. package/src/menu/meta.ts +0 -137
  243. package/src/menu/types.ts +0 -120
  244. package/src/meta.test.ts +0 -173
  245. package/src/modal/ConfirmModal.svelte +0 -173
  246. package/src/modal/Modal.a11y.test.ts +0 -46
  247. package/src/modal/Modal.kbd.test.ts +0 -65
  248. package/src/modal/Modal.svelte +0 -511
  249. package/src/modal/ModalKbdFixture.svelte +0 -24
  250. package/src/modal/command.svelte.ts +0 -103
  251. package/src/modal/index.ts +0 -30
  252. package/src/modal/meta.ts +0 -165
  253. package/src/modal/z-stack.ts +0 -26
  254. package/src/notification/NotificationContainer.svelte +0 -192
  255. package/src/notification/NotificationItem.a11y.test.ts +0 -73
  256. package/src/notification/NotificationItem.svelte +0 -368
  257. package/src/notification/index.ts +0 -9
  258. package/src/notification/meta.ts +0 -120
  259. package/src/notification/store.ts +0 -191
  260. package/src/overflow-list/OverflowList.a11y.test.ts +0 -46
  261. package/src/overflow-list/OverflowList.kbd.test.ts +0 -34
  262. package/src/overflow-list/OverflowList.svelte +0 -539
  263. package/src/overflow-list/OverflowListA11yFixture.svelte +0 -22
  264. package/src/overflow-list/OverflowListKbdFixture.svelte +0 -21
  265. package/src/overflow-list/index.ts +0 -2
  266. package/src/overflow-list/meta.ts +0 -138
  267. package/src/pagination/Pagination.a11y.test.ts +0 -62
  268. package/src/pagination/Pagination.kbd.test.ts +0 -66
  269. package/src/pagination/Pagination.svelte +0 -428
  270. package/src/pagination/PaginationKbdFixture.svelte +0 -15
  271. package/src/pagination/index.ts +0 -2
  272. package/src/pagination/meta.ts +0 -73
  273. package/src/popconfirm/Popconfirm.a11y.test.ts +0 -46
  274. package/src/popconfirm/Popconfirm.kbd.test.ts +0 -42
  275. package/src/popconfirm/Popconfirm.svelte +0 -724
  276. package/src/popconfirm/PopconfirmA11yFixture.svelte +0 -34
  277. package/src/popconfirm/PopconfirmKbdFixture.svelte +0 -17
  278. package/src/popconfirm/index.ts +0 -2
  279. package/src/popconfirm/meta.ts +0 -200
  280. package/src/popover/Popover.a11y.test.ts +0 -58
  281. package/src/popover/Popover.kbd.test.ts +0 -42
  282. package/src/popover/Popover.svelte +0 -643
  283. package/src/popover/PopoverA11yFixture.svelte +0 -35
  284. package/src/popover/PopoverKbdFixture.svelte +0 -18
  285. package/src/popover/index.ts +0 -2
  286. package/src/popover/meta.ts +0 -103
  287. package/src/progress/Progress.a11y.test.ts +0 -37
  288. package/src/progress/Progress.svelte +0 -423
  289. package/src/progress/index.ts +0 -3
  290. package/src/progress/meta.ts +0 -132
  291. package/src/radio/Radio.svelte +0 -330
  292. package/src/radio/RadioGroup.a11y.test.ts +0 -43
  293. package/src/radio/RadioGroup.kbd.test.ts +0 -75
  294. package/src/radio/RadioGroup.svelte +0 -199
  295. package/src/radio/RadioGroupKbdFixture.svelte +0 -21
  296. package/src/radio/context.ts +0 -42
  297. package/src/radio/index.ts +0 -4
  298. package/src/radio/meta.ts +0 -68
  299. package/src/rating/Rating.a11y.test.ts +0 -41
  300. package/src/rating/Rating.kbd.test.ts +0 -48
  301. package/src/rating/Rating.svelte +0 -407
  302. package/src/rating/RatingKbdFixture.svelte +0 -15
  303. package/src/rating/index.ts +0 -2
  304. package/src/rating/meta.ts +0 -40
  305. package/src/resize-observer/ResizeObserver.svelte +0 -169
  306. package/src/resize-observer/action.ts +0 -80
  307. package/src/resize-observer/index.ts +0 -9
  308. package/src/resize-observer/meta.ts +0 -102
  309. package/src/scroll-list/ScrollColumn.svelte +0 -592
  310. package/src/scroll-list/ScrollList.svelte +0 -257
  311. package/src/scroll-list/index.ts +0 -4
  312. package/src/scroll-list/meta.ts +0 -93
  313. package/src/scroll-list/types.ts +0 -18
  314. package/src/select/Select.a11y.test.ts +0 -59
  315. package/src/select/Select.kbd.test.ts +0 -59
  316. package/src/select/Select.svelte +0 -1155
  317. package/src/select/SelectKbdFixture.svelte +0 -29
  318. package/src/select/index.ts +0 -3
  319. package/src/select/meta.ts +0 -78
  320. package/src/select/types.ts +0 -2
  321. package/src/side-sheet/SideSheet.a11y.test.ts +0 -53
  322. package/src/side-sheet/SideSheet.kbd.test.ts +0 -63
  323. package/src/side-sheet/SideSheet.svelte +0 -659
  324. package/src/side-sheet/SideSheetKbdFixture.svelte +0 -30
  325. package/src/side-sheet/index.ts +0 -2
  326. package/src/side-sheet/meta.ts +0 -116
  327. package/src/skeleton/Skeleton.a11y.test.ts +0 -35
  328. package/src/skeleton/Skeleton.svelte +0 -131
  329. package/src/skeleton/SkeletonAvatar.svelte +0 -82
  330. package/src/skeleton/SkeletonButton.svelte +0 -90
  331. package/src/skeleton/SkeletonImage.svelte +0 -100
  332. package/src/skeleton/SkeletonParagraph.svelte +0 -103
  333. package/src/skeleton/SkeletonTitle.svelte +0 -74
  334. package/src/skeleton/context.ts +0 -11
  335. package/src/skeleton/index.ts +0 -8
  336. package/src/skeleton/meta.ts +0 -65
  337. package/src/slider/Slider.a11y.test.ts +0 -44
  338. package/src/slider/Slider.kbd.test.ts +0 -74
  339. package/src/slider/Slider.svelte +0 -716
  340. package/src/slider/SliderKbdFixture.svelte +0 -21
  341. package/src/slider/index.ts +0 -2
  342. package/src/slider/meta.ts +0 -55
  343. package/src/space/Space.a11y.test.ts +0 -22
  344. package/src/space/Space.svelte +0 -109
  345. package/src/space/SpaceA11yFixture.svelte +0 -17
  346. package/src/space/index.ts +0 -2
  347. package/src/space/meta.ts +0 -27
  348. package/src/spin/Spin.a11y.test.ts +0 -29
  349. package/src/spin/Spin.svelte +0 -293
  350. package/src/spin/SpinA11yFixture.svelte +0 -18
  351. package/src/spin/index.ts +0 -2
  352. package/src/spin/meta.ts +0 -72
  353. package/src/steps/Steps.a11y.test.ts +0 -39
  354. package/src/steps/Steps.kbd.test.ts +0 -73
  355. package/src/steps/Steps.svelte +0 -392
  356. package/src/steps/StepsKbdFixture.svelte +0 -21
  357. package/src/steps/index.ts +0 -3
  358. package/src/steps/meta.ts +0 -59
  359. package/src/steps/types.ts +0 -8
  360. package/src/switch/Switch.a11y.test.ts +0 -46
  361. package/src/switch/Switch.kbd.test.ts +0 -40
  362. package/src/switch/Switch.svelte +0 -310
  363. package/src/switch/SwitchKbdFixture.svelte +0 -22
  364. package/src/switch/index.ts +0 -2
  365. package/src/switch/meta.ts +0 -44
  366. package/src/table/Table.a11y.test.ts +0 -70
  367. package/src/table/Table.bench.ts +0 -51
  368. package/src/table/Table.kbd.test.ts +0 -94
  369. package/src/table/Table.svelte +0 -2327
  370. package/src/table/TableKbdFixture.svelte +0 -35
  371. package/src/table/grid-nav.test.ts +0 -173
  372. package/src/table/grid-nav.ts +0 -146
  373. package/src/table/index.ts +0 -13
  374. package/src/table/meta.ts +0 -121
  375. package/src/table/types.ts +0 -133
  376. package/src/tabs/TabPane.svelte +0 -92
  377. package/src/tabs/Tabs.a11y.test.ts +0 -47
  378. package/src/tabs/Tabs.kbd.test.ts +0 -74
  379. package/src/tabs/Tabs.svelte +0 -1128
  380. package/src/tabs/TabsA11yFixture.svelte +0 -20
  381. package/src/tabs/TabsKbdFixture.svelte +0 -25
  382. package/src/tabs/context.ts +0 -43
  383. package/src/tabs/index.ts +0 -14
  384. package/src/tabs/meta.ts +0 -152
  385. package/src/tabs/types.ts +0 -6
  386. package/src/tag/Tag.a11y.test.ts +0 -33
  387. package/src/tag/Tag.svelte +0 -366
  388. package/src/tag/TagA11yFixture.svelte +0 -18
  389. package/src/tag/index.ts +0 -2
  390. package/src/tag/meta.ts +0 -92
  391. package/src/tag-input/TagInput.a11y.test.ts +0 -41
  392. package/src/tag-input/TagInput.svelte +0 -544
  393. package/src/tag-input/index.ts +0 -2
  394. package/src/tag-input/meta.ts +0 -43
  395. package/src/tag-input/reorder.test.ts +0 -59
  396. package/src/tag-input/reorder.ts +0 -41
  397. package/src/test-utils/LocaleHarness.svelte +0 -29
  398. package/src/test-utils/a11y.ts +0 -108
  399. package/src/test-utils/kbd.ts +0 -52
  400. package/src/textarea/TextArea.a11y.test.ts +0 -44
  401. package/src/textarea/TextArea.svelte +0 -420
  402. package/src/textarea/index.ts +0 -2
  403. package/src/textarea/meta.ts +0 -104
  404. package/src/time-picker/TimePicker.a11y.test.ts +0 -45
  405. package/src/time-picker/TimePicker.kbd.test.ts +0 -70
  406. package/src/time-picker/TimePicker.svelte +0 -1023
  407. package/src/time-picker/TimePickerKbdFixture.svelte +0 -23
  408. package/src/time-picker/index.ts +0 -2
  409. package/src/time-picker/meta.ts +0 -64
  410. package/src/timeline/Timeline.a11y.test.ts +0 -54
  411. package/src/timeline/Timeline.svelte +0 -599
  412. package/src/timeline/TimelineItem.svelte +0 -164
  413. package/src/timeline/context.ts +0 -28
  414. package/src/timeline/index.ts +0 -16
  415. package/src/timeline/meta.ts +0 -129
  416. package/src/timeline/types.ts +0 -9
  417. package/src/toast/Toast.a11y.test.ts +0 -67
  418. package/src/toast/ToastContainer.svelte +0 -184
  419. package/src/toast/ToastItem.svelte +0 -247
  420. package/src/toast/index.ts +0 -9
  421. package/src/toast/live-region.ts +0 -78
  422. package/src/toast/meta.ts +0 -95
  423. package/src/toast/store.ts +0 -187
  424. package/src/tooltip/Tooltip.a11y.test.ts +0 -41
  425. package/src/tooltip/Tooltip.kbd.test.ts +0 -37
  426. package/src/tooltip/Tooltip.svelte +0 -416
  427. package/src/tooltip/TooltipA11yFixture.svelte +0 -31
  428. package/src/tooltip/TooltipKbdFixture.svelte +0 -16
  429. package/src/tooltip/index.ts +0 -2
  430. package/src/tooltip/meta.ts +0 -59
  431. package/src/tooltip/placement.ts +0 -6
  432. package/src/transfer/Transfer.a11y.test.ts +0 -63
  433. package/src/transfer/Transfer.kbd.test.ts +0 -75
  434. package/src/transfer/Transfer.svelte +0 -1451
  435. package/src/transfer/TransferKbdFixture.svelte +0 -23
  436. package/src/transfer/group.test.ts +0 -55
  437. package/src/transfer/group.ts +0 -61
  438. package/src/transfer/index.ts +0 -3
  439. package/src/transfer/meta.ts +0 -55
  440. package/src/transfer/reorder.test.ts +0 -52
  441. package/src/transfer/reorder.ts +0 -42
  442. package/src/transfer/tree.test.ts +0 -44
  443. package/src/transfer/tree.ts +0 -52
  444. package/src/transfer/types.ts +0 -32
  445. package/src/tree/Tree.a11y.test.ts +0 -63
  446. package/src/tree/Tree.kbd.test.ts +0 -91
  447. package/src/tree/Tree.svelte +0 -1500
  448. package/src/tree/TreeKbdFixture.svelte +0 -30
  449. package/src/tree/index.ts +0 -3
  450. package/src/tree/meta.ts +0 -152
  451. package/src/tree-select/TreeSelect.a11y.test.ts +0 -52
  452. package/src/tree-select/TreeSelect.kbd.test.ts +0 -53
  453. package/src/tree-select/TreeSelect.svelte +0 -1611
  454. package/src/tree-select/TreeSelectKbdFixture.svelte +0 -20
  455. package/src/tree-select/index.ts +0 -3
  456. package/src/tree-select/meta.ts +0 -73
  457. package/src/tree-select/types.ts +0 -11
  458. package/src/tree-select/virtual.test.ts +0 -104
  459. package/src/typography/Link.svelte +0 -120
  460. package/src/typography/Paragraph.svelte +0 -92
  461. package/src/typography/Text.svelte +0 -93
  462. package/src/typography/Title.svelte +0 -91
  463. package/src/typography/Typography.a11y.test.ts +0 -34
  464. package/src/typography/TypographyA11yFixture.svelte +0 -27
  465. package/src/typography/TypographyBase.svelte +0 -807
  466. package/src/typography/index.ts +0 -16
  467. package/src/typography/meta.ts +0 -158
  468. package/src/upload/Upload.a11y.test.ts +0 -58
  469. package/src/upload/Upload.svelte +0 -1094
  470. package/src/upload/UploadA11yFixture.svelte +0 -23
  471. package/src/upload/index.ts +0 -3
  472. package/src/upload/meta.ts +0 -64
  473. package/src/upload/types.ts +0 -16
  474. package/src/virtual-list/VirtualList.svelte +0 -401
  475. package/src/virtual-list/index.ts +0 -2
  476. package/src/virtual-list/meta.ts +0 -106
@@ -1,212 +0,0 @@
1
- <!--
2
- Dropdown.SubMenu — 声明式可展开子菜单包装。
3
- 用于 <Dropdown> children 插槽模式,与 DropdownItemNode(items 数据驱动)行为对齐:
4
- hover/聚焦展开,floating 到父项右侧(溢出翻转左侧),键盘 →/←/↑↓/Esc 导航。
5
- -->
6
- <script lang="ts">
7
- import { tick, getContext } from 'svelte';
8
- import { floating } from '../_floating/use-floating.js';
9
- import { DROPDOWN_CTX, type DropdownContext } from './context.js';
10
-
11
- interface Props {
12
- /** 子菜单标题文案 */
13
- title?: string;
14
- /** 是否禁用 */
15
- disabled?: boolean;
16
- /** hover 开启延迟(ms),默认 100 */
17
- openDelay?: number;
18
- /** hover 关闭延迟(ms),默认 200 */
19
- closeDelay?: number;
20
- children?: import('svelte').Snippet;
21
- }
22
-
23
- let {
24
- title = '',
25
- disabled = false,
26
- openDelay = 100,
27
- closeDelay = 200,
28
- children,
29
- }: Props = $props();
30
-
31
- const ddCtx = getContext<DropdownContext | undefined>(DROPDOWN_CTX);
32
-
33
- let titleEl = $state<HTMLButtonElement | null>(null);
34
- let subEl = $state<HTMLUListElement | null>(null);
35
- let open = $state(false);
36
-
37
- let openTimer: ReturnType<typeof setTimeout> | undefined;
38
- let closeTimer: ReturnType<typeof setTimeout> | undefined;
39
-
40
- function clearTimers() {
41
- if (openTimer !== undefined) { clearTimeout(openTimer); openTimer = undefined; }
42
- if (closeTimer !== undefined) { clearTimeout(closeTimer); closeTimer = undefined; }
43
- }
44
-
45
- function scheduleOpen() {
46
- if (disabled) return;
47
- if (closeTimer !== undefined) { clearTimeout(closeTimer); closeTimer = undefined; }
48
- if (open) return;
49
- openTimer = setTimeout(() => { open = true; openTimer = undefined; }, openDelay);
50
- }
51
-
52
- function scheduleClose() {
53
- if (openTimer !== undefined) { clearTimeout(openTimer); openTimer = undefined; }
54
- if (!open) return;
55
- closeTimer = setTimeout(() => { open = false; closeTimer = undefined; }, closeDelay);
56
- }
57
-
58
- function keepOpen() {
59
- if (closeTimer !== undefined) { clearTimeout(closeTimer); closeTimer = undefined; }
60
- }
61
-
62
- function closeNow() {
63
- clearTimers();
64
- open = false;
65
- }
66
-
67
- async function openAndFocusFirst() {
68
- if (disabled) return;
69
- open = true;
70
- await tick();
71
- const first = subEl?.querySelector<HTMLElement>('[role="menuitem"]:not([aria-disabled="true"])');
72
- first?.focus();
73
- }
74
-
75
- function onTitleKeydown(e: KeyboardEvent) {
76
- switch (e.key) {
77
- case 'ArrowRight':
78
- case 'Enter':
79
- case ' ':
80
- e.preventDefault();
81
- void openAndFocusFirst();
82
- break;
83
- case 'ArrowLeft':
84
- case 'Escape':
85
- if (open) {
86
- e.preventDefault();
87
- e.stopPropagation();
88
- closeNow();
89
- titleEl?.focus();
90
- }
91
- break;
92
- }
93
- }
94
-
95
- function onSubKeydown(e: KeyboardEvent) {
96
- if (e.key === 'ArrowLeft' || e.key === 'Escape') {
97
- e.preventDefault();
98
- e.stopPropagation();
99
- closeNow();
100
- titleEl?.focus();
101
- }
102
- }
103
-
104
- $effect(() => clearTimers);
105
- </script>
106
-
107
- <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
108
- <li
109
- class="cd-dropdown__item-wrap cd-dropdown__item-wrap--submenu"
110
- role="none"
111
- onpointerenter={scheduleOpen}
112
- onpointerleave={scheduleClose}
113
- >
114
- <button
115
- type="button"
116
- class="cd-dropdown__item cd-dropdown__item--submenu"
117
- role="menuitem"
118
- tabindex="-1"
119
- aria-haspopup="menu"
120
- aria-expanded={open}
121
- aria-disabled={disabled || undefined}
122
- disabled={disabled || undefined}
123
- bind:this={titleEl}
124
- onclick={() => void openAndFocusFirst()}
125
- onkeydown={onTitleKeydown}
126
- >
127
- <span class="cd-dropdown__label">{title}</span>
128
- <span class="cd-dropdown__arrow" aria-hidden="true">
129
- <svg viewBox="0 0 16 16" width="10" height="10" focusable="false">
130
- <path fill="currentColor" d="M6 4l4 4-4 4V4Z" />
131
- </svg>
132
- </span>
133
- </button>
134
-
135
- {#if open && titleEl}
136
- <ul
137
- class="cd-dropdown__sub"
138
- role="menu"
139
- tabindex="-1"
140
- bind:this={subEl}
141
- use:floating={{ trigger: titleEl, placement: 'rightStart', offset: 2, autoAdjust: true, getContainer: ddCtx?.getContainer }}
142
- onpointerenter={keepOpen}
143
- onpointerleave={scheduleClose}
144
- onkeydown={onSubKeydown}
145
- >
146
- {@render children?.()}
147
- </ul>
148
- {/if}
149
- </li>
150
-
151
- <style>
152
- .cd-dropdown__item-wrap {
153
- margin: 0;
154
- padding: 0;
155
- list-style: none;
156
- }
157
- .cd-dropdown__item-wrap--submenu {
158
- position: relative;
159
- }
160
- .cd-dropdown__item {
161
- display: flex;
162
- align-items: center;
163
- gap: var(--cd-spacing-2);
164
- inline-size: 100%;
165
- margin: 0;
166
- padding: var(--cd-dropdown-item-padding);
167
- border: none;
168
- background: transparent;
169
- color: inherit;
170
- font: inherit;
171
- text-align: start;
172
- cursor: pointer;
173
- }
174
- .cd-dropdown__item:hover,
175
- .cd-dropdown__item:focus-visible {
176
- background: var(--cd-dropdown-item-bg-hover);
177
- }
178
- .cd-dropdown__item:focus-visible {
179
- outline: none;
180
- }
181
- .cd-dropdown__item--submenu[aria-expanded='true'] {
182
- background: var(--cd-dropdown-item-bg-hover);
183
- }
184
- .cd-dropdown__item[aria-disabled='true'] {
185
- color: var(--cd-dropdown-item-color-disabled);
186
- cursor: not-allowed;
187
- }
188
- .cd-dropdown__label {
189
- flex: 1 1 auto;
190
- overflow: hidden;
191
- white-space: nowrap;
192
- text-overflow: ellipsis;
193
- }
194
- .cd-dropdown__arrow {
195
- display: inline-flex;
196
- align-items: center;
197
- justify-content: center;
198
- flex: 0 0 auto;
199
- color: var(--cd-color-text-2);
200
- }
201
- .cd-dropdown__sub {
202
- margin: 0;
203
- padding: 0;
204
- list-style: none;
205
- z-index: var(--cd-dropdown-z);
206
- min-inline-size: var(--cd-dropdown-min-width);
207
- padding-block: var(--cd-spacing-1);
208
- background: var(--cd-dropdown-bg);
209
- border-radius: var(--cd-dropdown-radius);
210
- box-shadow: var(--cd-dropdown-shadow);
211
- }
212
- </style>
@@ -1,34 +0,0 @@
1
- <!--
2
- Dropdown.Title — 不可点击的分组标题(对应 items 数据驱动模式中 type='group' 的 label)。
3
- 渲染为 role=none 的 li 中的纯展示 div,不接收键盘焦点。
4
- -->
5
- <script lang="ts">
6
- interface Props {
7
- children?: import('svelte').Snippet;
8
- }
9
-
10
- let { children }: Props = $props();
11
- </script>
12
-
13
- <li class="cd-dropdown__group" role="none">
14
- <div class="cd-dropdown__group-title">
15
- {@render children?.()}
16
- </div>
17
- </li>
18
-
19
- <style>
20
- .cd-dropdown__group {
21
- margin: 0;
22
- padding: 0;
23
- list-style: none;
24
- }
25
- .cd-dropdown__group-title {
26
- display: flex;
27
- align-items: center;
28
- padding: var(--cd-dropdown-item-padding);
29
- color: var(--cd-dropdown-item-color-disabled);
30
- font-size: var(--cd-font-size-1);
31
- cursor: default;
32
- user-select: none;
33
- }
34
- </style>
@@ -1,13 +0,0 @@
1
- /**
2
- * Dropdown 子树共享上下文。
3
- * 透传 getPopupContainer,使递归的 DropdownItemNode 子菜单浮层挂到与顶层
4
- * 浮层相同的自定义容器;同时透传 showTick,在叶子项右侧渲染勾选标记。
5
- */
6
- export interface DropdownContext {
7
- /** 浮层挂载容器解析器;缺省时(undefined)floating 默认挂 body。 */
8
- getContainer?: (() => HTMLElement | null | undefined) | undefined;
9
- /** 已选中的 Item 是否显示 ✓ 勾选标记(默认 false)。 */
10
- showTick?: boolean;
11
- }
12
-
13
- export const DROPDOWN_CTX = Symbol('cd-dropdown-ctx');
@@ -1,36 +0,0 @@
1
- import Dropdown_ from './Dropdown.svelte';
2
- import DropdownItem from './DropdownItem.svelte';
3
- import DropdownMenu from './DropdownMenu.svelte';
4
- import DropdownSubMenu from './DropdownSubMenu.svelte';
5
- import DropdownTitle from './DropdownTitle.svelte';
6
- import DropdownDivider from './DropdownDivider.svelte';
7
-
8
- // Dropdown 挂载声明式子组件:Item / Menu / SubMenu / Title / Divider。
9
- export const Dropdown: typeof Dropdown_ & {
10
- Item: typeof DropdownItem;
11
- Menu: typeof DropdownMenu;
12
- SubMenu: typeof DropdownSubMenu;
13
- Title: typeof DropdownTitle;
14
- Divider: typeof DropdownDivider;
15
- } = Object.assign(Dropdown_, {
16
- Item: DropdownItem,
17
- Menu: DropdownMenu,
18
- SubMenu: DropdownSubMenu,
19
- Title: DropdownTitle,
20
- Divider: DropdownDivider,
21
- });
22
-
23
- export { DropdownItem, DropdownMenu, DropdownSubMenu, DropdownTitle, DropdownDivider };
24
- export { meta as dropdownMeta } from './meta.js';
25
- export {
26
- isDropdownDivider,
27
- isDropdownGroup,
28
- hasDropdownChildren,
29
- } from './types.js';
30
- export type {
31
- DropdownItem as DropdownItemType,
32
- DropdownItemNode,
33
- DropdownDividerNode,
34
- DropdownGroupNode,
35
- DropdownKey,
36
- } from './types.js';
@@ -1,97 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * See specs/00-foundation/ai-friendly.spec.md.
4
- */
5
- export const meta = {
6
- name: 'Dropdown',
7
- category: 'navigation',
8
- description:
9
- '下拉菜单,通过触发元素唤起一组可操作命令项。支持 hover/click/contextMenu 触发、嵌套子菜单、divider 分隔符、group 分组、useDismiss 关闭、键盘导航与危险项。',
10
- props: [
11
- {
12
- name: 'items',
13
- type: 'DropdownItem[]',
14
- default: '[]',
15
- desc: '菜单项数据;判别联合:普通项含 children 即可展开子菜单,type=divider 分隔符,type=group 分组标题',
16
- },
17
- {
18
- name: 'trigger',
19
- type: "'hover'|'click'|'contextMenu'",
20
- default: 'hover',
21
- desc: "触发方式;contextMenu 为右键唤起并定位到光标",
22
- },
23
- { name: 'open', type: 'boolean', default: 'undefined', desc: '受控显隐' },
24
- { name: 'defaultOpen', type: 'boolean', default: 'false', desc: '非受控初始显隐' },
25
- {
26
- name: 'position',
27
- type: "'bottomStart'|'bottomEnd'|'topStart'",
28
- default: 'bottomStart',
29
- desc: '浮层位置',
30
- },
31
- { name: 'size', type: "'small'|'default'|'large'", default: 'default' },
32
- { name: 'disabled', type: 'boolean', default: 'false', desc: '禁用整个触发' },
33
- { name: 'closeOnSelect', type: 'boolean', default: 'true', desc: '点击项后自动关闭' },
34
- { name: 'closeOnEsc', type: 'boolean', default: 'true', desc: 'Esc 是否关闭' },
35
- { name: 'mouseEnterDelay', type: 'number', default: '150', desc: 'hover 进入延迟(ms)' },
36
- { name: 'mouseLeaveDelay', type: 'number', default: '150', desc: 'hover 离开延迟(ms)' },
37
- {
38
- name: 'spacing',
39
- type: 'number | { x: number; y: number }',
40
- default: '4',
41
- desc: '浮层与触发元素间距(px),映射到 floating 主轴 offset;{ x, y } 按 position 主轴方向取值(上下取 y、左右取 x)',
42
- },
43
- {
44
- name: 'clickToHide',
45
- type: 'boolean',
46
- default: 'true',
47
- desc: 'hover 模式下点击菜单项是否关闭浮层;false 时点击项不关闭(仅移出/Esc/外部点击收起),仅影响 hover 触发',
48
- },
49
- { name: 'zIndex', type: 'number', default: '1050', desc: '浮层层级(写入浮层内联 z-index)' },
50
- {
51
- name: 'autoAdjustOverflow',
52
- type: 'boolean',
53
- default: 'true',
54
- desc: '空间不足时自动翻转/移位到可视区(透传 floating autoAdjust);false 时严格按 position 定位不翻转',
55
- },
56
- {
57
- name: 'destroyOnClose',
58
- type: 'boolean',
59
- default: 'false',
60
- desc: '关闭即卸载浮层内容({#if})重开重建;默认 false 首开后保留 DOM 仅隐藏',
61
- },
62
- {
63
- name: 'lazyRender',
64
- type: 'boolean',
65
- default: 'true',
66
- desc: '首次打开前不渲染浮层内容(惰性);false 时即使从未打开也预渲染浮层 DOM(仅隐藏)',
67
- },
68
- {
69
- name: 'keepDOM',
70
- type: 'boolean',
71
- default: 'false',
72
- desc: '关闭后保留浮层 DOM(与 destroyOnClose 互斥;true 时强制保留,忽略 destroyOnClose)',
73
- },
74
- {
75
- name: 'getPopupContainer',
76
- type: '() => HTMLElement',
77
- default: '() => document.body',
78
- desc: '浮层挂载容器;非 body 容器时改 absolute 相对该容器定位,嵌套子菜单与右键浮层同容器',
79
- },
80
- { name: 'onSelect', type: '(key: string|number) => void', default: 'undefined' },
81
- { name: 'onOpenChange', type: '(open: boolean) => void', default: 'undefined' },
82
- { name: 'triggerContent', type: 'Snippet', default: 'undefined', desc: '触发元素内容' },
83
- { name: 'children', type: 'Snippet', default: 'undefined', desc: '自定义浮层内容(提供则忽略 items)' },
84
- ],
85
- a11y: {
86
- role: 'menu',
87
- keyboard: ['Enter', 'Space', 'ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Escape'],
88
- notes: [
89
- '触发器 aria-haspopup=menu + aria-expanded + aria-controls',
90
- '浮层 role=menu,项 role=menuitem,焦点式 roving(tabindex=-1 + 方向键移动焦点)',
91
- '子菜单父项 aria-haspopup=menu + aria-expanded;→ 进入子菜单首项,← / Esc 逐层返回',
92
- 'divider role=separator;group 组标题不可聚焦,组内项始终展开(role=group)',
93
- 'useDismiss 处理外部点击与 Escape 关闭',
94
- ],
95
- },
96
- tokens: ['--cd-dropdown-*', '--cd-focus-ring', '--cd-radius-1', '--cd-spacing-*', '--cd-color-danger'],
97
- } as const;
@@ -1,50 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import {
3
- isDropdownDivider,
4
- isDropdownGroup,
5
- hasDropdownChildren,
6
- type DropdownItem,
7
- } from './types.js';
8
-
9
- describe('dropdown type guards', () => {
10
- const leaf: DropdownItem = { key: 'a', label: 'A' };
11
- const submenu: DropdownItem = {
12
- key: 'b',
13
- label: 'B',
14
- children: [{ key: 'b1', label: 'B1' }],
15
- };
16
- const divider: DropdownItem = { type: 'divider' };
17
- const group: DropdownItem = {
18
- type: 'group',
19
- label: 'G',
20
- children: [{ key: 'g1', label: 'G1' }],
21
- };
22
-
23
- it('isDropdownDivider only matches divider nodes', () => {
24
- expect(isDropdownDivider(divider)).toBe(true);
25
- expect(isDropdownDivider(leaf)).toBe(false);
26
- expect(isDropdownDivider(group)).toBe(false);
27
- expect(isDropdownDivider(submenu)).toBe(false);
28
- });
29
-
30
- it('isDropdownGroup only matches group nodes', () => {
31
- expect(isDropdownGroup(group)).toBe(true);
32
- expect(isDropdownGroup(leaf)).toBe(false);
33
- expect(isDropdownGroup(divider)).toBe(false);
34
- expect(isDropdownGroup(submenu)).toBe(false);
35
- });
36
-
37
- it('hasDropdownChildren detects expandable submenu items', () => {
38
- expect(hasDropdownChildren(submenu)).toBe(true);
39
- expect(hasDropdownChildren(leaf)).toBe(false);
40
- expect(hasDropdownChildren({ key: 'c', label: 'C', children: [] })).toBe(false);
41
- });
42
-
43
- it('backward compat: a flat item without type is a valid DropdownItem', () => {
44
- const items: DropdownItem[] = [
45
- { key: 'edit', label: '编辑' },
46
- { key: 'del', label: '删除', danger: true, disabled: true },
47
- ];
48
- expect(items.every((i) => !isDropdownDivider(i) && !isDropdownGroup(i))).toBe(true);
49
- });
50
- });
@@ -1,67 +0,0 @@
1
- /**
2
- * Dropdown 数据项类型。与 Menu 对齐的判别联合思路(见 menu/types.ts):
3
- * 普通项含 children 即为可展开 SubMenu;type='divider' 分隔符;type='group' 分组标题。
4
- * 向后兼容:普通项可省略 type,旧的 flat items 无需改动。
5
- */
6
- /** Dropdown 项键类型。 */
7
- export type DropdownKey = string | number;
8
-
9
- /** 普通菜单项;含 children 即为可展开的 SubMenu。 */
10
- export interface DropdownItemNode {
11
- /** 非分隔符/分组时无需 type,默认即普通项;显式可写 'item' */
12
- type?: 'item';
13
- key: DropdownKey;
14
- label: string;
15
- disabled?: boolean;
16
- danger?: boolean;
17
- /** 是否选中(showTick=true 时在右侧渲染 ✓ 勾选标记) */
18
- selected?: boolean;
19
- /** 含子项即为可展开的子菜单(SubMenu),可多层嵌套 */
20
- children?: DropdownItem[];
21
- }
22
-
23
- /**
24
- * 分隔符项:渲染为一条水平分隔线,不可选不可聚焦(role=separator)。
25
- * 无需 key/label;为避免 #each 缺 key 警告,渲染时按索引生成兜底 key。
26
- */
27
- export interface DropdownDividerNode {
28
- type: 'divider';
29
- key?: DropdownKey;
30
- }
31
-
32
- /**
33
- * 分组项:渲染为不可点击的组标题 + 其下始终展开的菜单项。
34
- * 区别于 SubMenu(可展开/收起)——group 是始终展开的分区标题。
35
- */
36
- export interface DropdownGroupNode {
37
- type: 'group';
38
- key?: DropdownKey;
39
- /** 分组标题文案 */
40
- label: string;
41
- children: DropdownItem[];
42
- }
43
-
44
- /**
45
- * Dropdown 数据项。向后兼容:普通项可省略 type;
46
- * 通过 type='divider' / type='group' 扩展分隔符与分组标题,
47
- * 普通项的 children 表示可展开子菜单。
48
- */
49
- export type DropdownItem =
50
- | DropdownItemNode
51
- | DropdownDividerNode
52
- | DropdownGroupNode;
53
-
54
- /** 类型守卫:分隔符项。 */
55
- export function isDropdownDivider(item: DropdownItem): item is DropdownDividerNode {
56
- return (item as DropdownDividerNode).type === 'divider';
57
- }
58
-
59
- /** 类型守卫:分组项。 */
60
- export function isDropdownGroup(item: DropdownItem): item is DropdownGroupNode {
61
- return (item as DropdownGroupNode).type === 'group';
62
- }
63
-
64
- /** 普通项是否含可展开子菜单。 */
65
- export function hasDropdownChildren(item: DropdownItemNode): boolean {
66
- return !!item.children && item.children.length > 0;
67
- }
@@ -1,24 +0,0 @@
1
- // Empty a11y:预设插画 aria-hidden;外部图片 <img> 带 alt。
2
- import { describe, it, expect } from 'vitest';
3
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
4
- import Empty from './Empty.svelte';
5
-
6
- describe('Empty a11y', () => {
7
- it('预设插画:image 容器 aria-hidden,无 axe violations', async () => {
8
- const { container } = renderWithLocale(Empty, {
9
- props: { image: 'noData', description: 'No data available' },
10
- });
11
- const imageBox = container.querySelector('.cd-empty__image');
12
- expect(imageBox?.getAttribute('aria-hidden')).toBe('true');
13
- await expectNoAxeViolations(container);
14
- });
15
-
16
- it('外部图片 URL:<img> 带 alt(取标题/空串),无 axe violations', async () => {
17
- const { container } = renderWithLocale(Empty, {
18
- props: { image: 'https://example.com/empty.png', title: 'Nothing here' },
19
- });
20
- const img = container.querySelector('.cd-empty__img');
21
- expect(img?.getAttribute('alt')).toBe('Nothing here');
22
- await expectNoAxeViolations(container);
23
- });
24
- });