{{-- Карточка заведения в выдаче каталога (ТЗ §8.4), разметка по макету `design/new design and ui`: фото — описание — колонка со слотами. Правая колонка отделена границей слева; на узких экранах она уходит вниз во всю ширину — за это отвечают классы у самой карточки, а не медиазапросы в CSS. --}} @props([ 'venue', 'availability' => null, 'isOpen' => null, 'distance' => null, 'isFavorite' => null, ]) @php $rating = $venue->rating; $hasRating = $rating !== null && $rating->reviews_count > 0; $photo = $venue->profile?->primaryPhoto?->previewUrl(); $status = $availability?->status; $favorite = $isFavorite ?? (($favorites ?? null)?->has($venue->id) ?? false); $meta = collect([ $venue->cuisines->first()?->name, $venue->profile?->average_bill ? $venue->profile->averageBillForHumans() : null, $venue->address, $distance === null ? null : ($distance < 1 ? round($distance * 1000).' м' : number_format($distance, 1, ',', '').' км'), ])->filter()->implode(' · '); $slots = $availability?->nearestSlotsForHumans($venue->timezone) ?? []; @endphp
@if ($photo) {{ $venue->name }} — {{ $venue->address }} @else {{ $venue->name }} @endif

{{ $venue->name }}

@if ($hasRating) {{ number_format((float) $rating->average_rating, 1, ',', '') }} @endif @if ($status && $status !== \App\Domain\Availability\Enums\AvailabilityStatus::Unknown) $status->isBookable() && $status !== \App\Domain\Availability\Enums\AvailabilityStatus::FewLeft, 'badge-accent' => $status === \App\Domain\Availability\Enums\AvailabilityStatus::FewLeft, 'badge-danger' => ! $status->isBookable(), ])>{{ $status->label() }} @elseif ($isOpen !== null) {{ $isOpen ? 'Открыто' : 'Закрыто' }} @endif
{{ $meta }}
@if ($venue->profile?->short_description)

{{ $venue->profile->short_description }}

@endif @if ($venue->features->isNotEmpty())
@foreach ($venue->features->take(4) as $feature) {{ $feature->name }} @endforeach
@endif
@if ($slots !== [])Сегодня@else Бронирование @endif
@if ($slots !== [])
@foreach ($slots as $slot) {{ $slot }} @endforeach
@endif