{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "title": "Button",
  "description": "Allows users to take actions with a single click or tap.",
  "dependencies": [
    "radix-ui",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://blok.sitecore.com/r/theme.json"
  ],
  "files": [
    {
      "path": "src/components/ui/button.tsx",
      "content": "import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot as SlotPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n  [\n    // Layout & Sizing\n    \"inline-flex items-center justify-center\",\n    \"gap-2 whitespace-nowrap\",\n    \"shrink-0\",\n\n    // Typography\n    \"text-md font-semibold\",\n\n    // Icon Styles\n    \"[&_svg]:pointer-events-none\",\n    \"[&_svg]:w-[1.375rem] [&_svg]:h-[1.375rem]\",\n    \"[&_svg]:shrink-0\",\n\n    // Interactive States\n    \"transition-all\",\n    \"cursor-pointer\",\n    \"disabled:pointer-events-none disabled:opacity-50\",\n\n    // Focus & Validation States\n    \"outline-none\",\n    \"focus-visible:border-primary focus-visible:ring-primary/50 focus-visible:ring-[3px]\",\n    \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n    \"aria-invalid:border-destructive\",\n  ].join(\" \"),\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground hover:bg-primary-600 active:bg-primary-700\",\n        outline:\n          \"border bg-backgrounds hover:bg-neutral-bg hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n        ghost: \"bg-transparent hover:bg-neutral-bg active:bg-neutral-bg-active\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 min-w-10 px-4 rounded-4xl\",\n        lg: \"h-12 min-w-12 px-6 rounded-4xl\",\n        sm: \"h-8 min-w-8 px-3 rounded-4xl\",\n        xs: \"h-6 min-w-6 px-2 rounded-4xl text-xs [&>svg]:!w-[18px] [&>svg]:!h-[18px]\",\n        icon: \"size-10 rounded-full\",\n        // New icon-specific sizes\n        \"icon-lg\": \"size-12 rounded-full\",\n        \"icon-sm\": \"size-8 rounded-full\",\n        \"icon-xs\": \"size-6 rounded-full [&>svg]:!w-[18px] [&>svg]:!h-[18px]\",\n      },\n      colorScheme: {\n        primary: \"\",\n        ai: \"bg-[length:250%_100%] !bg-transparent\",\n        danger: \"\",\n        success: \"\",\n        neutral: \"\",\n      },\n    },\n    compoundVariants: [\n      {\n        variant: \"default\",\n        colorScheme: \"primary\",\n        class:\n          \"bg-primary text-inverse-text hover:bg-primary-hover active:bg-primary-active\",\n      },\n      {\n        variant: \"default\",\n        colorScheme: \"success\",\n        class:\n          \"bg-success text-inverse-text hover:bg-success-hover active:bg-success-active\",\n      },\n      {\n        variant: \"default\",\n        colorScheme: \"danger\",\n        class:\n          \"bg-danger text-inverse-text hover:bg-danger-hover active:bg-danger-active\",\n      },\n      {\n        variant: \"default\",\n        colorScheme: \"neutral\",\n        class:\n          \"bg-neutral text-inverse-text hover:bg-neutral-hover active:bg-neutral-active\",\n      },\n      {\n        variant: \"default\",\n        colorScheme: \"ai\",\n        class: \"ai-500 text-inverse-text hover:ai-600 active:ai-700\",\n      },\n      {\n        variant: \"outline\",\n        colorScheme: \"primary\",\n        class:\n          \"border text-primary-fg hover:bg-primary-bg hover:text-primary-fg active:bg-primary-bg-active\",\n      },\n      {\n        variant: \"outline\",\n        colorScheme: \"success\",\n        class:\n          \"border text-success-fg hover:bg-success-bg hover:text-success-fg active:bg-success-bg-active\",\n      },\n      {\n        variant: \"outline\",\n        colorScheme: \"danger\",\n        class:\n          \"border text-danger-fg hover:bg-danger-bg hover:text-danger-fg active:bg-danger-bg-active\",\n      },\n      {\n        variant: \"outline\",\n        colorScheme: \"neutral\",\n        class:\n          \"border text-neutral-fg hover:bg-neutral-bg hover:text-neutral-fg active:bg-neutral-bg-active\",\n      },\n      {\n        variant: \"ghost\",\n        colorScheme: \"primary\",\n        class:\n          \"text-primary-fg hover:bg-primary-bg hover:text-primary-fg active:bg-primary-bg-active\",\n      },\n      {\n        variant: \"ghost\",\n        colorScheme: \"success\",\n        class:\n          \"text-success-fg hover:bg-success-bg hover:text-success-fg active:bg-success-bg-active\",\n      },\n      {\n        variant: \"ghost\",\n        colorScheme: \"danger\",\n        class:\n          \"text-danger-fg hover:bg-danger-bg hover:text-danger-fg active:bg-danger-bg-active\",\n      },\n      {\n        variant: \"ghost\",\n        colorScheme: \"neutral\",\n        class:\n          \"text-neutral-fg hover:bg-neutral-bg hover:text-neutral-fg active:bg-neutral-bg-active\",\n      },\n      {\n        variant: \"link\",\n        colorScheme: \"primary\",\n        class: \"text-primary active:text-primary-700\",\n      },\n      {\n        variant: \"link\",\n        colorScheme: \"success\",\n        class: \"text-success active:text-success-700\",\n      },\n      {\n        variant: \"link\",\n        colorScheme: \"danger\",\n        class: \"text-danger active:text-danger-700\",\n      },\n      {\n        variant: \"link\",\n        colorScheme: \"neutral\",\n        class: \"text-neutral active:text-neutral-700\",\n      },\n    ],\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n      colorScheme: \"primary\",\n    },\n  },\n);\n\nfunction Button({\n  className,\n  variant,\n  size,\n  colorScheme,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean;\n  }) {\n  const Comp = asChild ? SlotPrimitive.Slot : \"button\";\n\n  let resolvedColorSchemeFinal = colorScheme;\n\n  if (!colorScheme) {\n    switch (variant) {\n      case \"default\":\n      case \"link\":\n        resolvedColorSchemeFinal = \"primary\";\n        break;\n      case \"outline\":\n      case \"ghost\":\n        resolvedColorSchemeFinal = \"neutral\";\n        break;\n      default:\n        resolvedColorSchemeFinal = \"primary\";\n    }\n  }\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(\n        buttonVariants({\n          variant,\n          size,\n          colorScheme: resolvedColorSchemeFinal,\n          className,\n        }),\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Button, buttonVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}