@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,26 +1,42 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
- import type { UseComponentIconsProps } from '../composables/useComponentIcons.js';
3
- import type { button } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- import type { LinkProps } from './Link.vue.js';
6
- export interface ButtonSlots {
7
- default?: (props?: {}) => any;
8
- leading?: (props?: {}) => any;
9
- trailing?: (props?: {}) => any;
10
- }
11
- type ButtonVariants = VariantProps<typeof button>;
12
- export interface ButtonProps extends ComponentAttrs<typeof button>, UseComponentIconsProps, Omit<LinkProps, 'raw' | 'custom' | 'underline'> {
13
- icon?: string;
2
+ import theme from '#build/ui/button';
3
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
4
+ import type { ComponentBaseProps, ComponentStyler, ComponentUIProps, IconProps, LinkProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface ButtonProps extends ComponentBaseProps, UseComponentIconsProps, Omit<LinkProps, 'raw' | 'custom'> {
8
+ icon?: IconProps['name'];
14
9
  label?: string;
15
- variant?: ButtonVariants['variant'];
16
- size?: ButtonVariants['size'];
17
- loading?: boolean;
18
- active?: boolean;
19
- disabled?: boolean;
10
+ /** @default "solid" */
11
+ variant?: ThemeVariants['variant'];
12
+ activeVariant?: ThemeVariants['variant'];
13
+ /** @default "md" */
14
+ size?: ThemeVariants['size'];
15
+ /** @default "primary" */
16
+ color?: ThemeVariants['color'];
17
+ activeColor?: ThemeVariants['color'];
18
+ /** Render the button with equal padding on all sides. */
19
+ square?: boolean;
20
+ /** Render the button full width. */
21
+ block?: boolean;
22
+ /** Set loading state automatically based on the `@click` promise state */
23
+ loadingAuto?: boolean;
24
+ onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>;
25
+ ui?: ComponentUIProps<typeof theme>;
26
+ }
27
+ export interface ButtonSlots {
28
+ default: StaticSlot<{
29
+ ui: ComponentStyler<typeof theme>;
30
+ }>;
31
+ leading: StaticSlot<{
32
+ ui: ComponentStyler<typeof theme>;
33
+ }>;
34
+ trailing: StaticSlot<{
35
+ ui: ComponentStyler<typeof theme>;
36
+ }>;
20
37
  }
21
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{}>, {
22
- variant: "solid" | "outline" | "soft" | "soft-outline" | "link" | "ghost";
23
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonSlots>;
38
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonSlots>;
39
+ declare const _default: typeof __VLS_export;
24
40
  export default _default;
25
41
  type __VLS_WithSlots<T, S> = T & {
26
42
  new (): {
@@ -1,5 +1,5 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/calendar";
3
3
  </script>
4
4
 
5
5
  <script setup>
@@ -7,23 +7,31 @@ import { reactiveOmit } from "@vueuse/core";
7
7
  import { useForwardPropsEmits } from "reka-ui";
8
8
  import { Calendar as BaseCalendar, RangeCalendar } from "reka-ui/namespaced";
9
9
  import { computed } from "vue";
10
+ import { useAppConfig } from "#imports";
10
11
  import { useLocale } from "../composables/useLocale";
11
- import { useTheme } from "../composables/useTheme";
12
+ import { cv, merge } from "../utils/style";
12
13
  import Button from "./Button.vue";
13
14
  const props = defineProps({
14
- nextYearIcon: { type: String, required: false },
15
- nextMonthIcon: { type: String, required: false },
16
- prevYearIcon: { type: String, required: false },
17
- prevMonthIcon: { type: String, required: false },
15
+ as: { type: null, required: false },
16
+ nextYearIcon: { type: [String, Object], required: false },
17
+ nextYear: { type: Object, required: false },
18
+ nextMonthIcon: { type: [String, Object], required: false },
19
+ nextMonth: { type: Object, required: false },
20
+ prevYearIcon: { type: [String, Object], required: false },
21
+ prevYear: { type: Object, required: false },
22
+ prevMonthIcon: { type: [String, Object], required: false },
23
+ prevMonth: { type: Object, required: false },
18
24
  size: { type: null, required: false },
25
+ color: { type: null, required: false },
26
+ variant: { type: null, required: false },
19
27
  range: { type: Boolean, required: false },
20
28
  multiple: { type: Boolean, required: false },
21
29
  monthControls: { type: Boolean, required: false, default: true },
22
30
  yearControls: { type: Boolean, required: false, default: true },
23
31
  defaultValue: { type: null, required: false },
24
32
  modelValue: { type: null, required: false },
25
- class: { type: null, required: false },
26
33
  ui: { type: null, required: false },
34
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
27
35
  defaultPlaceholder: { type: null, required: false },
28
36
  placeholder: { type: null, required: false },
29
37
  pagedNavigation: { type: Boolean, required: false },
@@ -47,25 +55,28 @@ const props = defineProps({
47
55
  isDateHighlightable: { type: Function, required: false },
48
56
  fixedDate: { type: String, required: false }
49
57
  });
50
- const emit = defineEmits(["update:modelValue", "update:placeholder", "update:startValue"]);
58
+ const emit = defineEmits(["update:modelValue", "update:placeholder", "update:validModelValue", "update:startValue"]);
51
59
  defineSlots();
52
- const rootProps = useForwardPropsEmits(reactiveOmit(props, "range", "modelValue", "defaultValue", "size", "monthControls", "yearControls", "class", "ui"), emit);
60
+ const rootProps = useForwardPropsEmits(reactiveOmit(props, "range", "modelValue", "defaultValue", "size", "color", "variant", "monthControls", "yearControls", "class", "ui"), emit);
53
61
  const { code: locale, dir, t } = useLocale();
54
- const { theme, generateStyle } = useTheme();
55
- const nextYearIcon = computed(() => props.nextYearIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronDoubleLeft : theme.value.app.icons.chevronDoubleRight));
56
- const nextMonthIcon = computed(() => props.nextMonthIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronLeft : theme.value.app.icons.chevronRight));
57
- const prevYearIcon = computed(() => props.prevYearIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronDoubleRight : theme.value.app.icons.chevronDoubleLeft));
58
- const prevMonthIcon = computed(() => props.prevMonthIcon || (dir.value === "rtl" ? theme.value.app.icons.chevronRight : theme.value.app.icons.chevronLeft));
62
+ const appConfig = useAppConfig();
63
+ const ui = computed(() => {
64
+ const styler = cv(merge(theme, appConfig.ui.calendar));
65
+ return styler({
66
+ ...props,
67
+ outsideView: props.numberOfMonths === 1
68
+ });
69
+ });
70
+ const nextYearIcon = computed(() => props.nextYearIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronDoubleLeft : appConfig.ui.icons.chevronDoubleRight));
71
+ const nextMonthIcon = computed(() => props.nextMonthIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight));
72
+ const prevYearIcon = computed(() => props.prevYearIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronDoubleRight : appConfig.ui.icons.chevronDoubleLeft));
73
+ const prevMonthIcon = computed(() => props.prevMonthIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronRight : appConfig.ui.icons.chevronLeft));
59
74
  function paginateYear(date, sign) {
60
75
  if (sign === -1)
61
76
  return date.subtract({ years: 1 });
62
77
  return date.add({ years: 1 });
63
78
  }
