<a href="/wiki/display/CPDesign/AI+Chat+Bubble">AI Chat Bubble</a>

Component Owner: BTP

Designer Responsible: Milanov, Kalin

Specification Status: IN REVIEW

Table of Contents

Overview

All of the conversation style

Look and Feel

&#x3C;p&#x3E;&#x3C;div&#x3E; &#x3C;div&#x3E;Morning Horizon&#x3C;/div&#x3E; &#x3C;div&#x3E;Evening Horizon&#x3C;/div&#x3E; &#x3C;div&#x3E;Horizon HCB&#x3C;/div&#x3E; &#x3C;div&#x3E;Horizon HCW&#x3C;/div&#x3E; &#x3C;/div&#x3E; &#x3C;div&#x3E; &#x3C;div&#x3E; &#x3C;picture&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;/content/dam/sapcom/design-system/btp/patterns/generative-ai/ai-chat-bubble/media1_1669414767521ee0133c26daae0dbb80b1ad3d2ba.png?width=2000&#x26;format=webply&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;./media_1669414767521ee0133c26daae0dbb80b1ad3d2ba.png?width=750&#x26;format=webply&#x26;optimize=medium&#x22;&#x3E; &#x3C;source type=&#x22;image/png&#x22; srcset=&#x22;./media_1669414767521ee0133c26daae0dbb80b1ad3d2ba.png?width=2000&#x26;format=png&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;img loading=&#x22;lazy&#x22; alt=&#x22;&#x22; src=&#x22;&#x3C;a href=&#x22;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media%5C_1669414767521ee0133c26daae0dbb80b1ad3d2ba.png?width=750%5C&#x26;format=png%5C&#x26;optimize=medium&#x22;&#x3E;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media_1669414767521ee0133c26daae0dbb80b1ad3d2ba.png?width=750&#x26;format=png&#x26;optimize=medium&#x3C;/a&#x3E;&#x22; width=&#x22;640&#x22; height=&#x22;2090&#x22;&#x3E; &#x3C;/picture&#x3E; &#x3C;/div&#x3E; &#x3C;div&#x3E; &#x3C;picture&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;/content/dam/sapcom/design-system/btp/patterns/generative-ai/ai-chat-bubble/media1_17c56ddad53fb3187e8562431aa1446aba5939a26.png?width=2000&#x26;format=webply&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;./media_17c56ddad53fb3187e8562431aa1446aba5939a26.png?width=750&#x26;format=webply&#x26;optimize=medium&#x22;&#x3E; &#x3C;source type=&#x22;image/png&#x22; srcset=&#x22;./media_17c56ddad53fb3187e8562431aa1446aba5939a26.png?width=2000&#x26;format=png&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;img loading=&#x22;lazy&#x22; alt=&#x22;&#x22; src=&#x22;&#x3C;a href=&#x22;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media%5C_17c56ddad53fb3187e8562431aa1446aba5939a26.png?width=750%5C&#x26;format=png%5C&#x26;optimize=medium&#x22;&#x3E;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media_17c56ddad53fb3187e8562431aa1446aba5939a26.png?width=750&#x26;format=png&#x26;optimize=medium&#x3C;/a&#x3E;&#x22; width=&#x22;640&#x22; height=&#x22;2090&#x22;&#x3E; &#x3C;/picture&#x3E; &#x3C;/div&#x3E; &#x3C;div&#x3E; &#x3C;picture&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;/content/dam/sapcom/design-system/btp/patterns/generative-ai/ai-chat-bubble/media1_1d3808d1fd8f6eb34404b5c2d43776fb05995d200.png?width=2000&#x26;format=webply&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;./media_1d3808d1fd8f6eb34404b5c2d43776fb05995d200.png?width=750&#x26;format=webply&#x26;optimize=medium&#x22;&#x3E; &#x3C;source type=&#x22;image/png&#x22; srcset=&#x22;./media_1d3808d1fd8f6eb34404b5c2d43776fb05995d200.png?width=2000&#x26;format=png&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;img loading=&#x22;lazy&#x22; alt=&#x22;&#x22; src=&#x22;&#x3C;a href=&#x22;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media%5C_1d3808d1fd8f6eb34404b5c2d43776fb05995d200.png?width=750%5C&#x26;format=png%5C&#x26;optimize=medium&#x22;&#x3E;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media_1d3808d1fd8f6eb34404b5c2d43776fb05995d200.png?width=750&#x26;format=png&#x26;optimize=medium&#x3C;/a&#x3E;&#x22; width=&#x22;640&#x22; height=&#x22;2090&#x22;&#x3E; &#x3C;/picture&#x3E; &#x3C;/div&#x3E; &#x3C;div&#x3E; &#x3C;picture&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;/content/dam/sapcom/design-system/btp/patterns/generative-ai/ai-chat-bubble/media1_1dd82487ad94392095dc42918ea39cb2aa30a8094.png?width=2000&#x26;format=webply&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;source type=&#x22;image/webp&#x22; srcset=&#x22;./media_1dd82487ad94392095dc42918ea39cb2aa30a8094.png?width=750&#x26;format=webply&#x26;optimize=medium&#x22;&#x3E; &#x3C;source type=&#x22;image/png&#x22; srcset=&#x22;./media_1dd82487ad94392095dc42918ea39cb2aa30a8094.png?width=2000&#x26;format=png&#x26;optimize=medium&#x22; media=&#x22;(min-width: 600px)&#x22;&#x3E; &#x3C;img loading=&#x22;lazy&#x22; alt=&#x22;&#x22; src=&#x22;&#x3C;a href=&#x22;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media%5C_1dd82487ad94392095dc42918ea39cb2aa30a8094.png?width=750%5C&#x26;format=png%5C&#x26;optimize=medium&#x22;&#x3E;https://www.sap.com/design-system/btp/patterns/generative-ai/ai-chat-bubble/media_1dd82487ad94392095dc42918ea39cb2aa30a8094.png?width=750&#x26;format=png&#x26;optimize=medium&#x3C;/a&#x3E;&#x22; width=&#x22;640&#x22; height=&#x22;2090&#x22;&#x3E; &#x3C;/picture&#x3E; &#x3C;/div&#x3E; &#x3C;/div&#x3E;&#x3C;/p&#x3E;

