{#if selectedTab === 'export'}

Export Events

{#if isLoggedIn}

Export My Events

Download your personal events as a JSONL file.

{#if userRole === 'admin' || userRole === 'owner'}

Export All Events

Download the complete database as a JSONL file. This includes all events from all users.

{/if} {:else} {/if}
{:else if selectedTab === 'import'}

Import Events

{#if isLoggedIn && (userRole === 'admin' || userRole === 'owner')}

Import Events

Upload a JSONL file to import events into the database.

{:else if isLoggedIn}

❌ Admin or owner permission required for import functionality.

{:else} {/if}
{:else if selectedTab === 'events'}
{#if isLoggedIn && (userRole === 'write' || userRole === 'admin' || userRole === 'owner')}
{#if filteredEvents.length > 0} {#each filteredEvents as event}
toggleEventExpansion(event.id)} on:keydown={(e) => e.key === 'Enter' && toggleEventExpansion(event.id)} role="button" tabindex="0">
👤
{truncatePubkey(event.pubkey)}
{event.kind} {getKindName(event.kind)}
{truncateContent(event.content)}
{#if (userRole === 'admin' || userRole === 'owner') || (userRole === 'write' && event.pubkey === userPubkey)} {/if}
{#if expandedEvents.has(event.id)}
{JSON.stringify(event, null, 2)}
{/if}
{/each} {:else if !isLoadingEvents}

No events found.

{/if} {#if isLoadingEvents}

Loading events...

{/if} {#if !hasMoreEvents && allEvents.length > 0}

No more events to load.

{/if}
{:else if isLoggedIn}

❌ Write, admin, or owner permission required to view all events.

{:else} {/if}
{:else if selectedTab === 'sprocket'}

Sprocket Script Management

{#if isLoggedIn && userRole === 'owner'}

Script Editor

Upload Script

Status: {sprocketStatus?.is_running ? '🟢 Running' : '🔴 Stopped'}
{#if sprocketStatus?.pid}
PID: {sprocketStatus.pid}
{/if}
Script: {sprocketStatus?.script_exists ? '✅ Exists' : '❌ Not found'}
{#if sprocketMessage}
{sprocketMessage}
{/if}

Script Versions

{#each sprocketVersions as version}
{version.name}
{new Date(version.modified).toLocaleString()} {#if version.is_current} Current {/if}
{#if !version.is_current} {/if}
{/each}
{:else if isLoggedIn}

❌ Owner permission required for sprocket management.

To enable sprocket functionality, set the ORLY_OWNERS environment variable with your npub when starting the relay.

Current user role: {userRole || 'none'}

{:else} {/if}
{:else if searchTabs.some(tab => tab.id === selectedTab)} {#each searchTabs as searchTab} {#if searchTab.id === selectedTab}

🔍 Search Results: "{searchTab.query}"

handleSearchScroll(e, searchTab.id)}> {#if searchResults.get(searchTab.id)?.events?.length > 0} {#each searchResults.get(searchTab.id).events as event}
toggleEventExpansion(event.id)} on:keydown={(e) => e.key === 'Enter' && toggleEventExpansion(event.id)} role="button" tabindex="0">
👤
{truncatePubkey(event.pubkey)}
{event.kind} {getKindName(event.kind)}
{truncateContent(event.content)}
{#if (userRole === 'admin' || userRole === 'owner') || (userRole === 'write' && event.pubkey === userPubkey)} {/if}
{#if expandedEvents.has(event.id)}
{JSON.stringify(event, null, 2)}
{/if}
{/each} {:else if !searchResults.get(searchTab.id)?.isLoading}

No search results found for "{searchTab.query}".

{/if} {#if searchResults.get(searchTab.id)?.isLoading}

Searching...

{/if} {#if !searchResults.get(searchTab.id)?.hasMore && searchResults.get(searchTab.id)?.events?.length > 0}

No more search results to load.

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

Welcome {userProfile?.name || userPubkey.slice(0, 8) + '...'}

{:else}

Log in to access your user dashboard

{/if}
{/if}