{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "chatgpt", "title": "ChatGPT", "registryDependencies": [ "alert", "alert-dialog", "badge", "button", "card", "dropdown-menu", "field", "input-group", "item", "kbd", "popover", "tooltip", "example" ], "files": [ { "path": "registry/radix-vega/blocks/chatgpt.tsx", "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n Example,\n ExampleWrapper,\n} from \"@/registry/radix-vega/components/example\"\nimport { Alert, AlertDescription } from \"@/registry/radix-vega/ui/alert\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/registry/radix-vega/ui/alert-dialog\"\nimport { Badge } from \"@/registry/radix-vega/ui/badge\"\nimport { Button } from \"@/registry/radix-vega/ui/button\"\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/registry/radix-vega/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/registry/radix-vega/ui/dropdown-menu\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n} from \"@/registry/radix-vega/ui/field\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupTextarea,\n} from \"@/registry/radix-vega/ui/input-group\"\nimport {\n Item,\n ItemContent,\n ItemDescription,\n ItemTitle,\n} from \"@/registry/radix-vega/ui/item\"\nimport { Kbd } from \"@/registry/radix-vega/ui/kbd\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/registry/radix-vega/ui/popover\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/registry/radix-vega/ui/tooltip\"\nimport { IconPlaceholder } from \"@/app/(create)/components/icon-placeholder\"\n\nexport default function ChatGPTBlock() {\n return (\n \n \n \n \n \n \n )\n}\n\nfunction PromptForm() {\n const [dictateEnabled, setDictateEnabled] = React.useState(false)\n\n return (\n \n \n \n Prompt\n \n \n \n \n \n \n \n \n setDictateEnabled(!dictateEnabled)}\n className=\"rounded-4xl\"\n >\n \n \n \n \n \n Add files and more /\n \n \n e.preventDefault()}\n >\n \n \n Add photos & files\n \n \n \n Deep research\n \n \n \n Shopping research\n \n \n \n Create image\n \n \n \n \n \n Agent mode\n \n \n \n
35 left
\n
\n More available for purchase\n
\n
\n
\n \n \n \n More\n \n \n \n \n Add sources\n \n \n \n Study and learn\n \n \n \n Web search\n \n \n \n Canvas\n \n \n \n \n
\n \n \n setDictateEnabled(!dictateEnabled)}\n className=\"ml-auto rounded-4xl\"\n >\n \n \n \n Dictate\n \n \n \n \n
\n
\n
\n
\n )\n}\n\nfunction ModelSelector() {\n const [mode, setMode] = React.useState(\"auto\")\n const [model, setModel] = React.useState(\"gpt-5.1\")\n\n return (\n \n \n \n \n \n \n \n GPT-5.1\n \n \n \n \n \n Auto\n \n Decides how long to think\n \n \n \n \n \n \n \n Instant\n \n Answers right away\n \n \n \n \n \n \n \n Thinking\n \n Thinks longer for better answers\n \n \n \n \n \n \n \n \n Legacy models\n \n \n \n \n GPT-4\n \n \n GPT-4 Turbo\n \n \n GPT-3.5\n \n \n \n \n \n \n \n )\n}\n\nfunction GroupChatDialog() {\n return (\n \n \n \n \n \n \n \n Use ChatGPT together\n \n Add people to your chats to plan, share ideas, and get creative.\n \n \n \n \n Learn more\n \n
\n Cancel\n Start group chat\n
\n
\n
\n
\n
\n )\n}\n\nconst categories = [\n {\n id: \"homework\",\n label: \"Homework\",\n },\n {\n id: \"writing\",\n label: \"Writing\",\n },\n {\n id: \"health\",\n label: \"Health\",\n },\n {\n id: \"travel\",\n label: \"Travel\",\n },\n]\n\nfunction CreateProjectForm() {\n const [projectName, setProjectName] = React.useState(\"\")\n const [selectedCategory, setSelectedCategory] = React.useState(\n categories[0].id\n )\n const [memorySetting, setMemorySetting] = React.useState<\n \"default\" | \"project-only\"\n >(\"default\")\n const [selectedColor, setSelectedColor] = React.useState(\n \"var(--foreground)\"\n )\n\n return (\n \n \n \n Create Project\n \n Start a new project to keep chats, files, and custom instructions in\n one place.\n \n \n \n \n \n \n \n {\n setMemorySetting(value as \"default\" | \"project-only\")\n }}\n >\n \n \n \n Default\n \n Project can access memories from outside chats, and\n vice versa.\n \n \n \n \n \n \n \n Project Only\n \n Project can only access its own memories. Its memories\n are hidden from outside chats.\n \n \n \n \n \n \n \n Note that this setting can't be changed later.\n \n \n \n \n \n \n \n \n \n Project Name\n \n \n {\n setProjectName(e.target.value)\n }}\n />\n \n \n \n \n \n \n \n \n
\n {[\n \"var(--foreground)\",\n \"#fa423e\",\n \"#f59e0b\",\n \"#8b5cf6\",\n \"#ec4899\",\n \"#10b981\",\n \"#6366f1\",\n \"#14b8a6\",\n \"#f97316\",\n \"#fbbc04\",\n ].map((color) => (\n {\n setSelectedColor(color)\n }}\n >\n \n {color}\n \n ))}\n
\n
\n
\n
\n
\n \n {categories.map((category) => (\n \n {\n setSelectedCategory(\n selectedCategory === category.id ? null : category.id\n )\n }}\n >\n \n {category.label}\n \n \n ))}\n \n
\n \n \n \n \n Projects keep chats, files, and custom instructions in one\n place. Use them for ongoing work, or just to keep things tidy.\n \n \n \n
\n
\n
\n
\n )\n}\n", "type": "registry:block" } ], "type": "registry:block" }