{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "title": "Button",
  "description": "Terminal-style action button with EXEC, GHOST, OUTLINE, and ABORT variants.",
  "dependencies": [
    "@radix-ui/react-slot",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "ui/button/button.tsx",
      "type": "registry:ui",
      "content": "import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\n\nconst buttonVariants = cva(\n  [\n    'inline-flex items-center justify-center',\n    'font-mono font-medium uppercase tracking-widest',\n    'border border-solid',\n    'cursor-pointer select-none',\n    'transition-all duration-150',\n    'focus-visible:outline-none',\n    'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n    'rounded-none',\n    'whitespace-nowrap',\n  ],\n  {\n    variants: {\n      variant: {\n        EXEC: [\n          'bg-transparent',\n          'border-[var(--color-green)]',\n          'text-[var(--color-green)]',\n          'hover:bg-[var(--color-green)]',\n          'hover:text-[var(--color-bg)]',\n          'hover:shadow-[var(--glow-green)]',\n          'focus-visible:shadow-[var(--glow-green)]',\n        ],\n        GHOST: [\n          'bg-transparent',\n          'border-transparent',\n          'text-[var(--text-secondary)]',\n          'hover:text-[var(--color-green)]',\n          'hover:border-[var(--border)]',\n          'focus-visible:border-[var(--border)]',\n        ],\n        OUTLINE: [\n          'bg-[var(--surface)]',\n          'border-[var(--border)]',\n          'text-[var(--text-secondary)]',\n          'hover:border-[var(--border-active)]',\n          'hover:text-[var(--color-green)]',\n          'hover:shadow-[var(--glow-green)]',\n          'focus-visible:border-[var(--border-active)]',\n          'focus-visible:shadow-[var(--glow-green)]',\n        ],\n        ABORT: [\n          'bg-transparent',\n          'border-[var(--color-red)]',\n          'text-[var(--color-red)]',\n          'hover:bg-[var(--color-red)]',\n          'hover:text-[var(--color-bg)]',\n          'hover:shadow-[var(--glow-red)]',\n          'focus-visible:shadow-[var(--glow-red)]',\n        ],\n      },\n      size: {\n        SM: 'h-7  px-3  text-[0.65rem] gap-1.5',\n        MD: 'h-9  px-4  text-[0.75rem] gap-2',\n        LG: 'h-11 px-6  text-[0.875rem] gap-2.5',\n      },\n    },\n    defaultVariants: {\n      variant: 'OUTLINE',\n      size: 'MD',\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'button'\n    return (\n      <Comp\n        ref={ref}\n        className={cn(buttonVariants({ variant, size }), className)}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"
    }
  ]
}