@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
package/src/grid/meta.ts DELETED
@@ -1,72 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * Aggregated metadata for the Grid family (Row + Col).
4
- * 24-column flex grid with responsive breakpoint props (xs/sm/md/lg/xl/xxl).
5
- */
6
- export const meta = {
7
- name: 'Grid',
8
- category: 'basic',
9
- description: '24 栅格布局:Row 容器 + Col 列,flex 实现,gutter 经 context 下发到 Col;支持 xs/sm/md/lg/xl/xxl 响应式断点(mobile-first 降级解析)。',
10
- exports: ['Row', 'Col'],
11
- // flat props (Row + Col merged); each item tagged with its owner.
12
- props: [
13
- {
14
- owner: 'Row',
15
- name: 'gutter',
16
- type: 'number|[number,number]|Partial<Record<Breakpoint,number|[number,number]>>',
17
- default: '0',
18
- desc: 'number→水平间距;[x,y]→水平+垂直;按断点对象 { xs,sm,md,... } 时按当前视口 mobile-first 降级解析',
19
- },
20
- {
21
- owner: 'Row',
22
- name: 'align',
23
- type: "'top'|'middle'|'bottom'|'baseline'|'stretch'",
24
- default: "'top'",
25
- desc: '映射 align-items',
26
- },
27
- {
28
- owner: 'Row',
29
- name: 'justify',
30
- type: "'start'|'end'|'center'|'space-between'|'space-around'|'space-evenly'",
31
- default: "'start'",
32
- desc: '映射 justify-content',
33
- },
34
- { owner: 'Row', name: 'wrap', type: 'boolean', default: 'true', desc: 'false→flex-wrap:nowrap' },
35
- { owner: 'Row', name: 'class', type: 'string', default: "''" },
36
- { owner: 'Col', name: 'span', type: 'number', default: 'undefined', desc: '0-24,0 隐藏,未设为自动列' },
37
- { owner: 'Col', name: 'offset', type: 'number', default: '0', desc: 'margin-inline-start 偏移列数' },
38
- { owner: 'Col', name: 'order', type: 'number', default: '0', desc: 'flex order' },
39
- { owner: 'Col', name: 'push', type: 'number', default: '0', desc: 'inset-inline-start 相对偏移' },
40
- { owner: 'Col', name: 'pull', type: 'number', default: '0', desc: 'inset-inline-end 相对偏移' },
41
- {
42
- owner: 'Col',
43
- name: 'flex',
44
- type: 'string|number',
45
- default: 'undefined',
46
- desc: '设置后优先于 span,直接控制 flex',
47
- },
48
- {
49
- owner: 'Col',
50
- name: 'xs|sm|md|lg|xl|xxl',
51
- type: 'number | { span?, offset?, order?, push?, pull?, flex? }',
52
- default: 'undefined',
53
- desc: '响应式断点覆盖:值为 number(span) 或子集对象,按当前视口 mobile-first 降级解析后覆盖基础 props',
54
- },
55
- { owner: 'Col', name: 'class', type: 'string', default: "''" },
56
- ],
57
- events: [],
58
- slots: [{ name: 'children', desc: 'Row 内放 Col;Col 内放任意内容' }],
59
- a11y: { hasRole: false, focusable: false, note: '纯布局容器,不引入语义角色' },
60
- tokens: ['--cd-grid-columns', '--cd-grid-gutter-x', '--cd-grid-gutter-y'],
61
- responsive: true,
62
- examples: [
63
- {
64
- title: '基础两栏',
65
- code: '<Row gutter={16}><Col span={12}>左</Col><Col span={12}>右</Col></Row>',
66
- },
67
- {
68
- title: '响应式断点',
69
- code: '<Row gutter={{ xs: 8, md: 24 }}><Col xs={24} md={12}>左</Col><Col xs={24} md={12}>右</Col></Row>',
70
- },
71
- ],
72
- } as const;
@@ -1,48 +0,0 @@
1
- /**
2
- * useBreakpoint — reactive current breakpoint from the viewport width.
3
- * Listens to resize (rAF-throttled) imperatively in $effect with cleanup
4
- * (red line #3); pure breakpoint math lives in @chenzy-design/core.
5
- * SSR-safe: defaults to 'xs' until mounted, then syncs to the real width.
6
- */
7
- import { resolveActiveBreakpoint, type Breakpoint } from '@chenzy-design/core';
8
-
9
- export interface BreakpointHandle {
10
- /** the current active breakpoint (reactive) */
11
- readonly current: Breakpoint;
12
- }
13
-
14
- const SUPPORTS_DOM = typeof window !== 'undefined';
15
-
16
- export function useBreakpoint(): BreakpointHandle {
17
- // initial value: real width if available (client), else 'xs' (SSR-safe).
18
- let bp = $state<Breakpoint>(
19
- SUPPORTS_DOM ? resolveActiveBreakpoint(window.innerWidth) : 'xs',
20
- );
21
-
22
- $effect(() => {
23
- if (!SUPPORTS_DOM) return;
24
- let frame = 0;
25
- const measure = () => {
26
- frame = 0;
27
- const next = resolveActiveBreakpoint(window.innerWidth);
28
- if (next !== bp) bp = next;
29
- };
30
- const onResize = () => {
31
- if (frame) return;
32
- frame = window.requestAnimationFrame(measure);
33
- };
34
- // sync once on mount (covers the SSR→client width correction) then listen.
35
- measure();
36
- window.addEventListener('resize', onResize);
37
- return () => {
38
- if (frame) window.cancelAnimationFrame(frame);
39
- window.removeEventListener('resize', onResize);
40
- };
41
- });
42
-
43
- return {
44
- get current() {
45
- return bp;
46
- },
47
- };
48
- }
@@ -1,25 +0,0 @@
1
- // Highlight a11y:命中片段默认渲染 <mark>,纯文本输出。
2
- import { describe, it, expect } from 'vitest';
3
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
4
- import Highlight from './Highlight.svelte';
5
-
6
- describe('Highlight a11y', () => {
7
- it('单关键词:命中渲染 <mark>,无 axe violations', async () => {
8
- const { container } = renderWithLocale(Highlight, {
9
- props: { sourceString: 'The quick brown fox', searchWords: 'quick' },
10
- });
11
- const marks = container.querySelectorAll('mark.cd-highlight__mark');
12
- expect(marks.length).toBe(1);
13
- expect(marks[0]?.textContent).toBe('quick');
14
- await expectNoAxeViolations(container);
15
- });
16
-
17
- it('多关键词:多处命中,无 axe violations', async () => {
18
- const { container } = renderWithLocale(Highlight, {
19
- props: { sourceString: 'red green red blue', searchWords: ['red', 'blue'] },
20
- });
21
- const marks = container.querySelectorAll('mark.cd-highlight__mark');
22
- expect(marks.length).toBe(3);
23
- await expectNoAxeViolations(container);
24
- });
25
- });
@@ -1,99 +0,0 @@
1
- <!--
2
- Highlight — see specs/components/show/Highlight.spec.md
3
- 纯展示文本高亮:sourceString 中标记 searchWords。纯文本输出(不解析 HTML)。
4
- 片段分割 / 重叠区间合并为纯函数(@chenzy-design/core highlightChunks,红线 #2),
5
- 渲染派生:默认 <mark>,可由 highlight/chunk snippet 自定义。
6
- 支持单/多关键词、大小写敏感、highlightAll、autoEscape、自定义 component/类名/样式、
7
- unstyled、命中片段 id + aria 关联。
8
- -->
9
- <script lang="ts">
10
- import type { Snippet } from 'svelte';
11
- import { highlightChunks, useId } from '@chenzy-design/core';
12
-
13
- interface Props {
14
- sourceString?: string;
15
- searchWords?: string | string[];
16
- caseSensitive?: boolean;
17
- highlightAll?: boolean;
18
- autoEscape?: boolean;
19
- component?: string;
20
- highlightClassName?: string;
21
- highlightStyle?: string;
22
- className?: string;
23
- style?: string;
24
- unstyled?: boolean;
25
- /** 自定义命中片段渲染(覆盖默认 <mark>)。 */
26
- highlight?: Snippet<[{ chunk: string; index: number }]>;
27
- /** 自定义非命中片段渲染(默认裸文本)。 */
28
- chunk?: Snippet<[{ chunk: string; index: number }]>;
29
- /** 命中片段 id 前缀,用于 aria 关联;省略则自动生成。 */
30
- idPrefix?: string;
31
- /** 追加到每个命中片段的 aria-describedby(指向外部说明元素)。 */
32
- describedById?: string;
33
- /** 命中片段的 aria-label(默认不加,避免逐字播报噪音)。 */
34
- highlightAriaLabel?: string;
35
- }
36
-
37
- let {
38
- sourceString = '',
39
- searchWords = [],
40
- caseSensitive = false,
41
- highlightAll = true,
42
- autoEscape = true,
43
- component = 'mark',
44
- highlightClassName = '',
45
- highlightStyle = '',
46
- className = '',
47
- style = '',
48
- unstyled = false,
49
- highlight,
50
- chunk,
51
- idPrefix,
52
- describedById,
53
- highlightAriaLabel,
54
- }: Props = $props();
55
-
56
- // 稳定前缀:仅在未显式传入时生成一次,render 期只读(红线 #2)。
57
- const autoPrefix = useId('cd-highlight');
58
- const prefix = $derived(idPrefix || autoPrefix);
59
-
60
- // 片段分割 + 重叠区间合并:纯函数(core),渲染只读派生(红线 #2)。
61
- const chunks = $derived(
62
- highlightChunks(sourceString, searchWords, { caseSensitive, highlightAll, autoEscape }),
63
- );
64
-
65
- const rootClass = $derived(['cd-highlight', className].filter(Boolean).join(' '));
66
- const markClass = $derived(
67
- ['cd-highlight__mark', unstyled && 'cd-highlight__mark--unstyled', highlightClassName]
68
- .filter(Boolean)
69
- .join(' '),
70
- );
71
- </script>
72
-
73
- <span class={rootClass} style={style || undefined}
74
- >{#each chunks as item, i (i)}{#if item.matched}{#if highlight}{@render highlight({ chunk: item.text, index: i })}{:else}<svelte:element
75
- this={component}
76
- id={`${prefix}-${i}`}
77
- class={markClass}
78
- style={highlightStyle || undefined}
79
- aria-label={highlightAriaLabel || undefined}
80
- aria-describedby={describedById || undefined}>{item.text}</svelte:element>{/if}{:else if chunk}{@render chunk({ chunk: item.text, index: i })}{:else}{item.text}{/if}{/each}</span
81
- >
82
-
83
- <style>
84
- .cd-highlight {
85
- color: inherit;
86
- }
87
- .cd-highlight__mark {
88
- padding-inline: 2px;
89
- border-radius: var(--cd-radius-small);
90
- background: var(--cd-highlight-bg);
91
- color: var(--cd-highlight-color);
92
- font-weight: inherit;
93
- }
94
- .cd-highlight__mark--unstyled {
95
- padding-inline: 0;
96
- background: transparent;
97
- color: inherit;
98
- }
99
- </style>
@@ -1,2 +0,0 @@
1
- export { default as Highlight } from './Highlight.svelte';
2
- export { meta as highlightMeta } from './meta.js';
@@ -1,80 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * Highlight — see specs/components/show/Highlight.spec.md
4
- */
5
- export const meta = {
6
- name: 'Highlight',
7
- category: 'show',
8
- description:
9
- '纯展示文本高亮:在 sourceString 中标记 searchWords,默认用 <mark> 包裹。纯文本输出(HTML 会被转义而非解析),支持大小写敏感、仅首个/全部匹配、正则转义开关与自定义包裹元素/样式。',
10
- exports: ['Highlight'],
11
- props: [
12
- { name: 'sourceString', type: 'string', default: "''", desc: '待处理原始文本(纯文本,HTML 被转义)' },
13
- { name: 'searchWords', type: 'string|string[]', default: '[]', desc: '需高亮关键词,空串忽略' },
14
- { name: 'caseSensitive', type: 'boolean', default: 'false', desc: '是否大小写敏感' },
15
- { name: 'highlightAll', type: 'boolean', default: 'true', desc: 'true 高亮全部匹配,false 仅首个' },
16
- {
17
- name: 'autoEscape',
18
- type: 'boolean',
19
- default: 'true',
20
- desc: '是否对关键词正则转义;关闭后 searchWords 视为正则源',
21
- },
22
- { name: 'component', type: 'string', default: "'mark'", desc: '高亮片段包裹标签名' },
23
- { name: 'highlightClassName', type: 'string', default: "''", desc: '追加到高亮片段的类名' },
24
- { name: 'highlightStyle', type: 'string', default: "''", desc: '追加到高亮片段的内联样式' },
25
- { name: 'className', type: 'string', default: "''", desc: '根 span 类名' },
26
- { name: 'style', type: 'string', default: "''", desc: '根 span 内联样式' },
27
- { name: 'unstyled', type: 'boolean', default: 'false', desc: '移除默认高亮视觉,仅保留语义与类名' },
28
- {
29
- name: 'idPrefix',
30
- type: 'string',
31
- default: 'auto',
32
- desc: '命中片段 id 前缀(生成 `${prefix}-${index}`),用于 aria 关联;省略则自动生成',
33
- },
34
- {
35
- name: 'describedById',
36
- type: 'string',
37
- default: "''",
38
- desc: '追加到每个命中片段的 aria-describedby,指向外部说明元素',
39
- },
40
- {
41
- name: 'highlightAriaLabel',
42
- type: 'string',
43
- default: 'undefined',
44
- desc: '命中片段的 aria-label;默认不加以避免逐字播报噪音',
45
- },
46
- ],
47
- events: [],
48
- slots: [
49
- {
50
- name: 'highlight',
51
- type: 'Snippet<[{ chunk: string; index: number }]>',
52
- desc: '自定义命中片段渲染,覆盖默认 <mark>;不传则保持默认高亮行为',
53
- },
54
- {
55
- name: 'chunk',
56
- type: 'Snippet<[{ chunk: string; index: number }]>',
57
- desc: '自定义非命中片段渲染;不传则输出裸文本',
58
- },
59
- ],
60
- a11y: {
61
- role: 'none',
62
- focusable: false,
63
- notes: [
64
- '高亮片段用原生 <mark> 元素承载浏览器/AT 内建“标记”语义',
65
- '不可聚焦、无 tabindex,避免搜索结果列表产生大量 Tab 停留点',
66
- '默认不对每个高亮加 aria-label,避免逐字播报噪音;命中计数由调用方外层 live region 负责',
67
- '每个命中片段带稳定 id(idPrefix-index),可被外部 aria-describedby/控件引用以定位',
68
- '可选 describedById/highlightAriaLabel 供需要显式关联的无障碍场景按需开启',
69
- '语义+背景双通道区分,不仅靠颜色(WCAG 1.4.1)',
70
- ],
71
- },
72
- tokens: ['--cd-highlight-bg', '--cd-highlight-color', '--cd-radius-small'],
73
- examples: [
74
- { title: '基础', code: '<Highlight sourceString="hello world" searchWords="world" />' },
75
- {
76
- title: '多词',
77
- code: '<Highlight sourceString="foo bar baz" searchWords={["foo", "baz"]} />',
78
- },
79
- ],
80
- } as const;
@@ -1,156 +0,0 @@
1
- <!--
2
- Icon — see specs/components/basic/Icon.spec.md
3
- Pure presentational primitive. Token-driven size/color, a11y-correct.
4
- -->
5
- <script lang="ts">
6
- import type { Component, Snippet } from 'svelte';
7
-
8
- type IconSize = 'extra-small' | 'small' | 'default' | 'large' | 'extra-large' | number;
9
- type IconStatus = 'default' | 'warning' | 'error' | 'success' | 'info';
10
-
11
- interface Props {
12
- size?: IconSize;
13
- spin?: boolean;
14
- rotate?: number;
15
- status?: IconStatus;
16
- color?: string;
17
- /** 直接传入 SVG 字符串,内部用 {@html} 渲染。来源须可信(构建期 SVGO 净化)。 */
18
- svg?: string;
19
- /** 传入一个 Svelte 图标组件作为渲染源。 */
20
- component?: Component;
21
- label?: string;
22
- class?: string;
23
- /** 透传到根元素的内联样式。 */
24
- style?: string;
25
- children?: Snippet;
26
- }
27
-
28
- let {
29
- size = 'default',
30
- spin = false,
31
- rotate = 0,
32
- status = 'default',
33
- color,
34
- svg,
35
- component,
36
- label,
37
- class: className = '',
38
- style = '',
39
- children,
40
- }: Props = $props();
41
-
42
- // 渲染源派生:优先级 svg > component > children。
43
- const SvgComponent = $derived(component);
44
-
45
- const isNumericSize = $derived(typeof size === 'number');
46
-
47
- const cls = $derived(
48
- [
49
- 'cd-icon',
50
- !isNumericSize && `cd-icon--${size}`,
51
- status !== 'default' && `cd-icon--status-${status}`,
52
- spin && 'cd-icon--spin',
53
- className,
54
- ]
55
- .filter(Boolean)
56
- .join(' '),
57
- );
58
-
59
- const inlineStyle = $derived(
60
- [
61
- isNumericSize && `width:${size}px`,
62
- isNumericSize && `height:${size}px`,
63
- color && `color:${color}`,
64
- rotate && `transform:rotate(${rotate}deg)`,
65
- style,
66
- ]
67
- .filter(Boolean)
68
- .join(';'),
69
- );
70
- </script>
71
-
72
- <span
73
- class={cls}
74
- style={inlineStyle || undefined}
75
- role={label ? 'img' : undefined}
76
- aria-label={label}
77
- aria-hidden={label ? undefined : 'true'}
78
- >
79
- {#if svg}
80
- <!-- 渲染源 svg:信任来源(构建期 SVGO 净化),运行时不做净化;用户传入的运行时 svg 须自行确保可信。 -->
81
- {@html svg}
82
- {:else if SvgComponent}
83
- <SvgComponent />
84
- {:else}
85
- {@render children?.()}
86
- {/if}
87
- </span>
88
-
89
- <style>
90
- .cd-icon {
91
- display: inline-flex;
92
- align-items: center;
93
- justify-content: center;
94
- vertical-align: -0.125em;
95
- width: var(--cd-icon-size-default);
96
- height: var(--cd-icon-size-default);
97
- color: currentColor;
98
- fill: currentColor;
99
- line-height: 1;
100
- }
101
- .cd-icon :global(svg) {
102
- width: 100%;
103
- height: 100%;
104
- /* Do NOT force fill here: stroke-based SVGs set their own fill="none".
105
- Color propagates via currentColor; fill-based icons should use
106
- fill="currentColor" in their own markup. */
107
- }
108
- .cd-icon--extra-small {
109
- width: var(--cd-icon-size-extra-small);
110
- height: var(--cd-icon-size-extra-small);
111
- }
112
- .cd-icon--small {
113
- width: var(--cd-icon-size-small);
114
- height: var(--cd-icon-size-small);
115
- }
116
- .cd-icon--default {
117
- width: var(--cd-icon-size-default);
118
- height: var(--cd-icon-size-default);
119
- }
120
- .cd-icon--large {
121
- width: var(--cd-icon-size-large);
122
- height: var(--cd-icon-size-large);
123
- }
124
- .cd-icon--extra-large {
125
- width: var(--cd-icon-size-extra-large);
126
- height: var(--cd-icon-size-extra-large);
127
- }
128
- .cd-icon--status-warning {
129
- color: var(--cd-icon-color-warning);
130
- }
131
- .cd-icon--status-error {
132
- color: var(--cd-icon-color-error);
133
- }
134
- .cd-icon--status-success {
135
- color: var(--cd-icon-color-success);
136
- }
137
- .cd-icon--status-info {
138
- color: var(--cd-icon-color-info);
139
- }
140
- .cd-icon--spin {
141
- animation: cd-icon-spin var(--cd-icon-spin-duration) var(--cd-icon-spin-timing) infinite;
142
- }
143
- @keyframes cd-icon-spin {
144
- from {
145
- transform: rotate(0deg);
146
- }
147
- to {
148
- transform: rotate(360deg);
149
- }
150
- }
151
- @media (prefers-reduced-motion: reduce) {
152
- .cd-icon--spin {
153
- animation: none;
154
- }
155
- }
156
- </style>
package/src/icon/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { default as Icon } from './Icon.svelte';
2
- export { meta as iconMeta } from './meta.js';
package/src/icon/meta.ts DELETED
@@ -1,41 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * See specs/components/basic/Icon.spec.md.
4
- */
5
- export const meta = {
6
- name: 'Icon',
7
- category: 'basic',
8
- description: '统一尺寸、颜色、对齐的矢量图标容器,纯展示原语。',
9
- props: [
10
- {
11
- name: 'size',
12
- type: "'extra-small'|'small'|'default'|'large'|'extra-large'|number",
13
- default: "'default'",
14
- desc: '尺寸枚举映射到 token,数字直接作为 px',
15
- },
16
- { name: 'spin', type: 'boolean', default: 'false', desc: '持续旋转,受 reduced-motion 抑制' },
17
- { name: 'rotate', type: 'number', default: '0', desc: '静态旋转角度(deg)' },
18
- { name: 'status', type: "'default'|'warning'|'error'|'success'|'info'", default: "'default'" },
19
- { name: 'color', type: 'string', default: 'undefined', desc: '显式覆盖颜色,优先级高于 status' },
20
- {
21
- name: 'svg',
22
- type: 'string',
23
- default: 'undefined',
24
- desc: 'SVG 字符串,内部 {@html} 渲染(来源须可信);优先级最高',
25
- },
26
- {
27
- name: 'component',
28
- type: 'Component',
29
- default: 'undefined',
30
- desc: 'Svelte 图标组件作渲染源;优先级高于 children',
31
- },
32
- { name: 'label', type: 'string', default: 'undefined', desc: '语义图标可访问名称;提供后 role=img' },
33
- { name: 'class', type: 'string', default: "''" },
34
- { name: 'style', type: 'string', default: "''", desc: '透传到根元素的内联样式' },
35
- ],
36
- events: [],
37
- slots: [{ name: 'children', desc: '自定义图标内容(SVG)' }],
38
- a11y: { role: 'img-when-labeled', decorativeDefault: true, reducedMotion: true },
39
- tokens: ['--cd-icon-size-*', '--cd-icon-color', '--cd-icon-color-*', '--cd-icon-spin-*'],
40
- examples: [{ title: '加载中', code: '<Icon spin status="info">{@render svg()}</Icon>' }],
41
- } as const;
@@ -1,30 +0,0 @@
1
- // Image a11y:有意义图带 alt;装饰图(alt='')取 role=presentation。
2
- // jsdom 不真正解码图片,状态停在 loading/placeholder,<img> 与 alt/role 仍可断言。
3
- import { describe, it, expect } from 'vitest';
4
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
5
- import Image from './Image.svelte';
6
-
7
- // Image 的 src 为必填 prop,与 renderWithLocale 的宽松 AnyComponent 形态不严格兼容
8
- // (exactOptionalPropertyTypes),故转为 helper 接受的构造器类型。
9
- const ImageC = Image as unknown as Parameters<typeof renderWithLocale>[0];
10
-
11
- describe('Image a11y', () => {
12
- it('有意义图:<img> 带 alt,无 axe violations', async () => {
13
- const { container } = renderWithLocale(ImageC, {
14
- props: { src: 'https://example.com/p.png', alt: 'A scenic mountain', lazy: false },
15
- });
16
- const img = container.querySelector('img.cd-image__img');
17
- expect(img?.getAttribute('alt')).toBe('A scenic mountain');
18
- expect(img?.getAttribute('role')).toBeNull();
19
- await expectNoAxeViolations(container);
20
- });
21
-
22
- it('装饰图(alt=""):role=presentation,无 axe violations', async () => {
23
- const { container } = renderWithLocale(ImageC, {
24
- props: { src: 'https://example.com/deco.png', alt: '', lazy: false },
25
- });
26
- const img = container.querySelector('img.cd-image__img');
27
- expect(img?.getAttribute('role')).toBe('presentation');
28
- await expectNoAxeViolations(container);
29
- });
30
- });