Skip to main content
Version: 5.21.0

Components and flows (ChatComponents, ChatFlows)

About this reference

Below are the most frequently used ChatComponents and ChatFlows fields, grouped by visual chat elements with screenshots. The full list of public classes, properties, and enums is in Dokka documentation.

Specific flows (Search, Gallery, Files, etc.) and the basic concept of customization levels are on separate pages: Flows, Introduction to the design system. Some ChatConfig parameters in 5.x are controlled by server configuration — see Known limitations.

Style map by flow​

A brief overview of the root fields through which the chat's appearance is configured. A detailed mapping of UI elements to fields is in the UI–theme field mapping section.

Root pathWhat it stylesStyle class
chatFlow.navigationBarChat toolbar: title, subtitle, icons, status bar colorNavigationBarStyle
chatFlow.inputViewInput field and surrounding buttons (attach, voice, send)InputViewStyle
chatFlow.incomeMessages / outcomeMessages / errorMessagesStyle of incoming, outgoing, and error messagesMessagesConfig
chatFlow.systemMessagesSystem messages (operator join/leave, requests)SystemMessagesConfig
chatFlow.systemMessages.ratingStyleTexts for invitation and thanks for rating, star rendering (5-star rating)RatingStyle
chatFlow.welcomeScreenStyleWelcome screen when history is emptyWelcomeScreenStyle
chatFlow.quoteViewQuote in the input field and inside messagesQuoteViewStyle
chatFlow.surveyStyleSurvey icon appearance: stars (optionsSurvey*) and like/dislike thumbs (binarySurvey*)SurveyStyle
chatFlow.buttonSurveyButton / buttonSurveyQuestionButton surveyTextMessageStyle
chatFlow.messagePopupMenuStyleContext menu on long-press of a messageMessagePopupMenuStyle
chatFlow.permissionDescriptionPopupStyleWindow describing requested permissionsPermissionDescriptionPopupStyle
chatFlow.smallPushes / chatFlow.bigPushesChat push notificationsPushesChatStyle
chatFlow.scrollDownButton / chatFlow.scrollUpButtonMessage list scroll buttonsImagesChatStyle
chatFlow.chipChip plates (dates, quick replies)TextMessageStyle
chatFlow.loaderProgress bar on chat startLoaderChatStyle
chatFlow.retryChatInitButton / errorScreenMessage / errorScreenImageChat initialization error screenTextButtonChatStyle, TextMessageStyle, ImagesChatStyle
chatComponents.balloonComponentStyle of popup balloon messages (Snackbar)BalloonsChatStyle, BalloonComponent
chatComponents.pushesComponentBasic push notification styling (color, icon, title)PushesComponent
searchFlow.searchBar / searchBar.searchResultsStyleMessage search and results listSearchChatComponent, SearchResultsStyle
imageFlow.imagePlaceholderResIdPlaceholder for an unavailable imageImageFlow

Quickstart​

A minimal customization example — set brand colors and assemble a theme:

val brandColors = ChatColors(
toolbar = R.color.your_brand_main,
incomingBubble = R.color.your_incoming_bubble,
outgoingBubble = R.color.your_outgoing_bubble,
)

val brandTheme = ChatTheme(
ChatFlows(
ChatComponents(
context = applicationContext,
colors = brandColors,
)
)
)

Ready-made scenarios are in the Common customization scenarios section. The complete UI element to theme field mapping is in the section below.

UI–theme field mapping​

The screenshots below map the visual chat elements to ChatComponents and ChatFlows fields.

Main chat elements​

Main chat elements

