schema([ TextInput::make('name')->required()->maxLength(255), TextInput::make('email')->email()->required()->maxLength(255)->unique(ignoreRecord: true), TextInput::make('password')->password()->required(fn ($livewire) => $livewire instanceof Pages\CreateUser)->dehydrateStateUsing(fn ($state) => filled($state) ? bcrypt($state) : null)->dehydrated(fn ($state) => filled($state)), StateFusionSelect::make('status')->required(), Select::make('roles')->multiple()->relationship('roles', 'name')->preload(), ]); } public static function table(Table $table): Table { return $table->columns([ TextColumn::make('id')->sortable(), TextColumn::make('name')->searchable()->sortable(), TextColumn::make('email')->searchable()->sortable(), TextColumn::make('roles.name')->badge()->label('Roles'), StateFusionSelectColumn::make('status'), TextColumn::make('created_at')->dateTime()->sortable(), ])->filters([ StateFusionSelectFilter::make('status'), ])->actions([ EditAction::make(), Action::make('activities') ->icon('heroicon-o-clock') ->url(fn (User $record): string => static::getUrl('activities', ['record' => $record])), Impersonate::make(), DeleteAction::make(), ]); } public static function getPages(): array { return [ 'index' => Pages\ListUsers::route('/'), 'create' => Pages\CreateUser::route('/create'), 'activities' => Pages\ListUserActivities::route('/{record}/activities'), 'edit' => Pages\EditUser::route('/{record}/edit'), ]; } }