64
79
  const Calendar = computed(() => props.range ? RangeCalendar : BaseCalendar);
65
- const style = computed(() => generateStyle("calendar", {
66
- ...props,
67
- multipleMonths: props.numberOfMonths > 1
68
- }));
69
80
  </script>
70
81
 
71
82
  <template>
@@ -76,70 +87,68 @@ const style = computed(() => generateStyle("calendar", {
76
87
  :default-value="props.defaultValue"
77
88
  :locale="locale"
78
89
  :dir="dir"
79
- :class="style.root({ class: [props.class, props.ui?.root] })"
90
+ :class="ui.root({ class: [props.class, props.ui?.root] })"
80
91
  data-part="root"
81
92
  >
82
- <Calendar.Header :class="style.header({ class: props.ui?.header })" data-part="header">
93
+ <Calendar.Header :class="ui.header({ class: props.ui?.header })" data-part="header">
83
94
  <Calendar.Prev v-if="props.yearControls" :prev-page="(date) => paginateYear(date, -1)" :aria-label="t('calendar.prevYear')" as-child>
84
- <Button :icon="prevYearIcon" :size="props.size" variant="ghost" />
95
+ <Button :icon="prevYearIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.prevYear" />
85
96
  </Calendar.Prev>
86
97
  <Calendar.Prev v-if="props.monthControls" :aria-label="t('calendar.prevMonth')" as-child>
87
- <Button :icon="prevMonthIcon" :size="props.size" variant="ghost" />
98
+ <Button :icon="prevMonthIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.prevMonth" />
88
99
  </Calendar.Prev>
89
100
 
90
- <Calendar.Heading v-slot="{ headingValue }" :class="style.heading({ class: props.ui?.heading })" data-part="heading">
101
+ <Calendar.Heading v-slot="{ headingValue }" :class="ui.heading({ class: props.ui?.heading })" data-part="heading">
91
102
  <slot name="heading" :value="headingValue">
92
103
  {{ headingValue }}
93
104
  </slot>
94
105
  </Calendar.Heading>
95
106
  <Calendar.Next v-if="props.monthControls" :aria-label="t('calendar.nextMonth')" as-child>
96
- <Button :icon="nextMonthIcon" :size="props.size" variant="ghost" />
107
+ <Button :icon="nextMonthIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.nextMonth" />
97
108
  </Calendar.Next>
98
109
  <Calendar.Next v-if="props.yearControls" :next-page="(date) => paginateYear(date, 1)" :aria-label="t('calendar.nextYear')" as-child>
99
- <Button :icon="nextYearIcon" :size="props.size" variant="ghost" />
110
+ <Button :icon="nextYearIcon" :size="props.size" color="neutral" variant="ghost" v-bind="props.nextYear" />
100
111
  </Calendar.Next>
101
112
  </Calendar.Header>
102
- <div :class="style.body({ class: props.ui?.body })" data-part="body">
113
+ <div :class="ui.body({ class: props.ui?.body })" data-part="body">
103
114
  <Calendar.Grid
104
115
  v-for="month in grid"
105
116
  :key="month.value.toString()"
106
- :class="style.grid({ class: props.ui?.grid })"
117
+ :class="ui.grid({ class: props.ui?.grid })"
107
118
  data-part="grid"
108
119
  >
109
120
  <Calendar.GridHead>
110
- <Calendar.GridRow :class="style.gridWeekDaysRow({ class: props.ui?.gridWeekDaysRow })" data-part="grid-week-day-row">
111
- <Calendar.HeadCell v-for="day in weekDays" :key="day" :class="style.headCell({ class: props.ui?.headCell })" data-part="head-cell">
121
+ <Calendar.GridRow :class="ui.gridWeekDaysRow({ class: props.ui?.gridWeekDaysRow })" data-part="grid-week-day-row">
122
+ <Calendar.HeadCell v-for="day in weekDays" :key="day" :class="ui.headCell({ class: props.ui?.headCell })" data-part="head-cell">
112
123
  <slot name="week-day" :day="day">
113
124
  {{ day }}
114
125
  </slot>
115
126
  </Calendar.HeadCell>
116
127
  </Calendar.GridRow>
117
128
  </Calendar.GridHead>
118
- <Calendar.GridBody :class="style.gridBody({ class: props.ui?.gridBody })" data-part="grid-body">
129
+ <Calendar.GridBody :class="ui.gridBody({ class: props.ui?.gridBody })" data-part="grid-body">
119
130
  <Calendar.GridRow
120
131
  v-for="(weekDates, index) in month.rows"
121
132
  :key="`weekDates-${index}`"
122
- :class="style.gridRow({ class: props.ui?.gridRow })"
133
+ :class="ui.gridRow({ class: props.ui?.gridRow })"
123
134
  data-part="grid-row"
124
135
  >
125
136
  <Calendar.Cell
126
137
  v-for="weekDate in weekDates"
127
138
  :key="weekDate.toString()"
128
139
  :date="weekDate"
129
- :class="style.cell({ class: props.ui?.cell })"
140
+ :class="ui.cell({ class: props.ui?.cell })"
130
141
  data-part="cell"
131
142
  >
132
143
  <Calendar.CellTrigger
133
- v-slot="{ disabled, unavailable }"
134
144
  :day="weekDate"
135
145
  :month="month.value"
136
- as-child
146
+ :class="ui.cellTrigger({ class: props.ui?.cellTrigger })"
147
+ data-part="cell-trigger"
137
148
  >
138
- <div :class="style.cellTrigger({ class: props.ui?.cellTrigger, disabled: disabled || unavailable })" data-part="cell-trigger">
139
- <slot name="day" :day="weekDate">
140
- {{ weekDate.day }}
141
- </slot>
142
- </div>
149
+ <slot name="day" :day="weekDate">
150
+ {{ weekDate.day }}
151
+ </slot>
143
152
  </Calendar.CellTrigger>
144
153
  </Calendar.Cell>
145
154
  </Calendar.GridRow>
@@ -1,50 +1,62 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { DateValue } from '@internationalized/date';
3
3
  import type { CalendarCellTriggerProps, CalendarRootEmits, CalendarRootProps, DateRange, RangeCalendarRootEmits, RangeCalendarRootProps } from 'reka-ui';
4
- import type { calendar } from '../theme/index.js';
5
- import type { ComponentAttrs } from '../types/index.js';
6
- export interface CalendarEmits<R extends boolean, M extends boolean> extends Omit<CalendarRootEmits & RangeCalendarRootEmits, 'update:modelValue'> {
7
- 'update:modelValue': [date: CalendarModelValue<R, M>];
8
- }
9
- export interface CalendarSlots {
10
- 'heading'?: (props: {
11
- value: string;
12
- }) => any;
13
- 'day'?: (props: Pick<CalendarCellTriggerProps, 'day'>) => any;
14
- 'week-day'?: (props: {
15
- day: string;
16
- }) => any;
17
- }
18
- type CalendarVariants = VariantProps<typeof calendar>;
4
+ import theme from '#build/ui/calendar';
5
+ import type { ButtonProps, ComponentBaseProps, ComponentUIProps, IconProps } from '../types';
6
+ import type { MaybeNull, StaticSlot } from '../types/utils';
19
7
  type CalendarDefaultValue<R extends boolean = false, M extends boolean = false> = R extends true ? DateRange : M extends true ? DateValue[] : DateValue;
20
- type CalendarModelValue<R extends boolean = false, M extends boolean = false> = R extends true ? (DateRange | null) : M extends true ? (DateValue[] | undefined) : (DateValue | undefined);
8
+ type CalendarModelValue<R extends boolean = false, M extends boolean = false> = R extends true ? MaybeNull<DateRange> : M extends true ? (DateValue[] | undefined) : (DateValue | undefined);
21
9
  type _CalendarRootProps = Omit<CalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
22
10
  type _RangeCalendarRootProps = Omit<RangeCalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
23
- export interface CalendarProps<R extends boolean = false, M extends boolean = false> extends ComponentAttrs<typeof calendar>, _CalendarRootProps, _RangeCalendarRootProps {
11
+ type ThemeVariants = VariantProps<typeof theme>;
12
+ export interface CalendarProps<R extends boolean = false, M extends boolean = false> extends ComponentBaseProps, _CalendarRootProps, _RangeCalendarRootProps {
13
+ /**
14
+ * The element or component this component should render as.
15
+ * @default "div"
16
+ */
17
+ as?: CalendarRootProps['as'];
24
18
  /**
25
19
  * The icon to use for the next year control.
26
20
  * @default app.icons.chevronDoubleRight
27
21
  */
28
- nextYearIcon?: string;
22
+ nextYearIcon?: IconProps['name'];
23
+ /**
24
+ * Configure the next year button.
25
+ */
26
+ nextYear?: ButtonProps;
29
27
  /**
30
28
  * The icon to use for the next month control.
31
29
  * @default app.icons.chevronRight
32
30
  */
33
- nextMonthIcon?: string;
31
+ nextMonthIcon?: IconProps['name'];
32
+ /**
33
+ * Configure the next month button.
34
+ */
35
+ nextMonth?: ButtonProps;
34
36
  /**
35
37
  * The icon to use for the previous year control.
36
38
  * @default app.icons.chevronDoubleLeft
37
39
  */
38
- prevYearIcon?: string;
40
+ prevYearIcon?: IconProps['name'];
41
+ /**
42
+ * Configure the prev year button.
43
+ */
44
+ prevYear?: ButtonProps;
39
45
  /**
40
46
  * The icon to use for the previous month control.
41
47
  * @default app.icons.chevronLeft
42
48
  */
43
- prevMonthIcon?: string;
49
+ prevMonthIcon?: IconProps['name'];
50
+ /**
51
+ * Configure the prev month button.
52
+ */
53
+ prevMonth?: ButtonProps;
44
54
  /**
45
55
  * @default "md"
46
56
  */
47
- size?: CalendarVariants['size'];
57
+ size?: ThemeVariants['size'];
58
+ color?: ThemeVariants['color'];
59
+ variant?: ThemeVariants['variant'];
48
60
  /** Whether or not a range of dates can be selected */
49
61
  range?: R & boolean;
50
62
  /** Whether or not multiple dates can be selected */
@@ -55,21 +67,36 @@ export interface CalendarProps<R extends boolean = false, M extends boolean = fa
55
67
  yearControls?: boolean;
56
68
  defaultValue?: CalendarDefaultValue<R, M>;
57
69
  modelValue?: CalendarDefaultValue<R, M>;
70
+ ui?: ComponentUIProps<typeof theme>;
71
+ }
72
+ export interface CalendarEmits<R extends boolean, M extends boolean> extends Omit<CalendarRootEmits & RangeCalendarRootEmits, 'update:modelValue'> {
73
+ 'update:modelValue': [date: CalendarModelValue<R, M>];
74
+ }
75
+ export interface CalendarSlots {
76
+ 'heading': StaticSlot<{
77
+ value: string;
78
+ }>;
79
+ 'day': StaticSlot<Pick<CalendarCellTriggerProps, 'day'>>;
80
+ 'week-day': StaticSlot<{
81
+ day: string;
82
+ }>;
58
83
  }
59
- declare const _default: <R extends boolean, M extends boolean>(__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<{
60
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
61
- readonly "onUpdate:modelValue"?: ((date: CalendarModelValue<R, M>) => any) | undefined;
62
- readonly "onUpdate:placeholder"?: ((...args: unknown[]) => any) | undefined;
63
- readonly "onUpdate:startValue"?: ((date: DateValue | undefined) => any) | undefined;
64
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue" | "onUpdate:placeholder" | "onUpdate:startValue"> & CalendarProps<R, M> & Partial<{}>> & import("vue").PublicProps;
65
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
84
+ declare const __VLS_export: <R extends boolean, M extends boolean>(__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<{
85
+ props: __VLS_PrettifyLocal<CalendarProps<R, M> & {
86
+ "onUpdate:modelValue"?: ((date: CalendarModelValue<R, M>) => any) | undefined;
87
+ "onUpdate:placeholder"?: ((...args: DateValue[]) => any) | undefined;
88
+ "onUpdate:validModelValue"?: ((date: DateRange) => any) | undefined;
89
+ "onUpdate:startValue"?: ((date: DateValue | undefined) => any) | undefined;
90
+ }> & import("vue").PublicProps;
91
+ expose: (exposed: {}) => void;
66
92
  attrs: any;
67
93
  slots: CalendarSlots;
68
- emit: ((evt: "update:modelValue", date: CalendarModelValue<R, M>) => void) & ((evt: "update:placeholder", ...args: [date: DateValue] & [date: DateValue]) => void) & ((evt: "update:startValue", date: DateValue | undefined) => void);
94
+ emit: ((evt: "update:modelValue", date: CalendarModelValue<R, M>) => void) & ((evt: "update:placeholder", ...args: [date: DateValue] & [date: DateValue]) => void) & ((evt: "update:validModelValue", date: DateRange) => void) & ((evt: "update:startValue", date: DateValue | undefined) => void);
69
95
  }>) => import("vue").VNode & {
70
96
  __ctx?: Awaited<typeof __VLS_setup>;
71
97
  };
98
+ declare const _default: typeof __VLS_export;
72
99
  export default _default;
73
100
  type __VLS_PrettifyLocal<T> = {
74
- [K in keyof T]: T[K];
101
+ [K in keyof T as K]: T[K];
75
102
  } & {};
@@ -1,37 +1,41 @@
1
1
  <script>
2
-
2
+ import theme from "#build/ui/card";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
6
  import { Primitive } from "reka-ui";
7
7
  import { computed } from "vue";
8
- import { useTheme } from "../composables/useTheme";
8
+ import { useAppConfig } from "#imports";
9
+ import { cv, merge } from "../utils/style";
9
10
  const props = defineProps({
10
11
  as: { type: null, required: false },
11
12
  variant: { type: null, required: false },
12
13
  title: { type: String, required: false },
13
14
  description: { type: String, required: false },
14
- class: { type: null, required: false },
15
- ui: { type: null, required: false }
15
+ ui: { type: null, required: false },
16
+ class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true }
16
17
  });
17
18
  const slots = defineSlots();
18
- const { generateStyle } = useTheme();
19
- const style = computed(() => generateStyle("card", props));
19
+ const appConfig = useAppConfig();
20
+ const ui = computed(() => {
21
+ const styler = cv(merge(theme, appConfig.ui.card));
22
+ return styler(props);
23
+ });
20
24
  </script>
21
25
 
22
26
  <template>
23
- <Primitive :as="props.as" :class="style.root({ class: [props.class, props.ui?.root] })" data-part="root">
27
+ <Primitive :as="props.as" :class="ui.root({ class: [props.class, props.ui?.root] })" data-part="root">
24
28
  <slot name="content">
25
29
  <div
26
30
  v-if="slots.header || props.title || slots.title || props.description || slots.description"
27
- :class="style.header({ class: props.ui?.header })"
31
+ :class="ui.header({ class: props.ui?.header })"
28
32
  data-part="header"
29
33
  >
30
34
  <slot name="header">
31
35
  <Primitive
32
36
  v-if="props.title || slots.title"
33
- :as="slots.title ? void 0 : 'h2'"
34
- :class="style.title({ class: props.ui?.title })"
37
+ :as="!!slots.title ? void 0 : 'h2'"
38
+ :class="ui.title({ class: props.ui?.title })"
35
39
  data-part="title"
36
40
  >
37
41
  <slot name="title">
@@ -40,9 +44,9 @@ const style = computed(() => generateStyle("card", props));
40
44
  </Primitive>
41
45
  <Primitive
42
46
  v-if="props.description || slots.description"
43
- :as="slots.description ? void 0 : 'p'"
47
+ :as="!!slots.description ? void 0 : 'p'"
44
48
  :as-child="!!slots.description"
45
- :class="style.description({ class: props.ui?.description })"
49
+ :class="ui.description({ class: props.ui?.description })"
46
50
  data-part="description"
47
51
  >
48
52
  <slot name="description">
@@ -52,11 +56,11 @@ const style = computed(() => generateStyle("card", props));
52
56
  </slot>
53
57
  </div>
54
58
 
55
- <div v-if="slots.default" :class="style.body({ class: props.ui?.body })" data-part="body">
59
+ <div v-if="!!slots.default" :class="ui.body({ class: props.ui?.body })" data-part="body">
56
60
  <slot></slot>
57
61
  </div>
58
62
 
59
- <div v-if="slots.footer" :class="style.footer({ class: props.ui?.footer })" data-part="footer">
63
+ <div v-if="!!slots.footer" :class="ui.footer({ class: props.ui?.footer })" data-part="footer">
60
64
  <slot name="footer"></slot>
61
65
  </div>
62
66
  </slot>
@@ -1,27 +1,31 @@
1
1
  import type { VariantProps } from '@byyuurin/ui-kit';
2
2
  import type { PrimitiveProps } from 'reka-ui';
3
- import type { card } from '../theme/index.js';
4
- import type { ComponentAttrs } from '../types/index.js';
5
- export interface CardSlots {
6
- default?: (props?: {}) => any;
7
- content?: (props?: {}) => any;
8
- header?: (props?: {}) => any;
9
- title?: (props?: {}) => any;
10
- description?: (props?: {}) => any;
11
- footer?: (props?: {}) => any;
12
- }
13
- type CardVariants = VariantProps<typeof card>;
14
- export interface CardProps extends ComponentAttrs<typeof card> {
3
+ import theme from '#build/ui/card';
4
+ import type { ComponentBaseProps, ComponentUIProps } from '../types';
5
+ import type { StaticSlot } from '../types/utils';
6
+ type ThemeVariants = VariantProps<typeof theme>;
7
+ export interface CardProps extends ComponentBaseProps {
15
8
  /**
16
9
  * The element or component this component should render as.
17
10
  * @default "div"
18
11
  */
19
12
  as?: PrimitiveProps['as'];
20
- variant?: CardVariants['variant'];
13
+ /** @default "outline" */
14
+ variant?: ThemeVariants['variant'];
21
15
  title?: string;
22
16
  description?: string;
17
+ ui?: ComponentUIProps<typeof theme>;
18
+ }
19
+ export interface CardSlots {
20
+ default: StaticSlot;
21
+ content: StaticSlot;
22
+ header: StaticSlot;
23
+ title: StaticSlot;
24
+ description: StaticSlot;
25
+ footer: StaticSlot;
23
26
  }
24
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<CardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, CardSlots>;
27
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<CardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, CardSlots>;
28
+ declare const _default: typeof __VLS_export;
25
29
  export default _default;
26
30
  type __VLS_WithSlots<T, S> = T & {
27
31
  new (): {