diff --git a/src/app.css b/src/app.css
index 7f0b66b..9248d56 100644
--- a/src/app.css
+++ b/src/app.css
@@ -129,3 +129,15 @@ a {
.post-dropdown {
@apply flex min-w-54 flex-col gap-1 rounded-sm border-2 p-1 shadow-2xl backdrop-blur-xl backdrop-brightness-60;
}
+
+.settings-box {
+ @apply rounded-sm border-2 border-dashed border-(--nucleus-fg)/10 p-4;
+}
+
+.settings-header {
+ @apply mb-2 text-lg font-bold;
+}
+
+.settings-desc {
+ @apply mb-2 text-sm text-(--nucleus-fg)/80;
+}
diff --git a/src/components/SettingsAdvancedTab.svelte b/src/components/SettingsAdvancedTab.svelte
new file mode 100644
index 0000000..63fe14c
--- /dev/null
+++ b/src/components/SettingsAdvancedTab.svelte
@@ -0,0 +1,70 @@
+
+
+{#snippet _input(name: string, desc: string)}
+
+
+
+
+{/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 _input('jetstream', 'jetstream url (for real-time updates)')}
+
+
+
+
+
+
+
+
+
+
+
clears cached data (records, DID documents, handles, etc.)
+
+
+
+
+
+
resets all settings to their default values
+
+
+
diff --git a/src/components/SettingsModerationTab.svelte b/src/components/SettingsModerationTab.svelte
new file mode 100644
index 0000000..1d72d54
--- /dev/null
+++ b/src/components/SettingsModerationTab.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+ {#if mutes.length > 0}
+
+
+ {#snippet item({ index, style }: { index: number; style: string })}
+ onRemoveMute(mutes[index])}
+ />
+ {/snippet}
+
+
+ {:else}
+
no muted accounts
+ {/if}
+
+
+ {#if currentPrefs}
+
+ last synced: {new Date(currentPrefs.updatedAt).toLocaleString()}
+
+ {/if}
+
diff --git a/src/components/SettingsStyleTab.svelte b/src/components/SettingsStyleTab.svelte
new file mode 100644
index 0000000..c66c4a0
--- /dev/null
+++ b/src/components/SettingsStyleTab.svelte
@@ -0,0 +1,38 @@
+
+
+{#snippet color(name: string, desc: string)}
+
+{/snippet}
+
+
+
+
+
+ {@render color('fg', 'foreground color')}
+ {@render color('bg', 'background color')}
+ {@render color('accent', 'accent color')}
+ {@render color('accent2', 'secondary accent color')}
+
+
+
diff --git a/src/components/SettingsView.svelte b/src/components/SettingsView.svelte
index 52c34d2..cb6816e 100644
--- a/src/components/SettingsView.svelte
+++ b/src/components/SettingsView.svelte
@@ -1,10 +1,8 @@
-{#snippet advancedTab()}
-
-
-
-
- {#snippet _input(name: string, desc: string)}
-
-
-
-
- {/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 _input('jetstream', 'jetstream url (for real-time updates)')}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{/snippet}
-
-{#snippet styleTab()}
-
-
-
-
- {#snippet color(name: string, desc: string)}
-
- {/snippet}
- {@render color('fg', 'foreground color')}
- {@render color('bg', 'background color')}
- {@render color('accent', 'accent color')}
- {@render color('accent2', 'secondary accent color')}
-
-
-
-{/snippet}
-
@@ -250,50 +156,16 @@
{#if tab === 'advanced'}
- {@render advancedTab()}
+
{:else if tab === 'moderation'}
-
-
-
-
-
-
-
-
- {#if mutes.length > 0}
-
-
- {#snippet item({ index, style }: { index: number; style: string })}
- handleRemoveMute(mutes[index])}
- />
- {/snippet}
-
-
- {:else}
-
no muted accounts
- {/if}
-
-
- {#if currentPrefs}
-
- last synced: {new Date(currentPrefs.updatedAt).toLocaleString()}
-
- {/if}
-
+
{:else if tab === 'style'}
- {@render styleTab()}
+
{/if}
@@ -306,16 +178,3 @@
-
-