Team Chat App Hero

Team Chat

Where teams come together

Real-time messaging, seamless file sharing, and powerful integrations. Everything your team needs to collaborate effectively.

Channels
general
engineering
5
design
marketing
2
Online
Emily Zhang
Emily Zhang
Marcus Chen
Marcus Chen
Sofia Rodriguez
Sofia Rodriguez
general
Emily Zhang
Emily Zhang10:32 AM

Just pushed the new feature to staging! 🚀

Marcus Chen
Marcus Chen10:34 AM

Looks great! I'll start testing right away.

Sofia Rodriguez
Sofia Rodriguez10:36 AM

Can we schedule a quick sync to go over the design feedback?

Message #general
User

New message

David: Hey, quick question...

About this block

Team Chat App HeroPRO

Split-layout hero with full chat interface mockup featuring channels sidebar, message threads, online users, and floating notification. Perfect for collaboration and messaging apps.

Hero75: Team Chat App Hero

Split hero pairing marketing copy with a fully mocked team-chat interface: a channel sidebar with unread counts, a message thread with avatars and a pinned-message indicator, an online-users list, and a floating new-message notification that animates continuously.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/hero75?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/hero75?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/hero75.tsx and the shadcn/ui badge, button, and card components it depends on.

Quick start

The installed file exports hero75Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.

tsx
import { Hero75, hero75Demo } from "@/components/beste/block/hero75";

export default function Page() {
  return <Hero75 {...hero75Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Hash } from "lucide-react";
import { Hero75 } from "@/components/beste/block/hero75";

export default function Page() {
  return (
    <Hero75
      badge={{ label: "Team Chat", variant: "outline" }}
      heading="Where teams come together"
      description="Real-time messaging and file sharing built for fast-moving teams."
      buttons={[{ label: "Get Started Free", href: "/signup" }]}
      channels={[
        { icon: Hash, name: "general", active: true },
        { icon: Hash, name: "engineering", unread: 5 },
      ]}
      messages={[
        { sender: { name: "Emily Zhang" }, content: "Just pushed to staging!", time: "10:32 AM", pinned: true },
        { sender: { name: "Marcus Chen" }, content: "Looks great, testing now.", time: "10:34 AM" },
      ]}
      onlineUsers={[{ name: "Emily Zhang", status: "online" }]}
      displayPosition="left"
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }–Badge above the heading
headingstring–Main headline (required prop, no default)
descriptionstring–Supporting paragraph
buttonsHeroButton[][]CTA buttons below the description
channelsChannelItem[][]Sidebar channel list inside the chat mockup
messagesMessageItem[][]Message thread rendered in the mockup's main pane
onlineUsersOnlineUser[][]Online-users list under the channel sidebar
displayPosition"left" | "right""left"Which side the chat mockup renders on at the lg breakpoint
classNamestring–Extra classes for the outer <section>
ts
type HeroButton = {
  label: string;
  href: string;
  variant?: "default" | "outline" | "secondary" | "ghost" | "link";
};

type ChannelItem = {
  icon: LucideIcon;
  name: string;
  unread?: number;
  active?: boolean;
};

type MessageItem = {
  sender: { name: string; avatar?: string };
  content: string;
  time: string;
  pinned?: boolean;
};

type OnlineUser = {
  name: string;
  avatar?: string;
  status: "online" | "away" | "busy";
};

Behavior notes

  • Unlike the enum-based icon props used elsewhere in this registry, ChannelItem.icon takes a LucideIcon component reference directly (e.g. Hash), so callers import the icon from lucide-react and pass the component itself rather than a string key.
  • The channels sidebar (and its nested online-users list) is hidden below sm (hidden ... sm:block); mobile viewports show only the messages pane.
  • displayPosition reorders the text and mockup columns with lg:[&>*:first-child]:order-2, an arbitrary-variant selector on the grid's first child that only takes effect at lg and above.
  • A "New message" notification card is hardcoded outside the messages/onlineUsers props and runs a continuous CSS float keyframe animation via inline style, positioned with absolute -right-4 sm:-right-6 outside the chat Card.
  • Message and online-user avatars fall back to the first letter of the person's name in a plain <span> whenever avatar is omitted.

More Hero blocks

View all Hero
PRO

hero43

Email App Hero with Inbox Mockup

Split-layout hero with interactive email client mockup featuring sidebar, message list, and floating notification. Perfect for email and communication apps.

PRO

hero77

Calendar Schedule Hero

Split-layout hero with weekly calendar mockup showing events, attendees, and floating reminder notification. Perfect for scheduling and calendar apps.

PRO

hero25

Dashboard Preview Hero

Split-layout hero with interactive dashboard mockup featuring stats cards, line chart, and recent activity feed. Perfect for SaaS and analytics platforms.

PRO

hero76

Kanban Board Hero

Split-layout hero with interactive kanban board mockup showing tasks with priorities, tags, assignees, and floating completion stats. Perfect for project management tools.

PRO

hero53

Mobile App Hero with Phone Mockup

Split-layout hero with realistic iPhone mockup, notch detail, and App Store/Play Store download buttons. Perfect for mobile app landing pages.

PRO

hero103

Mobile App Hero with Phone Mockup

Fullscreen hero with app store buttons and phone mockup over inset background video