From c0e9a94f98028adfde4608f66d890ee6aaaae04f Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:28:43 -0600 Subject: [PATCH] Refactor quality badges to use QualityBadge component with compact mode - Add compact prop to QualityBadge for inline usage in track lists - Compact mode shows simple text (24bit/96kHz or CD Quality) - Use golden gradient for hires badges in compact mode - Update ArtistDetailView to use QualityBadge compact - Update FavoritesView to use QualityBadge compact - Update SearchView to use QualityBadge compact - Remove duplicate CSS and getQualityLabel functions - LocalLibrary views keep custom format showing codec (FLAC 24/96) --- src/lib/components/QualityBadge.svelte | 82 ++++++++++++++----- .../components/views/ArtistDetailView.svelte | 35 ++------ src/lib/components/views/FavoritesView.svelte | 43 +++------- src/lib/components/views/SearchView.svelte | 28 ++++--- 4 files changed, 97 insertions(+), 91 deletions(-) diff --git a/src/lib/components/QualityBadge.svelte b/src/lib/components/QualityBadge.svelte index 2ca436f99..95625aa65 100644 --- a/src/lib/components/QualityBadge.svelte +++ b/src/lib/components/QualityBadge.svelte @@ -4,13 +4,15 @@ bitDepth?: number; samplingRate?: number; format?: string; + compact?: boolean; } let { quality = '', bitDepth, samplingRate, - format + format, + compact = false }: Props = $props(); // Determine quality tier @@ -53,7 +55,7 @@ return 'cd'; // Default to CD instead of unknown }); - // Format the display text + // Format the display text for full mode const displayText = $derived.by(() => { if (tier === 'max') { const depth = bitDepth || 24; @@ -77,6 +79,19 @@ return '16-bit / 44.1 kHz'; }); + // Format the compact display text + const compactText = $derived.by(() => { + if (tier === 'max' || tier === 'hires') { + const depth = bitDepth || 24; + const rate = samplingRate || (tier === 'max' ? 192 : 96); + return `${depth}bit/${rate}kHz`; + } + if (tier === 'mp3') { + return 'MP3'; + } + return 'CD Quality'; + }); + const tierLabel = $derived.by(() => { if (tier === 'max') return 'Hi-Res'; if (tier === 'hires') return 'Hi-Res'; @@ -96,23 +111,52 @@ const isHiRes = $derived(tier === 'max' || tier === 'hires'); -