diff --git a/src/lib/pages/SettingsPage.svelte b/src/lib/pages/SettingsPage.svelte index 76609aa..a7d2f2e 100644 --- a/src/lib/pages/SettingsPage.svelte +++ b/src/lib/pages/SettingsPage.svelte @@ -447,6 +447,43 @@ if (!searchActive) return false; return terms.some((t) => (t || "").toString().toLowerCase().includes(searchQuery)); } + + // Quick-settings row at the top of SettingsPage. Surfaces theme, font + // size, and the global hotkey above the seven progressive-disclosure + // groups so the most-tweaked controls don't require opening a group. + // Font-size buckets map onto the existing settings.fontSize range + // (10-24); Smaller/Default/Larger map onto 12/14/18 to match the + // existing default of 14. SegmentedButton uses bind:value, so a + // local mirror state syncs with settings.fontSize via $effect — this + // also keeps the row in sync if Appearance's fine-grained slider is + // dragged. + const FONT_SIZE_BUCKETS = { Smaller: 12, Default: 14, Larger: 18 }; + function bucketFromSize(fs) { + if ((fs ?? 14) <= 12) return "Smaller"; + if ((fs ?? 14) >= 18) return "Larger"; + return "Default"; + } + let fontSizeBucket = $state(bucketFromSize(settings.fontSize)); + $effect(() => { + const next = bucketFromSize(settings.fontSize); + if (next !== fontSizeBucket) fontSizeBucket = next; + }); + $effect(() => { + const target = FONT_SIZE_BUCKETS[fontSizeBucket]; + if (target !== undefined && settings.fontSize !== target) { + settings.fontSize = target; + } + }); + // Hotkey chip jumps to the Global hotkey SettingsGroup. The group + // sits inside Appearance & System; both must be opened so the + // recorder is visible after the scroll lands. + function jumpToGlobalHotkey() { + const wrapper = document.getElementById("global-hotkey-group"); + if (!wrapper) return; + const details = wrapper.querySelectorAll("details"); + details.forEach((d) => { (d as HTMLDetailsElement).open = true; }); + wrapper.scrollIntoView({ behavior: "smooth", block: "start" }); + } let settingsTextFont = $derived(pretextFontShorthand(prefs.accessibility, 11)); let settingsPathLineHeight = $derived(bodyPretextLineHeight(prefs.accessibility, 11)); let outputFolderPreview = $derived.by(() => { @@ -1070,6 +1107,34 @@ the group renders its content directly. --> + +
+
+

Theme

+ +
+
+

Font size

+ +
+
+

Hotkey

+ +
+
+ - -
-

Toggle recording from anywhere. Click to change.

- -
-
+
+ +
+

Toggle recording from anywhere. Click to change.

+ +
+
+