feat(ui): add explicit content badge across entire app

Display parental_warning badge (E icon) next to track titles in all
views: TrackRow, QueuePanel, NowPlayingBar, ImmersivePlayer with all
13 visualizer panels, MiniPlayer surfaces, and AlbumDetailView.

Propagate parental_warning field through the full data chain from
Rust backend (qbz-models, queue, commands_v2, session_store, API
server) to frontend stores, adapters, and UI components. Badge uses
CSS mask technique with explicit.svg for theme compatibility.
This commit is contained in:
vicrodh committed 2026-03-06 08:48:51 -06:00
1 parent 6685566091
commit 5b9f5a75c2
39 files changed
+538 -36

No files matched your search

+8 -4
View File
@@ -47,7 +47,8 @@ export function buildQueueTrackFromQobuz(track: QobuzTrack): BackendQueueTrack {
album_id: track.album?.id || null,
artist_id: track.performer?.id ?? null,
streamable: track.streamable ?? true,
source: 'qobuz'
source: 'qobuz',
parental_warning: track.parental_warning ?? false
};
}
@@ -78,7 +79,8 @@ export function buildQueueTrackFromAlbumTrack(
album_id: track.albumId || albumId || null,
artist_id: track.artistId ?? artistId ?? null,
streamable: track.streamable ?? true,
source: 'qobuz'
source: 'qobuz',
parental_warning: track.parental_warning ?? false
};
}
@@ -102,7 +104,8 @@ export function buildQueueTrackFromPlaylistTrack(track: PlaylistTrack): BackendQ
album_id: track.albumId || null,
artist_id: track.artistId ?? null,
streamable: track.streamable ?? true,
source: 'qobuz'
source: 'qobuz',
parental_warning: track.parental_warning ?? false
};
}
@@ -192,7 +195,8 @@ export function buildQueueTrackFromDisplayTrack(track: DisplayTrack): BackendQue
sample_rate: track.samplingRate ?? null,
is_local: track.isLocal ?? false,
album_id: track.albumId || null,
artist_id: track.artistId ?? null
artist_id: track.artistId ?? null,
parental_warning: track.parental_warning ?? false
};
}