@php $slides = $slides ?? collect(); $tourTypes = $tourTypes ?? collect(); @endphp
{{-- SLIDES --}}
@foreach ($slides as $i => $s) @php $overlay = max(0, min(0.9, (float) ($s->overlay_opacity ?? 0.45))); $isActive = $i === 0; $img = !empty($s->image_path) ? asset('storage/' . ltrim($s->image_path, '/')) : null; $vid = !empty($s->video_path) ? asset('storage/' . ltrim($s->video_path, '/')) : null; $poster = !empty($s->video_poster) ? asset('storage/' . ltrim($s->video_poster, '/')) : ($img ?: null); $mediaType = $s->media_type ?? 'image'; $videoSource = $s->video_source ?? 'upload'; $videoUrl = $s->video_url ?? null; $youtubeId = null; if (!empty($videoUrl)) { preg_match( '/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([A-Za-z0-9_-]{11})/', $videoUrl, $matches ); $youtubeId = $matches[1] ?? null; } @endphp
{{-- Media --}} @if ($mediaType === 'video' && $videoSource === 'upload' && $vid) @elseif ($mediaType === 'video' && $videoSource === 'youtube' && $youtubeId) {{-- mobile fallback poster --}} @if ($poster)
@endif {{-- youtube background only desktop/tablet --}} @else
@endif {{-- Overlay --}}
{{-- premium light accents --}}
{{-- Text content (per slide) --}}
@if (!empty($s->kicker))
{{ $s->kicker }}
@endif @if (!empty($s->title))

{{ $s->title }}

@endif {{-- @if (!empty($s->subtitle))

{{ $s->subtitle }}

@endif @if (!empty($s->cta_label) && !empty($s->cta_url)) @endif --}}
@endforeach
{{-- dark base gradient so content + filter always readable --}}
{{-- FILTER BAR --}}
{{-- Tour Type --}}
Tour Type
{{-- Days Count --}}
Duration
{{-- Button --}}
{{-- Build custom tour --}}
Want something more personal? Build your trip in minutes.
Build Custom Tour
{{-- Dots --}} @if ($slides->count() > 1)
@foreach ($slides as $i => $s) @endforeach
@endif {{-- Reserve space so next section doesn’t overlap --}}