{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "pandacoderz-ui",
  "homepage": "https://ui.spencerwueste.com",
  "items": [
    {
      "name": "text-shimmer",
      "type": "registry:ui",
      "title": "Text Shimmer",
      "description": "Animated shimmer for loading and thinking states.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/text-shimmer.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/text-shimmer.tsx"
        }
      ],
      "categories": [
        "feedback"
      ]
    },
    {
      "name": "prompt-input",
      "type": "registry:ui",
      "title": "Prompt Input",
      "description": "Composable chat input with an auto-resizing textarea and action slots.",
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "textarea",
        "scroll-area",
        "tooltip",
        "kbd"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/prompt-input.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/prompt-input.tsx"
        },
        {
          "path": "lib/merge-refs.ts",
          "type": "registry:lib",
          "target": "~/lib/merge-refs.ts"
        }
      ],
      "categories": [
        "input"
      ]
    },
    {
      "name": "suggestions",
      "type": "registry:ui",
      "title": "Suggestions",
      "description": "Prompt suggestion chips and a dismissible suggestions panel.",
      "dependencies": [
        "radix-ui",
        "@radix-ui/react-presence",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/suggestions.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/suggestions.tsx"
        }
      ],
      "categories": [
        "input"
      ]
    },
    {
      "name": "model-selector",
      "type": "registry:ui",
      "title": "Model Selector",
      "description": "Dropdown for choosing an AI model with search, groups, and sub-menus.",
      "dependencies": [
        "radix-ui",
        "class-variance-authority",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/model-selector.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/model-selector.tsx"
        }
      ],
      "categories": [
        "input"
      ]
    },
    {
      "name": "thread",
      "type": "registry:ui",
      "title": "Thread",
      "description": "Stick-to-bottom scroll container for conversations.",
      "dependencies": [
        "radix-ui",
        "use-stick-to-bottom",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/thread.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/thread.tsx"
        }
      ],
      "categories": [
        "layout"
      ]
    },
    {
      "name": "message",
      "type": "registry:ui",
      "title": "Message",
      "description": "Chat message with markdown rendering, avatar, and action bar.",
      "dependencies": [
        "radix-ui",
        "streamdown",
        "@streamdown/code",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "avatar",
        "tooltip",
        "kbd"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/message.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/message.tsx"
        },
        {
          "path": "components/pandacoderz-ui/markdown-code-block.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/markdown-code-block.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "reasoning",
      "type": "registry:ui",
      "title": "Reasoning",
      "description": "Collapsible thinking block with streaming label and elapsed time.",
      "dependencies": [
        "streamdown",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "collapsible",
        "https://ui.spencerwueste.com/r/text-shimmer.json"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/reasoning.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/reasoning.tsx"
        },
        {
          "path": "lib/use-on-change.ts",
          "type": "registry:lib",
          "target": "~/lib/use-on-change.ts"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "tool",
      "type": "registry:ui",
      "title": "Tool",
      "description": "Tool call card with status badge, input, and output payloads.",
      "dependencies": [
        "shiki",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "collapsible"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/tool.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/tool.tsx"
        },
        {
          "path": "components/pandacoderz-ui/code-block.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/code-block.tsx"
        },
        {
          "path": "lib/shiki/highlighter.ts",
          "type": "registry:lib",
          "target": "~/lib/shiki/highlighter.ts"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "feedback-bar",
      "type": "registry:ui",
      "title": "Feedback Bar",
      "description": "Inline prompt asking whether a response was helpful.",
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "tooltip",
        "kbd"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/feedback-bar.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/feedback-bar.tsx"
        }
      ],
      "categories": [
        "feedback"
      ]
    },
    {
      "name": "steps",
      "type": "registry:ui",
      "title": "Steps",
      "description": "Vertical timeline for agent plans with status indicators and collapsible details.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "collapsible"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/steps.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/steps.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "diff-view",
      "type": "registry:ui",
      "title": "Diff View",
      "description": "Unified diff with line numbers and per-hunk accept or reject actions.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/diff-view.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/diff-view.tsx"
        },
        {
          "path": "lib/diff.ts",
          "type": "registry:lib",
          "target": "~/lib/diff.ts"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "citation",
      "type": "registry:ui",
      "title": "Citation",
      "description": "Inline numbered citation chips with hover previews and source cards.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "tooltip"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/citation.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/citation.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "waveform",
      "type": "registry:ui",
      "title": "Waveform",
      "description": "CSS-animated audio bar visualizer for voice input and playback.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/waveform.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/waveform.tsx"
        }
      ],
      "categories": [
        "feedback"
      ]
    },
    {
      "name": "usage-meter",
      "type": "registry:ui",
      "title": "Usage Meter",
      "description": "Labelled progress meter for context windows, rate limits, and budgets.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/usage-meter.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/usage-meter.tsx"
        }
      ],
      "categories": [
        "feedback"
      ]
    },
    {
      "name": "command-menu",
      "type": "registry:ui",
      "title": "Command Menu",
      "description": "Cmd-K menu with search, groups, and keyboard navigation, built on Radix Dialog.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "kbd"
      ],
      "files": [
        {
          "path": "components/pandacoderz-ui/command-menu.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/command-menu.tsx"
        }
      ],
      "categories": [
        "input"
      ]
    },
    {
      "name": "mini-chart",
      "type": "registry:ui",
      "title": "Mini Chart",
      "description": "Dependency-free sparkline, bar chart, and stat tile.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/mini-chart.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/mini-chart.tsx"
        }
      ],
      "categories": [
        "display"
      ]
    },
    {
      "name": "file-drop",
      "type": "registry:ui",
      "title": "File Drop",
      "description": "Drag-and-drop upload zone with an attachment list showing progress and errors.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/pandacoderz-ui/file-drop.tsx",
          "type": "registry:ui",
          "target": "~/components/pandacoderz-ui/file-drop.tsx"
        }
      ],
      "categories": [
        "input"
      ]
    },
    {
      "name": "ai-chat",
      "type": "registry:block",
      "title": "AI Chat",
      "description": "A complete chat surface that composes the nine core chat components, with a mock streaming transport.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/thread.json",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/prompt-input.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/model-selector.json",
        "https://ui.spencerwueste.com/r/reasoning.json",
        "https://ui.spencerwueste.com/r/tool.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/feedback-bar.json"
      ],
      "files": [
        {
          "path": "blocks/ai-chat/chat.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/ai-chat/chat.tsx"
        },
        {
          "path": "blocks/ai-chat/use-chat.ts",
          "type": "registry:hook",
          "target": "~/components/blocks/ai-chat/use-chat.ts"
        },
        {
          "path": "blocks/ai-chat/mock-transport.ts",
          "type": "registry:lib",
          "target": "~/components/blocks/ai-chat/mock-transport.ts"
        },
        {
          "path": "blocks/ai-chat/types.ts",
          "type": "registry:lib",
          "target": "~/components/blocks/ai-chat/types.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "chat-shell",
      "type": "registry:block",
      "title": "Chat Shell",
      "description": "Conversation sidebar with search, pin, rename, and delete wrapped around the AI Chat block.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/ai-chat.json"
      ],
      "files": [
        {
          "path": "blocks/chat-shell/chat-shell.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/chat-shell/chat-shell.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "answer-with-sources",
      "type": "registry:block",
      "title": "Answer with Sources",
      "description": "Search-style answer with inline citations, a source grid, and follow-up questions.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/citation.json",
        "https://ui.spencerwueste.com/r/prompt-input.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/thread.json"
      ],
      "files": [
        {
          "path": "blocks/answer-with-sources/answer-with-sources.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/answer-with-sources/answer-with-sources.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "voice-chat",
      "type": "registry:block",
      "title": "Voice Chat",
      "description": "Push-to-talk assistant with live waveform, streaming transcript, and barge-in.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/waveform.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/thread.json"
      ],
      "files": [
        {
          "path": "blocks/voice-chat/voice-chat.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/voice-chat/voice-chat.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "ai-hero",
      "type": "registry:block",
      "title": "AI Hero",
      "description": "Landing hero with a rotating-placeholder prompt input, suggestion chips, and a streamed sample reply.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/prompt-input.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json"
      ],
      "files": [
        {
          "path": "blocks/ai-hero/ai-hero.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/ai-hero/ai-hero.tsx"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "agent-run",
      "type": "registry:block",
      "title": "Agent Run",
      "description": "Live agent plan with nested tool calls, a streaming log, and a human approval gate.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.spencerwueste.com/r/steps.json",
        "https://ui.spencerwueste.com/r/tool.json",
        "https://ui.spencerwueste.com/r/reasoning.json"
      ],
      "files": [
        {
          "path": "blocks/agent-run/agent-run.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/agent-run/agent-run.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "agent-inbox",
      "type": "registry:block",
      "title": "Agent Inbox",
      "description": "Parallel agent runs as cards with status, progress, and an expandable detail panel.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.spencerwueste.com/r/steps.json",
        "https://ui.spencerwueste.com/r/message.json"
      ],
      "files": [
        {
          "path": "blocks/agent-inbox/agent-inbox.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/agent-inbox/agent-inbox.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "code-review",
      "type": "registry:block",
      "title": "Code Review Agent",
      "description": "Agent-proposed patch across files with per-hunk accept and reject.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.spencerwueste.com/r/diff-view.json",
        "https://ui.spencerwueste.com/r/message.json"
      ],
      "files": [
        {
          "path": "blocks/code-review/code-review.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/code-review/code-review.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "artifact-canvas",
      "type": "registry:block",
      "title": "Artifact Canvas",
      "description": "Chat beside a live preview and code tabs with a version switcher.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/prompt-input.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/thread.json",
        "https://ui.spencerwueste.com/r/tool.json"
      ],
      "files": [
        {
          "path": "blocks/artifact-canvas/artifact-canvas.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/artifact-canvas/artifact-canvas.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "prompt-playground",
      "type": "registry:block",
      "title": "Prompt Playground",
      "description": "System prompt, parameter sliders, and side-by-side model comparison with latency and cost.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/model-selector.json",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/usage-meter.json"
      ],
      "files": [
        {
          "path": "blocks/prompt-playground/prompt-playground.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/prompt-playground/prompt-playground.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "trace-viewer",
      "type": "registry:block",
      "title": "Trace Viewer",
      "description": "Span waterfall for one request with tokens, latency, and input and output payloads.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "https://ui.spencerwueste.com/r/tool.json"
      ],
      "files": [
        {
          "path": "blocks/trace-viewer/trace-viewer.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/trace-viewer/trace-viewer.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "usage-dashboard",
      "type": "registry:block",
      "title": "Usage Dashboard",
      "description": "Stat tiles, spend charts, rate-limit meters, and a recent-requests table.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/mini-chart.json",
        "https://ui.spencerwueste.com/r/usage-meter.json"
      ],
      "files": [
        {
          "path": "blocks/usage-dashboard/usage-dashboard.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/usage-dashboard/usage-dashboard.tsx"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "command-palette",
      "type": "registry:block",
      "title": "Command Palette",
      "description": "Cmd-K over app data that turns into a streamed AI answer with actionable results.",
      "dependencies": [
        "radix-ui",
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "kbd",
        "https://ui.spencerwueste.com/r/command-menu.json",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json"
      ],
      "files": [
        {
          "path": "blocks/command-palette/command-palette.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/command-palette/command-palette.tsx"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "editor-copilot",
      "type": "registry:block",
      "title": "Editor Copilot",
      "description": "Selection toolbar with rewrite actions, inline diff acceptance, and ghost-text completion.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "kbd",
        "https://ui.spencerwueste.com/r/diff-view.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json"
      ],
      "files": [
        {
          "path": "blocks/editor-copilot/editor-copilot.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/editor-copilot/editor-copilot.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "document-qa",
      "type": "registry:block",
      "title": "Document Q&A",
      "description": "File drop, page thumbnails, and a chat whose citations jump to the cited page.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "https://ui.spencerwueste.com/r/citation.json",
        "https://ui.spencerwueste.com/r/file-drop.json",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/prompt-input.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/thread.json"
      ],
      "files": [
        {
          "path": "blocks/document-qa/document-qa.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/document-qa/document-qa.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    },
    {
      "name": "support-inbox",
      "type": "registry:block",
      "title": "Support Inbox",
      "description": "Ticket list with an AI-drafted reply you can retone, edit, and send.",
      "dependencies": [
        "@heroicons-animated/react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.spencerwueste.com/r/message.json",
        "https://ui.spencerwueste.com/r/suggestions.json",
        "https://ui.spencerwueste.com/r/text-shimmer.json",
        "https://ui.spencerwueste.com/r/thread.json"
      ],
      "files": [
        {
          "path": "blocks/support-inbox/support-inbox.tsx",
          "type": "registry:block",
          "target": "~/components/blocks/support-inbox/support-inbox.tsx"
        },
        {
          "path": "lib/mock-stream.ts",
          "type": "registry:lib",
          "target": "~/lib/mock-stream.ts"
        },
        {
          "path": "lib/use-stream-text.ts",
          "type": "registry:lib",
          "target": "~/lib/use-stream-text.ts"
        }
      ],
      "categories": [
        "blocks"
      ]
    }
  ]
}