import { Building2, Users, TrendingUp, DollarSign, CheckCircle2, AlertCircle, Plus } from 'lucide-react' import { MOCK_HOTELS, MOCK_USERS } from '../data/mockData' import { cn, PLAN_COLORS, PLAN_LABELS } from '../lib/utils' import { Badge } from '../components/ui/Badge' export function AdminDashboard() { const activeHotels = MOCK_HOTELS.filter(h => h.isActive).length const totalRooms = MOCK_HOTELS.reduce((s, h) => s + (h.roomCount ?? 0), 0) return (
{/* Header */}

Панель администратора

HotelSync SaaS · Обзор платформы

{/* Stats */}
{[ { label: 'Всего отелей', value: MOCK_HOTELS.length, icon: Building2, color: 'text-brand-600 dark:text-brand-400', bg: 'bg-brand-50 dark:bg-brand-900/20' }, { label: 'Активных', value: activeHotels, icon: CheckCircle2, color: 'text-emerald-600 dark:text-emerald-400', bg: 'bg-emerald-50 dark:bg-emerald-900/20' }, { label: 'Всего номеров', value: totalRooms, icon: TrendingUp, color: 'text-amber-600 dark:text-amber-400', bg: 'bg-amber-50 dark:bg-amber-900/20' }, { label: 'Пользователей', value: MOCK_USERS.length, icon: Users, color: 'text-violet-600 dark:text-violet-400', bg: 'bg-violet-50 dark:bg-violet-900/20' }, ].map(s => { const Icon = s.icon return (

{s.value}

{s.label}

) })}
{/* Revenue by plan */}

Отели

{MOCK_HOTELS.map(hotel => (
{hotel.name.charAt(0)}

{hotel.name}

{hotel.address} · {hotel.roomCount} номеров

{PLAN_LABELS[hotel.plan]}
))}

Статистика по тарифам

{(['starter', 'pro', 'enterprise'] as const).map(plan => { const count = MOCK_HOTELS.filter(h => h.plan === plan).length const pct = Math.round((count / MOCK_HOTELS.length) * 100) return (
{PLAN_LABELS[plan]} {count} отелей ({pct}%)
) })}

Пользователи

{MOCK_USERS.map(u => (
{u.name.charAt(0)}

{u.name}

{u.email}

{u.role}
))}
) }