{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "dependencies": ["@base-ui/react", "class-variance-authority"],
  "registryDependencies": ["utils"],
  "files": [
    {
      "path": "registry/ui/button.tsx",
      "content": "'use client';\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/registry/lib/utils';\n\nconst buttonVariants = cva(\n  \"group/button inline-flex items-center justify-center gap-1 whitespace-nowrap rounded-dynamic text-sm text-ui-label font-medium select-none bg-clip-padding disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-focus\",\n  {\n    variants: {\n      variant: {\n        solid:\n          'bg-fill text-on-fill hover:bg-fill/90 active:bg-fill/80 focus-visible:outline-focus-fill focus-visible:outline-offset-2',\n        outline: 'border border-line-ui bg-transparent hover:bg-hover/30 active:bg-active/40',\n        surface: 'border border-line-ui bg-ui hover:border-line-ui hover:bg-hover active:bg-active',\n        soft: 'bg-ui hover:bg-hover active:bg-active',\n        ghost: 'hover:bg-hover active:bg-active',\n      },\n      size: {\n        sm: \"h-8 rounded-dynamic gap-1.5 px-3 has-[>svg]:px-2.5 text-xs [&_svg:not([class*='size-'])]:size-3\",\n        md: 'h-7.5 px-3 has-[>svg]:px-2.5',\n        lg: 'h-10 px-6 has-[>svg]:px-4',\n        icon: 'size-7.5',\n        'icon-sm': 'size-7',\n        'icon-lg': 'size-9',\n      },\n    },\n    defaultVariants: {\n      variant: 'solid',\n      size: 'md',\n    },\n  }\n);\n\ntype Theme = 'gray' | 'accent' | 'destructive' | (string & {});\n\ninterface ButtonProps extends ButtonPrimitive.Props, VariantProps<typeof buttonVariants> {\n  theme?: Theme;\n}\n\nfunction Button({\n  className,\n  variant = 'solid',\n  theme = 'gray',\n  size = 'md',\n  ...props\n}: ButtonProps) {\n  return (\n    <ButtonPrimitive\n      data-slot=\"button\"\n      data-variant={variant}\n      data-theme={theme !== 'gray' ? theme : undefined}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  );\n}\n\nexport { Button, buttonVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
