@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,21 +0,0 @@
1
- <!--
2
- 仅供 Slider.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
3
- 渲染单值 Slider 与 range Slider 两块:
4
- - 单值:一个 role=slider 手柄,方向键 / Home / End 真实调值(aria-valuenow)。
5
- - range:两个 role=slider 手柄,各自可聚焦、各自调值。
6
- before 按钮用于验证 Tab 真实聚焦到手柄。
7
- -->
8
- <script lang="ts">
9
- import { LocaleProvider } from '../locale-provider/index.js';
10
- import Slider from './Slider.svelte';
11
- </script>
12
-
13
- <LocaleProvider locale="en_US">
14
- <button type="button" data-testid="before">before</button>
15
- <div data-testid="single">
16
- <Slider defaultValue={50} min={0} max={100} step={1} ariaLabel="Volume" />
17
- </div>
18
- <div data-testid="range">
19
- <Slider range defaultValue={[20, 60]} min={0} max={100} step={1} ariaLabel="Range" />
20
- </div>
21
- </LocaleProvider>
@@ -1,2 +0,0 @@
1
- export { default as Slider } from './Slider.svelte';
2
- export { meta as sliderMeta } from './meta.js';
@@ -1,55 +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: 'Slider',
7
- category: 'input',
8
- description: '在连续/离散区间内选值的滑块,支持单值与 range、刻度、垂直方向与全键盘操作。',
9
- props: [
10
- { name: 'value', type: 'number | [number, number]', default: 'undefined', desc: '受控值;range 时为二元组' },
11
- { name: 'defaultValue', type: 'number | [number, number]', default: 'min / [min,min]', desc: '非受控初始值' },
12
- { name: 'min', type: 'number', default: '0' },
13
- { name: 'max', type: 'number', default: '100' },
14
- { name: 'step', type: 'number | null', default: '1', desc: 'null 时仅停靠 marks 键' },
15
- { name: 'range', type: 'boolean', default: 'false', desc: '双滑块区间模式' },
16
- { name: 'marks', type: 'Record<number, string>', default: 'undefined', desc: '刻度标记' },
17
- { name: 'dots', type: 'boolean', default: 'false', desc: '在每个 step 处显示圆点(段内激活色)' },
18
- { name: 'included', type: 'boolean', default: 'true', desc: '是否填充已选轨道段' },
19
- { name: 'vertical', type: 'boolean', default: 'false' },
20
- { name: 'verticalReverse', type: 'boolean', default: 'false', desc: '垂直时反向(顶部为 min)' },
21
- { name: 'height', type: 'number', default: '200', desc: '垂直模式高度(px)' },
22
- { name: 'disabled', type: 'boolean', default: 'false' },
23
- { name: 'clickable', type: 'boolean', default: 'true', desc: '是否允许点击轨道跳转到最近合法值' },
24
- { name: 'size', type: "'small'|'default'|'large'", default: 'default' },
25
- { name: 'status', type: "'default'|'warning'|'error'", default: 'default', desc: '校验态,影响已选轨道与手柄边框色' },
26
- { name: 'tooltipVisible', type: 'boolean | undefined', default: 'undefined', desc: '强制控制数值气泡显隐(受控)' },
27
- { name: 'alwaysShowTip', type: 'boolean', default: 'false', desc: '始终显示数值气泡' },
28
- { name: 'tipFormatter', type: '(value: number) => string | null', default: 'String', desc: '自定义气泡文案;返回 null 隐藏' },
29
- { name: 'getAriaValueText', type: '(value: number, index: number) => string', default: 'undefined', desc: '自定义 aria-valuetext(如带单位)' },
30
- { name: 'railStyle', type: 'string', default: 'undefined', desc: '透传轨道内联样式' },
31
- { name: 'handleStyle', type: 'string', default: 'undefined', desc: '透传手柄内联样式' },
32
- { name: 'id', type: 'string', default: 'undefined', desc: '根节点 id,关联表单 label' },
33
- { name: 'ariaLabel', type: 'string', default: 'undefined' },
34
- { name: 'ariaLabelledby', type: 'string', default: 'undefined', desc: 'group 与各手柄 aria-labelledby(指向外部 label id)' },
35
- { name: 'onChange', type: '(v: number | [number, number]) => void', default: 'undefined', desc: '值变化(拖拽落定/键盘/点击)' },
36
- { name: 'onChangeComplete', type: '(v: number | [number, number]) => void', default: 'undefined', desc: '拖拽结束或键盘落定时触发,适合请求节流' },
37
- { name: 'onInput', type: '(v: number | [number, number]) => void', default: 'undefined', desc: '与 change 同步的低级输入信号(拖动中实时触发)' },
38
- { name: 'onFocus', type: '(detail: { index: number }) => void', default: 'undefined', desc: '手柄获得焦点,附带手柄索引' },
39
- { name: 'onBlur', type: '(detail: { index: number }) => void', default: 'undefined', desc: '手柄失焦,附带手柄索引' },
40
- ],
41
- a11y: {
42
- role: 'slider',
43
- keyboard: ['ArrowUp/Right', 'ArrowDown/Left', 'PageUp', 'PageDown', 'Home', 'End'],
44
- notes: [
45
- '根容器 role=group,每个手柄 role=slider + tabindex=0',
46
- '手柄 aria-valuemin/valuemax/valuenow/aria-orientation',
47
- 'range 模式两手柄不交叉(越过自动交换)',
48
- '拖拽命令式:pointerdown 读一次 rail rect,document 监听 pointermove/up',
49
- 'disabled→aria-disabled,手柄 tabindex=-1',
50
- 'aria-valuetext 优先 getAriaValueText,其次 tipFormatter 输出(带单位可读文案)',
51
- '数值气泡:hover/focus/拖拽显示,alwaysShowTip 常驻,tooltipVisible 强制受控',
52
- ],
53
- },
54
- tokens: ['--cd-slider-*', '--cd-color-text-3', '--cd-spacing-*', '--cd-radius-full', '--cd-shadow-1', '--cd-focus-ring', '--cd-motion-*'],
55
- } as const;
@@ -1,22 +0,0 @@
1
- // Space a11y:间距 flex 容器。纯布局容器,不引入语义角色。
2
- // 仅断言 axe 0 violations(透明保留子元素语义)。
3
- import { describe, it, expect } from 'vitest';
4
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
5
- import SpaceFixture from './SpaceA11yFixture.svelte';
6
-
7
- describe('Space a11y', () => {
8
- it('horizontal:纯布局无语义角色,子元素语义透明保留,无 axe violations', async () => {
9
- const { container } = renderWithLocale(SpaceFixture, {});
10
- expect(container.querySelector('.cd-space')).not.toBeNull();
11
- expect(container.querySelectorAll('button').length).toBe(2);
12
- await expectNoAxeViolations(container);
13
- });
14
-
15
- it('vertical:方向切换不引入语义变化,无 axe violations', async () => {
16
- const { container } = renderWithLocale(SpaceFixture, {
17
- props: { direction: 'vertical' },
18
- });
19
- expect(container.querySelector('.cd-space--vertical')).not.toBeNull();
20
- await expectNoAxeViolations(container);
21
- });
22
- });
@@ -1,109 +0,0 @@
1
- <!--
2
- Space — see specs/components/basic/Space.spec.md
3
- Flex spacing container. Token-driven gap.
4
- NOTE: `split` slot (separator between items) is intentionally omitted in this
5
- iteration; to be added later alongside per-item iteration support.
6
- -->
7
- <script lang="ts">
8
- import type { Snippet } from 'svelte';
9
-
10
- type SpaceDirection = 'horizontal' | 'vertical';
11
- type SpaceSpacing = 'tight' | 'medium' | 'loose' | number | [number, number];
12
- type SpaceAlign = 'start' | 'end' | 'center' | 'baseline';
13
-
14
- interface Props {
15
- direction?: SpaceDirection;
16
- spacing?: SpaceSpacing;
17
- align?: SpaceAlign;
18
- wrap?: boolean;
19
- block?: boolean;
20
- class?: string;
21
- children?: Snippet;
22
- }
23
-
24
- let {
25
- direction = 'horizontal',
26
- spacing = 'medium',
27
- align,
28
- wrap = false,
29
- block = false,
30
- class: className = '',
31
- children,
32
- }: Props = $props();
33
-
34
- const presetGap: Record<string, string> = {
35
- tight: 'var(--cd-space-tight)',
36
- medium: 'var(--cd-space-medium)',
37
- loose: 'var(--cd-space-loose)',
38
- };
39
-
40
- const gapCss = $derived.by(() => {
41
- if (Array.isArray(spacing)) {
42
- const [row, col] = spacing;
43
- return `${row}px ${col}px`;
44
- }
45
- if (typeof spacing === 'number') {
46
- return `${spacing}px`;
47
- }
48
- return presetGap[spacing];
49
- });
50
-
51
- const alignItems = $derived.by(() => {
52
- if (!align) return undefined;
53
- if (align === 'start') return 'flex-start';
54
- if (align === 'end') return 'flex-end';
55
- return align;
56
- });
57
-
58
- const isPreset = $derived(typeof spacing === 'string');
59
-
60
- const cls = $derived(
61
- [
62
- 'cd-space',
63
- `cd-space--${direction}`,
64
- isPreset && `cd-space--gap-${spacing}`,
65
- wrap && 'cd-space--wrap',
66
- block && 'cd-space--block',
67
- className,
68
- ]
69
- .filter(Boolean)
70
- .join(' '),
71
- );
72
-
73
- const inlineStyle = $derived(
74
- [!isPreset && `gap:${gapCss}`, alignItems && `align-items:${alignItems}`]
75
- .filter(Boolean)
76
- .join(';'),
77
- );
78
- </script>
79
-
80
- <div class={cls} style={inlineStyle || undefined}>
81
- {@render children?.()}
82
- </div>
83
-
84
- <style>
85
- .cd-space {
86
- display: inline-flex;
87
- }
88
- .cd-space--block {
89
- display: flex;
90
- }
91
- .cd-space--horizontal {
92
- flex-direction: row;
93
- }
94
- .cd-space--vertical {
95
- flex-direction: column;
96
- }
97
- .cd-space--wrap {
98
- flex-wrap: wrap;
99
- }
100
- .cd-space--gap-tight {
101
- gap: var(--cd-space-tight);
102
- }
103
- .cd-space--gap-medium {
104
- gap: var(--cd-space-medium);
105
- }
106
- .cd-space--gap-loose {
107
- gap: var(--cd-space-loose);
108
- }
109
- </style>
@@ -1,17 +0,0 @@
1
- <!--
2
- 仅供 Space.a11y.test.ts 使用的测试夹具:Space 间距容器包裹若干子元素。
3
- 纯布局容器,不引入语义;本套件只断言 axe 0 violations。
4
- -->
5
- <script lang="ts">
6
- import Space from './Space.svelte';
7
-
8
- interface Props {
9
- direction?: 'horizontal' | 'vertical';
10
- }
11
- let { direction = 'horizontal' }: Props = $props();
12
- </script>
13
-
14
- <Space {direction}>
15
- <button type="button">First</button>
16
- <button type="button">Second</button>
17
- </Space>
@@ -1,2 +0,0 @@
1
- export { default as Space } from './Space.svelte';
2
- export { meta as spaceMeta } from './meta.js';
package/src/space/meta.ts DELETED
@@ -1,27 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * See specs/components/basic/Space.spec.md.
4
- */
5
- export const meta = {
6
- name: 'Space',
7
- category: 'basic',
8
- description: '为子元素提供统一间距的 flex 容器。',
9
- props: [
10
- { name: 'direction', type: "'horizontal'|'vertical'", default: "'horizontal'" },
11
- {
12
- name: 'spacing',
13
- type: "'tight'|'medium'|'loose'|number|[number,number]",
14
- default: "'medium'",
15
- desc: '档位映射 token,number→px,数组→[行,列] gap',
16
- },
17
- { name: 'align', type: "'start'|'end'|'center'|'baseline'", default: 'undefined' },
18
- { name: 'wrap', type: 'boolean', default: 'false' },
19
- { name: 'block', type: 'boolean', default: 'false', desc: 'true→display:flex 占满宽度' },
20
- { name: 'class', type: 'string', default: "''" },
21
- ],
22
- events: [],
23
- slots: [{ name: 'children', desc: '需要间距的子元素' }],
24
- a11y: { role: 'none', note: '纯布局容器,不引入语义' },
25
- tokens: ['--cd-space-tight', '--cd-space-medium', '--cd-space-loose'],
26
- examples: [{ title: '横向', code: '<Space><Button>A</Button><Button>B</Button></Space>' }],
27
- } as const;
@@ -1,29 +0,0 @@
1
- // Spin a11y:role=status + aria-live=polite 公布加载。
2
- // 经 SpinA11yFixture(不注入 children,使 inline 形态生效;harness 会恒注入空 children → wrapper)。
3
- import { describe, it, expect } from 'vitest';
4
- import { render } from '@testing-library/svelte';
5
- import { expectNoAxeViolations } from '../test-utils/a11y.js';
6
- import SpinA11yFixture from './SpinA11yFixture.svelte';
7
-
8
- describe('Spin a11y', () => {
9
- it('inline:role=status + aria-live + aria-label(来自 locale),无 axe violations', async () => {
10
- const { container } = render(SpinA11yFixture, {
11
- props: { props: { spinning: true } },
12
- });
13
- const root = container.querySelector('.cd-spin');
14
- expect(root?.getAttribute('role')).toBe('status');
15
- expect(root?.getAttribute('aria-live')).toBe('polite');
16
- // 无 tip 时取 locale 的 Spin.loading 作为可访问名。
17
- expect(root?.getAttribute('aria-label')).toBeTruthy();
18
- await expectNoAxeViolations(container);
19
- });
20
-
21
- it('inline + tip:tip 文本作为可访问名,无 axe violations', async () => {
22
- const { container } = render(SpinA11yFixture, {
23
- props: { props: { spinning: true, tip: 'Loading data' } },
24
- });
25
- const tip = container.querySelector('.cd-spin__tip');
26
- expect(tip?.textContent).toContain('Loading data');
27
- await expectNoAxeViolations(container);
28
- });
29
- });
@@ -1,293 +0,0 @@
1
- <!--
2
- Spin — see specs/components/feedback/Spin.spec.md
3
- 加载指示器:inline / wrapper / fullscreen 三形态。
4
- delay 去抖 + minShowTime 最短显示 由 @chenzy-design/core createSpinController 提供(必须复用,不重复实现)。
5
- 红线 #1:spinning 是受控输入,effective 是内部派生显示态,绝不回写 spinning,仅触发 onShow/onHide。
6
- 红线 #3:定时器/订阅全部在 $effect 命令式管理 + cleanup,无 DOM 几何测量。
7
- role=status (aria-live=polite) 公布加载;wrapper 内容 aria-busy;reduced-motion 退化为呼吸。
8
- -->
9
- <script lang="ts">
10
- import type { Snippet } from 'svelte';
11
- import { createSpinController, type SpinController } from '@chenzy-design/core';
12
- import { useLocale } from '../locale-provider/index.js';
13
-
14
- type Size = 'small' | 'default' | 'large';
15
-
16
- interface Props {
17
- spinning?: boolean;
18
- size?: Size;
19
- tip?: string;
20
- delay?: number;
21
- minShowTime?: number;
22
- fullscreen?: boolean;
23
- wrapperClassName?: string;
24
- ariaLabel?: string;
25
- indicator?: Snippet<[{ size: Size }]>;
26
- children?: Snippet;
27
- onShow?: () => void;
28
- onHide?: () => void;
29
- }
30
-
31
- let {
32
- spinning = true,
33
- size = 'default',
34
- tip = '',
35
- delay = 0,
36
- minShowTime = 0,
37
- fullscreen = false,
38
- wrapperClassName = '',
39
- ariaLabel,
40
- indicator,
41
- children,
42
- onShow,
43
- onHide,
44
- }: Props = $props();
45
-
46
- const loc = useLocale();
47
-
48
- // effective:内部派生显示态,render 读它决定显隐(红线 #1)。
49
- let effective = $state(false);
50
- // controller 在 client $effect 命令式创建(SSR 安全),不在 render 路径触碰定时器。
51
- let ctrl: SpinController | null = $state(null);
52
-
53
- // effect A:mount 时创建 controller 并订阅;依赖 delay/minShowTime(变化才重建)。
54
- // 不依赖 spinning:避免 spinning 变化重建 controller 丢失去抖/最短显示状态。
55
- $effect(() => {
56
- const controller = createSpinController({ delay, minShowTime, spinning });
57
- ctrl = controller;
58
- effective = controller.getEffective();
59
- const unsub = controller.subscribe((v) => {
60
- effective = v;
61
- if (v) onShow?.();
62
- else onHide?.();
63
- });
64
- return () => {
65
- unsub();
66
- controller.destroy();
67
- ctrl = null;
68
- };
69
- });
70
-
71
- // effect B:仅依赖 spinning + ctrl,把受控请求推给 controller(红线 #1:只推入,不回写)。
72
- $effect(() => {
73
- ctrl?.setSpinning(spinning);
74
- });
75
-
76
- const isWrapper = $derived(children !== undefined && !fullscreen);
77
- const isFullscreen = $derived(fullscreen);
78
- const isInline = $derived(!isWrapper && !isFullscreen);
79
-
80
- const hasTip = $derived(tip.length > 0);
81
- // 有 tip 时 tip 文本作为可访问名;无 tip 时用 ariaLabel。
82
- const statusLabel = $derived(hasTip ? undefined : (ariaLabel ?? loc().t('Spin.loading')));
83
-
84
- const indicatorClass = $derived(`cd-spin__indicator cd-spin__indicator--${size}`);
85
- </script>
86
-
87
- {#snippet defaultIndicator()}
88
- <svg
89
- class={indicatorClass}
90
- viewBox="0 0 24 24"
91
- aria-hidden="true"
92
- focusable="false"
93
- >
94
- <circle
95
- class="cd-spin__track"
96
- cx="12"
97
- cy="12"
98
- r="10"
99
- fill="none"
100
- stroke="var(--cd-spin-track-color)"
101
- stroke-width="2.5"
102
- />
103
- <circle
104
- class="cd-spin__arc"
105
- cx="12"
106
- cy="12"
107
- r="10"
108
- fill="none"
109
- stroke="var(--cd-spin-color)"
110
- stroke-width="2.5"
111
- stroke-linecap="round"
112
- stroke-dasharray="47 63"
113
- />
114
- </svg>
115
- {/snippet}
116
-
117
- {#snippet spinner()}
118
- {#if indicator}
119
- {@render indicator({ size })}
120
- {:else}
121
- {@render defaultIndicator()}
122
- {/if}
123
- {/snippet}
124
-
125
- {#if isInline}
126
- <div
127
- class="cd-spin cd-spin--{size}"
128
- role="status"
129
- aria-live="polite"
130
- aria-label={statusLabel}
131
- >
132
- {@render spinner()}
133
- {#if hasTip}
134
- <div class="cd-spin__tip">{tip}</div>
135
- {/if}
136
- </div>
137
- {:else if isFullscreen}
138
- {#if effective}
139
- <div
140
- class="cd-spin cd-spin--{size} cd-spin--fullscreen"
141
- role="status"
142
- aria-live="polite"
143
- aria-label={statusLabel}
144
- >
145
- <div class="cd-spin__box">
146
- {@render spinner()}
147
- {#if hasTip}
148
- <div class="cd-spin__tip">{tip}</div>
149
- {/if}
150
- </div>
151
- </div>
152
- {/if}
153
- {:else}
154
- <div class="cd-spin-wrapper {wrapperClassName}">
155
- <div
156
- class="cd-spin__content"
157
- class:cd-spin__content--blur={effective}
158
- aria-busy={effective ? true : undefined}
159
- inert={effective ? true : undefined}
160
- >
161
- {@render children?.()}
162
- </div>
163
- {#if effective}
164
- <div
165
- class="cd-spin__overlay cd-spin--{size}"
166
- role="status"
167
- aria-live="polite"
168
- aria-label={statusLabel}
169
- >
170
- <div class="cd-spin__box">
171
- {@render spinner()}
172
- {#if hasTip}
173
- <div class="cd-spin__tip">{tip}</div>
174
- {/if}
175
- </div>
176
- </div>
177
- {/if}
178
- </div>
179
- {/if}
180
-
181
- <style>
182
- .cd-spin {
183
- display: inline-flex;
184
- flex-direction: column;
185
- align-items: center;
186
- justify-content: center;
187
- gap: var(--cd-spin-tip-gap);
188
- color: var(--cd-spin-color);
189
- }
190
-
191
- .cd-spin__indicator {
192
- display: block;
193
- inline-size: var(--cd-spin-size-default);
194
- block-size: var(--cd-spin-size-default);
195
- animation: cd-spin-rotate var(--cd-spin-duration) linear infinite;
196
- }
197
- .cd-spin__indicator--small {
198
- inline-size: var(--cd-spin-size-small);
199
- block-size: var(--cd-spin-size-small);
200
- }
201
- .cd-spin__indicator--default {
202
- inline-size: var(--cd-spin-size-default);
203
- block-size: var(--cd-spin-size-default);
204
- }
205
- .cd-spin__indicator--large {
206
- inline-size: var(--cd-spin-size-large);
207
- block-size: var(--cd-spin-size-large);
208
- }
209
-
210
- .cd-spin__tip {
211
- color: var(--cd-spin-tip-color);
212
- font-size: var(--cd-font-size-body);
213
- text-align: center;
214
- }
215
-
216
- /* wrapper 形态 */
217
- .cd-spin-wrapper {
218
- position: relative;
219
- }
220
- .cd-spin__content {
221
- transition: opacity var(--cd-spin-fade-duration) var(--cd-motion-ease-standard);
222
- }
223
- .cd-spin__content--blur {
224
- opacity: 0.5;
225
- pointer-events: none;
226
- user-select: none;
227
- }
228
- .cd-spin__overlay {
229
- position: absolute;
230
- inset: 0;
231
- display: flex;
232
- align-items: center;
233
- justify-content: center;
234
- z-index: var(--cd-spin-z);
235
- background: var(--cd-spin-mask-bg);
236
- animation: cd-spin-fade var(--cd-spin-fade-duration) var(--cd-motion-ease-standard);
237
- }
238
-
239
- /* fullscreen 形态 */
240
- .cd-spin--fullscreen {
241
- position: fixed;
242
- inset: 0;
243
- z-index: var(--cd-spin-z-fullscreen);
244
- background: var(--cd-spin-mask-bg);
245
- animation: cd-spin-fade var(--cd-spin-fade-duration) var(--cd-motion-ease-standard);
246
- }
247
-
248
- .cd-spin__box {
249
- display: inline-flex;
250
- flex-direction: column;
251
- align-items: center;
252
- justify-content: center;
253
- gap: var(--cd-spin-tip-gap);
254
- color: var(--cd-spin-color);
255
- }
256
-
257
- @keyframes cd-spin-rotate {
258
- to {
259
- transform: rotate(360deg);
260
- }
261
- }
262
- @keyframes cd-spin-fade {
263
- from {
264
- opacity: 0;
265
- }
266
- to {
267
- opacity: 1;
268
- }
269
- }
270
-
271
- @media (prefers-reduced-motion: reduce) {
272
- .cd-spin__indicator {
273
- animation: cd-spin-pulse var(--cd-spin-duration-reduced) ease-in-out infinite;
274
- }
275
- .cd-spin__overlay,
276
- .cd-spin--fullscreen {
277
- animation: none;
278
- }
279
- .cd-spin__content {
280
- transition: none;
281
- }
282
- }
283
-
284
- @keyframes cd-spin-pulse {
285
- 0%,
286
- 100% {
287
- opacity: 1;
288
- }
289
- 50% {
290
- opacity: 0.4;
291
- }
292
- }
293
- </style>
@@ -1,18 +0,0 @@
1
- <!--
2
- Spin a11y 测试夹具:不注入 children,使 inline 形态生效。
3
- (renderWithLocale 的 harness 恒注入空 children snippet,会让 Spin 走 wrapper 形态。)
4
- 自带 LocaleProvider,故测试直接 render 本夹具。
5
- -->
6
- <script lang="ts">
7
- import { LocaleProvider } from '../locale-provider/index.js';
8
- import Spin from './Spin.svelte';
9
-
10
- interface Props {
11
- props?: Record<string, unknown>;
12
- }
13
- let { props = {} }: Props = $props();
14
- </script>
15
-
16
- <LocaleProvider locale="en_US">
17
- <Spin {...props} />
18
- </LocaleProvider>
package/src/spin/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { default as Spin } from './Spin.svelte';
2
- export { meta as spinMeta } from './meta.js';