{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "cortexcn",
  "homepage": "https://ui.cortexcn.dev",
  "items": [
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Utilities",
      "description": "Utility functions for className merging with clsx and tailwind-merge",
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "src/lib/utils.ts",
          "type": "registry:lib",
          "target": "lib/utils.ts"
        }
      ]
    },
    {
      "name": "design-system-recipes",
      "type": "registry:item",
      "title": "Design system recipes",
      "description": "Theme utilities (rounded-button, h-input, shadow-menu, and more) that let a DESIGN.md design system restyle Cortexcn components. Each one falls back to the component's own default.",
      "cssVars": {
        "theme": {
          "color-primary-hover": "var(--ds-primary-hover, color-mix(in oklab, var(--primary) 80%, transparent))",
          "color-secondary-hover": "color-mix(in oklch, var(--secondary), var(--foreground) 5%)",
          "color-success": "var(--ds-success, oklch(0.696 0.17 162.48))",
          "color-warning": "var(--ds-warning, oklch(0.769 0.188 70.08))",
          "color-overlay": "var(--ds-overlay, oklch(0 0 0 / 0.1))",
          "color-control-thumb": "var(--ds-control-thumb, oklch(1 0 0))",
          "color-system-canvas": "Canvas",
          "color-system-canvas-text": "CanvasText",
          "radius-button": "var(--ds-button-radius, calc(var(--radius) * 0.8))",
          "radius-button-sm": "var(--ds-button-radius, min(calc(var(--radius) * 0.8), 10px))",
          "radius-button-xs": "var(--ds-button-radius, min(calc(var(--radius) * 0.8), 8px))",
          "spacing-button-xs": "var(--ds-button-h-xs, 1.5rem)",
          "spacing-button-sm": "var(--ds-button-h-sm, 2rem)",
          "spacing-button": "var(--ds-button-h-md, 2.25rem)",
          "spacing-button-lg": "var(--ds-button-h-lg, 2.5rem)",
          "spacing-button-x": "var(--ds-button-px, 0.625rem)",
          "spacing-button-x-xs": "calc(var(--ds-button-px, 0.625rem) * 0.8)",
          "font-weight-button": "var(--ds-button-weight, 500)",
          "shadow-button": "var(--ds-button-shadow, 0 0 #0000)",
          "radius-input": "var(--ds-input-radius, calc(var(--radius) * 0.8))",
          "spacing-input": "var(--ds-input-h, 2.25rem)",
          "spacing-input-x": "var(--ds-input-px, 0.625rem)",
          "radius-input-inner": "calc(var(--ds-input-radius, calc(var(--radius) * 0.8)) - 3px)",
          "color-input-fill": "var(--ds-input-bg, transparent)",
          "color-input-fill-dark": "var(--ds-input-bg, color-mix(in oklab, var(--input) 30%, transparent))",
          "radius-card": "var(--ds-card-radius, calc(var(--radius) * 1.4))",
          "color-card-fill": "var(--ds-card-bg, var(--card))",
          "shadow-card": "var(--ds-card-shadow, 0 0 #0000)",
          "radius-badge": "var(--ds-badge-radius, calc(var(--radius) * 2.6))",
          "spacing-badge-x": "var(--ds-badge-px, 0.5rem)",
          "font-weight-badge": "var(--ds-badge-weight, 500)",
          "radius-tabs": "var(--ds-tabs-radius, var(--radius))",
          "radius-tabs-trigger": "var(--ds-tabs-radius, calc(var(--radius) * 0.8))",
          "color-tabs-list": "var(--ds-tabs-list-bg, var(--muted))",
          "color-tabs-active": "var(--ds-tabs-active-bg, var(--background))",
          "color-tabs-active-dark": "var(--ds-tabs-active-bg, color-mix(in oklab, var(--input) 30%, transparent))",
          "color-tabs-active-border": "var(--ds-tabs-active-border, var(--input))",
          "spacing-accordion": "var(--ds-accordion-py, 0.625rem)",
          "font-weight-accordion": "var(--ds-accordion-weight, 500)",
          "radius-dialog": "var(--ds-dialog-radius, calc(var(--radius) * 1.4))",
          "spacing-dialog": "var(--ds-dialog-padding, 1.5rem)",
          "shadow-dialog": "var(--ds-dialog-shadow, 0 0 #0000)",
          "radius-menu": "var(--ds-menu-radius, calc(var(--radius) * 0.8))",
          "radius-menu-lg": "var(--ds-menu-radius, var(--radius))",
          "radius-menu-xl": "var(--ds-menu-radius, calc(var(--radius) * 1.4))",
          "radius-menu-item": "var(--ds-menu-item-radius, calc(var(--radius) * 0.6))",
          "radius-menu-item-md": "var(--ds-menu-item-radius, calc(var(--radius) * 0.8))",
          "radius-menu-item-lg": "var(--ds-menu-item-radius, var(--radius))",
          "shadow-input": "var(--ds-input-shadow, 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05)))",
          "shadow-tabs": "var(--ds-tabs-active-shadow, 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)))",
          "shadow-menu": "var(--ds-menu-shadow, 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)))",
          "shadow-menu-lg": "var(--ds-menu-shadow, 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)))",
          "radius-inherit": "inherit",
          "radius-app-icon": "22%",
          "shadow-sidebar-border": "0 0 0 1px var(--sidebar-border)",
          "shadow-sidebar-accent": "0 0 0 1px var(--sidebar-accent)",
          "radius-command": "var(--ds-menu-radius, 14px)",
          "shadow-command": "var(--ds-menu-shadow, 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 0 0 1px rgb(10 10 10 / 0.05))",
          "shadow-command-dark": "var(--ds-menu-shadow, 0 1px 3px 0 rgb(0 0 0 / 0.5), 0 0 0 1px rgb(255 255 255 / 0.12))",
          "drop-shadow-command": "0 4px 14.2px rgb(108 108 108 / 0.25)",
          "radius-faq": "var(--ds-card-radius, 26px)",
          "radius-faq-inner": "var(--ds-radius-lg, 18px)",
          "shadow-faq": "var(--ds-shadow-2, 0 0 0 1px rgb(10 10 10 / 0.05), 0 2px 4px 0 rgb(0 0 0 / 0.1))",
          "shadow-faq-dark": "var(--ds-shadow-2, 0 0 0 1px rgb(255 255 255 / 0.12), 0 2px 4px 0 rgb(0 0 0 / 0.5))",
          "radius-lanyard": "var(--ds-radius-xl, 20px)",
          "shadow-lanyard": "var(--ds-shadow-3, 0 24px 50px -20px rgb(0 0 0 / 0.45))",
          "shadow-lanyard-slot": "inset 0 1px 2px rgb(0 0 0 / 0.25)",
          "color-sheen": "oklch(1 0 0 / 0.28)",
          "color-live": "oklch(0.685 0.169 237.323)",
          "color-shadow-ink": "oklch(0.145 0 0)",
          "color-light-speed": "oklch(0.128 0.011 259.6)",
          "radius-control": "var(--ds-control-radius, 4px)",
          "radius-tooltip": "var(--ds-tooltip-radius, calc(var(--radius) * 0.8))",
          "radius-tooltip-arrow": "min(var(--ds-tooltip-radius, 2px), 2px)",
          "radius-alert": "var(--ds-alert-radius, var(--radius))"
        }
      },
      "css": {
        "@utility button-case": {
          "text-transform": "var(--ds-button-transform)",
          "letter-spacing": "var(--ds-button-tracking)"
        },
        "@utility badge-case": {
          "text-transform": "var(--ds-badge-transform)"
        },
        "@utility accordion-divider": {
          "border-bottom-width": "var(--ds-accordion-divider-width, 1px)"
        },
        "@utility card-ring": {
          "--tw-ring-shadow": "var(--tw-ring-inset,) 0 0 0 calc(var(--ds-card-border-width, 1px) + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor)",
          "box-shadow": "var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)"
        },
        "@utility duration-fast": {
          "--tw-duration": "var(--ds-duration-fast, 100ms)",
          "transition-duration": "var(--ds-duration-fast, 100ms)"
        },
        "@utility duration-base": {
          "--tw-duration": "var(--ds-duration-base, 200ms)",
          "transition-duration": "var(--ds-duration-base, 200ms)"
        },
        "@utility duration-slow": {
          "--tw-duration": "var(--ds-duration-slow, 300ms)",
          "transition-duration": "var(--ds-duration-slow, 300ms)"
        },
        "@utility duration-accordion": {
          "--tw-duration": "var(--ds-accordion-duration, 200ms)",
          "transition-duration": "var(--ds-accordion-duration, 200ms)"
        },
        "@utility ease-ds": {
          "--tw-ease": "var(--ds-ease, cubic-bezier(0.4, 0, 0.2, 1))",
          "transition-timing-function": "var(--ds-ease, cubic-bezier(0.4, 0, 0.2, 1))"
        },
        "@utility accordion-chevron-turn": {
          "rotate": "var(--ds-accordion-chevron-rotate, 180deg)"
        }
      }
    },
    {
      "name": "shimmering-text",
      "type": "registry:component",
      "title": "Shimmering Text",
      "description": "Per-character shimmer animation for loading labels and badges",
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "src/components/shimmering-text.tsx",
          "type": "registry:component",
          "target": "components/shimmering-text.tsx"
        }
      ]
    },
    {
      "name": "marquee",
      "type": "registry:component",
      "title": "Marquee",
      "description": "An infinite scrolling component that can be used to display text, images, or videos.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/marquee.tsx",
          "type": "registry:component",
          "target": "components/marquee.tsx"
        }
      ],
      "cssVars": {
        "theme": {
          "animate-marquee": "marquee var(--duration) infinite linear",
          "animate-marquee-vertical": "marquee-vertical var(--duration) linear infinite"
        }
      },
      "css": {
        "@keyframes marquee": {
          "from": {
            "transform": "translateX(0)"
          },
          "to": {
            "transform": "translateX(calc(-100% - var(--gap)))"
          }
        },
        "@keyframes marquee-vertical": {
          "from": {
            "transform": "translateY(0)"
          },
          "to": {
            "transform": "translateY(calc(-100% - var(--gap)))"
          }
        }
      }
    },
    {
      "name": "accordion",
      "type": "registry:component",
      "title": "Accordion",
      "description": "A vertically stacked set of headings that each reveal a section of content.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/accordion.tsx",
          "type": "registry:component",
          "target": "components/accordion.tsx"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:component",
      "title": "Card",
      "description": "Displays a card with a header, content, and footer.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/card.tsx",
          "type": "registry:component",
          "target": "components/card.tsx"
        }
      ]
    },
    {
      "name": "use-mobile",
      "type": "registry:hook",
      "title": "Use Mobile",
      "description": "A hook that reports whether the viewport is below the mobile breakpoint.",
      "files": [
        {
          "path": "src/hooks/use-mobile.ts",
          "type": "registry:hook",
          "target": "hooks/use-mobile.ts"
        }
      ]
    },
    {
      "name": "alert",
      "type": "registry:component",
      "title": "Alert",
      "description": "Displays a callout for user attention.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/alert.tsx",
          "type": "registry:component",
          "target": "components/alert.tsx"
        }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:component",
      "title": "Alert Dialog",
      "description": "A modal dialog that interrupts the user with important content and expects a response.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/alert-dialog.tsx",
          "type": "registry:component",
          "target": "components/alert-dialog.tsx"
        }
      ]
    },
    {
      "name": "aspect-ratio",
      "type": "registry:component",
      "title": "Aspect Ratio",
      "description": "Displays content within a desired ratio.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/aspect-ratio.tsx",
          "type": "registry:component",
          "target": "components/aspect-ratio.tsx"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:component",
      "title": "Avatar",
      "description": "An image element with a fallback for representing the user.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/avatar.tsx",
          "type": "registry:component",
          "target": "components/avatar.tsx"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:component",
      "title": "Badge",
      "description": "Displays a badge or a component that looks like a badge.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/badge.tsx",
          "type": "registry:component",
          "target": "components/badge.tsx"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:component",
      "title": "Breadcrumb",
      "description": "Displays the path to the current resource using a hierarchy of links.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/breadcrumb.tsx",
          "type": "registry:component",
          "target": "components/breadcrumb.tsx"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:component",
      "title": "Button",
      "description": "Displays a button or a component that looks like a button.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/button.tsx",
          "type": "registry:component",
          "target": "components/button.tsx"
        }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:component",
      "title": "Button Group",
      "description": "A container that groups related buttons together with consistent styling.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/separator"
      ],
      "files": [
        {
          "path": "src/components/button-group.tsx",
          "type": "registry:component",
          "target": "components/button-group.tsx"
        }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:component",
      "title": "Calendar",
      "description": "A date field component that allows users to enter and edit dates.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "react-day-picker"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button"
      ],
      "files": [
        {
          "path": "src/components/calendar.tsx",
          "type": "registry:component",
          "target": "components/calendar.tsx"
        }
      ]
    },
    {
      "name": "carousel",
      "type": "registry:component",
      "title": "Carousel",
      "description": "A carousel with motion and swipe built using Embla.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "embla-carousel-react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button"
      ],
      "files": [
        {
          "path": "src/components/carousel.tsx",
          "type": "registry:component",
          "target": "components/carousel.tsx"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:component",
      "title": "Checkbox",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/checkbox.tsx",
          "type": "registry:component",
          "target": "components/checkbox.tsx"
        }
      ]
    },
    {
      "name": "collapsible",
      "type": "registry:component",
      "title": "Collapsible",
      "description": "An interactive component which expands and collapses a panel.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/collapsible.tsx",
          "type": "registry:component",
          "target": "components/collapsible.tsx"
        }
      ]
    },
    {
      "name": "combobox",
      "type": "registry:component",
      "title": "Combobox",
      "description": "An input with a list of suggestions that filters as you type.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/input-group",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/combobox.tsx",
          "type": "registry:component",
          "target": "components/combobox.tsx"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:component",
      "title": "Command",
      "description": "A fast, composable command menu for React.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "cmdk",
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/dialog",
        "@cortexcn/input-group",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/command.tsx",
          "type": "registry:component",
          "target": "components/command.tsx"
        }
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:component",
      "title": "Context Menu",
      "description": "Displays a menu of actions triggered by a right click.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/context-menu.tsx",
          "type": "registry:component",
          "target": "components/context-menu.tsx"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:component",
      "title": "Dialog",
      "description": "A window overlaid on the page that renders the content underneath inert.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/dialog.tsx",
          "type": "registry:component",
          "target": "components/dialog.tsx"
        }
      ]
    },
    {
      "name": "drawer",
      "type": "registry:component",
      "title": "Drawer",
      "description": "A drawer component for React, built on Vaul.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "vaul"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/drawer.tsx",
          "type": "registry:component",
          "target": "components/drawer.tsx"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:component",
      "title": "Dropdown Menu",
      "description": "Displays a menu of actions or functions, triggered by a button.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/dropdown-menu.tsx",
          "type": "registry:component",
          "target": "components/dropdown-menu.tsx"
        }
      ]
    },
    {
      "name": "empty",
      "type": "registry:component",
      "title": "Empty",
      "description": "Displays an empty state, with media, a title, a description, and actions.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/empty.tsx",
          "type": "registry:component",
          "target": "components/empty.tsx"
        }
      ]
    },
    {
      "name": "field",
      "type": "registry:component",
      "title": "Field",
      "description": "Combines labels, controls, and help text into accessible form fields.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/label",
        "@cortexcn/separator"
      ],
      "files": [
        {
          "path": "src/components/field.tsx",
          "type": "registry:component",
          "target": "components/field.tsx"
        }
      ]
    },
    {
      "name": "hover-card",
      "type": "registry:component",
      "title": "Hover Card",
      "description": "For sighted users to preview content available behind a link.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/hover-card.tsx",
          "type": "registry:component",
          "target": "components/hover-card.tsx"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:component",
      "title": "Input",
      "description": "Displays a form input field or a component that looks like an input field.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/input.tsx",
          "type": "registry:component",
          "target": "components/input.tsx"
        }
      ]
    },
    {
      "name": "input-group",
      "type": "registry:component",
      "title": "Input Group",
      "description": "Adds addons, buttons, and helper content to inputs.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/input",
        "@cortexcn/textarea",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/input-group.tsx",
          "type": "registry:component",
          "target": "components/input-group.tsx"
        }
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:component",
      "title": "Input OTP",
      "description": "An accessible one-time password input with copy and paste support.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "input-otp",
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/input-otp.tsx",
          "type": "registry:component",
          "target": "components/input-otp.tsx"
        }
      ]
    },
    {
      "name": "item",
      "type": "registry:component",
      "title": "Item",
      "description": "A versatile row for displaying media, a title, a description, and actions.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/separator",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/item.tsx",
          "type": "registry:component",
          "target": "components/item.tsx"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:component",
      "title": "Kbd",
      "description": "Displays textual user input from a keyboard, such as a shortcut.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/kbd.tsx",
          "type": "registry:component",
          "target": "components/kbd.tsx"
        }
      ]
    },
    {
      "name": "label",
      "type": "registry:component",
      "title": "Label",
      "description": "Renders an accessible label associated with controls.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/label.tsx",
          "type": "registry:component",
          "target": "components/label.tsx"
        }
      ]
    },
    {
      "name": "menubar",
      "type": "registry:component",
      "title": "Menubar",
      "description": "A persistent menu, common in desktop apps, with quick access to a set of commands.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/menubar.tsx",
          "type": "registry:component",
          "target": "components/menubar.tsx"
        }
      ]
    },
    {
      "name": "native-select",
      "type": "registry:component",
      "title": "Native Select",
      "description": "A styled native HTML select element.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/native-select.tsx",
          "type": "registry:component",
          "target": "components/native-select.tsx"
        }
      ]
    },
    {
      "name": "navigation-menu",
      "type": "registry:component",
      "title": "Navigation Menu",
      "description": "A collection of links for navigating websites.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/navigation-menu.tsx",
          "type": "registry:component",
          "target": "components/navigation-menu.tsx"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:component",
      "title": "Pagination",
      "description": "Page navigation with next and previous links.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button"
      ],
      "files": [
        {
          "path": "src/components/pagination.tsx",
          "type": "registry:component",
          "target": "components/pagination.tsx"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:component",
      "title": "Popover",
      "description": "Displays rich content in a portal, triggered by a button.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/popover.tsx",
          "type": "registry:component",
          "target": "components/popover.tsx"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:component",
      "title": "Progress",
      "description": "Displays an indicator showing the completion progress of a task.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/progress.tsx",
          "type": "registry:component",
          "target": "components/progress.tsx"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:component",
      "title": "Radio Group",
      "description": "A set of checkable buttons where no more than one can be checked at a time.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/radio-group.tsx",
          "type": "registry:component",
          "target": "components/radio-group.tsx"
        }
      ]
    },
    {
      "name": "resizable",
      "type": "registry:component",
      "title": "Resizable",
      "description": "Accessible resizable panel groups and layouts with keyboard support.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "react-resizable-panels"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/resizable.tsx",
          "type": "registry:component",
          "target": "components/resizable.tsx"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:component",
      "title": "Scroll Area",
      "description": "Augments native scroll functionality for custom, cross-browser styling.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/scroll-area.tsx",
          "type": "registry:component",
          "target": "components/scroll-area.tsx"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:component",
      "title": "Select",
      "description": "Displays a list of options for the user to pick from, triggered by a button.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/select.tsx",
          "type": "registry:component",
          "target": "components/select.tsx"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:component",
      "title": "Separator",
      "description": "Visually or semantically separates content.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/separator.tsx",
          "type": "registry:component",
          "target": "components/separator.tsx"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:component",
      "title": "Sheet",
      "description": "Extends the dialog to show content that complements the main content of the screen.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/sheet.tsx",
          "type": "registry:component",
          "target": "components/sheet.tsx"
        }
      ]
    },
    {
      "name": "sidebar",
      "type": "registry:component",
      "title": "Sidebar",
      "description": "A composable, themeable, and customizable sidebar.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/input",
        "@cortexcn/separator",
        "@cortexcn/sheet",
        "@cortexcn/skeleton",
        "@cortexcn/tooltip",
        "@cortexcn/use-mobile",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/sidebar.tsx",
          "type": "registry:component",
          "target": "components/sidebar.tsx"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:component",
      "title": "Skeleton",
      "description": "Shows a placeholder while content is loading.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/skeleton.tsx",
          "type": "registry:component",
          "target": "components/skeleton.tsx"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:component",
      "title": "Slider",
      "description": "An input where the user selects a value from within a given range.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/slider.tsx",
          "type": "registry:component",
          "target": "components/slider.tsx"
        }
      ]
    },
    {
      "name": "sonner",
      "type": "registry:component",
      "title": "Sonner",
      "description": "An opinionated toast component for React.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react",
        "next-themes",
        "sonner"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/sonner.tsx",
          "type": "registry:component",
          "target": "components/sonner.tsx"
        }
      ]
    },
    {
      "name": "spinner",
      "type": "registry:component",
      "title": "Spinner",
      "description": "An indicator that shows a loading state.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/spinner.tsx",
          "type": "registry:component",
          "target": "components/spinner.tsx"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:component",
      "title": "Switch",
      "description": "A control that allows the user to toggle between on and off.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/switch.tsx",
          "type": "registry:component",
          "target": "components/switch.tsx"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:component",
      "title": "Table",
      "description": "A responsive table component.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/table.tsx",
          "type": "registry:component",
          "target": "components/table.tsx"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:component",
      "title": "Tabs",
      "description": "A set of layered sections of content, shown one at a time.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/tabs.tsx",
          "type": "registry:component",
          "target": "components/tabs.tsx"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:component",
      "title": "Textarea",
      "description": "Displays a form textarea or a component that looks like a textarea.",
      "categories": [
        "components"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/textarea.tsx",
          "type": "registry:component",
          "target": "components/textarea.tsx"
        }
      ]
    },
    {
      "name": "toggle",
      "type": "registry:component",
      "title": "Toggle",
      "description": "A two-state button that can be either on or off.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/toggle.tsx",
          "type": "registry:component",
          "target": "components/toggle.tsx"
        }
      ]
    },
    {
      "name": "toggle-group",
      "type": "registry:component",
      "title": "Toggle Group",
      "description": "A set of two-state buttons that can be toggled on or off.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "class-variance-authority",
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/toggle"
      ],
      "files": [
        {
          "path": "src/components/toggle-group.tsx",
          "type": "registry:component",
          "target": "components/toggle-group.tsx"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:component",
      "title": "Tooltip",
      "description": "A popup that shows information about an element on hover or keyboard focus.",
      "categories": [
        "components"
      ],
      "dependencies": [
        "radix-ui"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/tooltip.tsx",
          "type": "registry:component",
          "target": "components/tooltip.tsx"
        }
      ]
    },
    {
      "name": "shimmer",
      "type": "registry:component",
      "title": "Shimmer",
      "description": "Animated shimmering text for loading and thinking states in AI interfaces.",
      "categories": [
        "ai-assistant"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "files": [
        {
          "path": "src/components/shimmer.tsx",
          "type": "registry:component",
          "target": "components/shimmer.tsx"
        }
      ]
    },
    {
      "name": "chain-of-thought",
      "type": "registry:component",
      "title": "Chain of Thought",
      "description": "A collapsible view of an AI's reasoning steps, with search results, images, and step status.",
      "categories": [
        "ai-assistant"
      ],
      "dependencies": [
        "@radix-ui/react-use-controllable-state",
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/badge",
        "@cortexcn/collapsible"
      ],
      "files": [
        {
          "path": "src/components/chain-of-thought.tsx",
          "type": "registry:component",
          "target": "components/chain-of-thought.tsx"
        }
      ]
    },
    {
      "name": "reasoning",
      "type": "registry:component",
      "title": "Reasoning",
      "description": "A collapsible panel for AI reasoning that opens while the model streams and closes when it finishes.",
      "categories": [
        "ai-assistant"
      ],
      "dependencies": [
        "@radix-ui/react-use-controllable-state",
        "@streamdown/cjk",
        "@streamdown/code",
        "@streamdown/math",
        "@streamdown/mermaid",
        "lucide-react",
        "streamdown"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/collapsible",
        "@cortexcn/shimmer"
      ],
      "files": [
        {
          "path": "src/components/reasoning.tsx",
          "type": "registry:component",
          "target": "components/reasoning.tsx"
        }
      ]
    },
    {
      "name": "perspective-marquee",
      "type": "registry:component",
      "title": "Perspective Marquee",
      "description": "A tilted wall of images that scrolls endlessly in alternating columns.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/marquee",
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/perspective-marquee.tsx",
          "type": "registry:component",
          "target": "components/perspective-marquee.tsx"
        }
      ]
    },
    {
      "name": "line-nav",
      "type": "registry:component",
      "title": "Line Nav",
      "description": "Vertical navigation with a line marker that expands on hover and active state.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "src/components/line-nav.tsx",
          "type": "registry:component",
          "target": "components/line-nav.tsx"
        }
      ]
    },
    {
      "name": "logos-carousel",
      "type": "registry:component",
      "title": "Logos Carousel",
      "description": "Cycle through logos column by column in a staggered wave.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "src/components/logos-carousel.tsx",
          "type": "registry:component",
          "target": "components/logos-carousel.tsx"
        }
      ]
    },
    {
      "name": "theme-toggle-effect",
      "type": "registry:component",
      "title": "Theme Toggle Effect",
      "description": "Animated transitions when switching between light and dark themes.",
      "categories": [
        "cortex"
      ],
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ]
    },
    {
      "name": "theme-toggle-effect-triangle",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Triangle",
      "description": "The triangle reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"triangle\"]::view-transition-old(root)": {
            "animation": "none",
            "animation-fill-mode": "both",
            "z-index": "-1"
          },
          ":root[data-theme-toggle-effect=\"triangle\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"><path d=\"m20 0 20 35H0z\" fill=\"white\"/></svg>') center / 0 no-repeat",
            "animation": "theme-toggle-triangle 0.7s",
            "animation-fill-mode": "both"
          }
        },
        "@keyframes theme-toggle-triangle": {
          "to": {
            "mask-size": "300vmax"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-triangle-blur",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Triangle blur",
      "description": "The triangle blur reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"triangle-blur\"]::view-transition-old(root)": {
            "animation": "none",
            "animation-fill-mode": "both",
            "z-index": "-1"
          },
          ":root[data-theme-toggle-effect=\"triangle-blur\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"><path d=\"m20 0 20 35H0z\" fill=\"white\" filter=\"url(%23blur)\"/><defs><filter id=\"blur\"><feGaussianBlur stdDeviation=\"1\"/></filter></defs></svg>') center / 0 no-repeat",
            "animation": "theme-toggle-triangle 0.7s",
            "animation-fill-mode": "both"
          }
        },
        "@keyframes theme-toggle-triangle": {
          "to": {
            "mask-size": "300vmax"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-circle",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Circle",
      "description": "The circle reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"circle\"]::view-transition-old(root)": {
            "animation": "none",
            "animation-fill-mode": "both",
            "z-index": "-1"
          },
          ":root[data-theme-toggle-effect=\"circle\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\"/></svg>') center / 0 no-repeat",
            "animation": "theme-toggle-circle 1s",
            "animation-fill-mode": "both"
          }
        },
        "@keyframes theme-toggle-circle": {
          "to": {
            "mask-size": "200vmax"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-circle-blur",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Circle blur",
      "description": "The circle blur reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"circle-blur\"]::view-transition-old(root)": {
            "animation": "none",
            "animation-fill-mode": "both",
            "z-index": "-1"
          },
          ":root[data-theme-toggle-effect=\"circle-blur\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"><defs><filter id=\"blur\"><feGaussianBlur stdDeviation=\"2\"/></filter></defs><circle cx=\"20\" cy=\"20\" r=\"18\" fill=\"white\" filter=\"url(%23blur)\"/></svg>') center / 0 no-repeat",
            "animation": "theme-toggle-circle 1s",
            "animation-fill-mode": "both"
          }
        },
        "@keyframes theme-toggle-circle": {
          "to": {
            "mask-size": "200vmax"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-circle-blur-top-left",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Circle blur (top left)",
      "description": "The circle blur (top left) reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"circle-blur-top-left\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\"><defs><filter id=\"blur\"><feGaussianBlur stdDeviation=\"2\"/></filter></defs><circle cx=\"0\" cy=\"0\" r=\"18\" fill=\"white\" filter=\"url(%23blur)\"/></svg>') top left / 0 no-repeat",
            "mask-origin": "content-box",
            "animation": "theme-toggle-circle-top-left 1s",
            "animation-fill-mode": "both",
            "transform-origin": "top left"
          },
          ":root[data-theme-toggle-effect=\"circle-blur-top-left\"]::view-transition-old(root)": {
            "animation": "theme-toggle-circle-top-left 1s",
            "animation-fill-mode": "both",
            "transform-origin": "top left",
            "z-index": "-1"
          }
        },
        "@keyframes theme-toggle-circle-top-left": {
          "to": {
            "mask-size": "350vmax"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-polygon",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Polygon",
      "description": "The polygon reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"polygon\"]::view-transition-group(root)": {
            "animation-duration": "0.7s"
          },
          ":root[data-theme-toggle-effect=\"polygon\"]::view-transition-new(root)": {
            "animation-name": "theme-toggle-polygon-light",
            "animation-fill-mode": "both"
          },
          ":root[data-theme-toggle-effect=\"polygon\"].dark::view-transition-new(root)": {
            "animation-name": "theme-toggle-polygon-dark"
          },
          ":root[data-theme-toggle-effect=\"polygon\"]::view-transition-old(root)": {
            "animation": "none",
            "animation-fill-mode": "both",
            "z-index": "-1"
          }
        },
        "@keyframes theme-toggle-polygon-light": {
          "from": {
            "clip-path": "polygon(171% 50%, 50% 171%, 50% 171%, 171% 50%)"
          },
          "to": {
            "clip-path": "polygon(171% 50%, 50% 171%, -50% 71%, 50% -71%)"
          }
        },
        "@keyframes theme-toggle-polygon-dark": {
          "from": {
            "clip-path": "polygon(50% -71%, -50% 71%, -50% 71%, 50% -71%)"
          },
          "to": {
            "clip-path": "polygon(50% -71%, -50% 71%, 50% 171%, 171% 50%)"
          }
        }
      }
    },
    {
      "name": "theme-toggle-effect-polygon-gradient",
      "type": "registry:component",
      "title": "Theme Toggle Effect: Polygon gradient",
      "description": "The polygon gradient reveal for startThemeTransition, plus the helper itself.",
      "files": [
        {
          "path": "src/components/theme-toggle-effect.tsx",
          "type": "registry:component",
          "target": "components/theme-toggle-effect.tsx"
        }
      ],
      "css": {
        "@layer base": {
          ":root": {
            "--expo-out": "linear( 0 0%, 0.1684 2.66%, 0.3165 5.49%, 0.446 8.52%, 0.5581 11.78%, 0.6535 15.29%, 0.7341 19.11%, 0.8011 23.3%, 0.8557 27.93%, 0.8962 32.68%, 0.9283 38.01%, 0.9529 44.08%, 0.9711 51.14%, 0.9833 59.06%, 0.9915 68.74%, 1 100% )"
          },
          ":root[data-theme-toggle-effect]::view-transition-group(root)": {
            "animation-timing-function": "var(--expo-out)"
          },
          ":root[data-theme-toggle-effect=\"polygon-gradient\"]::view-transition-new(root)": {
            "mask": "url('data:image/svg+xml,<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 0H40L0 40V0Z\" fill=\"url(%23paint0_linear_16_14)\"/><defs><linearGradient id=\"paint0_linear_16_14\" x1=\"0\" y1=\"0\" x2=\"20.5\" y2=\"20.5\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"current\"/><stop offset=\"0.84506\" stop-color=\"current\" stop-opacity=\"0.99\"/><stop offset=\"0.9506\" stop-color=\"current\" stop-opacity=\"0\"/><stop offset=\"1\" stop-color=\"current\" stop-opacity=\"0\"/></linearGradient></defs></svg>') top left / 0 no-repeat",
            "animation": "theme-toggle-polygon-gradient 1.5s",
            "animation-fill-mode": "both"
          },
          ":root[data-theme-toggle-effect=\"polygon-gradient\"]::view-transition-old(root)": {
            "animation": "theme-toggle-polygon-gradient 1.5s",
            "animation-fill-mode": "both",
            "z-index": "-1",
            "transform-origin": "top left"
          }
        },
        "@keyframes theme-toggle-polygon-gradient": {
          "to": {
            "mask-size": "200vmax"
          }
        }
      }
    },
    {
      "name": "work-experience",
      "type": "registry:component",
      "title": "Work Experience",
      "description": "Display work experiences with role details, company logos, and durations.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "collapsible",
        "separator",
        "@cortexcn/design-system-recipes"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "src/components/work-experience.tsx",
          "type": "registry:component",
          "target": "components/work-experience.tsx"
        },
        {
          "path": "src/components/chevrons-up-down-icon.tsx",
          "type": "registry:component",
          "target": "components/chevrons-up-down-icon.tsx"
        }
      ]
    },
    {
      "name": "light-speed",
      "type": "registry:component",
      "title": "Light Speed",
      "description": "A warp-speed tunnel of glowing light streaks, drawn with three.js and bloom.",
      "categories": [
        "backgrounds"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/postprocessing",
        "postprocessing",
        "clsx",
        "tailwind-merge"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/components/light-speed.tsx",
          "type": "registry:component",
          "target": "components/light-speed.tsx"
        }
      ]
    },
    {
      "name": "number-ticker",
      "type": "registry:component",
      "title": "Number Ticker",
      "description": "A rolling digit ticker that counts to a value with per-digit stagger, padding, and blur.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "src/components/number-ticker.tsx",
          "type": "registry:component",
          "target": "components/number-ticker.tsx"
        }
      ]
    },
    {
      "name": "command-search",
      "type": "registry:component",
      "title": "Command Search",
      "description": "A command palette that types queries and live-filters grouped results, with keyboard navigation.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "files": [
        {
          "path": "src/components/command-search.tsx",
          "type": "registry:component",
          "target": "components/command-search.tsx"
        }
      ]
    },
    {
      "name": "fan-out-diagram",
      "type": "registry:component",
      "title": "Fan-Out Diagram",
      "description": "An animated architecture diagram where one source feeds a hub that fans out to many nodes, each with a live status.",
      "categories": [
        "cortex"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/fan-out-diagram.tsx",
          "type": "registry:component",
          "target": "components/fan-out-diagram.tsx"
        }
      ]
    },
    {
      "name": "gooey-nav",
      "type": "registry:component",
      "title": "Gooey Nav",
      "description": "A row of links with a filled pill under the active one. Choosing another link sends the pill there like a drop of liquid.",
      "categories": [
        "cortex"
      ],
      "dependencies": [],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/gooey-nav.tsx",
          "type": "registry:component",
          "target": "components/gooey-nav.tsx"
        }
      ]
    },
    {
      "name": "lanyard-3d",
      "type": "registry:component",
      "title": "Lanyard 3D",
      "description": "A 3D ID badge on a strap, drawn with three.js. Drag it and it swings and twists on a simulated strap; click it to flip it over.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/components/lanyard-3d.tsx",
          "type": "registry:component",
          "target": "components/lanyard-3d.tsx"
        }
      ]
    },
    {
      "name": "lanyard-badge",
      "type": "registry:component",
      "title": "Lanyard Badge",
      "description": "An ID badge hanging from a strap. Drag it and it swings back on a simulated rope; click it to flip it over.",
      "categories": [
        "cortex"
      ],
      "dependencies": [],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/lanyard-badge.tsx",
          "type": "registry:component",
          "target": "components/lanyard-badge.tsx"
        }
      ]
    },
    {
      "name": "sphere-menu",
      "type": "registry:component",
      "title": "Sphere Menu",
      "description": "A sphere of image tiles you can spin in any direction. When it slows down, the nearest tile turns to face you and its link appears.",
      "categories": [
        "cortex"
      ],
      "dependencies": [],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "files": [
        {
          "path": "src/components/sphere-menu.tsx",
          "type": "registry:component",
          "target": "components/sphere-menu.tsx"
        }
      ]
    },
    {
      "name": "faq-tabs-card",
      "type": "registry:component",
      "title": "FAQ Tabs Card",
      "description": "A tabbed FAQ card with animated accordion answers and a support footer.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/design-system-recipes"
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "files": [
        {
          "path": "src/components/faq-tabs-card.tsx",
          "type": "registry:component",
          "target": "components/faq-tabs-card.tsx"
        }
      ]
    },
    {
      "name": "ascii-reveal",
      "type": "registry:component",
      "title": "ASCII Reveal",
      "description": "A loader that decodes text, images, and cards into place through a character grid, with glyph skeletons while data loads.",
      "categories": [
        "cortex"
      ],
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "ascii-reveal"
      ],
      "files": [
        {
          "path": "src/components/ascii-reveal.tsx",
          "type": "registry:component",
          "target": "components/ascii-reveal.tsx"
        }
      ]
    },
    {
      "name": "queue",
      "type": "registry:component",
      "title": "Queue",
      "description": "A queue for AI apps: queued messages with attachments, todos, and collapsible sections.",
      "categories": [
        "ai-assistant"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/button",
        "@cortexcn/collapsible",
        "@cortexcn/scroll-area"
      ],
      "files": [
        {
          "path": "src/components/queue.tsx",
          "type": "registry:component",
          "target": "components/queue.tsx"
        }
      ]
    },
    {
      "name": "design-md",
      "type": "registry:item",
      "title": "DESIGN.md",
      "description": "Cortexcn's design system as a DESIGN.md file for coding agents: the colors, type, rounded corners, spacing, motion, and component rules, generated from the theme tokens.",
      "categories": [
        "agents"
      ],
      "files": [
        {
          "path": "src/agents/DESIGN.md",
          "type": "registry:file",
          "target": "~/DESIGN.md"
        }
      ]
    },
    {
      "name": "agent-skills",
      "type": "registry:item",
      "title": "Agent skills",
      "description": "The cortexcn and cortexcn-design agent skills, for Claude Code (.claude/skills) and for Codex, Cursor, and GitHub Copilot (.agents/skills).",
      "categories": [
        "agents"
      ],
      "files": [
        {
          "path": "src/agents/skills/cortexcn/SKILL.md",
          "type": "registry:file",
          "target": "~/.claude/skills/cortexcn/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn/SKILL.md",
          "type": "registry:file",
          "target": "~/.agents/skills/cortexcn/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn-design/SKILL.md",
          "type": "registry:file",
          "target": "~/.claude/skills/cortexcn-design/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn-design/SKILL.md",
          "type": "registry:file",
          "target": "~/.agents/skills/cortexcn-design/SKILL.md"
        }
      ]
    },
    {
      "name": "agent-kit",
      "type": "registry:item",
      "title": "Agent kit",
      "description": "Everything for coding agents in one install: both Cortexcn agent skills and DESIGN.md.",
      "categories": [
        "agents"
      ],
      "files": [
        {
          "path": "src/agents/skills/cortexcn/SKILL.md",
          "type": "registry:file",
          "target": "~/.claude/skills/cortexcn/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn/SKILL.md",
          "type": "registry:file",
          "target": "~/.agents/skills/cortexcn/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn-design/SKILL.md",
          "type": "registry:file",
          "target": "~/.claude/skills/cortexcn-design/SKILL.md"
        },
        {
          "path": "src/agents/skills/cortexcn-design/SKILL.md",
          "type": "registry:file",
          "target": "~/.agents/skills/cortexcn-design/SKILL.md"
        },
        {
          "path": "src/agents/DESIGN.md",
          "type": "registry:file",
          "target": "~/DESIGN.md"
        }
      ]
    },
    {
      "name": "feature-spotlight-grid-01",
      "type": "registry:block",
      "title": "Feature Spotlight Grid",
      "description": "Six icon cards under a centered intro, with one soft highlight that glides to the card you point at",
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/feature-spotlight-grid-01/components/feature-spotlight-grid.tsx",
          "type": "registry:component",
          "target": "components/feature-spotlight-grid.tsx"
        }
      ]
    },
    {
      "name": "feature-spotlight-grid-01-example",
      "type": "registry:example",
      "title": "Feature Spotlight Grid Example",
      "description": "Six icon cards under a centered intro, with one soft highlight that glides to the card you point at — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-spotlight-grid-01"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/feature-spotlight-grid-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-media-cards-01",
      "type": "registry:block",
      "title": "Feature Media Cards",
      "description": "Heading and two actions above three cards that pair an image, a short explainer, and an icon tile",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-media-cards-01/components/feature-media-cards.tsx",
          "type": "registry:component",
          "target": "components/feature-media-cards.tsx"
        }
      ]
    },
    {
      "name": "feature-media-cards-01-example",
      "type": "registry:example",
      "title": "Feature Media Cards Example",
      "description": "Heading and two actions above three cards that pair an image, a short explainer, and an icon tile — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-media-cards-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-media-cards-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-image-columns-01",
      "type": "registry:block",
      "title": "Feature Image Columns",
      "description": "Label, headline, and intro over three image columns, closed by one shared call to action",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-image-columns-01/components/feature-image-columns.tsx",
          "type": "registry:component",
          "target": "components/feature-image-columns.tsx"
        }
      ]
    },
    {
      "name": "feature-image-columns-01-example",
      "type": "registry:example",
      "title": "Feature Image Columns Example",
      "description": "Label, headline, and intro over three image columns, closed by one shared call to action — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-image-columns-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-image-columns-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-studio-grid-01",
      "type": "registry:block",
      "title": "Feature Studio Grid",
      "description": "Heading and one action over two compact cards and a large feature tile, for posts, case studies, or launches",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-studio-grid-01/components/feature-studio-grid.tsx",
          "type": "registry:component",
          "target": "components/feature-studio-grid.tsx"
        }
      ]
    },
    {
      "name": "feature-studio-grid-01-example",
      "type": "registry:example",
      "title": "Feature Studio Grid Example",
      "description": "Heading and one action over two compact cards and a large feature tile, for posts, case studies, or launches — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-studio-grid-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-studio-grid-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-bento-grid-01",
      "type": "registry:block",
      "title": "Feature Bento Grid",
      "description": "A bento of photo tiles, logo tiles, and stat cards on a twelve-column grid, with one call to action",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-bento-grid-01/components/feature-bento-grid.tsx",
          "type": "registry:component",
          "target": "components/feature-bento-grid.tsx"
        }
      ]
    },
    {
      "name": "feature-bento-grid-01-example",
      "type": "registry:example",
      "title": "Feature Bento Grid Example",
      "description": "A bento of photo tiles, logo tiles, and stat cards on a twelve-column grid, with one call to action — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-bento-grid-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-bento-grid-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-mixed-bento-01",
      "type": "registry:block",
      "title": "Feature Mixed Bento",
      "description": "A mono label over four cards on a five-column grid, each setting its title, copy, and image a different way, over soft blurred glows and a faint plus pattern",
      "registryDependencies": [
        "@cortexcn/utils",
        "card"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-mixed-bento-01/components/feature-mixed-bento.tsx",
          "type": "registry:component",
          "target": "components/feature-mixed-bento.tsx"
        }
      ]
    },
    {
      "name": "feature-mixed-bento-01-example",
      "type": "registry:example",
      "title": "Feature Mixed Bento Example",
      "description": "A mono label over four cards on a five-column grid, each setting its title, copy, and image a different way, over soft blurred glows and a faint plus pattern — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-mixed-bento-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-mixed-bento-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-mockup-grid-01",
      "type": "registry:block",
      "title": "Feature Mockup Grid",
      "description": "A centered label and heading over five cards, two on top and three below, each with a small product mockup drawn in theme colors",
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/feature-mockup-grid-01/components/feature-mockup-grid.tsx",
          "type": "registry:component",
          "target": "components/feature-mockup-grid.tsx"
        }
      ]
    },
    {
      "name": "feature-mockup-grid-01-example",
      "type": "registry:example",
      "title": "Feature Mockup Grid Example",
      "description": "A centered label and heading over five cards, two on top and three below, each with a small product mockup drawn in theme colors — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-mockup-grid-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/feature-mockup-grid-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "feature-walkthrough-01",
      "type": "registry:block",
      "title": "Feature Walkthrough",
      "description": "Three numbered steps beside a painted stage in a ruled frame. Each step plays out in its own window, and the steps move on by themselves",
      "registryDependencies": [
        "@cortexcn/utils",
        "@cortexcn/marquee"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/feature-walkthrough-01/components/feature-walkthrough.tsx",
          "type": "registry:component",
          "target": "components/feature-walkthrough.tsx"
        }
      ]
    },
    {
      "name": "feature-walkthrough-01-example",
      "type": "registry:example",
      "title": "Feature Walkthrough Example",
      "description": "Three numbered steps beside a painted stage in a ruled frame. Each step plays out in its own window, and the steps move on by themselves — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/feature-walkthrough-01"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/feature-walkthrough-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "services-image-grid-01",
      "type": "registry:block",
      "title": "Services Image Grid",
      "description": "An intro with a heading, a short pitch, and one outline action beside five image cards that fade when you point at them",
      "registryDependencies": [
        "@cortexcn/utils",
        "button",
        "card"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/services-image-grid-01/components/services-image-grid.tsx",
          "type": "registry:component",
          "target": "components/services-image-grid.tsx"
        }
      ]
    },
    {
      "name": "services-image-grid-01-example",
      "type": "registry:example",
      "title": "Services Image Grid Example",
      "description": "An intro with a heading, a short pitch, and one outline action beside five image cards that fade when you point at them — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/services-image-grid-01"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/services-image-grid-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "services-preview-list-01",
      "type": "registry:block",
      "title": "Services Preview List",
      "description": "A large numbered list of services beside a panel that stays in view and wipes in the image and description of the one you point at",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/services-preview-list-01/components/services-preview-list.tsx",
          "type": "registry:component",
          "target": "components/services-preview-list.tsx"
        }
      ]
    },
    {
      "name": "services-preview-list-01-example",
      "type": "registry:example",
      "title": "Services Preview List Example",
      "description": "A large numbered list of services beside a panel that stays in view and wipes in the image and description of the one you point at — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/services-preview-list-01"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/services-preview-list-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "hero-dashboard-01",
      "type": "registry:block",
      "title": "Hero Dashboard Preview",
      "description": "A serif headline, a short pitch, and one call to action over a framed product dashboard on a soft photo wash",
      "registryDependencies": [
        "@cortexcn/utils",
        "avatar",
        "badge",
        "button",
        "card",
        "separator"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react",
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/hero-dashboard-01/components/hero-dashboard.tsx",
          "type": "registry:component",
          "target": "components/hero-dashboard.tsx"
        },
        {
          "path": "registry/blocks/hero-dashboard-01/components/hero-dashboard-demo.tsx",
          "type": "registry:component",
          "target": "components/hero-dashboard-demo.tsx"
        },
        {
          "path": "registry/blocks/hero-dashboard-01/components/hero-cta.tsx",
          "type": "registry:component",
          "target": "components/hero-cta.tsx"
        }
      ]
    },
    {
      "name": "hero-dashboard-01-example",
      "type": "registry:example",
      "title": "Hero Dashboard Preview Example",
      "description": "A serif headline, a short pitch, and one call to action over a framed product dashboard on a soft photo wash — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/hero-dashboard-01"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react",
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/hero-dashboard-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "hero-studio-01",
      "type": "registry:block",
      "title": "Hero Studio",
      "description": "A short tagline beside a serif headline and pitch, over a wide landscape photo that fades into the page",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [
        "class-variance-authority",
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/hero-studio-01/components/hero-studio.tsx",
          "type": "registry:component",
          "target": "components/hero-studio.tsx"
        },
        {
          "path": "registry/blocks/hero-studio-01/components/hero-cta.tsx",
          "type": "registry:component",
          "target": "components/hero-cta.tsx"
        }
      ]
    },
    {
      "name": "hero-studio-01-example",
      "type": "registry:example",
      "title": "Hero Studio Example",
      "description": "A short tagline beside a serif headline and pitch, over a wide landscape photo that fades into the page — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/hero-studio-01"
      ],
      "dependencies": [
        "class-variance-authority",
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/hero-studio-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "hero-cover-01",
      "type": "registry:block",
      "title": "Hero Cover Photo",
      "description": "A full-bleed photo with the title, a small label, a short description, and one call to action along its bottom edge",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [
        "class-variance-authority",
        "motion"
      ],
      "files": [
        {
          "path": "registry/blocks/hero-cover-01/components/hero-cover.tsx",
          "type": "registry:component",
          "target": "components/hero-cover.tsx"
        },
        {
          "path": "registry/blocks/hero-cover-01/components/hero-cta.tsx",
          "type": "registry:component",
          "target": "components/hero-cta.tsx"
        }
      ]
    },
    {
      "name": "hero-cover-01-example",
      "type": "registry:example",
      "title": "Hero Cover Photo Example",
      "description": "A full-bleed photo with the title, a small label, a short description, and one call to action along its bottom edge — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/hero-cover-01"
      ],
      "dependencies": [
        "class-variance-authority",
        "motion"
      ],
      "files": [
        {
          "path": "registry/examples/hero-cover-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "loader-dot-matrix-01",
      "type": "registry:block",
      "title": "Loader Dot Matrix",
      "description": "A grid of dots that pulses in a ripple, wave, or rain pattern, shown four ways including inside a button",
      "registryDependencies": [
        "@cortexcn/utils",
        "button"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/loader-dot-matrix-01/components/loader-dot-matrix-demo.tsx",
          "type": "registry:component",
          "target": "components/loader-dot-matrix-demo.tsx"
        },
        {
          "path": "registry/blocks/loader-dot-matrix-01/components/loader-dot-matrix.tsx",
          "type": "registry:component",
          "target": "components/loader-dot-matrix.tsx"
        }
      ]
    },
    {
      "name": "loader-dot-matrix-01-example",
      "type": "registry:example",
      "title": "Loader Dot Matrix Example",
      "description": "A grid of dots that pulses in a ripple, wave, or rain pattern, shown four ways including inside a button — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/loader-dot-matrix-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/loader-dot-matrix-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "loader-glitch-text-01",
      "type": "registry:block",
      "title": "Loader Glitch Text",
      "description": "Loading text that scrambles and splits into color channels, at three intensities and as a heading",
      "registryDependencies": [
        "@cortexcn/utils"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/loader-glitch-text-01/components/loader-glitch-text-demo.tsx",
          "type": "registry:component",
          "target": "components/loader-glitch-text-demo.tsx"
        },
        {
          "path": "registry/blocks/loader-glitch-text-01/components/loader-glitch-text.tsx",
          "type": "registry:component",
          "target": "components/loader-glitch-text.tsx"
        }
      ]
    },
    {
      "name": "loader-glitch-text-01-example",
      "type": "registry:example",
      "title": "Loader Glitch Text Example",
      "description": "Loading text that scrambles and splits into color channels, at three intensities and as a heading — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/loader-glitch-text-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/loader-glitch-text-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "ai-reasoning-01",
      "type": "registry:block",
      "title": "AI Reasoning Panel",
      "description": "A reasoning panel that streams a model's thinking as markdown, folds away when it finishes, and can replay",
      "registryDependencies": [
        "@cortexcn/reasoning",
        "button"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/blocks/ai-reasoning-01/components/reasoning-panel.tsx",
          "type": "registry:component",
          "target": "components/reasoning-panel.tsx"
        }
      ]
    },
    {
      "name": "ai-reasoning-01-example",
      "type": "registry:example",
      "title": "AI Reasoning Panel Example",
      "description": "A reasoning panel that streams a model's thinking as markdown, folds away when it finishes, and can replay — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/ai-reasoning-01"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/examples/ai-reasoning-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "ai-chain-of-thought-01",
      "type": "registry:block",
      "title": "AI Agent Steps",
      "description": "An agent's progress one step at a time, with sources, a live current step, and a summary when the run ends",
      "registryDependencies": [
        "@cortexcn/chain-of-thought",
        "button"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/blocks/ai-chain-of-thought-01/components/agent-steps.tsx",
          "type": "registry:component",
          "target": "components/agent-steps.tsx"
        }
      ]
    },
    {
      "name": "ai-chain-of-thought-01-example",
      "type": "registry:example",
      "title": "AI Agent Steps Example",
      "description": "An agent's progress one step at a time, with sources, a live current step, and a summary when the run ends — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/ai-chain-of-thought-01"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/examples/ai-chain-of-thought-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "ai-shimmer-01",
      "type": "registry:block",
      "title": "AI Thinking Message",
      "description": "A chat turn where the assistant's reply is a shimmering status line while it works",
      "registryDependencies": [
        "@cortexcn/shimmer",
        "@cortexcn/utils"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/blocks/ai-shimmer-01/components/thinking-message.tsx",
          "type": "registry:component",
          "target": "components/thinking-message.tsx"
        }
      ]
    },
    {
      "name": "ai-shimmer-01-example",
      "type": "registry:example",
      "title": "AI Thinking Message Example",
      "description": "A chat turn where the assistant's reply is a shimmering status line while it works — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/ai-shimmer-01"
      ],
      "dependencies": [],
      "files": [
        {
          "path": "registry/examples/ai-shimmer-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    },
    {
      "name": "ai-queue-01",
      "type": "registry:block",
      "title": "AI Agent Queue",
      "description": "What an agent has lined up: queued messages with attachments and a remove action, above the run's todo list",
      "registryDependencies": [
        "@cortexcn/queue"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/blocks/ai-queue-01/components/agent-queue.tsx",
          "type": "registry:component",
          "target": "components/agent-queue.tsx"
        }
      ]
    },
    {
      "name": "ai-queue-01-example",
      "type": "registry:example",
      "title": "AI Agent Queue Example",
      "description": "What an agent has lined up: queued messages with attachments and a remove action, above the run's todo list — demo for Open in v0",
      "registryDependencies": [
        "@cortexcn/ai-queue-01"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/examples/ai-queue-01.tsx",
          "type": "registry:page",
          "target": "app/page.tsx"
        }
      ]
    }
  ]
}
