@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.
Files changed (218) hide show
  1. package/README.md +43 -0
  2. package/dist/chunk-2LHKM7RD.js +14 -0
  3. package/dist/chunk-5UMYP6MD.js +10 -0
  4. package/dist/chunk-AP4MG32M.js +36 -0
  5. package/dist/chunk-CFM57HOS.js +358 -0
  6. package/dist/chunk-EGIUE7H2.js +37 -0
  7. package/dist/chunk-M5OONVIO.js +90 -0
  8. package/dist/chunk-MXTBCHYC.js +31 -0
  9. package/dist/chunk-NIC3MOMY.js +55 -0
  10. package/dist/chunk-QTRMNIG3.js +83 -0
  11. package/dist/chunk-R7G3RQLU.js +36 -0
  12. package/dist/chunk-RJG5D2TM.js +113 -0
  13. package/dist/chunk-SLJNKQ2G.js +125 -0
  14. package/dist/chunk-TDEFIW2L.js +9 -0
  15. package/dist/chunk-TDP6D7U7.js +551 -0
  16. package/dist/chunk-V2ITXC65.js +24 -0
  17. package/dist/chunk-VS55HRUS.js +16 -0
  18. package/dist/chunk-VYDYCGJL.js +25 -0
  19. package/dist/chunk-X5YUF2YM.js +113 -0
  20. package/dist/chunk-YX46JVQN.js +78 -0
  21. package/dist/chunk-YXAMLTTT.js +16 -0
  22. package/dist/chunk-YXFVHSY4.js +51 -0
  23. package/dist/chunk-ZCSZX3OI.js +4 -0
  24. package/dist/common/use-copy-to-clipboard.d.ts +3 -0
  25. package/dist/common/use-copy-to-clipboard.js +33 -0
  26. package/dist/common/utilts.d.ts +8 -0
  27. package/dist/common/utilts.js +28 -0
  28. package/dist/components/ai-elements/actions.d.ts +13 -0
  29. package/dist/components/ai-elements/actions.js +42 -0
  30. package/dist/components/ai-elements/agent.d.ts +31 -0
  31. package/dist/components/ai-elements/agent.js +77 -0
  32. package/dist/components/ai-elements/artifact.d.ts +27 -0
  33. package/dist/components/ai-elements/artifact.js +108 -0
  34. package/dist/components/ai-elements/attachments.d.ts +57 -0
  35. package/dist/components/ai-elements/attachments.js +258 -0
  36. package/dist/components/ai-elements/audio-player.d.ts +33 -0
  37. package/dist/components/ai-elements/audio-player.js +199 -0
  38. package/dist/components/ai-elements/canvas.d.ts +10 -0
  39. package/dist/components/ai-elements/canvas.js +24 -0
  40. package/dist/components/ai-elements/chain-of-thought.d.ts +34 -0
  41. package/dist/components/ai-elements/chain-of-thought.js +159 -0
  42. package/dist/components/ai-elements/checkpoint.d.ts +16 -0
  43. package/dist/components/ai-elements/checkpoint.js +47 -0
  44. package/dist/components/ai-elements/code-block.d.ts +48 -0
  45. package/dist/components/ai-elements/code-block.js +1 -0
  46. package/dist/components/ai-elements/commit.d.ts +68 -0
  47. package/dist/components/ai-elements/commit.js +314 -0
  48. package/dist/components/ai-elements/confirmation.d.ts +52 -0
  49. package/dist/components/ai-elements/confirmation.js +76 -0
  50. package/dist/components/ai-elements/connection.d.ts +5 -0
  51. package/dist/components/ai-elements/connection.js +34 -0
  52. package/dist/components/ai-elements/context.d.ts +36 -0
  53. package/dist/components/ai-elements/context.js +320 -0
  54. package/dist/components/ai-elements/controls.d.ts +8 -0
  55. package/dist/components/ai-elements/controls.js +17 -0
  56. package/dist/components/ai-elements/conversation.d.ts +27 -0
  57. package/dist/components/ai-elements/conversation.js +119 -0
  58. package/dist/components/ai-elements/edge.d.ts +9 -0
  59. package/dist/components/ai-elements/edge.js +111 -0
  60. package/dist/components/ai-elements/environment-variables.d.ts +42 -0
  61. package/dist/components/ai-elements/environment-variables.js +208 -0
  62. package/dist/components/ai-elements/file-tree.d.ts +30 -0
  63. package/dist/components/ai-elements/file-tree.js +212 -0
  64. package/dist/components/ai-elements/image.d.ts +10 -0
  65. package/dist/components/ai-elements/image.js +23 -0
  66. package/dist/components/ai-elements/inline-citation.d.ts +42 -0
  67. package/dist/components/ai-elements/inline-citation.js +203 -0
  68. package/dist/components/ai-elements/jsx-preview.d.ts +33 -0
  69. package/dist/components/ai-elements/jsx-preview.js +206 -0
  70. package/dist/components/ai-elements/loader.d.ts +9 -0
  71. package/dist/components/ai-elements/loader.js +115 -0
  72. package/dist/components/ai-elements/message.d.ts +42 -0
  73. package/dist/components/ai-elements/message.js +259 -0
  74. package/dist/components/ai-elements/mic-selector.d.ts +49 -0
  75. package/dist/components/ai-elements/mic-selector.js +252 -0
  76. package/dist/components/ai-elements/model-selector.d.ts +39 -0
  77. package/dist/components/ai-elements/model-selector.js +73 -0
  78. package/dist/components/ai-elements/node.d.ts +25 -0
  79. package/dist/components/ai-elements/node.js +41 -0
  80. package/dist/components/ai-elements/open-in-chat.d.ts +32 -0
  81. package/dist/components/ai-elements/open-in-chat.js +366 -0
  82. package/dist/components/ai-elements/package-info.d.ts +32 -0
  83. package/dist/components/ai-elements/package-info.js +162 -0
  84. package/dist/components/ai-elements/panel.d.ts +8 -0
  85. package/dist/components/ai-elements/panel.js +17 -0
  86. package/dist/components/ai-elements/persona.d.ts +50 -0
  87. package/dist/components/ai-elements/persona.js +209 -0
  88. package/dist/components/ai-elements/plan.d.ts +29 -0
  89. package/dist/components/ai-elements/plan.js +95 -0
  90. package/dist/components/ai-elements/prompt-input.d.ts +153 -0
  91. package/dist/components/ai-elements/prompt-input.js +939 -0
  92. package/dist/components/ai-elements/queue.d.ts +65 -0
  93. package/dist/components/ai-elements/queue.js +179 -0
  94. package/dist/components/ai-elements/reasoning.d.ts +30 -0
  95. package/dist/components/ai-elements/reasoning.js +161 -0
  96. package/dist/components/ai-elements/response.d.ts +9 -0
  97. package/dist/components/ai-elements/response.js +33 -0
  98. package/dist/components/ai-elements/sandbox.d.ts +28 -0
  99. package/dist/components/ai-elements/sandbox.js +98 -0
  100. package/dist/components/ai-elements/schema-display.d.ts +58 -0
  101. package/dist/components/ai-elements/schema-display.js +313 -0
  102. package/dist/components/ai-elements/shimmer.d.ts +14 -0
  103. package/dist/components/ai-elements/shimmer.js +1 -0
  104. package/dist/components/ai-elements/snippet.d.ts +22 -0
  105. package/dist/components/ai-elements/snippet.js +90 -0
  106. package/dist/components/ai-elements/sources.d.ts +16 -0
  107. package/dist/components/ai-elements/sources.js +62 -0
  108. package/dist/components/ai-elements/speech-input.d.ts +57 -0
  109. package/dist/components/ai-elements/speech-input.js +206 -0
  110. package/dist/components/ai-elements/stack-trace.d.ts +42 -0
  111. package/dist/components/ai-elements/stack-trace.js +377 -0
  112. package/dist/components/ai-elements/suggestion.d.ts +14 -0
  113. package/dist/components/ai-elements/suggestion.js +41 -0
  114. package/dist/components/ai-elements/task.d.ts +18 -0
  115. package/dist/components/ai-elements/task.js +60 -0
  116. package/dist/components/ai-elements/terminal.d.ts +31 -0
  117. package/dist/components/ai-elements/terminal.js +203 -0
  118. package/dist/components/ai-elements/test-results.d.ts +61 -0
  119. package/dist/components/ai-elements/test-results.js +349 -0
  120. package/dist/components/ai-elements/tool.d.ts +35 -0
  121. package/dist/components/ai-elements/tool.js +2 -0
  122. package/dist/components/ai-elements/toolbar.d.ts +8 -0
  123. package/dist/components/ai-elements/toolbar.js +18 -0
  124. package/dist/components/ai-elements/transcription.d.ts +19 -0
  125. package/dist/components/ai-elements/transcription.js +90 -0
  126. package/dist/components/ai-elements/voice-selector.d.ts +66 -0
  127. package/dist/components/ai-elements/voice-selector.js +332 -0
  128. package/dist/components/ai-elements/web-preview.d.ts +38 -0
  129. package/dist/components/ai-elements/web-preview.js +214 -0
  130. package/dist/components/info-card.d.ts +14 -0
  131. package/dist/components/info-card.js +1 -0
  132. package/dist/components/responsive-alert-dialog.d.ts +19 -0
  133. package/dist/components/responsive-alert-dialog.js +1 -0
  134. package/dist/components/responsive-dialog.d.ts +14 -0
  135. package/dist/components/responsive-dialog.js +1 -0
  136. package/dist/config-IcWUmjwj.d.ts +239 -0
  137. package/dist/features/chat/chat-card.d.ts +5 -0
  138. package/dist/features/chat/chat-card.js +14 -0
  139. package/dist/features/chat/chat-element/chat-element.d.ts +8 -0
  140. package/dist/features/chat/chat-element/chat-element.js +14 -0
  141. package/dist/features/chat/chat-element/use-chat.d.ts +21 -0
  142. package/dist/features/chat/chat-element/use-chat.js +14 -0
  143. package/dist/features/chat/chat-element/use-initial-messages.d.ts +20 -0
  144. package/dist/features/chat/chat-element/use-initial-messages.js +14 -0
  145. package/dist/features/chat/chat-header/chat-header.d.ts +8 -0
  146. package/dist/features/chat/chat-header/chat-header.js +14 -0
  147. package/dist/features/chat/chat-header/chat-menu.d.ts +5 -0
  148. package/dist/features/chat/chat-header/chat-menu.js +2 -0
  149. package/dist/features/chat/chat-history/chat-history-empty.d.ts +5 -0
  150. package/dist/features/chat/chat-history/chat-history-empty.js +1 -0
  151. package/dist/features/chat/chat-history/chat-history.d.ts +5 -0
  152. package/dist/features/chat/chat-history/chat-history.js +14 -0
  153. package/dist/features/chat/chat-message.d.ts +10 -0
  154. package/dist/features/chat/chat-message.js +1 -0
  155. package/dist/features/chat/chat-molecule.d.ts +35 -0
  156. package/dist/features/chat/chat-molecule.js +14 -0
  157. package/dist/features/chat/chat-prompt-input.d.ts +16 -0
  158. package/dist/features/chat/chat-prompt-input.js +14 -0
  159. package/dist/features/chat/chat.context.d.ts +26 -0
  160. package/dist/features/chat/chat.context.js +13 -0
  161. package/dist/features/chat/index.d.ts +14 -0
  162. package/dist/features/chat/index.js +14 -0
  163. package/dist/features/chat/queries/query-keys.d.ts +8 -0
  164. package/dist/features/chat/queries/query-keys.js +1 -0
  165. package/dist/features/chat/queries/use-create-conversation-mutation.d.ts +29 -0
  166. package/dist/features/chat/queries/use-create-conversation-mutation.js +38 -0
  167. package/dist/features/chat/queries/use-get-chat-query.d.ts +9 -0
  168. package/dist/features/chat/queries/use-get-chat-query.js +14 -0
  169. package/dist/features/chat/queries/use-get-conversation-query.d.ts +62 -0
  170. package/dist/features/chat/queries/use-get-conversation-query.js +14 -0
  171. package/dist/features/chat/queries/use-list-conversations-query.d.ts +29 -0
  172. package/dist/features/chat/queries/use-list-conversations-query.js +14 -0
  173. package/dist/features/chat/store.d.ts +13 -0
  174. package/dist/features/chat/store.js +1 -0
  175. package/dist/features/chat/utils.d.ts +5 -0
  176. package/dist/features/chat/utils.js +1 -0
  177. package/dist/features/data-fetching/use-api-client.d.ts +5 -0
  178. package/dist/features/data-fetching/use-api-client.js +14 -0
  179. package/dist/features/logger/logger.d.ts +9 -0
  180. package/dist/features/logger/logger.js +1 -0
  181. package/dist/features/molecule/chatsdk-provider.d.ts +19 -0
  182. package/dist/features/molecule/chatsdk-provider.js +26 -0
  183. package/dist/features/molecule/constants.d.ts +3 -0
  184. package/dist/features/molecule/constants.js +1 -0
  185. package/dist/features/molecule/molecule-provider.d.ts +39 -0
  186. package/dist/features/molecule/molecule-provider.js +1 -0
  187. package/dist/features/molecule/store.d.ts +53 -0
  188. package/dist/features/molecule/store.js +3 -0
  189. package/dist/features/molecule/types/api.d.ts +8 -0
  190. package/dist/features/molecule/types/api.js +1 -0
  191. package/dist/features/molecule/types/callbacks.d.ts +22 -0
  192. package/dist/features/molecule/types/callbacks.js +1 -0
  193. package/dist/features/molecule/types/config.d.ts +10 -0
  194. package/dist/features/molecule/types/config.js +1 -0
  195. package/dist/features/molecule/types/context.d.ts +11 -0
  196. package/dist/features/molecule/types/context.js +1 -0
  197. package/dist/features/molecule/types/locale.d.ts +9 -0
  198. package/dist/features/molecule/types/locale.js +1 -0
  199. package/dist/features/molecule/types/theme.d.ts +38 -0
  200. package/dist/features/molecule/types/theme.js +1 -0
  201. package/dist/features/molecule/types/translations.d.ts +10 -0
  202. package/dist/features/molecule/types/translations.js +1 -0
  203. package/dist/features/molecule/use-merge-global-config.d.ts +22 -0
  204. package/dist/features/molecule/use-merge-global-config.js +5 -0
  205. package/dist/features/molecule/use-molecule-config.d.ts +41 -0
  206. package/dist/features/molecule/use-molecule-config.js +6 -0
  207. package/dist/features/molecule/utils.d.ts +10 -0
  208. package/dist/features/molecule/utils.js +1 -0
  209. package/dist/i18n/config.d.ts +61 -0
  210. package/dist/i18n/config.js +1 -0
  211. package/dist/i18n/i18next.d.ts +11 -0
  212. package/dist/i18n/i18next.js +2 -0
  213. package/dist/i18n/utils.d.ts +11 -0
  214. package/dist/i18n/utils.js +6 -0
  215. package/dist/index.d.ts +20 -0
  216. package/dist/index.js +20 -0
  217. package/dist/styles.css +6811 -0
  218. package/package.json +123 -0
