@xihan-ui/vue 1.0.0-alpha.2 → 1.0.0-alpha.3

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 (544) hide show
  1. package/CHANGELOG.md +558 -0
  2. package/README.md +1 -1
  3. package/dist/components/accordion/accordion.d.ts +1 -1
  4. package/dist/components/accordion/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion/accordion.js +15 -2
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/accordion/use-accordion.d.ts +3 -0
  8. package/dist/components/accordion/use-accordion.d.ts.map +1 -1
  9. package/dist/components/accordion/use-accordion.js +14 -3
  10. package/dist/components/accordion/use-accordion.js.map +1 -1
  11. package/dist/components/anchor/anchor.d.ts +1 -1
  12. package/dist/components/avatar-group/avatar-group.d.ts.map +1 -1
  13. package/dist/components/avatar-group/avatar-group.js +2 -1
  14. package/dist/components/avatar-group/avatar-group.js.map +1 -1
  15. package/dist/components/back-top/back-top.d.ts +2 -2
  16. package/dist/components/badge/badge.d.ts +57 -1
  17. package/dist/components/badge/badge.d.ts.map +1 -1
  18. package/dist/components/badge/badge.js +32 -2
  19. package/dist/components/badge/badge.js.map +1 -1
  20. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  21. package/dist/components/button-group/button-group.d.ts +1 -1
  22. package/dist/components/button-group/button-group.d.ts.map +1 -1
  23. package/dist/components/button-group/button-group.js +2 -1
  24. package/dist/components/button-group/button-group.js.map +1 -1
  25. package/dist/components/button.d.ts +13 -6
  26. package/dist/components/button.d.ts.map +1 -1
  27. package/dist/components/button.js +11 -2
  28. package/dist/components/button.js.map +1 -1
  29. package/dist/components/calendar/calendar.d.ts +167 -7
  30. package/dist/components/calendar/calendar.d.ts.map +1 -1
  31. package/dist/components/calendar/calendar.js +125 -16
  32. package/dist/components/calendar/calendar.js.map +1 -1
  33. package/dist/components/calendar/use-calendar.d.ts +1 -1
  34. package/dist/components/calendar/use-calendar.d.ts.map +1 -1
  35. package/dist/components/calendar/use-calendar.js +3 -2
  36. package/dist/components/calendar/use-calendar.js.map +1 -1
  37. package/dist/components/card/card.d.ts +1 -1
  38. package/dist/components/card/card.d.ts.map +1 -1
  39. package/dist/components/card/card.js +2 -1
  40. package/dist/components/card/card.js.map +1 -1
  41. package/dist/components/cascader/cascader.d.ts +6 -3
  42. package/dist/components/cascader/cascader.d.ts.map +1 -1
  43. package/dist/components/cascader/cascader.js +15 -6
  44. package/dist/components/cascader/cascader.js.map +1 -1
  45. package/dist/components/cascader/use-cascader.d.ts +4 -0
  46. package/dist/components/cascader/use-cascader.d.ts.map +1 -1
  47. package/dist/components/cascader/use-cascader.js +14 -3
  48. package/dist/components/cascader/use-cascader.js.map +1 -1
  49. package/dist/components/checkbox/checkbox.d.ts +17 -3
  50. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  51. package/dist/components/checkbox/checkbox.js +12 -2
  52. package/dist/components/checkbox/checkbox.js.map +1 -1
  53. package/dist/components/code-block/code-block.d.ts +3 -0
  54. package/dist/components/code-block/code-block.d.ts.map +1 -1
  55. package/dist/components/code-block/code-block.js +2 -0
  56. package/dist/components/code-block/code-block.js.map +1 -1
  57. package/dist/components/collapsible/collapsible.d.ts +10 -2
  58. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  59. package/dist/components/collapsible/collapsible.js +21 -3
  60. package/dist/components/collapsible/collapsible.js.map +1 -1
  61. package/dist/components/collapsible/use-collapsible.d.ts +4 -1
  62. package/dist/components/collapsible/use-collapsible.d.ts.map +1 -1
  63. package/dist/components/collapsible/use-collapsible.js +22 -4
  64. package/dist/components/collapsible/use-collapsible.js.map +1 -1
  65. package/dist/components/color-picker/color-picker.d.ts +4 -1
  66. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  67. package/dist/components/color-picker/color-picker.js +15 -6
  68. package/dist/components/color-picker/color-picker.js.map +1 -1
  69. package/dist/components/color-picker/use-color-picker.d.ts +4 -0
  70. package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
  71. package/dist/components/color-picker/use-color-picker.js +13 -2
  72. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  73. package/dist/components/combobox/combobox.d.ts +15 -1
  74. package/dist/components/combobox/combobox.d.ts.map +1 -1
  75. package/dist/components/combobox/combobox.js +17 -9
  76. package/dist/components/combobox/combobox.js.map +1 -1
  77. package/dist/components/combobox/use-combobox.d.ts +4 -0
  78. package/dist/components/combobox/use-combobox.d.ts.map +1 -1
  79. package/dist/components/combobox/use-combobox.js +14 -3
  80. package/dist/components/combobox/use-combobox.js.map +1 -1
  81. package/dist/components/context-menu/context-menu.d.ts +44 -3
  82. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  83. package/dist/components/context-menu/context-menu.js +61 -17
  84. package/dist/components/context-menu/context-menu.js.map +1 -1
  85. package/dist/components/context-menu/use-context-menu.d.ts +4 -0
  86. package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
  87. package/dist/components/context-menu/use-context-menu.js +14 -3
  88. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  89. package/dist/components/date-field/date-field.d.ts +38 -10
  90. package/dist/components/date-field/date-field.d.ts.map +1 -1
  91. package/dist/components/date-field/date-field.js +35 -9
  92. package/dist/components/date-field/date-field.js.map +1 -1
  93. package/dist/components/date-picker/context.js +6 -6
  94. package/dist/components/date-picker/context.js.map +1 -1
  95. package/dist/components/date-picker/date-picker.d.ts +251 -12
  96. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  97. package/dist/components/date-picker/date-picker.js +204 -34
  98. package/dist/components/date-picker/date-picker.js.map +1 -1
  99. package/dist/components/date-picker/use-date-picker.d.ts +5 -1
  100. package/dist/components/date-picker/use-date-picker.d.ts.map +1 -1
  101. package/dist/components/date-picker/use-date-picker.js +14 -3
  102. package/dist/components/date-picker/use-date-picker.js.map +1 -1
  103. package/dist/components/descriptions/descriptions.d.ts.map +1 -1
  104. package/dist/components/descriptions/descriptions.js +6 -4
  105. package/dist/components/descriptions/descriptions.js.map +1 -1
  106. package/dist/components/dialog/dialog.d.ts +19 -2
  107. package/dist/components/dialog/dialog.d.ts.map +1 -1
  108. package/dist/components/dialog/dialog.js +23 -6
  109. package/dist/components/dialog/dialog.js.map +1 -1
  110. package/dist/components/dialog/use-dialog.d.ts +2 -0
  111. package/dist/components/dialog/use-dialog.d.ts.map +1 -1
  112. package/dist/components/dialog/use-dialog.js +9 -4
  113. package/dist/components/dialog/use-dialog.js.map +1 -1
  114. package/dist/components/download-trigger/download-trigger.d.ts +66 -0
  115. package/dist/components/download-trigger/download-trigger.d.ts.map +1 -0
  116. package/dist/components/download-trigger/download-trigger.js +56 -0
  117. package/dist/components/download-trigger/download-trigger.js.map +1 -0
  118. package/dist/components/download-trigger/use-download-trigger.d.ts +10 -0
  119. package/dist/components/download-trigger/use-download-trigger.d.ts.map +1 -0
  120. package/dist/components/download-trigger/use-download-trigger.js +16 -0
  121. package/dist/components/download-trigger/use-download-trigger.js.map +1 -0
  122. package/dist/components/drawer/drawer.d.ts +50 -2
  123. package/dist/components/drawer/drawer.d.ts.map +1 -1
  124. package/dist/components/drawer/drawer.js +39 -7
  125. package/dist/components/drawer/drawer.js.map +1 -1
  126. package/dist/components/drawer/use-drawer.d.ts +3 -1
  127. package/dist/components/drawer/use-drawer.d.ts.map +1 -1
  128. package/dist/components/drawer/use-drawer.js +11 -5
  129. package/dist/components/drawer/use-drawer.js.map +1 -1
  130. package/dist/components/dynamic-input/dynamic-input.d.ts +2 -2
  131. package/dist/components/dynamic-input/dynamic-input.d.ts.map +1 -1
  132. package/dist/components/dynamic-input/dynamic-input.js +4 -4
  133. package/dist/components/dynamic-input/dynamic-input.js.map +1 -1
  134. package/dist/components/ellipsis/ellipsis.d.ts +1 -1
  135. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  136. package/dist/components/empty-state/empty-state.js +2 -1
  137. package/dist/components/empty-state/empty-state.js.map +1 -1
  138. package/dist/components/field/field.d.ts +9 -0
  139. package/dist/components/field/field.d.ts.map +1 -1
  140. package/dist/components/field/field.js +17 -1
  141. package/dist/components/field/field.js.map +1 -1
  142. package/dist/components/fieldset/context.d.ts +6 -0
  143. package/dist/components/fieldset/context.d.ts.map +1 -0
  144. package/dist/components/fieldset/context.js +15 -0
  145. package/dist/components/fieldset/context.js.map +1 -0
  146. package/dist/components/fieldset/fieldset.d.ts +57 -0
  147. package/dist/components/fieldset/fieldset.d.ts.map +1 -0
  148. package/dist/components/fieldset/fieldset.js +56 -0
  149. package/dist/components/fieldset/fieldset.js.map +1 -0
  150. package/dist/components/fieldset/use-fieldset.d.ts +10 -0
  151. package/dist/components/fieldset/use-fieldset.d.ts.map +1 -0
  152. package/dist/components/fieldset/use-fieldset.js +14 -0
  153. package/dist/components/fieldset/use-fieldset.js.map +1 -0
  154. package/dist/components/file-upload/file-upload.d.ts +11 -3
  155. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  156. package/dist/components/file-upload/file-upload.js +15 -3
  157. package/dist/components/file-upload/file-upload.js.map +1 -1
  158. package/dist/components/flex/flex.d.ts +1 -1
  159. package/dist/components/floating-panel/context.d.ts +6 -0
  160. package/dist/components/floating-panel/context.d.ts.map +1 -0
  161. package/dist/components/floating-panel/context.js +15 -0
  162. package/dist/components/floating-panel/context.js.map +1 -0
  163. package/dist/components/floating-panel/floating-panel.d.ts +216 -0
  164. package/dist/components/floating-panel/floating-panel.d.ts.map +1 -0
  165. package/dist/components/floating-panel/floating-panel.js +202 -0
  166. package/dist/components/floating-panel/floating-panel.js.map +1 -0
  167. package/dist/components/floating-panel/use-floating-panel.d.ts +18 -0
  168. package/dist/components/floating-panel/use-floating-panel.d.ts.map +1 -0
  169. package/dist/components/floating-panel/use-floating-panel.js +28 -0
  170. package/dist/components/floating-panel/use-floating-panel.js.map +1 -0
  171. package/dist/components/form/form.d.ts +1 -1
  172. package/dist/components/heatmap/context.d.ts +7 -0
  173. package/dist/components/heatmap/context.d.ts.map +1 -0
  174. package/dist/components/heatmap/context.js +32 -0
  175. package/dist/components/heatmap/context.js.map +1 -0
  176. package/dist/components/heatmap/heatmap.d.ts +352 -0
  177. package/dist/components/heatmap/heatmap.d.ts.map +1 -0
  178. package/dist/components/heatmap/heatmap.js +374 -0
  179. package/dist/components/heatmap/heatmap.js.map +1 -0
  180. package/dist/components/heatmap/use-heatmap.d.ts +13 -0
  181. package/dist/components/heatmap/use-heatmap.d.ts.map +1 -0
  182. package/dist/components/heatmap/use-heatmap.js +20 -0
  183. package/dist/components/heatmap/use-heatmap.js.map +1 -0
  184. package/dist/components/hotkeys/hotkeys.d.ts +87 -0
  185. package/dist/components/hotkeys/hotkeys.d.ts.map +1 -0
  186. package/dist/components/hotkeys/hotkeys.js +101 -0
  187. package/dist/components/hotkeys/hotkeys.js.map +1 -0
  188. package/dist/components/hover-card/hover-card.d.ts +11 -3
  189. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  190. package/dist/components/hover-card/hover-card.js +25 -11
  191. package/dist/components/hover-card/hover-card.js.map +1 -1
  192. package/dist/components/hover-card/use-hover-card.d.ts +4 -0
  193. package/dist/components/hover-card/use-hover-card.d.ts.map +1 -1
  194. package/dist/components/hover-card/use-hover-card.js +14 -3
  195. package/dist/components/hover-card/use-hover-card.js.map +1 -1
  196. package/dist/components/icon/icon.d.ts +1 -1
  197. package/dist/components/icon/icon.d.ts.map +1 -1
  198. package/dist/components/icon/icon.js +2 -1
  199. package/dist/components/icon/icon.js.map +1 -1
  200. package/dist/components/icon-wrapper/icon-wrapper.d.ts +1 -1
  201. package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +1 -1
  202. package/dist/components/icon-wrapper/icon-wrapper.js +2 -1
  203. package/dist/components/icon-wrapper/icon-wrapper.js.map +1 -1
  204. package/dist/components/image-cropper/context.d.ts +6 -0
  205. package/dist/components/image-cropper/context.d.ts.map +1 -0
  206. package/dist/components/image-cropper/context.js +15 -0
  207. package/dist/components/image-cropper/context.js.map +1 -0
  208. package/dist/components/image-cropper/image-cropper.d.ts +195 -0
  209. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -0
  210. package/dist/components/image-cropper/image-cropper.js +165 -0
  211. package/dist/components/image-cropper/image-cropper.js.map +1 -0
  212. package/dist/components/image-cropper/use-image-cropper.d.ts +15 -0
  213. package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -0
  214. package/dist/components/image-cropper/use-image-cropper.js +22 -0
  215. package/dist/components/image-cropper/use-image-cropper.js.map +1 -0
  216. package/dist/components/image-viewer/image-viewer.d.ts +11 -3
  217. package/dist/components/image-viewer/image-viewer.d.ts.map +1 -1
  218. package/dist/components/image-viewer/image-viewer.js +29 -16
  219. package/dist/components/image-viewer/image-viewer.js.map +1 -1
  220. package/dist/components/image-viewer/use-image-viewer.d.ts +2 -0
  221. package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
  222. package/dist/components/image-viewer/use-image-viewer.js +9 -4
  223. package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
  224. package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
  225. package/dist/components/json-viewer/json-viewer.d.ts +120 -0
  226. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -0
  227. package/dist/components/json-viewer/json-viewer.js +111 -0
  228. package/dist/components/json-viewer/json-viewer.js.map +1 -0
  229. package/dist/components/json-viewer/use-json-viewer.d.ts +13 -0
  230. package/dist/components/json-viewer/use-json-viewer.d.ts.map +1 -0
  231. package/dist/components/json-viewer/use-json-viewer.js +19 -0
  232. package/dist/components/json-viewer/use-json-viewer.js.map +1 -0
  233. package/dist/components/list/list.d.ts.map +1 -1
  234. package/dist/components/list/list.js +6 -4
  235. package/dist/components/list/list.js.map +1 -1
  236. package/dist/components/masonry/masonry.d.ts +41 -0
  237. package/dist/components/masonry/masonry.d.ts.map +1 -0
  238. package/dist/components/masonry/masonry.js +159 -0
  239. package/dist/components/masonry/masonry.js.map +1 -0
  240. package/dist/components/mention/mention.d.ts +7 -1
  241. package/dist/components/mention/mention.d.ts.map +1 -1
  242. package/dist/components/mention/mention.js +9 -5
  243. package/dist/components/mention/mention.js.map +1 -1
  244. package/dist/components/mention/use-mention.d.ts +4 -0
  245. package/dist/components/mention/use-mention.d.ts.map +1 -1
  246. package/dist/components/mention/use-mention.js +13 -2
  247. package/dist/components/mention/use-mention.js.map +1 -1
  248. package/dist/components/menu/context.d.ts +9 -1
  249. package/dist/components/menu/context.d.ts.map +1 -1
  250. package/dist/components/menu/context.js +10 -1
  251. package/dist/components/menu/context.js.map +1 -1
  252. package/dist/components/menu/menu.d.ts +72 -4
  253. package/dist/components/menu/menu.d.ts.map +1 -1
  254. package/dist/components/menu/menu.js +78 -20
  255. package/dist/components/menu/menu.js.map +1 -1
  256. package/dist/components/menu/use-menu.d.ts +4 -0
  257. package/dist/components/menu/use-menu.d.ts.map +1 -1
  258. package/dist/components/menu/use-menu.js +14 -3
  259. package/dist/components/menu/use-menu.js.map +1 -1
  260. package/dist/components/menubar/context.d.ts +21 -0
  261. package/dist/components/menubar/context.d.ts.map +1 -0
  262. package/dist/components/menubar/context.js +19 -1
  263. package/dist/components/menubar/context.js.map +1 -1
  264. package/dist/components/menubar/menubar.d.ts +129 -2
  265. package/dist/components/menubar/menubar.d.ts.map +1 -1
  266. package/dist/components/menubar/menubar.js +152 -16
  267. package/dist/components/menubar/menubar.js.map +1 -1
  268. package/dist/components/menubar/use-menubar.d.ts +2 -0
  269. package/dist/components/menubar/use-menubar.d.ts.map +1 -1
  270. package/dist/components/menubar/use-menubar.js +9 -3
  271. package/dist/components/menubar/use-menubar.js.map +1 -1
  272. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  273. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  274. package/dist/components/navigation-menu/navigation-menu.js +22 -3
  275. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  276. package/dist/components/navigation-menu/use-navigation-menu.d.ts +2 -0
  277. package/dist/components/navigation-menu/use-navigation-menu.d.ts.map +1 -1
  278. package/dist/components/navigation-menu/use-navigation-menu.js +22 -2
  279. package/dist/components/navigation-menu/use-navigation-menu.js.map +1 -1
  280. package/dist/components/number-animation/number-animation.d.ts +2 -2
  281. package/dist/components/number-field/number-field.d.ts +23 -2
  282. package/dist/components/number-field/number-field.d.ts.map +1 -1
  283. package/dist/components/number-field/number-field.js +16 -1
  284. package/dist/components/number-field/number-field.js.map +1 -1
  285. package/dist/components/page-header/page-header.d.ts.map +1 -1
  286. package/dist/components/page-header/page-header.js +2 -1
  287. package/dist/components/page-header/page-header.js.map +1 -1
  288. package/dist/components/pagination/pagination.d.ts +2 -2
  289. package/dist/components/password-input/context.d.ts +6 -0
  290. package/dist/components/password-input/context.d.ts.map +1 -0
  291. package/dist/components/password-input/context.js +15 -0
  292. package/dist/components/password-input/context.js.map +1 -0
  293. package/dist/components/password-input/password-input.d.ts +179 -0
  294. package/dist/components/password-input/password-input.d.ts.map +1 -0
  295. package/dist/components/password-input/password-input.js +141 -0
  296. package/dist/components/password-input/password-input.js.map +1 -0
  297. package/dist/components/password-input/use-password-input.d.ts +10 -0
  298. package/dist/components/password-input/use-password-input.d.ts.map +1 -0
  299. package/dist/components/password-input/use-password-input.js +18 -0
  300. package/dist/components/password-input/use-password-input.js.map +1 -0
  301. package/dist/components/pin-input/pin-input.d.ts +10 -1
  302. package/dist/components/pin-input/pin-input.d.ts.map +1 -1
  303. package/dist/components/pin-input/pin-input.js +4 -0
  304. package/dist/components/pin-input/pin-input.js.map +1 -1
  305. package/dist/components/popconfirm/popconfirm.d.ts +10 -2
  306. package/dist/components/popconfirm/popconfirm.d.ts.map +1 -1
  307. package/dist/components/popconfirm/popconfirm.js +25 -11
  308. package/dist/components/popconfirm/popconfirm.js.map +1 -1
  309. package/dist/components/popconfirm/use-popconfirm.d.ts +4 -0
  310. package/dist/components/popconfirm/use-popconfirm.d.ts.map +1 -1
  311. package/dist/components/popconfirm/use-popconfirm.js +14 -3
  312. package/dist/components/popconfirm/use-popconfirm.js.map +1 -1
  313. package/dist/components/popover/popover.d.ts +10 -2
  314. package/dist/components/popover/popover.d.ts.map +1 -1
  315. package/dist/components/popover/popover.js +25 -11
  316. package/dist/components/popover/popover.js.map +1 -1
  317. package/dist/components/popover/use-popover.d.ts +4 -0
  318. package/dist/components/popover/use-popover.d.ts.map +1 -1
  319. package/dist/components/popover/use-popover.js +14 -3
  320. package/dist/components/popover/use-popover.js.map +1 -1
  321. package/dist/components/popselect/popselect.d.ts +30 -5
  322. package/dist/components/popselect/popselect.d.ts.map +1 -1
  323. package/dist/components/popselect/popselect.js +49 -13
  324. package/dist/components/popselect/popselect.js.map +1 -1
  325. package/dist/components/popselect/use-popselect.d.ts +6 -1
  326. package/dist/components/popselect/use-popselect.d.ts.map +1 -1
  327. package/dist/components/popselect/use-popselect.js +23 -11
  328. package/dist/components/popselect/use-popselect.js.map +1 -1
  329. package/dist/components/progress/progress.d.ts +4 -1
  330. package/dist/components/progress/progress.d.ts.map +1 -1
  331. package/dist/components/progress/progress.js +4 -1
  332. package/dist/components/progress/progress.js.map +1 -1
  333. package/dist/components/radio-group/radio-group.d.ts +10 -1
  334. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  335. package/dist/components/radio-group/radio-group.js +3 -0
  336. package/dist/components/radio-group/radio-group.js.map +1 -1
  337. package/dist/components/rating/rating.d.ts +2 -2
  338. package/dist/components/result/result.d.ts.map +1 -1
  339. package/dist/components/result/result.js +3 -1
  340. package/dist/components/result/result.js.map +1 -1
  341. package/dist/components/scroll-area/scroll-area.d.ts +28 -9
  342. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  343. package/dist/components/scroll-area/scroll-area.js +24 -4
  344. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  345. package/dist/components/scroll-area/use-scroll-area.d.ts +10 -8
  346. package/dist/components/scroll-area/use-scroll-area.d.ts.map +1 -1
  347. package/dist/components/scroll-area/use-scroll-area.js +24 -10
  348. package/dist/components/scroll-area/use-scroll-area.js.map +1 -1
  349. package/dist/components/scrollbar/context.d.ts +7 -0
  350. package/dist/components/scrollbar/context.d.ts.map +1 -0
  351. package/dist/components/scrollbar/context.js +15 -0
  352. package/dist/components/scrollbar/context.js.map +1 -0
  353. package/dist/components/scrollbar/scrollbar.d.ts +162 -0
  354. package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
  355. package/dist/components/scrollbar/scrollbar.js +129 -0
  356. package/dist/components/scrollbar/scrollbar.js.map +1 -0
  357. package/dist/components/scrollbar/use-scrollbar.d.ts +23 -0
  358. package/dist/components/scrollbar/use-scrollbar.d.ts.map +1 -0
  359. package/dist/components/scrollbar/use-scrollbar.js +43 -0
  360. package/dist/components/scrollbar/use-scrollbar.js.map +1 -0
  361. package/dist/components/segmented/context.d.ts +13 -0
  362. package/dist/components/segmented/context.d.ts.map +1 -0
  363. package/dist/components/segmented/context.js +24 -0
  364. package/dist/components/segmented/context.js.map +1 -0
  365. package/dist/components/segmented/segmented.d.ts +185 -0
  366. package/dist/components/segmented/segmented.d.ts.map +1 -0
  367. package/dist/components/segmented/segmented.js +165 -0
  368. package/dist/components/segmented/segmented.js.map +1 -0
  369. package/dist/components/segmented/use-segmented.d.ts +15 -0
  370. package/dist/components/segmented/use-segmented.d.ts.map +1 -0
  371. package/dist/components/segmented/use-segmented.js +22 -0
  372. package/dist/components/segmented/use-segmented.js.map +1 -0
  373. package/dist/components/select/context.js.map +1 -1
  374. package/dist/components/select/select.d.ts +25 -3
  375. package/dist/components/select/select.d.ts.map +1 -1
  376. package/dist/components/select/select.js +38 -14
  377. package/dist/components/select/select.js.map +1 -1
  378. package/dist/components/select/use-select.d.ts +4 -0
  379. package/dist/components/select/use-select.d.ts.map +1 -1
  380. package/dist/components/select/use-select.js +14 -3
  381. package/dist/components/select/use-select.js.map +1 -1
  382. package/dist/components/separator/separator.d.ts.map +1 -1
  383. package/dist/components/separator/separator.js +11 -2
  384. package/dist/components/separator/separator.js.map +1 -1
  385. package/dist/components/side-nav/side-nav.d.ts +6 -3
  386. package/dist/components/side-nav/side-nav.d.ts.map +1 -1
  387. package/dist/components/side-nav/side-nav.js +32 -4
  388. package/dist/components/side-nav/side-nav.js.map +1 -1
  389. package/dist/components/side-nav/use-side-nav.d.ts +5 -0
  390. package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
  391. package/dist/components/side-nav/use-side-nav.js +12 -1
  392. package/dist/components/side-nav/use-side-nav.js.map +1 -1
  393. package/dist/components/signature-pad/context.d.ts +6 -0
  394. package/dist/components/signature-pad/context.d.ts.map +1 -0
  395. package/dist/components/signature-pad/context.js +15 -0
  396. package/dist/components/signature-pad/context.js.map +1 -0
  397. package/dist/components/signature-pad/signature-pad.d.ts +108 -0
  398. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -0
  399. package/dist/components/signature-pad/signature-pad.js +118 -0
  400. package/dist/components/signature-pad/signature-pad.js.map +1 -0
  401. package/dist/components/signature-pad/use-signature-pad.d.ts +14 -0
  402. package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -0
  403. package/dist/components/signature-pad/use-signature-pad.js +24 -0
  404. package/dist/components/signature-pad/use-signature-pad.js.map +1 -0
  405. package/dist/components/slider/slider.d.ts +1 -1
  406. package/dist/components/space/context.d.ts +10 -0
  407. package/dist/components/space/context.d.ts.map +1 -0
  408. package/dist/components/space/context.js +15 -0
  409. package/dist/components/space/context.js.map +1 -0
  410. package/dist/components/space/space.d.ts +66 -0
  411. package/dist/components/space/space.d.ts.map +1 -0
  412. package/dist/components/space/space.js +87 -0
  413. package/dist/components/space/space.js.map +1 -0
  414. package/dist/components/spinner/spinner.d.ts +1 -1
  415. package/dist/components/splitter/splitter.d.ts +1 -1
  416. package/dist/components/statistic/statistic.d.ts +1 -1
  417. package/dist/components/statistic/statistic.d.ts.map +1 -1
  418. package/dist/components/statistic/statistic.js +2 -1
  419. package/dist/components/statistic/statistic.js.map +1 -1
  420. package/dist/components/steps/steps.d.ts +1 -1
  421. package/dist/components/switch/switch.d.ts +9 -0
  422. package/dist/components/switch/switch.d.ts.map +1 -1
  423. package/dist/components/switch/switch.js +11 -2
  424. package/dist/components/switch/switch.js.map +1 -1
  425. package/dist/components/table/table.d.ts +10 -1
  426. package/dist/components/table/table.d.ts.map +1 -1
  427. package/dist/components/table/table.js +3 -0
  428. package/dist/components/table/table.js.map +1 -1
  429. package/dist/components/tabs/tabs.d.ts +1 -1
  430. package/dist/components/tag/context.d.ts +6 -0
  431. package/dist/components/tag/context.d.ts.map +1 -0
  432. package/dist/components/tag/context.js +15 -0
  433. package/dist/components/tag/context.js.map +1 -0
  434. package/dist/components/tag/tag.d.ts +71 -0
  435. package/dist/components/tag/tag.d.ts.map +1 -0
  436. package/dist/components/tag/tag.js +61 -0
  437. package/dist/components/tag/tag.js.map +1 -0
  438. package/dist/components/tag/use-tag.d.ts +10 -0
  439. package/dist/components/tag/use-tag.d.ts.map +1 -0
  440. package/dist/components/tag/use-tag.js +16 -0
  441. package/dist/components/tag/use-tag.js.map +1 -0
  442. package/dist/components/tags-input/tags-input.d.ts +2 -2
  443. package/dist/components/text-field/text-field.d.ts +25 -4
  444. package/dist/components/text-field/text-field.d.ts.map +1 -1
  445. package/dist/components/text-field/text-field.js +16 -1
  446. package/dist/components/text-field/text-field.js.map +1 -1
  447. package/dist/components/time/time.d.ts +4 -4
  448. package/dist/components/time/time.d.ts.map +1 -1
  449. package/dist/components/time/time.js.map +1 -1
  450. package/dist/components/time-field/time-field.d.ts +18 -3
  451. package/dist/components/time-field/time-field.d.ts.map +1 -1
  452. package/dist/components/time-field/time-field.js +20 -1
  453. package/dist/components/time-field/time-field.js.map +1 -1
  454. package/dist/components/time-picker/time-picker.d.ts +92 -5
  455. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  456. package/dist/components/time-picker/time-picker.js +79 -8
  457. package/dist/components/time-picker/time-picker.js.map +1 -1
  458. package/dist/components/time-picker/use-time-picker.d.ts +4 -0
  459. package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
  460. package/dist/components/time-picker/use-time-picker.js +14 -3
  461. package/dist/components/time-picker/use-time-picker.js.map +1 -1
  462. package/dist/components/timeline/timeline.d.ts +1 -1
  463. package/dist/components/timeline/timeline.d.ts.map +1 -1
  464. package/dist/components/timeline/timeline.js +2 -1
  465. package/dist/components/timeline/timeline.js.map +1 -1
  466. package/dist/components/timer/context.d.ts +6 -0
  467. package/dist/components/timer/context.d.ts.map +1 -0
  468. package/dist/components/timer/context.js +15 -0
  469. package/dist/components/timer/context.js.map +1 -0
  470. package/dist/components/timer/timer.d.ts +110 -0
  471. package/dist/components/timer/timer.d.ts.map +1 -0
  472. package/dist/components/timer/timer.js +139 -0
  473. package/dist/components/timer/timer.js.map +1 -0
  474. package/dist/components/timer/use-timer.d.ts +13 -0
  475. package/dist/components/timer/use-timer.d.ts.map +1 -0
  476. package/dist/components/timer/use-timer.js +19 -0
  477. package/dist/components/timer/use-timer.js.map +1 -0
  478. package/dist/components/toolbar/toolbar.d.ts +1 -1
  479. package/dist/components/tooltip/tooltip.d.ts +11 -3
  480. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  481. package/dist/components/tooltip/tooltip.js +31 -12
  482. package/dist/components/tooltip/tooltip.js.map +1 -1
  483. package/dist/components/tooltip/use-tooltip.d.ts +6 -0
  484. package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
  485. package/dist/components/tooltip/use-tooltip.js +36 -5
  486. package/dist/components/tooltip/use-tooltip.js.map +1 -1
  487. package/dist/components/tour/tour.d.ts +1 -1
  488. package/dist/components/tour/tour.d.ts.map +1 -1
  489. package/dist/components/tour/tour.js +20 -11
  490. package/dist/components/tour/tour.js.map +1 -1
  491. package/dist/components/tour/use-tour.d.ts +6 -0
  492. package/dist/components/tour/use-tour.d.ts.map +1 -1
  493. package/dist/components/tour/use-tour.js +18 -3
  494. package/dist/components/tour/use-tour.js.map +1 -1
  495. package/dist/components/transfer/transfer.d.ts +10 -10
  496. package/dist/components/transfer/transfer.d.ts.map +1 -1
  497. package/dist/components/transfer/transfer.js +8 -8
  498. package/dist/components/transfer/transfer.js.map +1 -1
  499. package/dist/components/tree/tree.d.ts +16 -10
  500. package/dist/components/tree/tree.d.ts.map +1 -1
  501. package/dist/components/tree/tree.js +22 -6
  502. package/dist/components/tree/tree.js.map +1 -1
  503. package/dist/components/tree-select/tree-select.d.ts +22 -2
  504. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  505. package/dist/components/tree-select/tree-select.js +47 -9
  506. package/dist/components/tree-select/tree-select.js.map +1 -1
  507. package/dist/components/tree-select/use-tree-select.d.ts +4 -0
  508. package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
  509. package/dist/components/tree-select/use-tree-select.js +14 -3
  510. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  511. package/dist/components/typography/typography.d.ts.map +1 -1
  512. package/dist/components/typography/typography.js +2 -1
  513. package/dist/components/typography/typography.js.map +1 -1
  514. package/dist/config/config.d.ts +26 -10
  515. package/dist/config/config.d.ts.map +1 -1
  516. package/dist/config/config.js +41 -14
  517. package/dist/config/config.js.map +1 -1
  518. package/dist/index.d.ts +60 -21
  519. package/dist/index.js +60 -21
  520. package/dist/package.js +6 -0
  521. package/dist/package.js.map +1 -0
  522. package/dist/runtime/as-child.js +66 -0
  523. package/dist/runtime/as-child.js.map +1 -0
  524. package/dist/runtime/config-defaults.js +19 -0
  525. package/dist/runtime/config-defaults.js.map +1 -0
  526. package/dist/runtime/normalize-props.d.ts.map +1 -1
  527. package/dist/runtime/normalize-props.js +5 -1
  528. package/dist/runtime/normalize-props.js.map +1 -1
  529. package/dist/runtime/use-machine.d.ts.map +1 -1
  530. package/dist/runtime/use-machine.js +17 -1
  531. package/dist/runtime/use-machine.js.map +1 -1
  532. package/dist/runtime/use-overlay-exit.js +40 -0
  533. package/dist/runtime/use-overlay-exit.js.map +1 -0
  534. package/dist/services/dialog-service.d.ts +12 -2
  535. package/dist/services/dialog-service.d.ts.map +1 -1
  536. package/dist/services/dialog-service.js +5 -2
  537. package/dist/services/dialog-service.js.map +1 -1
  538. package/dist/services/glyph.js +53 -20
  539. package/dist/services/glyph.js.map +1 -1
  540. package/dist/services/toast-service.d.ts +6 -0
  541. package/dist/services/toast-service.d.ts.map +1 -1
  542. package/dist/services/toast-service.js +4 -2
  543. package/dist/services/toast-service.js.map +1 -1
  544. package/package.json +14 -14
