{#snippet kindIcon(kind: DeviceKind)} {/snippet} {#snippet roleTile(role: Role)}
{@render kindIcon(role.kind)} {role.title} {#if role.filled} {:else} {/if}
{role.primary} {#if role.detail}{role.detail}{/if}
{#if role.action} {/if} {#if role.secondary} {/if}
{/snippet} {#snippet deviceRow(device: DeviceInfo)} {@const bars = rssiBars(device.rssi)}
{@render kindIcon(device.kind)}
{device.name} {#if ambiguous(device)}{shortId(device.address)}{/if} {KIND_LABEL[device.kind]} {#if device.remembered}· remembered{/if} {#if device.error}{device.error}{/if}
{#each badges(device) as badge} {badge.label} {/each} {#each [1, 2, 3, 4] as bar} {/each}
{#if isConnected(device)} {:else} {/if} {#if device.remembered} {/if}
{/snippet}

Devices

{#each roles as role (role.key)} {@render roleTile(role)} {/each}
{#if clickNeedsHelp} {/if}
{#if mine.length > 0}

All devices

{/if} {#each mine as device (device.id)} {@render deviceRow(device)} {/each} {#if mine.length === 0}

Nothing found yet

Devices sleep until you touch them:

  • Trainer — turn the pedals.
  • Zwift Click — press a button.
  • Heart rate — wet the strap and put it on.

They appear here as soon as they advertise.

{/if} {#if others.length > 0}
{others.length} other Bluetooth {others.length === 1 ? 'device' : 'devices'} {#if noTrainer}— a trainer that hides its services is in here{/if} {#each others as device (device.id)} {@render deviceRow(device)} {/each}
{/if}