{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "theokit-ui",
  "homepage": "https://usetheo.dev",
  "metadata": {
    "requires": {
      "tsconfigPathAlias": {
        "@/*": [
          "./src/*"
        ]
      }
    }
  },
  "items": [
    {
      "name": "agent-composer",
      "type": "registry:ui",
      "title": "AgentComposer",
      "description": "ChatComposer + slash-command / @file / #memory triggers."
    },
    {
      "name": "agent-editor",
      "type": "registry:block",
      "title": "AgentEditor",
      "description": "Form for creating or editing an Agent persona."
    },
    {
      "name": "agent-error-card",
      "type": "registry:ui",
      "title": "AgentErrorCard",
      "description": "Inline error / blocked-state card for an agent stream."
    },
    {
      "name": "agent-event",
      "type": "registry:ui",
      "title": "AgentEvent",
      "description": "Single event row in the agent timeline."
    },
    {
      "name": "agent-handoff",
      "type": "registry:ui",
      "title": "AgentHandoff",
      "description": "Visual marker of one agent delegating to another."
    },
    {
      "name": "agent-profile",
      "type": "registry:ui",
      "title": "AgentProfile",
      "description": "Switcher between multiple agent profiles (coder, planner,"
    },
    {
      "name": "agent-starting-state",
      "type": "registry:ui",
      "title": "AgentStartingState",
      "description": "Full-width skeleton shown while the agent boots."
    },
    {
      "name": "agent-stream",
      "type": "registry:ui",
      "title": "AgentStream",
      "description": "The canonical conversation surface for a code agent."
    },
    {
      "name": "agent-streaming",
      "type": "registry:ui",
      "title": "AgentStreaming",
      "description": "Inline \"agent is thinking / typing\" indicator."
    },
    {
      "name": "agent-timeline",
      "type": "registry:ui",
      "title": "AgentTimeline",
      "description": "Vertical list of agent events."
    },
    {
      "name": "agent-tool-renderer",
      "type": "registry:ui",
      "title": "AgentToolRenderer",
      "description": "Overridable tool-renderer registry for agent chat surfaces — dispatches a UIMessage tool part to a rich renderer (diff, terminal, code, created-files, data-table) by classification kind, falling back to the generic ToolCallPart for anything unmapped."
    },
    {
      "name": "agent-types",
      "type": "registry:lib",
      "title": "Theo UI agent types",
      "description": "Shared TypeScript types for the agent timeline, events, and statuses."
    },
    {
      "name": "approval-card",
      "type": "registry:block",
      "title": "ApprovalCard",
      "description": "Inline pause-and-ask card for an agent stream."
    },
    {
      "name": "approval-mode-selector",
      "type": "registry:ui",
      "title": "ApprovalModeSelector",
      "description": "Inline composer control toggling a coding agent between ask, auto-approve edits, and read-only."
    },
    {
      "name": "artifact-preview",
      "type": "registry:ui",
      "title": "ArtifactPreview",
      "description": "Shell for previewing a generated artifact (XLSX, PDF, image…)."
    },
    {
      "name": "attachment-chip",
      "type": "registry:ui",
      "title": "AttachmentChip",
      "description": "File pill shown in chat composer or message attachments row."
    },
    {
      "name": "audit-log-entry",
      "type": "registry:ui",
      "title": "AuditLogEntry",
      "description": "One row in the agent audit log."
    },
    {
      "name": "auto-compact-notice",
      "type": "registry:ui",
      "title": "AutoCompactNotice",
      "description": "Inline banner warning the user that the agent is"
    },
    {
      "name": "browser-controls",
      "type": "registry:ui",
      "title": "BrowserControls",
      "description": "Back/forward/reload + URL bar."
    },
    {
      "name": "build-log-stream",
      "type": "registry:block",
      "title": "BuildLogStream",
      "description": "Terminal-like log viewer with timestamps + level coloring."
    },
    {
      "name": "capability-indicator",
      "type": "registry:ui",
      "title": "CapabilityIndicator",
      "description": "Row of chips showing what the agent can currently do."
    },
    {
      "name": "chat-composer",
      "type": "registry:ui",
      "title": "ChatComposer",
      "description": "Message input area, shared by Chat / Code / Infra modes."
    },
    {
      "name": "chat-message",
      "type": "registry:ui",
      "title": "ChatMessage",
      "description": "Composable chat-turn surface with Vercel AI SDK UIMessage parts API — markdown, code blocks, math, tool calls, reasoning, file attachments, source citations, branching navigation."
    },
    {
      "name": "chat-thread",
      "type": "registry:ui",
      "title": "ChatThread",
      "description": "Simple vertical container that applies spacing + scroll."
    },
    {
      "name": "chat-types",
      "type": "registry:lib",
      "title": "Theo UI chat types",
      "description": "Shared TypeScript types for chat messages, roles, and attachments."
    },
    {
      "name": "choice-prompt",
      "type": "registry:block",
      "title": "ChoicePrompt",
      "description": "Single-select ask-the-user card with number-key shortcuts, an Other free-text option, and a side-by-side preview pane."
    },
    {
      "name": "cn",
      "type": "registry:lib",
      "title": "cn (Tailwind class merger)",
      "description": "Merge Tailwind classes with conflict resolution."
    },
    {
      "name": "code-review-panel",
      "type": "registry:ui",
      "title": "CodeReviewPanel",
      "description": "Code-agent review surface: aggregate change counters, a Commit action, per-file unified diffs, and an All-files tree."
    },
    {
      "name": "confirm-prompt",
      "type": "registry:block",
      "title": "ConfirmPrompt",
      "description": "Binary yes/no ask-the-user card with an optional destructive variant exposed as an alertdialog."
    },
    {
      "name": "context-card",
      "type": "registry:ui",
      "title": "ContextCard",
      "description": "Generic \"informational\" card for the right inspector."
    },
    {
      "name": "context-window-bar",
      "type": "registry:ui",
      "title": "ContextWindowBar",
      "description": "Shows how much of the model's context window has been"
    },
    {
      "name": "cost-meter",
      "type": "registry:ui",
      "title": "CostMeter",
      "description": "Gauge for token spend that visualizes used vs. budget with color-coded states."
    },
    {
      "name": "created-files-card",
      "type": "registry:ui",
      "title": "CreatedFilesCard",
      "description": "Surfaces files produced by a completed task."
    },
    {
      "name": "cron-job-card",
      "type": "registry:ui",
      "title": "CronJobCard",
      "description": "One scheduled agent job — shows schedule, next run, last status, and toggle / edit actions."
    },
    {
      "name": "cron-jobs-list",
      "type": "registry:block",
      "title": "CronJobsList",
      "description": "Grid of CronJobCards with a sticky \"new job\" action."
    },
    {
      "name": "diff-viewer",
      "type": "registry:ui",
      "title": "DiffViewer",
      "description": "Unified diff rendering, no external dep."
    },
    {
      "name": "env",
      "type": "registry:lib",
      "title": "Environment helpers",
      "description": "Typed environment helpers (isDev / isProd) reading NODE_ENV through a single accessor that works in browser bundlers, Node/SSR, and unbundled browsers."
    },
    {
      "name": "folder-context-card",
      "type": "registry:ui",
      "title": "FolderContextCard",
      "description": "File/folder tree fragment for the right inspector."
    },
    {
      "name": "folder-selector",
      "type": "registry:ui",
      "title": "FolderSelector",
      "description": "Chip showing the active working directory."
    },
    {
      "name": "hook-config",
      "type": "registry:ui",
      "title": "HookConfig",
      "description": "Editor for lifecycle hooks (PreToolUse, PostToolUse, Stop…)."
    },
    {
      "name": "hook-event-log",
      "type": "registry:ui",
      "title": "HookEventLog",
      "description": "Chronological list of hook firings, with result tone, the"
    },
    {
      "name": "intent-selector",
      "type": "registry:ui",
      "title": "IntentSelector",
      "description": "Chip dropdown for picking the agent's intent for the next"
    },
    {
      "name": "lane-board",
      "type": "registry:ui",
      "title": "LaneBoard",
      "description": "Kanban-style task board with 4 lanes matching the claw-code"
    },
    {
      "name": "live-region-context",
      "type": "registry:lib",
      "title": "LiveRegionContext",
      "description": "React context that coordinates aria-live declarations across nested components to prevent screen-reader double-announcement (T4.1)."
    },
    {
      "name": "mcp-server-card",
      "type": "registry:ui",
      "title": "McpServerCard",
      "description": "One MCP server entry showing connection status, the tools"
    },
    {
      "name": "mcp-server-list",
      "type": "registry:block",
      "title": "McpServerList",
      "description": "Grouped MCP server inventory with status filter chips."
    },
    {
      "name": "memory-editor",
      "type": "registry:ui",
      "title": "MemoryEditor",
      "description": "Three-layer Markdown memory editor (global / project /"
    },
    {
      "name": "mention-menu",
      "type": "registry:ui",
      "title": "MentionMenu",
      "description": "Keyboard-navigable popover for slash-command / @file / #memory"
    },
    {
      "name": "mode-types",
      "type": "registry:lib",
      "title": "Theo UI mode types",
      "description": "Shared Mode type — \"chat\" | \"code\" | \"infra\" — controlling app shell density and surfaces."
    },
    {
      "name": "model-card",
      "type": "registry:ui",
      "title": "ModelCard",
      "description": "Full info on a model: vendor, context, output cap, pricing,"
    },
    {
      "name": "model-effort-picker",
      "type": "registry:ui",
      "title": "ModelEffortPicker",
      "description": "Single combined dropdown to pick a coding agent's model (name + blurb + id) and reasoning effort."
    },
    {
      "name": "model-selector",
      "type": "registry:ui",
      "title": "ModelSelector",
      "description": "Chip dropdown for picking the active LLM."
    },
    {
      "name": "multi-select-prompt",
      "type": "registry:block",
      "title": "MultiSelectPrompt",
      "description": "Multi-select ask-the-user card with number-key toggles, an Other free-text option, and a side-by-side preview pane."
    },
    {
      "name": "permission-matrix",
      "type": "registry:ui",
      "title": "PermissionMatrix",
      "description": "Tool × path × decision grid for fine-grained access"
    },
    {
      "name": "permission-modal",
      "type": "registry:ui",
      "title": "PermissionModal",
      "description": "Local-files access prompt built on Dialog."
    },
    {
      "name": "permission-types",
      "type": "registry:lib",
      "title": "Theo UI permission types",
      "description": "Shared TypeScript types for permission requests, scopes, and decisions."
    },
    {
      "name": "preview-panel",
      "type": "registry:ui",
      "title": "PreviewPanel",
      "description": "Browser preview with controls + integrated logs slot."
    },
    {
      "name": "progress-checklist",
      "type": "registry:ui",
      "title": "ProgressChecklist",
      "description": "Right-inspector checklist tracking subtask completion with success / running / pending tones."
    },
    {
      "name": "project-switcher",
      "type": "registry:ui",
      "title": "ProjectSwitcher",
      "description": "Sidebar header for a code agent app."
    },
    {
      "name": "prompt",
      "type": "registry:lib",
      "title": "Prompt option helpers",
      "description": "Shared option type + helpers (PromptOption, Other-value, number-key mapping) used by the prompt composites."
    },
    {
      "name": "quick-action-chips",
      "type": "registry:ui",
      "title": "QuickActionChips",
      "description": "Row of intent chips below a hero composer."
    },
    {
      "name": "recent-folders-list",
      "type": "registry:ui",
      "title": "RecentFoldersList",
      "description": "Recently-used folders for the Files picker."
    },
    {
      "name": "rule-card",
      "type": "registry:ui",
      "title": "RuleCard",
      "description": "Single Rule row in the Rules list."
    },
    {
      "name": "rule-editor",
      "type": "registry:block",
      "title": "RuleEditor",
      "description": "Form for creating or editing a Rule (behavior instruction"
    },
    {
      "name": "rule-types",
      "type": "registry:lib",
      "title": "Theo UI rule types",
      "description": "Shared TypeScript types for Rules — user-authored behavior instructions injected into the system prompt."
    },
    {
      "name": "run-stats",
      "type": "registry:ui",
      "title": "RunStats",
      "description": "Inline metric row shown after an agent run."
    },
    {
      "name": "running-tasks-panel",
      "type": "registry:ui",
      "title": "RunningTasksPanel",
      "description": "Split list of Running vs Completed tasks."
    },
    {
      "name": "safe-href",
      "type": "registry:lib",
      "title": "safeHref (XSS-safe URL guard)",
      "description": "Defang javascript:/vbscript:/data:text/html URIs before rendering as <a href>. Returns undefined for dangerous protocols so the caller can render a non-link fallback."
    },
    {
      "name": "session-list-item",
      "type": "registry:ui",
      "title": "SessionListItem",
      "description": "Single row in the sidebar's Sessions list for a code agent"
    },
    {
      "name": "session-timeline",
      "type": "registry:ui",
      "title": "SessionTimeline",
      "description": "Historical view of past agent sessions with per-row"
    },
    {
      "name": "skill-card",
      "type": "registry:ui",
      "title": "SkillCard",
      "description": "Single skill entry showing what it does, where it came from,"
    },
    {
      "name": "skill-editor",
      "type": "registry:block",
      "title": "SkillEditor",
      "description": "Form for creating or editing a Skill."
    },
    {
      "name": "skills-list",
      "type": "registry:block",
      "title": "SkillsList",
      "description": "Grid of SkillCards with optional search + source filter chips."
    },
    {
      "name": "slide-deck",
      "type": "registry:block",
      "title": "SlideDeck",
      "description": "Composite engine that orchestrates N <Slide> primitives. Keyboard / touch / hash routing, thumbnails, presenter view, fullscreen, CSS transitions, Marpit-style fragments, PDF export. Subpath-isolated bundle in @theokit/ui."
    },
    {
      "name": "slide-plugin-emoji",
      "type": "registry:ui",
      "title": "Slide plugin · Emoji",
      "description": "Tier 2 Slide plugin that replaces :shortcode: with Unicode emoji. Ancestor-aware: skips replacement inside <code> / <pre> to preserve type hints and YAML keys. Zero peer-deps."
    },
    {
      "name": "slide-plugin-math",
      "type": "registry:ui",
      "title": "Slide plugin · Math",
      "description": "Tier 2 Slide plugin that renders $inline$ and $$block$$ math via KaTeX. Peer-deps katex + hast-util-from-html are opt-in."
    },
    {
      "name": "slide-plugin-mermaid",
      "type": "registry:ui",
      "title": "Slide plugin · Mermaid",
      "description": "Tier 2 Slide plugin that converts <code class=\"language-mermaid\"> blocks into Mermaid SVG diagrams (lazy-loaded). Peer-dep mermaid is opt-in."
    },
    {
      "name": "slide-plugin-shiki",
      "type": "registry:ui",
      "title": "Slide plugin · Shiki",
      "description": "Tier 2 Slide plugin that pre-renders fenced code blocks with Shiki's dual-theme highlighter. Peer-dep shiki is opt-in."
    },
    {
      "name": "slide",
      "type": "registry:ui",
      "title": "Slide",
      "description": "View-only primitive that renders Markdown + YAML frontmatter as a themed slide surface (Marp-inspired). Sanitized hast pipeline, two built-in themes, opt-in plugin system. Subpath-isolated bundle in @theokit/ui."
    },
    {
      "name": "steps-rail",
      "type": "registry:ui",
      "title": "StepsRail",
      "description": "Vertical numbered rail with connecting line."
    },
    {
      "name": "sub-agent-dispatch",
      "type": "registry:ui",
      "title": "SubAgentDispatch",
      "description": "Visualization for a Task() / sub-agent invocation."
    },
    {
      "name": "system-prompt-editor",
      "type": "registry:ui",
      "title": "SystemPromptEditor",
      "description": "Surface the agent's system prompt with a clear"
    },
    {
      "name": "tailwind-preset",
      "type": "registry:lib",
      "title": "Theo UI Tailwind preset",
      "description": "Type scale, fontFamily, colors and motion tokens consumed by every Theo UI component. Add to tailwind.config.ts#presets before installing any other component."
    },
    {
      "name": "task-plan",
      "type": "registry:ui",
      "title": "TaskPlan",
      "description": "Hierarchical task plan, à la Claude \"plan mode\"."
    },
    {
      "name": "task-types",
      "type": "registry:lib",
      "title": "Theo UI task types",
      "description": "Shared TypeScript types for task plans, steps, and progress state."
    },
    {
      "name": "terminal-panel",
      "type": "registry:ui",
      "title": "TerminalPanel",
      "description": "Minimal terminal output viewer."
    },
    {
      "name": "text-prompt",
      "type": "registry:block",
      "title": "TextPrompt",
      "description": "Free-text ask-the-user card with single-line or multi-line input and an optional required gate."
    },
    {
      "name": "theme-provider",
      "type": "registry:lib",
      "title": "ThemeProvider",
      "description": "Theme + dark mode provider with built-in Violet Forge, Classic Paper, and Aurora Terminal themes."
    },
    {
      "name": "theme-script",
      "type": "registry:lib",
      "title": "ThemeScript",
      "description": "Inline script for SSR-safe theme initialization in Next.js / Astro / Remix. Place in <head> to read persisted theme + mode from localStorage BEFORE React hydrates, eliminating FOUC and hydration mismatch."
    },
    {
      "name": "theo-ui-provider",
      "type": "registry:lib",
      "title": "TheoUIProvider",
      "description": "Primary entry-point provider — composes ThemeProvider + Toaster with sensible defaults. Use as the single root wrapper in consumer apps."
    },
    {
      "name": "token-usage-chart",
      "type": "registry:ui",
      "title": "TokenUsageChart",
      "description": "Stacked-bar chart of input vs output tokens over time."
    },
    {
      "name": "tokens",
      "type": "registry:lib",
      "title": "Violet Forge tokens",
      "description": "Design system CSS variables (light + dark) for the Theo UI 'Violet Forge' theme. Mirrors src/styles/tokens.css verbatim — the embedded files content is the single source of truth."
    },
    {
      "name": "tool-call-card",
      "type": "registry:ui",
      "title": "ToolCallCard",
      "description": "Single agent tool invocation rendered inside the stream."
    },
    {
      "name": "tool-call",
      "type": "registry:ui",
      "title": "ToolCall",
      "description": "Collapsible row representing an agent tool invocation."
    },
    {
      "name": "tool-result",
      "type": "registry:ui",
      "title": "ToolResult",
      "description": "Formatted output of a tool invocation."
    },
    {
      "name": "tools-list",
      "type": "registry:ui",
      "title": "ToolsList",
      "description": "Surface every tool the agent could call, with its enablement"
    },
    {
      "name": "types",
      "type": "registry:lib",
      "title": "Theo UI shared types",
      "description": "Shared TypeScript helper types (IconComponent, etc.) used across Theo UI."
    },
    {
      "name": "usage-meter",
      "type": "registry:ui",
      "title": "UsageMeter",
      "description": "Multi-metric stacked usage card for PaaS dashboards. Renders N metrics (data transfer, requests, build minutes, seats, …) each with label + value/max + Progress bar. Supports custom per-metric formatter, over-quota warning, and a compact bars-only mode. PaaS-shape sibling of CostMeter."
    },
    {
      "name": "whiteboard",
      "type": "registry:ui",
      "title": "Whiteboard",
      "description": "View-only primitive that renders a declarative JSON scene as SVG with a hand-drawn aesthetic. Pan + zoom built-in; no editor surface. Subpath-isolated bundle in @theokit/ui."
    },
    {
      "name": "work-log",
      "type": "registry:ui",
      "title": "WorkLog",
      "description": "Collapsible \"Worked for {duration}\" summary revealing the ordered steps an agent took."
    }
  ]
}