@@ -0,0 +1,252 @@
1
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
2
+ import { Button } from '@chatsdk-dev/ui/components/button';
3
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandItem } from '@chatsdk-dev/ui/components/command';
4
+ import { Popover, PopoverTrigger, PopoverContent } from '@chatsdk-dev/ui/components/popover';
5
+ import { cn } from '@chatsdk-dev/ui/lib/utils';
6
+ import { ChevronsUpDownIcon } from 'lucide-react';
7
+ import { createContext, useState, useCallback, useEffect, useMemo, useContext, useRef } from 'react';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
+
10
+ var deviceIdRegex = /\(([\da-fA-F]{4}:[\da-fA-F]{4})\)$/;
11
+ var MicSelectorContext = createContext({
12
+ data: [],
13
+ onOpenChange: void 0,
14
+ onValueChange: void 0,
15
+ open: false,
16
+ setWidth: void 0,
17
+ value: void 0,
18
+ width: 200
19
+ });
20
+ var useAudioDevices = () => {
21
+ const [devices, setDevices] = useState([]);
22
+ const [loading, setLoading] = useState(true);
23
+ const [error, setError] = useState(null);
24
+ const [hasPermission, setHasPermission] = useState(false);
25
+ const loadDevicesWithoutPermission = useCallback(async () => {
26
+ try {
27
+ setLoading(true);
28
+ setError(null);
29
+ const deviceList = await navigator.mediaDevices.enumerateDevices();
30
+ const audioInputs = deviceList.filter(
31
+ (device) => device.kind === "audioinput"
32
+ );
33
+ setDevices(audioInputs);
34
+ } catch (caughtError) {
35
+ const message = caughtError instanceof Error ? caughtError.message : "Failed to get audio devices";
36
+ setError(message);
37
+ console.error("Error getting audio devices:", message);
38
+ } finally {
39
+ setLoading(false);
40
+ }
41
+ }, []);
42
+ const loadDevicesWithPermission = useCallback(async () => {
43
+ if (loading) {
44
+ return;
45
+ }
46
+ try {
47
+ setLoading(true);
48
+ setError(null);
49
+ const tempStream = await navigator.mediaDevices.getUserMedia({
50
+ audio: true
51
+ });
52
+ for (const track of tempStream.getTracks()) {
53
+ track.stop();
54
+ }
55
+ const deviceList = await navigator.mediaDevices.enumerateDevices();
56
+ const audioInputs = deviceList.filter(
57
+ (device) => device.kind === "audioinput"
58
+ );
59
+ setDevices(audioInputs);
60
+ setHasPermission(true);
61
+ } catch (caughtError) {
62
+ const message = caughtError instanceof Error ? caughtError.message : "Failed to get audio devices";
63
+ setError(message);
64
+ console.error("Error getting audio devices:", message);
65
+ } finally {
66
+ setLoading(false);
67
+ }
68
+ }, [loading]);
69
+ useEffect(() => {
70
+ loadDevicesWithoutPermission();
71
+ }, [loadDevicesWithoutPermission]);
72
+ useEffect(() => {
73
+ const handleDeviceChange = () => {
74
+ if (hasPermission) {
75
+ loadDevicesWithPermission();
76
+ } else {
77
+ loadDevicesWithoutPermission();
78
+ }
79
+ };
80
+ navigator.mediaDevices.addEventListener("devicechange", handleDeviceChange);
81
+ return () => {
82
+ navigator.mediaDevices.removeEventListener(
83
+ "devicechange",
84
+ handleDeviceChange
85
+ );
86
+ };
87
+ }, [hasPermission, loadDevicesWithPermission, loadDevicesWithoutPermission]);
88
+ return {
89
+ devices,
90
+ error,
91
+ hasPermission,
92
+ loadDevices: loadDevicesWithPermission,
93
+ loading
94
+ };
95
+ };
96
+ var MicSelector = ({
97
+ defaultValue,
98
+ value: controlledValue,
99
+ onValueChange: controlledOnValueChange,
100
+ defaultOpen = false,
101
+ open: controlledOpen,
102
+ onOpenChange: controlledOnOpenChange,
103
+ ...props
104
+ }) => {
105
+ const [value, onValueChange] = useControllableState({
106
+ defaultProp: defaultValue,
107
+ onChange: controlledOnValueChange,
108
+ prop: controlledValue
109
+ });
110
+ const [open, onOpenChange] = useControllableState({
111
+ defaultProp: defaultOpen,
112
+ onChange: controlledOnOpenChange,
113
+ prop: controlledOpen
114
+ });
115
+ const [width, setWidth] = useState(200);
116
+ const { devices, loading, hasPermission, loadDevices } = useAudioDevices();
117
+ useEffect(() => {
118
+ if (open && !hasPermission && !loading) {
119
+ loadDevices();
120
+ }
121
+ }, [open, hasPermission, loading, loadDevices]);
122
+ const contextValue = useMemo(
123
+ () => ({
124
+ data: devices,
125
+ onOpenChange,
126
+ onValueChange,
127
+ open,
128
+ setWidth,
129
+ value,
130
+ width
131
+ }),
132
+ [devices, onOpenChange, onValueChange, open, setWidth, value, width]
133
+ );
134
+ return /* @__PURE__ */ jsx(MicSelectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(Popover, { ...props, onOpenChange, open }) });
135
+ };
136
+ var MicSelectorTrigger = ({
137
+ children,
138
+ ...props
139
+ }) => {
140
+ const { setWidth } = useContext(MicSelectorContext);
141
+ const ref = useRef(null);
142
+ useEffect(() => {
143
+ const resizeObserver = new ResizeObserver((entries) => {
144
+ for (const entry of entries) {
145
+ const newWidth = entry.target.offsetWidth;
146
+ if (newWidth) {
147
+ setWidth?.(newWidth);
148
+ }
149
+ }
150
+ });
151
+ if (ref.current) {
152
+ resizeObserver.observe(ref.current);
153
+ }
154
+ return () => {
155
+ resizeObserver.disconnect();
156
+ };
157
+ }, [setWidth]);
158
+ return /* @__PURE__ */ jsx(
159
+ PopoverTrigger,
160
+ {
161
+ render: () => /* @__PURE__ */ jsxs(Button, { variant: "outline", ...props, ref, children: [
162
+ children,
163
+ /* @__PURE__ */ jsx(
164
+ ChevronsUpDownIcon,
165
+ {
166
+ className: "shrink-0 text-muted-foreground",
167
+ size: 16
168
+ }
169
+ )
170
+ ] })
171
+ }
172
+ );
173
+ };
174
+ var MicSelectorContent = ({
175
+ className,
176
+ popoverOptions,
177
+ ...props
178
+ }) => {
179
+ const { width, onValueChange, value } = useContext(MicSelectorContext);
180
+ return /* @__PURE__ */ jsx(
181
+ PopoverContent,
182
+ {
183
+ className: cn("p-0", className),
184
+ style: { width },
185
+ ...popoverOptions,
186
+ children: /* @__PURE__ */ jsx(Command, { onValueChange, value, ...props })
187
+ }
188
+ );
189
+ };
190
+ var MicSelectorInput = ({ ...props }) => /* @__PURE__ */ jsx(CommandInput, { placeholder: "Search microphones...", ...props });
191
+ var MicSelectorList = ({
192
+ children,
193
+ ...props
194
+ }) => {
195
+ const { data } = useContext(MicSelectorContext);
196
+ return /* @__PURE__ */ jsx(CommandList, { ...props, children: children(data) });
197
+ };
198
+ var MicSelectorEmpty = ({
199
+ children = "No microphone found.",
200
+ ...props
201
+ }) => /* @__PURE__ */ jsx(CommandEmpty, { ...props, children });
202
+ var MicSelectorItem = (props) => {
203
+ const { onValueChange, onOpenChange } = useContext(MicSelectorContext);
204
+ const handleSelect = useCallback(
205
+ (currentValue) => {
206
+ onValueChange?.(currentValue);
207
+ onOpenChange?.(false);
208
+ },
209
+ [onValueChange, onOpenChange]
210
+ );
211
+ return /* @__PURE__ */ jsx(CommandItem, { onSelect: handleSelect, ...props });
212
+ };
213
+ var MicSelectorLabel = ({
214
+ device,
215
+ className,
216
+ ...props
217
+ }) => {
218
+ const matches = device.label.match(deviceIdRegex);
219
+ if (!matches) {
220
+ return /* @__PURE__ */ jsx("span", { className, ...props, children: device.label });
221
+ }
222
+ const [, deviceId] = matches;
223
+ const name = device.label.replace(deviceIdRegex, "");
224
+ return /* @__PURE__ */ jsxs("span", { className, ...props, children: [
225
+ /* @__PURE__ */ jsx("span", { children: name }),
226
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
227
+ " (",
228
+ deviceId,
229
+ ")"
230
+ ] })
231
+ ] });
232
+ };
233
+ var MicSelectorValue = ({
234
+ className,
235
+ ...props
236
+ }) => {
237
+ const { data, value } = useContext(MicSelectorContext);
238
+ const currentDevice = data.find((d) => d.deviceId === value);
239
+ if (!currentDevice) {
240
+ return /* @__PURE__ */ jsx("span", { className: cn("flex-1 text-left", className), ...props, children: "Select microphone..." });
241
+ }
242
+ return /* @__PURE__ */ jsx(
243
+ MicSelectorLabel,
244
+ {
245
+ className: cn("flex-1 text-left", className),
246
+ device: currentDevice,
247
+ ...props
248
+ }
249
+ );
250
+ };
251
+
252
+ export { MicSelector, MicSelectorContent, MicSelectorEmpty, MicSelectorInput, MicSelectorItem, MicSelectorLabel, MicSelectorList, MicSelectorTrigger, MicSelectorValue, useAudioDevices };
@@ -0,0 +1,39 @@
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
+ type ModelSelectorProps = ComponentProps<typeof Dialog>;
7
+ declare const ModelSelector: (props: ModelSelectorProps) => react_jsx_runtime.JSX.Element;
8
+ type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;
9
+ declare const ModelSelectorTrigger: (props: ModelSelectorTriggerProps) => react_jsx_runtime.JSX.Element;
10
+ type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {
11
+ title?: ReactNode;
12
+ };
13
+ declare const ModelSelectorContent: ({ className, children, title, ...props }: ModelSelectorContentProps) => react_jsx_runtime.JSX.Element;
14
+ type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;
15
+ declare const ModelSelectorDialog: (props: ModelSelectorDialogProps) => react_jsx_runtime.JSX.Element;
16
+ type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;
17
+ declare const ModelSelectorInput: ({ className, ...props }: ModelSelectorInputProps) => react_jsx_runtime.JSX.Element;
18
+ type ModelSelectorListProps = ComponentProps<typeof CommandList>;
19
+ declare const ModelSelectorList: (props: ModelSelectorListProps) => react_jsx_runtime.JSX.Element;
20
+ type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;
21
+ declare const ModelSelectorEmpty: (props: ModelSelectorEmptyProps) => react_jsx_runtime.JSX.Element;
22
+ type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;
23
+ declare const ModelSelectorGroup: (props: ModelSelectorGroupProps) => react_jsx_runtime.JSX.Element;
24
+ type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;
25
+ declare const ModelSelectorItem: (props: ModelSelectorItemProps) => react_jsx_runtime.JSX.Element;
26
+ type ModelSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;
27
+ declare const ModelSelectorShortcut: (props: ModelSelectorShortcutProps) => react_jsx_runtime.JSX.Element;
28
+ type ModelSelectorSeparatorProps = ComponentProps<typeof CommandSeparator>;
29
+ declare const ModelSelectorSeparator: (props: ModelSelectorSeparatorProps) => react_jsx_runtime.JSX.Element;
30
+ type ModelSelectorLogoProps = Omit<ComponentProps<"img">, "src" | "alt"> & {
31
+ provider: "moonshotai-cn" | "lucidquery" | "moonshotai" | "zai-coding-plan" | "alibaba" | "xai" | "vultr" | "nvidia" | "upstage" | "groq" | "github-copilot" | "mistral" | "vercel" | "nebius" | "deepseek" | "alibaba-cn" | "google-vertex-anthropic" | "venice" | "chutes" | "cortecs" | "github-models" | "togetherai" | "azure" | "baseten" | "huggingface" | "opencode" | "fastrouter" | "google" | "google-vertex" | "cloudflare-workers-ai" | "inception" | "wandb" | "openai" | "zhipuai-coding-plan" | "perplexity" | "openrouter" | "zenmux" | "v0" | "iflowcn" | "synthetic" | "deepinfra" | "zhipuai" | "submodel" | "zai" | "inference" | "requesty" | "morph" | "lmstudio" | "anthropic" | "aihubmix" | "fireworks-ai" | "modelscope" | "llama" | "scaleway" | "amazon-bedrock" | "cerebras" | (string & {});
32
+ };
33
+ declare const ModelSelectorLogo: ({ provider, className, ...props }: ModelSelectorLogoProps) => react_jsx_runtime.JSX.Element;
34
+ type ModelSelectorLogoGroupProps = ComponentProps<"div">;
35
+ declare const ModelSelectorLogoGroup: ({ className, ...props }: ModelSelectorLogoGroupProps) => react_jsx_runtime.JSX.Element;
36
+ type ModelSelectorNameProps = ComponentProps<"span">;
37
+ declare const ModelSelectorName: ({ className, ...props }: ModelSelectorNameProps) => react_jsx_runtime.JSX.Element;
38
+
39
+ export { ModelSelector, ModelSelectorContent, type ModelSelectorContentProps, ModelSelectorDialog, type ModelSelectorDialogProps, ModelSelectorEmpty, type ModelSelectorEmptyProps, ModelSelectorGroup, type ModelSelectorGroupProps, ModelSelectorInput, type ModelSelectorInputProps, ModelSelectorItem, type ModelSelectorItemProps, ModelSelectorList, type ModelSelectorListProps, ModelSelectorLogo, ModelSelectorLogoGroup, type ModelSelectorLogoGroupProps, type ModelSelectorLogoProps, ModelSelectorName, type ModelSelectorNameProps, type ModelSelectorProps, ModelSelectorSeparator, type ModelSelectorSeparatorProps, ModelSelectorShortcut, type ModelSelectorShortcutProps, ModelSelectorTrigger, type ModelSelectorTriggerProps };
@@ -0,0 +1,73 @@
1
+ import { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator } from '@chatsdk-dev/ui/components/command';
2
+ import { Dialog, DialogTrigger, DialogContent, DialogTitle } from '@chatsdk-dev/ui/components/dialog';
3
+ import { cn } from '@chatsdk-dev/ui/lib/utils';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ // src/components/ai-elements/model-selector.tsx
7
+ var ModelSelector = (props) => /* @__PURE__ */ jsx(Dialog, { ...props });
8
+ var ModelSelectorTrigger = (props) => /* @__PURE__ */ jsx(DialogTrigger, { ...props });
9
+ var ModelSelectorContent = ({
10
+ className,
11
+ children,
12
+ title = "Model Selector",
13
+ ...props
14
+ }) => /* @__PURE__ */ jsxs(
15
+ DialogContent,
16
+ {
17
+ "aria-describedby": void 0,
18
+ className: cn(
19
+ "outline! border-none! p-0 outline-border! outline-solid!",
20
+ className
21
+ ),
22
+ ...props,
23
+ children: [
24
+ /* @__PURE__ */ jsx(DialogTitle, { className: "sr-only", children: title }),
25
+ /* @__PURE__ */ jsx(Command, { className: "**:data-[slot=command-input-wrapper]:h-auto", children })
26
+ ]
27
+ }
28
+ );
29
+ var ModelSelectorDialog = (props) => /* @__PURE__ */ jsx(CommandDialog, { ...props });
30
+ var ModelSelectorInput = ({
31
+ className,
32
+ ...props
33
+ }) => /* @__PURE__ */ jsx(CommandInput, { className: cn("h-auto py-3.5", className), ...props });
34
+ var ModelSelectorList = (props) => /* @__PURE__ */ jsx(CommandList, { ...props });
35
+ var ModelSelectorEmpty = (props) => /* @__PURE__ */ jsx(CommandEmpty, { ...props });
36
+ var ModelSelectorGroup = (props) => /* @__PURE__ */ jsx(CommandGroup, { ...props });
37
+ var ModelSelectorItem = (props) => /* @__PURE__ */ jsx(CommandItem, { ...props });
38
+ var ModelSelectorShortcut = (props) => /* @__PURE__ */ jsx(CommandShortcut, { ...props });
39
+ var ModelSelectorSeparator = (props) => /* @__PURE__ */ jsx(CommandSeparator, { ...props });
40
+ var ModelSelectorLogo = ({
41
+ provider,
42
+ className,
43
+ ...props
44
+ }) => /* @__PURE__ */ jsx(
45
+ "img",
46
+ {
47
+ ...props,
48
+ alt: `${provider} logo`,
49
+ className: cn("size-3 dark:invert", className),
50
+ height: 12,
51
+ src: `https://models.dev/logos/${provider}.svg`,
52
+ width: 12
53
+ }
54
+ );
55
+ var ModelSelectorLogoGroup = ({
56
+ className,
57
+ ...props
58
+ }) => /* @__PURE__ */ jsx(
59
+ "div",
60
+ {
61
+ className: cn(
62
+ "flex shrink-0 items-center -space-x-1 [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground",
63
+ className
64
+ ),
65
+ ...props
66
+ }
67
+ );
68
+ var ModelSelectorName = ({
69
+ className,
70
+ ...props
71
+ }) => /* @__PURE__ */ jsx("span", { className: cn("flex-1 truncate text-left", className), ...props });
72
+
73
+ export { ModelSelector, ModelSelectorContent, ModelSelectorDialog, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorLogo, ModelSelectorLogoGroup, ModelSelectorName, ModelSelectorSeparator, ModelSelectorShortcut, ModelSelectorTrigger };
@@ -0,0 +1,25 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@chatsdk-dev/ui/components/card';
3
+ import { ComponentProps } from 'react';
4
+
5
+ type NodeProps = ComponentProps<typeof Card> & {
6
+ handles: {
7
+ target: boolean;
8
+ source: boolean;
9
+ };
10
+ };
11
+ declare const Node: ({ handles, className, ...props }: NodeProps) => react_jsx_runtime.JSX.Element;
12
+ type NodeHeaderProps = ComponentProps<typeof CardHeader>;
13
+ declare const NodeHeader: ({ className, ...props }: NodeHeaderProps) => react_jsx_runtime.JSX.Element;
14
+ type NodeTitleProps = ComponentProps<typeof CardTitle>;
15
+ declare const NodeTitle: (props: NodeTitleProps) => react_jsx_runtime.JSX.Element;
16
+ type NodeDescriptionProps = ComponentProps<typeof CardDescription>;
17
+ declare const NodeDescription: (props: NodeDescriptionProps) => react_jsx_runtime.JSX.Element;
18
+ type NodeActionProps = ComponentProps<typeof CardAction>;
19
+ declare const NodeAction: (props: NodeActionProps) => react_jsx_runtime.JSX.Element;
20
+ type NodeContentProps = ComponentProps<typeof CardContent>;
21
+ declare const NodeContent: ({ className, ...props }: NodeContentProps) => react_jsx_runtime.JSX.Element;
22
+ type NodeFooterProps = ComponentProps<typeof CardFooter>;
23
+ declare const NodeFooter: ({ className, ...props }: NodeFooterProps) => react_jsx_runtime.JSX.Element;
24
+
25
+ export { Node, NodeAction, type NodeActionProps, NodeContent, type NodeContentProps, NodeDescription, type NodeDescriptionProps, NodeFooter, type NodeFooterProps, NodeHeader, type NodeHeaderProps, type NodeProps, NodeTitle, type NodeTitleProps };
@@ -0,0 +1,41 @@
1
+ import { Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, CardFooter } from '@chatsdk-dev/ui/components/card';
2
+ import { cn } from '@chatsdk-dev/ui/lib/utils';
3
+ import { Handle, Position } from '@xyflow/react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ // src/components/ai-elements/node.tsx
7
+ var Node = ({ handles, className, ...props }) => /* @__PURE__ */ jsxs(
8
+ Card,
9
+ {
10
+ className: cn(
11
+ "node-container relative size-full h-auto w-sm gap-0 rounded-md p-0",
12
+ className
13
+ ),
14
+ ...props,
15
+ children: [
16
+ handles.target && /* @__PURE__ */ jsx(Handle, { position: Position.Left, type: "target" }),
17
+ handles.source && /* @__PURE__ */ jsx(Handle, { position: Position.Right, type: "source" }),
18
+ props.children
19
+ ]
20
+ }
21
+ );
22
+ var NodeHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
23
+ CardHeader,
24
+ {
25
+ className: cn("gap-0.5 rounded-t-md border-b bg-secondary p-3!", className),
26
+ ...props
27
+ }
28
+ );
29
+ var NodeTitle = (props) => /* @__PURE__ */ jsx(CardTitle, { ...props });
30
+ var NodeDescription = (props) => /* @__PURE__ */ jsx(CardDescription, { ...props });
31
+ var NodeAction = (props) => /* @__PURE__ */ jsx(CardAction, { ...props });
32
+ var NodeContent = ({ className, ...props }) => /* @__PURE__ */ jsx(CardContent, { className: cn("p-3", className), ...props });
33
+ var NodeFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
34
+ CardFooter,
35
+ {
36
+ className: cn("rounded-b-md border-t bg-secondary p-3!", className),
37
+ ...props
38
+ }
39
+ );
40
+
41
+ export { Node, NodeAction, NodeContent, NodeDescription, NodeFooter, NodeHeader, NodeTitle };
@@ -0,0 +1,32 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DropdownMenu, DropdownMenuItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@chatsdk-dev/ui/components/dropdown-menu';
3
+ import { ComponentProps } from 'react';
4
+
5
+ type OpenInProps = ComponentProps<typeof DropdownMenu> & {
6
+ query: string;
7
+ };
8
+ declare const OpenIn: ({ query, ...props }: OpenInProps) => react_jsx_runtime.JSX.Element;
9
+ type OpenInContentProps = ComponentProps<typeof DropdownMenuContent>;
10
+ declare const OpenInContent: ({ className, ...props }: OpenInContentProps) => react_jsx_runtime.JSX.Element;
11
+ type OpenInItemProps = ComponentProps<typeof DropdownMenuItem>;
12
+ declare const OpenInItem: (props: OpenInItemProps) => react_jsx_runtime.JSX.Element;
13
+ type OpenInLabelProps = ComponentProps<typeof DropdownMenuLabel>;
14
+ declare const OpenInLabel: (props: OpenInLabelProps) => react_jsx_runtime.JSX.Element;
15
+ type OpenInSeparatorProps = ComponentProps<typeof DropdownMenuSeparator>;
16
+ declare const OpenInSeparator: (props: OpenInSeparatorProps) => react_jsx_runtime.JSX.Element;
17
+ type OpenInTriggerProps = ComponentProps<typeof DropdownMenuTrigger>;
18
+ declare const OpenInTrigger: ({ children, ...props }: OpenInTriggerProps) => react_jsx_runtime.JSX.Element;
19
+ type OpenInChatGPTProps = ComponentProps<typeof DropdownMenuItem>;
20
+ declare const OpenInChatGPT: (props: OpenInChatGPTProps) => react_jsx_runtime.JSX.Element;
21
+ type OpenInClaudeProps = ComponentProps<typeof DropdownMenuItem>;
22
+ declare const OpenInClaude: (props: OpenInClaudeProps) => react_jsx_runtime.JSX.Element;
23
+ type OpenInT3Props = ComponentProps<typeof DropdownMenuItem>;
24
+ declare const OpenInT3: (props: OpenInT3Props) => react_jsx_runtime.JSX.Element;
25
+ type OpenInSciraProps = ComponentProps<typeof DropdownMenuItem>;
26
+ declare const OpenInScira: (props: OpenInSciraProps) => react_jsx_runtime.JSX.Element;
27
+ type OpenInv0Props = ComponentProps<typeof DropdownMenuItem>;
28
+ declare const OpenInv0: (props: OpenInv0Props) => react_jsx_runtime.JSX.Element;
29
+ type OpenInCursorProps = ComponentProps<typeof DropdownMenuItem>;
30
+ declare const OpenInCursor: (props: OpenInCursorProps) => react_jsx_runtime.JSX.Element;
31
+
32
+ export { OpenIn, OpenInChatGPT, type OpenInChatGPTProps, OpenInClaude, type OpenInClaudeProps, OpenInContent, type OpenInContentProps, OpenInCursor, type OpenInCursorProps, OpenInItem, type OpenInItemProps, OpenInLabel, type OpenInLabelProps, type OpenInProps, OpenInScira, type OpenInSciraProps, OpenInSeparator, type OpenInSeparatorProps, OpenInT3, type OpenInT3Props, OpenInTrigger, type OpenInTriggerProps, OpenInv0, type OpenInv0Props };