schema([ Select::make('event_id') ->label(__('admin.photos.fields.event')) ->options(Event::query()->orderBy('name')->pluck('name', 'id')) ->searchable() ->required(), FileUpload::make('file_path') ->label(__('admin.photos.fields.photo')) ->image() ->disk('public') ->directory('photos') ->visibility('public') ->required(), Toggle::make('is_featured') ->label(__('admin.photos.fields.is_featured')) ->default(false), KeyValue::make('metadata') ->label(__('admin.photos.fields.metadata')) ->keyLabel(__('admin.common.key')) ->valueLabel(__('admin.common.value')), ])->columns(2); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\ImageColumn::make('file_path') ->label(__('admin.photos.table.photo')) ->disk('public') ->visibility('public'), Tables\Columns\TextColumn::make('id')->sortable(), Tables\Columns\TextColumn::make('event.name') ->label(__('admin.photos.table.event')) ->searchable(), Tables\Columns\TextColumn::make('likes_count')->label(__('admin.photos.table.likes')), Tables\Columns\IconColumn::make('is_featured')->boolean(), Tables\Columns\TextColumn::make('created_at')->since(), ]) ->filters([]) ->actions([ Actions\EditAction::make(), Actions\Action::make('feature') ->label(__('admin.photos.actions.feature')) ->visible(fn (Photo $record) => ! $record->is_featured) ->action(fn (Photo $record) => $record->update(['is_featured' => true])) ->icon('heroicon-o-star'), Actions\Action::make('unfeature') ->label(__('admin.photos.actions.unfeature')) ->visible(fn (Photo $record) => $record->is_featured) ->action(fn (Photo $record) => $record->update(['is_featured' => false])) ->icon('heroicon-o-star'), Actions\DeleteAction::make(), ]) ->bulkActions([ Actions\BulkAction::make('feature') ->label(__('admin.photos.actions.feature_selected')) ->icon('heroicon-o-star') ->action(fn ($records) => $records->each->update(['is_featured' => true])), Actions\BulkAction::make('unfeature') ->label(__('admin.photos.actions.unfeature_selected')) ->icon('heroicon-o-star') ->action(fn ($records) => $records->each->update(['is_featured' => false])), Actions\DeleteBulkAction::make(), ]); } public static function getPages(): array { return [ 'index' => Pages\ListPhotos::route('/'), 'view' => Pages\ViewPhoto::route('/{record}'), 'edit' => Pages\EditPhoto::route('/{record}/edit'), ]; } }