From ef725e28fe473990a628c19dd49ba1ef727d3040 Mon Sep 17 00:00:00 2001 From: igor_nadein Date: Fri, 27 Feb 2026 19:57:19 +0300 Subject: [PATCH] =?UTF-8?q?style:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=81=D1=82=D0=B8=D0=BB=D0=B8=20Notificat?= =?UTF-8?q?ionCenter=20=D0=BF=D0=BE=D0=B4=20=D0=B4=D0=B8=D0=B7=D0=B0=D0=B9?= =?UTF-8?q?=D0=BD=20AppShell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Изменения: - Кнопка: rounded-full как в AppShell, размер h-10 w-10 - Иконка Bell: size={18}, text-gray-600 - Badge: компактный дизайн -top-0.5 -right-0.5, размер 16px - Dropdown: rounded-xl, shadow-lg ring-1 ring-slate-100 - Цвета: sky вместо blue (sky-600, sky-50, sky-700) - Фон: slate-50/slate-100 вместо gray-50/gray-100 - Границы: border-slate-100 - Размеры текста: уменьшены для компактности (text-xs, text-[10px]) - Padding: уменьшен для более плотного размещения (p-3 вместо p-4) - Точка непрочитанных: w-1.5 h-1.5 вместо w-2 h-2 Адаптивность: - Добавлен variant prop ('default' | 'mobile') - Мобильная версия: border + bg-gray-50 (как другие кнопки) - Адаптивная ширина: w-80 sm:w-96 - AppShell: передан variant='mobile' для мобильной версии --- frontend/src/components/AppShell.tsx | 2 +- .../src/components/NotificationCenter.tsx | 70 +++++++++++-------- 2 files changed, 40 insertions(+), 32 deletions(-) diff --git a/frontend/src/components/AppShell.tsx b/frontend/src/components/AppShell.tsx index acde6d60..bae80966 100644 --- a/frontend/src/components/AppShell.tsx +++ b/frontend/src/components/AppShell.tsx @@ -170,7 +170,7 @@ function Header({ onOpenLeftNav, onOpenCalendar }: HeaderProps) {
- +
diff --git a/frontend/src/components/NotificationCenter.tsx b/frontend/src/components/NotificationCenter.tsx index 132f8c5e..bcd99cb9 100644 --- a/frontend/src/components/NotificationCenter.tsx +++ b/frontend/src/components/NotificationCenter.tsx @@ -7,7 +7,11 @@ import { useWebPush } from '@/hooks/useWebPush'; import { formatDistanceToNow } from 'date-fns'; import { ru } from 'date-fns/locale/ru'; -export function NotificationCenter() { +interface NotificationCenterProps { + variant?: 'default' | 'mobile'; +} + +export function NotificationCenter({ variant = 'default' }: NotificationCenterProps) { const [isOpen, setIsOpen] = useState(false); const [showSettings, setShowSettings] = useState(false); const dropdownRef = useRef(null); @@ -58,12 +62,16 @@ export function NotificationCenter() { setIsOpen(!isOpen); setShowSettings(false); }} - className="relative p-2 rounded-lg hover:bg-gray-100 transition-colors" + className={ + variant === 'mobile' + ? "relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full border border-gray-200 bg-gray-50 hover:bg-slate-100" + : "relative flex h-10 w-10 items-center justify-center rounded-full hover:bg-slate-100" + } aria-label="Уведомления" > - + {unreadCount > 0 && ( - + {unreadCount > 9 ? '9+' : unreadCount} )} @@ -71,60 +79,60 @@ export function NotificationCenter() { {/* Dropdown */} {isOpen && ( -
+
{/* Заголовок */} -
-

Уведомления

+
+

Уведомления

{unreadCount > 0 && ( )}
{/* Настройки Push */} {showSettings && ( -
-

Push уведомления

+
+

Push уведомления

{!isSupported ? ( -

+

Push уведомления не поддерживаются вашим браузером

) : permission === 'denied' ? ( -

+

Вы запретили уведомления. Измените настройки браузера.

) : (
- + {isSubscribed ? 'Включены' : 'Отключены'}