style(ui): refine release badge order, spacing, and palette

This commit is contained in:
2026-05-23 03:21:17 +00:00
parent b8e23587b8
commit 52ce50e548
+73 -17
View File
@@ -18,10 +18,11 @@
<div class="version-main"> <div class="version-main">
<div class="version-badges"> <div class="version-badges">
<span v-if="torrent.resolution" class="v-badge res">{{ torrent.resolution }}</span> <span v-if="torrent.resolution" class="v-badge res">{{ torrent.resolution }}</span>
<span v-if="displayQualityBadge" class="v-badge qual">{{ displayQualityBadge }}</span>
<span v-if="displayCodecBadge" class="v-badge codec">{{ displayCodecBadge }}</span>
<span v-if="showHdrBadge" class="v-badge hdr">HDR</span> <span v-if="showHdrBadge" class="v-badge hdr">HDR</span>
<span v-if="displayCodecBadge" class="v-badge codec">{{ displayCodecBadge }}</span>
<span v-if="displayQualityBadge" class="v-badge qual">{{ displayQualityBadge }}</span>
<span v-if="displayAudioBadge" class="v-badge audio">{{ displayAudioBadge }}</span> <span v-if="displayAudioBadge" class="v-badge audio">{{ displayAudioBadge }}</span>
<span v-if="displayReleaseGroupBadge" class="v-badge group">{{ displayReleaseGroupBadge }}</span>
</div> </div>
<div class="version-language-flags"> <div class="version-language-flags">
<LanguageFlags class="language-flags-audio" :codes="torrent.audio_languages" :compact="compactFlags" /> <LanguageFlags class="language-flags-audio" :codes="torrent.audio_languages" :compact="compactFlags" />
@@ -255,6 +256,12 @@ const displayAudioBadge = computed(() => {
return props.torrent.audio; return props.torrent.audio;
}); });
const displayReleaseGroupBadge = computed(() => {
const value = props.torrent.encoder?.trim();
if (!value) return null;
return value;
});
const showHdrBadge = computed(() => { const showHdrBadge = computed(() => {
if (!hasHdr.value) return false; if (!hasHdr.value) return false;
return !hasHdrTag(props.torrent.quality) && !hasHdrTag(props.torrent.codec) && !hasHdrTag(props.torrent.audio); return !hasHdrTag(props.torrent.quality) && !hasHdrTag(props.torrent.codec) && !hasHdrTag(props.torrent.audio);
@@ -369,20 +376,64 @@ function handleActivate(event: MouseEvent | KeyboardEvent) {
} }
.version-badges { .version-badges {
--badge-row-height: 27px;
/* Regular hex geometry: horizontal inset = h / (2 * sqrt(3)) ~= 0.288675 * h */
--badge-hex-inset: calc(var(--badge-row-height) * 0.288675);
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
align-items: center; align-items: stretch;
gap: 6px; gap: 0;
height: var(--badge-row-height);
} }
.v-badge { .v-badge {
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 0.7rem; height: 100%;
padding: 3px 8px; font-size: 0.78rem;
border-radius: 4px; line-height: 1;
padding: 0 8px 0 calc(4px + var(--badge-hex-inset));
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
margin-left: calc(-1 * var(--badge-hex-inset));
clip-path: polygon(var(--badge-hex-inset) 0, 100% 0, 100% 100%, 0 100%);
}
.v-badge:first-child {
margin-left: 0;
padding-left: 9px;
clip-path: polygon(
var(--badge-hex-inset) 0,
100% 0,
100% 100%,
var(--badge-hex-inset) 100%,
0 50%
);
}
.v-badge:last-child {
padding-right: calc(6px + var(--badge-hex-inset));
clip-path: polygon(
var(--badge-hex-inset) 0,
calc(100% - var(--badge-hex-inset)) 0,
100% 50%,
calc(100% - var(--badge-hex-inset)) 100%,
0 100%
);
}
.v-badge:only-child {
margin-left: 0;
padding-left: 6px;
padding-right: calc(6px + var(--badge-hex-inset));
clip-path: polygon(
var(--badge-hex-inset) 0,
calc(100% - var(--badge-hex-inset)) 0,
100% 50%,
calc(100% - var(--badge-hex-inset)) 100%,
var(--badge-hex-inset) 100%,
0 50%
);
} }
.version-service-logo { .version-service-logo {
@@ -395,28 +446,33 @@ function handleActivate(event: MouseEvent | KeyboardEvent) {
} }
.v-badge.res { .v-badge.res {
background: #1d4ed8; background: #111111;
color: #eff6ff; color: #f8fafc;
} }
.v-badge.qual { .v-badge.qual {
background: #7c3aed; background: #334155;
color: #f5f3ff; color: #f1f5f9;
} }
.v-badge.codec { .v-badge.codec {
background: #0f766e; background: #1f2937;
color: #ecfeff; color: #f3f4f6;
} }
.v-badge.audio { .v-badge.audio {
background: #b45309; background: #475569;
color: #fffbeb; color: #f1f5f9;
} }
.v-badge.hdr { .v-badge.hdr {
background: #166534; background: #d4a017;
color: #dcfce7; color: #1c1917;
}
.v-badge.group {
background: #64748b;
color: #f8fafc;
} }
.version-language-flags { .version-language-flags {