@movk/nuxt 1.2.0 → 1.3.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 (293) hide show
  1. package/.nuxt/movk-ui.css +3 -0
  2. package/README.md +74 -79
  3. package/dist/module.d.mts +57 -1
  4. package/dist/module.json +2 -2
  5. package/dist/module.mjs +120 -126
  6. package/dist/runtime/components/AutoForm.d.vue.ts +10 -30
  7. package/dist/runtime/components/AutoForm.vue +114 -125
  8. package/dist/runtime/components/AutoForm.vue.d.ts +10 -30
  9. package/dist/runtime/components/ColorChooser.d.vue.ts +21 -22
  10. package/dist/runtime/components/ColorChooser.vue +304 -27
  11. package/dist/runtime/components/ColorChooser.vue.d.ts +21 -22
  12. package/dist/runtime/components/DataTable.d.vue.ts +57 -0
  13. package/dist/runtime/components/DataTable.vue +584 -0
  14. package/dist/runtime/components/DataTable.vue.d.ts +57 -0
  15. package/dist/runtime/components/DatePicker.d.vue.ts +20 -33
  16. package/dist/runtime/components/DatePicker.vue +173 -65
  17. package/dist/runtime/components/DatePicker.vue.d.ts +20 -33
  18. package/dist/runtime/components/MessageBox.d.vue.ts +36 -0
  19. package/dist/runtime/components/MessageBox.vue +113 -0
  20. package/dist/runtime/components/MessageBox.vue.d.ts +36 -0
  21. package/dist/runtime/components/PillGroup.d.vue.ts +33 -0
  22. package/dist/runtime/components/PillGroup.vue +291 -0
  23. package/dist/runtime/components/PillGroup.vue.d.ts +33 -0
  24. package/dist/runtime/components/Popconfirm.d.vue.ts +30 -0
  25. package/dist/runtime/components/Popconfirm.vue +143 -0
  26. package/dist/runtime/components/Popconfirm.vue.d.ts +30 -0
  27. package/dist/runtime/components/SearchForm.d.vue.ts +21 -149
  28. package/dist/runtime/components/SearchForm.vue +211 -153
  29. package/dist/runtime/components/SearchForm.vue.d.ts +21 -149
  30. package/dist/runtime/components/SlideVerify.d.vue.ts +31 -70
  31. package/dist/runtime/components/SlideVerify.vue +117 -90
  32. package/dist/runtime/components/SlideVerify.vue.d.ts +31 -70
  33. package/dist/runtime/components/StarRating.d.vue.ts +38 -87
  34. package/dist/runtime/components/StarRating.vue +118 -74
  35. package/dist/runtime/components/StarRating.vue.d.ts +38 -87
  36. package/dist/runtime/components/input/AsPhoneNumberInput.d.vue.ts +11 -15
  37. package/dist/runtime/components/input/AsPhoneNumberInput.vue +22 -9
  38. package/dist/runtime/components/input/AsPhoneNumberInput.vue.d.ts +11 -15
  39. package/dist/runtime/components/input/WithCharacterLimit.d.vue.ts +11 -13
  40. package/dist/runtime/components/input/WithCharacterLimit.vue +23 -11
  41. package/dist/runtime/components/input/WithCharacterLimit.vue.d.ts +11 -13
  42. package/dist/runtime/components/input/WithClear.d.vue.ts +13 -11
  43. package/dist/runtime/components/input/WithClear.vue +27 -8
  44. package/dist/runtime/components/input/WithClear.vue.d.ts +13 -11
  45. package/dist/runtime/components/input/WithCopy.d.vue.ts +13 -13
  46. package/dist/runtime/components/input/WithCopy.vue +25 -8
  47. package/dist/runtime/components/input/WithCopy.vue.d.ts +13 -13
  48. package/dist/runtime/components/input/WithFloatingLabel.d.vue.ts +13 -16
  49. package/dist/runtime/components/input/WithFloatingLabel.vue +35 -27
  50. package/dist/runtime/components/input/WithFloatingLabel.vue.d.ts +13 -16
  51. package/dist/runtime/components/input/WithPasswordToggle.d.vue.ts +11 -7
  52. package/dist/runtime/components/input/WithPasswordToggle.vue +24 -7
  53. package/dist/runtime/components/input/WithPasswordToggle.vue.d.ts +11 -7
  54. package/dist/runtime/components/theme-picker/ThemePicker.d.vue.ts +8 -1
  55. package/dist/runtime/components/theme-picker/ThemePicker.vue +27 -12
  56. package/dist/runtime/components/theme-picker/ThemePicker.vue.d.ts +8 -1
  57. package/dist/runtime/components/theme-picker/ThemePickerButton.d.vue.ts +9 -4
  58. package/dist/runtime/components/theme-picker/ThemePickerButton.vue +4 -0
  59. package/dist/runtime/components/theme-picker/ThemePickerButton.vue.d.ts +9 -4
  60. package/dist/runtime/composables/index.d.ts +9 -8
  61. package/dist/runtime/composables/index.js +1 -0
  62. package/dist/runtime/composables/useApiFetch.d.ts +10 -5
  63. package/dist/runtime/composables/useApiFetch.js +20 -2
  64. package/dist/runtime/composables/useAutoForm.d.ts +4 -4
  65. package/dist/runtime/composables/useAutoForm.js +23 -9
  66. package/dist/runtime/composables/useClientApiFetch.d.ts +3 -2
  67. package/dist/runtime/composables/useDateFormatter.d.ts +16 -3
  68. package/dist/runtime/composables/useDateFormatter.js +89 -30
  69. package/dist/runtime/composables/useDownloadWithProgress.d.ts +26 -27
  70. package/dist/runtime/composables/useDownloadWithProgress.js +142 -40
  71. package/dist/runtime/composables/useLazyApiFetch.d.ts +3 -2
  72. package/dist/runtime/composables/useMessageBox.d.ts +6 -0
  73. package/dist/runtime/composables/useMessageBox.js +16 -0
  74. package/dist/runtime/composables/useTheme.d.ts +26 -16
  75. package/dist/runtime/composables/useTheme.js +98 -71
  76. package/dist/runtime/composables/useUploadWithProgress.d.ts +23 -29
  77. package/dist/runtime/composables/useUploadWithProgress.js +78 -67
  78. package/dist/runtime/domains/api/auth.d.ts +2 -0
  79. package/dist/runtime/domains/api/auth.js +31 -0
  80. package/dist/runtime/domains/api/endpoint-config.d.ts +11 -0
  81. package/dist/runtime/domains/api/endpoint-config.js +17 -0
  82. package/dist/runtime/domains/api/errors.d.ts +2 -0
  83. package/dist/runtime/domains/api/errors.js +10 -0
  84. package/dist/runtime/domains/api/fetch-key.d.ts +20 -0
  85. package/dist/runtime/domains/api/fetch-key.js +23 -0
  86. package/dist/runtime/domains/api/interceptors/error.d.ts +13 -0
  87. package/dist/runtime/domains/api/interceptors/error.js +49 -0
  88. package/dist/runtime/domains/api/interceptors/request.d.ts +12 -0
  89. package/dist/runtime/domains/api/interceptors/request.js +46 -0
  90. package/dist/runtime/domains/api/interceptors/response.d.ts +17 -0
  91. package/dist/runtime/domains/api/interceptors/response.js +27 -0
  92. package/dist/runtime/domains/api/response.d.ts +4 -0
  93. package/dist/runtime/domains/api/response.js +14 -0
  94. package/dist/runtime/domains/api/toast.d.ts +15 -0
  95. package/dist/runtime/domains/api/toast.js +46 -0
  96. package/dist/runtime/domains/api/transfer.d.ts +69 -0
  97. package/dist/runtime/domains/api/transfer.js +81 -0
  98. package/dist/runtime/domains/auto-form/actions.d.ts +2 -0
  99. package/dist/runtime/domains/auto-form/actions.js +4 -0
  100. package/dist/runtime/domains/auto-form/components/Array.d.vue.ts +13 -0
  101. package/dist/runtime/{components/auto-form-renderer/AutoFormRendererArray.vue → domains/auto-form/components/Array.vue} +25 -29
  102. package/dist/runtime/domains/auto-form/components/Array.vue.d.ts +13 -0
  103. package/dist/runtime/domains/auto-form/components/Children.d.vue.ts +11 -0
  104. package/dist/runtime/{components/auto-form-renderer/AutoFormRendererChildren.vue → domains/auto-form/components/Children.vue} +18 -18
  105. package/dist/runtime/domains/auto-form/components/Children.vue.d.ts +11 -0
  106. package/dist/runtime/domains/auto-form/components/Field.d.vue.ts +11 -0
  107. package/dist/runtime/domains/auto-form/components/Field.vue +56 -0
  108. package/dist/runtime/domains/auto-form/components/Field.vue.d.ts +11 -0
  109. package/dist/runtime/domains/auto-form/components/Layout.d.vue.ts +11 -0
  110. package/dist/runtime/{components/auto-form-renderer/AutoFormRendererLayout.vue → domains/auto-form/components/Layout.vue} +24 -25
  111. package/dist/runtime/domains/auto-form/components/Layout.vue.d.ts +11 -0
  112. package/dist/runtime/domains/auto-form/components/Nested.d.vue.ts +11 -0
  113. package/dist/runtime/{components/auto-form-renderer/AutoFormRendererNested.vue → domains/auto-form/components/Nested.vue} +17 -21
  114. package/dist/runtime/domains/auto-form/components/Nested.vue.d.ts +11 -0
  115. package/dist/runtime/domains/auto-form/controls.d.ts +41 -0
  116. package/dist/runtime/{auto-form → domains/auto-form}/controls.js +27 -24
  117. package/dist/runtime/{auto-form/field-utils.d.ts → domains/auto-form/fields.d.ts} +3 -1
  118. package/dist/runtime/{auto-form/field-utils.js → domains/auto-form/fields.js} +18 -2
  119. package/dist/runtime/{auto-form → domains/auto-form}/metadata.js +1 -1
  120. package/dist/runtime/domains/auto-form/provider.d.ts +62 -0
  121. package/dist/runtime/{auto-form → domains/auto-form}/provider.js +6 -3
  122. package/dist/runtime/{auto-form/reactive-utils.d.ts → domains/auto-form/reactive.d.ts} +5 -5
  123. package/dist/runtime/{auto-form/reactive-utils.js → domains/auto-form/reactive.js} +1 -1
  124. package/dist/runtime/{auto-form/schema-introspector.d.ts → domains/auto-form/schema.d.ts} +2 -2
  125. package/dist/runtime/{auto-form/schema-introspector.js → domains/auto-form/schema.js} +1 -1
  126. package/dist/runtime/domains/data-table/columns/constants.d.ts +50 -0
  127. package/dist/runtime/domains/data-table/columns/constants.js +19 -0
  128. package/dist/runtime/domains/data-table/columns/resolve-columns.d.ts +4 -0
  129. package/dist/runtime/domains/data-table/columns/resolve-columns.js +59 -0
  130. package/dist/runtime/domains/data-table/columns/resolve-data-column.d.ts +9 -0
  131. package/dist/runtime/domains/data-table/columns/resolve-data-column.js +164 -0
  132. package/dist/runtime/domains/data-table/columns/resolve-group-column.d.ts +4 -0
  133. package/dist/runtime/domains/data-table/columns/resolve-group-column.js +19 -0
  134. package/dist/runtime/domains/data-table/columns/resolve-special-columns.d.ts +8 -0
  135. package/dist/runtime/domains/data-table/columns/resolve-special-columns.js +232 -0
  136. package/dist/runtime/domains/data-table/columns/style.d.ts +11 -0
  137. package/dist/runtime/domains/data-table/columns/style.js +67 -0
  138. package/dist/runtime/domains/data-table/columns/utils.d.ts +6 -0
  139. package/dist/runtime/domains/data-table/columns/utils.js +16 -0
  140. package/dist/runtime/domains/data-table/components/ActionConfirm.d.vue.ts +10 -0
  141. package/dist/runtime/domains/data-table/components/ActionConfirm.vue +39 -0
  142. package/dist/runtime/domains/data-table/components/ActionConfirm.vue.d.ts +10 -0
  143. package/dist/runtime/domains/data-table/components/ActionsCell.d.vue.ts +11 -0
  144. package/dist/runtime/domains/data-table/components/ActionsCell.vue +91 -0
  145. package/dist/runtime/domains/data-table/components/ActionsCell.vue.d.ts +11 -0
  146. package/dist/runtime/domains/data-table/components/CellTooltip.d.vue.ts +9 -0
  147. package/dist/runtime/domains/data-table/components/CellTooltip.vue +40 -0
  148. package/dist/runtime/domains/data-table/components/CellTooltip.vue.d.ts +9 -0
  149. package/dist/runtime/domains/data-table/components/Pagination.d.vue.ts +26 -0
  150. package/dist/runtime/domains/data-table/components/Pagination.vue +132 -0
  151. package/dist/runtime/domains/data-table/components/Pagination.vue.d.ts +26 -0
  152. package/dist/runtime/domains/data-table/indent.d.ts +8 -0
  153. package/dist/runtime/domains/data-table/indent.js +19 -0
  154. package/dist/runtime/domains/data-table/tree-selection.d.ts +9 -0
  155. package/dist/runtime/domains/data-table/tree-selection.js +76 -0
  156. package/dist/runtime/{utils/theme.d.ts → domains/theme/theme-icons.d.ts} +0 -1
  157. package/dist/runtime/index.css +1 -0
  158. package/dist/runtime/plugins/api.factory.js +17 -117
  159. package/dist/runtime/plugins/theme.js +49 -27
  160. package/dist/runtime/types/api/config.d.ts +127 -0
  161. package/dist/runtime/types/api/fetch.d.ts +50 -0
  162. package/dist/runtime/types/api/index.d.ts +5 -0
  163. package/dist/runtime/types/api/module.d.ts +94 -0
  164. package/dist/runtime/types/api/response.d.ts +62 -0
  165. package/dist/runtime/types/api/response.js +0 -0
  166. package/dist/runtime/types/api/transfer.d.ts +32 -0
  167. package/dist/runtime/types/api/transfer.js +0 -0
  168. package/dist/runtime/types/app.config.d.ts +6 -0
  169. package/dist/runtime/types/auto-form/base.d.ts +26 -0
  170. package/dist/runtime/types/auto-form/base.js +0 -0
  171. package/dist/runtime/types/auto-form/component.d.ts +28 -0
  172. package/dist/runtime/types/auto-form/component.js +0 -0
  173. package/dist/runtime/types/auto-form/controls.d.ts +45 -0
  174. package/dist/runtime/types/auto-form/controls.js +0 -0
  175. package/dist/runtime/types/auto-form/fields.d.ts +68 -0
  176. package/dist/runtime/types/auto-form/fields.js +0 -0
  177. package/dist/runtime/types/auto-form/index.d.ts +7 -0
  178. package/dist/runtime/types/auto-form/index.js +0 -0
  179. package/dist/runtime/types/auto-form/search-form.d.ts +84 -0
  180. package/dist/runtime/types/auto-form/search-form.js +0 -0
  181. package/dist/runtime/types/auto-form/slots.d.ts +85 -0
  182. package/dist/runtime/types/auto-form/slots.js +0 -0
  183. package/dist/runtime/types/auto-form/zod-factory.d.ts +127 -0
  184. package/dist/runtime/types/auto-form/zod-factory.js +0 -0
  185. package/dist/runtime/types/components/color-chooser.d.ts +109 -0
  186. package/dist/runtime/types/components/color-chooser.js +0 -0
  187. package/dist/runtime/types/components/date-picker.d.ts +41 -0
  188. package/dist/runtime/types/components/date-picker.js +0 -0
  189. package/dist/runtime/types/components/index.d.ts +8 -0
  190. package/dist/runtime/types/components/index.js +0 -0
  191. package/dist/runtime/types/components/input/as-phone-number-input.d.ts +17 -0
  192. package/dist/runtime/types/components/input/as-phone-number-input.js +0 -0
  193. package/dist/runtime/types/components/input/index.d.ts +6 -0
  194. package/dist/runtime/types/components/input/index.js +0 -0
  195. package/dist/runtime/types/components/input/with-character-limit.d.ts +11 -0
  196. package/dist/runtime/types/components/input/with-character-limit.js +0 -0
  197. package/dist/runtime/types/components/input/with-clear.d.ts +10 -0
  198. package/dist/runtime/types/components/input/with-clear.js +0 -0
  199. package/dist/runtime/types/components/input/with-copy.d.ts +11 -0
  200. package/dist/runtime/types/components/input/with-copy.js +0 -0
  201. package/dist/runtime/types/components/input/with-floating-label.d.ts +12 -0
  202. package/dist/runtime/types/components/input/with-floating-label.js +0 -0
  203. package/dist/runtime/types/components/input/with-password-toggle.d.ts +7 -0
  204. package/dist/runtime/types/components/input/with-password-toggle.js +0 -0
  205. package/dist/runtime/types/components/message-box.d.ts +69 -0
  206. package/dist/runtime/types/components/message-box.js +0 -0
  207. package/dist/runtime/types/components/pill-group.d.ts +103 -0
  208. package/dist/runtime/types/components/pill-group.js +0 -0
  209. package/dist/runtime/types/components/popconfirm.d.ts +74 -0
  210. package/dist/runtime/types/components/popconfirm.js +0 -0
  211. package/dist/runtime/types/components/slide-verify.d.ts +54 -0
  212. package/dist/runtime/types/components/slide-verify.js +0 -0
  213. package/dist/runtime/types/components/star-rating.d.ts +55 -0
  214. package/dist/runtime/types/components/star-rating.js +0 -0
  215. package/dist/runtime/types/data-table/columns.d.ts +236 -0
  216. package/dist/runtime/types/data-table/columns.js +6 -0
  217. package/dist/runtime/types/data-table/component.d.ts +190 -0
  218. package/dist/runtime/types/data-table/component.js +0 -0
  219. package/dist/runtime/types/data-table/contexts.d.ts +44 -0
  220. package/dist/runtime/types/data-table/contexts.js +0 -0
  221. package/dist/runtime/types/data-table/index.d.ts +6 -0
  222. package/dist/runtime/types/data-table/index.js +1 -0
  223. package/dist/runtime/types/data-table/pagination.d.ts +87 -0
  224. package/dist/runtime/types/data-table/pagination.js +0 -0
  225. package/dist/runtime/types/index.d.ts +6 -5
  226. package/dist/runtime/types/index.js +5 -5
  227. package/dist/runtime/types/shared.d.ts +5 -0
  228. package/dist/runtime/types/shared.js +0 -0
  229. package/dist/runtime/types/zod.d.ts +11 -10
  230. package/dist/runtime/utils/extend-theme.d.ts +19 -0
  231. package/dist/runtime/utils/extend-theme.js +44 -0
  232. package/dist/runtime/utils/form-control.d.ts +33 -0
  233. package/dist/runtime/utils/form-control.js +54 -0
  234. package/dist/runtime/utils/meta.d.ts +2 -5
  235. package/dist/runtime/utils/meta.js +1 -3
  236. package/dist/runtime/utils/theme-defaults.d.ts +27 -0
  237. package/dist/runtime/utils/theme-defaults.js +28 -0
  238. package/dist/runtime/utils/tv.d.ts +1 -0
  239. package/dist/runtime/utils/tv.js +4 -0
  240. package/dist/runtime/vue/composables/useSiteConfig.d.ts +13 -0
  241. package/dist/runtime/vue/composables/useSiteConfig.js +11 -0
  242. package/dist/runtime/vue/plugins/theme.d.ts +6 -0
  243. package/dist/runtime/vue/plugins/theme.js +14 -0
  244. package/dist/runtime/vue/stubs/base.d.ts +2 -0
  245. package/dist/runtime/vue/stubs/base.js +2 -0
  246. package/dist/runtime/vue/stubs/inertia.d.ts +2 -0
  247. package/dist/runtime/vue/stubs/inertia.js +2 -0
  248. package/dist/runtime/vue/stubs/movk-extra.d.ts +2 -0
  249. package/dist/runtime/vue/stubs/movk-extra.js +2 -0
  250. package/dist/runtime/vue/stubs/none.d.ts +2 -0
  251. package/dist/runtime/vue/stubs/none.js +2 -0
  252. package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
  253. package/dist/runtime/vue/stubs/vue-router.js +2 -0
  254. package/dist/shared/nuxt.DfBEyjld.mjs +667 -0
  255. package/dist/types.d.mts +2 -6
  256. package/dist/unplugin.d.mts +28 -0
  257. package/dist/unplugin.mjs +292 -0
  258. package/dist/vite.d.mts +12 -0
  259. package/dist/vite.mjs +20 -0
  260. package/package.json +75 -36
  261. package/vue-plugin.d.ts +5 -0
  262. package/dist/runtime/auto-form/controls.d.ts +0 -221
  263. package/dist/runtime/auto-form/provider.d.ts +0 -27
  264. package/dist/runtime/components/auto-form-renderer/AutoFormRendererArray.d.vue.ts +0 -28
  265. package/dist/runtime/components/auto-form-renderer/AutoFormRendererArray.vue.d.ts +0 -28
  266. package/dist/runtime/components/auto-form-renderer/AutoFormRendererChildren.d.vue.ts +0 -26
  267. package/dist/runtime/components/auto-form-renderer/AutoFormRendererChildren.vue.d.ts +0 -26
  268. package/dist/runtime/components/auto-form-renderer/AutoFormRendererField.d.vue.ts +0 -26
  269. package/dist/runtime/components/auto-form-renderer/AutoFormRendererField.vue +0 -55
  270. package/dist/runtime/components/auto-form-renderer/AutoFormRendererField.vue.d.ts +0 -26
  271. package/dist/runtime/components/auto-form-renderer/AutoFormRendererLayout.d.vue.ts +0 -26
  272. package/dist/runtime/components/auto-form-renderer/AutoFormRendererLayout.vue.d.ts +0 -26
  273. package/dist/runtime/components/auto-form-renderer/AutoFormRendererNested.d.vue.ts +0 -26
  274. package/dist/runtime/components/auto-form-renderer/AutoFormRendererNested.vue.d.ts +0 -26
  275. package/dist/runtime/constants/api-defaults.d.ts +0 -9
  276. package/dist/runtime/constants/api-defaults.js +0 -32
  277. package/dist/runtime/constants/grid-cols.d.ts +0 -7
  278. package/dist/runtime/constants/grid-cols.js +0 -44
  279. package/dist/runtime/style.css +0 -1
  280. package/dist/runtime/types/api.d.ts +0 -349
  281. package/dist/runtime/types/auto-form.d.ts +0 -259
  282. package/dist/runtime/types/module.d.ts +0 -96
  283. package/dist/runtime/types/theme.d.ts +0 -2
  284. package/dist/runtime/utils/api-utils.d.ts +0 -58
  285. package/dist/runtime/utils/api-utils.js +0 -98
  286. /package/dist/runtime/{constants/auto-form.d.ts → domains/auto-form/constants.d.ts} +0 -0
  287. /package/dist/runtime/{constants/auto-form.js → domains/auto-form/constants.js} +0 -0
  288. /package/dist/runtime/{auto-form → domains/auto-form}/metadata.d.ts +0 -0
  289. /package/dist/runtime/{utils/theme.js → domains/theme/theme-icons.js} +0 -0
  290. /package/dist/runtime/types/{api.js → api/config.js} +0 -0
  291. /package/dist/runtime/types/{auto-form.js → api/fetch.js} +0 -0
  292. /package/dist/runtime/types/{module.js → api/index.js} +0 -0
  293. /package/dist/runtime/types/{theme.js → api/module.js} +0 -0
