{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "notra",
  "homepage": "https://github.com/usenotra",
  "items": [
    {
      "name": "ai-overview",
      "type": "registry:component",
      "title": "AI Overview",
      "description": "The AI Overview root, built on shadcn Collapsible and Button, with a collapsible Show more.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        }
      ]
    },
    {
      "name": "ai-overview-header",
      "type": "registry:component",
      "title": "AI Overview Header",
      "description": "The sparkle icon and AI Overview heading.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-header.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-header.tsx"
        }
      ]
    },
    {
      "name": "ai-overview-content",
      "type": "registry:component",
      "title": "AI Overview Content",
      "description": "Paragraph, heading, list and link styles for AI Overview answers.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-content.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-content.tsx"
        }
      ]
    },
    {
      "name": "ai-overview-highlight",
      "type": "registry:component",
      "title": "AI Overview Highlight",
      "description": "A mark that sweeps in Google's blue highlight.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-highlight.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-highlight.tsx"
        }
      ]
    },
    {
      "name": "ai-overview-citation",
      "type": "registry:component",
      "title": "AI Overview Citation",
      "description": "A source chip built on shadcn Badge and HoverCard.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card",
        "separator"
      ],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-citation.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-citation.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-favicon.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-favicon.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-source-action.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-source-action.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/constants/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/constants/google-ai-overview.ts"
        }
      ]
    },
    {
      "name": "ai-overview-skeleton",
      "type": "registry:component",
      "title": "AI Overview Skeleton",
      "description": "A loading state built on shadcn Skeleton.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible", "skeleton"],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-skeleton.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-skeleton.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/constants/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/constants/google-ai-overview.ts"
        }
      ]
    },
    {
      "name": "google-ai-overview",
      "type": "registry:block",
      "title": "Google AI Overview",
      "description": "A full recreation of Google's AI Overview built from the AI Overview components on shadcn Base UI.",
      "dependencies": ["cn", "sonner"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card",
        "separator",
        "skeleton",
        "sonner"
      ],
      "cssVars": {
        "theme": {
          "color-aio-bg": "var(--aio-bg)",
          "color-aio-fg": "var(--aio-fg)",
          "color-aio-label": "var(--aio-label)",
          "color-aio-heading": "var(--aio-heading)",
          "color-aio-muted": "var(--aio-muted)",
          "color-aio-link": "var(--aio-link)",
          "color-aio-mark": "var(--aio-mark)",
          "color-aio-mark-fg": "var(--aio-mark-fg)",
          "color-aio-chip": "var(--aio-chip)",
          "color-aio-chip-hover": "var(--aio-chip-hover)",
          "color-aio-border": "var(--aio-border)",
          "color-aio-sparkle": "var(--aio-sparkle)",
          "color-aio-button-border": "var(--aio-button-border)",
          "color-aio-button-fg": "var(--aio-button-fg)",
          "color-aio-button-icon": "var(--aio-button-icon)",
          "color-aio-focus": "var(--aio-focus)",
          "color-aio-hover": "var(--aio-hover)",
          "color-aio-popover": "var(--aio-popover)",
          "color-aio-popover-fg": "var(--aio-popover-fg)",
          "color-aio-popover-muted": "var(--aio-popover-muted)",
          "color-aio-action": "var(--aio-action)",
          "font-aio": "\"Google Sans\", \"Google Sans Flex\", Roboto, Arial, sans-serif"
        },
        "light": {
          "aio-bg": "#ffffff",
          "aio-fg": "#0a0a0a",
          "aio-label": "#1f1f1f",
          "aio-heading": "#001d35",
          "aio-muted": "#56595e",
          "aio-link": "#1a0dab",
          "aio-mark": "#d3e3fd",
          "aio-mark-fg": "#001d35",
          "aio-chip": "#e9ebf0",
          "aio-chip-hover": "#e1e3e8",
          "aio-border": "#d2d2d2",
          "aio-sparkle": "#3179ed",
          "aio-button-border": "#a3c9ff",
          "aio-button-fg": "#001d35",
          "aio-button-icon": "#0b57d0",
          "aio-focus": "#336ef3",
          "aio-hover": "#f3f5f6",
          "aio-popover": "#f7f8fa",
          "aio-popover-fg": "#1f1f1f",
          "aio-popover-muted": "#636363",
          "aio-action": "#545d7e"
        },
        "dark": {
          "aio-bg": "#22242a",
          "aio-fg": "#e6e8f0",
          "aio-label": "#e8e8e8",
          "aio-heading": "#eef0ff",
          "aio-muted": "#adafb8",
          "aio-link": "#99c3ff",
          "aio-mark": "#203da0",
          "aio-mark-fg": "#eef0ff",
          "aio-chip": "#363840",
          "aio-chip-hover": "#50525b",
          "aio-border": "#444746",
          "aio-sparkle": "#7aacff",
          "aio-button-border": "#515a7b",
          "aio-button-fg": "#eef0ff",
          "aio-button-icon": "#a8c7fa",
          "aio-focus": "#336ef3",
          "aio-hover": "#36383f",
          "aio-popover": "#2c2e34",
          "aio-popover-fg": "#e8e8e8",
          "aio-popover-muted": "#9e9e9e",
          "aio-action": "#9e9e9e"
        }
      },
      "files": [
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-icons.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-icons.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/types/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/types/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-header.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-header.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-content.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-content.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-highlight.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-highlight.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-citation.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-citation.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-favicon.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-favicon.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-skeleton.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-skeleton.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/constants/google-ai-overview.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/constants/google-ai-overview.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/constants/vercel-sources.ts",
          "type": "registry:lib",
          "target": "components/google-ai-overview/constants/vercel-sources.ts"
        },
        {
          "path": "registry/notra/google-ai-overview/components/ai-overview-source-action.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/components/ai-overview-source-action.tsx"
        },
        {
          "path": "registry/notra/google-ai-overview/examples/google-ai-overview-demo.tsx",
          "type": "registry:component",
          "target": "components/google-ai-overview/examples/google-ai-overview-demo.tsx"
        },
        {
          "path": "public/google-ai-overview/vercel.svg",
          "type": "registry:file",
          "target": "~/public/google-ai-overview/vercel.svg"
        },
        {
          "path": "public/google-ai-overview/github.svg",
          "type": "registry:file",
          "target": "~/public/google-ai-overview/github.svg"
        },
        {
          "path": "public/google-ai-overview/youtube.svg",
          "type": "registry:file",
          "target": "~/public/google-ai-overview/youtube.svg"
        },
        {
          "path": "public/google-ai-overview/nextjs.svg",
          "type": "registry:file",
          "target": "~/public/google-ai-overview/nextjs.svg"
        }
      ]
    },
    {
      "name": "marketing-button",
      "type": "registry:component",
      "title": "Marketing Button",
      "description": "The gradient marketing buttons from the Notra landing page, built on the Base UI Button.",
      "dependencies": ["@base-ui/react", "class-variance-authority", "cn"],
      "cssVars": {
        "theme": {
          "color-marketing-light-foreground": "#1e1e1e",
          "tracking-marketing": "-0.015em",
          "animate-button-swap-in": "button-swap-in 280ms cubic-bezier(0.23, 1, 0.32, 1) both",
          "animate-button-swap-out": "button-swap-out 360ms cubic-bezier(0.45, 0, 0.25, 1) both"
        }
      },
      "files": [
        {
          "path": "registry/notra/marketing-button/components/marketing-button.tsx",
          "type": "registry:component"
        },
        {
          "path": "registry/notra/marketing-button/components/marketing-button-content.tsx",
          "type": "registry:component"
        }
      ],
      "css": {
        "@keyframes button-swap-in": {
          "from": {
            "opacity": "0",
            "transform": "translateY(0.45em)",
            "filter": "blur(4px)"
          },
          "to": {
            "opacity": "1",
            "transform": "translateY(0)",
            "filter": "blur(0)"
          }
        },
        "@keyframes button-swap-out": {
          "from": {
            "opacity": "1",
            "transform": "translateY(0)",
            "filter": "blur(0)"
          },
          "to": {
            "opacity": "0",
            "transform": "translateY(-0.45em)",
            "filter": "blur(4px)"
          }
        },
        "@property --marketing-gradient-from": {
          "syntax": "\"<color>\"",
          "inherits": "false",
          "initial-value": "oklab(100% 0 0)"
        },
        "@property --marketing-gradient-to": {
          "syntax": "\"<color>\"",
          "inherits": "false",
          "initial-value": "oklab(100% 0 0)"
        },
        "@utility marketing-gradient-primary": {
          "--marketing-gradient-from": "oklab(69.9% 0.067 -0.16)",
          "--marketing-gradient-to": "oklab(52.6% 0.113 -0.27)",
          "background-image": "linear-gradient(180deg, var(--marketing-gradient-from) 0%, var(--marketing-gradient-to) 100%)",
          "box-shadow": "#8b5cf640 0 0 0 0.5rem, #28282814 0 0.0625rem 0.125rem, #1e1e1e40 0 0 0 0.0625rem",
          "transition": "--marketing-gradient-from 200ms ease-out, --marketing-gradient-to 200ms ease-out",
          "&:hover": {
            "--marketing-gradient-to": "oklab(33.9% 0.073 -0.174)"
          },
          "&:active": {
            "--marketing-gradient-from": "oklab(52.6% 0.113 -0.27)",
            "--marketing-gradient-to": "oklab(24.8% 0.053 -0.127)"
          }
        },
        "@utility marketing-gradient-flat": {
          "--marketing-gradient-from": "oklab(69.9% 0.067 -0.16)",
          "--marketing-gradient-to": "oklab(52.6% 0.113 -0.27)",
          "background-image": "linear-gradient(180deg, var(--marketing-gradient-from) 0%, var(--marketing-gradient-to) 100%)",
          "box-shadow": "#28282814 0 0.0625rem 0.125rem, #1e1e1e40 0 0 0 0.0625rem",
          "transition": "--marketing-gradient-from 200ms ease-out, --marketing-gradient-to 200ms ease-out",
          "&:hover": {
            "--marketing-gradient-to": "oklab(33.9% 0.073 -0.174)"
          },
          "&:active": {
            "--marketing-gradient-from": "oklab(52.6% 0.113 -0.27)",
            "--marketing-gradient-to": "oklab(24.8% 0.053 -0.127)"
          }
        },
        "@utility marketing-gradient-light": {
          "--marketing-gradient-from": "oklab(100% 0 0)",
          "--marketing-gradient-to": "oklab(95.5% 0 0)",
          "background-image": "linear-gradient(180deg, var(--marketing-gradient-from) 0%, var(--marketing-gradient-to) 100%)",
          "box-shadow": "#ececec 0 0 0 0.0625rem, #28282814 0 0.0625rem 0.125rem",
          "transition": "--marketing-gradient-from 200ms ease-out, --marketing-gradient-to 200ms ease-out",
          "&:hover": {
            "--marketing-gradient-to": "oklab(89% 0 0)"
          },
          "&:active": {
            "--marketing-gradient-from": "oklab(95.5% 0 0)",
            "--marketing-gradient-to": "oklab(85% 0 0)"
          }
        }
      }
    },
    {
      "name": "notra-button",
      "type": "registry:component",
      "title": "Button",
      "description": "A Base UI button with Depth primary, secondary, outline and destructive variants, squircle corners, and loading and progress states.",
      "dependencies": ["@base-ui/react", "class-variance-authority", "cn"],
      "cssVars": {
        "theme": {
          "animate-button-swap-in": "button-swap-in 280ms cubic-bezier(0.23, 1, 0.32, 1) both",
          "animate-button-swap-out": "button-swap-out 360ms cubic-bezier(0.45, 0, 0.25, 1) both",
          "animate-button-dot": "button-dot 1s ease-in-out infinite",
          "animate-button-progress-out": "button-progress-out 600ms ease-out both"
        }
      },
      "css": {
        "@keyframes button-swap-in": {
          "from": {
            "opacity": "0",
            "transform": "translateY(0.45em)",
            "filter": "blur(4px)"
          },
          "to": {
            "opacity": "1",
            "transform": "translateY(0)",
            "filter": "blur(0)"
          }
        },
        "@keyframes button-swap-out": {
          "from": {
            "opacity": "1",
            "transform": "translateY(0)",
            "filter": "blur(0)"
          },
          "to": {
            "opacity": "0",
            "transform": "translateY(-0.45em)",
            "filter": "blur(4px)"
          }
        },
        "@keyframes button-dot": {
          "0%, 60%, 100%": {
            "opacity": "0.45",
            "transform": "translateY(0)"
          },
          "30%": {
            "opacity": "1",
            "transform": "translateY(-0.3em)"
          }
        },
        "@keyframes button-progress-out": {
          "0%, 50%": {
            "opacity": "1"
          },
          "100%": {
            "opacity": "0"
          }
        }
      },
      "files": [
        {
          "path": "registry/notra/button/components/button.tsx",
          "type": "registry:component",
          "target": "components/button/components/button.tsx"
        },
        {
          "path": "registry/notra/button/components/button-content.tsx",
          "type": "registry:component",
          "target": "components/button/components/button-content.tsx"
        }
      ],
      "registryDependencies": ["button"]
    },
    {
      "name": "notra-dropdown-menu",
      "type": "registry:component",
      "title": "Dropdown Menu",
      "description": "A Base UI menu with Depth surfaces, squircle corners, submenus, checkbox and radio items.",
      "dependencies": ["@base-ui/react", "cn", "lucide-react"],
      "files": [
        {
          "path": "registry/notra/dropdown-menu/components/dropdown-menu.tsx",
          "type": "registry:component",
          "target": "components/dropdown-menu/components/dropdown-menu.tsx"
        },
        {
          "path": "registry/notra/dropdown-menu/constants/dropdown-menu.ts",
          "type": "registry:lib",
          "target": "components/dropdown-menu/constants/dropdown-menu.ts"
        }
      ],
      "registryDependencies": ["dropdown-menu"]
    },
    {
      "name": "notra-select",
      "type": "registry:component",
      "title": "Select",
      "description": "A Base UI select with a Depth button trigger and a scrollable popup below it.",
      "dependencies": ["@base-ui/react", "cn", "lucide-react"],
      "registryDependencies": [
        "select",
        "https://ui.usenotra.com/r/notra-button.json",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json"
      ],
      "files": [
        {
          "path": "registry/notra/select/components/select.tsx",
          "type": "registry:component",
          "target": "components/select/components/select.tsx"
        },
        {
          "path": "registry/notra/select/constants/select.ts",
          "type": "registry:lib",
          "target": "components/select/constants/select.ts"
        }
      ]
    },
    {
      "name": "notra-tooltip",
      "type": "registry:component",
      "title": "Tooltip",
      "description": "A Base UI tooltip with the Depth surface of the buttons that glides between neighbouring triggers.",
      "dependencies": ["@base-ui/react", "cn"],
      "files": [
        {
          "path": "registry/notra/tooltip/components/tooltip.tsx",
          "type": "registry:component",
          "target": "components/tooltip/components/tooltip.tsx"
        }
      ]
    },
    {
      "name": "notra-sonner",
      "type": "registry:component",
      "title": "Sonner",
      "description": "A Sonner toaster with the Depth surface of the buttons and tinted status icons.",
      "dependencies": ["cn", "lucide-react", "next-themes", "sonner"],
      "registryDependencies": [
        "sonner",
        "https://ui.usenotra.com/r/notra-button.json"
      ],
      "files": [
        {
          "path": "registry/notra/sonner/components/sonner.tsx",
          "type": "registry:component",
          "target": "components/sonner/components/sonner.tsx"
        }
      ]
    },
    {
      "name": "notra-table",
      "type": "registry:component",
      "title": "Table",
      "description": "shadcn table primitives in a grey shell with a 2px rim around a lifted body card.",
      "dependencies": ["cn"],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      },
      "files": [
        {
          "path": "registry/notra/table/components/table.tsx",
          "type": "registry:component",
          "target": "components/table/components/table.tsx"
        }
      ],
      "registryDependencies": ["table"]
    },
    {
      "name": "table",
      "type": "registry:component",
      "title": "Table",
      "description": "A sortable, selectable table with a sticky header, virtualized rows, pagination with a page-size select, and an infinite-scroll variant.",
      "dependencies": [
        "@hugeicons/core-free-icons",
        "@hugeicons/react",
        "@tanstack/react-virtual",
        "cn"
      ],
      "registryDependencies": [
        "https://ui.usenotra.com/r/notra-table.json",
        "https://ui.usenotra.com/r/notra-button.json",
        "https://ui.usenotra.com/r/notra-tooltip.json",
        "checkbox",
        "context-menu",
        "https://ui.usenotra.com/r/notra-select.json",
        "skeleton"
      ],
      "files": [
        {
          "path": "registry/notra/table/components/data-table-body.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-body.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-column-group.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-column-group.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-header.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-header.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-labels.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-labels.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-pager.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-pager.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-pagination.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-pagination.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-root.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-root.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-corner-scrollbar.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-corner-scrollbar.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table-surfaces.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table-surfaces.tsx"
        },
        {
          "path": "registry/notra/table/components/data-table.tsx",
          "type": "registry:component",
          "target": "components/table/components/data-table.tsx"
        },
        {
          "path": "registry/notra/table/constants/data-table.ts",
          "type": "registry:lib",
          "target": "components/table/constants/data-table.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-collapsible-columns.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-collapsible-columns.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-column-resize.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-column-resize.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-column-sort.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-column-sort.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-row-selection.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-row-selection.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-table-paging.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-table-paging.ts"
        },
        {
          "path": "registry/notra/table/hooks/use-table-viewport.ts",
          "type": "registry:hook",
          "target": "components/table/hooks/use-table-viewport.ts"
        },
        {
          "path": "registry/notra/table/lib/data-table.ts",
          "type": "registry:lib",
          "target": "components/table/lib/data-table.ts"
        },
        {
          "path": "registry/notra/table/types/data-table.ts",
          "type": "registry:lib",
          "target": "components/table/types/data-table.ts"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:component",
      "title": "Card",
      "description": "The dualtone card from the Notra dashboard: a grey shell with a lifted body, an eyebrow title with an optional hint, a readout and an action slot, plus a flat variant, a section heading and an empty state.",
      "dependencies": ["@hugeicons/core-free-icons", "@hugeicons/react", "cn"],
      "registryDependencies": [
        "card",
        "spinner",
        "https://ui.usenotra.com/r/notra-tooltip.json",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-shell": "var(--shell)",
          "color-shell-border": "var(--shell-border)",
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "shell": "var(--table-shell)",
          "shell-border": "var(--table-shell-border)",
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "shell": "var(--table-shell)",
          "shell-border": "var(--table-shell-border)",
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      },
      "files": [
        {
          "path": "registry/notra/card/components/card-labels.tsx",
          "type": "registry:component",
          "target": "components/card/components/card-labels.tsx"
        },
        {
          "path": "registry/notra/card/components/instrument-grid.tsx",
          "type": "registry:component",
          "target": "components/card/components/instrument-grid.tsx"
        },
        {
          "path": "registry/notra/card/components/instrument-module.tsx",
          "type": "registry:component",
          "target": "components/card/components/instrument-module.tsx"
        },
        {
          "path": "registry/notra/card/components/instrument-reveal.tsx",
          "type": "registry:component",
          "target": "components/card/components/instrument-reveal.tsx"
        },
        {
          "path": "registry/notra/card/constants/card.ts",
          "type": "registry:lib",
          "target": "components/card/constants/card.ts"
        },
        {
          "path": "registry/notra/card/types/card.ts",
          "type": "registry:lib",
          "target": "components/card/types/card.ts"
        }
      ]
    },
    {
      "name": "notra-sidebar",
      "type": "registry:component",
      "title": "Sidebar",
      "description": "The shadcn sidebar on Base UI with a fading icon rail, a resizable rail, collapsible sub-rows and gliding Notra tooltips.",
      "dependencies": [
        "@base-ui/react",
        "@hugeicons/core-free-icons",
        "@hugeicons/react",
        "class-variance-authority",
        "cn"
      ],
      "registryDependencies": [
        "https://ui.usenotra.com/r/notra-button.json",
        "https://ui.usenotra.com/r/notra-tooltip.json",
        "input",
        "separator",
        "sheet",
        "skeleton"
      ],
      "files": [
        {
          "path": "registry/notra/sidebar/components/sidebar.tsx",
          "type": "registry:component",
          "target": "components/sidebar/components/sidebar.tsx"
        }
      ]
    },
    {
      "name": "app-sidebar",
      "type": "registry:block",
      "title": "App Sidebar",
      "description": "The Notra dashboard sidebar: project switcher, search, grouped navigation with sub-rows and a rail flyout, and the account menu.",
      "dependencies": ["@hugeicons/core-free-icons", "@hugeicons/react", "cn"],
      "registryDependencies": [
        "https://ui.usenotra.com/r/notra-sidebar.json",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "avatar",
        "kbd"
      ],
      "files": [
        {
          "path": "registry/notra/app-sidebar/components/sidebar-nav.tsx",
          "type": "registry:component",
          "target": "components/app-sidebar/components/sidebar-nav.tsx"
        },
        {
          "path": "registry/notra/app-sidebar/components/sidebar-search.tsx",
          "type": "registry:component",
          "target": "components/app-sidebar/components/sidebar-search.tsx"
        },
        {
          "path": "registry/notra/app-sidebar/components/sidebar-switcher.tsx",
          "type": "registry:component",
          "target": "components/app-sidebar/components/sidebar-switcher.tsx"
        },
        {
          "path": "registry/notra/app-sidebar/components/sidebar-user-menu.tsx",
          "type": "registry:component",
          "target": "components/app-sidebar/components/sidebar-user-menu.tsx"
        },
        {
          "path": "registry/notra/app-sidebar/constants/app-sidebar.ts",
          "type": "registry:lib",
          "target": "components/app-sidebar/constants/app-sidebar.ts"
        },
        {
          "path": "registry/notra/app-sidebar/hooks/use-sidebar-settled.ts",
          "type": "registry:hook",
          "target": "components/app-sidebar/hooks/use-sidebar-settled.ts"
        },
        {
          "path": "registry/notra/app-sidebar/hooks/use-scroll-more.ts",
          "type": "registry:hook",
          "target": "components/app-sidebar/hooks/use-scroll-more.ts"
        },
        {
          "path": "registry/notra/app-sidebar/types/app-sidebar.ts",
          "type": "registry:lib",
          "target": "components/app-sidebar/types/app-sidebar.ts"
        }
      ]
    },
    {
      "name": "shimmer",
      "type": "registry:component",
      "title": "Shimmer",
      "description": "A light sweep across text for thinking and loading states.",
      "dependencies": ["cn"],
      "cssVars": {
        "theme": {
          "animate-shimmer": "shimmer var(--shimmer-duration, 1.7s) linear infinite"
        }
      },
      "css": {
        "@keyframes shimmer": {
          "from": {
            "background-position": "100% 0"
          },
          "to": {
            "background-position": "0% 0"
          }
        }
      },
      "files": [
        {
          "path": "registry/notra/shimmer/components/shimmer.tsx",
          "type": "registry:component",
          "target": "components/shimmer/components/shimmer.tsx"
        },
        {
          "path": "registry/notra/shimmer/types/shimmer.ts",
          "type": "registry:lib",
          "target": "components/shimmer/types/shimmer.ts"
        }
      ]
    },
    {
      "name": "step-slider",
      "type": "registry:component",
      "title": "Step Slider",
      "description": "A slider that snaps to a fixed set of values, with a dotted fill that sweeps on every step. Built on the Base UI Slider.",
      "dependencies": ["@base-ui/react", "cn"],
      "files": [
        {
          "path": "registry/notra/step-slider/components/step-slider.tsx",
          "type": "registry:component",
          "target": "components/step-slider/components/step-slider.tsx"
        },
        {
          "path": "registry/notra/step-slider/types/step-slider.ts",
          "type": "registry:lib",
          "target": "components/step-slider/types/step-slider.ts"
        },
        {
          "path": "registry/notra/step-slider/lib/step-slider.ts",
          "type": "registry:lib",
          "target": "components/step-slider/lib/step-slider.ts"
        }
      ]
    },
    {
      "name": "icon-tabs",
      "type": "registry:component",
      "title": "Icon Tabs",
      "description": "A segmented tab selector where only the active tab shows its icon, sliding in beside the label. Built on the Base UI Tabs.",
      "dependencies": ["@base-ui/react", "cn"],
      "files": [
        {
          "path": "registry/notra/icon-tabs/components/icon-tabs.tsx",
          "type": "registry:component",
          "target": "components/icon-tabs/components/icon-tabs.tsx"
        },
        {
          "path": "registry/notra/icon-tabs/constants/icon-tabs.ts",
          "type": "registry:lib",
          "target": "components/icon-tabs/constants/icon-tabs.ts"
        },
        {
          "path": "registry/notra/icon-tabs/lib/icon-tabs.ts",
          "type": "registry:lib",
          "target": "components/icon-tabs/lib/icon-tabs.ts"
        },
        {
          "path": "registry/notra/icon-tabs/types/icon-tabs.ts",
          "type": "registry:lib",
          "target": "components/icon-tabs/types/icon-tabs.ts"
        }
      ]
    },
    {
      "name": "composer",
      "type": "registry:component",
      "title": "Composer",
      "description": "The chat composer from the Notra dashboard: a muted tray around the input card, with queued messages and attachments as chips. Built on the Notra Button and Tooltip and the shadcn Textarea.",
      "dependencies": ["@base-ui/react", "cn", "lucide-react", "motion"],
      "registryDependencies": [
        "https://ui.usenotra.com/r/notra-button.json",
        "https://ui.usenotra.com/r/notra-tooltip.json",
        "spinner",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/notra/composer/components/composer.tsx",
          "type": "registry:component",
          "target": "components/composer/components/composer.tsx"
        },
        {
          "path": "registry/notra/composer/constants/composer.ts",
          "type": "registry:lib",
          "target": "components/composer/constants/composer.ts"
        },
        {
          "path": "registry/notra/composer/types/composer.ts",
          "type": "registry:lib",
          "target": "components/composer/types/composer.ts"
        }
      ]
    },
    {
      "name": "chat-minimap",
      "type": "registry:component",
      "title": "Chat Minimap",
      "description": "A rail of lines that maps a conversation, built on shadcn Button, Card, HoverCard and Tooltip.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "card", "hover-card", "tooltip"],
      "files": [
        {
          "path": "registry/notra/chat-minimap/components/chat-minimap.tsx",
          "type": "registry:component",
          "target": "components/chat-minimap/components/chat-minimap.tsx"
        },
        {
          "path": "registry/notra/chat-minimap/types/chat-minimap.ts",
          "type": "registry:lib",
          "target": "components/chat-minimap/types/chat-minimap.ts"
        },
        {
          "path": "registry/notra/chat-minimap/lib/chat-minimap.ts",
          "type": "registry:lib",
          "target": "components/chat-minimap/lib/chat-minimap.ts"
        },
        {
          "path": "registry/notra/chat-minimap/hooks/use-chat-minimap-scroll-spy.ts",
          "type": "registry:hook",
          "target": "components/chat-minimap/hooks/use-chat-minimap-scroll-spy.ts"
        }
      ]
    },
    {
      "name": "perplexity-message",
      "type": "registry:component",
      "title": "Perplexity Message",
      "description": "User pill and assistant answer turn with search and action slots.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "collapsible"],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-message.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-message.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-search",
      "type": "registry:component",
      "title": "Perplexity Search",
      "description": "The globe search step with queries, source rows and a +N more expander, built on shadcn Collapsible.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "empty",
        "item",
        "separator",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-search.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-search.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/hooks/use-perplexity-search-sequence.ts",
          "type": "registry:hook",
          "target": "components/perplexity/hooks/use-perplexity-search-sequence.ts"
        }
      ]
    },
    {
      "name": "perplexity-citation",
      "type": "registry:component",
      "title": "Perplexity Citation",
      "description": "An inline source pill with favicon, label and +N count, built on shadcn Badge.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card",
        "separator"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-citation.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-citation.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-favicon",
      "type": "registry:component",
      "title": "Perplexity Favicon",
      "description": "A site favicon on shadcn Avatar with a gray fallback.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": ["avatar", "collapsible"],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-rewrite-panel",
      "type": "registry:component",
      "title": "Perplexity Rewrite Panel",
      "description": "The mode and model list with a Rewrite button.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "item",
        "scroll-area",
        "separator",
        "toggle-group"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-rewrite-panel.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-rewrite-panel.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        }
      ]
    },
    {
      "name": "perplexity-actions",
      "type": "registry:component",
      "title": "Perplexity Actions",
      "description": "The answer action bar with share, copy, rewrite, feedback and a sources button, built on shadcn Button and Tooltip.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "item",
        "popover",
        "scroll-area",
        "separator",
        "toggle-group",
        "tooltip"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-actions.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-actions.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-sources-summary.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-sources-summary.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-rewrite-panel.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-rewrite-panel.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        }
      ]
    },
    {
      "name": "perplexity-user-actions",
      "type": "registry:component",
      "title": "Perplexity User Actions",
      "description": "The time, edit and copy controls beside a user message.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": ["avatar", "button", "collapsible", "tooltip"],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-user-actions.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-user-actions.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-sources-summary",
      "type": "registry:component",
      "title": "Perplexity Sources Summary",
      "description": "Stacked favicons and the source count next to the answer actions.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": ["avatar", "collapsible"],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-sources-summary.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-sources-summary.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-composer",
      "type": "registry:component",
      "title": "Perplexity Composer",
      "description": "The follow-up input with Search/Research focus menu, model selector, voice and send/stop buttons.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "input-group"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-composer.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-composer.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-selector.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-selector.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-model-selector",
      "type": "registry:component",
      "title": "Perplexity Model Selector",
      "description": "The Model chip and its provider list with Max/New badges and locks, built on shadcn DropdownMenu.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-model-selector.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-selector.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-model-icon",
      "type": "registry:component",
      "title": "Perplexity Model Icon",
      "description": "Grayscale provider logos for the model list.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "collapsible"],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity-thinking",
      "type": "registry:component",
      "title": "Perplexity Thinking",
      "description": "The shimmering Thinking... status shown before a search.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "collapsible",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-thinking.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-thinking.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        }
      ]
    },
    {
      "name": "perplexity",
      "type": "registry:block",
      "title": "Perplexity",
      "description": "A full recreation of a Perplexity thread with search steps, citations, sources sheet, composer and a replayable playback, built on shadcn Base UI.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "card",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "empty",
        "hover-card",
        "input-group",
        "item",
        "popover",
        "scroll-area",
        "separator",
        "toggle-group",
        "tooltip",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-pplx-bg": "var(--pplx-bg)",
          "color-pplx-fg": "var(--pplx-fg)",
          "color-pplx-icon": "var(--pplx-icon)",
          "color-pplx-secondary": "var(--pplx-secondary)",
          "color-pplx-muted": "var(--pplx-muted)",
          "color-pplx-subtle": "var(--pplx-subtle)",
          "color-pplx-hover": "var(--pplx-hover)",
          "color-pplx-row-hover": "var(--pplx-row-hover)",
          "color-pplx-bubble": "var(--pplx-bubble)",
          "color-pplx-chip": "var(--pplx-chip)",
          "color-pplx-favicon": "var(--pplx-favicon)",
          "color-pplx-surface": "var(--pplx-surface)",
          "color-pplx-popover": "var(--pplx-popover)",
          "color-pplx-border": "var(--pplx-border)",
          "color-pplx-ring": "var(--pplx-ring)",
          "color-pplx-send": "var(--pplx-send)",
          "color-pplx-send-hover": "var(--pplx-send-hover)",
          "color-pplx-send-fg": "var(--pplx-send-fg)",
          "color-pplx-send-disabled": "var(--pplx-send-disabled)",
          "color-pplx-send-disabled-fg": "var(--pplx-send-disabled-fg)",
          "color-pplx-model-chip": "var(--pplx-model-chip)",
          "color-pplx-model-chip-hover": "var(--pplx-model-chip-hover)",
          "color-pplx-badge": "var(--pplx-badge)",
          "color-pplx-badge-fg": "var(--pplx-badge-fg)",
          "color-pplx-badge-new": "var(--pplx-badge-new)",
          "color-pplx-badge-new-fg": "var(--pplx-badge-new-fg)",
          "color-pplx-promo": "var(--pplx-promo)",
          "color-pplx-promo-hover": "var(--pplx-promo-hover)",
          "color-pplx-lock": "var(--pplx-lock)",
          "font-pplx": "Inter, ui-sans-serif, system-ui, sans-serif",
          "font-pplx-serif": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif"
        },
        "light": {
          "pplx-bg": "#fdfbfb",
          "pplx-fg": "#27251e",
          "pplx-icon": "#3d3d3d",
          "pplx-secondary": "#5c5c5c",
          "pplx-muted": "#6b6b6b",
          "pplx-subtle": "#8d8d8d",
          "pplx-hover": "#f3f3f3",
          "pplx-row-hover": "#f5f5f5",
          "pplx-bubble": "#f3f3f3",
          "pplx-chip": "#f0f0f0",
          "pplx-favicon": "#e8e8e8",
          "pplx-surface": "#ffffff",
          "pplx-popover": "#ffffff",
          "pplx-border": "rgb(0 0 0 / 8%)",
          "pplx-ring": "rgb(0 0 0 / 15%)",
          "pplx-send": "#2a2a2a",
          "pplx-send-hover": "#1a1a1a",
          "pplx-send-fg": "#ffffff",
          "pplx-send-disabled": "#d9d9d9",
          "pplx-send-disabled-fg": "#ffffff",
          "pplx-model-chip": "#f2f2f2",
          "pplx-model-chip-hover": "#ebebeb",
          "pplx-badge": "#ececec",
          "pplx-badge-fg": "#6b6b6b",
          "pplx-badge-new": "#e8f1fb",
          "pplx-badge-new-fg": "#3d7ab5",
          "pplx-promo": "#e6f3f1",
          "pplx-promo-hover": "#dceeea",
          "pplx-lock": "#b0b0b0"
        },
        "dark": {
          "pplx-bg": "#171615",
          "pplx-fg": "#d6d5d4",
          "pplx-icon": "#fafafa",
          "pplx-secondary": "#b3b3b3",
          "pplx-muted": "#b3b3b3",
          "pplx-subtle": "#a3a3a3",
          "pplx-hover": "rgb(255 255 255 / 10%)",
          "pplx-row-hover": "rgb(255 255 255 / 8%)",
          "pplx-bubble": "rgb(255 255 255 / 10%)",
          "pplx-chip": "rgb(255 255 255 / 10%)",
          "pplx-favicon": "rgb(255 255 255 / 12%)",
          "pplx-surface": "#1c1c1c",
          "pplx-popover": "#1c1c1c",
          "pplx-border": "rgb(255 255 255 / 10%)",
          "pplx-ring": "rgb(255 255 255 / 20%)",
          "pplx-send": "#ffffff",
          "pplx-send-hover": "rgb(255 255 255 / 90%)",
          "pplx-send-fg": "#1a1a1a",
          "pplx-send-disabled": "rgb(255 255 255 / 20%)",
          "pplx-send-disabled-fg": "rgb(255 255 255 / 70%)",
          "pplx-model-chip": "rgb(255 255 255 / 10%)",
          "pplx-model-chip-hover": "rgb(255 255 255 / 15%)",
          "pplx-badge": "rgb(255 255 255 / 10%)",
          "pplx-badge-fg": "#b3b3b3",
          "pplx-badge-new": "rgb(61 122 181 / 20%)",
          "pplx-badge-new-fg": "#8bb8e0",
          "pplx-promo": "#1c3d38",
          "pplx-promo-hover": "#244843",
          "pplx-lock": "#7a7a7a"
        }
      },
      "files": [
        {
          "path": "registry/notra/perplexity/components/perplexity-message.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-message.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-search.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-search.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-citation.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-citation.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-favicon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-favicon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-actions.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-actions.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-sources-summary.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-sources-summary.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-composer.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-composer.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-selector.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-selector.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-model-icon.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-model-icon.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-thinking.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-thinking.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-answer.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-answer.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-icons.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-icons.tsx"
        },
        {
          "path": "registry/notra/perplexity/types/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/types/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity.ts"
        },
        {
          "path": "registry/notra/perplexity/constants/perplexity-demo.ts",
          "type": "registry:lib",
          "target": "components/perplexity/constants/perplexity-demo.ts"
        },
        {
          "path": "registry/notra/perplexity/hooks/use-perplexity-playback.ts",
          "type": "registry:hook",
          "target": "components/perplexity/hooks/use-perplexity-playback.ts"
        },
        {
          "path": "registry/notra/perplexity/hooks/use-perplexity-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/perplexity/hooks/use-perplexity-reduced-motion.ts"
        },
        {
          "path": "registry/notra/perplexity/examples/perplexity-demo.tsx",
          "type": "registry:component",
          "target": "components/perplexity/examples/perplexity-demo.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-user-actions.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-user-actions.tsx"
        },
        {
          "path": "registry/notra/perplexity/components/perplexity-rewrite-panel.tsx",
          "type": "registry:component",
          "target": "components/perplexity/components/perplexity-rewrite-panel.tsx"
        },
        {
          "path": "registry/notra/perplexity/hooks/use-perplexity-search-sequence.ts",
          "type": "registry:hook",
          "target": "components/perplexity/hooks/use-perplexity-search-sequence.ts"
        }
      ]
    },
    {
      "name": "chatgpt-thread",
      "type": "registry:component",
      "title": "ChatGPT Thread",
      "description": "The ChatGPT conversation column with auto-scroll, a scroll-to-bottom button and a pinned footer.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "scroll-area",
        "sheet"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-thread.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-thread.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-message",
      "type": "registry:component",
      "title": "ChatGPT Message",
      "description": "User bubbles and bubble-less assistant turns with reasoning and hover actions.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible", "sheet"],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-message.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-message.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-reasoning",
      "type": "registry:component",
      "title": "ChatGPT Reasoning",
      "description": "The collapsible \"Worked for Ns\" trace, built on shadcn Collapsible.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible", "sheet"],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-reasoning.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-reasoning.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-icons.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-icons.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-app-call",
      "type": "registry:component",
      "title": "ChatGPT App Call",
      "description": "The \"Used Notra\" line with the app logo, shown when ChatGPT calls an app.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible", "sheet"],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-app-call.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-app-call.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-source-chip",
      "type": "registry:component",
      "title": "ChatGPT Source Chip",
      "description": "An inline citation pill with a hover card.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card",
        "separator",
        "sheet"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-favicon.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-favicon.tsx"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-source-chip.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-source-chip.tsx"
        }
      ]
    },
    {
      "name": "chatgpt-search",
      "type": "registry:component",
      "title": "ChatGPT Search",
      "description": "The \"Searched N websites\" line, built on shadcn Button.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "button", "collapsible", "sheet"],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-search.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-search.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-icons.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-icons.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-favicon.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-favicon.tsx"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-activity",
      "type": "registry:component",
      "title": "ChatGPT Activity",
      "description": "The search activity and sources side sheet, built on shadcn Sheet, Badge and Avatar.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "item",
        "scroll-area",
        "separator",
        "sheet"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-activity.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-activity.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-search.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-search.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-favicon.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-favicon.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-icons.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-icons.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-thinking",
      "type": "registry:component",
      "title": "ChatGPT Thinking",
      "description": "The shimmering Thinking placeholder.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "sheet",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-thinking.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-thinking.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-actions",
      "type": "registry:component",
      "title": "ChatGPT Actions",
      "description": "Copy, share, redo and more buttons, built on shadcn Button and Tooltip.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "sheet",
        "tooltip"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-actions.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-actions.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-action-button.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-action-button.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        }
      ]
    },
    {
      "name": "chatgpt-model-selector",
      "type": "registry:component",
      "title": "ChatGPT Model Selector",
      "description": "The hover-to-open effort chip with Model and Effort submenus, built on shadcn DropdownMenu.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "popover",
        "sheet",
        "slider",
        "toggle-group"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)",
          "animate-chatgpt-burst": "chatgpt-burst 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards",
          "animate-chatgpt-flow": "chatgpt-flow 7s linear infinite",
          "animate-chatgpt-twinkle": "chatgpt-twinkle 3.2s ease-in-out infinite"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-model-selector.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-model-selector.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt-models.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt-models.ts"
        }
      ],
      "css": {
        "@keyframes chatgpt-burst": {
          "0%": {
            "opacity": "1",
            "transform": "translate(0, 0) scale(0.4)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translate(var(--burst-x), var(--burst-y)) scale(1)"
          }
        },
        "@keyframes chatgpt-flow": {
          "from": {
            "background-position": "0% 0"
          },
          "to": {
            "background-position": "200% 0"
          }
        },
        "@keyframes chatgpt-twinkle": {
          "0%": {
            "opacity": "0",
            "transform": "translateX(14px) scale(0.5)"
          },
          "30%, 60%": {
            "opacity": "0.95",
            "transform": "translateX(0) scale(1)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translateX(-16px) scale(0.6)"
          }
        }
      }
    },
    {
      "name": "chatgpt-composer",
      "type": "registry:component",
      "title": "ChatGPT Composer",
      "description": "The pill-shaped Ask anything input with model picker and send button.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "collapsible",
        "input-group",
        "popover",
        "sheet",
        "slider",
        "toggle-group"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)",
          "animate-chatgpt-burst": "chatgpt-burst 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards",
          "animate-chatgpt-flow": "chatgpt-flow 7s linear infinite",
          "animate-chatgpt-twinkle": "chatgpt-twinkle 3.2s ease-in-out infinite"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-composer.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-composer.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-model-selector.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-model-selector.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt-models.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt-models.ts"
        }
      ],
      "css": {
        "@keyframes chatgpt-burst": {
          "0%": {
            "opacity": "1",
            "transform": "translate(0, 0) scale(0.4)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translate(var(--burst-x), var(--burst-y)) scale(1)"
          }
        },
        "@keyframes chatgpt-flow": {
          "from": {
            "background-position": "0% 0"
          },
          "to": {
            "background-position": "200% 0"
          }
        },
        "@keyframes chatgpt-twinkle": {
          "0%": {
            "opacity": "0",
            "transform": "translateX(14px) scale(0.5)"
          },
          "30%, 60%": {
            "opacity": "0.95",
            "transform": "translateX(0) scale(1)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translateX(-16px) scale(0.6)"
          }
        }
      }
    },
    {
      "name": "chatgpt",
      "type": "registry:block",
      "title": "ChatGPT",
      "description": "A full recreation of a ChatGPT conversation with thinking, web search, reasoning and the model picker, built on shadcn Base UI.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "card",
        "collapsible",
        "hover-card",
        "input-group",
        "item",
        "popover",
        "scroll-area",
        "separator",
        "sheet",
        "slider",
        "toggle-group",
        "tooltip",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-chatgpt-bg": "var(--chatgpt-bg)",
          "color-chatgpt-fg": "var(--chatgpt-fg)",
          "color-chatgpt-muted": "var(--chatgpt-muted)",
          "color-chatgpt-hover": "var(--chatgpt-hover)",
          "color-chatgpt-border": "var(--chatgpt-border)",
          "color-chatgpt-bubble": "var(--chatgpt-bubble)",
          "color-chatgpt-composer": "var(--chatgpt-composer)",
          "color-chatgpt-composer-border": "var(--chatgpt-composer-border)",
          "color-chatgpt-popover": "var(--chatgpt-popover)",
          "color-chatgpt-tooltip": "var(--chatgpt-tooltip)",
          "color-chatgpt-tooltip-fg": "var(--chatgpt-tooltip-fg)",
          "color-chatgpt-send": "var(--chatgpt-send)",
          "color-chatgpt-send-hover": "var(--chatgpt-send-hover)",
          "color-chatgpt-send-fg": "var(--chatgpt-send-fg)",
          "color-chatgpt-focus": "var(--chatgpt-focus)",
          "color-chatgpt-search": "var(--chatgpt-search)",
          "shadow-chatgpt-composer": "var(--chatgpt-composer-shadow)",
          "shadow-chatgpt-menu": "var(--chatgpt-menu-shadow)",
          "font-chatgpt": "ui-sans-serif, -apple-system, system-ui, \"Segoe UI\", Helvetica, \"Apple Color Emoji\", Arial, sans-serif, \"Segoe UI Emoji\", \"Segoe UI Symbol\"",
          "color-chatgpt-slider-track": "var(--chatgpt-slider-track)",
          "color-chatgpt-slider-fill": "var(--chatgpt-slider-fill)",
          "color-chatgpt-slider-thumb": "var(--chatgpt-slider-thumb)",
          "color-chatgpt-slider-dot": "var(--chatgpt-slider-dot)",
          "color-chatgpt-slider-dot-fill": "var(--chatgpt-slider-dot-fill)",
          "color-chatgpt-pro": "var(--chatgpt-pro)",
          "animate-chatgpt-burst": "chatgpt-burst 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards",
          "animate-chatgpt-flow": "chatgpt-flow 7s linear infinite",
          "animate-chatgpt-twinkle": "chatgpt-twinkle 3.2s ease-in-out infinite"
        },
        "light": {
          "chatgpt-bg": "#ffffff",
          "chatgpt-fg": "#0d0d0d",
          "chatgpt-muted": "#5d5d5d",
          "chatgpt-hover": "#f3f3f3",
          "chatgpt-border": "#e5e5e5",
          "chatgpt-bubble": "#f4f4f4",
          "chatgpt-composer": "#ffffff",
          "chatgpt-composer-border": "#00000014",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.04), 0 2px 8px rgb(0 0 0 / 0.04)",
          "chatgpt-popover": "#ffffff",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(0 0 0 / 0.05), 0 4px 16px rgb(0 0 0 / 0.08)",
          "chatgpt-tooltip": "#0d0d0d",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#e4e4e4",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#a3a3a3",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 60%)",
          "chatgpt-pro": "#7c3aed",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        },
        "dark": {
          "chatgpt-bg": "#212121",
          "chatgpt-fg": "#ececec",
          "chatgpt-muted": "#afafaf",
          "chatgpt-hover": "#303030",
          "chatgpt-border": "#3a3a3a",
          "chatgpt-bubble": "#303030",
          "chatgpt-composer": "#303030",
          "chatgpt-composer-border": "#ffffff1a",
          "chatgpt-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.2)",
          "chatgpt-popover": "#353535",
          "chatgpt-menu-shadow": "0 0 0 1px rgb(255 255 255 / 0.08), 0 8px 24px rgb(0 0 0 / 0.4)",
          "chatgpt-tooltip": "#000000",
          "chatgpt-tooltip-fg": "#ffffff",
          "chatgpt-send": "#2563eb",
          "chatgpt-send-hover": "#1d4ed8",
          "chatgpt-send-fg": "#ffffff",
          "chatgpt-focus": "#2563eb",
          "chatgpt-search": "#e4543a",
          "chatgpt-slider-track": "#454545",
          "chatgpt-slider-fill": "#3b82f6",
          "chatgpt-slider-thumb": "#ffffff",
          "chatgpt-slider-dot": "#8c8c8c",
          "chatgpt-slider-dot-fill": "rgb(255 255 255 / 55%)",
          "chatgpt-pro": "#b794f6",
          "chatgpt-pro-gradient": "linear-gradient(90deg, #2b3fd6 0%, #6a5be2 25%, #b58cf5 50%, #6a5be2 75%, #2b3fd6 100%)"
        }
      },
      "files": [
        {
          "path": "registry/notra/chatgpt/components/chatgpt-action-button.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-action-button.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-actions.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-actions.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-activity.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-activity.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-composer.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-composer.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-favicon.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-favicon.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-icons.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-icons.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-message.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-message.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-model-selector.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-model-selector.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-reasoning.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-reasoning.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-search.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-search.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-thinking.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-thinking.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-app-call.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-app-call.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-thread.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-thread.tsx"
        },
        {
          "path": "registry/notra/chatgpt/types/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/types/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt-models.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt-models.ts"
        },
        {
          "path": "registry/notra/chatgpt/constants/chatgpt-story.ts",
          "type": "registry:lib",
          "target": "components/chatgpt/constants/chatgpt-story.ts"
        },
        {
          "path": "registry/notra/chatgpt/hooks/use-chatgpt-playback.ts",
          "type": "registry:hook",
          "target": "components/chatgpt/hooks/use-chatgpt-playback.ts"
        },
        {
          "path": "registry/notra/chatgpt/examples/chatgpt-demo.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/examples/chatgpt-demo.tsx"
        },
        {
          "path": "registry/notra/chatgpt/components/chatgpt-source-chip.tsx",
          "type": "registry:component",
          "target": "components/chatgpt/components/chatgpt-source-chip.tsx"
        }
      ],
      "css": {
        "@keyframes chatgpt-burst": {
          "0%": {
            "opacity": "1",
            "transform": "translate(0, 0) scale(0.4)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translate(var(--burst-x), var(--burst-y)) scale(1)"
          }
        },
        "@keyframes chatgpt-flow": {
          "from": {
            "background-position": "0% 0"
          },
          "to": {
            "background-position": "200% 0"
          }
        },
        "@keyframes chatgpt-twinkle": {
          "0%": {
            "opacity": "0",
            "transform": "translateX(14px) scale(0.5)"
          },
          "30%, 60%": {
            "opacity": "0.95",
            "transform": "translateX(0) scale(1)"
          },
          "100%": {
            "opacity": "0",
            "transform": "translateX(-16px) scale(0.6)"
          }
        }
      }
    },
    {
      "name": "gemini-thoughts",
      "type": "registry:component",
      "title": "Gemini Thoughts",
      "description": "The \"Show thinking\" step with thoughts and searches.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": ["badge", "button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-text.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-text.ts"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-story.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-story.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-thoughts.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-thoughts.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-sparkle.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-sparkle.tsx"
        },
        {
          "path": "registry/notra/gemini/hooks/use-gemini-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/gemini/hooks/use-gemini-reduced-motion.ts"
        }
      ]
    },
    {
      "name": "gemini-source-chip",
      "type": "registry:component",
      "title": "Gemini Source Chip",
      "description": "An inline source pill with a hover card.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-text.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-text.ts"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-story.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-story.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-source-chip.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-source-chip.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini-message",
      "type": "registry:component",
      "title": "Gemini Message",
      "description": "Gemini's user pill and bubble-less assistant turn.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-message.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-message.tsx"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-story-text.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-story-text.tsx"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-text.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-text.ts"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-story.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-story.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-source-chip.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-source-chip.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini-thinking",
      "type": "registry:component",
      "title": "Gemini Thinking",
      "description": "The animated Gemini sparkle with a shimmering status label.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-thinking.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-thinking.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-sparkle.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-sparkle.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/hooks/use-gemini-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/gemini/hooks/use-gemini-reduced-motion.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini-sparkle",
      "type": "registry:component",
      "title": "Gemini Sparkle",
      "description": "Gemini's three-dot mark that bounces and folds into a triangle.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-sparkle.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-sparkle.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/hooks/use-gemini-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/gemini/hooks/use-gemini-reduced-motion.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini-actions",
      "type": "registry:component",
      "title": "Gemini Actions",
      "description": "Feedback, share, copy and more buttons built on shadcn Button and Tooltip.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "collapsible",
        "hover-card",
        "tooltip"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-actions.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-actions.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-action-button.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-action-button.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-story-text.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-story-text.tsx"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-text.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-text.ts"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-story.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-story.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-source-chip.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-source-chip.tsx"
        }
      ]
    },
    {
      "name": "gemini-composer",
      "type": "registry:component",
      "title": "Gemini Composer",
      "description": "Gemini's pill input with a model picker and a morphing send button.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "badge",
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "input-group"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-composer.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-composer.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-model-selector.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-model-selector.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-models.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-models.ts"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-model.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-model.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini-model-selector",
      "type": "registry:component",
      "title": "Gemini Model Selector",
      "description": "The Gemini model chip and menu built on shadcn DropdownMenu.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "badge",
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-model-selector.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-model-selector.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-models.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-models.ts"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-model.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-model.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        }
      ]
    },
    {
      "name": "gemini",
      "type": "registry:block",
      "title": "Gemini",
      "description": "A full recreation of the Gemini chat built from the Gemini components on shadcn Base UI.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "card",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "hover-card",
        "input-group",
        "scroll-area",
        "tooltip",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-gemini-bg": "var(--gemini-bg)",
          "color-gemini-fg": "var(--gemini-fg)",
          "color-gemini-muted": "var(--gemini-muted)",
          "color-gemini-subtle": "var(--gemini-subtle)",
          "color-gemini-border": "var(--gemini-border)",
          "color-gemini-hover": "var(--gemini-hover)",
          "color-gemini-bubble": "var(--gemini-bubble)",
          "color-gemini-composer": "var(--gemini-composer)",
          "color-gemini-composer-border": "var(--gemini-composer-border)",
          "color-gemini-chip-fg": "var(--gemini-chip-fg)",
          "color-gemini-badge-fg": "var(--gemini-badge-fg)",
          "color-gemini-send": "var(--gemini-send)",
          "color-gemini-send-fg": "var(--gemini-send-fg)",
          "color-gemini-send-hover": "var(--gemini-send-hover)",
          "color-gemini-stop": "var(--gemini-stop)",
          "color-gemini-stop-hover": "var(--gemini-stop-hover)",
          "color-gemini-separator": "var(--gemini-separator)",
          "color-gemini-focus": "var(--gemini-focus)",
          "color-gemini-popover": "var(--gemini-popover)",
          "color-gemini-tooltip": "var(--gemini-tooltip)",
          "color-gemini-tooltip-fg": "var(--gemini-tooltip-fg)",
          "shadow-gemini-composer": "var(--gemini-composer-shadow)",
          "shadow-gemini-popover": "var(--gemini-popover-shadow)",
          "font-gemini": "\"Google Sans Flex\", \"Google Sans\", Roboto, Arial, sans-serif",
          "color-gemini-placeholder": "var(--gemini-placeholder)"
        },
        "light": {
          "gemini-bg": "#ffffff",
          "gemini-fg": "#1f1f1f",
          "gemini-muted": "#444746",
          "gemini-subtle": "#80868b",
          "gemini-border": "#00000014",
          "gemini-hover": "#f1f3f4",
          "gemini-bubble": "#f0f0f0",
          "gemini-composer": "#ffffff",
          "gemini-composer-border": "#0000000a",
          "gemini-composer-shadow": "0 1px 2px rgb(60 64 67 / 0.08), 0 2px 12px rgb(60 64 67 / 0.08)",
          "gemini-chip-fg": "#3c4043",
          "gemini-badge-fg": "#3c4043",
          "gemini-send": "#1f1f1f",
          "gemini-send-fg": "#ffffff",
          "gemini-send-hover": "#000000",
          "gemini-stop": "#e8eaed",
          "gemini-stop-hover": "#dadce0",
          "gemini-separator": "#e8eaed",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#ffffff",
          "gemini-popover-shadow": "0 8px 28px rgb(60 64 67 / 0.16)",
          "gemini-tooltip": "#171717",
          "gemini-tooltip-fg": "#fafafa",
          "gemini-placeholder": "#5f6368"
        },
        "dark": {
          "gemini-bg": "#1f1f1f",
          "gemini-fg": "#e3e3e3",
          "gemini-muted": "#c4c7c5",
          "gemini-subtle": "#80868b",
          "gemini-border": "#ffffff1a",
          "gemini-hover": "#ffffff1a",
          "gemini-bubble": "#ffffff1a",
          "gemini-composer": "#ffffff0f",
          "gemini-composer-border": "#ffffff1a",
          "gemini-composer-shadow": "0 1px 2px rgb(0 0 0 / 0.24)",
          "gemini-chip-fg": "#fafafa",
          "gemini-badge-fg": "#e8eaed",
          "gemini-send": "#ffffff",
          "gemini-send-fg": "#1f1f1f",
          "gemini-send-hover": "#ffffffe6",
          "gemini-stop": "#ffffff1f",
          "gemini-stop-hover": "#ffffff29",
          "gemini-separator": "#ffffff1a",
          "gemini-focus": "#1a73e8",
          "gemini-popover": "#131419",
          "gemini-popover-shadow": "0 8px 28px rgb(0 0 0 / 0.45)",
          "gemini-tooltip": "#fafafa",
          "gemini-tooltip-fg": "#171717",
          "gemini-placeholder": "#bdc1c6"
        }
      },
      "files": [
        {
          "path": "registry/notra/gemini/components/gemini-message.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-message.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-thinking.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-thinking.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-sparkle.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-sparkle.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/hooks/use-gemini-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/gemini/hooks/use-gemini-reduced-motion.ts"
        },
        {
          "path": "registry/notra/gemini/types/gemini.ts",
          "type": "registry:lib",
          "target": "components/gemini/types/gemini.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-actions.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-actions.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-action-button.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-action-button.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-composer.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-composer.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-model-selector.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-model-selector.tsx"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-models.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-models.ts"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-model.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-model.ts"
        },
        {
          "path": "registry/notra/gemini/components/gemini-story-text.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-story-text.tsx"
        },
        {
          "path": "registry/notra/gemini/lib/gemini-text.ts",
          "type": "registry:lib",
          "target": "components/gemini/lib/gemini-text.ts"
        },
        {
          "path": "registry/notra/gemini/constants/gemini-story.ts",
          "type": "registry:lib",
          "target": "components/gemini/constants/gemini-story.ts"
        },
        {
          "path": "registry/notra/gemini/hooks/use-gemini-playback.ts",
          "type": "registry:hook",
          "target": "components/gemini/hooks/use-gemini-playback.ts"
        },
        {
          "path": "registry/notra/gemini/examples/gemini-demo.tsx",
          "type": "registry:component",
          "target": "components/gemini/examples/gemini-demo.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-thoughts.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-thoughts.tsx"
        },
        {
          "path": "registry/notra/gemini/components/gemini-source-chip.tsx",
          "type": "registry:component",
          "target": "components/gemini/components/gemini-source-chip.tsx"
        }
      ]
    },
    {
      "name": "claude-composer",
      "type": "registry:component",
      "title": "Claude Composer",
      "description": "The claude.ai message box with model picker, dictation and a morphing send button, built on shadcn Button and DropdownMenu.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "input-group",
        "kbd",
        "progress",
        "tooltip"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-composer.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-composer.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-icons.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-icons.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-model-selector.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-model-selector.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/constants/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/lib/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-plus-menu.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-plus-menu.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-usage-ring.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-usage-ring.tsx"
        }
      ]
    },
    {
      "name": "claude-plus-menu",
      "type": "registry:component",
      "title": "Claude Plus Menu",
      "description": "The composer's + menu with files, skills, connectors, design system, plugins and research.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "kbd"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-icons.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-icons.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/constants/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/lib/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-plus-menu.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-plus-menu.tsx"
        }
      ]
    },
    {
      "name": "claude-model-selector",
      "type": "registry:component",
      "title": "Claude Model Selector",
      "description": "A hover-open model and effort picker built on shadcn DropdownMenu.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-model-selector.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-model-selector.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/constants/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/lib/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        }
      ]
    },
    {
      "name": "claude-message",
      "type": "registry:component",
      "title": "Claude Message",
      "description": "User bubbles and serif assistant replies with slots for search, sources and actions.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-message.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-message.tsx"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        }
      ]
    },
    {
      "name": "claude-actions",
      "type": "registry:component",
      "title": "Claude Actions",
      "description": "Copy, feedback and retry actions built on shadcn Button and Tooltip.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": ["button", "collapsible", "tooltip"],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-actions.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-actions.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        }
      ]
    },
    {
      "name": "claude-search",
      "type": "registry:component",
      "title": "Claude Search",
      "description": "Claude's web search timeline with queries, result cards and status steps.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "card",
        "collapsible",
        "item",
        "scroll-area",
        "separator",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-search.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-search.tsx"
        },
        {
          "path": "registry/notra/claude/lib/claude-search.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-search.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-spinner.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-spinner.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-reduced-motion.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-search-sequence.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-search-sequence.ts"
        }
      ]
    },
    {
      "name": "claude-sources",
      "type": "registry:component",
      "title": "Claude Sources",
      "description": "Source pills under an assistant reply, built on shadcn Badge.",
      "dependencies": ["cn"],
      "registryDependencies": ["avatar", "collapsible", "hover-card"],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-sources.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-sources.tsx"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-source-link.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-source-link.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/lib/claude-search.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-search.ts"
        }
      ]
    },
    {
      "name": "claude-thinking",
      "type": "registry:component",
      "title": "Claude Thinking",
      "description": "The animated spinner and rotating verb Claude shows before replying.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "collapsible",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-thinking.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-thinking.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-spinner.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-spinner.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-reduced-motion.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        }
      ]
    },
    {
      "name": "claude-spinner",
      "type": "registry:component",
      "title": "Claude Spinner",
      "description": "Claude's animated starburst spinner.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-spinner.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-spinner.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-reduced-motion.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        }
      ]
    },
    {
      "name": "claude",
      "type": "registry:block",
      "title": "Claude",
      "description": "A full recreation of the claude.ai chat with web search, serif replies, message actions and the model picker, built on shadcn Base UI.",
      "dependencies": ["cn", "lucide-react"],
      "registryDependencies": [
        "avatar",
        "button",
        "card",
        "collapsible",
        "https://ui.usenotra.com/r/notra-dropdown-menu.json",
        "hover-card",
        "input-group",
        "item",
        "kbd",
        "progress",
        "scroll-area",
        "separator",
        "tooltip",
        "https://ui.usenotra.com/r/shimmer.json"
      ],
      "cssVars": {
        "theme": {
          "color-claude-bg": "var(--claude-bg)",
          "color-claude-fg": "var(--claude-fg)",
          "color-claude-border": "var(--claude-border)",
          "color-claude-muted": "var(--claude-muted)",
          "color-claude-subtle": "var(--claude-subtle)",
          "color-claude-faint": "var(--claude-faint)",
          "color-claude-hover": "var(--claude-hover)",
          "color-claude-bubble": "var(--claude-bubble)",
          "color-claude-input": "var(--claude-input)",
          "color-claude-input-border": "var(--claude-input-border)",
          "color-claude-input-shadow": "var(--claude-input-shadow)",
          "color-claude-send": "var(--claude-send)",
          "color-claude-send-hover": "var(--claude-send-hover)",
          "color-claude-send-fg": "var(--claude-send-fg)",
          "color-claude-accent": "var(--claude-accent)",
          "color-claude-check": "var(--claude-check)",
          "color-claude-rail": "var(--claude-rail)",
          "color-claude-text": "var(--claude-text)",
          "color-claude-meta": "var(--claude-meta)",
          "color-claude-card": "var(--claude-card)",
          "color-claude-card-border": "var(--claude-card-border)",
          "color-claude-card-divider": "var(--claude-card-divider)",
          "color-claude-step": "var(--claude-step)",
          "color-claude-danger": "var(--claude-danger)",
          "color-claude-pill": "var(--claude-pill)",
          "color-claude-pill-border": "var(--claude-pill-border)",
          "color-claude-pill-fg": "var(--claude-pill-fg)",
          "color-claude-popover": "var(--claude-popover)",
          "color-claude-popover-border": "var(--claude-popover-border)",
          "color-claude-popover-shadow": "var(--claude-popover-shadow)",
          "color-claude-tooltip": "var(--claude-tooltip)",
          "color-claude-tooltip-fg": "var(--claude-tooltip-fg)",
          "font-claude": "\"Anthropic Sans\", ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif",
          "font-claude-serif": "\"Anthropic Serif\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
          "color-claude-usage": "var(--claude-usage)"
        },
        "light": {
          "claude-bg": "#fcfcfb",
          "claude-fg": "#0b0b0b",
          "claude-border": "#e3e3e2",
          "claude-muted": "#898781",
          "claude-subtle": "#898781",
          "claude-faint": "#9d9d9d",
          "claude-hover": "#e8e8e7",
          "claude-bubble": "#f0f0ef",
          "claude-input": "#ffffff",
          "claude-input-border": "#e0e0df",
          "claude-input-shadow": "rgb(0 0 0 / 3%)",
          "claude-send": "#0b0b0b",
          "claude-send-hover": "#000000",
          "claude-send-fg": "#ffffff",
          "claude-accent": "#d97757",
          "claude-check": "#2c84db",
          "claude-rail": "#e3e3e2",
          "claude-text": "#52514e",
          "claude-meta": "#898781",
          "claude-card": "#f0f0ef",
          "claude-card-border": "#e3e3e2",
          "claude-card-divider": "#e3e3e2",
          "claude-step": "#52514e",
          "claude-danger": "#b53333",
          "claude-pill": "#f0f0ef",
          "claude-pill-border": "rgb(0 0 0 / 6%)",
          "claude-pill-fg": "#52514e",
          "claude-popover": "#ffffff",
          "claude-popover-border": "rgb(0 0 0 / 8%)",
          "claude-popover-shadow": "rgb(0 0 0 / 10%)",
          "claude-tooltip": "#0b0b0b",
          "claude-tooltip-fg": "#fcfcfb",
          "claude-usage": "#009300"
        },
        "dark": {
          "claude-bg": "#262624",
          "claude-fg": "#faf9f5",
          "claude-border": "#3d3d3a",
          "claude-muted": "#9c9a92",
          "claude-subtle": "#9c9a92",
          "claude-faint": "#85837c",
          "claude-hover": "#3a3a37",
          "claude-bubble": "#141413",
          "claude-input": "#30302e",
          "claude-input-border": "#44433f",
          "claude-input-shadow": "transparent",
          "claude-send": "#faf9f5",
          "claude-send-hover": "#ffffff",
          "claude-send-fg": "#141413",
          "claude-accent": "#d97757",
          "claude-check": "#5a9ee6",
          "claude-rail": "#3d3d3a",
          "claude-text": "#c2c0b6",
          "claude-meta": "#9c9a92",
          "claude-card": "#1f1e1d",
          "claude-card-border": "#3d3d3a",
          "claude-card-divider": "#3d3d3a",
          "claude-step": "#c2c0b6",
          "claude-danger": "#e5776b",
          "claude-pill": "#1f1e1d",
          "claude-pill-border": "rgb(255 255 255 / 8%)",
          "claude-pill-fg": "#c2c0b6",
          "claude-popover": "#30302e",
          "claude-popover-border": "rgb(222 220 209 / 15%)",
          "claude-popover-shadow": "rgb(0 0 0 / 40%)",
          "claude-tooltip": "#faf9f5",
          "claude-tooltip-fg": "#141413",
          "claude-usage": "#3fb950"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude/components/claude-composer.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-composer.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-icons.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-icons.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-model-selector.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-model-selector.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude.ts"
        },
        {
          "path": "registry/notra/claude/constants/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/lib/claude-models.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-models.ts"
        },
        {
          "path": "registry/notra/claude/types/claude.ts",
          "type": "registry:lib",
          "target": "components/claude/types/claude.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-message.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-message.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-actions.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-actions.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-search.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-search.tsx"
        },
        {
          "path": "registry/notra/claude/lib/claude-search.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-search.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-spinner.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-spinner.tsx"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-reduced-motion.ts"
        },
        {
          "path": "registry/notra/claude/components/claude-sources.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-sources.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-thinking.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-thinking.tsx"
        },
        {
          "path": "registry/notra/claude/lib/claude-text.ts",
          "type": "registry:lib",
          "target": "components/claude/lib/claude-text.ts"
        },
        {
          "path": "registry/notra/claude/constants/claude-demo.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-demo.ts"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-playback.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-playback.ts"
        },
        {
          "path": "registry/notra/claude/examples/claude-demo.tsx",
          "type": "registry:component",
          "target": "components/claude/examples/claude-demo.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-plus-menu.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-plus-menu.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-usage-ring.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-usage-ring.tsx"
        },
        {
          "path": "registry/notra/claude/constants/claude-tool-calls.ts",
          "type": "registry:lib",
          "target": "components/claude/constants/claude-tool-calls.ts"
        },
        {
          "path": "registry/notra/claude/examples/claude-tool-calls.tsx",
          "type": "registry:component",
          "target": "components/claude/examples/claude-tool-calls.tsx"
        },
        {
          "path": "registry/notra/claude/examples/claude-connector.tsx",
          "type": "registry:component",
          "target": "components/claude/examples/claude-connector.tsx"
        },
        {
          "path": "registry/notra/claude/components/claude-source-link.tsx",
          "type": "registry:component",
          "target": "components/claude/components/claude-source-link.tsx"
        },
        {
          "path": "registry/notra/claude/hooks/use-claude-search-sequence.ts",
          "type": "registry:hook",
          "target": "components/claude/hooks/use-claude-search-sequence.ts"
        }
      ]
    },
    {
      "name": "claude-code-terminal",
      "type": "registry:component",
      "title": "Claude Code Terminal",
      "description": "The terminal window with traffic lights and a title bar for Claude Code sessions.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible", "scroll-area"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-terminal.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-terminal.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        }
      ]
    },
    {
      "name": "claude-code-header",
      "type": "registry:component",
      "title": "Claude Code Header",
      "description": "Claude Code's compact header: the pixel mascot next to version, model and working directory, with notices below.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-header.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-header.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-logo.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-logo.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/lib/claude-code-inline.tsx",
          "type": "registry:lib",
          "target": "components/claude-code/lib/claude-code-inline.tsx"
        }
      ]
    },
    {
      "name": "claude-code-message",
      "type": "registry:component",
      "title": "Claude Code Message",
      "description": "User turns on a full-width bar and assistant turns behind a white bullet, with inline code and bold.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-message.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-message.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/lib/claude-code-inline.tsx",
          "type": "registry:lib",
          "target": "components/claude-code/lib/claude-code-inline.tsx"
        }
      ]
    },
    {
      "name": "claude-code-todo-list",
      "type": "registry:component",
      "title": "Claude Code Todo List",
      "description": "The Update Todos tool call with done, active and pending items.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-todo-list.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-todo-list.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        }
      ]
    },
    {
      "name": "claude-code-thinking",
      "type": "registry:component",
      "title": "Claude Code Thinking",
      "description": "The dim \"∴ Thinking…\" line that expands to the thoughts.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-thinking.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-thinking.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        }
      ]
    },
    {
      "name": "claude-code-tool-call",
      "type": "registry:component",
      "title": "Claude Code Tool Call",
      "description": "Tool calls with a status bullet and a ⎿ result line, plus the collapsed \"Ran 3 shell commands\" summary.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-tool-call.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-tool-call.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        }
      ]
    },
    {
      "name": "claude-code-status",
      "type": "registry:component",
      "title": "Claude Code Status",
      "description": "The orange spinner line while Claude works and the dim \"✻ Worked for 19s\" summary after a turn.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-status.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-status.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/lib/claude-code-inline.tsx",
          "type": "registry:lib",
          "target": "components/claude-code/lib/claude-code-inline.tsx"
        }
      ]
    },
    {
      "name": "claude-code-prompt",
      "type": "registry:component",
      "title": "Claude Code Prompt",
      "description": "The input between two rules with the permission mode, PR link and effort below.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible", "input-group", "kbd"],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-prompt.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-prompt.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        }
      ]
    },
    {
      "name": "claude-code",
      "type": "registry:block",
      "title": "Claude Code",
      "description": "A Claude Code terminal session with the compact header, tool calls, a running turn and the prompt, built from the Claude Code components on shadcn Base UI.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "button",
        "card",
        "collapsible",
        "input-group",
        "kbd",
        "scroll-area"
      ],
      "cssVars": {
        "theme": {
          "color-claude-code-bg": "var(--claude-code-bg)",
          "color-claude-code-chrome": "var(--claude-code-chrome)",
          "color-claude-code-traffic": "var(--claude-code-traffic)",
          "color-claude-code-title": "var(--claude-code-title)",
          "color-claude-code-shadow": "var(--claude-code-shadow)",
          "color-claude-code-ring": "var(--claude-code-ring)",
          "color-claude-code-fg": "var(--claude-code-fg)",
          "color-claude-code-strong": "var(--claude-code-strong)",
          "color-claude-code-accent": "var(--claude-code-accent)",
          "color-claude-code-muted": "var(--claude-code-muted)",
          "color-claude-code-rule": "var(--claude-code-rule)",
          "color-claude-code-link": "var(--claude-code-link)",
          "color-claude-code-pr": "var(--claude-code-pr)",
          "color-claude-code-user-bg": "var(--claude-code-user-bg)",
          "color-claude-code-user-prompt": "var(--claude-code-user-prompt)",
          "color-claude-code-success": "var(--claude-code-success)",
          "color-claude-code-error": "var(--claude-code-error)",
          "color-claude-code-mode-auto": "var(--claude-code-mode-auto)",
          "color-claude-code-mode-accept-edits": "var(--claude-code-mode-accept-edits)",
          "color-claude-code-mode-plan": "var(--claude-code-mode-plan)",
          "color-claude-code-mode-bypass": "var(--claude-code-mode-bypass)",
          "font-claude-code": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "claude-code-bg": "#ffffff",
          "claude-code-chrome": "#ececec",
          "claude-code-traffic": "#d4d4d4",
          "claude-code-title": "#00000073",
          "claude-code-shadow": "#00000026",
          "claude-code-ring": "#0000001a",
          "claude-code-fg": "#1f1f1f",
          "claude-code-strong": "#000000",
          "claude-code-accent": "#d77757",
          "claude-code-muted": "#666666",
          "claude-code-rule": "#999999",
          "claude-code-link": "#5769f7",
          "claude-code-pr": "#966c1e",
          "claude-code-user-bg": "#f0f0f0",
          "claude-code-user-prompt": "#999999",
          "claude-code-success": "#2c7a39",
          "claude-code-error": "#ab2b3f",
          "claude-code-mode-auto": "#966c1e",
          "claude-code-mode-accept-edits": "#8700ff",
          "claude-code-mode-plan": "#006666",
          "claude-code-mode-bypass": "#d1245a"
        },
        "dark": {
          "claude-code-bg": "#0f0f0f",
          "claude-code-chrome": "#1c1c1c",
          "claude-code-traffic": "#3a3a3a",
          "claude-code-title": "#ffffff66",
          "claude-code-shadow": "#0000004d",
          "claude-code-ring": "#ffffff1a",
          "claude-code-fg": "#f7f7f7",
          "claude-code-strong": "#ffffff",
          "claude-code-accent": "#e06443",
          "claude-code-muted": "#8c8c8c",
          "claude-code-rule": "#7b7b7b",
          "claude-code-link": "#a4b0fc",
          "claude-code-pr": "#d9b559",
          "claude-code-user-bg": "#2e2e2e",
          "claude-code-user-prompt": "#5c5c5c",
          "claude-code-success": "#4eba65",
          "claude-code-error": "#ff6b80",
          "claude-code-mode-auto": "#e5c07b",
          "claude-code-mode-accept-edits": "#af87ff",
          "claude-code-mode-plan": "#48968c",
          "claude-code-mode-bypass": "#fd526f"
        }
      },
      "files": [
        {
          "path": "registry/notra/claude-code/components/claude-code-terminal.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-terminal.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-header.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-header.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-logo.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-logo.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-message.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-message.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-thinking.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-thinking.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-todo-list.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-todo-list.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-tool-call.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-tool-call.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-status.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-status.tsx"
        },
        {
          "path": "registry/notra/claude-code/components/claude-code-prompt.tsx",
          "type": "registry:component",
          "target": "components/claude-code/components/claude-code-prompt.tsx"
        },
        {
          "path": "registry/notra/claude-code/types/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/types/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code.ts"
        },
        {
          "path": "registry/notra/claude-code/constants/claude-code-session.ts",
          "type": "registry:lib",
          "target": "components/claude-code/constants/claude-code-session.ts"
        },
        {
          "path": "registry/notra/claude-code/lib/claude-code-inline.tsx",
          "type": "registry:lib",
          "target": "components/claude-code/lib/claude-code-inline.tsx"
        },
        {
          "path": "registry/notra/claude-code/hooks/use-claude-code-chat.ts",
          "type": "registry:hook",
          "target": "components/claude-code/hooks/use-claude-code-chat.ts"
        },
        {
          "path": "registry/notra/claude-code/examples/claude-code-demo.tsx",
          "type": "registry:component",
          "target": "components/claude-code/examples/claude-code-demo.tsx"
        }
      ]
    },
    {
      "name": "codex-terminal",
      "type": "registry:component",
      "title": "Codex Terminal",
      "description": "The Codex window: a title bar, a scrolling transcript and a pinned footer for the prompt.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible", "scroll-area"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-terminal.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-terminal.tsx"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-header",
      "type": "registry:component",
      "title": "Codex Header",
      "description": "The OpenAI Codex banner with version, working directory and greeting.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-header.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-header.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-message",
      "type": "registry:component",
      "title": "Codex Message",
      "description": "User turns on a full-width band and assistant turns behind a dim bullet.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-message.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-message.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-reasoning",
      "type": "registry:component",
      "title": "Codex Reasoning",
      "description": "The dim italic summary Codex shows while it reasons.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-reasoning.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-reasoning.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-exec",
      "type": "registry:component",
      "title": "Codex Exec",
      "description": "A Ran cell with shell syntax colors and output folded behind + N lines.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-exec.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-exec.tsx"
        },
        {
          "path": "registry/notra/codex/lib/codex-shell.ts",
          "type": "registry:lib",
          "target": "components/codex/lib/codex-shell.ts"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-explored",
      "type": "registry:component",
      "title": "Codex Explored",
      "description": "Grouped Read, Search and List calls with a + Show details fold.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-explored.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-explored.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-working",
      "type": "registry:component",
      "title": "Codex Working",
      "description": "The shimmering Working (13s • esc to interrupt) status line.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-working.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-working.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-markdown",
      "type": "registry:component",
      "title": "Codex Markdown",
      "description": "Bullet lists, tables with yellow headers and green inline code, styled like Codex answers.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-markdown.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-markdown.tsx"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex-composer",
      "type": "registry:component",
      "title": "Codex Composer",
      "description": "The prompt band with a block cursor, the model and directory status line and shortcut hints.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible", "input-group", "kbd"],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-composer.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-composer.tsx"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        }
      ]
    },
    {
      "name": "codex",
      "type": "registry:block",
      "title": "Codex",
      "description": "A full recreation of an OpenAI Codex CLI session built from the Codex components on shadcn Base UI.",
      "dependencies": ["cn"],
      "registryDependencies": [
        "button",
        "card",
        "collapsible",
        "input-group",
        "kbd",
        "scroll-area"
      ],
      "cssVars": {
        "theme": {
          "color-codex-bg": "var(--codex-bg)",
          "color-codex-titlebar": "var(--codex-titlebar)",
          "color-codex-dot": "var(--codex-dot)",
          "color-codex-title": "var(--codex-title)",
          "color-codex-shadow": "var(--codex-shadow)",
          "color-codex-ring": "var(--codex-ring)",
          "color-codex-fg": "var(--codex-fg)",
          "color-codex-dim": "var(--codex-dim)",
          "color-codex-muted": "var(--codex-muted)",
          "color-codex-rule": "var(--codex-rule)",
          "color-codex-band": "var(--codex-band)",
          "color-codex-composer": "var(--codex-composer)",
          "color-codex-placeholder": "var(--codex-placeholder)",
          "color-codex-cursor": "var(--codex-cursor)",
          "color-codex-blue": "var(--codex-blue)",
          "color-codex-command": "var(--codex-command)",
          "color-codex-arg": "var(--codex-arg)",
          "color-codex-operator": "var(--codex-operator)",
          "color-codex-flag": "var(--codex-flag)",
          "color-codex-green": "var(--codex-green)",
          "color-codex-success": "var(--codex-success)",
          "color-codex-yellow": "var(--codex-yellow)",
          "color-codex-amber": "var(--codex-amber)",
          "color-codex-red": "var(--codex-red)",
          "font-codex": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "codex-bg": "#ffffff",
          "codex-titlebar": "#ececec",
          "codex-dot": "#d4d4d4",
          "codex-title": "#00000073",
          "codex-shadow": "#00000026",
          "codex-ring": "#0000001a",
          "codex-fg": "#1a1a1a",
          "codex-dim": "#5c5c5c",
          "codex-muted": "#767676",
          "codex-rule": "#e0e0e0",
          "codex-band": "#f0f0f0",
          "codex-composer": "#f3f3f3",
          "codex-placeholder": "#8a8a8a",
          "codex-cursor": "#d6006a",
          "codex-blue": "#0a6fd6",
          "codex-command": "#1f5fbf",
          "codex-arg": "#3d4f8f",
          "codex-operator": "#0f7f70",
          "codex-flag": "#c0364d",
          "codex-green": "#1f8a3a",
          "codex-success": "#00852a",
          "codex-yellow": "#8f6200",
          "codex-amber": "#8a6420",
          "codex-red": "#d12f2f"
        },
        "dark": {
          "codex-bg": "#0f0f0f",
          "codex-titlebar": "#1c1c1c",
          "codex-dot": "#3a3a3a",
          "codex-title": "#ffffff66",
          "codex-shadow": "#00000033",
          "codex-ring": "#ffffff00",
          "codex-fg": "#f7f7f7",
          "codex-dim": "#909090",
          "codex-muted": "#777777",
          "codex-rule": "#343434",
          "codex-band": "#2d2d2d",
          "codex-composer": "#252525",
          "codex-placeholder": "#868686",
          "codex-cursor": "#fc0076",
          "codex-blue": "#3c9ffc",
          "codex-command": "#70abfa",
          "codex-arg": "#c3cff4",
          "codex-operator": "#6cdfcd",
          "codex-flag": "#f3909f",
          "codex-green": "#85df8d",
          "codex-success": "#00a12e",
          "codex-yellow": "#fcdb9b",
          "codex-amber": "#be9952",
          "codex-red": "#ff6b6b"
        }
      },
      "files": [
        {
          "path": "registry/notra/codex/components/codex-terminal.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-terminal.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-header.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-header.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-message.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-message.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-reasoning.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-reasoning.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-exec.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-exec.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-explored.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-explored.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-working.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-working.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-markdown.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-markdown.tsx"
        },
        {
          "path": "registry/notra/codex/components/codex-composer.tsx",
          "type": "registry:component",
          "target": "components/codex/components/codex-composer.tsx"
        },
        {
          "path": "registry/notra/codex/lib/codex-shell.ts",
          "type": "registry:lib",
          "target": "components/codex/lib/codex-shell.ts"
        },
        {
          "path": "registry/notra/codex/constants/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex.ts"
        },
        {
          "path": "registry/notra/codex/constants/codex-demo.ts",
          "type": "registry:lib",
          "target": "components/codex/constants/codex-demo.ts"
        },
        {
          "path": "registry/notra/codex/types/codex.ts",
          "type": "registry:lib",
          "target": "components/codex/types/codex.ts"
        },
        {
          "path": "registry/notra/codex/hooks/use-codex-chat.ts",
          "type": "registry:hook",
          "target": "components/codex/hooks/use-codex-chat.ts"
        },
        {
          "path": "registry/notra/codex/examples/codex-demo.tsx",
          "type": "registry:component",
          "target": "components/codex/examples/codex-demo.tsx"
        }
      ]
    },
    {
      "name": "opencode-window",
      "type": "registry:component",
      "title": "OpenCode Window",
      "description": "The OpenCode terminal surface that sets the background, monospace font and line grid.",
      "dependencies": ["cn"],
      "registryDependencies": ["card", "collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-window.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-window.tsx"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        }
      ]
    },
    {
      "name": "opencode-logo",
      "type": "registry:component",
      "title": "OpenCode Logo",
      "description": "The block-letter OpenCode wordmark drawn on a cell grid and themed with tokens.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-logo.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-logo.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        }
      ]
    },
    {
      "name": "opencode-message",
      "type": "registry:component",
      "title": "OpenCode Message",
      "description": "User prompts on a blue-ruled panel and indented assistant replies with OpenCode's markdown colors.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-message.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-message.tsx"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        }
      ]
    },
    {
      "name": "opencode-turn-footer",
      "type": "registry:component",
      "title": "OpenCode Turn Footer",
      "description": "The blue square, agent, model and duration line that closes an assistant turn.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-turn-footer.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-turn-footer.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        }
      ]
    },
    {
      "name": "opencode-activity",
      "type": "registry:component",
      "title": "OpenCode Activity",
      "description": "Orange thoughts with a live Thinking spinner, plus muted read, web search and tool lines.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-activity.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-activity.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-frame.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-frame.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-reduced-motion.ts"
        }
      ]
    },
    {
      "name": "opencode-sources",
      "type": "registry:component",
      "title": "OpenCode Sources",
      "description": "Web search lines and a collapsible cited-sources list with an optional sequenced reveal.",
      "dependencies": ["cn"],
      "registryDependencies": ["button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-sources.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-sources.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-activity.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-activity.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-sources-sequence.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-sources-sequence.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-reduced-motion.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-frame.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-frame.ts"
        }
      ]
    },
    {
      "name": "opencode-composer",
      "type": "registry:component",
      "title": "OpenCode Composer",
      "description": "The prompt panel with agent, model, provider and effort, over a status row with the busy scanner, context and shortcuts.",
      "dependencies": ["cn"],
      "registryDependencies": ["collapsible", "input-group", "kbd"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-composer.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-composer.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-progress.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-progress.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-frame.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-frame.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-reduced-motion.ts"
        }
      ]
    },
    {
      "name": "opencode-sidebar",
      "type": "registry:component",
      "title": "OpenCode Sidebar",
      "description": "Session title, context usage, a collapsible MCP list, LSP state, cwd with branch and version.",
      "dependencies": ["@base-ui/react", "cn"],
      "registryDependencies": ["button", "collapsible"],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-scroll-area.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-scroll-area.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-sidebar.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-sidebar.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        }
      ]
    },
    {
      "name": "opencode",
      "type": "registry:block",
      "title": "OpenCode",
      "description": "A recreation of an OpenCode terminal session with a transcript, the prompt and the sidebar.",
      "dependencies": ["@base-ui/react", "cn"],
      "registryDependencies": [
        "button",
        "card",
        "collapsible",
        "input-group",
        "kbd"
      ],
      "cssVars": {
        "theme": {
          "color-opencode-bg": "var(--opencode-bg)",
          "color-opencode-panel": "var(--opencode-panel)",
          "color-opencode-sidebar": "var(--opencode-sidebar)",
          "color-opencode-fg": "var(--opencode-fg)",
          "color-opencode-muted": "var(--opencode-muted)",
          "color-opencode-subtle": "var(--opencode-subtle)",
          "color-opencode-blue": "var(--opencode-blue)",
          "color-opencode-orange": "var(--opencode-orange)",
          "color-opencode-green": "var(--opencode-green)",
          "color-opencode-logo-open": "var(--opencode-logo-open)",
          "color-opencode-logo-code": "var(--opencode-logo-code)",
          "color-opencode-logo-fill": "var(--opencode-logo-fill)",
          "font-opencode": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace"
        },
        "light": {
          "opencode-bg": "#ffffff",
          "opencode-panel": "#f5f5f5",
          "opencode-sidebar": "#fafafa",
          "opencode-fg": "#1a1a1a",
          "opencode-muted": "#6f6f6f",
          "opencode-subtle": "#e1e1e1",
          "opencode-blue": "#3b7dd8",
          "opencode-orange": "#c47a14",
          "opencode-green": "#2f8a4a",
          "opencode-logo-open": "#8a8a8a",
          "opencode-logo-code": "#1a1a1a",
          "opencode-logo-fill": "#dcdcdc"
        },
        "dark": {
          "opencode-bg": "#090909",
          "opencode-panel": "#191919",
          "opencode-sidebar": "#121212",
          "opencode-fg": "#e9e9e9",
          "opencode-muted": "#737373",
          "opencode-subtle": "#262626",
          "opencode-blue": "#3b91f9",
          "opencode-orange": "#fd9718",
          "opencode-green": "#4fd47b",
          "opencode-logo-open": "#737373",
          "opencode-logo-code": "#e9e9e9",
          "opencode-logo-fill": "#2a2a2a"
        }
      },
      "files": [
        {
          "path": "registry/notra/opencode/components/opencode-window.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-window.tsx"
        },
        {
          "path": "registry/notra/opencode/types/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/types/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/components/opencode-logo.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-logo.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-message.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-message.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-turn-footer.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-turn-footer.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-activity.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-activity.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-sources.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-sources.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-progress.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-progress.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-composer.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-composer.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-scroll-area.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-scroll-area.tsx"
        },
        {
          "path": "registry/notra/opencode/components/opencode-sidebar.tsx",
          "type": "registry:component",
          "target": "components/opencode/components/opencode-sidebar.tsx"
        },
        {
          "path": "registry/notra/opencode/constants/opencode.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode.ts"
        },
        {
          "path": "registry/notra/opencode/constants/opencode-demo.ts",
          "type": "registry:lib",
          "target": "components/opencode/constants/opencode-demo.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-chat.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-chat.ts"
        },
        {
          "path": "registry/notra/opencode/examples/opencode-demo.tsx",
          "type": "registry:component",
          "target": "components/opencode/examples/opencode-demo.tsx"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-frame.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-frame.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-reduced-motion.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-reduced-motion.ts"
        },
        {
          "path": "registry/notra/opencode/hooks/use-opencode-sources-sequence.ts",
          "type": "registry:hook",
          "target": "components/opencode/hooks/use-opencode-sources-sequence.ts"
        }
      ]
    },
    {
      "name": "workflow-canvas",
      "type": "registry:component",
      "title": "Workflow Canvas",
      "description": "A zoomable, scrollable canvas that draws stroked, animated edges between node handles, with drag-to-connect and palette drops.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["badge", "button"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-canvas.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-canvas.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-graph.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-graph.ts"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-node",
      "type": "registry:component",
      "title": "Workflow Node",
      "description": "A workflow step in a dualtone shell card with a kind icon or brand logo, status lights, single or labeled handles, a model chip and a running timer.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["badge"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-shell",
      "type": "registry:component",
      "title": "Workflow Shell",
      "description": "The dualtone workflow card, with a grey frame, a header strip and a lifted inner card.",
      "dependencies": ["cn"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-edge",
      "type": "registry:component",
      "title": "Workflow Edge",
      "description": "A dotted step connection with rounded corners and idle, animated, active, done and skipped states.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-timer",
      "type": "registry:component",
      "title": "Workflow Timer",
      "description": "A tabular timer for how long a step or run has been going.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-run-button",
      "type": "registry:component",
      "title": "Workflow Run Button",
      "description": "A play, stop and run-again button with a progress ring, built on the Base UI Button primitive.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-status",
      "type": "registry:component",
      "title": "Workflow Status",
      "description": "Status indicators and badges for steps, plus the deterministic and non-deterministic badges.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["badge"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-logo",
      "type": "registry:component",
      "title": "Workflow Logo",
      "description": "Brand logos for models and integrations, from svgl.app.",
      "dependencies": ["@xyflow/react", "cn"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-node-palette",
      "type": "registry:component",
      "title": "Workflow Node Palette",
      "description": "A searchable list of blocks you can click or drag onto the canvas.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["input", "scroll-area"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node-palette.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node-palette.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-blocks.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-blocks.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-node-sheet",
      "type": "registry:component",
      "title": "Workflow Node Sheet",
      "description": "A side sheet with a step's settings, model, ports, run log and output.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.usenotra.com/r/notra-select.json",
        "sheet",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-model-select.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-model-select.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node-sheet.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node-sheet.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-log.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-log.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-run-log",
      "type": "registry:component",
      "title": "Workflow Run Log",
      "description": "Timestamped log lines for a run.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-run-log.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-log.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-run-timeline",
      "type": "registry:component",
      "title": "Workflow Run Timeline",
      "description": "A live Gantt chart of when each step ran.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-timeline.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-timeline.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-run-history",
      "type": "registry:component",
      "title": "Workflow Run History",
      "description": "A list of past runs with status, trigger and duration.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["badge"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-run-history.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-history.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-runs.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-runs.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-model-select",
      "type": "registry:component",
      "title": "Workflow Model Select",
      "description": "A model picker with provider logos.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["https://ui.usenotra.com/r/notra-select.json"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-model-select.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-model-select.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "workflow-template-card",
      "type": "registry:component",
      "title": "Workflow Template Card",
      "description": "A template card and a preview dialog that plays the template.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react"
      ],
      "registryDependencies": ["badge", "button", "dialog"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-canvas.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-canvas.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-template-card.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-template-card.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-templates.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-templates.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "outreach-prospect-table",
      "type": "registry:component",
      "title": "Outreach Prospect Table",
      "description": "Listicles that AI answers cite, with engines, competitors, domain rating and outreach status.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": [
        "badge",
        "button",
        "https://ui.usenotra.com/r/notra-table.json"
      ],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-prospect-table.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-prospect-table.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-status.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-status.tsx"
        },
        {
          "path": "registry/notra/outreach/constants/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/constants/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "outreach-email-dialog",
      "type": "registry:component",
      "title": "Outreach Email Dialog",
      "description": "A modal that drafts, rewrites and previews a pitch to a listicle owner, with template variables.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["button", "dialog", "input", "tabs", "textarea"],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-email-dialog.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-email-dialog.tsx"
        },
        {
          "path": "registry/notra/outreach/constants/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/constants/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/lib/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/lib/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "outreach-prospect-sheet",
      "type": "registry:component",
      "title": "Outreach Prospect Sheet",
      "description": "A side sheet with why a listicle matters, who's on it, the owner and the email sequence.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react"],
      "registryDependencies": ["avatar", "badge", "button", "sheet"],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-prospect-sheet.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-prospect-sheet.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-sequence.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-sequence.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-status.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-status.tsx"
        },
        {
          "path": "registry/notra/outreach/constants/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/constants/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/lib/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/lib/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "outreach-sequence",
      "type": "registry:component",
      "title": "Outreach Sequence",
      "description": "A timeline of the emails in a follow-up sequence.",
      "dependencies": ["@xyflow/react", "cn"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-sequence.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-sequence.tsx"
        },
        {
          "path": "registry/notra/outreach/constants/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/constants/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ]
    },
    {
      "name": "outreach-stats",
      "type": "registry:component",
      "title": "Outreach Stats",
      "description": "A row of outreach metrics.",
      "dependencies": ["@xyflow/react", "cn"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-stats.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-stats.tsx"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-builder",
      "type": "registry:block",
      "title": "Workflow Builder",
      "description": "A workflow builder with a block palette, a playable canvas, a run log and timeline, and a node sheet.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "input",
        "scroll-area",
        "https://ui.usenotra.com/r/notra-select.json",
        "sheet",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-canvas.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-canvas.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-model-select.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-model-select.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node-palette.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node-palette.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node-sheet.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node-sheet.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-log.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-log.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-timeline.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-timeline.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-blocks.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-blocks.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-templates.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-templates.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/examples/workflow-builder.tsx",
          "type": "registry:component",
          "target": "components/workflow/examples/workflow-builder.tsx"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-graph.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-graph.ts"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-decision-tree",
      "type": "registry:block",
      "title": "Workflow Decision Tree",
      "description": "A content refresh workflow that routes a visibility drop to one of four fixes, with a playable run log.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react"
      ],
      "registryDependencies": ["badge", "button"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-canvas.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-canvas.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-log.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-log.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-templates.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-templates.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/examples/workflow-decision-tree.tsx",
          "type": "registry:component",
          "target": "components/workflow/examples/workflow-decision-tree.tsx"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-graph.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-graph.ts"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-runs",
      "type": "registry:block",
      "title": "Workflow Runs",
      "description": "Run history with a replayable timeline and log.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react"
      ],
      "registryDependencies": ["badge"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-history.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-history.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-log.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-log.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-timeline.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-timeline.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-runs.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-runs.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-templates.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-templates.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/examples/workflow-runs.tsx",
          "type": "registry:component",
          "target": "components/workflow/examples/workflow-runs.tsx"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "workflow-templates",
      "type": "registry:block",
      "title": "Workflow Templates",
      "description": "A filterable gallery of workflow templates with a playable preview dialog.",
      "dependencies": [
        "@base-ui/react",
        "@xyflow/react",
        "class-variance-authority",
        "cn",
        "lucide-react",
        "sonner"
      ],
      "registryDependencies": ["badge", "button", "dialog", "tabs"],
      "files": [
        {
          "path": "registry/notra/workflow/components/workflow-block-icon.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-block-icon.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-canvas.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-canvas.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-edge.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-edge.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-handle.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-handle.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-node.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-node.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-run-button.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-run-button.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-status.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-status.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-template-card.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-template-card.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-timer.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-timer.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-templates.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-templates.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/examples/workflow-templates.tsx",
          "type": "registry:component",
          "target": "components/workflow/examples/workflow-templates.tsx"
        },
        {
          "path": "registry/notra/workflow/hooks/use-workflow-run.ts",
          "type": "registry:hook",
          "target": "components/workflow/hooks/use-workflow-run.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "css": {
        "@keyframes workflow-dash": {
          "to": {
            "stroke-dashoffset": "-20"
          }
        }
      },
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)",
          "animate-workflow-dash": "workflow-dash 0.8s linear infinite"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    },
    {
      "name": "listicle-outreach",
      "type": "registry:block",
      "title": "Listicle Outreach",
      "description": "Track the listicles AI answers cite and pitch their owners, with stats, a prospect table, a detail sheet and an email modal.",
      "dependencies": ["@xyflow/react", "cn", "lucide-react", "sonner"],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "dialog",
        "input",
        "sheet",
        "https://ui.usenotra.com/r/notra-table.json",
        "tabs",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/notra/outreach/components/outreach-email-dialog.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-email-dialog.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-prospect-sheet.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-prospect-sheet.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-prospect-table.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-prospect-table.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-sequence.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-sequence.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-stats.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-stats.tsx"
        },
        {
          "path": "registry/notra/outreach/components/outreach-status.tsx",
          "type": "registry:component",
          "target": "components/outreach/components/outreach-status.tsx"
        },
        {
          "path": "registry/notra/outreach/constants/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/constants/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/examples/listicle-outreach.tsx",
          "type": "registry:component",
          "target": "components/outreach/examples/listicle-outreach.tsx"
        },
        {
          "path": "registry/notra/outreach/lib/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/lib/outreach.ts"
        },
        {
          "path": "registry/notra/outreach/types/outreach.ts",
          "type": "registry:lib",
          "target": "components/outreach/types/outreach.ts"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logo.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logo.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-logos.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-logos.tsx"
        },
        {
          "path": "registry/notra/workflow/components/workflow-shell.tsx",
          "type": "registry:component",
          "target": "components/workflow/components/workflow-shell.tsx"
        },
        {
          "path": "registry/notra/workflow/constants/workflow-ui.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow-ui.ts"
        },
        {
          "path": "registry/notra/workflow/constants/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/constants/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/lib/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/lib/workflow.ts"
        },
        {
          "path": "registry/notra/workflow/types/workflow.ts",
          "type": "registry:lib",
          "target": "components/workflow/types/workflow.ts"
        }
      ],
      "cssVars": {
        "theme": {
          "color-table-shell": "var(--table-shell)",
          "color-table-shell-border": "var(--table-shell-border)",
          "color-table-card": "var(--table-card)",
          "color-table-card-border": "var(--table-card-border)",
          "color-table-row-border": "var(--table-row-border)",
          "shadow-table-card": "var(--table-card-shadow)"
        },
        "light": {
          "table-shell": "#f3f3f2",
          "table-shell-border": "#e7e7e5",
          "table-card": "#ffffff",
          "table-card-border": "#e5e5e5",
          "table-row-border": "#efefee",
          "table-card-shadow": "0 1px 2px hsl(240 10% 10% / 0.06), 0 2px 8px -2px hsl(240 10% 10% / 0.06)"
        },
        "dark": {
          "table-shell": "#161616",
          "table-shell-border": "#232323",
          "table-card": "#1f1f1f",
          "table-card-border": "#2c2c2c",
          "table-row-border": "#292929",
          "table-card-shadow": "inset 0 1px 0 hsl(0 0% 100% / 0.05), inset 0 0 0 1px hsl(0 0% 100% / 0.015), inset 0 12px 18px -16px hsl(0 0% 100% / 0.035)"
        }
      }
    }
  ]
}
