@websolutespa/ask-ui 1.0.2 → 1.0.4
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/accordion.d.mts +25 -0
- package/dist/components/accordion.mjs +55 -0
- package/dist/components/ai-elements/attachments.d.mts +94 -0
- package/dist/components/ai-elements/attachments.mjs +174 -0
- package/dist/components/ai-elements/conversation.d.mts +51 -0
- package/dist/components/ai-elements/conversation.mjs +85 -0
- package/dist/components/ai-elements/message.d.mts +89 -0
- package/dist/components/ai-elements/message.mjs +175 -0
- package/dist/components/ai-elements/prompt-input.d.mts +277 -0
- package/dist/components/ai-elements/prompt-input.mjs +703 -0
- package/dist/components/ai-elements/speech-input.d.mts +64 -0
- package/dist/components/ai-elements/speech-input.mjs +153 -0
- package/dist/components/alert-dialog.d.mts +60 -0
- package/dist/components/alert-dialog.mjs +101 -0
- package/dist/components/alert.d.mts +28 -0
- package/dist/components/alert.mjs +43 -0
- package/dist/components/aspect-ratio.d.mts +9 -0
- package/dist/components/aspect-ratio.mjs +12 -0
- package/dist/components/avatar.d.mts +34 -0
- package/dist/components/avatar.mjs +51 -0
- package/dist/components/badge.d.mts +19 -0
- package/dist/components/badge.mjs +27 -0
- package/dist/components/breadcrumb.d.mts +38 -0
- package/dist/components/breadcrumb.mjs +70 -0
- package/dist/components/button-group.d.mts +28 -0
- package/dist/components/button-group.mjs +38 -0
- package/dist/components/button.d.mts +21 -0
- package/dist/components/button.mjs +47 -0
- package/dist/components/calendar.d.mts +30 -0
- package/dist/components/calendar.mjs +109 -0
- package/dist/components/card.d.mts +37 -0
- package/dist/components/card.mjs +56 -0
- package/dist/components/carousel.d.mts +56 -0
- package/dist/components/carousel.mjs +132 -0
- package/dist/components/chart.d.mts +78 -0
- package/dist/components/chart.mjs +146 -0
- package/dist/components/checkbox.d.mts +11 -0
- package/dist/components/checkbox.mjs +21 -0
- package/dist/components/collapsible.d.mts +15 -0
- package/dist/components/collapsible.mjs +24 -0
- package/dist/components/combobox.d.mts +81 -0
- package/dist/components/combobox.mjs +163 -0
- package/dist/components/command.d.mts +54 -0
- package/dist/components/command.mjs +88 -0
- package/dist/components/context-menu.d.mts +85 -0
- package/dist/components/context-menu.mjs +125 -0
- package/dist/components/dialog.d.mts +51 -0
- package/dist/components/dialog.mjs +96 -0
- package/dist/components/direction.d.mts +15 -0
- package/dist/components/direction.mjs +14 -0
- package/dist/components/drawer.d.mts +47 -0
- package/dist/components/drawer.mjs +79 -0
- package/dist/components/dropdown-menu.d.mts +87 -0
- package/dist/components/dropdown-menu.mjs +131 -0
- package/dist/components/empty.d.mts +35 -0
- package/dist/components/empty.mjs +59 -0
- package/dist/components/field.d.mts +64 -0
- package/dist/components/field.mjs +110 -0
- package/dist/components/hover-card.d.mts +22 -0
- package/dist/components/hover-card.mjs +33 -0
- package/dist/components/input-group.d.mts +43 -0
- package/dist/components/input-group.mjs +79 -0
- package/dist/components/input-otp.d.mts +28 -0
- package/dist/components/input-otp.mjs +47 -0
- package/dist/components/input.d.mts +11 -0
- package/dist/components/input.mjs +14 -0
- package/dist/components/item.d.mts +62 -0
- package/dist/components/item.mjs +117 -0
- package/dist/components/kbd.d.mts +13 -0
- package/dist/components/kbd.mjs +19 -0
- package/dist/components/label.d.mts +11 -0
- package/dist/components/label.mjs +15 -0
- package/dist/components/menubar.d.mts +90 -0
- package/dist/components/menubar.mjs +135 -0
- package/dist/components/native-select.d.mts +21 -0
- package/dist/components/native-select.mjs +37 -0
- package/dist/components/navigation-menu.d.mts +46 -0
- package/dist/components/navigation-menu.mjs +80 -0
- package/dist/components/pagination.d.mts +45 -0
- package/dist/components/pagination.mjs +80 -0
- package/dist/components/popover.d.mts +34 -0
- package/dist/components/popover.mjs +56 -0
- package/dist/components/progress.d.mts +12 -0
- package/dist/components/progress.mjs +20 -0
- package/dist/components/radio-group.d.mts +15 -0
- package/dist/components/radio-group.mjs +27 -0
- package/dist/components/resizable.d.mts +20 -0
- package/dist/components/resizable.mjs +28 -0
- package/dist/components/scroll-area.d.mts +17 -0
- package/dist/components/scroll-area.mjs +37 -0
- package/dist/components/select.d.mts +53 -0
- package/dist/components/select.mjs +100 -0
- package/dist/components/separator.d.mts +13 -0
- package/dist/components/separator.mjs +17 -0
- package/dist/components/sheet.d.mts +42 -0
- package/dist/components/sheet.mjs +90 -0
- package/dist/components/sidebar.d.mts +167 -0
- package/dist/components/sidebar.mjs +374 -0
- package/dist/components/skeleton.d.mts +9 -0
- package/dist/components/skeleton.mjs +12 -0
- package/dist/components/slider.d.mts +15 -0
- package/dist/components/slider.mjs +36 -0
- package/dist/components/sonner.d.mts +9 -0
- package/dist/components/sonner.mjs +30 -0
- package/dist/components/spinner.d.mts +9 -0
- package/dist/components/spinner.mjs +14 -0
- package/dist/components/switch.d.mts +14 -0
- package/dist/components/switch.mjs +20 -0
- package/dist/components/table.d.mts +38 -0
- package/dist/components/table.mjs +67 -0
- package/dist/components/tabs.d.mts +30 -0
- package/dist/components/tabs.mjs +46 -0
- package/dist/components/textarea.d.mts +10 -0
- package/dist/components/textarea.mjs +13 -0
- package/dist/components/toggle-group.d.mts +28 -0
- package/dist/components/toggle-group.mjs +51 -0
- package/dist/components/toggle.d.mts +19 -0
- package/dist/components/toggle.mjs +37 -0
- package/dist/components/tooltip.d.mts +23 -0
- package/dist/components/tooltip.mjs +36 -0
- package/dist/exports/components.d.mts +61 -2248
- package/dist/exports/components.mjs +60 -4481
- package/dist/exports/hooks.d.mts +1 -3
- package/dist/exports/hooks.mjs +1 -1
- package/dist/exports/lib.d.mts +1 -1
- package/dist/exports/lib.mjs +1 -1
- package/dist/hooks/use-mobile.d.mts +4 -0
- package/dist/{use-mobile-SSHtEcOs.mjs → hooks/use-mobile.mjs} +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{utils-CCM7KiiI.d.mts → lib/utils.d.mts} +1 -1
- package/dist/{utils-XdqGR1qq.mjs → lib/utils.mjs} +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Button } from "../button.mjs";
|
|
2
|
+
import { ComponentProps } from "react";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/ai-elements/speech-input.d.ts
|
|
6
|
+
interface SpeechRecognition extends EventTarget {
|
|
7
|
+
continuous: boolean;
|
|
8
|
+
interimResults: boolean;
|
|
9
|
+
lang: string;
|
|
10
|
+
start(): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
onstart: ((this: SpeechRecognition, ev: Event) => void) | null;
|
|
13
|
+
onend: ((this: SpeechRecognition, ev: Event) => void) | null;
|
|
14
|
+
onresult: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => void) | null;
|
|
15
|
+
onerror: ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => void) | null;
|
|
16
|
+
}
|
|
17
|
+
interface SpeechRecognitionEvent extends Event {
|
|
18
|
+
results: SpeechRecognitionResultList;
|
|
19
|
+
resultIndex: number;
|
|
20
|
+
}
|
|
21
|
+
interface SpeechRecognitionResultList {
|
|
22
|
+
readonly length: number;
|
|
23
|
+
item(index: number): SpeechRecognitionResult;
|
|
24
|
+
[index: number]: SpeechRecognitionResult;
|
|
25
|
+
}
|
|
26
|
+
interface SpeechRecognitionResult {
|
|
27
|
+
readonly length: number;
|
|
28
|
+
item(index: number): SpeechRecognitionAlternative;
|
|
29
|
+
[index: number]: SpeechRecognitionAlternative;
|
|
30
|
+
isFinal: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface SpeechRecognitionAlternative {
|
|
33
|
+
transcript: string;
|
|
34
|
+
confidence: number;
|
|
35
|
+
}
|
|
36
|
+
interface SpeechRecognitionErrorEvent extends Event {
|
|
37
|
+
error: string;
|
|
38
|
+
}
|
|
39
|
+
declare global {
|
|
40
|
+
interface Window {
|
|
41
|
+
SpeechRecognition: new () => SpeechRecognition;
|
|
42
|
+
webkitSpeechRecognition: new () => SpeechRecognition;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
type SpeechInputProps = ComponentProps<typeof Button> & {
|
|
46
|
+
onTranscriptionChange?: (text: string) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Callback for when audio is recorded using MediaRecorder fallback.
|
|
49
|
+
* This is called in browsers that don't support the Web Speech API (Firefox, Safari).
|
|
50
|
+
* The callback receives an audio Blob that should be sent to a transcription service.
|
|
51
|
+
* Return the transcribed text, which will be passed to onTranscriptionChange.
|
|
52
|
+
*/
|
|
53
|
+
onAudioRecorded?: (audioBlob: Blob) => Promise<string>;
|
|
54
|
+
lang?: string;
|
|
55
|
+
};
|
|
56
|
+
declare const SpeechInput: ({
|
|
57
|
+
className,
|
|
58
|
+
onTranscriptionChange,
|
|
59
|
+
onAudioRecorded,
|
|
60
|
+
lang,
|
|
61
|
+
...props
|
|
62
|
+
}: SpeechInputProps) => _$react_jsx_runtime0.JSX.Element;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { SpeechInput, SpeechInputProps };
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../lib/utils.mjs";
|
|
3
|
+
import { Button } from "../button.mjs";
|
|
4
|
+
import { Spinner } from "../spinner.mjs";
|
|
5
|
+
import { MicIcon, SquareIcon } from "lucide-react";
|
|
6
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/ai-elements/speech-input.tsx
|
|
9
|
+
const detectSpeechInputMode = () => {
|
|
10
|
+
if (typeof window === "undefined") return "none";
|
|
11
|
+
if ("SpeechRecognition" in window || "webkitSpeechRecognition" in window) return "speech-recognition";
|
|
12
|
+
if ("MediaRecorder" in window && "mediaDevices" in navigator) return "media-recorder";
|
|
13
|
+
return "none";
|
|
14
|
+
};
|
|
15
|
+
const SpeechInput = ({ className, onTranscriptionChange, onAudioRecorded, lang = "en-US", ...props }) => {
|
|
16
|
+
const [isListening, setIsListening] = useState(false);
|
|
17
|
+
const [isProcessing, setIsProcessing] = useState(false);
|
|
18
|
+
const [mode] = useState(detectSpeechInputMode);
|
|
19
|
+
const [isRecognitionReady, setIsRecognitionReady] = useState(false);
|
|
20
|
+
const recognitionRef = useRef(null);
|
|
21
|
+
const mediaRecorderRef = useRef(null);
|
|
22
|
+
const streamRef = useRef(null);
|
|
23
|
+
const audioChunksRef = useRef([]);
|
|
24
|
+
const onTranscriptionChangeRef = useRef(onTranscriptionChange);
|
|
25
|
+
const onAudioRecordedRef = useRef(onAudioRecorded);
|
|
26
|
+
onTranscriptionChangeRef.current = onTranscriptionChange;
|
|
27
|
+
onAudioRecordedRef.current = onAudioRecorded;
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (mode !== "speech-recognition") return;
|
|
30
|
+
const speechRecognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
|
|
31
|
+
speechRecognition.continuous = true;
|
|
32
|
+
speechRecognition.interimResults = true;
|
|
33
|
+
speechRecognition.lang = lang;
|
|
34
|
+
const handleStart = () => {
|
|
35
|
+
setIsListening(true);
|
|
36
|
+
};
|
|
37
|
+
const handleEnd = () => {
|
|
38
|
+
setIsListening(false);
|
|
39
|
+
};
|
|
40
|
+
const handleResult = (event) => {
|
|
41
|
+
const speechEvent = event;
|
|
42
|
+
let finalTranscript = "";
|
|
43
|
+
for (let i = speechEvent.resultIndex; i < speechEvent.results.length; i += 1) {
|
|
44
|
+
const result = speechEvent.results[i];
|
|
45
|
+
if (result.isFinal) finalTranscript += result[0]?.transcript ?? "";
|
|
46
|
+
}
|
|
47
|
+
if (finalTranscript) onTranscriptionChangeRef.current?.(finalTranscript);
|
|
48
|
+
};
|
|
49
|
+
const handleError = () => {
|
|
50
|
+
setIsListening(false);
|
|
51
|
+
};
|
|
52
|
+
speechRecognition.addEventListener("start", handleStart);
|
|
53
|
+
speechRecognition.addEventListener("end", handleEnd);
|
|
54
|
+
speechRecognition.addEventListener("result", handleResult);
|
|
55
|
+
speechRecognition.addEventListener("error", handleError);
|
|
56
|
+
recognitionRef.current = speechRecognition;
|
|
57
|
+
setIsRecognitionReady(true);
|
|
58
|
+
return () => {
|
|
59
|
+
speechRecognition.removeEventListener("start", handleStart);
|
|
60
|
+
speechRecognition.removeEventListener("end", handleEnd);
|
|
61
|
+
speechRecognition.removeEventListener("result", handleResult);
|
|
62
|
+
speechRecognition.removeEventListener("error", handleError);
|
|
63
|
+
speechRecognition.stop();
|
|
64
|
+
recognitionRef.current = null;
|
|
65
|
+
setIsRecognitionReady(false);
|
|
66
|
+
};
|
|
67
|
+
}, [mode, lang]);
|
|
68
|
+
useEffect(() => () => {
|
|
69
|
+
if (mediaRecorderRef.current?.state === "recording") mediaRecorderRef.current.stop();
|
|
70
|
+
if (streamRef.current) for (const track of streamRef.current.getTracks()) track.stop();
|
|
71
|
+
}, []);
|
|
72
|
+
const startMediaRecorder = useCallback(async () => {
|
|
73
|
+
if (!onAudioRecordedRef.current) return;
|
|
74
|
+
try {
|
|
75
|
+
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
76
|
+
streamRef.current = stream;
|
|
77
|
+
const mediaRecorder = new MediaRecorder(stream);
|
|
78
|
+
audioChunksRef.current = [];
|
|
79
|
+
const handleDataAvailable = (event) => {
|
|
80
|
+
if (event.data.size > 0) audioChunksRef.current.push(event.data);
|
|
81
|
+
};
|
|
82
|
+
const handleStop = async () => {
|
|
83
|
+
for (const track of stream.getTracks()) track.stop();
|
|
84
|
+
streamRef.current = null;
|
|
85
|
+
const audioBlob = new Blob(audioChunksRef.current, { type: "audio/webm" });
|
|
86
|
+
if (audioBlob.size > 0 && onAudioRecordedRef.current) {
|
|
87
|
+
setIsProcessing(true);
|
|
88
|
+
try {
|
|
89
|
+
const transcript = await onAudioRecordedRef.current(audioBlob);
|
|
90
|
+
if (transcript) onTranscriptionChangeRef.current?.(transcript);
|
|
91
|
+
} catch {} finally {
|
|
92
|
+
setIsProcessing(false);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const handleError = () => {
|
|
97
|
+
setIsListening(false);
|
|
98
|
+
for (const track of stream.getTracks()) track.stop();
|
|
99
|
+
streamRef.current = null;
|
|
100
|
+
};
|
|
101
|
+
mediaRecorder.addEventListener("dataavailable", handleDataAvailable);
|
|
102
|
+
mediaRecorder.addEventListener("stop", handleStop);
|
|
103
|
+
mediaRecorder.addEventListener("error", handleError);
|
|
104
|
+
mediaRecorderRef.current = mediaRecorder;
|
|
105
|
+
mediaRecorder.start();
|
|
106
|
+
setIsListening(true);
|
|
107
|
+
} catch {
|
|
108
|
+
setIsListening(false);
|
|
109
|
+
}
|
|
110
|
+
}, []);
|
|
111
|
+
const stopMediaRecorder = useCallback(() => {
|
|
112
|
+
if (mediaRecorderRef.current?.state === "recording") mediaRecorderRef.current.stop();
|
|
113
|
+
setIsListening(false);
|
|
114
|
+
}, []);
|
|
115
|
+
const toggleListening = useCallback(() => {
|
|
116
|
+
if (mode === "speech-recognition" && recognitionRef.current) if (isListening) recognitionRef.current.stop();
|
|
117
|
+
else recognitionRef.current.start();
|
|
118
|
+
else if (mode === "media-recorder") if (isListening) stopMediaRecorder();
|
|
119
|
+
else startMediaRecorder();
|
|
120
|
+
}, [
|
|
121
|
+
mode,
|
|
122
|
+
isListening,
|
|
123
|
+
startMediaRecorder,
|
|
124
|
+
stopMediaRecorder
|
|
125
|
+
]);
|
|
126
|
+
const isDisabled = mode === "none" || mode === "speech-recognition" && !isRecognitionReady || mode === "media-recorder" && !onAudioRecorded || isProcessing;
|
|
127
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
128
|
+
className: "relative inline-flex items-center justify-center",
|
|
129
|
+
children: [isListening && [
|
|
130
|
+
0,
|
|
131
|
+
1,
|
|
132
|
+
2
|
|
133
|
+
].map((index) => /* @__PURE__ */ jsx("div", {
|
|
134
|
+
className: "absolute inset-0 animate-ping rounded-full border-2 border-red-400/30",
|
|
135
|
+
style: {
|
|
136
|
+
animationDelay: `${index * .3}s`,
|
|
137
|
+
animationDuration: "2s"
|
|
138
|
+
}
|
|
139
|
+
}, index)), /* @__PURE__ */ jsxs(Button, {
|
|
140
|
+
className: cn("relative z-10 rounded-full transition-all duration-300", isListening ? "bg-destructive text-white hover:bg-destructive/80 hover:text-white" : "bg-primary text-primary-foreground hover:bg-primary/80 hover:text-primary-foreground", className),
|
|
141
|
+
disabled: isDisabled,
|
|
142
|
+
onClick: toggleListening,
|
|
143
|
+
...props,
|
|
144
|
+
children: [
|
|
145
|
+
isProcessing && /* @__PURE__ */ jsx(Spinner, {}),
|
|
146
|
+
!isProcessing && isListening && /* @__PURE__ */ jsx(SquareIcon, { className: "size-4" }),
|
|
147
|
+
!(isProcessing || isListening) && /* @__PURE__ */ jsx(MicIcon, { className: "size-4" })
|
|
148
|
+
]
|
|
149
|
+
})]
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
//#endregion
|
|
153
|
+
export { SpeechInput };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Button } from "./button.mjs";
|
|
2
|
+
import { AlertDialog } from "radix-ui";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/components/alert-dialog.d.ts
|
|
7
|
+
declare function AlertDialog$1({
|
|
8
|
+
...props
|
|
9
|
+
}: React.ComponentProps<typeof AlertDialog.Root>): _$react_jsx_runtime0.JSX.Element;
|
|
10
|
+
declare function AlertDialogTrigger({
|
|
11
|
+
...props
|
|
12
|
+
}: React.ComponentProps<typeof AlertDialog.Trigger>): _$react_jsx_runtime0.JSX.Element;
|
|
13
|
+
declare function AlertDialogPortal({
|
|
14
|
+
...props
|
|
15
|
+
}: React.ComponentProps<typeof AlertDialog.Portal>): _$react_jsx_runtime0.JSX.Element;
|
|
16
|
+
declare function AlertDialogOverlay({
|
|
17
|
+
className,
|
|
18
|
+
...props
|
|
19
|
+
}: React.ComponentProps<typeof AlertDialog.Overlay>): _$react_jsx_runtime0.JSX.Element;
|
|
20
|
+
declare function AlertDialogContent({
|
|
21
|
+
className,
|
|
22
|
+
size,
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<typeof AlertDialog.Content> & {
|
|
25
|
+
size?: 'default' | 'sm';
|
|
26
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
27
|
+
declare function AlertDialogHeader({
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
31
|
+
declare function AlertDialogFooter({
|
|
32
|
+
className,
|
|
33
|
+
...props
|
|
34
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
35
|
+
declare function AlertDialogMedia({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
39
|
+
declare function AlertDialogTitle({
|
|
40
|
+
className,
|
|
41
|
+
...props
|
|
42
|
+
}: React.ComponentProps<typeof AlertDialog.Title>): _$react_jsx_runtime0.JSX.Element;
|
|
43
|
+
declare function AlertDialogDescription({
|
|
44
|
+
className,
|
|
45
|
+
...props
|
|
46
|
+
}: React.ComponentProps<typeof AlertDialog.Description>): _$react_jsx_runtime0.JSX.Element;
|
|
47
|
+
declare function AlertDialogAction({
|
|
48
|
+
className,
|
|
49
|
+
variant,
|
|
50
|
+
size,
|
|
51
|
+
...props
|
|
52
|
+
}: React.ComponentProps<typeof AlertDialog.Action> & Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>): _$react_jsx_runtime0.JSX.Element;
|
|
53
|
+
declare function AlertDialogCancel({
|
|
54
|
+
className,
|
|
55
|
+
variant,
|
|
56
|
+
size,
|
|
57
|
+
...props
|
|
58
|
+
}: React.ComponentProps<typeof AlertDialog.Cancel> & Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>): _$react_jsx_runtime0.JSX.Element;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { AlertDialog$1 as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { Button } from "./button.mjs";
|
|
4
|
+
import { AlertDialog } from "radix-ui";
|
|
5
|
+
import "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/alert-dialog.tsx
|
|
8
|
+
function AlertDialog$1({ ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(AlertDialog.Root, {
|
|
10
|
+
"data-slot": "alert-dialog",
|
|
11
|
+
...props
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function AlertDialogTrigger({ ...props }) {
|
|
15
|
+
return /* @__PURE__ */ jsx(AlertDialog.Trigger, {
|
|
16
|
+
"data-slot": "alert-dialog-trigger",
|
|
17
|
+
...props
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function AlertDialogPortal({ ...props }) {
|
|
21
|
+
return /* @__PURE__ */ jsx(AlertDialog.Portal, {
|
|
22
|
+
"data-slot": "alert-dialog-portal",
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
27
|
+
return /* @__PURE__ */ jsx(AlertDialog.Overlay, {
|
|
28
|
+
"data-slot": "alert-dialog-overlay",
|
|
29
|
+
className: cn("fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
30
|
+
...props
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
34
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialog.Content, {
|
|
35
|
+
"data-slot": "alert-dialog-content",
|
|
36
|
+
"data-size": size,
|
|
37
|
+
className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
38
|
+
...props
|
|
39
|
+
})] });
|
|
40
|
+
}
|
|
41
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
42
|
+
return /* @__PURE__ */ jsx("div", {
|
|
43
|
+
"data-slot": "alert-dialog-header",
|
|
44
|
+
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
45
|
+
...props
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
49
|
+
return /* @__PURE__ */ jsx("div", {
|
|
50
|
+
"data-slot": "alert-dialog-footer",
|
|
51
|
+
className: cn("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
|
|
52
|
+
...props
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
56
|
+
return /* @__PURE__ */ jsx("div", {
|
|
57
|
+
"data-slot": "alert-dialog-media",
|
|
58
|
+
className: cn("mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className),
|
|
59
|
+
...props
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
63
|
+
return /* @__PURE__ */ jsx(AlertDialog.Title, {
|
|
64
|
+
"data-slot": "alert-dialog-title",
|
|
65
|
+
className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
|
|
66
|
+
...props
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
70
|
+
return /* @__PURE__ */ jsx(AlertDialog.Description, {
|
|
71
|
+
"data-slot": "alert-dialog-description",
|
|
72
|
+
className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
73
|
+
...props
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function AlertDialogAction({ className, variant = "default", size = "default", ...props }) {
|
|
77
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
78
|
+
variant,
|
|
79
|
+
size,
|
|
80
|
+
asChild: true,
|
|
81
|
+
children: /* @__PURE__ */ jsx(AlertDialog.Action, {
|
|
82
|
+
"data-slot": "alert-dialog-action",
|
|
83
|
+
className: cn(className),
|
|
84
|
+
...props
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
89
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
90
|
+
variant,
|
|
91
|
+
size,
|
|
92
|
+
asChild: true,
|
|
93
|
+
children: /* @__PURE__ */ jsx(AlertDialog.Cancel, {
|
|
94
|
+
"data-slot": "alert-dialog-cancel",
|
|
95
|
+
className: cn(className),
|
|
96
|
+
...props
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
export { AlertDialog$1 as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
5
|
+
|
|
6
|
+
//#region src/components/alert.d.ts
|
|
7
|
+
declare const alertVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
9
|
+
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
10
|
+
declare function Alert({
|
|
11
|
+
className,
|
|
12
|
+
variant,
|
|
13
|
+
...props
|
|
14
|
+
}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>): _$react_jsx_runtime0.JSX.Element;
|
|
15
|
+
declare function AlertTitle({
|
|
16
|
+
className,
|
|
17
|
+
...props
|
|
18
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
19
|
+
declare function AlertDescription({
|
|
20
|
+
className,
|
|
21
|
+
...props
|
|
22
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
23
|
+
declare function AlertAction({
|
|
24
|
+
className,
|
|
25
|
+
...props
|
|
26
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Alert, AlertAction, AlertDescription, AlertTitle };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.mjs";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
//#region src/components/alert.tsx
|
|
6
|
+
const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
|
|
7
|
+
variants: { variant: {
|
|
8
|
+
default: "bg-card text-card-foreground",
|
|
9
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
|
|
10
|
+
} },
|
|
11
|
+
defaultVariants: { variant: "default" }
|
|
12
|
+
});
|
|
13
|
+
function Alert({ className, variant, ...props }) {
|
|
14
|
+
return /* @__PURE__ */ jsx("div", {
|
|
15
|
+
"data-slot": "alert",
|
|
16
|
+
role: "alert",
|
|
17
|
+
className: cn(alertVariants({ variant }), className),
|
|
18
|
+
...props
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function AlertTitle({ className, ...props }) {
|
|
22
|
+
return /* @__PURE__ */ jsx("div", {
|
|
23
|
+
"data-slot": "alert-title",
|
|
24
|
+
className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
|
|
25
|
+
...props
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function AlertDescription({ className, ...props }) {
|
|
29
|
+
return /* @__PURE__ */ jsx("div", {
|
|
30
|
+
"data-slot": "alert-description",
|
|
31
|
+
className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
|
|
32
|
+
...props
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function AlertAction({ className, ...props }) {
|
|
36
|
+
return /* @__PURE__ */ jsx("div", {
|
|
37
|
+
"data-slot": "alert-action",
|
|
38
|
+
className: cn("absolute top-2.5 right-3", className),
|
|
39
|
+
...props
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { Alert, AlertAction, AlertDescription, AlertTitle };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AspectRatio } from "radix-ui";
|
|
2
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/aspect-ratio.d.ts
|
|
5
|
+
declare function AspectRatio$1({
|
|
6
|
+
...props
|
|
7
|
+
}: React.ComponentProps<typeof AspectRatio.Root>): _$react_jsx_runtime0.JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AspectRatio$1 as AspectRatio };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { AspectRatio } from "radix-ui";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/aspect-ratio.tsx
|
|
5
|
+
function AspectRatio$1({ ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(AspectRatio.Root, {
|
|
7
|
+
"data-slot": "aspect-ratio",
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { AspectRatio$1 as AspectRatio };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Avatar } from "radix-ui";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/avatar.d.ts
|
|
6
|
+
declare function Avatar$1({
|
|
7
|
+
className,
|
|
8
|
+
size,
|
|
9
|
+
...props
|
|
10
|
+
}: React.ComponentProps<typeof Avatar.Root> & {
|
|
11
|
+
size?: 'default' | 'sm' | 'lg';
|
|
12
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
13
|
+
declare function AvatarImage({
|
|
14
|
+
className,
|
|
15
|
+
...props
|
|
16
|
+
}: React.ComponentProps<typeof Avatar.Image>): _$react_jsx_runtime0.JSX.Element;
|
|
17
|
+
declare function AvatarFallback({
|
|
18
|
+
className,
|
|
19
|
+
...props
|
|
20
|
+
}: React.ComponentProps<typeof Avatar.Fallback>): _$react_jsx_runtime0.JSX.Element;
|
|
21
|
+
declare function AvatarBadge({
|
|
22
|
+
className,
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<'span'>): _$react_jsx_runtime0.JSX.Element;
|
|
25
|
+
declare function AvatarGroup({
|
|
26
|
+
className,
|
|
27
|
+
...props
|
|
28
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
29
|
+
declare function AvatarGroupCount({
|
|
30
|
+
className,
|
|
31
|
+
...props
|
|
32
|
+
}: React.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { Avatar$1 as Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { Avatar } from "radix-ui";
|
|
4
|
+
import "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/avatar.tsx
|
|
7
|
+
function Avatar$1({ className, size = "default", ...props }) {
|
|
8
|
+
return /* @__PURE__ */ jsx(Avatar.Root, {
|
|
9
|
+
"data-slot": "avatar",
|
|
10
|
+
"data-size": size,
|
|
11
|
+
className: cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className),
|
|
12
|
+
...props
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function AvatarImage({ className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx(Avatar.Image, {
|
|
17
|
+
"data-slot": "avatar-image",
|
|
18
|
+
className: cn("aspect-square size-full rounded-full object-cover", className),
|
|
19
|
+
...props
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function AvatarFallback({ className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsx(Avatar.Fallback, {
|
|
24
|
+
"data-slot": "avatar-fallback",
|
|
25
|
+
className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className),
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function AvatarBadge({ className, ...props }) {
|
|
30
|
+
return /* @__PURE__ */ jsx("span", {
|
|
31
|
+
"data-slot": "avatar-badge",
|
|
32
|
+
className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className),
|
|
33
|
+
...props
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function AvatarGroup({ className, ...props }) {
|
|
37
|
+
return /* @__PURE__ */ jsx("div", {
|
|
38
|
+
"data-slot": "avatar-group",
|
|
39
|
+
className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className),
|
|
40
|
+
...props
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function AvatarGroupCount({ className, ...props }) {
|
|
44
|
+
return /* @__PURE__ */ jsx("div", {
|
|
45
|
+
"data-slot": "avatar-group-count",
|
|
46
|
+
className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className),
|
|
47
|
+
...props
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { Avatar$1 as Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
5
|
+
|
|
6
|
+
//#region src/components/badge.d.ts
|
|
7
|
+
declare const badgeVariants: (props?: ({
|
|
8
|
+
variant?: "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
|
|
9
|
+
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
10
|
+
declare function Badge({
|
|
11
|
+
className,
|
|
12
|
+
variant,
|
|
13
|
+
asChild,
|
|
14
|
+
...props
|
|
15
|
+
}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
|
|
16
|
+
asChild?: boolean;
|
|
17
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Badge, badgeVariants };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.mjs";
|
|
2
|
+
import { Slot } from "radix-ui";
|
|
3
|
+
import "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
//#region src/components/badge.tsx
|
|
7
|
+
const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
|
|
8
|
+
variants: { variant: {
|
|
9
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
10
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
11
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
12
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
13
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
14
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
15
|
+
} },
|
|
16
|
+
defaultVariants: { variant: "default" }
|
|
17
|
+
});
|
|
18
|
+
function Badge({ className, variant = "default", asChild = false, ...props }) {
|
|
19
|
+
return /* @__PURE__ */ jsx(asChild ? Slot.Root : "span", {
|
|
20
|
+
"data-slot": "badge",
|
|
21
|
+
"data-variant": variant,
|
|
22
|
+
className: cn(badgeVariants({ variant }), className),
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { Badge, badgeVariants };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/breadcrumb.d.ts
|
|
5
|
+
declare function Breadcrumb({
|
|
6
|
+
className,
|
|
7
|
+
...props
|
|
8
|
+
}: React.ComponentProps<'nav'>): _$react_jsx_runtime0.JSX.Element;
|
|
9
|
+
declare function BreadcrumbList({
|
|
10
|
+
className,
|
|
11
|
+
...props
|
|
12
|
+
}: React.ComponentProps<'ol'>): _$react_jsx_runtime0.JSX.Element;
|
|
13
|
+
declare function BreadcrumbItem({
|
|
14
|
+
className,
|
|
15
|
+
...props
|
|
16
|
+
}: React.ComponentProps<'li'>): _$react_jsx_runtime0.JSX.Element;
|
|
17
|
+
declare function BreadcrumbLink({
|
|
18
|
+
asChild,
|
|
19
|
+
className,
|
|
20
|
+
...props
|
|
21
|
+
}: React.ComponentProps<'a'> & {
|
|
22
|
+
asChild?: boolean;
|
|
23
|
+
}): _$react_jsx_runtime0.JSX.Element;
|
|
24
|
+
declare function BreadcrumbPage({
|
|
25
|
+
className,
|
|
26
|
+
...props
|
|
27
|
+
}: React.ComponentProps<'span'>): _$react_jsx_runtime0.JSX.Element;
|
|
28
|
+
declare function BreadcrumbSeparator({
|
|
29
|
+
children,
|
|
30
|
+
className,
|
|
31
|
+
...props
|
|
32
|
+
}: React.ComponentProps<'li'>): _$react_jsx_runtime0.JSX.Element;
|
|
33
|
+
declare function BreadcrumbEllipsis({
|
|
34
|
+
className,
|
|
35
|
+
...props
|
|
36
|
+
}: React.ComponentProps<'span'>): _$react_jsx_runtime0.JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|