{#if role === 'parent'}
No goals completed yet — rewards appear here the moment a member hits a target.
{:else}Yesterday
No manual bonus configs.
{:else} {#each manualConfigs() as bc} {@const val = bc.rewardType === 'cash' ? `£${Number(bc.rewardValue).toFixed(2)}` : bc.rewardType === 'points' ? `${bc.rewardValue} pts` : bc.rewardValue} {@const targeted = bc.memberId ? parentMembers.find((m: any) => m.id === bc.memberId) : null}Requested
{#each requested as r} {/each} {/if} {#if outstanding.length > 0}Outstanding
{#each outstanding as r}Loading...
{:else if error}{error}
{:else} {#if owedCash > 0} {/if} {#if showCountdown}
Payday is today!
{#if countdownHours > 0} {countdownHours}h {countdownMinutes}m left {:else} {countdownMinutes}m {countdownSecs}s left {/if}
Your earnings get settled at {paydayTime}
PAYDAY!!
Your cash is ready — go collect it! 🎉
{@html lockIcon} Access paused
{@html lockIcon}
{@html lockIcon}
All done!
{:else} {#each dailyPending as chore} {/each} {/if}All done!
{:else} {#each weeklyPending as chore} {/each} {#each memberTodos.filter((t) => !isTodoDone(t.id)) as todo} {@const urgency = todoUrgency(todo)} {@const expired = isTodoExpired(todo)} {#if todo.type === 'emoji'} {:else} {/if} {/each} {/if}Nothing yet
{:else} {#each completedToday as c} {@const chore = assigned.find((a) => a.id === c.assignedChoreId)} {#if chore} {/if} {/each} {/if}Nothing waiting — you're all caught up
{:else}