@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,599 +0,0 @@
1
- <!--
2
- Timeline — see specs/components/show/Timeline.spec.md
3
- 基础子集: vertical/horizontal 方向、left/right/alternate/center mode、dataSource、pending、reverse、lineStyle。
4
- 两种用法择一:
5
- - 数据驱动:传 dataSource 数组(向后兼容,行为不变)。
6
- - 声明式:不传 dataSource,改在 children 内写 <Timeline.Item>(更灵活,可放富内容)。
7
- 交替布局(alternate/center)由纯 CSS :nth-child 决定,两种模式渲染同一套 .cd-timeline__item
8
- 结构,故声明式无需在父级计算索引即可复用同一交替样式。reverse 仅作用于 dataSource 模式
9
- (声明式下顺序由作者书写顺序决定)。
10
-
11
- 进阶子集:
12
- - virtualized(boolean + itemHeight + maxHeight):长时间轴只渲染视口内项,复用 core
13
- fixedRange/scrollOffsetForIndex(与 List/VirtualList 同一套区间数学)。命令式滚动监听 +
14
- rAF 节流 + cleanup(红线 #3);区间/总高纯 $derived 仅依赖本地 $state(红线 #2)。
15
- 轴线连续性:spacer 撑满总高、项绝对定位 translateY,固定 itemHeight 下相邻项的 tail
16
- 天然衔接;tail 显隐按数据索引判定(非 :nth-child)。仅在 dataSource 模式生效(声明式
17
- children 无法纯切片/测高)。virtualized 强制 vertical 列布局。
18
- - interactive(boolean):roving tabindex(WAI-ARIA)。项可聚焦,↑↓/←→ 在项间移动焦点,
19
- Home/End 跳首尾,Enter/Space 触发项 onClick。焦点索引为本地 $state,roving 由纯函数
20
- nextRovingIndex 派生;命令式 focus()/scrollToIndex(红线 #2/#3)。
21
- -->
22
- <script lang="ts">
23
- import type { Snippet } from 'svelte';
24
- import type { TimelineItemData } from './types.js';
25
- import {
26
- fixedRange,
27
- scrollOffsetForIndex,
28
- rovingKeyFromEvent,
29
- nextRovingIndex,
30
- } from '@chenzy-design/core';
31
- import { useLocale } from '../locale-provider/index.js';
32
- import { setTimelineContext } from './context.js';
33
-
34
- type Mode = 'left' | 'right' | 'alternate' | 'center';
35
- type Direction = 'vertical' | 'horizontal';
36
- type Size = 'small' | 'default' | 'large';
37
- type LineStyle = 'solid' | 'dashed';
38
-
39
- interface Props {
40
- dataSource?: TimelineItemData[];
41
- mode?: Mode;
42
- direction?: Direction;
43
- reverse?: boolean;
44
- pending?: boolean | string;
45
- size?: Size;
46
- lineStyle?: LineStyle;
47
- class?: string;
48
- /** 虚拟化:长时间轴只渲染视口内项(仅 dataSource 模式生效,强制 vertical)。 */
49
- virtualized?: boolean;
50
- /** 虚拟化固定项高(px),默认 56。 */
51
- itemHeight?: number;
52
- /** 虚拟化视口最大高(px 数字或 CSS 字符串),默认 400。 */
53
- maxHeight?: number | string;
54
- /** 虚拟化上下缓冲项数,默认 3。 */
55
- overscan?: number;
56
- /** interactive:项可聚焦 + 方向键 roving 漫游 + Enter/Space 触发 onClick。 */
57
- interactive?: boolean;
58
- /** 声明式用法:内嵌 <Timeline.Item> 列表(不传 dataSource 时生效)。 */
59
- children?: Snippet;
60
- }
61
-
62
- let {
63
- dataSource = [],
64
- mode = 'left',
65
- direction = 'vertical',
66
- reverse = false,
67
- pending = false,
68
- size = 'default',
69
- lineStyle = 'solid',
70
- class: className = '',
71
- virtualized = false,
72
- itemHeight = 56,
73
- maxHeight = 400,
74
- overscan = 3,
75
- interactive = false,
76
- children,
77
- }: Props = $props();
78
-
79
- const loc = useLocale();
80
-
81
- // 声明式优先级低于 dataSource:仅在未传 dataSource 时渲染 children。
82
- const useDeclarative = $derived(dataSource.length === 0 && children != null);
83
-
84
- // 通过 context 向 <Timeline.Item> 暴露父级 lineStyle + interactive 状态(getter 保持响应性)。
85
- // 焦点登记:声明式项在挂载时领号,roving 索引由父持有;项不写 $state(红线 #2)。
86
- setTimelineContext({
87
- getLineStyle: () => lineStyle,
88
- getInteractive: () => interactive,
89
- registerItem: registerDeclItem,
90
- isFocused: (id) => interactive && effectiveDeclFocusId === id,
91
- onItemKeydown: (id, e) => onDeclItemKeydown(id, e),
92
- onItemFocus: (id) => {
93
- declFocusedId = id;
94
- },
95
- });
96
-
97
- const hasPending = $derived(pending !== false);
98
- const pendingText = $derived(
99
- typeof pending === 'string' ? pending : loc().t('Timeline.pending'),
100
- );
101
-
102
- const ordered = $derived(reverse ? [...dataSource].reverse() : dataSource);
103
-
104
- // --- virtualized:仅 dataSource 模式生效(声明式 children 无法纯切片/测高)。 ---
105
- const virtualOn = $derived(virtualized && !useDeclarative && ordered.length > 0);
106
- const vItemHeight = $derived(itemHeight > 0 ? itemHeight : 56);
107
- const vOverscan = $derived(Math.max(0, overscan));
108
- const vMaxHeightStyle = $derived(
109
- typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight,
110
- );
111
-
112
- // viewport 普通引用(bind:this),不参与响应式几何读取。
113
- let viewportEl = $state<HTMLDivElement | null>(null);
114
- // 本地响应式状态:仅由命令式回调 / ResizeObserver 写入,render 期只读。
115
- let vScrollTop = $state(0);
116
- let vMeasuredH = $state(0);
117
- let vRafId = 0;
118
-
119
- const vTotalHeight = $derived(ordered.length * vItemHeight);
120
- const vRange = $derived(
121
- fixedRange(vScrollTop, vMeasuredH, vItemHeight, ordered.length, vOverscan),
122
- );
123
- const vStart = $derived(vRange.startIndex);
124
- const vEnd = $derived(vRange.endIndex);
125
- const vVisible = $derived(ordered.slice(vStart, vEnd));
126
-
127
- // 虚拟化滚动监听(命令式 + rAF 节流 + cleanup;红线 #3)。
128
- $effect(() => {
129
- const el = viewportEl;
130
- if (!el || !virtualOn) return;
131
- vMeasuredH = el.clientHeight;
132
- function onScroll() {
133
- if (vRafId) return;
134
- vRafId = requestAnimationFrame(() => {
135
- vRafId = 0;
136
- if (el) vScrollTop = el.scrollTop;
137
- });
138
- }
139
- const ro = new ResizeObserver((entries) => {
140
- for (const entry of entries) vMeasuredH = entry.contentRect.height;
141
- });
142
- ro.observe(el);
143
- el.addEventListener('scroll', onScroll, { passive: true });
144
- return () => {
145
- el.removeEventListener('scroll', onScroll);
146
- ro.disconnect();
147
- if (vRafId) {
148
- cancelAnimationFrame(vRafId);
149
- vRafId = 0;
150
- }
151
- };
152
- });
153
-
154
- /** 命令式滚动到指定索引项(红线 #3:直接写 DOM scrollTop,非 render 期)。 */
155
- function vScrollToIndex(index: number): void {
156
- const el = viewportEl;
157
- if (!el || !virtualOn) return;
158
- const i = Math.max(0, Math.min(ordered.length - 1, Math.floor(index)));
159
- const target = scrollOffsetForIndex(
160
- i * vItemHeight,
161
- vItemHeight,
162
- el.clientHeight,
163
- vTotalHeight,
164
- 'start',
165
- );
166
- el.scrollTop = target;
167
- vScrollTop = target;
168
- }
169
-
170
- // --- interactive:roving tabindex(焦点索引本地 $state,移动由纯函数派生)。 ---
171
- // dataSource 模式用数值索引;声明式模式用挂载顺序生成的 id。
172
- let focusedIndex = $state(0);
173
-
174
- // tabindex 派生:roving — 焦点项 0,其余 -1(无焦点项时首项为 0 接收 Tab)。
175
- function dsTabindex(index: number): 0 | -1 {
176
- if (!interactive) return -1;
177
- const fi = focusedIndex < 0 ? 0 : Math.min(focusedIndex, ordered.length - 1);
178
- return index === fi ? 0 : -1;
179
- }
180
-
181
- function focusDsIndex(index: number): void {
182
- const i = Math.max(0, Math.min(ordered.length - 1, index));
183
- focusedIndex = i;
184
- // 虚拟化下目标可能未渲染:先滚入视口,下一帧 DOM 就绪再 focus。
185
- if (virtualOn) {
186
- vScrollToIndex(i);
187
- requestAnimationFrame(() => {
188
- viewportEl
189
- ?.querySelector<HTMLElement>(`[data-tindex="${i}"]`)
190
- ?.focus();
191
- });
192
- } else {
193
- const root = rootEl;
194
- root?.querySelector<HTMLElement>(`[data-tindex="${i}"]`)?.focus();
195
- }
196
- }
197
-
198
- let rootEl = $state<HTMLElement | null>(null);
199
-
200
- function onDsItemKeydown(e: KeyboardEvent, index: number, item: TimelineItemData): void {
201
- if (!interactive) return;
202
- const intent = rovingKeyFromEvent(e.key);
203
- if (intent) {
204
- e.preventDefault();
205
- const next = nextRovingIndex(index, ordered.length, intent, false);
206
- if (next >= 0) focusDsIndex(next);
207
- return;
208
- }
209
- if (e.key === 'Enter' || e.key === ' ') {
210
- e.preventDefault();
211
- item.onClick?.();
212
- }
213
- }
214
-
215
- function onDsItemActivate(item: TimelineItemData, index: number): void {
216
- if (!interactive) return;
217
- focusedIndex = index;
218
- item.onClick?.();
219
- }
220
-
221
- // --- 声明式 interactive 焦点登记(仿 Tabs:簿记用普通数组,render 重建仅由 version 触发)---
222
- // 子项在 $effect 内 register/unregister,只 bump version;render 读快照不写 $state(红线 #2),
223
- // 避免「子注册 effect 既读又写同一 $state 数组」自循环。
224
- let declSeq = 0;
225
- const declOrder: number[] = []; // 普通数组:按挂载顺序的 id 序列
226
- let declVersion = $state(0);
227
- let declFocusedId = $state(-1); // 由 onItemFocus / roving 写入,render-safe 派生兜底
228
-
229
- // render 期只读快照:roving 序列(id 数组),仅依赖 version 重建。
230
- const declIds = $derived.by<number[]>(() => {
231
- void declVersion;
232
- return [...declOrder];
233
- });
234
- // 有效焦点 id:当前 declFocusedId 仍在序列内则用之,否则回退首项(接收 Tab)。
235
- const effectiveDeclFocusId = $derived(
236
- declIds.includes(declFocusedId) ? declFocusedId : (declIds[0] ?? -1),
237
- );
238
-
239
- function registerDeclItem(): { id: number; unregister: () => void } {
240
- const id = declSeq;
241
- declSeq += 1;
242
- declOrder.push(id);
243
- declVersion += 1;
244
- return {
245
- id,
246
- unregister: () => {
247
- const i = declOrder.indexOf(id);
248
- if (i >= 0) declOrder.splice(i, 1);
249
- declVersion += 1;
250
- },
251
- };
252
- }
253
-
254
- function focusDeclId(id: number): void {
255
- declFocusedId = id;
256
- rootEl?.querySelector<HTMLElement>(`[data-tid="${id}"]`)?.focus();
257
- }
258
-
259
- function onDeclItemKeydown(id: number, e: KeyboardEvent): void {
260
- if (!interactive) return;
261
- const intent = rovingKeyFromEvent(e.key);
262
- if (!intent) return; // Enter/Space 的 onClick 由 Timeline.Item 自身处理。
263
- e.preventDefault();
264
- const ids = declIds;
265
- const cur = ids.indexOf(id);
266
- const next = nextRovingIndex(cur, ids.length, intent, false);
267
- const nextId = ids[next];
268
- if (nextId !== undefined) focusDeclId(nextId);
269
- }
270
-
271
- const cls = $derived(
272
- [
273
- 'cd-timeline',
274
- `cd-timeline--${virtualOn ? 'left' : mode}`,
275
- `cd-timeline--${virtualOn ? 'vertical' : direction}`,
276
- `cd-timeline--${size}`,
277
- `cd-timeline--${lineStyle}`,
278
- virtualOn && 'cd-timeline--virtual',
279
- interactive && 'cd-timeline--interactive',
280
- className,
281
- ]
282
- .filter(Boolean)
283
- .join(' '),
284
- );
285
-
286
- function dotStyle(item: TimelineItemData): string | undefined {
287
- const color = item.dotColor ?? item.color;
288
- return color ? `--cd-timeline-dot-current: ${color};` : undefined;
289
- }
290
- </script>
291
-
292
- {#snippet itemBody(item: TimelineItemData)}
293
- <span class="cd-timeline__dot" style={dotStyle(item)} aria-hidden="true"></span>
294
- <div class="cd-timeline__body">
295
- <div class="cd-timeline__content">{item.content}</div>
296
- {#if item.time}
297
- <div class="cd-timeline__time">{item.time}</div>
298
- {/if}
299
- </div>
300
- {/snippet}
301
-
302
- {#if virtualOn}
303
- <!-- 虚拟化:视口自身滚动,spacer 撑满总高 + 项绝对定位 translateY,轴线靠固定项高天然衔接。 -->
304
- <div
305
- bind:this={rootEl}
306
- class={cls}
307
- role="list"
308
- style={`max-block-size:${vMaxHeightStyle}; overflow:auto`}
309
- bind:this={viewportEl}
310
- >
311
- <div class="cd-timeline__virtual-spacer" style={`block-size:${vTotalHeight}px`}>
312
- {#each vVisible as item, i (item.key ?? vStart + i)}
313
- {@const index = vStart + i}
314
- {@const isLastData = index === ordered.length - 1 && !hasPending}
315
- {#if interactive}
316
- <!-- listitem 包 button:li 保持 list 语义,交互/roving 焦点落在内层 button(避免 ul 直含非 listitem)。 -->
317
- <div
318
- class="cd-timeline__item cd-timeline__virtual-item"
319
- class:cd-timeline__item--last={isLastData}
320
- role="listitem"
321
- style={`transform:translateY(${index * vItemHeight}px); block-size:${vItemHeight}px`}
322
- >
323
- <div
324
- class="cd-timeline__item-interactive cd-timeline__item--interactive"
325
- role="button"
326
- tabindex={dsTabindex(index)}
327
- data-tindex={index}
328
- aria-label={item.content}
329
- onclick={() => onDsItemActivate(item, index)}
330
- onkeydown={(e) => onDsItemKeydown(e, index, item)}
331
- >
332
- <span class="cd-timeline__tail" aria-hidden="true"></span>
333
- {@render itemBody(item)}
334
- </div>
335
- </div>
336
- {:else}
337
- <div
338
- class="cd-timeline__item cd-timeline__virtual-item"
339
- class:cd-timeline__item--last={isLastData}
340
- role="listitem"
341
- style={`transform:translateY(${index * vItemHeight}px); block-size:${vItemHeight}px`}
342
- >
343
- <span class="cd-timeline__tail" aria-hidden="true"></span>
344
- {@render itemBody(item)}
345
- </div>
346
- {/if}
347
- {/each}
348
- </div>
349
- </div>
350
- {:else}
351
- <ul bind:this={rootEl} class={cls}>
352
- {#if useDeclarative}
353
- {@render children?.()}
354
- {:else}
355
- {#each ordered as item, index (item.key ?? index)}
356
- {#if interactive}
357
- <!-- listitem 包 button:li 保持 list 语义,role=button + roving 焦点落在内层 div(避免 ul 直含非 listitem)。 -->
358
- <li class="cd-timeline__item">
359
- <div
360
- class="cd-timeline__item-interactive cd-timeline__item--interactive"
361
- role="button"
362
- tabindex={dsTabindex(index)}
363
- data-tindex={index}
364
- aria-label={item.content}
365
- onclick={() => onDsItemActivate(item, index)}
366
- onkeydown={(e) => onDsItemKeydown(e, index, item)}
367
- >
368
- <span class="cd-timeline__tail" aria-hidden="true"></span>
369
- {@render itemBody(item)}
370
- </div>
371
- </li>
372
- {:else}
373
- <li class="cd-timeline__item">
374
- <span class="cd-timeline__tail" aria-hidden="true"></span>
375
- {@render itemBody(item)}
376
- </li>
377
- {/if}
378
- {/each}
379
- {/if}
380
- {#if hasPending}
381
- <li class="cd-timeline__item cd-timeline__item--pending">
382
- <span class="cd-timeline__dot cd-timeline__dot--pending" aria-hidden="true"></span>
383
- <div class="cd-timeline__body">
384
- <div class="cd-timeline__content">{pendingText}</div>
385
- </div>
386
- </li>
387
- {/if}
388
- </ul>
389
- {/if}
390
-
391
- <style>
392
- /*
393
- .cd-timeline 根(<ul>)保留组件作用域哈希;其下各 .cd-timeline__* 后代用 :global 包裹,
394
- 使同一套结构样式既覆盖本组件 dataSource 渲染的 <li>,也覆盖 <Timeline.Item> 在子组件中
395
- 渲染的 <li>(跨组件边界)。交替布局靠 :nth-child,两种模式天然共用。
396
- */
397
- .cd-timeline {
398
- display: flex;
399
- flex-direction: column;
400
- margin: 0;
401
- padding: 0;
402
- list-style: none;
403
- }
404
- .cd-timeline :global(.cd-timeline__item) {
405
- position: relative;
406
- display: flex;
407
- gap: var(--cd-timeline-gap);
408
- padding-block-end: var(--cd-timeline-gap);
409
- padding-inline-start: var(--cd-timeline-dot-size);
410
- }
411
- .cd-timeline :global(.cd-timeline__item:last-child) {
412
- padding-block-end: 0;
413
- }
414
- .cd-timeline :global(.cd-timeline__dot) {
415
- position: absolute;
416
- inset-block-start: 0;
417
- inset-inline-start: 0;
418
- inline-size: var(--cd-timeline-dot-size);
419
- block-size: var(--cd-timeline-dot-size);
420
- border-radius: var(--cd-radius-full);
421
- background: var(--cd-timeline-dot-current, var(--cd-timeline-dot-color));
422
- }
423
- .cd-timeline :global(.cd-timeline__dot--pending) {
424
- background: transparent;
425
- border: 1px dashed var(--cd-timeline-dot-color);
426
- }
427
- .cd-timeline :global(.cd-timeline__tail) {
428
- position: absolute;
429
- inset-block: var(--cd-timeline-dot-size) 0;
430
- inset-inline-start: calc(var(--cd-timeline-dot-size) / 2);
431
- inline-size: 0;
432
- border-inline-start: 1px solid var(--cd-timeline-line-color);
433
- }
434
- .cd-timeline--dashed :global(.cd-timeline__tail) {
435
- border-inline-start-style: dashed;
436
- }
437
- .cd-timeline :global(.cd-timeline__item:last-child .cd-timeline__tail) {
438
- display: none;
439
- }
440
- .cd-timeline :global(.cd-timeline__item--pending .cd-timeline__tail),
441
- .cd-timeline
442
- :global(.cd-timeline__item:nth-last-child(2):has(~ .cd-timeline__item--pending) .cd-timeline__tail) {
443
- border-inline-start-style: dashed;
444
- }
445
- .cd-timeline :global(.cd-timeline__body) {
446
- flex: 1 1 auto;
447
- min-inline-size: 0;
448
- }
449
- .cd-timeline :global(.cd-timeline__content) {
450
- color: var(--cd-timeline-content-color);
451
- }
452
- .cd-timeline :global(.cd-timeline__time) {
453
- margin-block-start: var(--cd-spacing-1);
454
- color: var(--cd-timeline-time-color);
455
- font-size: var(--cd-font-size-1);
456
- }
457
-
458
- /* alternate / center: 轴线居中,奇偶项左右交替 */
459
- .cd-timeline--alternate :global(.cd-timeline__item),
460
- .cd-timeline--center :global(.cd-timeline__item) {
461
- inline-size: 50%;
462
- }
463
- .cd-timeline--alternate :global(.cd-timeline__item:nth-child(odd)),
464
- .cd-timeline--center :global(.cd-timeline__item:nth-child(odd)) {
465
- margin-inline-start: auto;
466
- }
467
- .cd-timeline--alternate :global(.cd-timeline__item:nth-child(even)),
468
- .cd-timeline--center :global(.cd-timeline__item:nth-child(even)) {
469
- flex-direction: row-reverse;
470
- text-align: end;
471
- padding-inline: 0 var(--cd-timeline-dot-size);
472
- }
473
- .cd-timeline--alternate :global(.cd-timeline__item:nth-child(even) .cd-timeline__dot),
474
- .cd-timeline--center :global(.cd-timeline__item:nth-child(even) .cd-timeline__dot) {
475
- inset-inline: auto 0;
476
- }
477
- .cd-timeline--alternate :global(.cd-timeline__item:nth-child(even) .cd-timeline__tail),
478
- .cd-timeline--center :global(.cd-timeline__item:nth-child(even) .cd-timeline__tail) {
479
- inset-inline: auto calc(var(--cd-timeline-dot-size) / 2);
480
- }
481
- /* center 与 alternate 的差异:center 下两侧内容均朝轴线对齐,
482
- 左侧内容右对齐、右侧内容左对齐,形成关于中轴对称的居中观感;
483
- alternate 则保留各侧自然阅读方向(左侧左对齐)。 */
484
- .cd-timeline--center :global(.cd-timeline__item:nth-child(odd)) {
485
- text-align: end;
486
- }
487
- .cd-timeline--center :global(.cd-timeline__item:nth-child(even)) {
488
- text-align: start;
489
- }
490
-
491
- /* right: left 的镜像——轴线在右侧,内容靠右对齐排在轴左侧。
492
- 复用 alternate even-child 的镜像手法(row-reverse + 内边距/dot/tail 翻转),
493
- 但应用到全部 item 而非交替项。 */
494
- .cd-timeline--right :global(.cd-timeline__item) {
495
- flex-direction: row-reverse;
496
- text-align: end;
497
- padding-inline: 0 var(--cd-timeline-dot-size);
498
- }
499
- .cd-timeline--right :global(.cd-timeline__dot) {
500
- inset-inline: auto 0;
501
- }
502
- .cd-timeline--right :global(.cd-timeline__tail) {
503
- inset-inline: auto calc(var(--cd-timeline-dot-size) / 2);
504
- }
505
-
506
- /* horizontal: 节点横向一行,连接线水平,内容在节点下方 */
507
- .cd-timeline--horizontal {
508
- flex-direction: row;
509
- align-items: flex-start;
510
- }
511
- .cd-timeline--horizontal :global(.cd-timeline__item) {
512
- flex: 1 1 0;
513
- inline-size: auto;
514
- flex-direction: column;
515
- margin-inline-start: 0;
516
- text-align: start;
517
- padding-block-start: var(--cd-timeline-dot-size);
518
- padding-block-end: 0;
519
- padding-inline: 0;
520
- }
521
- .cd-timeline--horizontal :global(.cd-timeline__dot) {
522
- inset-block-start: 0;
523
- inset-inline-start: 0;
524
- }
525
- /* 水平轴线:从节点圆心向右延伸至下一节点 */
526
- .cd-timeline--horizontal :global(.cd-timeline__tail) {
527
- inset-block: calc(var(--cd-timeline-dot-size) / 2) auto;
528
- inset-inline: var(--cd-timeline-dot-size) 0;
529
- inline-size: auto;
530
- block-size: 0;
531
- border-inline-start: none;
532
- border-block-start: 1px solid var(--cd-timeline-line-color);
533
- }
534
- .cd-timeline--horizontal.cd-timeline--dashed :global(.cd-timeline__tail) {
535
- border-block-start-style: dashed;
536
- }
537
- .cd-timeline--horizontal
538
- :global(.cd-timeline__item:nth-last-child(2):has(~ .cd-timeline__item--pending) .cd-timeline__tail) {
539
- border-block-start-style: dashed;
540
- }
541
- .cd-timeline--horizontal :global(.cd-timeline__body) {
542
- margin-block-start: var(--cd-timeline-gap);
543
- }
544
-
545
- /* --- virtualized:视口自身滚动,spacer 撑满总高 + 项绝对定位(固定项高保证轴线衔接)。 --- */
546
- .cd-timeline--virtual {
547
- position: relative;
548
- display: block;
549
- scrollbar-color: var(--cd-virtual-list-scrollbar, currentColor) transparent;
550
- }
551
- .cd-timeline__virtual-spacer {
552
- position: relative;
553
- inline-size: 100%;
554
- }
555
- .cd-timeline :global(.cd-timeline__virtual-item) {
556
- position: absolute;
557
- inset-block-start: 0;
558
- inset-inline: 0;
559
- /* 固定项高:取消 last-child 兜底,由内联 block-size 控制;padding 不参与高度计算 */
560
- box-sizing: border-box;
561
- padding-block-end: 0;
562
- overflow: hidden;
563
- }
564
- /* 虚拟化下 tail 默认贯穿整个项高,保证滚动中轴线连续;末项(无 pending)隐藏 */
565
- .cd-timeline :global(.cd-timeline__virtual-item .cd-timeline__tail) {
566
- inset-block: var(--cd-timeline-dot-size) calc(var(--cd-timeline-dot-size) * -1);
567
- }
568
- .cd-timeline :global(.cd-timeline__item--last .cd-timeline__tail) {
569
- display: none;
570
- }
571
-
572
- /* --- interactive:listitem 包 button,交互/roving 焦点落在内层 .cd-timeline__item-interactive。 --- */
573
- /* 内层交互元素接管原 .cd-timeline__item 的 flex 布局与定位(tail 绝对定位需 position:relative 锚点)。
574
- 外层 li 让出 padding/定位给内层,自身只作单纯 list 容器。 */
575
- .cd-timeline--interactive :global(.cd-timeline__item) {
576
- padding-inline-start: 0;
577
- padding-block-end: 0;
578
- }
579
- .cd-timeline :global(.cd-timeline__item-interactive) {
580
- position: relative;
581
- display: flex;
582
- flex: 1 1 auto;
583
- gap: var(--cd-timeline-gap);
584
- min-inline-size: 0;
585
- padding-inline-start: var(--cd-timeline-dot-size);
586
- padding-block-end: var(--cd-timeline-gap);
587
- }
588
- .cd-timeline--interactive :global(.cd-timeline__item--interactive) {
589
- cursor: pointer;
590
- outline: none;
591
- border-radius: var(--cd-radius-small, 4px);
592
- }
593
- .cd-timeline--interactive :global(.cd-timeline__item--interactive:hover) {
594
- background: var(--cd-color-fill-0, rgba(0, 0, 0, 0.03));
595
- }
596
- .cd-timeline--interactive :global(.cd-timeline__item--interactive:focus-visible) {
597
- box-shadow: inset 0 0 0 2px var(--cd-focus-ring, var(--cd-color-primary, #0066ff));
598
- }
599
- </style>