navidrome/ui/src
Rucolastico 8e306b1f61
feat(ui): add Solarized Light and Dark themes (#6280)
* feat(ui): add Solarized Light and Dark themes

Add Light and Dark variants of Ethan Schoonover's Solarized palette, built
on the Tokyo Night theme structure so they cover the app bar, sidebar,
tables, album grid, album/playlist details, login and the player.

Text colors are one step stronger than canonical Solarized body text
(base01 on light, base1 on dark) so table text keeps WCAG AA contrast.
The Dark variant uses cyan instead of violet as the secondary accent,
since violet is too dark on base03.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: rucolastico <diegoricomartell@gmail.com>

* fix(ui): improve Solarized contrast and table row hover

Address review feedback on the Solarized themes:

- Use text-specific shades for links and the login system name, keeping
  them above 4.5:1 on table surfaces and hover rows (darkened blue on
  Light, lightened cyan on Dark). Canonical blue stays for controls.
- Darken the Light theme's violet accent, which is also used as text
  (album artist), to keep it above 4.5:1.
- Give secondary buttons readable text: base3 on violet (Light) and
  base03 on cyan (Dark), instead of the body text color.
- Apply the row hover color to table cells, whose opaque background was
  hiding the row hover.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: rucolastico <diegoricomartell@gmail.com>

* fix(ui): keep Solarized app bar title and icons readable

The app bar uses the secondary color, whose contrastText matched the
app bar background (1:1 in Light, 1.15:1 in Dark). Override the app bar's
colorSecondary text with the theme foreground (4.99:1 Light, 4.86:1 Dark),
keeping secondary.contrastText for buttons on the accent color.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: rucolastico <diegoricomartell@gmail.com>

---------

Signed-off-by: rucolastico <diegoricomartell@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Deluan Quintão <deluan@navidrome.org>
2026-10-11 13:33:34 -04:00
..
actions feat(ui): playlist favourites (heart, list filter, sidebar favourites-only toggle) (#5805) 2026-07-18 14:45:47 -04:00
album feat(ui): add played filter to album list (#6207) 2026-09-28 22:50:13 -04:00
artist feat(ui): add Refresh Metadata action to the album and artist pages (#6078) 2026-09-02 23:29:31 -04:00
audioplayer fix(ui): report playback when restarting current track via prev 2026-05-22 22:23:36 -03:00
common feat(ui): show read-only values in edit forms as dimmed, themable inputs (#6238) 2026-09-28 08:48:36 -04:00
dataProvider feat(subsonic): OpenSubsonic API key authentication (#6219) 2026-09-27 21:56:58 -04:00
dialogs feat(jellyfin): add Quick Connect sign-in (#6174) 2026-09-19 14:57:01 -04:00
i18n feat(scanner): per-library PID configuration (#6252) 2026-10-02 05:05:32 -04:00
icons build(ui): migrate from CRA/Jest to Vite/Vitest (#3311) 2024-09-28 11:54:36 -04:00
layout fix(ui): make Undo and AMusic Save buttons readable (#6249) 2026-09-29 11:21:14 -04:00
library feat(scanner): per-library PID configuration (#6252) 2026-10-02 05:05:32 -04:00
missing feat(ui): remember 'items per page' selection across sessions (#5819) 2026-07-19 18:59:37 -04:00
personal feat(ui): add Radio to Default View options (#5801) 2026-07-17 21:53:17 -04:00
player feat(ui): show read-only values in edit forms as dimmed, themable inputs (#6238) 2026-09-28 08:48:36 -04:00
playlist fix(ui): make playlist toggle switches visible in all themes (#6277) 2026-10-06 09:50:11 -04:00
plugin feat(plugins): surface the valid agent names in logs and the Plugins UI (#5910) 2026-08-30 11:11:35 -04:00
radio feat(ui): show read-only values in edit forms as dimmed, themable inputs (#6238) 2026-09-28 08:48:36 -04:00
reducers feat(ui): playlist favourites (heart, list filter, sidebar favourites-only toggle) (#5805) 2026-07-18 14:45:47 -04:00
share feat(ui): show read-only values in edit forms as dimmed, themable inputs (#6238) 2026-09-28 08:48:36 -04:00
song feat(ui): remember 'items per page' selection across sessions (#5819) 2026-07-19 18:59:37 -04:00
store feat: Multi-library support (#4181) 2025-07-18 18:41:12 -04:00
subsonic feat(artwork): new artwork pipeline with background resolution and Low Quality Image Placeholders (#5847) 2026-08-09 15:03:27 -04:00
themes feat(ui): add Solarized Light and Dark themes (#6280) 2026-10-11 13:33:34 -04:00
transcode fix(ui): improve browser codec detection and limit Safari transcoding to mp3 (#5171) 2026-03-12 08:21:49 -04:00
transcoding fix(ui): allow setting a transcoding Default Bit Rate of 0 2026-09-09 17:35:03 -04:00
user feat(ui): show read-only values in edit forms as dimmed, themable inputs (#6238) 2026-09-28 08:48:36 -04:00
utils feat(ui): format dates using the selected language (#6160) 2026-09-19 14:07:42 -04:00
App.jsx feat(subsonic): OpenSubsonic API key authentication (#6219) 2026-09-27 21:56:58 -04:00
authProvider.js fix(auth): ExtAuth logout redirect on unauthenticated loads, and warning spam from untrusted sources (#6176) 2026-09-19 17:08:49 -04:00
authProvider.test.js fix(auth): ExtAuth logout redirect on unauthenticated loads, and warning spam from untrusted sources (#6176) 2026-09-19 17:08:49 -04:00
config.js feat(scanner): per-library PID configuration (#6252) 2026-10-02 05:05:32 -04:00
consts.js fix(ui): allow setting a transcoding Default Bit Rate of 0 2026-09-09 17:35:03 -04:00
eventStream.js fix(ui): keep the NowPlayingPanel badge in sync. 2025-06-29 11:35:10 -04:00
eventStream.test.js chore(deps): update all dependencies (#4618) 2025-10-25 17:05:16 -04:00
hotkeys.js Change "Go to current song" hotkey. 2022-12-18 20:58:01 -05:00
index.css chore(deps): bump JS dependencies 2025-03-07 19:47:08 -05:00
index.jsx fix(ui): service worker does not load new version of ui (#3402) 2024-10-16 21:39:14 -04:00
routes.jsx build(ui): migrate from CRA/Jest to Vite/Vitest (#3311) 2024-09-28 11:54:36 -04:00
setupTests.js fix(auth): ExtAuth logout redirect on unauthenticated loads, and warning spam from untrusted sources (#6176) 2026-09-19 17:08:49 -04:00
sw.js fix(ui): stop precaching index.html so logins can't show the wrong user (#5882) 2026-08-02 19:46:05 -04:00
swNavigation.js fix(ui): stop precaching index.html so logins can't show the wrong user (#5882) 2026-08-02 19:46:05 -04:00
swNavigation.test.js fix(ui): stop precaching index.html so logins can't show the wrong user (#5882) 2026-08-02 19:46:05 -04:00
useChangeThemeColor.jsx build(ui): migrate from CRA/Jest to Vite/Vitest (#3311) 2024-09-28 11:54:36 -04:00
vite-env.d.ts build(ui): migrate from CRA/Jest to Vite/Vitest (#3311) 2024-09-28 11:54:36 -04:00