Shared family knowledge — any family member can view and edit this map.
{#if error}
{error}
{/if}
{#if people.length >= 2}
Add a relationship
{/if}
Tree
{#if roots.length === 0}
Add people and relationships above to build the tree.
{/if}
{#each roots as root (root.id)}
{@render personNode(root, 0)}
{/each}
All people
{#each people as p (p.id)}
{#if expandedId === p.id}
{#if p.notes}
{p.notes}
{/if}
{#if p.deathDate}
{#if memorialCounts[p.id] > 0}
{memorialCounts[p.id]} sadaqah given in their memory
{/if}
{/if}
{#if photoUrls[p.id]}{/if}
{/if}
{:else}
No one added yet.
{/each}
Relationships
{#each relationships as r (r.id)}
{personName(r.personAId)} {r.type === 'parent_of' ? 'is parent of' : 'is spouse of'} {personName(r.personBId)}
{:else}
No relationships recorded yet.
{/each}
{#snippet personNode(person, depth)}
{#if photoUrls[person.id]}

{:else}
{person.fullName.charAt(0).toUpperCase()}
{/if}
{person.fullName}
{#each (spousesOf[person.id] || []) as spouseId}
⚭ {personName(spouseId)}
{/each}
{#each (childrenOf[person.id] || []) as childId}
{@const child = people.find(p => p.id === childId)}
{#if child}
{@render personNode(child, depth + 1)}
{/if}
{/each}
{/snippet}