columns([ TextColumn::make('user.name') ->label('Utilisateur') ->searchable() ->sortable(), TextColumn::make('title') ->label('Titre') ->searchable() ->toggleable(isToggledHiddenByDefault: true) ->placeholder('—'), TextColumn::make('status') ->label('Statut') ->badge() ->color(fn (WorkoutSessionStatus $state): string => match ($state) { WorkoutSessionStatus::Active => 'warning', WorkoutSessionStatus::Completed => 'success', WorkoutSessionStatus::Abandoned => 'danger', }), TextColumn::make('started_at') ->label('Débutée le') ->dateTime() ->sortable(), TextColumn::make('total_volume') ->label('Volume total') ->numeric() ->sortable() ->placeholder('—'), ]) ->filters([ SelectFilter::make('status') ->label('Statut') ->options(WorkoutSessionStatus::class), Filter::make('started_at') ->label('Période') ->schema([ DatePicker::make('from')->label('Du'), DatePicker::make('until')->label('Au'), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when($data['from'] ?? null, fn (Builder $q, string $date): Builder => $q->whereDate('started_at', '>=', $date)) ->when($data['until'] ?? null, fn (Builder $q, string $date): Builder => $q->whereDate('started_at', '<=', $date)); }), ]) ->recordActions([ ViewAction::make(), DeleteAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]) ->defaultSort('started_at', 'desc'); } }