From 62b26d14e0e1900a25e00cc129e783baec10d06c Mon Sep 17 00:00:00 2001 From: Eric Olkowski Date: Tue, 10 Feb 2026 10:01:56 -0500 Subject: [PATCH 1/2] feat(Messages): added right-aligned and no metadata variants --- packages/module/src/Message/Message.scss | 9 +++++ packages/module/src/Message/Message.test.tsx | 21 +++++++++++ packages/module/src/Message/Message.tsx | 37 ++++++++++++-------- 3 files changed, 53 insertions(+), 14 deletions(-) diff --git a/packages/module/src/Message/Message.scss b/packages/module/src/Message/Message.scss index 0266f22cd..3b086dcf6 100644 --- a/packages/module/src/Message/Message.scss +++ b/packages/module/src/Message/Message.scss @@ -134,6 +134,15 @@ .footnotes { background-color: var(--pf-t--global--background--color--tertiary--default); } + + // Right/End-aligned messages + &.pf-m-end { + flex-direction: row-reverse; + + .pf-chatbot__message-contents { + align-items: flex-end; + } + } } // Attachments diff --git a/packages/module/src/Message/Message.test.tsx b/packages/module/src/Message/Message.test.tsx index 01b7703ad..3e7fe1adf 100644 --- a/packages/module/src/Message/Message.test.tsx +++ b/packages/module/src/Message/Message.test.tsx @@ -255,6 +255,17 @@ describe('Message', () => { }) ).not.toBeInTheDocument(); }); + + it('Does not render metadata when isMetadataVisible is false', () => { + render( + + ); + + expect(screen.queryByText('Bot')).not.toBeInTheDocument(); + expect(screen.queryByText('AI')).not.toBeInTheDocument(); + expect(screen.queryByText('2 hours ago')).not.toBeInTheDocument(); + }); + it('should render attachments', () => { render(); expect(screen.getByText('Hi')).toBeTruthy(); @@ -1330,4 +1341,14 @@ describe('Message', () => { ); expect(container.querySelector('.pf-m-outline')).toBeFalsy(); }); + + it('Renders without pf-m-end class by default', () => { + render(); + expect(screen.getByRole('region')).not.toHaveClass('pf-m-end'); + }); + + it('Renders with pf-m-end class when alignment="end"', () => { + render(); + expect(screen.getByRole('region')).toHaveClass('pf-m-end'); + }); }); diff --git a/packages/module/src/Message/Message.tsx b/packages/module/src/Message/Message.tsx index 90777d81a..47bc69533 100644 --- a/packages/module/src/Message/Message.tsx +++ b/packages/module/src/Message/Message.tsx @@ -35,6 +35,7 @@ import ToolResponse, { ToolResponseProps } from '../ToolResponse'; import DeepThinking, { DeepThinkingProps } from '../DeepThinking'; import ToolCall, { ToolCallProps } from '../ToolCall'; import MarkdownContent from '../MarkdownContent'; +import { css } from '@patternfly/react-styles'; export interface MessageAttachment { /** Name of file attached to the message */ @@ -73,6 +74,10 @@ export interface MessageProps extends Omit, 'role'> { id?: string; /** Role of the user sending the message */ role: 'user' | 'bot'; + /** Whether the message is aligned at the horizontal start or end of the message container. */ + alignment?: 'start' | 'end'; + /** Flag indicating whether message metadata (user name and timestamp) are visible. */ + isMetadataVisible?: boolean; /** Message content */ content?: string; /** Extra Message content */ @@ -197,6 +202,8 @@ export interface MessageProps extends Omit, 'role'> { export const MessageBase: FunctionComponent = ({ children, role, + alignment = 'start', + isMetadataVisible = true, content, extraContent, name, @@ -314,7 +321,7 @@ export const MessageBase: FunctionComponent = ({ return (
= ({ /> )}
-
- {name && ( - - - - )} - {role === 'bot' && ( - - )} - {timestamp} -
+ {isMetadataVisible && ( +
+ {name && ( + + + + )} + {role === 'bot' && ( + + )} + {timestamp} +
+ )}
{children ? ( <>{children} From cbf3d9681d7b56055659ca09c8c9230cd5117a39 Mon Sep 17 00:00:00 2001 From: Eric Olkowski Date: Tue, 10 Feb 2026 10:08:11 -0500 Subject: [PATCH 2/2] Updated examples --- .../chatbot/examples/Messages/BotMessage.tsx | 7 +++++++ .../chatbot/examples/Messages/UserMessage.tsx | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx index ba27a65f8..58a740180 100644 --- a/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +++ b/packages/module/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx @@ -319,6 +319,13 @@ _Italic text, formatted with single underscores_ hasRoundAvatar={false} /> +