import { TNode, Value, Renderable } from '@tempots/dom'; /** * Visual variant for the Notice component, determining its color scheme * and semantic meaning. * * - `'info'` - Informational notice (blue tones) * - `'success'` - Success confirmation (green tones) * - `'warning'` - Warning or caution (yellow/amber tones) * - `'danger'` - Error or critical alert (red tones) */ export type NoticeVariant = 'info' | 'success' | 'warning' | 'danger'; /** * Visual tone for the Notice component, controlling its visual prominence. * * - `'subtle'` - Lighter background with softer colors * - `'prominent'` - Stronger background with higher contrast */ export type NoticeTone = 'subtle' | 'prominent'; /** * ARIA role for the Notice component, determining how assistive technologies * announce the notice. * * - `'status'` - Non-urgent information updates (used for info, success, warning) * - `'alert'` - Urgent, time-sensitive information (used for danger by default) */ export type NoticeRole = 'status' | 'alert'; /** * Configuration options for the {@link Notice} component. */ export type NoticeOptions = { /** * The semantic variant controlling color scheme and default icon. * @default 'info' */ variant?: Value; /** * The visual tone controlling background intensity. * @default 'subtle' */ tone?: Value; /** * ARIA role override. When not specified, defaults to `'alert'` for the * `'danger'` variant and `'status'` for all others. */ role?: Value; /** * Optional title text displayed prominently above the notice body content. */ title?: Value; /** * Icon identifier string (Iconify format), or `false` to suppress the icon entirely. * When `undefined`, a default icon is chosen based on the variant. */ icon?: Value; /** * Whether the notice can be dismissed by the user via a close button. * @default false */ closable?: Value; /** * Callback invoked when the notice is dismissed. If provided, the close * button is shown regardless of the `closable` setting. */ onClose?: () => void; /** * Additional CSS class name(s) to apply to the notice root element. */ class?: Value; }; /** * Renders a dismissible notice/alert banner with variant-driven styling, * an optional icon, title, and close button. Supports accessible ARIA roles * that automatically adapt based on the variant. * * When dismissed, the notice is hidden from the DOM and the optional * `onClose` callback is invoked. * * @param options - Configuration options for the notice. * @param children - Content nodes rendered inside the notice body. * @returns A renderable notice element. * * @example * ```typescript * // Simple informational notice * Notice( * { variant: 'info', title: 'Tip' }, * 'You can customize your dashboard in Settings.' * ) * * // Closable danger notice with callback * Notice( * { * variant: 'danger', * title: 'Error', * closable: true, * onClose: () => console.log('dismissed'), * }, * 'Something went wrong. Please try again.' * ) * * // Notice without icon * Notice( * { variant: 'warning', icon: false, tone: 'prominent' }, * 'This action cannot be undone.' * ) * ``` */ export declare function Notice({ variant, tone, role, title, icon, closable, onClose, class: cls, }: NoticeOptions, ...children: TNode[]): Renderable;