@byyuurin/ui 0.0.11 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +170 -58
  2. package/dist/module.d.mts +4 -13
  3. package/dist/module.json +4 -4
  4. package/dist/module.mjs +54 -20
  5. package/dist/runtime/components/Accordion.vue +28 -23
  6. package/dist/runtime/components/Accordion.vue.d.ts +51 -29
  7. package/dist/runtime/components/Alert.vue +47 -27
  8. package/dist/runtime/components/Alert.vue.d.ts +37 -25
  9. package/dist/runtime/components/App.vue +9 -8
  10. package/dist/runtime/components/App.vue.d.ts +22 -20
  11. package/dist/runtime/components/Avatar.vue +65 -21
  12. package/dist/runtime/components/Avatar.vue.d.ts +27 -13
  13. package/dist/runtime/components/AvatarGroup.vue +14 -10
  14. package/dist/runtime/components/AvatarGroup.vue.d.ts +12 -9
  15. package/dist/runtime/components/Badge.vue +64 -32
  16. package/dist/runtime/components/Badge.vue.d.ts +30 -29
  17. package/dist/runtime/components/Breadcrumb.vue +40 -22
  18. package/dist/runtime/components/Breadcrumb.vue.d.ts +48 -21
  19. package/dist/runtime/components/Button.vue +113 -52
  20. package/dist/runtime/components/Button.vue.d.ts +36 -20
  21. package/dist/runtime/components/Calendar.vue +48 -39
  22. package/dist/runtime/components/Calendar.vue.d.ts +58 -31
  23. package/dist/runtime/components/Card.vue +18 -14
  24. package/dist/runtime/components/Card.vue.d.ts +18 -14
  25. package/dist/runtime/components/Carousel.vue +80 -46
  26. package/dist/runtime/components/Carousel.vue.d.ts +46 -25
  27. package/dist/runtime/components/Checkbox.vue +60 -35
  28. package/dist/runtime/components/Checkbox.vue.d.ts +35 -28
  29. package/dist/runtime/components/Chip.vue +35 -32
  30. package/dist/runtime/components/Chip.vue.d.ts +33 -15
  31. package/dist/runtime/components/Collapsible.vue +13 -9
  32. package/dist/runtime/components/Collapsible.vue.d.ts +16 -8
  33. package/dist/runtime/components/Drawer.vue +80 -70
  34. package/dist/runtime/components/Drawer.vue.d.ts +51 -28
  35. package/dist/runtime/components/DropdownMenu.vue +23 -16
  36. package/dist/runtime/components/DropdownMenu.vue.d.ts +77 -36
  37. package/dist/runtime/components/DropdownMenuContent.vue +133 -103
  38. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +38 -26
  39. package/dist/runtime/components/FieldGroup.vue +33 -0
  40. package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
  41. package/dist/runtime/components/Form.vue +172 -88
  42. package/dist/runtime/components/Form.vue.d.ts +69 -44
  43. package/dist/runtime/components/FormField.vue +108 -0
  44. package/dist/runtime/components/FormField.vue.d.ts +63 -0
  45. package/dist/runtime/components/Icon.vue +20 -0
  46. package/dist/runtime/components/Icon.vue.d.ts +9 -0
  47. package/dist/runtime/components/Input.vue +82 -77
  48. package/dist/runtime/components/Input.vue.d.ts +55 -43
  49. package/dist/runtime/components/InputNumber.vue +65 -49
  50. package/dist/runtime/components/InputNumber.vue.d.ts +51 -105
  51. package/dist/runtime/components/Kbd.vue +11 -5
  52. package/dist/runtime/components/Kbd.vue.d.ts +17 -11
  53. package/dist/runtime/components/Link.vue +54 -197
  54. package/dist/runtime/components/Link.vue.d.ts +17 -17
  55. package/dist/runtime/components/LinkBase.vue +11 -33
  56. package/dist/runtime/components/LinkBase.vue.d.ts +8 -3
  57. package/dist/runtime/components/Modal.vue +53 -39
  58. package/dist/runtime/components/Modal.vue.d.ts +64 -34
  59. package/dist/runtime/components/NavigationMenu.vue +336 -0
  60. package/dist/runtime/components/NavigationMenu.vue.d.ts +181 -0
  61. package/dist/runtime/components/OverlayProvider.vue +3 -3
  62. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  63. package/dist/runtime/components/Pagination.vue +39 -47
  64. package/dist/runtime/components/Pagination.vue.d.ts +54 -31
  65. package/dist/runtime/components/PinInput.vue +46 -32
  66. package/dist/runtime/components/PinInput.vue.d.ts +40 -21
  67. package/dist/runtime/components/Popover.vue +33 -19
  68. package/dist/runtime/components/Popover.vue.d.ts +57 -32
  69. package/dist/runtime/components/Progress.vue +31 -26
  70. package/dist/runtime/components/Progress.vue.d.ts +32 -23
  71. package/dist/runtime/components/RadioGroup.vue +75 -48
  72. package/dist/runtime/components/RadioGroup.vue.d.ts +58 -36
  73. package/dist/runtime/components/ScrollArea.vue +33 -31
  74. package/dist/runtime/components/ScrollArea.vue.d.ts +9 -5
  75. package/dist/runtime/components/Select.vue +166 -76
  76. package/dist/runtime/components/Select.vue.d.ts +206 -65
  77. package/dist/runtime/components/Separator.vue +42 -16
  78. package/dist/runtime/components/Separator.vue.d.ts +35 -14
  79. package/dist/runtime/components/Skeleton.vue +18 -6
  80. package/dist/runtime/components/Skeleton.vue.d.ts +4 -4
  81. package/dist/runtime/components/Slider.vue +42 -24
  82. package/dist/runtime/components/Slider.vue.d.ts +43 -27
  83. package/dist/runtime/components/Switch.vue +40 -31
  84. package/dist/runtime/components/Switch.vue.d.ts +36 -27
  85. package/dist/runtime/components/Table.vue +279 -51
  86. package/dist/runtime/components/Table.vue.d.ts +151 -65
  87. package/dist/runtime/components/Tabs.vue +70 -23
  88. package/dist/runtime/components/Tabs.vue.d.ts +61 -29
  89. package/dist/runtime/components/Textarea.vue +102 -54
  90. package/dist/runtime/components/Textarea.vue.d.ts +57 -41
  91. package/dist/runtime/components/Toast.vue +84 -38
  92. package/dist/runtime/components/Toast.vue.d.ts +48 -27
  93. package/dist/runtime/components/ToastProvider.vue +31 -22
  94. package/dist/runtime/components/ToastProvider.vue.d.ts +30 -17
  95. package/dist/runtime/components/Tooltip.vue +33 -21
  96. package/dist/runtime/components/Tooltip.vue.d.ts +37 -15
  97. package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
  98. package/dist/runtime/composables/defineShortcuts.js +129 -0
  99. package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
  100. package/dist/runtime/composables/useAvatarGroup.js +10 -3
  101. package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
  102. package/dist/runtime/composables/useComponentIcons.js +4 -4
  103. package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
  104. package/dist/runtime/composables/useFieldGroup.js +14 -0
  105. package/dist/runtime/composables/useFormField.d.ts +62 -0
  106. package/dist/runtime/composables/useFormField.js +99 -0
  107. package/dist/runtime/composables/useKbd.d.ts +3 -2
  108. package/dist/runtime/composables/useKbd.js +3 -2
  109. package/dist/runtime/composables/useLocale.d.ts +68 -5
  110. package/dist/runtime/composables/useLocale.js +11 -11
  111. package/dist/runtime/composables/useOverlay.d.ts +51 -15
  112. package/dist/runtime/composables/useOverlay.js +44 -30
  113. package/dist/runtime/composables/usePortal.d.ts +6 -0
  114. package/dist/runtime/composables/usePortal.js +17 -0
  115. package/dist/runtime/composables/useToast.d.ts +12 -5
  116. package/dist/runtime/composables/useToast.js +12 -7
  117. package/dist/runtime/locale/en.d.ts +30 -1
  118. package/dist/runtime/locale/en.js +2 -1
  119. package/dist/runtime/locale/index.d.ts +2 -2
  120. package/dist/runtime/locale/index.js +1 -1
  121. package/dist/runtime/locale/zh_tw.d.ts +31 -0
  122. package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
  123. package/dist/runtime/plugins/colors.d.ts +2 -0
  124. package/dist/runtime/plugins/colors.js +50 -0
  125. package/dist/runtime/types/app.config.d.ts +6 -0
  126. package/dist/runtime/types/form.d.ts +58 -17
  127. package/dist/runtime/types/form.js +11 -0
  128. package/dist/runtime/types/index.d.ts +51 -8
  129. package/dist/runtime/types/index.js +45 -2
  130. package/dist/runtime/types/input.d.ts +8 -0
  131. package/dist/runtime/types/locale.d.ts +5 -0
  132. package/dist/runtime/types/style.d.ts +33 -0
  133. package/dist/runtime/types/style.js +0 -0
  134. package/dist/runtime/types/unocss.d.ts +4 -0
  135. package/dist/runtime/types/utils.d.ts +38 -37
  136. package/dist/runtime/utils/form.d.ts +5 -1
  137. package/dist/runtime/utils/form.js +49 -0
  138. package/dist/runtime/utils/index.d.ts +10 -13
  139. package/dist/runtime/utils/index.js +41 -48
  140. package/dist/runtime/utils/link.d.ts +3 -2
  141. package/dist/runtime/utils/link.js +16 -2
  142. package/dist/runtime/utils/locale.d.ts +5 -0
  143. package/dist/runtime/utils/locale.js +10 -0
  144. package/dist/runtime/utils/style.d.ts +94 -0
  145. package/dist/runtime/utils/style.js +37 -0
  146. package/dist/runtime/vue/components/Icon.vue +15 -0
  147. package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
  148. package/dist/runtime/vue/components/Link.vue +163 -0
  149. package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
  150. package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
  151. package/dist/runtime/vue/composables/useAppConfig.js +4 -0
  152. package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
  153. package/dist/runtime/vue/plugins/color-mode.js +6 -0
  154. package/dist/runtime/vue/plugins/head.d.ts +4 -0
  155. package/dist/runtime/vue/plugins/head.js +9 -0
  156. package/dist/runtime/vue/stubs.d.ts +16 -1
  157. package/dist/runtime/vue/stubs.js +32 -1
  158. package/dist/setup.d.mts +13 -0
  159. package/dist/setup.mjs +12 -0
  160. package/dist/shared/ui.CzIlLITK.mjs +51 -0
  161. package/dist/shared/ui.DSyJHSTk.mjs +3787 -0
  162. package/dist/shared/ui.DpbffTXs.d.mts +84 -0
  163. package/dist/shared/ui.IulR-OYx.d.mts +64 -0
  164. package/dist/types.d.mts +3 -1
  165. package/dist/unocss.d.mts +12 -52
  166. package/dist/unocss.mjs +144 -254
  167. package/dist/unplugin.d.mts +13 -26
  168. package/dist/unplugin.mjs +193 -18
  169. package/dist/vite.d.mts +10 -1
  170. package/dist/vite.mjs +12 -3
  171. package/package.json +154 -87
  172. package/vue-plugin.d.ts +5 -0
  173. package/dist/module.d.ts +0 -13
  174. package/dist/module.mjs.map +0 -1
  175. package/dist/runtime/app/injections.d.ts +0 -9331
  176. package/dist/runtime/app/injections.js +0 -61
  177. package/dist/runtime/components/ButtonGroup.vue +0 -26
  178. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -26
  179. package/dist/runtime/components/FormItem.vue +0 -90
  180. package/dist/runtime/components/FormItem.vue.d.ts +0 -60
  181. package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
  182. package/dist/runtime/composables/useButtonGroup.js +0 -9
  183. package/dist/runtime/composables/useFormItem.d.ts +0 -27
  184. package/dist/runtime/composables/useFormItem.js +0 -64
  185. package/dist/runtime/composables/useTheme.d.ts +0 -9
  186. package/dist/runtime/composables/useTheme.js +0 -23
  187. package/dist/runtime/index.d.ts +0 -44
  188. package/dist/runtime/index.js +0 -44
  189. package/dist/runtime/locale/zh-tw.d.ts +0 -2
  190. package/dist/runtime/theme/accordion.d.ts +0 -50
  191. package/dist/runtime/theme/accordion.js +0 -28
  192. package/dist/runtime/theme/alert.d.ts +0 -119
  193. package/dist/runtime/theme/alert.js +0 -47
  194. package/dist/runtime/theme/app.d.ts +0 -19
  195. package/dist/runtime/theme/app.js +0 -19
  196. package/dist/runtime/theme/avatar-group.d.ts +0 -46
  197. package/dist/runtime/theme/avatar-group.js +0 -32
  198. package/dist/runtime/theme/avatar.d.ts +0 -50
  199. package/dist/runtime/theme/avatar.js +0 -34
  200. package/dist/runtime/theme/badge.d.ts +0 -76
  201. package/dist/runtime/theme/badge.js +0 -92
  202. package/dist/runtime/theme/breadcrumb.d.ts +0 -61
  203. package/dist/runtime/theme/breadcrumb.js +0 -44
  204. package/dist/runtime/theme/button-group.d.ts +0 -60
  205. package/dist/runtime/theme/button-group.js +0 -42
  206. package/dist/runtime/theme/button.d.ts +0 -184
  207. package/dist/runtime/theme/button.js +0 -164
  208. package/dist/runtime/theme/calendar.d.ts +0 -58
  209. package/dist/runtime/theme/calendar.js +0 -86
  210. package/dist/runtime/theme/card.d.ts +0 -56
  211. package/dist/runtime/theme/card.js +0 -37
  212. package/dist/runtime/theme/carousel.d.ts +0 -107
  213. package/dist/runtime/theme/carousel.js +0 -43
  214. package/dist/runtime/theme/checkbox.d.ts +0 -82
  215. package/dist/runtime/theme/checkbox.js +0 -54
  216. package/dist/runtime/theme/chip.d.ts +0 -61
  217. package/dist/runtime/theme/chip.js +0 -66
  218. package/dist/runtime/theme/collapsible.d.ts +0 -32
  219. package/dist/runtime/theme/collapsible.js +0 -10
  220. package/dist/runtime/theme/drawer.d.ts +0 -142
  221. package/dist/runtime/theme/drawer.js +0 -113
  222. package/dist/runtime/theme/dropdown-menu.d.ts +0 -65
  223. package/dist/runtime/theme/dropdown-menu.js +0 -83
  224. package/dist/runtime/theme/form-item.d.ts +0 -70
  225. package/dist/runtime/theme/form-item.js +0 -34
  226. package/dist/runtime/theme/form.d.ts +0 -2
  227. package/dist/runtime/theme/form.js +0 -7
  228. package/dist/runtime/theme/index.d.ts +0 -41
  229. package/dist/runtime/theme/index.js +0 -41
  230. package/dist/runtime/theme/input-number.d.ts +0 -115
  231. package/dist/runtime/theme/input-number.js +0 -95
  232. package/dist/runtime/theme/input.d.ts +0 -172
  233. package/dist/runtime/theme/input.js +0 -151
  234. package/dist/runtime/theme/kbd.d.ts +0 -33
  235. package/dist/runtime/theme/kbd.js +0 -26
  236. package/dist/runtime/theme/link.d.ts +0 -38
  237. package/dist/runtime/theme/link.js +0 -26
  238. package/dist/runtime/theme/modal.d.ts +0 -42
  239. package/dist/runtime/theme/modal.js +0 -55
  240. package/dist/runtime/theme/pagination.d.ts +0 -74
  241. package/dist/runtime/theme/pagination.js +0 -17
  242. package/dist/runtime/theme/pinInput.d.ts +0 -94
  243. package/dist/runtime/theme/pinInput.js +0 -111
  244. package/dist/runtime/theme/popover.d.ts +0 -32
  245. package/dist/runtime/theme/popover.js +0 -13
  246. package/dist/runtime/theme/progress.d.ts +0 -180
  247. package/dist/runtime/theme/progress.js +0 -95
  248. package/dist/runtime/theme/radio-group.d.ts +0 -104
  249. package/dist/runtime/theme/radio-group.js +0 -61
  250. package/dist/runtime/theme/scroll-area.d.ts +0 -67
  251. package/dist/runtime/theme/scroll-area.js +0 -33
  252. package/dist/runtime/theme/select.d.ts +0 -186
  253. package/dist/runtime/theme/select.js +0 -173
  254. package/dist/runtime/theme/separator.d.ts +0 -74
  255. package/dist/runtime/theme/separator.js +0 -53
  256. package/dist/runtime/theme/skeleton.d.ts +0 -2
  257. package/dist/runtime/theme/skeleton.js +0 -7
  258. package/dist/runtime/theme/slider.d.ts +0 -70
  259. package/dist/runtime/theme/slider.js +0 -52
  260. package/dist/runtime/theme/switch.d.ts +0 -116
  261. package/dist/runtime/theme/switch.js +0 -78
  262. package/dist/runtime/theme/table.d.ts +0 -86
  263. package/dist/runtime/theme/table.js +0 -36
  264. package/dist/runtime/theme/tabs.d.ts +0 -129
  265. package/dist/runtime/theme/tabs.js +0 -146
  266. package/dist/runtime/theme/textarea.d.ts +0 -90
  267. package/dist/runtime/theme/textarea.js +0 -116
  268. package/dist/runtime/theme/toast-provider.d.ts +0 -116
  269. package/dist/runtime/theme/toast-provider.js +0 -97
  270. package/dist/runtime/theme/toast.d.ts +0 -83
  271. package/dist/runtime/theme/toast.js +0 -35
  272. package/dist/runtime/theme/tooltip.d.ts +0 -38
  273. package/dist/runtime/theme/tooltip.js +0 -11
  274. package/dist/runtime/types/components.d.ts +0 -42
  275. package/dist/runtime/utils/extend-theme.d.ts +0 -9
  276. package/dist/runtime/utils/extend-theme.js +0 -27
  277. package/dist/runtime/utils/styler.d.ts +0 -4
  278. package/dist/runtime/utils/styler.js +0 -10
  279. package/dist/runtime/utils/translator.d.ts +0 -18
  280. package/dist/runtime/utils/translator.js +0 -8
  281. package/dist/shared/ui.D1BTWZFB.mjs +0 -5
  282. package/dist/shared/ui.D1BTWZFB.mjs.map +0 -1
  283. package/dist/unocss.d.ts +0 -52
  284. package/dist/unocss.mjs.map +0 -1
  285. package/dist/unplugin.d.ts +0 -26
  286. package/dist/unplugin.mjs.map +0 -1
  287. package/dist/vite.d.ts +0 -9
  288. package/dist/vite.mjs.map +0 -1
  289. /package/dist/runtime/types/{components.js → input.js} +0 -0
