@chatsdk-dev/elements 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/chunk-2LHKM7RD.js +14 -0
- package/dist/chunk-5UMYP6MD.js +10 -0
- package/dist/chunk-AP4MG32M.js +36 -0
- package/dist/chunk-CFM57HOS.js +358 -0
- package/dist/chunk-EGIUE7H2.js +37 -0
- package/dist/chunk-M5OONVIO.js +90 -0
- package/dist/chunk-MXTBCHYC.js +31 -0
- package/dist/chunk-NIC3MOMY.js +55 -0
- package/dist/chunk-QTRMNIG3.js +83 -0
- package/dist/chunk-R7G3RQLU.js +36 -0
- package/dist/chunk-RJG5D2TM.js +113 -0
- package/dist/chunk-SLJNKQ2G.js +125 -0
- package/dist/chunk-TDEFIW2L.js +9 -0
- package/dist/chunk-TDP6D7U7.js +551 -0
- package/dist/chunk-V2ITXC65.js +24 -0
- package/dist/chunk-VS55HRUS.js +16 -0
- package/dist/chunk-VYDYCGJL.js +25 -0
- package/dist/chunk-X5YUF2YM.js +113 -0
- package/dist/chunk-YX46JVQN.js +78 -0
- package/dist/chunk-YXAMLTTT.js +16 -0
- package/dist/chunk-YXFVHSY4.js +51 -0
- package/dist/chunk-ZCSZX3OI.js +4 -0
- package/dist/common/use-copy-to-clipboard.d.ts +3 -0
- package/dist/common/use-copy-to-clipboard.js +33 -0
- package/dist/common/utilts.d.ts +8 -0
- package/dist/common/utilts.js +28 -0
- package/dist/components/ai-elements/actions.d.ts +13 -0
- package/dist/components/ai-elements/actions.js +42 -0
- package/dist/components/ai-elements/agent.d.ts +31 -0
- package/dist/components/ai-elements/agent.js +77 -0
- package/dist/components/ai-elements/artifact.d.ts +27 -0
- package/dist/components/ai-elements/artifact.js +108 -0
- package/dist/components/ai-elements/attachments.d.ts +57 -0
- package/dist/components/ai-elements/attachments.js +258 -0
- package/dist/components/ai-elements/audio-player.d.ts +33 -0
- package/dist/components/ai-elements/audio-player.js +199 -0
- package/dist/components/ai-elements/canvas.d.ts +10 -0
- package/dist/components/ai-elements/canvas.js +24 -0
- package/dist/components/ai-elements/chain-of-thought.d.ts +34 -0
- package/dist/components/ai-elements/chain-of-thought.js +159 -0
- package/dist/components/ai-elements/checkpoint.d.ts +16 -0
- package/dist/components/ai-elements/checkpoint.js +47 -0
- package/dist/components/ai-elements/code-block.d.ts +48 -0
- package/dist/components/ai-elements/code-block.js +1 -0
- package/dist/components/ai-elements/commit.d.ts +68 -0
- package/dist/components/ai-elements/commit.js +314 -0
- package/dist/components/ai-elements/confirmation.d.ts +52 -0
- package/dist/components/ai-elements/confirmation.js +76 -0
- package/dist/components/ai-elements/connection.d.ts +5 -0
- package/dist/components/ai-elements/connection.js +34 -0
- package/dist/components/ai-elements/context.d.ts +36 -0
- package/dist/components/ai-elements/context.js +320 -0
- package/dist/components/ai-elements/controls.d.ts +8 -0
- package/dist/components/ai-elements/controls.js +17 -0
- package/dist/components/ai-elements/conversation.d.ts +27 -0
- package/dist/components/ai-elements/conversation.js +119 -0
- package/dist/components/ai-elements/edge.d.ts +9 -0
- package/dist/components/ai-elements/edge.js +111 -0
- package/dist/components/ai-elements/environment-variables.d.ts +42 -0
- package/dist/components/ai-elements/environment-variables.js +208 -0
- package/dist/components/ai-elements/file-tree.d.ts +30 -0
- package/dist/components/ai-elements/file-tree.js +212 -0
- package/dist/components/ai-elements/image.d.ts +10 -0
- package/dist/components/ai-elements/image.js +23 -0
- package/dist/components/ai-elements/inline-citation.d.ts +42 -0
- package/dist/components/ai-elements/inline-citation.js +203 -0
- package/dist/components/ai-elements/jsx-preview.d.ts +33 -0
- package/dist/components/ai-elements/jsx-preview.js +206 -0
- package/dist/components/ai-elements/loader.d.ts +9 -0
- package/dist/components/ai-elements/loader.js +115 -0
- package/dist/components/ai-elements/message.d.ts +42 -0
- package/dist/components/ai-elements/message.js +259 -0
- package/dist/components/ai-elements/mic-selector.d.ts +49 -0
- package/dist/components/ai-elements/mic-selector.js +252 -0
- package/dist/components/ai-elements/model-selector.d.ts +39 -0
- package/dist/components/ai-elements/model-selector.js +73 -0
- package/dist/components/ai-elements/node.d.ts +25 -0
- package/dist/components/ai-elements/node.js +41 -0
- package/dist/components/ai-elements/open-in-chat.d.ts +32 -0
- package/dist/components/ai-elements/open-in-chat.js +366 -0
- package/dist/components/ai-elements/package-info.d.ts +32 -0
- package/dist/components/ai-elements/package-info.js +162 -0
- package/dist/components/ai-elements/panel.d.ts +8 -0
- package/dist/components/ai-elements/panel.js +17 -0
- package/dist/components/ai-elements/persona.d.ts +50 -0
- package/dist/components/ai-elements/persona.js +209 -0
- package/dist/components/ai-elements/plan.d.ts +29 -0
- package/dist/components/ai-elements/plan.js +95 -0
- package/dist/components/ai-elements/prompt-input.d.ts +153 -0
- package/dist/components/ai-elements/prompt-input.js +939 -0
- package/dist/components/ai-elements/queue.d.ts +65 -0
- package/dist/components/ai-elements/queue.js +179 -0
- package/dist/components/ai-elements/reasoning.d.ts +30 -0
- package/dist/components/ai-elements/reasoning.js +161 -0
- package/dist/components/ai-elements/response.d.ts +9 -0
- package/dist/components/ai-elements/response.js +33 -0
- package/dist/components/ai-elements/sandbox.d.ts +28 -0
- package/dist/components/ai-elements/sandbox.js +98 -0
- package/dist/components/ai-elements/schema-display.d.ts +58 -0
- package/dist/components/ai-elements/schema-display.js +313 -0
- package/dist/components/ai-elements/shimmer.d.ts +14 -0
- package/dist/components/ai-elements/shimmer.js +1 -0
- package/dist/components/ai-elements/snippet.d.ts +22 -0
- package/dist/components/ai-elements/snippet.js +90 -0
- package/dist/components/ai-elements/sources.d.ts +16 -0
- package/dist/components/ai-elements/sources.js +62 -0
- package/dist/components/ai-elements/speech-input.d.ts +57 -0
- package/dist/components/ai-elements/speech-input.js +206 -0
- package/dist/components/ai-elements/stack-trace.d.ts +42 -0
- package/dist/components/ai-elements/stack-trace.js +377 -0
- package/dist/components/ai-elements/suggestion.d.ts +14 -0
- package/dist/components/ai-elements/suggestion.js +41 -0
- package/dist/components/ai-elements/task.d.ts +18 -0
- package/dist/components/ai-elements/task.js +60 -0
- package/dist/components/ai-elements/terminal.d.ts +31 -0
- package/dist/components/ai-elements/terminal.js +203 -0
- package/dist/components/ai-elements/test-results.d.ts +61 -0
- package/dist/components/ai-elements/test-results.js +349 -0
- package/dist/components/ai-elements/tool.d.ts +35 -0
- package/dist/components/ai-elements/tool.js +2 -0
- package/dist/components/ai-elements/toolbar.d.ts +8 -0
- package/dist/components/ai-elements/toolbar.js +18 -0
- package/dist/components/ai-elements/transcription.d.ts +19 -0
- package/dist/components/ai-elements/transcription.js +90 -0
- package/dist/components/ai-elements/voice-selector.d.ts +66 -0
- package/dist/components/ai-elements/voice-selector.js +332 -0
- package/dist/components/ai-elements/web-preview.d.ts +38 -0
- package/dist/components/ai-elements/web-preview.js +214 -0
- package/dist/components/info-card.d.ts +14 -0
- package/dist/components/info-card.js +1 -0
- package/dist/components/responsive-alert-dialog.d.ts +19 -0
- package/dist/components/responsive-alert-dialog.js +1 -0
- package/dist/components/responsive-dialog.d.ts +14 -0
- package/dist/components/responsive-dialog.js +1 -0
- package/dist/config-IcWUmjwj.d.ts +239 -0
- package/dist/features/chat/chat-card.d.ts +5 -0
- package/dist/features/chat/chat-card.js +14 -0
- package/dist/features/chat/chat-element/chat-element.d.ts +8 -0
- package/dist/features/chat/chat-element/chat-element.js +14 -0
- package/dist/features/chat/chat-element/use-chat.d.ts +21 -0
- package/dist/features/chat/chat-element/use-chat.js +14 -0
- package/dist/features/chat/chat-element/use-initial-messages.d.ts +20 -0
- package/dist/features/chat/chat-element/use-initial-messages.js +14 -0
- package/dist/features/chat/chat-header/chat-header.d.ts +8 -0
- package/dist/features/chat/chat-header/chat-header.js +14 -0
- package/dist/features/chat/chat-header/chat-menu.d.ts +5 -0
- package/dist/features/chat/chat-header/chat-menu.js +2 -0
- package/dist/features/chat/chat-history/chat-history-empty.d.ts +5 -0
- package/dist/features/chat/chat-history/chat-history-empty.js +1 -0
- package/dist/features/chat/chat-history/chat-history.d.ts +5 -0
- package/dist/features/chat/chat-history/chat-history.js +14 -0
- package/dist/features/chat/chat-message.d.ts +10 -0
- package/dist/features/chat/chat-message.js +1 -0
- package/dist/features/chat/chat-molecule.d.ts +35 -0
- package/dist/features/chat/chat-molecule.js +14 -0
- package/dist/features/chat/chat-prompt-input.d.ts +16 -0
- package/dist/features/chat/chat-prompt-input.js +14 -0
- package/dist/features/chat/chat.context.d.ts +26 -0
- package/dist/features/chat/chat.context.js +13 -0
- package/dist/features/chat/index.d.ts +14 -0
- package/dist/features/chat/index.js +14 -0
- package/dist/features/chat/queries/query-keys.d.ts +8 -0
- package/dist/features/chat/queries/query-keys.js +1 -0
- package/dist/features/chat/queries/use-create-conversation-mutation.d.ts +29 -0
- package/dist/features/chat/queries/use-create-conversation-mutation.js +38 -0
- package/dist/features/chat/queries/use-get-chat-query.d.ts +9 -0
- package/dist/features/chat/queries/use-get-chat-query.js +14 -0
- package/dist/features/chat/queries/use-get-conversation-query.d.ts +62 -0
- package/dist/features/chat/queries/use-get-conversation-query.js +14 -0
- package/dist/features/chat/queries/use-list-conversations-query.d.ts +29 -0
- package/dist/features/chat/queries/use-list-conversations-query.js +14 -0
- package/dist/features/chat/store.d.ts +13 -0
- package/dist/features/chat/store.js +1 -0
- package/dist/features/chat/utils.d.ts +5 -0
- package/dist/features/chat/utils.js +1 -0
- package/dist/features/data-fetching/use-api-client.d.ts +5 -0
- package/dist/features/data-fetching/use-api-client.js +14 -0
- package/dist/features/logger/logger.d.ts +9 -0
- package/dist/features/logger/logger.js +1 -0
- package/dist/features/molecule/chatsdk-provider.d.ts +19 -0
- package/dist/features/molecule/chatsdk-provider.js +26 -0
- package/dist/features/molecule/constants.d.ts +3 -0
- package/dist/features/molecule/constants.js +1 -0
- package/dist/features/molecule/molecule-provider.d.ts +39 -0
- package/dist/features/molecule/molecule-provider.js +1 -0
- package/dist/features/molecule/store.d.ts +53 -0
- package/dist/features/molecule/store.js +3 -0
- package/dist/features/molecule/types/api.d.ts +8 -0
- package/dist/features/molecule/types/api.js +1 -0
- package/dist/features/molecule/types/callbacks.d.ts +22 -0
- package/dist/features/molecule/types/callbacks.js +1 -0
- package/dist/features/molecule/types/config.d.ts +10 -0
- package/dist/features/molecule/types/config.js +1 -0
- package/dist/features/molecule/types/context.d.ts +11 -0
- package/dist/features/molecule/types/context.js +1 -0
- package/dist/features/molecule/types/locale.d.ts +9 -0
- package/dist/features/molecule/types/locale.js +1 -0
- package/dist/features/molecule/types/theme.d.ts +38 -0
- package/dist/features/molecule/types/theme.js +1 -0
- package/dist/features/molecule/types/translations.d.ts +10 -0
- package/dist/features/molecule/types/translations.js +1 -0
- package/dist/features/molecule/use-merge-global-config.d.ts +22 -0
- package/dist/features/molecule/use-merge-global-config.js +5 -0
- package/dist/features/molecule/use-molecule-config.d.ts +41 -0
- package/dist/features/molecule/use-molecule-config.js +6 -0
- package/dist/features/molecule/utils.d.ts +10 -0
- package/dist/features/molecule/utils.js +1 -0
- package/dist/i18n/config.d.ts +61 -0
- package/dist/i18n/config.js +1 -0
- package/dist/i18n/i18next.d.ts +11 -0
- package/dist/i18n/i18next.js +2 -0
- package/dist/i18n/utils.d.ts +11 -0
- package/dist/i18n/utils.js +6 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/styles.css +6811 -0
- package/package.json +123 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { Badge } from '@chatsdk-dev/ui/components/badge';
|
|
2
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '@chatsdk-dev/ui/components/collapsible';
|
|
3
|
+
import { cn } from '@chatsdk-dev/ui/lib/utils';
|
|
4
|
+
import { CheckCircle2Icon, XCircleIcon, CircleIcon, ChevronRightIcon, CircleDotIcon } from 'lucide-react';
|
|
5
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var TestResultsContext = createContext({});
|
|
9
|
+
var formatDuration = (ms) => {
|
|
10
|
+
if (ms < 1e3) {
|
|
11
|
+
return `${ms}ms`;
|
|
12
|
+
}
|
|
13
|
+
return `${(ms / 1e3).toFixed(2)}s`;
|
|
14
|
+
};
|
|
15
|
+
var TestResultsHeader = ({
|
|
16
|
+
className,
|
|
17
|
+
children,
|
|
18
|
+
...props
|
|
19
|
+
}) => /* @__PURE__ */ jsx(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
className: cn(
|
|
23
|
+
"flex items-center justify-between border-b px-4 py-3",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
...props,
|
|
27
|
+
children
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
var TestResultsDuration = ({
|
|
31
|
+
className,
|
|
32
|
+
children,
|
|
33
|
+
...props
|
|
34
|
+
}) => {
|
|
35
|
+
const { summary } = useContext(TestResultsContext);
|
|
36
|
+
if (!summary?.duration) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground text-sm", className), ...props, children: children ?? formatDuration(summary.duration) });
|
|
40
|
+
};
|
|
41
|
+
var TestResultsSummary = ({
|
|
42
|
+
className,
|
|
43
|
+
children,
|
|
44
|
+
...props
|
|
45
|
+
}) => {
|
|
46
|
+
const { summary } = useContext(TestResultsContext);
|
|
47
|
+
if (!summary) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-3", className), ...props, children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51
|
+
/* @__PURE__ */ jsxs(
|
|
52
|
+
Badge,
|
|
53
|
+
{
|
|
54
|
+
className: "gap-1 bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",
|
|
55
|
+
variant: "secondary",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsx(CheckCircle2Icon, { className: "size-3" }),
|
|
58
|
+
summary.passed,
|
|
59
|
+
" passed"
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
summary.failed > 0 && /* @__PURE__ */ jsxs(
|
|
64
|
+
Badge,
|
|
65
|
+
{
|
|
66
|
+
className: "gap-1 bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400",
|
|
67
|
+
variant: "secondary",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx(XCircleIcon, { className: "size-3" }),
|
|
70
|
+
summary.failed,
|
|
71
|
+
" failed"
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
summary.skipped > 0 && /* @__PURE__ */ jsxs(
|
|
76
|
+
Badge,
|
|
77
|
+
{
|
|
78
|
+
className: "gap-1 bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",
|
|
79
|
+
variant: "secondary",
|
|
80
|
+
children: [
|
|
81
|
+
/* @__PURE__ */ jsx(CircleIcon, { className: "size-3" }),
|
|
82
|
+
summary.skipped,
|
|
83
|
+
" skipped"
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
] }) });
|
|
88
|
+
};
|
|
89
|
+
var TestResults = ({
|
|
90
|
+
summary,
|
|
91
|
+
className,
|
|
92
|
+
children,
|
|
93
|
+
...props
|
|
94
|
+
}) => {
|
|
95
|
+
const contextValue = useMemo(() => ({ summary }), [summary]);
|
|
96
|
+
return /* @__PURE__ */ jsx(TestResultsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
97
|
+
"div",
|
|
98
|
+
{
|
|
99
|
+
className: cn("rounded-lg border bg-background", className),
|
|
100
|
+
...props,
|
|
101
|
+
children: children ?? (summary && /* @__PURE__ */ jsxs(TestResultsHeader, { children: [
|
|
102
|
+
/* @__PURE__ */ jsx(TestResultsSummary, {}),
|
|
103
|
+
/* @__PURE__ */ jsx(TestResultsDuration, {})
|
|
104
|
+
] }))
|
|
105
|
+
}
|
|
106
|
+
) });
|
|
107
|
+
};
|
|
108
|
+
var TestResultsProgress = ({
|
|
109
|
+
className,
|
|
110
|
+
children,
|
|
111
|
+
...props
|
|
112
|
+
}) => {
|
|
113
|
+
const { summary } = useContext(TestResultsContext);
|
|
114
|
+
if (!summary) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const passedPercent = summary.passed / summary.total * 100;
|
|
118
|
+
const failedPercent = summary.failed / summary.total * 100;
|
|
119
|
+
return /* @__PURE__ */ jsx("div", { className: cn("space-y-2", className), ...props, children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
120
|
+
/* @__PURE__ */ jsxs("div", { className: "flex h-2 overflow-hidden rounded-full bg-muted", children: [
|
|
121
|
+
/* @__PURE__ */ jsx(
|
|
122
|
+
"div",
|
|
123
|
+
{
|
|
124
|
+
className: "bg-green-500 transition-all",
|
|
125
|
+
style: { width: `${passedPercent}%` }
|
|
126
|
+
}
|
|
127
|
+
),
|
|
128
|
+
/* @__PURE__ */ jsx(
|
|
129
|
+
"div",
|
|
130
|
+
{
|
|
131
|
+
className: "bg-red-500 transition-all",
|
|
132
|
+
style: { width: `${failedPercent}%` }
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
] }),
|
|
136
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between text-muted-foreground text-xs", children: [
|
|
137
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
138
|
+
summary.passed,
|
|
139
|
+
"/",
|
|
140
|
+
summary.total,
|
|
141
|
+
" tests passed"
|
|
142
|
+
] }),
|
|
143
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
144
|
+
passedPercent.toFixed(0),
|
|
145
|
+
"%"
|
|
146
|
+
] })
|
|
147
|
+
] })
|
|
148
|
+
] }) });
|
|
149
|
+
};
|
|
150
|
+
var TestResultsContent = ({
|
|
151
|
+
className,
|
|
152
|
+
children,
|
|
153
|
+
...props
|
|
154
|
+
}) => /* @__PURE__ */ jsx("div", { className: cn("space-y-2 p-4", className), ...props, children });
|
|
155
|
+
var TestSuiteContext = createContext({
|
|
156
|
+
name: "",
|
|
157
|
+
status: "passed"
|
|
158
|
+
});
|
|
159
|
+
var statusStyles = {
|
|
160
|
+
failed: "text-red-600 dark:text-red-400",
|
|
161
|
+
passed: "text-green-600 dark:text-green-400",
|
|
162
|
+
running: "text-blue-600 dark:text-blue-400",
|
|
163
|
+
skipped: "text-yellow-600 dark:text-yellow-400"
|
|
164
|
+
};
|
|
165
|
+
var statusIcons = {
|
|
166
|
+
failed: /* @__PURE__ */ jsx(XCircleIcon, { className: "size-4" }),
|
|
167
|
+
passed: /* @__PURE__ */ jsx(CheckCircle2Icon, { className: "size-4" }),
|
|
168
|
+
running: /* @__PURE__ */ jsx(CircleDotIcon, { className: "size-4 animate-pulse" }),
|
|
169
|
+
skipped: /* @__PURE__ */ jsx(CircleIcon, { className: "size-4" })
|
|
170
|
+
};
|
|
171
|
+
var TestStatusIcon = ({ status }) => /* @__PURE__ */ jsx("span", { className: cn("shrink-0", statusStyles[status]), children: statusIcons[status] });
|
|
172
|
+
var TestSuite = ({
|
|
173
|
+
name,
|
|
174
|
+
status,
|
|
175
|
+
className,
|
|
176
|
+
children,
|
|
177
|
+
...props
|
|
178
|
+
}) => {
|
|
179
|
+
const contextValue = useMemo(() => ({ name, status }), [name, status]);
|
|
180
|
+
return /* @__PURE__ */ jsx(TestSuiteContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(Collapsible, { className: cn("rounded-lg border", className), ...props, children }) });
|
|
181
|
+
};
|
|
182
|
+
var TestSuiteName = ({
|
|
183
|
+
className,
|
|
184
|
+
children,
|
|
185
|
+
...props
|
|
186
|
+
}) => {
|
|
187
|
+
const { name, status } = useContext(TestSuiteContext);
|
|
188
|
+
return /* @__PURE__ */ jsxs(
|
|
189
|
+
CollapsibleTrigger,
|
|
190
|
+
{
|
|
191
|
+
className: cn(
|
|
192
|
+
"group flex w-full items-center gap-2 px-4 py-3 text-left transition-colors hover:bg-muted/50",
|
|
193
|
+
className
|
|
194
|
+
),
|
|
195
|
+
...props,
|
|
196
|
+
children: [
|
|
197
|
+
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90" }),
|
|
198
|
+
/* @__PURE__ */ jsx(TestStatusIcon, { status }),
|
|
199
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-sm", children: children ?? name })
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
};
|
|
204
|
+
var TestSuiteStats = ({
|
|
205
|
+
passed = 0,
|
|
206
|
+
failed = 0,
|
|
207
|
+
skipped = 0,
|
|
208
|
+
className,
|
|
209
|
+
children,
|
|
210
|
+
...props
|
|
211
|
+
}) => /* @__PURE__ */ jsx(
|
|
212
|
+
"div",
|
|
213
|
+
{
|
|
214
|
+
className: cn("ml-auto flex items-center gap-2 text-xs", className),
|
|
215
|
+
...props,
|
|
216
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
217
|
+
passed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-green-600 dark:text-green-400", children: [
|
|
218
|
+
passed,
|
|
219
|
+
" passed"
|
|
220
|
+
] }),
|
|
221
|
+
failed > 0 && /* @__PURE__ */ jsxs("span", { className: "text-red-600 dark:text-red-400", children: [
|
|
222
|
+
failed,
|
|
223
|
+
" failed"
|
|
224
|
+
] }),
|
|
225
|
+
skipped > 0 && /* @__PURE__ */ jsxs("span", { className: "text-yellow-600 dark:text-yellow-400", children: [
|
|
226
|
+
skipped,
|
|
227
|
+
" skipped"
|
|
228
|
+
] })
|
|
229
|
+
] })
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
var TestSuiteContent = ({
|
|
233
|
+
className,
|
|
234
|
+
children,
|
|
235
|
+
...props
|
|
236
|
+
}) => /* @__PURE__ */ jsx(CollapsibleContent, { className: cn("border-t", className), ...props, children: /* @__PURE__ */ jsx("div", { className: "divide-y", children }) });
|
|
237
|
+
var TestContext = createContext({
|
|
238
|
+
name: "",
|
|
239
|
+
status: "passed"
|
|
240
|
+
});
|
|
241
|
+
var TestName = ({ className, children, ...props }) => {
|
|
242
|
+
const { name } = useContext(TestContext);
|
|
243
|
+
return /* @__PURE__ */ jsx("span", { className: cn("flex-1", className), ...props, children: children ?? name });
|
|
244
|
+
};
|
|
245
|
+
var TestDuration = ({
|
|
246
|
+
className,
|
|
247
|
+
children,
|
|
248
|
+
...props
|
|
249
|
+
}) => {
|
|
250
|
+
const { duration } = useContext(TestContext);
|
|
251
|
+
if (duration === void 0) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
return /* @__PURE__ */ jsx(
|
|
255
|
+
"span",
|
|
256
|
+
{
|
|
257
|
+
className: cn("ml-auto text-muted-foreground text-xs", className),
|
|
258
|
+
...props,
|
|
259
|
+
children: children ?? `${duration}ms`
|
|
260
|
+
}
|
|
261
|
+
);
|
|
262
|
+
};
|
|
263
|
+
var TestStatus = ({
|
|
264
|
+
className,
|
|
265
|
+
children,
|
|
266
|
+
...props
|
|
267
|
+
}) => {
|
|
268
|
+
const { status } = useContext(TestContext);
|
|
269
|
+
return /* @__PURE__ */ jsx(
|
|
270
|
+
"span",
|
|
271
|
+
{
|
|
272
|
+
className: cn("shrink-0", statusStyles[status], className),
|
|
273
|
+
...props,
|
|
274
|
+
children: children ?? statusIcons[status]
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
};
|
|
278
|
+
var Test = ({
|
|
279
|
+
name,
|
|
280
|
+
status,
|
|
281
|
+
duration,
|
|
282
|
+
className,
|
|
283
|
+
children,
|
|
284
|
+
...props
|
|
285
|
+
}) => {
|
|
286
|
+
const contextValue = useMemo(
|
|
287
|
+
() => ({ duration, name, status }),
|
|
288
|
+
[duration, name, status]
|
|
289
|
+
);
|
|
290
|
+
return /* @__PURE__ */ jsx(TestContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
291
|
+
"div",
|
|
292
|
+
{
|
|
293
|
+
className: cn("flex items-center gap-2 px-4 py-2 text-sm", className),
|
|
294
|
+
...props,
|
|
295
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
296
|
+
/* @__PURE__ */ jsx(TestStatus, {}),
|
|
297
|
+
/* @__PURE__ */ jsx(TestName, {}),
|
|
298
|
+
duration !== void 0 && /* @__PURE__ */ jsx(TestDuration, {})
|
|
299
|
+
] })
|
|
300
|
+
}
|
|
301
|
+
) });
|
|
302
|
+
};
|
|
303
|
+
var TestError = ({
|
|
304
|
+
className,
|
|
305
|
+
children,
|
|
306
|
+
...props
|
|
307
|
+
}) => /* @__PURE__ */ jsx(
|
|
308
|
+
"div",
|
|
309
|
+
{
|
|
310
|
+
className: cn(
|
|
311
|
+
"mt-2 rounded-md bg-red-50 p-3 dark:bg-red-900/20",
|
|
312
|
+
className
|
|
313
|
+
),
|
|
314
|
+
...props,
|
|
315
|
+
children
|
|
316
|
+
}
|
|
317
|
+
);
|
|
318
|
+
var TestErrorMessage = ({
|
|
319
|
+
className,
|
|
320
|
+
children,
|
|
321
|
+
...props
|
|
322
|
+
}) => /* @__PURE__ */ jsx(
|
|
323
|
+
"p",
|
|
324
|
+
{
|
|
325
|
+
className: cn(
|
|
326
|
+
"font-medium text-red-700 text-sm dark:text-red-400",
|
|
327
|
+
className
|
|
328
|
+
),
|
|
329
|
+
...props,
|
|
330
|
+
children
|
|
331
|
+
}
|
|
332
|
+
);
|
|
333
|
+
var TestErrorStack = ({
|
|
334
|
+
className,
|
|
335
|
+
children,
|
|
336
|
+
...props
|
|
337
|
+
}) => /* @__PURE__ */ jsx(
|
|
338
|
+
"pre",
|
|
339
|
+
{
|
|
340
|
+
className: cn(
|
|
341
|
+
"mt-2 overflow-auto font-mono text-red-600 text-xs dark:text-red-400",
|
|
342
|
+
className
|
|
343
|
+
),
|
|
344
|
+
...props,
|
|
345
|
+
children
|
|
346
|
+
}
|
|
347
|
+
);
|
|
348
|
+
|
|
349
|
+
export { Test, TestDuration, TestError, TestErrorMessage, TestErrorStack, TestName, TestResults, TestResultsContent, TestResultsDuration, TestResultsHeader, TestResultsProgress, TestResultsSummary, TestStatus, TestSuite, TestSuiteContent, TestSuiteName, TestSuiteStats };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Collapsible, CollapsibleContent } from '@chatsdk-dev/ui/components/collapsible';
|
|
3
|
+
import { ToolUIPart, DynamicToolUIPart } from 'ai';
|
|
4
|
+
import { ComponentProps } from 'react';
|
|
5
|
+
|
|
6
|
+
type ToolProps = ComponentProps<typeof Collapsible>;
|
|
7
|
+
declare const Tool: ({ className, ...props }: ToolProps) => react_jsx_runtime.JSX.Element;
|
|
8
|
+
type ToolPart = ToolUIPart | DynamicToolUIPart;
|
|
9
|
+
type ToolHeaderProps = {
|
|
10
|
+
title?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
} & ({
|
|
13
|
+
type: ToolUIPart["type"];
|
|
14
|
+
state: ToolUIPart["state"];
|
|
15
|
+
toolName?: never;
|
|
16
|
+
} | {
|
|
17
|
+
type: DynamicToolUIPart["type"];
|
|
18
|
+
state: DynamicToolUIPart["state"];
|
|
19
|
+
toolName: string;
|
|
20
|
+
});
|
|
21
|
+
declare const getStatusBadge: (status: ToolPart["state"]) => react_jsx_runtime.JSX.Element;
|
|
22
|
+
declare const ToolHeader: ({ className, title, type, state, toolName, ...props }: ToolHeaderProps) => react_jsx_runtime.JSX.Element;
|
|
23
|
+
type ToolContentProps = ComponentProps<typeof CollapsibleContent>;
|
|
24
|
+
declare const ToolContent: ({ className, ...props }: ToolContentProps) => react_jsx_runtime.JSX.Element;
|
|
25
|
+
type ToolInputProps = ComponentProps<"div"> & {
|
|
26
|
+
input: ToolPart["input"];
|
|
27
|
+
};
|
|
28
|
+
declare const ToolInput: ({ className, input, ...props }: ToolInputProps) => react_jsx_runtime.JSX.Element;
|
|
29
|
+
type ToolOutputProps = ComponentProps<"div"> & {
|
|
30
|
+
output: ToolPart["output"];
|
|
31
|
+
errorText: ToolPart["errorText"];
|
|
32
|
+
};
|
|
33
|
+
declare const ToolOutput: ({ className, output, errorText, ...props }: ToolOutputProps) => react_jsx_runtime.JSX.Element | null;
|
|
34
|
+
|
|
35
|
+
export { Tool, ToolContent, type ToolContentProps, ToolHeader, type ToolHeaderProps, ToolInput, type ToolInputProps, ToolOutput, type ToolOutputProps, type ToolPart, type ToolProps, getStatusBadge };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { NodeToolbar } from '@xyflow/react';
|
|
3
|
+
import { ComponentProps } from 'react';
|
|
4
|
+
|
|
5
|
+
type ToolbarProps = ComponentProps<typeof NodeToolbar>;
|
|
6
|
+
declare const Toolbar: ({ className, ...props }: ToolbarProps) => react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { Toolbar };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cn } from '@chatsdk-dev/ui/lib/utils';
|
|
2
|
+
import { NodeToolbar, Position } from '@xyflow/react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/components/ai-elements/toolbar.tsx
|
|
6
|
+
var Toolbar = ({ className, ...props }) => /* @__PURE__ */ jsx(
|
|
7
|
+
NodeToolbar,
|
|
8
|
+
{
|
|
9
|
+
className: cn(
|
|
10
|
+
"flex items-center gap-1 rounded-sm border bg-background p-1.5",
|
|
11
|
+
className
|
|
12
|
+
),
|
|
13
|
+
position: Position.Bottom,
|
|
14
|
+
...props
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { Toolbar };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Experimental_TranscriptionResult } from 'ai';
|
|
3
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
4
|
+
|
|
5
|
+
type TranscriptionProps = Omit<ComponentProps<"div">, "children"> & {
|
|
6
|
+
segments: TranscriptionSegment[];
|
|
7
|
+
currentTime?: number;
|
|
8
|
+
onSeek?: (time: number) => void;
|
|
9
|
+
children: (segment: TranscriptionSegment, index: number) => ReactNode;
|
|
10
|
+
};
|
|
11
|
+
declare const Transcription: ({ segments, currentTime: externalCurrentTime, onSeek, className, children, ...props }: TranscriptionProps) => react_jsx_runtime.JSX.Element;
|
|
12
|
+
type TranscriptionSegmentProps = ComponentProps<"button"> & {
|
|
13
|
+
segment: TranscriptionSegment;
|
|
14
|
+
index: number;
|
|
15
|
+
};
|
|
16
|
+
type TranscriptionSegment = Experimental_TranscriptionResult["segments"][number];
|
|
17
|
+
declare const TranscriptionSegment: ({ segment, index, className, onClick, ...props }: TranscriptionSegmentProps) => react_jsx_runtime.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { Transcription, type TranscriptionProps, TranscriptionSegment, type TranscriptionSegmentProps };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
2
|
+
import { cn } from '@chatsdk-dev/ui/lib/utils';
|
|
3
|
+
import { createContext, useMemo, useCallback, useContext } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var TranscriptionContext = createContext(
|
|
7
|
+
null
|
|
8
|
+
);
|
|
9
|
+
var useTranscription = () => {
|
|
10
|
+
const context = useContext(TranscriptionContext);
|
|
11
|
+
if (!context) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
"Transcription components must be used within Transcription"
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return context;
|
|
17
|
+
};
|
|
18
|
+
var Transcription = ({
|
|
19
|
+
segments,
|
|
20
|
+
currentTime: externalCurrentTime,
|
|
21
|
+
onSeek,
|
|
22
|
+
className,
|
|
23
|
+
children,
|
|
24
|
+
...props
|
|
25
|
+
}) => {
|
|
26
|
+
const [currentTime, setCurrentTime] = useControllableState({
|
|
27
|
+
defaultProp: 0,
|
|
28
|
+
onChange: onSeek,
|
|
29
|
+
prop: externalCurrentTime
|
|
30
|
+
});
|
|
31
|
+
const contextValue = useMemo(
|
|
32
|
+
() => ({ currentTime, onSeek, onTimeUpdate: setCurrentTime, segments }),
|
|
33
|
+
[currentTime, onSeek, setCurrentTime, segments]
|
|
34
|
+
);
|
|
35
|
+
return /* @__PURE__ */ jsx(TranscriptionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: cn(
|
|
39
|
+
"flex flex-wrap gap-1 text-sm leading-relaxed",
|
|
40
|
+
className
|
|
41
|
+
),
|
|
42
|
+
"data-slot": "transcription",
|
|
43
|
+
...props,
|
|
44
|
+
children: segments.filter((segment) => segment.text.trim()).map((segment, index) => children(segment, index))
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
};
|
|
48
|
+
var TranscriptionSegment = ({
|
|
49
|
+
segment,
|
|
50
|
+
index,
|
|
51
|
+
className,
|
|
52
|
+
onClick,
|
|
53
|
+
...props
|
|
54
|
+
}) => {
|
|
55
|
+
const { currentTime, onSeek } = useTranscription();
|
|
56
|
+
const isActive = currentTime >= segment.startSecond && currentTime < segment.endSecond;
|
|
57
|
+
const isPast = currentTime >= segment.endSecond;
|
|
58
|
+
const handleClick = useCallback(
|
|
59
|
+
(event) => {
|
|
60
|
+
if (onSeek) {
|
|
61
|
+
onSeek(segment.startSecond);
|
|
62
|
+
}
|
|
63
|
+
onClick?.(event);
|
|
64
|
+
},
|
|
65
|
+
[onSeek, segment.startSecond, onClick]
|
|
66
|
+
);
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
"button",
|
|
69
|
+
{
|
|
70
|
+
className: cn(
|
|
71
|
+
"inline text-left",
|
|
72
|
+
isActive && "text-primary",
|
|
73
|
+
isPast && "text-muted-foreground",
|
|
74
|
+
!(isActive || isPast) && "text-muted-foreground/60",
|
|
75
|
+
onSeek && "cursor-pointer hover:text-foreground",
|
|
76
|
+
!onSeek && "cursor-default",
|
|
77
|
+
className
|
|
78
|
+
),
|
|
79
|
+
"data-active": isActive,
|
|
80
|
+
"data-index": index,
|
|
81
|
+
"data-slot": "transcription-segment",
|
|
82
|
+
onClick: handleClick,
|
|
83
|
+
type: "button",
|
|
84
|
+
...props,
|
|
85
|
+
children: segment.text
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export { Transcription, TranscriptionSegment };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from '@chatsdk-dev/ui/components/command';
|
|
3
|
+
import { Dialog, DialogContent, DialogTrigger } from '@chatsdk-dev/ui/components/dialog';
|
|
4
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
interface VoiceSelectorContextValue {
|
|
7
|
+
value: string | undefined;
|
|
8
|
+
setValue: (value: string | undefined) => void;
|
|
9
|
+
open: boolean;
|
|
10
|
+
setOpen: (open: boolean) => void;
|
|
11
|
+
}
|
|
12
|
+
declare const useVoiceSelector: () => VoiceSelectorContextValue;
|
|
13
|
+
type VoiceSelectorProps = ComponentProps<typeof Dialog> & {
|
|
14
|
+
value?: string;
|
|
15
|
+
defaultValue?: string;
|
|
16
|
+
onValueChange?: (value: string | undefined) => void;
|
|
17
|
+
};
|
|
18
|
+
declare const VoiceSelector: ({ value: valueProp, defaultValue, onValueChange, open: openProp, defaultOpen, onOpenChange, children, ...props }: VoiceSelectorProps) => react_jsx_runtime.JSX.Element;
|
|
19
|
+
type VoiceSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;
|
|
20
|
+
declare const VoiceSelectorTrigger: (props: VoiceSelectorTriggerProps) => react_jsx_runtime.JSX.Element;
|
|
21
|
+
type VoiceSelectorContentProps = ComponentProps<typeof DialogContent> & {
|
|
22
|
+
title?: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
declare const VoiceSelectorContent: ({ className, children, title, ...props }: VoiceSelectorContentProps) => react_jsx_runtime.JSX.Element;
|
|
25
|
+
type VoiceSelectorDialogProps = ComponentProps<typeof CommandDialog>;
|
|
26
|
+
declare const VoiceSelectorDialog: (props: VoiceSelectorDialogProps) => react_jsx_runtime.JSX.Element;
|
|
27
|
+
type VoiceSelectorInputProps = ComponentProps<typeof CommandInput>;
|
|
28
|
+
declare const VoiceSelectorInput: ({ className, ...props }: VoiceSelectorInputProps) => react_jsx_runtime.JSX.Element;
|
|
29
|
+
type VoiceSelectorListProps = ComponentProps<typeof CommandList>;
|
|
30
|
+
declare const VoiceSelectorList: (props: VoiceSelectorListProps) => react_jsx_runtime.JSX.Element;
|
|
31
|
+
type VoiceSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;
|
|
32
|
+
declare const VoiceSelectorEmpty: (props: VoiceSelectorEmptyProps) => react_jsx_runtime.JSX.Element;
|
|
33
|
+
type VoiceSelectorGroupProps = ComponentProps<typeof CommandGroup>;
|
|
34
|
+
declare const VoiceSelectorGroup: (props: VoiceSelectorGroupProps) => react_jsx_runtime.JSX.Element;
|
|
35
|
+
type VoiceSelectorItemProps = ComponentProps<typeof CommandItem>;
|
|
36
|
+
declare const VoiceSelectorItem: ({ className, ...props }: VoiceSelectorItemProps) => react_jsx_runtime.JSX.Element;
|
|
37
|
+
type VoiceSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;
|
|
38
|
+
declare const VoiceSelectorShortcut: (props: VoiceSelectorShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
39
|
+
type VoiceSelectorSeparatorProps = ComponentProps<typeof CommandSeparator>;
|
|
40
|
+
declare const VoiceSelectorSeparator: (props: VoiceSelectorSeparatorProps) => react_jsx_runtime.JSX.Element;
|
|
41
|
+
type VoiceSelectorGenderProps = ComponentProps<"span"> & {
|
|
42
|
+
value?: "male" | "female" | "transgender" | "androgyne" | "non-binary" | "intersex";
|
|
43
|
+
};
|
|
44
|
+
declare const VoiceSelectorGender: ({ className, value, children, ...props }: VoiceSelectorGenderProps) => react_jsx_runtime.JSX.Element;
|
|
45
|
+
type VoiceSelectorAccentProps = ComponentProps<"span"> & {
|
|
46
|
+
value?: "american" | "british" | "australian" | "canadian" | "irish" | "scottish" | "indian" | "south-african" | "new-zealand" | "spanish" | "french" | "german" | "italian" | "portuguese" | "brazilian" | "mexican" | "argentinian" | "japanese" | "chinese" | "korean" | "russian" | "arabic" | "dutch" | "swedish" | "norwegian" | "danish" | "finnish" | "polish" | "turkish" | "greek" | string;
|
|
47
|
+
};
|
|
48
|
+
declare const VoiceSelectorAccent: ({ className, value, children, ...props }: VoiceSelectorAccentProps) => react_jsx_runtime.JSX.Element;
|
|
49
|
+
type VoiceSelectorAgeProps = ComponentProps<"span">;
|
|
50
|
+
declare const VoiceSelectorAge: ({ className, ...props }: VoiceSelectorAgeProps) => react_jsx_runtime.JSX.Element;
|
|
51
|
+
type VoiceSelectorNameProps = ComponentProps<"span">;
|
|
52
|
+
declare const VoiceSelectorName: ({ className, ...props }: VoiceSelectorNameProps) => react_jsx_runtime.JSX.Element;
|
|
53
|
+
type VoiceSelectorDescriptionProps = ComponentProps<"span">;
|
|
54
|
+
declare const VoiceSelectorDescription: ({ className, ...props }: VoiceSelectorDescriptionProps) => react_jsx_runtime.JSX.Element;
|
|
55
|
+
type VoiceSelectorAttributesProps = ComponentProps<"div">;
|
|
56
|
+
declare const VoiceSelectorAttributes: ({ className, children, ...props }: VoiceSelectorAttributesProps) => react_jsx_runtime.JSX.Element;
|
|
57
|
+
type VoiceSelectorBulletProps = ComponentProps<"span">;
|
|
58
|
+
declare const VoiceSelectorBullet: ({ className, ...props }: VoiceSelectorBulletProps) => react_jsx_runtime.JSX.Element;
|
|
59
|
+
type VoiceSelectorPreviewProps = Omit<ComponentProps<"button">, "children"> & {
|
|
60
|
+
playing?: boolean;
|
|
61
|
+
loading?: boolean;
|
|
62
|
+
onPlay?: () => void;
|
|
63
|
+
};
|
|
64
|
+
declare const VoiceSelectorPreview: ({ className, playing, loading, onPlay, onClick, ...props }: VoiceSelectorPreviewProps) => react_jsx_runtime.JSX.Element;
|
|
65
|
+
|
|
66
|
+
export { VoiceSelector, VoiceSelectorAccent, type VoiceSelectorAccentProps, VoiceSelectorAge, type VoiceSelectorAgeProps, VoiceSelectorAttributes, type VoiceSelectorAttributesProps, VoiceSelectorBullet, type VoiceSelectorBulletProps, VoiceSelectorContent, type VoiceSelectorContentProps, VoiceSelectorDescription, type VoiceSelectorDescriptionProps, VoiceSelectorDialog, type VoiceSelectorDialogProps, VoiceSelectorEmpty, type VoiceSelectorEmptyProps, VoiceSelectorGender, type VoiceSelectorGenderProps, VoiceSelectorGroup, type VoiceSelectorGroupProps, VoiceSelectorInput, type VoiceSelectorInputProps, VoiceSelectorItem, type VoiceSelectorItemProps, VoiceSelectorList, type VoiceSelectorListProps, VoiceSelectorName, type VoiceSelectorNameProps, VoiceSelectorPreview, type VoiceSelectorPreviewProps, type VoiceSelectorProps, VoiceSelectorSeparator, type VoiceSelectorSeparatorProps, VoiceSelectorShortcut, type VoiceSelectorShortcutProps, VoiceSelectorTrigger, type VoiceSelectorTriggerProps, useVoiceSelector };
|