@@ -1,6 +1,7 @@
1
+ import { useOverlayExit } from "../../runtime/use-overlay-exit.js";
1
2
  import { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from "./context.js";
2
3
  import { useAccordion } from "./use-accordion.js";
3
- import { defineComponent, h } from "vue";
4
+ import { defineComponent, h, ref } from "vue";
4
5
  //#region src/components/accordion/accordion.ts
5
6
  const XhAccordionRoot = defineComponent({
6
7
  name: "XhAccordionRoot",
@@ -95,7 +96,19 @@ const XhAccordionContent = defineComponent({
95
96
  setup(_, { slots }) {
96
97
  const ctx = useAccordionContext();
97
98
  const item = useAccordionItem();
98
- return () => h("div", ctx.api.value.getContentProps(item()), slots.default?.());
99
+ const contentRef = ref(null);
100
+ const visible = useOverlayExit({
101
+ config: ctx.config,
102
+ isOpen: () => ctx.api.value.isOpen(item().value),
103
+ contentRef
104
+ });
105
+ return () => h("div", {
106
+ ...ctx.api.value.getContentProps(item()),
107
+ style: visible.value ? void 0 : { display: "none" },
108
+ ref: (el) => {
109
+ contentRef.value = el;
110
+ }
111
+ }, slots.default?.());
99
112
  }
100
113
  });
101
114
  const XhAccordionIndicator = defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"sourcesContent":["import type { AccordionNode, AccordionNodeMeta, AccordionSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from './context'\nimport { useAccordion } from './use-accordion'\n\ntype AccordionProps = AccordionSchema['props']\n\nexport const XhAccordionRoot = defineComponent({\n name: 'XhAccordionRoot',\n props: {\n collection: { type: Array as PropType<AccordionNode[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n multiple: Boolean,\n collapsible: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n // 只改水平轴上左右键的语义,不写进 DOM\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<AccordionProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AccordionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AccordionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useAccordion(props as AccordionProps, notify)\n provideAccordion(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.content)\n : [],\n )\n },\n})\n\nexport const XhAccordionItem = defineComponent({\n name: 'XhAccordionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useAccordionContext()\n provideAccordionItem(() => ({ value: props.value, disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 渲染为 h3,与 connect 给出的 aria-level 对齐\nexport const XhAccordionHeader = defineComponent({\n name: 'XhAccordionHeader',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('h3', ctx.api.value.getHeaderProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionTrigger = defineComponent({\n name: 'XhAccordionTrigger',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('button', ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionContent = defineComponent({\n name: 'XhAccordionContent',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('div', ctx.api.value.getContentProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionIndicator = defineComponent({\n name: 'XhAccordionIndicator',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 正文默认取 node.content,写 content 插槽即由作者接管。\n */\nfunction renderDefaultTree(\n collection: readonly AccordionNodeMeta[],\n contentSlot?: (node: AccordionNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(XhAccordionItem, { key: node.value, value: node.value }, () => [\n h(XhAccordionHeader, null, () => [\n h(XhAccordionTrigger, null, () => [\n h('span', null, node.label),\n h(XhAccordionIndicator),\n ]),\n ]),\n h(XhAccordionContent, null, () => contentSlot?.(node) ?? node.content ?? ''),\n ]))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"accordion.js","names":[],"sources":["../../../src/components/accordion/accordion.ts"],"sourcesContent":["import type { AccordionNode, AccordionNodeMeta, AccordionSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, ref } from 'vue'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from './context'\nimport { useAccordion } from './use-accordion'\n\ntype AccordionProps = AccordionSchema['props']\n\nexport const XhAccordionRoot = defineComponent({\n name: 'XhAccordionRoot',\n props: {\n collection: { type: Array as PropType<AccordionNode[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n multiple: Boolean,\n collapsible: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n // 只改水平轴上左右键的语义,不写进 DOM\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<AccordionProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AccordionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AccordionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useAccordion(props as AccordionProps, notify)\n provideAccordion(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.content)\n : [],\n )\n },\n})\n\nexport const XhAccordionItem = defineComponent({\n name: 'XhAccordionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useAccordionContext()\n provideAccordionItem(() => ({ value: props.value, disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 渲染为 h3,与 connect 给出的 aria-level 对齐\nexport const XhAccordionHeader = defineComponent({\n name: 'XhAccordionHeader',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('h3', ctx.api.value.getHeaderProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionTrigger = defineComponent({\n name: 'XhAccordionTrigger',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('button', ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionContent = defineComponent({\n name: 'XhAccordionContent',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n const contentRef = ref<HTMLElement | null>(null)\n // 闸门按面板各开一个:手风琴模式下切换项时,一个进场一个退场是同时发生的\n const visible = useOverlayExit({\n config: ctx.config,\n isOpen: () => ctx.api.value.isOpen(item().value),\n contentRef,\n })\n return () => h('div', {\n ...ctx.api.value.getContentProps(item()) as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhAccordionIndicator = defineComponent({\n name: 'XhAccordionIndicator',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 正文默认取 node.content,写 content 插槽即由作者接管。\n */\nfunction renderDefaultTree(\n collection: readonly AccordionNodeMeta[],\n contentSlot?: (node: AccordionNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(XhAccordionItem, { key: node.value, value: node.value }, () => [\n h(XhAccordionHeader, null, () => [\n h(XhAccordionTrigger, null, () => [\n h('span', null, node.label),\n h(XhAccordionIndicator),\n ]),\n ]),\n h(XhAccordionContent, null, () => contentSlot?.(node) ?? node.content ?? ''),\n ]))\n}\n"],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { ComputedRef } from "vue";
2
2
  import { AccordionApi, AccordionSchema } from "@xihan-ui/headless";
3
+ import { RuntimeConfig } from "@xihan-ui/kernel";
3
4
  //#region src/components/accordion/use-accordion.d.ts
4
5
  interface AccordionContext {
5
6
  api: ComputedRef<AccordionApi>;
7
+ /** 每个面板各自开退场闸门,共用这一份运行期配置;服务端为 null,闸门退化成跟着展开态。 */
8
+ config: RuntimeConfig | null;
6
9
  }
7
10
  declare function useAccordion(props: AccordionSchema['props'], onValueChange?: AccordionSchema['props']['onValueChange']): AccordionContext;
8
11
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-accordion.d.ts","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"mappings":";;;UASiB;EACf,KAAK,YAAY;;iBAGH,aACd,OAAO,0BACP,gBAAgB,4CACf"}
1
+ {"version":3,"file":"use-accordion.d.ts","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,QAAQ;;iBAGM,aACd,OAAO,0BACP,gBAAgB,4CACf"}
@@ -3,14 +3,25 @@ import { useMachine } from "../../runtime/use-machine.js";
3
3
  import { createVueIdGenerator } from "../../runtime/vue-id.js";
4
4
  import { computed } from "vue";
5
5
  import { accordionMachine, connectAccordion } from "@xihan-ui/headless";
6
- import { createScope } from "@xihan-ui/kernel";
6
+ import { createRuntimeConfig, createScope } from "@xihan-ui/kernel";
7
7
  //#region src/components/accordion/use-accordion.ts
8
8
  function useAccordion(props, onValueChange) {
9
+ const idGen = createVueIdGenerator();
10
+ const scope = createScope(null, idGen);
9
11
  const service = useMachine(accordionMachine, () => ({
10
12
  ...props,
11
13
  onValueChange
12
- }), createScope(null, createVueIdGenerator()));
13
- return { api: computed(() => connectAccordion(service, vueNormalize)) };
14
+ }), scope);
15
+ const api = computed(() => connectAccordion(service, vueNormalize));
16
+ let config = null;
17
+ if (typeof document !== "undefined") config = createRuntimeConfig({
18
+ scope,
19
+ idGenerator: idGen
20
+ });
21
+ return {
22
+ api,
23
+ config
24
+ };
14
25
  }
15
26
  //#endregion
16
27
  export { useAccordion };
@@ -1 +1 @@
1
- {"version":3,"file":"use-accordion.js","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"sourcesContent":["import type { AccordionApi, AccordionSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { accordionMachine, connectAccordion } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AccordionContext {\n api: ComputedRef<AccordionApi>\n}\n\nexport function useAccordion(\n props: AccordionSchema['props'],\n onValueChange?: AccordionSchema['props']['onValueChange'],\n): AccordionContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(accordionMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectAccordion(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,aACd,OACA,eACkB;CAGlB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAc,IADhE,YAAY,MADZ,qBACsB,CACkD,CAAC;CAEvF,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf"}
1
+ {"version":3,"file":"use-accordion.js","names":[],"sources":["../../../src/components/accordion/use-accordion.ts"],"sourcesContent":["import type { AccordionApi, AccordionSchema } from '@xihan-ui/headless'\nimport type { RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef } from 'vue'\nimport { accordionMachine, connectAccordion } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AccordionContext {\n api: ComputedRef<AccordionApi>\n /** 每个面板各自开退场闸门,共用这一份运行期配置;服务端为 null,闸门退化成跟着展开态。 */\n config: RuntimeConfig | null\n}\n\nexport function useAccordion(\n props: AccordionSchema['props'],\n onValueChange?: AccordionSchema['props']['onValueChange'],\n): AccordionContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(accordionMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectAccordion(service, vueNormalize))\n\n let config: RuntimeConfig | null = null\n if (typeof document !== 'undefined')\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n return { api, config }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,aACd,OACA,eACkB;CAClB,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAc,IAAI,KAAK;CACvF,MAAM,MAAM,eAAe,iBAAiB,SAAS,YAAY,CAAC;CAElE,IAAI,SAA+B;CACnC,IAAI,OAAO,aAAa,aACtB,SAAS,oBAAoB;EAAE;EAAO,aAAa;CAAM,CAAC;CAE5D,OAAO;EAAE;EAAK;CAAO;AACvB"}
@@ -106,12 +106,12 @@ declare const XhAnchorRoot: import("vue").DefineComponent<import("vue").ExtractP
106
106
  "onValue-change"?: ((_details: import("@xihan-ui/headless").AnchorValueChangeDetails) => any) | undefined;
107
107
  "onUpdate:value"?: ((_value: string | null) => any) | undefined;
108
108
  }>, {
109
+ size: Size;
109
110
  value: string | null;
110
111
  defaultValue: string | null;
111
112
  orientation: Orientation;
112
113
  dir: Direction;
113
114
  tone: Tone;
114
- size: Size;
115
115
  translations: Partial<AnchorTranslations>;
116
116
  targets: readonly string[];
117
117
  offset: number;
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-group.d.ts","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"mappings":";;;cAQa,iCAAiB,8BAAA;;;;;;IAKF,MAAA,SAAS;;;;;;;;;;;IAAT,MAAA,SAAS;;;;;;qCAOnC;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"avatar-group.d.ts","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"mappings":";;;cASa,iCAAiB,8BAAA;;;;;;IAKF,MAAA,SAAS;;;;;;;;;;;IAAT,MAAA,SAAS;;;;;;qCAOnC;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,4 +1,5 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
+ import { withXhConfig } from "../../config/config.js";
2
3
  import { provideAvatarGroup, useAvatarGroupContext } from "./context.js";
3
4
  import { computed, defineComponent, h } from "vue";
4
5
  import { connectAvatarGroup } from "@xihan-ui/headless";
@@ -16,7 +17,7 @@ const XhAvatarGroupRoot = defineComponent({
16
17
  }
17
18
  },
18
19
  setup(props, { slots }) {
19
- const api = computed(() => connectAvatarGroup(props, vueNormalize));
20
+ const api = computed(() => connectAvatarGroup(withXhConfig("avatar-group", props), vueNormalize));
20
21
  provideAvatarGroup({ api });
21
22
  return () => h("div", api.value.getRootProps(), slots.default?.());
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"avatar-group.js","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"sourcesContent":["import type { AvatarGroupProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectAvatarGroup } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideAvatarGroup, useAvatarGroupContext } from './context'\n\nexport const XhAvatarGroupRoot = defineComponent({\n name: 'XhAvatarGroupRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n max: { type: Number, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectAvatarGroup(props as AvatarGroupProps, vueNormalize))\n provideAvatarGroup({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarGroupOverflow = defineComponent({\n name: 'XhAvatarGroupOverflow',\n setup(_, { slots }) {\n const ctx = useAvatarGroupContext()\n // 「+N」的文本由作者写进插槽\n return () => h('span', ctx.api.value.getOverflowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAQA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,mBAAmB,OAA2B,YAAY,CAAC;EACtF,mBAAmB,EAAE,IAAI,CAAC;EAC1B,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC"}
1
+ {"version":3,"file":"avatar-group.js","names":[],"sources":["../../../src/components/avatar-group/avatar-group.ts"],"sourcesContent":["import type { AvatarGroupProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectAvatarGroup } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideAvatarGroup, useAvatarGroupContext } from './context'\n\nexport const XhAvatarGroupRoot = defineComponent({\n name: 'XhAvatarGroupRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n max: { type: Number, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectAvatarGroup(withXhConfig('avatar-group', props) as AvatarGroupProps, vueNormalize))\n provideAvatarGroup({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarGroupOverflow = defineComponent({\n name: 'XhAvatarGroupOverflow',\n setup(_, { slots }) {\n const ctx = useAvatarGroupContext()\n // 「+N」的文本由作者写进插槽\n return () => h('span', ctx.api.value.getOverflowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AASA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,mBAAmB,aAAa,gBAAgB,KAAK,GAAuB,YAAY,CAAC;EACpH,mBAAmB,EAAE,IAAI,CAAC;EAC1B,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC"}
@@ -66,9 +66,9 @@ declare const XhBackTopRoot: import("vue").DefineComponent<import("vue").Extract
66
66
  }>> & Readonly<{
67
67
  "onVisible-change"?: ((_details: import("@xihan-ui/headless").BackTopVisibleChangeDetails) => any) | undefined;
68
68
  }>, {
69
- tone: Tone;
70
- size: Size;
71
69
  target: HTMLElement | null;
70
+ size: Size;
71
+ tone: Tone;
72
72
  translations: Partial<BackTopTranslations>;
73
73
  visibilityHeight: number;
74
74
  behavior: BackTopBehavior;
@@ -6,13 +6,69 @@ declare const XhBadge: import("vue").DefineComponent<import("vue").ExtractPropTy
6
6
  variant: PropType<BadgeVariant>;
7
7
  tone: PropType<Tone>;
8
8
  size: PropType<Size>;
9
+ /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */
10
+ count: {
11
+ type: NumberConstructor;
12
+ default: undefined;
13
+ };
14
+ /** 计数上限,默认 99。 */
15
+ max: {
16
+ type: NumberConstructor;
17
+ default: undefined;
18
+ };
19
+ /** 计数为 0 时是否照样显示,默认不显示。 */
20
+ showZero: {
21
+ type: BooleanConstructor;
22
+ default: undefined;
23
+ };
24
+ /** 只出一个点,不出数字。 */
25
+ dot: {
26
+ type: BooleanConstructor;
27
+ default: undefined;
28
+ };
29
+ /** 读屏怎么念这枚徽标,例如「3 条未读」。 */
30
+ label: {
31
+ type: StringConstructor;
32
+ default: undefined;
33
+ };
9
34
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
10
35
  [key: string]: any;
11
36
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
37
  variant: PropType<BadgeVariant>;
13
38
  tone: PropType<Tone>;
14
39
  size: PropType<Size>;
15
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
40
+ /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */
41
+ count: {
42
+ type: NumberConstructor;
43
+ default: undefined;
44
+ };
45
+ /** 计数上限,默认 99。 */
46
+ max: {
47
+ type: NumberConstructor;
48
+ default: undefined;
49
+ };
50
+ /** 计数为 0 时是否照样显示,默认不显示。 */
51
+ showZero: {
52
+ type: BooleanConstructor;
53
+ default: undefined;
54
+ };
55
+ /** 只出一个点,不出数字。 */
56
+ dot: {
57
+ type: BooleanConstructor;
58
+ default: undefined;
59
+ };
60
+ /** 读屏怎么念这枚徽标,例如「3 条未读」。 */
61
+ label: {
62
+ type: StringConstructor;
63
+ default: undefined;
64
+ };
65
+ }>> & Readonly<{}>, {
66
+ label: string;
67
+ max: number;
68
+ count: number;
69
+ showZero: boolean;
70
+ dot: boolean;
71
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
16
72
  //#endregion
17
73
  export { XhBadge };
18
74
  //# sourceMappingURL=badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge/badge.ts"],"mappings":";;;;cAOa,uBAAO,8BAAA;EAGG,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;EAFN,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;MAK3B,oDAAA"}
1
+ {"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge/badge.ts"],"mappings":";;;;cAQa,uBAAO,8BAAA;EAGG,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAFN,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAqB3B"}
@@ -1,4 +1,5 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
+ import { withXhConfig } from "../../config/config.js";
2
3
  import { defineComponent, h } from "vue";
3
4
  import { connectBadge } from "@xihan-ui/headless";
4
5
  //#region src/components/badge/badge.ts
@@ -7,10 +8,39 @@ const XhBadge = defineComponent({
7
8
  props: {
8
9
  variant: String,
9
10
  tone: String,
10
- size: String
11
+ size: String,
12
+ /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */
13
+ count: {
14
+ type: Number,
15
+ default: void 0
16
+ },
17
+ /** 计数上限,默认 99。 */
18
+ max: {
19
+ type: Number,
20
+ default: void 0
21
+ },
22
+ /** 计数为 0 时是否照样显示,默认不显示。 */
23
+ showZero: {
24
+ type: Boolean,
25
+ default: void 0
26
+ },
27
+ /** 只出一个点,不出数字。 */
28
+ dot: {
29
+ type: Boolean,
30
+ default: void 0
31
+ },
32
+ /** 读屏怎么念这枚徽标,例如「3 条未读」。 */
33
+ label: {
34
+ type: String,
35
+ default: void 0
36
+ }
11
37
  },
12
38
  setup(props, { slots }) {
13
- return () => h("span", connectBadge(props, vueNormalize).getRootProps(), slots.default?.());
39
+ const configured = withXhConfig("badge", props);
40
+ return () => {
41
+ const api = connectBadge(configured, vueNormalize);
42
+ return h("span", api.getRootProps(), slots.default?.() ?? api.text);
43
+ };
14
44
  }
15
45
  });
16
46
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.ts"],"sourcesContent":["import type { BadgeProps, BadgeVariant } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectBadge } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhBadge = defineComponent({\n name: 'XhBadge',\n props: {\n variant: String as PropType<BadgeVariant>,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n setup(props, { slots }) {\n return () => h('span', connectBadge(props as BadgeProps, vueNormalize).getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;AAOA,MAAa,UAAU,gBAAgB;CACrC,MAAM;CACN,OAAO;EACL,SAAS;EACT,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa,EAAE,QAAQ,aAAa,OAAqB,YAAY,CAAC,CAAC,aAAa,GAA8B,MAAM,UAAU,CAAC;CACrI;AACF,CAAC"}
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.ts"],"sourcesContent":["import type { BadgeProps, BadgeVariant } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectBadge } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhBadge = defineComponent({\n name: 'XhBadge',\n props: {\n variant: String as PropType<BadgeVariant>,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */\n count: { type: Number, default: undefined },\n /** 计数上限,默认 99。 */\n max: { type: Number, default: undefined },\n /** 计数为 0 时是否照样显示,默认不显示。 */\n showZero: { type: Boolean, default: undefined },\n /** 只出一个点,不出数字。 */\n dot: { type: Boolean, default: undefined },\n /** 读屏怎么念这枚徽标,例如「3 条未读」。 */\n label: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('badge', props)\n return () => {\n const api = connectBadge(configured as BadgeProps, vueNormalize)\n // 插槽有内容就以它为准,没有才用算好的计数文本\n return h('span', api.getRootProps() as Record<string, unknown>, slots.default?.() ?? api.text)\n }\n },\n})\n"],"mappings":";;;;;AAQA,MAAa,UAAU,gBAAgB;CACrC,MAAM;CACN,OAAO;EACL,SAAS;EACT,MAAM;EACN,MAAM;;EAEN,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;EAE1C,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;EAExC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAE9C,KAAK;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAEzC,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC5C;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,aAAa,aAAa,SAAS,KAAK;EAC9C,aAAa;GACX,MAAM,MAAM,aAAa,YAA0B,YAAY;GAE/D,OAAO,EAAE,QAAQ,IAAI,aAAa,GAA8B,MAAM,UAAU,KAAK,IAAI,IAAI;EAC/F;CACF;AACF,CAAC"}
@@ -40,9 +40,9 @@ declare const XhBreadcrumbRoot: import("vue").DefineComponent<import("vue").Extr
40
40
  default: undefined;
41
41
  };
42
42
  }>> & Readonly<{}>, {
43
+ size: Size;
43
44
  dir: Direction;
44
45
  tone: Tone;
45
- size: Size;
46
46
  translations: Partial<BreadcrumbTranslations>;
47
47
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
48
48
  declare const XhBreadcrumbList: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -38,9 +38,9 @@ declare const XhButtonGroup: import("vue").DefineComponent<import("vue").Extract
38
38
  default: undefined;
39
39
  };
40
40
  }>> & Readonly<{}>, {
41
+ size: Size;
41
42
  orientation: "horizontal" | "vertical";
42
43
  tone: Tone;
43
- size: Size;
44
44
  variant: ActionVariant;
45
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
46
46
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.d.ts","names":[],"sources":["../../../src/components/button-group/button-group.ts"],"mappings":";;;cAOa,6BAAa,8BAAA;;IAIS,MAAA;;;;IACJ,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;;IAHF,MAAA;;;;IACJ,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;;;qCAUnC"}
1
+ {"version":3,"file":"button-group.d.ts","names":[],"sources":["../../../src/components/button-group/button-group.ts"],"mappings":";;;cAQa,6BAAa,8BAAA;;IAIS,MAAA;;;;IACJ,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;;IAHF,MAAA;;;;IACJ,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;;;;;qCAUnC"}
@@ -1,4 +1,5 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
+ import { withXhConfig } from "../../config/config.js";
2
3
  import { defineComponent, h } from "vue";
3
4
  import { connectButtonGroup } from "@xihan-ui/headless";
4
5
  //#region src/components/button-group/button-group.ts
@@ -23,7 +24,7 @@ const XhButtonGroup = defineComponent({
23
24
  }
24
25
  },
25
26
  setup(props, { slots }) {
26
- return () => h("div", connectButtonGroup(props, vueNormalize).getRootProps(), slots.default?.());
27
+ return () => h("div", connectButtonGroup(withXhConfig("button-group", props), vueNormalize).getRootProps(), slots.default?.());
27
28
  }
28
29
  });
29
30
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button-group/button-group.ts"],"sourcesContent":["import type { ButtonGroupProps } from '@xihan-ui/headless'\nimport type { ActionVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectButtonGroup } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhButtonGroup = defineComponent({\n name: 'XhButtonGroup',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: undefined },\n variant: { type: String as PropType<ActionVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n // 组内每一段是作者放进插槽的按钮,直接当直接子节点摆\n return () => h(\n 'div',\n connectButtonGroup(props as ButtonGroupProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n"],"mappings":";;;;AAOA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;EACvF,SAAS;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACvE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,aAAa,EACX,OACA,mBAAmB,OAA2B,YAAY,CAAC,CAAC,aAAa,GACzE,MAAM,UAAU,CAClB;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button-group/button-group.ts"],"sourcesContent":["import type { ButtonGroupProps } from '@xihan-ui/headless'\nimport type { ActionVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectButtonGroup } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhButtonGroup = defineComponent({\n name: 'XhButtonGroup',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: undefined },\n variant: { type: String as PropType<ActionVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n // 组内每一段是作者放进插槽的按钮,直接当直接子节点摆\n return () => h(\n 'div',\n connectButtonGroup(withXhConfig('button-group', props) as ButtonGroupProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n"],"mappings":";;;;;AAQA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;EACvF,SAAS;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACvE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,aAAa,EACX,OACA,mBAAmB,aAAa,gBAAgB,KAAK,GAAuB,YAAY,CAAC,CAAC,aAAa,GACvG,MAAM,UAAU,CAClB;CACF;AACF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { PropType } from "vue";
2
+ import { ButtonProps } from "@xihan-ui/headless";
2
3
  //#region src/components/button.d.ts
3
4
  declare const XhButton: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
5
  type: {
@@ -7,9 +8,11 @@ declare const XhButton: import("vue").DefineComponent<import("vue").ExtractPropT
7
8
  };
8
9
  disabled: BooleanConstructor;
9
10
  loading: BooleanConstructor;
10
- variant: StringConstructor;
11
- tone: StringConstructor;
12
- size: StringConstructor;
11
+ iconOnly: BooleanConstructor;
12
+ fullWidth: BooleanConstructor;
13
+ variant: PropType<ButtonProps["variant"]>;
14
+ tone: PropType<ButtonProps["tone"]>;
15
+ size: PropType<ButtonProps["size"]>;
13
16
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
14
17
  [key: string]: any;
15
18
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -19,13 +22,17 @@ declare const XhButton: import("vue").DefineComponent<import("vue").ExtractPropT
19
22
  };
20
23
  disabled: BooleanConstructor;
21
24
  loading: BooleanConstructor;
22
- variant: StringConstructor;
23
- tone: StringConstructor;
24
- size: StringConstructor;
25
+ iconOnly: BooleanConstructor;
26
+ fullWidth: BooleanConstructor;
27
+ variant: PropType<ButtonProps["variant"]>;
28
+ tone: PropType<ButtonProps["tone"]>;
29
+ size: PropType<ButtonProps["size"]>;
25
30
  }>> & Readonly<{}>, {
26
31
  type: "reset" | "submit" | "button";
27
32
  disabled: boolean;
28
33
  loading: boolean;
34
+ iconOnly: boolean;
35
+ fullWidth: boolean;
29
36
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
30
37
  declare const XhButtonLabel: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
31
38
  [key: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","names":[],"sources":["../../src/components/button.ts"],"mappings":";;cAmBa,wBAAQ,8BAAA;;IAGO,MAAA;;;;;;;;;;;;IAAA,MAAA;;;;;;;;;;;;qCAY1B;cAEW,6BAAa,wCAAA,oBAAA,4BAAA;;8BAMxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"button.d.ts","names":[],"sources":["../../src/components/button.ts"],"mappings":";;;cAoBa,wBAAQ,8BAAA;;IAGO,MAAA;;;;;;;EAKL,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;IAPD,MAAA;;;;;;;EAKL,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;;;qCAe3B;cAEW,6BAAa,wCAAA,oBAAA,4BAAA;;8BAMxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,5 +1,6 @@
1
1
  import { vueNormalize } from "../runtime/normalize-props.js";
2
- import { computed, defineComponent, h, inject, provide } from "vue";
2
+ import { withXhConfig } from "../config/config.js";
3
+ import { computed, defineComponent, h, inject, provide, useAttrs } from "vue";
3
4
  import { connectButton } from "@xihan-ui/headless";
4
5
  //#region src/components/button.ts
5
6
  const ButtonKey = Symbol("XhButton");
@@ -17,12 +18,20 @@ const XhButton = defineComponent({
17
18
  },
18
19
  disabled: Boolean,
19
20
  loading: Boolean,
21
+ iconOnly: Boolean,
22
+ fullWidth: Boolean,
20
23
  variant: String,
21
24
  tone: String,
22
25
  size: String
23
26
  },
24
27
  setup(props, { slots }) {
25
- const api = computed(() => connectButton(props, vueNormalize));
28
+ const attrs = useAttrs();
29
+ const configured = withXhConfig("button", props);
30
+ const api = computed(() => connectButton({
31
+ ...configured,
32
+ ariaLabel: attrs["aria-label"],
33
+ ariaLabelledby: attrs["aria-labelledby"]
34
+ }, vueNormalize));
26
35
  provide(ButtonKey, api);
27
36
  return () => h("button", api.value.getRootProps(), slots.default?.());
28
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../../src/components/button.ts"],"sourcesContent":["import type { ButtonProps } from '@xihan-ui/headless'\nimport type { PropTypes } from '@xihan-ui/kernel'\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport { connectButton } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, inject, provide } from 'vue'\nimport { vueNormalize } from '../runtime/normalize-props'\n\n/** 从实际调用推出 api 形状,免得再写一遍 normalize 的类型参数。 */\ntype VueButtonApi = ReturnType<typeof connectButton<PropTypes>>\n\nconst ButtonKey: InjectionKey<Ref<VueButtonApi>> = Symbol('XhButton')\n\nfunction useButtonApi(): Ref<VueButtonApi> {\n const api = inject(ButtonKey, null)\n if (!api)\n throw new Error('[xh] XhButton 的子部件必须放在 XhButton 里')\n return api\n}\n\nexport const XhButton = defineComponent({\n name: 'XhButton',\n props: {\n type: { type: String as PropType<'button' | 'submit' | 'reset'>, default: 'button' },\n disabled: Boolean,\n loading: Boolean,\n variant: String,\n tone: String,\n size: String,\n },\n setup(props, { slots }) {\n const api = computed(() => connectButton(props as ButtonProps, vueNormalize))\n provide(ButtonKey, api)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonLabel = defineComponent({\n name: 'XhButtonLabel',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonPrefix = defineComponent({\n name: 'XhButtonPrefix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonSuffix = defineComponent({\n name: 'XhButtonSuffix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 载入态的转圈标记;皮肤给它挂了旋转动画,作者只需摆位置。 */\nexport const XhButtonIndicator = defineComponent({\n name: 'XhButtonIndicator',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;AAUA,MAAM,YAA6C,OAAO,UAAU;AAEpE,SAAS,eAAkC;CACzC,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;AAEA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAmD,SAAS;EAAS;EACnF,UAAU;EACV,SAAS;EACT,SAAS;EACT,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,cAAc,OAAsB,YAAY,CAAC;EAC5E,QAAQ,WAAW,GAAG;EACtB,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAChG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC"}
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../src/components/button.ts"],"sourcesContent":["import type { ButtonProps } from '@xihan-ui/headless'\nimport type { PropTypes } from '@xihan-ui/kernel'\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport { connectButton } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, inject, provide, useAttrs } from 'vue'\nimport { withXhConfig } from '../config/config'\nimport { vueNormalize } from '../runtime/normalize-props'\n\n/** 从实际调用推出 api 形状,免得再写一遍 normalize 的类型参数。 */\ntype VueButtonApi = ReturnType<typeof connectButton<PropTypes>>\n\nconst ButtonKey: InjectionKey<Ref<VueButtonApi>> = Symbol('XhButton')\n\nfunction useButtonApi(): Ref<VueButtonApi> {\n const api = inject(ButtonKey, null)\n if (!api)\n throw new Error('[xh] XhButton 的子部件必须放在 XhButton 里')\n return api\n}\n\nexport const XhButton = defineComponent({\n name: 'XhButton',\n props: {\n type: { type: String as PropType<'button' | 'submit' | 'reset'>, default: 'button' },\n disabled: Boolean,\n loading: Boolean,\n iconOnly: Boolean,\n fullWidth: Boolean,\n variant: String as PropType<ButtonProps['variant']>,\n tone: String as PropType<ButtonProps['tone']>,\n size: String as PropType<ButtonProps['size']>,\n },\n setup(props, { slots }) {\n const attrs = useAttrs()\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('button', props as ButtonProps)\n // 作者写在根节点上的可及名转告连接层,图标按钮缺名时由它提醒\n const api = computed(() => connectButton({\n ...configured,\n ariaLabel: attrs['aria-label'] as string | undefined,\n ariaLabelledby: attrs['aria-labelledby'] as string | undefined,\n }, vueNormalize))\n provide(ButtonKey, api)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonLabel = defineComponent({\n name: 'XhButtonLabel',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonPrefix = defineComponent({\n name: 'XhButtonPrefix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonSuffix = defineComponent({\n name: 'XhButtonSuffix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 载入态的转圈标记;皮肤给它挂了旋转动画,作者只需摆位置。 */\nexport const XhButtonIndicator = defineComponent({\n name: 'XhButtonIndicator',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAWA,MAAM,YAA6C,OAAO,UAAU;AAEpE,SAAS,eAAkC;CACzC,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;AAEA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAmD,SAAS;EAAS;EACnF,UAAU;EACV,SAAS;EACT,UAAU;EACV,WAAW;EACX,SAAS;EACT,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,QAAQ,SAAS;EAEvB,MAAM,aAAa,aAAa,UAAU,KAAoB;EAE9D,MAAM,MAAM,eAAe,cAAc;GACvC,GAAG;GACH,WAAW,MAAM;GACjB,gBAAgB,MAAM;EACxB,GAAG,YAAY,CAAC;EAChB,QAAQ,WAAW,GAAG;EACtB,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAChG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC"}