{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "voice-chat-01", "description": "Voice chat 1", "dependencies": [ "@elevenlabs/react" ], "registryDependencies": [ "https://ui.elevenlabs.io/r/orb.json", "https://ui.elevenlabs.io/r/shimmering-text.json", "button", "card", "https://ui.elevenlabs.io/r/message.json", "https://ui.elevenlabs.io/r/response.json", "https://ui.elevenlabs.io/r/conversation.json", "scroll-area" ], "files": [ { "path": "blocks/voice-chat-01/page.tsx", "content": "\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport type { ComponentProps } from \"react\"\nimport {\n ConversationProvider,\n useConversation,\n useConversationControls,\n useConversationStatus,\n} from \"@elevenlabs/react\"\nimport {\n AudioLinesIcon,\n CheckIcon,\n CopyIcon,\n PhoneOffIcon,\n SendIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n} from \"@/components/ui/card\"\nimport {\n Conversation,\n ConversationContent,\n ConversationEmptyState,\n ConversationScrollButton,\n} from \"@/components/ui/conversation\"\nimport { Input } from \"@/components/ui/input\"\nimport { Message, MessageContent } from \"@/components/ui/message\"\nimport { Orb } from \"@/components/ui/orb\"\nimport { Response } from \"@/components/ui/response\"\nimport { ShimmeringText } from \"@/components/ui/shimmering-text\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\n\ntype SystemMessageType = \"initial\" | \"connecting\" | \"connected\" | \"error\"\n\ninterface ChatMessage {\n role: \"user\" | \"assistant\"\n content: string\n timestamp?: Date\n type?: SystemMessageType\n}\n\nconst DEFAULT_AGENT = {\n agentId: process.env.NEXT_PUBLIC_ELEVENLABS_AGENT_ID!,\n name: \"Customer Support\",\n description: \"AI Voice Assistant\",\n}\n\ntype ChatActionsProps = ComponentProps<\"div\">\n\nconst ChatActions = ({ className, children, ...props }: ChatActionsProps) => (\n
{tooltip}
\n\n {DEFAULT_AGENT.name}\n
\n{errorMessage}
\n ) : status === \"disconnected\" || status === \"error\" ? (\n\n Tap to start voice chat\n
\n ) : status === \"connected\" ? (\nConnected
\n ) : isTransitioning ? (\n