@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.1.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 (1109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -2
  3. package/dist/base/Badge.d.ts +28 -0
  4. package/dist/base/Badge.js +72 -0
  5. package/dist/base/Badge.js.map +1 -0
  6. package/dist/base/Blockquote.d.ts +13 -0
  7. package/dist/base/Blockquote.js +26 -0
  8. package/dist/base/Blockquote.js.map +1 -0
  9. package/dist/base/Button.d.ts +18 -0
  10. package/dist/base/Button.js +86 -0
  11. package/dist/base/Button.js.map +1 -0
  12. package/dist/base/ButtonBase.d.ts +21 -0
  13. package/dist/base/ButtonBase.js +51 -0
  14. package/dist/base/ButtonBase.js.map +1 -0
  15. package/dist/base/ButtonGroup.d.ts +24 -0
  16. package/dist/base/ButtonGroup.js +52 -0
  17. package/dist/base/ButtonGroup.js.map +1 -0
  18. package/dist/base/CloseButton.d.ts +15 -0
  19. package/dist/base/CloseButton.js +38 -0
  20. package/dist/base/CloseButton.js.map +1 -0
  21. package/dist/base/Code.d.ts +13 -0
  22. package/dist/base/Code.js +27 -0
  23. package/dist/base/Code.js.map +1 -0
  24. package/dist/base/CodeBlock.d.ts +89 -0
  25. package/dist/base/CodeBlock.js +265 -0
  26. package/dist/base/CodeBlock.js.map +1 -0
  27. package/dist/base/CopyButton.d.ts +40 -0
  28. package/dist/base/CopyButton.js +113 -0
  29. package/dist/base/CopyButton.js.map +1 -0
  30. package/dist/base/Heading.d.ts +49 -0
  31. package/dist/base/Heading.js +122 -0
  32. package/dist/base/Heading.js.map +1 -0
  33. package/dist/base/Icon.d.ts +48 -0
  34. package/dist/base/Icon.js +110 -0
  35. package/dist/base/Icon.js.map +1 -0
  36. package/dist/base/IconButton.d.ts +34 -0
  37. package/dist/base/IconButton.js +81 -0
  38. package/dist/base/IconButton.js.map +1 -0
  39. package/dist/base/IconLinkButton.d.ts +34 -0
  40. package/dist/base/IconLinkButton.js +81 -0
  41. package/dist/base/IconLinkButton.js.map +1 -0
  42. package/dist/base/Indicator.d.ts +126 -0
  43. package/dist/base/Indicator.js +158 -0
  44. package/dist/base/Indicator.js.map +1 -0
  45. package/dist/base/Kbd.d.ts +13 -0
  46. package/dist/base/Kbd.js +34 -0
  47. package/dist/base/Kbd.js.map +1 -0
  48. package/dist/base/Link.d.ts +61 -0
  49. package/dist/base/Link.js +114 -0
  50. package/dist/base/Link.js.map +1 -0
  51. package/dist/base/LinkButton.d.ts +18 -0
  52. package/dist/base/LinkButton.js +109 -0
  53. package/dist/base/LinkButton.js.map +1 -0
  54. package/dist/base/List.d.ts +61 -0
  55. package/dist/base/List.js +116 -0
  56. package/dist/base/List.js.map +1 -0
  57. package/dist/base/Mark.d.ts +13 -0
  58. package/dist/base/Mark.js +23 -0
  59. package/dist/base/Mark.js.map +1 -0
  60. package/dist/base/Spinner.d.ts +20 -0
  61. package/dist/base/Spinner.js +59 -0
  62. package/dist/base/Spinner.js.map +1 -0
  63. package/dist/base/StatusDot.d.ts +48 -0
  64. package/dist/base/StatusDot.js +62 -0
  65. package/dist/base/StatusDot.js.map +1 -0
  66. package/dist/base/Tag.d.ts +29 -0
  67. package/dist/base/Tag.js +92 -0
  68. package/dist/base/Tag.js.map +1 -0
  69. package/dist/base/Text.d.ts +57 -0
  70. package/dist/base/Text.js +74 -0
  71. package/dist/base/Text.js.map +1 -0
  72. package/dist/base/VisuallyHidden.d.ts +13 -0
  73. package/dist/base/VisuallyHidden.js +28 -0
  74. package/dist/base/VisuallyHidden.js.map +1 -0
  75. package/dist/base/badge-styles.d.ts +57 -0
  76. package/dist/base/badge-styles.js +329 -0
  77. package/dist/base/badge-styles.js.map +1 -0
  78. package/dist/base/button-core.d.ts +191 -0
  79. package/dist/base/button-core.js +660 -0
  80. package/dist/base/button-core.js.map +1 -0
  81. package/dist/charts/AreaChart.d.ts +18 -0
  82. package/dist/charts/AreaChart.js +90 -0
  83. package/dist/charts/AreaChart.js.map +1 -0
  84. package/dist/charts/BarChart.d.ts +19 -0
  85. package/dist/charts/BarChart.js +88 -0
  86. package/dist/charts/BarChart.js.map +1 -0
  87. package/dist/charts/ChordChart.d.ts +48 -0
  88. package/dist/charts/ChordChart.js +149 -0
  89. package/dist/charts/ChordChart.js.map +1 -0
  90. package/dist/charts/ComboChart.d.ts +30 -0
  91. package/dist/charts/ComboChart.js +157 -0
  92. package/dist/charts/ComboChart.js.map +1 -0
  93. package/dist/charts/DonutChart.d.ts +65 -0
  94. package/dist/charts/DonutChart.js +162 -0
  95. package/dist/charts/DonutChart.js.map +1 -0
  96. package/dist/charts/FunnelChart.d.ts +69 -0
  97. package/dist/charts/FunnelChart.js +181 -0
  98. package/dist/charts/FunnelChart.js.map +1 -0
  99. package/dist/charts/GraphChart.d.ts +135 -0
  100. package/dist/charts/GraphChart.js +274 -0
  101. package/dist/charts/GraphChart.js.map +1 -0
  102. package/dist/charts/LineChart.d.ts +50 -0
  103. package/dist/charts/LineChart.js +94 -0
  104. package/dist/charts/LineChart.js.map +1 -0
  105. package/dist/charts/MapChart.d.ts +167 -0
  106. package/dist/charts/MapChart.js +627 -0
  107. package/dist/charts/MapChart.js.map +1 -0
  108. package/dist/charts/RadarChart.d.ts +60 -0
  109. package/dist/charts/RadarChart.js +224 -0
  110. package/dist/charts/RadarChart.js.map +1 -0
  111. package/dist/charts/SankeyChart.d.ts +57 -0
  112. package/dist/charts/SankeyChart.js +150 -0
  113. package/dist/charts/SankeyChart.js.map +1 -0
  114. package/dist/charts/ScatterChart.d.ts +18 -0
  115. package/dist/charts/ScatterChart.js +82 -0
  116. package/dist/charts/ScatterChart.js.map +1 -0
  117. package/dist/charts/TimelineChart.d.ts +71 -0
  118. package/dist/charts/TimelineChart.js +267 -0
  119. package/dist/charts/TimelineChart.js.map +1 -0
  120. package/dist/charts/TreemapChart.d.ts +40 -0
  121. package/dist/charts/TreemapChart.js +155 -0
  122. package/dist/charts/TreemapChart.js.map +1 -0
  123. package/dist/charts/WaterfallChart.d.ts +61 -0
  124. package/dist/charts/WaterfallChart.js +167 -0
  125. package/dist/charts/WaterfallChart.js.map +1 -0
  126. package/dist/charts/XYChart.d.ts +206 -0
  127. package/dist/charts/XYChart.js +520 -0
  128. package/dist/charts/XYChart.js.map +1 -0
  129. package/dist/charts/axis-ticks.d.ts +23 -0
  130. package/dist/charts/axis-ticks.js +59 -0
  131. package/dist/charts/axis-ticks.js.map +1 -0
  132. package/dist/charts/export.d.ts +17 -0
  133. package/dist/charts/export.js +65 -0
  134. package/dist/charts/export.js.map +1 -0
  135. package/dist/charts/flow.d.ts +53 -0
  136. package/dist/charts/flow.js +29 -0
  137. package/dist/charts/flow.js.map +1 -0
  138. package/dist/charts/frame.d.ts +147 -0
  139. package/dist/charts/frame.js +358 -0
  140. package/dist/charts/frame.js.map +1 -0
  141. package/dist/charts/index.d.ts +30 -0
  142. package/dist/charts/index.js +24 -0
  143. package/dist/charts/label-layout.d.ts +59 -0
  144. package/dist/charts/label-layout.js +64 -0
  145. package/dist/charts/label-layout.js.map +1 -0
  146. package/dist/charts/series.d.ts +36 -0
  147. package/dist/charts/series.js +60 -0
  148. package/dist/charts/series.js.map +1 -0
  149. package/dist/charts/single.d.ts +41 -0
  150. package/dist/charts/single.js +65 -0
  151. package/dist/charts/single.js.map +1 -0
  152. package/dist/config/Provider.d.ts +52 -0
  153. package/dist/config/Provider.js +111 -0
  154. package/dist/config/Provider.js.map +1 -0
  155. package/dist/config/context.d.ts +90 -0
  156. package/dist/config/context.js +58 -0
  157. package/dist/config/context.js.map +1 -0
  158. package/dist/config/createUi.d.ts +52 -0
  159. package/dist/config/createUi.js +96 -0
  160. package/dist/config/createUi.js.map +1 -0
  161. package/dist/config/defaults.d.ts +71 -0
  162. package/dist/config/defaults.js +45 -0
  163. package/dist/config/defaults.js.map +1 -0
  164. package/dist/config/lang/en-US.d.ts +3 -0
  165. package/dist/config/lang/en-US.js +386 -0
  166. package/dist/config/lang/en-US.js.map +1 -0
  167. package/dist/config/lang/format.d.ts +50 -0
  168. package/dist/config/lang/format.js +113 -0
  169. package/dist/config/lang/format.js.map +1 -0
  170. package/dist/config/lang/lang.d.ts +653 -0
  171. package/dist/config/lang/lang.js +22 -0
  172. package/dist/config/lang/lang.js.map +1 -0
  173. package/dist/config/lang/messages.d.ts +12 -0
  174. package/dist/config/lang/messages.js +36 -0
  175. package/dist/config/lang/messages.js.map +1 -0
  176. package/dist/config/lang/zh-CN.d.ts +3 -0
  177. package/dist/config/lang/zh-CN.js +386 -0
  178. package/dist/config/lang/zh-CN.js.map +1 -0
  179. package/dist/config/pinyin.d.ts +3 -0
  180. package/dist/config/pinyin.js +26 -0
  181. package/dist/config/pinyin.js.map +1 -0
  182. package/dist/config/query-state.d.ts +61 -0
  183. package/dist/config/query-state.js +113 -0
  184. package/dist/config/query-state.js.map +1 -0
  185. package/dist/config/shiki.d.ts +13 -0
  186. package/dist/config/shiki.js +97 -0
  187. package/dist/config/shiki.js.map +1 -0
  188. package/dist/config/styles.d.ts +108 -0
  189. package/dist/config/styles.js +59 -0
  190. package/dist/config/styles.js.map +1 -0
  191. package/dist/config/theme/boot.d.ts +97 -0
  192. package/dist/config/theme/boot.js +90 -0
  193. package/dist/config/theme/boot.js.map +1 -0
  194. package/dist/config/theme/builtin.d.ts +21 -0
  195. package/dist/config/theme/builtin.js +58 -0
  196. package/dist/config/theme/builtin.js.map +1 -0
  197. package/dist/config/theme/coffee.d.ts +84 -0
  198. package/dist/config/theme/coffee.js +102 -0
  199. package/dist/config/theme/coffee.js.map +1 -0
  200. package/dist/config/theme/cyberpunk.d.ts +110 -0
  201. package/dist/config/theme/cyberpunk.js +125 -0
  202. package/dist/config/theme/cyberpunk.js.map +1 -0
  203. package/dist/config/theme/dark.d.ts +90 -0
  204. package/dist/config/theme/dark.js +106 -0
  205. package/dist/config/theme/dark.js.map +1 -0
  206. package/dist/config/theme/festive.d.ts +93 -0
  207. package/dist/config/theme/festive.js +110 -0
  208. package/dist/config/theme/festive.js.map +1 -0
  209. package/dist/config/theme/forest.d.ts +93 -0
  210. package/dist/config/theme/forest.js +109 -0
  211. package/dist/config/theme/forest.js.map +1 -0
  212. package/dist/config/theme/high-contrast.d.ts +103 -0
  213. package/dist/config/theme/high-contrast.js +119 -0
  214. package/dist/config/theme/high-contrast.js.map +1 -0
  215. package/dist/config/theme/lemon.d.ts +103 -0
  216. package/dist/config/theme/lemon.js +119 -0
  217. package/dist/config/theme/lemon.js.map +1 -0
  218. package/dist/config/theme/light.d.ts +107 -0
  219. package/dist/config/theme/light.js +122 -0
  220. package/dist/config/theme/light.js.map +1 -0
  221. package/dist/config/theme/midnight.d.ts +86 -0
  222. package/dist/config/theme/midnight.js +103 -0
  223. package/dist/config/theme/midnight.js.map +1 -0
  224. package/dist/config/theme/ocean.d.ts +103 -0
  225. package/dist/config/theme/ocean.js +119 -0
  226. package/dist/config/theme/ocean.js.map +1 -0
  227. package/dist/config/theme/paper.d.ts +101 -0
  228. package/dist/config/theme/paper.js +117 -0
  229. package/dist/config/theme/paper.js.map +1 -0
  230. package/dist/config/theme/preference.d.ts +34 -0
  231. package/dist/config/theme/preference.js +67 -0
  232. package/dist/config/theme/preference.js.map +1 -0
  233. package/dist/config/theme/sakura.d.ts +103 -0
  234. package/dist/config/theme/sakura.js +119 -0
  235. package/dist/config/theme/sakura.js.map +1 -0
  236. package/dist/config/theme/theme.d.ts +59 -0
  237. package/dist/config/theme/theme.js +68 -0
  238. package/dist/config/theme/theme.js.map +1 -0
  239. package/dist/config/theme/token-names.d.ts +1897 -0
  240. package/dist/config/theme/tokens.d.ts +833 -0
  241. package/dist/config/theme/tokens.js +480 -0
  242. package/dist/config/theme/tokens.js.map +1 -0
  243. package/dist/config/vue-router.d.ts +67 -0
  244. package/dist/config/vue-router.js +143 -0
  245. package/dist/config/vue-router.js.map +1 -0
  246. package/dist/date/Calendar.d.ts +36 -0
  247. package/dist/date/Calendar.js +83 -0
  248. package/dist/date/Calendar.js.map +1 -0
  249. package/dist/date/CalendarBoard.d.ts +79 -0
  250. package/dist/date/CalendarBoard.js +403 -0
  251. package/dist/date/CalendarBoard.js.map +1 -0
  252. package/dist/date/CalendarView.d.ts +86 -0
  253. package/dist/date/CalendarView.js +427 -0
  254. package/dist/date/CalendarView.js.map +1 -0
  255. package/dist/date/Countdown.d.ts +45 -0
  256. package/dist/date/Countdown.js +75 -0
  257. package/dist/date/Countdown.js.map +1 -0
  258. package/dist/date/DateField.d.ts +34 -0
  259. package/dist/date/DateField.js +124 -0
  260. package/dist/date/DateField.js.map +1 -0
  261. package/dist/date/DatePicker.d.ts +41 -0
  262. package/dist/date/DatePicker.js +272 -0
  263. package/dist/date/DatePicker.js.map +1 -0
  264. package/dist/date/DateRangePicker.d.ts +71 -0
  265. package/dist/date/DateRangePicker.js +411 -0
  266. package/dist/date/DateRangePicker.js.map +1 -0
  267. package/dist/date/DateSegmentGroup.d.ts +38 -0
  268. package/dist/date/DateSegmentGroup.js +176 -0
  269. package/dist/date/DateSegmentGroup.js.map +1 -0
  270. package/dist/date/DateTime.d.ts +21 -0
  271. package/dist/date/DateTime.js +39 -0
  272. package/dist/date/DateTime.js.map +1 -0
  273. package/dist/date/QuarterCalendar.d.ts +22 -0
  274. package/dist/date/QuarterCalendar.js +231 -0
  275. package/dist/date/QuarterCalendar.js.map +1 -0
  276. package/dist/date/RangeCalendar.d.ts +24 -0
  277. package/dist/date/RangeCalendar.js +89 -0
  278. package/dist/date/RangeCalendar.js.map +1 -0
  279. package/dist/date/RelativeTime.d.ts +16 -0
  280. package/dist/date/RelativeTime.js +61 -0
  281. package/dist/date/RelativeTime.js.map +1 -0
  282. package/dist/date/SegmentedField.d.ts +60 -0
  283. package/dist/date/SegmentedField.js +175 -0
  284. package/dist/date/SegmentedField.js.map +1 -0
  285. package/dist/date/TimeField.d.ts +36 -0
  286. package/dist/date/TimeField.js +56 -0
  287. package/dist/date/TimeField.js.map +1 -0
  288. package/dist/date/TimePicker.d.ts +25 -0
  289. package/dist/date/TimePicker.js +206 -0
  290. package/dist/date/TimePicker.js.map +1 -0
  291. package/dist/date/calendar-state.d.ts +119 -0
  292. package/dist/date/calendar-state.js +267 -0
  293. package/dist/date/calendar-state.js.map +1 -0
  294. package/dist/date/clock.d.ts +11 -0
  295. package/dist/date/clock.js +37 -0
  296. package/dist/date/clock.js.map +1 -0
  297. package/dist/date/date-locale.d.ts +67 -0
  298. package/dist/date/date-locale.js +89 -0
  299. package/dist/date/date-locale.js.map +1 -0
  300. package/dist/date/date-segments.d.ts +132 -0
  301. package/dist/date/date-segments.js +410 -0
  302. package/dist/date/date-segments.js.map +1 -0
  303. package/dist/date/picker-popover.d.ts +88 -0
  304. package/dist/date/picker-popover.js +126 -0
  305. package/dist/date/picker-popover.js.map +1 -0
  306. package/dist/diagram/Diagram.d.ts +223 -0
  307. package/dist/diagram/Diagram.js +1121 -0
  308. package/dist/diagram/Diagram.js.map +1 -0
  309. package/dist/diagram/DiagramControls.d.ts +35 -0
  310. package/dist/diagram/DiagramControls.js +114 -0
  311. package/dist/diagram/DiagramControls.js.map +1 -0
  312. package/dist/diagram/DiagramLanes.d.ts +49 -0
  313. package/dist/diagram/DiagramLanes.js +92 -0
  314. package/dist/diagram/DiagramLanes.js.map +1 -0
  315. package/dist/diagram/DiagramMinimap.d.ts +39 -0
  316. package/dist/diagram/DiagramMinimap.js +133 -0
  317. package/dist/diagram/DiagramMinimap.js.map +1 -0
  318. package/dist/diagram/DiagramNode.d.ts +65 -0
  319. package/dist/diagram/DiagramNode.js +142 -0
  320. package/dist/diagram/DiagramNode.js.map +1 -0
  321. package/dist/diagram/controller.d.ts +68 -0
  322. package/dist/diagram/controller.js +117 -0
  323. package/dist/diagram/controller.js.map +1 -0
  324. package/dist/diagram/export.d.ts +14 -0
  325. package/dist/diagram/export.js +115 -0
  326. package/dist/diagram/export.js.map +1 -0
  327. package/dist/diagram/geometry.d.ts +65 -0
  328. package/dist/diagram/geometry.js +219 -0
  329. package/dist/diagram/geometry.js.map +1 -0
  330. package/dist/diagram/index.d.ts +19 -0
  331. package/dist/diagram/index.js +11 -0
  332. package/dist/diagram/messages.d.ts +28 -0
  333. package/dist/diagram/messages.js +30 -0
  334. package/dist/diagram/messages.js.map +1 -0
  335. package/dist/diagram/route.d.ts +81 -0
  336. package/dist/diagram/route.js +327 -0
  337. package/dist/diagram/route.js.map +1 -0
  338. package/dist/display/Accordion.d.ts +71 -0
  339. package/dist/display/Accordion.js +219 -0
  340. package/dist/display/Accordion.js.map +1 -0
  341. package/dist/display/AnimatedNumber.d.ts +44 -0
  342. package/dist/display/AnimatedNumber.js +97 -0
  343. package/dist/display/AnimatedNumber.js.map +1 -0
  344. package/dist/display/Avatar.d.ts +74 -0
  345. package/dist/display/Avatar.js +158 -0
  346. package/dist/display/Avatar.js.map +1 -0
  347. package/dist/display/AvatarGroup.d.ts +29 -0
  348. package/dist/display/AvatarGroup.js +67 -0
  349. package/dist/display/AvatarGroup.js.map +1 -0
  350. package/dist/display/Card.d.ts +219 -0
  351. package/dist/display/Card.js +319 -0
  352. package/dist/display/Card.js.map +1 -0
  353. package/dist/display/Checklist.d.ts +93 -0
  354. package/dist/display/Checklist.js +260 -0
  355. package/dist/display/Checklist.js.map +1 -0
  356. package/dist/display/Collapse.d.ts +24 -0
  357. package/dist/display/Collapse.js +65 -0
  358. package/dist/display/Collapse.js.map +1 -0
  359. package/dist/display/Collapsible.d.ts +12 -0
  360. package/dist/display/Collapsible.js +41 -0
  361. package/dist/display/Collapsible.js.map +1 -0
  362. package/dist/display/Descriptions.d.ts +88 -0
  363. package/dist/display/Descriptions.js +185 -0
  364. package/dist/display/Descriptions.js.map +1 -0
  365. package/dist/display/Ellipsis.d.ts +29 -0
  366. package/dist/display/Ellipsis.js +111 -0
  367. package/dist/display/Ellipsis.js.map +1 -0
  368. package/dist/display/FieldCompare.d.ts +58 -0
  369. package/dist/display/FieldCompare.js +205 -0
  370. package/dist/display/FieldCompare.js.map +1 -0
  371. package/dist/display/Gauge.d.ts +60 -0
  372. package/dist/display/Gauge.js +215 -0
  373. package/dist/display/Gauge.js.map +1 -0
  374. package/dist/display/Image.d.ts +87 -0
  375. package/dist/display/Image.js +212 -0
  376. package/dist/display/Image.js.map +1 -0
  377. package/dist/display/ItemList.d.ts +69 -0
  378. package/dist/display/ItemList.js +147 -0
  379. package/dist/display/ItemList.js.map +1 -0
  380. package/dist/display/Marquee.d.ts +59 -0
  381. package/dist/display/Marquee.js +155 -0
  382. package/dist/display/Marquee.js.map +1 -0
  383. package/dist/display/ProportionBar.d.ts +55 -0
  384. package/dist/display/ProportionBar.js +99 -0
  385. package/dist/display/ProportionBar.js.map +1 -0
  386. package/dist/display/Sortable.d.ts +43 -0
  387. package/dist/display/Sortable.js +163 -0
  388. package/dist/display/Sortable.js.map +1 -0
  389. package/dist/display/Sparkline.d.ts +48 -0
  390. package/dist/display/Sparkline.js +130 -0
  391. package/dist/display/Sparkline.js.map +1 -0
  392. package/dist/display/Stat.d.ts +105 -0
  393. package/dist/display/Stat.js +268 -0
  394. package/dist/display/Stat.js.map +1 -0
  395. package/dist/display/Timeline.d.ts +106 -0
  396. package/dist/display/Timeline.js +257 -0
  397. package/dist/display/Timeline.js.map +1 -0
  398. package/dist/display/Tree.d.ts +132 -0
  399. package/dist/display/Tree.js +645 -0
  400. package/dist/display/Tree.js.map +1 -0
  401. package/dist/display/VirtualList.d.ts +80 -0
  402. package/dist/display/VirtualList.js +166 -0
  403. package/dist/display/VirtualList.js.map +1 -0
  404. package/dist/display/Watermark.d.ts +39 -0
  405. package/dist/display/Watermark.js +130 -0
  406. package/dist/display/Watermark.js.map +1 -0
  407. package/dist/docs-kit/CodeGroup.d.ts +29 -0
  408. package/dist/docs-kit/CodeGroup.js +81 -0
  409. package/dist/docs-kit/CodeGroup.js.map +1 -0
  410. package/dist/docs-kit/CodePreview.d.ts +60 -0
  411. package/dist/docs-kit/CodePreview.js +183 -0
  412. package/dist/docs-kit/CodePreview.js.map +1 -0
  413. package/dist/docs-kit/ColorSwatch.d.ts +28 -0
  414. package/dist/docs-kit/ColorSwatch.js +85 -0
  415. package/dist/docs-kit/ColorSwatch.js.map +1 -0
  416. package/dist/docs-kit/PropsTable.d.ts +73 -0
  417. package/dist/docs-kit/PropsTable.js +122 -0
  418. package/dist/docs-kit/PropsTable.js.map +1 -0
  419. package/dist/docs-kit/index.d.ts +13 -0
  420. package/dist/docs-kit/index.js +6 -0
  421. package/dist/docs-kit/messages.d.ts +25 -0
  422. package/dist/docs-kit/messages.js +30 -0
  423. package/dist/docs-kit/messages.js.map +1 -0
  424. package/dist/feedback/Alert.d.ts +83 -0
  425. package/dist/feedback/Alert.js +179 -0
  426. package/dist/feedback/Alert.js.map +1 -0
  427. package/dist/feedback/Banner.d.ts +60 -0
  428. package/dist/feedback/Banner.js +122 -0
  429. package/dist/feedback/Banner.js.map +1 -0
  430. package/dist/feedback/Empty.d.ts +38 -0
  431. package/dist/feedback/Empty.js +114 -0
  432. package/dist/feedback/Empty.js.map +1 -0
  433. package/dist/feedback/LoadingBar.d.ts +45 -0
  434. package/dist/feedback/LoadingBar.js +124 -0
  435. package/dist/feedback/LoadingBar.js.map +1 -0
  436. package/dist/feedback/LoadingOverlay.d.ts +29 -0
  437. package/dist/feedback/LoadingOverlay.js +70 -0
  438. package/dist/feedback/LoadingOverlay.js.map +1 -0
  439. package/dist/feedback/Progress.d.ts +215 -0
  440. package/dist/feedback/Progress.js +437 -0
  441. package/dist/feedback/Progress.js.map +1 -0
  442. package/dist/feedback/Result.d.ts +69 -0
  443. package/dist/feedback/Result.js +165 -0
  444. package/dist/feedback/Result.js.map +1 -0
  445. package/dist/feedback/Skeleton.d.ts +50 -0
  446. package/dist/feedback/Skeleton.js +100 -0
  447. package/dist/feedback/Skeleton.js.map +1 -0
  448. package/dist/feedback/SkeletonText.d.ts +25 -0
  449. package/dist/feedback/SkeletonText.js +40 -0
  450. package/dist/feedback/SkeletonText.js.map +1 -0
  451. package/dist/feedback/Toast.d.ts +204 -0
  452. package/dist/feedback/Toast.js +572 -0
  453. package/dist/feedback/Toast.js.map +1 -0
  454. package/dist/form/Field.d.ts +158 -0
  455. package/dist/form/Field.js +327 -0
  456. package/dist/form/Field.js.map +1 -0
  457. package/dist/form/Form.d.ts +14 -0
  458. package/dist/form/Form.js +66 -0
  459. package/dist/form/Form.js.map +1 -0
  460. package/dist/form/FormErrorSummary.d.ts +23 -0
  461. package/dist/form/FormErrorSummary.js +102 -0
  462. package/dist/form/FormErrorSummary.js.map +1 -0
  463. package/dist/form/FormSection.d.ts +66 -0
  464. package/dist/form/FormSection.js +227 -0
  465. package/dist/form/FormSection.js.map +1 -0
  466. package/dist/form/FormValue.d.ts +17 -0
  467. package/dist/form/FormValue.js +40 -0
  468. package/dist/form/FormValue.js.map +1 -0
  469. package/dist/form/field-layout.d.ts +34 -0
  470. package/dist/form/field-layout.js +39 -0
  471. package/dist/form/field-layout.js.map +1 -0
  472. package/dist/form/form-constraints.d.ts +38 -0
  473. package/dist/form/form-constraints.js +131 -0
  474. package/dist/form/form-constraints.js.map +1 -0
  475. package/dist/form/leave-confirmation.d.ts +9 -0
  476. package/dist/form/leave-confirmation.js +31 -0
  477. package/dist/form/leave-confirmation.js.map +1 -0
  478. package/dist/form/schemas.d.ts +52 -0
  479. package/dist/form/schemas.js +97 -0
  480. package/dist/form/schemas.js.map +1 -0
  481. package/dist/form/useForm.d.ts +192 -0
  482. package/dist/form/useForm.js +394 -0
  483. package/dist/form/useForm.js.map +1 -0
  484. package/dist/index.d.ts +282 -0
  485. package/dist/index.js +282 -0
  486. package/dist/input/Autocomplete.d.ts +14 -0
  487. package/dist/input/Autocomplete.js +35 -0
  488. package/dist/input/Autocomplete.js.map +1 -0
  489. package/dist/input/Cascader.d.ts +86 -0
  490. package/dist/input/Cascader.js +593 -0
  491. package/dist/input/Cascader.js.map +1 -0
  492. package/dist/input/CharacterCount.d.ts +21 -0
  493. package/dist/input/CharacterCount.js +47 -0
  494. package/dist/input/CharacterCount.js.map +1 -0
  495. package/dist/input/Checkbox.d.ts +93 -0
  496. package/dist/input/Checkbox.js +250 -0
  497. package/dist/input/Checkbox.js.map +1 -0
  498. package/dist/input/ColorField.d.ts +37 -0
  499. package/dist/input/ColorField.js +143 -0
  500. package/dist/input/ColorField.js.map +1 -0
  501. package/dist/input/Combobox.d.ts +75 -0
  502. package/dist/input/Combobox.js +321 -0
  503. package/dist/input/Combobox.js.map +1 -0
  504. package/dist/input/ConditionBuilder.d.ts +55 -0
  505. package/dist/input/ConditionBuilder.js +471 -0
  506. package/dist/input/ConditionBuilder.js.map +1 -0
  507. package/dist/input/ControlGroup.d.ts +26 -0
  508. package/dist/input/ControlGroup.js +50 -0
  509. package/dist/input/ControlGroup.js.map +1 -0
  510. package/dist/input/FileDrop.d.ts +49 -0
  511. package/dist/input/FileDrop.js +201 -0
  512. package/dist/input/FileDrop.js.map +1 -0
  513. package/dist/input/ListPopover.d.ts +39 -0
  514. package/dist/input/ListPopover.js +81 -0
  515. package/dist/input/ListPopover.js.map +1 -0
  516. package/dist/input/Listbox.d.ts +91 -0
  517. package/dist/input/Listbox.js +408 -0
  518. package/dist/input/Listbox.js.map +1 -0
  519. package/dist/input/Mentions.d.ts +74 -0
  520. package/dist/input/Mentions.js +287 -0
  521. package/dist/input/Mentions.js.map +1 -0
  522. package/dist/input/NumberField.d.ts +64 -0
  523. package/dist/input/NumberField.js +288 -0
  524. package/dist/input/NumberField.js.map +1 -0
  525. package/dist/input/NumberRangeField.d.ts +58 -0
  526. package/dist/input/NumberRangeField.js +157 -0
  527. package/dist/input/NumberRangeField.js.map +1 -0
  528. package/dist/input/OtpField.d.ts +58 -0
  529. package/dist/input/OtpField.js +200 -0
  530. package/dist/input/OtpField.js.map +1 -0
  531. package/dist/input/PeoplePicker.d.ts +42 -0
  532. package/dist/input/PeoplePicker.js +185 -0
  533. package/dist/input/PeoplePicker.js.map +1 -0
  534. package/dist/input/PeoplePickerPanel.d.ts +42 -0
  535. package/dist/input/PeoplePickerPanel.js +357 -0
  536. package/dist/input/PeoplePickerPanel.js.map +1 -0
  537. package/dist/input/Radio.d.ts +90 -0
  538. package/dist/input/Radio.js +211 -0
  539. package/dist/input/Radio.js.map +1 -0
  540. package/dist/input/Rating.d.ts +62 -0
  541. package/dist/input/Rating.js +225 -0
  542. package/dist/input/Rating.js.map +1 -0
  543. package/dist/input/Select.d.ts +97 -0
  544. package/dist/input/Select.js +455 -0
  545. package/dist/input/Select.js.map +1 -0
  546. package/dist/input/SelectedTags.d.ts +28 -0
  547. package/dist/input/SelectedTags.js +81 -0
  548. package/dist/input/SelectedTags.js.map +1 -0
  549. package/dist/input/Slider.d.ts +99 -0
  550. package/dist/input/Slider.js +343 -0
  551. package/dist/input/Slider.js.map +1 -0
  552. package/dist/input/Switch.d.ts +63 -0
  553. package/dist/input/Switch.js +198 -0
  554. package/dist/input/Switch.js.map +1 -0
  555. package/dist/input/TagsInput.d.ts +70 -0
  556. package/dist/input/TagsInput.js +314 -0
  557. package/dist/input/TagsInput.js.map +1 -0
  558. package/dist/input/TextField.d.ts +51 -0
  559. package/dist/input/TextField.js +185 -0
  560. package/dist/input/TextField.js.map +1 -0
  561. package/dist/input/Textarea.d.ts +50 -0
  562. package/dist/input/Textarea.js +146 -0
  563. package/dist/input/Textarea.js.map +1 -0
  564. package/dist/input/ToggleGroup.d.ts +82 -0
  565. package/dist/input/ToggleGroup.js +211 -0
  566. package/dist/input/ToggleGroup.js.map +1 -0
  567. package/dist/input/Transfer.d.ts +67 -0
  568. package/dist/input/Transfer.js +407 -0
  569. package/dist/input/Transfer.js.map +1 -0
  570. package/dist/input/TreeSelect.d.ts +94 -0
  571. package/dist/input/TreeSelect.js +412 -0
  572. package/dist/input/TreeSelect.js.map +1 -0
  573. package/dist/input/Upload.d.ts +143 -0
  574. package/dist/input/Upload.js +597 -0
  575. package/dist/input/Upload.js.map +1 -0
  576. package/dist/input/choice-styles.d.ts +117 -0
  577. package/dist/input/choice-styles.js +176 -0
  578. package/dist/input/choice-styles.js.map +1 -0
  579. package/dist/input/condition.d.ts +153 -0
  580. package/dist/input/condition.js +169 -0
  581. package/dist/input/condition.js.map +1 -0
  582. package/dist/input/control.d.ts +160 -0
  583. package/dist/input/control.js +236 -0
  584. package/dist/input/control.js.map +1 -0
  585. package/dist/input/list-state.d.ts +118 -0
  586. package/dist/input/list-state.js +186 -0
  587. package/dist/input/list-state.js.map +1 -0
  588. package/dist/input/people.d.ts +65 -0
  589. package/dist/input/people.js +47 -0
  590. package/dist/input/people.js.map +1 -0
  591. package/dist/input/remote-items.d.ts +20 -0
  592. package/dist/input/remote-items.js +36 -0
  593. package/dist/input/remote-items.js.map +1 -0
  594. package/dist/input/text-format.d.ts +46 -0
  595. package/dist/input/text-format.js +64 -0
  596. package/dist/input/text-format.js.map +1 -0
  597. package/dist/layout/Affix.d.ts +32 -0
  598. package/dist/layout/Affix.js +81 -0
  599. package/dist/layout/Affix.js.map +1 -0
  600. package/dist/layout/AsideLayout.d.ts +45 -0
  601. package/dist/layout/AsideLayout.js +69 -0
  602. package/dist/layout/AsideLayout.js.map +1 -0
  603. package/dist/layout/BackTop.d.ts +16 -0
  604. package/dist/layout/BackTop.js +83 -0
  605. package/dist/layout/BackTop.js.map +1 -0
  606. package/dist/layout/Container.d.ts +60 -0
  607. package/dist/layout/Container.js +62 -0
  608. package/dist/layout/Container.js.map +1 -0
  609. package/dist/layout/Flex.d.ts +116 -0
  610. package/dist/layout/Flex.js +109 -0
  611. package/dist/layout/Flex.js.map +1 -0
  612. package/dist/layout/Grid.d.ts +139 -0
  613. package/dist/layout/Grid.js +168 -0
  614. package/dist/layout/Grid.js.map +1 -0
  615. package/dist/layout/PageScrollbar.d.ts +20 -0
  616. package/dist/layout/PageScrollbar.js +49 -0
  617. package/dist/layout/PageScrollbar.js.map +1 -0
  618. package/dist/layout/Prose.d.ts +19 -0
  619. package/dist/layout/Prose.js +37 -0
  620. package/dist/layout/Prose.js.map +1 -0
  621. package/dist/layout/ResizeHandle.d.ts +28 -0
  622. package/dist/layout/ResizeHandle.js +94 -0
  623. package/dist/layout/ResizeHandle.js.map +1 -0
  624. package/dist/layout/ScrollArea.d.ts +99 -0
  625. package/dist/layout/ScrollArea.js +344 -0
  626. package/dist/layout/ScrollArea.js.map +1 -0
  627. package/dist/layout/Separator.d.ts +47 -0
  628. package/dist/layout/Separator.js +96 -0
  629. package/dist/layout/Separator.js.map +1 -0
  630. package/dist/layout/Splitter.d.ts +75 -0
  631. package/dist/layout/Splitter.js +236 -0
  632. package/dist/layout/Splitter.js.map +1 -0
  633. package/dist/layout/ViewportFill.d.ts +26 -0
  634. package/dist/layout/ViewportFill.js +59 -0
  635. package/dist/layout/ViewportFill.js.map +1 -0
  636. package/dist/navigation/Breadcrumbs.d.ts +59 -0
  637. package/dist/navigation/Breadcrumbs.js +150 -0
  638. package/dist/navigation/Breadcrumbs.js.map +1 -0
  639. package/dist/navigation/NavBar.d.ts +35 -0
  640. package/dist/navigation/NavBar.js +182 -0
  641. package/dist/navigation/NavBar.js.map +1 -0
  642. package/dist/navigation/NavList.d.ts +112 -0
  643. package/dist/navigation/NavList.js +375 -0
  644. package/dist/navigation/NavList.js.map +1 -0
  645. package/dist/navigation/PageJump.d.ts +27 -0
  646. package/dist/navigation/PageJump.js +77 -0
  647. package/dist/navigation/PageJump.js.map +1 -0
  648. package/dist/navigation/PageSizeSelect.d.ts +19 -0
  649. package/dist/navigation/PageSizeSelect.js +65 -0
  650. package/dist/navigation/PageSizeSelect.js.map +1 -0
  651. package/dist/navigation/Pager.d.ts +30 -0
  652. package/dist/navigation/Pager.js +111 -0
  653. package/dist/navigation/Pager.js.map +1 -0
  654. package/dist/navigation/Pagination.d.ts +51 -0
  655. package/dist/navigation/Pagination.js +157 -0
  656. package/dist/navigation/Pagination.js.map +1 -0
  657. package/dist/navigation/PaginationBar.d.ts +54 -0
  658. package/dist/navigation/PaginationBar.js +125 -0
  659. package/dist/navigation/PaginationBar.js.map +1 -0
  660. package/dist/navigation/SkipLink.d.ts +16 -0
  661. package/dist/navigation/SkipLink.js +58 -0
  662. package/dist/navigation/SkipLink.js.map +1 -0
  663. package/dist/navigation/Steps.d.ts +93 -0
  664. package/dist/navigation/Steps.js +198 -0
  665. package/dist/navigation/Steps.js.map +1 -0
  666. package/dist/navigation/TableOfContents.d.ts +32 -0
  667. package/dist/navigation/TableOfContents.js +119 -0
  668. package/dist/navigation/TableOfContents.js.map +1 -0
  669. package/dist/navigation/Tabs.d.ts +208 -0
  670. package/dist/navigation/Tabs.js +626 -0
  671. package/dist/navigation/Tabs.js.map +1 -0
  672. package/dist/navigation/Toolbar.d.ts +39 -0
  673. package/dist/navigation/Toolbar.js +67 -0
  674. package/dist/navigation/Toolbar.js.map +1 -0
  675. package/dist/overlay/AlertDialog.d.ts +43 -0
  676. package/dist/overlay/AlertDialog.js +106 -0
  677. package/dist/overlay/AlertDialog.js.map +1 -0
  678. package/dist/overlay/CommandPalette.d.ts +64 -0
  679. package/dist/overlay/CommandPalette.js +250 -0
  680. package/dist/overlay/CommandPalette.js.map +1 -0
  681. package/dist/overlay/ContextMenu.d.ts +21 -0
  682. package/dist/overlay/ContextMenu.js +76 -0
  683. package/dist/overlay/ContextMenu.js.map +1 -0
  684. package/dist/overlay/Dialog.d.ts +70 -0
  685. package/dist/overlay/Dialog.js +91 -0
  686. package/dist/overlay/Dialog.js.map +1 -0
  687. package/dist/overlay/Drawer.d.ts +186 -0
  688. package/dist/overlay/Drawer.js +214 -0
  689. package/dist/overlay/Drawer.js.map +1 -0
  690. package/dist/overlay/HoverCard.d.ts +48 -0
  691. package/dist/overlay/HoverCard.js +86 -0
  692. package/dist/overlay/HoverCard.js.map +1 -0
  693. package/dist/overlay/Lightbox.d.ts +57 -0
  694. package/dist/overlay/Lightbox.js +374 -0
  695. package/dist/overlay/Lightbox.js.map +1 -0
  696. package/dist/overlay/Menu.d.ts +218 -0
  697. package/dist/overlay/Menu.js +816 -0
  698. package/dist/overlay/Menu.js.map +1 -0
  699. package/dist/overlay/ModalCore.d.ts +132 -0
  700. package/dist/overlay/ModalCore.js +274 -0
  701. package/dist/overlay/ModalCore.js.map +1 -0
  702. package/dist/overlay/Popconfirm.d.ts +49 -0
  703. package/dist/overlay/Popconfirm.js +167 -0
  704. package/dist/overlay/Popconfirm.js.map +1 -0
  705. package/dist/overlay/Popover.d.ts +40 -0
  706. package/dist/overlay/Popover.js +96 -0
  707. package/dist/overlay/Popover.js.map +1 -0
  708. package/dist/overlay/Tooltip.d.ts +47 -0
  709. package/dist/overlay/Tooltip.js +86 -0
  710. package/dist/overlay/Tooltip.js.map +1 -0
  711. package/dist/overlay/Tour.d.ts +74 -0
  712. package/dist/overlay/Tour.js +309 -0
  713. package/dist/overlay/Tour.js.map +1 -0
  714. package/dist/overlay/detached.d.ts +40 -0
  715. package/dist/overlay/detached.js +109 -0
  716. package/dist/overlay/detached.js.map +1 -0
  717. package/dist/patterns/ActionBar.d.ts +29 -0
  718. package/dist/patterns/ActionBar.js +75 -0
  719. package/dist/patterns/ActionBar.js.map +1 -0
  720. package/dist/patterns/AppShell.d.ts +168 -0
  721. package/dist/patterns/AppShell.js +620 -0
  722. package/dist/patterns/AppShell.js.map +1 -0
  723. package/dist/patterns/CommentThread.d.ts +128 -0
  724. package/dist/patterns/CommentThread.js +386 -0
  725. package/dist/patterns/CommentThread.js.map +1 -0
  726. package/dist/patterns/DataImport.d.ts +72 -0
  727. package/dist/patterns/DataImport.js +486 -0
  728. package/dist/patterns/DataImport.js.map +1 -0
  729. package/dist/patterns/DeadlineBadge.d.ts +21 -0
  730. package/dist/patterns/DeadlineBadge.js +76 -0
  731. package/dist/patterns/DeadlineBadge.js.map +1 -0
  732. package/dist/patterns/FilterBar.d.ts +66 -0
  733. package/dist/patterns/FilterBar.js +254 -0
  734. package/dist/patterns/FilterBar.js.map +1 -0
  735. package/dist/patterns/KanbanBoard.d.ts +79 -0
  736. package/dist/patterns/KanbanBoard.js +294 -0
  737. package/dist/patterns/KanbanBoard.js.map +1 -0
  738. package/dist/patterns/NotificationCenter.d.ts +110 -0
  739. package/dist/patterns/NotificationCenter.js +342 -0
  740. package/dist/patterns/NotificationCenter.js.map +1 -0
  741. package/dist/patterns/PageTabs.d.ts +30 -0
  742. package/dist/patterns/PageTabs.js +97 -0
  743. package/dist/patterns/PageTabs.js.map +1 -0
  744. package/dist/patterns/QueryTable.d.ts +64 -0
  745. package/dist/patterns/QueryTable.js +276 -0
  746. package/dist/patterns/QueryTable.js.map +1 -0
  747. package/dist/patterns/StepsForm.d.ts +49 -0
  748. package/dist/patterns/StepsForm.js +130 -0
  749. package/dist/patterns/StepsForm.js.map +1 -0
  750. package/dist/patterns/ThemeSwitcher.d.ts +20 -0
  751. package/dist/patterns/ThemeSwitcher.js +102 -0
  752. package/dist/patterns/ThemeSwitcher.js.map +1 -0
  753. package/dist/patterns/form-dialog.d.ts +62 -0
  754. package/dist/patterns/form-dialog.js +143 -0
  755. package/dist/patterns/form-dialog.js.map +1 -0
  756. package/dist/patterns/index.d.ts +24 -0
  757. package/dist/patterns/index.js +15 -0
  758. package/dist/patterns/messages.d.ts +172 -0
  759. package/dist/patterns/messages.js +184 -0
  760. package/dist/patterns/messages.js.map +1 -0
  761. package/dist/table/ColumnHeaderActions.d.ts +71 -0
  762. package/dist/table/ColumnHeaderActions.js +247 -0
  763. package/dist/table/ColumnHeaderActions.js.map +1 -0
  764. package/dist/table/ColumnResizer.d.ts +12 -0
  765. package/dist/table/ColumnResizer.js +32 -0
  766. package/dist/table/ColumnResizer.js.map +1 -0
  767. package/dist/table/ColumnSettings.d.ts +34 -0
  768. package/dist/table/ColumnSettings.js +136 -0
  769. package/dist/table/ColumnSettings.js.map +1 -0
  770. package/dist/table/ColumnTable.d.ts +51 -0
  771. package/dist/table/ColumnTable.js +140 -0
  772. package/dist/table/ColumnTable.js.map +1 -0
  773. package/dist/table/DataTable.d.ts +44 -0
  774. package/dist/table/DataTable.js +453 -0
  775. package/dist/table/DataTable.js.map +1 -0
  776. package/dist/table/DataTableView.d.ts +328 -0
  777. package/dist/table/DataTableView.js +963 -0
  778. package/dist/table/DataTableView.js.map +1 -0
  779. package/dist/table/PivotTable.d.ts +66 -0
  780. package/dist/table/PivotTable.js +122 -0
  781. package/dist/table/PivotTable.js.map +1 -0
  782. package/dist/table/SelectionBar.d.ts +29 -0
  783. package/dist/table/SelectionBar.js +86 -0
  784. package/dist/table/SelectionBar.js.map +1 -0
  785. package/dist/table/Table.d.ts +169 -0
  786. package/dist/table/Table.js +304 -0
  787. package/dist/table/Table.js.map +1 -0
  788. package/dist/table/TreeDataTable.d.ts +36 -0
  789. package/dist/table/TreeDataTable.js +168 -0
  790. package/dist/table/TreeDataTable.js.map +1 -0
  791. package/dist/table/column-display.d.ts +20 -0
  792. package/dist/table/column-display.js +43 -0
  793. package/dist/table/column-display.js.map +1 -0
  794. package/dist/table/columns.d.ts +244 -0
  795. package/dist/table/columns.js +271 -0
  796. package/dist/table/columns.js.map +1 -0
  797. package/dist/table/csv.d.ts +24 -0
  798. package/dist/table/csv.js +35 -0
  799. package/dist/table/csv.js.map +1 -0
  800. package/dist/table/pivot.d.ts +66 -0
  801. package/dist/table/pivot.js +85 -0
  802. package/dist/table/pivot.js.map +1 -0
  803. package/dist/table/sheet.d.ts +44 -0
  804. package/dist/table/sheet.js +78 -0
  805. package/dist/table/sheet.js.map +1 -0
  806. package/dist/table/table-styles.d.ts +136 -0
  807. package/dist/table/table-styles.js +403 -0
  808. package/dist/table/table-styles.js.map +1 -0
  809. package/dist/table/use-table-query.d.ts +89 -0
  810. package/dist/table/use-table-query.js +194 -0
  811. package/dist/table/use-table-query.js.map +1 -0
  812. package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
  813. package/dist/theme-customize/ThemeCustomizer.js +361 -0
  814. package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
  815. package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
  816. package/dist/theme-customize/ThemeThumbnail.js +82 -0
  817. package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
  818. package/dist/theme-customize/contrast.d.ts +27 -0
  819. package/dist/theme-customize/contrast.js +251 -0
  820. package/dist/theme-customize/contrast.js.map +1 -0
  821. package/dist/theme-customize/customize.d.ts +65 -0
  822. package/dist/theme-customize/customize.js +105 -0
  823. package/dist/theme-customize/customize.js.map +1 -0
  824. package/dist/theme-customize/design-tokens.d.ts +31 -0
  825. package/dist/theme-customize/design-tokens.js +183 -0
  826. package/dist/theme-customize/design-tokens.js.map +1 -0
  827. package/dist/theme-customize/index.d.ts +20 -0
  828. package/dist/theme-customize/index.js +9 -0
  829. package/dist/theme-customize/messages.d.ts +74 -0
  830. package/dist/theme-customize/messages.js +142 -0
  831. package/dist/theme-customize/messages.js.map +1 -0
  832. package/dist/theme-customize/palette.d.ts +898 -0
  833. package/dist/theme-customize/palette.js +111 -0
  834. package/dist/theme-customize/palette.js.map +1 -0
  835. package/dist/theme-customize/token-catalog.d.ts +20 -0
  836. package/dist/theme-customize/token-catalog.js +836 -0
  837. package/dist/theme-customize/token-catalog.js.map +1 -0
  838. package/dist/three/background/AuroraBackground.d.ts +30 -0
  839. package/dist/three/background/AuroraBackground.js +80 -0
  840. package/dist/three/background/AuroraBackground.js.map +1 -0
  841. package/dist/three/background/MeshGradient.d.ts +28 -0
  842. package/dist/three/background/MeshGradient.js +76 -0
  843. package/dist/three/background/MeshGradient.js.map +1 -0
  844. package/dist/three/background/ShaderBackground.d.ts +25 -0
  845. package/dist/three/background/ShaderBackground.js +107 -0
  846. package/dist/three/background/ShaderBackground.js.map +1 -0
  847. package/dist/three/core/EffectSurface.d.ts +41 -0
  848. package/dist/three/core/EffectSurface.js +62 -0
  849. package/dist/three/core/EffectSurface.js.map +1 -0
  850. package/dist/three/core/ThreeCanvas.d.ts +39 -0
  851. package/dist/three/core/ThreeCanvas.js +77 -0
  852. package/dist/three/core/ThreeCanvas.js.map +1 -0
  853. package/dist/three/core/dispose.d.ts +9 -0
  854. package/dist/three/core/dispose.js +26 -0
  855. package/dist/three/core/dispose.js.map +1 -0
  856. package/dist/three/core/orbit.d.ts +31 -0
  857. package/dist/three/core/orbit.js +83 -0
  858. package/dist/three/core/orbit.js.map +1 -0
  859. package/dist/three/core/quality.d.ts +59 -0
  860. package/dist/three/core/quality.js +80 -0
  861. package/dist/three/core/quality.js.map +1 -0
  862. package/dist/three/core/renderer.d.ts +110 -0
  863. package/dist/three/core/renderer.js +303 -0
  864. package/dist/three/core/renderer.js.map +1 -0
  865. package/dist/three/core/shaders.d.ts +19 -0
  866. package/dist/three/core/shaders.js +100 -0
  867. package/dist/three/core/shaders.js.map +1 -0
  868. package/dist/three/core/theme-colors.d.ts +30 -0
  869. package/dist/three/core/theme-colors.js +113 -0
  870. package/dist/three/core/theme-colors.js.map +1 -0
  871. package/dist/three/effects/Confetti.d.ts +62 -0
  872. package/dist/three/effects/Confetti.js +242 -0
  873. package/dist/three/effects/Confetti.js.map +1 -0
  874. package/dist/three/effects/ParticleField.d.ts +39 -0
  875. package/dist/three/effects/ParticleField.js +266 -0
  876. package/dist/three/effects/ParticleField.js.map +1 -0
  877. package/dist/three/effects/WaveGrid.d.ts +37 -0
  878. package/dist/three/effects/WaveGrid.js +130 -0
  879. package/dist/three/effects/WaveGrid.js.map +1 -0
  880. package/dist/three/globe/Globe.d.ts +70 -0
  881. package/dist/three/globe/Globe.js +337 -0
  882. package/dist/three/globe/Globe.js.map +1 -0
  883. package/dist/three/globe/land.d.ts +9 -0
  884. package/dist/three/globe/land.js +14 -0
  885. package/dist/three/globe/land.js.map +1 -0
  886. package/dist/three/index.d.ts +24 -0
  887. package/dist/three/index.js +18 -0
  888. package/dist/three/model/ModelViewer.d.ts +63 -0
  889. package/dist/three/model/ModelViewer.js +193 -0
  890. package/dist/three/model/ModelViewer.js.map +1 -0
  891. package/dist/utils/data/collation.d.ts +36 -0
  892. package/dist/utils/data/collation.js +69 -0
  893. package/dist/utils/data/collation.js.map +1 -0
  894. package/dist/utils/data/color.d.ts +32 -0
  895. package/dist/utils/data/color.js +90 -0
  896. package/dist/utils/data/color.js.map +1 -0
  897. package/dist/utils/data/date.d.ts +186 -0
  898. package/dist/utils/data/date.js +409 -0
  899. package/dist/utils/data/date.js.map +1 -0
  900. package/dist/utils/data/diff.d.ts +21 -0
  901. package/dist/utils/data/diff.js +43 -0
  902. package/dist/utils/data/diff.js.map +1 -0
  903. package/dist/utils/data/equality.d.ts +5 -0
  904. package/dist/utils/data/equality.js +24 -0
  905. package/dist/utils/data/equality.js.map +1 -0
  906. package/dist/utils/data/history.d.ts +59 -0
  907. package/dist/utils/data/history.js +132 -0
  908. package/dist/utils/data/history.js.map +1 -0
  909. package/dist/utils/data/intl-cache.d.ts +8 -0
  910. package/dist/utils/data/intl-cache.js +19 -0
  911. package/dist/utils/data/intl-cache.js.map +1 -0
  912. package/dist/utils/data/number-parse.d.ts +7 -0
  913. package/dist/utils/data/number-parse.js +45 -0
  914. package/dist/utils/data/number-parse.js.map +1 -0
  915. package/dist/utils/data/number.d.ts +10 -0
  916. package/dist/utils/data/number.js +28 -0
  917. package/dist/utils/data/number.js.map +1 -0
  918. package/dist/utils/data/numeric.d.ts +55 -0
  919. package/dist/utils/data/numeric.js +133 -0
  920. package/dist/utils/data/numeric.js.map +1 -0
  921. package/dist/utils/data/pagination.d.ts +21 -0
  922. package/dist/utils/data/pagination.js +22 -0
  923. package/dist/utils/data/pagination.js.map +1 -0
  924. package/dist/utils/data/selection.d.ts +41 -0
  925. package/dist/utils/data/selection.js +21 -0
  926. package/dist/utils/data/selection.js.map +1 -0
  927. package/dist/utils/data/status.d.ts +43 -0
  928. package/dist/utils/data/status.js +27 -0
  929. package/dist/utils/data/status.js.map +1 -0
  930. package/dist/utils/data/text.d.ts +12 -0
  931. package/dist/utils/data/text.js +30 -0
  932. package/dist/utils/data/text.js.map +1 -0
  933. package/dist/utils/data/tree.d.ts +140 -0
  934. package/dist/utils/data/tree.js +273 -0
  935. package/dist/utils/data/tree.js.map +1 -0
  936. package/dist/utils/data/workdays.d.ts +67 -0
  937. package/dist/utils/data/workdays.js +67 -0
  938. package/dist/utils/data/workdays.js.map +1 -0
  939. package/dist/utils/dom/announcer.d.ts +11 -0
  940. package/dist/utils/dom/announcer.js +53 -0
  941. package/dist/utils/dom/announcer.js.map +1 -0
  942. package/dist/utils/dom/caret.d.ts +14 -0
  943. package/dist/utils/dom/caret.js +72 -0
  944. package/dist/utils/dom/caret.js.map +1 -0
  945. package/dist/utils/dom/clipboard.d.ts +16 -0
  946. package/dist/utils/dom/clipboard.js +66 -0
  947. package/dist/utils/dom/clipboard.js.map +1 -0
  948. package/dist/utils/dom/direction.d.ts +12 -0
  949. package/dist/utils/dom/direction.js +20 -0
  950. package/dist/utils/dom/direction.js.map +1 -0
  951. package/dist/utils/dom/download.d.ts +7 -0
  952. package/dist/utils/dom/download.js +19 -0
  953. package/dist/utils/dom/download.js.map +1 -0
  954. package/dist/utils/dom/element.d.ts +3 -0
  955. package/dist/utils/dom/element.js +12 -0
  956. package/dist/utils/dom/element.js.map +1 -0
  957. package/dist/utils/dom/event-listener.d.ts +8 -0
  958. package/dist/utils/dom/event-listener.js +35 -0
  959. package/dist/utils/dom/event-listener.js.map +1 -0
  960. package/dist/utils/dom/floating.d.ts +149 -0
  961. package/dist/utils/dom/floating.js +262 -0
  962. package/dist/utils/dom/floating.js.map +1 -0
  963. package/dist/utils/dom/focus.d.ts +28 -0
  964. package/dist/utils/dom/focus.js +105 -0
  965. package/dist/utils/dom/focus.js.map +1 -0
  966. package/dist/utils/dom/fullscreen.d.ts +11 -0
  967. package/dist/utils/dom/fullscreen.js +43 -0
  968. package/dist/utils/dom/fullscreen.js.map +1 -0
  969. package/dist/utils/dom/hotkeys.d.ts +43 -0
  970. package/dist/utils/dom/hotkeys.js +174 -0
  971. package/dist/utils/dom/hotkeys.js.map +1 -0
  972. package/dist/utils/dom/hover-intent.d.ts +47 -0
  973. package/dist/utils/dom/hover-intent.js +72 -0
  974. package/dist/utils/dom/hover-intent.js.map +1 -0
  975. package/dist/utils/dom/hover-layer.d.ts +36 -0
  976. package/dist/utils/dom/hover-layer.js +74 -0
  977. package/dist/utils/dom/hover-layer.js.map +1 -0
  978. package/dist/utils/dom/intersection.d.ts +13 -0
  979. package/dist/utils/dom/intersection.js +36 -0
  980. package/dist/utils/dom/intersection.js.map +1 -0
  981. package/dist/utils/dom/layout-batch.d.ts +14 -0
  982. package/dist/utils/dom/layout-batch.js +26 -0
  983. package/dist/utils/dom/layout-batch.js.map +1 -0
  984. package/dist/utils/dom/link.d.ts +18 -0
  985. package/dist/utils/dom/link.js +44 -0
  986. package/dist/utils/dom/link.js.map +1 -0
  987. package/dist/utils/dom/media-query.d.ts +18 -0
  988. package/dist/utils/dom/media-query.js +36 -0
  989. package/dist/utils/dom/media-query.js.map +1 -0
  990. package/dist/utils/dom/move.d.ts +47 -0
  991. package/dist/utils/dom/move.js +69 -0
  992. package/dist/utils/dom/move.js.map +1 -0
  993. package/dist/utils/dom/open-change.d.ts +51 -0
  994. package/dist/utils/dom/open-change.js +21 -0
  995. package/dist/utils/dom/open-change.js.map +1 -0
  996. package/dist/utils/dom/overflow.d.ts +29 -0
  997. package/dist/utils/dom/overflow.js +108 -0
  998. package/dist/utils/dom/overflow.js.map +1 -0
  999. package/dist/utils/dom/overlay.d.ts +35 -0
  1000. package/dist/utils/dom/overlay.js +104 -0
  1001. package/dist/utils/dom/overlay.js.map +1 -0
  1002. package/dist/utils/dom/page-visibility.d.ts +10 -0
  1003. package/dist/utils/dom/page-visibility.js +22 -0
  1004. package/dist/utils/dom/page-visibility.js.map +1 -0
  1005. package/dist/utils/dom/pan-zoom.d.ts +109 -0
  1006. package/dist/utils/dom/pan-zoom.js +257 -0
  1007. package/dist/utils/dom/pan-zoom.js.map +1 -0
  1008. package/dist/utils/dom/rasterize.d.ts +18 -0
  1009. package/dist/utils/dom/rasterize.js +41 -0
  1010. package/dist/utils/dom/rasterize.js.map +1 -0
  1011. package/dist/utils/dom/resize.d.ts +4 -0
  1012. package/dist/utils/dom/resize.js +65 -0
  1013. package/dist/utils/dom/resize.js.map +1 -0
  1014. package/dist/utils/dom/ripple.d.ts +40 -0
  1015. package/dist/utils/dom/ripple.js +96 -0
  1016. package/dist/utils/dom/ripple.js.map +1 -0
  1017. package/dist/utils/dom/roving-focus.d.ts +44 -0
  1018. package/dist/utils/dom/roving-focus.js +184 -0
  1019. package/dist/utils/dom/roving-focus.js.map +1 -0
  1020. package/dist/utils/dom/scroll-spy.d.ts +30 -0
  1021. package/dist/utils/dom/scroll-spy.js +55 -0
  1022. package/dist/utils/dom/scroll-spy.js.map +1 -0
  1023. package/dist/utils/dom/sortable.d.ts +82 -0
  1024. package/dist/utils/dom/sortable.js +437 -0
  1025. package/dist/utils/dom/sortable.js.map +1 -0
  1026. package/dist/utils/dom/storage.d.ts +21 -0
  1027. package/dist/utils/dom/storage.js +66 -0
  1028. package/dist/utils/dom/storage.js.map +1 -0
  1029. package/dist/utils/dom/typeahead.d.ts +15 -0
  1030. package/dist/utils/dom/typeahead.js +26 -0
  1031. package/dist/utils/dom/typeahead.js.map +1 -0
  1032. package/dist/utils/motion/active-indicator.d.ts +24 -0
  1033. package/dist/utils/motion/active-indicator.js +58 -0
  1034. package/dist/utils/motion/active-indicator.js.map +1 -0
  1035. package/dist/utils/motion/animation.d.ts +58 -0
  1036. package/dist/utils/motion/animation.js +83 -0
  1037. package/dist/utils/motion/animation.js.map +1 -0
  1038. package/dist/utils/motion/delayed-loading.d.ts +18 -0
  1039. package/dist/utils/motion/delayed-loading.js +38 -0
  1040. package/dist/utils/motion/delayed-loading.js.map +1 -0
  1041. package/dist/utils/motion/layout.d.ts +17 -0
  1042. package/dist/utils/motion/layout.js +43 -0
  1043. package/dist/utils/motion/layout.js.map +1 -0
  1044. package/dist/utils/motion/pointer.d.ts +14 -0
  1045. package/dist/utils/motion/pointer.js +72 -0
  1046. package/dist/utils/motion/pointer.js.map +1 -0
  1047. package/dist/utils/motion/presence.d.ts +57 -0
  1048. package/dist/utils/motion/presence.js +100 -0
  1049. package/dist/utils/motion/presence.js.map +1 -0
  1050. package/dist/utils/motion/reveal.d.ts +9 -0
  1051. package/dist/utils/motion/reveal.js +68 -0
  1052. package/dist/utils/motion/reveal.js.map +1 -0
  1053. package/dist/utils/motion/tween.d.ts +34 -0
  1054. package/dist/utils/motion/tween.js +50 -0
  1055. package/dist/utils/motion/tween.js.map +1 -0
  1056. package/dist/utils/props.d.ts +84 -0
  1057. package/dist/utils/props.js +189 -0
  1058. package/dist/utils/props.js.map +1 -0
  1059. package/dist/utils/request/http.d.ts +101 -0
  1060. package/dist/utils/request/http.js +154 -0
  1061. package/dist/utils/request/http.js.map +1 -0
  1062. package/dist/utils/request/use-request.d.ts +37 -0
  1063. package/dist/utils/request/use-request.js +90 -0
  1064. package/dist/utils/request/use-request.js.map +1 -0
  1065. package/dist/utils/request/wire.d.ts +48 -0
  1066. package/dist/utils/request/wire.js +208 -0
  1067. package/dist/utils/request/wire.js.map +1 -0
  1068. package/dist/utils/style/attached.d.ts +25 -0
  1069. package/dist/utils/style/attached.js +82 -0
  1070. package/dist/utils/style/attached.js.map +1 -0
  1071. package/dist/utils/style/item-styles.d.ts +18 -0
  1072. package/dist/utils/style/item-styles.js +79 -0
  1073. package/dist/utils/style/item-styles.js.map +1 -0
  1074. package/dist/utils/style/markers.d.ts +6 -0
  1075. package/dist/utils/style/markers.js +11 -0
  1076. package/dist/utils/style/markers.js.map +1 -0
  1077. package/dist/utils/style/shimmer.d.ts +20 -0
  1078. package/dist/utils/style/shimmer.js +58 -0
  1079. package/dist/utils/style/shimmer.js.map +1 -0
  1080. package/dist/utils/style/styles.d.ts +118 -0
  1081. package/dist/utils/style/styles.js +114 -0
  1082. package/dist/utils/style/styles.js.map +1 -0
  1083. package/dist/utils/style/swatch-styles.d.ts +10 -0
  1084. package/dist/utils/style/swatch-styles.js +19 -0
  1085. package/dist/utils/style/swatch-styles.js.map +1 -0
  1086. package/dist/utils/style/tone-styles.d.ts +58 -0
  1087. package/dist/utils/style/tone-styles.js +180 -0
  1088. package/dist/utils/style/tone-styles.js.map +1 -0
  1089. package/dist/utils/style/transitions.d.ts +43 -0
  1090. package/dist/utils/style/transitions.js +118 -0
  1091. package/dist/utils/style/transitions.js.map +1 -0
  1092. package/dist/utils/style/typography.d.ts +155 -0
  1093. package/dist/utils/style/typography.js +80 -0
  1094. package/dist/utils/style/typography.js.map +1 -0
  1095. package/dist/utils/style/vars.d.ts +18 -0
  1096. package/dist/utils/style/vars.js +21 -0
  1097. package/dist/utils/style/vars.js.map +1 -0
  1098. package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
  1099. package/dist/utils/virtual/use-virtualizer.js +94 -0
  1100. package/dist/utils/virtual/use-virtualizer.js.map +1 -0
  1101. package/dist/utils/virtual/virtualizer.d.ts +145 -0
  1102. package/dist/utils/virtual/virtualizer.js +316 -0
  1103. package/dist/utils/virtual/virtualizer.js.map +1 -0
  1104. package/dist/xlsx/index.d.ts +7 -0
  1105. package/dist/xlsx/index.js +1 -0
  1106. package/dist/xlsx/workbook.d.ts +33 -0
  1107. package/dist/xlsx/workbook.js +195 -0
  1108. package/dist/xlsx/workbook.js.map +1 -0
  1109. package/package.json +205 -3
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 从 zod schema 推出字段约束:必填、长度、数值范围、格式、可选值。useForm 据此告诉 Field 与控件,
3
+ * 只写一份 schema,标签上的必填标记、输入框的 maxlength、NumberField 的 min / max 就都有了。
4
+ *
5
+ * 用 zod 的 toJSONSchema(输入一侧)把 schema 转成 JSON Schema,再按字段路径取约束;JSON Schema 表达不了的部分
6
+ * (transform、refine、自定义类型)不产生约束,校验照常由 schema 负责。控件上显式写的属性总是优先。
7
+ *
8
+ * const constraints = createConstraints(z.object({ name: z.string().min(1).max(20), age: z.number().int().min(0) }));
9
+ * constraints('name') // { required: true, minLength: 1, maxLength: 20 }
10
+ * constraints('age') // { required: true, min: 0, step: 1 }
11
+ */
12
+ import { type $ZodType } from 'zod/v4/core';
13
+ /** 一个字段从 schema 推出的约束;推不出的项不出现 */
14
+ export interface FieldConstraints {
15
+ /** 必填:值不能为空(字符串至少 1 个字、数组至少 1 项、数字等不能缺) */
16
+ required?: boolean;
17
+ /** 最少几个字 */
18
+ minLength?: number;
19
+ /** 最多几个字 */
20
+ maxLength?: number;
21
+ /** 最小值 */
22
+ min?: number;
23
+ /** 最大值 */
24
+ max?: number;
25
+ /** 步长(倍数约束,整数时为 1) */
26
+ step?: number;
27
+ /** 正则(字符串约束,不含首尾的 /) */
28
+ pattern?: string;
29
+ /** 格式:email、uri、date 等(JSON Schema 的 format) */
30
+ format?: string;
31
+ /** 可选值(枚举) */
32
+ options?: readonly (string | number)[];
33
+ }
34
+ /**
35
+ * 按 schema 创建 路径 → 约束 的查询函数;JSON Schema 在第一次查询时才转换,结果按路径缓存。
36
+ * 没有 schema 时总是返回空约束
37
+ */
38
+ export declare function createConstraints(schema: $ZodType | undefined): (path: string) => FieldConstraints;
@@ -0,0 +1,131 @@
1
+ import { toJSONSchema } from "zod/v4/core";
2
+ //#region src/form/form-constraints.ts
3
+ /**
4
+ * 从 zod schema 推出字段约束:必填、长度、数值范围、格式、可选值。useForm 据此告诉 Field 与控件,
5
+ * 只写一份 schema,标签上的必填标记、输入框的 maxlength、NumberField 的 min / max 就都有了。
6
+ *
7
+ * 用 zod 的 toJSONSchema(输入一侧)把 schema 转成 JSON Schema,再按字段路径取约束;JSON Schema 表达不了的部分
8
+ * (transform、refine、自定义类型)不产生约束,校验照常由 schema 负责。控件上显式写的属性总是优先。
9
+ *
10
+ * const constraints = createConstraints(z.object({ name: z.string().min(1).max(20), age: z.number().int().min(0) }));
11
+ * constraints('name') // { required: true, minLength: 1, maxLength: 20 }
12
+ * constraints('age') // { required: true, min: 0, step: 1 }
13
+ */
14
+ var NONE = Object.freeze({});
15
+ /** schema → JSON Schema(输入一侧);表达不了的类型当作 any,循环引用写成 $ref */
16
+ function toJsonSchema(schema) {
17
+ try {
18
+ return toJSONSchema(schema, {
19
+ io: "input",
20
+ unrepresentable: "any",
21
+ cycles: "ref"
22
+ });
23
+ } catch (error) {
24
+ console.warn("useForm:无法从 schema 推出字段约束", error);
25
+ return;
26
+ }
27
+ }
28
+ /** 解开 $ref(只认本文档的 #/$defs/…)与“允许 null”的 anyOf:返回实际的 schema 与是否允许 null */
29
+ function unwrap(root, node) {
30
+ let current = node;
31
+ let nullable = false;
32
+ for (let depth = 0; current && depth < 10; depth++) {
33
+ const ref = current.$ref;
34
+ if (typeof ref === "string" && ref.startsWith("#/$defs/")) {
35
+ current = root.$defs?.[ref.slice(8)];
36
+ continue;
37
+ }
38
+ if (Array.isArray(current.type) && current.type.includes("null")) {
39
+ const types = current.type.filter((type) => type !== "null");
40
+ nullable = true;
41
+ current = {
42
+ ...current,
43
+ type: types.length === 1 ? types[0] : types
44
+ };
45
+ continue;
46
+ }
47
+ const variants = current.anyOf ?? current.oneOf;
48
+ if (variants) {
49
+ const rest = variants.filter((variant) => variant.type !== "null");
50
+ nullable ||= rest.length < variants.length;
51
+ if (rest.length === 1) {
52
+ current = rest[0];
53
+ continue;
54
+ }
55
+ }
56
+ break;
57
+ }
58
+ return {
59
+ node: current,
60
+ nullable
61
+ };
62
+ }
63
+ var numberOf = (value) => typeof value === "number" ? value : void 0;
64
+ /** 正则能不能匹配空字符串(如 `^$|^\S+ R\d+$` 是“选填,填了要合格式”);写错的正则当作不能 */
65
+ function matchesEmpty(pattern) {
66
+ try {
67
+ return new RegExp(pattern, "u").test("");
68
+ } catch {
69
+ return false;
70
+ }
71
+ }
72
+ /** 字段自己的 schema → 约束;parentRequires 表示父对象要求这个键存在 */
73
+ function constraintsOf(node, nullable, parentRequires) {
74
+ const result = {};
75
+ const type = node.type;
76
+ if (type === "string") {
77
+ result.minLength = numberOf(node.minLength);
78
+ result.maxLength = numberOf(node.maxLength);
79
+ if (typeof node.pattern === "string") result.pattern = node.pattern;
80
+ if (typeof node.format === "string") result.format = node.format;
81
+ }
82
+ if (type === "number" || type === "integer") {
83
+ result.min = numberOf(node.minimum);
84
+ result.max = numberOf(node.maximum);
85
+ result.step = numberOf(node.multipleOf) ?? (type === "integer" ? 1 : void 0);
86
+ }
87
+ if (Array.isArray(node.enum)) result.options = node.enum;
88
+ const nonEmpty = type === "string" ? (result.minLength ?? 0) > 0 || result.format != null || result.pattern != null && !matchesEmpty(result.pattern) || result.options != null : type === "boolean" ? node.const === true : type === "array" ? (numberOf(node.minItems) ?? 0) > 0 : true;
89
+ if (parentRequires && !nullable && nonEmpty) result.required = true;
90
+ for (const key of Object.keys(result)) if (result[key] === void 0) delete result[key];
91
+ return result;
92
+ }
93
+ /** 按点连接的路径找字段:对象走 properties,数组走 items(下标是数字) */
94
+ function find(root, path) {
95
+ let { node, nullable } = unwrap(root, root);
96
+ let required = true;
97
+ for (const segment of path.split(".")) {
98
+ if (!node) return NONE;
99
+ if (node.type === "array") {
100
+ ({node, nullable} = unwrap(root, node.items));
101
+ required = true;
102
+ continue;
103
+ }
104
+ const properties = node.properties;
105
+ required = (node.required ?? []).includes(segment);
106
+ ({node, nullable} = unwrap(root, properties?.[segment]));
107
+ }
108
+ return node ? constraintsOf(node, nullable, required) : NONE;
109
+ }
110
+ /**
111
+ * 按 schema 创建 路径 → 约束 的查询函数;JSON Schema 在第一次查询时才转换,结果按路径缓存。
112
+ * 没有 schema 时总是返回空约束
113
+ */
114
+ function createConstraints(schema) {
115
+ let root = null;
116
+ const cache = /* @__PURE__ */ new Map();
117
+ return (path) => {
118
+ if (root === null) root = schema && toJsonSchema(schema);
119
+ if (!root) return NONE;
120
+ let found = cache.get(path);
121
+ if (!found) {
122
+ found = find(root, path);
123
+ cache.set(path, found);
124
+ }
125
+ return found;
126
+ };
127
+ }
128
+ //#endregion
129
+ export { createConstraints };
130
+
131
+ //# sourceMappingURL=form-constraints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-constraints.js","names":[],"sources":["../../src/form/form-constraints.ts"],"sourcesContent":["/**\n * 从 zod schema 推出字段约束:必填、长度、数值范围、格式、可选值。useForm 据此告诉 Field 与控件,\n * 只写一份 schema,标签上的必填标记、输入框的 maxlength、NumberField 的 min / max 就都有了。\n *\n * 用 zod 的 toJSONSchema(输入一侧)把 schema 转成 JSON Schema,再按字段路径取约束;JSON Schema 表达不了的部分\n * (transform、refine、自定义类型)不产生约束,校验照常由 schema 负责。控件上显式写的属性总是优先。\n *\n * const constraints = createConstraints(z.object({ name: z.string().min(1).max(20), age: z.number().int().min(0) }));\n * constraints('name') // { required: true, minLength: 1, maxLength: 20 }\n * constraints('age') // { required: true, min: 0, step: 1 }\n */\nimport { toJSONSchema, type $ZodType } from 'zod/v4/core';\n\n/** 一个字段从 schema 推出的约束;推不出的项不出现 */\nexport interface FieldConstraints {\n /** 必填:值不能为空(字符串至少 1 个字、数组至少 1 项、数字等不能缺) */\n required?: boolean;\n /** 最少几个字 */\n minLength?: number;\n /** 最多几个字 */\n maxLength?: number;\n /** 最小值 */\n min?: number;\n /** 最大值 */\n max?: number;\n /** 步长(倍数约束,整数时为 1) */\n step?: number;\n /** 正则(字符串约束,不含首尾的 /) */\n pattern?: string;\n /** 格式:email、uri、date 等(JSON Schema 的 format) */\n format?: string;\n /** 可选值(枚举) */\n options?: readonly (string | number)[];\n}\n\ntype JsonSchema = Record<string, unknown>;\n\nconst NONE: FieldConstraints = Object.freeze({});\n\n/** schema → JSON Schema(输入一侧);表达不了的类型当作 any,循环引用写成 $ref */\nfunction toJsonSchema(schema: $ZodType): JsonSchema | undefined {\n try {\n return toJSONSchema(schema, {\n io: 'input',\n unrepresentable: 'any',\n cycles: 'ref',\n }) as JsonSchema;\n } catch (error) {\n // 理论上不会走到这里(unrepresentable: 'any');约束只是辅助,失败时不影响校验\n console.warn('useForm:无法从 schema 推出字段约束', error);\n return undefined;\n }\n}\n\n/** 解开 $ref(只认本文档的 #/$defs/…)与“允许 null”的 anyOf:返回实际的 schema 与是否允许 null */\nfunction unwrap(\n root: JsonSchema,\n node: JsonSchema | undefined,\n): { node?: JsonSchema; nullable: boolean } {\n let current = node;\n let nullable = false;\n for (let depth = 0; current && depth < 10; depth++) {\n const ref = current.$ref;\n if (typeof ref === 'string' && ref.startsWith('#/$defs/')) {\n current = (root.$defs as Record<string, JsonSchema> | undefined)?.[ref.slice(8)];\n continue;\n }\n // type: ['string', 'null'](nullable)\n if (Array.isArray(current.type) && current.type.includes('null')) {\n const types = current.type.filter((type) => type !== 'null');\n nullable = true;\n current = { ...current, type: types.length === 1 ? types[0] : types };\n continue;\n }\n const variants = (current.anyOf ?? current.oneOf) as JsonSchema[] | undefined;\n if (variants) {\n const rest = variants.filter((variant) => variant.type !== 'null');\n nullable ||= rest.length < variants.length;\n if (rest.length === 1) {\n current = rest[0];\n continue;\n }\n }\n break;\n }\n return { node: current, nullable };\n}\n\nconst numberOf = (value: unknown) => (typeof value === 'number' ? value : undefined);\n\n/** 正则能不能匹配空字符串(如 `^$|^\\S+ R\\d+$` 是“选填,填了要合格式”);写错的正则当作不能 */\nfunction matchesEmpty(pattern: string): boolean {\n try {\n return new RegExp(pattern, 'u').test('');\n } catch {\n return false;\n }\n}\n\n/** 字段自己的 schema → 约束;parentRequires 表示父对象要求这个键存在 */\nfunction constraintsOf(\n node: JsonSchema,\n nullable: boolean,\n parentRequires: boolean,\n): FieldConstraints {\n const result: FieldConstraints = {};\n const type = node.type;\n if (type === 'string') {\n result.minLength = numberOf(node.minLength);\n result.maxLength = numberOf(node.maxLength);\n if (typeof node.pattern === 'string') result.pattern = node.pattern;\n if (typeof node.format === 'string') result.format = node.format;\n }\n if (type === 'number' || type === 'integer') {\n result.min = numberOf(node.minimum);\n result.max = numberOf(node.maximum);\n result.step = numberOf(node.multipleOf) ?? (type === 'integer' ? 1 : undefined);\n }\n if (Array.isArray(node.enum)) result.options = node.enum as (string | number)[];\n // 键存在不等于“必填”:空字符串、false 通过 z.string()、z.boolean() 的校验,要看值本身能不能为空\n const nonEmpty =\n type === 'string'\n ? (result.minLength ?? 0) > 0 ||\n result.format != null ||\n (result.pattern != null && !matchesEmpty(result.pattern)) ||\n result.options != null\n : type === 'boolean'\n ? node.const === true\n : type === 'array'\n ? (numberOf(node.minItems) ?? 0) > 0\n : true;\n if (parentRequires && !nullable && nonEmpty) result.required = true;\n for (const key of Object.keys(result) as (keyof FieldConstraints)[]) {\n if (result[key] === undefined) delete result[key];\n }\n return result;\n}\n\n/** 按点连接的路径找字段:对象走 properties,数组走 items(下标是数字) */\nfunction find(root: JsonSchema, path: string): FieldConstraints {\n let { node, nullable } = unwrap(root, root);\n let required = true;\n for (const segment of path.split('.')) {\n if (!node) return NONE;\n if (node.type === 'array') {\n ({ node, nullable } = unwrap(root, node.items as JsonSchema | undefined));\n required = true;\n continue;\n }\n const properties = node.properties as Record<string, JsonSchema> | undefined;\n required = ((node.required as string[] | undefined) ?? []).includes(segment);\n ({ node, nullable } = unwrap(root, properties?.[segment]));\n }\n return node ? constraintsOf(node, nullable, required) : NONE;\n}\n\n/**\n * 按 schema 创建 路径 → 约束 的查询函数;JSON Schema 在第一次查询时才转换,结果按路径缓存。\n * 没有 schema 时总是返回空约束\n */\nexport function createConstraints(\n schema: $ZodType | undefined,\n): (path: string) => FieldConstraints {\n let root: JsonSchema | undefined | null = null;\n const cache = new Map<string, FieldConstraints>();\n return (path) => {\n if (root === null) root = schema && toJsonSchema(schema);\n if (!root) return NONE;\n let found = cache.get(path);\n if (!found) {\n found = find(root, path);\n cache.set(path, found);\n }\n return found;\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** useLeaveConfirmation 的选项:站内跳转时确认对话框的文字,默认取语言包 */
2
+ export interface LeaveConfirmationOptions {
3
+ /** 标题,默认“离开这个页面?” */
4
+ title?: string;
5
+ /** 说明,默认“有未保存的修改,离开后会丢失。” */
6
+ description?: string;
7
+ }
8
+ /** 有未保存的修改时拦住离开(在 setup 里调用,组件卸载时自动解除) */
9
+ export declare function useLeaveConfirmation(read: () => boolean, options?: LeaveConfirmationOptions): void;
@@ -0,0 +1,31 @@
1
+ import { useConfig, useLang } from "../config/context.js";
2
+ import { useEventListener } from "../utils/dom/event-listener.js";
3
+ import { useConfirm } from "../overlay/AlertDialog.js";
4
+ import { onScopeDispose } from "vue";
5
+ //#region src/form/leave-confirmation.ts
6
+ /**
7
+ * 未保存离开的提醒:read() 为 true 时——
8
+ * - 关闭标签页、刷新、跳到别的网站前,浏览器问一下(beforeunload;只显示浏览器自己的固定文案);
9
+ * - 站内跳转(路由适配有 beforeLeave 时,如 vueRouterAdapter)先弹确认对话框,选“离开”才走。
10
+ *
11
+ * useLeaveConfirmation(() => form.dirty && !form.submitting);
12
+ */
13
+ /** 有未保存的修改时拦住离开(在 setup 里调用,组件卸载时自动解除) */
14
+ function useLeaveConfirmation(read, options = {}) {
15
+ useEventListener(() => read() ? window : null, "beforeunload", (event) => event.preventDefault());
16
+ const router = useConfig().router;
17
+ if (!router?.beforeLeave) return;
18
+ const lang = useLang();
19
+ const confirm = useConfirm();
20
+ const remove = router.beforeLeave(() => !read() || confirm({
21
+ title: options.title ?? lang.leaveTitle,
22
+ description: options.description ?? lang.leaveDescription,
23
+ confirmText: lang.leaveConfirm,
24
+ tone: "danger"
25
+ }));
26
+ onScopeDispose(remove);
27
+ }
28
+ //#endregion
29
+ export { useLeaveConfirmation };
30
+
31
+ //# sourceMappingURL=leave-confirmation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leave-confirmation.js","names":[],"sources":["../../src/form/leave-confirmation.ts"],"sourcesContent":["/**\n * 未保存离开的提醒:read() 为 true 时——\n * - 关闭标签页、刷新、跳到别的网站前,浏览器问一下(beforeunload;只显示浏览器自己的固定文案);\n * - 站内跳转(路由适配有 beforeLeave 时,如 vueRouterAdapter)先弹确认对话框,选“离开”才走。\n *\n * useLeaveConfirmation(() => form.dirty && !form.submitting);\n */\nimport { onScopeDispose } from 'vue';\nimport { useConfig, useLang } from '../config/context';\nimport { useConfirm } from '../overlay/AlertDialog';\nimport { useEventListener } from '../utils/dom/event-listener';\n\n/** useLeaveConfirmation 的选项:站内跳转时确认对话框的文字,默认取语言包 */\nexport interface LeaveConfirmationOptions {\n /** 标题,默认“离开这个页面?” */\n title?: string;\n /** 说明,默认“有未保存的修改,离开后会丢失。” */\n description?: string;\n}\n\n/** 有未保存的修改时拦住离开(在 setup 里调用,组件卸载时自动解除) */\nexport function useLeaveConfirmation(\n read: () => boolean,\n options: LeaveConfirmationOptions = {},\n): void {\n // 只在需要时注册:注册了 beforeunload 的页面进不了往返缓存(bfcache)\n useEventListener(\n () => (read() ? window : null),\n 'beforeunload',\n (event) => event.preventDefault(),\n );\n\n const router = useConfig().router;\n if (!router?.beforeLeave) return;\n const lang = useLang();\n const confirm = useConfirm();\n const remove = router.beforeLeave(\n () =>\n !read() ||\n confirm({\n title: options.title ?? lang.leaveTitle,\n description: options.description ?? lang.leaveDescription,\n confirmText: lang.leaveConfirm,\n tone: 'danger',\n }),\n );\n onScopeDispose(remove);\n}\n"],"mappings":";;;;;;;;;;;;;AAqBA,SAAgB,qBACd,MACA,UAAoC,CAAC,GAC/B;CAEN,uBACS,KAAK,IAAI,SAAS,MACzB,iBACC,UAAU,MAAM,eAAe,CAClC;CAEA,MAAM,SAAS,UAAU,CAAC,CAAC;CAC3B,IAAI,CAAC,QAAQ,aAAa;CAC1B,MAAM,OAAO,QAAQ;CACrB,MAAM,UAAU,WAAW;CAC3B,MAAM,SAAS,OAAO,kBAElB,CAAC,KAAK,KACN,QAAQ;EACN,OAAO,QAAQ,SAAS,KAAK;EAC7B,aAAa,QAAQ,eAAe,KAAK;EACzC,aAAa,KAAK;EAClB,MAAM;CACR,CAAC,CACL;CACA,eAAe,MAAM;AACvB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * 内置值类型的 zod schema:Decimal(金额、精确小数)与 bigint(超过 2^53 的整数、ID);
3
+ * 常见的格式:手机号(phoneSchema)、居民身份证号(idCardSchema,校验出生日期与校验码)。
4
+ *
5
+ * const schema = z.object({
6
+ * price: decimalSchema({ min: 0, scale: 2 }), // Decimal,最小 0,最多两位小数
7
+ * stock: bigintSchema({ min: 0n }),
8
+ * });
9
+ * // useForm 从 schema 推出约束:NumberField 拿到 min 0、step 0.01,不用再写一遍
10
+ *
11
+ * zod 自带的 z.bigint()、自定义类型转 JSON Schema 时表达不了,表单推不出字段约束;
12
+ * 这里用 .meta() 把 minimum、maximum、multipleOf 写进去(form-constraints 读 JSON Schema)。
13
+ * 校验用 zod 的标准错误码(too_small、too_big、not_multiple_of),提示跟着使用方配置的 zod 语言走。
14
+ */
15
+ import type Decimal from 'decimal.js';
16
+ import * as z from 'zod';
17
+ import { type NumericValue } from '../utils/data/numeric';
18
+ /** decimalSchema 的选项;边界与步长可以是数字、bigint、Decimal 或十进制文本('0.01') */
19
+ export interface DecimalSchemaOptions {
20
+ /** 最小值(含) */
21
+ min?: NumericValue | string;
22
+ /** 最大值(含) */
23
+ max?: NumericValue | string;
24
+ /** 步长:值要是 step 的整数倍(从 0 算起) */
25
+ step?: NumericValue | string;
26
+ /** 最多几位小数(金额通常是 2) */
27
+ scale?: number;
28
+ }
29
+ /** Decimal 的 schema:类型、范围、步长与小数位数 */
30
+ export declare function decimalSchema({ min, max, step, scale }?: DecimalSchemaOptions): z.ZodCustom<Decimal, Decimal>;
31
+ /** bigintSchema 的选项 */
32
+ export interface BigIntSchemaOptions {
33
+ /** 最小值(含) */
34
+ min?: bigint;
35
+ /** 最大值(含) */
36
+ max?: bigint;
37
+ }
38
+ /** bigint 的 schema:范围由 zod 精确校验,约束(转成 number,只给控件用)写进 JSON Schema */
39
+ export declare function bigintSchema({ min, max }?: BigIntSchemaOptions): z.ZodBigInt;
40
+ /** phoneSchema、idCardSchema 的选项 */
41
+ export interface PatternSchemaOptions {
42
+ /** 不符合时的提示;不写时用 zod 的“格式不对”(跟着语言包) */
43
+ message?: string;
44
+ }
45
+ /** 中国大陆手机号:1 开头、第二位 3–9、共 11 位数字(配 TextField 的 phoneFormat,值里没有空格) */
46
+ export declare function phoneSchema({ message }?: PatternSchemaOptions): z.ZodString;
47
+ /**
48
+ * 居民身份证号(GB 11643)是否有效:18 位,出生日期是真实的日期,最后一位校验码对得上(配 idCardFormat)
49
+ */
50
+ export declare function isValidIdCard(value: string): boolean;
51
+ /** 居民身份证号的 schema:长度、出生日期与校验码(isValidIdCard) */
52
+ export declare function idCardSchema({ message }?: PatternSchemaOptions): z.ZodString;
@@ -0,0 +1,97 @@
1
+ import { isDecimal, toNumber } from "../utils/data/numeric.js";
2
+ import * as z from "zod";
3
+ //#region src/form/schemas.ts
4
+ /** Decimal 的 schema:类型、范围、步长与小数位数 */
5
+ function decimalSchema({ min, max, step, scale } = {}) {
6
+ const steps = [step, scale == null ? void 0 : `1e-${scale}`].filter((item) => item != null);
7
+ return z.custom(isDecimal).check((ctx) => {
8
+ const value = ctx.value;
9
+ const Ctor = value.constructor;
10
+ const of = (bound) => isDecimal(bound) ? bound : new Ctor(String(bound));
11
+ if (min != null && value.lt(of(min))) ctx.issues.push({
12
+ code: "too_small",
13
+ origin: "number",
14
+ minimum: toNumber(of(min)),
15
+ inclusive: true,
16
+ input: value
17
+ });
18
+ if (max != null && value.gt(of(max))) ctx.issues.push({
19
+ code: "too_big",
20
+ origin: "number",
21
+ maximum: toNumber(of(max)),
22
+ inclusive: true,
23
+ input: value
24
+ });
25
+ for (const item of steps) {
26
+ const divisor = of(item);
27
+ if (!value.mod(divisor).isZero()) ctx.issues.push({
28
+ code: "not_multiple_of",
29
+ origin: "number",
30
+ divisor: toNumber(divisor),
31
+ input: toNumber(value)
32
+ });
33
+ }
34
+ }).meta({
35
+ type: "number",
36
+ ...min != null && { minimum: Number(String(min)) },
37
+ ...max != null && { maximum: Number(String(max)) },
38
+ ...steps.length > 0 && { multipleOf: Math.min(...steps.map((item) => Number(String(item)))) }
39
+ });
40
+ }
41
+ /** bigint 的 schema:范围由 zod 精确校验,约束(转成 number,只给控件用)写进 JSON Schema */
42
+ function bigintSchema({ min, max } = {}) {
43
+ let schema = z.bigint();
44
+ if (min != null) schema = schema.min(min);
45
+ if (max != null) schema = schema.max(max);
46
+ return schema.meta({
47
+ type: "integer",
48
+ ...min != null && { minimum: Number(min) },
49
+ ...max != null && { maximum: Number(max) }
50
+ });
51
+ }
52
+ /** 中国大陆手机号:1 开头、第二位 3–9、共 11 位数字(配 TextField 的 phoneFormat,值里没有空格) */
53
+ function phoneSchema({ message } = {}) {
54
+ return z.string().regex(/^1[3-9]\d{9}$/, message === void 0 ? void 0 : { message });
55
+ }
56
+ var ID_WEIGHTS = [
57
+ 7,
58
+ 9,
59
+ 10,
60
+ 5,
61
+ 8,
62
+ 4,
63
+ 2,
64
+ 1,
65
+ 6,
66
+ 3,
67
+ 7,
68
+ 9,
69
+ 10,
70
+ 5,
71
+ 8,
72
+ 4,
73
+ 2
74
+ ];
75
+ var ID_CHECK_CODES = "10X98765432";
76
+ /**
77
+ * 居民身份证号(GB 11643)是否有效:18 位,出生日期是真实的日期,最后一位校验码对得上(配 idCardFormat)
78
+ */
79
+ function isValidIdCard(value) {
80
+ if (!/^\d{17}[\dX]$/.test(value)) return false;
81
+ const [year, month, day] = [
82
+ value.slice(6, 10),
83
+ value.slice(10, 12),
84
+ value.slice(12, 14)
85
+ ].map(Number);
86
+ const birth = new Date(Date.UTC(year, month - 1, day));
87
+ if (birth.getUTCFullYear() !== year || birth.getUTCMonth() !== month - 1 || birth.getUTCDate() !== day || year < 1900) return false;
88
+ return ID_CHECK_CODES[ID_WEIGHTS.reduce((total, weight, index) => total + weight * Number(value[index]), 0) % 11] === value[17];
89
+ }
90
+ /** 居民身份证号的 schema:长度、出生日期与校验码(isValidIdCard) */
91
+ function idCardSchema({ message } = {}) {
92
+ return z.string().refine(isValidIdCard, message === void 0 ? void 0 : { message });
93
+ }
94
+ //#endregion
95
+ export { bigintSchema, decimalSchema, idCardSchema, isValidIdCard, phoneSchema };
96
+
97
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","names":[],"sources":["../../src/form/schemas.ts"],"sourcesContent":["/**\n * 内置值类型的 zod schema:Decimal(金额、精确小数)与 bigint(超过 2^53 的整数、ID);\n * 常见的格式:手机号(phoneSchema)、居民身份证号(idCardSchema,校验出生日期与校验码)。\n *\n * const schema = z.object({\n * price: decimalSchema({ min: 0, scale: 2 }), // Decimal,最小 0,最多两位小数\n * stock: bigintSchema({ min: 0n }),\n * });\n * // useForm 从 schema 推出约束:NumberField 拿到 min 0、step 0.01,不用再写一遍\n *\n * zod 自带的 z.bigint()、自定义类型转 JSON Schema 时表达不了,表单推不出字段约束;\n * 这里用 .meta() 把 minimum、maximum、multipleOf 写进去(form-constraints 读 JSON Schema)。\n * 校验用 zod 的标准错误码(too_small、too_big、not_multiple_of),提示跟着使用方配置的 zod 语言走。\n */\nimport type Decimal from 'decimal.js';\nimport * as z from 'zod';\nimport { isDecimal, toNumber, type NumericValue } from '../utils/data/numeric';\n\n/** decimalSchema 的选项;边界与步长可以是数字、bigint、Decimal 或十进制文本('0.01') */\nexport interface DecimalSchemaOptions {\n /** 最小值(含) */\n min?: NumericValue | string;\n /** 最大值(含) */\n max?: NumericValue | string;\n /** 步长:值要是 step 的整数倍(从 0 算起) */\n step?: NumericValue | string;\n /** 最多几位小数(金额通常是 2) */\n scale?: number;\n}\n\n/** Decimal 的 schema:类型、范围、步长与小数位数 */\nexport function decimalSchema({ min, max, step, scale }: DecimalSchemaOptions = {}) {\n // 小数位数等价于步长 10^-scale;两个都给时都要满足\n const steps = [step, scale == null ? undefined : `1e-${scale}`].filter((item) => item != null);\n return z\n .custom<Decimal>(isDecimal)\n .check((ctx) => {\n const value = ctx.value;\n // 边界按值自己的构造函数转成 Decimal:使用方可能用 Decimal.clone 配了精度\n const Ctor = value.constructor as typeof Decimal;\n const of = (bound: NumericValue | string) =>\n isDecimal(bound) ? bound : new Ctor(String(bound));\n if (min != null && value.lt(of(min))) {\n ctx.issues.push({\n code: 'too_small',\n origin: 'number',\n minimum: toNumber(of(min)),\n inclusive: true,\n input: value,\n });\n }\n if (max != null && value.gt(of(max))) {\n ctx.issues.push({\n code: 'too_big',\n origin: 'number',\n maximum: toNumber(of(max)),\n inclusive: true,\n input: value,\n });\n }\n for (const item of steps) {\n const divisor = of(item);\n if (!value.mod(divisor).isZero()) {\n ctx.issues.push({\n code: 'not_multiple_of',\n origin: 'number',\n divisor: toNumber(divisor),\n // zod 的类型要求这里是 number(只用来拼提示文字);判断本身已经按十进制精确做过了\n input: toNumber(value),\n });\n }\n }\n })\n .meta({\n type: 'number',\n ...(min != null && { minimum: Number(String(min)) }),\n ...(max != null && { maximum: Number(String(max)) }),\n ...(steps.length > 0 && {\n multipleOf: Math.min(...steps.map((item) => Number(String(item)))),\n }),\n });\n}\n\n/** bigintSchema 的选项 */\nexport interface BigIntSchemaOptions {\n /** 最小值(含) */\n min?: bigint;\n /** 最大值(含) */\n max?: bigint;\n}\n\n/** bigint 的 schema:范围由 zod 精确校验,约束(转成 number,只给控件用)写进 JSON Schema */\nexport function bigintSchema({ min, max }: BigIntSchemaOptions = {}) {\n let schema = z.bigint();\n if (min != null) schema = schema.min(min);\n if (max != null) schema = schema.max(max);\n return schema.meta({\n type: 'integer',\n ...(min != null && { minimum: Number(min) }),\n ...(max != null && { maximum: Number(max) }),\n });\n}\n\n/** phoneSchema、idCardSchema 的选项 */\nexport interface PatternSchemaOptions {\n /** 不符合时的提示;不写时用 zod 的“格式不对”(跟着语言包) */\n message?: string;\n}\n\n/** 中国大陆手机号:1 开头、第二位 3–9、共 11 位数字(配 TextField 的 phoneFormat,值里没有空格) */\nexport function phoneSchema({ message }: PatternSchemaOptions = {}) {\n return z.string().regex(/^1[3-9]\\d{9}$/, message === undefined ? undefined : { message });\n}\n\nconst ID_WEIGHTS = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\nconst ID_CHECK_CODES = '10X98765432';\n\n/**\n * 居民身份证号(GB 11643)是否有效:18 位,出生日期是真实的日期,最后一位校验码对得上(配 idCardFormat)\n */\nexport function isValidIdCard(value: string): boolean {\n if (!/^\\d{17}[\\dX]$/.test(value)) return false;\n const [year, month, day] = [value.slice(6, 10), value.slice(10, 12), value.slice(12, 14)].map(\n Number,\n ) as [number, number, number];\n const birth = new Date(Date.UTC(year, month - 1, day));\n if (\n birth.getUTCFullYear() !== year ||\n birth.getUTCMonth() !== month - 1 ||\n birth.getUTCDate() !== day ||\n year < 1900\n ) {\n return false;\n }\n const sum = ID_WEIGHTS.reduce((total, weight, index) => total + weight * Number(value[index]), 0);\n return ID_CHECK_CODES[sum % 11] === value[17];\n}\n\n/** 居民身份证号的 schema:长度、出生日期与校验码(isValidIdCard) */\nexport function idCardSchema({ message }: PatternSchemaOptions = {}) {\n return z.string().refine(isValidIdCard, message === undefined ? undefined : { message });\n}\n"],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * 表单控制器:值、校验、错误、提交状态放在一个对象里,交给 <Form controller>(COMPONENTS.md §1 的“命令式能力”)。
3
+ * 校验用 zod(使用方安装的 peer 依赖,zod 与 zod/mini 都可以),也可以写 validate 函数。
4
+ * 参考 TanStack Form、React Hook Form 的做法,取其中最常用的部分。
5
+ *
6
+ * const form = useForm({
7
+ * schema: z.object({ email: z.email('邮箱格式不对'), age: z.coerce.number().int().min(18, '未满 18 岁') }),
8
+ * initial: { email: '', age: '' }, // 类型是 schema 的输入(z.input)
9
+ * onSubmit: (values) => api.signup(values), // 拿到解析后的输出(z.output):age 已是数字
10
+ * });
11
+ * <Form controller={form}>
12
+ * <FormErrorSummary /> // 提交没通过时在顶上列出各项错误,点了跳到字段
13
+ * <form.Field name="email" label="邮箱"><TextField /></form.Field> // 只有一个控件时自动绑定值
14
+ * <Button type="submit" loading={form.submitting}>登录</Button>
15
+ * </Form>
16
+ *
17
+ * form.Field 里只有一个控件、控件上没写值时,自动绑定 form.values 的这个字段(同 Ant Design Form.Item 的 name):
18
+ * 写回的是 _value;声明了 _checked 而没有 _value 的控件(Switch、单个 Checkbox)写回 _checked,也可以用 Field 的 valueProp 指定。
19
+ * 自己写了 _value={form.values.email} 时照旧。
20
+ *
21
+ * 何时显示错误(“迟一点批评、早一点肯定”):字段失焦后才显示它的错误,之后它随输入实时更新;提交过一次之后,所有字段随输入实时更新。
22
+ * 不属于哪个字段的错误(对象级 refine 没写 path、validate 返回的 '' 键、setError('', …))是整份表单的错误,见 formError。
23
+ * 字段的值经 v-model 写回,中文输入法组合输入期间不写回,所以组合中途不会触发校验。
24
+ *
25
+ * schema 还决定字段的约束(form-constraints.ts):标签的必填标记、输入框的 maxlength、NumberField 的 min / max
26
+ * 都从 schema 来,不用在控件上再写一遍。
27
+ *
28
+ * - 数组字段:`form.array('items')` 增删、插入、移动,给每项一个稳定的 key;错误与失焦记录跟着下标移动。
29
+ * - 单字段异步校验:`fields: { username: { validate: (name, values, signal) => api.taken(name, { signal }) } }`,
30
+ * 这个字段变化时防抖运行、只采用最后一次的结果,提交时等它完成;`form.validating('username')` 显示校验中。
31
+ * - 改动:`form.dirty` 是值与初始值(或上次 reset 的值)不同;未保存离开的提醒用 useLeaveConfirmation(() => form.dirty)。
32
+ * - 局部校验:`form.validate(['name', 'address'])` 只校验这些字段(含子路径)并显示它们的错误,分步表单进下一步前用。
33
+ * - 字段联动:`dependencies: { confirm: ['password'] }`,password 改了重新校验 confirm(confirm 填过或失焦过时显示它的错误),
34
+ * confirm 的单字段校验也跟着重跑。
35
+ */
36
+ import type { TsxComponent } from '@zerodep-dev/vue-tsx-pro-tsx';
37
+ import { type $ZodType } from 'zod/v4/core';
38
+ import { type FieldProps } from './Field';
39
+ import { type FieldConstraints } from './form-constraints';
40
+ /** 字段路径 → 错误信息;路径用点连接(`address.city`、`items.0.name`) */
41
+ export type FormErrors = Partial<Record<string, string>>;
42
+ /** 当作一个整体的值:不再往里展开路径 */
43
+ type FieldLeaf = string | number | boolean | bigint | symbol | null | undefined | Date | Blob;
44
+ /**
45
+ * 值里的字段路径:点连接,数组下标是数字(`email`、`address.city`、`items.0.name`)。
46
+ * 最多展开 6 层,再深的结构写成 string 也照样能用(Field 的 name、setError 都接受)
47
+ */
48
+ export type FieldPath<Values, Depth extends unknown[] = []> = Depth['length'] extends 6 ? never : Values extends readonly (infer Item)[] ? `${number}` | `${number}.${FieldPath<Item, [...Depth, unknown]>}` : Values extends object ? {
49
+ [K in keyof Values & string]: K | (NonNullable<Values[K]> extends FieldLeaf ? never : `${K}.${FieldPath<NonNullable<Values[K]>, [...Depth, unknown]>}`);
50
+ }[keyof Values & string] : never;
51
+ /** 字段路径 P 处的值的类型(`PathValue<Values, 'items.0.name'>` → string) */
52
+ export type PathValue<Values, P extends string> = P extends `${infer Key}.${infer Rest}` ? Values extends readonly (infer Item)[] ? PathValue<NonNullable<Item>, Rest> : Key extends keyof Values ? PathValue<NonNullable<Values[Key]>, Rest> : never : Values extends readonly (infer Item)[] ? Item : P extends keyof Values ? Values[P] : never;
53
+ /** 值是数组的字段路径:form.array 只接受这些 */
54
+ export type ArrayPath<Values> = {
55
+ [P in FieldPath<Values>]: NonNullable<PathValue<Values, P>> extends readonly unknown[] ? P : never;
56
+ }[FieldPath<Values>];
57
+ /** 单个字段的校验:只在这个字段变化时运行(防抖),适合要请求接口的“用户名已占用” */
58
+ export interface FieldValidator<Value, Values> {
59
+ /** 返回错误信息,通过时返回 undefined;signal 在值又变了、表单重置时中止 */
60
+ validate: (value: Value, values: Values, signal: AbortSignal) => string | undefined | Promise<string | undefined>;
61
+ /** 值停止变化多久(毫秒)后运行,默认 300 */
62
+ debounce?: number;
63
+ }
64
+ /** 数组字段的操作:form.array(path) 的返回值 */
65
+ export interface FieldArray<Item> {
66
+ /** 当前的各项(就是 values 里的数组) */
67
+ readonly items: readonly Item[];
68
+ /** 每项一个稳定的 key:渲染列表时用,增删、移动后不变 */
69
+ readonly keys: readonly string[];
70
+ /** 加到末尾 */
71
+ append(item: Item): void;
72
+ /** 插到 index 处 */
73
+ insert(index: number, item: Item): void;
74
+ /** 删掉 index 处的一项 */
75
+ remove(index: number): void;
76
+ /** 把 from 处的一项移到 to 处 */
77
+ move(from: number, to: number): void;
78
+ }
79
+ /** 什么时候开始校验;提交过一次之后总是随输入更新 */
80
+ export interface FormValidateTimings {
81
+ /** 失焦后(默认) */
82
+ blur: unknown;
83
+ /** 输入时 */
84
+ change: unknown;
85
+ /** 只在提交时 */
86
+ submit: unknown;
87
+ }
88
+ /** useForm 的选项;Values 是表单里的值(有 schema 时是它的输入类型),Output 是校验通过后交给 onSubmit 的值 */
89
+ export interface FormOptions<Values extends object, Output = Values> {
90
+ /** 初始值;reset() 回到它 */
91
+ initial: Values;
92
+ /** zod schema:整份值一起校验,issue 的 path 决定错误挂在哪个字段上;字段约束也从它推出 */
93
+ schema?: $ZodType<Output, Values>;
94
+ /** 自定义校验:返回各字段的错误(可以是 Promise),与 schema 的结果合并 */
95
+ validate?: (values: Values) => FormErrors | Promise<FormErrors>;
96
+ /**
97
+ * 单字段异步校验:按字段路径给出,这个字段变化时防抖运行,结果与 schema 的合并(schema 的错误优先)。
98
+ * NoInfer:Values 只从 initial 与 schema 推出,validate 的参数类型才能跟着推出来
99
+ */
100
+ fields?: NoInfer<{
101
+ [P in FieldPath<Values>]?: FieldValidator<PathValue<Values, P>, Values>;
102
+ }>;
103
+ /** 什么时候开始校验,默认 blur;提交过一次之后总是随输入更新 */
104
+ validateOn?: keyof FormValidateTimings;
105
+ /**
106
+ * 字段联动:字段 → 它依赖的字段。依赖的值改了就重新校验它(它填过或失焦过时显示错误),它的单字段校验也重跑。
107
+ * 如 `{ confirm: ['password'], endDate: ['startDate'] }`
108
+ */
109
+ dependencies?: NoInfer<{
110
+ [P in FieldPath<Values>]?: readonly FieldPath<Values>[];
111
+ }>;
112
+ /** 校验通过后调用,拿到 schema 解析后的值(转换、默认值、coerce 都已生效);返回 Promise 时 submitting 一直为 true 直到完成 */
113
+ onSubmit?: (values: Output) => unknown;
114
+ }
115
+ /** 控制器里与值的类型无关的部分:Form、Field 只用到它,任何 FormController 都能交给 <Form controller> */
116
+ export interface FormControllerBase {
117
+ /** 所有字段当前的校验错误(含还没显示的);整份表单的错误在 '' 键上 */
118
+ readonly errors: Readonly<FormErrors>;
119
+ /** 整份表单的错误(不属于哪个字段),提交过之后才有;放在提交按钮旁或表单顶上 */
120
+ readonly formError: string | undefined;
121
+ /** 正在执行 onSubmit */
122
+ readonly submitting: boolean;
123
+ /** 提交过几次(不论成功与否) */
124
+ readonly submitCount: number;
125
+ /** 重置过几次:控件据此丢掉自己还没写回的输入(useFormReset) */
126
+ readonly resetCount: number;
127
+ /** 值与初始值(或上次 reset 的值)不同 */
128
+ readonly dirty: boolean;
129
+ /** 字段(不写时为任一字段)的单字段校验正在进行 */
130
+ validating(path?: string): boolean;
131
+ /** 字段的错误是否该显示:失焦过、或提交过之后才显示;Field 用它 */
132
+ visibleError(path: string): string | undefined;
133
+ /** 字段失焦:Field 在焦点离开字段时调用 */
134
+ blur(path: string): void;
135
+ /**
136
+ * 校验整份表单,返回是否通过。给了 paths 时只看这些字段(含子路径):它们的错误立即显示,
137
+ * 返回它们是否都通过(分步表单进下一步前用)
138
+ */
139
+ validate(paths?: readonly string[]): Promise<boolean>;
140
+ /** 提交:先校验,通过后调用 onSubmit;返回是否通过校验 */
141
+ submit(): Promise<boolean>;
142
+ /** 回到初始值,清空错误与失焦记录 */
143
+ reset(): void;
144
+ /** 字段从 schema 推出的约束(必填、长度、范围…);Field 交给控件,控件上显式写的优先 */
145
+ constraints(path: string): FieldConstraints;
146
+ /** 字段的当前值(按点连接的路径):Field 自动绑定值时用 */
147
+ getValue(path: string): unknown;
148
+ /** 写字段的值:中途是 null / undefined 时什么也不做 */
149
+ setValue(path: string, value: unknown): void;
150
+ /** 写了 name 的 Field 登记标签与控件的 id:错误汇总据此显示字段名、跳到控件。返回注销函数 */
151
+ register(path: string, field: FormFieldInfo): () => void;
152
+ /** 登记过的字段,按登记(渲染)的顺序 */
153
+ readonly fields: ReadonlyMap<string, FormFieldInfo>;
154
+ }
155
+ /** Field 登记的字段信息 */
156
+ export interface FormFieldInfo {
157
+ /** 标签的文字 */
158
+ label: string;
159
+ /** 控件的 id:错误汇总的链接指向它 */
160
+ controlId: string;
161
+ }
162
+ /** 表单控制器:useForm 的返回值 */
163
+ export interface FormController<Values extends object> extends FormControllerBase {
164
+ /** 当前值(响应式):控件写 _value={form.values.email} */
165
+ readonly values: Values;
166
+ /** 回到初始值(或给定的值,之后 dirty 以它为准),清空错误与失焦记录;保存成功后写 reset(form.values) */
167
+ reset(values?: Values): void;
168
+ /** 字段与初始值不同 */
169
+ isDirty(path: FieldPath<Values>): boolean;
170
+ /** 校验整份表单,或只校验 paths 里的字段(含子路径)并显示它们的错误;返回是否通过 */
171
+ validate(paths?: readonly FieldPath<Values>[]): Promise<boolean>;
172
+ /** 数组字段的增删、插入、移动 */
173
+ array<P extends ArrayPath<Values>>(path: P): FieldArray<NonNullable<PathValue<Values, P>> extends readonly (infer Item)[] ? Item : never>;
174
+ /**
175
+ * 设置某个字段的错误(如服务端返回的“邮箱已注册”),undefined 清除;'' 是整份表单的错误。
176
+ * 校验不会冲掉它,这个字段(整份表单的错误是任一字段)的值改了之后自动消失
177
+ */
178
+ setError(path: FieldPath<Values> | '', message: string | undefined): void;
179
+ /**
180
+ * 就是 Field 组件,只是 name 的类型收窄为这份值的字段路径,写错字段名时类型检查报错:
181
+ * `<form.Field name="email" label="邮箱">…</form.Field>`(参考 TanStack Form 的 form.Field)
182
+ */
183
+ readonly Field: TsxComponent<Omit<FieldProps, 'name'> & {
184
+ name?: FieldPath<Values>;
185
+ }>;
186
+ }
187
+ /**
188
+ * 创建表单控制器(组件 setup 里或模块顶层都可以)。
189
+ * 有 schema 时值的类型取自 schema(initial 要符合它的输入类型),onSubmit 拿到解析后的输出
190
+ */
191
+ export declare function useForm<Values extends object, Output = Values>(options: FormOptions<Values, Output>): FormController<Values>;
192
+ export {};