{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "button", "title": "Button", "description": "A neumorphic button component with multiple variants and sizes.", "dependencies": ["@base-ui/react", "class-variance-authority"], "registryDependencies": ["utils"], "files": [ { "path": "src/components/ui/button.tsx", "content": "import { Button as BaseButton } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 font-medium select-none\",\n \"transition-all duration-200 ease-in-out\",\n \"active:translate-y-0.5\",\n \"outline-none focus-visible:outline-2 focus-visible:outline-primary focus-visible:-outline-offset-2\",\n \"data-disabled:opacity-50 data-disabled:shadow-none data-disabled:cursor-not-allowed data-disabled:translate-y-0\",\n ],\n {\n variants: {\n variant: {\n default:\n \"bg-surface text-foreground shadow-neu border border-white/20 hover:brightness-105 active:shadow-neu-pressed\",\n primary:\n \"bg-surface text-primary shadow-neu border border-primary/30 hover:brightness-105 active:shadow-neu-pressed\",\n secondary:\n \"bg-surface text-foreground/80 shadow-neu border border-foreground/10 hover:brightness-105 active:shadow-neu-pressed\",\n success:\n \"bg-surface text-success shadow-neu border border-success/30 hover:brightness-105 active:shadow-neu-pressed\",\n warning:\n \"bg-surface text-warning shadow-neu border border-warning/30 hover:brightness-105 active:shadow-neu-pressed\",\n error:\n \"bg-surface text-destructive shadow-neu border border-destructive/30 hover:brightness-105 active:shadow-neu-pressed\",\n ghost:\n \"bg-transparent text-foreground shadow-none border border-transparent hover:bg-surface-shadow/10 active:bg-surface-shadow/20\",\n },\n size: {\n sm: \"h-9 px-4 text-sm rounded-lg\",\n md: \"h-11 px-6 text-base rounded-xl\",\n lg: \"h-14 px-8 text-lg rounded-xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type ButtonProps = React.ComponentProps &\n VariantProps & {\n isLoading?: boolean;\n };\n\nconst Button = React.forwardRef(function Button(\n { variant, size, isLoading, className, children, disabled, ...props },\n ref,\n) {\n return (\n \n {isLoading ? (\n \n ) : (\n children\n )}\n \n );\n});\n\nexport default Button;\n\nexport { buttonVariants };\n", "type": "registry:ui" } ], "type": "registry:ui" }