diff --git a/frontend/app/trees/[id]/persons/[personId]/page.tsx b/frontend/app/trees/[id]/persons/[personId]/page.tsx index 8c0bad2..211796f 100644 --- a/frontend/app/trees/[id]/persons/[personId]/page.tsx +++ b/frontend/app/trees/[id]/persons/[personId]/page.tsx @@ -535,6 +535,16 @@ export default function PersonDetailPage() { setEditingPerson(true); } + // Quick one-click sex setter — no need to open the full edit form. PATCH is + // exclude_unset on the backend, so sending only `gender` leaves the rest. + async function setGender(value: "male" | "female" | null) { + await api.PATCH("/api/v1/trees/{tree_id}/persons/{person_id}", { + params: { path: { tree_id: treeId, person_id: personId } }, + body: { gender: value }, + }); + load(); + } + async function savePerson() { const { error } = await api.PATCH("/api/v1/trees/{tree_id}/persons/{person_id}", { params: { path: { tree_id: treeId, person_id: personId } }, @@ -711,16 +721,35 @@ export default function PersonDetailPage() {

{person.primary_name ?? "Unnamed person"} - {person.gender === "male" && ( - - ♂ - - )} - {person.gender === "female" && ( - - ♀ - - )} + + {/* One-click sex setter — no edit mode needed. Active = current; click it again to clear. */} + + + {isSelf && (