{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-button",
  "title": "Glass Button",
  "description": "Interactive button components with multiple variants, sizes, and optional glow effects.",
  "dependencies": [
    "@radix-ui/react-slot",
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/liquid-glass/glass-button.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\n\nconst glassButtonVariants = cva(\n  cn(\n    \"relative inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl cursor-pointer\",\n    \"text-sm font-medium transition-all duration-300 ease-out\",\n    \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent\",\n    \"disabled:pointer-events-none disabled:opacity-50\",\n    \"hover:scale-105 active:scale-95\",\n    \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  ),\n  {\n    variants: {\n      variant: {\n        default: cn(\n          \"bg-white/20 backdrop-blur-xl border border-white/30 text-white\",\n          \"shadow-[0_4px_16px_rgba(0,0,0,0.2)]\",\n          \"hover:bg-white/30 hover:border-white/40\",\n          \"before:absolute before:inset-0 before:rounded-xl\",\n          \"before:bg-linear-to-b before:from-white/20 before:to-transparent before:pointer-events-none\",\n        ),\n        primary: cn(\n          \"bg-linear-to-r from-cyan-500/80 via-blue-500/80 to-purple-500/80\",\n          \"backdrop-blur-xl border border-white/30 text-white\",\n          \"shadow-[0_4px_20px_rgba(59,130,246,0.4)]\",\n          \"hover:shadow-[0_4px_30px_rgba(59,130,246,0.6)]\",\n          \"before:absolute before:inset-0 before:rounded-xl\",\n          \"before:bg-linear-to-b before:from-white/30 before:to-transparent before:pointer-events-none\",\n        ),\n        outline: cn(\n          \"bg-transparent backdrop-blur-sm border-2 border-white/40 text-white\",\n          \"hover:bg-white/10 hover:border-white/60\",\n        ),\n        ghost: cn(\"bg-transparent text-white/70\", \"hover:bg-white/10 hover:text-white\"),\n        destructive: cn(\n          \"bg-red-500/30 backdrop-blur-xl border border-red-400/40 text-red-100\",\n          \"shadow-[0_4px_16px_rgba(239,68,68,0.3)]\",\n          \"hover:bg-red-500/40 hover:border-red-400/60\",\n          \"before:absolute before:inset-0 before:rounded-xl\",\n          \"before:bg-linear-to-b before:from-white/10 before:to-transparent before:pointer-events-none\",\n        ),\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-8 px-3 text-xs\",\n        lg: \"h-12 px-6 text-base\",\n        icon: \"h-10 w-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  },\n)\n\nexport interface GlassButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof glassButtonVariants> {\n  glowEffect?: boolean,\n  asChild?: boolean\n}\n\nconst GlassButton = React.forwardRef<HTMLButtonElement, GlassButtonProps>(\n  ({ className, variant, asChild = false, size, glowEffect = false, children, ...props }, ref) => {\n    const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n    return (\n      <div className=\"relative inline-block\">\n        {glowEffect && (\n          <div className=\"absolute -inset-1 rounded-xl bg-linear-to-r from-cyan-500/40 via-blue-500/40 to-purple-500/40 blur-lg opacity-70 transition-opacity group-hover:opacity-100\" />\n        )}\n        <Comp className={cn(glassButtonVariants({ variant, size, className }))} ref={ref} {...props}>\n          <span className=\"relative z-10 flex items-center gap-2\">{children}</span>\n        </Comp>\n      </div>\n    )\n  },\n)\nGlassButton.displayName = \"GlassButton\"\n\nexport { GlassButton, glassButtonVariants }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}