{ if (event.key === "Escape") selected = null; }} />
({ value: item.webUrl, label: `${item.scope ? `${item.scope} · ` : ""}${item.title}` }))]} ariaLabel={de ? "Board auswählen" : "Select board"} onChange={value => { if (value && !moving) { boardUrl = value; void loadBoard(value, true); } }} /> {discovering ? (de ? "Boards werden im Hintergrund gesucht …" : "Finding boards in background …") : `${savedBoards.length} Boards`} {#if !board && boardUrl && validBoardUrl(boardUrl)}{/if}
{#if discoveryWarnings.length}
{de ? "Hinweise zur Board-Suche" : "Board discovery notices"} ({discoveryWarnings.length}){#each discoveryWarnings as warning}

{warning}

{/each}
{/if} {#if board}

{board.title}

{source.label} · {canMove ? (de ? "Karten zwischen Spalten verschieben" : "Move cards between columns") : (de ? "Lesende Ansicht" : "Read-only view")}{#if loading} · {de ? "Aktualisierung läuft …" : "Updating …"}{/if}
{ repositoryFilter = value; selected = null; }} />
{/if} {#if connectOpen || !board}
{ event.preventDefault(); void loadBoard(boardUrl, true); }}>
{/if} {#if moveMessage}

{moveMessage}

{/if} {#if error}{/if} {#if board} {#if board.notice}

{notice(board.notice)}

{/if}
{#each columns as column (column.id)}
{ if (dragged && column.moveTarget && !moving && !loading && dragged.columnId !== column.id) { event.preventDefault(); if (event.dataTransfer) event.dataTransfer.dropEffect = "move"; dropColumn = column.id; } }} ondragleave={event => { if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget)) dropColumn = ""; }} ondrop={event => { event.preventDefault(); if (dragged) void moveCard(dragged.cardId, dragged.columnId, column.id); dropColumn = ""; }}>

{column.title}

{column.cards.length}{#if column.limit} · WIP {column.limit}{/if}
{#each column.cards as card (`${column.id}:${card.id}`)} {:else}

{de ? "Keine Karten" : "No cards"}

{/each}
{:else}

{de ? "Dieses Board hat keine Spalten." : "This board has no columns."}

{/each}
{#if selected} {/if}
{:else}

{loading ? (de ? "Board wird im Hintergrund geladen" : "Loading board in background") : (de ? "Dein vorhandenes Board übernehmen" : "Load your existing board")}

{de ? "Wähle oben ein gefundenes Board aus oder füge einen Board-Link ein. Spalten und Karten werden aus der Integration gelesen; der Link wird für diese Integration gespeichert." : "Select a discovered board above or paste a board link. Columns and cards come from the integration; the link is saved for this integration."}

{#if source.provider === "gitea"}

{de ? "Gitea benötigt eine Serverversion mit Projects-/Columns-API." : "Gitea requires a server version with the Projects/Columns API."}

{/if}
{/if}