@neynar/ui 0.1.1 → 0.1.2
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/dist/components/ui/accordion.d.ts +1 -25
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +240 -46
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert.d.ts +73 -11
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +44 -10
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui/avatar.d.ts +117 -33
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/badge.d.ts +50 -71
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +231 -49
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +189 -71
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/calendar.d.ts +197 -40
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +7 -22
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/carousel.d.ts +369 -99
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/checkbox.d.ts +110 -38
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/collapsible.d.ts +246 -61
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/combobox.d.ts +207 -159
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts +336 -67
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/container.d.ts +159 -64
- package/dist/components/ui/container.d.ts.map +1 -1
- package/dist/components/ui/context-menu.d.ts +321 -39
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/date-picker.d.ts +113 -86
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +106 -25
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/drawer.d.ts +388 -59
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +521 -74
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/empty-state.d.ts +148 -76
- package/dist/components/ui/empty-state.d.ts.map +1 -1
- package/dist/components/ui/hover-card.d.ts +253 -34
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts +143 -44
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/label.d.ts +0 -8
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/menubar.d.ts +288 -46
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.d.ts +444 -127
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/pagination.d.ts +342 -66
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/popover.d.ts +0 -8
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/progress.d.ts +88 -30
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/radio-group.d.ts +189 -45
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/resizable.d.ts +178 -62
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +180 -21
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts +382 -60
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +52 -39
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts +144 -27
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sidebar.d.ts +81 -31
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/skeleton.d.ts +94 -32
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/slider.d.ts +37 -31
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/sonner.d.ts +280 -46
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/stack.d.ts +289 -148
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts +1 -2
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/container.stories.d.ts +2 -3
- package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts +2 -2
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
- package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/stack.stories.d.ts +1 -1
- package/dist/components/ui/stories/text-field.stories.d.ts +7 -1
- package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
- package/dist/components/ui/switch.d.ts +44 -38
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/table.d.ts +33 -0
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/tabs.d.ts +4 -22
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/text-field.d.ts +170 -84
- package/dist/components/ui/text-field.d.ts.map +1 -1
- package/dist/components/ui/textarea.d.ts +106 -29
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/theme-toggle.d.ts +190 -65
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts +107 -23
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +143 -67
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle.d.ts +118 -30
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts +152 -28
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +452 -134
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +9388 -8281
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/llms.txt +173 -3
- package/package.json +5 -2
- package/src/components/ui/accordion.tsx +112 -27
- package/src/components/ui/alert-dialog.tsx +401 -46
- package/src/components/ui/alert.tsx +114 -11
- package/src/components/ui/aspect-ratio.tsx +69 -14
- package/src/components/ui/avatar.tsx +179 -33
- package/src/components/ui/badge.tsx +74 -75
- package/src/components/ui/breadcrumb.tsx +335 -50
- package/src/components/ui/button.tsx +198 -90
- package/src/components/ui/calendar.tsx +867 -43
- package/src/components/ui/card.tsx +140 -33
- package/src/components/ui/carousel.tsx +529 -98
- package/src/components/ui/chart.tsx +222 -1
- package/src/components/ui/checkbox.tsx +176 -38
- package/src/components/ui/collapsible.tsx +321 -67
- package/src/components/ui/combobox.tsx +284 -83
- package/src/components/ui/command.tsx +527 -67
- package/src/components/ui/container.tsx +217 -65
- package/src/components/ui/context-menu.tsx +716 -51
- package/src/components/ui/date-picker.tsx +228 -38
- package/src/components/ui/dialog.tsx +270 -33
- package/src/components/ui/drawer.tsx +546 -67
- package/src/components/ui/dropdown-menu.tsx +657 -74
- package/src/components/ui/empty-state.tsx +241 -82
- package/src/components/ui/hover-card.tsx +328 -39
- package/src/components/ui/input.tsx +207 -44
- package/src/components/ui/label.tsx +98 -8
- package/src/components/ui/menubar.tsx +587 -54
- package/src/components/ui/navigation-menu.tsx +557 -128
- package/src/components/ui/pagination.tsx +561 -79
- package/src/components/ui/popover.tsx +119 -8
- package/src/components/ui/progress.tsx +131 -29
- package/src/components/ui/radio-group.tsx +260 -51
- package/src/components/ui/resizable.tsx +289 -63
- package/src/components/ui/scroll-area.tsx +377 -66
- package/src/components/ui/select.tsx +545 -60
- package/src/components/ui/separator.tsx +146 -40
- package/src/components/ui/sheet.tsx +348 -31
- package/src/components/ui/sidebar.tsx +471 -29
- package/src/components/ui/skeleton.tsx +114 -32
- package/src/components/ui/slider.tsx +77 -31
- package/src/components/ui/sonner.tsx +574 -46
- package/src/components/ui/stack.tsx +423 -101
- package/src/components/ui/switch.tsx +78 -39
- package/src/components/ui/table.tsx +170 -4
- package/src/components/ui/tabs.tsx +108 -22
- package/src/components/ui/text-field.tsx +226 -81
- package/src/components/ui/textarea.tsx +180 -29
- package/src/components/ui/theme-toggle.tsx +313 -65
- package/src/components/ui/theme.tsx +117 -23
- package/src/components/ui/toggle-group.tsx +280 -69
- package/src/components/ui/toggle.tsx +124 -35
- package/src/components/ui/tooltip.tsx +239 -29
- package/src/components/ui/typography.tsx +1115 -165
|
@@ -1,30 +1,89 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import useEmblaCarousel, { type UseEmblaCarouselType } from "embla-carousel-react";
|
|
3
3
|
import { Button } from "@/components/ui/button";
|
|
4
|
+
/** Embla Carousel API instance type for programmatic control */
|
|
4
5
|
type CarouselApi = UseEmblaCarouselType[1];
|
|
6
|
+
/** Parameters for the useEmblaCarousel hook */
|
|
5
7
|
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
8
|
+
/** Embla Carousel configuration options */
|
|
6
9
|
type CarouselOptions = UseCarouselParameters[0];
|
|
10
|
+
/** Array of Embla Carousel plugins */
|
|
7
11
|
type CarouselPlugin = UseCarouselParameters[1];
|
|
12
|
+
/** Props for Carousel component (used in component implementation) */
|
|
8
13
|
type CarouselProps = {
|
|
14
|
+
/** Embla Carousel configuration options */
|
|
9
15
|
opts?: CarouselOptions;
|
|
16
|
+
/** Array of Embla Carousel plugins for extended functionality */
|
|
10
17
|
plugins?: CarouselPlugin;
|
|
18
|
+
/** Carousel orientation/layout direction */
|
|
11
19
|
orientation?: "horizontal" | "vertical";
|
|
20
|
+
/** Callback to receive the Embla Carousel API instance */
|
|
12
21
|
setApi?: (api: CarouselApi) => void;
|
|
13
22
|
};
|
|
23
|
+
/** Props for the carousel context provider */
|
|
24
|
+
type CarouselContextProps = {
|
|
25
|
+
/** Ref for the Embla carousel viewport element */
|
|
26
|
+
carouselRef: ReturnType<typeof useEmblaCarousel>[0];
|
|
27
|
+
/** Embla Carousel API instance for programmatic control */
|
|
28
|
+
api: ReturnType<typeof useEmblaCarousel>[1];
|
|
29
|
+
/** Function to scroll to the previous slide */
|
|
30
|
+
scrollPrev: () => void;
|
|
31
|
+
/** Function to scroll to the next slide */
|
|
32
|
+
scrollNext: () => void;
|
|
33
|
+
/** Whether the carousel can scroll to previous slide */
|
|
34
|
+
canScrollPrev: boolean;
|
|
35
|
+
/** Whether the carousel can scroll to next slide */
|
|
36
|
+
canScrollNext: boolean;
|
|
37
|
+
} & CarouselProps;
|
|
38
|
+
/**
|
|
39
|
+
* Hook to access carousel context and controls
|
|
40
|
+
*
|
|
41
|
+
* Must be used within a Carousel component. Provides access to the carousel
|
|
42
|
+
* API and navigation methods for building custom carousel interactions.
|
|
43
|
+
*
|
|
44
|
+
* @returns Carousel context containing API, navigation controls, and state
|
|
45
|
+
* @throws Error when used outside of Carousel component
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* function CarouselDots() {
|
|
50
|
+
* const { api, scrollNext, canScrollNext } = useCarousel();
|
|
51
|
+
* const [current, setCurrent] = useState(0);
|
|
52
|
+
*
|
|
53
|
+
* useEffect(() => {
|
|
54
|
+
* if (!api) return;
|
|
55
|
+
* setCurrent(api.selectedScrollSnap());
|
|
56
|
+
* api.on('select', () => setCurrent(api.selectedScrollSnap()));
|
|
57
|
+
* }, [api]);
|
|
58
|
+
*
|
|
59
|
+
* return (
|
|
60
|
+
* <div className="flex gap-2">
|
|
61
|
+
* {Array.from({ length: 5 }).map((_, i) => (
|
|
62
|
+
* <button
|
|
63
|
+
* key={i}
|
|
64
|
+
* className={current === i ? "active" : ""}
|
|
65
|
+
* onClick={() => api?.scrollTo(i)}
|
|
66
|
+
* />
|
|
67
|
+
* ))}
|
|
68
|
+
* </div>
|
|
69
|
+
* );
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see {@link Carousel} - Main carousel component
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
*/
|
|
76
|
+
declare function useCarousel(): CarouselContextProps;
|
|
14
77
|
/**
|
|
15
78
|
* A responsive carousel/slider component for content presentation
|
|
16
79
|
*
|
|
17
80
|
* The Carousel component provides a touch-friendly, keyboard-accessible way to
|
|
18
81
|
* browse through multiple items. Built on Embla Carousel, it supports various
|
|
19
|
-
* configurations including autoplay, loop, drag scrolling,
|
|
20
|
-
* and vertical orientations.
|
|
82
|
+
* configurations including autoplay, loop, drag scrolling, infinite scroll,
|
|
83
|
+
* momentum scrolling, and both horizontal and vertical orientations.
|
|
21
84
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* @param orientation - Layout direction: "horizontal" or "vertical" (default: "horizontal")
|
|
25
|
-
* @param setApi - Callback to receive the carousel API instance
|
|
26
|
-
* @param className - Additional CSS classes
|
|
27
|
-
* @param children - Carousel content (typically CarouselContent and navigation buttons)
|
|
85
|
+
* Features include responsive breakpoints, plugin system, smooth animations,
|
|
86
|
+
* focus management, RTL support, and extensive customization options.
|
|
28
87
|
*
|
|
29
88
|
* @example
|
|
30
89
|
* ```tsx
|
|
@@ -44,9 +103,16 @@ type CarouselProps = {
|
|
|
44
103
|
*
|
|
45
104
|
* @example
|
|
46
105
|
* ```tsx
|
|
47
|
-
* // Multi-item responsive carousel
|
|
106
|
+
* // Multi-item responsive carousel with custom spacing
|
|
48
107
|
* <Carousel
|
|
49
|
-
* opts={{
|
|
108
|
+
* opts={{
|
|
109
|
+
* align: "start",
|
|
110
|
+
* loop: true,
|
|
111
|
+
* slidesToScroll: "auto",
|
|
112
|
+
* breakpoints: {
|
|
113
|
+
* "(min-width: 768px)": { slidesToScroll: 2 }
|
|
114
|
+
* }
|
|
115
|
+
* }}
|
|
50
116
|
* className="w-full"
|
|
51
117
|
* >
|
|
52
118
|
* <CarouselContent className="-ml-2 md:-ml-4">
|
|
@@ -68,12 +134,13 @@ type CarouselProps = {
|
|
|
68
134
|
*
|
|
69
135
|
* @example
|
|
70
136
|
* ```tsx
|
|
71
|
-
* // Vertical carousel with autoplay
|
|
137
|
+
* // Vertical carousel with autoplay plugin
|
|
72
138
|
* import Autoplay from "embla-carousel-autoplay";
|
|
73
139
|
*
|
|
74
140
|
* <Carousel
|
|
75
141
|
* orientation="vertical"
|
|
76
|
-
*
|
|
142
|
+
* opts={{ loop: true, align: "center" }}
|
|
143
|
+
* plugins={[Autoplay({ delay: 3000, stopOnInteraction: true, stopOnMouseEnter: true })]}
|
|
77
144
|
* className="h-[400px]"
|
|
78
145
|
* >
|
|
79
146
|
* <CarouselContent className="h-full">
|
|
@@ -91,47 +158,121 @@ type CarouselProps = {
|
|
|
91
158
|
*
|
|
92
159
|
* @example
|
|
93
160
|
* ```tsx
|
|
94
|
-
* // Controlled carousel with custom indicators
|
|
161
|
+
* // Controlled carousel with custom indicators and API access
|
|
162
|
+
* import { useState, useEffect } from "react";
|
|
163
|
+
*
|
|
95
164
|
* function ControlledCarousel() {
|
|
96
165
|
* const [api, setApi] = useState<CarouselApi>();
|
|
97
166
|
* const [current, setCurrent] = useState(0);
|
|
167
|
+
* const [count, setCount] = useState(0);
|
|
98
168
|
*
|
|
99
169
|
* useEffect(() => {
|
|
100
170
|
* if (!api) return;
|
|
101
|
-
*
|
|
102
|
-
* api.
|
|
171
|
+
*
|
|
172
|
+
* setCount(api.scrollSnapList().length);
|
|
173
|
+
* setCurrent(api.selectedScrollSnap() + 1);
|
|
174
|
+
*
|
|
175
|
+
* api.on('select', () => {
|
|
176
|
+
* setCurrent(api.selectedScrollSnap() + 1);
|
|
177
|
+
* });
|
|
103
178
|
* }, [api]);
|
|
104
179
|
*
|
|
105
180
|
* return (
|
|
106
|
-
* <div>
|
|
107
|
-
* <Carousel setApi={setApi}>
|
|
108
|
-
* <CarouselContent
|
|
181
|
+
* <div className="space-y-4">
|
|
182
|
+
* <Carousel setApi={setApi} opts={{ loop: true }}>
|
|
183
|
+
* <CarouselContent>
|
|
184
|
+
* {slides.map((slide, index) => (
|
|
185
|
+
* <CarouselItem key={index}>{slide.content}</CarouselItem>
|
|
186
|
+
* ))}
|
|
187
|
+
* </CarouselContent>
|
|
188
|
+
* <CarouselPrevious />
|
|
189
|
+
* <CarouselNext />
|
|
109
190
|
* </Carousel>
|
|
110
|
-
*
|
|
111
|
-
*
|
|
191
|
+
*
|
|
192
|
+
* // Custom indicators
|
|
193
|
+
* <div className="flex justify-center gap-2">
|
|
194
|
+
* {Array.from({ length: count }).map((_, i) => (
|
|
112
195
|
* <button
|
|
113
196
|
* key={i}
|
|
114
|
-
* className={
|
|
197
|
+
* className={cn(
|
|
198
|
+
* "w-2 h-2 rounded-full transition-colors",
|
|
199
|
+
* current === i + 1 ? "bg-primary" : "bg-muted"
|
|
200
|
+
* )}
|
|
115
201
|
* onClick={() => api?.scrollTo(i)}
|
|
116
202
|
* />
|
|
117
203
|
* ))}
|
|
118
204
|
* </div>
|
|
205
|
+
*
|
|
206
|
+
* <div className="text-center text-sm text-muted-foreground">
|
|
207
|
+
* Slide {current} of {count}
|
|
208
|
+
* </div>
|
|
119
209
|
* </div>
|
|
120
210
|
* );
|
|
121
211
|
* }
|
|
122
212
|
* ```
|
|
123
213
|
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```tsx
|
|
216
|
+
* // Momentum scrolling carousel with drag-free mode
|
|
217
|
+
* <Carousel
|
|
218
|
+
* opts={{
|
|
219
|
+
* dragFree: true,
|
|
220
|
+
* containScroll: false,
|
|
221
|
+
* skipSnaps: true
|
|
222
|
+
* }}
|
|
223
|
+
* className="w-full"
|
|
224
|
+
* >
|
|
225
|
+
* <CarouselContent>
|
|
226
|
+
* {items.map((item, index) => (
|
|
227
|
+
* <CarouselItem key={index} className="basis-auto">
|
|
228
|
+
* <div className="w-32 h-32 bg-muted rounded-lg" />
|
|
229
|
+
* </CarouselItem>
|
|
230
|
+
* ))}
|
|
231
|
+
* </CarouselContent>
|
|
232
|
+
* </Carousel>
|
|
233
|
+
* ```
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```tsx
|
|
237
|
+
* // Breakpoint-responsive carousel that disables on larger screens
|
|
238
|
+
* <Carousel
|
|
239
|
+
* opts={{
|
|
240
|
+
* active: true,
|
|
241
|
+
* breakpoints: {
|
|
242
|
+
* "(min-width: 768px)": { active: false }
|
|
243
|
+
* }
|
|
244
|
+
* }}
|
|
245
|
+
* className="md:hidden"
|
|
246
|
+
* >
|
|
247
|
+
* <CarouselContent>
|
|
248
|
+
* {mobileItems.map((item, index) => (
|
|
249
|
+
* <CarouselItem key={index}>{item}</CarouselItem>
|
|
250
|
+
* ))}
|
|
251
|
+
* </CarouselContent>
|
|
252
|
+
* <CarouselPrevious />
|
|
253
|
+
* <CarouselNext />
|
|
254
|
+
* </Carousel>
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
124
257
|
* @accessibility
|
|
125
|
-
* - Keyboard
|
|
126
|
-
* - Touch/
|
|
127
|
-
* - Screen
|
|
128
|
-
* -
|
|
129
|
-
* -
|
|
130
|
-
* -
|
|
131
|
-
* -
|
|
258
|
+
* - **Keyboard Navigation**: Arrow keys for slide navigation, Tab for focus management
|
|
259
|
+
* - **Touch/Drag Support**: Multi-touch gestures, mouse drag, momentum scrolling
|
|
260
|
+
* - **Screen Reader**: ARIA roles, labels, and announcements for slide changes
|
|
261
|
+
* - **Focus Management**: Automatic focus handling, visible focus indicators
|
|
262
|
+
* - **Motion**: Respects `prefers-reduced-motion` for accessibility
|
|
263
|
+
* - **RTL Support**: Right-to-left layout support with `direction: "rtl"` option
|
|
264
|
+
* - **High Contrast**: Proper color contrast for navigation elements
|
|
265
|
+
*
|
|
266
|
+
* **Keyboard Shortcuts:**
|
|
267
|
+
* - `←/→` or `↑/↓`: Navigate slides (based on orientation)
|
|
268
|
+
* - `Home`: Go to first slide
|
|
269
|
+
* - `End`: Go to last slide
|
|
270
|
+
* - `Tab`: Focus navigation elements
|
|
132
271
|
*
|
|
133
272
|
* @see {@link https://ui.shadcn.com/docs/components/carousel} shadcn/ui carousel documentation
|
|
134
273
|
* @see {@link https://www.embla-carousel.com/} Embla Carousel documentation
|
|
274
|
+
* @see {@link https://www.embla-carousel.com/api/options/} Embla options reference
|
|
275
|
+
* @see {@link https://www.embla-carousel.com/plugins/} Available Embla plugins
|
|
135
276
|
* @see {@link useCarousel} Hook for accessing carousel controls
|
|
136
277
|
* @see {@link CarouselContent} Container for carousel items
|
|
137
278
|
* @see {@link CarouselItem} Individual carousel slide
|
|
@@ -139,16 +280,21 @@ type CarouselProps = {
|
|
|
139
280
|
* @see {@link CarouselNext} Next navigation button
|
|
140
281
|
* @since 1.0.0
|
|
141
282
|
*/
|
|
142
|
-
declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React.ComponentProps<"div">
|
|
283
|
+
declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: CarouselProps & React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
284
|
+
/** Props for CarouselContent component (used in component implementation) */
|
|
285
|
+
type CarouselContentProps = {
|
|
286
|
+
/** Additional CSS classes for custom spacing and styling */
|
|
287
|
+
className?: string;
|
|
288
|
+
/** CarouselItem components and other slide content */
|
|
289
|
+
children?: React.ReactNode;
|
|
290
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "children">;
|
|
143
291
|
/**
|
|
144
292
|
* Container component for carousel items that handles the scrolling viewport
|
|
145
293
|
*
|
|
146
294
|
* Wraps all carousel items and manages the scrollable area. This component
|
|
147
|
-
* must be a direct child of Carousel and handles orientation-specific layouts
|
|
148
|
-
* and overflow
|
|
149
|
-
*
|
|
150
|
-
* @param className - Additional CSS classes for custom spacing and styling
|
|
151
|
-
* @param children - CarouselItem components
|
|
295
|
+
* must be a direct child of Carousel and handles orientation-specific layouts,
|
|
296
|
+
* overflow behavior, and slide spacing. The outer div provides overflow clipping
|
|
297
|
+
* while the inner div contains the flex layout for slides.
|
|
152
298
|
*
|
|
153
299
|
* @example
|
|
154
300
|
* ```tsx
|
|
@@ -162,47 +308,75 @@ declare function Carousel({ orientation, opts, setApi, plugins, className, child
|
|
|
162
308
|
*
|
|
163
309
|
* @example
|
|
164
310
|
* ```tsx
|
|
165
|
-
* //
|
|
311
|
+
* // Multi-item carousel with responsive spacing
|
|
166
312
|
* <CarouselContent className="-ml-2 md:-ml-4">
|
|
167
|
-
* <CarouselItem className="pl-2 md:pl-4
|
|
168
|
-
*
|
|
313
|
+
* <CarouselItem className="pl-2 md:pl-4 md:basis-1/2 lg:basis-1/3">
|
|
314
|
+
* <Card>Product 1</Card>
|
|
315
|
+
* </CarouselItem>
|
|
316
|
+
* <CarouselItem className="pl-2 md:pl-4 md:basis-1/2 lg:basis-1/3">
|
|
317
|
+
* <Card>Product 2</Card>
|
|
318
|
+
* </CarouselItem>
|
|
169
319
|
* </CarouselContent>
|
|
170
320
|
* ```
|
|
171
321
|
*
|
|
172
322
|
* @example
|
|
173
323
|
* ```tsx
|
|
174
|
-
* // Vertical orientation
|
|
324
|
+
* // Vertical orientation with custom height
|
|
175
325
|
* <CarouselContent className="-mt-4 h-[300px]">
|
|
176
|
-
* <CarouselItem className="pt-4
|
|
177
|
-
*
|
|
326
|
+
* <CarouselItem className="pt-4 basis-1/2">
|
|
327
|
+
* <div className="h-full bg-muted rounded-lg">Slide 1</div>
|
|
328
|
+
* </CarouselItem>
|
|
329
|
+
* <CarouselItem className="pt-4 basis-1/2">
|
|
330
|
+
* <div className="h-full bg-muted rounded-lg">Slide 2</div>
|
|
331
|
+
* </CarouselItem>
|
|
332
|
+
* </CarouselContent>
|
|
333
|
+
* ```
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```tsx
|
|
337
|
+
* // Custom slide spacing with CSS variables
|
|
338
|
+
* <CarouselContent
|
|
339
|
+
* className="-ml-4"
|
|
340
|
+
* style={{ '--slide-spacing': '1rem' } as React.CSSProperties}
|
|
341
|
+
* >
|
|
342
|
+
* <CarouselItem className="pl-4">
|
|
343
|
+
* Content with custom spacing
|
|
344
|
+
* </CarouselItem>
|
|
178
345
|
* </CarouselContent>
|
|
179
346
|
* ```
|
|
180
347
|
*
|
|
181
348
|
* @accessibility
|
|
182
349
|
* - Provides scrollable container with proper overflow handling
|
|
183
350
|
* - Maintains responsive layout for horizontal/vertical orientations
|
|
184
|
-
* -
|
|
351
|
+
* - Supports screen reader navigation through slide content
|
|
352
|
+
* - Preserves focus management within slides
|
|
353
|
+
* - Uses semantic HTML structure for assistive technologies
|
|
185
354
|
*
|
|
186
355
|
* @see {@link Carousel} Main carousel component
|
|
187
356
|
* @see {@link CarouselItem} Individual carousel slides
|
|
188
357
|
* @since 1.0.0
|
|
189
358
|
*/
|
|
190
|
-
declare function CarouselContent({ className, ...props }:
|
|
359
|
+
declare function CarouselContent({ className, ...props }: CarouselContentProps): import("react/jsx-runtime").JSX.Element;
|
|
360
|
+
/** Props for CarouselItem component (used in component implementation) */
|
|
361
|
+
type CarouselItemProps = {
|
|
362
|
+
/** Additional CSS classes for sizing, spacing, and styling */
|
|
363
|
+
className?: string;
|
|
364
|
+
/** Content to display within the slide */
|
|
365
|
+
children?: React.ReactNode;
|
|
366
|
+
} & Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "children">;
|
|
191
367
|
/**
|
|
192
368
|
* Individual slide/item component within the carousel
|
|
193
369
|
*
|
|
194
370
|
* Represents a single slide in the carousel that can contain any content.
|
|
195
371
|
* Automatically handles sizing, spacing, and orientation-specific layouts
|
|
196
|
-
* based on the parent carousel configuration.
|
|
197
|
-
*
|
|
198
|
-
* @param className - Additional CSS classes for sizing (basis-*) and spacing
|
|
199
|
-
* @param children - Content to display within the slide
|
|
372
|
+
* based on the parent carousel configuration. Each slide is a flex item
|
|
373
|
+
* with configurable basis for responsive layouts.
|
|
200
374
|
*
|
|
201
375
|
* @example
|
|
202
376
|
* ```tsx
|
|
203
377
|
* // Basic slide with content
|
|
204
378
|
* <CarouselItem>
|
|
205
|
-
* <div className="p-6">
|
|
379
|
+
* <div className="p-6 bg-muted rounded-lg">
|
|
206
380
|
* <h3 className="text-lg font-semibold">Slide Title</h3>
|
|
207
381
|
* <p className="text-muted-foreground">Slide description</p>
|
|
208
382
|
* </div>
|
|
@@ -211,60 +385,95 @@ declare function CarouselContent({ className, ...props }: React.ComponentProps<"
|
|
|
211
385
|
*
|
|
212
386
|
* @example
|
|
213
387
|
* ```tsx
|
|
214
|
-
* // Card-based slide
|
|
388
|
+
* // Card-based slide with structured content
|
|
215
389
|
* <CarouselItem>
|
|
216
|
-
* <Card>
|
|
390
|
+
* <Card className="h-full">
|
|
217
391
|
* <CardHeader>
|
|
218
392
|
* <CardTitle>Product Name</CardTitle>
|
|
393
|
+
* <CardDescription>Product category</CardDescription>
|
|
219
394
|
* </CardHeader>
|
|
220
395
|
* <CardContent>
|
|
221
|
-
* <img src="product.jpg" alt="Product" className="w-full" />
|
|
222
|
-
* <p className="mt-2">$99.99</p>
|
|
396
|
+
* <img src="product.jpg" alt="Product" className="w-full aspect-square object-cover" />
|
|
397
|
+
* <p className="mt-2 text-2xl font-bold">$99.99</p>
|
|
223
398
|
* </CardContent>
|
|
399
|
+
* <CardFooter>
|
|
400
|
+
* <Button className="w-full">Add to Cart</Button>
|
|
401
|
+
* </CardFooter>
|
|
224
402
|
* </Card>
|
|
225
403
|
* </CarouselItem>
|
|
226
404
|
* ```
|
|
227
405
|
*
|
|
228
406
|
* @example
|
|
229
407
|
* ```tsx
|
|
230
|
-
* // Responsive
|
|
231
|
-
* <CarouselItem className="
|
|
232
|
-
* <div className="aspect-square bg-
|
|
408
|
+
* // Responsive multi-item carousel
|
|
409
|
+
* <CarouselItem className="pl-4 basis-full sm:basis-1/2 lg:basis-1/3">
|
|
410
|
+
* <div className="aspect-square bg-gradient-to-br from-blue-400 to-purple-600 rounded-lg p-6 text-white">
|
|
411
|
+
* <h4 className="font-semibold">Feature {index + 1}</h4>
|
|
412
|
+
* <p className="text-sm opacity-90">Description text</p>
|
|
413
|
+
* </div>
|
|
414
|
+
* </CarouselItem>
|
|
415
|
+
* ```
|
|
416
|
+
*
|
|
417
|
+
* @example
|
|
418
|
+
* ```tsx
|
|
419
|
+
* // Auto-sized slides for variable content
|
|
420
|
+
* <CarouselItem className="basis-auto">
|
|
421
|
+
* <Badge variant="secondary" className="text-nowrap px-4 py-2">
|
|
422
|
+
* {tag.label}
|
|
423
|
+
* </Badge>
|
|
233
424
|
* </CarouselItem>
|
|
234
425
|
* ```
|
|
235
426
|
*
|
|
236
427
|
* @example
|
|
237
428
|
* ```tsx
|
|
238
|
-
* //
|
|
429
|
+
* // Image gallery slide with aspect ratio
|
|
239
430
|
* <CarouselItem className="basis-4/5">
|
|
240
|
-
* <div className="
|
|
431
|
+
* <div className="relative aspect-video bg-muted rounded-lg overflow-hidden">
|
|
432
|
+
* <img
|
|
433
|
+
* src={image.src}
|
|
434
|
+
* alt={image.alt}
|
|
435
|
+
* className="object-cover w-full h-full"
|
|
436
|
+
* />
|
|
437
|
+
* <div className="absolute inset-0 bg-black/20 flex items-end p-4">
|
|
438
|
+
* <h5 className="text-white font-medium">{image.title}</h5>
|
|
439
|
+
* </div>
|
|
440
|
+
* </div>
|
|
241
441
|
* </CarouselItem>
|
|
242
442
|
* ```
|
|
243
443
|
*
|
|
244
444
|
* @accessibility
|
|
245
|
-
* - Labeled as
|
|
246
|
-
* - Maintains focus behavior and keyboard navigation
|
|
247
|
-
* - Preserves
|
|
445
|
+
* - **ARIA Role**: Labeled as "slide" with proper role for screen readers
|
|
446
|
+
* - **Focus Management**: Maintains focus behavior and keyboard navigation
|
|
447
|
+
* - **Content Structure**: Preserves semantic structure for assistive technologies
|
|
448
|
+
* - **Interactive Elements**: Supports focusable elements within slides
|
|
449
|
+
* - **Screen Reader**: Announces slide position and content appropriately
|
|
248
450
|
*
|
|
249
451
|
* @see {@link Carousel} Main carousel component
|
|
250
452
|
* @see {@link CarouselContent} Container for carousel items
|
|
251
453
|
* @since 1.0.0
|
|
252
454
|
*/
|
|
253
|
-
declare function CarouselItem({ className, ...props }:
|
|
455
|
+
declare function CarouselItem({ className, ...props }: CarouselItemProps): import("react/jsx-runtime").JSX.Element;
|
|
456
|
+
/** Props for CarouselPrevious component (used in component implementation) */
|
|
457
|
+
type CarouselPreviousProps = {
|
|
458
|
+
/** Additional CSS classes for custom positioning and styling */
|
|
459
|
+
className?: string;
|
|
460
|
+
/** Button variant styling */
|
|
461
|
+
variant?: React.ComponentProps<typeof Button>["variant"];
|
|
462
|
+
/** Button size */
|
|
463
|
+
size?: React.ComponentProps<typeof Button>["size"];
|
|
464
|
+
} & Omit<React.ComponentProps<typeof Button>, "className" | "variant" | "size">;
|
|
254
465
|
/**
|
|
255
466
|
* Navigation button to go to the previous carousel slide
|
|
256
467
|
*
|
|
257
468
|
* Renders a previous navigation button that automatically handles disabled
|
|
258
|
-
* states when at the beginning of the carousel
|
|
259
|
-
* and vertical orientations with appropriate
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
* @param variant - Button variant (default: "outline")
|
|
263
|
-
* @param size - Button size (default: "icon")
|
|
469
|
+
* states when at the beginning of the carousel (unless loop is enabled).
|
|
470
|
+
* Supports both horizontal and vertical orientations with appropriate
|
|
471
|
+
* positioning and icon rotation. Integrates with the carousel context
|
|
472
|
+
* to provide seamless navigation.
|
|
264
473
|
*
|
|
265
474
|
* @example
|
|
266
475
|
* ```tsx
|
|
267
|
-
* // Basic usage
|
|
476
|
+
* // Basic usage with default styling
|
|
268
477
|
* <Carousel>
|
|
269
478
|
* <CarouselContent>
|
|
270
479
|
* <CarouselItem>Slide 1</CarouselItem>
|
|
@@ -277,9 +486,9 @@ declare function CarouselItem({ className, ...props }: React.ComponentProps<"div
|
|
|
277
486
|
*
|
|
278
487
|
* @example
|
|
279
488
|
* ```tsx
|
|
280
|
-
* // Custom
|
|
489
|
+
* // Custom positioned button
|
|
281
490
|
* <CarouselPrevious
|
|
282
|
-
* className="-left-8 bg-background shadow-md"
|
|
491
|
+
* className="-left-8 bg-background shadow-md hover:shadow-lg"
|
|
283
492
|
* variant="ghost"
|
|
284
493
|
* size="sm"
|
|
285
494
|
* />
|
|
@@ -287,41 +496,75 @@ declare function CarouselItem({ className, ...props }: React.ComponentProps<"div
|
|
|
287
496
|
*
|
|
288
497
|
* @example
|
|
289
498
|
* ```tsx
|
|
290
|
-
* // Vertical carousel
|
|
291
|
-
* <Carousel orientation="vertical">
|
|
499
|
+
* // Vertical carousel with rotated icons
|
|
500
|
+
* <Carousel orientation="vertical" className="h-[400px]">
|
|
292
501
|
* <CarouselContent>...</CarouselContent>
|
|
293
|
-
* <CarouselPrevious />
|
|
294
|
-
* <CarouselNext />
|
|
502
|
+
* <CarouselPrevious className="-top-8" />
|
|
503
|
+
* <CarouselNext className="-bottom-8" />
|
|
295
504
|
* </Carousel>
|
|
296
505
|
* ```
|
|
297
506
|
*
|
|
507
|
+
* @example
|
|
508
|
+
* ```tsx
|
|
509
|
+
* // Inside carousel bounds positioning
|
|
510
|
+
* <div className="relative">
|
|
511
|
+
* <Carousel>
|
|
512
|
+
* <CarouselContent>...</CarouselContent>
|
|
513
|
+
* <CarouselPrevious className="absolute left-4 top-1/2 -translate-y-1/2 z-10" />
|
|
514
|
+
* <CarouselNext className="absolute right-4 top-1/2 -translate-y-1/2 z-10" />
|
|
515
|
+
* </Carousel>
|
|
516
|
+
* </div>
|
|
517
|
+
* ```
|
|
518
|
+
*
|
|
519
|
+
* @example
|
|
520
|
+
* ```tsx
|
|
521
|
+
* // Custom button content and accessibility
|
|
522
|
+
* <CarouselPrevious
|
|
523
|
+
* variant="secondary"
|
|
524
|
+
* className="w-auto px-4"
|
|
525
|
+
* aria-label="Go to previous product"
|
|
526
|
+
* >
|
|
527
|
+
* <ArrowLeft className="w-4 h-4 mr-2" />
|
|
528
|
+
* Previous
|
|
529
|
+
* </CarouselPrevious>
|
|
530
|
+
* ```
|
|
531
|
+
*
|
|
298
532
|
* @accessibility
|
|
299
|
-
* - Keyboard
|
|
300
|
-
* - Screen
|
|
301
|
-
* - Automatically disabled when cannot scroll further
|
|
302
|
-
* - High contrast focus
|
|
303
|
-
* -
|
|
533
|
+
* - **Keyboard Navigation**: Accessible via Tab and Enter/Space
|
|
534
|
+
* - **Screen Reader**: Built-in "Previous slide" label with sr-only text
|
|
535
|
+
* - **Disabled State**: Automatically disabled when cannot scroll further
|
|
536
|
+
* - **Focus Indicators**: High contrast focus ring for keyboard navigation
|
|
537
|
+
* - **Motion**: Respects `prefers-reduced-motion` for animations
|
|
538
|
+
* - **Touch**: Large enough touch target (44px minimum) for mobile accessibility
|
|
539
|
+
* - **Icon**: ArrowLeft icon rotated appropriately for vertical orientation
|
|
304
540
|
*
|
|
305
541
|
* @see {@link Carousel} Main carousel component
|
|
306
542
|
* @see {@link CarouselNext} Next navigation button
|
|
307
543
|
* @see {@link Button} Underlying button component
|
|
308
544
|
* @since 1.0.0
|
|
309
545
|
*/
|
|
310
|
-
declare function CarouselPrevious({ className, variant, size, ...props }:
|
|
546
|
+
declare function CarouselPrevious({ className, variant, size, ...props }: CarouselPreviousProps): import("react/jsx-runtime").JSX.Element;
|
|
547
|
+
/** Props for CarouselNext component (used in component implementation) */
|
|
548
|
+
type CarouselNextProps = {
|
|
549
|
+
/** Additional CSS classes for custom positioning and styling */
|
|
550
|
+
className?: string;
|
|
551
|
+
/** Button variant styling */
|
|
552
|
+
variant?: React.ComponentProps<typeof Button>["variant"];
|
|
553
|
+
/** Button size */
|
|
554
|
+
size?: React.ComponentProps<typeof Button>["size"];
|
|
555
|
+
} & Omit<React.ComponentProps<typeof Button>, "className" | "variant" | "size">;
|
|
311
556
|
/**
|
|
312
557
|
* Navigation button to go to the next carousel slide
|
|
313
558
|
*
|
|
314
559
|
* Renders a next navigation button that automatically handles disabled
|
|
315
|
-
* states when at the end of the carousel
|
|
316
|
-
* and vertical orientations with appropriate
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
* @param variant - Button variant (default: "outline")
|
|
320
|
-
* @param size - Button size (default: "icon")
|
|
560
|
+
* states when at the end of the carousel (unless loop is enabled).
|
|
561
|
+
* Supports both horizontal and vertical orientations with appropriate
|
|
562
|
+
* positioning and icon rotation. Integrates with the carousel context
|
|
563
|
+
* to provide seamless navigation.
|
|
321
564
|
*
|
|
322
565
|
* @example
|
|
323
566
|
* ```tsx
|
|
324
|
-
* // Basic usage
|
|
567
|
+
* // Basic usage with default styling
|
|
325
568
|
* <Carousel>
|
|
326
569
|
* <CarouselContent>
|
|
327
570
|
* <CarouselItem>Slide 1</CarouselItem>
|
|
@@ -334,9 +577,9 @@ declare function CarouselPrevious({ className, variant, size, ...props }: React.
|
|
|
334
577
|
*
|
|
335
578
|
* @example
|
|
336
579
|
* ```tsx
|
|
337
|
-
* // Custom
|
|
580
|
+
* // Custom positioned button
|
|
338
581
|
* <CarouselNext
|
|
339
|
-
* className="-right-8 bg-background shadow-md"
|
|
582
|
+
* className="-right-8 bg-background shadow-md hover:shadow-lg"
|
|
340
583
|
* variant="ghost"
|
|
341
584
|
* size="sm"
|
|
342
585
|
* />
|
|
@@ -344,26 +587,53 @@ declare function CarouselPrevious({ className, variant, size, ...props }: React.
|
|
|
344
587
|
*
|
|
345
588
|
* @example
|
|
346
589
|
* ```tsx
|
|
347
|
-
* // Vertical carousel
|
|
348
|
-
* <Carousel orientation="vertical">
|
|
590
|
+
* // Vertical carousel with rotated icons
|
|
591
|
+
* <Carousel orientation="vertical" className="h-[400px]">
|
|
349
592
|
* <CarouselContent>...</CarouselContent>
|
|
350
|
-
* <CarouselPrevious />
|
|
351
|
-
* <CarouselNext />
|
|
593
|
+
* <CarouselPrevious className="-top-8" />
|
|
594
|
+
* <CarouselNext className="-bottom-8" />
|
|
352
595
|
* </Carousel>
|
|
353
596
|
* ```
|
|
354
597
|
*
|
|
598
|
+
* @example
|
|
599
|
+
* ```tsx
|
|
600
|
+
* // Inside carousel bounds positioning
|
|
601
|
+
* <div className="relative">
|
|
602
|
+
* <Carousel>
|
|
603
|
+
* <CarouselContent>...</CarouselContent>
|
|
604
|
+
* <CarouselPrevious className="absolute left-4 top-1/2 -translate-y-1/2 z-10" />
|
|
605
|
+
* <CarouselNext className="absolute right-4 top-1/2 -translate-y-1/2 z-10" />
|
|
606
|
+
* </Carousel>
|
|
607
|
+
* </div>
|
|
608
|
+
* ```
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```tsx
|
|
612
|
+
* // Custom button content and accessibility
|
|
613
|
+
* <CarouselNext
|
|
614
|
+
* variant="secondary"
|
|
615
|
+
* className="w-auto px-4"
|
|
616
|
+
* aria-label="Go to next product"
|
|
617
|
+
* >
|
|
618
|
+
* Next
|
|
619
|
+
* <ArrowRight className="w-4 h-4 ml-2" />
|
|
620
|
+
* </CarouselNext>
|
|
621
|
+
* ```
|
|
622
|
+
*
|
|
355
623
|
* @accessibility
|
|
356
|
-
* - Keyboard
|
|
357
|
-
* - Screen
|
|
358
|
-
* - Automatically disabled when cannot scroll further
|
|
359
|
-
* - High contrast focus
|
|
360
|
-
* -
|
|
624
|
+
* - **Keyboard Navigation**: Accessible via Tab and Enter/Space
|
|
625
|
+
* - **Screen Reader**: Built-in "Next slide" label with sr-only text
|
|
626
|
+
* - **Disabled State**: Automatically disabled when cannot scroll further
|
|
627
|
+
* - **Focus Indicators**: High contrast focus ring for keyboard navigation
|
|
628
|
+
* - **Motion**: Respects `prefers-reduced-motion` for animations
|
|
629
|
+
* - **Touch**: Large enough touch target (44px minimum) for mobile accessibility
|
|
630
|
+
* - **Icon**: ArrowRight icon rotated appropriately for vertical orientation
|
|
361
631
|
*
|
|
362
632
|
* @see {@link Carousel} Main carousel component
|
|
363
633
|
* @see {@link CarouselPrevious} Previous navigation button
|
|
364
634
|
* @see {@link Button} Underlying button component
|
|
365
635
|
* @since 1.0.0
|
|
366
636
|
*/
|
|
367
|
-
declare function CarouselNext({ className, variant, size, ...props }:
|
|
368
|
-
export { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, };
|
|
637
|
+
declare function CarouselNext({ className, variant, size, ...props }: CarouselNextProps): import("react/jsx-runtime").JSX.Element;
|
|
638
|
+
export { type CarouselApi, type CarouselProps, type CarouselContentProps, type CarouselItemProps, type CarouselPreviousProps, type CarouselNextProps, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, useCarousel, };
|
|
369
639
|
//# sourceMappingURL=carousel.d.ts.map
|