@byyuurin/ui 0.0.10 → 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.
- package/README.md +170 -58
- package/dist/module.d.mts +4 -13
- package/dist/module.json +4 -4
- package/dist/module.mjs +54 -20
- package/dist/runtime/components/Accordion.vue +48 -72
- package/dist/runtime/components/Accordion.vue.d.ts +74 -0
- package/dist/runtime/components/Alert.vue +65 -83
- package/dist/runtime/components/Alert.vue.d.ts +71 -0
- package/dist/runtime/components/App.vue +28 -42
- package/dist/runtime/components/App.vue.d.ts +26 -0
- package/dist/runtime/components/Avatar.vue +82 -58
- package/dist/runtime/components/Avatar.vue.d.ts +39 -0
- package/dist/runtime/components/AvatarGroup.vue +43 -70
- package/dist/runtime/components/AvatarGroup.vue.d.ts +30 -0
- package/dist/runtime/components/Badge.vue +70 -64
- package/dist/runtime/components/Badge.vue.d.ts +45 -0
- package/dist/runtime/components/Breadcrumb.vue +56 -76
- package/dist/runtime/components/Breadcrumb.vue.d.ts +79 -0
- package/dist/runtime/components/Button.vue +150 -78
- package/dist/runtime/components/Button.vue.d.ts +45 -0
- package/dist/runtime/components/Calendar.vue +99 -125
- package/dist/runtime/components/Calendar.vue.d.ts +102 -0
- package/dist/runtime/components/Card.vue +33 -46
- package/dist/runtime/components/Card.vue.d.ts +34 -0
- package/dist/runtime/components/Carousel.vue +164 -237
- package/dist/runtime/components/Carousel.vue.d.ts +125 -0
- package/dist/runtime/components/Checkbox.vue +86 -88
- package/dist/runtime/components/Checkbox.vue.d.ts +63 -0
- package/dist/runtime/components/Chip.vue +44 -58
- package/dist/runtime/components/Chip.vue.d.ts +48 -0
- package/dist/runtime/components/Collapsible.vue +29 -33
- package/dist/runtime/components/Collapsible.vue.d.ts +34 -0
- package/dist/runtime/components/Drawer.vue +110 -150
- package/dist/runtime/components/Drawer.vue.d.ts +103 -0
- package/dist/runtime/components/DropdownMenu.vue +49 -120
- package/dist/runtime/components/DropdownMenu.vue.d.ts +140 -0
- package/dist/runtime/components/DropdownMenuContent.vue +177 -143
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
- package/dist/runtime/components/FieldGroup.vue +33 -0
- package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
- package/dist/runtime/components/Form.vue +245 -275
- package/dist/runtime/components/Form.vue.d.ts +103 -0
- package/dist/runtime/components/FormField.vue +108 -0
- package/dist/runtime/components/FormField.vue.d.ts +63 -0
- package/dist/runtime/components/Icon.vue +20 -0
- package/dist/runtime/components/Icon.vue.d.ts +9 -0
- package/dist/runtime/components/Input.vue +125 -156
- package/dist/runtime/components/Input.vue.d.ts +76 -0
- package/dist/runtime/components/InputNumber.vue +103 -130
- package/dist/runtime/components/InputNumber.vue.d.ts +191 -0
- package/dist/runtime/components/Kbd.vue +24 -39
- package/dist/runtime/components/Kbd.vue.d.ts +34 -0
- package/dist/runtime/components/Link.vue +105 -337
- package/dist/runtime/components/Link.vue.d.ts +95 -0
- package/dist/runtime/components/LinkBase.vue +31 -71
- package/dist/runtime/components/LinkBase.vue.d.ts +33 -0
- package/dist/runtime/components/Modal.vue +82 -103
- package/dist/runtime/components/Modal.vue.d.ts +96 -0
- package/dist/runtime/components/NavigationMenu.vue +336 -0
- package/dist/runtime/components/NavigationMenu.vue.d.ts +181 -0
- package/dist/runtime/components/OverlayProvider.vue +12 -16
- package/dist/runtime/components/OverlayProvider.vue.d.ts +3 -0
- package/dist/runtime/components/Pagination.vue +65 -139
- package/dist/runtime/components/Pagination.vue.d.ts +116 -0
- package/dist/runtime/components/PinInput.vue +78 -73
- package/dist/runtime/components/PinInput.vue.d.ts +54 -0
- package/dist/runtime/components/Popover.vue +60 -75
- package/dist/runtime/components/Popover.vue.d.ts +70 -0
- package/dist/runtime/components/Progress.vue +79 -126
- package/dist/runtime/components/Progress.vue.d.ts +63 -0
- package/dist/runtime/components/RadioGroup.vue +109 -140
- package/dist/runtime/components/RadioGroup.vue.d.ts +96 -0
- package/dist/runtime/components/ScrollArea.vue +50 -48
- package/dist/runtime/components/ScrollArea.vue.d.ts +21 -0
- package/dist/runtime/components/Select.vue +221 -221
- package/dist/runtime/components/Select.vue.d.ts +260 -0
- package/dist/runtime/components/Separator.vue +55 -47
- package/dist/runtime/components/Separator.vue.d.ts +48 -0
- package/dist/runtime/components/Skeleton.vue +25 -22
- package/dist/runtime/components/Skeleton.vue.d.ts +19 -0
- package/dist/runtime/components/Slider.vue +73 -77
- package/dist/runtime/components/Slider.vue.d.ts +52 -0
- package/dist/runtime/components/Switch.vue +66 -77
- package/dist/runtime/components/Switch.vue.d.ts +58 -0
- package/dist/runtime/components/Table.vue +357 -215
- package/dist/runtime/components/Table.vue.d.ts +234 -0
- package/dist/runtime/components/Tabs.vue +90 -88
- package/dist/runtime/components/Tabs.vue.d.ts +97 -0
- package/dist/runtime/components/Textarea.vue +147 -146
- package/dist/runtime/components/Textarea.vue.d.ts +76 -0
- package/dist/runtime/components/Toast.vue +108 -90
- package/dist/runtime/components/Toast.vue.d.ts +152 -0
- package/dist/runtime/components/ToastProvider.vue +82 -109
- package/dist/runtime/components/ToastProvider.vue.d.ts +51 -0
- package/dist/runtime/components/Tooltip.vue +54 -53
- package/dist/runtime/components/Tooltip.vue.d.ts +53 -0
- package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
- package/dist/runtime/composables/defineShortcuts.js +129 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
- package/dist/runtime/composables/useAvatarGroup.js +10 -3
- package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
- package/dist/runtime/composables/useComponentIcons.js +4 -4
- package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
- package/dist/runtime/composables/useFieldGroup.js +14 -0
- package/dist/runtime/composables/useFormField.d.ts +62 -0
- package/dist/runtime/composables/useFormField.js +99 -0
- package/dist/runtime/composables/useKbd.d.ts +3 -2
- package/dist/runtime/composables/useKbd.js +3 -2
- package/dist/runtime/composables/useLocale.d.ts +68 -5
- package/dist/runtime/composables/useLocale.js +11 -11
- package/dist/runtime/composables/useOverlay.d.ts +51 -15
- package/dist/runtime/composables/useOverlay.js +44 -30
- package/dist/runtime/composables/usePortal.d.ts +6 -0
- package/dist/runtime/composables/usePortal.js +17 -0
- package/dist/runtime/composables/useToast.d.ts +12 -5
- package/dist/runtime/composables/useToast.js +12 -7
- package/dist/runtime/locale/en.d.ts +30 -1
- package/dist/runtime/locale/en.js +2 -1
- package/dist/runtime/locale/index.d.ts +2 -2
- package/dist/runtime/locale/index.js +1 -1
- package/dist/runtime/locale/zh_tw.d.ts +31 -0
- package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
- package/dist/runtime/plugins/colors.d.ts +2 -0
- package/dist/runtime/plugins/colors.js +50 -0
- package/dist/runtime/types/app.config.d.ts +6 -0
- package/dist/runtime/types/form.d.ts +58 -17
- package/dist/runtime/types/form.js +11 -0
- package/dist/runtime/types/index.d.ts +51 -8
- package/dist/runtime/types/index.js +45 -2
- package/dist/runtime/types/input.d.ts +8 -0
- package/dist/runtime/types/locale.d.ts +5 -0
- package/dist/runtime/types/style.d.ts +33 -0
- package/dist/runtime/types/style.js +0 -0
- package/dist/runtime/types/unocss.d.ts +4 -0
- package/dist/runtime/types/utils.d.ts +38 -37
- package/dist/runtime/utils/form.d.ts +5 -1
- package/dist/runtime/utils/form.js +49 -0
- package/dist/runtime/utils/index.d.ts +10 -13
- package/dist/runtime/utils/index.js +41 -48
- package/dist/runtime/utils/link.d.ts +5 -6
- package/dist/runtime/utils/link.js +16 -2
- package/dist/runtime/utils/locale.d.ts +5 -0
- package/dist/runtime/utils/locale.js +10 -0
- package/dist/runtime/utils/style.d.ts +94 -0
- package/dist/runtime/utils/style.js +37 -0
- package/dist/runtime/vue/components/Icon.vue +15 -0
- package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
- package/dist/runtime/vue/components/Link.vue +163 -0
- package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
- package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
- package/dist/runtime/vue/composables/useAppConfig.js +4 -0
- package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
- package/dist/runtime/vue/plugins/color-mode.js +6 -0
- package/dist/runtime/vue/plugins/head.d.ts +4 -0
- package/dist/runtime/vue/plugins/head.js +9 -0
- package/dist/runtime/vue/stubs.d.ts +16 -1
- package/dist/runtime/vue/stubs.js +32 -1
- package/dist/setup.d.mts +13 -0
- package/dist/setup.mjs +12 -0
- package/dist/shared/ui.CzIlLITK.mjs +51 -0
- package/dist/shared/ui.DSyJHSTk.mjs +3787 -0
- package/dist/shared/ui.DpbffTXs.d.mts +84 -0
- package/dist/shared/ui.IulR-OYx.d.mts +64 -0
- package/dist/types.d.mts +3 -1
- package/dist/unocss.d.mts +12 -52
- package/dist/unocss.mjs +144 -253
- package/dist/unplugin.d.mts +13 -26
- package/dist/unplugin.mjs +193 -18
- package/dist/vite.d.mts +10 -1
- package/dist/vite.mjs +12 -3
- package/package.json +156 -87
- package/vue-plugin.d.ts +5 -0
- package/dist/module.cjs +0 -5
- package/dist/module.d.ts +0 -13
- package/dist/module.mjs.map +0 -1
- package/dist/runtime/app/injections.d.ts +0 -9307
- package/dist/runtime/app/injections.js +0 -61
- package/dist/runtime/components/ButtonGroup.vue +0 -46
- package/dist/runtime/components/FormItem.vue +0 -129
- package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
- package/dist/runtime/composables/useButtonGroup.js +0 -9
- package/dist/runtime/composables/useFormItem.d.ts +0 -27
- package/dist/runtime/composables/useFormItem.js +0 -64
- package/dist/runtime/composables/useTheme.d.ts +0 -9
- package/dist/runtime/composables/useTheme.js +0 -23
- package/dist/runtime/index.d.ts +0 -44
- package/dist/runtime/index.js +0 -44
- package/dist/runtime/locale/zh-tw.d.ts +0 -2
- package/dist/runtime/theme/accordion.d.ts +0 -56
- package/dist/runtime/theme/accordion.js +0 -28
- package/dist/runtime/theme/alert.d.ts +0 -125
- package/dist/runtime/theme/alert.js +0 -47
- package/dist/runtime/theme/app.d.ts +0 -19
- package/dist/runtime/theme/app.js +0 -19
- package/dist/runtime/theme/avatar-group.d.ts +0 -52
- package/dist/runtime/theme/avatar-group.js +0 -32
- package/dist/runtime/theme/avatar.d.ts +0 -56
- package/dist/runtime/theme/avatar.js +0 -34
- package/dist/runtime/theme/badge.d.ts +0 -82
- package/dist/runtime/theme/badge.js +0 -92
- package/dist/runtime/theme/breadcrumb.d.ts +0 -67
- package/dist/runtime/theme/breadcrumb.js +0 -44
- package/dist/runtime/theme/button-group.d.ts +0 -66
- package/dist/runtime/theme/button-group.js +0 -42
- package/dist/runtime/theme/button.d.ts +0 -190
- package/dist/runtime/theme/button.js +0 -164
- package/dist/runtime/theme/calendar.d.ts +0 -56
- package/dist/runtime/theme/calendar.js +0 -69
- package/dist/runtime/theme/card.d.ts +0 -62
- package/dist/runtime/theme/card.js +0 -37
- package/dist/runtime/theme/carousel.d.ts +0 -113
- package/dist/runtime/theme/carousel.js +0 -43
- package/dist/runtime/theme/checkbox.d.ts +0 -88
- package/dist/runtime/theme/checkbox.js +0 -54
- package/dist/runtime/theme/chip.d.ts +0 -67
- package/dist/runtime/theme/chip.js +0 -66
- package/dist/runtime/theme/collapsible.d.ts +0 -38
- package/dist/runtime/theme/collapsible.js +0 -10
- package/dist/runtime/theme/drawer.d.ts +0 -148
- package/dist/runtime/theme/drawer.js +0 -113
- package/dist/runtime/theme/dropdown-menu.d.ts +0 -71
- package/dist/runtime/theme/dropdown-menu.js +0 -83
- package/dist/runtime/theme/form-item.d.ts +0 -76
- package/dist/runtime/theme/form-item.js +0 -34
- package/dist/runtime/theme/form.d.ts +0 -8
- package/dist/runtime/theme/form.js +0 -7
- package/dist/runtime/theme/index.d.ts +0 -41
- package/dist/runtime/theme/index.js +0 -41
- package/dist/runtime/theme/input-number.d.ts +0 -121
- package/dist/runtime/theme/input-number.js +0 -95
- package/dist/runtime/theme/input.d.ts +0 -178
- package/dist/runtime/theme/input.js +0 -151
- package/dist/runtime/theme/kbd.d.ts +0 -39
- package/dist/runtime/theme/kbd.js +0 -26
- package/dist/runtime/theme/link.d.ts +0 -44
- package/dist/runtime/theme/link.js +0 -26
- package/dist/runtime/theme/modal.d.ts +0 -48
- package/dist/runtime/theme/modal.js +0 -55
- package/dist/runtime/theme/pagination.d.ts +0 -80
- package/dist/runtime/theme/pagination.js +0 -17
- package/dist/runtime/theme/pinInput.d.ts +0 -100
- package/dist/runtime/theme/pinInput.js +0 -111
- package/dist/runtime/theme/popover.d.ts +0 -38
- package/dist/runtime/theme/popover.js +0 -13
- package/dist/runtime/theme/progress.d.ts +0 -186
- package/dist/runtime/theme/progress.js +0 -95
- package/dist/runtime/theme/radio-group.d.ts +0 -110
- package/dist/runtime/theme/radio-group.js +0 -61
- package/dist/runtime/theme/scroll-area.d.ts +0 -73
- package/dist/runtime/theme/scroll-area.js +0 -33
- package/dist/runtime/theme/select.d.ts +0 -192
- package/dist/runtime/theme/select.js +0 -173
- package/dist/runtime/theme/separator.d.ts +0 -80
- package/dist/runtime/theme/separator.js +0 -53
- package/dist/runtime/theme/skeleton.d.ts +0 -8
- package/dist/runtime/theme/skeleton.js +0 -7
- package/dist/runtime/theme/slider.d.ts +0 -76
- package/dist/runtime/theme/slider.js +0 -52
- package/dist/runtime/theme/switch.d.ts +0 -122
- package/dist/runtime/theme/switch.js +0 -78
- package/dist/runtime/theme/table.d.ts +0 -92
- package/dist/runtime/theme/table.js +0 -36
- package/dist/runtime/theme/tabs.d.ts +0 -135
- package/dist/runtime/theme/tabs.js +0 -146
- package/dist/runtime/theme/textarea.d.ts +0 -96
- package/dist/runtime/theme/textarea.js +0 -116
- package/dist/runtime/theme/toast-provider.d.ts +0 -122
- package/dist/runtime/theme/toast-provider.js +0 -97
- package/dist/runtime/theme/toast.d.ts +0 -89
- package/dist/runtime/theme/toast.js +0 -35
- package/dist/runtime/theme/tooltip.d.ts +0 -44
- package/dist/runtime/theme/tooltip.js +0 -11
- package/dist/runtime/types/components.d.ts +0 -42
- package/dist/runtime/utils/extend-theme.d.ts +0 -9
- package/dist/runtime/utils/extend-theme.js +0 -27
- package/dist/runtime/utils/styler.d.ts +0 -4
- package/dist/runtime/utils/styler.js +0 -10
- package/dist/runtime/utils/translator.d.ts +0 -18
- package/dist/runtime/utils/translator.js +0 -8
- package/dist/shared/ui.3e7fad19.mjs +0 -5
- package/dist/shared/ui.3e7fad19.mjs.map +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/unocss.d.ts +0 -52
- package/dist/unocss.mjs.map +0 -1
- package/dist/unplugin.d.ts +0 -26
- package/dist/unplugin.mjs.map +0 -1
- package/dist/vite.d.ts +0 -9
- package/dist/vite.mjs.map +0 -1
- /package/dist/runtime/types/{components.js → input.js} +0 -0
|
@@ -1,308 +1,235 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { EmblaCarouselType, EmblaOptionsType, EmblaPluginType } from 'embla-carousel'
|
|
4
|
-
import type { AutoHeightOptionsType } from 'embla-carousel-auto-height'
|
|
5
|
-
import type { AutoScrollOptionsType } from 'embla-carousel-auto-scroll'
|
|
6
|
-
import type { AutoplayOptionsType } from 'embla-carousel-autoplay'
|
|
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 type { AcceptableValue, PrimitiveProps } from 'reka-ui'
|
|
11
|
-
import type { carousel } from '../theme'
|
|
12
|
-
import type { ButtonProps, ComponentAttrs } from '../types'
|
|
13
|
-
|
|
14
|
-
export type CarouselItem = AcceptableValue
|
|
15
|
-
|
|
16
|
-
export interface CarouselSlots<T extends CarouselItem = CarouselItem> {
|
|
17
|
-
default?: (props: { item: T, index: number }) => any
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
type CarouselVariants = VariantProps<typeof carousel>
|
|
21
|
-
|
|
22
|
-
export interface CarouselProps<T extends CarouselItem = CarouselItem> extends ComponentAttrs<typeof carousel>, Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
|
|
23
|
-
/**
|
|
24
|
-
* The element or component this component should render as.
|
|
25
|
-
* @default "div"
|
|
26
|
-
*/
|
|
27
|
-
as?: PrimitiveProps['as']
|
|
28
|
-
/**
|
|
29
|
-
* Configure the prev button when arrows are enabled.
|
|
30
|
-
* @default { size: 'md', variant: 'link' }
|
|
31
|
-
*/
|
|
32
|
-
prev?: ButtonProps
|
|
33
|
-
/**
|
|
34
|
-
* The icon displayed in the prev button.
|
|
35
|
-
* @default app.icons.chevronLeft
|
|
36
|
-
*/
|
|
37
|
-
prevIcon?: string
|
|
38
|
-
/**
|
|
39
|
-
* Configure the next button when arrows are enabled.
|
|
40
|
-
* @default { size: 'md', variant: 'link' }
|
|
41
|
-
*/
|
|
42
|
-
next?: ButtonProps
|
|
43
|
-
/**
|
|
44
|
-
* The icon displayed in the next button.
|
|
45
|
-
* @default app.icons.chevronRight
|
|
46
|
-
*/
|
|
47
|
-
nextIcon?: string
|
|
48
|
-
/**
|
|
49
|
-
* Display prev and next buttons to scroll the carousel.
|
|
50
|
-
* @default false
|
|
51
|
-
*/
|
|
52
|
-
arrows?: boolean
|
|
53
|
-
/**
|
|
54
|
-
* Display dots to scroll to a specific slide.
|
|
55
|
-
* @default false
|
|
56
|
-
*/
|
|
57
|
-
dots?: boolean
|
|
58
|
-
orientation?: CarouselVariants['orientation']
|
|
59
|
-
items?: T[]
|
|
60
|
-
/**
|
|
61
|
-
* Enable Autoplay plugin
|
|
62
|
-
* @link https://www.embla-carousel.com/plugins/autoplay/
|
|
63
|
-
*/
|
|
64
|
-
autoplay?: boolean | AutoplayOptionsType
|
|
65
|
-
/**
|
|
66
|
-
* Enable Auto Scroll plugin
|
|
67
|
-
* @link https://www.embla-carousel.com/plugins/auto-scroll/
|
|
68
|
-
*/
|
|
69
|
-
autoScroll?: boolean | AutoScrollOptionsType
|
|
70
|
-
/**
|
|
71
|
-
* Enable Auto Height plugin
|
|
72
|
-
* @link https://www.embla-carousel.com/plugins/auto-height/
|
|
73
|
-
*/
|
|
74
|
-
autoHeight?: boolean | AutoHeightOptionsType
|
|
75
|
-
/**
|
|
76
|
-
* Enable Class Names plugin
|
|
77
|
-
* @link https://www.embla-carousel.com/plugins/class-names/
|
|
78
|
-
*/
|
|
79
|
-
classNames?: boolean | ClassNamesOptionsType
|
|
80
|
-
/**
|
|
81
|
-
* Enable Fade plugin
|
|
82
|
-
* @link https://www.embla-carousel.com/plugins/fade/
|
|
83
|
-
*/
|
|
84
|
-
fade?: boolean | FadeOptionsType
|
|
85
|
-
/**
|
|
86
|
-
* Enable Wheel Gestures plugin
|
|
87
|
-
* @link https://www.embla-carousel.com/plugins/wheel-gestures/
|
|
88
|
-
*/
|
|
89
|
-
wheelGestures?: boolean | WheelGesturesPluginOptions
|
|
90
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/carousel";
|
|
91
3
|
</script>
|
|
92
4
|
|
|
93
|
-
<script setup
|
|
94
|
-
import {
|
|
95
|
-
import useEmblaCarousel from
|
|
96
|
-
import { Primitive, useForwardProps } from
|
|
97
|
-
import { computed, onMounted, ref, watch } from
|
|
98
|
-
import {
|
|
99
|
-
import {
|
|
100
|
-
import
|
|
101
|
-
|
|
102
|
-
const props =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { reactivePick } from "@vueuse/core";
|
|
7
|
+
import useEmblaCarousel from "embla-carousel-vue";
|
|
8
|
+
import { Primitive, useForwardProps } from "reka-ui";
|
|
9
|
+
import { computed, onBeforeMount, onMounted, ref, watch } from "vue";
|
|
10
|
+
import { useAppConfig } from "#imports";
|
|
11
|
+
import { useLocale } from "../composables/useLocale";
|
|
12
|
+
import { cv, merge } from "../utils/style";
|
|
13
|
+
import Button from "./Button.vue";
|
|
14
|
+
const props = defineProps({
|
|
15
|
+
as: { type: null, required: false },
|
|
16
|
+
prev: { type: Object, required: false },
|
|
17
|
+
prevIcon: { type: String, required: false },
|
|
18
|
+
next: { type: Object, required: false },
|
|
19
|
+
nextIcon: { type: String, required: false },
|
|
20
|
+
arrows: { type: Boolean, required: false, default: false },
|
|
21
|
+
dots: { type: Boolean, required: false, default: false },
|
|
22
|
+
orientation: { type: null, required: false, default: "horizontal" },
|
|
23
|
+
items: { type: Array, required: false },
|
|
24
|
+
autoplay: { type: [Boolean, Object], required: false, default: false },
|
|
25
|
+
autoScroll: { type: [Boolean, Object], required: false, default: false },
|
|
26
|
+
autoHeight: { type: [Boolean, Object], required: false, default: false },
|
|
27
|
+
classNames: { type: [Boolean, Object], required: false, default: false },
|
|
28
|
+
fade: { type: [Boolean, Object], required: false, default: false },
|
|
29
|
+
wheelGestures: { type: [Boolean, Object], required: false, default: false },
|
|
30
|
+
ui: { type: null, required: false },
|
|
31
|
+
class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
|
|
32
|
+
align: { type: [String, Function], required: false, default: "center" },
|
|
33
|
+
containScroll: { type: [Boolean, String], required: false, default: "trimSnaps" },
|
|
34
|
+
slidesToScroll: { type: [String, Number], required: false, default: 1 },
|
|
35
|
+
dragFree: { type: Boolean, required: false, default: false },
|
|
36
|
+
dragThreshold: { type: Number, required: false, default: 10 },
|
|
37
|
+
inViewThreshold: { type: null, required: false, default: 0 },
|
|
38
|
+
loop: { type: Boolean, required: false, default: false },
|
|
39
|
+
skipSnaps: { type: Boolean, required: false, default: false },
|
|
40
|
+
duration: { type: Number, required: false, default: 25 },
|
|
41
|
+
startIndex: { type: Number, required: false, default: 0 },
|
|
42
|
+
watchDrag: { type: [Boolean, Function], required: false, default: true },
|
|
43
|
+
watchResize: { type: [Boolean, Function], required: false, default: true },
|
|
44
|
+
watchSlides: { type: [Boolean, Function], required: false, default: true },
|
|
45
|
+
watchFocus: { type: [Boolean, Function], required: false, default: true },
|
|
46
|
+
active: { type: Boolean, required: false, default: true },
|
|
47
|
+
breakpoints: { type: Object, required: false, default: () => ({}) }
|
|
48
|
+
});
|
|
49
|
+
const emit = defineEmits(["select"]);
|
|
50
|
+
defineSlots();
|
|
51
|
+
const { t, dir } = useLocale();
|
|
52
|
+
const appConfig = useAppConfig();
|
|
53
|
+
const ui = computed(() => {
|
|
54
|
+
const styler = cv(merge(theme, appConfig.ui.carousel));
|
|
55
|
+
return styler(props);
|
|
56
|
+
});
|
|
57
|
+
const rootProps = useForwardProps(reactivePick(props, "active", "align", "breakpoints", "containScroll", "dragFree", "dragThreshold", "duration", "inViewThreshold", "loop", "skipSnaps", "slidesToScroll", "startIndex", "watchDrag", "watchResize", "watchSlides", "watchFocus"));
|
|
58
|
+
const prevIcon = computed(() => props.prevIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronRight : appConfig.ui.icons.chevronLeft));
|
|
59
|
+
const nextIcon = computed(() => props.nextIcon || (dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight));
|
|
60
|
+
const options = computed(() => ({
|
|
61
|
+
...props.fade ? { align: "center", containScroll: false } : {},
|
|
146
62
|
...rootProps.value,
|
|
147
|
-
axis: props.orientation ===
|
|
148
|
-
direction: dir.value ===
|
|
149
|
-
}))
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
63
|
+
axis: props.orientation === "horizontal" ? "x" : "y",
|
|
64
|
+
direction: dir.value === "rtl" ? "rtl" : "ltr"
|
|
65
|
+
}));
|
|
66
|
+
const plugins = ref([]);
|
|
67
|
+
async function loadPlugins() {
|
|
68
|
+
const emblaPlugins = [];
|
|
154
69
|
if (props.autoplay) {
|
|
155
|
-
const AutoplayPlugin = await import(
|
|
156
|
-
|
|
70
|
+
const AutoplayPlugin = await import("embla-carousel-autoplay").then((r) => r.default);
|
|
71
|
+
emblaPlugins.push(AutoplayPlugin(typeof props.autoplay === "boolean" ? {} : props.autoplay));
|
|
157
72
|
}
|
|
158
|
-
|
|
159
73
|
if (props.autoScroll) {
|
|
160
|
-
const AutoScrollPlugin = await import(
|
|
161
|
-
|
|
74
|
+
const AutoScrollPlugin = await import("embla-carousel-auto-scroll").then((r) => r.default);
|
|
75
|
+
emblaPlugins.push(AutoScrollPlugin(typeof props.autoScroll === "boolean" ? {} : props.autoScroll));
|
|
162
76
|
}
|
|
163
|
-
|
|
164
77
|
if (props.autoHeight) {
|
|
165
|
-
const AutoHeightPlugin = await import(
|
|
166
|
-
|
|
78
|
+
const AutoHeightPlugin = await import("embla-carousel-auto-height").then((r) => r.default);
|
|
79
|
+
emblaPlugins.push(AutoHeightPlugin(typeof props.autoHeight === "boolean" ? {} : props.autoHeight));
|
|
167
80
|
}
|
|
168
|
-
|
|
169
81
|
if (props.classNames) {
|
|
170
|
-
const ClassNamesPlugin = await import(
|
|
171
|
-
|
|
82
|
+
const ClassNamesPlugin = await import("embla-carousel-class-names").then((r) => r.default);
|
|
83
|
+
emblaPlugins.push(ClassNamesPlugin(typeof props.classNames === "boolean" ? {} : props.classNames));
|
|
172
84
|
}
|
|
173
|
-
|
|
174
85
|
if (props.fade) {
|
|
175
|
-
const FadePlugin = await import(
|
|
176
|
-
|
|
86
|
+
const FadePlugin = await import("embla-carousel-fade").then((r) => r.default);
|
|
87
|
+
emblaPlugins.push(FadePlugin(typeof props.fade === "boolean" ? {} : props.fade));
|
|
177
88
|
}
|
|
178
|
-
|
|
179
89
|
if (props.wheelGestures) {
|
|
180
|
-
const { WheelGesturesPlugin } = await import(
|
|
181
|
-
|
|
90
|
+
const { WheelGesturesPlugin } = await import("embla-carousel-wheel-gestures");
|
|
91
|
+
emblaPlugins.push(WheelGesturesPlugin(typeof props.wheelGestures === "boolean" ? {} : props.wheelGestures));
|
|
182
92
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
93
|
+
plugins.value = emblaPlugins;
|
|
94
|
+
}
|
|
95
|
+
watch(() => [props.autoplay, props.autoScroll, props.autoHeight, props.classNames, props.fade, props.wheelGestures], async () => {
|
|
96
|
+
await loadPlugins();
|
|
97
|
+
emblaApi.value?.reInit(options.value, plugins.value);
|
|
98
|
+
}, { immediate: true });
|
|
99
|
+
const [emblaRef, emblaApi] = useEmblaCarousel(options, plugins);
|
|
100
|
+
watch(options, () => {
|
|
101
|
+
emblaApi.value?.reInit(options.value, plugins.value);
|
|
102
|
+
}, { flush: "post" });
|
|
193
103
|
function scrollPrev() {
|
|
194
|
-
emblaApi.value?.scrollPrev()
|
|
104
|
+
emblaApi.value?.scrollPrev();
|
|
195
105
|
}
|
|
196
|
-
|
|
197
106
|
function scrollNext() {
|
|
198
|
-
emblaApi.value?.scrollNext()
|
|
107
|
+
emblaApi.value?.scrollNext();
|
|
199
108
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
emblaApi.value?.scrollTo(index)
|
|
109
|
+
function scrollTo(index) {
|
|
110
|
+
emblaApi.value?.scrollTo(index);
|
|
203
111
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
112
|
+
function onKeyDown(event) {
|
|
113
|
+
let prevKey;
|
|
114
|
+
let nextKey;
|
|
115
|
+
if (props.orientation === "horizontal") {
|
|
116
|
+
prevKey = dir.value === "ltr" ? "ArrowLeft" : "ArrowRight";
|
|
117
|
+
nextKey = dir.value === "ltr" ? "ArrowRight" : "ArrowLeft";
|
|
118
|
+
} else {
|
|
119
|
+
prevKey = "ArrowUp";
|
|
120
|
+
nextKey = "ArrowDown";
|
|
121
|
+
}
|
|
209
122
|
if (event.key === prevKey) {
|
|
210
|
-
event.preventDefault()
|
|
211
|
-
scrollPrev()
|
|
212
|
-
|
|
213
|
-
return
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
scrollPrev();
|
|
125
|
+
return;
|
|
214
126
|
}
|
|
215
|
-
|
|
216
127
|
if (event.key === nextKey) {
|
|
217
|
-
event.preventDefault()
|
|
218
|
-
scrollNext()
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
scrollNext();
|
|
219
130
|
}
|
|
220
131
|
}
|
|
221
|
-
|
|
222
|
-
const
|
|
223
|
-
const
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
function onInit(api: EmblaCarouselType) {
|
|
228
|
-
scrollSnaps.value = api?.scrollSnapList() || []
|
|
132
|
+
const canScrollNext = ref(false);
|
|
133
|
+
const canScrollPrev = ref(false);
|
|
134
|
+
const selectedIndex = ref(0);
|
|
135
|
+
const scrollSnaps = ref([]);
|
|
136
|
+
function onInit(api) {
|
|
137
|
+
scrollSnaps.value = api?.scrollSnapList() || [];
|
|
229
138
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
selectedIndex.value
|
|
139
|
+
function onSelect(api) {
|
|
140
|
+
canScrollNext.value = api?.canScrollNext() || false;
|
|
141
|
+
canScrollPrev.value = api?.canScrollPrev() || false;
|
|
142
|
+
selectedIndex.value = api?.selectedScrollSnap() || 0;
|
|
143
|
+
emit("select", selectedIndex.value);
|
|
144
|
+
}
|
|
145
|
+
function isCarouselItem(item) {
|
|
146
|
+
return typeof item === "object" && item !== null;
|
|
235
147
|
}
|
|
236
|
-
|
|
237
148
|
onMounted(() => {
|
|
238
149
|
if (!emblaApi.value)
|
|
239
|
-
return
|
|
240
|
-
|
|
241
|
-
emblaApi.value
|
|
242
|
-
emblaApi.value
|
|
243
|
-
emblaApi.value
|
|
244
|
-
emblaApi.value
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
150
|
+
return;
|
|
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
|
+
onBeforeMount(() => {
|
|
158
|
+
if (!emblaApi.value)
|
|
159
|
+
return;
|
|
160
|
+
emblaApi.value.off("init", onInit);
|
|
161
|
+
emblaApi.value.off("init", onSelect);
|
|
162
|
+
emblaApi.value.off("reInit", onInit);
|
|
163
|
+
emblaApi.value.off("reInit", onSelect);
|
|
164
|
+
emblaApi.value.off("select", onSelect);
|
|
165
|
+
});
|
|
248
166
|
defineExpose({
|
|
249
167
|
emblaRef,
|
|
250
|
-
emblaApi
|
|
251
|
-
})
|
|
168
|
+
emblaApi
|
|
169
|
+
});
|
|
252
170
|
</script>
|
|
253
171
|
|
|
254
172
|
<template>
|
|
255
173
|
<Primitive
|
|
256
174
|
:as="props.as"
|
|
257
175
|
role="region"
|
|
258
|
-
aria-roledescription="carousel"
|
|
259
176
|
tabindex="0"
|
|
260
|
-
:class="
|
|
177
|
+
:class="ui.root({ class: [props.class, props.ui?.root] })"
|
|
178
|
+
aria-roledescription="carousel"
|
|
179
|
+
:data-orientation="props.orientation"
|
|
180
|
+
data-part="root"
|
|
261
181
|
@keydown="onKeyDown"
|
|
262
182
|
>
|
|
263
|
-
<div ref="emblaRef" :class="
|
|
264
|
-
<div :class="
|
|
183
|
+
<div ref="emblaRef" :class="ui.viewport({ class: props.ui?.viewport })" data-part="viewport">
|
|
184
|
+
<div :class="ui.container({ class: props.ui?.container })" data-part="container">
|
|
265
185
|
<div
|
|
266
186
|
v-for="(item, index) in props.items"
|
|
267
187
|
:key="index"
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
188
|
+
v-bind="props.dots ? { role: 'tabpanel' } : { 'role': 'group', 'aria-roledescription': 'slide' }"
|
|
189
|
+
:class="ui.item({ class: [props.ui?.item, ...isCarouselItem(item) ? [item.ui?.item, item.class] : []] })"
|
|
190
|
+
data-part="item"
|
|
271
191
|
>
|
|
272
192
|
<slot :item="item" :index="index"></slot>
|
|
273
193
|
</div>
|
|
274
194
|
</div>
|
|
275
195
|
</div>
|
|
276
196
|
|
|
277
|
-
<div v-if="props.arrows || props.dots" :class="
|
|
278
|
-
<div v-if="props.arrows" :class="
|
|
197
|
+
<div v-if="props.arrows || props.dots" :class="ui.controls({ class: props.ui?.controls })" data-part="controls">
|
|
198
|
+
<div v-if="props.arrows" :class="ui.arrows({ class: props.ui?.arrows })" data-part="arrows">
|
|
279
199
|
<Button
|
|
280
200
|
:disabled="!canScrollPrev"
|
|
281
201
|
:icon="prevIcon"
|
|
282
|
-
|
|
202
|
+
color="neutral"
|
|
283
203
|
variant="outline"
|
|
284
204
|
:aria-label="t('carousel.prev')"
|
|
285
|
-
v-bind="typeof props.prev === 'object' ? props.prev :
|
|
286
|
-
:class="
|
|
205
|
+
v-bind="typeof props.prev === 'object' ? props.prev : void 0"
|
|
206
|
+
:class="ui.prev({ class: props.ui?.prev })"
|
|
207
|
+
data-part="prev"
|
|
287
208
|
@click="scrollPrev"
|
|
288
209
|
/>
|
|
289
210
|
<Button
|
|
290
211
|
:disabled="!canScrollNext"
|
|
291
212
|
:icon="nextIcon"
|
|
292
|
-
|
|
213
|
+
color="neutral"
|
|
293
214
|
variant="outline"
|
|
294
215
|
:aria-label="t('carousel.next')"
|
|
295
|
-
v-bind="typeof props.next === 'object' ? props.next :
|
|
296
|
-
:class="
|
|
216
|
+
v-bind="typeof props.next === 'object' ? props.next : void 0"
|
|
217
|
+
:class="ui.next({ class: props.ui?.next })"
|
|
218
|
+
data-part="next"
|
|
297
219
|
@click="scrollNext"
|
|
298
220
|
/>
|
|
299
221
|
</div>
|
|
300
222
|
|
|
301
|
-
<div v-if="props.dots" :class="
|
|
223
|
+
<div v-if="props.dots" role="tablist" :aria-label="t('carousel.dots')" :class="ui.dots({ class: props.ui?.dots })" data-part="dots">
|
|
302
224
|
<template v-for="(_, index) in scrollSnaps" :key="index">
|
|
303
225
|
<button
|
|
226
|
+
type="button"
|
|
227
|
+
role="tab"
|
|
304
228
|
:aria-label="t('carousel.goto', { page: index + 1 })"
|
|
305
|
-
:
|
|
229
|
+
:aria-selected="selectedIndex === index"
|
|
230
|
+
:class="ui.dot({ class: props.ui?.dot, active: selectedIndex === index })"
|
|
231
|
+
data-part="dot"
|
|
232
|
+
:data-state="selectedIndex === index ? 'active' : void 0"
|
|
306
233
|
@click="scrollTo(index)"
|
|
307
234
|
></button>
|
|
308
235
|
</template>
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { VariantProps } from '@byyuurin/ui-kit';
|
|
2
|
+
import type { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel';
|
|
3
|
+
import type { AutoHeightOptionsType } from 'embla-carousel-auto-height';
|
|
4
|
+
import type { AutoScrollOptionsType } from 'embla-carousel-auto-scroll';
|
|
5
|
+
import type { AutoplayOptionsType } from 'embla-carousel-autoplay';
|
|
6
|
+
import type { ClassNamesOptionsType } from 'embla-carousel-class-names';
|
|
7
|
+
import type { FadeOptionsType } from 'embla-carousel-fade';
|
|
8
|
+
import type { WheelGesturesPluginOptions } from 'embla-carousel-wheel-gestures';
|
|
9
|
+
import type { PrimitiveProps } from 'reka-ui';
|
|
10
|
+
import theme from '#build/ui/carousel';
|
|
11
|
+
import type { ButtonProps, ComponentBaseProps, ComponentUIProps } from '../types';
|
|
12
|
+
import type { AcceptableValue, StaticSlot } from '../types/utils';
|
|
13
|
+
export type CarouselValue = AcceptableValue;
|
|
14
|
+
export type CarouselItem = AcceptableValue | {
|
|
15
|
+
class?: ComponentBaseProps['class'];
|
|
16
|
+
ui?: Pick<ComponentUIProps<typeof theme>, 'item'>;
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
};
|
|
19
|
+
type ThemeVariants = VariantProps<typeof theme>;
|
|
20
|
+
export interface CarouselProps<T extends CarouselItem = CarouselItem> extends ComponentBaseProps, Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
|
|
21
|
+
/**
|
|
22
|
+
* The element or component this component should render as.
|
|
23
|
+
* @default "div"
|
|
24
|
+
*/
|
|
25
|
+
as?: PrimitiveProps['as'];
|
|
26
|
+
/**
|
|
27
|
+
* Configure the prev button when arrows are enabled.
|
|
28
|
+
* @default { size: 'md', variant: 'link' }
|
|
29
|
+
*/
|
|
30
|
+
prev?: ButtonProps;
|
|
31
|
+
/**
|
|
32
|
+
* The icon displayed in the prev button.
|
|
33
|
+
* @default app.icons.chevronLeft
|
|
34
|
+
*/
|
|
35
|
+
prevIcon?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Configure the next button when arrows are enabled.
|
|
38
|
+
* @default { size: 'md', variant: 'link' }
|
|
39
|
+
*/
|
|
40
|
+
next?: ButtonProps;
|
|
41
|
+
/**
|
|
42
|
+
* The icon displayed in the next button.
|
|
43
|
+
* @default app.icons.chevronRight
|
|
44
|
+
*/
|
|
45
|
+
nextIcon?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Display prev and next buttons to scroll the carousel.
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
arrows?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Display dots to scroll to a specific slide.
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
dots?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* The orientation of the carousel.
|
|
58
|
+
* @default "horizontal"
|
|
59
|
+
*/
|
|
60
|
+
orientation?: ThemeVariants['orientation'];
|
|
61
|
+
items?: T[];
|
|
62
|
+
/**
|
|
63
|
+
* Enable Autoplay plugin
|
|
64
|
+
* @see https://www.embla-carousel.com/plugins/autoplay/
|
|
65
|
+
*/
|
|
66
|
+
autoplay?: boolean | AutoplayOptionsType;
|
|
67
|
+
/**
|
|
68
|
+
* Enable Auto Scroll plugin
|
|
69
|
+
* @see https://www.embla-carousel.com/plugins/auto-scroll/
|
|
70
|
+
*/
|
|
71
|
+
autoScroll?: boolean | AutoScrollOptionsType;
|
|
72
|
+
/**
|
|
73
|
+
* Enable Auto Height plugin
|
|
74
|
+
* @see https://www.embla-carousel.com/plugins/auto-height/
|
|
75
|
+
*/
|
|
76
|
+
autoHeight?: boolean | AutoHeightOptionsType;
|
|
77
|
+
/**
|
|
78
|
+
* Enable Class Names plugin
|
|
79
|
+
* @see https://www.embla-carousel.com/plugins/class-names/
|
|
80
|
+
*/
|
|
81
|
+
classNames?: boolean | ClassNamesOptionsType;
|
|
82
|
+
/**
|
|
83
|
+
* Enable Fade plugin
|
|
84
|
+
* @see https://www.embla-carousel.com/plugins/fade/
|
|
85
|
+
*/
|
|
86
|
+
fade?: boolean | FadeOptionsType;
|
|
87
|
+
/**
|
|
88
|
+
* Enable Wheel Gestures plugin
|
|
89
|
+
* @see https://www.embla-carousel.com/plugins/wheel-gestures/
|
|
90
|
+
*/
|
|
91
|
+
wheelGestures?: boolean | WheelGesturesPluginOptions;
|
|
92
|
+
ui?: ComponentUIProps<typeof theme>;
|
|
93
|
+
}
|
|
94
|
+
export interface CarouselEmits {
|
|
95
|
+
/**
|
|
96
|
+
* Emitted when the selected slide changes
|
|
97
|
+
* @param selectedIndex The index of the selected slide
|
|
98
|
+
*/
|
|
99
|
+
select: [selectedIndex: number];
|
|
100
|
+
}
|
|
101
|
+
export interface CarouselSlots<T extends CarouselItem = CarouselItem> {
|
|
102
|
+
default: StaticSlot<{
|
|
103
|
+
item: T;
|
|
104
|
+
index: number;
|
|
105
|
+
}>;
|
|
106
|
+
}
|
|
107
|
+
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<{
|
|
108
|
+
props: __VLS_PrettifyLocal<CarouselProps<T> & {
|
|
109
|
+
onSelect?: ((selectedIndex: number) => any) | undefined;
|
|
110
|
+
}> & import("vue").PublicProps;
|
|
111
|
+
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
112
|
+
emblaRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
|
|
113
|
+
emblaApi: import("vue").Ref<EmblaCarouselType | undefined, EmblaCarouselType | undefined>;
|
|
114
|
+
}>) => void;
|
|
115
|
+
attrs: any;
|
|
116
|
+
slots: CarouselSlots<T>;
|
|
117
|
+
emit: (evt: "select", selectedIndex: number) => void;
|
|
118
|
+
}>) => import("vue").VNode & {
|
|
119
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
120
|
+
};
|
|
121
|
+
declare const _default: typeof __VLS_export;
|
|
122
|
+
export default _default;
|
|
123
|
+
type __VLS_PrettifyLocal<T> = {
|
|
124
|
+
[K in keyof T as K]: T[K];
|
|
125
|
+
} & {};
|