> $items */ public function __construct(public readonly Collection $items) {} public function via(object $notifiable): array { return ['database']; } public function toDatabase(object $notifiable): array { $first = $this->items->first(); return FilamentNotification::make() ->title(trans_choice('panel.expiring.notification.title', $this->items->count(), ['count' => $this->items->count()])) ->body($this->items ->map(fn (array $item) => $item['title'].' — '.__("panel.expiring.events.{$item['event']}", [ 'when' => $item['at']->diffForHumans(), 'date' => $item['at']->isoFormat('LL'), ])) ->implode("\n")) ->icon('heroicon-o-clock') ->iconColor('warning') ->actions($this->items->count() === 1 ? [ Action::make('open') ->label(__('panel.expiring.notification.open')) ->url($first['url']) ->markAsRead(), ] : []) ->getDatabaseMessage(); } }