+
+
+```tsx
+import { useState, useEffect } from "react";
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatAIAssistantChat } from "@cometchat/chat-uikit-react";
+
+function AIAssistantCustomImage() {
+ const [agent, setAgent] = useState
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+```tsx
+import { useEffect, useRef, useState } from "react";
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import {
+ CometChatConversations,
+ CometChatAvatar,
+ useLoggedInUser,
+} from "@cometchat/chat-uikit-react";
+
+function TypingAwareConversations() {
+ const [isTyping, setIsTyping] = useState(false);
+ const typingObjRef = useRef
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```css
+.cometchat-conversations .cometchat-conversations__item-title,
+.cometchat-conversations .cometchat-conversations__header-title,
+.cometchat-conversations .cometchat-avatar__text,
+.cometchat-conversations .cometchat-conversations__item-unread-badge,
+.cometchat-conversations .cometchat-conversations__item-subtitle-text {
+ font-family: "SF Pro";
+}
+
+.cometchat-conversations .cometchat-conversations__header {
+ background: #fef8f8;
+ border-bottom: 2px solid #f4b6b8;
+}
+
+.cometchat-conversations .cometchat-avatar {
+ background: #FAAA75;
+}
+
+.cometchat-conversations .cometchat-status-indicator {
+ min-width: 10px;
+ height: 10px;
+}
+
+.cometchat-conversations .cometchat-conversations__item-unread-badge {
+ background: #F76809;
+}
+
+.cometchat-conversations .cometchat-conversations__item-receipt--read {
+ background: #FAAA75;
+}
+```
+
+### Customization Matrix
+
+| What to change | Where | Property/API | Example |
+| --- | --- | --- | --- |
+| Override behavior on user interaction | Component props | `on
+
+
+Customized:
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatAvatar, CometChatIncomingCall } from "@cometchat/chat-uikit-react";
+
+function CustomLeadingIncoming() {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatIncomingCall } from "@cometchat/chat-uikit-react";
+
+function CustomTitleIncoming() {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatAvatar, CometChatIncomingCall } from "@cometchat/chat-uikit-react";
+
+function CustomItemViewIncoming() {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatMessageComposer } from "@cometchat/chat-uikit-react";
+
+function ComposerCustomAttachments({ chatUser }: { chatUser: CometChat.User }) {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatMessageComposer, CometChatButton } from "@cometchat/chat-uikit-react";
+
+function ComposerCustomAuxiliary({ chatUser }: { chatUser: CometChat.User }) {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatMessageComposer, CometChatButton } from "@cometchat/chat-uikit-react";
+
+function ComposerCustomSend({ chatUser }: { chatUser: CometChat.User }) {
+ return (
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatMessageHeader, CometChatAvatar } from "@cometchat/chat-uikit-react";
+
+function CustomItemViewHeader({ user }: { user: CometChat.User }) {
+ return (
+
+
+
+
+
+
+```tsx
+import { CometChat } from "@cometchat/chat-sdk-javascript";
+import { CometChatMessageHeader } from "@cometchat/chat-uikit-react";
+
+function CustomSubtitleHeader({ group }: { group: CometChat.Group }) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Customized:
+
+
+
+
+
+
+
+
+
+
-### Incoming Bubble Background
+***
+### Styling
+
+#### Outgoing Message Bubbles
+
+**Selectors:**
```css
-.cometchat-message-bubble__content--incoming {
- background: #f0f0f0;
+.cometchat .cometchat-message-bubble-outgoing .cometchat-message-bubble__body
+```
+
+**Tokens used:**
+
+| Token | Controls |
+| --- | --- |
+| `--cometchat-primary-color` | Outgoing bubble background |
+| `--cometchat-extended-primary-color-900` | Outgoing bubble shade |
+
+The customized chat interface is displayed below.
+
+
+
+
+
+Use the following code to achieve the customization shown above.
+
+```css title="App.css"
+.cometchat .cometchat-message-bubble-outgoing .cometchat-message-bubble__body {
+ --cometchat-primary-color: #f76808;
+ --cometchat-extended-primary-color-900: #fbaa75;
}
```
-### Outgoing Bubble Background
+**Expected result:** All outgoing message bubbles change from purple to orange (#f76808) with a lighter orange shade (#fbaa75).
+
+***
+#### Incoming Message Bubbles
+
+**Selectors:**
```css
-.cometchat-message-bubble__content--outgoing {
- background: #6852d6;
+.cometchat .cometchat-message-bubble-incoming .cometchat-message-bubble__body
+```
+
+**Tokens used:**
+
+| Token | Controls |
+| --- | --- |
+| `--cometchat-neutral-color-300` | Incoming bubble background |
+
+The customized chat interface is displayed below.
+
+
+
+
+
+Use the following code to achieve the customization shown above.
+
+```css title="App.css"
+.cometchat .cometchat-message-bubble-incoming .cometchat-message-bubble__body {
+ --cometchat-neutral-color-300: #f76808;
}
```
-### Using CSS Variables (Recommended)
+**Expected result:** All incoming message bubbles change from white/light to orange (#f76808).
-Override the tokens on `.cometchat` — this is the simplest and most reliable approach:
+***
+#### All Message Bubbles
+
+**Selectors:**
```css
-.cometchat {
- /* Incoming bubble background */
- --cometchat-neutral-color-300: #e3f2fd;
+.cometchat .cometchat-message-bubble .cometchat-message-bubble__body
+```
+
+**Tokens used:**
+
+| Token | Controls |
+| --- | --- |
+| `--cometchat-neutral-color-300` | Incoming bubble background |
+| `--cometchat-primary-color` | Outgoing bubble background |
+| `--cometchat-extended-primary-color-900` | Outgoing bubble shade |
+
+The customized chat interface is displayed below.
- /* Outgoing bubble background (uses primary color) */
- --cometchat-primary-color: #1976d2;
+
+
+
+
+Use the following code to achieve the customization shown above.
+
+```css title="App.css"
+.cometchat .cometchat-message-bubble .cometchat-message-bubble__body {
+ --cometchat-neutral-color-300: #f76808;
+ --cometchat-primary-color: #f76808;
+ --cometchat-extended-primary-color-900: #fbaa75;
}
```
-
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+
+
+
+The customized chat interface is displayed below.
+
+
+
+
+
+**Complete CSS:**
+
+