$npx -y skills add syncfusion/maui-ui-components-skills --skill syncfusion-maui-chatImplements Syncfusion .NET MAUI Chat (SfChat) control in .NET MAUI applications. Use when working with chat interfaces, messaging UI, conversational interfaces, chat bubbles, or message threads. Covers message types (text, image, calendar, card), data binding, events, suggestions
| 1 | # Syncfusion .NET MAUI Chat (SfChat) |
| 2 | |
| 3 | The Syncfusion .NET MAUI Chat control (`SfChat`) delivers a contemporary conversational UI for building chatbot interfaces, customer support screens, and multi-user messaging experiences. It supports rich message types, real-time typing indicators, suggestions, load-more history, swiping, and deep styling customization. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | - Building a chat UI, chatbot interface, or messaging screen in .NET MAUI |
| 8 | - Displaying conversations between two or more users |
| 9 | - Sending/receiving text, images, cards, hyperlinks, or date/time picker messages |
| 10 | - Implementing typing indicators, message suggestions, or load-more history |
| 11 | - Customizing message appearance, shapes, delivery states, or themes |
| 12 | - Adding swipe actions, time-break grouping, or attachment buttons |
| 13 | - Localizing the chat UI or enabling accessibility features |
| 14 | |
| 15 | ## Documentation and Navigation Guide |
| 16 | |
| 17 | ### Getting Started |
| 18 | 📄 **Read:** [references/getting-started.md](references/getting-started.md) |
| 19 | - NuGet installation (`Syncfusion.Maui.Chat`) |
| 20 | - Handler registration in `MauiProgram.cs` |
| 21 | - Basic `SfChat` initialization in XAML and C# |
| 22 | - ViewModel setup with `Messages` and `CurrentUser` |
| 23 | - Binding messages to the chat control |
| 24 | - Running the application |
| 25 | |
| 26 | ### Messages |
| 27 | 📄 **Read:** [references/messages.md](references/messages.md) |
| 28 | - `TextMessage`, `DatePickerMessage`, `TimePickerMessage`, `CalendarMessage` |
| 29 | - `HyperlinkMessage`, `ImageMessage`, `CardMessage` |
| 30 | - Delivery states (`ShowDeliveryState`, `DeliveryState` enum, custom icons) |
| 31 | - Pin message (`AllowPinning`, `PinnedMessages`, events, template) |
| 32 | - Message template and `ChatMessageTemplateSelector` |
| 33 | - Customizable incoming/outgoing views |
| 34 | - Message spacing, shape, timestamp format, avatar/author visibility |
| 35 | - Sending messages, keyboard, multiline input, hide input view |
| 36 | |
| 37 | ### Data Binding |
| 38 | 📄 **Read:** [references/data-binding.md](references/data-binding.md) |
| 39 | - Binding `ObservableCollection<object>` to `Messages` |
| 40 | - `CurrentUser` differentiation of sender/receiver |
| 41 | - Custom data models with `IMessage` / `ITextMessage` |
| 42 | - `ItemsSourceConverter` for external model binding |
| 43 | - Dynamically updating messages at runtime |
| 44 | |
| 45 | ### Suggestions |
| 46 | 📄 **Read:** [references/suggestions.md](references/suggestions.md) |
| 47 | - Chat-level suggestions (`SfChat.Suggestions`) |
| 48 | - Message-level suggestions (`TextMessage.Suggestions`) |
| 49 | - `SuggestionItemSelected` event and command |
| 50 | - Customizing suggestion item templates |
| 51 | |
| 52 | ### Typing Indicator |
| 53 | 📄 **Read:** [references/typing-indicator.md](references/typing-indicator.md) |
| 54 | - Enabling the typing indicator (`ShowTypingIndicator`) |
| 55 | - Setting author and message on `TypingIndicator` |
| 56 | - Customizing appearance |
| 57 | - Showing/hiding dynamically |
| 58 | |
| 59 | ### Load More |
| 60 | 📄 **Read:** [references/load-more.md](references/load-more.md) |
| 61 | - Enabling load more (`LoadMoreBehavior`) |
| 62 | - `LoadMore` event and `LoadMoreCommand` |
| 63 | - Loading older messages on scroll |
| 64 | - `IsLazyLoading` property |
| 65 | - Disabling after all messages are loaded |
| 66 | |
| 67 | ### Events & Commands |
| 68 | 📄 **Read:** [references/events.md](references/events.md) |
| 69 | - `SendMessage` / `SendMessageCommand` |
| 70 | - `ImageTapped` / `ImageTappedCommand` |
| 71 | - `CardTapped` / `CardCommand` |
| 72 | - `SuggestionItemSelected` |
| 73 | - `MessagePinned` / `MessageUnpinned` |
| 74 | - `LoadMore` / `LoadMoreCommand` |
| 75 | - Handling and cancelling event args |
| 76 | |
| 77 | ### Styles & Appearance |
| 78 | 📄 **Read:** [references/styles.md](references/styles.md) |
| 79 | - Incoming and outgoing message styling |
| 80 | - Message input view styling |
| 81 | - Time-break and typing indicator styling |
| 82 | - Suggestion view styling |
| 83 | - `MessageShape` options |
| 84 | - Theme support (Material 3, Fluent) |
| 85 | |
| 86 | ### Accessibility & Localization |
| 87 | 📄 **Read:** [references/accessibility-localization.md](references/accessibility-localization.md) |
| 88 | - WCAG 2.0 compliance |
| 89 | - Keyboard navigation and screen reader support |
| 90 | - `AutomationId` for UI testing |
| 91 | - Localization with `.resx` resource files |
| 92 | - Supported localizable strings |
| 93 | - RTL layout support |
| 94 | |
| 95 | ### Scrolling |
| 96 | 📄 **Read:** [references/scrolling.md](references/scrolling.md) |
| 97 | - Programmatic scroll to a specific message (`ScrollToMessage`) |
| 98 | - Auto-scroll to bottom on new message (`CanAutoScrollToBottom`) |
| 99 | - Scroll to bottom floating button (`ShowScrollToBottomButton`) |
| 100 | - Customizing the scroll to bottom button (`ScrollToBottomButtonTemplate`) |
| 101 | - `Scrolled` event and `ChatScrolledEventArgs` (`IsBottomReached`, `IsTopReached`, `ScrollOffset`) |
| 102 | |
| 103 | ### Advanced Features |
| 104 | 📄 **Read:** [references/advanced-features.md](references/advanced-features.md) |
| 105 | - Message swiping (left/right, `SwipeStarted`, `SwipeEnded`, swipe templates) |
| 106 | - Time-break grouping |