MCPInstall

syncfusion-javascript-chat-ui

Implement the Syncfusion Javascript Chat UI control using Javascript (ej2-interactive-chat). Use this skill when the user mentions chat UI, chat interface, conversational UI, messaging interface, chat applications, messaging systems, customer support chat, AI chatbots, or any real-time conversation features. Provides comprehensive guidance on messages, typing indicators, file attachments, @mentions, suggestions, header/footer customization, templates, load-on-demand, message toolbars, RTL support, localization, accessibility features, and complete chat interface implementations with working code examples.

Installs
60
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-chat-ui
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads syncfusion-javascript-chat-ui automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Implementing Syncfusion TypeScript Chat UI

Overview

The Chat UI component provides a modern, feature-rich interface for building conversational applications including customer support chat, AI chatbots, messaging systems, and collaborative communication tools.

The Syncfusion Chat UI (ChatUI) control is from the @syncfusion/ej2-interactive-chat package that provides:

  • Message Management - Display, send, and manage chat messages with rich content
  • User Differentiation - Visual distinction between current user and other participants
  • Real-time Indicators - Typing indicators for active participants
  • File Attachments - Upload and display files, images, and documents in messages
  • Smart Features - @mentions, quick reply suggestions, message replies
  • Customization - Templates for messages, empty states, headers, footers
  • Accessibility - Keyboard navigation, ARIA support, RTL layout
  • Message Toolbar - Per-message actions (Copy, Reply, Pin, Delete)
  • Load on Demand - Lazy loading for large conversation histories

Package: @syncfusion/ej2-interactive-chat

Dependencies: ej2-base, ej2-navigations, ej2-inputs, ej2-buttons, ej2-dropdowns, ej2-popups


Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Package installation
  • CSS imports for themes (material, bootstrap, fabric, etc.)
  • Basic Chat UI initialization
  • UserModel configuration (current user and participants)
  • MessageModel structure for initial messages
  • Component dimensions (width, height)
  • created event and component lifecycle

Messages Configuration

📄 Read: references/messages.md

  • MessageModel properties (id, text, author, timestamp, status)
  • messages property - initial message collection
  • Message status indicators (sent, received, read)
  • Message replies (replyTo, MessageReplyModel)
  • Message flags (isForwarded, isPinned)
  • Auto-scroll behavior (autoScrollToBottom)
  • Message grouping by sender
  • Mentions in messages (mentionUsers array)
  • Attached files in messages

Header & Footer Configuration

📄 Read: references/header-footer.md

  • Show/hide header and footer (showHeader, showFooter)
  • Header text and icon (headerText, headerIconCss)
  • Header toolbar configuration (headerToolbar, ToolbarSettingsModel)
  • Toolbar items setup (ToolbarItemModel with text, icon, alignment, tooltip)
  • Toolbar item click events (itemClicked)
  • Footer placeholder text customization
  • Footer template for custom layouts

Typing Indicator

📄 Read: references/typing-indicator.md

  • Show/hide typing indicator (typingUsers property)
  • Dynamic typing user updates (UserModel array)
  • Multiple users typing scenarios
  • Custom typing indicator template (typingUsersTemplate)
  • userTyping event (isTyping, message, user)

Templates & Customization

📄 Read: references/templates.md

  • Empty chat template (emptyChatTemplate)
  • Message template (messageTemplate) with context
  • Typing users template (typingUsersTemplate)
  • Time break template (timeBreakTemplate)
  • Suggestion template (suggestionTemplate)
  • Footer template (footerTemplate)
  • Template context and data binding patterns

Timebreak & Timestamp

📄 Read: references/timebreak-timestamp.md

  • Show time breaks (showTimeBreak) for date-based grouping
  • Time break template customization
  • Show timestamps (showTimeStamp) per message
  • Global timestamp format (timeStampFormat)
  • Per-message timestamp format override
  • Date/time formatting patterns
  • Culture-based formatting

File Attachments

📄 Read: references/file-attachments.md

  • Enable attachments (enableAttachments)
  • Attachment settings (attachmentSettings, FileAttachmentSettingsModel)
  • Server upload configuration (saveUrl, removeUrl)
  • Save format options (Base64 vs Blob)
  • File type restrictions (allowedFileTypes)
  • File size limits (maxFileSize)
  • Maximum attachment count (maximumCount)
  • Drag and drop support (enableDragAndDrop)
  • Custom attachment templates (attachmentTemplate, previewTemplate)
  • Attachment events (click, upload, success, failure, removed)

@Mention Integration

📄 Read: references/mention.md

  • Mention trigger character (mentionTriggerChar, default '@')
  • Mention user list (mentionUsers property)
  • UserModel configuration for mentions
  • Mention popup filtering
  • mentionSelect event and cancellation
  • Mention data in messages
  • Custom mention handling

Suggestions

📄 Read: references/suggestions.md

  • Quick reply suggestions (suggestions property)
  • Suggestion template customization (suggestionTemplate)
  • Displaying suggestions above input
  • Suggestion click behavior
  • Dynamic suggestion updates

