@nuxt/ui 3.3.4 → 3.3.6

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 (149) hide show
  1. package/.nuxt/ui/drawer.ts +23 -0
  2. package/.nuxt/ui/progress.ts +3 -3
  3. package/README.md +10 -10
  4. package/dist/module.d.mts +6 -6
  5. package/dist/module.json +2 -2
  6. package/dist/module.mjs +3 -3
  7. package/dist/runtime/components/Accordion.d.vue.ts +78 -0
  8. package/dist/runtime/components/Accordion.vue.d.ts +6 -5
  9. package/dist/runtime/components/Alert.d.vue.ts +82 -0
  10. package/dist/runtime/components/Alert.vue.d.ts +2 -1
  11. package/dist/runtime/components/App.d.vue.ts +25 -0
  12. package/dist/runtime/components/App.vue +1 -1
  13. package/dist/runtime/components/App.vue.d.ts +5 -4
  14. package/dist/runtime/components/Avatar.d.vue.ts +42 -0
  15. package/dist/runtime/components/Avatar.vue.d.ts +2 -1
  16. package/dist/runtime/components/AvatarGroup.d.vue.ts +32 -0
  17. package/dist/runtime/components/AvatarGroup.vue.d.ts +2 -1
  18. package/dist/runtime/components/Badge.d.vue.ts +44 -0
  19. package/dist/runtime/components/Badge.vue.d.ts +2 -1
  20. package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
  21. package/dist/runtime/components/Breadcrumb.vue.d.ts +4 -3
  22. package/dist/runtime/components/Button.d.vue.ts +45 -0
  23. package/dist/runtime/components/Button.vue.d.ts +2 -1
  24. package/dist/runtime/components/ButtonGroup.d.vue.ts +35 -0
  25. package/dist/runtime/components/ButtonGroup.vue.d.ts +2 -1
  26. package/dist/runtime/components/Calendar.d.vue.ts +113 -0
  27. package/dist/runtime/components/Calendar.vue.d.ts +9 -8
  28. package/dist/runtime/components/Card.d.vue.ts +30 -0
  29. package/dist/runtime/components/Card.vue.d.ts +2 -1
  30. package/dist/runtime/components/Carousel.d.vue.ts +128 -0
  31. package/dist/runtime/components/Carousel.vue +32 -12
  32. package/dist/runtime/components/Carousel.vue.d.ts +7 -6
  33. package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
  34. package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
  35. package/dist/runtime/components/CheckboxGroup.d.vue.ts +85 -0
  36. package/dist/runtime/components/CheckboxGroup.vue.d.ts +7 -6
  37. package/dist/runtime/components/Chip.d.vue.ts +58 -0
  38. package/dist/runtime/components/Chip.vue.d.ts +2 -1
  39. package/dist/runtime/components/Collapsible.d.vue.ts +36 -0
  40. package/dist/runtime/components/Collapsible.vue.d.ts +2 -1
  41. package/dist/runtime/components/ColorPicker.d.vue.ts +49 -0
  42. package/dist/runtime/components/ColorPicker.vue.d.ts +2 -1
  43. package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
  44. package/dist/runtime/components/CommandPalette.vue.d.ts +13 -12
  45. package/dist/runtime/components/Container.d.vue.ts +19 -0
  46. package/dist/runtime/components/Container.vue.d.ts +2 -1
  47. package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
  48. package/dist/runtime/components/ContextMenu.vue.d.ts +6 -5
  49. package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
  50. package/dist/runtime/components/ContextMenuContent.vue.d.ts +10 -9
  51. package/dist/runtime/components/Drawer.d.vue.ts +87 -0
  52. package/dist/runtime/components/Drawer.vue +19 -5
  53. package/dist/runtime/components/Drawer.vue.d.ts +5 -1
  54. package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
  55. package/dist/runtime/components/DropdownMenu.vue.d.ts +6 -5
  56. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
  57. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +10 -9
  58. package/dist/runtime/components/FileUpload.d.vue.ts +167 -0
  59. package/dist/runtime/components/FileUpload.vue.d.ts +9 -8
  60. package/dist/runtime/components/Form.d.vue.ts +72 -0
  61. package/dist/runtime/components/Form.vue.d.ts +7 -6
  62. package/dist/runtime/components/FormField.d.vue.ts +62 -0
  63. package/dist/runtime/components/FormField.vue.d.ts +2 -1
  64. package/dist/runtime/components/Icon.d.vue.ts +9 -0
  65. package/dist/runtime/components/Icon.vue.d.ts +2 -1
  66. package/dist/runtime/components/Input.d.vue.ts +78 -0
  67. package/dist/runtime/components/Input.vue.d.ts +9 -8
  68. package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
  69. package/dist/runtime/components/InputMenu.vue +1 -1
  70. package/dist/runtime/components/InputMenu.vue.d.ts +19 -24
  71. package/dist/runtime/components/InputNumber.d.vue.ts +187 -0
  72. package/dist/runtime/components/InputNumber.vue.d.ts +2 -1
  73. package/dist/runtime/components/InputTags.d.vue.ts +186 -0
  74. package/dist/runtime/components/InputTags.vue +2 -2
  75. package/dist/runtime/components/InputTags.vue.d.ts +13 -12
  76. package/dist/runtime/components/Kbd.d.vue.ts +39 -0
  77. package/dist/runtime/components/Kbd.vue.d.ts +2 -1
  78. package/dist/runtime/components/Link.d.vue.ts +92 -0
  79. package/dist/runtime/components/Link.vue.d.ts +2 -1
  80. package/dist/runtime/components/LinkBase.d.vue.ts +26 -0
  81. package/dist/runtime/components/LinkBase.vue.d.ts +2 -1
  82. package/dist/runtime/components/Modal.d.vue.ts +107 -0
  83. package/dist/runtime/components/Modal.vue.d.ts +4 -3
  84. package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
  85. package/dist/runtime/components/NavigationMenu.vue.d.ts +6 -5
  86. package/dist/runtime/components/OverlayProvider.d.vue.ts +3 -0
  87. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
  88. package/dist/runtime/components/Pagination.d.vue.ts +119 -0
  89. package/dist/runtime/components/Pagination.vue +4 -4
  90. package/dist/runtime/components/Pagination.vue.d.ts +2 -1
  91. package/dist/runtime/components/PinInput.d.vue.ts +61 -0
  92. package/dist/runtime/components/PinInput.vue.d.ts +10 -9
  93. package/dist/runtime/components/Popover.d.vue.ts +71 -0
  94. package/dist/runtime/components/Popover.vue.d.ts +2 -1
  95. package/dist/runtime/components/Progress.d.vue.ts +67 -0
  96. package/dist/runtime/components/Progress.vue +2 -3
  97. package/dist/runtime/components/Progress.vue.d.ts +2 -1
  98. package/dist/runtime/components/RadioGroup.d.vue.ts +95 -0
  99. package/dist/runtime/components/RadioGroup.vue.d.ts +7 -6
  100. package/dist/runtime/components/Select.d.vue.ts +254 -0
  101. package/dist/runtime/components/Select.vue.d.ts +11 -10
  102. package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
  103. package/dist/runtime/components/SelectMenu.vue.d.ts +16 -15
  104. package/dist/runtime/components/Separator.d.vue.ts +55 -0
  105. package/dist/runtime/components/Separator.vue.d.ts +2 -1
  106. package/dist/runtime/components/Skeleton.d.vue.ts +18 -0
  107. package/dist/runtime/components/Skeleton.vue.d.ts +2 -1
  108. package/dist/runtime/components/Slideover.d.vue.ts +108 -0
  109. package/dist/runtime/components/Slideover.vue.d.ts +4 -3
  110. package/dist/runtime/components/Slider.d.vue.ts +58 -0
  111. package/dist/runtime/components/Slider.vue.d.ts +8 -7
  112. package/dist/runtime/components/Stepper.d.vue.ts +86 -0
  113. package/dist/runtime/components/Stepper.vue.d.ts +10 -9
  114. package/dist/runtime/components/Switch.d.vue.ts +71 -0
  115. package/dist/runtime/components/Switch.vue.d.ts +2 -1
  116. package/dist/runtime/components/Table.d.vue.ts +202 -0
  117. package/dist/runtime/components/Table.vue +19 -1
  118. package/dist/runtime/components/Table.vue.d.ts +20 -19
  119. package/dist/runtime/components/Tabs.d.vue.ts +99 -0
  120. package/dist/runtime/components/Tabs.vue +2 -2
  121. package/dist/runtime/components/Tabs.vue.d.ts +7 -6
  122. package/dist/runtime/components/Textarea.d.vue.ts +80 -0
  123. package/dist/runtime/components/Textarea.vue.d.ts +9 -8
  124. package/dist/runtime/components/Timeline.d.vue.ts +71 -0
  125. package/dist/runtime/components/Timeline.vue.d.ts +7 -6
  126. package/dist/runtime/components/Toast.d.vue.ts +165 -0
  127. package/dist/runtime/components/Toast.vue.d.ts +2 -1
  128. package/dist/runtime/components/Toaster.d.vue.ts +45 -0
  129. package/dist/runtime/components/Toaster.vue.d.ts +2 -1
  130. package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
  131. package/dist/runtime/components/Tooltip.vue.d.ts +2 -1
  132. package/dist/runtime/components/Tree.d.vue.ts +115 -0
  133. package/dist/runtime/components/Tree.vue.d.ts +7 -6
  134. package/dist/runtime/composables/useKbd.js +1 -1
  135. package/dist/runtime/composables/usePortal.d.ts +3 -3
  136. package/dist/runtime/composables/usePortal.js +5 -10
  137. package/dist/runtime/inertia/components/Link.d.vue.ts +64 -0
  138. package/dist/runtime/inertia/components/Link.vue.d.ts +2 -1
  139. package/dist/runtime/inertia/components/LinkBase.d.vue.ts +26 -0
  140. package/dist/runtime/inertia/components/LinkBase.vue.d.ts +2 -1
  141. package/dist/runtime/types/tv.d.ts +9 -2
  142. package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
  143. package/dist/runtime/vue/components/Icon.vue.d.ts +2 -1
  144. package/dist/runtime/vue/components/Link.d.vue.ts +94 -0
  145. package/dist/runtime/vue/components/Link.vue.d.ts +2 -1
  146. package/dist/shared/{ui.BTUFJHYJ.mjs → ui.DBpKc5X3.mjs} +100 -68
  147. package/dist/unplugin.mjs +1 -1
  148. package/dist/vite.mjs +1 -1
  149. package/package.json +18 -18
