')
+ .dxButton({
+ icon: 'copy',
+ stylingMode: 'text',
+ hint: 'Copy',
+ onClick: ({ component }) => {
+ navigator.clipboard.writeText($textElement.text());
+ component.option({ icon: 'check' });
+ setTimeout(() => {
+ component.option({ icon: 'copy' });
+ }, 5000);
+ },
+ })
+ .appendTo($buttonContainer);
+
+ $('
')
+ .dxButton({
+ icon: 'refresh',
+ stylingMode: 'text',
+ hint: 'Regenerate',
+ onClick: () => {
+ updateLastMessage();
+ regenerate();
+ },
+ })
+ .appendTo($buttonContainer);
+
+ $buttonContainer.appendTo(element);
+ },
+ }).dxChat('instance');
+});
diff --git a/apps/demos/Demos/Chat/AIAndChatbotIntegration/jQuery/styles.css b/apps/demos/Demos/Chat/AIAndChatbotIntegration/jQuery/styles.css
new file mode 100644
index 00000000000..4d6ace3854f
--- /dev/null
+++ b/apps/demos/Demos/Chat/AIAndChatbotIntegration/jQuery/styles.css
@@ -0,0 +1,60 @@
+.demo-container {
+ display: flex;
+ justify-content: center;
+}
+
+.dx-chat {
+ max-width: 900px;
+}
+
+.dx-chat-messagelist-empty-image {
+ display: none;
+}
+
+.dx-chat-messagelist-empty-message {
+ font-size: var(--dx-font-size-heading-5);
+}
+
+.dx-chat-messagebubble-content,
+.dx-chat-messagebubble-text {
+ display: flex;
+ flex-direction: column;
+}
+
+.dx-bubble-button-container {
+ display: none;
+}
+
+.dx-button {
+ display: inline-block;
+ color: var(--dx-color-icon);
+}
+
+.dx-chat-messagegroup-alignment-start:last-child .dx-chat-messagebubble:last-child .dx-bubble-button-container {
+ display: flex;
+ gap: 4px;
+ margin-top: 8px;
+}
+
+.dx-chat-messagebubble-content > div > p:first-child {
+ margin-top: 0;
+}
+
+.dx-chat-messagebubble-content > div > p:last-child {
+ margin-bottom: 0;
+}
+
+.dx-chat-messagebubble-content ol,
+.dx-chat-messagebubble-content ul {
+ white-space: normal;
+}
+
+.dx-chat-messagebubble-content h1,
+.dx-chat-messagebubble-content h2,
+.dx-chat-messagebubble-content h3,
+.dx-chat-messagebubble-content h4,
+.dx-chat-messagebubble-content h5,
+.dx-chat-messagebubble-content h6 {
+ font-size: revert;
+ font-weight: revert;
+}
diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json
index d5bcf0617f8..5586b5df605 100644
--- a/apps/demos/menuMeta.json
+++ b/apps/demos/menuMeta.json
@@ -2076,6 +2076,19 @@
]
}
]
+ },
+ {
+ "Name": "AI and Chatbot Integration",
+ "Equivalents": "AI, Chatbot, Assistant",
+ "Demos": [
+ {
+ "Title": "AI and Chatbot Integration",
+ "Name": "AIAndChatbotIntegration",
+ "Widget": "Chat",
+ "DemoType": "Web",
+ "Badge": "New"
+ }
+ ]
}
]
},
diff --git a/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (fluent.blue.light).png b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (fluent.blue.light).png
new file mode 100644
index 00000000000..beca57f943a
Binary files /dev/null and b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (fluent.blue.light).png differ
diff --git a/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (material.blue.light).png b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (material.blue.light).png
new file mode 100644
index 00000000000..0dbaf25b2d3
Binary files /dev/null and b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration (material.blue.light).png differ
diff --git a/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration.png b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration.png
new file mode 100644
index 00000000000..1d9dcd6a8c2
Binary files /dev/null and b/apps/demos/testing/etalons/Chat-AIAndChatbotIntegration.png differ