{
  "_copyright": "Copyright (c) 2026, Salesforce, Inc., All rights reserved. For full license text, see the LICENSE.txt file",
  "$schema": "https://slds.lightningdesignsystem.com/schemas/uif-foundation.v1.json",
  "apiVersion": "1.0.0",
  "name": "Button",
  "description": "This neutralizes all the base styles making it look like a text link",
  "structure": {
    "name": "root",
    "restrict": [
      "button",
      "a"
    ],
    "description": "Button element",
    "attributes": {
      "static": {
        "type": "button"
      },
      "bound": {
        "disabled": {
          "prop": "disabled"
        },
        "aria-disabled": {
          "prop": "disabled"
        },
        "aria-pressed": {
          "prop": "pressed"
        },
        "aria-live": {
          "prop": "live"
        },
        "title": {
          "prop": "title"
        },
        "name": {
          "prop": "name"
        },
        "value": {
          "prop": "value"
        },
        "accesskey": {
          "prop": "accessKey"
        }
      }
    },
    "children": [
      {
        "name": "iconLeft",
        "restrict": [
          "span"
        ],
        "description": "Icon displayed before the label",
        "renderWhen": "slotFilled",
        "slot": {
          "name": "iconLeft",
          "restrict": [
            "Icon"
          ]
        }
      },
      {
        "name": "label",
        "description": "Button text label",
        "restrict": [
          "span"
        ],
        "slot": {
          "name": "default"
        }
      },
      {
        "name": "iconRight",
        "restrict": [
          "span"
        ],
        "description": "Icon displayed after the label",
        "renderWhen": "slotFilled",
        "slot": {
          "name": "iconRight",
          "restrict": [
            "Icon"
          ]
        }
      }
    ]
  },
  "states": [
    {
      "name": "disabled",
      "type": "boolean",
      "aria": "aria-disabled",
      "description": "Whether the button is disabled"
    },
    {
      "name": "pressed",
      "type": "boolean",
      "aria": "aria-pressed",
      "description": "Whether the stateful button is pressed/selected"
    },
    {
      "name": "notSelected",
      "type": "boolean",
      "description": "Stateful button is in its unselected/default state"
    },
    {
      "name": "selectedClicked",
      "type": "boolean",
      "description": "Stateful button was selected and clicked again (pre-unselect hover state)"
    },
    {
      "name": "pressedDual",
      "type": "boolean",
      "aria": "aria-pressed",
      "description": "Dual-stateful button is pressed"
    }
  ],
  "accessibility": {
    "requirements": [
      {
        "id": "focus-visible",
        "description": "Button must have a visible focus indicator"
      },
      {
        "id": "accessible-label",
        "description": "Icon-only buttons must have an accessible label via aria-label or title"
      }
    ]
  },
  "behavior": "./button.behavior.ts"
}
