@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,93 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * LocaleProvider — see specs/components/other/LocaleProvider.spec.md
4
- */
5
- export const meta = {
6
- name: 'LocaleProvider',
7
- category: 'other',
8
- renderless: true,
9
- description:
10
- '语言上下文注入组件,renderless 无 DOM 输出,通过 setContext 注入 LocaleApi(t/formatDate/formatNumber/direction)供后代组件消费;含回退链 + Intl 缓存 + direction 推断,是 ConfigProvider 的 locale 维度子集。locale 支持语言包对象或字符串码(registerLocale 注册表 + 内置查表解析);嵌套时 inherit 深合并父级语言包(子覆盖父);timeZone/currency 经 context 注入 formatDate/formatNumber。',
11
- exports: ['LocaleProvider'],
12
- props: [
13
- {
14
- name: 'locale',
15
- type: 'Locale | string',
16
- default: 'undefined',
17
- desc: "语言包对象或字符串码(如 'zh_CN'/'en-US');字符串经 registerLocale 注册表 + 内置查表解析,未知码回退 en_US",
18
- },
19
- {
20
- name: 'fallback',
21
- type: 'Locale',
22
- default: 'undefined',
23
- desc: '缺失 key 回退包,默认内部用 en_US',
24
- },
25
- {
26
- name: 'direction',
27
- type: "'ltr'|'rtl'|'auto'",
28
- default: "'auto'",
29
- desc: "文本方向,'auto' 按 locale.rtl 推断",
30
- },
31
- {
32
- name: 'inherit',
33
- type: 'boolean',
34
- default: 'true',
35
- desc: '嵌套时深合并父级 LocaleProvider 语言包(子覆盖父,未覆盖继承父);false 则整体替换',
36
- },
37
- {
38
- name: 'timeZone',
39
- type: 'string',
40
- default: 'undefined',
41
- desc: "默认 IANA 时区(如 'Asia/Shanghai')注入 formatDate;未设时继承父级",
42
- },
43
- {
44
- name: 'currency',
45
- type: 'string',
46
- default: 'undefined',
47
- desc: "默认 ISO 4217 货币(如 'CNY')用于 currency 风格 formatNumber;未设时继承父级",
48
- },
49
- ],
50
- events: [{ name: 'onLocaleChange', desc: 'locale/direction 变化时通知(受控,不回写)' }],
51
- slots: [
52
- {
53
- name: 'children',
54
- desc: '作用域参数 { locale, t, formatDate, formatNumber, direction }',
55
- },
56
- ],
57
- a11y: {
58
- hasRole: false,
59
- note: '无 DOM 无 role;推荐宿主监听 onLocaleChange 同步 html lang/dir 满足 WCAG 3.1.2;renderless 不丢焦点。',
60
- },
61
- tokens: [],
62
- responsive: false,
63
- examples: [
64
- {
65
- title: '基础包裹',
66
- code: '<LocaleProvider {locale}>{@render app()}</LocaleProvider>',
67
- },
68
- {
69
- title: '局部覆盖',
70
- code: '<LocaleProvider locale={en_US}>{@render section()}</LocaleProvider>',
71
- },
72
- {
73
- title: 'slot 作用域格式化',
74
- code: '<LocaleProvider {locale}>{#snippet children({ t, formatNumber })}{t("Modal.okText")} {formatNumber(1234.5)}{/snippet}</LocaleProvider>',
75
- },
76
- {
77
- title: '字符串码解析',
78
- code: '<LocaleProvider locale="en_US">{@render app()}</LocaleProvider>',
79
- },
80
- {
81
- title: '注册自定义包后用码',
82
- code: "registerLocale('fr_FR', fr); // 再 <LocaleProvider locale=\"fr_FR\">…",
83
- },
84
- {
85
- title: '嵌套 inherit 深合并',
86
- code: '<LocaleProvider locale={zh_CN}>{@render outer()}<LocaleProvider locale={{ Modal: { okText: "好的" } }}>{@render inner()}</LocaleProvider></LocaleProvider>',
87
- },
88
- {
89
- title: '时区 / 货币',
90
- code: '<LocaleProvider locale="zh_CN" timeZone="Asia/Shanghai" currency="CNY">{@render app()}</LocaleProvider>',
91
- },
92
- ],
93
- } as const;
@@ -1,25 +0,0 @@
1
- import { createLocale, en_US, type LocaleApi } from '@chenzy-design/locale';
2
- import { getLocaleContext } from './index.js';
3
-
4
- // 无 Provider 时的回退实例:用 en_US 构造一次并缓存(模块级单例),
5
- // 避免每个未被 LocaleProvider 包裹的组件各自重建 createLocale。
6
- let fallbackApi: LocaleApi | undefined;
7
- function getFallbackApi(): LocaleApi {
8
- if (!fallbackApi) fallbackApi = createLocale({ locale: en_US });
9
- return fallbackApi;
10
- }
11
-
12
- /**
13
- * 统一的 locale 消费入口。组件在 `<script>` 顶层(初始化期)调用一次拿到
14
- * 一个稳定 getter,再在 `$derived` 里读 `loc().t('Component.field')`。
15
- *
16
- * - 有 `<LocaleProvider>` 包裹:返回最近注入的 LocaleApi(随语言切换响应更新)。
17
- * - 无 Provider:回退到 en_US 构造的 LocaleApi(不崩溃、不渲染空串)。
18
- *
19
- * 返回函数而非直接返回 api:context 的 `{ current }` 是 getter,必须在
20
- * 渲染期重新读取才能在语言切换后拿到新 api,故包成 `() => LocaleApi`。
21
- */
22
- export function useLocale(): () => LocaleApi {
23
- const ctx = getLocaleContext();
24
- return () => ctx?.current ?? getFallbackApi();
25
- }
@@ -1,330 +0,0 @@
1
- <!--
2
- LottieIcon — see specs/components/other/LottieIcon.spec.md
3
- 依赖注入 player:组件不绑定 lottie-web,用户传入 player 工厂(库零外部重依赖)。
4
- 红线 #1:trigger/autoplay 等是受控输入,组件不回写。
5
- 红线 #3:adapter(player 注入)在 $effect 命令式创建 + cleanup destroy;matchMedia 订阅同样 cleanup 解绑;
6
- src fetch 用 AbortController,effect cleanup 中 abort + 丢弃过期响应。
7
- src:除内联 data 外可传 URL,异步 fetch Lottie JSON;加载中 skeleton、失败态 error(文案经 locale)。
8
- segments:[start,end] 帧段或命名 marker(resolveSegments 解析)→ 经 adapter.playSegments / factory segment 初始段。
9
- flipRtl:RTL 场景水平镜像(transform scaleX(-1))。
10
- prefers-reduced-motion:animated=false 时定位首帧并暂停(goToFrame),系统变化经 matchMedia 实时生效。
11
- a11y:decorative=true → aria-hidden;decorative=false → role=img + aria-label;不可聚焦。
12
- -->
13
- <script lang="ts">
14
- import {
15
- resolveSize,
16
- resolveAnimated,
17
- shouldAutoplay,
18
- resolveSegments,
19
- isLottieSrc,
20
- resolveRenderer,
21
- type LottieTrigger,
22
- type LottieSize,
23
- type LottieSegments,
24
- type LottieRenderer,
25
- type LottiePlayerAdapter,
26
- type LottiePlayerFactory,
27
- } from '@chenzy-design/core';
28
- import { useLocale } from '../locale-provider/index.js';
29
-
30
- interface Props {
31
- /** Lottie JSON 数据(内联)。与 src 二选一;同时存在时 data 优先。 */
32
- data?: unknown;
33
- /** Lottie JSON 动画 URL,异步 fetch 加载(除内联 data 外的来源)。 */
34
- src?: string;
35
- /** 必填:用户注入的 player 工厂(包装 lottie-web 等),库不内置 */
36
- player: LottiePlayerFactory;
37
- /** 播放指定帧段:[start,end] 帧对或命名 marker(按动画 markers 解析)。 */
38
- segments?: LottieSegments;
39
- /** RTL 场景水平镜像动画(transform scaleX(-1))。 */
40
- flipRtl?: boolean;
41
- /** 受控显隐(默认 true):false 时隐藏并暂停动画,true 恢复播放。组件不回写(红线 #1)。 */
42
- visible?: boolean;
43
- /** 便捷开关:true 时用 canvas 渲染后端(等价 renderer='canvas')。 */
44
- canvas?: boolean;
45
- /** 渲染后端('svg'|'canvas'|'html'),经 adapter 透传;优先于 canvas。未设时默认 svg。 */
46
- renderer?: LottieRenderer;
47
- size?: LottieSize | number;
48
- color?: string;
49
- trigger?: LottieTrigger;
50
- autoplay?: boolean;
51
- loop?: boolean | number;
52
- speed?: number;
53
- reducedMotion?: boolean;
54
- decorative?: boolean;
55
- label?: string;
56
- class?: string;
57
- style?: string;
58
- onPlay?: () => void;
59
- onPause?: () => void;
60
- /** src 加载成功回调(透出原始动画数据)。 */
61
- onLoad?: (data: unknown) => void;
62
- /** src 加载失败回调。 */
63
- onError?: (err: unknown) => void;
64
- }
65
-
66
- let {
67
- data,
68
- src,
69
- player,
70
- segments,
71
- flipRtl = false,
72
- visible = true,
73
- canvas = false,
74
- renderer,
75
- size = 'default',
76
- color,
77
- trigger = 'auto',
78
- autoplay = true,
79
- loop = true,
80
- speed = 1,
81
- reducedMotion,
82
- decorative = true,
83
- label,
84
- class: className,
85
- style,
86
- onPlay,
87
- onPause,
88
- onLoad,
89
- onError,
90
- }: Props = $props();
91
-
92
- const loc = useLocale();
93
-
94
- // bind:this 挂载点;lottie-web 等会往容器内注入 svg/canvas。
95
- let container = $state<HTMLElement | null>(null);
96
- // 系统 reduced-motion;matchMedia 命令式监听(cleanup 解绑)。
97
- let systemReduced = $state(false);
98
- // adapter 由 player 工厂创建,$effect 命令式生命周期。
99
- // $state:供下方 visible effect 在 adapter 创建/销毁后重新协调 play/pause。
100
- let adapter = $state<LottiePlayerAdapter | null>(null);
101
-
102
- // src fetch 结果(不回写 data prop,受控不污染);状态机驱动 skeleton/error。
103
- let fetched = $state<unknown>(undefined);
104
- let status = $state<'idle' | 'loading' | 'error'>('idle');
105
-
106
- const animated = $derived(resolveAnimated(reducedMotion, systemReduced));
107
- const px = $derived(resolveSize(size));
108
- // 实际渲染数据:内联 data 优先,其次 src fetch 结果。
109
- const activeData = $derived(data != null ? data : fetched);
110
- // 解析后的帧段(纯函数);null 表示整段播放。
111
- const segment = $derived(resolveSegments(segments, activeData));
112
- // 渲染后端(纯函数):renderer 优先,其次 canvas→'canvas';undefined 表示沿用 adapter 默认(svg)。
113
- const renderBackend = $derived(resolveRenderer(canvas, renderer));
114
-
115
- // matchMedia 订阅系统 reduced-motion,cleanup 解绑。
116
- $effect(() => {
117
- if (typeof window === 'undefined' || !window.matchMedia) return;
118
- const mq = window.matchMedia('(prefers-reduced-motion: reduce)');
119
- systemReduced = mq.matches;
120
- const handler = (e: MediaQueryListEvent) => {
121
- systemReduced = e.matches;
122
- };
123
- mq.addEventListener('change', handler);
124
- return () => mq.removeEventListener('change', handler);
125
- });
126
-
127
- // src fetch:内联 data 缺省且 src 为 URL 时异步加载。
128
- // 红线 #3:AbortController + cleanup abort;effect 重跑/卸载丢弃过期响应。
129
- $effect(() => {
130
- // 内联 data 优先,存在时无需 fetch。
131
- if (data != null || !isLottieSrc(src)) {
132
- status = 'idle';
133
- return;
134
- }
135
- const url = src;
136
- const controller = new AbortController();
137
- let cancelled = false;
138
- status = 'loading';
139
- fetched = undefined;
140
- fetch(url, { signal: controller.signal })
141
- .then((res) => {
142
- if (!res.ok) throw new Error(`HTTP ${res.status}`);
143
- return res.json();
144
- })
145
- .then((json) => {
146
- if (cancelled) return;
147
- fetched = json;
148
- status = 'idle';
149
- onLoad?.(json);
150
- })
151
- .catch((err) => {
152
- if (cancelled || controller.signal.aborted) return;
153
- status = 'error';
154
- onError?.(err);
155
- });
156
- return () => {
157
- cancelled = true;
158
- controller.abort();
159
- };
160
- });
161
-
162
- // player 生命周期:container + data 就绪时创建 adapter,cleanup 销毁。
163
- // 依赖 container/activeData/animated/player + 配置项 + 解析后 segment + 渲染后端;变化重建 adapter(可接受)。
164
- // 注意:不依赖 visible——显隐切换由下方独立 effect 命令式 play/pause 控制,避免无谓重建。
165
- $effect(() => {
166
- if (!container || activeData == null) return;
167
- const willAutoplay = shouldAutoplay(trigger, autoplay, animated);
168
- const a = player({
169
- container,
170
- data: activeData,
171
- loop,
172
- autoplay: willAutoplay,
173
- speed,
174
- ...(segment ? { segment } : {}),
175
- ...(renderBackend ? { renderer: renderBackend } : {}),
176
- });
177
- adapter = a;
178
- // 有帧段且应当播放:命令式播放指定段(player 未实现 playSegments 时已由 factory segment 兜底)。
179
- if (segment && willAutoplay && a.playSegments) {
180
- a.playSegments(segment);
181
- }
182
- // reduced-motion:定位首帧并暂停(静止渲染首帧)。
183
- if (!animated && a.goToFrame) {
184
- a.goToFrame(segment ? segment[0] : 0);
185
- a.pause();
186
- }
187
- return () => {
188
- a.destroy();
189
- adapter = null;
190
- };
191
- });
192
-
193
- // 受控 visible:命令式控制 player play/pause(红线 #3)。不回写 visible(红线 #1)。
194
- // visible=false → 暂停(容器同时 display:none 隐藏);visible=true 且允许动画 → 按触发方式恢复播放。
195
- // reduced-motion(animated=false)下保持静止首帧,不强行起播。
196
- $effect(() => {
197
- const a = adapter;
198
- if (!a) return;
199
- if (!visible) {
200
- a.pause();
201
- return;
202
- }
203
- // 恢复显隐:仅 auto + autoplay 场景自动续播;hover/manual 维持当前态由用户驱动。
204
- if (animated && shouldAutoplay(trigger, autoplay, animated)) {
205
- if (segment && a.playSegments) a.playSegments(segment);
206
- else a.play();
207
- }
208
- });
209
-
210
- // 命令式方法,供 bind:this 调用。
211
- export function play() {
212
- if (animated) {
213
- if (segment && adapter?.playSegments) adapter.playSegments(segment);
214
- else adapter?.play();
215
- onPlay?.();
216
- }
217
- }
218
- export function pause() {
219
- adapter?.pause();
220
- onPause?.();
221
- }
222
- export function stop() {
223
- adapter?.stop();
224
- }
225
-
226
- function handleEnter() {
227
- if (animated) {
228
- if (segment && adapter?.playSegments) adapter.playSegments(segment);
229
- else adapter?.play();
230
- onPlay?.();
231
- }
232
- }
233
- function handleLeave() {
234
- adapter?.pause();
235
- onPause?.();
236
- }
237
- </script>
238
-
239
- <i
240
- class={[
241
- 'cd-lottie-icon',
242
- flipRtl && 'cd-lottie-icon--flip-rtl',
243
- !visible && 'cd-lottie-icon--hidden',
244
- className,
245
- ]
246
- .filter(Boolean)
247
- .join(' ')}
248
- bind:this={container}
249
- style="--cd-lottieicon-current-size:{px}px; {color
250
- ? `--cd-lottieicon-color:${color};`
251
- : ''} {style ?? ''}"
252
- aria-hidden={decorative ? 'true' : undefined}
253
- role={decorative ? undefined : 'img'}
254
- aria-label={decorative
255
- ? undefined
256
- : status === 'loading'
257
- ? loc().t('LottieIcon.loading')
258
- : status === 'error'
259
- ? loc().t('LottieIcon.loadError')
260
- : (label ?? undefined)}
261
- data-status={status === 'idle' ? undefined : status}
262
- onmouseenter={trigger === 'hover' ? handleEnter : undefined}
263
- onmouseleave={trigger === 'hover' ? handleLeave : undefined}
264
- >
265
- {#if status === 'loading'}
266
- <span class="cd-lottie-icon__skeleton" aria-hidden="true"></span>
267
- {/if}
268
- </i>
269
-
270
- <style>
271
- .cd-lottie-icon {
272
- display: inline-flex;
273
- align-items: center;
274
- justify-content: center;
275
- inline-size: var(--cd-lottieicon-current-size, var(--cd-lottieicon-size));
276
- block-size: var(--cd-lottieicon-current-size, var(--cd-lottieicon-size));
277
- color: var(--cd-lottieicon-color);
278
- vertical-align: var(--cd-lottieicon-valign);
279
- }
280
-
281
- /* RTL 镜像:水平翻转动画内容 */
282
- .cd-lottie-icon--flip-rtl {
283
- transform: scaleX(-1);
284
- }
285
-
286
- /* 受控隐藏:display:none(不占位);adapter 已在 effect cleanup 中销毁/暂停 */
287
- .cd-lottie-icon--hidden {
288
- display: none;
289
- }
290
-
291
- /* player 注入的内容撑满容器 */
292
- .cd-lottie-icon :global(svg),
293
- .cd-lottie-icon :global(canvas) {
294
- inline-size: 100%;
295
- block-size: 100%;
296
- display: block;
297
- }
298
-
299
- /* src 加载中骨架占位 */
300
- .cd-lottie-icon__skeleton {
301
- inline-size: 100%;
302
- block-size: 100%;
303
- border-radius: var(--cd-lottieicon-radius);
304
- background: var(--cd-lottieicon-bg-skeleton);
305
- animation: cd-lottieicon-pulse 1.2s ease-in-out infinite;
306
- }
307
-
308
- /* src 加载失败:边框提示色 */
309
- .cd-lottie-icon[data-status='error'] {
310
- color: var(--cd-lottieicon-error-color);
311
- border-radius: var(--cd-lottieicon-radius);
312
- box-shadow: inset 0 0 0 1px currentColor;
313
- }
314
-
315
- @keyframes cd-lottieicon-pulse {
316
- 0%,
317
- 100% {
318
- opacity: 1;
319
- }
320
- 50% {
321
- opacity: 0.5;
322
- }
323
- }
324
-
325
- @media (prefers-reduced-motion: reduce) {
326
- .cd-lottie-icon__skeleton {
327
- animation: none;
328
- }
329
- }
330
- </style>
@@ -1,9 +0,0 @@
1
- export { default as LottieIcon } from './LottieIcon.svelte';
2
- export { meta as lottieIconMeta } from './meta.js';
3
- export type {
4
- LottiePlayerAdapter,
5
- LottiePlayerFactory,
6
- LottieTrigger,
7
- LottieSize,
8
- LottieSegments,
9
- } from '@chenzy-design/core';
@@ -1,162 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * LottieIcon — see specs/components/other/LottieIcon.spec.md
4
- */
5
- export const meta = {
6
- name: 'LottieIcon',
7
- category: 'other',
8
- description:
9
- 'Lottie 动画图标:依赖注入 player 工厂(库不绑定 lottie-web,用户自带),data 内联 JSON 或 src URL 异步 fetch(AbortController + 加载中 skeleton / 失败 error 态),size/color/trigger(auto/hover/manual)/loop/speed 播放控制,segments 帧段([start,end]或命名 marker),flipRtl RTL 水平镜像,visible 受控显隐(false 暂停+display:none),canvas/renderer 渲染后端(svg/canvas/html,经 adapter 透传),命令式 play/pause/stop,prefers-reduced-motion 降级首帧静止,decorative aria-hidden / 功能性 role=img+label。',
10
- exports: ['LottieIcon'],
11
- props: [
12
- {
13
- name: 'data',
14
- type: 'unknown',
15
- default: 'undefined',
16
- desc: 'Lottie JSON 数据(内联);与 src 二选一,同时存在时 data 优先',
17
- },
18
- {
19
- name: 'src',
20
- type: 'string',
21
- default: 'undefined',
22
- desc: 'Lottie JSON 动画 URL,异步 fetch 加载(AbortController + 加载中/失败态)',
23
- },
24
- {
25
- name: 'player',
26
- type: 'LottiePlayerFactory',
27
- default: 'undefined',
28
- desc: '必填:用户注入的 player 工厂(包装 lottie-web 等),库不内置',
29
- },
30
- {
31
- name: 'segments',
32
- type: '[number, number] | string',
33
- default: 'undefined',
34
- desc: '播放指定帧段:[start,end] 帧对或命名 marker(按动画 markers 解析)',
35
- },
36
- {
37
- name: 'flipRtl',
38
- type: 'boolean',
39
- default: 'false',
40
- desc: 'RTL 场景水平镜像动画(transform scaleX(-1))',
41
- },
42
- {
43
- name: 'visible',
44
- type: 'boolean',
45
- default: 'true',
46
- desc: '受控显隐:false 时 display:none 并命令式暂停动画,true 恢复(auto+autoplay 自动续播);组件不回写',
47
- },
48
- {
49
- name: 'canvas',
50
- type: 'boolean',
51
- default: 'false',
52
- desc: '便捷开关:true 时用 canvas 渲染后端(等价 renderer="canvas"),经 adapter 透传',
53
- },
54
- {
55
- name: 'renderer',
56
- type: "'svg'|'canvas'|'html'",
57
- default: 'undefined',
58
- desc: '渲染后端,经 adapter 的 renderer 参数透传(优先于 canvas);未设时默认 svg,旧 adapter 不破坏',
59
- },
60
- {
61
- name: 'size',
62
- type: "'small'|'default'|'large'|number",
63
- default: "'default'",
64
- desc: '尺寸 token 或 px 数值',
65
- },
66
- {
67
- name: 'color',
68
- type: 'string',
69
- default: 'undefined',
70
- desc: '可着色图层色,默认继承 --cd-lottieicon-color',
71
- },
72
- {
73
- name: 'trigger',
74
- type: "'auto'|'hover'|'manual'",
75
- default: "'auto'",
76
- desc: '播放触发方式',
77
- },
78
- { name: 'autoplay', type: 'boolean', default: 'true', desc: 'auto 触发时是否自动播放' },
79
- { name: 'loop', type: 'boolean|number', default: 'true', desc: '循环开关或循环次数' },
80
- { name: 'speed', type: 'number', default: '1', desc: '播放速度' },
81
- {
82
- name: 'reducedMotion',
83
- type: 'boolean',
84
- default: 'undefined',
85
- desc: '强制降级开关;未设跟随系统 prefers-reduced-motion',
86
- },
87
- {
88
- name: 'onLoad',
89
- type: '(data: unknown) => void',
90
- default: 'undefined',
91
- desc: 'src 加载成功回调',
92
- },
93
- {
94
- name: 'onError',
95
- type: '(err: unknown) => void',
96
- default: 'undefined',
97
- desc: 'src 加载失败回调',
98
- },
99
- {
100
- name: 'decorative',
101
- type: 'boolean',
102
- default: 'true',
103
- desc: 'true 装饰性 aria-hidden;false 时必须给 label',
104
- },
105
- {
106
- name: 'label',
107
- type: 'string',
108
- default: 'undefined',
109
- desc: '功能性图标无障碍名(decorative=false 必填)',
110
- },
111
- ],
112
- events: [
113
- { name: 'onPlay', desc: '开始播放回调' },
114
- { name: 'onPause', desc: '暂停回调' },
115
- { name: 'onLoad', desc: 'src 加载成功回调(透出动画数据)' },
116
- { name: 'onError', desc: 'src 加载失败回调' },
117
- ],
118
- slots: [],
119
- a11y: {
120
- hasRole: true,
121
- focusable: false,
122
- note: 'decorative=true 时 aria-hidden;decorative=false 时 role=img + aria-label;不可聚焦(无 tabindex);reduced-motion 时不播放,渲染静止首帧。',
123
- },
124
- tokens: [
125
- '--cd-lottieicon-size',
126
- '--cd-lottieicon-size-small',
127
- '--cd-lottieicon-size-large',
128
- '--cd-lottieicon-color',
129
- '--cd-lottieicon-color-hover',
130
- '--cd-lottieicon-bg-skeleton',
131
- '--cd-lottieicon-radius',
132
- '--cd-lottieicon-error-color',
133
- '--cd-lottieicon-valign',
134
- ],
135
- responsive: false,
136
- examples: [
137
- {
138
- title: 'auto 自动播放',
139
- code: '<LottieIcon {data} player={makePlayer} />',
140
- },
141
- {
142
- title: 'hover 触发',
143
- code: '<LottieIcon {data} player={makePlayer} trigger="hover" />',
144
- },
145
- {
146
- title: 'reduced-motion 降级(首帧静止)',
147
- code: '<LottieIcon {data} player={makePlayer} reducedMotion />',
148
- },
149
- {
150
- title: 'src URL 异步加载',
151
- code: '<LottieIcon src="/anim/like.json" player={makePlayer} />',
152
- },
153
- {
154
- title: 'segments 帧段播放',
155
- code: '<LottieIcon {data} player={makePlayer} segments={[10, 60]} />',
156
- },
157
- {
158
- title: 'flipRtl RTL 镜像',
159
- code: '<LottieIcon {data} player={makePlayer} flipRtl />',
160
- },
161
- ],
162
- } as const;
@@ -1,54 +0,0 @@
1
- // Menu a11y:数据驱动导航菜单。
2
- // 容器 ul[role=menu](horizontal 为 menubar),叶子 button[role=menuitem],
3
- // 单选选中项 aria-current=true,多选叶子 role=menuitemcheckbox + aria-checked。
4
- import { describe, it, expect } from 'vitest';
5
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
6
- import Menu from './Menu.svelte';
7
-
8
- const items = [
9
- { key: 'home', label: 'Home' },
10
- { key: 'profile', label: 'Profile' },
11
- { key: 'settings', label: 'Settings' },
12
- ];
13
-
14
- describe('Menu a11y', () => {
15
- it('默认渲染:role=menu + menuitem,无 axe violations', async () => {
16
- const { container } = renderWithLocale(Menu, {
17
- props: { items, ariaLabel: 'Main menu' },
18
- });
19
- const menu = container.querySelector('[role="menu"]');
20
- expect(menu).not.toBeNull();
21
- expect(menu?.getAttribute('aria-label')).toBe('Main menu');
22
- const menuitems = container.querySelectorAll('[role="menuitem"]');
23
- expect(menuitems.length).toBe(3);
24
- await expectNoAxeViolations(container);
25
- });
26
-
27
- it('单选选中态:选中叶子 aria-current=true', async () => {
28
- const { container } = renderWithLocale(Menu, {
29
- props: { items, ariaLabel: 'Nav', defaultSelectedKeys: ['profile'] },
30
- });
31
- const current = container.querySelector('[role="menuitem"][aria-current="true"]');
32
- expect(current?.textContent).toContain('Profile');
33
- await expectNoAxeViolations(container);
34
- });
35
-
36
- it('horizontal 模式:容器 role=menubar', async () => {
37
- const { container } = renderWithLocale(Menu, {
38
- props: { items, ariaLabel: 'Top', mode: 'horizontal' },
39
- });
40
- expect(container.querySelector('[role="menubar"]')).not.toBeNull();
41
- await expectNoAxeViolations(container);
42
- });
43
-
44
- it('multiple:叶子 role=menuitemcheckbox + aria-checked', async () => {
45
- const { container } = renderWithLocale(Menu, {
46
- props: { items, ariaLabel: 'Multi', multiple: true, defaultSelectedKeys: ['home'] },
47
- });
48
- const checkboxes = container.querySelectorAll('[role="menuitemcheckbox"]');
49
- expect(checkboxes.length).toBe(3);
50
- const checked = container.querySelector('[role="menuitemcheckbox"][aria-checked="true"]');
51
- expect(checked?.textContent).toContain('Home');
52
- await expectNoAxeViolations(container);
53
- });
54
- });