User Flows
User flows provide advanced interface configuration and allow precise configuration of required screen and its elements.
They consist of same components configured in base settings but allow overriding them precisely without changes in other used locations.
For example, an icon button is used in several places, but this way you can change only its background in specific location.
Configuration example:
// Create design system components
let components = ChatComponents()
// Create theme from components
let theme = ChatTheme(components: components)
// Get chat screen settings
let chatFlow = theme.flows.chatFlow
chatFlow.systemMessages.surveyMessageStyle.type = .user
chatFlow.incomeMessages.showAvatar = true
chatFlow.outcomeMessages.showAvatar = false
// Get search screen settings
let searchFlow = theme.flows.searchFlow
searchFlow.searchMessageStyle.messageMatchStyle.color = .red
SDK allows configuring two user flows (screens):
Chat
Chat screen is SDK's main screen and contains its main components: message list and input panel.
Display of entrance (loading data required for operation):

Empty chat display:

Error display when getting data:

Message display:

Message Search
Search screen is auxiliary screen required for searching and displaying messages in chat.
It opens by clicking search icon in navigation bar (display enabled in ChatConfig) and includes several states:
Display on open:

Empty search results display:

Search results display:
