import { EventEmitter } from '../../stencil-public-runtime'; import type { ChoiceBackground } from '../../utils/choice-list'; import type { ControlInsetDepth } from '../../utils/control-text'; import type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types'; export type ButtonFilledIntent = 'neutral' | 'brand' | 'ai' | 'negative' | 'warning' | 'caution' | 'positive' | 'guide' | 'walkthrough'; export type ButtonFilledContrast = 'bold' | 'strong' | 'medium' | 'faint'; export type ButtonFilledBackground = ChoiceBackground; export type ButtonFilledVariant = ButtonVariant; export type ButtonFilledSize = ButtonSize; export type ButtonFilledWidth = ButtonWidth; export type ButtonFilledPopup = ButtonPopup; export declare class ButtonFilled { el: HTMLElement; /** * Content layout. Default is label-only; pass `icon` for icon-only chrome * (nav / tool rails) or `icon-label` for leading icon + text. */ variant: ButtonFilledVariant; /** Control density (height, padding, icon, type). */ size: ButtonFilledSize; /** Use reduced outer geometry when nested inside a control of the same size. */ isInset: boolean; /** Single removes 4px overall; double removes 8px overall (xs stays single). */ insetDepth: ControlInsetDepth; /** Width fit — hug content (default) or fill the parent. */ width: ButtonFilledWidth; /** Visible text for `label` / `icon-label` variants. */ label: string; /** Icon name passed to for `icon` / `icon-label` variants. */ icon: string; /** Semantic colour intent. */ intent: ButtonFilledIntent; /** * Background fill weight. Foreground uses the paired contrast token: * bold → faint, strong → medium, medium → strong, faint → bold. */ contrast: ButtonFilledContrast; /** Show a 1px secondary inset border. */ hasBorder: boolean; /** * Actual parent surface context for the optional inset border color only. * Omit on primary and secondary surfaces. */ background: ButtonFilledBackground | undefined; /** Use the half-radius treatment instead of the default control radius. */ rounded: boolean; /** * Scale down during a physical pointer press. * Disable when an owning composite requires fixed child or background geometry. */ pressScale: boolean; /** Disables interaction. */ isInactive: boolean; /** Shows an inline loader and prevents interaction without applying inactive opacity. */ isLoading: boolean; /** Native button type. */ type: 'button' | 'submit' | 'reset'; /** Accessible name override. Required for icon-only buttons. */ ariaLabel: string | null; /** ID of the popup this button controls. */ controls: string | undefined; /** * Controlled open state of the popup this button triggers. Holds the pressed * wash for the popup's rendered lifecycle. ButtonFilled has no selected state, * so an open popup never promotes to an active treatment. */ expanded: boolean | undefined; /** Popup type exposed to assistive technology. */ haspopup: ButtonFilledPopup | undefined; /** * This action *has* a menu: implies `aria-haspopup="menu"` and adds the trailing * chevron that carries the affordance. * * Only `label` and `icon-label` are supported. A filled button is never the * overflow / more-options control — that role belongs to ButtonUnfilled with an * `Ellipses` glyph, which conveys the menu without a chevron. * * Use `haspopup` directly for non-menu popups. */ hasMenu: boolean; dsClick: EventEmitter; private buttonEl; setFocus(): Promise; private handleClick; private get resolvedHaspopup(); private get accessibleName(); private get doubleInset(); render(): any; } //# sourceMappingURL=ButtonFilled.d.ts.map