Fix mobile responsiveness across all pages

- PosPage: rooms list becomes horizontal scroll row on mobile instead of w-56 sidebar
- AvailabilityPage: edit panel stacks below grid on mobile (was fixed w-80 side panel)
- UsersPage roles tab: sidebar stacks above permissions on mobile
- All page containers: p-6 → p-4 md:p-6 (TariffsPage, DiscountsPage, MaintenancePage, ReportsPage, DynamicPricingPage, GuestsPage, LoyaltyPage)
- Stats grids: lg:grid-cols-4 → md:grid-cols-4 (GuestsPage, TariffsPage, DiscountsPage, MaintenancePage, ReportsPage, LoyaltyPage)
- Modal form grids: grid-cols-3 → grid-cols-1 sm:grid-cols-3, grid-cols-5 → grid-cols-3 sm:grid-cols-5, grid-cols-4 → grid-cols-2 sm:grid-cols-4
- PosPage modals: fixed w-80/w-96 → responsive w-[calc(100vw-2rem)] sm:w-80/96

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 00:27:43 +03:00
parent 91e58ff994
commit 2fc66d1e84
10 changed files with 62 additions and 35 deletions

View File

@@ -140,8 +140,8 @@ function DiscountModal({
}
>
<div className="space-y-4">
<div className="grid grid-cols-3 gap-3">
<div className="col-span-2">
<div className="grid grid-cols-1 sm:grid-cols-3 gap-3">
<div className="sm:col-span-2">
<label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1.5">Название *</label>
<input type="text" className="input" placeholder="Корпоративная скидка"
value={form.name} onChange={e => set('name', e.target.value)} />
@@ -285,7 +285,7 @@ export function DiscountsPage() {
setDiscounts(prev => prev.map(d => d.id === id ? { ...d, isActive: !d.isActive } : d))
return (
<div className="p-6 space-y-6">
<div className="p-4 md:p-6 space-y-6">
{/* Header */}
<div className="flex items-center justify-between">
<div>
@@ -301,7 +301,7 @@ export function DiscountsPage() {
</div>
{/* Stats */}
<div className="grid grid-cols-2 lg:grid-cols-4 gap-3">
<div className="grid grid-cols-2 md:grid-cols-4 gap-3">
{[
{ label: 'Всего скидок', value: discounts.length },
{ label: 'Активных', value: discounts.filter(d => d.isActive).length },