Tools / UI Kit / Bootstrap / Chat with Sidebar

Chat with Sidebar

Full-height chat layouts with conversation sidebars.

Chat Conversation Panel
SJ
Sarah Johnson
Online
Today
SJ
Hey! Did you get a chance to review the new dashboard designs?
9:42 AM
Yes, just finished going through them. The layout looks great! 🔥
9:45 AM
SJ
Awesome. I added the new analytics cards — let me know if the spacing feels off.
9:47 AM
Looks good to me. Maybe tighten the gap between the header and the first row slightly.
9:50 AM
<div class="uk-chat">
    <div class="uk-chat-header">
        <div class="uk-chat-avatar uk-chat-avatar-blue">SJ</div>
        <div class="uk-chat-header-info">
            <div class="uk-chat-name">Sarah Johnson</div>
            <div class="uk-chat-status">
                <span class="uk-chat-status-dot"></span> Online
            </div>
        </div>
        <div class="uk-chat-header-actions">
            <button type="button" class="uk-chat-icon-btn"><i class="fas fa-phone"></i></button>
            <button type="button" class="uk-chat-icon-btn"><i class="fas fa-video"></i></button>
            <button type="button" class="uk-chat-icon-btn"><i class="fas fa-ellipsis-vertical"></i></button>
        </div>
    </div>

    <div class="uk-chat-body">
        <div class="uk-chat-divider"><span>Today</span></div>

        <div class="uk-chat-message uk-chat-message-in">
            <div class="uk-chat-avatar uk-chat-avatar-blue uk-chat-avatar-sm">SJ</div>
            <div class="uk-chat-bubble-wrap">
                <div class="uk-chat-bubble">Hey! Did you get a chance to review the new dashboard designs?</div>
                <div class="uk-chat-time">9:42 AM</div>
            </div>
        </div>

        <div class="uk-chat-message uk-chat-message-out">
            <div class="uk-chat-bubble-wrap">
                <div class="uk-chat-bubble">Yes, just finished going through them. The layout looks great!</div>
                <div class="uk-chat-time">9:45 AM</div>
            </div>
        </div>
    </div>

    <div class="uk-chat-input-bar">
        <button type="button" class="uk-chat-icon-btn"><i class="fas fa-paperclip"></i></button>
        <input type="text" class="uk-chat-input" placeholder="Type a message...">
        <button type="button" class="uk-chat-send-btn"><i class="fas fa-paper-plane"></i></button>
    </div>
</div>

