import { type IEventDetail, type IEventEmitter } from '@breadstone/mosaik-elements'; import { type ISlottable } from '../../../Behaviors/Slottable'; import { BannerGroupDismissBehavior } from '../../../Types/BannerGroupDismissBehavior'; import { BannerGroupStacking } from '../../../Types/BannerGroupStacking'; import { CustomElement } from '../../Abstracts/CustomElement'; import type { IBannerGroupElementProps } from './IBannerGroupElementProps'; /** Change event detail for `BannerGroupElement`. */ export interface IBannerGroupChangeEventDetail extends IEventDetail { index: number; previousIndex: number; length: number; } declare const BannerGroupElement_base: (abstract new (...args: Array) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor; /** * BannerGroup - A container component for managing and presenting multiple `Banner` instances. * * @description * The `BannerGroup` component arranges several `` elements either as a stack or a simple paged * (carousel‑like) sequence. When `maxLength` equals `1`, only a single banner is shown and keyboard navigation * allows users to move between items. When `maxLength` is greater than `1`, banners are presented in a stacked * layout. Looping navigation can be enabled via the `loop` property. (Persistence, dismissal strategies and depth * stacking enhancements can be incorporated in future iterations.) * * @name BannerGroup * @element mosaik-banner-group * @category Notifications * * @fires change {ActiveChangedEvent} - Fired when the active index changes. * * @slot - The default slot for banner items. * @slot prev - Slot for a custom previous control. * @slot next - Slot for a custom next control. * * @csspart root - The root wrapper part. * @csspart viewport - The viewport that contains the banners. * @csspart control-prev - The previous control wrapper. * @csspart control-next - The next control wrapper. * * @cssprop {String} --banner-group-gap - Gap between stacked banners. * @cssprop {String} --banner-group-transition-duration - Transition duration for paging. * * @dependency {BannerElement} - The Banner element. * * @example * Single-pager banner group with navigation: * ```html * * * * * * * * * * * * ``` * * @example * Stacked banner group showing multiple banners: * ```html * * * * * * * * * ``` * * @public */ export declare class BannerGroupElement extends BannerGroupElement_base implements IBannerGroupElementProps, ISlottable { private readonly _change; private readonly _keyboardController; private readonly _provider; private _eventSubscriptions; private _index; private _loop; private _maxLength; private _dismissBehavior; private _stacking; private _reverse; private _previousIndex; /** * @public */ constructor(); /** * Returns the `is` property. * The `is` property represents the natural name of this element. * * @public * @static * @readonly */ static get is(): string; /** * Gets or sets the `index` property representing the current active (start) index. * * @public * @attr */ get index(): number; set index(value: number); /** * Gets or sets the `loop` property enabling circular navigation. * * @public * @attr */ get loop(): boolean; set loop(value: boolean); /** * Gets or sets the `maxLength` property (1 = pager/carousel mode). * * @public * @attr */ get maxLength(): number; set maxLength(value: number); /** * Gets or sets the `dismissBehavior` property defining how dismissed banners are handled. * (Future extension point.) * * @public * @attr */ get dismissBehavior(): BannerGroupDismissBehavior; set dismissBehavior(value: BannerGroupDismissBehavior); /** * Gets or sets the `stacking` property controlling vertical or depth stacking. * * @public * @attr */ get stacking(): BannerGroupStacking; set stacking(value: BannerGroupStacking); /** * Gets or sets the `reverse` property displaying newest banners first when true. * * @public * @attr */ get reverse(): boolean; set reverse(value: boolean); /** * Returns the total number of banners. * * @public * @readonly */ get length(): number; /** * Returns whether previous navigation is possible. * * @public * @readonly */ get canPrev(): boolean; /** * Returns whether next navigation is possible. * * @public * @readonly */ get canNext(): boolean; /** * Fired when the active index changes. * * @public */ get change(): IEventEmitter; /** * @protected * @override */ onSlotChanges(): void; /** * @public * @override */ connectedCallback(): void; /** * Navigates to the previous banner. * * @public */ previous(): void; /** * Navigates to the next banner. * * @public */ next(): void; /** * Navigates to the first banner. * * @public */ first(): void; /** * Navigates to the last banner. * * @public */ last(): void; /** * Navigates to a specific index. * * @public */ goTo(i: number): void; protected onIndexPropertyChanged(): void; protected onMaxLengthPropertyChanged(): void; protected onReversePropertyChanged(): void; protected onStackingPropertyChanged(): void; protected onOrientationPropertyChanged(): void; private navigate; private emitChange; private clearSubscriptions; /** * Updates banner visibility, ordering and (optional) depth stacking transforms. * * @private */ private updateLayout; /** * Attaches a one‑time transition end handler to a leaving banner (pager mode) to finalize its hidden state. * @private */ private attachLeavingTransitionHandler; } /** @public */ export declare namespace BannerGroupElement { type Props = IBannerGroupElementProps; } /** @public */ declare global { interface HTMLElementTagNameMap { 'mosaik-banner-group': BannerGroupElement; } } export {}; //# sourceMappingURL=BannerGroupElement.d.ts.map