components([ TextInput::make('name') ->required() ->maxLength(255), TextInput::make('email') ->label('Email address') ->email() ->required() ->maxLength(255) ->unique(ignoreRecord: true), TextInput::make('password') ->password() ->dehydrateStateUsing(fn (?string $state): ?string => filled($state) ? Hash::make($state) : null) ->dehydrated(fn (?string $state): bool => filled($state)) ->required(fn (string $operation): bool => $operation === 'create') ->maxLength(255), Select::make('department_id') ->relationship('department', 'name') ->searchable() ->preload() ->label('Department (for managers)'), Select::make('roles') ->relationship('roles', 'name') ->multiple() ->preload() ->searchable() ->required(), ]); } }