# button
The **Button** component includes capsule, circle, and text buttons.
> **NOTE**
>
> The APIs of this module are supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version.
## Child Components
Not supported
## Attributes
In addition to the [universal attributes](js-service-widget-common-attributes.md), the following attributes are supported.
| Name| Type| Default Value| Mandatory| Description|
| -------- | -------- | -------- | -------- | -------- |
| type | string | capsule | No| Type of the **Enter** key on the soft keyboard. The value cannot be dynamically updated. If this attribute is not set, a capsule-like button is displayed. Unlike the capsule button, the capsule-like button allows its corners to be configured using **border-radius**. Available button types are as follows:
- **capsule**: capsule button with fillets, background color, and text.
- **circle**: circle button that can accommodate icons.
- **text**: text button, which displays only text.|
| value | string | - | No| Text value of the button. This attribute is unavailable for circle buttons.|
| icon | string | - | No| Path of the button icon. The supported icon formats are JPG, PNG, and SVG.|
| placement | string | end | No| Position of the button icon in text. This attribute is valid only when **type** is not set. Available values are as follows:
- **start**: The button icon is at the beginning of the text.
- **end**: The button icon is at the end of the text.
- **top**: The button icon is at the top of the text.
- **bottom**: The button icon is at the bottom of the text.|
| waiting | boolean | false | No| Whether the button is in waiting state. The value **true** means that the button is in waiting state, and a loading animation is displayed on the left of the text.|
## Events
The [universal events](js-service-widget-common-events.md) are supported.
## Styles
In addition to the [universal styles](js-service-widget-common-styles.md), the following styles are supported.
| Name| Type| Default Value| Mandatory| Description|
| -------- | -------- | -------- | -------- | -------- |
| text-color | <color> | - | No| Text color of the button.|
| font-size | <length> | - | No| Font size of the button.|
| font-style | string | normal | No| Font style of the button.|
| font-weight | number \| string | normal | No| Font weight of a button. For details, see the **font-weight** style of the **[Text](js-service-widget-basic-text.md#styles)** component.|
| font-family | <string> | sans-serif | No| Font family, in which fonts are separated by commas (,). Each font is set using a font name or font family name. The first font in the family or the specified [custom font](js-service-widget-common-customizing-font.md) is used for the text.|
| icon-width | <length> | - | No| Width of the internal icon of a circle button. By default, the icon takes up the entire width of the button.
This style must be set when the icon uses an SVG image.|
| icon-height | <length> | - | No| Height of the internal icon of a circle button. By default, the icon takes up the entire height of the button.
This style must be set when the icon uses an SVG image.|
| radius | <length> | - | No| Radius of a circle button or fillet radius of a capsule button. For a circle button, this style takes precedence over **width** and **height** in the universal styles.|
> **NOTE**
> - For capsule buttons, border-related styles are not supported.
>
> - For circle buttons, text-related styles are not supported.
>
> - For text buttons, the text size is automatically adaptive, and **radius**, **width**, and **height** cannot be set. The **background-color** style is not supported when the background is completely transparent.
## Example
```html