№ElementPath in themesStyle / component class
1.1Toolbar titlechatFlow.navigationBar.toolbarHeaderTextNavigationBarStyle
1.2Toolbar subtitlechatFlow.navigationBar.toolbarSubtitleTextNavigationBarStyle
1.3Formatted title (Spannable)chatFlow.navigationBar.toolbarSpannableHeaderTextNavigationBarStyle
1.4Toolbar search iconsearchFlow.searchBar.searchIconSearchChatComponent
1.5Navigation bar background colorchatFlow.navigationBar.backgroundColorNavigationBarStyle
1.6Status bar colorchatFlow.navigationBar.statusBarColorNavigationBarStyle
1.7Toolbar shadowchatFlow.navigationBar.visibleShadow (Boolean)NavigationBarStyle
1.8Toolbar text centeringchatFlow.navigationBar.centerToolbarText (Boolean)NavigationBarStyle
1.9"Back" button enabledchatFlow.navigationBar.closeButtonEnabled (Boolean)NavigationBarStyle
1.10Subtitle visibilitychatFlow.navigationBar.chatSubtitleEnabled (Boolean)NavigationBarStyle
1.11"Back" button stylechatFlow.navigationBar.backButtonNavigationBarStyle
1.12Search button stylechatFlow.navigationBar.searchButtonNavigationBarStyle
2.1Image in a messagechatFlow.incomeMessages.image / outcomeMessages.imageImageMessageStyle, ImageComponent
2.2Chat bubble (general style)chatFlow.incomeMessages.chatBubble / outcomeMessages.chatBubbleBubblesChatStyle, BubbleComponent
2.3Message status iconschatFlow.outcomeMessages.statusIconsMessageStatusesStyle, MessageStatusesComponent
3Time in a message with an imagechatFlow.outcomeMessages.imagesTimeTextMessagesConfig, TextComponent
4System message stylechatFlow.systemMessages.systemMessageTextSystemMessagesConfig, TextComponent
5Outgoing message style (container)chatFlow.outcomeMessagesMessagesConfig
6Operator avatarimageFlowImageFlow, ImageComponent
7Incoming message style (container)chatFlow.incomeMessagesMessagesConfig
8Attach buttonchatFlow.inputView.attachButtonInputViewStyle, IconButtonComponent
9Message input fieldchatFlow.inputView.textInputInputViewStyle, InputTextComponent
10.1Voice recording buttonchatFlow.inputView.voiceButtonInputViewStyle, IconButtonComponent
10.2Send buttonchatFlow.inputView.sendButtonInputViewStyle, IconButtonComponent

Behavior on message selection​

Behavior on message selection

№ElementPath in themesStyle class
1"Copy" buttonchatFlow.navigationBar.copyButtonNavigationBarStyle
2"Reply with quote" buttonchatFlow.navigationBar.replyButtonNavigationBarStyle
3Inverted "Back" buttonchatFlow.navigationBar.invertedBackButtonNavigationBarStyle
4Background color under the selected messagechatFlow.highlightingColor (@ColorRes Int)ChatFlow

Message search field​

Message search field

№ElementPath in themesStyle class
1Toolbar search buttonchatFlow.navigationBar.searchButtonNavigationBarStyle
2Loader color during searchsearchFlow.loaderStyleLoaderChatStyle
3Search input field stylesearchFlow.searchBar.textInputSearchChatComponent

Found messages list​

Found messages list

№ElementPath in themesStyle class
1Input field clear buttonsearchFlow.clearInputBtn (see also SearchChatComponent.clearSearch)ImagesChatStyle
2.1Message author text colorsearchFlow.searchBar.searchResultsStyle.searchResultsItemNameTextColorSearchResultsStyle
2.2Message text colorsearchFlow.searchBar.searchResultsStyle.searchResultsItemMessageTextColorSearchResultsStyle
2.3Date text colorsearchFlow.searchBar.searchResultsStyle.searchResultsItemDateTextColorSearchResultsStyle
2.4Divider color between resultssearchFlow.searchBar.searchResultsStyle.searchResultsDividerColorSearchResultsStyle
2.5"Right arrow" iconsearchFlow.searchBar.searchResultsStyle.searchResultsItemRightArrowDrawableSearchResultsStyle
2.6"Right arrow" icon colorsearchFlow.searchBar.searchResultsStyle.searchResultsItemRightArrowTintColorSearchResultsStyle
2.7Image when no resultssearchFlow.searchBar.searchResultsStyle.searchResultsNoItemsImageDrawableSearchResultsStyle
2.8Text color when no resultssearchFlow.searchBar.searchResultsStyle.searchResultsNoItemsTextColorSearchResultsStyle
2.9Search results background colorsearchFlow.searchBar.searchResultsStyle.backgroundColorSearchResultsStyle

