import type React from 'react'; import { MessageType } from 'tuikit-atomicx-react/chat'; import { transformTextWithEmojiKeyToName } from '../../../../utils/emoji'; import { markdownToPlainText } from '../../../../utils/markdown'; import { HighlightText } from '../HighlightText'; import styles from './SearchMessageItem.module.scss'; import type { MessageInfo } from 'tuikit-atomicx-react/chat'; interface SearchMessageItemProps { message: MessageInfo; /** Keyword to highlight within text content. */ keyword?: string; } /** * Renders a single search-result message's content preview. * * `MessageInfo` is a discriminated union keyed by `messageType`, so accessing * `message.messagePayload` inside each `case` narrows the payload to its exact * shape — no type assertions needed. Do NOT destructure messagePayload before * the switch, or narrowing is lost. */ export function SearchMessageItem({ message, keyword = '' }: SearchMessageItemProps): React.ReactNode { switch (message.messageType) { case MessageType.Text: return (