schema([ Forms\Components\Section::make('Basic Information') ->schema([ Forms\Components\TextInput::make('name') ->required() ->maxLength(255) ->live(onBlur: true) ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('slug', str($state)->slug())), Forms\Components\TextInput::make('slug') ->required() ->maxLength(255) ->unique(ignoreRecord: true), Forms\Components\TextInput::make('headquarters') ->maxLength(255), Forms\Components\DatePicker::make('founded_date') ->label('Founded Date') ->format('Y-m-d'), ])->columns(2), Forms\Components\Section::make('Additional Details') ->schema([ Forms\Components\TextInput::make('website') ->url() ->prefix('https://') ->maxLength(255), Forms\Components\RichEditor::make('description') ->columnSpanFull() ->toolbarButtons([ 'bold', 'italic', 'link', 'bulletList', 'orderedList', 'h2', 'h3', ]), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('name') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('headquarters') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('founded_date') ->date() ->sortable(), Tables\Columns\TextColumn::make('rides_count') ->counts('rides') ->label('Rides') ->sortable(), Tables\Columns\TextColumn::make('website') ->searchable() ->url(fn ($state) => str($state)->start('https://')), Tables\Columns\TextColumn::make('updated_at') ->dateTime() ->sortable() ->toggleable(), ]) ->filters([ Tables\Filters\Filter::make('has_rides') ->query(fn (Builder $query) => $query->has('rides')) ->label('Has Rides'), Tables\Filters\Filter::make('no_rides') ->query(fn (Builder $query) => $query->doesntHave('rides')) ->label('No Rides'), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\ViewAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]); } public static function getRelations(): array { return [ RelationManagers\RidesRelationManager::class, ]; } public static function getPages(): array { return [ 'index' => Pages\ListDesigners::route('/'), 'create' => Pages\CreateDesigner::route('/create'), 'edit' => Pages\EditDesigner::route('/{record}/edit'), ]; } }