{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "neumorph-button",
  "type": "registry:ui",
  "description": "Neumorphic button component with soft shadows and tactile interaction effects",
  "dependencies": [
    "class-variance-authority",
    "lucide-react",
    "motion"
  ],
  "files": [
    {
      "path": "registry/default/ui/neumorph-button.tsx",
      "content": "\"use client\"\n\nimport type React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\nimport { motion, type HTMLMotionProps } from \"motion/react\"\n\nconst buttonVariants = cva(\n  // Base styles\n  \"flex items-center justify-center px-4 text-sm font-medium transition-[box-shadow,background-color] active:transition-none disabled:cursor-not-allowed disabled:opacity-50\",\n  {\n    variants: {\n      intent: {\n        default: [\n          \"bg-[#36322F]\",\n          \"text-[#fff]\",\n          \"hover:enabled:bg-[#4a4542]\",\n          \"disabled:bg-[#8c8885]\",\n          \"[box-shadow:inset_0px_-2.108433723449707px_0px_0px_#171310,_0px_1.2048193216323853px_6.325301647186279px_0px_rgba(58,_33,_8,_58%)]\",\n          \"hover:enabled:[box-shadow:inset_0px_-2.53012px_0px_0px_#171310,_0px_1.44578px_7.59036px_0px_rgba(58,_33,_8,_64%)]\",\n          \"disabled:shadow-none\",\n          \"active:bg-[#2A2724]\",\n          \"active:[box-shadow:inset_0px_-1.5px_0px_0px_#171310,_0px_0.5px_2px_0px_rgba(58,_33,_8,_70%)]\",\n        ],\n        primary: [\n          \"bg-[#2C7BE5]\",\n          \"text-[#fff]\",\n          \"hover:enabled:bg-[#3D8DF5]\",\n          \"disabled:bg-[#9FC3F5]\",\n          \"[box-shadow:inset_0px_-2.108433723449707px_0px_0px_#1A68D1,_0px_1.2048193216323853px_6.325301647186279px_0px_rgba(28,_100,_242,_58%)]\",\n          \"hover:enabled:[box-shadow:inset_0px_-2.53012px_0px_0px_#2C7BE5,_0px_1.44578px_7.59036px_0px_rgba(28,_100,_242,_64%)]\",\n          \"disabled:shadow-none\",\n          \"active:bg-[#1A68D1]\",\n          \"active:[box-shadow:inset_0px_-1.5px_0px_0px_#1554AB,_0px_0.5px_2px_0px_rgba(28,_100,_242,_70%)]\",\n        ],\n        secondary: [\n          \"bg-[#FFFFFF]\",\n          \"text-[#36322F]\",\n          \"hover:enabled:bg-[#F8F8F8]\",\n          \"disabled:bg-[#F0F0F0]\",\n          \"[box-shadow:inset_0px_-2.108433723449707px_0px_0px_#E0E0E0,_0px_1.2048193216323853px_6.325301647186279px_0px_rgba(0,_0,_0,_10%)]\",\n          \"hover:enabled:[box-shadow:inset_0px_-2.53012px_0px_0px_#E8E8E8,_0px_1.44578px_7.59036px_0px_rgba(0,_0,_0,_12%)]\",\n          \"disabled:shadow-none\",\n          \"border\",\n          \"border-[#E0E0E0]\",\n          \"active:bg-[#F0F0F0]\",\n          \"active:[box-shadow:inset_0px_-1.5px_0px_0px_#D8D8D8,_0px_0.5px_2px_0px_rgba(0,_0,_0,_15%)]\",\n        ],\n        danger: [\n          \"bg-[#E6492D]\",\n          \"text-[#fff]\",\n          \"hover:enabled:bg-[#F05B41]\",\n          \"disabled:bg-[#F5A799]\",\n          \"[box-shadow:inset_0px_-2.108433723449707px_0px_0px_#D63A1F,_0px_1.2048193216323853px_6.325301647186279px_0px_rgba(214,_58,_31,_58%)]\",\n          \"hover:enabled:[box-shadow:inset_0px_-2.53012px_0px_0px_#E6492D,_0px_1.44578px_7.59036px_0px_rgba(214,_58,_31,_64%)]\",\n          \"disabled:shadow-none\",\n          \"active:bg-[#D63A1F]\",\n          \"active:[box-shadow:inset_0px_-1.5px_0px_0px_#B22E17,_0px_0.5px_2px_0px_rgba(214,_58,_31,_70%)]\",\n        ],\n      },\n      size: {\n        small: [\"text-xs\", \"py-1\", \"px-2\", \"h-9\", \"rounded-[8px]\"],\n        medium: [\"text-base\", \"py-2\", \"px-4\", \"h-11\", \"rounded-[9px]\"],\n        large: [\"text-lg\", \"py-3\", \"px-6\", \"h-14\", \"rounded-[11px]\"],\n      },\n      fullWidth: {\n        true: \"w-full\",\n      },\n    },\n    compoundVariants: [\n      {\n        intent: [\"default\", \"primary\", \"secondary\", \"danger\"],\n        size: \"medium\",\n        className: \"uppercase\",\n      },\n    ],\n    defaultVariants: {\n      intent: \"default\",\n      size: \"medium\",\n    },\n  }\n)\n\nexport interface NeumorphButtonProps\n  extends HTMLMotionProps<\"button\">,\n    VariantProps<typeof buttonVariants> {\n  children: React.ReactNode\n  loading?: boolean\n}\n\nconst NeumorphButton: React.FC<NeumorphButtonProps> = ({\n  className,\n  intent,\n  size,\n  fullWidth,\n  children,\n  loading = false,\n  disabled,\n  ...props\n}) => {\n  return (\n    <motion.button\n      className={buttonVariants({ intent, size, fullWidth, className })}\n      disabled={disabled || loading}\n      whileTap={{ scale: 0.98 }}\n      whileHover={{ scale: 1.02 }}\n      transition={{ type: \"spring\", stiffness: 400, damping: 10 }}\n      {...props}\n    >\n      {loading ? <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" /> : null}\n      <motion.span\n        initial={{ opacity: 1 }}\n        animate={{ opacity: loading ? 0.7 : 1 }}\n        transition={{ duration: 0.2 }}\n      >\n        {children}\n      </motion.span>\n    </motion.button>\n  )\n}\n\nexport default NeumorphButton\n",
      "type": "registry:ui"
    }
  ]
}