@@ -0,0 +1,67 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/breadcrumb';
3
+ import type { AvatarProps, LinkProps } from '../types';
4
+ import type { DynamicSlots, ComponentConfig } from '../types/utils';
5
+ type Breadcrumb = ComponentConfig<typeof theme, AppConfig, 'breadcrumb'>;
6
+ export interface BreadcrumbItem extends Omit<LinkProps, 'raw' | 'custom'> {
7
+ label?: string;
8
+ /**
9
+ * @IconifyIcon
10
+ */
11
+ icon?: string;
12
+ avatar?: AvatarProps;
13
+ slot?: string;
14
+ class?: any;
15
+ ui?: Pick<Breadcrumb['slots'], 'item' | 'link' | 'linkLeadingIcon' | 'linkLeadingAvatar' | 'linkLabel' | 'separator' | 'separatorIcon'>;
16
+ [key: string]: any;
17
+ }
18
+ export interface BreadcrumbProps<T extends BreadcrumbItem = BreadcrumbItem> {
19
+ /**
20
+ * The element or component this component should render as.
21
+ * @defaultValue 'nav'
22
+ */
23
+ as?: any;
24
+ items?: T[];
25
+ /**
26
+ * The icon to use as a separator.
27
+ * @defaultValue appConfig.ui.icons.chevronRight
28
+ * @IconifyIcon
29
+ */
30
+ separatorIcon?: string;
31
+ /**
32
+ * The key used to get the label from the item.
33
+ * @defaultValue 'label'
34
+ */
35
+ labelKey?: string;
36
+ class?: any;
37
+ ui?: Breadcrumb['slots'];
38
+ }
39
+ type SlotProps<T extends BreadcrumbItem> = (props: {
40
+ item: T;
41
+ index: number;
42
+ active?: boolean;
43
+ }) => any;
44
+ export type BreadcrumbSlots<T extends BreadcrumbItem = BreadcrumbItem> = {
45
+ 'item': SlotProps<T>;
46
+ 'item-leading': SlotProps<T>;
47
+ 'item-label': SlotProps<T>;
48
+ 'item-trailing': SlotProps<T>;
49
+ 'separator': any;
50
+ } & DynamicSlots<T, 'leading' | 'label' | 'trailing', {
51
+ index: number;
52
+ active?: boolean;
53
+ }>;
54
+ declare const __VLS_export: <T extends BreadcrumbItem>(__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<{
55
+ props: __VLS_PrettifyLocal<BreadcrumbProps<T>> & import("vue").PublicProps;
56
+ expose: (exposed: {}) => void;
57
+ attrs: any;
58
+ slots: BreadcrumbSlots<T>;
59
+ emit: {};
60
+ }>) => import("vue").VNode & {
61
+ __ctx?: Awaited<typeof __VLS_setup>;
62
+ };
63
+ declare const _default: typeof __VLS_export;
64
+ export default _default;
65
+ type __VLS_PrettifyLocal<T> = {
66
+ [K in keyof T as K]: T[K];
67
+ } & {};
@@ -51,15 +51,16 @@ export type BreadcrumbSlots<T extends BreadcrumbItem = BreadcrumbItem> = {
51
51
  index: number;
52
52
  active?: boolean;
53
53
  }>;