Anatomy

<div> <div></div> <div>UI Element</div> <div>Description</div> </div> <div> <div>A</div> <div>Chat Bubble</div> <div>The chant bubble container and AI request or response.</div> </div> <div> <div>B</div> <div>Generated AI Object Title</div> <div>The title of the generated AI Object. Optional. See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fdisplay%2FCPDesign%2FTitle%2BBar">Title Bar</a> for full specifications.</div> </div> <div> <div>C</div> <div>Generated AI Object</div> <div>The container of the generated AI object.</div> </div> <div> <div>D</div> <div>Chat Byline / Status</div> <div>A secondary information or message associated with the chat bubble.</div> </div>

Desktop Specification (Compact Mode)

Request

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>A</div> <div>Chat Bubble Container</div> <div> <p>padding-left: 4rem;<br>min-height: 2.375rem;</p> <p>gap: 0.25rem;</p> </div> </div> <div> <div>A1</div> <div>Chat Bubble</div> <div> <p>border-radius: 0.5rem 0.5rem 0rem 0.5rem;</p> <p><strong>Small Size</strong><br>display: flex;<br>max-width: 15rem;<br>padding: 0.5rem 0.75rem;<br>flex-direction: column;<br>align-items: flex-end;</p> <p><strong>Medium Size</strong><br>max-width: 25rem;<br>padding: 0.5rem 0.75rem;</p> <p><strong>Large Size</strong><br>max-width: 40rem;<br>padding: 0.5rem 1rem;</p> <p><strong>Normal State</strong><br>background: var(--sapAIRequestColor);</p> <p><strong>Focus State</strong><br>outline: solid var(--sapContent_FocusWidth) var(–sapAIContent_FocusColor);</p> </div> </div> <div> <div>A2</div> <div>Chat Text</div> <div> <p>color: var(--sapTextColor);<br>font-family: var(--sapFontFamily);<br>font-size: var(--sapFontSize);<br>line-height: 1.25rem;<br>text-align: left;</p> <p><strong>Large Size</strong><br>font-size: var(--sapFontLargeSize);<br>line-height: 1.375rem;</p> </div> </div> <div> <div>D</div> <div>Chat Byline</div> <div> <p>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2698914064">Label (Horizon)</a> for full specifications.</p> <p><strong>Over-Style</strong><br>font-size: 0.0625rem;</p> </div> </div>

Error State

The error state specification only contained the deltas from the regular state of the request.

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>A1</div> <div>Chat Bubble</div> <div>border: 1px solid var(--sapErrorBorderColor);<br>background: var(--sapErrorBackground);</div> </div> <div> <div>D</div> <div>Chat Byline</div> <div> <p>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2698914064">Label (Horizon)</a> for full specifications.<br>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2823064653">Message and Status Icons (Horizon)</a> for full specifications.</p> <p><strong>Over-Style</strong><br>font-size: 0.0625rem;</p> <p><strong>Icon</strong><br>width: 0.75rem;<br>height: 0.75rem;</p> </div> </div>

