toArray(); return $form ->schema([ Section::make('Post Information') ->description('Add a new post') ->schema([ TextInput::make('post')->label('Post Title') ->required() ->live(1) ->columnSpanFull() ->afterStateUpdated(fn (Set $set, ?string $state) => $set('slug', Str::slug($state))), TextInput::make('slug') ->required() ->columnSpan(2), Select::make('category_id') ->relationship('category', 'name') ->label('Category') ->searchable() ->required() ->preload(10) ->columnSpan(1), Select::make('is_published') ->options([ 0 => 'Draft', 1 => 'Published' ]) ->searchable() ->default(1) ->required() ->label('Status') ->columnSpan(1), RichEditor::make('content') ->label('Page Content') ->required() ->columnSpan(4), FileUpload::make('post_image') ->label('Custom Image (Optional)') ->disk('public') ->directory('media/posts') ->columnSpan(4) ->preserveFilenames() ->image() ->maxSize(2048), ]) ->columns(4), Section::make('Customize Post') ->description('Modifiy Post SEO and Meta Information') ->schema([ KeyValue::make('meta') ->label('Meta (Optional)') ->keyPlaceholder('Name') ->valuePlaceholder('Content'), Textarea::make('custom_header')->rows(6)->label('Custom Header (Optional)'), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('post')->searchable(), TextColumn::make('slug'), TextColumn::make('category.name'), IconColumn::make('is_published')->label('Published')->boolean(), TextColumn::make('created_at') ->label('Created At'), ]) ->defaultSort('created_at', 'desc') ->filters([ SelectFilter::make('is_published') ->label('Status') ->options([ 0 => 'Draft', 1 => 'Published', ]), ]) ->actions([ Tables\Actions\ViewAction::make(), Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), Tables\Actions\Action::make('togglePublished') ->label('Toggle Published') ->icon('heroicon-o-eye') ->action(function (Blog $record) { $record->update(['is_published' => !$record->is_published]); }), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListBlogs::route('/'), 'create' => Pages\CreateBlog::route('/create'), 'edit' => Pages\EditBlog::route('/{record}/edit'), ]; } }