diff --git a/apps/desktop/src/app/settings/appearance-settings.tsx b/apps/desktop/src/app/settings/appearance-settings.tsx index 4abd79c8d..8bf208b5a 100644 --- a/apps/desktop/src/app/settings/appearance-settings.tsx +++ b/apps/desktop/src/app/settings/appearance-settings.tsx @@ -1,4 +1,5 @@ import { useStore } from '@nanostores/react' +import type { ReactNode } from 'react' import { triggerHaptic } from '@/lib/haptics' import { Check } from '@/lib/icons' @@ -51,6 +52,20 @@ function ThemePreview({ name }: { name: string }) { ) } +function SectionHead({ title, description, pill }: { title: string; description: string; pill?: ReactNode }) { + return ( +
+
+
{title}
+
+ {description} +
+
+ {pill} +
+ ) +} + export function AppearanceSettings() { const { themeName, mode, availableThemes, setTheme, setMode } = useTheme() const toolViewMode = useStore($toolViewMode) @@ -58,24 +73,18 @@ export function AppearanceSettings() { return ( -
-
-

- These are desktop-only display preferences. Mode controls brightness; theme controls the accent palette and - chat surface styling. -

-
+
+

+ These are desktop-only display preferences. Mode controls brightness; theme controls the accent palette and + chat surface styling. +

-
-
-
-
Color Mode
-
- Pick a fixed mode or let Hermes follow your system setting. -
-
- {prettyName(mode)} -
+
+ {prettyName(mode)}} + title="Color Mode" + />
{MODE_OPTIONS.map(({ id, label, description, icon: Icon }) => { const active = mode === id @@ -113,16 +122,12 @@ export function AppearanceSettings() {
-
-
-
-
Tool Call Display
-
- Product hides raw tool payloads; Technical shows full input/output. -
-
- {toolViewMode === 'technical' ? 'Technical' : 'Product'} -
+
+ {toolViewMode === 'technical' ? 'Technical' : 'Product'}} + title="Tool Call Display" + />
{( [ @@ -170,16 +175,12 @@ export function AppearanceSettings() {
-
-
-
-
Theme
-
- Desktop palettes only. The selected mode is applied on top. -
-
- {activeTheme && {activeTheme.label}} -
+
+ {activeTheme.label} : undefined} + title="Theme" + />
{availableThemes.map(theme => { const active = themeName === theme.name