{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "Registry Starter", "homepage": "https://today-ui-registry.vercel.app", "items": [ { "name": "registry", "type": "registry:style", "cssVars": { "light": { "background": "hsl(0, 0%, 100%)", "foreground": "hsl(0, 0%, 0%)", "card": "hsl(0, 0%, 100%)", "card-foreground": "hsl(0, 0%, 0%)", "popover": "hsl(0, 0%, 100%)", "popover-foreground": "hsl(0, 0%, 0%)", "primary": "hsl(0, 0%, 0%)", "primary-foreground": "hsl(0, 0%, 100%)", "secondary": "hsl(230, 100%, 66%)", "secondary-foreground": "hsl(0, 0%, 100%)", "muted": "hsl(295, 12%, 65%)", "muted-foreground": "hsl(291, 7%, 39%)", "accent": "color-mix(in oklab, hsl(230, 100%, 66%) 10%, transparent)", "accent-foreground": "hsl(0, 0%, 0%)", "destructive": "hsl(14, 100%, 36%)", "destructive-foreground": "hsl(0, 0%, 100%)", "border": "hsl(300, 11%, 82%)", "input": "hsl(300, 11%, 82%)", "ring": "hsl(230, 100%, 66%)", "chart-1": "hsl(19, 100%, 60%)", "chart-2": "hsl(171, 100%, 80%)", "chart-3": "hsl(230, 100%, 66%)", "chart-4": "hsl(70, 94%, 63%)", "chart-5": "hsl(76, 70%, 38%)", "sidebar": "hsl(0, 0%, 100%)", "sidebar-foreground": "hsl(0, 0%, 0%)", "sidebar-primary": "hsl(0, 0%, 0%)", "sidebar-primary-foreground": "hsl(0, 0%, 100%)", "sidebar-accent": "color-mix(in oklab, hsl(230, 100%, 66%) 10%, transparent)", "sidebar-accent-foreground": "hsl(0, 0%, 0%)", "sidebar-border": "hsl(295, 12%, 65%)", "sidebar-ring": "hsl(230, 100%, 66%)", "radius": "0.5rem" } }, "files": [] }, { "name": "theme", "type": "registry:theme", "title": "Global Theme", "description": "Brand themed styles using Tailwind and Shadcn/ui", "files": [ { "path": "src/app/tokens.css", "type": "registry:file", "target": "app/tokens.css" }, { "path": "src/app/fonts.css", "type": "registry:file", "target": "app/fonts.css" }, { "path": "src/v0/globals.css", "type": "registry:file", "target": "app/globals.css" }, { "path": "src/v0/tailwind.config.ts", "type": "registry:file", "target": "tailwind.config.ts" } ] }, { "name": "blank", "type": "registry:block", "title": "Blank", "description": "A blank application with all brand components and code", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/brand-header.json", "https://today-ui-registry.vercel.app/r/brand-sidebar.json", "https://today-ui-registry.vercel.app/r/product-grid.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "dashboard", "type": "registry:block", "title": "Dashboard", "description": "A dashboard application with your brand themed components", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/sonner.json", "https://today-ui-registry.vercel.app/r/brand-header.json", "https://today-ui-registry.vercel.app/r/brand-sidebar.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/shell-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/dashboard-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "chatbot", "type": "registry:block", "title": "Chatbot", "description": "A chatbot application with your brand themed components", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/conversation.json", "https://today-ui-registry.vercel.app/r/message.json", "https://today-ui-registry.vercel.app/r/prompt-input.json", "https://today-ui-registry.vercel.app/r/response.json", "https://today-ui-registry.vercel.app/r/sources.json", "https://today-ui-registry.vercel.app/r/reasoning.json", "https://today-ui-registry.vercel.app/r/loader.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/chatbot-page.tsx", "type": "registry:page", "target": "app/page.tsx" }, { "path": "src/app/api/chat/route.ts", "type": "registry:file", "target": "app/api/chat/route.ts" } ] }, { "name": "store", "type": "registry:block", "title": "Store", "description": "A store application with your brand themed components", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/product-grid.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/store-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "brand-header", "type": "registry:component", "title": "Brand Header", "description": "A styled, simple, reusable header", "registryDependencies": [ "button", "input", "avatar", "sidebar", "https://today-ui-registry.vercel.app/r/sonner.json", "https://today-ui-registry.vercel.app/r/logo.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/brand-header.tsx", "type": "registry:component" }, { "path": "src/v0/shell-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "brand-sidebar", "type": "registry:component", "title": "Brand Sidebar", "description": "A styled, simple, reusable sidebar", "registryDependencies": [ "badge", "button", "sidebar", "https://today-ui-registry.vercel.app/r/sonner.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/brand-sidebar.tsx", "type": "registry:component" }, { "path": "src/v0/shell-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "login", "type": "registry:component", "title": "Login", "description": "Username & password login section with customer quote.", "registryDependencies": [ "badge", "button", "https://today-ui-registry.vercel.app/r/theme.json", "https://today-ui-registry.vercel.app/r/logo.json" ], "files": [ { "path": "src/components/login.tsx", "type": "registry:component" }, { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "logo", "type": "registry:component", "title": "Brand Logo", "description": "A styled, simple, reusable logo", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/logo.tsx", "type": "registry:component" }, { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "hero", "type": "registry:component", "title": "Hero", "description": "Attention-grabbing section for the top of your landing pages.", "registryDependencies": [ "badge", "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/hero.tsx", "type": "registry:component" }, { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "promo", "type": "registry:component", "title": "Promo", "description": "Attention-grabbing section to display the current promotional deal.", "registryDependencies": [ "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/promo.tsx", "type": "registry:component" }, { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/app/demo/[name]/blocks/blank-page.tsx", "type": "registry:page", "target": "app/page.tsx" } ] }, { "name": "product-grid", "type": "registry:component", "title": "Product Grid", "description": "Product grid displaying all products with API to fetch data", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/product-grid.tsx", "type": "registry:component" }, { "path": "src/lib/products.ts", "type": "registry:lib" }, { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "A vertically stacked set of interactive headings that each reveal a section of content.", "registryDependencies": [ "accordion", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "alert", "type": "registry:ui", "title": "Alert", "description": "Displays a callout for user attention.", "registryDependencies": [ "alert", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "An image element with a fallback for representing the user.", "registryDependencies": [ "avatar", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Displays a small count or status indicator.", "registryDependencies": [ "badge", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "breadcrumb", "type": "registry:ui", "title": "Breadcrumb", "description": "Displays the path to the current resource using a hierarchy of links.", "registryDependencies": [ "breadcrumb", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Allows users to take actions with a single click or tap.", "registryDependencies": [ "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "calendar", "type": "registry:ui", "title": "Calendar", "description": "A date field component that allows users to enter and edit date.", "registryDependencies": [ "calendar", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Containers for displaying content and actions about a single subject.", "registryDependencies": [ "card", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "chart", "type": "registry:ui", "title": "Chart", "description": "Beautiful charts. Built using Recharts. Copy and paste into your apps.", "registryDependencies": [ "chart", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "Allows users to select multiple items from a list of options.", "registryDependencies": [ "checkbox", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "data-table", "type": "registry:ui", "title": "Data Table", "description": "Powerful table and datagrids built using TanStack Table.", "registryDependencies": [ "data-table", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "date-picker", "type": "registry:ui", "title": "Date Picker", "description": "Displays the path to the current resource using a hierarchy of links.", "registryDependencies": [ "date-picker", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "dialog", "type": "registry:ui", "title": "Dialog", "description": "A modal dialog that interrupts the user with important content.", "registryDependencies": [ "dialog", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "dropdown-menu", "type": "registry:ui", "title": "Dropdown", "description": "Displays a menu to the user triggered by a button.", "registryDependencies": [ "dropdown-menu", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Displays a form input field or a component that looks like an input field.", "registryDependencies": [ "input", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "menu-bar", "type": "registry:ui", "title": "Menu Bar", "description": "A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.", "registryDependencies": [ "menu-bar", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "Displays a list of options for the user to pick from—triggered by a button.", "registryDependencies": [ "select", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "separator", "type": "registry:ui", "title": "Separator", "description": "Visually or semantically separates content.", "registryDependencies": [ "separator", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "skeleton", "type": "registry:ui", "title": "Skeleton", "description": "Use to show a placeholder while content is loading.", "registryDependencies": [ "skeleton", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "slider", "type": "registry:ui", "title": "Slider", "description": "An input where the user selects a value from within a given range.", "registryDependencies": [ "slider", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "sonner", "type": "registry:ui", "title": "Sonner", "description": "An opinionated toast component for React.", "registryDependencies": [ "sonner", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" }, { "path": "src/components/ui/sonner.tsx", "type": "registry:file", "target": "components/ui/sonner.tsx" } ] }, { "name": "switch", "type": "registry:ui", "title": "Switch", "description": "A control that allows the user to toggle between checked and not checked.", "registryDependencies": [ "switch", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "table", "type": "registry:ui", "title": "Table", "description": "A responsive table component.", "registryDependencies": [ "table", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "A set of layered sections of content—known as tab panels—that are displayed one at a time.", "registryDependencies": [ "tabs", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "toggle-group", "type": "registry:ui", "title": "Toggle Group", "description": "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.", "registryDependencies": [ "toggle-group", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.", "registryDependencies": [ "tooltip", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "collapsible", "type": "registry:ui", "title": "Collapsible", "description": "An interactive component which can be expanded/collapsed.", "registryDependencies": [ "collapsible", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "carousel", "type": "registry:ui", "title": "Carousel", "description": "A carousel with motion and swipe built using Embla.", "registryDependencies": [ "carousel", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "hover-card", "type": "registry:ui", "title": "Hover Card", "description": "For sighted users to preview content available behind a link.", "registryDependencies": [ "hover-card", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "scroll-area", "type": "registry:ui", "title": "Scroll Area", "description": "Augments native scroll functionality for custom, cross-platform styling.", "registryDependencies": [ "scroll-area", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/v0/minimal-layout.tsx", "type": "registry:file", "target": "app/layout.tsx" } ] }, { "name": "actions", "type": "registry:component", "title": "Actions", "description": "Action buttons with tooltip support for AI interfaces.", "registryDependencies": [ "button", "tooltip", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/actions.tsx", "type": "registry:component" } ] }, { "name": "branch", "type": "registry:component", "title": "Branch", "description": "Branch navigation for multiple conversation paths.", "registryDependencies": [ "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/branch.tsx", "type": "registry:component" } ] }, { "name": "code-block", "type": "registry:component", "title": "Code Block", "description": "Syntax highlighted code block with copy functionality.", "registryDependencies": [ "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/code-block.tsx", "type": "registry:component" } ] }, { "name": "conversation", "type": "registry:component", "title": "Conversation", "description": "Chat conversation container with auto-scroll functionality.", "registryDependencies": [ "button", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/conversation.tsx", "type": "registry:component" } ] }, { "name": "image", "type": "registry:component", "title": "Image", "description": "AI generated image display component.", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/image.tsx", "type": "registry:component" } ] }, { "name": "inline-citation", "type": "registry:component", "title": "Inline Citation", "description": "Inline citations with source preview in hover cards.", "registryDependencies": [ "badge", "carousel", "hover-card", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/inline-citation.tsx", "type": "registry:component" } ] }, { "name": "loader", "type": "registry:component", "title": "Loader", "description": "Animated loading spinner for AI operations.", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/loader.tsx", "type": "registry:component" } ] }, { "name": "message", "type": "registry:component", "title": "Message", "description": "Chat message components with avatar support.", "registryDependencies": [ "avatar", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/message.tsx", "type": "registry:component" } ] }, { "name": "prompt-input", "type": "registry:component", "title": "Prompt Input", "description": "AI prompt input with toolbar and model selection.", "registryDependencies": [ "button", "select", "textarea", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/prompt-input.tsx", "type": "registry:component" } ] }, { "name": "reasoning", "type": "registry:component", "title": "Reasoning", "description": "Collapsible reasoning display with streaming support.", "registryDependencies": [ "collapsible", "https://today-ui-registry.vercel.app/r/response.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/reasoning.tsx", "type": "registry:component" } ] }, { "name": "response", "type": "registry:component", "title": "Response", "description": "Streamable markdown response component.", "registryDependencies": [ "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/response.tsx", "type": "registry:component" } ] }, { "name": "sources", "type": "registry:component", "title": "Sources", "description": "Collapsible sources list for AI responses.", "registryDependencies": [ "collapsible", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/sources.tsx", "type": "registry:component" } ] }, { "name": "suggestion", "type": "registry:component", "title": "Suggestion", "description": "Scrollable suggestion chips for AI prompts.", "registryDependencies": [ "button", "scroll-area", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/suggestion.tsx", "type": "registry:component" } ] }, { "name": "task", "type": "registry:component", "title": "Task", "description": "Collapsible task display with file references.", "registryDependencies": [ "collapsible", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/task.tsx", "type": "registry:component" } ] }, { "name": "tool", "type": "registry:component", "title": "Tool", "description": "Collapsible tool call display with input/output.", "registryDependencies": [ "badge", "collapsible", "https://today-ui-registry.vercel.app/r/code-block.json", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/tool.tsx", "type": "registry:component" } ] }, { "name": "web-preview", "type": "registry:component", "title": "Web Preview", "description": "Web preview iframe with console and navigation.", "registryDependencies": [ "button", "collapsible", "input", "tooltip", "https://today-ui-registry.vercel.app/r/theme.json" ], "files": [ { "path": "src/components/ai-elements/web-preview.tsx", "type": "registry:component" } ] } ] }