@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,65 +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: 'InputNumber',
7
- category: 'input',
8
- description: '受约束的数值录入框,含步进按钮、键盘步进、精度与范围 clamp,复用 Input 视觉。',
9
- props: [
10
- { name: 'value', type: 'number | null', default: 'undefined', desc: '受控值;提供则为受控' },
11
- { name: 'defaultValue', type: 'number | null', default: 'null', desc: '非受控初始值' },
12
- { name: 'min', type: 'number', default: '-Infinity' },
13
- { name: 'max', type: 'number', default: 'Infinity' },
14
- { name: 'step', type: 'number', default: '1' },
15
- { name: 'shiftStep', type: 'number', default: 'step * 10', desc: 'Shift+↑↓ 步长' },
16
- { name: 'precision', type: 'number', default: 'undefined', desc: '失焦四舍五入保留小数位' },
17
- { name: 'boundaryMode', type: "'clamp'|'strict'", default: 'clamp', desc: '越界处理:钳制 / 拒绝回滚' },
18
- { name: 'formatter', type: '(n: number) => string', default: 'undefined', desc: '自定义显示格式化(仅非编辑态)' },
19
- { name: 'parser', type: '(s: string) => number', default: 'undefined', desc: '自定义解析' },
20
- { name: 'size', type: "'small'|'default'|'large'", default: 'default' },
21
- { name: 'disabled', type: 'boolean', default: 'false' },
22
- { name: 'readonly', type: 'boolean', default: 'false' },
23
- { name: 'status', type: "'default'|'warning'|'error'", default: 'default' },
24
- { name: 'controls', type: 'boolean', default: 'true', desc: '是否显示步进按钮' },
25
- { name: 'controlsPosition', type: "'right'|'sides'", default: 'right', desc: '步进按钮布局:右侧 stacked / 两侧' },
26
- { name: 'innerButtons', type: 'boolean', default: 'false', desc: '按钮内嵌悬浮(hover/focus 显形)' },
27
- { name: 'keyboard', type: 'boolean', default: 'true', desc: '是否启用 ↑↓/PageUp·Down 步进' },
28
- { name: 'mouseWheel', type: 'boolean', default: 'false', desc: '聚焦时滚轮步进' },
29
- { name: 'placeholder', type: 'string', default: 'undefined' },
30
- { name: 'prefix', type: 'string | Snippet', default: 'undefined', desc: '输入框前置内容(如货币符号、单位)' },
31
- { name: 'suffix', type: 'string | Snippet', default: 'undefined', desc: '输入框后置内容(如单位 %、kg)' },
32
- { name: 'name', type: 'string', default: 'undefined' },
33
- { name: 'id', type: 'string', default: '自动生成', desc: 'input 元素 id,关联外部 label' },
34
- { name: 'ariaLabel', type: 'string', default: 'undefined' },
35
- { name: 'autofocus', type: 'boolean', default: 'false', desc: '挂载自动聚焦' },
36
- { name: 'selectOnFocus', type: 'boolean', default: 'false', desc: '聚焦时全选文本' },
37
- { name: 'locale', type: 'string', default: 'undefined', desc: '数字格式化 locale(仅未提供 formatter 时生效)' },
38
- { name: 'onChange', type: '(v: number | null) => void', default: 'undefined', desc: '归一化后值变化' },
39
- { name: 'onBoundaryHit', type: "(e: { boundary: 'min'|'max'; value: number }) => void", default: 'undefined', desc: '触达/试图越过边界' },
40
- ],
41
- events: [
42
- { name: 'change', payload: '{ value: number | null }', desc: '归一化后值变化(受控核心事件)' },
43
- { name: 'boundaryHit', payload: "{ boundary: 'min'|'max'; value: number }", desc: '触达/试图越过边界' },
44
- {
45
- name: 'step',
46
- payload: "{ value: number; direction: 'up'|'down'; source: 'button'|'keyboard'|'wheel' }",
47
- desc: '任一步进动作完成',
48
- },
49
- { name: 'focus', payload: 'FocusEvent', desc: '聚焦' },
50
- { name: 'blur', payload: 'FocusEvent', desc: '失焦(已完成 commit 归一化)' },
51
- { name: 'keydown', payload: 'KeyboardEvent', desc: '透传原生 keydown' },
52
- ],
53
- a11y: {
54
- role: 'spinbutton',
55
- keyboard: ['ArrowUp', 'ArrowDown', 'Shift+ArrowUp', 'Shift+ArrowDown', 'PageUp', 'PageDown', 'Enter'],
56
- notes: [
57
- 'input role=spinbutton + aria-valuenow/valuemin/valuemax',
58
- '失焦按 precision 四舍五入并 clamp 到 [min,max]',
59
- '到 min/max 时对应步进按钮 disabled',
60
- '步进按钮 tabindex=-1,mousedown.preventDefault 不夺焦',
61
- 'disabled→aria-disabled,readonly→aria-readonly,error→aria-invalid',
62
- ],
63
- },
64
- tokens: ['--cd-input-*', '--cd-color-*', '--cd-spacing-*', '--cd-focus-ring', '--cd-motion-*'],
65
- } as const;
@@ -1,37 +0,0 @@
1
- <!--
2
- Content — main region within Layout. Grows to fill, token-driven background.
3
- -->
4
- <script lang="ts">
5
- import type { Snippet } from 'svelte';
6
-
7
- interface Props {
8
- /** true→token padding; number→px; string→raw; false→0 */
9
- padding?: string | number | boolean;
10
- class?: string;
11
- children?: Snippet;
12
- }
13
-
14
- let { padding = false, class: className = '', children }: Props = $props();
15
-
16
- const paddingCss = $derived.by(() => {
17
- if (padding === true) return 'var(--cd-layout-content-padding)';
18
- if (padding === false) return '0';
19
- return typeof padding === 'number' ? `${padding}px` : padding;
20
- });
21
-
22
- const cls = $derived(['cd-layout-content', className].filter(Boolean).join(' '));
23
-
24
- const inlineStyle = $derived(`padding:${paddingCss}`);
25
- </script>
26
-
27
- <main class={cls} style={inlineStyle}>
28
- {@render children?.()}
29
- </main>
30
-
31
- <style>
32
- .cd-layout-content {
33
- flex: 1;
34
- min-height: 0;
35
- background: var(--cd-layout-content-bg);
36
- }
37
- </style>
@@ -1,49 +0,0 @@
1
- <!--
2
- Footer — bottom bar within Layout. Token-driven background/color.
3
- -->
4
- <script lang="ts">
5
- import type { Snippet } from 'svelte';
6
-
7
- interface Props {
8
- sticky?: boolean;
9
- /** override height; number→px, string→raw */
10
- height?: string | number;
11
- class?: string;
12
- children?: Snippet;
13
- }
14
-
15
- let { sticky = false, height, class: className = '', children }: Props = $props();
16
-
17
- const heightCss = $derived.by(() => {
18
- if (height === undefined) return undefined;
19
- return typeof height === 'number' ? `${height}px` : height;
20
- });
21
-
22
- const cls = $derived(
23
- ['cd-layout-footer', sticky && 'cd-layout-footer--sticky', className].filter(Boolean).join(' '),
24
- );
25
-
26
- const inlineStyle = $derived(heightCss ? `height:${heightCss}` : undefined);
27
- </script>
28
-
29
- <footer class={cls} style={inlineStyle}>
30
- {@render children?.()}
31
- </footer>
32
-
33
- <style>
34
- .cd-layout-footer {
35
- display: flex;
36
- flex: 0 0 auto;
37
- align-items: center;
38
- justify-content: center;
39
- padding-block: var(--cd-spacing-4);
40
- padding-inline: var(--cd-spacing-6);
41
- background: var(--cd-layout-footer-bg);
42
- color: var(--cd-layout-footer-color);
43
- text-align: center;
44
- }
45
- .cd-layout-footer--sticky {
46
- position: sticky;
47
- inset-block-end: 0;
48
- }
49
- </style>
@@ -1,46 +0,0 @@
1
- <!--
2
- Header — top bar within Layout. Token-driven background/height.
3
- -->
4
- <script lang="ts">
5
- import type { Snippet } from 'svelte';
6
-
7
- interface Props {
8
- sticky?: boolean;
9
- /** override token height; number→px, string→raw */
10
- height?: string | number;
11
- class?: string;
12
- children?: Snippet;
13
- }
14
-
15
- let { sticky = false, height, class: className = '', children }: Props = $props();
16
-
17
- const heightCss = $derived.by(() => {
18
- if (height === undefined) return undefined;
19
- return typeof height === 'number' ? `${height}px` : height;
20
- });
21
-
22
- const cls = $derived(
23
- ['cd-layout-header', sticky && 'cd-layout-header--sticky', className].filter(Boolean).join(' '),
24
- );
25
-
26
- const inlineStyle = $derived(heightCss ? `height:${heightCss}` : undefined);
27
- </script>
28
-
29
- <header class={cls} style={inlineStyle}>
30
- {@render children?.()}
31
- </header>
32
-
33
- <style>
34
- .cd-layout-header {
35
- display: flex;
36
- flex: 0 0 auto;
37
- align-items: center;
38
- height: var(--cd-layout-header-height);
39
- background: var(--cd-layout-header-bg);
40
- }
41
- .cd-layout-header--sticky {
42
- position: sticky;
43
- inset-block-start: 0;
44
- z-index: var(--cd-layout-header-z);
45
- }
46
- </style>
@@ -1,34 +0,0 @@
1
- // Layout a11y:页面级布局骨架(section + header/main/footer/aside 语义元素)。
2
- // 纯布局,不引入额外 role;Sider collapsible 触发器为原生 button + aria-expanded/aria-controls/aria-label。
3
- import { describe, it, expect } from 'vitest';
4
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
5
- import LayoutFixture from './LayoutA11yFixture.svelte';
6
-
7
- describe('Layout a11y', () => {
8
- it('默认渲染:语义布局元素齐全,无 axe violations', async () => {
9
- const { container } = renderWithLocale(LayoutFixture, {});
10
- expect(container.querySelector('section.cd-layout')).not.toBeNull();
11
- expect(container.querySelector('header.cd-layout-header')).not.toBeNull();
12
- expect(container.querySelector('main.cd-layout-content')).not.toBeNull();
13
- expect(container.querySelector('footer.cd-layout-footer')).not.toBeNull();
14
- expect(container.querySelector('aside.cd-layout-sider')).not.toBeNull();
15
- await expectNoAxeViolations(container);
16
- });
17
-
18
- it('collapsible Sider:触发器 button aria-expanded/aria-controls/aria-label,无 axe violations', async () => {
19
- const { container } = renderWithLocale(LayoutFixture, {
20
- props: { collapsible: true },
21
- });
22
- const trigger = container.querySelector('button.cd-layout-sider__trigger');
23
- expect(trigger).not.toBeNull();
24
- // 展开态 aria-expanded=true。
25
- expect(trigger?.getAttribute('aria-expanded')).toBe('true');
26
- // aria-controls 指向 Sider id(不悬空)。
27
- const controls = trigger?.getAttribute('aria-controls');
28
- expect(controls).toBeTruthy();
29
- expect(container.ownerDocument.getElementById(controls!)).not.toBeNull();
30
- // aria-label 来自 i18n(验证 LocaleProvider 管线)。
31
- expect(trigger?.getAttribute('aria-label')).toBeTruthy();
32
- await expectNoAxeViolations(container);
33
- });
34
- });
@@ -1,60 +0,0 @@
1
- <!--
2
- Layout — root flex container. Column by default; row when a Sider is present.
3
- Sider auto-detection: Sider registers itself via context on mount, flipping the
4
- direction to row. Explicit `hasSider` always wins.
5
- NOTE: child onMount runs after the parent, so SSR/first frame may render column
6
- then switch to row. For SSR correctness pass `hasSider` explicitly.
7
- -->
8
- <script lang="ts" module>
9
- export const LAYOUT_CONTEXT_KEY = Symbol('cd-layout');
10
-
11
- export interface LayoutContext {
12
- registerSider: () => void;
13
- }
14
- </script>
15
-
16
- <script lang="ts">
17
- import type { Snippet } from 'svelte';
18
- import { setContext } from 'svelte';
19
-
20
- interface Props {
21
- hasSider?: boolean;
22
- class?: string;
23
- children?: Snippet;
24
- }
25
-
26
- let { hasSider, class: className = '', children }: Props = $props();
27
-
28
- let hasSiderDetected = $state(false);
29
-
30
- setContext<LayoutContext>(LAYOUT_CONTEXT_KEY, {
31
- registerSider: () => {
32
- hasSiderDetected = true;
33
- },
34
- });
35
-
36
- const isRow = $derived(hasSider ?? hasSiderDetected);
37
-
38
- const cls = $derived(
39
- ['cd-layout', isRow ? 'cd-layout--has-sider' : 'cd-layout--column', className]
40
- .filter(Boolean)
41
- .join(' '),
42
- );
43
- </script>
44
-
45
- <section class={cls}>
46
- {@render children?.()}
47
- </section>
48
-
49
- <style>
50
- .cd-layout {
51
- display: flex;
52
- flex: auto;
53
- flex-direction: column;
54
- min-height: 0;
55
- background: var(--cd-layout-bg);
56
- }
57
- .cd-layout--has-sider {
58
- flex-direction: row;
59
- }
60
- </style>
@@ -1,21 +0,0 @@
1
- <!--
2
- 仅供 Layout.a11y.test.ts 使用的测试夹具:Layout 根 + Header/Sider/Content/Footer。
3
- Sider collapsible 渲染原生 button 触发器(aria-expanded/aria-controls/aria-label)。
4
- -->
5
- <script lang="ts">
6
- import { Layout } from './index.js';
7
-
8
- interface Props {
9
- collapsible?: boolean;
10
- }
11
- let { collapsible = false }: Props = $props();
12
- </script>
13
-
14
- <Layout hasSider>
15
- <Layout.Sider {collapsible}>Navigation</Layout.Sider>
16
- <Layout>
17
- <Layout.Header>Page header</Layout.Header>
18
- <Layout.Content padding>Main content</Layout.Content>
19
- <Layout.Footer>Page footer</Layout.Footer>
20
- </Layout>
21
- </Layout>
@@ -1,207 +0,0 @@
1
- <!--
2
- Sider — collapsible side panel. Backed by headless createSider from core.
3
- Registers with Layout (context) so Layout switches to row direction.
4
- aria-label 文案经 useLocale 取自 locale 包(Sider.expand/collapse)。
5
- -->
6
- <script lang="ts">
7
- import type { Snippet } from 'svelte';
8
- import { getContext, onMount, untrack } from 'svelte';
9
- import {
10
- createSider,
11
- type Breakpoint,
12
- type SiderOptions,
13
- type SiderTrigger,
14
- } from '@chenzy-design/core';
15
- import { LAYOUT_CONTEXT_KEY, type LayoutContext } from './Layout.svelte';
16
- import { useLocale } from '../locale-provider/index.js';
17
-
18
- interface Props {
19
- /** controlled collapsed value */
20
- collapsed?: boolean;
21
- defaultCollapsed?: boolean;
22
- collapsible?: boolean;
23
- width?: string | number;
24
- collapsedWidth?: string | number;
25
- breakpoint?: Breakpoint;
26
- reverseArrow?: boolean;
27
- placement?: 'left' | 'right';
28
- class?: string;
29
- onCollapse?: (collapsed: boolean, trigger: SiderTrigger) => void;
30
- children?: Snippet;
31
- /** custom trigger; receives current collapsed + toggle */
32
- trigger?: Snippet<[{ collapsed: boolean; toggle: () => void }]>;
33
- }
34
-
35
- let {
36
- collapsed,
37
- defaultCollapsed = false,
38
- collapsible = false,
39
- width = 200,
40
- collapsedWidth = 60,
41
- breakpoint,
42
- reverseArrow = false,
43
- placement = 'left',
44
- class: className = '',
45
- onCollapse,
46
- children,
47
- trigger,
48
- }: Props = $props();
49
-
50
- const loc = useLocale();
51
-
52
- const layout = getContext<LayoutContext | undefined>(LAYOUT_CONTEXT_KEY);
53
-
54
- // Headless machine is created once with the initial prop values; later changes
55
- // to the controlled `collapsed` prop are applied via the $derived below.
56
- // untrack documents that we intentionally capture only the initial values here.
57
- const sider = untrack(() => {
58
- // Build options conditionally — exactOptionalPropertyTypes forbids passing
59
- // `undefined` for optional props typed without `| undefined`.
60
- const options: SiderOptions = {
61
- defaultCollapsed,
62
- onChange: (value, t) => onCollapse?.(value, t),
63
- };
64
- if (collapsed !== undefined) options.collapsed = collapsed;
65
- if (breakpoint !== undefined) options.breakpoint = breakpoint;
66
- return createSider(options);
67
- });
68
-
69
- // Tracks the headless machine's uncontrolled collapsed state.
70
- let internalCollapsed = $state(sider.getCollapsed());
71
-
72
- // Controlled `collapsed` prop always wins over the internal value.
73
- const collapsedState = $derived(collapsed ?? internalCollapsed);
74
-
75
- // Notify Layout once so it switches to row direction.
76
- onMount(() => {
77
- layout?.registerSider();
78
- });
79
-
80
- // Bridge the headless subscription/breakpoint watcher into Svelte reactivity.
81
- // This is the intended escape-hatch use of $effect: syncing an external store.
82
- $effect(() => {
83
- const unsubscribe = sider.subscribe((value) => {
84
- internalCollapsed = value;
85
- });
86
- const stopWatch = sider.watchBreakpoint();
87
- return () => {
88
- unsubscribe();
89
- stopWatch();
90
- };
91
- });
92
-
93
- function toggle(): void {
94
- sider.toggle();
95
- }
96
-
97
- function toCss(value: string | number): string {
98
- return typeof value === 'number' ? `${value}px` : value;
99
- }
100
-
101
- const widthCss = $derived(collapsedState ? toCss(collapsedWidth) : toCss(width));
102
-
103
- const isCollapsedToZero = $derived(
104
- collapsedState && (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px'),
105
- );
106
-
107
- const cls = $derived(
108
- [
109
- 'cd-layout-sider',
110
- `cd-layout-sider--${placement}`,
111
- collapsedState && 'cd-layout-sider--collapsed',
112
- className,
113
- ]
114
- .filter(Boolean)
115
- .join(' '),
116
- );
117
-
118
- const inlineStyle = $derived(`flex: 0 0 ${widthCss}; width: ${widthCss}; max-width: ${widthCss}`);
119
-
120
- // Arrow direction: point "outward" to expand, "inward" to collapse.
121
- // placement + reverseArrow flip which glyph means which.
122
- const pointsStart = $derived.by(() => {
123
- const base = placement === 'left' ? collapsedState : !collapsedState;
124
- return reverseArrow ? !base : base;
125
- });
126
- </script>
127
-
128
- <aside class={cls} style={inlineStyle}>
129
- <div
130
- id={sider.id}
131
- class="cd-layout-sider__children"
132
- aria-hidden={isCollapsedToZero || undefined}
133
- >
134
- {@render children?.()}
135
- </div>
136
-
137
- {#if trigger}
138
- {@render trigger({ collapsed: collapsedState, toggle })}
139
- {:else if collapsible}
140
- <button
141
- type="button"
142
- class="cd-layout-sider__trigger"
143
- aria-expanded={!collapsedState}
144
- aria-controls={sider.id}
145
- aria-label={collapsedState ? loc().t('Sider.expand') : loc().t('Sider.collapse')}
146
- onclick={toggle}
147
- >
148
- <span class="cd-layout-sider__arrow" aria-hidden="true">{pointsStart ? '‹' : '›'}</span>
149
- </button>
150
- {/if}
151
- </aside>
152
-
153
- <style>
154
- .cd-layout-sider {
155
- position: relative;
156
- display: flex;
157
- flex-direction: column;
158
- min-height: 0;
159
- background: var(--cd-layout-sider-bg);
160
- transition:
161
- flex-basis var(--cd-layout-motion-duration) var(--cd-layout-motion-ease),
162
- width var(--cd-layout-motion-duration) var(--cd-layout-motion-ease),
163
- max-width var(--cd-layout-motion-duration) var(--cd-layout-motion-ease);
164
- }
165
- .cd-layout-sider--left {
166
- border-inline-end: var(--cd-layout-sider-border);
167
- }
168
- .cd-layout-sider--right {
169
- border-inline-start: var(--cd-layout-sider-border);
170
- }
171
- .cd-layout-sider__children {
172
- flex: 1;
173
- min-height: 0;
174
- overflow: hidden;
175
- }
176
- .cd-layout-sider__trigger {
177
- display: flex;
178
- flex: 0 0 auto;
179
- align-items: center;
180
- justify-content: center;
181
- height: var(--cd-layout-header-height);
182
- padding: 0;
183
- border: none;
184
- background: var(--cd-layout-sider-trigger-bg);
185
- color: var(--cd-layout-sider-trigger-color);
186
- cursor: pointer;
187
- transition: background-color var(--cd-layout-motion-duration) var(--cd-layout-motion-ease);
188
- }
189
- .cd-layout-sider__trigger:hover {
190
- background: var(--cd-layout-sider-trigger-hover-bg);
191
- }
192
- .cd-layout-sider__trigger:focus-visible {
193
- outline: none;
194
- box-shadow: var(--cd-focus-ring);
195
- }
196
- .cd-layout-sider__arrow {
197
- display: inline-flex;
198
- font-size: var(--cd-font-size-3);
199
- line-height: 1;
200
- }
201
- @media (prefers-reduced-motion: reduce) {
202
- .cd-layout-sider,
203
- .cd-layout-sider__trigger {
204
- transition: none;
205
- }
206
- }
207
- </style>
@@ -1,26 +0,0 @@
1
- import LayoutRoot from './Layout.svelte';
2
- import Header from './Header.svelte';
3
- import Footer from './Footer.svelte';
4
- import Content from './Content.svelte';
5
- import Sider from './Sider.svelte';
6
-
7
- /** Named exports (also usable directly). */
8
- export {
9
- Header as LayoutHeader,
10
- Footer as LayoutFooter,
11
- Content as LayoutContent,
12
- Sider as LayoutSider,
13
- };
14
-
15
- /**
16
- * Aggregated namespace export: enables <Layout.Header /> etc.
17
- * Explicit type annotation avoids leaking component Props type errors.
18
- */
19
- export const Layout: typeof LayoutRoot & {
20
- Header: typeof Header;
21
- Footer: typeof Footer;
22
- Content: typeof Content;
23
- Sider: typeof Sider;
24
- } = Object.assign(LayoutRoot, { Header, Footer, Content, Sider });
25
-
26
- export { meta as layoutMeta } from './meta.js';
@@ -1,116 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * Aggregated metadata for the Layout family (root + Header/Sider/Content/Footer).
4
- */
5
- export const meta = {
6
- name: 'Layout',
7
- category: 'basic',
8
- description: '页面级布局骨架:Layout 根容器 + Header / Sider / Content / Footer 子组件。',
9
- subComponents: [
10
- {
11
- name: 'Layout',
12
- element: 'section',
13
- props: [
14
- {
15
- name: 'hasSider',
16
- type: 'boolean',
17
- default: 'undefined',
18
- desc: '显式声明含侧边栏→row 方向;不传则由 Sider 挂载时自动检测',
19
- },
20
- { name: 'class', type: 'string', default: "''" },
21
- ],
22
- },
23
- {
24
- name: 'Layout.Header',
25
- element: 'header',
26
- props: [
27
- { name: 'sticky', type: 'boolean', default: 'false', desc: 'position:sticky top:0' },
28
- { name: 'height', type: 'string|number', default: 'undefined', desc: 'number→px,覆盖 token 高度' },
29
- { name: 'class', type: 'string', default: "''" },
30
- ],
31
- },
32
- {
33
- name: 'Layout.Footer',
34
- element: 'footer',
35
- props: [
36
- { name: 'sticky', type: 'boolean', default: 'false', desc: 'position:sticky bottom:0' },
37
- { name: 'height', type: 'string|number', default: 'undefined' },
38
- { name: 'class', type: 'string', default: "''" },
39
- ],
40
- },
41
- {
42
- name: 'Layout.Content',
43
- element: 'main',
44
- props: [
45
- {
46
- name: 'padding',
47
- type: 'string|number|boolean',
48
- default: 'false',
49
- desc: 'true→token padding;number→px;string→原样;false→0',
50
- },
51
- { name: 'class', type: 'string', default: "''" },
52
- ],
53
- },
54
- {
55
- name: 'Layout.Sider',
56
- element: 'aside',
57
- props: [
58
- { name: 'collapsed', type: 'boolean', default: 'undefined', desc: '受控收起状态' },
59
- { name: 'defaultCollapsed', type: 'boolean', default: 'false' },
60
- { name: 'collapsible', type: 'boolean', default: 'false', desc: 'true→渲染默认触发器' },
61
- { name: 'width', type: 'string|number', default: '200', desc: 'number→px' },
62
- { name: 'collapsedWidth', type: 'string|number', default: '60', desc: '0 时收起隐藏内容' },
63
- { name: 'breakpoint', type: "'xs'|'sm'|'md'|'lg'|'xl'|'xxl'", default: 'undefined', desc: '低于断点自动收起' },
64
- { name: 'reverseArrow', type: 'boolean', default: 'false', desc: '反转触发器箭头方向' },
65
- { name: 'placement', type: "'left'|'right'", default: "'left'" },
66
- { name: 'class', type: 'string', default: "''" },
67
- { name: 'onCollapse', type: "(collapsed, trigger:'click'|'breakpoint')=>void", default: 'undefined' },
68
- { name: 'trigger', type: 'Snippet<[{collapsed,toggle}]>', default: 'undefined', desc: '自定义触发器' },
69
- ],
70
- },
71
- ],
72
- events: [
73
- { name: 'onCollapse', desc: 'Sider 收起状态变化,第二参数区分 click / breakpoint 触发来源' },
74
- ],
75
- slots: [
76
- { name: 'children', desc: '各子组件内容' },
77
- { name: 'trigger', desc: 'Sider 自定义触发器,接收 {collapsed, toggle}' },
78
- ],
79
- a11y: {
80
- hasRole: false,
81
- focusable: false,
82
- sider: 'Sider 触发器为原生 button,含 aria-expanded / aria-controls / aria-label;collapsedWidth=0 时内容 aria-hidden',
83
- note: 'reduced-motion 下移除 Sider 过渡',
84
- },
85
- tokens: [
86
- '--cd-layout-bg',
87
- '--cd-layout-header-bg',
88
- '--cd-layout-header-height',
89
- '--cd-layout-header-z',
90
- '--cd-layout-footer-bg',
91
- '--cd-layout-footer-color',
92
- '--cd-layout-content-bg',
93
- '--cd-layout-content-padding',
94
- '--cd-layout-sider-bg',
95
- '--cd-layout-sider-width',
96
- '--cd-layout-sider-collapsed-width',
97
- '--cd-layout-sider-border',
98
- '--cd-layout-sider-trigger-bg',
99
- '--cd-layout-sider-trigger-color',
100
- '--cd-layout-sider-trigger-hover-bg',
101
- '--cd-layout-motion-duration',
102
- '--cd-layout-motion-ease',
103
- ],
104
- aiHints: [
105
- 'SSR/首屏含侧边栏时显式传 hasSider,避免 column→row 闪动。',
106
- 'Sider 受控用 collapsed + onCollapse;非受控用 defaultCollapsed。',
107
- '需要响应式自动收起时传 breakpoint。',
108
- 'Layout.Header / Layout.Sider 等命名空间用法与具名 LayoutHeader 等价。',
109
- ],
110
- examples: [
111
- {
112
- title: '经典后台布局',
113
- code: '<Layout hasSider><Layout.Sider collapsible /><Layout><Layout.Header /><Layout.Content padding>内容</Layout.Content><Layout.Footer>底部</Layout.Footer></Layout></Layout>',
114
- },
115
- ],
116
- } as const;