columns([ TextColumn::make('title') ->searchable() ->sortable(), TextColumn::make('customer.name') ->searchable() ->sortable(), TextColumn::make('customerProduct.product.name') ->label('Product') ->placeholder('General') ->sortable(), TextColumn::make('feedbackChannel.name') ->label('Channel'), TextColumn::make('tags.name') ->badge() ->separator(','), TextColumn::make('status') ->badge() ->color(fn(string $state): string => match ($state) { 'pending' => 'warning', 'processing' => 'info', 'resolved' => 'success', 'closed' => 'gray', default => 'gray', }), TextColumn::make('currentDepartment.name') ->label('Department') ->toggleable(), TextColumn::make('assignedTo.name') ->label('Assigned To') ->toggleable(), IconColumn::make('is_escalated') ->label('Escalated') ->boolean() ->toggleable(), TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(), ]) ->filters([ SelectFilter::make('status') ->options([ 'pending' => 'Pending', 'processing' => 'Processing', 'resolved' => 'Resolved', 'closed' => 'Closed', ]), SelectFilter::make('feedback_channel_id') ->relationship('feedbackChannel', 'name') ->label('Channel'), SelectFilter::make('current_department_id') ->relationship('currentDepartment', 'name') ->label('Department'), SelectFilter::make('assigned_to') ->relationship('assignedTo', 'name') ->label('Assigned To'), ]) ->recordActions([ EditAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]) ->defaultSort('created_at', 'desc'); } }