{#snippet sectionHeading(id: string, title: string)}
{title}
{/snippet} {#snippet labelBall(label: Label)}
{label.name}
{/snippet} {#snippet editLabels(face?: Snippet)}
(search = value)} onToggle={(key) => { if (key === EDIT_VALUE) { if (settingsHref) void goto(resolve(settingsHref as "/")); return; } if (key.startsWith(CREATE_PREFIX)) { onCreateLabel?.(key.slice(CREATE_PREFIX.length), createColor); return; } onLabelsChange?.( pickedLabels.includes(key) ? pickedLabels.filter((picked) => picked !== key) : [...pickedLabels, key] ); }} label="Labels" placeholder="Select labels" searchPlaceholder="Filter labels…" emptyLabel="No labels" class="w-auto" > {#snippet trigger({ props })} {#if face}
label.name).join(", ")}`} > {@render face()}
{:else if labels.length === 0}
Add label
{:else}
{/if} {/snippet} {#snippet option(choice)} {#if choice.value.startsWith(CREATE_PREFIX)}
Create
"{choice.label}"
{:else if choice.value === EDIT_VALUE}
{choice.label}
{:else}
{choice.label ?? choice.value}
{/if} {/snippet}
{/snippet} {#snippet chip(label: Label)} {#if label.href}
{@render labelBall(label)} {:else}
{@render labelBall(label)}
{/if} {/snippet} {#if summarize}
{#if canEdit && labels.length > 0}
{#snippet trigger(face)} {@render editLabels(face)} {/snippet}
{:else if canEdit} {@render editLabels()} {:else if labels.length > 0}
{#snippet trigger(face)}
{#snippet trigger()} {@render face()} {/snippet} {#each labels as label (label.key)}
{label.name}
{/each}
{/snippet}
{/if}
{:else}
{@render sectionHeading(labelsHeadingId, "Labels")}
{#each shownLabels as label (label.key)}
{@render chip(label)}
{:else} {#if !canEdit}
No labels
{/if} {/each} {#if hiddenCount > 0 && !expanded}
(expanded = true)} icon={TagPlus} > Display all {labels.length} {plural(labels.length, "label", "labels")}
{/if} {#if canEdit}
{@render editLabels()}
{/if}
{/if}