@@ -1,77 +1,104 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/textarea";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
+ import { useVModel } from "@vueuse/core";
6
7
  import { Primitive } from "reka-ui";
7
- import { computed, nextTick, onMounted, useTemplateRef, watch } from "vue";
8
- import { useFormItem } from "../composables/useFormItem";
9
- import { useTheme } from "../composables/useTheme";
10
- defineOptions({
11
- inheritAttrs: false
12
- });
8
+ import { computed, nextTick, onMounted, shallowRef, watch } from "vue";
9
+ import { useAppConfig } from "#imports";
10
+ import { useComponentIcons } from "../composables/useComponentIcons";
11
+ import { useFormField } from "../composables/useFormField";
12
+ import { looseToNumber } from "../utils";
13
+ import { cv, merge } from "../utils/style";
14
+ import Avatar from "./Avatar.vue";
15
+ import Icon from "./Icon.vue";
16
+ defineOptions({ inheritAttrs: false });
13
17
  const props = defineProps({
14
18
  as: { type: null, required: false },
15
19
  id: { type: String, required: false },
16
20
  name: { type: String, required: false },
17
21
  placeholder: { type: String, required: false },
18
22
  size: { type: null, required: false },
19
- variant: { type: null, required: false, default: "outline" },
23
+ color: { type: null, required: false },
24
+ variant: { type: null, required: false },
20
25
  highlight: { type: Boolean, required: false },
21
- underline: { type: Boolean, required: false },
22
26
  required: { type: Boolean, required: false },
23
27
  autofocus: { type: Boolean, required: false },
24
28
  autofocusDelay: { type: Number, required: false, default: 0 },
25
29
  disabled: { type: Boolean, required: false },
26
30
  rows: { type: Number, required: false, default: 3 },
27
31
  maxRows: { type: Number, required: false, default: 0 },
28
- autoResize: { type: Boolean, required: false },
29
- class: { type: null, required: false },
30
- ui: { type: null, required: false }
32
+ autoresize: { type: Boolean, required: false },
33
+ autoresizeDelay: { type: Number, required: false, default: 0 },
34
+ modelValue: { type: null, required: false },
35
+ defaultValue: { type: null, required: false },
36
+ modelModifiers: { type: Object, required: false },
37
+ ui: { type: null, required: false },
38
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
39
+ icon: { type: [String, Object], required: false },
40
+ avatar: { type: Object, required: false },
41
+ leading: { type: Boolean, required: false },
42
+ leadingIcon: { type: [String, Object], required: false },
43
+ trailing: { type: Boolean, required: false },
44
+ trailingIcon: { type: [String, Object], required: false },
45
+ loading: { type: Boolean, required: false },
46
+ loadingIcon: { type: [String, Object], required: false }
31
47
  });
