/* * Telegram-Style Badges * Основано на практиках Telegram Web K * https://github.com/morethanwords/tweb */ /* ═══════════════════════════════════════════════════════════ БАЗОВЫЙ СТИЛЬ БЭЙДЖА (КАК В TELEGRAM) ═══════════════════════════════════════════════════════════ */ .badge-telegram { --badge-height: 20px; --badge-padding-x: 6px; --badge-font-size: 11px; display: inline-flex; align-items: center; justify-content: center; height: var(--badge-height); min-width: var(--badge-height); padding: 0 var(--badge-padding-x); font-size: var(--badge-font-size); font-weight: 600; line-height: 1; color: #fff; background: var(--bs-danger); border-radius: calc(var(--badge-height) / 2); /* Идеальные круги */ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), background-color 0.2s ease, opacity 0.2s ease; } .badge-telegram:empty { display: none; } /* ═══════════════════════════════════════════════════════════ РАЗМЕРЫ (КАК В TELEGRAM) ═══════════════════════════════════════════════════════════ */ .badge-telegram-sm { --badge-height: 18px; --badge-padding-x: 5px; --badge-font-size: 10px; } .badge-telegram-lg { --badge-height: 24px; --badge-padding-x: 8px; --badge-font-size: 12px; } .badge-telegram-xl { --badge-height: 28px; --badge-padding-x: 10px; --badge-font-size: 14px; } /* ═══════════════════════════════════════════════════════════ ЦВЕТОВЫЕ ВАРИАНТЫ ═══════════════════════════════════════════════════════════ */ .badge-telegram-primary { background: var(--bs-primary); } .badge-telegram-muted { background: var(--bs-secondary); } .badge-telegram-success { background: var(--bs-success); } .badge-telegram-warning { background: var(--bs-warning); } .badge-telegram-info { background: var(--bs-info); } /* Особый стиль для "mentions" */ .badge-telegram-mention { background: #0088cc; } /* ═══════════════════════════════════════════════════════════ АНИМАЦИИ (КАК В TELEGRAM) ═══════════════════════════════════════════════════════════ */ /* Появление */ @keyframes badge-scale-in { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } } .badge-telegram.animate-in { animation: badge-scale-in 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); } /* Пульсация при новом сообщении */ @keyframes badge-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.15); } 100% { transform: scale(1); } } .badge-telegram.pulse { animation: badge-pulse 0.6s ease-out; } /* Исчезновение */ @keyframes badge-scale-out { from { transform: scale(1); opacity: 1; } to { transform: scale(0); opacity: 0; } } .badge-telegram.animate-out { animation: badge-scale-out 0.15s ease-in; } /* ═══════════════════════════════════════════════════════════ ПОЗИЦИОНИРОВАНИЕ (КАК В TELEGRAM) ═══════════════════════════════════════════════════════════ */ /* На аватаре справа снизу */ .badge-telegram-avatar { position: absolute; bottom: -2px; right: -2px; border: 2px solid var(--bs-body-bg); } /* На кнопке справа сверху */ .badge-telegram-button { position: absolute; top: -6px; right: -10px; z-index: 10; } /* В списке справа */ .badge-telegram-inline { margin-left: 0.5rem; } /* ═══════════════════════════════════════════════════════════ СПЕЦИАЛЬНЫЕ ЭФФЕКТЫ ═══════════════════════════════════════════════════════════ */ /* Точка (без числа) */ .badge-telegram-dot { width: var(--badge-height); height: var(--badge-height); padding: 0; min-width: auto; } /* Hover эффект на интерактивных бэйджах */ .badge-telegram-interactive { cursor: pointer; } .badge-telegram-interactive:hover { transform: scale(1.05); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2); } .badge-telegram-interactive:active { transform: scale(0.95); } /* ═══════════════════════════════════════════════════════════ АДАПТИВНОСТЬ ═══════════════════════════════════════════════════════════ */ @media (max-width: 576px) { .badge-telegram { --badge-height: 18px; --badge-padding-x: 5px; --badge-font-size: 10px; } .badge-telegram-lg { --badge-height: 22px; --badge-padding-x: 7px; --badge-font-size: 11px; } } /* ═══════════════════════════════════════════════════════════ ТЕМНАЯ ТЕМА ═══════════════════════════════════════════════════════════ */ [data-bs-theme="dark"] .badge-telegram-avatar { border-color: var(--bs-dark); } [data-bs-theme="dark"] .badge-telegram { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } /* ═══════════════════════════════════════════════════════════ УТИЛИТЫ ═══════════════════════════════════════════════════════════ */ /* Скрыть при нулевом значении */ .badge-telegram[data-count="0"] { display: none; } /* Ограничение текста для больших чисел */ .badge-telegram-limit { max-width: 50px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } /* Градиентный бэйдж (для премиум фич) */ .badge-telegram-premium { background: linear-gradient(90deg, #9275ff 0%, #ff8b8b 100%); } /* Звёздочка (для особых меток) */ .badge-telegram-star { background: linear-gradient(to right, #ffcd3a, #ffaa00); }