Popup message

ElementPath in themesStyle class
Popup message stylechatComponents.balloonComponent or direct assignment of BalloonsChatStyleBalloonsChatStyle, BalloonComponent
When it applies

The style only works if the system can show a Snackbar attached to a view.

Push notifications​

Compact push Expanded push

ElementPath in themesStyle class
Compact push notification stylechatFlow.smallPushesPushesChatStyle
Expanded push notification stylechatFlow.bigPushesPushesChatStyle
Push background colorchatComponents.pushesComponent.pushBackgroundColor (@ColorRes)PushesComponent
Push text colorchatComponents.pushesComponent.textColor (@ColorRes)PushesComponent
Push iconchatComponents.pushesComponent.icon (@DrawableRes)PushesComponent
Default push titlechatComponents.pushesComponent.pushesDefaultTitle (@StringRes)PushesComponent
Quick reply from a push (inline reply)

The input field and send button in the system notification are provided by Android (RemoteInput). The SDK does not provide public fields for separate styling of this screen: the background color, icon, and text are inherited from PushesComponent.

Dialog termination request​

Dialog termination request

№ElementPath in themesStyle class
1Request textchatFlow.systemMessages.requestToResolveSystemMessagesConfig, TextComponent
2Positive response buttonchatFlow.systemMessages.approveRequestSystemMessagesConfig, TextComponent
3Negative response buttonchatFlow.systemMessages.denyRequestSystemMessagesConfig, TextComponent

Operator feedback (stars)​

Operator feedback

Texts and the star counter — via chatFlow.systemMessages.ratingStyle (RatingStyle). Star icons (empty / filled) — via chatFlow.surveyStyle.optionsSurvey* (SurveyStyle).

№ElementPath in themesStyle class
1Rate invitation textchatFlow.systemMessages.ratingStyle.askForRateTextRatingStyle, TextComponent
2Thanks-for-rating textchatFlow.systemMessages.ratingStyle.thanksForRateTextRatingStyle, TextComponent
3Header above the rate invitationchatFlow.systemMessages.ratingStyle.ratingHeaderTextRatingStyle, TextComponent
4"N" text (selected stars count)chatFlow.systemMessages.ratingStyle.rateStarsCountRatingStyle, TextComponent
5"of" textchatFlow.systemMessages.ratingStyle.rateFromRatingStyle, TextComponent
6"5" text (max stars)chatFlow.systemMessages.ratingStyle.rateTotalStarsCountRatingStyle, TextComponent
7Star image style (background, size)chatFlow.systemMessages.ratingStyle.rateStarImageStyleRatingStyle, ImagesChatStyle
8Empty star iconchatFlow.surveyStyle.optionsSurveyUnselectedSurveyStyle, ImagesChatStyle
9Filled star iconchatFlow.surveyStyle.optionsSurveySelectedSurveyStyle, ImagesChatStyle

Survey on dialog completion (thumbs)​

Survey on dialog completion

The binary "like / dislike" survey is styled via chatFlow.surveyStyle (the binarySurvey* fields). Invitation and thanks texts are shared with the star rating and are set via chatFlow.systemMessages.ratingStyle.

