{#snippet divider()}
{/snippet} {#snippet settingHeader(name: string, desc: string)}
{name}
{desc}
{/snippet} {#snippet advancedTab()}
api endpoints
{#snippet _input(name: string, desc: string)}
{desc}
{/snippet} {@render _input('slingshot', 'slingshot url (for fetching records & resolving identity)')} {@render _input('spacedust', 'spacedust url (for notifications)')} {@render _input('constellation', 'constellation url (for backlinks)')}
{@render divider()}
{@render settingHeader( 'cache management', 'clears cached data (records, DID documents, handles, etc.)' )}
clear cache
{@render divider()}
{@render settingHeader('reset settings', 'resets all settings to their default values')}
reset to defaults
{/snippet} {#snippet styleTab()}
colors
{#snippet color(name: string, desc: string)}
{desc}
{/snippet} {@render color('fg', 'foreground color')} {@render color('bg', 'background color')} {@render color('accent', 'accent color')} {@render color('accent2', 'secondary accent color')}
{/snippet} {#if isOpen}
e.stopPropagation()} role="dialog" >
settings
{#if hasReloadChanges}
save & reload
{/if}
{#if activeTab === 'advanced'} {@render advancedTab()} {:else if activeTab === 'moderation'}
🚧
todo
{:else if activeTab === 'style'} {@render styleTab()} {/if}
{#snippet tabButton(name: Tab)} {@const isActive = activeTab === name}
(activeTab = name)} class="flex-1 border-t-3 px-4 py-3 font-semibold transition-colors hover:cursor-pointer {isActive ? 'border-(--nucleus-accent) bg-(--nucleus-accent)/20 text-(--nucleus-accent)' : 'border-(--nucleus-accent)/20 bg-transparent text-(--nucleus-fg)/60 hover:bg-(--nucleus-accent)/10'}" > {name}
{/snippet} {#each ['style', 'moderation', 'advanced'] as Tab[] as tabName (tabName)} {@render tabButton(tabName)} {/each}
{/if}