@props(['size' => 'full']) @php use Carbon\Carbon; $events = collect($data['ical'] ?? []) ->map(function (array $event): array { $start = null; $end = null; try { $start = isset($event['DTSTART']) ? Carbon::parse($event['DTSTART'])->setTimezone(config('app.timezone')) : null; } catch (Exception $e) { $start = null; } try { $end = isset($event['DTEND']) ? Carbon::parse($event['DTEND'])->setTimezone(config('app.timezone')) : null; } catch (Exception $e) { $end = null; } return [ 'summary' => $event['SUMMARY'] ?? 'Untitled event', 'location' => $event['LOCATION'] ?? null, 'start' => $start, 'end' => $end, ]; }) ->filter(fn ($event) => $event['start']) ->sortBy('start') ->take($size === 'quadrant' ? 5 : 8) ->values(); @endphp Date Time Event Location @forelse($events as $event) {{ $event['start']?->format('D, M j') }} {{ $event['start']?->format('H:i') }} @if($event['end']) – {{ $event['end']->format('H:i') }} @endif {{ $event['summary'] }} {{ $event['location'] ?? '—' }} @empty No events available @endforelse