diff --git a/jam-ui/src/components/client/chat/JKChatMessage.js b/jam-ui/src/components/client/chat/JKChatMessage.js new file mode 100644 index 000000000..4f35da668 --- /dev/null +++ b/jam-ui/src/components/client/chat/JKChatMessage.js @@ -0,0 +1,87 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { formatTimestamp } from '../../../utils/formatTimestamp'; + +/** + * Get initials for avatar from sender name + * Returns first letter of first and last name, or just first letter if single name + * @param {string} name - Sender name + * @returns {string} Initials (e.g., "JD" for "John Doe") + */ +const getInitials = (name) => { + if (!name) return '?'; + const parts = name.trim().split(' '); + if (parts.length === 1) return parts[0][0].toUpperCase(); + return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase(); +}; + +/** + * JKChatMessage - Individual message display component + * + * Displays a single chat message with avatar, sender name, message text, and timestamp. + * + * Features: + * - Avatar with initials (first + last name) + * - Sender name in bold + * - Relative timestamp (via formatTimestamp utility) + * - Message text with word wrapping + * - React.memo for performance optimization + */ +const JKChatMessage = ({ message }) => { + const { senderName, message: text, createdAt } = message; + + return ( +