32
48
  const emit = defineEmits(["update:modelValue", "blur", "change"]);
33
- defineSlots();
34
- const [modelValue, modelModifiers] = defineModel({ type: [String, Number] });
35
- const textareaRef = useTemplateRef("textareaRef");
36
- const { id, name, size, highlight, disabled, ariaAttrs, emitFormInput, emitFormChange, emitFormBlur, emitFormFocus } = useFormItem(props);
37
- const { generateStyle } = useTheme();
38
- const style = computed(() => generateStyle("textarea", {
39
- ...props,
40
- size: size.value,
41
- highlight: highlight.value
42
- }));
43
- function autoFocus() {
44
- if (props.autofocus)
45
- textareaRef.value?.focus();
46
- }
49
+ const slots = defineSlots();
50
+ const modelValue = useVModel(props, "modelValue", emit, { defaultValue: props.defaultValue });
51
+ const { id, name, size, color, highlight, disabled, ariaAttrs, emitFormInput, emitFormChange, emitFormBlur, emitFormFocus } = useFormField(props);
52
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
53
+ const appConfig = useAppConfig();
54
+ const ui = computed(() => {
55
+ const styler = cv(merge(theme, appConfig.ui.textarea));
56
+ return styler({
57
+ ...props,
58
+ size: size.value,
59
+ color: color.value,
60
+ highlight: highlight.value,
61
+ leading: isLeading.value || !!props.avatar || !!slots.leading,
62
+ trailing: isTrailing.value || !!slots.trailing
63
+ });
64
+ });
65
+ const textareaRef = shallowRef(null);
47
66
  function updateInput(value) {
48
- if (modelModifiers.trim)
49
- value = value.trim();
67
+ if (props.modelModifiers?.trim)
68
+ value = value?.trim() ?? null;
69
+ if (props.modelModifiers?.number)
70
+ value = looseToNumber(value);
71
+ if (props.modelModifiers?.nullable)
72
+ value ||= null;
73
+ if (props.modelModifiers?.optional)
74
+ value ||= void 0;
50
75
  modelValue.value = value;
51
76
  emitFormInput();
52
77
  }