@@ -1,5 +1,7 @@
1
+ import { CalendarDate } from '@internationalized/date';
1
2
  import type { DateValue } from '@internationalized/date';
2
3
  import type { DateRange } from 'reka-ui';
4
+ export type ValueFormat = 'date-value' | 'iso' | 'timestamp' | 'unix' | 'date';
3
5
  /**
4
6
  * 日期格式化器配置选项
5
7
  */
@@ -55,9 +57,17 @@ export declare function useDateFormatter(options?: DateFormatterOptions): {
55
57
  toDate: (date: DateValue | undefined | null) => Date | null;
56
58
  toTimestamp: (date: DateValue | undefined | null) => number | null;
57
59
  toUnixTimestamp: (date: DateValue | undefined | null) => number | null;
58
- parse: (value: string) => import("@internationalized/date").CalendarDate | import("@internationalized/date").CalendarDateTime | import("@internationalized/date").ZonedDateTime | null;
60
+ toFormat: (date: DateValue | undefined | null, format: ValueFormat) => unknown;
61
+ fromISO: (value: string | undefined | null) => DateValue | null;
62
+ fromDate: (value: Date | undefined | null) => CalendarDate | null;
63
+ fromTimestamp: (value: number | undefined | null) => CalendarDate | null;
64
+ fromUnixTimestamp: (value: number | undefined | null) => CalendarDate | null;
65
+ fromFormat: (value: unknown, format: ValueFormat) => DateValue | null;
66
+ parse: (value: string) => CalendarDate | import("@internationalized/date").CalendarDateTime | import("@internationalized/date").ZonedDateTime | null;
59
67
  convertData: <T>(data: T, converter: (value: DateValue) => unknown) => T;
60
- getToday: () => import("@internationalized/date").CalendarDate;
68
+ convertToFormat: <T>(data: T, format: ValueFormat) => unknown;
69
+ convertFromFormat: <T>(data: T, format: ValueFormat) => unknown;
70
+ getToday: () => CalendarDate;
61
71
  getNow: () => import("@internationalized/date").ZonedDateTime;
62
72
  getStartOfWeek: (date: DateValue) => DateValue;
63
73
  getEndOfWeek: (date: DateValue) => DateValue;
@@ -82,4 +92,7 @@ export declare function useDateFormatter(options?: DateFormatterOptions): {
82
92
  locale: string;
83
93
  timeZone: string;
84
94
  };
85
- export {};
95
+ export { CalendarDate } from '@internationalized/date';
96
+ export type DateFormatter = ReturnType<typeof useDateFormatter>;
97
+ export type { AnyCalendarDate, Calendar, CalendarDateTime, DateDuration, DateFields, DateValue, Time, ZonedDateTime } from '@internationalized/date';
98
+ export type { DateRange } from 'reka-ui';
@@ -1,5 +1,6 @@
1
1
  import {
2
- DateFormatter,
2
+ CalendarDate,
3
+ DateFormatter as IntlDateFormatter,
3
4
  getLocalTimeZone,
4
5
  today,
5
6
  now,
@@ -23,6 +24,13 @@ import {
23
24
  } from "@internationalized/date";
24
25
  const DEFAULT_LOCALE = "zh-CN";
25
26
  const DEFAULT_FORMAT_OPTIONS = { dateStyle: "medium" };
27
+ function safe(fn, fallback) {
28
+ try {
29
+ return fn();
30
+ } catch {
31
+ return fallback;
32
+ }
33
+ }
26
34
  function isDateValue(value) {
27
35
  return value !== null && value !== void 0 && typeof value === "object" && "calendar" in value && "year" in value && "month" in value && "day" in value;
28
36
  }
@@ -33,14 +41,10 @@ export function useDateFormatter(options = {}) {
33
41
  const locale = options.locale ?? DEFAULT_LOCALE;
34
42
  const formatOptions = options.formatOptions ?? DEFAULT_FORMAT_OPTIONS;
35
43
  const timeZone = options.timeZone ?? getLocalTimeZone();
36
- const formatter = new DateFormatter(locale, { ...formatOptions, timeZone });
44
+ const formatter = new IntlDateFormatter(locale, { ...formatOptions, timeZone });
37
45
  function format(date) {
38
46
  if (!date) return "";
39
- try {
40
- return formatter.format(date.toDate(timeZone));
41
- } catch {
42
- return "";
43
- }
47
+ return safe(() => formatter.format(date.toDate(timeZone)), "");
44
48
  }
45
49
  function formatRange(start, end, separator = " - ") {
46
50
  if (!start || !end) return "";
@@ -52,19 +56,11 @@ export function useDateFormatter(options = {}) {
52
56
  }
53
57
  function toISO(date) {
54
58
  if (!date) return "";
55
- try {
56
- return date.toString();
57
- } catch {
58
- return "";
59
- }
59
+ return safe(() => date.toString(), "");
60
60
  }
61
61
  function toDate(date) {
62
62
  if (!date) return null;
63
- try {
64
- return new Date(Date.UTC(date.year, date.month - 1, date.day));
65
- } catch {
66
- return null;
67
- }
63
+ return safe(() => new Date(Date.UTC(date.year, date.month - 1, date.day)), null);
68
64
  }
69
65
  function toTimestamp(date) {
70
66
  const jsDate = toDate(date);
@@ -72,7 +68,67 @@ export function useDateFormatter(options = {}) {
72
68
  }
73
69
  function toUnixTimestamp(date) {
74
70
  const timestamp = toTimestamp(date);
75
- return timestamp ? Math.floor(timestamp / 1e3) : null;
71
+ return timestamp === null ? null : Math.floor(timestamp / 1e3);
72
+ }
73
+ function toFormat(date, format2) {
74
+ if (!date) return void 0;
75
+ switch (format2) {
76
+ case "date-value":
77
+ return date;
78
+ case "iso":
79
+ return toISO(date);
80
+ case "timestamp":
81
+ return toTimestamp(date);
82
+ case "unix":
83
+ return toUnixTimestamp(date);
84
+ case "date":
85
+ return toDate(date);
86
+ }
87
+ }
88
+ function convertToFormat(data, format2) {
89
+ if (format2 === "date-value") return data;
90
+ return convertData(data, (value) => toFormat(value, format2));
91
+ }
92
+ function fromDate(value) {
93
+ if (!value || Number.isNaN(value.getTime())) return null;
94
+ return safe(
95
+ () => new CalendarDate(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()),
96
+ null
97
+ );
98
+ }
99
+ function fromTimestamp(value) {
100
+ if (value === null || value === void 0 || Number.isNaN(value)) return null;
101
+ return fromDate(new Date(value));
102
+ }
103
+ function fromUnixTimestamp(value) {
104
+ if (value === null || value === void 0 || Number.isNaN(value)) return null;
105
+ return fromTimestamp(value * 1e3);
106
+ }
107
+ function fromISO(value) {
108
+ if (!value) return null;
109
+ return parse(value);
110
+ }
111
+ function fromFormat(value, format2) {
112
+ if (value === null || value === void 0) return null;
113
+ if (format2 === "date-value") return isDateValue(value) ? value : null;
114
+ if (format2 === "iso") return typeof value === "string" ? fromISO(value) : null;
115
+ if (format2 === "timestamp") return typeof value === "number" ? fromTimestamp(value) : null;
116
+ if (format2 === "unix") return typeof value === "number" ? fromUnixTimestamp(value) : null;
117
+ if (format2 === "date") return value instanceof Date ? fromDate(value) : null;
118
+ return null;
119
+ }
120
+ function convertFromFormat(data, format2) {
121
+ if (data === null || data === void 0) return data;
122
+ if (format2 === "date-value") return data;
123
+ if (Array.isArray(data)) return data.map((item) => convertFromFormat(item, format2));
124
+ if (typeof data === "object" && "start" in data && "end" in data) {
125
+ const range = data;
126
+ return {
127
+ start: range.start === void 0 || range.start === null ? range.start : fromFormat(range.start, format2),
128
+ end: range.end === void 0 || range.end === null ? range.end : fromFormat(range.end, format2)
129
+ };
130
+ }
131
+ return fromFormat(data, format2);
76
132
  }
77
133
  function getToday() {
78
134
  return today(timeZone);
@@ -112,12 +168,10 @@ export function useDateFormatter(options = {}) {
112
168
  return getDayOfWeek(date, locale);
113
169
  }
114
170
  function getDayOfWeekName(date, style = "long") {
115
- try {
116
- const weekdayFormatter = new DateFormatter(locale, { weekday: style, timeZone });
171
+ return safe(() => {
172
+ const weekdayFormatter = new IntlDateFormatter(locale, { weekday: style, timeZone });
117
173
  return weekdayFormatter.format(date.toDate(timeZone));
118
- } catch {
119
- return "";
120
- }
174
+ }, "");
121
175
  }
122
176
  function getWeeksInMonthNumber(date) {
123
177
  return getWeeksInMonth(date, locale);
@@ -156,13 +210,9 @@ export function useDateFormatter(options = {}) {
156
210
  return data.map((item) => convertData(item, converter));
157
211
  }
158
212
  if (typeof data === "object") {
159
- const result = {};
160
- for (const key in data) {
161
- if (Object.prototype.hasOwnProperty.call(data, key)) {
162
- result[key] = convertData(data[key], converter);
163
- }
164
- }
165
- return result;
213
+ return Object.fromEntries(
214
+ Object.entries(data).map(([k, v]) => [k, convertData(v, converter)])
215
+ );
166
216
  }
167
217
  return data;
168
218
  }
@@ -183,8 +233,16 @@ export function useDateFormatter(options = {}) {
183
233
  toDate,
184
234
  toTimestamp,
185
235
  toUnixTimestamp,
236
+ toFormat,
237
+ fromISO,
238
+ fromDate,
239
+ fromTimestamp,
240
+ fromUnixTimestamp,
241
+ fromFormat,
186
242
  parse,
187
243
  convertData,
244
+ convertToFormat,
245
+ convertFromFormat,
188
246
  getToday,
189
247
  getNow,
190
248
  getStartOfWeek,
@@ -211,3 +269,4 @@ export function useDateFormatter(options = {}) {
211
269
  timeZone
212
270
  };
213
271
  }
272
+ export { CalendarDate } from "@internationalized/date";
@@ -1,48 +1,47 @@
1
- import type { RequestToastOptions } from '../types/api.js';
1
+ import type { NitroFetchRequest } from 'nitropack/types';
2
+ import type { ApiError, TransferRequestOptions, TransferResult } from '../types/api';
2
3
  /**
3
- * 下载选项(带进度监控)
4
+ * 下载选项(带进度监控)
4
5
  */
5
- export interface DownloadWithProgressOptions {
6
- /** 自定义文件名,不提供时从响应头提取 */
6
+ export interface DownloadWithProgressOptions extends TransferRequestOptions {
7
+ /** HTTP 方法 @defaultValue 'GET' */
8
+ method?: RequestInit['method'];
9
+ /** 请求体,非 GET 时若非 string 自动序列化为 JSON */
10
+ body?: RequestInit['body'] | Record<string, unknown>;
11
+ /** 自定义文件名,不提供时从响应头或 URL 提取 */
7
12
  filename?: string;
8
- /** 额外的请求头 */
9
- headers?: Record<string, string>;
10
- /** Toast 配置 */
11
- toast?: RequestToastOptions | false;
12
- /** 端点名称 */
13
- endpoint?: string;
14
- /** 下载成功回调 */
13
+ /** 下载成功回调(文件名) */
15
14
  onSuccess?: (filename: string) => void;
16
- /** 下载失败回调 */
17
- onError?: (error: Error) => void;
15
+ /** 下载失败回调;中止时不触发 */
16
+ onError?: (error: ApiError | Error) => void;
18
17
  }
19
18
  /**
20
- * 带进度监控的文件下载 composable
19
+ * 带进度监控的文件下载 composable(仅客户端)
21
20
  *
22
- * 基于原生 fetch + ReadableStream 实现,支持实时进度和取消下载
21
+ * @description 基于原生 fetch + ReadableStream 实现,复用 `@movk/nuxt` 的端点/认证/业务校验/toast/hook 体系。
22
+ * - 后端返回 JSON 时按业务码校验,错误不会触发文件下载
23
+ * - 后端无 content-length 时 progress 为 null,UI 据此切 indeterminate
23
24
  *
24
25
  * @example
25
26
  * ```ts
26
- * const { progress, downloading, download, abort } = useDownloadWithProgress()
27
+ * const { progress, status, error, download, abort } = useDownloadWithProgress()
27
28
  *
28
- * await download('/api/export', {
29
- * filename: 'report.pdf',
30
- * onSuccess: (name) => console.log('下载成功:', name)
29
+ * const { data, error: err, aborted } = await download('/api/export', {
30
+ * filename: 'report.pdf'
31
31
  * })
32
32
  * ```
33
33
  */
34
- export declare function useDownloadWithProgress(): {
35
- /** 下载进度 (0-100) */
34
+ export declare function useDownloadWithProgress<T = Blob>(): {
35
+ /** 下载进度 0-100;后端未返回 content-length 时为 null(不确定) */
36
36
  progress: any;
37
- /** 是否正在下载 */
38
- downloading: any;
37
+ /** 传输状态 */
38
+ status: any;
39
+ /** 业务数据(默认 Blob;JSON 响应时为解包后的业务数据) */
40
+ data: any;
39
41
  /** 错误信息 */
40
42
  error: any;
41
43
  /** 执行下载 */
42
- download: (url: string, options?: DownloadWithProgressOptions) => Promise<{
43
- success: boolean;
44
- error: Error | null;
45
- }>;
44
+ download: (url: NitroFetchRequest, options?: DownloadWithProgressOptions) => Promise<TransferResult<T>>;
46
45
  /** 中止下载 */
47
46
  abort: () => void;
48
47
  };
@@ -1,41 +1,135 @@
1
- import { ref, useRuntimeConfig } from "#imports";
2
- import { extractFilename, triggerDownload } from "@movk/core";
3
- import { showToast, extractToastMessage, getAuthHeaders, resolveEndpointConfig } from "../utils/api-utils.js";
1
+ import { ref, useNuxtApp, useRuntimeConfig } from "#imports";
2
+ import { triggerDownload } from "@movk/core";
3
+ import {
4
+ buildFetchContext,
5
+ finalizeTransfer,
6
+ prepareTransfer,
7
+ resolveFilename,
8
+ tryParseJsonResponse
9
+ } from "../domains/api/transfer.js";
4
10
  export function useDownloadWithProgress() {
5
11
  const publicConfig = useRuntimeConfig().public.movkApi;
12
+ const nuxtApp = useNuxtApp();
6
13
  const progress = ref(0);
7
- const downloading = ref(false);
14
+ const status = ref("idle");
15
+ const data = ref(null);
8
16
  const error = ref(null);
9
- let abortController = null;
17
+ let controller = null;
10
18
  const abort = () => {
11
- abortController?.abort();
12
- abortController = null;
13
- downloading.value = false;
19
+ controller?.abort();
20
+ controller = null;
21
+ status.value = "aborted";
14
22
  progress.value = 0;
15
23
  };
16
24
  const download = async (url, options = {}) => {
17
- const { filename, headers = {}, toast, endpoint, onSuccess, onError } = options;
18
- const config = resolveEndpointConfig(publicConfig, endpoint);
19
- const fullUrl = `${config.baseURL}${url}`;
25
+ const {
26
+ method = "GET",
27
+ body,
28
+ filename,
29
+ headers: userHeaders,
30
+ toast,
31
+ endpoint,
32
+ skipBusinessCheck,
33
+ onSuccess,
34
+ onError
35
+ } = options;
36
+ const urlStr = typeof url === "string" ? url : url.url;
37
+ const { fullUrl, headers, config } = prepareTransfer(publicConfig, urlStr, {
38
+ endpoint,
39
+ headers: userHeaders,
40
+ toast,
41
+ skipBusinessCheck
42
+ });
20
43
  progress.value = 0;
21
- downloading.value = true;
44
+ status.value = "pending";
45
+ data.value = null;
22
46
  error.value = null;
23
- abortController = new AbortController();
47
+ controller = new AbortController();
48
+ const fetchInit = {
49
+ method,
50
+ headers,
51
+ signal: controller.signal
52
+ };
53
+ if (method && method !== "GET" && body !== void 0 && body !== null) {
54
+ const isBodyInit = typeof body === "string" || body instanceof Blob || body instanceof FormData || body instanceof URLSearchParams || body instanceof ArrayBuffer || body instanceof ReadableStream || ArrayBuffer.isView(body);
55
+ if (isBodyInit) {
56
+ fetchInit.body = body;
57
+ } else {
58
+ fetchInit.body = JSON.stringify(body);
59
+ if (!("content-type" in headers) && !("Content-Type" in headers)) {
60
+ fetchInit.headers["Content-Type"] = "application/json";
61
+ }
62
+ }
63
+ }
24
64
  try {
25
- const authHeaders = getAuthHeaders(config);
26
- const response = await fetch(fullUrl, {
27
- method: "GET",
28
- headers: { ...headers, ...authHeaders },
29
- signal: abortController.signal
65
+ const response = await fetch(fullUrl, fetchInit);
66
+ const fetchContext = buildFetchContext(fullUrl, { context: { toast, skipBusinessCheck } }, {
67
+ status: response.status,
68
+ headers: response.headers
30
69
  });
70
+ const contentType = response.headers.get("content-type") || "";
71
+ const isJson = contentType.toLowerCase().includes("application/json");
31
72
  if (!response.ok) {
32
- throw new Error(`\u4E0B\u8F7D\u5931\u8D25: ${response.status} ${response.statusText}`);
73
+ if (isJson) {
74
+ const text = await response.text();
75
+ const raw = tryParseJsonResponse(response.headers, text);
76
+ const result3 = await finalizeTransfer(nuxtApp, {
77
+ raw,
78
+ fallback: { isSuccess: false, data: null, message: `HTTP ${response.status}` },
79
+ config,
80
+ publicConfig,
81
+ requestToast: toast,
82
+ skipBusinessCheck,
83
+ fetchContext
84
+ });
85
+ status.value = "error";
86
+ error.value = result3.error;
87
+ onError?.(result3.error);
88
+ return result3;
89
+ }
90
+ const result2 = await finalizeTransfer(nuxtApp, {
91
+ raw: null,
92
+ fallback: { isSuccess: false, data: null, message: `HTTP ${response.status} ${response.statusText}` },
93
+ config,
94
+ publicConfig,
95
+ requestToast: toast,
96
+ fetchContext
97
+ });
98
+ status.value = "error";
99
+ error.value = result2.error;
100
+ onError?.(result2.error);
101
+ return result2;
102
+ }
103
+ if (isJson) {
104
+ const text = await response.text();
105
+ const raw = tryParseJsonResponse(response.headers, text);
106
+ const result2 = await finalizeTransfer(nuxtApp, {
107
+ raw,
108
+ fallback: { isSuccess: false, data: null, message: "\u54CD\u5E94\u89E3\u6790\u5931\u8D25" },
109
+ config,
110
+ publicConfig,
111
+ requestToast: toast,
112
+ skipBusinessCheck,
113
+ fetchContext
114
+ });
115
+ if (result2.error) {
116
+ status.value = "error";
117
+ error.value = result2.error;
118
+ onError?.(result2.error);
119
+ } else {
120
+ status.value = "success";
121
+ data.value = result2.data;
122
+ progress.value = 100;
123
+ }
124
+ controller = null;
125
+ return result2;
33
126
  }
34
127
  const contentLength = response.headers.get("content-length");
35
128
  const total = contentLength ? Number.parseInt(contentLength, 10) : 0;
36
- const finalFilename = filename || extractFilename(response.headers, url.split("/").pop() || "download");
129
+ const finalFilename = resolveFilename(response.headers, urlStr, filename);
37
130
  const reader = response.body?.getReader();
38
131
  if (!reader) throw new Error("\u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94\u6D41");
132
+ if (total <= 0) progress.value = null;
39
133
  const chunks = [];
40
134
  let received = 0;
41
135
  while (true) {
@@ -45,35 +139,43 @@ export function useDownloadWithProgress() {
45
139
  received += value.length;
46
140
  if (total > 0) progress.value = Math.round(received / total * 100);
47
141
  }
48
- triggerDownload(new Blob(chunks), finalFilename);
49
- downloading.value = false;
50
- abortController = null;
142
+ const blob = new Blob(chunks);
143
+ triggerDownload(blob, finalFilename);
144
+ const result = await finalizeTransfer(nuxtApp, {
145
+ raw: null,
146
+ fallback: { isSuccess: true, data: blob, message: `\u4E0B\u8F7D\u6210\u529F: ${finalFilename}` },
147
+ config,
148
+ publicConfig,
149
+ requestToast: toast,
150
+ fetchContext
151
+ });
152
+ status.value = "success";
153
+ data.value = result.data;
51
154
  progress.value = 100;
52
- if (import.meta.client && toast !== false) {
53
- const message = extractToastMessage(toast, "success", `\u4E0B\u8F7D\u6210\u529F: ${finalFilename}`);
54
- showToast("success", message, toast, config.toast);
55
- }
155
+ controller = null;
56
156
  onSuccess?.(finalFilename);
57
- return { success: true, error: null };
157
+ return result;
58
158
  } catch (err) {
59
- downloading.value = false;
60
- abortController = null;
159
+ controller = null;
160
+ const isAborted = err instanceof DOMException && err.name === "AbortError";
161
+ if (isAborted) {
162
+ status.value = "aborted";
163
+ return { data: null, error: null, aborted: true };
164
+ }
61
165
  const downloadError = err instanceof Error ? err : new Error("\u4E0B\u8F7D\u5931\u8D25");
166
+ status.value = "error";
62
167
  error.value = downloadError;
63
- const isAborted = downloadError.name === "AbortError";
64
- if (import.meta.client && !isAborted && toast !== false) {
65
- const message = extractToastMessage(toast, "error", downloadError.message || "\u4E0B\u8F7D\u5931\u8D25");
66
- showToast("error", message, toast, config.toast);
67
- }
68
- if (!isAborted) onError?.(downloadError);
69
- return { success: false, error: downloadError };
168
+ onError?.(downloadError);
169
+ return { data: null, error: downloadError, aborted: false };
70
170
  }
71
171
  };
72
172
  return {
73
- /** 下载进度 (0-100) */
173
+ /** 下载进度 0-100;后端未返回 content-length 时为 null(不确定) */
74
174
  progress,
75
- /** 是否正在下载 */
76
- downloading,
175
+ /** 传输状态 */
176
+ status,
177
+ /** 业务数据(默认 Blob;JSON 响应时为解包后的业务数据) */
178
+ data,
77
179
  /** 错误信息 */
78
180
  error,
79
181
  /** 执行下载 */
@@ -1,4 +1,5 @@
1
- import type { UseApiFetchOptions, UseApiFetchReturn } from '../types/api.js';
1
+ import type { NitroFetchRequest } from 'nitropack/types';
2
+ import type { UseApiFetchOptions, UseApiFetchReturn } from '../types/api';
2
3
  /**
3
4
  * 懒加载版 useApiFetch
4
5
  *
@@ -15,4 +16,4 @@ import type { UseApiFetchOptions, UseApiFetchReturn } from '../types/api.js';
15
16
  * // <div v-if="status === 'pending'">Loading...</div>
16
17
  * ```
17
18
  */
18
- export declare function useLazyApiFetch<T = unknown, DataT = T>(url: string | (() => string), options?: UseApiFetchOptions<T, DataT>): UseApiFetchReturn<DataT>;
19
+ export declare function useLazyApiFetch<T = unknown, DataT = T>(url: NitroFetchRequest | (() => NitroFetchRequest), options?: UseApiFetchOptions<T, DataT>): UseApiFetchReturn<DataT>;
@@ -0,0 +1,6 @@
1
+ import type { MessageBoxProps } from '../types/components/message-box';
2
+ import type { OmitByKey } from '@movk/core';
3
+ export declare function useMessageBox(): {
4
+ alert: (options: OmitByKey<MessageBoxProps, "mode">) => Promise<void>;
5
+ confirm: (options: OmitByKey<MessageBoxProps, "mode">) => Promise<boolean>;
6
+ };
@@ -0,0 +1,16 @@
1
+ import { useOverlay } from "#imports";
2
+ import { LazyMMessageBox } from "#components";
3
+ export function useMessageBox() {
4
+ const overlay = useOverlay();
5
+ function createInstance() {
6
+ return overlay.create(LazyMMessageBox, { destroyOnClose: true });
7
+ }
8
+ async function alert(options) {
9
+ await createInstance().open({ ...options, mode: "alert" });
10
+ }
11
+ async function confirm(options) {
12
+ const result = await createInstance().open({ ...options, mode: "confirm" });
13
+ return result ?? false;
14
+ }
15
+ return { alert, confirm };
16
+ }
@@ -1,30 +1,40 @@
1
1
  export declare function useTheme(): {
2
+ color: import("vue").ComputedRef<any>;
2
3
  style: {
3
- innerHTML: any;
4
+ innerHTML: import("vue").ComputedRef<string>;
4
5
  id: string;
5
6
  tagPriority: number;
6
7
  }[];
7
- link: any;
8
- neutralColors: string[];
9
- neutral: any;
8
+ link: import("vue").ComputedRef<{
9
+ rel: "stylesheet";
10
+ href: any;
11
+ id: string;
12
+ }[]>;
13
+ neutralColors: any;
14
+ neutral: import("vue").WritableComputedRef<any, any>;
10
15
  primaryColors: string[];
11
- primary: any;
12
- blackAsPrimary: import("@vueuse/core").RemovableRef<boolean>;
13
- radiuses: number[];
14
- radius: import("@vueuse/core").RemovableRef<number>;
15
- fonts: string[];
16
- font: import("@vueuse/core").RemovableRef<string>;
17
- icon: any;
16
+ primary: import("vue").WritableComputedRef<any, any>;
17
+ blackAsPrimary: import("vue").ComputedRef<boolean>;
18
+ setBlackAsPrimary: (value: boolean) => void;
19
+ radiuses: any;
20
+ radius: import("vue").WritableComputedRef<any, any>;
21
+ fonts: any;
22
+ font: import("vue").WritableComputedRef<any, any>;
23
+ icon: import("vue").WritableComputedRef<any, any>;
18
24
  icons: {
19
25
  label: string;
20
26
  icon: string;
21
27
  value: string;
22
28
  }[];
23
- modes: any;
24
- mode: any;
25
- hasCSSChanges: any;
26
- hasAppConfigChanges: any;
29
+ modes: import("vue").ComputedRef<{
30
+ label: string;
31
+ icon: any;
32
+ }[]>;
33
+ mode: import("vue").WritableComputedRef<any, any>;
34
+ hasCSSChanges: import("vue").ComputedRef<boolean>;
35
+ hasConfigChanges: import("vue").ComputedRef<boolean>;
36
+ configLabel: string;
27
37
  exportCSS: () => string;
28
- exportAppConfig: () => string;
38
+ exportConfig: () => string;
29
39
  resetTheme: () => void;
30
40
  };