♠♣♦♥
All checks were successful
Deploy App / build (push) Successful in 2m29s
Deploy App / deploy (push) Successful in 15s

This commit is contained in:
valere
2025-10-11 09:56:14 +02:00
parent 2135b0fec6
commit 4d424eee54
4 changed files with 33 additions and 10 deletions

View File

@@ -2,8 +2,18 @@
<article @click="() => playerStore.playTrack(props.track).catch(err => console.error(err))"
class="card flip-card w-56 h-80" :class="isFaceUp ? 'face-up' : 'face-down'">
<div class="flip-inner">
<!-- Face-Up -->
<main
class="flip-front backdrop-blur-sm border-2 -mt-12 z-10 card w-56 h-80 p-3 bg-opacity-40 hover:bg-opacity-80 hover:shadow-xl transition-all bg-white rounded-2xl shadow-lg flex flex-col overflow-hidden">
<div class="flex items-center justify-center size-7 absolute top-7 right-7" v-if="isPlaylistTrack">
<div class="suit text-7xl absolute"
:class="[isRedCard ? 'text-red-600' : 'text-slate-800', props.track.card?.suit]">
{{ props.track.card?.suit }}
</div>
<div class="rank text-white font-bold absolute -mt-1">
{{ props.track.card?.rank }}
</div>
</div>
<!-- Cover -->
<figure class="flex-1 overflow-hidden rounded-t-xl cursor-pointer">
<img :src="coverUrl" alt="Pochette de l'album" class="w-full h-full object-cover object-center" />
@@ -14,22 +24,20 @@
<div class="label" v-if="isOrder">
{{ props.track.order }}
</div>
<h2 class="text-base text-neutral-800 font-bold truncate">{{ props.track.title }}</h2>
<h2 class="text-base text-neutral-800 font-bold truncate">
{{ props.track.title }}
</h2>
<p class="text-sm text-neutral-500 truncate">
<template v-if="isPlaylistTrack">
{{ props.track.artist.name }}
</template>
<div class="order" v-if="isPlaylistTrack">
{{ props.track.card?.rank }}
{{ props.track.card?.suit }}
</div>
</p>
</div>
</main>
<!-- Face-Down -->
<footer
class="flip-back backdrop-blur-sm -mt-12 z-10 card w-56 h-80 p-3 bg-opacity-10 bg-white rounded-2xl shadow-lg flex flex-col overflow-hidden">
<!-- Back -->
<div class="h-full flex p-16 text-center bg-slate-800 rounded-xl">
<img src="/favicon.svg" />
<div class="label label--id" v-if="isOrder">
@@ -53,6 +61,7 @@ const playerStore = usePlayerStore()
const isManifesto = computed(() => props.track.compilationId.startsWith('ES00'))
const isOrder = computed(() => props.track.order && !isManifesto)
const isPlaylistTrack = computed(() => props.track.compilationId.length === 6)
const isRedCard = computed(() => props.track.card?.suit === '♥' || props.track.card?.suit === '♦')
const coverUrl = props.track.coverId.startsWith('http')
? props.track.coverId
: `https://f4.bcbits.com/img/${props.track.coverId}_4.jpg`;
@@ -101,5 +110,21 @@ const coverUrl = props.track.coverId.startsWith('http')
.flip-back {
transform: rotateY(180deg);
}
. {
@apply -mt-2;
}
. {
@apply text-7xl -mt-2;
}
. {
@apply -mt-3;
}
. {
@apply text-5xl
}
}
</style>