54
- declare const _default: <T extends BreadcrumbItem>(__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<{
55
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & BreadcrumbProps<T> & {}> & import("vue").PublicProps;
56
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
54
+ declare const __VLS_export: <T extends BreadcrumbItem>(__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<{
55
+ props: __VLS_PrettifyLocal<BreadcrumbProps<T>> & import("vue").PublicProps;
56
+ expose: (exposed: {}) => void;
57
57
  attrs: any;
58
58
  slots: BreadcrumbSlots<T>;
59
59
  emit: {};
60
60
  }>) => import("vue").VNode & {
61
61
  __ctx?: Awaited<typeof __VLS_setup>;
62
62
  };
63
+ declare const _default: typeof __VLS_export;
63
64
  export default _default;
64
65
  type __VLS_PrettifyLocal<T> = {
65
66
  [K in keyof T as K]: T[K];
@@ -0,0 +1,45 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/button';
3
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
4
+ import type { LinkProps } from '../types';
5
+ import type { ComponentConfig } from '../types/utils';
6
+ type Button = ComponentConfig<typeof theme, AppConfig, 'button'>;
7
+ export interface ButtonProps extends UseComponentIconsProps, Omit<LinkProps, 'raw' | 'custom'> {
8
+ label?: string;
9
+ /**
10
+ * @defaultValue 'primary'
11
+ */
12
+ color?: Button['variants']['color'];
13
+ activeColor?: Button['variants']['color'];
14
+ /**
15
+ * @defaultValue 'solid'
16
+ */
17
+ variant?: Button['variants']['variant'];
18
+ activeVariant?: Button['variants']['variant'];
19
+ /**
20
+ * @defaultValue 'md'
21
+ */
22
+ size?: Button['variants']['size'];
23
+ /** Render the button with equal padding on all sides. */
24
+ square?: boolean;
25
+ /** Render the button full width. */
26
+ block?: boolean;
27
+ /** Set loading state automatically based on the `@click` promise state */
28
+ loadingAuto?: boolean;
29
+ onClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>;
30
+ class?: any;
31
+ ui?: Button['slots'];
32
+ }
33
+ export interface ButtonSlots {
34
+ leading(props?: {}): any;
35
+ default(props?: {}): any;
36
+ trailing(props?: {}): any;
37
+ }
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;
40
+ export default _default;
41
+ type __VLS_WithSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
@@ -35,7 +35,8 @@ export interface ButtonSlots {
35
35
  default(props?: {}): any;
36
36
  trailing(props?: {}): any;
37
37
  }
38
- declare const _default: __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>;
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;
39
40
  export default _default;
40
41
  type __VLS_WithSlots<T, S> = T & {
41
42
  new (): {
@@ -0,0 +1,35 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/button-group';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type ButtonGroup = ComponentConfig<typeof theme, AppConfig, 'buttonGroup'>;
5
+ export interface ButtonGroupProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'div'
9
+ */
10
+ as?: any;
11
+ /**
12
+ * @defaultValue 'md'
13
+ */
14
+ size?: ButtonGroup['variants']['size'];
15
+ /**
16
+ * The orientation the buttons are laid out.
17
+ * @defaultValue 'horizontal'
18
+ */
19
+ orientation?: ButtonGroup['variants']['orientation'];
20
+ class?: any;
21
+ ui?: ButtonGroup['slots'];
22
+ }
23
+ export interface ButtonGroupSlots {
24
+ default(props?: {}): any;
25
+ }
26
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ButtonGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonGroupProps> & Readonly<{}>, {
27
+ orientation: ButtonGroup["variants"]["orientation"];
28
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonGroupSlots>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -23,9 +23,10 @@ export interface ButtonGroupProps {
23
23
  export interface ButtonGroupSlots {
24
24
  default(props?: {}): any;
25
25
  }
26
- declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ButtonGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonGroupProps> & Readonly<{}>, {
26
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ButtonGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonGroupProps> & Readonly<{}>, {
27
27
  orientation: ButtonGroup["variants"]["orientation"];
28
28
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonGroupSlots>;
29
+ declare const _default: typeof __VLS_export;
29
30
  export default _default;
30
31
  type __VLS_WithSlots<T, S> = T & {
31
32
  new (): {
@@ -0,0 +1,113 @@
1
+ import type { CalendarRootProps, CalendarRootEmits, RangeCalendarRootProps, RangeCalendarRootEmits, DateRange, CalendarCellTriggerProps } from 'reka-ui';
2
+ import type { DateValue } from '@internationalized/date';
3
+ import type { AppConfig } from '@nuxt/schema';
4
+ import theme from '#build/ui/calendar';
5
+ import type { ButtonProps } from '../types';
6
+ import type { ComponentConfig } from '../types/utils';
7
+ type Calendar = ComponentConfig<typeof theme, AppConfig, 'calendar'>;
8
+ type CalendarDefaultValue<R extends boolean = false, M extends boolean = false> = R extends true ? DateRange : M extends true ? DateValue[] : DateValue;
9
+ type CalendarModelValue<R extends boolean = false, M extends boolean = false> = R extends true ? (DateRange | null) : M extends true ? (DateValue[] | undefined) : (DateValue | undefined);
10
+ type _CalendarRootProps = Omit<CalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
11
+ type _RangeCalendarRootProps = Omit<RangeCalendarRootProps, 'as' | 'asChild' | 'modelValue' | 'defaultValue' | 'dir' | 'locale' | 'calendarLabel' | 'multiple'>;
12
+ export interface CalendarProps<R extends boolean = false, M extends boolean = false> extends _RangeCalendarRootProps, _CalendarRootProps {
13
+ /**
14
+ * The element or component this component should render as.
15
+ * @defaultValue 'div'
16
+ */
17
+ as?: any;
18
+ /**
19
+ * The icon to use for the next year control.
20
+ * @defaultValue appConfig.ui.icons.chevronDoubleRight
21
+ * @IconifyIcon
22
+ */
23
+ nextYearIcon?: string;
24
+ /**
25
+ * Configure the next year button.
26
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
27
+ */
28
+ nextYear?: ButtonProps;
29
+ /**
30
+ * The icon to use for the next month control.
31
+ * @defaultValue appConfig.ui.icons.chevronRight
32
+ * @IconifyIcon
33
+ */
34
+ nextMonthIcon?: string;
35
+ /**
36
+ * Configure the next month button.
37
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
38
+ */
39
+ nextMonth?: ButtonProps;
40
+ /**
41
+ * The icon to use for the previous year control.
42
+ * @defaultValue appConfig.ui.icons.chevronDoubleLeft
43
+ * @IconifyIcon
44
+ */
45
+ prevYearIcon?: string;
46
+ /**
47
+ * Configure the prev year button.
48
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
49
+ */
50
+ prevYear?: ButtonProps;
51
+ /**
52
+ * The icon to use for the previous month control.
53
+ * @defaultValue appConfig.ui.icons.chevronLeft
54
+ * @IconifyIcon
55
+ */
56
+ prevMonthIcon?: string;
57
+ /**
58
+ * Configure the prev month button.
59
+ * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
60
+ */
61
+ prevMonth?: ButtonProps;
62
+ /**
63
+ * @defaultValue 'primary'
64
+ */
65
+ color?: Calendar['variants']['color'];
66
+ /**
67
+ * @defaultValue 'md'
68
+ */
69
+ size?: Calendar['variants']['size'];
70
+ /** Whether or not a range of dates can be selected */
71
+ range?: R & boolean;
72
+ /** Whether or not multiple dates can be selected */
73
+ multiple?: M & boolean;
74
+ /** Show month controls */
75
+ monthControls?: boolean;
76
+ /** Show year controls */
77
+ yearControls?: boolean;
78
+ defaultValue?: CalendarDefaultValue<R, M>;
79
+ modelValue?: CalendarModelValue<R, M>;
80
+ class?: any;
81
+ ui?: Calendar['slots'];
82
+ }
83
+ export interface CalendarEmits<R extends boolean, M extends boolean> extends Omit<CalendarRootEmits & RangeCalendarRootEmits, 'update:modelValue'> {
84
+ 'update:modelValue': [date: CalendarModelValue<R, M>];
85
+ }
86
+ export interface CalendarSlots {
87
+ 'heading': (props: {
88
+ value: string;
89
+ }) => any;
90
+ 'day': (props: Pick<CalendarCellTriggerProps, 'day'>) => any;
91
+ 'week-day': (props: {
92
+ day: string;
93
+ }) => any;
94
+ }
95
+ 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<{
96
+ props: __VLS_PrettifyLocal<CalendarProps<R, M> & {
97
+ "onUpdate:modelValue"?: ((date: CalendarModelValue<R, M>) => any) | undefined;
98
+ "onUpdate:placeholder"?: ((...args: DateValue[]) => any) | undefined;
99
+ "onUpdate:validModelValue"?: ((date: DateRange) => any) | undefined;
100
+ "onUpdate:startValue"?: ((date: DateValue | undefined) => any) | undefined;
101
+ }> & import("vue").PublicProps;
102
+ expose: (exposed: {}) => void;
103
+ attrs: any;
104
+ slots: CalendarSlots;
105
+ 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);
106
+ }>) => import("vue").VNode & {
107
+ __ctx?: Awaited<typeof __VLS_setup>;
108
+ };
109
+ declare const _default: typeof __VLS_export;
110
+ export default _default;
111
+ type __VLS_PrettifyLocal<T> = {
112
+ [K in keyof T as K]: T[K];
113
+ } & {};
@@ -92,20 +92,21 @@ export interface CalendarSlots {
92
92
  day: string;
93
93
  }) => any;
94
94
  }
95
- 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<{
96
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
97
- readonly "onUpdate:modelValue"?: ((date: CalendarModelValue<R, M>) => any) | undefined;
98
- readonly "onUpdate:placeholder"?: ((...args: unknown[]) => any) | undefined;
99
- readonly "onUpdate:validModelValue"?: ((date: DateRange) => any) | undefined;
100
- readonly "onUpdate:startValue"?: ((date: DateValue | undefined) => any) | undefined;
101
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:modelValue" | "onUpdate:placeholder" | "onUpdate:validModelValue" | "onUpdate:startValue"> & CalendarProps<R, M> & {}> & import("vue").PublicProps;
102
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
95
+ 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<{
96
+ props: __VLS_PrettifyLocal<CalendarProps<R, M> & {
97
+ "onUpdate:modelValue"?: ((date: CalendarModelValue<R, M>) => any) | undefined;
98
+ "onUpdate:placeholder"?: ((...args: DateValue[]) => any) | undefined;
99
+ "onUpdate:validModelValue"?: ((date: DateRange) => any) | undefined;
100
+ "onUpdate:startValue"?: ((date: DateValue | undefined) => any) | undefined;
101
+ }> & import("vue").PublicProps;
102
+ expose: (exposed: {}) => void;
103
103
  attrs: any;
104
104
  slots: CalendarSlots;
105
105
  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);
106
106
  }>) => import("vue").VNode & {
107
107
  __ctx?: Awaited<typeof __VLS_setup>;
108
108
  };
109
+ declare const _default: typeof __VLS_export;
109
110
  export default _default;
110
111
  type __VLS_PrettifyLocal<T> = {
111
112
  [K in keyof T as K]: T[K];
@@ -0,0 +1,30 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/card';
3
+ import type { ComponentConfig } from '../types/utils';
4
+ type Card = ComponentConfig<typeof theme, AppConfig, 'card'>;
5
+ export interface CardProps {
6
+ /**
7
+ * The element or component this component should render as.
8
+ * @defaultValue 'div'
9
+ */
10
+ as?: any;
11
+ /**
12
+ * @defaultValue 'outline'
13
+ */
14
+ variant?: Card['variants']['variant'];
15
+ class?: any;
16
+ ui?: Card['slots'];
17
+ }
18
+ export interface CardSlots {
19
+ header(props?: {}): any;
20
+ default(props?: {}): any;
21
+ footer(props?: {}): any;
22
+ }
23
+ 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>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -20,7 +20,8 @@ export interface CardSlots {
20
20
  default(props?: {}): any;
21
21
  footer(props?: {}): any;
22
22
  }
23
- 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>;
23
+ 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>;
24
+ declare const _default: typeof __VLS_export;
24
25
  export default _default;
25
26
  type __VLS_WithSlots<T, S> = T & {
26
27
  new (): {
@@ -0,0 +1,128 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { AcceptableValue } from 'reka-ui';
3
+ import type { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel';
4
+ import type { AutoplayOptionsType } from 'embla-carousel-autoplay';
5
+ import type { AutoScrollOptionsType } from 'embla-carousel-auto-scroll';
6
+ import type { AutoHeightOptionsType } from 'embla-carousel-auto-height';
7
+ import type { ClassNamesOptionsType } from 'embla-carousel-class-names';
8
+ import type { FadeOptionsType } from 'embla-carousel-fade';
9
+ import type { WheelGesturesPluginOptions } from 'embla-carousel-wheel-gestures';
10
+ import theme from '#build/ui/carousel';
11
+ import type { ButtonProps } from '../types';
12
+ import type { ComponentConfig } from '../types/utils';
13
+ type Carousel = ComponentConfig<typeof theme, AppConfig, 'carousel'>;
14
+ interface _CarouselItem {
15
+ class?: any;
16
+ ui?: Pick<Carousel['slots'], 'item'>;
17
+ [key: string]: any;
18
+ }
19
+ export type CarouselItem = _CarouselItem | AcceptableValue;
20
+ export interface CarouselProps<T extends CarouselItem = CarouselItem> extends Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
21
+ /**
22
+ * The element or component this component should render as.
23
+ * @defaultValue 'div'
24
+ */
25
+ as?: any;
26
+ /**
27
+ * Configure the prev button when arrows are enabled.
28
+ * @defaultValue { size: 'md', color: 'neutral', variant: 'link' }
29
+ */
30
+ prev?: ButtonProps;
31
+ /**
32
+ * The icon displayed in the prev button.
33
+ * @defaultValue appConfig.ui.icons.arrowLeft
34
+ * @IconifyIcon
35
+ */
36
+ prevIcon?: string;
37
+ /**
38
+ * Configure the next button when arrows are enabled.
39
+ * @defaultValue { size: 'md', color: 'neutral', variant: 'link' }
40
+ */
41
+ next?: ButtonProps;
42
+ /**
43
+ * The icon displayed in the next button.
44
+ * @defaultValue appConfig.ui.icons.arrowRight
45
+ * @IconifyIcon
46
+ */
47
+ nextIcon?: string;
48
+ /**
49
+ * Display prev and next buttons to scroll the carousel.
50
+ * @defaultValue false
51
+ */
52
+ arrows?: boolean;
53
+ /**
54
+ * Display dots to scroll to a specific slide.
55
+ * @defaultValue false
56
+ */
57
+ dots?: boolean;
58
+ /**
59
+ * The orientation of the carousel.
60
+ * @defaultValue 'horizontal'
61
+ */
62
+ orientation?: Carousel['variants']['orientation'];
63
+ items?: T[];
64
+ /**
65
+ * Enable Autoplay plugin
66
+ * @link https://www.embla-carousel.com/plugins/autoplay/
67
+ */
68
+ autoplay?: boolean | AutoplayOptionsType;
69
+ /**
70
+ * Enable Auto Scroll plugin
71
+ * @link https://www.embla-carousel.com/plugins/auto-scroll/
72
+ */
73
+ autoScroll?: boolean | AutoScrollOptionsType;
74
+ /**
75
+ * Enable Auto Height plugin
76
+ * @link https://www.embla-carousel.com/plugins/auto-height/
77
+ */
78
+ autoHeight?: boolean | AutoHeightOptionsType;
79
+ /**
80
+ * Enable Class Names plugin
81
+ * @link https://www.embla-carousel.com/plugins/class-names/
82
+ */
83
+ classNames?: boolean | ClassNamesOptionsType;
84
+ /**
85
+ * Enable Fade plugin
86
+ * @link https://www.embla-carousel.com/plugins/fade/
87
+ */
88
+ fade?: boolean | FadeOptionsType;
89
+ /**
90
+ * Enable Wheel Gestures plugin
91
+ * @link https://www.embla-carousel.com/plugins/wheel-gestures/
92
+ */
93
+ wheelGestures?: boolean | WheelGesturesPluginOptions;
94
+ class?: any;
95
+ ui?: Carousel['slots'];
96
+ }
97
+ export type CarouselSlots<T extends CarouselItem = CarouselItem> = {
98
+ default(props: {
99
+ item: T;
100
+ index: number;
101
+ }): any;
102
+ };
103
+ export interface CarouselEmits {
104
+ /**
105
+ * Emitted when the selected slide changes
106
+ * @param selectedIndex The index of the selected slide
107
+ */
108
+ select: [selectedIndex: number];
109
+ }
110
+ declare const __VLS_export: <T extends CarouselItem>(__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<{
111
+ props: __VLS_PrettifyLocal<CarouselProps<T> & {
112
+ onSelect?: ((selectedIndex: number) => any) | undefined;
113
+ }> & import("vue").PublicProps;
114
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
115
+ emblaRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
116
+ emblaApi: import("vue").Ref<EmblaCarouselType | undefined, EmblaCarouselType | undefined>;
117
+ }>) => void;
118
+ attrs: any;
119
+ slots: CarouselSlots<T>;
120
+ emit: (evt: "select", selectedIndex: number) => void;
121
+ }>) => import("vue").VNode & {
122
+ __ctx?: Awaited<typeof __VLS_setup>;
123
+ };
124
+ declare const _default: typeof __VLS_export;
125
+ export default _default;
126
+ type __VLS_PrettifyLocal<T> = {
127
+ [K in keyof T as K]: T[K];
128
+ } & {};
@@ -3,7 +3,7 @@ import theme from "#build/ui/carousel";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, ref, watch, onMounted } from "vue";
6
+ import { computed, ref, watch, onMounted, onBeforeUnmount } from "vue";
7
7
  import useEmblaCarousel from "embla-carousel-vue";
8
8
  import { Primitive, useForwardProps } from "reka-ui";
9
9
  import { reactivePick } from "@vueuse/core";
@@ -91,11 +91,14 @@ async function loadPlugins() {
91
91
  }
92
92
  plugins.value = emblaPlugins;
93
93
  }
94
- watch(() => [props.autoplay, props.autoScroll, props.autoHeight, props.classNames, props.fade, props.wheelGestures], loadPlugins, { immediate: true });
95
- const [emblaRef, emblaApi] = useEmblaCarousel(options.value, plugins.value);
96
- watch([options, plugins], () => {
94
+ watch(() => [props.autoplay, props.autoScroll, props.autoHeight, props.classNames, props.fade, props.wheelGestures], async () => {
95
+ await loadPlugins();
97
96
  emblaApi.value?.reInit(options.value, plugins.value);
98
- });
97
+ }, { immediate: true });
98
+ const [emblaRef, emblaApi] = useEmblaCarousel(options, plugins);
99
+ watch(options, () => {
100
+ emblaApi.value?.reInit(options.value, plugins.value);
101
+ }, { flush: "post" });
99
102
  function scrollPrev() {
100
103
  emblaApi.value?.scrollPrev();
101
104
  }
@@ -106,8 +109,15 @@ function scrollTo(index) {
106
109
  emblaApi.value?.scrollTo(index);
107
110
  }
108
111
  function onKeyDown(event) {
109
- const prevKey = props.orientation === "vertical" ? "ArrowUp" : "ArrowLeft";
110
- const nextKey = props.orientation === "vertical" ? "ArrowDown" : "ArrowRight";
112
+ let prevKey;
113
+ let nextKey;
114
+ if (props.orientation === "horizontal") {
115
+ prevKey = dir.value === "ltr" ? "ArrowLeft" : "ArrowRight";
116
+ nextKey = dir.value === "ltr" ? "ArrowRight" : "ArrowLeft";
117
+ } else {
118
+ prevKey = "ArrowUp";
119
+ nextKey = "ArrowDown";
120
+ }
111
121
  if (event.key === prevKey) {
112
122
  event.preventDefault();
113
123
  scrollPrev();
@@ -138,11 +148,21 @@ onMounted(() => {
138
148
  if (!emblaApi.value) {
139
149
  return;
140
150
  }
141
- emblaApi.value?.on("init", onInit);
142
- emblaApi.value?.on("init", onSelect);
143
- emblaApi.value?.on("reInit", onInit);
144
- emblaApi.value?.on("reInit", onSelect);
145
- emblaApi.value?.on("select", onSelect);
151
+ emblaApi.value.on("init", onInit);
152
+ emblaApi.value.on("init", onSelect);
153
+ emblaApi.value.on("reInit", onInit);
154
+ emblaApi.value.on("reInit", onSelect);
155
+ emblaApi.value.on("select", onSelect);
156
+ });
157
+ onBeforeUnmount(() => {
158
+ if (!emblaApi.value) {
159
+ return;
160
+ }
161
+ emblaApi.value.off("init", onInit);
162
+ emblaApi.value.off("init", onSelect);
163
+ emblaApi.value.off("reInit", onInit);
164
+ emblaApi.value.off("reInit", onSelect);
165
+ emblaApi.value.off("select", onSelect);
146
166
  });
147
167
  defineExpose({
148
168
  emblaRef,
@@ -107,20 +107,21 @@ export interface CarouselEmits {
107
107
  */
108
108
  select: [selectedIndex: number];
109
109
  }
110
- declare const _default: <T extends CarouselItem>(__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<{
111
- props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
112
- readonly onSelect?: ((selectedIndex: number) => any) | undefined;
113
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onSelect"> & CarouselProps<T> & {}> & import("vue").PublicProps;
114
- expose(exposed: import("vue").ShallowUnwrapRef<{
110
+ declare const __VLS_export: <T extends CarouselItem>(__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<{
111
+ props: __VLS_PrettifyLocal<CarouselProps<T> & {
112
+ onSelect?: ((selectedIndex: number) => any) | undefined;
113
+ }> & import("vue").PublicProps;
114
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
115
115
  emblaRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
116
116
  emblaApi: import("vue").Ref<EmblaCarouselType | undefined, EmblaCarouselType | undefined>;
117
- }>): void;
117
+ }>) => void;
118
118
  attrs: any;
119
119
  slots: CarouselSlots<T>;
120
120
  emit: (evt: "select", selectedIndex: number) => void;
121
121
  }>) => import("vue").VNode & {
122
122
  __ctx?: Awaited<typeof __VLS_setup>;
123
123
  };
124
+ declare const _default: typeof __VLS_export;
124
125
  export default _default;
125
126
  type __VLS_PrettifyLocal<T> = {
126
127
  [K in keyof T as K]: T[K];