---
title: Button
description: JSON Schema for the Button component.
---

A button component with multiple variants and sizes.

```json
{
  "type": "object",
  "properties": {
    "type": {
      "const": "Button",
      "default": "Button",
      "type": "string"
    },
    "cssClass": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "CSS/Tailwind classes for styling. Accepts a Responsive() for breakpoint-aware classes."
    },
    "label": {
      "description": "Button text",
      "type": "string"
    },
    "icon": {
      "type": [
        "string",
        "null"
      ],
      "default": null,
      "description": "Lucide icon name (kebab-case, e.g. 'arrow-right')"
    },
    "variant": {
      "default": "default",
      "description": "Visual variant: default, destructive, outline, secondary, ghost, link",
      "enum": [
        "default",
        "destructive",
        "outline",
        "secondary",
        "ghost",
        "link",
        "success",
        "warning",
        "info"
      ],
      "type": "string"
    },
    "size": {
      "default": "default",
      "description": "Size: default, sm, lg, icon",
      "enum": [
        "default",
        "xs",
        "sm",
        "lg",
        "icon",
        "icon-xs",
        "icon-sm",
        "icon-lg"
      ],
      "type": "string"
    },
    "disabled": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        }
      ],
      "default": false,
      "description": "Whether the button is disabled"
    },
    "onClick": {
      "$ref": "Action",
      "description": "Action(s) to execute when clicked",
      "default": null
    }
  },
  "required": [
    "type",
    "label"
  ]
}
```
