{#if role === 'parent'}
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}No outstanding claims
{:else} {#each parentMembers as m} {@const requested = memberRequested(m.id)} {@const outstanding = memberOutstanding(m.id)} {@const claimable = memberClaimable(m.id)} {@const cashClaimable = claimable.filter((r: any) => r.rewardType === 'cash')} {@const cashRequested = requested.filter((r: any) => r.rewardType === 'cash')} {@const requestedTotal = cashRequested.reduce( (sum: number, r: any) => sum + Number(r.value), 0 )} {@const total = cashClaimable.reduce((sum: number, r: any) => sum + Number(r.value), 0)} {@const hasClaims = requested.length > 0 || outstanding.length > 0} {#if hasClaims}£{total.toFixed(2)} owed
{/if} {#if cashRequested.length > 0} {/if} {#if requested.length > 0}Requested
{#each requested as r} {/each} {/if} {#if outstanding.length > 0}Outstanding
{#each outstanding as r}Response:
{ if (customMessage[m.id]) selectedMessage[m.id] = customMessage[m.id]; }} />Read-only preview of what the payday rollover will settle for this week. Nothing here is written.
{#if simulateEow}👀 Preview mode is ON — child dashboards show a "payday preview" notice.
{/if} {#if eowPreview}Week {formatDDMMYY(eowPreview.weekStart)} → {formatDDMMYY(eowPreview.weekEnd)}
On payday these {eowPreview.completionsThisWeek} completions reset; week starts anew at {formatDDMMYY(eowPreview.nextWeekStart)}.
Rewards that would be auto-created
No new rewards would be auto-created this week.
{/if}Loading...
{:else if error}{error}
{:else} {#if simulateEow}Payday is today!
{#if countdownHours > 0} {countdownHours}h {countdownMinutes}m left {:else} {countdownMinutes}m {countdownSecs}s left {/if}
Your earnings get settled at {paydayTime}
All done!
{:else} {#each dailyPending as chore} {/each} {/if}All done!
{:else} {#each weeklyPending as chore} {/each} {#each memberTodos.filter((t) => !isCompleted(t.id, todayChild)) as todo} {@const urgency = todoUrgency(todo)} {#if todo.type === 'emoji'}Nothing yet
{:else} {#each completedToday as c} {@const chore = assigned.find((a) => a.id === c.assignedChoreId)} {#if chore} {/if} {/each} {/if}No rewards waiting
{:else}