№ElementPath in themesStyle class
1Like (thumbs up), unselected statechatFlow.surveyStyle.binarySurveyLikeUnselectedSurveyStyle, ImagesChatStyle
2Like (thumbs up), selected statechatFlow.surveyStyle.binarySurveyLikeSelectedSurveyStyle, ImagesChatStyle
3Dislike (thumbs down), unselected statechatFlow.surveyStyle.binarySurveyDislikeUnselectedSurveyStyle, ImagesChatStyle
4Dislike (thumbs down), selected statechatFlow.surveyStyle.binarySurveyDislikeSelectedSurveyStyle, ImagesChatStyle
5Icon color after the survey is completedchatFlow.surveyStyle.surveyFinalColorFilterResId (@ColorRes)SurveyStyle
6Survey behavior type (MESSAGE / SYSTEM)chatFlow.surveyStyle.typeSurveyMessageType
7Invitation and thanks textschatFlow.systemMessages.ratingStyle.askForRateText / thanksForRateTextRatingStyle, TextComponent

Button survey​

Button survey

№ElementPath in themesStyle class
1Survey button stylechatFlow.buttonSurveyButtonTextMessageStyle, IconButtonChatStyle
2Question text stylechatFlow.buttonSurveyQuestionTextMessageStyle, TextComponent

Quick replies in the chat (chip plates)​

Quick replies in the chat

ElementPath in themesStyle class
Quick reply button text stylechatFlow.chipTextMessageStyle, TextComponent
Quick replies chip text colorchatColors.quickRepliesTextChatColors
Chip background tintchatColors.quickReplyButtonBackgroundTintChatColors
Chip background imagechatImages.quickReplyButtonBackgroundChatImages

Outgoing file preview​

Outgoing file preview

№ElementPath in themesStyle class
1Quote headerchatFlow.quoteView.quoteHeaderChatViewTextQuoteViewStyle, TextComponent
2Quote textchatFlow.quoteView.quoteMessageChatViewTextQuoteViewStyle, TextComponent
3Quote "clear" buttonchatFlow.quoteView.quoteClearIconButtonQuoteViewStyle, IconButtonChatStyle

Voice file preview​

Voice file preview

№ElementPath in themesStyle class
1Play/pause buttonchatFlow.quotePlayPauseButton (and quotePlayPausePlayingStateButton for the active state)ImagesChatStyle, IconButtonChatStyle
2Voice message durationchatFlow.quoteView.quoteDurationChatViewTextQuoteViewStyle, TextComponent

Messages with a file​

Outgoing file message Incoming file message — downloading Incoming file message — ready

The file message style is configured via the FileMessageStyle type, available at chatFlow.incomeMessages.file / chatFlow.outcomeMessages.file.

№ElementPath in themesStyle class
1File element background colorchatFlow.outcomeMessages.file.backgroundColorFileMessageStyle, ImageComponent
2Inner paddingschatFlow.outcomeMessages.file.paddingFileMessageStyle
3Loader stylechatFlow.outcomeMessages.file.loaderLoaderChatStyle
4File namechatFlow.outcomeMessages.file.fileNameTextComponent
5File specs (size, type)chatFlow.outcomeMessages.file.fileSpecsTextComponent

Message with a send error​

Message with a send error

№ElementPath in themesStyle class
1File upload error textchatFlow.outcomeMessages.file.error (similarly for incomeMessages)FileMessageStyle
2Error bubble message stylechatFlow.errorMessages.chatBubbleBubblesChatStyle, BubbleComponent

Image placeholder​

Image placeholder

ElementPath in themesStyle class
Placeholder resource for an unavailable imageimageFlow.imagePlaceholderResId (@DrawableRes)ImageFlow, ImageComponent

Progress bar on chat start​

Progress bar on chat start

ElementPath in themesStyle class
Progress bar on chat startchatFlow.loaderLoaderChatStyle, LoadingIndicatorComponent

Error screen​

Error screen