Response

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>A</div> <div>Chat Bubble Container</div> <div> <p>padding-right: 4rem;<br>min-height: 2.375rem;</p> <p>gap: 0.25rem;</p> <p><strong>Full Width</strong><br>padding-right: 0;</p> </div> </div> <div> <div>A1</div> <div>Chat Bubble</div> <div> <p>border-radius: 0.5rem 0.5rem 0.5rem 0rem;</p> <p><strong>Small Size</strong><br>display: flex;<br>max-width: 15rem; // max-width: none; (<strong>Full Width</strong>)<br>padding: 0.5rem 0.75rem;<br>flex-direction: column;<br>align-items: flex-start;</p> <p><strong>Medium Size</strong><br>max-width: 25rem; // max-width: none; (<strong>Full Width</strong>)<br>padding: 0.5rem 0.75rem;</p> <p><strong>Large Size</strong><br>max-width: 40rem; // max-width: none; (<strong>Full Width</strong>)<br>padding: 0.5rem 1rem;</p> <p><strong>Normal State</strong><br>background: var(--sapAIResponseColor);</p> <p><strong>Focus State</strong><br>outline: solid var(--sapContent_FocusWidth) var(–sapAIContent_FocusColor);</p> </div> </div> <div> <div>A2</div> <div>Chat Text</div> <div>Identical to <a href="https%3A%2F%2Fwww.sap.com%2Fdesign-system%2Fbtp%2Fpatterns%2Fgenerative-ai%2Fai-chat-bubble%2Fstyle%23AIChatBubble-Request">Request</a> above.</div> </div> <div> <div>D</div> <div>Chat Byline</div> <div>Identical to <a href="https%3A%2F%2Fwww.sap.com%2Fdesign-system%2Fbtp%2Fpatterns%2Fgenerative-ai%2Fai-chat-bubble%2Fstyle%23AIChatBubble-Request">Request</a> above.</div> </div>

Generated Object

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>C</div> <div>Generated AI Object</div> <div> <p>border-radius: 0.25rem;</p> <p>background: var(–sapGroup_ContentBackground);<br>border: solid 0.0625rem var(--sapAIGroup_ContentBorderColor);</p> <p><strong>Hover State</strong><br>border: solid 0.0625rem var(--sapAIGroup_Hover_ContentBorderColor);</p> <p><strong>Hover State (when Drag Enabled)</strong><br>border: solid 0.0625rem var(--sapGroup_ContentBackground);<br>outline: solid 0.125rem var(–sapAIContent_FocusColor);<br>cursor: grab;</p> </div> </div> <div> <div></div> <div>Drag Enabled Generated AI Object</div> <div>For the Drag Enabled Generated AI Object, please follow the <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fdisplay%2FCPDesign%2FAI%2BDrag%2Band%2BDrop%23AIDragandDrop-DraggingfromtheAIContainer">AI Drag and Drop</a> specification.</div> </div>

Error Sate

The error state specification only contained the deltas from the regular state of the request.

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>A1</div> <div>Chat Bubble</div> <div>border: 1px solid var(--sapErrorBorderColor);<br>background: var(--sapErrorBackground);</div> </div> <div> <div>D</div> <div>Chat Byline</div> <div> <p>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2698914064">Label (Horizon)</a> for full specifications.<br>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2823064653">Message and Status Icons (Horizon)</a> for full specifications.</p> <p><strong>Over-Style</strong><br>font-size: 0.0625rem;</p> <p><strong>Icon</strong><br>width: 0.75rem;<br>height: 0.75rem;</p> </div> </div>

Busy State

<div> <div></div> <div>UI Element</div> <div>All Horizon Themes</div> </div> <div> <div>A</div> <div>Chat Bubble Container</div> <div>padding-right: 0;<br>min-height: 2.375rem;</div> </div> <div> <div>A1</div> <div>Chat Bubble</div> <div> <p>Identical to <a href="https%3A%2F%2Fwww.sap.com%2Fdesign-system%2Fbtp%2Fpatterns%2Fgenerative-ai%2Fai-chat-bubble%2Fstyle%23AIChatBubble-Response">Response</a> above.</p> <p>gap: 0.5rem;</p> <p><strong>Large Sizes</strong><br>padding: 0.5rem 0.75rem;</p> </div> </div> <div> <div>A2</div> <div>Chat Text</div> <div> <p>See <a href="https%3A%2F%2Fwww.sap.com%2Fwiki%2Fpages%2Fviewpage.action%3FpageId%3D2698914064">Label (Horizon)</a> for full specification.</p> <p>font-size: sapFontSmallSize;</p> </div> </div> <div> <div>D</div> <div>Chat Byline</div> <div>Identical to <a href="https%3A%2F%2Fwww.sap.com%2Fdesign-system%2Fbtp%2Fpatterns%2Fgenerative-ai%2Fai-chat-bubble%2Fstyle%23AIChatBubble-Request">Request</a> above.</div> </div>

Tablet Specification (Cozy Mode)

Identical to desktop specification.

Phone Specification (Cozy Mode)

Identical to tablet specification

Keyboard Handling

The keyboard handling for the AI Chat Bubble is based on the keyboard handling of the List, Button, and Toolbar components. Refer to Fiori Keyboard Interaction for full specifications about each of these components.

The AI Chat Bubbles behave similarly to List Items. In some cases, the bubbles provide embedded actions. Navigating between container items (incl. AI Chat Bubble) is covered in the AI Container specifications.

Keyboard Interaction:

When the AI Chat Bubble is focused the following keyboard interactions are possible.

When the focus is on the generated object

Screen Reader

The screen reader for the AI Chat Bubble is based on the screen reader of the Feed and Notes. Refer to Fiori Screen Reader Specification for full specifications.

In Error State