import type { ButtonHTMLAttributes } from 'vue';
import type { IconName } from '../Icon';
import type { SharedButtonType, SharedButtonAppearance, SharedButtonVariant, SharedButtonSize } from '../shared/button/types';
export type SbButtonProps = {
label?: string;
variant?: SharedButtonVariant;
size?: SharedButtonSize;
appearance?: SharedButtonAppearance;
/** [type docs](https://www.w3schools.com/tags/att_button_type.asp) */
type?: SharedButtonType;
isDisabled?: boolean;
isLoading?: boolean;
/** button takes the full width of the container */
isFullWidth?: boolean | null;
descriptionTextId?: string;
/** Icon name left of the label. You can use [lucide icons](https://lucide.dev/icons) or the the Storyblok icons */
icon?: IconName;
/** Icon name right of the label. You can use [lucide icons](https://lucide.dev/icons) or custom Storyblok icons */
iconRight?: IconName;
/** Align Button left to align with surrounding content. This is mainly for CLEAR button types, due to the lack of visible borders of button. */
alignLeft?: boolean;
/** Button is in pressed state */
isPressed?: boolean | undefined;
} & /* @vue-ignore */ ButtonHTMLAttributes;
type __VLS_Slots = {
/**
* Adds a custom label. This can be a component or text.
* Note: It is not intended that you add a custom icon here.
* For Icon buttons, please use the SbIconButton.
* For Accessibility puposes you will still need to add a descriptive label using the "label" prop.
*/
default(): unknown;
pin?: (props: {}) => unknown;
};
declare const __VLS_base: import("vue").DefineComponent any;
}, string, import("vue").PublicProps, Readonly & Readonly<{
onClick?: ((event: MouseEvent) => any) | undefined;
}>, {
label: string;
size: SharedButtonSize;
type: SharedButtonType;
variant: SharedButtonVariant;
appearance: SharedButtonAppearance;
icon: IconName;
isDisabled: boolean;
isLoading: boolean;
isPressed: boolean;
descriptionTextId: string;
iconRight: IconName;
isFullWidth: boolean | null;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots;
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_WithSlots = T & {
new (): {
$slots: S;
};
};