{#snippet sectionHeading(id: string, title: string)}
{title}
{/snippet} {#snippet labelBall(label: Label)}
{label.name}
{/snippet} {#snippet editLabels()}
(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 })}
{/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}
{@render sectionHeading(labelsHeadingId, "Labels")} {#if canEdit && vertical} {@render editLabels()} {/if}
{#each shownLabels as label (label.key)}
{#if label.href}
{@render labelBall(label)} {:else}
{@render labelBall(label)}
{/if}
{:else}
No labels
{/each} {#if hiddenCount > 0 && !expanded}
(expanded = true)} icon={TagPlus} > Display all {labels.length} labels
{/if} {#if canEdit && !vertical} {@render editLabels()} {/if}