import 'iconify-icon'; import type { PropertyValues } from 'lit'; import { LuxenElement } from '../../shared/luxen-element.js'; export type AlertVariant = 'info' | 'success' | 'warning' | 'danger'; /** * @summary A callout box that highlights contextual information with a semantic color and a leading icon. * @customElement l-alert * * @event hide - Emitted when a dismissible alert is about to close. Cancelable — call `event.preventDefault()` to keep it open. * @event after-hide - Emitted after the dismiss animation completes and the alert is removed from the DOM. Not cancelable. * * @cssproperty [--gap=0.75rem] - Gap between the icon, content, and close button. * @cssproperty [--padding=1rem] - Inner padding. * @cssproperty [--border-radius=8px] - Corner radius. * * @cssClass .l-alert-icon - The leading icon, colored by variant (auto-injected). * @cssClass .l-alert-content - Wrapper the authored children are moved into; stacks them vertically (auto-injected). * @cssClass .l-alert-title - Optional bold heading placed above the body content. Use a real heading element (e.g. `

`) when the alert is a section callout so it is reachable by heading navigation. * * @example * ```html * * Heads up * This action cannot be undone. * * ``` */ export declare class Alert extends LuxenElement { createRenderRoot(): this; /** Semantic variant: `info`, `success`, `warning`, or `danger`. Default is neutral. */ variant?: AlertVariant; /** Iconify icon name (e.g. `lucide:bell`) overriding the variant's default icon. */ icon?: string; /** Hide the leading icon entirely. */ withoutIcon: boolean; /** Show a close button that dismisses the alert when clicked. */ dismissible: boolean; private _localize; private _dismissTimer?; private _observer; connectedCallback(): void; disconnectedCallback(): void; updated(_changed: PropertyValues): void; /** Idempotently reconcile the injected icon, content wrapper, and close button. */ private _sync; private _iconName; private _syncIcon; /** * Move the authored children into a `.l-alert-content` wrapper so they stack * as one column regardless of node type. A wrapper (rather than placing bare * children directly) is required because text nodes — a plain string body — * cannot be targeted by CSS, so they would otherwise escape the layout. */ private _syncContent; private _syncClose; private _dismiss; private _animateOut; } declare global { interface HTMLElementTagNameMap { 'l-alert': Alert; } } //# sourceMappingURL=alert.d.ts.map