# ButtonProps

Source: /tuil/docs/reference/packages/ink/api/button-props
Locale: en

interface exported by @mwillbanks/tuil-ink.



{/* Generated by tooling/docs/generate-reference.ts. */}

## interface [#interface]

Public interface exported by `@mwillbanks/tuil-ink`.

```ts
export interface ButtonProps
  extends CommonComponentProps,
    SlottedComponentProps<
      ButtonSlots,
      { readonly focused: boolean; readonly disabled: boolean }
    > {
  readonly children?: ReactNode;
  readonly onPress?: () => void | Promise<void>;
  readonly command?: string;
  readonly hotkeys?: readonly string[];
  readonly autoFocus?: boolean;
  readonly prefix?: ReactNode;
  readonly suffix?: ReactNode;
  readonly focusOrder?: number;
  readonly focusScopeId?: string;
}
```

## Members [#members]

| Member         | Type                                                                                                                                                                                                                                                                                                                                                                                                                                       | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Related types                                                                                                                                                                                |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `children`     | `ReactNode`                                                                                                                                                                                                                                                                                                                                                                                                                                | No       | The `children` member uses the `ReactNode` contract.                                                                                                                                                                                                                                                                                                                                                                                                                                 | —                                                                                                                                                                                            |
| `onPress`      | `(() => void \| Promise<void>) \| undefined`                                                                                                                                                                                                                                                                                                                                                                                               | No       | The `onPress` member uses the `(() => void \| Promise<void>) \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                 | —                                                                                                                                                                                            |
| `command`      | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `command` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                        | —                                                                                                                                                                                            |
| `hotkeys`      | `readonly string[] \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                           | No       | The `hotkeys` member uses the `readonly string[] \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                             | —                                                                                                                                                                                            |
| `autoFocus`    | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `autoFocus` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                     | —                                                                                                                                                                                            |
| `prefix`       | `ReactNode`                                                                                                                                                                                                                                                                                                                                                                                                                                | No       | The `prefix` member uses the `ReactNode` contract.                                                                                                                                                                                                                                                                                                                                                                                                                                   | —                                                                                                                                                                                            |
| `suffix`       | `ReactNode`                                                                                                                                                                                                                                                                                                                                                                                                                                | No       | The `suffix` member uses the `ReactNode` contract.                                                                                                                                                                                                                                                                                                                                                                                                                                   | —                                                                                                                                                                                            |
| `focusOrder`   | `number \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `focusOrder` member uses the `number \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                     | —                                                                                                                                                                                            |
| `focusScopeId` | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `focusScopeId` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                   | —                                                                                                                                                                                            |
| `variant`      | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `variant` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                        | —                                                                                                                                                                                            |
| `size`         | `"sm" \| "md" \| "lg" \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                        | No       | The `size` member uses the `"sm" \| "md" \| "lg" \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                             | —                                                                                                                                                                                            |
| `unstyled`     | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `unstyled` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `className`    | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `className` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `layout`       | `Partial<Omit<LayoutNodeInput, "children" \| "id" \| "semantics">> \| undefined`                                                                                                                                                                                                                                                                                                                                                           | No       | The `layout` member uses the `Partial<Omit<LayoutNodeInput, "children" \| "id" \| "semantics">> \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                              | —                                                                                                                                                                                            |
| `id`           | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `id` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                             | —                                                                                                                                                                                            |
| `testId`       | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `testId` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                         | —                                                                                                                                                                                            |
| `role`         | `SemanticRole \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                | No       | The `role` member uses the `SemanticRole \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                     | [`SemanticRole`](/tuil/docs/reference/packages/core/api/semantic-role)                                                                                                                            |
| `label`        | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `label` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                          | —                                                                                                                                                                                            |
| `description`  | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `description` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                    | —                                                                                                                                                                                            |
| `disabled`     | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `disabled` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `readOnly`     | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `readOnly` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `selected`     | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `selected` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `checked`      | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `checked` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                       | —                                                                                                                                                                                            |
| `expanded`     | `boolean \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                     | No       | The `expanded` member uses the `boolean \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `valueText`    | `string \| undefined`                                                                                                                                                                                                                                                                                                                                                                                                                      | No       | The `valueText` member uses the `string \| undefined` contract.                                                                                                                                                                                                                                                                                                                                                                                                                      | —                                                                                                                                                                                            |
| `slots`        | `Partial<SlotComponents<&#123; root: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").BoxProps; label: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; prefix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; suffix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; &#125;>> \| undefined`                                                                  | No       | The `slots` member uses the `Partial<SlotComponents<&#123; root: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").BoxProps; label: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; prefix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; suffix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; &#125;>> \| undefined` contract.                                                                      | [`BoxProps`](/tuil/docs/reference/packages/ink/api/box-props), [`SlotComponents`](/tuil/docs/reference/packages/theme/api/slot-components), [`TextProps`](/tuil/docs/reference/packages/ink/api/text-props) |
| `slotProps`    | `Partial<SlotProps<&#123; root: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").BoxProps; label: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; prefix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; suffix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; &#125;, &#123; readonly focused: boolean; readonly disabled: boolean; &#125;>> \| undefined` | No       | The `slotProps` member uses the `Partial<SlotProps<&#123; root: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").BoxProps; label: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; prefix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; suffix: import(".bun/ink@7.1.1+fb5bfe3da9a88d96/node_modules/ink").TextProps; &#125;, &#123; readonly focused: boolean; readonly disabled: boolean; &#125;>> \| undefined` contract. | [`BoxProps`](/tuil/docs/reference/packages/ink/api/box-props), [`SlotProps`](/tuil/docs/reference/packages/theme/api/slot-props), [`TextProps`](/tuil/docs/reference/packages/ink/api/text-props)           |

## Parameters [#parameters]

This declaration has no public members.

## Returns [#returns]

This declaration does not return a value.

## Throws [#throws]

No thrown errors are documented for this declaration.

## Related types [#related-types]

* [`CommonComponentProps`](/tuil/docs/reference/packages/ink/api/common-component-props)

## Source [#source]

[View the secondary source reference](https://github.com/mwillbanks/tuil/blob/main/packages/ink/src/components.tsx)

## Package [#package]

[@mwillbanks/tuil-ink](/tuil/docs/reference/packages/ink)
