@agentuity/workbench 0.0.87 → 0.0.88
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/App.d.ts.map +1 -1
- package/dist/components/App.js +18 -2
- package/dist/components/App.js.map +1 -1
- package/dist/components/ai-elements/code-block.d.ts +3 -3
- package/dist/components/ai-elements/code-block.d.ts.map +1 -1
- package/dist/components/ai-elements/code-block.js +29 -7
- package/dist/components/ai-elements/code-block.js.map +1 -1
- package/dist/components/internal/Chat.d.ts +3 -2
- package/dist/components/internal/Chat.d.ts.map +1 -1
- package/dist/components/internal/Chat.js +23 -24
- package/dist/components/internal/Chat.js.map +1 -1
- package/dist/components/internal/MonacoJsonEditor.d.ts.map +1 -1
- package/dist/components/internal/MonacoJsonEditor.js +10 -53
- package/dist/components/internal/MonacoJsonEditor.js.map +1 -1
- package/dist/components/internal/Schema.d.ts +1 -2
- package/dist/components/internal/Schema.d.ts.map +1 -1
- package/dist/components/internal/Schema.js +2 -3
- package/dist/components/internal/Schema.js.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/{styles.css → standalone.css} +207 -1537
- package/package.json +29 -29
- package/src/{styles.css → base.css} +36 -52
- package/src/components/App.tsx +41 -5
- package/src/components/ai-elements/code-block.tsx +42 -10
- package/src/components/internal/Chat.tsx +112 -120
- package/src/components/internal/MonacoJsonEditor.tsx +15 -63
- package/src/components/internal/Schema.tsx +74 -86
- package/src/components/ui/input.tsx +2 -3
- package/src/index.ts +5 -14
- package/src/integration.css +15 -0
- package/src/standalone.css +25 -0
- package/dist/components/ConnectionStatus.d.ts +0 -7
- package/dist/components/ConnectionStatus.d.ts.map +0 -1
- package/dist/components/ConnectionStatus.js +0 -52
- package/dist/components/ConnectionStatus.js.map +0 -1
- package/dist/components/Inline.d.ts +0 -10
- package/dist/components/Inline.d.ts.map +0 -1
- package/dist/components/Inline.js +0 -11
- package/dist/components/Inline.js.map +0 -1
- package/dist/components/ai-elements/artifact.d.ts +0 -24
- package/dist/components/ai-elements/artifact.d.ts.map +0 -1
- package/dist/components/ai-elements/artifact.js +0 -21
- package/dist/components/ai-elements/artifact.js.map +0 -1
- package/dist/components/ai-elements/branch.d.ts +0 -21
- package/dist/components/ai-elements/branch.d.ts.map +0 -1
- package/dist/components/ai-elements/branch.js +0 -71
- package/dist/components/ai-elements/branch.js.map +0 -1
- package/dist/components/ai-elements/canvas.d.ts +0 -9
- package/dist/components/ai-elements/canvas.d.ts.map +0 -1
- package/dist/components/ai-elements/canvas.js +0 -6
- package/dist/components/ai-elements/canvas.js.map +0 -1
- package/dist/components/ai-elements/chain-of-thought.d.ts +0 -30
- package/dist/components/ai-elements/chain-of-thought.d.ts.map +0 -1
- package/dist/components/ai-elements/chain-of-thought.js +0 -52
- package/dist/components/ai-elements/chain-of-thought.js.map +0 -1
- package/dist/components/ai-elements/confirmation.d.ts +0 -27
- package/dist/components/ai-elements/confirmation.d.ts.map +0 -1
- package/dist/components/ai-elements/confirmation.js +0 -57
- package/dist/components/ai-elements/confirmation.js.map +0 -1
- package/dist/components/ai-elements/connection.d.ts +0 -3
- package/dist/components/ai-elements/connection.d.ts.map +0 -1
- package/dist/components/ai-elements/connection.js +0 -4
- package/dist/components/ai-elements/connection.js.map +0 -1
- package/dist/components/ai-elements/context.d.ts +0 -33
- package/dist/components/ai-elements/context.d.ts.map +0 -1
- package/dist/components/ai-elements/context.js +0 -167
- package/dist/components/ai-elements/context.js.map +0 -1
- package/dist/components/ai-elements/controls.d.ts +0 -5
- package/dist/components/ai-elements/controls.d.ts.map +0 -1
- package/dist/components/ai-elements/controls.js +0 -6
- package/dist/components/ai-elements/controls.js.map +0 -1
- package/dist/components/ai-elements/edge.d.ts +0 -6
- package/dist/components/ai-elements/edge.d.ts.map +0 -1
- package/dist/components/ai-elements/edge.js +0 -83
- package/dist/components/ai-elements/edge.js.map +0 -1
- package/dist/components/ai-elements/image.d.ts +0 -7
- package/dist/components/ai-elements/image.d.ts.map +0 -1
- package/dist/components/ai-elements/image.js +0 -4
- package/dist/components/ai-elements/image.js.map +0 -1
- package/dist/components/ai-elements/inline-citation.d.ts +0 -39
- package/dist/components/ai-elements/inline-citation.d.ts.map +0 -1
- package/dist/components/ai-elements/inline-citation.js +0 -62
- package/dist/components/ai-elements/inline-citation.js.map +0 -1
- package/dist/components/ai-elements/loader.d.ts +0 -6
- package/dist/components/ai-elements/loader.d.ts.map +0 -1
- package/dist/components/ai-elements/loader.js +0 -5
- package/dist/components/ai-elements/loader.js.map +0 -1
- package/dist/components/ai-elements/node.d.ts +0 -22
- package/dist/components/ai-elements/node.d.ts.map +0 -1
- package/dist/components/ai-elements/node.js +0 -12
- package/dist/components/ai-elements/node.js.map +0 -1
- package/dist/components/ai-elements/open-in-chat.d.ts +0 -29
- package/dist/components/ai-elements/open-in-chat.d.ts.map +0 -1
- package/dist/components/ai-elements/open-in-chat.js +0 -97
- package/dist/components/ai-elements/open-in-chat.js.map +0 -1
- package/dist/components/ai-elements/panel.d.ts +0 -6
- package/dist/components/ai-elements/panel.d.ts.map +0 -1
- package/dist/components/ai-elements/panel.js +0 -5
- package/dist/components/ai-elements/panel.js.map +0 -1
- package/dist/components/ai-elements/plan.d.ts +0 -26
- package/dist/components/ai-elements/plan.d.ts.map +0 -1
- package/dist/components/ai-elements/plan.js +0 -32
- package/dist/components/ai-elements/plan.js.map +0 -1
- package/dist/components/ai-elements/queue.d.ts +0 -62
- package/dist/components/ai-elements/queue.d.ts.map +0 -1
- package/dist/components/ai-elements/queue.js +0 -25
- package/dist/components/ai-elements/queue.js.map +0 -1
- package/dist/components/ai-elements/reasoning.d.ts +0 -17
- package/dist/components/ai-elements/reasoning.d.ts.map +0 -1
- package/dist/components/ai-elements/reasoning.js +0 -77
- package/dist/components/ai-elements/reasoning.js.map +0 -1
- package/dist/components/ai-elements/response.d.ts +0 -6
- package/dist/components/ai-elements/response.d.ts.map +0 -1
- package/dist/components/ai-elements/response.js +0 -8
- package/dist/components/ai-elements/response.js.map +0 -1
- package/dist/components/ai-elements/sources.d.ts +0 -13
- package/dist/components/ai-elements/sources.d.ts.map +0 -1
- package/dist/components/ai-elements/sources.js +0 -10
- package/dist/components/ai-elements/sources.js.map +0 -1
- package/dist/components/ai-elements/suggestion.d.ts +0 -11
- package/dist/components/ai-elements/suggestion.d.ts.map +0 -1
- package/dist/components/ai-elements/suggestion.js +0 -13
- package/dist/components/ai-elements/suggestion.js.map +0 -1
- package/dist/components/ai-elements/task.d.ts +0 -15
- package/dist/components/ai-elements/task.d.ts.map +0 -1
- package/dist/components/ai-elements/task.js +0 -11
- package/dist/components/ai-elements/task.js.map +0 -1
- package/dist/components/ai-elements/tool.d.ts +0 -24
- package/dist/components/ai-elements/tool.d.ts.map +0 -1
- package/dist/components/ai-elements/tool.js +0 -47
- package/dist/components/ai-elements/tool.js.map +0 -1
- package/dist/components/ai-elements/toolbar.d.ts +0 -6
- package/dist/components/ai-elements/toolbar.d.ts.map +0 -1
- package/dist/components/ai-elements/toolbar.js +0 -5
- package/dist/components/ai-elements/toolbar.js.map +0 -1
- package/dist/components/ai-elements/web-preview.d.ts +0 -35
- package/dist/components/ai-elements/web-preview.d.ts.map +0 -1
- package/dist/components/ai-elements/web-preview.js +0 -63
- package/dist/components/ai-elements/web-preview.js.map +0 -1
- package/dist/components/ui/alert.d.ts +0 -10
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/alert.js +0 -25
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/badge.d.ts +0 -10
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/badge.js +0 -23
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/card.d.ts +0 -10
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/card.js +0 -25
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/carousel.d.ts +0 -20
- package/dist/components/ui/carousel.d.ts.map +0 -1
- package/dist/components/ui/carousel.js +0 -92
- package/dist/components/ui/carousel.js.map +0 -1
- package/dist/components/ui/checkbox.d.ts +0 -5
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/checkbox.js +0 -9
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/collapsible.d.ts +0 -6
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/collapsible.js +0 -14
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/field.d.ts +0 -25
- package/dist/components/ui/field.d.ts.map +0 -1
- package/dist/components/ui/field.js +0 -74
- package/dist/components/ui/field.js.map +0 -1
- package/dist/components/ui/form.d.ts +0 -25
- package/dist/components/ui/form.d.ts.map +0 -1
- package/dist/components/ui/form.js +0 -58
- package/dist/components/ui/form.js.map +0 -1
- package/dist/components/ui/label.d.ts +0 -5
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/label.js +0 -9
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/progress.d.ts +0 -5
- package/dist/components/ui/progress.d.ts.map +0 -1
- package/dist/components/ui/progress.js +0 -9
- package/dist/components/ui/progress.js.map +0 -1
- package/dist/components/ui/separator.d.ts +0 -5
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/separator.js +0 -9
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/switch.d.ts +0 -5
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/switch.js +0 -8
- package/dist/components/ui/switch.js.map +0 -1
- package/dist/components/ui/tabs.d.ts +0 -8
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js +0 -17
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/toggle.d.ts +0 -10
- package/dist/components/ui/toggle.d.ts.map +0 -1
- package/dist/components/ui/toggle.js +0 -26
- package/dist/components/ui/toggle.js.map +0 -1
- package/dist/components.d.ts +0 -12
- package/dist/components.d.ts.map +0 -1
- package/dist/components.js +0 -13
- package/dist/components.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -7
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -5
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useWorkbenchSchemas.d.ts +0 -56
- package/dist/hooks/useWorkbenchSchemas.d.ts.map +0 -1
- package/dist/hooks/useWorkbenchSchemas.js +0 -63
- package/dist/hooks/useWorkbenchSchemas.js.map +0 -1
- package/src/components/ConnectionStatus.tsx +0 -67
- package/src/components/Inline.tsx +0 -16
- package/src/components/ai-elements/artifact.tsx +0 -118
- package/src/components/ai-elements/branch.tsx +0 -187
- package/src/components/ai-elements/canvas.tsx +0 -24
- package/src/components/ai-elements/chain-of-thought.tsx +0 -198
- package/src/components/ai-elements/confirmation.tsx +0 -119
- package/src/components/ai-elements/connection.tsx +0 -16
- package/src/components/ai-elements/context.tsx +0 -357
- package/src/components/ai-elements/controls.tsx +0 -18
- package/src/components/ai-elements/edge.tsx +0 -131
- package/src/components/ai-elements/image.tsx +0 -16
- package/src/components/ai-elements/inline-citation.tsx +0 -246
- package/src/components/ai-elements/loader.tsx +0 -88
- package/src/components/ai-elements/node.tsx +0 -66
- package/src/components/ai-elements/open-in-chat.tsx +0 -333
- package/src/components/ai-elements/panel.tsx +0 -12
- package/src/components/ai-elements/plan.tsx +0 -123
- package/src/components/ai-elements/queue.tsx +0 -231
- package/src/components/ai-elements/reasoning.tsx +0 -163
- package/src/components/ai-elements/response.tsx +0 -19
- package/src/components/ai-elements/sources.tsx +0 -53
- package/src/components/ai-elements/suggestion.tsx +0 -47
- package/src/components/ai-elements/task.tsx +0 -64
- package/src/components/ai-elements/tool.tsx +0 -136
- package/src/components/ai-elements/toolbar.tsx +0 -13
- package/src/components/ai-elements/web-preview.tsx +0 -238
- package/src/components/ui/alert.tsx +0 -60
- package/src/components/ui/badge.tsx +0 -40
- package/src/components/ui/card.tsx +0 -41
- package/src/components/ui/carousel.tsx +0 -234
- package/src/components/ui/checkbox.tsx +0 -27
- package/src/components/ui/collapsible.tsx +0 -21
- package/src/components/ui/field.tsx +0 -234
- package/src/components/ui/form.tsx +0 -154
- package/src/components/ui/label.tsx +0 -21
- package/src/components/ui/progress.tsx +0 -28
- package/src/components/ui/separator.tsx +0 -28
- package/src/components/ui/switch.tsx +0 -26
- package/src/components/ui/tabs.tsx +0 -52
- package/src/components/ui/toggle.tsx +0 -44
- package/src/components.tsx +0 -29
- package/src/hooks/index.ts +0 -20
- package/src/hooks/useWorkbenchSchemas.ts +0 -69
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';
|
|
5
|
-
import { ArrowLeft, ArrowRight } from 'lucide-react';
|
|
6
|
-
|
|
7
|
-
import { cn } from '../../lib/utils';
|
|
8
|
-
import { Button } from './button';
|
|
9
|
-
|
|
10
|
-
type CarouselApi = UseEmblaCarouselType[1];
|
|
11
|
-
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
12
|
-
type CarouselOptions = UseCarouselParameters[0];
|
|
13
|
-
type CarouselPlugin = UseCarouselParameters[1];
|
|
14
|
-
|
|
15
|
-
type CarouselProps = {
|
|
16
|
-
opts?: CarouselOptions;
|
|
17
|
-
plugins?: CarouselPlugin;
|
|
18
|
-
orientation?: 'horizontal' | 'vertical';
|
|
19
|
-
setApi?: (api: CarouselApi) => void;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
type CarouselContextProps = {
|
|
23
|
-
carouselRef: ReturnType<typeof useEmblaCarousel>[0];
|
|
24
|
-
api: ReturnType<typeof useEmblaCarousel>[1];
|
|
25
|
-
scrollPrev: () => void;
|
|
26
|
-
scrollNext: () => void;
|
|
27
|
-
canScrollPrev: boolean;
|
|
28
|
-
canScrollNext: boolean;
|
|
29
|
-
} & CarouselProps;
|
|
30
|
-
|
|
31
|
-
const CarouselContext = React.createContext<CarouselContextProps | null>(null);
|
|
32
|
-
|
|
33
|
-
function useCarousel() {
|
|
34
|
-
const context = React.useContext(CarouselContext);
|
|
35
|
-
|
|
36
|
-
if (!context) {
|
|
37
|
-
throw new Error('useCarousel must be used within a <Carousel />');
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return context;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function Carousel({
|
|
44
|
-
orientation = 'horizontal',
|
|
45
|
-
opts,
|
|
46
|
-
setApi,
|
|
47
|
-
plugins,
|
|
48
|
-
className,
|
|
49
|
-
children,
|
|
50
|
-
...props
|
|
51
|
-
}: React.ComponentProps<'div'> & CarouselProps) {
|
|
52
|
-
const [carouselRef, api] = useEmblaCarousel(
|
|
53
|
-
{
|
|
54
|
-
...opts,
|
|
55
|
-
axis: orientation === 'horizontal' ? 'x' : 'y',
|
|
56
|
-
},
|
|
57
|
-
plugins
|
|
58
|
-
);
|
|
59
|
-
const [canScrollPrev, setCanScrollPrev] = React.useState(false);
|
|
60
|
-
const [canScrollNext, setCanScrollNext] = React.useState(false);
|
|
61
|
-
|
|
62
|
-
const onSelect = React.useCallback((api: CarouselApi) => {
|
|
63
|
-
if (!api) return;
|
|
64
|
-
setCanScrollPrev(api.canScrollPrev());
|
|
65
|
-
setCanScrollNext(api.canScrollNext());
|
|
66
|
-
}, []);
|
|
67
|
-
|
|
68
|
-
const scrollPrev = React.useCallback(() => {
|
|
69
|
-
api?.scrollPrev();
|
|
70
|
-
}, [api]);
|
|
71
|
-
|
|
72
|
-
const scrollNext = React.useCallback(() => {
|
|
73
|
-
api?.scrollNext();
|
|
74
|
-
}, [api]);
|
|
75
|
-
|
|
76
|
-
const handleKeyDown = React.useCallback(
|
|
77
|
-
(event: React.KeyboardEvent<HTMLDivElement>) => {
|
|
78
|
-
if (event.key === 'ArrowLeft') {
|
|
79
|
-
event.preventDefault();
|
|
80
|
-
scrollPrev();
|
|
81
|
-
} else if (event.key === 'ArrowRight') {
|
|
82
|
-
event.preventDefault();
|
|
83
|
-
scrollNext();
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
[scrollPrev, scrollNext]
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
React.useEffect(() => {
|
|
90
|
-
if (!api || !setApi) return;
|
|
91
|
-
setApi(api);
|
|
92
|
-
}, [api, setApi]);
|
|
93
|
-
|
|
94
|
-
React.useEffect(() => {
|
|
95
|
-
if (!api) return;
|
|
96
|
-
onSelect(api);
|
|
97
|
-
api.on('reInit', onSelect);
|
|
98
|
-
api.on('select', onSelect);
|
|
99
|
-
|
|
100
|
-
return () => {
|
|
101
|
-
api?.off('select', onSelect);
|
|
102
|
-
};
|
|
103
|
-
}, [api, onSelect]);
|
|
104
|
-
|
|
105
|
-
return (
|
|
106
|
-
<CarouselContext.Provider
|
|
107
|
-
value={{
|
|
108
|
-
carouselRef,
|
|
109
|
-
api: api,
|
|
110
|
-
opts,
|
|
111
|
-
orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),
|
|
112
|
-
scrollPrev,
|
|
113
|
-
scrollNext,
|
|
114
|
-
canScrollPrev,
|
|
115
|
-
canScrollNext,
|
|
116
|
-
}}
|
|
117
|
-
>
|
|
118
|
-
<div
|
|
119
|
-
onKeyDownCapture={handleKeyDown}
|
|
120
|
-
className={cn('relative', className)}
|
|
121
|
-
role="region"
|
|
122
|
-
aria-roledescription="carousel"
|
|
123
|
-
data-slot="carousel"
|
|
124
|
-
{...props}
|
|
125
|
-
>
|
|
126
|
-
{children}
|
|
127
|
-
</div>
|
|
128
|
-
</CarouselContext.Provider>
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function CarouselContent({ className, ...props }: React.ComponentProps<'div'>) {
|
|
133
|
-
const { carouselRef, orientation } = useCarousel();
|
|
134
|
-
|
|
135
|
-
return (
|
|
136
|
-
<div ref={carouselRef} className="overflow-hidden" data-slot="carousel-content">
|
|
137
|
-
<div
|
|
138
|
-
className={cn(
|
|
139
|
-
'flex',
|
|
140
|
-
orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',
|
|
141
|
-
className
|
|
142
|
-
)}
|
|
143
|
-
{...props}
|
|
144
|
-
/>
|
|
145
|
-
</div>
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
function CarouselItem({ className, ...props }: React.ComponentProps<'div'>) {
|
|
150
|
-
const { orientation } = useCarousel();
|
|
151
|
-
|
|
152
|
-
return (
|
|
153
|
-
<div
|
|
154
|
-
role="group"
|
|
155
|
-
aria-roledescription="slide"
|
|
156
|
-
data-slot="carousel-item"
|
|
157
|
-
className={cn(
|
|
158
|
-
'min-w-0 shrink-0 grow-0 basis-full',
|
|
159
|
-
orientation === 'horizontal' ? 'pl-4' : 'pt-4',
|
|
160
|
-
className
|
|
161
|
-
)}
|
|
162
|
-
{...props}
|
|
163
|
-
/>
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
function CarouselPrevious({
|
|
168
|
-
className,
|
|
169
|
-
variant = 'outline',
|
|
170
|
-
size = 'icon',
|
|
171
|
-
...props
|
|
172
|
-
}: React.ComponentProps<typeof Button>) {
|
|
173
|
-
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
174
|
-
|
|
175
|
-
return (
|
|
176
|
-
<Button
|
|
177
|
-
data-slot="carousel-previous"
|
|
178
|
-
variant={variant}
|
|
179
|
-
size={size}
|
|
180
|
-
className={cn(
|
|
181
|
-
'absolute size-8 rounded-full',
|
|
182
|
-
orientation === 'horizontal'
|
|
183
|
-
? 'top-1/2 -left-12 -translate-y-1/2'
|
|
184
|
-
: '-top-12 left-1/2 -translate-x-1/2 rotate-90',
|
|
185
|
-
className
|
|
186
|
-
)}
|
|
187
|
-
disabled={!canScrollPrev}
|
|
188
|
-
onClick={scrollPrev}
|
|
189
|
-
{...props}
|
|
190
|
-
>
|
|
191
|
-
<ArrowLeft />
|
|
192
|
-
<span className="sr-only">Previous slide</span>
|
|
193
|
-
</Button>
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function CarouselNext({
|
|
198
|
-
className,
|
|
199
|
-
variant = 'outline',
|
|
200
|
-
size = 'icon',
|
|
201
|
-
...props
|
|
202
|
-
}: React.ComponentProps<typeof Button>) {
|
|
203
|
-
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
204
|
-
|
|
205
|
-
return (
|
|
206
|
-
<Button
|
|
207
|
-
data-slot="carousel-next"
|
|
208
|
-
variant={variant}
|
|
209
|
-
size={size}
|
|
210
|
-
className={cn(
|
|
211
|
-
'absolute size-8 rounded-full',
|
|
212
|
-
orientation === 'horizontal'
|
|
213
|
-
? 'top-1/2 -right-12 -translate-y-1/2'
|
|
214
|
-
: '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',
|
|
215
|
-
className
|
|
216
|
-
)}
|
|
217
|
-
disabled={!canScrollNext}
|
|
218
|
-
onClick={scrollNext}
|
|
219
|
-
{...props}
|
|
220
|
-
>
|
|
221
|
-
<ArrowRight />
|
|
222
|
-
<span className="sr-only">Next slide</span>
|
|
223
|
-
</Button>
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
export {
|
|
228
|
-
type CarouselApi,
|
|
229
|
-
Carousel,
|
|
230
|
-
CarouselContent,
|
|
231
|
-
CarouselItem,
|
|
232
|
-
CarouselPrevious,
|
|
233
|
-
CarouselNext,
|
|
234
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
3
|
-
import { CheckIcon } from 'lucide-react';
|
|
4
|
-
|
|
5
|
-
import { cn } from '../../lib/utils';
|
|
6
|
-
|
|
7
|
-
function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {
|
|
8
|
-
return (
|
|
9
|
-
<CheckboxPrimitive.Root
|
|
10
|
-
data-slot="checkbox"
|
|
11
|
-
className={cn(
|
|
12
|
-
'peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
|
|
13
|
-
className
|
|
14
|
-
)}
|
|
15
|
-
{...props}
|
|
16
|
-
>
|
|
17
|
-
<CheckboxPrimitive.Indicator
|
|
18
|
-
data-slot="checkbox-indicator"
|
|
19
|
-
className="grid place-content-center text-current transition-none"
|
|
20
|
-
>
|
|
21
|
-
<CheckIcon className="size-3.5" />
|
|
22
|
-
</CheckboxPrimitive.Indicator>
|
|
23
|
-
</CheckboxPrimitive.Root>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export { Checkbox };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
4
|
-
|
|
5
|
-
function Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
|
|
6
|
-
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function CollapsibleTrigger({
|
|
10
|
-
...props
|
|
11
|
-
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
|
|
12
|
-
return <CollapsiblePrimitive.CollapsibleTrigger data-slot="collapsible-trigger" {...props} />;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function CollapsibleContent({
|
|
16
|
-
...props
|
|
17
|
-
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
|
|
18
|
-
return <CollapsiblePrimitive.CollapsibleContent data-slot="collapsible-content" {...props} />;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { Collapsible, CollapsibleTrigger, CollapsibleContent };
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
import { cva, type VariantProps } from 'class-variance-authority';
|
|
3
|
-
|
|
4
|
-
import { cn } from '../../lib/utils';
|
|
5
|
-
import { Label } from './label';
|
|
6
|
-
import { Separator } from './separator';
|
|
7
|
-
|
|
8
|
-
function FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {
|
|
9
|
-
return (
|
|
10
|
-
<fieldset
|
|
11
|
-
data-slot="field-set"
|
|
12
|
-
className={cn(
|
|
13
|
-
'flex flex-col gap-6',
|
|
14
|
-
'has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3',
|
|
15
|
-
className
|
|
16
|
-
)}
|
|
17
|
-
{...props}
|
|
18
|
-
/>
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function FieldLegend({
|
|
23
|
-
className,
|
|
24
|
-
variant = 'legend',
|
|
25
|
-
...props
|
|
26
|
-
}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {
|
|
27
|
-
return (
|
|
28
|
-
<legend
|
|
29
|
-
data-slot="field-legend"
|
|
30
|
-
data-variant={variant}
|
|
31
|
-
className={cn(
|
|
32
|
-
'mb-3 font-medium',
|
|
33
|
-
'data-[variant=legend]:text-base',
|
|
34
|
-
'data-[variant=label]:text-sm',
|
|
35
|
-
className
|
|
36
|
-
)}
|
|
37
|
-
{...props}
|
|
38
|
-
/>
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {
|
|
43
|
-
return (
|
|
44
|
-
<div
|
|
45
|
-
data-slot="field-group"
|
|
46
|
-
className={cn(
|
|
47
|
-
'group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4',
|
|
48
|
-
className
|
|
49
|
-
)}
|
|
50
|
-
{...props}
|
|
51
|
-
/>
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const fieldVariants = cva('group/field flex w-full gap-3 data-[invalid=true]:text-destructive', {
|
|
56
|
-
variants: {
|
|
57
|
-
orientation: {
|
|
58
|
-
vertical: ['flex-col [&>*]:w-full [&>.sr-only]:w-auto'],
|
|
59
|
-
horizontal: [
|
|
60
|
-
'flex-row items-center',
|
|
61
|
-
'[&>[data-slot=field-label]]:flex-auto',
|
|
62
|
-
'has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',
|
|
63
|
-
],
|
|
64
|
-
responsive: [
|
|
65
|
-
'flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto',
|
|
66
|
-
'@md/field-group:[&>[data-slot=field-label]]:flex-auto',
|
|
67
|
-
'@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
defaultVariants: {
|
|
72
|
-
orientation: 'vertical',
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
function Field({
|
|
77
|
-
className,
|
|
78
|
-
orientation = 'vertical',
|
|
79
|
-
...props
|
|
80
|
-
}: React.ComponentProps<'div'> & VariantProps<typeof fieldVariants>) {
|
|
81
|
-
return (
|
|
82
|
-
<div
|
|
83
|
-
role="group"
|
|
84
|
-
data-slot="field"
|
|
85
|
-
data-orientation={orientation}
|
|
86
|
-
className={cn(fieldVariants({ orientation }), className)}
|
|
87
|
-
{...props}
|
|
88
|
-
/>
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function FieldContent({ className, ...props }: React.ComponentProps<'div'>) {
|
|
93
|
-
return (
|
|
94
|
-
<div
|
|
95
|
-
data-slot="field-content"
|
|
96
|
-
className={cn('group/field-content flex flex-1 flex-col gap-1.5 leading-snug', className)}
|
|
97
|
-
{...props}
|
|
98
|
-
/>
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {
|
|
103
|
-
return (
|
|
104
|
-
<Label
|
|
105
|
-
data-slot="field-label"
|
|
106
|
-
className={cn(
|
|
107
|
-
'group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50',
|
|
108
|
-
'has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4',
|
|
109
|
-
'has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10',
|
|
110
|
-
className
|
|
111
|
-
)}
|
|
112
|
-
{...props}
|
|
113
|
-
/>
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {
|
|
118
|
-
return (
|
|
119
|
-
<div
|
|
120
|
-
data-slot="field-label"
|
|
121
|
-
className={cn(
|
|
122
|
-
'flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50',
|
|
123
|
-
className
|
|
124
|
-
)}
|
|
125
|
-
{...props}
|
|
126
|
-
/>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
function FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {
|
|
131
|
-
return (
|
|
132
|
-
<p
|
|
133
|
-
data-slot="field-description"
|
|
134
|
-
className={cn(
|
|
135
|
-
'text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance',
|
|
136
|
-
'last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5',
|
|
137
|
-
'[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',
|
|
138
|
-
className
|
|
139
|
-
)}
|
|
140
|
-
{...props}
|
|
141
|
-
/>
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function FieldSeparator({
|
|
146
|
-
children,
|
|
147
|
-
className,
|
|
148
|
-
...props
|
|
149
|
-
}: React.ComponentProps<'div'> & {
|
|
150
|
-
children?: React.ReactNode;
|
|
151
|
-
}) {
|
|
152
|
-
return (
|
|
153
|
-
<div
|
|
154
|
-
data-slot="field-separator"
|
|
155
|
-
data-content={!!children}
|
|
156
|
-
className={cn(
|
|
157
|
-
'relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2',
|
|
158
|
-
className
|
|
159
|
-
)}
|
|
160
|
-
{...props}
|
|
161
|
-
>
|
|
162
|
-
<Separator className="absolute inset-0 top-1/2" />
|
|
163
|
-
{children && (
|
|
164
|
-
<span
|
|
165
|
-
className="bg-background text-muted-foreground relative mx-auto block w-fit px-2"
|
|
166
|
-
data-slot="field-separator-content"
|
|
167
|
-
>
|
|
168
|
-
{children}
|
|
169
|
-
</span>
|
|
170
|
-
)}
|
|
171
|
-
</div>
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function FieldError({
|
|
176
|
-
className,
|
|
177
|
-
children,
|
|
178
|
-
errors,
|
|
179
|
-
...props
|
|
180
|
-
}: React.ComponentProps<'div'> & {
|
|
181
|
-
errors?: Array<{ message?: string } | undefined>;
|
|
182
|
-
}) {
|
|
183
|
-
const content = useMemo(() => {
|
|
184
|
-
if (children) {
|
|
185
|
-
return children;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
if (!errors?.length) {
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
|
|
193
|
-
|
|
194
|
-
if (uniqueErrors?.length == 1) {
|
|
195
|
-
return uniqueErrors[0]?.message;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return (
|
|
199
|
-
<ul className="ml-4 flex list-disc flex-col gap-1">
|
|
200
|
-
{uniqueErrors.map(
|
|
201
|
-
(error, index) => error?.message && <li key={index}>{error.message}</li>
|
|
202
|
-
)}
|
|
203
|
-
</ul>
|
|
204
|
-
);
|
|
205
|
-
}, [children, errors]);
|
|
206
|
-
|
|
207
|
-
if (!content) {
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return (
|
|
212
|
-
<div
|
|
213
|
-
role="alert"
|
|
214
|
-
data-slot="field-error"
|
|
215
|
-
className={cn('text-destructive text-sm font-normal', className)}
|
|
216
|
-
{...props}
|
|
217
|
-
>
|
|
218
|
-
{content}
|
|
219
|
-
</div>
|
|
220
|
-
);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export {
|
|
224
|
-
Field,
|
|
225
|
-
FieldLabel,
|
|
226
|
-
FieldDescription,
|
|
227
|
-
FieldError,
|
|
228
|
-
FieldGroup,
|
|
229
|
-
FieldLegend,
|
|
230
|
-
FieldSeparator,
|
|
231
|
-
FieldSet,
|
|
232
|
-
FieldContent,
|
|
233
|
-
FieldTitle,
|
|
234
|
-
};
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
5
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
6
|
-
import {
|
|
7
|
-
Controller,
|
|
8
|
-
FormProvider,
|
|
9
|
-
useFormContext,
|
|
10
|
-
useFormState,
|
|
11
|
-
type ControllerProps,
|
|
12
|
-
type FieldPath,
|
|
13
|
-
type FieldValues,
|
|
14
|
-
} from 'react-hook-form';
|
|
15
|
-
|
|
16
|
-
import { cn } from '../../lib/utils';
|
|
17
|
-
import { Label } from './label';
|
|
18
|
-
|
|
19
|
-
const Form = FormProvider;
|
|
20
|
-
|
|
21
|
-
type FormFieldContextValue<
|
|
22
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
23
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
24
|
-
> = {
|
|
25
|
-
name: TName;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);
|
|
29
|
-
|
|
30
|
-
const FormField = <
|
|
31
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
32
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
33
|
-
>({
|
|
34
|
-
...props
|
|
35
|
-
}: ControllerProps<TFieldValues, TName>) => {
|
|
36
|
-
return (
|
|
37
|
-
<FormFieldContext.Provider value={{ name: props.name }}>
|
|
38
|
-
<Controller {...props} />
|
|
39
|
-
</FormFieldContext.Provider>
|
|
40
|
-
);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const useFormField = () => {
|
|
44
|
-
const fieldContext = React.useContext(FormFieldContext);
|
|
45
|
-
const itemContext = React.useContext(FormItemContext);
|
|
46
|
-
const { getFieldState } = useFormContext();
|
|
47
|
-
const formState = useFormState({ name: fieldContext.name });
|
|
48
|
-
const fieldState = getFieldState(fieldContext.name, formState);
|
|
49
|
-
|
|
50
|
-
if (!fieldContext) {
|
|
51
|
-
throw new Error('useFormField should be used within <FormField>');
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const { id } = itemContext;
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
id,
|
|
58
|
-
name: fieldContext.name,
|
|
59
|
-
formItemId: `${id}-form-item`,
|
|
60
|
-
formDescriptionId: `${id}-form-item-description`,
|
|
61
|
-
formMessageId: `${id}-form-item-message`,
|
|
62
|
-
...fieldState,
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
type FormItemContextValue = {
|
|
67
|
-
id: string;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);
|
|
71
|
-
|
|
72
|
-
function FormItem({ className, ...props }: React.ComponentProps<'div'>) {
|
|
73
|
-
const id = React.useId();
|
|
74
|
-
|
|
75
|
-
return (
|
|
76
|
-
<FormItemContext.Provider value={{ id }}>
|
|
77
|
-
<div data-slot="form-item" className={cn('grid gap-2', className)} {...props} />
|
|
78
|
-
</FormItemContext.Provider>
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {
|
|
83
|
-
const { error, formItemId } = useFormField();
|
|
84
|
-
|
|
85
|
-
return (
|
|
86
|
-
<Label
|
|
87
|
-
data-slot="form-label"
|
|
88
|
-
data-error={!!error}
|
|
89
|
-
className={cn('data-[error=true]:text-destructive', className)}
|
|
90
|
-
htmlFor={formItemId}
|
|
91
|
-
{...props}
|
|
92
|
-
/>
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {
|
|
97
|
-
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
98
|
-
|
|
99
|
-
return (
|
|
100
|
-
<Slot
|
|
101
|
-
data-slot="form-control"
|
|
102
|
-
id={formItemId}
|
|
103
|
-
aria-describedby={
|
|
104
|
-
!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`
|
|
105
|
-
}
|
|
106
|
-
aria-invalid={!!error}
|
|
107
|
-
{...props}
|
|
108
|
-
/>
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function FormDescription({ className, ...props }: React.ComponentProps<'p'>) {
|
|
113
|
-
const { formDescriptionId } = useFormField();
|
|
114
|
-
|
|
115
|
-
return (
|
|
116
|
-
<p
|
|
117
|
-
data-slot="form-description"
|
|
118
|
-
id={formDescriptionId}
|
|
119
|
-
className={cn('text-muted-foreground text-sm', className)}
|
|
120
|
-
{...props}
|
|
121
|
-
/>
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function FormMessage({ className, ...props }: React.ComponentProps<'p'>) {
|
|
126
|
-
const { error, formMessageId } = useFormField();
|
|
127
|
-
const body = error ? String(error?.message ?? '') : props.children;
|
|
128
|
-
|
|
129
|
-
if (!body) {
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return (
|
|
134
|
-
<p
|
|
135
|
-
data-slot="form-message"
|
|
136
|
-
id={formMessageId}
|
|
137
|
-
className={cn('text-destructive text-sm', className)}
|
|
138
|
-
{...props}
|
|
139
|
-
>
|
|
140
|
-
{body}
|
|
141
|
-
</p>
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export {
|
|
146
|
-
useFormField,
|
|
147
|
-
Form,
|
|
148
|
-
FormItem,
|
|
149
|
-
FormLabel,
|
|
150
|
-
FormControl,
|
|
151
|
-
FormDescription,
|
|
152
|
-
FormMessage,
|
|
153
|
-
FormField,
|
|
154
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
5
|
-
|
|
6
|
-
import { cn } from '../../lib/utils';
|
|
7
|
-
|
|
8
|
-
function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {
|
|
9
|
-
return (
|
|
10
|
-
<LabelPrimitive.Root
|
|
11
|
-
data-slot="label"
|
|
12
|
-
className={cn(
|
|
13
|
-
'text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
|
|
14
|
-
className
|
|
15
|
-
)}
|
|
16
|
-
{...props}
|
|
17
|
-
/>
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { Label };
|