feat(qt): ambient accent links and larger header in immersive track info

The artist/label/musician links kept the theme accent, which has no
contrast guarantee over the ambient field — over ambient they now use the
AmbientAccent album-palette color. The panel header also reads at a
distance, so its title/album/artist step up to 24/15/20px there; the
desktop modal keeps 16/legal/16.

cc
This commit is contained in:
vicrodh committed 2026-08-31 15:35:25 -06:00
1 parent aeeb55198d
commit c51df2a061
2 files changed
+17 -6

No files matched your search

+4 -1
View File
@@ -22,6 +22,9 @@ Column {
/// Immersive-panel legibility mode (see TrackInfoBody.qml): fixed light
/// colors + native shadow instead of the theme tokens.
property bool overAmbient: false
/// Hover color for clickable names — the host swaps in the album-palette
/// accent over ambient (theme accent has no contrast guarantee there).
property color accentColor: theme.accent
signal nameClicked(string name, string roleRaw)
@@ -55,7 +58,7 @@ Column {
id: nameText
width: cc.colW
text: nameRow.modelData
color: nameArea.containsMouse ? theme.accent
color: nameArea.containsMouse ? cc.accentColor
: (cc.overAmbient ? "#f2ffffff" : theme.textPrimary)
style: cc.overAmbient ? Text.Raised : Text.Normal
styleColor: "#b0000000"
+13 -5
View File
@@ -35,6 +35,10 @@ Column {
readonly property color cRule: overAmbient ? "#2effffff" : theme.surfaceElevated
readonly property int cStyle: overAmbient ? Text.Raised : Text.Normal
readonly property color cShadow: "#b0000000"
// Links follow the ALBUM palette over ambient — the theme accent has no
// contrast guarantee there (owner, 2026-08-31 round 2).
AmbientAccent { id: bodyAmbientAccent }
readonly property color cAccent: overAmbient ? bodyAmbientAccent.value : theme.accent
readonly property var doc: host ? host.doc : ({})
@@ -120,7 +124,9 @@ Column {
color: body.cPrimary
style: body.cStyle
styleColor: body.cShadow
font.pixelSize: 16
// The immersive panel reads at a distance — its header
// steps up (owner, 2026-08-31 round 2).
font.pixelSize: body.overAmbient ? 24 : 16
font.weight: theme.weightSemibold
wrapMode: Text.WordWrap
}
@@ -131,7 +137,7 @@ Column {
color: body.cMuted
style: body.cStyle
styleColor: body.cShadow
font.pixelSize: theme.fontLegal
font.pixelSize: body.overAmbient ? 15 : theme.fontLegal
elide: Text.ElideRight
}
// Artist — a link only when an id exists.
@@ -143,10 +149,10 @@ Column {
id: artistText
text: body.doc.artist || ""
color: (body.doc.artistId || "") !== ""
? theme.accent : body.cPrimary
? body.cAccent : body.cPrimary
style: body.cStyle
styleColor: body.cShadow
font.pixelSize: 16
font.pixelSize: body.overAmbient ? 20 : 16
font.weight: theme.weightSemibold
}
MouseArea {
@@ -274,7 +280,7 @@ Column {
text: body.doc.label || ""
color: (labelArea.containsMouse
&& (body.doc.labelId || "") !== "")
? theme.accent : body.cPrimary
? body.cAccent : body.cPrimary
style: body.cStyle
styleColor: body.cShadow
font.pixelSize: 14
@@ -323,6 +329,7 @@ Column {
required property var modelData
colW: loadedCol.creditsColW
overAmbient: body.overAmbient
accentColor: body.cAccent
cell: modelData
onNameClicked: function (n, r) { body.host.openMusician(n, r) }
}
@@ -337,6 +344,7 @@ Column {
required property var modelData
colW: loadedCol.creditsColW
overAmbient: body.overAmbient
accentColor: body.cAccent
cell: modelData
onNameClicked: function (n, r) { body.host.openMusician(n, r) }
}