53
78
  function onInput(event) {
54
79
  autoResize();
55
- if (!modelModifiers.lazy)
80
+ if (!props.modelModifiers?.lazy)
56
81
  updateInput(event.target.value);
57
82
  }
58
83
  function onChange(event) {
59
84
  const value = event.target.value;
60
- if (modelModifiers.lazy)
85
+ if (props.modelModifiers?.lazy)
61
86
  updateInput(value);
62
- if (modelModifiers.trim)
87
+ if (props.modelModifiers?.trim)
63
88
  event.target.value = value.trim();
64
- emit("change", event);
65
89
  emitFormChange();
90
+ emit("change", event);
66
91
  }
67
92
  function onBlur(event) {
68
- emit("blur", event);
69
93
  emitFormBlur();
94
+ emit("blur", event);
95
+ }
96
+ function autoFocus() {
97
+ if (props.autofocus)
98
+ textareaRef.value?.focus();
70
99
  }
71
100
  function autoResize() {
72
- if (!props.autoResize)
73
- return;
74
- if (!textareaRef.value)
101
+ if (!props.autoresize || !textareaRef.value)
75
102
  return;
76
103
  textareaRef.value.rows = props.rows;
77
104
  const overflow = textareaRef.value.style.overflow;
@@ -82,46 +109,67 @@ function autoResize() {
82
109
  const padding = paddingTop + paddingBottom;
83
110
  const lineHeight = Number.parseInt(styles.lineHeight);
84
111
  const { scrollHeight } = textareaRef.value;
85
- const newRows = Math.ceil((scrollHeight - padding) / lineHeight);
112
+ const newRows = (scrollHeight - padding) / lineHeight;
86
113
  if (newRows > props.rows)
87
114
  textareaRef.value.rows = props.maxRows ? Math.min(newRows, props.maxRows) : newRows;
88
115
  textareaRef.value.style.overflow = overflow;
89
116
  }
90
- watch(modelValue, () => {
91
- nextTick(autoResize);
117
+ watch(modelValue, () => nextTick(autoResize));
118
+ onMounted(() => {
119
+ setTimeout(() => autoFocus(), props.autofocusDelay);
120
+ setTimeout(() => autoResize(), props.autoresizeDelay);
92
121
  });
93
122
  defineExpose({
94
123
  textareaRef
95
124
  });
96
- onMounted(() => {
97
- setTimeout(() => {
98
- autoFocus();
99
- }, props.autofocusDelay);
100
- });
101
125
  </script>
102
126
 
103
127
  <template>
104
- <Primitive
105
- :as="props.as"
106
- :aria-disabled="disabled ? true : void 0"
107
- :class="style.root({ class: [props.class, props.ui?.root] })"
108
- :data-part="$attrs['data-part'] ?? 'root'"
109
- >
128
+ <Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
129
+ <span v-if="isLeading || props.avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })" data-part="leading">
130
+ <slot name="leading" :ui="ui">
131
+ <Icon
132
+ v-if="isLeading && leadingIconName"
133
+ :name="leadingIconName"
134
+ :class="ui.leadingIcon({ class: props.ui?.leadingIcon })"
135
+ data-part="leading-icon"
136
+ />
137
+ <Avatar
138
+ v-else-if="props.avatar"
139
+ :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()"
140
+ v-bind="props.avatar"
141
+ :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })"
142
+ data-part="leading-avatar"
143
+ />
144
+ </slot>
145
+ </span>
146
+
110
147
  <textarea
111
148
  ref="textareaRef"
112
- :class="style.base({ class: props.ui?.base })"
113
- data-part="base"
114
149
  :value="modelValue"
115
150
  :rows="props.rows"
116
151
  :placeholder="props.placeholder"
117
152
  :required="props.required"
118
- v-bind="{ ...$attrs, ...ariaAttrs, id, name, disabled }"
153
+ v-bind="{ id, name, disabled, ...$attrs, ...ariaAttrs }"
154
+ :class="ui.base({ class: props.ui?.base })"
155
+ data-part="base"
119
156
  @input="onInput"
120
157
  @blur="onBlur"
121
158
  @change="onChange"
122
159
  @focus="emitFormFocus"
123
160
  ></textarea>
124
161
 
125
- <slot></slot>
162
+ <slot :ui="ui"></slot>
163
+
164
+ <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })" data-part="trailing">
165
+ <slot name="trailing" :ui="ui">
166
+ <Icon
167
+ v-if="trailingIconName"
168
+ :name="trailingIconName"
169
+ :class="ui.trailingIcon({ class: props.ui?.trailingIcon })"
170
+ data-part="trailing-icon"
171
+ />
172
+ </slot>
173
+ </span>
126
174
  </Primitive>