№ElementPath in themesStyle class
1Chat re-initialization buttonchatFlow.retryChatInitButtonTextButtonChatStyle, TextButtonComponent
2Message on the error screenchatFlow.errorScreenMessageTextMessageStyle, TextComponent
3Image on the error screenchatFlow.errorScreenImageImagesChatStyle, ImageComponent

Welcome screen​

Welcome screen

№ElementPath in themesStyle class
1Welcome titlechatFlow.welcomeScreenStyle.welcomeScreenTitleWelcomeScreenStyle, TextComponent
2Welcome subtitlechatFlow.welcomeScreenStyle.welcomeScreenSubtitleWelcomeScreenStyle, TextComponent
3Welcome imagechatFlow.welcomeScreenStyle.welcomeScreenImageImagesChatStyle
4Welcome screen background colorchatFlow.welcomeScreenStyle.backgroundColorWelcomeScreenStyle, ChatMainComponent

Scroll-down button​

Scroll-down button

№ElementPath in themesStyle class
1Scroll-down button stylechatFlow.scrollDownButtonImagesChatStyle, ImageComponent
2Unread sticker colorchatFlow.unreadMsgStickerColor (@ColorRes)ChatFlow, ChatMainComponent
3Text on the unread stickerchatFlow.unreadMessagesCountTextMessageStyle, TextComponent

Scroll-up button​

Scroll-up button

№ElementPath in themesStyle class
1Scroll-up button stylechatFlow.scrollUpButtonImagesChatStyle, ImageComponent
2Unread sticker color (top)chatFlow.unreadMsgStickerUpColor (@ColorRes)ChatFlow, ChatMainComponent
3Text on the top unread stickerchatFlow.unreadMessagesCountUpTextMessageStyle, TextComponent

Theming priorities: ChatColors, ChatImages, Components, and Flows​

The theme system is split into several levels:

  1. ChatColors / ChatImages / ChatTexts / ChatTypography Base value tables. At this level, global colors, images, texts, and fonts for the entire SDK are defined.

  2. ChatComponents Combines the base tables and assembles ready-made components from them (buttons, toolbar, message bubbles, loaders, etc.). Changes at this level are applied immediately to whole groups of elements.

  3. ChatFlows The final layer where screen and scenario styles are assembled from components (chatFlow, searchFlow, etc.). Use ChatFlows to override a specific element's behavior (for example, only the time of error messages).

Application priority:

  • A value set in ChatColors / ChatImages becomes the default value for all components.
  • A value set in ChatComponents is used in all flows until the flow overrides it on its own.
  • A value set directly in ChatFlows has the highest priority.

Recommended customization order (minimizes the number of overrides in ChatFlows):

  1. Set brand colors and icons via ChatColors and ChatImages.
  2. If needed — configure components (for example, navigationBarStyle or audioPlayer).
  3. Only for special cases (errors, particular messages, etc.) — modify ChatFlows.

Common customization scenarios​

A few typical examples of appearance configuration.

Example 1. Your own brand colors for bubbles and toolbar​

val lightColors = ChatColors(
main = R.color.your_brand_main,
incomingBubble = R.color.your_incoming_bubble,
outgoingBubble = R.color.your_outgoing_bubble,
toolbar = R.color.your_toolbar_bg,
toolbarText = R.color.your_toolbar_text,
incomingText = R.color.your_incoming_text,
outgoingText = R.color.your_outgoing_text,
)

Bubbles, toolbar, and buttons that use these colors by default are colored with the given values.

Example 2. Replacing the logo and push notification icon​

val lightImages = ChatImages(
logoImage = R.drawable.ic_your_brand_logo,
pushIcon = R.drawable.ic_your_push_icon,
)

Overrides the welcome screen logo and the push icon in the status bar.

Example 3. Theme configuration via ChatComponents​

val lightComponents = ChatComponents(
context = applicationContext,
colors = lightColors,
images = lightImages,
text = ChatTexts(), // ChatTexts(...) — for default localized strings
typography = ChatTypography() // ChatTypography(...) — for fonts and sizes
).apply {
navigationBarStyle = navigationBarStyle.copy(
closeButtonEnabled = false
)
}

