{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "fable-ui",
  "homepage": "https://github.com/shobky/fable-ui",
  "items": [
    {
      "name": "core",
      "type": "registry:lib",
      "title": "Fable UI Core",
      "description": "Shared tool rendering, data-source types, schemas, registry, local querying, and provider utilities.",
      "dependencies": [
        "ai",
        "zod"
      ],
      "files": [
        {
          "path": "lib/fable-ui/core/definitions.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/definitions.ts"
        },
        {
          "path": "lib/fable-ui/core/tool-renderer.tsx",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/tool-renderer.tsx"
        },
        {
          "path": "lib/fable-ui/core/types.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/types.ts"
        },
        {
          "path": "lib/fable-ui/core/schemas.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/schemas.ts"
        },
        {
          "path": "lib/fable-ui/core/format.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/format.ts"
        },
        {
          "path": "lib/fable-ui/core/local-query.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/local-query.ts"
        },
        {
          "path": "lib/fable-ui/core/registry.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/registry.ts"
        },
        {
          "path": "lib/fable-ui/core/provider.tsx",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/provider.tsx"
        },
        {
          "path": "lib/fable-ui/core/index.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/core/index.ts"
        }
      ]
    },
    {
      "name": "metric-card",
      "type": "registry:component",
      "title": "MetricCard",
      "description": "Display one trusted metric from a validated AI tool payload.",
      "dependencies": [
        "ai",
        "zod",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "card",
        "badge",
        "skeleton",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/metric-card/metric-card.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/metric-card/metric-card.tsx"
        },
        {
          "path": "components/fable-ui/metric-card/index.ts",
          "type": "registry:component",
          "target": "@components/fable-ui/metric-card/index.ts"
        },
        {
          "path": "lib/fable-ui/tools/show-metric-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/show-metric-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/show-metric.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/show-metric.md"
        }
      ]
    },
    {
      "name": "suggested-actions",
      "type": "registry:component",
      "title": "SuggestedActions",
      "description": "Render safe follow-up prompts from a validated AI tool payload.",
      "dependencies": [
        "ai",
        "zod"
      ],
      "registryDependencies": [
        "card",
        "button",
        "badge",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/suggested-actions/suggested-actions.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/suggested-actions/suggested-actions.tsx"
        },
        {
          "path": "components/fable-ui/suggested-actions/index.ts",
          "type": "registry:component",
          "target": "@components/fable-ui/suggested-actions/index.ts"
        },
        {
          "path": "lib/fable-ui/tools/show-next-actions-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/show-next-actions-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/show-next-actions.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/show-next-actions.md"
        }
      ]
    },
    {
      "name": "confirmation-card",
      "type": "registry:component",
      "title": "ConfirmationCard",
      "description": "Request explicit user confirmation before the host app performs a side effect.",
      "dependencies": [
        "ai",
        "zod"
      ],
      "registryDependencies": [
        "card",
        "button",
        "badge",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/confirmation-card/confirmation-card.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/confirmation-card/confirmation-card.tsx"
        },
        {
          "path": "components/fable-ui/confirmation-card/index.ts",
          "type": "registry:component",
          "target": "@components/fable-ui/confirmation-card/index.ts"
        },
        {
          "path": "lib/fable-ui/tools/request-confirmation-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/request-confirmation-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/request-confirmation.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/request-confirmation.md"
        }
      ]
    },
    {
      "name": "form-card",
      "type": "registry:component",
      "title": "FormCard",
      "description": "Collect a few structured fields mid-conversation.",
      "dependencies": [
        "ai",
        "zod"
      ],
      "registryDependencies": [
        "card",
        "button",
        "input",
        "textarea",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/form-card/form-card.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/form-card/form-card.tsx"
        },
        {
          "path": "components/fable-ui/form-card/index.ts",
          "type": "registry:component",
          "target": "@components/fable-ui/form-card/index.ts"
        },
        {
          "path": "lib/fable-ui/tools/collect-input-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/collect-input-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/collect-input.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/collect-input.md"
        }
      ]
    },
    {
      "name": "data-browser",
      "type": "registry:block",
      "title": "DataBrowser",
      "description": "Render static row snapshots or host-backed data browsing with local search, filters, sort, row details, pagination, and row actions.",
      "dependencies": [
        "ai",
        "zod",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "card",
        "button",
        "badge",
        "input",
        "dialog",
        "drawer",
        "select",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/data-browser/index.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/index.ts"
        },
        {
          "path": "lib/fable-ui/tools/show-data-browser-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/show-data-browser-tool.ts"
        },
        {
          "path": "lib/fable-ui/tools/show-table-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/show-table-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/show-table.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/show-table.md"
        },
        {
          "path": "components/fable-ui/data-browser/data-browser.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/data-browser.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/data-browser.types.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/data-browser.types.ts"
        },
        {
          "path": "components/fable-ui/data-browser/show-table.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/show-table.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/resolve-intent.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/resolve-intent.ts"
        },
        {
          "path": "components/fable-ui/data-browser/hooks/use-data-browser-query.ts",
          "type": "registry:hook",
          "target": "@components/fable-ui/data-browser/hooks/use-data-browser-query.ts"
        },
        {
          "path": "components/fable-ui/data-browser/hooks/use-data-browser-actions.ts",
          "type": "registry:hook",
          "target": "@components/fable-ui/data-browser/hooks/use-data-browser-actions.ts"
        },
        {
          "path": "components/fable-ui/data-browser/hooks/use-row-detail-surface.ts",
          "type": "registry:hook",
          "target": "@components/fable-ui/data-browser/hooks/use-row-detail-surface.ts"
        },
        {
          "path": "components/fable-ui/data-browser/internal/inline-error.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/inline-error.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/internal/pagination-footer.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/pagination-footer.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/internal/responsive-detail-surface.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/responsive-detail-surface.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/internal/row-detail.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/row-detail.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/internal/table-view.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/table-view.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/internal/toolbar.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/data-browser/internal/toolbar.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/lib/cell-avatar.tsx",
          "type": "registry:lib",
          "target": "@components/fable-ui/data-browser/lib/cell-avatar.tsx"
        },
        {
          "path": "components/fable-ui/data-browser/lib/fallback-filters.ts",
          "type": "registry:lib",
          "target": "@components/fable-ui/data-browser/lib/fallback-filters.ts"
        },
        {
          "path": "components/fable-ui/data-browser/lib/get-row-id.ts",
          "type": "registry:lib",
          "target": "@components/fable-ui/data-browser/lib/get-row-id.ts"
        },
        {
          "path": "lib/fable-ui/manifests/show-data-browser.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/show-data-browser.md"
        }
      ]
    },
    {
      "name": "charts",
      "type": "registry:block",
      "title": "Charts",
      "description": "Render static AI-provided chart payloads using shadcn chart conventions and Recharts.",
      "dependencies": [
        "ai",
        "zod",
        "recharts"
      ],
      "registryDependencies": [
        "alert",
        "card",
        "badge",
        "chart",
        "empty",
        "skeleton",
        "tabs",
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "components/fable-ui/charts/index.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/charts/index.ts"
        },
        {
          "path": "components/fable-ui/charts/charts.tsx",
          "type": "registry:block",
          "target": "@components/fable-ui/charts/charts.tsx"
        },
        {
          "path": "components/fable-ui/charts/charts.types.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/charts/charts.types.ts"
        },
        {
          "path": "components/fable-ui/charts/tool-definition.ts",
          "type": "registry:block",
          "target": "@components/fable-ui/charts/tool-definition.ts"
        },
        {
          "path": "lib/fable-ui/tools/show-chart-tool.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/tools/show-chart-tool.ts"
        },
        {
          "path": "lib/fable-ui/manifests/show-chart.md",
          "type": "registry:file",
          "target": "@lib/fable-ui/manifests/show-chart.md"
        }
      ]
    },
    {
      "name": "rest-driver",
      "type": "registry:lib",
      "title": "REST Data Source Driver",
      "description": "Optional Fable UI data source driver for host-owned REST endpoints.",
      "registryDependencies": [
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "lib/fable-ui/drivers/rest/rest-driver.types.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/rest/rest-driver.types.ts"
        },
        {
          "path": "lib/fable-ui/drivers/rest/rest-driver.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/rest/rest-driver.ts"
        },
        {
          "path": "lib/fable-ui/drivers/rest/index.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/rest/index.ts"
        }
      ]
    },
    {
      "name": "firebase-driver",
      "type": "registry:lib",
      "title": "Firebase Data Source Driver",
      "description": "Optional Fable UI data source driver for allowlisted Firestore resources.",
      "dependencies": [
        "firebase"
      ],
      "registryDependencies": [
        "shobky/fable-ui/core"
      ],
      "files": [
        {
          "path": "lib/fable-ui/drivers/firebase/firebase-driver.types.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/firebase/firebase-driver.types.ts"
        },
        {
          "path": "lib/fable-ui/drivers/firebase/firebase-driver.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/firebase/firebase-driver.ts"
        },
        {
          "path": "lib/fable-ui/drivers/firebase/index.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/drivers/firebase/index.ts"
        }
      ]
    },
    {
      "name": "quickstart",
      "type": "registry:block",
      "title": "Fable UI Quickstart",
      "description": "Install a production-ready AI SDK chat at /fable-chat with env-driven provider configuration.",
      "dependencies": [
        "ai",
        "@ai-sdk/react",
        "@ai-sdk/anthropic",
        "@ai-sdk/deepseek",
        "@ai-sdk/google",
        "@ai-sdk/mistral",
        "@ai-sdk/openai",
        "@openrouter/ai-sdk-provider",
        "lucide-react",
        "react-markdown",
        "remark-gfm"
      ],
      "registryDependencies": [
        "button",
        "input-group",
        "textarea",
        "message-scroller",
        "message",
        "bubble",
        "marker",
        "shobky/fable-ui/core",
        "shobky/fable-ui/metric-card",
        "shobky/fable-ui/suggested-actions"
      ],
      "files": [
        {
          "path": "examples/quickstart/app/fable-chat/page.tsx",
          "type": "registry:page",
          "target": "app/fable-chat/page.tsx"
        },
        {
          "path": "examples/quickstart/app/api/fable-chat/route.ts",
          "type": "registry:file",
          "target": "app/api/fable-chat/route.ts"
        },
        {
          "path": "examples/quickstart/components/fable-chat.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/chat/fable-chat.tsx"
        },
        {
          "path": "examples/quickstart/components/fable-message.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/chat/fable-message.tsx"
        },
        {
          "path": "examples/quickstart/components/fable-tool-part.tsx",
          "type": "registry:component",
          "target": "@components/fable-ui/chat/fable-tool-part.tsx"
        },
        {
          "path": "examples/quickstart/lib/tools.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/quickstart/tools.ts"
        },
        {
          "path": "examples/quickstart/lib/provider-config.ts",
          "type": "registry:lib",
          "target": "@lib/fable-ui/quickstart/provider-config.ts"
        },
        {
          "path": "examples/quickstart/README.md",
          "type": "registry:file",
          "target": "~/docs/fable-ui/quickstart.md"
        }
      ]
    }
  ]
}
