wasrusgen1-crm/Mokap/telegram_bot_mockup.html

362 lines
10 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=390px, initial-scale=1.0">
<title>Telegram Bot Mockup</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', -apple-system, sans-serif;
background: #0E1621;
width: 390px;
height: 844px;
overflow: hidden;
position: relative;
}
/* STATUS BAR */
.status-bar {
height: 44px;
background: #17212B;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
position: relative;
z-index: 10;
}
.status-time { font-size: 15px; font-weight: 600; color: #fff; }
.status-icons { display: flex; align-items: center; gap: 6px; }
.status-icons svg { fill: #fff; }
/* TOP BAR */
.top-bar {
height: 56px;
background: #17212B;
border-bottom: 1px solid rgba(255,255,255,.06);
display: flex;
align-items: center;
padding: 0 12px;
gap: 12px;
}
.back-btn {
color: #2AABEE;
font-size: 17px;
display: flex;
align-items: center;
gap: 4px;
}
.back-btn svg { fill: #2AABEE; }
.chat-info { flex: 1; }
.chat-name {
font-size: 16px;
font-weight: 600;
color: #fff;
}
.chat-status {
font-size: 13px;
color: #8D9DB5;
margin-top: 1px;
}
.avatar {
width: 38px; height: 38px;
border-radius: 50%;
background: linear-gradient(135deg, #003E7E, #4338CA);
display: flex; align-items: center; justify-content: center;
font-family: 'Montserrat', sans-serif;
font-weight: 900;
font-size: 13px;
color: #fff;
letter-spacing: .5px;
flex-shrink: 0;
}
/* CHAT AREA */
.chat-area {
background: #0E1621;
height: calc(844px - 44px - 56px - 64px);
padding: 16px 12px;
overflow: hidden;
position: relative;
}
/* DATE DIVIDER */
.date-div {
text-align: center;
margin-bottom: 20px;
opacity: 0;
animation: fadeIn .4s ease .5s forwards;
}
.date-div span {
background: rgba(141,157,181,.18);
color: #8D9DB5;
font-size: 12px;
padding: 4px 10px;
border-radius: 12px;
}
/* MESSAGE BUBBLE */
.msg-wrap {
display: flex;
align-items: flex-end;
gap: 8px;
margin-bottom: 4px;
opacity: 0;
transform: translateY(12px);
animation: slideUp .45s ease 1.2s forwards;
}
.msg-avatar {
width: 28px; height: 28px;
border-radius: 50%;
background: linear-gradient(135deg, #003E7E, #4338CA);
display: flex; align-items: center; justify-content: center;
font-size: 9px; font-weight: 900; color: #fff;
flex-shrink: 0;
letter-spacing: .3px;
}
.bubble {
background: #1C2733;
border-radius: 14px 14px 14px 2px;
padding: 10px 14px;
max-width: 280px;
position: relative;
}
.bubble-name {
font-size: 13px;
font-weight: 600;
color: #2AABEE;
margin-bottom: 4px;
}
.bubble-text {
font-size: 14px;
color: #F5F5F5;
line-height: 1.5;
}
.bubble-time {
font-size: 11px;
color: #8D9DB5;
text-align: right;
margin-top: 4px;
}
/* ALERT ITEMS */
.alert-item {
display: flex;
align-items: flex-start;
gap: 8px;
margin-top: 8px;
padding: 8px 10px;
border-radius: 10px;
opacity: 0;
}
.alert-item.danger { background: rgba(239,68,68,.12); animation: fadeIn .3s ease forwards; }
.alert-item.warn { background: rgba(245,158,11,.12); animation: fadeIn .3s ease forwards; }
.alert-item.info { background: rgba(99,102,241,.12); animation: fadeIn .3s ease forwards; }
.alert-icon { font-size: 16px; flex-shrink: 0; line-height: 1; margin-top: 1px; }
.alert-text { font-size: 13px; color: #E2E8F0; line-height: 1.45; }
.alert-text strong { color: #fff; font-weight: 600; }
/* TYPING INDICATOR */
.typing {
display: flex;
align-items: flex-end;
gap: 8px;
margin-bottom: 8px;
opacity: 0;
animation: fadeIn .3s ease .6s forwards, fadeOut .3s ease 1.1s forwards;
}
.typing-bubble {
background: #1C2733;
border-radius: 14px 14px 14px 2px;
padding: 12px 16px;
display: flex;
gap: 4px;
align-items: center;
}
.dot {
width: 7px; height: 7px;
border-radius: 50%;
background: #8D9DB5;
animation: bounce .9s infinite;
}
.dot:nth-child(2) { animation-delay: .15s; }
.dot:nth-child(3) { animation-delay: .30s; }
/* CTA BUTTON */
.cta-wrap {
margin-top: 12px;
opacity: 0;
animation: slideUp .4s ease 3.4s forwards;
}
.cta-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
width: 100%;
background: linear-gradient(135deg, #003E7E, #1D4ED8);
color: #fff;
border: none;
border-radius: 12px;
padding: 13px 16px;
font-size: 14px;
font-weight: 700;
cursor: pointer;
font-family: inherit;
}
.cta-btn svg { fill: #fff; width: 16px; height: 16px; }
/* BOTTOM BAR */
.bottom-bar {
position: absolute;
bottom: 0; left: 0; right: 0;
height: 64px;
background: #17212B;
border-top: 1px solid rgba(255,255,255,.06);
display: flex;
align-items: center;
padding: 0 12px;
gap: 10px;
}
.input-area {
flex: 1;
background: #232E3C;
border-radius: 22px;
height: 40px;
display: flex;
align-items: center;
padding: 0 16px;
}
.input-placeholder {
font-size: 14px;
color: #4A5568;
}
.mic-btn {
width: 40px; height: 40px;
border-radius: 50%;
background: #2AABEE;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.mic-btn svg { fill: #fff; width: 18px; height: 18px; }
/* ANIMATIONS */
@keyframes fadeIn {
to { opacity: 1; }
}
@keyframes fadeOut {
to { opacity: 0; }
}
@keyframes slideUp {
to { opacity: 1; transform: translateY(0); }
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-4px); }
}
/* Задержки для alert items */
.alert-item:nth-child(1) { animation-delay: 1.8s; }
.alert-item:nth-child(2) { animation-delay: 2.2s; }
.alert-item:nth-child(3) { animation-delay: 2.6s; }
</style>
</head>
<body>
<!-- STATUS BAR -->
<div class="status-bar">
<span class="status-time">9:00</span>
<div class="status-icons">
<svg width="16" height="12" viewBox="0 0 16 12"><rect x="0" y="3" width="3" height="9" rx="1"/><rect x="4.5" y="2" width="3" height="10" rx="1"/><rect x="9" y="0" width="3" height="12" rx="1"/><rect x="13.5" y="1" width="2.5" height="11" rx="1" opacity=".3"/></svg>
<svg width="15" height="12" viewBox="0 0 15 12"><path d="M7.5 2.5C9.8 2.5 11.9 3.5 13.3 5L14.7 3.6C12.9 1.8 10.3.7 7.5.7S2.1 1.8.3 3.6L1.7 5C3.1 3.5 5.2 2.5 7.5 2.5z"/><path d="M7.5 5.5C9 5.5 10.4 6.1 11.4 7.1L12.8 5.7C11.4 4.4 9.5 3.7 7.5 3.7S3.6 4.4 2.2 5.7L3.6 7.1C4.6 6.1 6 5.5 7.5 5.5z"/><circle cx="7.5" cy="10" r="1.8"/></svg>
<svg width="25" height="12" viewBox="0 0 25 12"><rect x="0" y="1" width="21" height="10" rx="3" stroke="#fff" stroke-width="1" fill="none"/><rect x="1.5" y="2.5" width="14" height="7" rx="1.5" fill="#fff"/><rect x="22" y="3.5" width="3" height="5" rx="1.5" fill="#fff" opacity=".4"/></svg>
</div>
</div>
<!-- TOP BAR -->
<div class="top-bar">
<div class="back-btn">
<svg width="12" height="20" viewBox="0 0 12 20"><path d="M10 2L2 10l8 8" stroke="#2AABEE" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg>
<span style="font-size:16px;color:#2AABEE">19</span>
</div>
<div class="avatar">CRM</div>
<div class="chat-info">
<div class="chat-name">@wasrusgen1 CRM</div>
<div class="chat-status">бот</div>
</div>
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#8D9DB5" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
</div>
<!-- CHAT AREA -->
<div class="chat-area">
<!-- Date divider -->
<div class="date-div"><span>сегодня</span></div>
<!-- Typing indicator -->
<div class="typing">
<div class="msg-avatar" style="font-size:7px">CRM</div>
<div class="typing-bubble">
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</div>
</div>
<!-- Main message -->
<div class="msg-wrap">
<div class="msg-avatar" style="font-size:7px">CRM</div>
<div class="bubble">
<div class="bubble-name">@wasrusgen1 CRM</div>
<div class="bubble-text">
☀️ <strong>До́брое у́тро!</strong><br>
Сего́дня тре́буют вни́мания:
</div>
<!-- Alert items -->
<div class="alert-item danger">
<span class="alert-icon">🔴</span>
<div class="alert-text"><strong>2 зака́за просро́чены</strong><br>Ивано́ва, Петро́в</div>
</div>
<div class="alert-item warn">
<span class="alert-icon">⚠️</span>
<div class="alert-text"><strong>Конфли́кт с кли́ентом</strong><br>Козло́в Р. — тре́бует ответа</div>
</div>
<div class="alert-item info">
<span class="alert-icon">📉</span>
<div class="alert-text"><strong>Конве́рсия сало́на Побе́ды</strong><br>8% за неде́лю</div>
</div>
<!-- CTA -->
<div class="cta-wrap">
<button class="cta-btn">
<svg viewBox="0 0 24 24"><path d="M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"/></svg>
Откры́ть да́шборд →
</button>
</div>
<div class="bubble-time">9:00 ✓✓</div>
</div>
</div>
</div>
<!-- BOTTOM BAR -->
<div class="bottom-bar">
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#8D9DB5" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
<div class="input-area">
<span class="input-placeholder">Сообщение</span>
</div>
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#8D9DB5" stroke-width="2"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>
<div class="mic-btn">
<svg viewBox="0 0 24 24"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2M12 19v4M8 23h8"/></svg>
</div>
</div>
</body>
</html>