Add separate light/dark mode accent colors

Adds an option in Appearance settings to use different accent colors
in light and dark mode, with a toggle to keep a single shared color
(the default, preserving existing behavior).

- New synced settings keys: accentColorDark, customAccentColorDark,
  useSeparateDarkAccentColor; dark values fall back to the light
  selection until explicitly set, so no migration is needed
- resolvedAccentColor returns a dynamic platform color (UIColor trait
  provider / NSColor appearance provider) when the toggle is on, so
  the root tint and all direct readers adapt to light/dark
  automatically without consumer changes
- Accent Color section shows two stacked preset+custom grids with
  Light/Dark headers when enabled, extracted into AccentColorGrid;
  CustomAccentColorButton now takes bindings so the macOS color panel
  edits whichever target was last opened
- New DarkAccentColorTests covering sync contract, default-off state,
  fallbacks, and toggle-off resolution

Claude-Session: https://claude.ai/code/session_0154KH8RAVAvm6iVanhmoW8o
This commit is contained in:
Arkadiusz Fal
2026-07-05 21:06:26 +02:00
parent b47888fe04
commit b632f11b2f
6 changed files with 250 additions and 28 deletions

View File

@@ -10363,6 +10363,16 @@
}
}
},
"settings.appearance.accentColor.dark" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dark"
}
}
}
},
"settings.appearance.accentColor.default" : {
"localizations" : {
"en" : {
@@ -10395,6 +10405,16 @@
},
"settings.appearance.accentColor.indigo" : {
},
"settings.appearance.accentColor.light" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Light"
}
}
}
},
"settings.appearance.accentColor.orange" : {
"localizations" : {
@@ -10436,6 +10456,16 @@
}
}
},
"settings.appearance.accentColor.separateColors" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Use separate light & dark colors"
}
}
}
},
"settings.appearance.accentColor.teal" : {
},