components([ TextInput::make('name') ->required() ->maxLength(255), TextInput::make('email') ->required() ->email() ->unique(ignoreRecord: true) ->maxLength(255), TextInput::make('password') ->password() ->revealable() ->required(fn (string $operation) => $operation === 'create') ->minLength(8) ->dehydrateStateUsing(fn (?string $state) => filled($state) ? Hash::make($state) : null) ->dehydrated(fn (?string $state) => filled($state)) ->helperText('Leave blank to keep the current password.'), Select::make('roles') ->relationship( name: 'roles', titleAttribute: 'name', modifyQueryUsing: fn ($query) => $query->whereIn('name', User::ADMIN_TIER_ROLES), ) ->multiple() ->preload() ->required() ->helperText('Determines whether this staff member can sign in here at all, and what they can do.'), ]); } }