Dynamic default text/button color based on actual background brightness in Compact Player

Feature description

Make the “Default” color for text and buttons in the Compact Player dynamic — automatically switching between white and dark depending on the actual brightness of the background after the overlay is applied. Alternatively, add “Contrasted with surface” as a color option for strings and buttons in the Compact Player, as it is already available in other sections of the app.

Problem solved

There are three relevant scenarios in the Compact Player:
● Solid adaptive color → Default works correctly (white text), but the adaptive color doesn’t always work and sometimes the background ends up black, blending with the mini player.
● Primary container color without overlay → Default works correctly (dark text, good contrast because the background is light).
● Primary container color + Background overlay → the background gets darker due to the overlay, but the Default text color remains dark, losing contrast and becoming unreadable.
The only available color options for text and buttons are Default (dark), Primary color (blends into background) and Theme tertiary container (gray). There is no white option, and changing the global Theme tertiary to white affects other screens — in my case I prefer gray in the playback screen because my settings require it.

Brought benefits

The biggest benefit is that Primary container color + Background overlay guarantees that the Compact Player always has a visible, non-black background color — something that Solid adaptive color alone doesn’t guarantee. But for this combination to work properly, the text and buttons need to adapt to the darkened background as well. A dynamic Default color would make this the most reliable and visually consistent option.

Device type

Phone

Additional description and context

The “Contrasted with surface” option already exists in other parts of Symfonium — making it available in the Compact Player strings and buttons color options would be a consistent and elegant secondary solution.

I searched existing feature requests

on