/** * @license * Copyright (c) 2021 - 2026 Vaadin Ltd. * This program is available under Apache License Version 2.0, available at https://vaadin.com/license/ */ import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js'; import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js'; import { type MessageAttachmentClickEvent, MessageMixin } from './vaadin-message-mixin.js'; export { MessageAttachment, MessageAttachmentClickEvent } from './vaadin-message-mixin.js'; export type MessageEventMap = HTMLElementEventMap & { 'attachment-click': MessageAttachmentClickEvent; }; /** * `` is a Web Component for showing a single message with an author, message and time. * * ```html * * There is no real ending. It's just the place where you stop the story. * * ``` * * ### Styling * * The following shadow DOM parts are available for styling: * * Part name | Description * --------------------|---------------- * `name` | Author's name * `time` | When the message was posted * `content` | The message itself as a slotted content * `attachments` | Container for the attachments * `attachment` | Individual attachment button * `attachment-image` | Image attachment button (in addition to `attachment`) * `attachment-file` | File attachment button (in addition to `attachment`) * `attachment-preview`| Image preview inside an image attachment * `attachment-icon` | File icon inside a file attachment * `attachment-name` | File name inside a file attachment * * The following state attributes are available for styling: * * Attribute | Description * -------------|------------- * `focus-ring` | Set when the message is focused using the keyboard. * `focused` | Set when the message is focused. * * The following custom CSS properties are available for styling: * * Custom CSS property | * :------------------------------------------- | * `--vaadin-message-attachment-background` | * `--vaadin-message-attachment-border-color` | * `--vaadin-message-attachment-border-radius` | * `--vaadin-message-attachment-border-width` | * `--vaadin-message-attachment-font-size` | * `--vaadin-message-attachment-font-weight` | * `--vaadin-message-attachment-gap` | * `--vaadin-message-attachment-line-height` | * `--vaadin-message-attachment-padding` | * `--vaadin-message-attachment-text-color` | * `--vaadin-message-font-size` | * `--vaadin-message-font-weight` | * `--vaadin-message-gap` | * `--vaadin-message-header-line-height` | * `--vaadin-message-line-height` | * `--vaadin-message-name-color` | * `--vaadin-message-name-font-size` | * `--vaadin-message-name-font-weight` | * `--vaadin-message-padding` | * `--vaadin-message-text-color` | * `--vaadin-message-time-color` | * `--vaadin-message-time-font-size` | * `--vaadin-message-time-font-weight` | * * See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation. * * @fires {CustomEvent} attachment-click - Fired when an attachment is clicked. */ declare class Message extends MessageMixin(ThemableMixin(ElementMixin(HTMLElement))) { addEventListener( type: K, listener: (this: Message, ev: MessageEventMap[K]) => void, options?: AddEventListenerOptions | boolean, ): void; removeEventListener( type: K, listener: (this: Message, ev: MessageEventMap[K]) => void, options?: EventListenerOptions | boolean, ): void; } declare global { interface HTMLElementTagNameMap { 'vaadin-message': Message; } } export { Message };