@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,674 +0,0 @@
1
- <!--
2
- InputNumber — see specs/components/input/InputNumber.spec.md
3
- Constrained numeric input: native <input inputmode="decimal"> + stacked steppers.
4
- Controlled / uncontrolled (same pattern as Input). Variation only via onChange.
5
- 长按连续增减:按钮 mousedown 首延迟 400ms 后以 60ms 间隔重复,up/leave/卸载清理。
6
- formatter/parser:自定义显示/解析(formatter 仅作用于非编辑态显示)。
7
- mouseWheel/selectOnFocus/autofocus 命令式监听挂在 action 上并 cleanup(红线 #3)。
8
- -->
9
- <script lang="ts">
10
- import type { Snippet } from 'svelte';
11
- import {
12
- useId,
13
- clampWithMode,
14
- boundaryHitOf,
15
- roundToPrecision,
16
- addNumberStep,
17
- formatWithLocale,
18
- useLiveAnnouncer,
19
- type BoundaryMode,
20
- } from '@chenzy-design/core';
21
- import { useLocale } from '../locale-provider/index.js';
22
-
23
- type Size = 'small' | 'default' | 'large';
24
- type Status = 'default' | 'warning' | 'error';
25
- type ControlsPosition = 'right' | 'sides';
26
-
27
- interface Props {
28
- value?: number | null;
29
- defaultValue?: number | null;
30
- min?: number;
31
- max?: number;
32
- step?: number;
33
- shiftStep?: number;
34
- precision?: number;
35
- /** 越界处理:clamp 钳制 / strict 拒绝回滚 */
36
- boundaryMode?: BoundaryMode;
37
- size?: Size;
38
- disabled?: boolean;
39
- readonly?: boolean;
40
- status?: Status;
41
- controls?: boolean;
42
- /** 步进按钮布局:right 右侧 stacked / sides 两侧 */
43
- controlsPosition?: ControlsPosition;
44
- /** 步进按钮内嵌悬浮(hover/focus 显形) */
45
- innerButtons?: boolean;
46
- keyboard?: boolean;
47
- /** 聚焦时滚轮步进 */
48
- mouseWheel?: boolean;
49
- placeholder?: string;
50
- /** 输入框前置内容(如货币符号 ¥、单位);传 Snippet 可自定义渲染 */
51
- prefix?: string | Snippet;
52
- /** 输入框后置内容(如单位 %、kg);传 Snippet 可自定义渲染 */
53
- suffix?: string | Snippet;
54
- name?: string;
55
- /** input 元素 id,关联外部 label;不传自动生成 */
56
- id?: string;
57
- ariaLabel?: string;
58
- /** 挂载自动聚焦 */
59
- autofocus?: boolean;
60
- /** 聚焦时全选文本 */
61
- selectOnFocus?: boolean;
62
- /** 数字格式化 locale,传给内部 Intl(仅未提供 formatter 时生效) */
63
- locale?: string;
64
- /** 自定义显示格式化(仅非编辑态) */
65
- formatter?: (n: number) => string;
66
- /** 自定义解析(与 formatter 对应) */
67
- parser?: (s: string) => number;
68
- onChange?: (v: number | null) => void;
69
- /** 触达/试图越过边界 */
70
- onBoundaryHit?: (e: { boundary: 'min' | 'max'; value: number }) => void;
71
- /** 任一步进动作完成(按钮 / 键盘 / 滚轮) */
72
- onStep?: (e: {
73
- value: number;
74
- direction: 'up' | 'down';
75
- source: 'button' | 'keyboard' | 'wheel';
76
- }) => void;
77
- /** 聚焦 */
78
- onFocus?: (e: FocusEvent) => void;
79
- /** 失焦(已完成 commit 归一化) */
80
- onBlur?: (e: FocusEvent) => void;
81
- /** 透传原生 keydown(便于扩展,如 Enter 提交表单) */
82
- onKeydown?: (e: KeyboardEvent) => void;
83
- /** 无边框模式 */
84
- borderless?: boolean;
85
- /** 显示清除按钮(有值时出现 ×) */
86
- showClear?: boolean;
87
- /** 自定义清除图标 */
88
- clearIcon?: Snippet;
89
- /** 点击 +/- 按钮后保持输入框聚焦(默认 false) */
90
- keepFocus?: boolean;
91
- /** 携带 number 类型的变化回调(区别于 onChange 返回 number | null) */
92
- onNumberChange?: (value: number | null) => void;
93
- }
94
-
95
- let {
96
- value = $bindable(),
97
- defaultValue = null,
98
- min = -Infinity,
99
- max = Infinity,
100
- step = 1,
101
- shiftStep,
102
- precision,
103
- boundaryMode = 'clamp',
104
- size = 'default',
105
- disabled = false,
106
- readonly = false,
107
- status = 'default',
108
- controls = true,
109
- controlsPosition = 'right',
110
- innerButtons = false,
111
- keyboard = true,
112
- mouseWheel = false,
113
- placeholder,
114
- prefix,
115
- suffix,
116
- name,
117
- id,
118
- ariaLabel,
119
- autofocus = false,
120
- selectOnFocus = false,
121
- locale,
122
- formatter,
123
- parser,
124
- onChange,
125
- onBoundaryHit,
126
- onStep,
127
- onFocus,
128
- onBlur,
129
- onKeydown,
130
- borderless = false,
131
- showClear = false,
132
- clearIcon,
133
- keepFocus = false,
134
- onNumberChange,
135
- }: Props = $props();
136
-
137
- const loc = useLocale();
138
- // 单例 live region(polite):值被 min/max 钳制(越界回弹)时播报实际生效值(红线 #3:命令式)。
139
- const announcer = useLiveAnnouncer();
140
- // prefix/suffix 可传 string 或 Snippet;函数即视为 Snippet。
141
- const prefixSnippet = $derived(typeof prefix === 'function' ? (prefix as Snippet) : undefined);
142
- const suffixSnippet = $derived(typeof suffix === 'function' ? (suffix as Snippet) : undefined);
143
- // 生成一次稳定回退 id(在 $derived 里调 useId 会每次产生新 id)。
144
- const autoId = useId('cd-input-number');
145
- const inputId = $derived(id ?? autoId);
146
-
147
- // Controlled when `value` prop is explicitly provided (incl. `null`).
148
- const isControlled = $derived(value !== undefined);
149
- let inner = $state<number | null>(getInitialValue());
150
- // Numeric source of truth (controlled value wins).
151
- const current = $derived(isControlled ? (value ?? null) : inner);
152
-
153
- // While editing, `editingText` holds the raw string the user typed (kept loose
154
- // so intermediate forms like "-" / "1." survive). When `null`, the field shows
155
- // the formatted `current` — no $effect needed, so external value changes flow
156
- // straight through the derived display.
157
- let editingText = $state<string | null>(null);
158
- const text = $derived(editingText ?? formatDisplay(current));
159
-
160
- const effectiveShiftStep = $derived(shiftStep ?? step * 10);
161
-
162
- function getInitialValue(): number | null {
163
- return defaultValue ?? null;
164
- }
165
-
166
- const atMin = $derived(current !== null && current <= min);
167
- const atMax = $derived(current !== null && current >= max);
168
-
169
- // aria-valuetext:当存在 formatter / locale 使显示值不同于裸数字时,向屏幕阅读器
170
- // 播报格式化后的可读文本(如「1,234」「¥1,200」)。无格式化时省略,让 AT 直接读 valuenow。
171
- const ariaValueText = $derived.by<string | undefined>(() => {
172
- if (current === null) return undefined;
173
- if (!formatter && !locale) return undefined;
174
- const display = formatDisplay(current);
175
- if (display === '' || display === String(current)) return undefined;
176
- return display;
177
- });
178
-
179
- function formatDisplay(n: number | null): string {
180
- if (n === null || Number.isNaN(n)) return '';
181
- if (formatter) return formatter(n);
182
- // 未提供 formatter 时:仅当显式传入 locale 才走 Intl,否则保持现状 String(n)。
183
- if (locale) return formatWithLocale(n, locale);
184
- return String(n);
185
- }
186
-
187
- function parseText(t: string): number | null {
188
- const trimmed = t.trim();
189
- if (trimmed === '') return null;
190
- const n = parser ? parser(t) : Number(trimmed);
191
- return Number.isNaN(n) ? null : n;
192
- }
193
-
194
- function applyPrecision(n: number): number {
195
- return roundToPrecision(n, precision);
196
- }
197
-
198
- // 归一化:round → clamp/strict。strict 越界返回 null(表示拒绝,调用方回滚)。
199
- // 同时上报 boundaryHit。
200
- function normalize(n: number): number | null {
201
- const rounded = applyPrecision(n);
202
- const hit = boundaryHitOf(rounded, min, max);
203
- if (hit) onBoundaryHit?.({ boundary: hit, value: rounded });
204
- const clamped = clampWithMode(rounded, min, max, boundaryMode);
205
- // clamp 模式越界回弹:实际生效值与输入不同 → polite 播报生效值(strict 模式返回 null 拒绝,不播)。
206
- if (hit && clamped !== null && clamped !== rounded) {
207
- announcer.announce(loc().t('InputNumber.clampedAnnounce', { value: formatDisplay(clamped) }));
208
- }
209
- return clamped;
210
- }
211
-
212
- function commitValue(next: number | null) {
213
- // Controlled: never write the prop here; propagate only via onChange.
214
- // Uncontrolled: keep local state in sync. (Avoids the value->onChange->value loop.)
215
- if (!isControlled) inner = next;
216
- onChange?.(next);
217
- onNumberChange?.(next);
218
- }
219
-
220
- function clearValue() {
221
- commitValue(null);
222
- editingText = null;
223
- inputEl?.focus({ preventScroll: true });
224
- }
225
-
226
- const canClear = $derived(showClear && !disabled && !readonly && current !== null);
227
-
228
- function handleInput(e: Event & { currentTarget: HTMLInputElement }) {
229
- editingText = e.currentTarget.value;
230
- }
231
-
232
- function commitFromText() {
233
- const raw = editingText ?? formatDisplay(current);
234
- editingText = null;
235
- const parsed = parseText(raw);
236
- if (parsed === null) {
237
- if (current !== null) commitValue(null);
238
- return;
239
- }
240
- const normalized = normalize(parsed);
241
- // strict 越界:normalize 返回 null → 拒绝写入,回滚到 current 显示。
242
- // 受控值未变(不会触发重渲染回填 input),故命令式把 DOM 值还原为当前显示串。
243
- if (normalized === null) {
244
- restoreDisplay();
245
- return;
246
- }
247
- if (normalized !== current) commitValue(normalized);
248
- }
249
-
250
- function handleBlur(e: FocusEvent) {
251
- commitFromText();
252
- // commit 归一化后再上报失焦(spec:blur 时已完成 commit)。
253
- onBlur?.(e);
254
- }
255
-
256
- function stepBy(dir: 1 | -1, large: boolean, source: 'button' | 'keyboard' | 'wheel') {
257
- if (disabled || readonly) return;
258
- const delta = (large ? effectiveShiftStep : step) * dir;
259
- const base = current ?? (Number.isFinite(min) ? min : 0);
260
- const next = normalize(addNumberStep(base, delta));
261
- editingText = null;
262
- // strict 越界回滚:保持 current。
263
- if (next === null) return;
264
- if (next !== current) commitValue(next);
265
- // 步进动作完成上报(即便钳制后值未变也算一次步进尝试,但仅在落到有效值时触发)。
266
- onStep?.({ value: next, direction: dir === 1 ? 'up' : 'down', source });
267
- }
268
-
269
- // --- 长按连续增减:首延迟 400ms 后以 60ms 间隔重复,cleanup 清理(红线 #3)---
270
- let holdTimer: ReturnType<typeof setTimeout> | undefined;
271
- let holdInterval: ReturnType<typeof setInterval> | undefined;
272
-
273
- function stopHold() {
274
- if (holdTimer !== undefined) {
275
- clearTimeout(holdTimer);
276
- holdTimer = undefined;
277
- }
278
- if (holdInterval !== undefined) {
279
- clearInterval(holdInterval);
280
- holdInterval = undefined;
281
- }
282
- }
283
-
284
- function startHold(dir: 1 | -1, e: MouseEvent) {
285
- // 始终阻止 mousedown 失焦(现有行为),keepFocus 进一步确保聚焦保持。
286
- preventBlurSteal(e);
287
- if (keepFocus && inputEl) inputEl.focus({ preventScroll: true });
288
- if (disabled || readonly) return;
289
- stepBy(dir, false, 'button');
290
- holdTimer = setTimeout(() => {
291
- holdInterval = setInterval(() => stepBy(dir, false, 'button'), 60);
292
- }, 400);
293
- }
294
-
295
- // 组件卸载兜底清理定时器。
296
- $effect(() => stopHold);
297
-
298
- function handleKeydown(e: KeyboardEvent) {
299
- // 始终透传原生 keydown(即便 keyboard 关闭/禁用,便于使用方扩展,如 Enter 提交表单)。
300
- onKeydown?.(e);
301
- if (!keyboard || disabled || readonly) return;
302
- if (e.key === 'ArrowUp') {
303
- e.preventDefault();
304
- stepBy(1, e.shiftKey, 'keyboard');
305
- } else if (e.key === 'ArrowDown') {
306
- e.preventDefault();
307
- stepBy(-1, e.shiftKey, 'keyboard');
308
- } else if (e.key === 'PageUp') {
309
- e.preventDefault();
310
- stepBy(1, true, 'keyboard');
311
- } else if (e.key === 'PageDown') {
312
- e.preventDefault();
313
- stepBy(-1, true, 'keyboard');
314
- } else if (e.key === 'Enter') {
315
- commitFromText();
316
- }
317
- }
318
-
319
- function preventBlurSteal(e: MouseEvent) {
320
- // Keep input focus when clicking stepper buttons.
321
- e.preventDefault();
322
- }
323
-
324
- // --- 命令式监听:autofocus / selectOnFocus / mouseWheel + cleanup(红线 #3)---
325
- let inputEl: HTMLInputElement | undefined;
326
-
327
- // 受控值未变时(如 strict 越界拒绝),Svelte 不会重渲染 input.value,需命令式还原。
328
- function restoreDisplay() {
329
- if (inputEl) inputEl.value = formatDisplay(current);
330
- }
331
-
332
- function inputActions(node: HTMLInputElement) {
333
- inputEl = node;
334
- if (autofocus && !disabled) {
335
- // 推迟到下一帧,确保挂载后 DOM 已就绪、避免抢占 SSR hydration。
336
- requestAnimationFrame(() => node.focus());
337
- }
338
-
339
- function handleFocus(e: FocusEvent) {
340
- onFocus?.(e);
341
- // 推迟到下一帧:浏览器在 focus 后才放置默认光标,立即 select 会被覆盖。
342
- if (selectOnFocus) requestAnimationFrame(() => node.select());
343
- }
344
-
345
- // 滚轮步进:仅聚焦时响应,passive=false 以便 preventDefault 阻止页面滚动。
346
- function onWheel(e: WheelEvent) {
347
- if (!mouseWheel || disabled || readonly) return;
348
- if (document.activeElement !== node) return;
349
- e.preventDefault();
350
- stepBy(e.deltaY < 0 ? 1 : -1, e.shiftKey, 'wheel');
351
- }
352
-
353
- node.addEventListener('focus', handleFocus);
354
- node.addEventListener('wheel', onWheel, { passive: false });
355
-
356
- return {
357
- destroy() {
358
- node.removeEventListener('focus', handleFocus);
359
- node.removeEventListener('wheel', onWheel);
360
- if (inputEl === node) inputEl = undefined;
361
- },
362
- };
363
- }
364
-
365
- const cls = $derived(
366
- [
367
- 'cd-input-number',
368
- `cd-input-number--${size}`,
369
- `cd-input-number--${status}`,
370
- `cd-input-number--controls-${controlsPosition}`,
371
- innerButtons && 'cd-input-number--inner',
372
- prefix != null && 'cd-input-number--has-prefix',
373
- suffix != null && 'cd-input-number--has-suffix',
374
- disabled && 'cd-input-number--disabled',
375
- borderless && 'cd-input-number--borderless',
376
- ]
377
- .filter(Boolean)
378
- .join(' '),
379
- );
380
- </script>
381
-
382
- <div class={cls} aria-invalid={status === 'error' || undefined}>
383
- {#if prefix != null}
384
- <span class="cd-input-number__affix cd-input-number__prefix">
385
- {#if prefixSnippet}{@render prefixSnippet()}{:else}{prefix}{/if}
386
- </span>
387
- {/if}
388
-
389
- <input
390
- use:inputActions
391
- class="cd-input-number__native"
392
- type="text"
393
- inputmode="decimal"
394
- role="spinbutton"
395
- id={inputId}
396
- {name}
397
- {disabled}
398
- {readonly}
399
- {placeholder}
400
- value={text}
401
- aria-label={ariaLabel}
402
- aria-valuenow={current ?? undefined}
403
- aria-valuetext={ariaValueText}
404
- aria-valuemin={Number.isFinite(min) ? min : undefined}
405
- aria-valuemax={Number.isFinite(max) ? max : undefined}
406
- aria-invalid={status === 'error' || undefined}
407
- aria-disabled={disabled || undefined}
408
- aria-readonly={readonly || undefined}
409
- oninput={handleInput}
410
- onblur={handleBlur}
411
- onkeydown={handleKeydown}
412
- />
413
-
414
- {#if suffix != null}
415
- <span class="cd-input-number__affix cd-input-number__suffix">
416
- {#if suffixSnippet}{@render suffixSnippet()}{:else}{suffix}{/if}
417
- </span>
418
- {/if}
419
-
420
- {#if canClear}
421
- <button
422
- type="button"
423
- class="cd-input-number__clear"
424
- tabindex="-1"
425
- aria-label={loc().t('InputNumber.clear')}
426
- onmousedown={(e) => e.preventDefault()}
427
- onclick={clearValue}
428
- >
429
- {#if clearIcon}
430
- {@render clearIcon()}
431
- {:else}
432
- <svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true" focusable="false">
433
- <path
434
- fill="currentColor"
435
- d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1Zm2.5 9.1-1.4 1.4L8 9.4 6.5 11l-1.4-1.4L6.6 8 5.1 6.5 6.5 5.1 8 6.6 9.5 5.1l1.4 1.4L9.4 8l1.1 1.1Z"
436
- />
437
- </svg>
438
- {/if}
439
- </button>
440
- {/if}
441
-
442
- {#if controls}
443
- <span class="cd-input-number__actions">
444
- <button
445
- type="button"
446
- class="cd-input-number__action cd-input-number__increment"
447
- tabindex="-1"
448
- aria-label={loc().t('InputNumber.increase')}
449
- disabled={disabled || readonly || atMax}
450
- onmousedown={(e) => startHold(1, e)}
451
- onmouseup={stopHold}
452
- onmouseleave={stopHold}
453
- >
454
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
455
- <path fill="currentColor" d="M8 4 3 10h10L8 4Z" />
456
- </svg>
457
- </button>
458
- <button
459
- type="button"
460
- class="cd-input-number__action cd-input-number__decrement"
461
- tabindex="-1"
462
- aria-label={loc().t('InputNumber.decrease')}
463
- disabled={disabled || readonly || atMin}
464
- onmousedown={(e) => startHold(-1, e)}
465
- onmouseup={stopHold}
466
- onmouseleave={stopHold}
467
- >
468
- <svg viewBox="0 0 16 16" width="10" height="10" aria-hidden="true" focusable="false">
469
- <path fill="currentColor" d="M3 6h10L8 12 3 6Z" />
470
- </svg>
471
- </button>
472
- </span>
473
- {/if}
474
- </div>
475
-
476
- <style>
477
- .cd-input-number {
478
- display: inline-flex;
479
- align-items: stretch;
480
- inline-size: 100%;
481
- block-size: var(--cd-input-height-default);
482
- background: var(--cd-input-color-bg);
483
- color: var(--cd-input-color-text);
484
- border: 1px solid var(--cd-input-border);
485
- border-radius: var(--cd-input-radius);
486
- font-size: var(--cd-input-font-size);
487
- overflow: hidden;
488
- transition: border-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
489
- }
490
- .cd-input-number--small {
491
- block-size: var(--cd-input-height-small);
492
- font-size: var(--cd-font-size-1);
493
- }
494
- .cd-input-number--large {
495
- block-size: var(--cd-input-height-large);
496
- font-size: var(--cd-font-size-3);
497
- }
498
- .cd-input-number:focus-within {
499
- border-color: var(--cd-input-border-active);
500
- box-shadow: var(--cd-focus-ring);
501
- }
502
- .cd-input-number--warning {
503
- border-color: var(--cd-input-border-warning);
504
- }
505
- .cd-input-number--error {
506
- border-color: var(--cd-input-border-error);
507
- }
508
- .cd-input-number--disabled {
509
- background: var(--cd-color-fill-0);
510
- color: var(--cd-color-text-3);
511
- cursor: not-allowed;
512
- }
513
- .cd-input-number--borderless {
514
- border-color: transparent;
515
- background: transparent;
516
- box-shadow: none;
517
- }
518
- .cd-input-number--borderless:focus-within {
519
- border-color: transparent;
520
- box-shadow: none;
521
- }
522
- .cd-input-number__clear {
523
- display: inline-flex;
524
- align-items: center;
525
- justify-content: center;
526
- flex: 0 0 auto;
527
- padding: 0;
528
- padding-inline-end: var(--cd-spacing-1);
529
- border: none;
530
- background: transparent;
531
- color: var(--cd-color-text-2);
532
- cursor: pointer;
533
- border-radius: var(--cd-radius-1);
534
- }
535
- .cd-input-number__clear:hover {
536
- color: var(--cd-color-text-0);
537
- }
538
- .cd-input-number__clear:focus-visible {
539
- outline: none;
540
- box-shadow: var(--cd-focus-ring);
541
- }
542
- .cd-input-number__native {
543
- flex: 1 1 auto;
544
- inline-size: 100%;
545
- min-inline-size: 0;
546
- margin: 0;
547
- padding-inline: var(--cd-input-padding-x);
548
- border: none;
549
- background: transparent;
550
- color: inherit;
551
- font: inherit;
552
- outline: none;
553
- }
554
- /* 有前/后缀时,由 affix 承担该侧边距,避免双重留白。 */
555
- .cd-input-number--has-prefix .cd-input-number__native {
556
- padding-inline-start: var(--cd-spacing-1);
557
- }
558
- .cd-input-number--has-suffix .cd-input-number__native {
559
- padding-inline-end: var(--cd-spacing-1);
560
- }
561
- .cd-input-number__native::placeholder {
562
- color: var(--cd-input-color-placeholder);
563
- }
564
- .cd-input-number__affix {
565
- display: inline-flex;
566
- align-items: center;
567
- flex: 0 0 auto;
568
- color: var(--cd-color-text-2);
569
- white-space: nowrap;
570
- user-select: none;
571
- }
572
- .cd-input-number__prefix {
573
- padding-inline-start: var(--cd-input-padding-x);
574
- }
575
- .cd-input-number__suffix {
576
- padding-inline-end: var(--cd-input-padding-x);
577
- }
578
- .cd-input-number__native:disabled {
579
- cursor: not-allowed;
580
- }
581
- .cd-input-number__actions {
582
- display: flex;
583
- flex-direction: column;
584
- flex: 0 0 auto;
585
- inline-size: var(--cd-spacing-5);
586
- border-inline-start: 1px solid var(--cd-input-border);
587
- }
588
- .cd-input-number__action {
589
- display: inline-flex;
590
- align-items: center;
591
- justify-content: center;
592
- flex: 1 1 50%;
593
- min-block-size: 0;
594
- padding: 0;
595
- border: none;
596
- background: transparent;
597
- color: var(--cd-color-text-2);
598
- cursor: pointer;
599
- transition: background-color var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
600
- }
601
- .cd-input-number__increment {
602
- border-block-end: 1px solid var(--cd-input-border);
603
- }
604
- .cd-input-number__action:hover:not(:disabled) {
605
- color: var(--cd-color-primary);
606
- background: var(--cd-color-fill-1);
607
- }
608
- .cd-input-number__action:disabled {
609
- color: var(--cd-color-text-3);
610
- cursor: not-allowed;
611
- }
612
- /* --- controlsPosition="sides":减/输入/加 横向排布,按钮分居两侧 --- */
613
- .cd-input-number--controls-sides {
614
- position: relative;
615
- }
616
- .cd-input-number--controls-sides .cd-input-number__actions {
617
- flex-direction: row;
618
- inline-size: auto;
619
- border-inline-start: none;
620
- order: 2;
621
- }
622
- .cd-input-number--controls-sides .cd-input-number__decrement {
623
- order: 0;
624
- border-block-end: none;
625
- border-inline-end: 1px solid var(--cd-input-border);
626
- }
627
- .cd-input-number--controls-sides .cd-input-number__increment {
628
- order: 3;
629
- border-block-end: none;
630
- border-inline-start: 1px solid var(--cd-input-border);
631
- }
632
- .cd-input-number--controls-sides .cd-input-number__native {
633
- order: 1;
634
- text-align: center;
635
- }
636
- .cd-input-number--controls-sides .cd-input-number__action {
637
- inline-size: var(--cd-spacing-6, 28px);
638
- }
639
- /* sides 布局:前缀紧贴减号右、后缀紧贴加号左,包裹中央输入。 */
640
- .cd-input-number--controls-sides .cd-input-number__prefix {
641
- order: 1;
642
- }
643
- .cd-input-number--controls-sides .cd-input-number__suffix {
644
- order: 1;
645
- }
646
-
647
- /* --- innerButtons:按钮悬浮于右内侧,hover/focus 显形 --- */
648
- .cd-input-number--inner {
649
- position: relative;
650
- }
651
- .cd-input-number--inner .cd-input-number__actions {
652
- position: absolute;
653
- inset-block: 1px;
654
- inset-inline-end: 1px;
655
- border-inline-start: none;
656
- background: var(--cd-input-color-bg);
657
- opacity: 0;
658
- pointer-events: none;
659
- transition: opacity var(--cd-motion-duration-fast) var(--cd-motion-ease-standard);
660
- }
661
- .cd-input-number--inner:hover .cd-input-number__actions,
662
- .cd-input-number--inner:focus-within .cd-input-number__actions {
663
- opacity: 1;
664
- pointer-events: auto;
665
- }
666
-
667
- @media (prefers-reduced-motion: reduce) {
668
- .cd-input-number,
669
- .cd-input-number__action,
670
- .cd-input-number--inner .cd-input-number__actions {
671
- transition: none;
672
- }
673
- }
674
- </style>
@@ -1,15 +0,0 @@
1
- <!--
2
- 仅供 InputNumber.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
3
- InputNumber 焦点落在原生 <input role="spinbutton">:↑ 步进 +step、↓ -step、
4
- PageUp/PageDown 大步进,aria-valuenow 真实变化(钳到 min/max)。
5
- before 按钮验证 Tab 真实聚焦到 spinbutton。
6
- -->
7
- <script lang="ts">
8
- import { LocaleProvider } from '../locale-provider/index.js';
9
- import InputNumber from './InputNumber.svelte';
10
- </script>
11
-
12
- <LocaleProvider locale="en_US">
13
- <button type="button" data-testid="before">before</button>
14
- <InputNumber defaultValue={5} min={0} max={100} step={1} ariaLabel="Quantity" />
15
- </LocaleProvider>
@@ -1,2 +0,0 @@
1
- export { default as InputNumber } from './InputNumber.svelte';
2
- export { meta as inputNumberMeta } from './meta.js';