All Prompts
All Prompts

herolanding-pagetailwindanimated-buttonchat-mockupresponsiveinteractivegradientcta
Landing Hero with Chat App Preview & Animated CTA
Hero-секция для лендинга: заголовок, подтекст, анимированная кнопка CTA, интерактивный чат-макет. Tailwind CSS, адаптивный дизайн.
Prompt
<section class="relative z-10">
<div class="max-w-6xl sm:px-6 lg:px-8 sm:pt-16 bg-center bg-[url(https://images.unsplash.com/photo-1522745078452-5b62b553a3ea?q=80&w=1200&auto=format&fit=crop)] bg-cover mt-0 mr-auto mb-8 ml-auto pt-0 pr-0 pl-0">
<div class="flex flex-col text-center mr-auto ml-auto space-y-6 items-center" style="padding-top:72px">
<div class="mb-2">
<span class="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-1 text-xs font-medium text-zinc-200 backdrop-blur font-sans" style="">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5 text-violet-300"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z" class=""></path><path d="M20 2v4" class=""></path><path d="M22 4h-4" class=""></path><circle cx="4" cy="20" r="2" class=""></circle></svg>
New: AI Recaps for threads
</span>
</div>
<h1 class="sm:text-6xl md:text-7xl text-4xl font-light text-white tracking-tighter font-bricolage" style="">
Conversations that move work forward
</h1>
<p class="max-w-2xl sm:text-lg text-base text-zinc-300 font-sans" style="">
Realtime messaging, channels, voice notes, and AI summaries—secure by default and lightning fast across devices.
</p>
<div class="flex gap-3 mt-6 mb-0 pb-[54px] items-center">
<button type="button" class="button">
<div class="points_wrapper">
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
<i class="point"></i>
</div>
<span class="inner">
Sign Up
<svg class="icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5">
<path d="M5 12h14" class=""></path>
<path d="m12 5 7 7-7 7" class=""></path>
</svg>
</span>
<style>
.button {
cursor: pointer;
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
overflow: hidden;
transition: all 0.25s ease;
background: radial-gradient(65.28% 65.28% at 50% 100%,
rgba(34, 211, 238, 0.8) 0%,
rgba(34, 211, 238, 0) 100%),
linear-gradient(0deg, #2563eb, #2563eb);
border-radius: 9999px;
border: none;
outline: none;
padding: 12px 18px;
min-height: 48px;
min-width: 102px;
}
.button::before,
.button::after {
content: "";
position: absolute;
transition: all 0.5s ease-in-out;
z-index: 0;
}
.button::before {
inset: 1px;
background: linear-gradient(177.95deg,
rgba(255, 255, 255, 0.19) 0%,
rgba(255, 255, 255, 0) 100%);
border-radius: 9999px;
}
.button::after {
inset: 2px;
background: radial-gradient(65.28% 65.28% at 50% 100%,
rgba(34, 211, 238, 0.8) 0%,
rgba(34, 211, 238, 0) 100%),
linear-gradient(0deg, #2563eb, #2563eb);
border-radius: 9999px;
}
.button:active {
transform: scale(0.95);
}
.points_wrapper {
overflow: hidden;
width: 100%;
height: 100%;
pointer-events: none;
position: absolute;
z-index: 1;
}
.points_wrapper .point {
bottom: -10px;
position: absolute;
animation: floating-points infinite ease-in-out;
pointer-events: none;
width: 2px;
height: 2px;
background-color: #fff;
border-radius: 9999px;
}
@keyframes floating-points {
0% {
transform: translateY(0);
}
85% {
opacity: 0;
}
100% {
transform: translateY(-55px);
opacity: 0;
}
}
.points_wrapper .point:nth-child(1) {
left: 10%;
opacity: 1;
animation-duration: 2.35s;
animation-delay: 0.2s;
}
.points_wrapper .point:nth-child(2) {
left: 30%;
opacity: 0.7;
animation-duration: 2.5s;
animation-delay: 0.5s;
}
.points_wrapper .point:nth-child(3) {
left: 25%;
opacity: 0.8;
animation-duration: 2.2s;
animation-delay: 0.1s;
}
.points_wrapper .point:nth-child(4) {
left: 44%;
opacity: 0.6;
animation-duration: 2.05s;
}
.points_wrapper .point:nth-child(5) {
left: 50%;
opacity: 1;
animation-duration: 1.9s;
}
.points_wrapper .point:nth-child(6) {
left: 75%;
opacity: 0.5;
animation-duration: 1.5s;
animation-delay: 1.5s;
}
.points_wrapper .point:nth-child(7) {
left: 88%;
opacity: 0.9;
animation-duration: 2.2s;
animation-delay: 0.2s;
}
.points_wrapper .point:nth-child(8) {
left: 58%;
opacity: 0.8;
animation-duration: 2.25s;
animation-delay: 0.2s;
}
.points_wrapper .point:nth-child(9) {
left: 98%;
opacity: 0.6;
animation-duration: 2.6s;
animation-delay: 0.1s;
}
.points_wrapper .point:nth-child(10) {
left: 65%;
opacity: 1;
animation-duration: 2.5s;
animation-delay: 0.2s;
}
.inner {
z-index: 2;
gap: 6px;
position: relative;
width: 100%;
color: white;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
font-weight: 500;
line-height: 1.5;
transition: color 0.2s ease-in-out;
}
.inner svg.icon {
width: 18px;
height: 18px;
transition: transform 0.3s ease;
stroke: white;
fill: none;
}
.button:hover svg.icon {
transform: translateX(2px);
}
.button:hover svg.icon path {
animation: dash 0.8s linear forwards;
}
@keyframes dash {
0% {
stroke-dasharray: 0, 20;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 10, 10;
stroke-dashoffset: -5;
}
100% {
stroke-dasharray: 20, 0;
stroke-dashoffset: -10;
}
}
</style>
</button>
<a href="#" class="inline-flex items-center gap-2 hover:bg-white/5 text-sm font-medium text-zinc-200 border-white/10 border rounded-full pt-2.5 pr-5 pb-2.5 pl-5 backdrop-blur-lg font-sans" style="">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4"><path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" class=""></path></svg>
See how it works
</a>
</div>
</div>
<!-- App Preview -->
<div class="relative sm:mt-16 mt-12">
<!-- Glow -->
<div class="absolute inset-0 -top-8 mx-auto h-56 max-w-5xl rounded-[28px] bg-gradient-to-r from-violet-500/30 via-fuchsia-500/20 to-indigo-500/30 blur-2xl"></div>
<section class="relative ring-1 ring-white/10 supports-[backdrop-filter]:bg-white/5 overflow-hidden text-white bg-white/5 border-slate-50/10 border rounded-2xl backdrop-blur-xl">
<!-- Sidebar (icons only) -->
<nav class="hidden sm:flex flex-col absolute inset-y-0 left-0 w-14 z-10 pt-4 pr-2 pb-4 pl-2 backdrop-blur items-center justify-between" aria-label="Primary">
<div class="flex flex-col gap-3 items-center">
<button type="button" class="h-10 w-10 ring-1 ring-white/20 flex bg-white/10 rounded-xl items-center justify-center" title="Home" aria-label="Home">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="home" class="lucide lucide-home w-5 h-5 text-white"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" class=""></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" class=""></path></svg>
</button>
<div class="h-px w-8 bg-white/10"></div>
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Search" aria-label="Search">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="search" class="lucide lucide-search w-5 h-5"><path d="m21 21-4.34-4.34" class=""></path><circle cx="11" cy="11" r="8" class=""></circle></svg>
</button>
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Contacts" aria-label="Contacts">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="users" class="lucide lucide-users w-5 h-5"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class=""></path><path d="M16 3.128a4 4 0 0 1 0 7.744" class=""></path><path d="M22 21v-2a4 4 0 0 0-3-3.87" class=""></path><circle cx="9" cy="7" r="4" class=""></circle></svg>
</button>
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Calls" aria-label="Calls">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="phone" class="lucide lucide-phone w-5 h-5"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384" class=""></path></svg>
</button>
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Files" aria-label="Files">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="folder" class="lucide lucide-folder w-5 h-5"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" class=""></path></svg>
</button>
</div>
<div class="flex flex-col items-center gap-3">
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Settings" aria-label="Settings">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="settings" class="lucide lucide-settings w-5 h-5"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915" class=""></path><circle cx="12" cy="12" r="3" class=""></circle></svg>
</button>
<button type="button" class="h-10 w-10 rounded-xl text-slate-300 hover:bg-white/10 flex items-center justify-center" title="Help" aria-label="Help">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-lucide="help-circle" class="lucide lucide-help-circle w-5 h-5"><circle cx="12" cy="12" r="10" class=""></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" class=""></path><path d="M12 17h.01" class=""></path></svg>
</button>
</div>
</nav>
<div class="grid grid-cols-1 lg:grid-cols-2 sm:pl-16">
<!-- Left: Conversations -->
<div class="sm:p-8 lg:p-10 pt-5 pr-5 pb-5 pl-5">
<div class="space-y-6">
<div class="flex items-center justify-between">
<h2 class="sm:text-2xl text-xl text-white tracking-tight font-bricolage font-light" style="">Inbox</h2>
<div class="flex items-center gap-2 text-slate-400">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4"><path d="M3 7h18" class=""></path><path d="M3 12h18" class=""></path><path d="M3 17h18" class=""></path></svg>
<span class="text-xs sm:text-sm font-medium font-sans" style="">Channels</span>
</div>
</div>
<div class="ring-1 ring-white/10 bg-white/5 rounded-xl p-3">
<div class="flex items-center gap-2 rounded-lg bg-white/5 ring-1 ring-white/10 px-3 py-2">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-slate-300"><path d="m21 21-4.34-4.34" class=""></path><circle cx="11" cy="11" r="8" class=""></circle></svg>
<input placeholder="Search messages" class="bg-transparent outline-none text-sm text-slate-200 placeholder:text-slate-400 flex-1">
</div>
<div class="mt-3 space-y-1" id="chat-list">
<button class="w-full text-left px-3 py-2 rounded-lg hover:bg-white/5 ring-1 ring-transparent hover:ring-white/10 flex items-center gap-3">
<span class="inline-flex h-2 w-2 rounded-full bg-emerald-400"></span>
<div class="min-w-0 flex-1">
<p class="text-sm text-slate-200 truncate font-sans" style=""># product-launch</p>
<p class="text-xs text-slate-400 truncate font-sans" style="">Lina: Final checks on the landing…</p>
</div>
<span class="text-[10px] text-slate-500 font-sans" style="">2m</span>
</button>
<button class="w-full text-left px-3 py-2 rounded-lg bg-white/5 ring-1 ring-white/10 flex items-center gap-3">
<span class="inline-flex h-2 w-2 rounded-full bg-violet-400"></span>
<div class="min-w-0 flex-1">
<p class="text-sm text-slate-200 truncate font-sans" style=""># design-review</p>
<p class="text-xs text-slate-400 truncate font-sans" style="">You: Shared the Figma link</p>
</div>
<span class="text-[10px] text-slate-500 font-sans" style="">14m</span>
</button>
<button class="w-full text-left px-3 py-2 rounded-lg hover:bg-white/5 ring-1 ring-transparent hover:ring-white/10 flex items-center gap-3">
<span class="inline-flex h-6 w-6 items-center justify-center rounded-md bg-white/5 ring-1 ring-white/10">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class=""><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class=""></path><circle cx="9" cy="7" r="4" class=""></circle></svg>
</span>
<div class="min-w-0 flex-1">
<p class="text-sm text-slate-200 truncate font-sans" style="">Lina Park</p>
<p class="text-xs text-slate-400 truncate font-sans" style="">DM · “Pushing a hotfix”</p>
</div>
<span class="text-[10px] text-slate-500 font-sans" style="">1h</span>
</button>
</div>
</div>
<div class="space-y-4">
<h3 class="text-lg tracking-tight font-semibold text-white font-sans" style="">Quick Actions</h3>
<div class="grid grid-cols-2 gap-2">
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-slate-300"><path d="M3 7h18" class=""></path><path d="M3 12h18" class=""></path><path d="M3 17h18" class=""></path></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">All channels</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + K</span>
</div>
</div>
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="w-[14px] h-[14px]" style="width: 14px; height: 14px; color: rgb(203, 213, 225);"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" class=""></path></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">Start a call</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + Shift + C</span>
</div>
</div>
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-slate-300"><path d="m21 21-4.34-4.34" class=""></path><circle cx="11" cy="11" r="8" class=""></circle></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">Search</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + F</span>
</div>
</div>
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-slate-300"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class=""></path><circle cx="9" cy="7" r="4" class=""></circle></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">Direct messages</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + D</span>
</div>
</div>
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-slate-300"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" class=""></path></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">Files & media</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + U</span>
</div>
</div>
<div class="flex gap-2 ring-1 ring-white/10 hover:bg-white/10 transition-colors bg-white/5 rounded-lg pt-2 pr-3 pb-2 pl-3 items-start">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-slate-300"><circle cx="12" cy="12" r="10" class=""></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" class=""></path><path d="M12 17h.01" class=""></path></svg>
<div class="min-w-0 flex-1">
<span class="text-xs text-slate-300 font-sans block" style="">Help center</span>
<span class="text-[10px] text-slate-500 font-sans" style="">⌘ + ?</span>
</div>
</div>
</div>
<div class="pt-2">
<div class="flex items-center justify-between text-[11px] text-slate-400">
<span class="font-sans" style="">Press ⌘ + / for more shortcuts</span>
<span class="inline-flex items-center gap-1 font-sans" style="">
<span class="inline-flex h-4 w-4 items-center justify-center rounded bg-white/10 text-[9px]">6</span>
unread
</span>
</div>
</div>
</div>
</div>
</div>
<!-- Right: Chat thread -->
<div class="lg:border-t-0 lg:border-l border-white/10 border-t pr-4 pl-4">
<div class="sm:p-8 lg:p-10 pt-5 pr-5 pb-5 pl-5 space-y-5">
<!-- Channel header -->
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<span class="inline-flex h-8 w-8 items-center justify-center ring-1 ring-white/20 bg-white/10 rounded-md">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-white"><path d="M3 7h18" class=""></path><path d="M3 12h18" class=""></path><path d="M3 17h18" class=""></path></svg>
</span>
<div class="">
<p class="text-white font-medium font-sans" style=""># product-launch</p>
<p class="text-[12px] text-slate-400 font-sans" style="">42 members · 6 online</p>
</div>
</div>
<div class="flex items-center gap-2">
<button class="p-2 rounded-lg bg-white/5 ring-1 ring-white/10 hover:bg-white/10" type="button" aria-label="Start call">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-slate-200"><path d="M22 16.92A7 7 0 0 1 16.92 22C9.17 22 2 14.83 2 7.08A7 7 0 0 1 7.08 2L10 4v4L7 9a12.29 12.29 0 0 0 8 8l1-3h4Z" class=""></path></svg>
</button>
<button class="p-2 rounded-lg bg-white/5 ring-1 ring-white/10 hover:bg-white/10" type="button" aria-label="Settings">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-slate-200"><circle cx="12" cy="12" r="3" class=""></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9A1.65 1.65 0 0 0 10 3.09V3a2 2 0 1 1 4 0v.09A1.65 1.65 0 0 0 15 4.6a1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9c0 .66.26 1.3.73 1.77.47.47 1.11.73 1.77.73h.09a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z" class=""></path></svg>
</button>
</div>
</div>
<!-- Messages -->
<div id="messages" class="ring-1 ring-white/10 bg-white/5 rounded-xl p-4 space-y-4 max-h-[340px] overflow-y-auto scroll-smooth">
<div class="flex items-start gap-3">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/a7a0f0f5-9a19-4888-87bf-ff8780ff8008_320w.jpg" alt="avatar" class="h-8 w-8 ring-1 ring-white/10 object-cover rounded-full">
<div class="min-w-0">
<div class="flex items-center gap-2">
<p class="text-sm font-medium text-white font-sans" style="">Lina</p>
<span class="text-[11px] text-slate-400 font-sans" style="">09:28</span>
</div>
<div class="mt-1 inline-flex px-3 py-2 rounded-2xl bg-white/5 ring-1 ring-white/10">
<p class="text-sm text-slate-200 font-sans" style="">Morning! Finalizing the announcement copy now.</p>
</div>
</div>
</div>
<div class="flex items-start gap-3">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/3eba3b9c-9fcf-4da6-9371-116a96e97133_320w.jpg" alt="avatar" class="h-8 w-8 ring-1 ring-white/10 object-cover rounded-full">
<div class="min-w-0">
<div class="flex items-center gap-2">
<p class="text-sm font-medium text-white font-sans" style="">You</p>
<span class="text-[11px] text-slate-400 font-sans" style="">09:30</span>
</div>
<div class="mt-1 inline-flex px-3 py-2 rounded-2xl bg-gradient-to-br from-violet-500/20 to-indigo-500/20 ring-1 ring-white/10">
<p class="text-sm text-slate-100 font-sans" style="">Awesome. Can we add the new pricing table screenshot?</p>
</div>
</div>
</div>
<div class="flex items-start gap-3">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/a7a0f0f5-9a19-4888-87bf-ff8780ff8008_320w.jpg" alt="avatar" class="h-8 w-8 ring-1 ring-white/10 object-cover rounded-full">
<div class="min-w-0">
<div class="flex items-center gap-2">
<p class="text-sm font-medium text-white font-sans" style="">Lina</p>
<span class="text-[11px] text-slate-400 font-sans" style="">09:31</span>
</div>
<div class="mt-1 space-y-2">
<div class="inline-flex px-3 py-2 rounded-2xl bg-white/5 ring-1 ring-white/10">
<p class="text-sm text-slate-200 font-sans" style="">Yep, dropping assets shortly.</p>
</div>
<div class="inline-flex items-center gap-2 px-3 py-2 rounded-xl bg-white/5 ring-1 ring-white/10">
<span class="h-8 w-12 overflow-hidden ring-1 ring-white/10 bg-white/10 rounded-lg"></span>
<span class="h-8 w-12 rounded-lg overflow-hidden ring-1 ring-white/10 bg-white/10"></span>
<span class="text-xs text-slate-400 font-sans" style="">2 files</span>
</div>
</div>
</div>
</div>
</div>
<!-- Composer -->
<div class="ring-1 ring-white/10 bg-white/5 rounded-xl p-2">
<form id="chat-form" class="flex gap-2 items-start">
<button type="button" class="p-2 rounded-lg hover:bg-white/10 text-slate-200" aria-label="Add">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4.5 w-4.5"><path d="M12 5v14" class=""></path><path d="M5 12h14" class=""></path></svg>
</button>
<div class="flex-1">
<textarea id="chat-input" rows="1" placeholder="Message #product-launch" class="w-full resize-none outline-none placeholder:text-slate-500 text-sm text-slate-100 bg-transparent pt-2 pr-2 pb-2 pl-2"></textarea>
</div>
<div class="flex items-center gap-1">
<button type="button" class="p-2 rounded-lg hover:bg-white/10 text-slate-200" aria-label="Attach">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-4.5 w-4.5"><path d="M13.5 8.5 5.9 16a3 3 0 1 0 4.24 4.24L18 12.38a5 5 0 0 0-7.07-7.07L5 11.24" class=""></path></svg>
</button>
<button type="submit" class="inline-flex gap-1.5 hover:opacity-95 text-xs font-medium text-white bg-gradient-to-br from-violet-500 to-indigo-600 rounded-lg pt-2 pr-3 pb-2 pl-3 items-center" style="">
Send
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="m22 2-7 20-4-9-9-4Z" class=""></path><path d="M22 2 11 13" class=""></path></svg>
</button>
</div>
</form>
</div>
<!-- AI Recap -->
<div class="ring-1 ring-white/10 bg-white/5 rounded-xl p-4">
<div class="flex items-center justify-between mb-2">
<div class="flex items-center gap-2">
<span class="inline-flex h-6 w-6 items-center justify-center ring-1 ring-violet-500/30 bg-violet-500/20 rounded-md">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-violet-300"><path d="m12 6 7 4-7 4-7-4 7-4Z" class=""></path><path d="m19 10v6l-7 4-7-4v-6" class=""></path></svg>
</span>
<h4 class="text-sm font-medium text-white tracking-tight font-sans" style="">AI Recap</h4>
</div>
<button class="text-xs text-violet-300 hover:text-violet-200 font-sans" type="button" style="">Refresh</button>
</div>
<ul class="space-y-1.5 text-[13px] text-slate-300 list-disc pl-5">
<li class="font-sans" style="">Announcement copy ready; assets incoming.</li>
<li class="font-sans" style="">Add updated pricing table screenshot to hero.</li>
<li class="font-sans" style="">QA pass after embedding assets.</li>
</ul>
</div>
</div>
</div>
</div>
<script>
(() => {
const form = document.getElementById('chat-form');
const input = document.getElementById('chat-input');
const messages = document.getElementById('messages');
function scrollToBottom() {
messages.scrollTop = messages.scrollHeight;
}
function addMessage(text, who = 'You') {
const row = document.createElement('div');
row.className = 'flex items-start gap-3';
const avatar = who === 'You' ? 'https://i.pravatar.cc/100?img=12' : 'https://i.pravatar.cc/100?img=59';
row.innerHTML = `
<img src="https://images.unsplash.com/photo-1621619856624-42fd193a0661?w=1080&q=80" alt="avatar" class="h-8 w-8 rounded-full ring-1 ring-white/10">
<div class="min-w-0">
<div class="flex items-center gap-2">
<p class="text-sm font-medium text-white">${who}</p>
<span class="text-[11px] text-slate-400">${new Date().toLocaleTimeString([], {hour:'2-digit', minute:'2-digit'})}</span>
</div>
<div class="mt-1 inline-flex px-3 py-2 rounded-2xl ${who === 'You' ? 'bg-gradient-to-br from-violet-500/20 to-indigo-500/20' : 'bg-white/5'} ring-1 ring-white/10">
<p class="text-sm ${who === 'You' ? 'text-slate-100' : 'text-slate-200'}">${text}</p>
</div>
</div>
`;
messages.appendChild(row);
scrollToBottom();
}
form?.addEventListener('submit', (e) => {
e.preventDefault();
const value = (input?.value || '').trim();
if (!value) return;
addMessage(value, 'You');
input.value = '';
setTimeout(() => addMessage('Noted! I’ll update the deck and ping you when ready.', 'Lina'), 900);
});
// Auto-expand textarea rows
input?.addEventListener('input', () => {
input.style.height = 'auto';
input.style.height = Math.min(input.scrollHeight, 120) + 'px';
});
})();
</script>
</section>
</div>
</div>
</section>