@ciridae/ui 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/item.d.ts +1 -1
- package/dist/styled-system/styles.css +393 -61
- package/dist/styles.css +2 -0
- package/package.json +2 -260
- package/dist/components/agentic/agent-card.d.ts +0 -28
- package/dist/components/agentic/agent-card.js +0 -27
- package/dist/components/agentic/agent-composer.d.ts +0 -44
- package/dist/components/agentic/agent-composer.js +0 -104
- package/dist/components/agentic/agent-context.d.ts +0 -28
- package/dist/components/agentic/agent-context.js +0 -102
- package/dist/components/agentic/agent-plan.d.ts +0 -27
- package/dist/components/agentic/agent-plan.js +0 -43
- package/dist/components/agentic/agent-queue.d.ts +0 -46
- package/dist/components/agentic/agent-queue.js +0 -53
- package/dist/components/agentic/agent-task.d.ts +0 -16
- package/dist/components/agentic/agent-task.js +0 -20
- package/dist/components/agentic/approval-request.d.ts +0 -24
- package/dist/components/agentic/approval-request.js +0 -57
- package/dist/components/agentic/artifact.d.ts +0 -24
- package/dist/components/agentic/artifact.js +0 -72
- package/dist/components/agentic/attachments.d.ts +0 -124
- package/dist/components/agentic/attachments.js +0 -595
- package/dist/components/agentic/audio-player.d.ts +0 -16
- package/dist/components/agentic/audio-player.js +0 -21
- package/dist/components/agentic/canvas.d.ts +0 -10
- package/dist/components/agentic/canvas.js +0 -22
- package/dist/components/agentic/clipboard.d.ts +0 -2
- package/dist/components/agentic/clipboard.js +0 -12
- package/dist/components/agentic/code-block.d.ts +0 -43
- package/dist/components/agentic/code-block.js +0 -92
- package/dist/components/agentic/commit.d.ts +0 -57
- package/dist/components/agentic/commit.js +0 -85
- package/dist/components/agentic/connection.d.ts +0 -3
- package/dist/components/agentic/connection.js +0 -8
- package/dist/components/agentic/controls.d.ts +0 -6
- package/dist/components/agentic/controls.js +0 -7
- package/dist/components/agentic/conversation.d.ts +0 -25
- package/dist/components/agentic/conversation.js +0 -56
- package/dist/components/agentic/edge.d.ts +0 -8
- package/dist/components/agentic/edge.js +0 -65
- package/dist/components/agentic/effort-selector.d.ts +0 -43
- package/dist/components/agentic/effort-selector.js +0 -47
- package/dist/components/agentic/environment-variables.d.ts +0 -32
- package/dist/components/agentic/environment-variables.js +0 -66
- package/dist/components/agentic/file-tree.d.ts +0 -24
- package/dist/components/agentic/file-tree.js +0 -56
- package/dist/components/agentic/image.d.ts +0 -9
- package/dist/components/agentic/image.js +0 -11
- package/dist/components/agentic/inline-citation.d.ts +0 -40
- package/dist/components/agentic/inline-citation.js +0 -111
- package/dist/components/agentic/jsx-preview.d.ts +0 -19
- package/dist/components/agentic/jsx-preview.js +0 -34
- package/dist/components/agentic/message-branch.d.ts +0 -20
- package/dist/components/agentic/message-branch.js +0 -83
- package/dist/components/agentic/message-response.css +0 -265
- package/dist/components/agentic/message-response.css.d.ts +0 -2
- package/dist/components/agentic/message.d.ts +0 -27
- package/dist/components/agentic/message.js +0 -57
- package/dist/components/agentic/mic-selector.d.ts +0 -58
- package/dist/components/agentic/mic-selector.js +0 -173
- package/dist/components/agentic/model-selector.d.ts +0 -39
- package/dist/components/agentic/model-selector.js +0 -47
- package/dist/components/agentic/node.d.ts +0 -26
- package/dist/components/agentic/node.js +0 -29
- package/dist/components/agentic/open-in-chat.d.ts +0 -9
- package/dist/components/agentic/open-in-chat.js +0 -8
- package/dist/components/agentic/package-info.d.ts +0 -30
- package/dist/components/agentic/package-info.js +0 -44
- package/dist/components/agentic/panel.d.ts +0 -6
- package/dist/components/agentic/panel.js +0 -7
- package/dist/components/agentic/persona.d.ts +0 -16
- package/dist/components/agentic/persona.js +0 -116
- package/dist/components/agentic/prompt-input-action-menu.d.ts +0 -16
- package/dist/components/agentic/prompt-input-action-menu.js +0 -22
- package/dist/components/agentic/prompt-input-command.d.ts +0 -18
- package/dist/components/agentic/prompt-input-command.js +0 -25
- package/dist/components/agentic/prompt-input-hover-card.d.ts +0 -10
- package/dist/components/agentic/prompt-input-hover-card.js +0 -13
- package/dist/components/agentic/prompt-input-select.d.ts +0 -14
- package/dist/components/agentic/prompt-input-select.js +0 -19
- package/dist/components/agentic/prompt-input-tabs.d.ts +0 -17
- package/dist/components/agentic/prompt-input-tabs.js +0 -45
- package/dist/components/agentic/prompt-input.d.ts +0 -79
- package/dist/components/agentic/prompt-input.js +0 -206
- package/dist/components/agentic/reasoning.d.ts +0 -21
- package/dist/components/agentic/reasoning.js +0 -106
- package/dist/components/agentic/run-checkpoint.d.ts +0 -13
- package/dist/components/agentic/run-checkpoint.js +0 -19
- package/dist/components/agentic/run-trace.d.ts +0 -30
- package/dist/components/agentic/run-trace.js +0 -56
- package/dist/components/agentic/sandbox.d.ts +0 -24
- package/dist/components/agentic/sandbox.js +0 -33
- package/dist/components/agentic/schema-display.d.ts +0 -39
- package/dist/components/agentic/schema-display.js +0 -56
- package/dist/components/agentic/shimmer.d.ts +0 -11
- package/dist/components/agentic/shimmer.js +0 -16
- package/dist/components/agentic/snippet.d.ts +0 -18
- package/dist/components/agentic/snippet.js +0 -35
- package/dist/components/agentic/sources.d.ts +0 -16
- package/dist/components/agentic/sources.js +0 -17
- package/dist/components/agentic/speech-input.d.ts +0 -24
- package/dist/components/agentic/speech-input.js +0 -30
- package/dist/components/agentic/stack-trace.d.ts +0 -27
- package/dist/components/agentic/stack-trace.js +0 -76
- package/dist/components/agentic/suggestion.d.ts +0 -12
- package/dist/components/agentic/suggestion.js +0 -15
- package/dist/components/agentic/terminal.d.ts +0 -24
- package/dist/components/agentic/terminal.js +0 -47
- package/dist/components/agentic/test-results.d.ts +0 -51
- package/dist/components/agentic/test-results.js +0 -83
- package/dist/components/agentic/theme.d.ts +0 -5
- package/dist/components/agentic/theme.js +0 -31
- package/dist/components/agentic/tool.d.ts +0 -25
- package/dist/components/agentic/tool.js +0 -73
- package/dist/components/agentic/toolbar.d.ts +0 -6
- package/dist/components/agentic/toolbar.js +0 -7
- package/dist/components/agentic/transcription.d.ts +0 -20
- package/dist/components/agentic/transcription.js +0 -32
- package/dist/components/agentic/types.d.ts +0 -172
- package/dist/components/agentic/types.js +0 -1
- package/dist/components/agentic/use-controllable-state.d.ts +0 -6
- package/dist/components/agentic/use-controllable-state.js +0 -13
- package/dist/components/agentic/voice-selector.d.ts +0 -69
- package/dist/components/agentic/voice-selector.js +0 -122
- package/dist/components/agentic/web-preview.d.ts +0 -25
- package/dist/components/agentic/web-preview.js +0 -33
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { CheckCircleIcon, CircleSlashIcon, LoaderCircleIcon, XCircleIcon } from "lucide-react";
|
|
3
|
-
import { createContext, useContext, useMemo } from "react";
|
|
4
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
|
|
5
|
-
import { Progress } from "@ciridae/ui/progress";
|
|
6
|
-
import { cn } from "@ciridae/ui/utils";
|
|
7
|
-
const TestResultsContext = createContext({});
|
|
8
|
-
const TestSuiteContext = createContext({ status: "passed" });
|
|
9
|
-
const TestContext = createContext({ status: "passed" });
|
|
10
|
-
function TestResults({ children, className, failed, passed, running, skipped, total, ...props }) {
|
|
11
|
-
const contextValue = useMemo(() => ({ failed, passed, running, skipped, total }), [failed, passed, running, skipped, total]);
|
|
12
|
-
return (_jsx(TestResultsContext.Provider, { value: contextValue, children: _jsx("div", { "data-slot": "test-results", className: cn("grid gap-3 rounded-lg border bg-card p-4", className), ...props, children: children }) }));
|
|
13
|
-
}
|
|
14
|
-
function TestResultsHeader({ className, ...props }) {
|
|
15
|
-
return (_jsx("div", { "data-slot": "test-results-header", className: cn("flex items-center justify-between gap-3", className), ...props }));
|
|
16
|
-
}
|
|
17
|
-
function TestResultsDuration({ className, ...props }) {
|
|
18
|
-
return (_jsx("span", { "data-slot": "test-results-duration", className: cn("font-mono text-xs text-muted-foreground", className), ...props }));
|
|
19
|
-
}
|
|
20
|
-
function TestResultsSummary({ className, ...props }) {
|
|
21
|
-
const summary = useContext(TestResultsContext);
|
|
22
|
-
return (_jsx("div", { "data-slot": "test-results-summary", className: cn("text-sm text-muted-foreground", className), ...props, children: props.children ?? formatSummary(summary) }));
|
|
23
|
-
}
|
|
24
|
-
function TestResultsProgress(props) {
|
|
25
|
-
const { passed = 0, total = 0 } = useContext(TestResultsContext);
|
|
26
|
-
const value = total > 0 ? Math.round((passed / total) * 100) : 0;
|
|
27
|
-
return _jsx(Progress, { "data-slot": "test-results-progress", value: value, ...props });
|
|
28
|
-
}
|
|
29
|
-
function TestResultsContent({ className, ...props }) {
|
|
30
|
-
return _jsx("div", { "data-slot": "test-results-content", className: cn("grid gap-2", className), ...props });
|
|
31
|
-
}
|
|
32
|
-
function TestSuite({ children, className, defaultOpen = true, status = "passed", ...props }) {
|
|
33
|
-
const contextValue = useMemo(() => ({ status }), [status]);
|
|
34
|
-
return (_jsx(TestSuiteContext.Provider, { value: contextValue, children: _jsx(Collapsible, { "data-slot": "test-suite", className: cn("rounded-md border", className), defaultOpen: defaultOpen, ...props, children: children }) }));
|
|
35
|
-
}
|
|
36
|
-
function TestSuiteName({ className, ...props }) {
|
|
37
|
-
const { status } = useContext(TestSuiteContext);
|
|
38
|
-
return (_jsxs(CollapsibleTrigger, { "data-slot": "test-suite-name", className: cn("flex w-full items-center gap-2 px-3 py-2 text-left text-sm font-medium", className), ...props, children: [_jsx(TestStatusIcon, { status: status }), props.children] }));
|
|
39
|
-
}
|
|
40
|
-
function TestSuiteStats({ className, ...props }) {
|
|
41
|
-
return (_jsx("div", { "data-slot": "test-suite-stats", className: cn("px-3 pb-2 text-xs text-muted-foreground", className), ...props }));
|
|
42
|
-
}
|
|
43
|
-
function TestSuiteContent({ className, ...props }) {
|
|
44
|
-
return (_jsx(CollapsibleContent, { "data-slot": "test-suite-content", className: cn("grid gap-1 border-t p-2", className), ...props }));
|
|
45
|
-
}
|
|
46
|
-
function Test({ children, className, status = "passed", ...props }) {
|
|
47
|
-
const contextValue = useMemo(() => ({ status }), [status]);
|
|
48
|
-
return (_jsx(TestContext.Provider, { value: contextValue, children: _jsx("div", { "data-slot": "test", className: cn("grid gap-1 rounded-md px-2 py-1 text-sm", className), ...props, children: children }) }));
|
|
49
|
-
}
|
|
50
|
-
function TestName({ className, ...props }) {
|
|
51
|
-
const { status } = useContext(TestContext);
|
|
52
|
-
return (_jsxs("span", { "data-slot": "test-name", className: cn("flex items-center gap-2", className), ...props, children: [_jsx(TestStatusIcon, { status: status }), props.children] }));
|
|
53
|
-
}
|
|
54
|
-
function TestDuration({ className, ...props }) {
|
|
55
|
-
return (_jsx("span", { "data-slot": "test-duration", className: cn("font-mono text-xs text-muted-foreground", className), ...props }));
|
|
56
|
-
}
|
|
57
|
-
function TestStatus({ className, ...props }) {
|
|
58
|
-
const { status } = useContext(TestContext);
|
|
59
|
-
return (_jsx("span", { "data-slot": "test-status", className: cn("text-meta text-muted-foreground", className), ...props, children: props.children ?? status }));
|
|
60
|
-
}
|
|
61
|
-
function TestError({ className, ...props }) {
|
|
62
|
-
return (_jsx("div", { "data-slot": "test-error", className: cn("rounded-md border p-2", className), ...props }));
|
|
63
|
-
}
|
|
64
|
-
function TestErrorMessage({ className, ...props }) {
|
|
65
|
-
return (_jsx("p", { "data-slot": "test-error-message", className: cn("text-sm text-destructive", className), ...props }));
|
|
66
|
-
}
|
|
67
|
-
function TestErrorStack({ className, ...props }) {
|
|
68
|
-
return (_jsx("pre", { "data-slot": "test-error-stack", className: cn("overflow-auto font-mono text-xs text-muted-foreground", className), ...props }));
|
|
69
|
-
}
|
|
70
|
-
function TestStatusIcon({ status }) {
|
|
71
|
-
const Icon = status === "passed"
|
|
72
|
-
? CheckCircleIcon
|
|
73
|
-
: status === "failed"
|
|
74
|
-
? XCircleIcon
|
|
75
|
-
: status === "running"
|
|
76
|
-
? LoaderCircleIcon
|
|
77
|
-
: CircleSlashIcon;
|
|
78
|
-
return _jsx(Icon, { "aria-hidden": "true", className: "size-4 shrink-0" });
|
|
79
|
-
}
|
|
80
|
-
function formatSummary({ failed = 0, passed = 0, skipped = 0, total = 0, }) {
|
|
81
|
-
return `${passed}/${total} passed, ${failed} failed, ${skipped} skipped`;
|
|
82
|
-
}
|
|
83
|
-
export { Test, TestDuration, TestError, TestErrorMessage, TestErrorStack, TestName, TestResults, TestResultsContent, TestResultsDuration, TestResultsHeader, TestResultsProgress, TestResultsSummary, TestStatus, TestSuite, TestSuiteContent, TestSuiteName, TestSuiteStats, };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
function useAgenticTheme() {
|
|
3
|
-
const [theme, setTheme] = useState(getAgenticTheme);
|
|
4
|
-
useEffect(() => {
|
|
5
|
-
const updateTheme = () => setTheme(getAgenticTheme());
|
|
6
|
-
const observer = new MutationObserver(updateTheme);
|
|
7
|
-
observer.observe(document.documentElement, {
|
|
8
|
-
attributeFilter: ["class"],
|
|
9
|
-
attributes: true,
|
|
10
|
-
});
|
|
11
|
-
const media = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
12
|
-
media?.addEventListener("change", updateTheme);
|
|
13
|
-
return () => {
|
|
14
|
-
observer.disconnect();
|
|
15
|
-
media?.removeEventListener("change", updateTheme);
|
|
16
|
-
};
|
|
17
|
-
}, []);
|
|
18
|
-
return theme;
|
|
19
|
-
}
|
|
20
|
-
function getAgenticTheme() {
|
|
21
|
-
if (typeof window === "undefined")
|
|
22
|
-
return "light";
|
|
23
|
-
if (document.documentElement.classList.contains("light"))
|
|
24
|
-
return "light";
|
|
25
|
-
if (document.documentElement.classList.contains("dark"))
|
|
26
|
-
return "dark";
|
|
27
|
-
if (window.matchMedia?.("(prefers-color-scheme: dark)").matches)
|
|
28
|
-
return "dark";
|
|
29
|
-
return "light";
|
|
30
|
-
}
|
|
31
|
-
export { getAgenticTheme, useAgenticTheme };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
2
|
-
import type { AgenticToolState } from "@ciridae/ui/types";
|
|
3
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
|
|
4
|
-
type ToolProps = React.ComponentProps<typeof Collapsible>;
|
|
5
|
-
type ToolHeaderProps = Omit<React.ComponentProps<typeof CollapsibleTrigger>, "type"> & {
|
|
6
|
-
state: AgenticToolState;
|
|
7
|
-
title?: string;
|
|
8
|
-
toolName?: string;
|
|
9
|
-
type?: string;
|
|
10
|
-
};
|
|
11
|
-
type ToolContentProps = React.ComponentProps<typeof CollapsibleContent>;
|
|
12
|
-
type ToolInputProps = React.ComponentProps<"div"> & {
|
|
13
|
-
input?: unknown;
|
|
14
|
-
};
|
|
15
|
-
type ToolOutputProps = React.ComponentProps<"div"> & {
|
|
16
|
-
errorText?: string;
|
|
17
|
-
output?: React.ReactNode | unknown;
|
|
18
|
-
};
|
|
19
|
-
declare function Tool({ className, ...props }: ToolProps): React.JSX.Element;
|
|
20
|
-
declare function ToolHeader({ className, state, title, toolName, type, ...props }: ToolHeaderProps): React.JSX.Element;
|
|
21
|
-
declare function ToolContent({ className, ...props }: ToolContentProps): React.JSX.Element;
|
|
22
|
-
declare function ToolInput({ className, input, ...props }: ToolInputProps): React.JSX.Element | null;
|
|
23
|
-
declare function ToolOutput({ className, errorText, output, ...props }: ToolOutputProps): React.JSX.Element | null;
|
|
24
|
-
export { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput };
|
|
25
|
-
export type { ToolContentProps, ToolHeaderProps, ToolInputProps, ToolOutputProps, ToolProps };
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { CheckCircleIcon, ChevronDownIcon, CircleIcon, ClockIcon, WrenchIcon, XCircleIcon, } from "lucide-react";
|
|
3
|
-
import { isValidElement } from "react";
|
|
4
|
-
import { Badge } from "@ciridae/ui/badge";
|
|
5
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
|
|
6
|
-
import { cn } from "@ciridae/ui/utils";
|
|
7
|
-
const statusLabels = {
|
|
8
|
-
"approval-requested": "Awaiting approval",
|
|
9
|
-
"approval-responded": "Responded",
|
|
10
|
-
"input-available": "Running",
|
|
11
|
-
"input-streaming": "Pending",
|
|
12
|
-
"output-available": "Completed",
|
|
13
|
-
"output-denied": "Denied",
|
|
14
|
-
"output-error": "Error",
|
|
15
|
-
};
|
|
16
|
-
const statusVariants = {
|
|
17
|
-
"approval-requested": "warning",
|
|
18
|
-
"approval-responded": "info",
|
|
19
|
-
"input-available": "secondary",
|
|
20
|
-
"input-streaming": "outline",
|
|
21
|
-
"output-available": "success",
|
|
22
|
-
"output-denied": "warning",
|
|
23
|
-
"output-error": "destructive",
|
|
24
|
-
};
|
|
25
|
-
function Tool({ className, ...props }) {
|
|
26
|
-
return (_jsx(Collapsible, { "data-slot": "tool", className: cn("group rounded-lg border bg-card text-card-foreground", className), ...props }));
|
|
27
|
-
}
|
|
28
|
-
function ToolHeader({ className, state, title, toolName, type, ...props }) {
|
|
29
|
-
const derivedName = title ?? toolName ?? type?.replace(/^tool-/, "") ?? "Tool call";
|
|
30
|
-
return (_jsxs(CollapsibleTrigger, { "data-slot": "tool-header", className: cn("flex w-full items-center justify-between gap-3 px-3 py-2 text-sm transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:ring-[var(--focus-ring-width)] focus-visible:ring-ring focus-visible:outline-none", className), ...props, children: [_jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [_jsx(WrenchIcon, { "aria-hidden": "true", className: "size-4 shrink-0 text-muted-foreground" }), _jsx("span", { className: "min-w-0 truncate font-medium", children: derivedName }), _jsx(ToolStatusBadge, { state: state })] }), _jsx(ChevronDownIcon, { "aria-hidden": "true", className: "size-4 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-180" })] }));
|
|
31
|
-
}
|
|
32
|
-
function ToolStatusBadge({ state }) {
|
|
33
|
-
return (_jsxs(Badge, { className: "gap-1 rounded-full", variant: statusVariants[state], children: [_jsx(ToolStatusIcon, { state: state }), statusLabels[state]] }));
|
|
34
|
-
}
|
|
35
|
-
function ToolStatusIcon({ state }) {
|
|
36
|
-
if (state === "output-available" || state === "approval-responded")
|
|
37
|
-
return _jsx(CheckCircleIcon, {});
|
|
38
|
-
if (state === "output-denied" || state === "output-error")
|
|
39
|
-
return _jsx(XCircleIcon, {});
|
|
40
|
-
if (state === "approval-requested" || state === "input-available")
|
|
41
|
-
return _jsx(ClockIcon, {});
|
|
42
|
-
return _jsx(CircleIcon, {});
|
|
43
|
-
}
|
|
44
|
-
function ToolContent({ className, ...props }) {
|
|
45
|
-
return (_jsx(CollapsibleContent, { "data-slot": "tool-content", className: cn("grid gap-3 border-t px-3 py-3 text-sm", className), ...props }));
|
|
46
|
-
}
|
|
47
|
-
function ToolInput({ className, input, ...props }) {
|
|
48
|
-
if (input === undefined)
|
|
49
|
-
return null;
|
|
50
|
-
return (_jsxs("div", { "data-slot": "tool-input", className: cn("grid gap-2", className), ...props, children: [_jsx("h4", { className: "text-meta text-muted-foreground", children: "Parameters" }), _jsx(ToolCode, { value: input })] }));
|
|
51
|
-
}
|
|
52
|
-
function ToolOutput({ className, errorText, output, ...props }) {
|
|
53
|
-
if (output === undefined && !errorText)
|
|
54
|
-
return null;
|
|
55
|
-
return (_jsxs("div", { "data-slot": "tool-output", className: cn("grid gap-2", className), ...props, children: [_jsx("h4", { className: "text-meta text-muted-foreground", children: errorText ? "Error" : "Result" }), errorText ? (_jsx("div", { className: "rounded-md border border-destructive/25 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorText })) : (_jsx(ToolCode, { value: output }))] }));
|
|
56
|
-
}
|
|
57
|
-
function ToolCode({ value }) {
|
|
58
|
-
if (isValidElement(value))
|
|
59
|
-
return value;
|
|
60
|
-
const code = serializeToolValue(value);
|
|
61
|
-
return (_jsx("pre", { className: "max-h-64 overflow-auto rounded-md border bg-muted/40 p-3 font-mono text-xs text-foreground", children: _jsx("code", { children: code }) }));
|
|
62
|
-
}
|
|
63
|
-
function serializeToolValue(value) {
|
|
64
|
-
if (typeof value === "string")
|
|
65
|
-
return value;
|
|
66
|
-
try {
|
|
67
|
-
return JSON.stringify(value, null, 2);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return String(value);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
export { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
2
|
-
import { NodeToolbar } from "@xyflow/react";
|
|
3
|
-
type ToolbarProps = React.ComponentProps<typeof NodeToolbar>;
|
|
4
|
-
declare function Toolbar({ className, position, ...props }: ToolbarProps): React.JSX.Element;
|
|
5
|
-
export { Toolbar };
|
|
6
|
-
export type { ToolbarProps };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { NodeToolbar, Position } from "@xyflow/react";
|
|
3
|
-
import { cn } from "@ciridae/ui/utils";
|
|
4
|
-
function Toolbar({ className, position = Position.Top, ...props }) {
|
|
5
|
-
return (_jsx(NodeToolbar, { "data-slot": "toolbar", position: position, className: cn("flex items-center gap-1 rounded-md border bg-card p-1 shadow-xs", className), ...props }));
|
|
6
|
-
}
|
|
7
|
-
export { Toolbar };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type * as React from "react";
|
|
2
|
-
import type { AgenticTranscriptSegment } from "@ciridae/ui/types";
|
|
3
|
-
type TranscriptionProps = React.ComponentProps<"div"> & {
|
|
4
|
-
segments?: AgenticTranscriptSegment[];
|
|
5
|
-
};
|
|
6
|
-
type TranscriptionSegmentProps = React.ComponentProps<"div"> & {
|
|
7
|
-
segment?: AgenticTranscriptSegment;
|
|
8
|
-
};
|
|
9
|
-
type TranscriptionSpeakerProps = React.ComponentProps<"span">;
|
|
10
|
-
type TranscriptionTextProps = React.ComponentProps<"p">;
|
|
11
|
-
type TranscriptionTimestampProps = React.ComponentProps<"span">;
|
|
12
|
-
type TranscriptionEmptyProps = React.ComponentProps<"div">;
|
|
13
|
-
declare function Transcription({ children, className, segments, ...props }: TranscriptionProps): React.JSX.Element;
|
|
14
|
-
declare function TranscriptionSegment({ children, className, segment, ...props }: TranscriptionSegmentProps): React.JSX.Element;
|
|
15
|
-
declare function TranscriptionSpeaker({ className, ...props }: TranscriptionSpeakerProps): React.JSX.Element;
|
|
16
|
-
declare function TranscriptionText({ className, ...props }: TranscriptionTextProps): React.JSX.Element;
|
|
17
|
-
declare function TranscriptionTimestamp({ className, ...props }: TranscriptionTimestampProps): React.JSX.Element;
|
|
18
|
-
declare function TranscriptionEmpty({ className, children, ...props }: TranscriptionEmptyProps): React.JSX.Element;
|
|
19
|
-
export { Transcription, TranscriptionEmpty, TranscriptionSegment, TranscriptionSpeaker, TranscriptionText, TranscriptionTimestamp, };
|
|
20
|
-
export type { TranscriptionEmptyProps, TranscriptionProps, TranscriptionSegmentProps, TranscriptionSpeakerProps, TranscriptionTextProps, TranscriptionTimestampProps, };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Badge } from "@ciridae/ui/badge";
|
|
3
|
-
import { cn } from "@ciridae/ui/utils";
|
|
4
|
-
function Transcription({ children, className, segments, ...props }) {
|
|
5
|
-
return (_jsx("div", { "data-slot": "transcription", className: cn("grid max-h-80 gap-2 overflow-auto rounded-lg border bg-card p-3", className), ...props, children: children ??
|
|
6
|
-
(segments && segments.length > 0 ? (segments.map((segment) => _jsx(TranscriptionSegment, { segment: segment }, segment.id))) : (_jsx(TranscriptionEmpty, {}))) }));
|
|
7
|
-
}
|
|
8
|
-
function TranscriptionSegment({ children, className, segment, ...props }) {
|
|
9
|
-
return (_jsx("div", { "data-role": segment?.role, "data-slot": "transcription-segment", "data-status": segment?.status, className: cn("grid gap-1 rounded-md px-2 py-1.5", "data-[role=assistant]:bg-muted/40 data-[status=interim]:opacity-70 data-[status=error]:bg-destructive/5", className), ...props, children: children ?? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex min-w-0 items-center justify-between gap-2", children: [_jsx(TranscriptionSpeaker, { children: getSpeakerLabel(segment) }), segment?.createdAt ? (_jsx(TranscriptionTimestamp, { children: segment.createdAt })) : null] }), _jsx(TranscriptionText, { children: segment?.text }), segment?.status && segment.status !== "final" ? (_jsx(Badge, { className: "w-fit", variant: segment.status === "error" ? "destructive" : "outline", children: segment.status })) : null] })) }));
|
|
10
|
-
}
|
|
11
|
-
function TranscriptionSpeaker({ className, ...props }) {
|
|
12
|
-
return (_jsx("span", { "data-slot": "transcription-speaker", className: cn("text-xs font-medium text-muted-foreground", className), ...props }));
|
|
13
|
-
}
|
|
14
|
-
function TranscriptionText({ className, ...props }) {
|
|
15
|
-
return (_jsx("p", { "data-slot": "transcription-text", className: cn("text-sm leading-relaxed text-foreground", className), ...props }));
|
|
16
|
-
}
|
|
17
|
-
function TranscriptionTimestamp({ className, ...props }) {
|
|
18
|
-
return (_jsx("span", { "data-slot": "transcription-timestamp", className: cn("font-mono text-xs text-muted-foreground tabular-nums", className), ...props }));
|
|
19
|
-
}
|
|
20
|
-
function TranscriptionEmpty({ className, children, ...props }) {
|
|
21
|
-
return (_jsx("div", { "data-slot": "transcription-empty", className: cn("rounded-md bg-muted/40 p-4 text-sm text-muted-foreground", className), ...props, children: children ?? "No transcript yet" }));
|
|
22
|
-
}
|
|
23
|
-
function getSpeakerLabel(segment) {
|
|
24
|
-
if (!segment)
|
|
25
|
-
return "Speaker";
|
|
26
|
-
if (segment.role === "assistant")
|
|
27
|
-
return "Assistant";
|
|
28
|
-
if (segment.role === "system")
|
|
29
|
-
return "System";
|
|
30
|
-
return "You";
|
|
31
|
-
}
|
|
32
|
-
export { Transcription, TranscriptionEmpty, TranscriptionSegment, TranscriptionSpeaker, TranscriptionText, TranscriptionTimestamp, };
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
type AgenticMessageRole = "user" | "assistant" | "system";
|
|
2
|
-
type AgenticChatStatus = "idle" | "submitted" | "streaming" | "error";
|
|
3
|
-
type AgenticMessagePart = {
|
|
4
|
-
isStreaming?: boolean;
|
|
5
|
-
text: string;
|
|
6
|
-
type: "text";
|
|
7
|
-
};
|
|
8
|
-
type AgenticMessage = {
|
|
9
|
-
createdAt?: string;
|
|
10
|
-
id: string;
|
|
11
|
-
metadata?: Record<string, unknown>;
|
|
12
|
-
parts: AgenticMessagePart[];
|
|
13
|
-
role: AgenticMessageRole;
|
|
14
|
-
};
|
|
15
|
-
type AgenticPromptAttachmentKind = "file" | "screenshot" | "source";
|
|
16
|
-
type AgenticPromptAttachmentStatus = "idle" | "uploading" | "complete" | "error";
|
|
17
|
-
type AgenticPromptAttachment = {
|
|
18
|
-
error?: string;
|
|
19
|
-
file?: File;
|
|
20
|
-
id: string;
|
|
21
|
-
kind?: AgenticPromptAttachmentKind;
|
|
22
|
-
mediaType?: string;
|
|
23
|
-
metadata?: Record<string, unknown>;
|
|
24
|
-
name: string;
|
|
25
|
-
size?: number;
|
|
26
|
-
status?: AgenticPromptAttachmentStatus;
|
|
27
|
-
url?: string;
|
|
28
|
-
};
|
|
29
|
-
type AgenticPromptSubmitPayload = {
|
|
30
|
-
attachments: AgenticPromptAttachment[];
|
|
31
|
-
text: string;
|
|
32
|
-
};
|
|
33
|
-
type AgenticSource = {
|
|
34
|
-
description?: string;
|
|
35
|
-
id: string;
|
|
36
|
-
metadata?: Record<string, unknown>;
|
|
37
|
-
quote?: string;
|
|
38
|
-
title?: string;
|
|
39
|
-
url?: string;
|
|
40
|
-
};
|
|
41
|
-
type AgenticToolState = "approval-requested" | "approval-responded" | "input-available" | "input-streaming" | "output-available" | "output-denied" | "output-error";
|
|
42
|
-
type AgenticToolPart = {
|
|
43
|
-
errorText?: string;
|
|
44
|
-
id?: string;
|
|
45
|
-
input?: unknown;
|
|
46
|
-
metadata?: Record<string, unknown>;
|
|
47
|
-
output?: unknown;
|
|
48
|
-
state: AgenticToolState;
|
|
49
|
-
toolName?: string;
|
|
50
|
-
type?: string;
|
|
51
|
-
};
|
|
52
|
-
type AgenticApproval = {
|
|
53
|
-
approved?: boolean;
|
|
54
|
-
id: string;
|
|
55
|
-
reason?: string;
|
|
56
|
-
};
|
|
57
|
-
type AgenticPlanStatus = "pending" | "active" | "complete" | "error";
|
|
58
|
-
type AgenticTaskStatus = AgenticPlanStatus;
|
|
59
|
-
type AgenticQueueItem = {
|
|
60
|
-
description?: string;
|
|
61
|
-
id: string;
|
|
62
|
-
metadata?: Record<string, unknown>;
|
|
63
|
-
status?: "pending" | "completed";
|
|
64
|
-
title: string;
|
|
65
|
-
};
|
|
66
|
-
type AgenticCheckpoint = {
|
|
67
|
-
createdAt?: string;
|
|
68
|
-
id: string;
|
|
69
|
-
label?: string;
|
|
70
|
-
metadata?: Record<string, unknown>;
|
|
71
|
-
};
|
|
72
|
-
type AgenticContextUsage = {
|
|
73
|
-
cacheCostText?: string;
|
|
74
|
-
cachedInputTokens?: number;
|
|
75
|
-
inputCostText?: string;
|
|
76
|
-
inputTokens?: number;
|
|
77
|
-
maxTokens: number;
|
|
78
|
-
outputCostText?: string;
|
|
79
|
-
outputTokens?: number;
|
|
80
|
-
reasoningCostText?: string;
|
|
81
|
-
reasoningTokens?: number;
|
|
82
|
-
totalCostText?: string;
|
|
83
|
-
usedTokens: number;
|
|
84
|
-
};
|
|
85
|
-
type AgenticTraceStep = {
|
|
86
|
-
description?: string;
|
|
87
|
-
id: string;
|
|
88
|
-
label: string;
|
|
89
|
-
metadata?: Record<string, unknown>;
|
|
90
|
-
status?: "active" | "complete" | "pending";
|
|
91
|
-
};
|
|
92
|
-
type AgenticGeneratedImage = {
|
|
93
|
-
alt?: string;
|
|
94
|
-
base64?: string;
|
|
95
|
-
height?: number;
|
|
96
|
-
id?: string;
|
|
97
|
-
mediaType?: string;
|
|
98
|
-
src?: string;
|
|
99
|
-
width?: number;
|
|
100
|
-
};
|
|
101
|
-
type AgenticCommitFile = {
|
|
102
|
-
additions?: number;
|
|
103
|
-
deletions?: number;
|
|
104
|
-
path: string;
|
|
105
|
-
status?: "added" | "deleted" | "modified" | "renamed";
|
|
106
|
-
};
|
|
107
|
-
type AgenticCommitSummary = {
|
|
108
|
-
author?: string;
|
|
109
|
-
files?: AgenticCommitFile[];
|
|
110
|
-
hash: string;
|
|
111
|
-
message: string;
|
|
112
|
-
timestamp?: string;
|
|
113
|
-
};
|
|
114
|
-
type AgenticPackageDependency = {
|
|
115
|
-
name: string;
|
|
116
|
-
version?: string;
|
|
117
|
-
};
|
|
118
|
-
type AgenticTestStatus = "passed" | "failed" | "skipped" | "running";
|
|
119
|
-
type AgenticTestResult = {
|
|
120
|
-
duration?: string;
|
|
121
|
-
error?: string;
|
|
122
|
-
id: string;
|
|
123
|
-
name: string;
|
|
124
|
-
status: AgenticTestStatus;
|
|
125
|
-
};
|
|
126
|
-
type AgenticArtifact = {
|
|
127
|
-
description?: string;
|
|
128
|
-
id: string;
|
|
129
|
-
metadata?: Record<string, unknown>;
|
|
130
|
-
title: string;
|
|
131
|
-
type?: "code" | "document" | "image" | "preview" | "schema" | "terminal";
|
|
132
|
-
};
|
|
133
|
-
type AgenticPreviewState = "idle" | "loading" | "ready" | "error";
|
|
134
|
-
type AgenticSpeechStatus = "idle" | "listening" | "processing" | "speaking" | "error";
|
|
135
|
-
type AgenticMicOption = {
|
|
136
|
-
description?: string;
|
|
137
|
-
disabled?: boolean;
|
|
138
|
-
id: string;
|
|
139
|
-
label: string;
|
|
140
|
-
mediaType?: string;
|
|
141
|
-
metadata?: Record<string, unknown>;
|
|
142
|
-
};
|
|
143
|
-
type AgenticVoiceOption = {
|
|
144
|
-
accent?: string;
|
|
145
|
-
age?: string;
|
|
146
|
-
description?: string;
|
|
147
|
-
disabled?: boolean;
|
|
148
|
-
gender?: "male" | "female" | "transgender" | "androgyne" | "non-binary" | "intersex" | string;
|
|
149
|
-
id: string;
|
|
150
|
-
label: string;
|
|
151
|
-
metadata?: Record<string, unknown>;
|
|
152
|
-
previewLabel?: string;
|
|
153
|
-
provider?: string;
|
|
154
|
-
};
|
|
155
|
-
type AgenticTranscriptSegmentStatus = "interim" | "final" | "error";
|
|
156
|
-
type AgenticTranscriptSegment = {
|
|
157
|
-
createdAt?: string;
|
|
158
|
-
id: string;
|
|
159
|
-
metadata?: Record<string, unknown>;
|
|
160
|
-
role: AgenticMessageRole;
|
|
161
|
-
status?: AgenticTranscriptSegmentStatus;
|
|
162
|
-
text: string;
|
|
163
|
-
};
|
|
164
|
-
type AgenticAudioSource = {
|
|
165
|
-
description?: string;
|
|
166
|
-
duration?: string;
|
|
167
|
-
id?: string;
|
|
168
|
-
metadata?: Record<string, unknown>;
|
|
169
|
-
src?: string;
|
|
170
|
-
title?: string;
|
|
171
|
-
};
|
|
172
|
-
export type { AgenticApproval, AgenticAudioSource, AgenticArtifact, AgenticChatStatus, AgenticCheckpoint, AgenticCommitFile, AgenticCommitSummary, AgenticContextUsage, AgenticGeneratedImage, AgenticMessage, AgenticMessagePart, AgenticMessageRole, AgenticMicOption, AgenticPackageDependency, AgenticPlanStatus, AgenticPreviewState, AgenticPromptAttachment, AgenticPromptAttachmentKind, AgenticPromptAttachmentStatus, AgenticPromptSubmitPayload, AgenticQueueItem, AgenticSource, AgenticSpeechStatus, AgenticTaskStatus, AgenticTestResult, AgenticTestStatus, AgenticToolPart, AgenticToolState, AgenticTraceStep, AgenticTranscriptSegment, AgenticTranscriptSegmentStatus, AgenticVoiceOption, };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
function useControllableState({ defaultValue, onChange, value, }) {
|
|
3
|
-
const [internalValue, setInternalValue] = React.useState(defaultValue);
|
|
4
|
-
const isControlled = value !== undefined;
|
|
5
|
-
const currentValue = isControlled ? value : internalValue;
|
|
6
|
-
const setCurrentValue = React.useCallback((nextValue) => {
|
|
7
|
-
if (!isControlled)
|
|
8
|
-
setInternalValue(nextValue);
|
|
9
|
-
onChange?.(nextValue);
|
|
10
|
-
}, [isControlled, onChange]);
|
|
11
|
-
return [currentValue, setCurrentValue];
|
|
12
|
-
}
|
|
13
|
-
export { useControllableState };
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import type { AgenticVoiceOption } from "@ciridae/ui/types";
|
|
3
|
-
import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "@ciridae/ui/command";
|
|
4
|
-
import { Dialog, DialogContent, DialogTrigger } from "@ciridae/ui/dialog";
|
|
5
|
-
type VoiceSelectorContextValue = {
|
|
6
|
-
open: boolean;
|
|
7
|
-
setOpen: (open: boolean) => void;
|
|
8
|
-
setValue: (value: string | undefined) => void;
|
|
9
|
-
value: string | undefined;
|
|
10
|
-
voices: AgenticVoiceOption[];
|
|
11
|
-
};
|
|
12
|
-
type VoiceSelectorProps = React.ComponentProps<typeof Dialog> & {
|
|
13
|
-
defaultValue?: string;
|
|
14
|
-
onValueChange?: (value: string | undefined) => void;
|
|
15
|
-
value?: string;
|
|
16
|
-
voices?: AgenticVoiceOption[];
|
|
17
|
-
};
|
|
18
|
-
type VoiceSelectorTriggerProps = React.ComponentProps<typeof DialogTrigger>;
|
|
19
|
-
type VoiceSelectorContentProps = React.ComponentProps<typeof DialogContent> & {
|
|
20
|
-
title?: React.ReactNode;
|
|
21
|
-
};
|
|
22
|
-
type VoiceSelectorDialogProps = React.ComponentProps<typeof CommandDialog>;
|
|
23
|
-
type VoiceSelectorInputProps = React.ComponentProps<typeof CommandInput>;
|
|
24
|
-
type VoiceSelectorListProps = React.ComponentProps<typeof CommandList>;
|
|
25
|
-
type VoiceSelectorEmptyProps = React.ComponentProps<typeof CommandEmpty>;
|
|
26
|
-
type VoiceSelectorGroupProps = React.ComponentProps<typeof CommandGroup>;
|
|
27
|
-
type VoiceSelectorItemProps = React.ComponentProps<typeof CommandItem> & {
|
|
28
|
-
voice?: AgenticVoiceOption;
|
|
29
|
-
};
|
|
30
|
-
type VoiceSelectorShortcutProps = React.ComponentProps<typeof CommandShortcut>;
|
|
31
|
-
type VoiceSelectorSeparatorProps = React.ComponentProps<typeof CommandSeparator>;
|
|
32
|
-
type VoiceSelectorMetadataProps = React.ComponentProps<"span"> & {
|
|
33
|
-
value?: string;
|
|
34
|
-
};
|
|
35
|
-
type VoiceSelectorNameProps = React.ComponentProps<"span">;
|
|
36
|
-
type VoiceSelectorDescriptionProps = React.ComponentProps<"span">;
|
|
37
|
-
type VoiceSelectorAttributesProps = React.ComponentProps<"div">;
|
|
38
|
-
type VoiceSelectorBulletProps = React.ComponentProps<"span">;
|
|
39
|
-
type VoiceSelectorValueProps = React.ComponentProps<"span"> & {
|
|
40
|
-
placeholder?: string;
|
|
41
|
-
};
|
|
42
|
-
type VoiceSelectorPreviewProps = Omit<React.ComponentProps<"button">, "children"> & {
|
|
43
|
-
loading?: boolean;
|
|
44
|
-
onPlay?: () => void;
|
|
45
|
-
playing?: boolean;
|
|
46
|
-
};
|
|
47
|
-
declare function VoiceSelector({ children, defaultOpen, defaultValue, onOpenChange, onValueChange, open: openProp, value: valueProp, voices, ...props }: VoiceSelectorProps): React.JSX.Element;
|
|
48
|
-
declare function useVoiceSelector(): VoiceSelectorContextValue;
|
|
49
|
-
declare function VoiceSelectorTrigger(props: VoiceSelectorTriggerProps): React.JSX.Element;
|
|
50
|
-
declare function VoiceSelectorContent({ children, className, title, ...props }: VoiceSelectorContentProps): React.JSX.Element;
|
|
51
|
-
declare function VoiceSelectorDialog(props: VoiceSelectorDialogProps): React.JSX.Element;
|
|
52
|
-
declare function VoiceSelectorInput({ className, ...props }: VoiceSelectorInputProps): React.JSX.Element;
|
|
53
|
-
declare function VoiceSelectorList(props: VoiceSelectorListProps): React.JSX.Element;
|
|
54
|
-
declare function VoiceSelectorEmpty(props: VoiceSelectorEmptyProps): React.JSX.Element;
|
|
55
|
-
declare function VoiceSelectorGroup(props: VoiceSelectorGroupProps): React.JSX.Element;
|
|
56
|
-
declare function VoiceSelectorItem({ children, onSelect, value, voice, ...props }: VoiceSelectorItemProps): React.JSX.Element;
|
|
57
|
-
declare function VoiceSelectorShortcut(props: VoiceSelectorShortcutProps): React.JSX.Element;
|
|
58
|
-
declare function VoiceSelectorSeparator(props: VoiceSelectorSeparatorProps): React.JSX.Element;
|
|
59
|
-
declare function VoiceSelectorGender({ className, value, ...props }: VoiceSelectorMetadataProps): React.JSX.Element;
|
|
60
|
-
declare function VoiceSelectorAccent({ children, className, value, ...props }: VoiceSelectorMetadataProps): React.JSX.Element;
|
|
61
|
-
declare function VoiceSelectorAge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
62
|
-
declare function VoiceSelectorName({ className, ...props }: VoiceSelectorNameProps): React.JSX.Element;
|
|
63
|
-
declare function VoiceSelectorDescription({ className, ...props }: VoiceSelectorDescriptionProps): React.JSX.Element;
|
|
64
|
-
declare function VoiceSelectorAttributes({ className, ...props }: VoiceSelectorAttributesProps): React.JSX.Element;
|
|
65
|
-
declare function VoiceSelectorBullet({ className, ...props }: VoiceSelectorBulletProps): React.JSX.Element;
|
|
66
|
-
declare function VoiceSelectorValue({ className, placeholder, ...props }: VoiceSelectorValueProps): React.JSX.Element;
|
|
67
|
-
declare function VoiceSelectorPreview({ className, loading, onClick, onPlay, playing, type, ...props }: VoiceSelectorPreviewProps): React.JSX.Element;
|
|
68
|
-
export { VoiceSelector, VoiceSelectorAccent, VoiceSelectorAge, VoiceSelectorAttributes, VoiceSelectorBullet, VoiceSelectorContent, VoiceSelectorDescription, VoiceSelectorDialog, VoiceSelectorEmpty, VoiceSelectorGender, VoiceSelectorGroup, VoiceSelectorInput, VoiceSelectorItem, VoiceSelectorList, VoiceSelectorName, VoiceSelectorPreview, VoiceSelectorSeparator, VoiceSelectorShortcut, VoiceSelectorTrigger, VoiceSelectorValue, useVoiceSelector, };
|
|
69
|
-
export type { VoiceSelectorAttributesProps, VoiceSelectorBulletProps, VoiceSelectorContentProps, VoiceSelectorDescriptionProps, VoiceSelectorDialogProps, VoiceSelectorEmptyProps, VoiceSelectorGroupProps, VoiceSelectorInputProps, VoiceSelectorItemProps, VoiceSelectorListProps, VoiceSelectorNameProps, VoiceSelectorPreviewProps, VoiceSelectorProps, VoiceSelectorSeparatorProps, VoiceSelectorShortcutProps, VoiceSelectorTriggerProps, VoiceSelectorValueProps, };
|