/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { ButtonsClassStructure, WebMcpProps } from '@progress/kendo-react-common'; import { ButtonInterface } from './ButtonInterface'; import * as React from 'react'; /** * Represents the props of the [KendoReact Button component](https://www.telerik.com/kendo-react-ui/components/buttons/button). * Extends the [native button props](https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement). */ export interface ButtonProps extends ButtonInterface, React.ButtonHTMLAttributes { /** * @hidden */ children?: React.ReactNode; /** * Configures the `size` of the Button. See [Button Appearance](https://www.telerik.com/kendo-react-ui/components/buttons/button/appearance). * * @default undefined (theme-controlled) * * @example * ```tsx * * ``` */ size?: 'xs' | 'small' | 'medium' | 'large'; /** * Configures the `roundness` of the Button. See [Button Appearance](https://www.telerik.com/kendo-react-ui/components/buttons/button/appearance). * * The available options are: * - `small` * - `medium` * - `large` * - `full` * - `none` * * @default undefined (theme-controlled) * * @example * ```tsx * * ``` */ rounded?: 'small' | 'medium' | 'large' | 'full' | 'none'; /** * Sets the `title` HTML attribute of the Button. */ title?: string; /** * Configures the `fillMode` of the Button. See [Button Appearance](https://www.telerik.com/kendo-react-ui/components/buttons/button/appearance). * * @default undefined (theme-controlled) * * @example * ```tsx * * ``` */ fillMode?: 'solid' | 'outline' | 'flat' | 'link' | 'clear'; /** * Configures the `themeColor` of the Button. See [Button Appearance](https://www.telerik.com/kendo-react-ui/components/buttons/button/appearance). * * @default undefined (theme-controlled) * * @example * ```tsx * * ``` */ themeColor?: 'base' | 'primary' | 'secondary' | 'tertiary' | 'info' | 'success' | 'warning' | 'error' | 'inverse'; /** * Sets an SVG icon or custom element before the content of the Button. For the custom component, consider using * [Phrasing content](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#phrasing_content). * Do not use [Interactive content](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#interactive_content). */ startIcon?: React.ReactNode; /** * Sets an SVG icon or custom element after the content of the Button. For the custom component, consider using * [Phrasing content](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#phrasing_content). * Do not use [Interactive content](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#interactive_content). */ endIcon?: React.ReactNode; /** * The unstyled option classes. */ unstyled?: ButtonsClassStructure; /** * @hidden * * @remarks * This property is related to accessibility. */ ariaPressed?: boolean; /** * Configures the `size` of the SVG icon that displays inside the Button. * * @default undefined (theme-controlled) * * @example * ```tsx * * ``` */ iconSize?: 'small' | 'medium' | 'large'; /** * Enables Web MCP tool registration for this Button. */ webMcp?: boolean | WebMcpProps; } /** * @hidden */ export interface ButtonHandle { /** * Gets the DOM element of the Button component. */ element: HTMLButtonElement | null; /** * Returns `true` when the component is togglable and selected ([see example](https://www.telerik.com/kendo-react-ui/components/buttons/button/toggleable)). * Otherwise, returns `false`. */ selected: boolean; } export declare const Button: React.ForwardRefExoticComponent>;