components([ TextInput::make('name') ->label('نام') ->required() ->maxLength(255), TextInput::make('email') ->label('ایمیل') ->email() ->required() ->unique(ignoreRecord: true) ->maxLength(255), TextInput::make('mobile') ->label('شماره موبایل') ->tel() ->helperText('مثال درست: 09123456789') ->dehydrateStateUsing(fn (?string $state): ?string => Mobile::normalize($state)) ->rules([static function (string $attribute, mixed $value, \Closure $fail): void { if (filled($value) && ! preg_match(Mobile::REGEX, (string) Mobile::normalize((string) $value))) { $fail('فرمت شماره موبایل صحیح نیست. مثال درست: 09123456789'); } }]) ->unique(ignoreRecord: true) ->maxLength(20), TextInput::make('password') ->label('رمز عبور') ->password() ->revealable() ->autocomplete('new-password') ->required(fn (string $operation): bool => $operation === 'create') ->saved(fn (?string $state): bool => filled($state)) ->maxLength(255), CheckboxList::make('roles') ->label('نقش‌ها') ->relationship(titleAttribute: 'name') ->searchable() ->bulkToggleable() ->columns(2), ]); } }