127
175
  </template>
@@ -1,17 +1,13 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps } from 'reka-ui';
3
- import type { textarea } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- export interface TextareaEmits {
6
- 'update:modelValue': [payload: string];
7
- 'blur': [event: FocusEvent];
8
- 'change': [event: Event];
9
- }
10
- export interface TextareaSlots {
11
- default?: (props?: {}) => any;
12
- }
13
- type TextareaVariants = VariantProps<typeof textarea>;
14
- export interface TextareaProps extends ComponentAttrs<typeof textarea> {
3
+ import theme from '#build/ui/textarea';
4
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
5
+ import type { ComponentBaseProps, ComponentStyler, ComponentUIProps } from '../types';
6
+ import type { ModelModifiers } from '../types/input';
7
+ import type { MaybeNull, StaticSlot } from '../types/utils';
8
+ type TextareaValue = MaybeNull<string | number>;
9
+ type ThemeVariants = VariantProps<typeof theme>;
10
+ export interface TextareaProps<T extends TextareaValue = TextareaValue> extends ComponentBaseProps, UseComponentIconsProps {
15
11
  /**
16
12
  * The element or component this component should render as.
17
13
  * @default "div"
@@ -19,42 +15,62 @@ export interface TextareaProps extends ComponentAttrs<typeof textarea> {
19
15
  as?: PrimitiveProps['as'];
20
16
  id?: string;
21
17
  name?: string;
18
+ /** The placeholder text when the textarea is empty. */
22
19
  placeholder?: string;
23
- size?: TextareaVariants['size'];
24
- variant?: TextareaVariants['variant'];
20
+ /** @default "sm" */
21
+ size?: ThemeVariants['size'];
22
+ /** @default "primary" */
23
+ color?: ThemeVariants['color'];
24
+ /** @default "outline" */
25
+ variant?: ThemeVariants['variant'];
26
+ /** Highlight the ring color like a focus state. */
25
27
  highlight?: boolean;
26
- underline?: boolean;
27
28
  required?: boolean;
28
29
  autofocus?: boolean;
29
30
  autofocusDelay?: number;
30
31
  disabled?: boolean;
31
32
  rows?: number;
32
33
  maxRows?: number;
33
- autoResize?: boolean;
34
+ autoresize?: boolean;
35
+ autoresizeDelay?: number;
36
+ modelValue?: T;
37
+ defaultValue?: T;
38
+ modelModifiers?: ModelModifiers;
39
+ ui?: ComponentUIProps<typeof theme>;
34
40
  }
35
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<TextareaProps & {
36
- modelValue?: string | number;
37
- }, {
38
- textareaRef: Readonly<import("vue").ShallowRef<HTMLTextAreaElement | null>>;
39
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
40
- blur: (event: FocusEvent) => any;
41
- change: (event: Event) => any;
42
- "update:modelValue": (...args: unknown[]) => any;
43
- }, string, import("vue").PublicProps, Readonly<TextareaProps & {
44
- modelValue?: string | number;
45
- }> & Readonly<{
46
- onBlur?: ((event: FocusEvent) => any) | undefined;
47
- onChange?: ((event: Event) => any) | undefined;
48
- "onUpdate:modelValue"?: ((...args: unknown[]) => any) | undefined;
49
- }>, {
50
- variant: "outline" | "soft" | "soft-outline" | "ghost" | "none";
51
- autofocusDelay: number;
52
- rows: number;
53
- maxRows: number;
54
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, TextareaSlots>;
55
- export default _default;
56
- type __VLS_WithSlots<T, S> = T & {
57
- new (): {
58
- $slots: S;
59
- };
41
+ export interface TextareaEmits<T extends TextareaValue = TextareaValue> {
42
+ 'update:modelValue': [payload: T];
43
+ 'blur': [event: FocusEvent];
44
+ 'change': [event: Event];
45
+ }
46
+ export interface TextareaSlots {
47
+ default: StaticSlot<{
48
+ ui: ComponentStyler<typeof theme>;
49
+ }>;
50
+ leading: StaticSlot<{
51
+ ui: ComponentStyler<typeof theme>;
52
+ }>;
53
+ trailing: StaticSlot<{
54
+ ui: ComponentStyler<typeof theme>;
55
+ }>;
56
+ }
57
+ declare const __VLS_export: <T extends TextareaValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
58
+ props: __VLS_PrettifyLocal<TextareaProps<T> & {
59
+ onChange?: ((event: Event) => any) | undefined;
60
+ onBlur?: ((event: FocusEvent) => any) | undefined;
61
+ "onUpdate:modelValue"?: ((payload: TextareaValue) => any) | undefined;
62
+ }> & import("vue").PublicProps;
63
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
64
+ textareaRef: import("vue").ShallowRef<MaybeNull<HTMLTextAreaElement>, MaybeNull<HTMLTextAreaElement>>;
65
+ }>) => void;
66
+ attrs: any;
67
+ slots: TextareaSlots;
68
+ emit: ((evt: "change", event: Event) => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "update:modelValue", payload: TextareaValue) => void);
69
+ }>) => import("vue").VNode & {
70
+ __ctx?: Awaited<typeof __VLS_setup>;
60
71
  };
