@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,243 +0,0 @@
1
- <!--
2
- Form — see specs/components/input/Form.spec.md
3
- Container that bridges the headless `createForm` (callback-subscribe) into Svelte
4
- runes and shares it via context. Token-driven, a11y-correct.
5
- -->
6
- <script lang="ts">
7
- import { untrack, type Snippet } from 'svelte';
8
- import {
9
- createForm,
10
- type FormValues,
11
- type FieldErrors,
12
- type MessageDescriptor,
13
- type ValidateTrigger,
14
- } from '@chenzy-design/core';
15
- import { interpolate } from '@chenzy-design/locale';
16
- import {
17
- setFormContext,
18
- type FormLayout,
19
- type FormLabelPosition,
20
- type FormSize,
21
- type FormLabelAlign,
22
- type GridCol,
23
- } from './context.js';
24
- import { useLocale } from '../locale-provider/index.js';
25
- import { getGlobalValidateMessages } from '../config-provider/index.js';
26
-
27
- interface Props {
28
- /** controlled whole-form values (reported back via onChange, never written to the prop) */
29
- value?: FormValues;
30
- initValues?: FormValues;
31
- layout?: FormLayout;
32
- /** 'top' | 'left' | 'inset'(inset:label 浮入控件,聚焦/有值时上浮变小) */
33
- labelPosition?: FormLabelPosition;
34
- labelWidth?: number | string;
35
- /** Label 文本对齐(spec §4 L60,默认 'left')。 */
36
- labelAlign?: FormLabelAlign;
37
- size?: FormSize;
38
- disabled?: boolean;
39
- requiredMark?: boolean;
40
- colon?: boolean;
41
- /** on failed submit, scroll to and focus the first errored field */
42
- scrollToError?: boolean;
43
- /** 全局默认校验时机(spec §4 L65,默认 ['blur','change']),字段可覆盖。 */
44
- validateTrigger?: ValidateTrigger | ValidateTrigger[];
45
- /** 错误/警告文案是否带状态图标(spec §4 L66,默认 true)。 */
46
- showValidateIcon?: boolean;
47
- /** 字段命中首条错误即停止该字段后续 rule(spec §4 L68,默认 false)。 */
48
- stopValidateWithError?: boolean;
49
- /** 是否拦截原生 submit 默认行为(spec §4 L69,默认 true)。 */
50
- preventDefault?: boolean;
51
- /** 收集值时是否保留空值字段键(spec §4 L70,默认 false)。 */
52
- allowEmpty?: boolean;
53
- /** scrollToError 别名(优先级低于 scrollToError)。 */
54
- autoScrollToError?: boolean;
55
- /** 额外说明文本位置(默认 'bottom',经 context 传给 FormField)。 */
56
- extraTextPosition?: 'middle' | 'bottom';
57
- onSubmit?: (r: { valid: boolean; values: FormValues; errors: FieldErrors }) => void;
58
- /** 任意字段值变化时触发(不同于 onChange 的纯值快照,此回调额外携带变更字段信息)。 */
59
- onValueChange?: (values: FormValues, changedValues: Record<string, unknown>) => void;
60
- /** 表单校验失败时独立回调(onSubmit 只在 valid 时调用时可用此做失败分支)。 */
61
- onSubmitFail?: (errors: FieldErrors, values: FormValues) => void;
62
- onChange?: (values: FormValues) => void;
63
- /** 控件布局列配置(Grid 布局时)。 */
64
- wrapperCol?: GridCol;
65
- /** 标签布局列配置(Grid 布局时)。 */
66
- labelCol?: GridCol;
67
- children?: Snippet;
68
- footer?: Snippet<[{ submitting: boolean }]>;
69
- }
70
-
71
- let {
72
- value,
73
- initValues = {},
74
- layout = 'vertical',
75
- labelPosition = 'top',
76
- labelWidth,
77
- labelAlign = 'left',
78
- size = 'default',
79
- disabled = false,
80
- requiredMark = true,
81
- colon = false,
82
- scrollToError = false,
83
- autoScrollToError = false,
84
- extraTextPosition = 'bottom',
85
- validateTrigger = ['blur', 'change'],
86
- showValidateIcon = true,
87
- stopValidateWithError = false,
88
- preventDefault = true,
89
- allowEmpty = false,
90
- onSubmit,
91
- onValueChange,
92
- onSubmitFail,
93
- onChange,
94
- wrapperCol,
95
- labelCol,
96
- children,
97
- footer,
98
- }: Props = $props();
99
-
100
- const loc = useLocale();
101
- // 全局校验文案覆盖(来自 ConfigProvider getValidateMessages);须在 init 期读 context。
102
- const globalValidateMessages = getGlobalValidateMessages();
103
-
104
- // 校验消息优先级:
105
- // 1) rule.message(descriptor.text)显式覆盖;
106
- // 2) ConfigProvider getValidateMessages() 提供的对应 `Form.*` 键模板(带插值);
107
- // 3) locale 内置 Form.* 模板。
108
- // 未配置全局覆盖时行为完全不变(向后兼容)。
109
- function resolveMessage(d: MessageDescriptor): string {
110
- if (d.text !== undefined) return d.text;
111
- const override = globalValidateMessages?.()[d.key];
112
- if (override !== undefined) return d.params ? interpolate(override, d.params) : override;
113
- return loc().t(d.key, d.params);
114
- }
115
-
116
- // initial values are a one-time snapshot by design; untrack makes the
117
- // non-reactive seed read explicit (later prop changes flow via the controlled
118
- // `value` effect / onChange, not by re-seeding the form).
119
- const seedValues: FormValues = untrack(() => value ?? initValues);
120
- // validateTrigger / stopValidateWithError / allowEmpty are construction-time
121
- // config of the headless form (read once, like initialValues). untrack keeps
122
- // the read non-reactive — the form instance is created exactly once.
123
- const form = createForm({
124
- initialValues: seedValues,
125
- resolveMessage,
126
- validateTrigger: untrack(() => validateTrigger),
127
- stopValidateWithError: untrack(() => stopValidateWithError),
128
- allowEmpty: untrack(() => allowEmpty),
129
- });
130
-
131
- // Bridge: callback-subscribe → runes. core returns a STABLE state object whose
132
- // sub-objects are replaced immutably; we take a fresh shallow snapshot on every
133
- // emit so the new reference triggers Svelte reactivity. The $effect ONLY writes
134
- // formState — it never reads state that children write on mount, so no loop.
135
- let formState = $state({ ...form.getState() });
136
- let lastValues = form.getState().values;
137
- // Subscribe synchronously at component init (NOT inside an $effect): child
138
- // Field registration effects run after the parent's setup but emit on the core
139
- // bus; subscribing here guarantees we capture those early emits (e.g. a
140
- // field-level `initValue` seeding the value). The subscriber only WRITES
141
- // `formState` from the stable core state — it never reads child-written render
142
- // state, so there is no effect loop. Cleanup unsubscribes on destroy.
143
- const unsub = form.subscribe((s) => {
144
- formState = { ...s };
145
- if (s.values !== lastValues) {
146
- const prev = lastValues;
147
- lastValues = s.values;
148
- onChange?.(s.values);
149
- if (onValueChange) {
150
- // Compute changedValues: fields whose reference differs from previous snapshot.
151
- const changed: Record<string, unknown> = {};
152
- for (const k of Object.keys(s.values)) {
153
- if (s.values[k] !== prev[k]) changed[k] = s.values[k];
154
- }
155
- onValueChange(s.values, changed);
156
- }
157
- }
158
- });
159
- $effect(() => unsub);
160
-
161
- // Controlled `value`: push into the form only when the prop reference changes.
162
- // We never write back to the prop (onChange is the only outward channel), so
163
- // this cannot form a value -> onChange -> value loop.
164
- $effect(() => {
165
- if (value !== undefined) form.setFieldsValue(value);
166
- });
167
-
168
- setFormContext({
169
- form,
170
- getFormState: () => formState,
171
- getLabelPosition: () => labelPosition,
172
- getLabelWidth: () => labelWidth,
173
- getLabelAlign: () => labelAlign,
174
- getSize: () => size,
175
- getDisabled: () => disabled,
176
- getRequiredMark: () => requiredMark,
177
- getColon: () => colon,
178
- getShowValidateIcon: () => showValidateIcon,
179
- getExtraTextPosition: () => extraTextPosition,
180
- getWrapperCol: () => wrapperCol,
181
- getLabelCol: () => labelCol,
182
- });
183
-
184
- // autoScrollToError 是 scrollToError 别名(scrollToError 优先)
185
- const effScrollToError = $derived(scrollToError || autoScrollToError || false);
186
-
187
- // ref to the <form> element — used imperatively (red line #3: DOM ops live in
188
- // the event handler, never in render) to locate the first errored field.
189
- let formEl: HTMLFormElement | undefined;
190
-
191
- function focusFirstError(errors: FieldErrors): void {
192
- if (!formEl) return;
193
- // walk fields in DOM order so we land on the *first* errored one on screen.
194
- const nodes = formEl.querySelectorAll<HTMLElement>('[data-field]');
195
- for (const node of nodes) {
196
- const name = node.dataset.field;
197
- if (name === undefined) continue;
198
- const err = errors[name];
199
- if (err === undefined || err === '') continue;
200
- node.scrollIntoView({ behavior: 'smooth', block: 'center' });
201
- const control = node.querySelector<HTMLElement>(
202
- 'input, textarea, select, [tabindex]:not([tabindex="-1"])',
203
- );
204
- control?.focus({ preventScroll: true });
205
- return;
206
- }
207
- }
208
-
209
- async function handleSubmit(e: SubmitEvent) {
210
- // spec §4 L69 / §6 L140: preventDefault is now prop-controlled (default true
211
- // = previous hardcoded behavior, backward compatible).
212
- if (preventDefault) e.preventDefault();
213
- const r = await form.submit();
214
- if (!r.valid && effScrollToError) focusFirstError(r.errors);
215
- if (!r.valid) onSubmitFail?.(r.errors, r.values);
216
- onSubmit?.(r);
217
- }
218
-
219
- const cls = $derived(
220
- `cd-form cd-form--${layout} cd-form--label-${labelPosition} cd-form--${size}`,
221
- );
222
- </script>
223
-
224
- <form bind:this={formEl} class={cls} onsubmit={handleSubmit}>
225
- {@render children?.()}
226
- {#if footer}
227
- <div class="cd-form__footer">
228
- {@render footer({ submitting: formState.submitting })}
229
- </div>
230
- {/if}
231
- </form>
232
-
233
- <style>
234
- .cd-form {
235
- display: flex;
236
- flex-direction: column;
237
- gap: var(--cd-form-item-gap, var(--cd-spacing-4));
238
- }
239
- .cd-form__footer {
240
- display: flex;
241
- gap: var(--cd-spacing-3);
242
- }
243
- </style>
@@ -1,31 +0,0 @@
1
- <!--
2
- Form a11y 测试夹具:在 Form 内组合 Form.Input(Field+Input)与一个 Form.Field
3
- 自定义控件,覆盖 label 关联(for/id)、aria-required、aria-describedby、
4
- validateStatus 强制 error → aria-invalid。仅供 Form.a11y.test.ts 使用,不导出。
5
- 通过 renderWithLocale 渲染(harness 会注入空 children 插槽,Form 接受 children 故无碍)。
6
- -->
7
- <script lang="ts">
8
- import { Form } from './index.js';
9
- import TextArea from '../textarea/TextArea.svelte';
10
- </script>
11
-
12
- <Form initValues={{ name: 'Ada', bio: '' }}>
13
- <!-- Form.Input:Field + Input,label 经 for/id 关联,required → aria-required -->
14
- <Form.Input field="name" label="Name" required placeholder="Your name" />
15
-
16
- <!-- Form.Field 自定义控件:validateStatus 强制 error → 控件 aria-invalid,
17
- extraText → aria-describedby 关联 -->
18
- <Form.Field field="bio" label="Bio" validateStatus="error" extraText="Some hint">
19
- {#snippet children({ value, onChange, onBlur, status, id, describedBy, required })}
20
- <TextArea
21
- value={value === undefined ? '' : String(value)}
22
- {id}
23
- status={status === 'error' ? 'error' : 'default'}
24
- ariaLabel="Bio"
25
- {...(describedBy !== undefined ? { ariaDescribedby: describedBy } : {})}
26
- onChange={(v) => onChange(v)}
27
- onBlur={() => onBlur()}
28
- />
29
- {/snippet}
30
- </Form.Field>
31
- </Form>
@@ -1,82 +0,0 @@
1
- <!--
2
- Form.Cascader — convenience wrapper: <Form.Field> + <Cascader> bound to a field.
3
- -->
4
- <script lang="ts">
5
- import type { Rule, ValidateTrigger } from '@chenzy-design/core';
6
- import type { ComponentProps } from 'svelte';
7
- import Field from './Field.svelte';
8
- import Cascader from '../cascader/Cascader.svelte';
9
-
10
- type CascaderProps = ComponentProps<typeof Cascader>;
11
-
12
- interface Props {
13
- field: string;
14
- label?: string;
15
- rules?: Rule[];
16
- initValue?: unknown;
17
- required?: boolean;
18
- validateStatus?: 'default' | 'warning' | 'error';
19
- extraText?: string;
20
- span?: number;
21
- transform?: (value: unknown, values: Record<string, unknown>) => unknown;
22
- dependencies?: string[];
23
- trigger?: ValidateTrigger | ValidateTrigger[];
24
- // Cascader-specific props
25
- treeData?: CascaderProps['treeData'];
26
- multiple?: CascaderProps['multiple'];
27
- placeholder?: CascaderProps['placeholder'];
28
- disabled?: boolean;
29
- size?: CascaderProps['size'];
30
- displayProp?: CascaderProps['displayProp'];
31
- }
32
-
33
- let {
34
- field,
35
- label,
36
- rules = [],
37
- initValue,
38
- required = false,
39
- validateStatus,
40
- extraText,
41
- span,
42
- transform,
43
- dependencies,
44
- trigger,
45
- treeData,
46
- multiple,
47
- placeholder,
48
- disabled,
49
- size,
50
- displayProp,
51
- }: Props = $props();
52
-
53
- const fieldProps = $derived<ComponentProps<typeof Field>>({
54
- field,
55
- rules,
56
- required,
57
- ...(label !== undefined ? { label } : {}),
58
- ...(initValue !== undefined ? { initValue } : {}),
59
- ...(validateStatus !== undefined ? { validateStatus } : {}),
60
- ...(extraText !== undefined ? { extraText } : {}),
61
- ...(span !== undefined ? { span } : {}),
62
- ...(transform !== undefined ? { transform } : {}),
63
- ...(dependencies !== undefined ? { dependencies } : {}),
64
- ...(trigger !== undefined ? { trigger } : {}),
65
- });
66
- </script>
67
-
68
- <Field {...fieldProps}>
69
- {#snippet children({ value, onChange, status, disabled: fieldDisabled })}
70
- <Cascader
71
- value={value as CascaderProps['value']}
72
- {treeData}
73
- {multiple}
74
- {placeholder}
75
- disabled={disabled ?? fieldDisabled}
76
- {size}
77
- {displayProp}
78
- status={status === 'error' ? 'error' : 'default'}
79
- onChange={(v) => onChange(v)}
80
- />
81
- {/snippet}
82
- </Field>
@@ -1,83 +0,0 @@
1
- <!--
2
- Form.Checkbox — convenience wrapper: <Form.Field> + <Checkbox> bound to a field.
3
- Uses valuePropName='checked' since Checkbox is a boolean control.
4
- -->
5
- <script lang="ts">
6
- import type { Rule, ValidateTrigger } from '@chenzy-design/core';
7
- import type { ComponentProps, Snippet } from 'svelte';
8
- import Field from './Field.svelte';
9
- import Checkbox from '../checkbox/Checkbox.svelte';
10
-
11
- type CheckboxProps = ComponentProps<typeof Checkbox>;
12
-
13
- interface Props {
14
- field: string;
15
- label?: string;
16
- rules?: Rule[];
17
- initValue?: unknown;
18
- required?: boolean;
19
- validateStatus?: 'default' | 'warning' | 'error';
20
- extraText?: string;
21
- span?: number;
22
- transform?: (value: unknown, values: Record<string, unknown>) => unknown;
23
- dependencies?: string[];
24
- trigger?: ValidateTrigger | ValidateTrigger[];
25
- // Checkbox-specific props
26
- disabled?: boolean;
27
- size?: CheckboxProps['size'];
28
- indeterminate?: CheckboxProps['indeterminate'];
29
- type?: CheckboxProps['type'];
30
- children?: Snippet;
31
- }
32
-
33
- let {
34
- field,
35
- label,
36
- rules = [],
37
- initValue,
38
- required = false,
39
- validateStatus,
40
- extraText,
41
- span,
42
- transform,
43
- dependencies,
44
- trigger,
45
- disabled,
46
- size,
47
- indeterminate,
48
- type,
49
- children,
50
- }: Props = $props();
51
-
52
- const fieldProps = $derived<ComponentProps<typeof Field>>({
53
- field,
54
- rules,
55
- required,
56
- valuePropName: 'checked',
57
- ...(label !== undefined ? { label } : {}),
58
- ...(initValue !== undefined ? { initValue } : {}),
59
- ...(validateStatus !== undefined ? { validateStatus } : {}),
60
- ...(extraText !== undefined ? { extraText } : {}),
61
- ...(span !== undefined ? { span } : {}),
62
- ...(transform !== undefined ? { transform } : {}),
63
- ...(dependencies !== undefined ? { dependencies } : {}),
64
- ...(trigger !== undefined ? { trigger } : {}),
65
- });
66
- </script>
67
-
68
- <Field {...fieldProps}>
69
- {#snippet children({ value, onChange, status, disabled: fieldDisabled, id, required: fieldRequired })}
70
- <Checkbox
71
- checked={typeof value === 'boolean' ? value : undefined}
72
- disabled={disabled ?? fieldDisabled}
73
- {size}
74
- {indeterminate}
75
- {type}
76
- {id}
77
- status={status === 'error' ? 'error' : 'default'}
78
- onChange={(checked) => onChange(checked)}
79
- >
80
- {@render children?.()}
81
- </Checkbox>
82
- {/snippet}
83
- </Field>
@@ -1,80 +0,0 @@
1
- <!--
2
- Form.DatePicker — convenience wrapper: <Form.Field> + <DatePicker> bound to a field.
3
- -->
4
- <script lang="ts">
5
- import type { Rule, ValidateTrigger } from '@chenzy-design/core';
6
- import type { ComponentProps } from 'svelte';
7
- import Field from './Field.svelte';
8
- import DatePicker from '../date-picker/DatePicker.svelte';
9
-
10
- type DatePickerProps = ComponentProps<typeof DatePicker>;
11
-
12
- interface Props {
13
- field: string;
14
- label?: string;
15
- rules?: Rule[];
16
- initValue?: unknown;
17
- required?: boolean;
18
- validateStatus?: 'default' | 'warning' | 'error';
19
- extraText?: string;
20
- span?: number;
21
- transform?: (value: unknown, values: Record<string, unknown>) => unknown;
22
- dependencies?: string[];
23
- trigger?: ValidateTrigger | ValidateTrigger[];
24
- // DatePicker-specific props
25
- placeholder?: DatePickerProps['placeholder'];
26
- disabled?: boolean;
27
- size?: DatePickerProps['size'];
28
- format?: DatePickerProps['format'];
29
- disabledDate?: DatePickerProps['disabledDate'];
30
- }
31
-
32
- let {
33
- field,
34
- label,
35
- rules = [],
36
- initValue,
37
- required = false,
38
- validateStatus,
39
- extraText,
40
- span,
41
- transform,
42
- dependencies,
43
- trigger,
44
- placeholder,
45
- disabled,
46
- size,
47
- format,
48
- disabledDate,
49
- }: Props = $props();
50
-
51
- const fieldProps = $derived<ComponentProps<typeof Field>>({
52
- field,
53
- rules,
54
- required,
55
- ...(label !== undefined ? { label } : {}),
56
- ...(initValue !== undefined ? { initValue } : {}),
57
- ...(validateStatus !== undefined ? { validateStatus } : {}),
58
- ...(extraText !== undefined ? { extraText } : {}),
59
- ...(span !== undefined ? { span } : {}),
60
- ...(transform !== undefined ? { transform } : {}),
61
- ...(dependencies !== undefined ? { dependencies } : {}),
62
- ...(trigger !== undefined ? { trigger } : {}),
63
- });
64
- </script>
65
-
66
- <Field {...fieldProps}>
67
- {#snippet children({ value, onChange, onBlur, status, disabled: fieldDisabled, id })}
68
- <DatePicker
69
- value={value instanceof Date || value === null || value === undefined ? (value as DatePickerProps['value']) : undefined}
70
- {placeholder}
71
- disabled={disabled ?? fieldDisabled}
72
- {size}
73
- {format}
74
- {disabledDate}
75
- status={status === 'error' ? 'error' : 'default'}
76
- onChange={(v) => onChange(v)}
77
- onBlur={() => onBlur()}
78
- />
79
- {/snippet}
80
- </Field>
@@ -1,44 +0,0 @@
1
- <!--
2
- Form.ErrorMessage — see specs/components/input/Form.spec.md
3
- 独立错误文字展示:带错误图标的错误文字,可独立放置于任意位置。
4
- -->
5
- <script lang="ts">
6
- interface Props {
7
- /** 错误文本(字符串或字符串数组)。 */
8
- error?: string | string[];
9
- className?: string;
10
- /** 是否显示错误图标(默认 true)。 */
11
- showIcon?: boolean;
12
- }
13
-
14
- let { error, className, showIcon = true }: Props = $props();
15
-
16
- const messages = $derived(
17
- error === undefined
18
- ? []
19
- : Array.isArray(error)
20
- ? error
21
- : [error],
22
- );
23
- </script>
24
-
25
- {#each messages as msg (msg)}
26
- <div class={['cd-form-field__error', className].filter(Boolean).join(' ')} role="alert">
27
- {#if showIcon}
28
- <svg
29
- class="cd-form-field__status-icon"
30
- viewBox="0 0 16 16"
31
- width="14"
32
- height="14"
33
- aria-hidden="true"
34
- focusable="false"
35
- >
36
- <path
37
- fill="currentColor"
38
- d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1Zm-.75 3.5h1.5v5h-1.5v-5ZM8 12.25a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"
39
- />
40
- </svg>
41
- {/if}
42
- <span>{msg}</span>
43
- </div>
44
- {/each}
@@ -1,95 +0,0 @@
1
- <!--
2
- FormInput — see specs/components/input/Form.spec.md
3
- Convenience wrapper: <Form.Field> + <Input> bound to a field.
4
- -->
5
- <script lang="ts">
6
- import type { Rule, ValidateTrigger } from '@chenzy-design/core';
7
- import type { ComponentProps } from 'svelte';
8
- import Field from './Field.svelte';
9
- import Input from '../input/Input.svelte';
10
-
11
- interface Props {
12
- field: string;
13
- label?: string;
14
- rules?: Rule[];
15
- /** field-level initial value (spec §4.2 L79). */
16
- initValue?: unknown;
17
- required?: boolean;
18
- /** externally forced validate status — controlled display (spec §4.2 L81). */
19
- validateStatus?: 'default' | 'warning' | 'error';
20
- extraText?: string;
21
- /** column span inside a grid parent / Form.Section (spec §4.2 L86). */
22
- span?: number;
23
- /** pure value transform at collect/submit time (spec §4.2 L88). */
24
- transform?: (value: unknown, values: Record<string, unknown>) => unknown;
25
- placeholder?: string;
26
- type?: 'text' | 'password';
27
- clearable?: boolean;
28
- maxLength?: number;
29
- dependencies?: string[];
30
- /** field-level override of the form's validateTrigger (spec §4 L84). */
31
- trigger?: ValidateTrigger | ValidateTrigger[];
32
- }
33
-
34
- let {
35
- field,
36
- label,
37
- rules = [],
38
- initValue,
39
- required = false,
40
- validateStatus,
41
- extraText,
42
- span,
43
- transform,
44
- placeholder,
45
- type = 'text',
46
- clearable = false,
47
- maxLength,
48
- dependencies,
49
- trigger,
50
- }: Props = $props();
51
-
52
- // Build props with conditional keys so we never pass an explicit `undefined`
53
- // to an optional prop (exactOptionalPropertyTypes).
54
- const fieldProps = $derived<ComponentProps<typeof Field>>({
55
- field,
56
- rules,
57
- required,
58
- ...(label !== undefined ? { label } : {}),
59
- ...(initValue !== undefined ? { initValue } : {}),
60
- ...(validateStatus !== undefined ? { validateStatus } : {}),
61
- ...(extraText !== undefined ? { extraText } : {}),
62
- ...(span !== undefined ? { span } : {}),
63
- ...(transform !== undefined ? { transform } : {}),
64
- ...(dependencies !== undefined ? { dependencies } : {}),
65
- ...(trigger !== undefined ? { trigger } : {}),
66
- });
67
- </script>
68
-
69
- <Field {...fieldProps}>
70
- {#snippet children({ value, onChange, onBlur, status, disabled, id, describedBy, required })}
71
- <!--
72
- `id` is wired to the native <input> so Field's visible <label for={id}>
73
- precisely targets the control (WAI-ARIA preferred association): clicking the
74
- label focuses the input and screen readers pair them by name. `ariaLabel`
75
- remains as a redundant accessible name (and the only one when no `label`).
76
- `describedBy` links the error/warning/extra text to the control.
77
- blur-time validation is still deferred until Input gains an `onBlur` hook.
78
- -->
79
- <Input
80
- value={value === undefined ? '' : String(value)}
81
- status={status === 'error' ? 'error' : 'default'}
82
- {disabled}
83
- {id}
84
- {type}
85
- {clearable}
86
- {...(placeholder !== undefined ? { placeholder } : {})}
87
- {...(maxLength !== undefined ? { maxLength } : {})}
88
- {...(label !== undefined ? { ariaLabel: label } : {})}
89
- {...(describedBy !== undefined ? { ariaDescribedby: describedBy } : {})}
90
- {...(required ? { ariaRequired: true } : {})}
91
- onChange={(v) => onChange(v)}
92
- onBlur={() => onBlur()}
93
- />
94
- {/snippet}
95
- </Field>