ᚹ verdande
{#each orderedNav as item (item.key)} {#if item.key === 'inbox'} {#if app.inbox}
onNavDragOver(e, item.key)} ondragleave={() => (overNav = null)} ondrop={(e) => onNavDrop(e, item.key)} > {@render grip(item.key)} {@render projectRow(app.inbox, false)}
{/if} {:else}
onNavDragOver(e, item.key)} ondragleave={() => (overNav = null)} ondrop={(e) => onNavDrop(e, item.key)} > {@render grip(item.key)} { if (item.key !== 'today' || !carries(e, TASK)) return; accept(e); overToday = true; }} ondragleave={() => (overToday = false)} ondrop={(e) => item.key === 'today' && onDropOnToday(e)} > {#if item.key === 'notes'} {:else if item.key === 'calendar'} {:else if item.key === 'today'} {:else if item.key === 'upcoming'} {:else if item.key === 'delegated'} {:else} {/if} {t(item.label)}
{/if} {/each}
{#snippet grip(key)} onNavDragStart(e, key)} ondragend={clearNavDrag} aria-hidden="true" > {/snippet} {#snippet projectRow(project, sortable)} sortable && onDragStart(e, project)} ondragend={clearDrag} ondragover={(e) => { if (carries(e, TASK) || carries(e, NOTE)) onTaskDragOver(e, project); else if (sortable) onDragOver(e, project); }} ondragleave={() => { overId = null; overProject = null; }} ondrop={(e) => carries(e, TASK) || carries(e, NOTE) ? onTaskDrop(e, project) : sortable && onDrop(e, project)} > {#if project.is_inbox} {:else} {/if} {projectName(project)} {#if project.open_count > 0} {project.open_count} {/if} {/snippet} {#snippet sectionIcon(key)} {#if key === 'filters'} {:else if key === 'labels'} {:else if key === 'shared'} {:else} {/if} {/snippet} {#snippet foldHeading(key, label)}

{/snippet}
{ if (!carries(e, PROJECT)) return; accept(e); overGroup = ''; overId = null; }} ondragleave={() => (overGroup = null)} ondrop={(e) => onDropInGroup(e, '')} > {@render foldHeading('projects', t('sidebar.projects'))}
{#if adding}
!newName.trim() && (adding = false)} onkeydown={(e) => e.key === 'Escape' && (adding = false)} />
{/if} {#if addingGroup}
!newGroupName.trim() && (addingGroup = false)} onkeydown={(e) => e.key === 'Escape' && (addingGroup = false)} />
{/if} {#if !app.sectionCollapsed('projects')} {#each ungrouped as project (project.id)} {@render projectRow(project, true)} {/each} {#if own.length === 0 && !adding}

{t('sidebar.noProjects')}

{/if} {/if}
{#each groups as group (group.id)} {@const inside = inGroup(group.id)}
onGroupDragStart(e, group)} ondragend={clearDrag} ondragover={(e) => onGroupDragOver(e, group)} ondragleave={() => { overGroup = null; overId = null; }} ondrop={(e) => onGroupDrop(e, group)} ondblclick={() => startRename(group)} onkeydown={(e) => { if (e.key === 'F2') { e.preventDefault(); startRename(group); } }} > {#if renamingGroup === group.id}
renameGroup(e, group)} onfocusout={(e) => { if (!e.currentTarget.contains(e.relatedTarget)) renamingGroup = null; }} > e.key === 'Escape' && (renamingGroup = null)} />
{#each COLORS as color (color.id)} {/each}
{:else}

{ e.preventDefault(); clearTimeout(navTimer); if (e.detail > 1) return; navTimer = setTimeout(() => { onnavigate(); goto(`/gruppe/${group.id}`); }, 200); }} > {group.name}

{inside.length} {/if}
{#if !group.collapsed} {#each inside as project (project.id)} {@render projectRow(project, true)} {/each} {#if !inside.length}

{t('sidebar.emptyGroup')}

{/if} {/if}
{/each} {#if shared.length}
{@render foldHeading('shared', t('sidebar.shared'))}
{#if !app.sectionCollapsed('shared')} {#each shared as project (project.id)} {@render projectRow(project, false)} {/each} {/if}
{/if} {#if filters.length}
{@render foldHeading('filters', t('sidebar.filters'))}
{#if !app.sectionCollapsed('filters')} {#each filters as filter (filter.id)} {filter.name} {/each} {/if}
{/if} {#if labels.length}
{@render foldHeading('labels', t('sidebar.labels'))}
{#if !app.sectionCollapsed('labels')} {#each labels.filter((l) => l.task_count > 0) as label (label.id)} {label.name} {label.task_count} {/each} {/if}
{/if}
{t('nav.settings')} {#if !app.connected} {t('nav.offline')} {/if}
sidebar.reset()} onkeydown={(e) => { if (e.key === 'ArrowLeft') sidebar.setWidth(sidebar.width - 16); else if (e.key === 'ArrowRight') sidebar.setWidth(sidebar.width + 16); else if (e.key === 'Home') sidebar.reset(); else return; e.preventDefault(); }} >