columns([ TextColumn::make('user.name') ->label('کاربر') ->searchable() ->sortable(), TextColumn::make('type') ->label('نوع') ->badge() ->formatStateUsing(fn (NotificationType $state): string => $state->label()), TextColumn::make('title') ->label('عنوان') ->searchable() ->limit(40), IconColumn::make('read_at') ->label('خوانده شده') ->boolean() ->getStateUsing(fn ($record): bool => $record->read_at !== null), TextColumn::make('created_at') ->label('تاریخ ایجاد') ->jalaliDateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->defaultSort('created_at', 'desc') ->filters([ SelectFilter::make('type') ->label('نوع') ->options(collect(NotificationType::cases())->mapWithKeys(fn (NotificationType $type) => [$type->value => $type->label()])), TernaryFilter::make('read_at') ->label('وضعیت') ->placeholder('همه') ->trueLabel('خوانده شده') ->falseLabel('خوانده نشده') ->queries( true: fn ($query) => $query->whereNotNull('read_at'), false: fn ($query) => $query->whereNull('read_at'), ), ]) ->recordActions([ ViewAction::make(), EditAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }