style(ui): refine release badge order, spacing, and palette
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user