@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,25 +0,0 @@
1
- <!--
2
- 仅供 ColorPicker.kbd.test.ts(browser project)使用的焦点陷阱 e2e 夹具。
3
- ColorPicker 自带 trigger 按钮(aria-haspopup=dialog);open 受控,点击 trigger 切换。
4
- 浮层「非 portal」——面板渲染在 .cd-color-picker 根容器内(相对定位),
5
- 故测试在 fixture container 范围内查 [role=dialog],不在 document 查。
6
- 验证:打开后焦点进入面板内首控件、Tab 困在面板内循环、Esc 关闭后焦点归还 trigger。
7
- alpha + presets 提供足量可聚焦点测 Tab 循环。
8
- -->
9
- <script lang="ts">
10
- import { LocaleProvider } from '../locale-provider/index.js';
11
- import ColorPicker from './ColorPicker.svelte';
12
-
13
- let open = $state(false);
14
- const presets = ['#ff0000', '#00ff00', '#0000ff'];
15
- </script>
16
-
17
- <LocaleProvider locale="en_US">
18
- <ColorPicker
19
- {open}
20
- value="#3366ff"
21
- {presets}
22
- ariaLabel="Pick color"
23
- onOpenChange={(v) => (open = v)}
24
- />
25
- </LocaleProvider>
@@ -1,2 +0,0 @@
1
- export { default as ColorPicker } from './ColorPicker.svelte';
2
- export { meta as colorPickerMeta } from './meta.js';
@@ -1,47 +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: 'ColorPicker',
7
- category: 'input',
8
- description:
9
- '颜色选择器:trigger 触发浮层面板(或 inline 内联),含 saturation 方块 + hue 条 + alpha 条 + 可切换格式(hex/rgb/hsv/hsl)的输入 + presets,对外以 hex 字符串通信。',
10
- props: [
11
- { name: 'value', type: 'string', default: 'undefined' },
12
- { name: 'defaultValue', type: 'string', default: "'#000000'" },
13
- { name: 'alpha', type: 'boolean', default: 'true' },
14
- { name: 'open', type: 'boolean', default: 'undefined' },
15
- { name: 'defaultOpen', type: 'boolean', default: 'false' },
16
- { name: 'presets', type: 'string[]', default: '[]' },
17
- { name: 'size', type: "'small'|'default'|'large'", default: 'default' },
18
- { name: 'status', type: "'default'|'warning'|'error'", default: 'default', desc: '校验态,仅影响 trigger / inline 面板边框色' },
19
- { name: 'disabled', type: 'boolean', default: 'false' },
20
- { name: 'outputUppercase', type: 'boolean', default: 'true' },
21
- { name: 'format', type: "'hex'|'rgb'|'hsv'|'hsl'", default: 'undefined', desc: '受控:面板内显示/编辑的颜色格式(对外 onChange 仍为 hex)' },
22
- { name: 'defaultFormat', type: "'hex'|'rgb'|'hsv'|'hsl'", default: "'hex'", desc: '非受控初始格式' },
23
- { name: 'showFormatToggle', type: 'boolean', default: 'true', desc: '面板内显示格式切换下拉' },
24
- { name: 'inline', type: 'boolean', default: 'false', desc: '内联渲染面板,不使用 trigger 浮层' },
25
- { name: 'eyeDropper', type: 'boolean', default: 'true', desc: '支持 EyeDropper 时显示吸管按钮(降级隐藏)' },
26
- { name: 'recentColors', type: 'boolean', default: 'false', desc: '显示最近使用颜色行' },
27
- { name: 'recentMax', type: 'number', default: '8', desc: '最近颜色上限' },
28
- { name: 'onChange', type: '(hex: string) => void', default: 'undefined' },
29
- { name: 'onOpenChange', type: '(open: boolean) => void', default: 'undefined' },
30
- { name: 'onFormatChange', type: "(format: 'hex'|'rgb'|'hsv'|'hsl') => void", default: 'undefined' },
31
- { name: 'ariaLabel', type: 'string', default: 'undefined' },
32
- ],
33
- a11y: {
34
- role: 'dialog',
35
- notes: [
36
- 'trigger 含 aria-haspopup=dialog / aria-expanded',
37
- '浮层 role=dialog,打开经 useFocusTrap 陷入焦点、关闭归还 trigger',
38
- 'saturation / hue / alpha handle 为 role=slider,含 aria-label 与 aria-valuenow',
39
- 'hue / alpha / saturation 支持方向键微调;Home/End 跳极值;RTL 下水平方向键语义镜像',
40
- 'presets 为 role=listbox + role=option,方向键漫游、Enter/Space 选中、Home/End 首末',
41
- 'hex 输入含 label 与 aria-label',
42
- '格式切换为 select,含 aria-label',
43
- 'Esc 与外部点击经 useDismiss 关闭浮层(inline 模式无浮层不挂 dismiss)',
44
- ],
45
- },
46
- tokens: ['--cd-color-picker-*', '--cd-focus-ring', '--cd-input-*', '--cd-color-*'],
47
- } as const;
@@ -1,227 +0,0 @@
1
- <script lang="ts">
2
- import { getContext, setContext, untrack } from 'svelte';
3
- import type { Snippet } from 'svelte';
4
- import {
5
- mergeConfig,
6
- DEFAULT_CONFIG,
7
- resolveAppliedTheme,
8
- resolveReducedMotion,
9
- type ConfigInput,
10
- type ResolvedConfig,
11
- type ConfigTheme,
12
- type AppliedTheme,
13
- type ConfigDir,
14
- type ConfigSize,
15
- type ReducedMotionInput,
16
- } from '@chenzy-design/core';
17
- import { createLocale, type LocaleApi } from '@chenzy-design/locale';
18
- import type { Locale } from '@chenzy-design/locale';
19
- import { LOCALE_CONTEXT_KEY } from '../locale-provider/context.js';
20
- import {
21
- CONFIG_CONTEXT_KEY,
22
- type ConfigContextValue,
23
- type GetPopupContainer,
24
- type GetValidateMessages,
25
- } from './context.js';
26
-
27
- interface Props {
28
- /** 语言包;提供则注入 locale context(复用 LocaleProvider 机制),未提供沿用上层。 */
29
- locale?: Locale;
30
- /** 主题,undefined 继承父级;dark 在 wrap 根写 data-theme 触发暗色调色板;auto 跟随系统 prefers-color-scheme 实时切 light/dark。 */
31
- theme?: ConfigTheme;
32
- /** 是否降级动画:true 强制降级、false 强制开启、'auto'(默认)跟随系统 prefers-reduced-motion;为真时写全局标记令库内动画退化。 */
33
- reducedMotion?: ReducedMotionInput;
34
- /** 文本方向,undefined 继承父级。 */
35
- dir?: ConfigDir;
36
- /** 默认尺寸,undefined 继承父级。 */
37
- size?: ConfigSize;
38
- /** 浮层 z-index 基线,undefined 继承父级。 */
39
- zIndexBase?: number;
40
- /** 是否启用过渡动画,undefined 继承父级。 */
41
- transition?: boolean;
42
- /** 全局浮层默认挂载容器;浮层组件(Modal/Dropdown 等)未传自身 prop 时回退此值,undefined 继承父级(最终回退 document.body)。 */
43
- getPopupContainer?: GetPopupContainer;
44
- /** 全局表单校验文案覆盖;按 `Form.*` 键返回模板(支持 {label}/{min}/{max} 插值),仅覆盖列出键、其余回退 locale;undefined 继承父级。 */
45
- getValidateMessages?: GetValidateMessages;
46
- /** 默认 false:true 时渲染包裹元素(display:contents)建立主题/方向作用域。 */
47
- wrap?: boolean;
48
- /** wrap 元素标签,默认 'div';可设 section/article/main 等语义标签。 */
49
- as?: string;
50
- /** theme 变化通知(受控,不回写);applied 为 auto 解析后实际落地的 light/dark。 */
51
- onThemeChange?: (info: { theme: ConfigTheme; applied: AppliedTheme }) => void;
52
- /** reducedMotion 解析结果变化通知(受控,不回写);reduced=true 表示已降级。 */
53
- onReducedMotionChange?: (info: { reducedMotion: ReducedMotionInput; reduced: boolean }) => void;
54
- /** locale 变化通知(受控,不回写)。 */
55
- onLocaleChange?: (info: { locale: string }) => void;
56
- /** dir 变化通知(受控,不回写)。 */
57
- onDirChange?: (info: { dir: ConfigDir }) => void;
58
- /** 合并后配置变化通知(受控,不回写)。 */
59
- onConfigChange?: (info: { config: ResolvedConfig }) => void;
60
- children?: Snippet;
61
- }
62
-
63
- let {
64
- locale,
65
- theme,
66
- reducedMotion,
67
- dir,
68
- size,
69
- zIndexBase,
70
- transition,
71
- getPopupContainer,
72
- getValidateMessages,
73
- wrap = false,
74
- as = 'div',
75
- onThemeChange,
76
- onReducedMotionChange,
77
- onLocaleChange,
78
- onDirChange,
79
- onConfigChange,
80
- children,
81
- }: Props = $props();
82
-
83
- // 读父级 config(嵌套支持):init 期调 getContext,无父级用 DEFAULT_CONFIG。
84
- const parentCfg = getContext<ConfigContextValue | undefined>(CONFIG_CONTEXT_KEY);
85
-
86
- // exactOptionalPropertyTypes:仅塞非 undefined 字段,避免显式 undefined 报错。
87
- const localInput = $derived.by(() => {
88
- const o: ConfigInput = {};
89
- if (theme !== undefined) o.theme = theme;
90
- if (reducedMotion !== undefined) o.reducedMotion = reducedMotion;
91
- if (dir !== undefined) o.dir = dir;
92
- if (size !== undefined) o.size = size;
93
- if (zIndexBase !== undefined) o.zIndexBase = zIndexBase;
94
- if (transition !== undefined) o.transition = transition;
95
- return o;
96
- });
97
-
98
- // 合并:父级(或默认)+ 本地输入(就近 wins、undefined 继承)。
99
- const resolved = $derived(mergeConfig(parentCfg?.current ?? DEFAULT_CONFIG, localInput));
100
-
101
- // --- 系统媒体偏好(命令式 matchMedia 监听 + cleanup,红线 #3)---
102
- // SSR 安全:window 不存在或不支持 matchMedia 时退化为 false(不暗、不降级)。
103
- const mqlSupported =
104
- typeof window !== 'undefined' && typeof window.matchMedia === 'function';
105
- // $state 持有系统偏好快照;监听器命令式写入,$derived 据此纯函数解析。
106
- let systemPrefersDark = $state(
107
- mqlSupported && window.matchMedia('(prefers-color-scheme: dark)').matches,
108
- );
109
- let systemReducedMotion = $state(
110
- mqlSupported && window.matchMedia('(prefers-reduced-motion: reduce)').matches,
111
- );
112
-
113
- // theme=auto 解析为实际 light/dark(纯函数,红线 #2)。
114
- const appliedTheme = $derived(resolveAppliedTheme(resolved.theme, systemPrefersDark));
115
- // reducedMotion 最终是否降级(纯函数,红线 #2)。
116
- const reduced = $derived(resolveReducedMotion(resolved.reducedMotion, systemReducedMotion));
117
-
118
- // 仅在确有依赖系统态时才挂监听,避免无谓订阅。
119
- const needsColorScheme = $derived(resolved.theme === 'auto');
120
- const needsMotionQuery = $derived(resolved.reducedMotion === 'auto');
121
-
122
- // prefers-color-scheme 监听:仅 theme=auto 时订阅,系统切换实时更新(红线 #3)。
123
- $effect(() => {
124
- if (!mqlSupported || !needsColorScheme) return;
125
- const mql = window.matchMedia('(prefers-color-scheme: dark)');
126
- systemPrefersDark = mql.matches;
127
- const onChange = (e: MediaQueryListEvent): void => {
128
- systemPrefersDark = e.matches;
129
- };
130
- mql.addEventListener('change', onChange);
131
- return () => mql.removeEventListener('change', onChange);
132
- });
133
-
134
- // prefers-reduced-motion 监听:仅 reducedMotion=auto 时订阅(红线 #3)。
135
- $effect(() => {
136
- if (!mqlSupported || !needsMotionQuery) return;
137
- const mql = window.matchMedia('(prefers-reduced-motion: reduce)');
138
- systemReducedMotion = mql.matches;
139
- const onChange = (e: MediaQueryListEvent): void => {
140
- systemReducedMotion = e.matches;
141
- };
142
- mql.addEventListener('change', onChange);
143
- return () => mql.removeEventListener('change', onChange);
144
- });
145
-
146
- // 全局降级标记:renderless(wrap=false)时命令式写到 documentElement(红线 #3),
147
- // 令全库 reduced-motion 退化生效;wrap=true 时改写在包裹 div 上(见模板)。
148
- // 仅显式 reducedMotion 才接管全局标记('auto' 沿用系统 CSS @media,避免误置)。
149
- $effect(() => {
150
- if (wrap || typeof document === 'undefined') return;
151
- if (resolved.reducedMotion === 'auto') return; // auto 留给原生 @media
152
- const root = document.documentElement;
153
- if (reduced) root.setAttribute('data-reduced-motion', '');
154
- else root.removeAttribute('data-reduced-motion');
155
- return () => root.removeAttribute('data-reduced-motion');
156
- });
157
-
158
- // 函数型配置(getPopupContainer/getValidateMessages)不参与 core 的纯配置合并,
159
- // 在此就近合并:本地提供则 wins,未提供继承父级(红线 #2 派生、不回写 props)。
160
- const resolvedPopupContainer = $derived(getPopupContainer ?? parentCfg?.getPopupContainer);
161
- const resolvedValidateMessages = $derived(
162
- getValidateMessages ?? parentCfg?.getValidateMessages,
163
- );
164
-
165
- // 注入 config context:getter 保证后代读到最新合并结果。红线:受控不回写 props。
166
- setContext(CONFIG_CONTEXT_KEY, {
167
- get current(): ResolvedConfig {
168
- return resolved;
169
- },
170
- get getPopupContainer(): GetPopupContainer | undefined {
171
- return resolvedPopupContainer;
172
- },
173
- get getValidateMessages(): GetValidateMessages | undefined {
174
- return resolvedValidateMessages;
175
- },
176
- } satisfies ConfigContextValue);
177
-
178
- // 注入 locale context(仅当 locale prop 提供时);direction 跟随合并后的 dir。
179
- const localeApi = $derived(locale ? createLocale({ locale, direction: resolved.dir }) : null);
180
- // init 期捕获初始值决定是否注入 locale context(setContext 必须同步执行);
181
- // 用 untrack 显式取初始快照,避免 state_referenced_locally 误报。
182
- const hasLocale = untrack(() => locale !== undefined);
183
- if (hasLocale) {
184
- setContext(LOCALE_CONTEXT_KEY, {
185
- get current(): LocaleApi | null {
186
- return localeApi;
187
- },
188
- });
189
- }
190
-
191
- // 红线:$effect 只调通知回调,无 DOM/几何。首次也触发可接受。
192
- $effect(() => {
193
- onThemeChange?.({ theme: resolved.theme, applied: appliedTheme });
194
- });
195
- $effect(() => {
196
- onReducedMotionChange?.({ reducedMotion: resolved.reducedMotion, reduced });
197
- });
198
- $effect(() => {
199
- onDirChange?.({ dir: resolved.dir });
200
- });
201
- $effect(() => {
202
- onConfigChange?.({ config: resolved });
203
- });
204
- $effect(() => {
205
- if (localeApi) onLocaleChange?.({ locale: localeApi.code });
206
- });
207
- </script>
208
-
209
- {#if wrap}
210
- <svelte:element
211
- this={as}
212
- class="cd-config-provider cd-config-provider--{resolved.size}"
213
- data-theme={appliedTheme === 'dark' ? 'dark' : undefined}
214
- data-reduced-motion={resolved.reducedMotion !== 'auto' && reduced ? '' : undefined}
215
- dir={resolved.dir}
216
- >
217
- {@render children?.()}
218
- </svelte:element>
219
- {:else}
220
- {@render children?.()}
221
- {/if}
222
-
223
- <style>
224
- .cd-config-provider {
225
- display: contents;
226
- }
227
- </style>
@@ -1,29 +0,0 @@
1
- import type { ResolvedConfig } from '@chenzy-design/core';
2
-
3
- /** 全局浮层挂载容器解析器:返回浮层应 portal 进的元素。 */
4
- export type GetPopupContainer = () => HTMLElement | null | undefined;
5
-
6
- /**
7
- * 全局表单校验文案覆盖:按 `Form.*` 键返回模板字符串(支持 {label}/{min}/{max} 等
8
- * 占位符插值)。仅覆盖列出的键,未列出的回退到 locale 内置文案。
9
- */
10
- export type ValidateMessages = Record<string, string>;
11
- export type GetValidateMessages = () => ValidateMessages;
12
-
13
- /**
14
- * config context:下发合并后的全局配置。
15
- *
16
- * `current` 是可序列化的纯配置(来自 core 的 mergeConfig);而函数型配置
17
- * (getPopupContainer / getValidateMessages)不参与 core 合并,单独挂在 context
18
- * 上,并在嵌套时由 ConfigProvider 自行做「就近 wins、未提供继承父级」合并。
19
- */
20
- export type ConfigContextValue = {
21
- readonly current: ResolvedConfig;
22
- /** 全局浮层默认容器;未配置为 undefined(浮层组件回退 document.body)。 */
23
- readonly getPopupContainer?: GetPopupContainer | undefined;
24
- /** 全局校验文案覆盖;未配置为 undefined(回退 locale 内置文案)。 */
25
- readonly getValidateMessages?: GetValidateMessages | undefined;
26
- };
27
-
28
- /** config context:下发合并后的全局配置 */
29
- export const CONFIG_CONTEXT_KEY = Symbol('cd-config');
@@ -1,48 +0,0 @@
1
- import { getContext } from 'svelte';
2
- import {
3
- CONFIG_CONTEXT_KEY,
4
- type ConfigContextValue,
5
- type GetPopupContainer,
6
- type GetValidateMessages,
7
- } from './context.js';
8
- import { DEFAULT_CONFIG, type ResolvedConfig } from '@chenzy-design/core';
9
-
10
- export { default as ConfigProvider } from './ConfigProvider.svelte';
11
- export {
12
- CONFIG_CONTEXT_KEY,
13
- type ConfigContextValue,
14
- type GetPopupContainer,
15
- type GetValidateMessages,
16
- type ValidateMessages,
17
- } from './context.js';
18
- export { meta as configProviderMeta } from './meta.js';
19
-
20
- /**
21
- * 读取最近 ConfigProvider 注入的合并后配置(无 Provider 时返回 DEFAULT_CONFIG)。
22
- * 约束:getContext 只能在组件初始化期调用,故此 helper 必须在消费组件的
23
- * `<script>` 顶层(初始化期)调用。
24
- */
25
- export function getConfigContext(): ResolvedConfig {
26
- const ctx = getContext<ConfigContextValue | undefined>(CONFIG_CONTEXT_KEY);
27
- return ctx?.current ?? DEFAULT_CONFIG;
28
- }
29
-
30
- /**
31
- * 读取全局浮层默认容器解析器(无配置时返回 undefined,调用方回退 document.body)。
32
- * 浮层组件(Modal/Dropdown/Popover/Tooltip/Select 等)应把自身 getContainer/
33
- * getPopupContainer prop 作为优先,仅在未传时回退到这里的全局默认。
34
- * 约束:须在消费组件 `<script>` 顶层(初始化期)调用。
35
- */
36
- export function getGlobalPopupContainer(): GetPopupContainer | undefined {
37
- const ctx = getContext<ConfigContextValue | undefined>(CONFIG_CONTEXT_KEY);
38
- return ctx?.getPopupContainer;
39
- }
40
-
41
- /**
42
- * 读取全局校验文案覆盖(无配置时返回 undefined,Form 回退 locale 内置文案)。
43
- * 约束:须在消费组件 `<script>` 顶层(初始化期)调用。
44
- */
45
- export function getGlobalValidateMessages(): GetValidateMessages | undefined {
46
- const ctx = getContext<ConfigContextValue | undefined>(CONFIG_CONTEXT_KEY);
47
- return ctx?.getValidateMessages;
48
- }
@@ -1,128 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * ConfigProvider — see specs/components/other/ConfigProvider.spec.md
4
- */
5
- export const meta = {
6
- name: 'ConfigProvider',
7
- category: 'other',
8
- renderless: true,
9
- description:
10
- '全局配置总入口,通过 setContext 注入 locale/theme/dir/size/zIndexBase/transition/reducedMotion 等配置 context 供子树继承;嵌套时浅合并(undefined 继承、就近 wins);theme="dark" 在 wrap 根写 data-theme 触发 tokens 暗色调色板,theme="auto" 经命令式 matchMedia 监听 prefers-color-scheme 实时解析 light/dark(系统切换自动响应、带 cleanup);reducedMotion(boolean|"auto") 控制动画降级,显式开启时写全局标记(wrap 时在包裹 div、renderless 时命令式写 documentElement 的 data-reduced-motion)令依赖 motion-duration token 的动画退化,"auto" 沿用系统原生 @media;wrap=true 渲染 display:contents 包裹元素建立独立主题/方向作用域,默认 wrap=false renderless 无 DOM;locale 维度复用 LocaleProvider 的 createLocale + LOCALE_CONTEXT_KEY 机制;getPopupContainer 经 context 暴露全局浮层默认容器供浮层组件(Modal/Dropdown 等)在自身 prop 未传时回退;getValidateMessages 经 context 暴露全局表单校验文案覆盖供 Form 在 locale 内置文案之上按 Form.* 键覆盖(支持插值);wrap 时 as 可自定义包裹元素标签(section/article/main 等,默认 div)。函数型配置(getPopupContainer/getValidateMessages)不参与 core 纯配置合并,由 ConfigProvider 在 context 层就近合并(未提供继承父级)。',
11
- exports: ['ConfigProvider'],
12
- props: [
13
- {
14
- name: 'locale',
15
- type: 'Locale',
16
- default: 'undefined',
17
- desc: '语言包对象;提供则注入 locale context(复用 LocaleProvider 机制),未提供则沿用上层',
18
- },
19
- {
20
- name: 'theme',
21
- type: "'light'|'dark'|'auto'",
22
- default: 'undefined',
23
- desc: '主题,undefined 继承父级;dark 在 wrap 根写 data-theme 触发暗色调色板;auto 跟随系统 prefers-color-scheme 实时切 light/dark',
24
- },
25
- {
26
- name: 'reducedMotion',
27
- type: "boolean|'auto'",
28
- default: "'auto'",
29
- desc: '动画降级开关,undefined 继承父级(默认 auto);true 强制降级、false 强制开启、auto 跟随系统 prefers-reduced-motion;显式开启时写全局 data-reduced-motion 标记令动画退化',
30
- },
31
- {
32
- name: 'dir',
33
- type: "'ltr'|'rtl'",
34
- default: 'undefined',
35
- desc: '文本方向,undefined 继承父级',
36
- },
37
- {
38
- name: 'size',
39
- type: "'small'|'default'|'large'",
40
- default: 'undefined',
41
- desc: '默认尺寸,undefined 继承父级',
42
- },
43
- {
44
- name: 'zIndexBase',
45
- type: 'number',
46
- default: 'undefined',
47
- desc: '浮层 z-index 基线,undefined 继承父级(DEFAULT 1000)',
48
- },
49
- {
50
- name: 'transition',
51
- type: 'boolean',
52
- default: 'undefined',
53
- desc: '是否启用过渡动画,undefined 继承父级',
54
- },
55
- {
56
- name: 'getPopupContainer',
57
- type: '() => HTMLElement | null | undefined',
58
- default: 'undefined',
59
- desc: '全局浮层默认挂载容器;经 context 暴露给浮层组件(Modal/Dropdown 等),其自身 getContainer/getPopupContainer prop 优先,未传时回退此值(最终回退 document.body);undefined 继承父级',
60
- },
61
- {
62
- name: 'getValidateMessages',
63
- type: '() => Record<string, string>',
64
- default: 'undefined',
65
- desc: '全局表单校验文案覆盖;按 Form.* 键返回模板字符串(支持 {label}/{min}/{max} 占位符插值),仅覆盖列出的键、其余回退 locale 内置文案;经 context 暴露给 Form;undefined 继承父级',
66
- },
67
- {
68
- name: 'wrap',
69
- type: 'boolean',
70
- default: 'false',
71
- desc: 'true 时渲染 display:contents 包裹元素,建立主题/方向作用域;false 为 renderless 无 DOM',
72
- },
73
- {
74
- name: 'as',
75
- type: 'string',
76
- default: "'div'",
77
- desc: 'wrap=true 时包裹元素的标签,可设 section/article/main 等语义标签;wrap=false 时无效',
78
- },
79
- ],
80
- events: [
81
- { name: 'onThemeChange', desc: 'theme 变化时通知(受控,不回写);info.applied 为 auto 解析后实际落地的 light/dark' },
82
- { name: 'onReducedMotionChange', desc: 'reducedMotion 解析结果变化时通知(受控,不回写);info.reduced=true 表示已降级' },
83
- { name: 'onLocaleChange', desc: 'locale 变化时通知(受控,不回写)' },
84
- { name: 'onDirChange', desc: 'dir 变化时通知(受控,不回写)' },
85
- { name: 'onConfigChange', desc: '合并后配置变化时通知(受控,不回写)' },
86
- ],
87
- slots: [{ name: 'children', desc: '受配置作用域覆盖的后代内容' }],
88
- a11y: {
89
- hasRole: false,
90
- note: '无 role;wrap div 用 display:contents 不生成盒子、不打断 a11y 树;dir 属性写入供 RTL 辅助技术读取;推荐宿主同步 html lang/dir。',
91
- },
92
- tokens: [],
93
- responsive: false,
94
- examples: [
95
- {
96
- title: '应用根配置',
97
- code: '<ConfigProvider {locale} theme="light" dir="ltr">{@render app()}</ConfigProvider>',
98
- },
99
- {
100
- title: '局部暗色覆盖',
101
- code: '<ConfigProvider wrap theme="dark">{@render panel()}</ConfigProvider>',
102
- },
103
- {
104
- title: '跟随系统主题(auto)',
105
- code: '<ConfigProvider wrap theme="auto">{@render app()}</ConfigProvider>',
106
- },
107
- {
108
- title: '强制降级动画',
109
- code: '<ConfigProvider reducedMotion>{@render app()}</ConfigProvider>',
110
- },
111
- {
112
- title: '嵌套 dir 覆盖',
113
- code: '<ConfigProvider dir="ltr"><ConfigProvider wrap dir="rtl">{@render rtlSection()}</ConfigProvider></ConfigProvider>',
114
- },
115
- {
116
- title: '全局浮层容器',
117
- code: '<ConfigProvider getPopupContainer={() => document.getElementById("app")!}>{@render app()}</ConfigProvider>',
118
- },
119
- {
120
- title: '全局校验文案覆盖',
121
- code: '<ConfigProvider getValidateMessages={() => ({ "Form.required": "{label}不能为空" })}>{@render form()}</ConfigProvider>',
122
- },
123
- {
124
- title: '自定义 wrap 标签',
125
- code: '<ConfigProvider wrap as="section" theme="dark">{@render panel()}</ConfigProvider>',
126
- },
127
- ],
128
- } as const;
@@ -1,45 +0,0 @@
1
- // DatePicker a11y:触发器(button,默认非 editable)+ role=dialog 面板 + role=grid 日历。
2
- // 只断言静态 ARIA + axe 0 violations,不测真实键盘/焦点(jsdom 限制)。
3
- // 打开态面板 portal 到 document.body,故扫描 document.body。
4
- import { describe, it, expect } from 'vitest';
5
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
6
- import DatePicker from './DatePicker.svelte';
7
-
8
- describe('DatePicker a11y', () => {
9
- it('关闭态:触发器 aria-haspopup=dialog / aria-expanded=false,无 axe violations', async () => {
10
- const { container } = renderWithLocale(DatePicker, {
11
- props: { ariaLabel: 'Start date' },
12
- });
13
- const trigger = container.querySelector('.cd-date-picker__trigger');
14
- expect(trigger).not.toBeNull();
15
- expect(trigger?.getAttribute('aria-haspopup')).toBe('dialog');
16
- expect(trigger?.getAttribute('aria-expanded')).toBe('false');
17
- expect(trigger?.getAttribute('aria-label')).toBe('Start date');
18
- await expectNoAxeViolations(container);
19
- });
20
-
21
- it('打开态:role=dialog 面板 + role=grid 日历(portal 到 body),无 axe violations', async () => {
22
- renderWithLocale(DatePicker, {
23
- props: { defaultOpen: true, ariaLabel: 'Start date' },
24
- });
25
- const dialog = document.querySelector('[role="dialog"]');
26
- expect(dialog).not.toBeNull();
27
- expect(dialog?.getAttribute('aria-label')).toBeTruthy();
28
- const grid = document.querySelector('[role="grid"]');
29
- expect(grid).not.toBeNull();
30
- const cells = document.querySelectorAll('[role="gridcell"]');
31
- expect(cells.length).toBeGreaterThan(0);
32
- await expectNoAxeViolations(document.body);
33
- });
34
-
35
- it('打开态:触发器 aria-expanded=true + columnheader 表头存在', async () => {
36
- renderWithLocale(DatePicker, {
37
- props: { defaultOpen: true, ariaLabel: 'Start date' },
38
- });
39
- const trigger = document.querySelector('.cd-date-picker__trigger');
40
- expect(trigger?.getAttribute('aria-expanded')).toBe('true');
41
- const headers = document.querySelectorAll('[role="columnheader"]');
42
- expect(headers.length).toBe(7);
43
- await expectNoAxeViolations(document.body);
44
- });
45
- });
@@ -1,71 +0,0 @@
1
- // DatePicker 键盘 e2e(browser project / 真实 chromium)。
2
- // DatePicker 日历用 WAI-ARIA grid 的 aria-activedescendant 模型:焦点停在
3
- // role=grid 容器(tabindex=0),方向键不移动真实 DOM 焦点,而是改变容器的
4
- // aria-activedescendant 指向当前高亮日期格的 id。故断言 activedescendant 变化,
5
- // 而非真实 .toHaveFocus()(这点先读源码 onGridKeydown + activeCellId 确认)。
6
- // 1. 打开后焦点落在 grid 容器,aria-activedescendant 指向初始高亮(value=2024-03-15)。
7
- // 2. ArrowRight/ArrowDown/Home/PageUp 改变 aria-activedescendant 指向的日期格。
8
- // 3. Esc 关闭面板,焦点归还 trigger。
9
- import { describe, it, expect } from 'vitest';
10
- import { page } from 'vitest/browser';
11
- import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
12
- import DatePickerKbdFixture from './DatePickerKbdFixture.svelte';
13
-
14
- function loc(el: Element) {
15
- return page.elementLocator(el);
16
- }
17
-
18
- // 读取 grid 容器当前 aria-activedescendant 指向的日期格的 id 后缀(-YYYY-M-D)。
19
- function activeSuffix(grid: HTMLElement): string {
20
- const id = grid.getAttribute('aria-activedescendant') ?? '';
21
- // id 形如 cd-date-picker-grid-x-2024-2-15;取末三段(年-月-日)。
22
- const parts = id.split('-');
23
- return parts.slice(-3).join('-');
24
- }
25
-
26
- describe('DatePicker 键盘 e2e(网格 aria-activedescendant)', () => {
27
- it('方向键 + Home + PageUp 改变 aria-activedescendant;Esc 归还 trigger', async () => {
28
- const { baseElement } = renderKbdFixture(DatePickerKbdFixture);
29
-
30
- const trigger = baseElement.querySelector('[data-testid="before"]') as HTMLButtonElement;
31
- expect(trigger).not.toBeNull();
32
- await userEvent.click(trigger);
33
-
34
- // 面板 portal 进 root 子树(非 body portal):查 role=dialog + 日期网格。
35
- const dialog = document.querySelector('[role="dialog"]') as HTMLElement;
36
- expect(dialog).not.toBeNull();
37
- const grid = dialog.querySelector('[role="grid"]') as HTMLElement;
38
- expect(grid).not.toBeNull();
39
-
40
- // 1. 焦点落在网格容器(aria-activedescendant 模型:焦点在容器,非单格)。
41
- await expect.element(loc(grid)).toHaveFocus();
42
- // 初始高亮对齐 value=2024-03-15。
43
- expect(activeSuffix(grid)).toBe('2024-2-15');
44
-
45
- // 2a. ArrowRight → 次日(16)。
46
- await userEvent.keyboard('{ArrowRight}');
47
- await expect.poll(() => activeSuffix(grid)).toBe('2024-2-16');
48
- // 真实 DOM 焦点仍在网格容器(未移到具体格)。
49
- expect(document.activeElement).toBe(grid);
50
-
51
- // 2b. ArrowDown → +1 周(16 → 23)。
52
- await userEvent.keyboard('{ArrowDown}');
53
- await expect.poll(() => activeSuffix(grid)).toBe('2024-2-23');
54
-
55
- // 2c. ArrowLeft → 前一日(22)。
56
- await userEvent.keyboard('{ArrowLeft}');
57
- await expect.poll(() => activeSuffix(grid)).toBe('2024-2-22');
58
-
59
- // 2d. Home → 本周首日(3/22 是周五,所在周以周日起 → 3/17)。
60
- await userEvent.keyboard('{Home}');
61
- await expect.poll(() => activeSuffix(grid)).toBe('2024-2-17');
62
-
63
- // 2e. PageUp → 前一月(2/17);游标随动翻页,网格仍存在。
64
- await userEvent.keyboard('{PageUp}');
65
- await expect.poll(() => activeSuffix(grid)).toBe('2024-1-17');
66
-
67
- // 3. Esc 关闭面板,焦点归还 trigger(focus trap returnFocus)。
68
- await userEvent.keyboard('{Escape}');
69
- await expect.element(loc(trigger)).toHaveFocus();
70
- });
71
- });