feat(ui): optional gender radio in the people form and 个人资料 (T2)

One ProfileGenderField (女 / 男 / 不填, 44px, one hint line) in the
people-archive edit form (saved with the form, 不填 → null) and in
设置 → 个人资料 for the owner (saves on its own PATCH; birth-data saves never
send gender). The detail card shows 性别 (未填 when empty). Not asked in
onboarding. DESIGN/VOICE updated; 390/1280 screenshots with fictional data.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-27 18:30:58 +08:00
co-authored by Claude Opus 5.5
parent 5caf03844e
commit d79dada970
19 changed files with 318 additions and 3 deletions
+6
View File
@@ -35,3 +35,9 @@ export function profileGenderLabel(value: unknown): string {
const gender = parseProfileGender(value);
return gender ? PROFILE_GENDER_LABELS[gender] : PROFILE_GENDER_EMPTY_LABEL;
}
/** The account's raw profile object with the saved gender (null = not filled). */
export function withSavedGender(profile: unknown, gender: ProfileGender | null): Record<string, unknown> {
const base = profile && typeof profile === "object" && !Array.isArray(profile) ? profile as Record<string, unknown> : {};
return { ...base, gender };
}