import type { ScalarIconComponent } from '@scalar/icons/types'; import type { Component } from 'vue'; import type { LoadingState } from '../ScalarLoading/types'; /** Styles for the ScalarButton component */ export type ButtonVariant = 'solid' | 'outlined' | 'ghost' | 'gradient' | 'danger'; /** Sizes for the ScalarButton component */ export type ButtonSize = 'xs' | 'sm' | 'md'; /** Utility type for class names */ export type ClassList = string | string[]; /** Props for the ScalarButton component */ export type ScalarButtonProps = { /** * Overrides the rendered element * * @default 'button' * * @example * * I'm a link! * */ is?: string | Component; /** * The variant of the button * * @default 'solid' */ variant?: ButtonVariant; /** * The size of the button * * @default 'md' */ size?: ButtonSize; /** * Visually disables the button * * Note: This does not prevent interaction. *@see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-disabled */ disabled?: boolean; /** * The icon to display in the button * * Use a component from the `@scalar/icons` package to display an icon. * * @example * import { ScalarIconAcorn } from '@scalar/icons' * ... * * It's an acorn * */ icon?: ScalarIconComponent; /** * The loading state of the button * * @see ScalarLoading * * @example * import { ScalarButton, useLoadingState } from '@scalar/components' * ... * const loader = useLoadingState() * loader.start() * ... * * It's loading... * */ loader?: LoadingState; }; //# sourceMappingURL=types.d.ts.map