You’re mixing Filament v3 form API with Filament v4 “Schemas”. In v4, Filament injects a `Filament\Schemas\Schema` into `form()`, not `Filament\Forms\Form`. That’s why your page is getting: > Argument #1 ($form) must be of type Filament\Forms\Form, Filament\Schemas\Schema given ### Fix (swap to Schemas API) Update your page to accept/return `Schema`, and build **components()** instead of **schema()** at the top level. Also swap `Forms\Get|Set` for the Schemas utilities. ```php components([ Wizard::make([ Step::make('category') ->label('Loại hỗ trợ') ->description('Chọn loại sự cố') ->schema([ Select::make('ticket_category_id') ->label('Loại sự cố') ->options(TicketCategory::pluck('name', 'id')->toArray()) ->required() ->live() ->afterStateUpdated(function ($state, Set $set) { $set('code', 'TIC-' . strtoupper(Str::random(6))); }), TextInput::make('code') ->label('Mã phiếu') ->disabled() ->dehydrated() ->required(), Select::make('department_id') ->label('Đơn vị') ->options(DonVi::pluck('name', 'id')->toArray()) ->searchable() ->required(), ]) ->columns(2), Step::make('details') ->label('Chi tiết') ->description('Thông tin chi tiết') ->schema(function (Get $get) { if ($this->isVehicleCardCategory($get('ticket_category_id'))) { return [ TextInput::make('full_name')->label('Họ và tên')->required(), TextInput::make('employee_code')->label('Mã nhân sự')->required(), TextInput::make('email')->label('Email')->email()->required(), TextInput::make('phone')->label('Số điện thoại')->tel()->required(), TextInput::make('vehicle_type')->label('Loại xe')->required(), TextInput::make('vehicle_color')->label('Màu xe')->required(), TextInput::make('plate_number')->label('Biển số xe')->required(), FileUpload::make('id_card_image') ->label('Ảnh CCCD/CMND') ->image() ->directory('tickets/vehicle_cards') ->visibility('public'), FileUpload::make('vehicle_image') ->label('Ảnh xe') ->image() ->directory('tickets/vehicle_cards') ->visibility('public'), Textarea::make('note')->label('Ghi chú')->rows(3), ]; } return [ Textarea::make('description') ->label('Mô tả chi tiết') ->rows(6) ->required(), FileUpload::make('attachments') ->label('Đính kèm hình ảnh') ->multiple() ->image() ->imagePreviewHeight('150') ->maxSize(2048) ->directory('tickets/attachments') ->visibility('public'), ]; }), ])->submitAction( Action::make('submit') ->label('Gửi phiếu') ->action('submit') ->color('primary') ), ]) ->statePath('data'); } } ``` Key changes: * `public function form(Schema $schema): Schema` (v4) instead of `Form`. * Use `$schema->components([...])` at the top level (inside, you still call `->schema([...])` on layout components like `Wizard` or `Step`). * Use `Filament\Schemas\Components\Utilities\Get` / `Set` in callbacks. * For `options()`, pass an array: `->pluck(...)->toArray()`. Docs for the new Schemas approach and Wizard live here (handy for future pages): Filament 4 Schemas overview and Wizards. ([Filament][1]) If you’re actually on Filament v3, the other option is to revert your imports back to `Filament\Forms\Components\Wizard` and keep `Form $form`. But given your stack trace is passing `Filament\Schemas\Schema`, you’re clearly on v4, so the patch above is the right move. ([Filament][2]) Want me to scan the rest of the page for any other v3→v4 mismatches (namespaces, actions, uploads)? [1]: https://filamentphp.com/docs/4.x/schemas/overview/ "Overview - Schemas - Filament" [2]: https://filamentphp.com/docs/3.x/forms/layout/wizard?utm_source=chatgpt.com "Wizard - Forms"