<style>
    .uk-chat {
        display: flex;
        flex-direction: column;
        background: #fff;
        border: 1px solid #e2e8f0;
        border-radius: 1rem;
        overflow: hidden;
        text-align: left;
        height: 560px;
    }
    .uk-chat-header {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        padding: 1rem 1.25rem;
        border-bottom: 1px solid #e2e8f0;
        background: #f8fafc;
    }
    .uk-chat-avatar {
        width: 40px;
        height: 40px;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.8rem;
        font-weight: 800;
        color: #fff;
        flex-shrink: 0;
    }
    .uk-chat-avatar-sm {
        width: 28px;
        height: 28px;
        font-size: 0.6rem;
    }
    .uk-chat-avatar-blue { background: linear-gradient(135deg, #3b82f6, #1e3a8a); }
    .uk-chat-header-info { flex: 1; min-width: 0; }
    .uk-chat-name {
        font-size: 0.9rem;
        font-weight: 800;
        color: #0b1b2f;
    }
    .uk-chat-status {
        display: flex;
        align-items: center;
        gap: 0.3rem;
        font-size: 0.72rem;
        color: #22c55e;
        font-weight: 600;
        margin-top: 0.1rem;
    }
    .uk-chat-status-dot {
        width: 7px;
        height: 7px;
        border-radius: 50%;
        background: #22c55e;
    }
    .uk-chat-header-actions {
        display: flex;
        gap: 0.25rem;
    }
    .uk-chat-icon-btn {
        width: 34px;
        height: 34px;
        border-radius: 0.45rem;
        border: 1px solid transparent;
        background: transparent;
        color: #64748b;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: all 0.15s;
        font-size: 0.85rem;
    }
    .uk-chat-icon-btn:hover {
        background: #e2e8f0;
        color: #1e3a8a;
    }
    .uk-chat-body {
        flex: 1;
        overflow-y: auto;
        padding: 1.25rem;
        display: flex;
        flex-direction: column;
        gap: 1rem;
        background: #fff;
    }
    .uk-chat-divider {
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 0.25rem 0;
    }
    .uk-chat-divider span {
        font-size: 0.68rem;
        font-weight: 700;
        color: #94a3b8;
        background: #f1f5f9;
        padding: 0.25rem 0.75rem;
        border-radius: 999px;
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }
    .uk-chat-message {
        display: flex;
        gap: 0.6rem;
        align-items: flex-end;
        max-width: 80%;
    }
    .uk-chat-message-in { align-self: flex-start; }
    .uk-chat-message-out { align-self: flex-end; flex-direction: row-reverse; }
    .uk-chat-bubble-wrap {
        display: flex;
        flex-direction: column;
        gap: 0.2rem;
    }
    .uk-chat-message-out .uk-chat-bubble-wrap { align-items: flex-end; }
    .uk-chat-bubble {
        background: #f1f5f9;
        color: #0b1b2f;
        padding: 0.65rem 0.9rem;
        border-radius: 0.9rem 0.9rem 0.9rem 0.2rem;
        font-size: 0.82rem;
        line-height: 1.45;
    }
    .uk-chat-message-out .uk-chat-bubble {
        background: linear-gradient(135deg, #1e3a8a, #3b82f6);
        color: #fff;
        border-radius: 0.9rem 0.9rem 0.2rem 0.9rem;
    }
    .uk-chat-time {
        font-size: 0.65rem;
        color: #94a3b8;
        padding: 0 0.25rem;
    }
    .uk-chat-input-bar {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        padding: 0.85rem 1rem;
        border-top: 1px solid #e2e8f0;
        background: #f8fafc;
    }
    .uk-chat-input {
        flex: 1;
        border: 1px solid #e2e8f0;
        border-radius: 999px;
        padding: 0.6rem 1rem;
        font-size: 0.82rem;
        font-family: inherit;
        color: #0b1b2f;
        background: #fff;
        outline: none;
        transition: all 0.15s;
    }
    .uk-chat-input:focus {
        border-color: #93c5fd;
        box-shadow: 0 0 0 3px rgba(59,130,246,0.12);
    }
    .uk-chat-send-btn {
        width: 38px;
        height: 38px;
        border-radius: 50%;
        border: none;
        background: linear-gradient(135deg, #1e3a8a, #3b82f6);
        color: #fff;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.85rem;
        transition: all 0.15s;
        flex-shrink: 0;
    }
    .uk-chat-send-btn:hover {
        transform: scale(1.05);
        box-shadow: 0 4px 12px rgba(30,58,138,0.3);
    }
    @media (max-width: 480px) {
        .uk-chat { height: 480px; }
        .uk-chat-message { max-width: 92%; }
    }
</style>
Conversation List Sidebar
Messages
SJ
Sarah Johnson 9:50 AM
Looks good to me. Maybe tighten the gap...
2
MK
Mike Kim 9:30 AM
Can you send over the updated mockups?
DL
Design Team Yesterday
Anna: The new color palette is ready 🎨
5
AC
Acme Corp Yesterday
Contract signed — thanks for the quick turnaround!
JT
James Taylor Mon
Let's sync up about the roadmap next week.
<div class="uk-conv-list">
    <div class="uk-conv-list-header">
        <div class="uk-conv-list-title">Messages</div>
        <button type="button" class="uk-conv-new-btn">
            <i class="fas fa-pen-to-square"></i>
        </button>
    </div>
    <div class="uk-conv-search">
        <i class="fas fa-search uk-conv-search-icon"></i>
        <input type="text" class="uk-conv-search-input" placeholder="Search conversations...">
    </div>
    <div class="uk-conv-items">
        <div class="uk-conv-item uk-conv-item-active">
            <div class="uk-conv-avatar uk-conv-avatar-blue">SJ</div>
            <div class="uk-conv-body">
                <div class="uk-conv-top">
                    <span class="uk-conv-name">Sarah Johnson</span>
                    <span class="uk-conv-time">9:50 AM</span>
                </div>
                <div class="uk-conv-preview">Looks good to me...</div>
            </div>
            <span class="uk-conv-badge">2</span>
        </div>
        <!-- ... more items -->
    </div>
</div>

<style>
    .uk-conv-list {
        display: flex;
        flex-direction: column;
        background: #fff;
        border: 1px solid #e2e8f0;
        border-radius: 1rem;
        overflow: hidden;
        text-align: left;
    }
    .uk-conv-list-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 1.1rem 1.25rem 0.75rem;
    }
    .uk-conv-list-title {
        font-size: 1.1rem;
        font-weight: 800;
        color: #0b1b2f;
    }
    .uk-conv-new-btn {
        width: 34px;
        height: 34px;
        border-radius: 0.5rem;
        border: 1px solid #dbeafe;
        background: #eff6ff;
        color: #1e3a8a;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.8rem;
        transition: all 0.15s;
    }
    .uk-conv-new-btn:hover { background: #dbeafe; }
    .uk-conv-search {
        position: relative;
        padding: 0 1rem 0.75rem;
    }
    .uk-conv-search-icon {
        position: absolute;
        left: 1.65rem;
        top: 50%;
        transform: translateY(-65%);
        font-size: 0.75rem;
        color: #94a3b8;
        pointer-events: none;
    }
    .uk-conv-search-input {
        width: 100%;
        border: 1px solid #e2e8f0;
        border-radius: 0.5rem;
        padding: 0.55rem 0.75rem 0.55rem 2rem;
        font-size: 0.78rem;
        font-family: inherit;
        color: #0b1b2f;
        background: #f8fafc;
        outline: none;
        transition: all 0.15s;
    }
    .uk-conv-search-input:focus {
        background: #fff;
        border-color: #93c5fd;
        box-shadow: 0 0 0 3px rgba(59,130,246,0.12);
    }
    .uk-conv-items {
        display: flex;
        flex-direction: column;
        overflow-y: auto;
        max-height: 420px;
    }
    .uk-conv-item {
        display: flex;
        align-items: center;
        gap: 0.75rem;
        padding: 0.85rem 1.25rem;
        cursor: pointer;
        transition: background 0.15s;
        border-top: 1px solid #f1f5f9;
        position: relative;
    }
    .uk-conv-item:hover { background: #f8fafc; }
    .uk-conv-item-active {
        background: #eff6ff;
        border-left: 3px solid #1e3a8a;
        padding-left: calc(1.25rem - 3px);
    }
    .uk-conv-item-active:hover { background: #e0edff; }
    .uk-conv-avatar {
        width: 42px;
        height: 42px;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.75rem;
        font-weight: 800;
        color: #fff;
        flex-shrink: 0;
    }
    .uk-conv-avatar-blue { background: linear-gradient(135deg, #3b82f6, #1e3a8a); }
    .uk-conv-avatar-purple { background: linear-gradient(135deg, #a78bfa, #7c3aed); }
    .uk-conv-avatar-amber { background: linear-gradient(135deg, #fbbf24, #d97706); }
    .uk-conv-avatar-green { background: linear-gradient(135deg, #34d399, #059669); }
    .uk-conv-avatar-slate { background: linear-gradient(135deg, #94a3b8, #475569); }
    .uk-conv-body { flex: 1; min-width: 0; }
    .uk-conv-top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 0.5rem;
        margin-bottom: 0.15rem;
    }
    .uk-conv-name {
        font-size: 0.82rem;
        font-weight: 700;
        color: #0b1b2f;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .uk-conv-time {
        font-size: 0.65rem;
        color: #94a3b8;
        flex-shrink: 0;
        font-weight: 500;
    }
    .uk-conv-preview {
        font-size: 0.75rem;
        color: #64748b;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .uk-conv-badge {
        min-width: 20px;
        height: 20px;
        padding: 0 6px;
        border-radius: 999px;
        background: #1e3a8a;
        color: #fff;
        font-size: 0.65rem;
        font-weight: 800;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
    }
    @media (max-width: 480px) {
        .uk-conv-item { padding: 0.7rem 1rem; }
        .uk-conv-item-active { padding-left: calc(1rem - 3px); }
    }
</style>
Navigation Sidebar
<div class="uk-sidebar">
    <div class="uk-sidebar-brand">
        <div class="uk-sidebar-logo">U</div>
        <div class="uk-sidebar-brand-text">
            <div class="uk-sidebar-brand-name">UIKit</div>
            <div class="uk-sidebar-brand-tag">Admin Panel</div>
        </div>
    </div>

    <div class="uk-sidebar-section">
        <div class="uk-sidebar-section-label">Main</div>
        <a href="#" class="uk-sidebar-link uk-sidebar-link-active">
            <i class="fas fa-gauge-high"></i>
            <span>Dashboard</span>
        </a>
        <a href="#" class="uk-sidebar-link">
            <i class="fas fa-chart-line"></i>
            <span>Analytics</span>
            <span class="uk-sidebar-link-badge">New</span>
        </a>
        <!-- ... more links -->
    </div>

    <div class="uk-sidebar-footer">
        <div class="uk-sidebar-user">
            <div class="uk-sidebar-user-avatar">JD</div>
            <div class="uk-sidebar-user-info">
                <div class="uk-sidebar-user-name">Jane Doe</div>
                <div class="uk-sidebar-user-email">[email protected]</div>
            </div>
            <button type="button" class="uk-sidebar-logout-btn">
                <i class="fas fa-arrow-right-from-bracket"></i>
            </button>
        </div>
    </div>
</div>

<style>
    .uk-sidebar {
        display: flex;
        flex-direction: column;
        background: #fff;
        border: 1px solid #e2e8f0;
        border-radius: 1rem;
        overflow: hidden;
        text-align: left;
        height: 100%;
        min-height: 480px;
    }
    .uk-sidebar-brand {
        display: flex;
        align-items: center;
        gap: 0.6rem;
        padding: 1.1rem 1.25rem;
        border-bottom: 1px solid #e2e8f0;
    }
    .uk-sidebar-logo {
        width: 36px;
        height: 36px;
        border-radius: 0.5rem;
        background: linear-gradient(135deg, #1e3a8a, #3b82f6);
        color: #fff;
        font-size: 1rem;
        font-weight: 900;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
    }
    .uk-sidebar-brand-name {
        font-size: 0.9rem;
        font-weight: 800;
        color: #0b1b2f;
        line-height: 1.1;
    }
    .uk-sidebar-brand-tag {
        font-size: 0.65rem;
        color: #94a3b8;
        font-weight: 500;
    }
    .uk-sidebar-section {
        padding: 1rem 0.75rem;
        display: flex;
        flex-direction: column;
        gap: 0.15rem;
    }
    .uk-sidebar-section-label {
        font-size: 0.62rem;
        font-weight: 800;
        color: #94a3b8;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        padding: 0.25rem 0.6rem 0.4rem;
    }
    .uk-sidebar-link {
        display: flex;
        align-items: center;
        gap: 0.6rem;
        padding: 0.55rem 0.6rem;
        border-radius: 0.5rem;
        color: #475569;
        font-size: 0.8rem;
        font-weight: 600;
        text-decoration: none;
        transition: all 0.15s;
    }
    .uk-sidebar-link:hover {
        background: #f1f5f9;
        color: #1e3a8a;
    }
    .uk-sidebar-link i {
        width: 18px;
        text-align: center;
        font-size: 0.8rem;
        color: #94a3b8;
        flex-shrink: 0;
    }
    .uk-sidebar-link-active {
        background: #eff6ff;
        color: #1e3a8a;
        font-weight: 700;
    }
    .uk-sidebar-link-active i { color: #1e3a8a; }
    .uk-sidebar-link-active:hover { background: #e0edff; }
    .uk-sidebar-link-badge {
        margin-left: auto;
        font-size: 0.58rem;
        font-weight: 800;
        padding: 0.15rem 0.4rem;
        border-radius: 999px;
        background: #dcfce7;
        color: #15803d;
        text-transform: uppercase;
        letter-spacing: 0.03em;
    }
    .uk-sidebar-link-count {
        margin-left: auto;
        font-size: 0.62rem;
        font-weight: 800;
        padding: 0.1rem 0.4rem;
        border-radius: 999px;
        background: #1e3a8a;
        color: #fff;
    }
    .uk-sidebar-footer {
        margin-top: auto;
        border-top: 1px solid #e2e8f0;
        padding: 0.85rem;
    }
    .uk-sidebar-user {
        display: flex;
        align-items: center;
        gap: 0.6rem;
        padding: 0.4rem 0.5rem;
        border-radius: 0.5rem;
        transition: background 0.15s;
    }
    .uk-sidebar-user:hover { background: #f8fafc; }
    .uk-sidebar-user-avatar {
        width: 34px;
        height: 34px;
        border-radius: 50%;
        background: linear-gradient(135deg, #64748b, #334155);
        color: #fff;
        font-size: 0.68rem;
        font-weight: 800;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
    }
    .uk-sidebar-user-info { flex: 1; min-width: 0; }
    .uk-sidebar-user-name {
        font-size: 0.78rem;
        font-weight: 700;
        color: #0b1b2f;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .uk-sidebar-user-email {
        font-size: 0.65rem;
        color: #94a3b8;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .uk-sidebar-logout-btn {
        width: 30px;
        height: 30px;
        border-radius: 0.4rem;
        border: 1px solid transparent;
        background: transparent;
        color: #94a3b8;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.75rem;
        transition: all 0.15s;
        flex-shrink: 0;
    }
    .uk-sidebar-logout-btn:hover {
        background: #fef2f2;
        color: #dc2626;
    }
</style>
Chat App Shell (Sidebar + Conversation)
JD
Chats
SJ
Sarah Johnson9:50 AM
Looks good to me...
2
MK
Mike Kim9:30 AM
Can you send the mockups?
DL
Design TeamYesterday
Anna: Palette ready 🎨
5
SJ
Sarah Johnson
Online
SJ
Hey! Did you review the new dashboard designs?
9:42 AM
Yes, looks great! 🔥
9:45 AM
SJ
I added the new analytics cards — let me know if spacing feels off.
9:47 AM
<div class="uk-chat-shell">
    <!-- Narrow icon rail -->
    <div class="uk-chat-rail">
        <div class="uk-chat-rail-logo">U</div>
        <button type="button" class="uk-chat-rail-btn uk-chat-rail-btn-active"><i class="fas fa-comment"></i></button>
        <button type="button" class="uk-chat-rail-btn"><i class="fas fa-users"></i></button>
        <button type="button" class="uk-chat-rail-btn"><i class="fas fa-bell"></i></button>
        <button type="button" class="uk-chat-rail-btn"><i class="fas fa-gear"></i></button>
        <div class="uk-chat-rail-avatar">JD</div>
    </div>

    <!-- Conversation list -->
    <div class="uk-chat-shell-list">
        <!-- Reuse .uk-conv-* markup from example 2 -->
    </div>

    <!-- Active conversation -->
    <div class="uk-chat-shell-main">
        <!-- Reuse .uk-chat-* markup from example 1 -->
    </div>
</div>

<style>
    .uk-chat-shell {
        display: grid;
        grid-template-columns: 64px 280px 1fr;
        background: #fff;
        border: 1px solid #e2e8f0;
        border-radius: 1rem;
        overflow: hidden;
        height: 560px;
        text-align: left;
    }
    .uk-chat-rail {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 0.5rem;
        padding: 0.75rem 0;
        background: #0b1b2f;
        border-right: 1px solid #1e293b;
    }
    .uk-chat-rail-logo {
        width: 36px;
        height: 36px;
        border-radius: 0.5rem;
        background: linear-gradient(135deg, #3b82f6, #1e3a8a);
        color: #fff;
        font-size: 1rem;
        font-weight: 900;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-bottom: 0.5rem;
    }
    .uk-chat-rail-btn {
        width: 40px;
        height: 40px;
        border-radius: 0.5rem;
        border: none;
        background: transparent;
        color: #64748b;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.9rem;
        transition: all 0.15s;
    }
    .uk-chat-rail-btn:hover {
        background: rgba(255,255,255,0.08);
        color: #e2e8f0;
    }
    .uk-chat-rail-btn-active {
        background: rgba(59,130,246,0.2);
        color: #60a5fa;
    }
    .uk-chat-rail-avatar {
        margin-top: auto;
        width: 34px;
        height: 34px;
        border-radius: 50%;
        background: linear-gradient(135deg, #64748b, #334155);
        color: #fff;
        font-size: 0.65rem;
        font-weight: 800;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .uk-chat-shell-list {
        border-right: 1px solid #e2e8f0;
        display: flex;
        flex-direction: column;
        background: #f8fafc;
        overflow: hidden;
    }
    .uk-chat-shell-main {
        display: flex;
        flex-direction: column;
        background: #fff;
        overflow: hidden;
    }
    @media (max-width: 900px) {
        .uk-chat-shell {
            grid-template-columns: 56px 1fr;
        }
        .uk-chat-shell-list {
            display: none;
        }
    }
    @media (max-width: 600px) {
        .uk-chat-shell {
            grid-template-columns: 1fr;
            height: 520px;
        }
        .uk-chat-rail {
            display: none;
        }
    }
</style>