Sets general component settings: for example, disables the chat close button in the toolbar. The text and typography parameters are optional; if not specified, ChatTexts() and ChatTypography() defaults are used.

Example 4. Per-element configuration via ChatFlows​

val lightFlows = ChatFlows(lightComponents).apply {
// Time caption color for error messages
chatFlow.outcomeMessages.timeTextWhenError =
chatFlow.outcomeMessages.timeText.copy(
textColor = R.color.your_error_time_color
)

// "Play" icon in quotes
chatFlow.quotePlayPauseButton = ImagesChatStyle(
imageResId = R.drawable.ic_your_play_icon,
tintColor = R.color.your_brand_main
)
}

val chatLightTheme = ChatTheme(lightFlows)

First the components are configured, then individual elements are refined via flows if needed.

Example 5. Unified time color for error messages​

A common case: substitute the color of time, time with an image, and Open Graph preview time of incoming and outgoing messages in the "send error" state.

val lightFlows = ChatFlows(lightComponents).apply {
listOf(chatFlow.outcomeMessages, chatFlow.incomeMessages).forEach { messages ->
messages.timeTextWhenError = messages.timeText.copy(
textColor = R.color.your_error_time_color
)
messages.imagesTimeTextWhenError = messages.imagesTimeText.copy(
textColor = R.color.your_error_time_color
)
messages.openGraphTimeTextWhenError = messages.openGraphTimeText.copy(
textColor = R.color.your_error_time_color
)
}
}

Every *WhenError field is optional: if not set, the value from the base * field is used.


Enum value reference​

Many theme components (BubbleComponent, IconButtonComponent, LoadingIndicatorComponent, etc.) are indexed by enum values. To get the style of the "Back" button, use iconButtonComponent[IconButtonEnum.BACK]. Below — value references.

BubbleStyleEnum​

Package: edna.chatcenter.ui.visual.uiStyle.settings.components.bubble. Access via bubbleComponent[BubbleStyleEnum.X] and back via BubbleViewSelector.

ValueDescription
INCOMING_BUBBLEIncoming message bubble (from the operator).
OUTGOING_BUBBLEOutgoing message bubble (from the user).
ERROR_BUBBLEBubble of a message whose send ended with an error.

IconButtonEnum​

Package: edna.chatcenter.ui.visual.uiStyle.settings.components.iconButton. Implements ChatComponentEnum.

A total of 14 values:

ValueButton
BACK"Back" button in the toolbar.
INVERTED_BACK"Back" in the inverted (dark) toolbar theme.
MENUMenu button (three dots).
ATTACHAttachment attach.
MICROPHONEVoice message recording.
SENDSend button in the input field.
COPYCopy a message from the context menu.
REPLYReply to a message.
QUOTE_REPLYReply icon in the quote area.
QUOTE_CLEARDelete the selected quote.
SEARCHSearch icon in the toolbar.
CLEAR_SEARCHClear the search field.
PLAY_PAUSE_INCOMINGPlay/pause for incoming voice messages.
PLAY_PAUSE_OUTGOINGPlay/pause for outgoing voice messages.

LoadingIndicatorEnum​

Package: edna.chatcenter.ui.visual.uiStyle.settings.components.loadingIndicator. Implements ChatComponentEnum.

ValueWhere it is displayed
INCOMING_MESSAGELoader in an incoming message bubble (for example, while loading an attachment).
OUTGOING_MESSAGELoader in an outgoing bubble.
PAGEFull-screen loader while loading history / opening the chat.
SEARCHLoader on the search screen.

ImageStyleEnum (selection)​

Package: edna.chatcenter.ui.visual.uiStyle.settings.components.image. Full list — see Dokka. Key values:

ValueUse
INCOMING_IMAGE / OUTGOING_IMAGEImage styles in bubbles.
CONSULT_MESSAGE_AVATAROperator avatar.
LOGO_IMAGELogo in the navigation bar.
ERROR_ICON / ERROR_SCREEN_IMAGEError icons (next to a message and on the full-screen error screen).
INFO_ICONInformation icons in system messages.
BINARY_SURVEY_LIKE_SELECTED_ICON / BINARY_SURVEY_LIKE_UNSELECTED_ICONLike icons of the binary survey.
BINARY_SURVEY_DISLIKE_SELECTED_ICON / BINARY_SURVEY_DISLIKE_UNSELECTED_ICONDislike icons.
FILES_AND_MEDIA_IMAGEIcons in the files / media list.

TextStyleEnum (selection)​

Package: edna.chatcenter.ui.visual.uiStyle.settings.components.textChat. This enum has many values (~30+) — below are the most frequently used during customization:

ValueWhere applied
BALLOONText of balloon tooltips.
CHIPChip plates (for example, date).
ALERTS_TITLE / ALERTS_REGULARTitles and text of system alerts.
BUTTONS_SURVEY_BUTTON_TEXT / BUTTONS_SURVEY_QUESTION_TEXTText in button surveys.
APPROVE_REQUEST / DENY_REQUEST"Accept" / "Decline" buttons in system requests.
ASK_FOR_RATEChat rate invitation text.
AUDIO_STATUSAudio player state text.
CHAT_ERROR_SCREEN_MESSAGEMessage on the error screen.
DATE_MESSAGESystem message with a date.

To get the full list of values, call TextStyleEnum.entries in code or see Dokka.

Alignment (structures)​

Package: edna.chatcenter.ui.visual.uiStyle.settings.structures. Serializable.

ValueDescription
LEFTLeft-aligned.
CENTERCenter-aligned.
RIGHTRight-aligned.

VerticalAlignment​

Package: edna.chatcenter.ui.visual.uiStyle.settings.structures. Serializable. Companion: VerticalAlignment.Companion.getDefault().

ValueDescription
TOPTop-aligned.
CENTERCenter-aligned vertically.
BOTTOMBottom-aligned.

ContentGravity​

Package: edna.chatcenter.ui.visual.styles.permissions. Used in permission description dialog styles.

ValueDescription
LEFT / CENTER / RIGHTHorizontal alignment of content (title/description) inside the dialog.

PermissionDescriptionType​

Package: edna.chatcenter.ui.visual.styles.permissions. Passed to the onAllowClick(type, permissionId) callback of the fragment so that you know which permission group the user responded to.

ValuePermission group
CAMERACamera access.
RECORD_AUDIOAudio recording (voice messages).
STORAGEExternal storage read / write (attachments).

CurrentUiTheme​

Package: edna.chatcenter.ui.visual.uiStyle. Companion method CurrentUiTheme.fromInt(intValue: Int?) reconstructs the value from a numeric code (used during serialization).

ValueDescription
SYSTEMUse the system theme setting (UiModeManager). Default for new integrations.
LIGHTLight theme forced on.
DARKDark theme forced on.
Getting the full list of enum values in code

If you are unsure of a constant name, open <EnumName>.entries in Android Studio. All enums support this syntax (Kotlin 1.9+), and autocomplete will produce the full list with current names.

Full API​

This page lists the most frequently used ChatComponents and ChatFlows fields. The full list of public classes, properties, and enums is in Dokka documentation, generated from the SDK sources.

  • Design system: overview — customization levels and theme architecture.
  • Themes — three ChatTheme constructors and ready-made light/dark theme examples.
  • Colors — ChatColors table (116 fields).
  • Images — ChatImages table (66 fields).
  • Typography — ChatTypography: 6 sizes + 20 TTF substitution points.
  • Flows — screen-specific customization: chat / search / gallery / files / image / popups / balloons / bottomMenu.