components([ Section::make('Benutzerkonto') ->icon('lucide-user') ->schema([ Select::make('gender') ->prefixIcon('phosphor-gender-neuter') ->label('Geschlecht') ->options([ 'Herr' => 'Herr', 'Frau' => 'Frau', 'Non-binary' => 'Non-binary', ]) ->required(), TextInput::make('name') ->prefixIcon('phosphor-user') ->required(), TextInput::make('email')->email() ->required() ->prefixIcon('phosphor-envelope') ->label('E-Mail'), TextInput::make('password') ->label('Passwort') ->password() ->revealable() ->prefixIcon('phosphor-lock') ->dehydrated(fn ($state): bool => filled($state)) ->dehydrateStateUsing(fn ($state): string => Hash::make($state)) ->same('password_confirmation') ->rule(Password::min(8) ->mixedCase() ->numbers() ->symbols() ->uncompromised()) ->label('Password'), TextInput::make('password_confirmation') ->label('Passwort Bestätigen') ->prefixIcon('phosphor-lock') ->password() ->dehydrated(false) ->same('password') ->revealable(), Checkbox::make('agb_akzeptiert') ->default(false) ->label('Allgemeinen Geschäftsbedinnungen akzeptieren') ->accepted() ->validationMessages([ 'accepted' => 'Das Akzeptieren der Allgemeinen Geschäftsbedingungen ist erforderlich.', ]), Select::make('roles') ->label('Rollen') ->prefixIcon('phosphor-gear') ->aboveContent('Nur für SuperAdmin sichtbare') ->visible(fn () => auth()->user()->hasRole('super_admin')) ->relationship('roles', 'name') ->multiple() ->preload() ->searchable(), ]), ])->columns(1); } }