{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "button",
  "type": "registry:ui",
  "dependencies": [
    "@kobalte/core"
  ],
  "files": [
    {
      "path": "ui/button.tsx",
      "content": "import type { JSX, ValidComponent } from \"solid-js\"\nimport { splitProps } from \"solid-js\"\n\nimport * as ButtonPrimitive from \"@kobalte/core/button\"\nimport type { PolymorphicProps } from \"@kobalte/core/polymorphic\"\nimport type { VariantProps } from \"class-variance-authority\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"cn-button group/button inline-flex shrink-0 select-none items-center justify-center whitespace-nowrap outline-none transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-button-variant-default\",\n        outline: \"cn-button-variant-outline\",\n        secondary: \"cn-button-variant-secondary\",\n        ghost: \"cn-button-variant-ghost\",\n        destructive: \"cn-button-variant-destructive\",\n        link: \"cn-button-variant-link\"\n      },\n      size: {\n        default: \"cn-button-size-default\",\n        xs: \"cn-button-size-xs\",\n        sm: \"cn-button-size-sm\",\n        lg: \"cn-button-size-lg\",\n        icon: \"cn-button-size-icon\",\n        \"icon-xs\": \"cn-button-size-icon-xs\",\n        \"icon-sm\": \"cn-button-size-icon-sm\",\n        \"icon-lg\": \"cn-button-size-icon-lg\"\n      }\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\"\n    }\n  }\n)\n\ntype ButtonProps<T extends ValidComponent = \"button\"> = ButtonPrimitive.ButtonRootProps<T> &\n  VariantProps<typeof buttonVariants> & { class?: string | undefined; children?: JSX.Element }\n\nconst Button = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, ButtonProps<T>>\n) => {\n  const [local, others] = splitProps(props as ButtonProps, [\"variant\", \"size\", \"class\"])\n  return (\n    <ButtonPrimitive.Root\n      class={cn(buttonVariants({ variant: local.variant, size: local.size }), local.class)}\n      data-size={local.size}\n      data-slot=\"button\"\n      data-variant={local.variant}\n      {...others}\n    />\n  )\n}\n\nexport type { ButtonProps }\nexport { Button, buttonVariants }\n",
      "type": "registry:ui"
    }
  ]
}