{t('view.upcoming')}
{#if upcomingView.mode === 'list'}
{#each UPCOMING_DAYS as n}
upcomingView.setDays(n)} aria-pressed={upcomingView.days === n}>{t('view.days', { n })}
{/each}
{/if}
{#each [['list', t('view.list')], ['week', t('view.week')], ['calendar', t('view.month')]] as [value, label]}
upcomingView.set(value)} aria-pressed={upcomingView.mode === value}>{label}
{/each}
{#if upcomingView.mode === 'calendar'}
{:else if upcomingView.mode === 'week'}
{:else} {#each days as day (day.date)} {@const tasks = live(day.date)} {@const week = weekOf(day.date)}
onDragOver(e, day.date)} ondragleave={() => (over = null)} ondrop={(e) => onDrop(e, day.date)} >
{heading(day.date)} {#if week}
{week}
{/if}
{#if tasks.length} {#each tasks as task (task.id)}
startDrag(e, TASK, task.id)} ondragend={() => (over = null)} >
{/each} {:else}
—
{/if}
{/each} {/if}