auth-form: red field border on error + firefox ux improvement (#24)

This commit is contained in:
Henry Dollman
2025-02-03 17:59:39 -05:00
parent 20cba1b695
commit fdbbbc77b0

View File

@@ -14,7 +14,11 @@ import { Trans, t } from "@lingui/macro"
const honeypot = v.literal("") const honeypot = v.literal("")
const emailSchema = v.pipe(v.string(), v.email(t`Invalid email address.`)) const emailSchema = v.pipe(v.string(), v.email(t`Invalid email address.`))
const passwordSchema = v.pipe(v.string(), v.minLength(8, t`Password must be at least 8 characters.`), v.maxLength(72, t`Password must not exceed 72 characters.`)) const passwordSchema = v.pipe(
v.string(),
v.minLength(8, t`Password must be at least 8 characters.`),
v.maxBytes(72, t`Password must be less than 72 bytes.`)
)
const LoginSchema = v.looseObject({ const LoginSchema = v.looseObject({
name: honeypot, name: honeypot,
@@ -132,12 +136,12 @@ export function UserAuthForm({
name="email" name="email"
required required
placeholder="name@example.com" placeholder="name@example.com"
type="email" type="text"
autoCapitalize="none" autoCapitalize="none"
autoComplete="email" autoComplete="email"
autoCorrect="off" autoCorrect="off"
disabled={isLoading || isOauthLoading} disabled={isLoading || isOauthLoading}
className="ps-9" className={cn("ps-9", errors?.email && "border-red-500")}
/> />
{errors?.email && <p className="px-1 text-xs text-red-600">{errors.email}</p>} {errors?.email && <p className="px-1 text-xs text-red-600">{errors.email}</p>}
</div> </div>
@@ -154,7 +158,7 @@ export function UserAuthForm({
type="password" type="password"
autoComplete="current-password" autoComplete="current-password"
disabled={isLoading || isOauthLoading} disabled={isLoading || isOauthLoading}
className="ps-9" className={cn("ps-9", errors?.password && "border-red-500")}
/> />
{errors?.password && <p className="px-1 text-xs text-red-600">{errors.password}</p>} {errors?.password && <p className="px-1 text-xs text-red-600">{errors.password}</p>}
</div> </div>
@@ -172,7 +176,7 @@ export function UserAuthForm({
type="password" type="password"
autoComplete="current-password" autoComplete="current-password"
disabled={isLoading || isOauthLoading} disabled={isLoading || isOauthLoading}
className="ps-9" className={cn("ps-9", errors?.password && "border-red-500")}
/> />
{errors?.passwordConfirm && <p className="px-1 text-xs text-red-600">{errors.passwordConfirm}</p>} {errors?.passwordConfirm && <p className="px-1 text-xs text-red-600">{errors.passwordConfirm}</p>}
</div> </div>