Load on Demand

📄 Read: references/load-on-demand.md

  • Enable lazy loading (loadOnDemand property)
  • Scroll-triggered message loading
  • Performance optimization for large conversations
  • Pagination patterns
  • Adding older messages programmatically

Methods

📄 Read: references/methods.md

  • addMessage() - add string or MessageModel
  • updateMessage() - modify existing messages
  • scrollToBottom() - scroll to latest message
  • scrollToMessage() - scroll to specific message by ID
  • focus() - set focus on input textarea
  • refresh() and dataBind() for updates
  • Other component methods

Events

📄 Read: references/events.md

  • created - component initialization
  • messageSend - before sending message (with cancellation)
  • userTyping - typing status updates
  • mentionSelect - mention selection handling
  • itemClicked - toolbar item clicks (header and message toolbars)
  • Attachment events (click, beforeUpload, uploadSuccess, uploadFailure, removed)
  • Event handling patterns

Message Toolbar & Appearance

📄 Read: references/message-toolbar-appearance.md

  • Message toolbar settings (messageToolbarSettings)
  • Per-message toolbar items (Copy, Reply, Pin, Delete)
  • Custom toolbar items
  • Message toolbar click events
  • Compact mode (enableCompactMode) - left-align all messages
  • CSS customization (cssClass)
  • Theme integration
  • RTL support (enableRtl)
  • Localization (locale)
  • Persistence (enablePersistence)
  • Accessibility features

Quick Start

Basic Chat UI Setup

import { ChatUI, UserModel, MessageModel } from '@syncfusion/ej2-interactive-chat';
import { enableRipple } from '@syncfusion/ej2-base';

enableRipple(true);

// Define current user
let currentUser: UserModel = {
    id: "user1",
    user: "Albert",
    avatarUrl: "https://example.com/avatar1.png"
};

// Define other participant
let participantUser: UserModel = {
    id: "user2",
    user: "Michale Suyama",
    avatarUrl: "https://example.com/avatar2.png"
};

// Initial messages
let chatMessages: MessageModel[] = [
    {
        author: currentUser,
        text: "Hi Michale, are we on track for the deadline?"
    },
    {
        author: participantUser,
        text: "Yes, the design phase is complete."
    },
    {
        author: currentUser,
        text: "Great! I'll review it and send feedback by today."
    }
];

// Initialize Chat UI
let chatUI: ChatUI = new ChatUI({
    user: currentUser,
    messages: chatMessages,
    headerText: 'Michale Suyama',
    showTimeStamp: true,
    autoScrollToBottom: true
});

// Render
chatUI.appendTo('#chatUI');

HTML Structure

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Chat UI Example</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
    <!-- CSS imports -->
    <link href="https://cdn.syncfusion.com/ej2/32.1.19/fluent2.css" rel="stylesheet" />
</head>
<body>
    <div class="chatui-container" style="height: 500px; width: 400px;">
        <div id="chatUI"></div>
    </div>
</body>
</html>

CSS Imports (via npm)

@import "../../node_modules/@syncfusion/ej2-fluent2-theme/styles/chat-ui/index.css";

Common Patterns

Add a New Message Programmatically

// Add as string (uses current user)
chatUI.addMessage("This is a new message");

// Add as MessageModel (any user)
chatUI.addMessage({
    text: "Response from bot",
    author: botUser,
    timestamp: new Date()
});

Handle Message Send Event

let chatUI: ChatUI = new ChatUI({
    user: currentUser,
    messageSend: (args: MessageSendEventArgs) => {
        console.log("Message being sent:", args.message.text);
        
        // Cancel send if needed
        if (args.message.text.trim() === '') {
            args.cancel = true;
        }
        
        // Send to server/API
        sendToServer(args.message);
    }
});

Show Typing Indicator

// Show user is typing
chatUI.typingUsers = [participantUser];

// Hide typing indicator (after message received)
chatUI.typingUsers = [];

Enable File Attachments with Upload

let chatUI: ChatUI = new ChatUI({
    user: currentUser,
    enableAttachments: true,
    attachmentSettings: {
        saveUrl: 'https://your-server.com/api/upload',
        removeUrl: 'https://your-server.com/api/remove',
        allowedFileTypes: '.jpg,.png,.pdf,.docx',
        maxFileSize: 5242880, // 5MB in bytes
        maximumCount: 3
    },
    attachmentUploadSuccess: (args) => {
        console.log("File uploaded successfully:", args.file.name);
    }
});

Add @Mention Support

let mentionableUsers: UserModel[] = [
    { id: "user1", user: "Albert" },
    { id: "user2", user: "Michale" },
    { id: "user3", user: "Janet" }
];

let chatUI: ChatUI = new ChatUI({
    user: currentUser,
    mentionTriggerChar: '@',
    mentionUsers: mentionableUsers,
    mentionSelect: (args: MentionSelectEventArgs) => {
        console.log("Mentioned user:", args.itemData);
    }
});

Update Existing Message

// Update message content
chatUI.updateMessage({
    text: "Updated message content",
    author: currentUser
}, "message-id-123");

