recordTitleAttribute('start_date') ->columns([ TextColumn::make('start_date') ->label(Membership::getAttributeLabel('start_date')) ->date() ->sortable(), TextColumn::make('end_date') ->label(Membership::getAttributeLabel('end_date')) ->date() ->sortable(), TextColumn::make('status') ->label(Membership::getAttributeLabel('status')) ->formatStateUsing(fn (string $state) => Membership::getAttributeLabel($state)) ->badge() ->color(fn (string $state): string => match ($state) { 'active' => 'success', 'expired' => 'danger', 'pending' => 'warning', }), TextColumn::make('package.name') ->label(Membership::getAttributeLabel('package_id')), TextColumn::make('amount') ->label(Membership::getAttributeLabel('amount')) ->money('EUR') ->sortable(), TextColumn::make('payment_status') ->label(Membership::getAttributeLabel('payment_status')) ->formatStateUsing(fn (string $state) => Membership::getAttributeLabel($state)) ->badge() ->color(fn (string $state): string => match ($state) { 'paid' => 'success', 'unpaid' => 'danger', 'partial' => 'warning', }), TextColumn::make('created_at') ->label(Membership::getAttributeLabel('created_at')) ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->defaultSort('start_date', 'desc') ->headerActions([ CreateAction::make(), ]) ->recordActions([ EditAction::make(), DeleteAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }