import { BarChart3, TrendingUp, Users, BedDouble, ArrowUpRight, ArrowDownRight } from 'lucide-react' import { cn } from '../lib/utils' const KPI = [ { label: 'Загрузка (OCC)', value: '73.4%', delta: '+5.2%', up: true }, { label: 'ADR', value: '₽ 4 820', delta: '+8.1%', up: true }, { label: 'RevPAR', value: '₽ 3 538', delta: '+14.3%', up: true }, { label: 'Отменённые', value: '6.2%', delta: '-1.4%', up: true }, ] const CHANNEL_DATA = [ { name: 'Прямые', pct: 38, color: 'bg-brand-500', revenue: '₽ 412 000' }, { name: 'Booking.com', pct: 31, color: 'bg-blue-500', revenue: '₽ 336 200' }, { name: 'Airbnb', pct: 18, color: 'bg-rose-500', revenue: '₽ 195 100' }, { name: 'Другие', pct: 13, color: 'bg-slate-400', revenue: '₽ 140 800' }, ] const MONTHS = ['Окт', 'Ноя', 'Дек', 'Янв', 'Фев', 'Мар'] const OCC = [61, 68, 79, 65, 70, 73] const maxOcc = Math.max(...OCC) export function ReportsPage() { return (

Аналитика

Март 2026 • Grand Palace Hotel

{/* KPI cards */}
{KPI.map(k => (

{k.label}

{k.value}

{k.up ? : } {k.delta} vs прошлый месяц
))}
{/* Occupancy chart */}

Загрузка по месяцам

{MONTHS.map((m, i) => (
{OCC[i]}%
{m}
))}
{/* Channel breakdown */}

Источники бронирований

{CHANNEL_DATA.map(c => (
{c.name} {c.revenue}
{c.pct}%
))}
{/* Room stats */}

Топ номеров по выручке

{[ { n: '401', t: 'Penthouse', occ: '89%', rev: '₽ 96 200' }, { n: '202', t: 'Suite', occ: '84%', rev: '₽ 74 800' }, { n: '302', t: 'Junior Suite', occ: '81%', rev: '₽ 55 100' }, { n: '201', t: 'Deluxe', occ: '78%', rev: '₽ 40 600' }, { n: '101', t: 'Standard', occ: '71%', rev: '₽ 24 900' }, ].map(r => ( ))}
Номер Тип Загрузка Выручка
{r.n} {r.t} {r.occ} {r.rev}
) }