import { EventEmitter } from '../../stencil-public-runtime'; import type { ControlInsetDepth } from '../../utils/control-text'; import type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types'; export type ButtonUnfilledBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'translucent' | 'inverted' | 'media' | 'always-dark'; export type ButtonUnfilledVariant = ButtonVariant; export type ButtonUnfilledSize = ButtonSize; export type ButtonUnfilledWidth = ButtonWidth; export type ButtonUnfilledPopup = ButtonPopup; export declare class ButtonUnfilled { 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: ButtonUnfilledVariant; /** Control density (height, padding, icon, type). */ size: ButtonUnfilledSize; /** 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: ButtonUnfilledWidth; /** Visible text for `label` / `icon-label` variants. */ label: string; /** Icon name passed to for `icon` / `icon-label` variants. */ icon: string; /** * Owner-controlled visual emphasis inside a composite. This does not add * toggle semantics and does not emit dsChange. */ isActive: boolean; /** * When active, render the selected interaction fill. * Default `true` for general UI. Shell chrome (nav / tool rails) should pass * `false` so selection is foreground-only (primary color, no fill). */ activeFill: boolean; /** Show a 1px secondary inset border. Default on; shell chrome can pass `false`. */ hasBorder: boolean; /** 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; /** Show a notification dot at the top-right of the icon zone (icon variant only). */ dot: 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'; /** Actual parent surface context. Omit on primary and secondary surfaces. */ background: ButtonUnfilledBackground | undefined; /** Accessible name override. Required for icon-only buttons. */ ariaLabel: string | null; controls: string | undefined; /** * Controlled disclosure or popup state forwarded to `aria-expanded`. * Popup triggers hold only the pressed wash while open; their resting * foreground is unchanged. Ordinary disclosures remain visually neutral. */ expanded: boolean | undefined; haspopup: ButtonUnfilledPopup | undefined; /** * Controlled state for a genuine toggle button. Adds aria-pressed, promotes * active styling, and makes activation emit dsChange with the requested state. */ pressed: boolean | undefined; /** * Collapse the visible label and chevron to an icon-only control when the * owning `ds-table` caption is narrower than 900px. The trigger omits those * parts rather than clipping them. */ collapseLabel: boolean; /** * Mark the button as a Menu trigger. Implies `aria-haspopup="menu"` and covers * both menu-button shapes: * * - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries * the affordance. * - `icon` — the button *is* a menu. No chevron is added, so the glyph must * convey the menu on its own. Use `Ellipses` for generic more-options; * use a specific icon when the menu has a named purpose, such as * `Table` for Customize table. * * Use `haspopup` directly for non-menu popups. */ hasMenu: boolean; /** * Native `tabindex` for roving keyboard groups in shell chrome. * Omit for the default button tab stop (`0`). */ focusTabIndex?: number; dsClick: EventEmitter; dsChange: EventEmitter; private captionCompact; private buttonEl; private captionCompactDisconnect; private hasLoaded; componentDidLoad(): void; connectedCallback(): void; disconnectedCallback(): void; onCollapseLabelChange(): void; setFocus(): Promise; private handleClick; private get captionIconOnly(); private get visualVariant(); private get showDot(); private syncCaptionCompactObserver; private disconnectCaptionCompactObserver; private get resolvedHaspopup(); private get doubleInset(); /** Only popup triggers hold a pressed visual while expanded. */ private get expandedPopup(); private get visuallyActive(); /** Knock-out ring: selected fill → active wash; otherwise surface token. */ private get dotRing(); private get accessibleName(); render(): any; } //# sourceMappingURL=ButtonUnfilled.d.ts.map