diff --git a/frontend/src/assets/bluray.webp b/frontend/src/assets/bluray.webp new file mode 100644 index 0000000..5b239da Binary files /dev/null and b/frontend/src/assets/bluray.webp differ diff --git a/frontend/src/components/ReleaseVersionCard.vue b/frontend/src/components/ReleaseVersionCard.vue index 2011256..ad0a889 100644 --- a/frontend/src/components/ReleaseVersionCard.vue +++ b/frontend/src/components/ReleaseVersionCard.vue @@ -22,7 +22,6 @@ {{ displayCodecBadge }} HDR {{ displayAudioBadge }} - 💿
@@ -34,6 +33,12 @@
+ { ); }); +const isDisc = computed(() => { + if (!props.torrent.playable_file) return false; + const filename = props.torrent.playable_file.toLowerCase(); + return filename.endsWith('index.bdmv') || filename.endsWith('.iso'); +}); + +const showBlurayLogo = computed(() => { + if (!isDisc.value) return false; + const filename = (props.torrent.playable_file || '').toLowerCase(); + if (filename.endsWith('index.bdmv')) return true; + return hasAnyTag( + blurayTagPattern, + props.torrent.quality, + props.torrent.codec, + props.torrent.audio, + props.torrent.title, + ); +}); + const displayQualityBadge = computed(() => { if (!props.torrent.quality || hasDolbyTag(props.torrent.quality)) return null; - if (blurayTagPattern.test(props.torrent.quality) && !isDisc.value) return null; + if (blurayTagPattern.test(props.torrent.quality)) return null; return props.torrent.quality; }); @@ -164,12 +189,6 @@ const showHdrBadge = computed(() => { return !hasHdrTag(props.torrent.quality) && !hasHdrTag(props.torrent.codec) && !hasHdrTag(props.torrent.audio); }); -const isDisc = computed(() => { - if (!props.torrent.playable_file) return false; - const filename = props.torrent.playable_file.toLowerCase(); - return filename.endsWith('index.bdmv') || filename.endsWith('.iso'); -}); - const isSelectable = computed(() => { if (props.selectable !== undefined) return props.selectable; return Boolean(props.torrent.playable_file); @@ -258,6 +277,7 @@ function handleActivate(event: MouseEvent | KeyboardEvent) { display: flex; align-items: stretch; justify-content: flex-end; + gap: 6px; min-width: 0; } @@ -265,6 +285,14 @@ function handleActivate(event: MouseEvent | KeyboardEvent) { align-self: stretch; } +.version-bluray-logo { + align-self: center; + width: auto; + height: 22px; + object-fit: contain; + filter: drop-shadow(0 0 0.4px rgba(0, 0, 0, 0.5)); +} + .version-badges { display: flex; flex-wrap: nowrap; @@ -282,13 +310,6 @@ function handleActivate(event: MouseEvent | KeyboardEvent) { text-transform: uppercase; } -.v-disc { - display: flex; - align-items: center; - font-size: 1.1rem; - line-height: 1; -} - .v-badge.res { background: #1d4ed8; color: #eff6ff;