72
+ declare const _default: typeof __VLS_export;
73
+ export default _default;
74
+ type __VLS_PrettifyLocal<T> = {
75
+ [K in keyof T as K]: T[K];
76
+ } & {};
@@ -1,25 +1,32 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/toast";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { reactivePick, useElementBounding } from "@vueuse/core";
6
+ import { reactivePick } from "@vueuse/core";
7
7
  import { ToastAction, ToastClose, ToastDescription, ToastRoot, ToastTitle, useForwardPropsEmits } from "reka-ui";
8
- import { computed, ref } from "vue";
8
+ import { computed, nextTick, onMounted, shallowRef } from "vue";
9
+ import { useAppConfig } from "#imports";
9
10
  import { useLocale } from "../composables/useLocale";
10
- import { useTheme } from "../composables/useTheme";
11
+ import { cv, merge } from "../utils/style";
12
+ import Avatar from "./Avatar.vue";
11
13
  import Button from "./Button.vue";
14
+ import Icon from "./Icon.vue";
15
+ import Progress from "./Progress.vue";
12
16
  const props = defineProps({
13
17
  as: { type: null, required: false },
14
- title: { type: String, required: false },
15
- description: { type: String, required: false },
16
- icon: { type: String, required: false },
18
+ title: { type: [String, Object, Function], required: false },
19
+ description: { type: [String, Object, Function], required: false },
20
+ icon: { type: [String, Object], required: false },
21
+ avatar: { type: Object, required: false },
22
+ color: { type: null, required: false },
17
23
  orientation: { type: null, required: false, default: "vertical" },
18
24
  actions: { type: Array, required: false },
19
- close: { type: [Object, Boolean], required: false, default: true },
20
- closeIcon: { type: String, required: false },
21
- class: { type: null, required: false },
25
+ close: { type: [Boolean, Object], required: false, default: true },
26
+ closeIcon: { type: [String, Object], required: false },
27
+ progress: { type: [Boolean, Object], required: false, default: true },
22
28
  ui: { type: null, required: false },
29
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
23
30
  defaultOpen: { type: Boolean, required: false },
24
31
  open: { type: Boolean, required: false },
25
32
  type: { type: String, required: false },
@@ -28,14 +35,24 @@ const props = defineProps({
28
35
  const emit = defineEmits(["escapeKeyDown", "pause", "resume", "swipeStart", "swipeMove", "swipeCancel", "swipeEnd", "update:open"]);
29
36
  const slots = defineSlots();
30
37
  const rootProps = useForwardPropsEmits(reactivePick(props, "as", "defaultOpen", "open", "duration", "type"), emit);
31
- const el = ref();
32
- const { height } = useElementBounding(() => el.value?.$el.getBoundingClientRect ? el.value.$el : void 0);
33
38
  const { t } = useLocale();
34
- const { theme, generateStyle } = useTheme();
35
- const style = computed(() => generateStyle("toast", {
36
- ...props,
37
- title: !!(props.title || slots.title)
38
- }));
39
+ const appConfig = useAppConfig();
40
+ const ui = computed(() => {
41
+ const styler = cv(merge(theme, appConfig.ui.toast));
42
+ return styler({
43
+ ...props,
44
+ title: !!props.title || !!slots.title
45
+ });
46
+ });
47
+ const el = shallowRef();
48
+ const height = shallowRef(0);
49
+ onMounted(() => {
50
+ if (!el.value)
51
+ return;
52
+ nextTick(() => {
53
+ height.value = el.value?.$el?.getBoundingClientRect()?.height;
54
+ });
55
+ });
39
56
  defineExpose({
40
57
  height
41
58
  });
@@ -44,59 +61,81 @@ defineExpose({
44
61
  <template>
45
62
  <ToastRoot
46
63
  ref="el"
47
- v-slot="{ remaining, duration }"
64
+ v-slot="{ remaining, duration, open }"
48
65
  v-bind="rootProps"
49
- :class="style.root({ class: [props.class, props.ui?.root] })"
66
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
67
+ :data-orientation="props.orientation"
50
68
  data-part="root"
51
69
  :style="{ '--height': height }"
52
70
  >
53
- <slot name="icon">
54
- <span v-if="props.icon" :class="style.icon({ class: [props.icon, props.ui?.icon] })" data-part="icon"></span>
71
+ <slot name="leading" :ui="ui">
72
+ <Avatar
73
+ v-if="props.avatar"
74
+ :size="props.ui?.avatarSize || ui.avatarSize()"
75
+ v-bind="props.avatar"
76
+ :class="ui.avatar({ class: props.ui?.avatar })"
77
+ data-part="avatar"
78
+ />
79
+ <Icon
80
+ v-else-if="props.icon"
81
+ :name="props.icon"
82
+ :class="ui.icon({ class: props.ui?.icon })"
83
+ data-part="icon"
84
+ />
55
85
  </slot>
56
86
 
57
- <div :class="style.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
58
- <ToastTitle v-if="props.title || !!slots.title" :class="style.title({ class: props.ui?.title })" data-part="title">
87
+ <div :class="ui.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
88
+ <ToastTitle v-if="props.title || !!slots.title" :class="ui.title({ class: props.ui?.title })" data-part="title">
59
89
  <slot name="title">
60
- {{ props.title }}
90
+ <component :is="props.title()" v-if="typeof props.title === 'function'" />
91
+ <component :is="props.title" v-else-if="typeof props.title === 'object'" />
92
+ <template v-else>
93
+ {{ props.title }}
94
+ </template>
61
95
  </slot>
62
96
  </ToastTitle>
63
- <ToastDescription v-if="props.description || !!slots.description" :class="style.description({ class: props.ui?.description })" data-part="description">
97
+ <ToastDescription v-if="props.description || !!slots.description" :class="ui.description({ class: props.ui?.description })" data-part="description">
64
98
  <slot name="description">
65
- {{ props.description }}
99
+ <component :is="props.description()" v-if="typeof props.description === 'function'" />
100
+ <component :is="props.description" v-else-if="typeof props.description === 'object'" />
101
+ <template v-else>
102
+ {{ props.description }}
103
+ </template>
66
104
  </slot>
67
105
  </ToastDescription>
68
106
 
69
- <div v-if="props.orientation === 'vertical' && actions?.length" :class="style.actions({ class: props.ui?.actions })" data-part="actions">
107
+ <div v-if="props.orientation === 'vertical' && (props.actions?.length || slots.actions)" :class="ui.actions({ class: props.ui?.actions })" data-part="actions">
70
108
  <slot name="actions">
71
109
  <ToastAction v-for="(action, index) in props.actions" :key="index" :alt-text="action.label || 'Action'" as-child @click.stop>
72
- <Button size="xs" v-bind="action" />
110
+ <Button size="xs" :color="props.color" v-bind="action" />
73
111
  </ToastAction>
74
112
  </slot>
75
113
  </div>
76
114
  </div>
77
115
 
78
116
  <div
79
- v-if="props.orientation === 'horizontal' && actions?.length || props.close || slots.close"
80
- :class="style.actions({ class: props.ui?.actions })"
117
+ v-if="props.orientation === 'horizontal' && (props.actions?.length || !!slots.actions) || props.close"
118
+ :class="ui.actions({ class: props.ui?.actions })"
81
119
  data-part="actions"
82
120
  >
83
121
  <template v-if="props.orientation === 'horizontal'">
84
122
  <slot name="actions">
85
123
  <ToastAction v-for="(action, index) in props.actions" :key="index" :alt-text="action.label || 'Action'" as-child @click.stop>
86
- <Button size="xs" v-bind="action" />
124
+ <Button size="xs" :color="props.color" v-bind="action" />
87
125
  </ToastAction>
88
126
  </slot>
89
127
  </template>
90
128
 
91
- <ToastClose v-if="props.close || slots.close" as-child>
92
- <slot name="close" :ui="props.ui">
129
+ <ToastClose v-if="props.close || !!slots.close" as-child>
130
+ <slot name="close" :ui="ui">
93
131
  <Button
94
- :icon="props.closeIcon || theme.app.icons.close"
95
- size="sm"
132
+ v-if="props.close"
133
+ :icon="props.closeIcon || appConfig.ui.icons.close"
134
+ color="neutral"
96
135
  variant="link"
97
136
  :aria-label="t('toast.close')"
98
- v-bind="typeof close === 'object' ? close : void 0"
99
- :class="style.close({ class: props.ui?.close })"
137
+ v-bind="typeof props.close === 'object' ? props.close : {}"
138
+ :class="ui.close({ class: props.ui?.close })"
100
139
  data-part="close"
101
140
  @click.stop
102
141
  />
@@ -104,6 +143,13 @@ defineExpose({
104
143
  </ToastClose>
105
144
  </div>
106
145
 
107
- <div v-if="remaining >= 0 && duration" :class="style.progress({ class: props.ui?.progress })" data-part="progress" :style="{ width: `${remaining / duration * 100}%` }"></div>
146
+ <Progress
147
+ v-if="props.progress && open && remaining >= 0 && duration"
148
+ :model-value="remaining / duration * 100"
149
+ :color="props.color"
150
+ v-bind="typeof props.progress === 'object' ? props.progress : {}"
151
+ size="sm"
152
+ :class="ui.progress({ class: props.ui?.progress })"
153
+ />
108
154
  </ToastRoot>
109
155
  </template>
@@ -1,26 +1,23 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps, ToastRootEmits, ToastRootProps } from 'reka-ui';
3
- import type { toast } from '../theme/index.js';
4
- import type { ButtonProps, ComponentAttrs } from '../types/index.js';
5
- export interface ToastEmits extends ToastRootEmits {
6
- }
7
- export interface ToastSlots {
8
- icon?: (props?: {}) => any;
9
- title?: (props?: {}) => any;
10
- description?: (props?: {}) => any;
11
- actions?: (props?: {}) => any;
12
- close?: (props: {
13
- ui: ComponentAttrs<typeof toast>['ui'];
14
- }) => any;
15
- }
16
- type ToastVariants = VariantProps<typeof toast>;
17
- export interface ToastProps extends ComponentAttrs<typeof toast>, Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
18
- /** @default "li" */
3
+ import theme from '#build/ui/toast';
4
+ import type { AvatarProps, ButtonProps, ComponentBaseProps, ComponentStyler, ComponentUIProps, IconProps, ProgressProps } from '../types';
5
+ import type { StaticSlot, StringOrVNode } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface ToastProps extends ComponentBaseProps, Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
8
+ /**
9
+ * The element or component this component should render as.
10
+ * @default "li"
11
+ */
19
12
  as?: PrimitiveProps['as'];
20
- title?: string;
21
- description?: string;
22
- icon?: string;
23
- orientation?: ToastVariants['orientation'];
13
+ title?: StringOrVNode;
14
+ description?: StringOrVNode;
15
+ icon?: IconProps['name'];
16
+ avatar?: AvatarProps;
17
+ /** @default "primary" */
18
+ color?: ThemeVariants['color'];
19
+ /** @default "vertical" */
20
+ orientation?: ThemeVariants['orientation'];
24
21
  /**
25
22
  * Display a list of actions:
26
23
  * - under the title and description when orientation is `vertical`
@@ -31,16 +28,38 @@ export interface ToastProps extends ComponentAttrs<typeof toast>, Pick<ToastRoot
31
28
  * Display a close button to dismiss the toast.
32
29
  * @default true
33
30
  */
34
- close?: ButtonProps | boolean;
35
- /** @default app.icons.close */
36
- closeIcon?: string;
31
+ close?: boolean | Partial<ButtonProps>;
32
+ /**
33
+ * The icon displayed in the close button.
34
+ * @default app.icons.close
35
+ */
36
+ closeIcon?: IconProps['name'];
37
+ /**
38
+ * Display a progress bar showing the toast's remaining duration.
39
+ * @default true
40
+ */
41
+ progress?: boolean | Pick<ProgressProps, 'color' | 'ui'>;
42
+ ui?: ComponentUIProps<typeof theme>;
43
+ }
44
+ export interface ToastEmits extends ToastRootEmits {
45
+ }
46
+ export interface ToastSlots {
47
+ leading: StaticSlot<{
48
+ ui: ComponentStyler<typeof theme>;
49
+ }>;
50
+ title: StaticSlot;
51
+ description: StaticSlot;
52
+ actions: StaticSlot;
53
+ close: StaticSlot<{
54
+ ui: ComponentStyler<typeof theme>;
55
+ }>;
37
56
  }
38
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToastProps, {
57
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ToastProps, {
39
58
  height: import("vue").ShallowRef<number, number>;
40
59
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
60
+ pause: () => any;
41
61
  "update:open": (value: boolean) => any;
42
62
  escapeKeyDown: (event: KeyboardEvent) => any;
43
- pause: () => any;
44
63
  resume: () => any;
45
64
  swipeStart: (event: {
46
65
  currentTarget: EventTarget & HTMLElement;
@@ -79,9 +98,9 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToastProps
79
98
  };
80
99
  }>, "currentTarget">) => any;
81
100
  }, string, import("vue").PublicProps, Readonly<ToastProps> & Readonly<{
101
+ onPause?: (() => any) | undefined;
82
102
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
83
103
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
84
- onPause?: (() => any) | undefined;
85
104
  onResume?: (() => any) | undefined;
86
105
  onSwipeStart?: ((event: {
87
106
  currentTarget: EventTarget & HTMLElement;
@@ -120,9 +139,11 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToastProps
120
139
  };
121
140
  }>, "currentTarget">) => any) | undefined;
122
141
  }>, {
123
- close: ButtonProps | boolean;
142
+ close: boolean | Partial<ButtonProps>;
143
+ progress: boolean | Pick<ProgressProps, "color" | "ui">;
124
144
  orientation: "horizontal" | "vertical";
125
145
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ToastSlots>;
146
+ declare const _default: typeof __VLS_export;
126
147
  export default _default;
127
148
  type __VLS_WithSlots<T, S> = T & {
128
149
  new (): {