Scroll to Specific Message

// Scroll to bottom (latest message)
chatUI.scrollToBottom();

// Scroll to specific message by ID
chatUI.scrollToMessage("message-id-456");

Key Properties Summary

PropertyTypeDescription
userUserModelCurrent user interacting with the chat
messagesMessageModel[]Collection of chat messages
showHeaderbooleanShow/hide header (default: true)
showFooterbooleanShow/hide footer (default: true)
headerTextstringText displayed in header
placeholderstringInput placeholder text
typingUsersUserModel[]Users currently typing
showTimeStampbooleanShow message timestamps (default: true)
showTimeBreakbooleanGroup messages by date (default: false)
autoScrollToBottombooleanAuto-scroll on new message (default: false)
enableAttachmentsbooleanEnable file attachments (default: false)
attachmentSettingsFileAttachmentSettingsModelFile upload configuration
mentionTriggerCharstringCharacter to trigger mentions (default: '@')
mentionUsersUserModel[]Users available for @mention
suggestionsstring[]Quick reply suggestions
loadOnDemandbooleanLazy load messages (default: false)
enableCompactModebooleanLeft-align all messages (default: false)
messageToolbarSettingsMessageToolbarSettingsModelPer-message toolbar config
headerToolbarToolbarSettingsModelHeader toolbar config
widthstring | numberComponent width (default: '100%')
heightstring | numberComponent height (default: '100%')
cssClassstringCustom CSS classes
enableRtlbooleanRight-to-left layout (default: false)
localestringLocalization culture

Common Use Cases

Customer Support Chat

  • Real-time agent-customer conversations
  • Typing indicators for agent availability
  • File attachments for screenshots/documents
  • Message status (sent, delivered, read)
  • Quick reply suggestions for common responses

AI Chatbot Interface

  • User-bot message differentiation
  • Typing indicator during AI processing
  • Suggested responses and quick actions
  • Message templates for rich responses
  • Empty state with welcome message

Team Collaboration Tool

  • @mention team members
  • Message replies and threading
  • Pin important messages
  • File sharing with preview
  • Load on demand for long conversations

Live Help Widget

  • Compact mode for embedded widget
  • Custom header with agent info
  • Footer with typing status
  • Auto-scroll to latest message
  • Minimize/maximize functionality

Documentation Q&A

  • Question-answer format with clear user distinction
  • Code snippet attachments
  • Time breaks for conversation sessions
  • Message toolbar with copy functionality
  • Search and scroll to specific messages

FAQ

What does the syncfusion-javascript-chat-ui skill do?

Implement the Syncfusion Javascript Chat UI control using Javascript (ej2-interactive-chat). Use this skill when the user mentions chat UI, chat interface, conversational UI, messaging interface, chat applications, messaging systems, customer support chat, AI chatbots, or any real-time conversation features. Provides comprehensive guidance on messages, typing indicators, file attachments, @mentions, suggestions, header/footer customization, templates, load-on-demand, message toolbars, RTL support, localization, accessibility features, and complete chat interface implementations with working code examples.

How do I install syncfusion-javascript-chat-ui?

Run npx skills add https://github.com/syncfusion/javascript-ui-controls-skills --skill syncfusion-javascript-chat-ui in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-javascript-chat-ui/ (personal) or .claude/skills/syncfusion-javascript-chat-ui/ (project).

Which AI agents can use syncfusion-javascript-chat-ui?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is syncfusion-javascript-chat-ui safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains syncfusion-javascript-chat-ui?

It is published by syncfusion in syncfusion/javascript-ui-controls-skills. It has 60 recorded installs.

More from syncfusion/javascript-ui-controls-skills

View all →

syncfusion-javascript-grid

syncfusion/javascript-ui-controls-skills

Implements Syncfusion JavaScript Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.

syncfusion-javascript-common

syncfusion/javascript-ui-controls-skills

Common utilities and features for Syncfusion JavaScript controls. Use this skill when the user needs to implement animations, drag-and-drop, state persistence, RTL support, localization, globalization, security, templates, and advanced features for Syncfusion JavaScript controls.

syncfusion-javascript-dropdowns

syncfusion/javascript-ui-controls-skills

Comprehensive guide for implementing Syncfusion TypeScript dropdown components including AutoComplete, ComboBox, Mention, Dropdownlist, Multiselect, ListBox, and MultiColumn ComboBox. Use this when building selection interfaces, data binding, filtering, cascading dropdowns, dual list transfer, custom templates, and accessible dropdown experiences.

syncfusion-javascript-license

syncfusion/javascript-ui-controls-skills

Open the skill to read its SKILL.md instructions.

syncfusion-javascript-popups

syncfusion/javascript-ui-controls-skills

Open the skill to read its SKILL.md instructions.

syncfusion-javascript-tab

syncfusion/javascript-ui-controls-skills

This skill enables creating and customizing Syncfusion TypeScript Tab components, including tab navigation, tab headers, styling, responsive layouts, dynamic content loading, animations, and multi-panel organization.

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs