import { Component } from '../../../node_modules/vue'; import { TextColorVariant, ButtonVariant, PopoverPlacement, ButtonType, ColorVariant } from 'bootstrap-vue-next'; import { SizeWithMd } from '../../utils/size'; export interface ButtonIconProps { /** * Custom ID for the button element */ id?: string; /** * Icon component or name to display on the left side */ iconLeft?: string | Component; /** * Color variant for the left icon */ iconLeftVariant?: TextColorVariant; /** * Color variant for the left icon on hover */ iconLeftHoverVariant?: TextColorVariant; /** * Size of the left icon. Can be a preset ('2xs', 'xs', 'sm', 'md', 'lg', 'xl', '2xl') or a CSS value (e.g., '16px', '1rem'). */ iconLeftSize?: string; /** * Tooltip label for the left icon */ iconLeftLabel?: string; /** * Offset for the left icon tooltip */ iconLeftLabelOffset?: number; /** * Icon component or name to display on the right side */ iconRight?: string | Component; /** * Color variant for the right icon */ iconRightVariant?: TextColorVariant; /** * Color variant for the right icon on hover */ iconRightHoverVariant?: TextColorVariant; /** * Size of the right icon. Can be a preset ('2xs', 'xs', 'sm', 'md', 'lg', 'xl', '2xl') or a CSS value (e.g., '16px', '1rem'). */ iconRightSize?: string; /** * Tooltip label for the right icon */ iconRightLabel?: string; /** * Offset for the right icon tooltip */ iconRightLabelOffset?: number; /** * Icon component to display during loading state */ iconSpinner?: string | Component; /** * Hide the button label text */ hideLabel?: boolean; /** * Hide the button tooltip */ hideTooltip?: boolean; /** * Button label text */ label?: string; /** * Make the button square (equal width and height) */ square?: boolean; /** * Router link destination (vue-router) */ to?: any; /** * Button color variant */ variant?: ButtonVariant; /** * Button size */ size?: SizeWithMd; /** * Make the button full-width block element */ block?: boolean; /** * Apply pill styling (fully rounded corners) */ pill?: boolean; /** * Toggle pressed state for toggle buttons */ pressed?: boolean; /** * HTML tag to render the button as */ tag?: string; /** * Button type attribute */ type?: ButtonType; /** * Show loading spinner and disable interactions */ loading?: boolean; /** * Duration of the loading spinner animation */ loadingDuration?: string; /** * Text to display while loading */ loadingText?: string; /** * Custom tooltip text (defaults to label) */ tooltipLabel?: string; /** * Tooltip placement position */ tooltipPlacement?: PopoverPlacement; /** * Delay before showing/hiding the tooltip */ tooltipDelay?: { show: number; hide: number; }; /** * Force showing the tooltip even when label is visible */ showTooltipForce?: boolean; /** * Manual hover state control * * NOTE: this prop is part of the public API but is currently never consumed * by the component; hover is tracked internally via `currentHover`. Kept for * API compatibility; wiring it up is a follow-up. */ hover?: boolean; /** * Truncate label text with ellipsis when too long */ truncate?: boolean; /** * Counter badge value to display */ counter?: number; /** * Color variant for the counter badge */ counterVariant?: ColorVariant; /** * Custom styles for the counter badge */ counterStyle?: string | object; } declare var __VLS_12: {}, __VLS_19: { labelOrLoadingText: string | undefined; }, __VLS_33: {}; type __VLS_Slots = {} & { start?: (props: typeof __VLS_12) => any; } & { default?: (props: typeof __VLS_19) => any; } & { end?: (props: typeof __VLS_33) => any; }; declare const __VLS_base: import('../../../node_modules/vue').DefineComponent void; }, string, import('../../../node_modules/vue').PublicProps, Readonly & Readonly<{ "onClick:icon-right"?: ((...args: any[]) => any) | undefined; }>, { tag: string; type: ButtonType; square: boolean; iconLeftSize: string; iconLeftLabelOffset: number; iconRightSize: string; iconSpinner: string | Component; hideLabel: boolean; hideTooltip: boolean; loadingDuration: string; tooltipPlacement: PopoverPlacement; tooltipDelay: { show: number; hide: number; }; }, {}, {}, {}, string, import('../../../node_modules/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; }; };