Fix mobile UI bugs from screenshots
- Notifications panel: fixed positioning on mobile (full-width below topbar, no more overflow behind calendar) - BookingModal: two-column layout stacks vertically on mobile (flex-col sm:flex-row) - TariffsPage cards: price + actions merged into right column, no text overlap - DiscountsPage cards: same fix, price text reduced to text-lg - ReviewsPage: action buttons moved inside content div (no longer overlap guest name) - RoomCategoriesPage: edit/delete buttons stack as column, 'Номера' text hidden on mobile - PosPage: show desktop-only message on mobile instead of broken layout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -508,40 +508,40 @@ export function TariffsPage() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Price modifier */}
|
||||
<div className="text-right shrink-0">
|
||||
<p className={cn(
|
||||
'text-sm font-semibold',
|
||||
tariff.modifierValue > 0 ? 'text-amber-600 dark:text-amber-400'
|
||||
: tariff.modifierValue < 0 ? 'text-emerald-600 dark:text-emerald-400'
|
||||
: 'text-slate-500',
|
||||
)}>
|
||||
{modLabel}
|
||||
</p>
|
||||
<p className="text-xs text-slate-400">к базовой цене</p>
|
||||
</div>
|
||||
|
||||
{/* Actions */}
|
||||
<div className="flex items-center gap-1 shrink-0">
|
||||
<button
|
||||
onClick={() => toggleActive(tariff.id)}
|
||||
className={cn('p-1.5 rounded-lg transition-colors', tariff.isActive ? 'text-brand-600 hover:bg-brand-50' : 'text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-700')}
|
||||
title={tariff.isActive ? 'Деактивировать' : 'Активировать'}
|
||||
>
|
||||
{tariff.isActive ? <ToggleRight size={20} /> : <ToggleLeft size={20} />}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setModal(tariff)}
|
||||
className="p-1.5 rounded-lg text-slate-400 hover:text-brand-600 hover:bg-brand-50 dark:hover:bg-brand-900/20 transition-colors"
|
||||
>
|
||||
<Edit2 size={15} />
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setDeleteTarget(tariff)}
|
||||
className="p-1.5 rounded-lg text-slate-400 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors"
|
||||
>
|
||||
<Trash2 size={15} />
|
||||
</button>
|
||||
{/* Price + Actions (right column) */}
|
||||
<div className="shrink-0 flex flex-col items-end gap-2">
|
||||
<div className="text-right">
|
||||
<p className={cn(
|
||||
'text-sm font-semibold',
|
||||
tariff.modifierValue > 0 ? 'text-amber-600 dark:text-amber-400'
|
||||
: tariff.modifierValue < 0 ? 'text-emerald-600 dark:text-emerald-400'
|
||||
: 'text-slate-500',
|
||||
)}>
|
||||
{modLabel}
|
||||
</p>
|
||||
<p className="text-xs text-slate-400">к базе</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-1">
|
||||
<button
|
||||
onClick={() => toggleActive(tariff.id)}
|
||||
className={cn('p-1.5 rounded-lg transition-colors', tariff.isActive ? 'text-brand-600 hover:bg-brand-50' : 'text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-700')}
|
||||
title={tariff.isActive ? 'Деактивировать' : 'Активировать'}
|
||||
>
|
||||
{tariff.isActive ? <ToggleRight size={20} /> : <ToggleLeft size={20} />}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setModal(tariff)}
|
||||
className="p-1.5 rounded-lg text-slate-400 hover:text-brand-600 hover:bg-brand-50 dark:hover:bg-brand-900/20 transition-colors"
|
||||
>
|
||||
<Edit2 size={15} />
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setDeleteTarget(tariff)}
|
||||
className="p-1.5 rounded-lg text-slate-400 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors"
|
||||
>
|
||||
<Trash2 size={15} />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user