@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,20 +0,0 @@
1
- <!--
2
- 仅供 Tabs.a11y.test.ts 使用的测试夹具:声明式 <Tabs.Pane> 用法(含 role=tabpanel 面板),
3
- 使 tab 的 aria-controls 指向真实存在的面板 id(axe aria-valid-attr-value 通过)。
4
- 纯 tabList 用法不渲染面板,aria-controls 会悬空,不是 a11y-clean 路径。
5
- -->
6
- <script lang="ts">
7
- import { Tabs } from './index.js';
8
-
9
- interface Props {
10
- defaultValue?: string | number;
11
- type?: 'line' | 'card' | 'button';
12
- }
13
- let { defaultValue = 'overview', type = 'line' }: Props = $props();
14
- </script>
15
-
16
- <Tabs {defaultValue} {type}>
17
- <Tabs.Pane itemKey="overview" tab="Overview">Overview content</Tabs.Pane>
18
- <Tabs.Pane itemKey="details" tab="Details">Details content</Tabs.Pane>
19
- <Tabs.Pane itemKey="history" tab="History">History content</Tabs.Pane>
20
- </Tabs>
@@ -1,25 +0,0 @@
1
- <!--
2
- 仅供 Tabs.kbd.test.ts(browser project)使用的 tablist roving 键盘 e2e 夹具。
3
- 声明式 <Tabs.Pane> 用法:tab 的 aria-controls 指向真实面板,面板按 activeKey 显隐,
4
- 便于断言 keyboardActivation='auto'(默认)下「焦点移动即激活」。
5
- 菜单前后各放一个按钮,用于验证 roving 单停靠点(Tab 只进一个 tab,其余 tabindex=-1)。
6
- -->
7
- <script lang="ts">
8
- import { LocaleProvider } from '../locale-provider/index.js';
9
- import { Tabs } from './index.js';
10
-
11
- interface Props {
12
- defaultValue?: string;
13
- }
14
- let { defaultValue = 'overview' }: Props = $props();
15
- </script>
16
-
17
- <LocaleProvider locale="en_US">
18
- <button type="button" data-testid="before">before</button>
19
- <Tabs {defaultValue} type="line">
20
- <Tabs.Pane itemKey="overview" tab="Overview">Overview content</Tabs.Pane>
21
- <Tabs.Pane itemKey="details" tab="Details">Details content</Tabs.Pane>
22
- <Tabs.Pane itemKey="history" tab="History">History content</Tabs.Pane>
23
- </Tabs>
24
- <button type="button" data-testid="after">after</button>
25
- </LocaleProvider>
@@ -1,43 +0,0 @@
1
- import { getContext, setContext } from 'svelte';
2
-
3
- const KEY = Symbol('cd-tabs');
4
-
5
- /** 声明式 <Tabs.Pane> 向父 Tabs 注册时上报的标签元数据(推导 tabList 用)。 */
6
- export interface TabPaneRegistration {
7
- itemKey: string | number;
8
- tab: string;
9
- disabled?: boolean;
10
- closable?: boolean;
11
- }
12
-
13
- export interface TabsContext {
14
- /** 当前激活 key 的 getter(响应式,TabPane 读取以决定显隐) */
15
- getActiveKey: () => string | number | undefined;
16
- /** 是否懒加载(首次激活才挂载) */
17
- getLazy: () => boolean;
18
- /** 是否保留激活过的面板 DOM(display:none 隐藏而非卸载) */
19
- getKeepDOM: () => boolean;
20
- /** 稳定 tab 按钮 id(与 panel 的 aria-labelledby 双向关联)。 */
21
- getTabId: (key: string | number) => string;
22
- /** 稳定 tabpanel id(与 tab 的 aria-controls 双向关联)。 */
23
- getPanelId: (key: string | number) => string;
24
- /**
25
- * 纯声明式自动收集:父未传 tabList 时,TabPane 挂载时注册自身标签元数据(按源码顺序)。
26
- * 返回稳定 id,TabPane 卸载时用它注销;元数据变化时调用 update 同步。
27
- *
28
- * 红线 #2:注册/注销/更新均发生在 TabPane 的 mount/unmount/同步 $effect(副作用),
29
- * 写父级簿记普通数组 + 仅 bump 一个 version $state;父 render 派生只读 version 重建快照,
30
- * 子 effect 绝不读该快照 → 副作用写 / 渲染读分离,无 effect 自循环。
31
- */
32
- registerPane?: (reg: TabPaneRegistration) => number;
33
- updatePane?: (id: number, reg: TabPaneRegistration) => void;
34
- unregisterPane?: (id: number) => void;
35
- }
36
-
37
- export function setTabsContext(ctx: TabsContext): void {
38
- setContext(KEY, ctx);
39
- }
40
-
41
- export function getTabsContext(): TabsContext | undefined {
42
- return getContext<TabsContext | undefined>(KEY);
43
- }
package/src/tabs/index.ts DELETED
@@ -1,14 +0,0 @@
1
- import TabsComponent from './Tabs.svelte';
2
- import TabPane from './TabPane.svelte';
3
-
4
- /**
5
- * 命名空间聚合导出:支持 <Tabs.Pane />。
6
- * 显式类型注解避免泄漏组件内部 Props 类型导致的声明 emit 报错。
7
- */
8
- export const Tabs: typeof TabsComponent & {
9
- Pane: typeof TabPane;
10
- } = Object.assign(TabsComponent, { Pane: TabPane });
11
-
12
- export { default as TabPane } from './TabPane.svelte';
13
- export { meta as tabsMeta } from './meta.js';
14
- export type { TabItem } from './types.js';
package/src/tabs/meta.ts DELETED
@@ -1,152 +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: 'Tabs',
7
- category: 'navigation',
8
- description:
9
- '标签页,在同一区域内组织并切换多组对等内容。支持 line/card/button 类型、数据驱动 tabList 或纯声明式 <Tabs.Pane> 自动收集、renderTabBar 自定义标签栏、roving tabindex 键盘导航、可关闭标签与溢出滚动/下拉收纳(overflow)。',
10
- props: [
11
- { name: 'value', type: 'string|number', default: 'undefined', desc: '受控选中标签 key' },
12
- { name: 'defaultValue', type: 'string|number', default: '首个标签', desc: '非受控初始 key' },
13
- { name: 'type', type: "'line'|'card'|'button'", default: 'line', desc: '视觉风格(button=分段按钮组)' },
14
- { name: 'size', type: "'small'|'default'|'large'", default: 'default' },
15
- {
16
- name: 'tabPosition',
17
- type: "'top'|'bottom'|'left'|'right'",
18
- default: 'top',
19
- desc: '标签栏位置',
20
- },
21
- { name: 'lazy', type: 'boolean', default: 'false', desc: '首次激活后才挂载面板' },
22
- { name: 'keepDOM', type: 'boolean', default: 'false', desc: '激活过的面板保留 DOM' },
23
- {
24
- name: 'tabList',
25
- type: 'TabItem[]',
26
- default: 'undefined',
27
- desc: '数据驱动标签定义;不传则从子 <Tabs.Pane> 的 tab/itemKey/disabled/closable 纯声明式自动收集',
28
- },
29
- { name: 'closable', type: 'boolean', default: 'false', desc: '全局可关闭(单项可覆盖)' },
30
- {
31
- name: 'addable',
32
- type: 'boolean',
33
- default: 'false',
34
- desc: '标签栏末尾显示「+」按钮,点击触发 onAdd(受控,由父组件追加)',
35
- },
36
- {
37
- name: 'keyboardActivation',
38
- type: "'auto'|'manual'",
39
- default: 'auto',
40
- desc: '方向键聚焦即激活 / 需 Enter/Space 激活',
41
- },
42
- {
43
- name: 'overflow',
44
- type: "'scroll'|'dropdown'",
45
- default: 'scroll',
46
- desc: '横向溢出处理:scroll 前/后滚动箭头;dropdown 收纳进末尾「更多」下拉(仅 top/bottom 生效,纵向始终滚动)',
47
- },
48
- {
49
- name: 'collapsible',
50
- type: 'boolean',
51
- default: 'false',
52
- desc: 'line 风格横向溢出时启用折叠收纳(便捷开关,等价 overflow=dropdown:放不下的标签进末尾「更多」下拉,仅 top/bottom 生效)',
53
- },
54
- {
55
- name: 'more',
56
- type: "number | { count?: number; render?: Snippet; dropdownProps?: object }",
57
- default: 'undefined',
58
- desc: '溢出折叠配置:数字简写或对象形式,仅 dropdown 模式有效',
59
- },
60
- {
61
- name: 'arrowPosition',
62
- type: "'start'|'end'|'both'",
63
- default: 'both',
64
- desc: 'scroll 模式中前/后箭头位置',
65
- },
66
- {
67
- name: 'renderArrow',
68
- type: "Snippet<[{ type: 'start'|'end'; onClick: () => void }]>",
69
- default: 'undefined',
70
- desc: '自定义前/后滚动箭头',
71
- },
72
- {
73
- name: 'showRestInDropdown',
74
- type: 'boolean',
75
- default: 'true',
76
- desc: 'dropdown 折叠模式是否在下拉中展示收起 tabs',
77
- },
78
- {
79
- name: 'dropdownProps',
80
- type: 'object',
81
- default: 'undefined',
82
- desc: '透传给「更多」Dropdown 组件的 props',
83
- },
84
- {
85
- name: 'onVisibleTabsChange',
86
- type: '(visibleTabKeys: (string|number)[]) => void',
87
- default: 'undefined',
88
- desc: 'dropdown 模式下溢出项变化时回调,携带当前可见 tab keys',
89
- },
90
- {
91
- name: 'contentStyle',
92
- type: 'string | Record<string, string>',
93
- default: 'undefined',
94
- desc: '内容区外层样式(string 或 CSSProperties 对象)',
95
- },
96
- {
97
- name: 'preventScroll',
98
- type: 'boolean',
99
- default: 'false',
100
- desc: 'Tab 聚焦时是否阻止页面滚动',
101
- },
102
- {
103
- name: 'tabPaneMotion',
104
- type: 'boolean',
105
- default: 'true',
106
- desc: '面板切换是否启用动画',
107
- },
108
- {
109
- name: 'tabBarExtraContent',
110
- type: 'Snippet',
111
- default: 'undefined',
112
- desc: '标签栏右侧额外内容',
113
- },
114
- { name: 'onChange', type: '(key: string|number) => void', default: 'undefined' },
115
- { name: 'onTabClose', type: '(key: string|number) => void', default: 'undefined' },
116
- {
117
- name: 'onTabClick',
118
- type: '(key: string|number, event: MouseEvent) => void',
119
- default: 'undefined',
120
- desc: '标签被点击触发(含已选中标签,未必触发 onChange;disabled 拦截前发出,可用于埋点)',
121
- },
122
- {
123
- name: 'onAdd',
124
- type: '() => void',
125
- default: 'undefined',
126
- desc: 'addable=true 时点击「+」按钮回调(受控数据,组件内不改 tabList)',
127
- },
128
- {
129
- name: 'renderTabBar',
130
- type: 'Snippet<[TabItem[], string|number|undefined, (key) => void]>',
131
- default: 'undefined',
132
- desc: '自定义整个标签栏渲染(接收 tab 列表、当前激活 key、切换回调 setActive);传入时跳过内置标签栏与溢出处理,面板内容仍按 activeKey 显隐',
133
- },
134
- { name: 'children', type: 'Snippet', default: 'undefined', desc: '声明式 TabPane 内容(<Tabs.Pane>)' },
135
- ],
136
- a11y: {
137
- role: 'tablist',
138
- keyboard: ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End', 'Enter', 'Space'],
139
- notes: [
140
- 'tablist 内每个标签为 role=tab,aria-selected 标记激活,aria-controls 关联面板',
141
- 'roving tabindex:仅激活标签 tabindex=0,其余 -1',
142
- 'keyboardActivation=auto 聚焦即激活,manual 需 Enter/Space 确认',
143
- '面板 role=tabpanel;关闭叉为带 aria-label 的原生 button',
144
- '标签溢出时出现前/后滚动箭头(带 aria-label,tabindex=-1 不入 Tab 序),激活标签自动滚到可视区',
145
- 'overflow=dropdown 时溢出标签收进末尾「更多」下拉(aria-haspopup=menu,带 aria-label),激活标签始终保持可见',
146
- 'addable 的「+」为带 aria-label 的原生 button',
147
- 'renderTabBar 自定义标签栏时由调用方负责无障碍语义(role=tab/aria-selected 等)',
148
- 'preventScroll=true 时 Tab 聚焦不触发页面滚动',
149
- ],
150
- },
151
- tokens: ['--cd-tabs-*', '--cd-focus-ring', '--cd-radius-1', '--cd-spacing-*'],
152
- } as const;
package/src/tabs/types.ts DELETED
@@ -1,6 +0,0 @@
1
- export interface TabItem {
2
- tab: string;
3
- itemKey: string | number;
4
- disabled?: boolean;
5
- closable?: boolean;
6
- }
@@ -1,33 +0,0 @@
1
- // Tag a11y:closable 关闭按钮有可访问名(locale 派生);checkable 取 role=checkbox + aria-checked。
2
- // 经 TagA11yFixture 提供真实文本 children(自带 LocaleProvider,故直接 render)。
3
- import { describe, it, expect } from 'vitest';
4
- import { render } from '@testing-library/svelte';
5
- import { expectNoAxeViolations } from '../test-utils/a11y.js';
6
- import TagA11yFixture from './TagA11yFixture.svelte';
7
-
8
- describe('Tag a11y', () => {
9
- it('基础:渲染文本内容,无 axe violations', async () => {
10
- const { container } = render(TagA11yFixture, { props: { text: 'Done' } });
11
- expect(container.querySelector('.cd-tag')?.textContent).toContain('Done');
12
- await expectNoAxeViolations(container);
13
- });
14
-
15
- it('closable:关闭按钮带 aria-label(来自 locale),无 axe violations', async () => {
16
- const { container } = render(TagA11yFixture, {
17
- props: { text: 'Done', props: { closable: true, tagText: 'Done' } },
18
- });
19
- const closeBtn = container.querySelector('.cd-tag__close');
20
- expect(closeBtn?.getAttribute('aria-label')).toBeTruthy();
21
- await expectNoAxeViolations(container);
22
- });
23
-
24
- it('checkable:role=checkbox + aria-checked,无 axe violations', async () => {
25
- const { container } = render(TagA11yFixture, {
26
- props: { text: 'Filter', props: { checkable: true, checked: true } },
27
- });
28
- const root = container.querySelector('.cd-tag');
29
- expect(root?.getAttribute('role')).toBe('checkbox');
30
- expect(root?.getAttribute('aria-checked')).toBe('true');
31
- await expectNoAxeViolations(container);
32
- });
33
- });
@@ -1,366 +0,0 @@
1
- <!--
2
- Tag — see specs/components/show/Tag.spec.md
3
- Display atom. Controlled checked/visible never written back (only onChange/onClose).
4
- -->
5
- <script lang="ts">
6
- import type { Snippet } from 'svelte';
7
- import { useLocale } from '../locale-provider/index.js';
8
- import Avatar from '../avatar/Avatar.svelte';
9
-
10
- type TagType = 'light' | 'solid' | 'ghost';
11
- type TagColor = 'grey' | 'primary' | 'success' | 'warning' | 'danger';
12
- type TagSize = 'small' | 'default' | 'large';
13
- type TagShape = 'square' | 'circle';
14
-
15
- interface Props {
16
- type?: TagType;
17
- color?: TagColor;
18
- size?: TagSize;
19
- shape?: TagShape;
20
- closable?: boolean;
21
- /** controlled visibility; when false the tag is not rendered */
22
- visible?: boolean;
23
- checkable?: boolean;
24
- /** controlled checked state */
25
- checked?: boolean;
26
- disabled?: boolean;
27
- onClose?: () => void;
28
- onChange?: (checked: boolean) => void;
29
- children?: Snippet;
30
- prefixIcon?: Snippet;
31
- /** 后置图标(与 closable 互不冲突,关闭图标始终最右) */
32
- suffixIcon?: Snippet;
33
- /** 头像型 Tag 的图片地址 */
34
- avatarSrc?: string;
35
- /** 头像形状 */
36
- avatarShape?: 'square' | 'circle';
37
- /** 自定义关闭图标(默认内置 X) */
38
- closeIcon?: Snippet;
39
- /**
40
- * 标签纯文本,仅用于派生 closable 关闭按钮的无障碍名(如「移除 已完成」)。
41
- * children 为 Snippet 无法取文本,故由调用方显式提供;缺省时关闭按钮退回通用「关闭」标签。
42
- */
43
- tagText?: string;
44
- /** 在 TagGroup 中的稳定标识 */
45
- tagKey?: string | number;
46
- /** 透传根类名 */
47
- class?: string;
48
- /** 透传根内联样式 */
49
- style?: string;
50
- }
51
-
52
- let {
53
- type = 'light',
54
- color = 'grey',
55
- size = 'default',
56
- shape = 'square',
57
- closable = false,
58
- visible,
59
- checkable = false,
60
- checked,
61
- disabled = false,
62
- onClose,
63
- onChange,
64
- children,
65
- prefixIcon,
66
- suffixIcon,
67
- avatarSrc,
68
- avatarShape = 'square',
69
- closeIcon,
70
- tagText,
71
- class: className,
72
- style,
73
- }: Props = $props();
74
-
75
- const loc = useLocale();
76
-
77
- // closable 关闭按钮无障碍名:有 tagText 时派生「移除 <文本>」(i18n Tag.closeAriaLabel),
78
- // 缺省退回通用「关闭」(Tag.close),保证按钮永远有可读名。
79
- const closeLabel = $derived(
80
- tagText !== undefined && tagText !== ''
81
- ? loc().t('Tag.closeAriaLabel', { label: tagText })
82
- : loc().t('Tag.close'),
83
- );
84
-
85
- // --- visible: controlled vs uncontrolled (never write the prop back) ---
86
- const visibleControlled = $derived(visible !== undefined);
87
- let innerVisible = $state(true);
88
- const currentVisible = $derived(visibleControlled ? !!visible : innerVisible);
89
-
90
- // --- checked: controlled vs uncontrolled (never write the prop back) ---
91
- const checkedControlled = $derived(checked !== undefined);
92
- let innerChecked = $state(false);
93
- const currentChecked = $derived(checkedControlled ? !!checked : innerChecked);
94
-
95
- const cls = $derived(
96
- [
97
- 'cd-tag',
98
- `cd-tag--${type}`,
99
- `cd-tag--${color}`,
100
- `cd-tag--${size}`,
101
- `cd-tag--${shape}`,
102
- checkable && 'cd-tag--checkable',
103
- checkable && currentChecked && 'cd-tag--checked',
104
- disabled && 'cd-tag--disabled',
105
- avatarSrc && 'cd-tag--has-avatar',
106
- className,
107
- ]
108
- .filter(Boolean)
109
- .join(' '),
110
- );
111
-
112
- // avatar sizing follows tag size; keep avatar compact within the tag
113
- const avatarSize = $derived(
114
- size === 'small' ? 16 : size === 'large' ? 24 : 20,
115
- );
116
-
117
- function handleToggle() {
118
- if (disabled || !checkable) return;
119
- const next = !currentChecked;
120
- // Controlled: parent owns `checked`; propagate via onChange only.
121
- if (!checkedControlled) innerChecked = next;
122
- onChange?.(next);
123
- }
124
-
125
- function handleClose(e: MouseEvent) {
126
- e.stopPropagation();
127
- if (disabled) return;
128
- // Controlled: parent owns `visible` and must set it false.
129
- if (!visibleControlled) innerVisible = false;
130
- onClose?.();
131
- }
132
-
133
- function handleKeydown(e: KeyboardEvent) {
134
- if (!checkable || disabled) return;
135
- if (e.key === ' ' || e.key === 'Enter') {
136
- e.preventDefault();
137
- handleToggle();
138
- }
139
- }
140
- </script>
141
-
142
- {#if currentVisible}
143
- {#if checkable}
144
- <span
145
- class={cls}
146
- {style}
147
- role="checkbox"
148
- aria-checked={currentChecked}
149
- aria-disabled={disabled || undefined}
150
- tabindex={disabled ? -1 : 0}
151
- onclick={handleToggle}
152
- onkeydown={handleKeydown}
153
- >
154
- {@render leading()}
155
- {#if children}<span class="cd-tag__content">{@render children()}</span>{/if}
156
- {@render trailing()}
157
- </span>
158
- {:else}
159
- <span class={cls} {style}>
160
- {@render leading()}
161
- {#if children}<span class="cd-tag__content">{@render children()}</span>{/if}
162
- {@render trailing()}
163
- {#if closable}
164
- <button
165
- type="button"
166
- class="cd-tag__close"
167
- aria-label={closeLabel}
168
- disabled={disabled || undefined}
169
- onclick={handleClose}
170
- >
171
- {#if closeIcon}
172
- {@render closeIcon()}
173
- {:else}
174
- <svg viewBox="0 0 16 16" focusable="false" aria-hidden="true">
175
- <path
176
- fill="none"
177
- stroke="currentColor"
178
- stroke-width="1.6"
179
- stroke-linecap="round"
180
- d="M4 4 L12 12 M12 4 L4 12"
181
- />
182
- </svg>
183
- {/if}
184
- </button>
185
- {/if}
186
- </span>
187
- {/if}
188
- {/if}
189
-
190
- <!-- leading: avatar (highest priority) then prefix icon -->
191
- {#snippet leading()}
192
- {#if avatarSrc}
193
- <span class="cd-tag__avatar">
194
- <Avatar src={avatarSrc} shape={avatarShape} size={avatarSize} />
195
- </span>
196
- {/if}
197
- {#if prefixIcon}<span class="cd-tag__prefix">{@render prefixIcon()}</span>{/if}
198
- {/snippet}
199
-
200
- <!-- trailing: suffix icon (closable's X is rendered separately, always rightmost) -->
201
- {#snippet trailing()}
202
- {#if suffixIcon}<span class="cd-tag__suffix">{@render suffixIcon()}</span>{/if}
203
- {/snippet}
204
-
205
- <style>
206
- .cd-tag {
207
- --cd-tag-semantic: var(--cd-color-text-1);
208
- --cd-tag-surface: var(--cd-color-bg-0);
209
- display: inline-flex;
210
- align-items: center;
211
- gap: var(--cd-tag-gap);
212
- block-size: var(--cd-tag-height-default);
213
- padding-inline: var(--cd-tag-padding-x);
214
- border: 1px solid transparent;
215
- border-radius: var(--cd-tag-radius);
216
- font-size: var(--cd-tag-font-size);
217
- line-height: 1;
218
- white-space: nowrap;
219
- vertical-align: middle;
220
- box-sizing: border-box;
221
- }
222
- .cd-tag--small {
223
- block-size: var(--cd-tag-height-small);
224
- }
225
- .cd-tag--large {
226
- block-size: var(--cd-tag-height-large);
227
- }
228
- .cd-tag--circle {
229
- border-radius: var(--cd-radius-full);
230
- }
231
-
232
- /* color → semantic mapping */
233
- .cd-tag--grey {
234
- --cd-tag-semantic: var(--cd-color-text-1);
235
- }
236
- .cd-tag--primary {
237
- --cd-tag-semantic: var(--cd-color-primary);
238
- }
239
- .cd-tag--success {
240
- --cd-tag-semantic: var(--cd-color-success);
241
- }
242
- .cd-tag--warning {
243
- --cd-tag-semantic: var(--cd-color-warning);
244
- }
245
- .cd-tag--danger {
246
- --cd-tag-semantic: var(--cd-color-danger);
247
- }
248
-
249
- /* light: tinted background + strong text */
250
- .cd-tag--light {
251
- background: color-mix(in srgb, var(--cd-tag-semantic) 12%, var(--cd-tag-surface));
252
- color: var(--cd-tag-semantic);
253
- }
254
- .cd-tag--light.cd-tag--grey {
255
- background: var(--cd-color-fill-0);
256
- color: var(--cd-color-text-0);
257
- }
258
-
259
- /* solid: filled background + inverse text */
260
- .cd-tag--solid {
261
- background: var(--cd-tag-semantic);
262
- color: var(--cd-color-text-inverse);
263
- }
264
- .cd-tag--solid.cd-tag--grey {
265
- background: var(--cd-color-text-2);
266
- color: var(--cd-color-text-inverse);
267
- }
268
- .cd-tag--solid.cd-tag--warning {
269
- color: var(--cd-color-text-inverse);
270
- }
271
-
272
- /* ghost: transparent background + border */
273
- .cd-tag--ghost {
274
- background: transparent;
275
- border-color: var(--cd-tag-semantic);
276
- color: var(--cd-tag-semantic);
277
- }
278
- .cd-tag--ghost.cd-tag--grey {
279
- border-color: var(--cd-color-border);
280
- color: var(--cd-color-text-1);
281
- }
282
-
283
- /* checkable chip */
284
- .cd-tag--checkable {
285
- cursor: pointer;
286
- user-select: none;
287
- transition:
288
- background-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard),
289
- border-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
290
- }
291
- .cd-tag--checkable:not(.cd-tag--checked) {
292
- background: var(--cd-color-fill-0);
293
- border-color: transparent;
294
- color: var(--cd-color-text-1);
295
- }
296
- .cd-tag--checkable.cd-tag--checked {
297
- background: var(--cd-tag-semantic);
298
- color: var(--cd-color-text-inverse);
299
- border-color: transparent;
300
- }
301
- .cd-tag--checkable.cd-tag--checked.cd-tag--grey {
302
- background: var(--cd-color-primary);
303
- }
304
- .cd-tag--checkable.cd-tag--checked.cd-tag--warning {
305
- color: var(--cd-color-text-inverse);
306
- }
307
- .cd-tag--checkable:focus-visible {
308
- outline: none;
309
- box-shadow: var(--cd-focus-ring);
310
- }
311
-
312
- .cd-tag--disabled {
313
- cursor: not-allowed;
314
- opacity: 0.5;
315
- }
316
-
317
- .cd-tag__prefix,
318
- .cd-tag__suffix,
319
- .cd-tag__content {
320
- display: inline-flex;
321
- align-items: center;
322
- }
323
-
324
- .cd-tag__avatar {
325
- display: inline-flex;
326
- align-items: center;
327
- margin-inline-start: calc(var(--cd-tag-padding-x) * -0.5);
328
- }
329
-
330
- .cd-tag__close {
331
- display: inline-flex;
332
- align-items: center;
333
- justify-content: center;
334
- inline-size: 1em;
335
- block-size: 1em;
336
- padding: 0;
337
- margin: 0;
338
- border: 0;
339
- background: transparent;
340
- color: currentColor;
341
- cursor: pointer;
342
- opacity: 0.7;
343
- border-radius: var(--cd-radius-full);
344
- }
345
- .cd-tag__close:hover {
346
- opacity: 1;
347
- }
348
- .cd-tag__close:disabled {
349
- cursor: not-allowed;
350
- opacity: 0.5;
351
- }
352
- .cd-tag__close:focus-visible {
353
- outline: none;
354
- box-shadow: var(--cd-focus-ring);
355
- }
356
- .cd-tag__close svg {
357
- inline-size: 100%;
358
- block-size: 100%;
359
- }
360
-
361
- @media (prefers-reduced-motion: reduce) {
362
- .cd-tag--checkable {
363
- transition: none;
364
- }
365
- }
366
- </style>
@@ -1,18 +0,0 @@
1
- <!--
2
- Tag a11y 测试夹具:提供真实文本 children(createRawSnippet 在 harness 下不渲染文本)。
3
- 自带 LocaleProvider,故测试直接 render 本夹具。
4
- -->
5
- <script lang="ts">
6
- import { LocaleProvider } from '../locale-provider/index.js';
7
- import Tag from './Tag.svelte';
8
-
9
- interface Props {
10
- text?: string;
11
- props?: Record<string, unknown>;
12
- }
13
- let { text = 'Done', props = {} }: Props = $props();
14
- </script>
15
-
16
- <LocaleProvider locale="en_US">
17
- <Tag {...props}>{text}</Tag>
18
- </LocaleProvider>
package/src/tag/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { default as Tag } from './Tag.svelte';
2
- export { meta as tagMeta } from './meta.js';