diff --git a/frontend/src/components/Chat/MessageList.styles.ts b/frontend/src/components/Chat/MessageList.styles.ts
index 7273fa158..f650686e2 100644
--- a/frontend/src/components/Chat/MessageList.styles.ts
+++ b/frontend/src/components/Chat/MessageList.styles.ts
@@ -20,13 +20,15 @@ export const useMessageListStyles = makeStyles({
flexDirection: 'row-reverse',
},
messageContent: {
- backgroundColor: tokens.colorNeutralBackground3,
+ backgroundColor: tokens.colorNeutralBackground1,
+ border: `1px solid ${tokens.colorNeutralStroke2}`,
padding: tokens.spacingVerticalM,
borderRadius: tokens.borderRadiusMedium,
flex: 1,
},
userMessageContent: {
- backgroundColor: tokens.colorBrandBackground,
+ backgroundColor: tokens.colorBrandBackground2,
+ border: `1px solid ${tokens.colorBrandStroke2}`,
},
messageText: {
whiteSpace: 'pre-wrap',
diff --git a/frontend/src/components/Chat/MessageList.test.tsx b/frontend/src/components/Chat/MessageList.test.tsx
index fd68e15ab..58bf2d761 100644
--- a/frontend/src/components/Chat/MessageList.test.tsx
+++ b/frontend/src/components/Chat/MessageList.test.tsx
@@ -87,6 +87,50 @@ describe("MessageList", () => {
expect(screen.getByText("Assistant message test")).toBeInTheDocument();
});
+ describe("bubble class composition", () => {
+ // Regression guard for an earlier bug where the user-bubble background
+ // override silently lost to the assistant-bubble base style. The cause was
+ // string-concatenated class names — Griffel's atomic CSS doesn't dedupe
+ // conflicting properties unless mergeClasses is used. We assert here that
+ // the two bubble containers receive distinguishable className strings, so
+ // the override always has a chance to win.
+ it("renders user and assistant bubbles with distinct class signatures", () => {
+ render(
+