import { LitElement } from 'lit';
import '../dropdown/Dropdown.js';
import '../dropdown/DropdownItem.js';
import '../dropdown/DropdownMenu.js';
import './ActionItem.js';
type Position = 'top' | 'bottom';
type Alignment = 'default' | 'start' | 'center' | 'end';
declare const ActionBar_base: (new (...args: any[]) => import("../../util/RovingTabindexMixin.js").RovingTabindexInterface) & (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
/**
 * A persistent container for primary, secondary, tertiary, and destructive actions
 * within an interface, typically anchored to the bottom of a view.
 *
 * Uses a two-zone layout: destructive actions on the left (start zone),
 * main actions on the right (end zone). Both zones maintain their position
 * even when the other zone is empty (BSP-18087).
 *
 * **Positioning:** Uses `margin-top: auto` to push to bottom of flex/grid parents.
 * In block layout parents, the bar sits after content (a console warning is emitted).
 *
 * **Overflow:** When items don't fit, the least important overflow into a "More" dropdown.
 * Items are auto-sorted by variant priority (tertiary → secondary → primary).
 * With `compact`, compactable items progressively hide labels one-by-one before overflowing.
 *
 * @element btu-action-bar
 *
 * @fires {CustomEvent} btu-action-bar-ready - Fired after first render and initialization
 * @fires {CustomEvent<{label: string}>} btu-action-item-click - Fired when an action item is clicked (bubbles from btu-action-item)
 *
 * @slot - One or more `btu-action-item` elements
 *
 * @cssprop --action-bar-gap - Gap between items (default: 0.75rem)
 * @cssprop --action-bar-padding - Bar padding (default: 1.5rem)
 * @cssprop --action-bar-background - Background color (default: white)
 * @cssprop --action-bar-border-color - Border color (default: gray-200)
 * @cssprop --action-bar-z-index - Z-index (default: 100)
 *
 * @example
 * ```html
 * <!-- Basic: destructive left, actions right -->
 * <btu-action-bar label="Content actions">
 *   <btu-action-item zone="start" variant="destructive" label="Delete" symbol="trash-2"></btu-action-item>
 *   <btu-action-item zone="end" variant="secondary" label="Cancel"></btu-action-item>
 *   <btu-action-item zone="end" variant="primary" label="Save Changes"></btu-action-item>
 * </btu-action-bar>
 * ```
 *
 * @example
 * ```html
 * <!-- Parent must be flex/grid for bottom-anchoring -->
 * <div style="display: flex; flex-direction: column; min-height: 100vh;">
 *   <main>Content here</main>
 *   <btu-action-bar label="Page actions">
 *     <btu-action-item variant="primary" label="Save"></btu-action-item>
 *   </btu-action-bar>
 * </div>
 * ```
 */
export default class ActionBar extends ActionBar_base {
    /**
     * Bar position: 'top' or 'bottom' (default).
     * @attr
     */
    position: Position;
    /**
     * Enables CSS sticky positioning. When combined with position='top',
     * the bar sticks to the top of the scroll container. With position='bottom'
     * (default), it sticks to the bottom.
     * @attr
     */
    sticky: boolean;
    /**
     * Content alignment: 'default' (two-zone), 'start', 'center', 'end'.
     * Non-default alignments disable two-zone layout.
     * @attr item-alignment
     */
    alignment: Alignment;
    /**
     * Adds a box-shadow to the bar.
     * @attr
     */
    shadow: boolean;
    /**
     * Accessible label for the toolbar region.
     * @attr
     */
    label: string;
    /**
     * Enables progressive label compacting. When space shrinks, items marked
     * `compactable` (with icons) have their labels hidden one-by-one
     * from least to most important before items overflow into "More".
     * @attr
     */
    compact: boolean;
    /** @internal */
    private initialClasses;
    /** @internal */
    private _items;
    /** @internal */
    private _startZone;
    /** @internal */
    private _endZone;
    /** @internal */
    private _moreDropdown;
    /** @internal */
    private _ro;
    /** @internal */
    private _rafId;
    /** @internal - Cached expanded widths per item */
    private _expandedWidths;
    /** @internal - Cached compacted widths per item */
    private _compactedWidths;
    /** @internal */
    private _hasOverflow;
    /** @internal - Tracks which individual items are currently compacted */
    private _compactedItems;
    /** @internal */
    private _boundKeydown;
    createRenderRoot(): this;
    /** @internal Override: return visible item buttons + More dropdown button in visual order */
    _getRovingTargets(): HTMLElement[];
    connectedCallback(): void;
    willUpdate(): void;
    firstUpdated(): void;
    disconnectedCallback(): void;
    /** @internal Determine which zone an item belongs to */
    private _getItemZone;
    /** @internal Get all visible (non-overflow) items in order */
    private _getVisibleItems;
    /** @internal Get end-zone items only */
    private _getEndZoneItems;
    /** @internal Sort end-zone items by variant importance */
    private _sortEndZoneItems;
    /** @internal Cache item widths, optionally in compacted (icon-only) state */
    private _cacheWidths;
    /** @internal Sum widths of visible items using per-item compact state */
    private _calcTotalWidth;
    /** @internal Set up ResizeObserver for overflow detection */
    private _setupOverflowDetection;
    /** @internal rAF-debounced recalculation */
    private _scheduleRecalc;
    /** @internal Recalculate which items overflow */
    private _recalculateOverflow;
    /** @internal Create the overflow "More" dropdown */
    private _createOverflowDropdown;
    /** @internal Populate overflow dropdown menu */
    private _updateOverflowDropdown;
    /** @internal Handle click on overflow dropdown item */
    private _handleOverflowSelect;
    /** @internal Update roving tabindex and configure compact state on visible items */
    private _updateTabindex;
    /** @internal Reactive recalculation when properties change */
    updated(changedProperties: Map<string, unknown>): void;
    /** @internal Keyboard handler for toolbar navigation */
    private _handleKeydown;
    render(): import("lit-html").TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'btu-action-bar': ActionBar;
    }
}
export {};
//# sourceMappingURL=ActionBar.d.ts.map