Add room categories, documents module, guest settings, and booking improvements

- New pages: RoomCategoriesPage (category CRUD with photos, color, amenities) and DocumentsPage (template constructor with variable substitution, print packages)
- Sidebar: added "Категории номеров" link under rooms, Documents module via modulesData
- App.tsx: routes for /room-categories and /documents
- RoomModal: now accepts categories prop for categoryId select
- BookingModal: added additional services dropdown (breakfast, transfer, parking etc.) accumulating into booking total; summary shows services breakdown
- SettingsPage: new "Гости" section with guest tag CRUD (add/edit/remove, color picker, live preview); booking section toggle "Показывать поле Источник бронирования"
- modulesData: added Documents module entry (free tier, sidebar item)
- RoomsPage: passes MOCK_CATEGORIES to RoomModal
- ReviewsPage: rewritten with auto-redirect logic, threshold slider, platform settings tab

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 22:17:54 +03:00
parent 56df6711e4
commit 96dfd755ed
11 changed files with 1816 additions and 529 deletions

View File

@@ -1,7 +1,7 @@
import {
Wifi, CreditCard, Tv2, KeyRound,
BarChart3, Globe, CalendarCheck2, Sparkles, Network,
ShoppingCart, Star, UtensilsCrossed, CalendarClock, ArrowLeftRight,
ShoppingCart, Star, UtensilsCrossed, CalendarClock, ArrowLeftRight, FileText,
} from 'lucide-react'
import type { ElementType } from 'react'
@@ -367,6 +367,31 @@ export const MODULES_DATA: ModuleDef[] = [
icon: CalendarClock,
},
},
{
id: 'documents',
name: 'Конструктор документов',
tagline: 'Печатные документы для гостей',
description:
'Создайте шаблоны регистрационных карт, счетов и договоров с переменными-подстановками. При заселении распечатайте весь пакет или выбранные документы одним кликом.',
icon: FileText,
iconBg: 'bg-slate-100 dark:bg-slate-900/40',
iconColor: 'text-slate-600 dark:text-slate-400',
accentColor: 'bg-slate-500',
price: 0,
badge: 'Входит в тариф',
features: [
'Редактор шаблонов с переменными ({guest_name}, {room_number} и др.)',
'Типы: регистрационная карта, счёт, договор, информация',
'Пакет документов при заселении',
'Выборочная и групповая печать',
'Предпросмотр с подстановкой данных гостя',
],
sidebarItem: {
path: '/documents',
label: 'Документы',
icon: FileText,
},
},
{
id: 'migration',
name: 'Миграция данных',