{#if $canAccess('registries', 'edit')} Manage registries {/if}
{ selectedRegistryId = Number(v); handleRegistryChange(); }}> {@const selected = registries.find(r => r.id === selectedRegistryId)} {#if selected && isDockerHub(selected)} {:else} {/if} {selected ? `${selected.name}${selected.hasCredentials ? ' (auth)' : ''}` : 'Select registry'} {#each registries as registry} {#if isDockerHub(registry)} {:else} {/if} {registry.name} {#if registry.hasCredentials} auth {/if} {/each}
{#if supportsBrowsing()} {/if}
{#if loading || browsing}

{browsing ? 'Loading catalog...' : 'Searching...'}

{:else if errorMessage}

{errorMessage}

{:else if searched && results.length === 0}

{browseMode ? 'No images found in this registry' : `No images found for "${searchTerm}"`}

{:else if results.length > 0}
{#if !browseMode} {/if} {#each results as result (result.name)} {@const isExpanded = !!expandedImages[result.name]} {@const expandState = expandedImages[result.name]} toggleImageExpansion(result.name)} > {#if !browseMode} {/if} {#if isExpanded} {/if} {/each}
NameDescription Stars Type
{#if isExpanded} {:else} {/if} {result.name}
{result.description || '-'}
{result.star_count.toLocaleString()}
{#if result.is_official} Official {:else if result.is_automated} Auto {:else} - {/if}
{#if expandState?.loading}
Loading tags...
{:else if expandState?.error}
{expandState.error}
{:else if expandState?.tags && expandState.tags.length > 0}
{#each expandState.tags as tag} {/each}
Tag Size Modified Actions
{tag.name}
{formatBytes(tag.size)} {formatDate(tag.lastUpdated)}
{#if pushableRegistries.length > 0} {/if} {#if supportsBrowsing()} {@const deleteKey = `${result.name}:${tag.name}`} deleteTag(result.name, tag.name)} onOpenChange={(open) => confirmDeleteKey = open ? deleteKey : null} > {/if}
{:else}
No tags found
{/if}
{:else}

{#if supportsBrowsing()} Search or browse {selectedRegistry?.name || 'a registry'} to find images {:else} Search {selectedRegistry?.name || 'a registry'} to find and pull images {/if}

{/if}