Update cover/thumbnail design

This commit is contained in:
2026-05-23 14:43:35 +02:00
parent 112cf9433e
commit 839779b82e

View File

@@ -5,15 +5,15 @@
]) ])
@php @php
$title = $displayjapanese ? $title = $displayjapanese
"$episode->title_jpn ($episode->title) - $episode->episode" : ? "{$episode->title_jpn} ({$episode->title}) - {$episode->episode}"
"$episode->title - $episode->episode"; : "{$episode->title} - {$episode->episode}";
$isWatched = auth()->check() && $episode->userWatched(auth()->id()); $isLoggedIn = auth()->check();
$badgeColor = $isWatched $isWatched = $isLoggedIn
? 'bg-green-600/80' ? $episode->userWatched(auth()->id())
: 'bg-rose-700/70'; : false;
$problematic = cache()->rememberForever( $problematic = cache()->rememberForever(
"episodeProblematic{$episode->id}", "episodeProblematic{$episode->id}",
@@ -21,23 +21,21 @@
); );
@endphp @endphp
<div <div class="group w-full p-1">
class="group relative w-full p-1 md:p-2 transition-all duration-300 ease-out md:hover:-translate-y-1 md:hover:scale-[1.03]">
<a <a
href="{{ route('hentai.index', ['title' => $episode->slug]) }}" href="{{ route('hentai.index', ['title' => $episode->slug]) }}"
class="block overflow-hidden rounded-2xl dark:bg-neutral-950 bg-white shadow-lg"> class="block overflow-hidden rounded-2xl border dark:border-neutral-800 border-neutral-300 dark:bg-neutral-900 transition-all duration-300 hover:-translate-y-1 dark:hover:border-neutral-700 hover:border-neutral-400 hover:shadow-2xl hover:shadow-black/30"
>
<div class="relative overflow-hidden">
{{-- Thumbnail / Cover --}}
<div class="relative">
{{-- Switch between Cover and Thumbnail --}}
@if ($view === 'poster') @if ($view === 'poster')
<img <img
src="{{ $episode->cover_url }}" src="{{ $episode->cover_url }}"
alt="{{ $episode->title }} - {{ $episode->episode }}" alt="{{ $episode->title }} - {{ $episode->episode }}"
loading="lazy" loading="lazy"
width="400" width="400"
class="aspect-[11/16] w-full object-cover object-center" class="aspect-[11/16] w-full object-cover object-center transform-gpu transition-transform duration-500 group-hover:scale-[1.02]"
> >
@elseif ($view === 'thumbnail') @elseif ($view === 'thumbnail')
<img <img
@@ -45,56 +43,79 @@
alt="{{ $episode->title }} - {{ $episode->episode }}" alt="{{ $episode->title }} - {{ $episode->episode }}"
loading="lazy" loading="lazy"
width="1000" width="1000"
class="aspect-video w-full object-cover object-center " class="w-full object-cover object-center transform-gpu transition-transform duration-500 group-hover:scale-[1.02]"
> >
@endif @endif
{{-- Resolution Badge --}} {{-- Overlay Gradient --}}
<div class="absolute top-0 right-0 z-20"> <div class="pointer-events-none absolute inset-0 bg-gradient-to-t from-black/80 via-black/10 to-transparent"></div>
<span class="{{ $badgeColor }} rounded-bl-xl px-3 py-1.5 text-sm font-semibold text-white">
{{-- Top Row --}}
<div class="absolute inset-x-0 top-0 z-20 flex items-start justify-between p-3">
{{-- Problematic Tags --}}
@if (!empty($problematic))
<div class="rounded-xl border border-red-500/30 bg-red-900/70 px-2.5 py-1 text-xs font-semibold text-white">
<i class="fa-solid fa-triangle-exclamation mr-1"></i>
{{ $problematic }}
</div>
@endif
{{-- Resolution --}}
<div class="ml-auto rounded-xl bg-black/70 px-2.5 py-1 text-xs font-semibold tracking-wide text-neutral-100 ring-1 ring-white/10">
{{ $episode->getResolution() }} {{ $episode->getResolution() }}
</span> </div>
</div> </div>
{{-- Bottom Stats --}}
<div class="absolute inset-x-0 bottom-0 z-20 p-3">
<div class="flex items-end justify-between gap-3">
{{-- Stats --}} {{-- Stats --}}
<div class="absolute bottom-0 left-0 z-20"> <div class="flex flex-1 flex-wrap items-center gap-x-3 gap-y-1 text-sm font-bold text-neutral-200">
<div class="{{ $badgeColor }} flex items-center gap-3 rounded-tr-xl px-3 py-1 text-sm font-semibold text-white">
<span class="flex items-center gap-1"> <span class="flex items-center gap-1">
<i class="fa-regular fa-eye"></i> <i class="fa-regular fa-eye text-neutral-400"></i>
{{ $episode->viewCountFormatted() }} {{ $episode->viewCountFormatted() }}
</span> </span>
<span class="flex items-center gap-1"> <span class="flex items-center gap-1">
<i class="fa-regular fa-heart"></i> <i class="fa-regular fa-heart text-neutral-400"></i>
{{ $episode->likeCount() }} {{ $episode->likeCount() }}
</span> </span>
<span class="flex items-center gap-1"> <span class="flex items-center gap-1">
<i class="fa-regular fa-comment"></i> <i class="fa-regular fa-comment text-neutral-400"></i>
{{ $episode->commentCount() }} {{ $episode->commentCount() }}
</span> </span>
</div> </div>
</div>
{{-- Problematic Tags --}} {{-- Watched Status (logged in users only) --}}
@if (!empty($problematic)) @auth
<div class="absolute top-0 left-0 z-20"> @if ($isWatched)
<span class="rounded-br-xl bg-red-700/80 px-3 py-1.5 text-sm font-semibold text-white backdrop-blur"> <div class="shrink-0 rounded-full bg-emerald-800/40 px-2.5 py-1 text-xs font-semibold text-emerald-300 ring-1 ring-emerald-500/30">
<i class="fa-solid fa-triangle-exclamation"></i> @if ($view === 'thumbnail')
{{ $problematic }} <i class="fa-solid fa-check mr-1"></i> Watched
</span> @else
<i class="fa-solid fa-check"></i>
@endif
</div>
@else
<div class="shrink-0 rounded-full bg-rose-800/40 px-2.5 py-1 text-xs font-semibold text-rose-300 ring-1 ring-rose-500/30">
<i class="fa-solid fa-eye-slash"></i>
</div> </div>
@endif @endif
@endauth
</div> </div>
</div>
</div>
{{-- Title --}} {{-- Content --}}
<div class="p-3 text-center"> <div class="relative isolate border-t dark:border-neutral-800 dark:bg-neutral-900 bg-white border-neutral-100 p-4">
<p class="text-sm font-bold text-black dark:text-white"> <h3 class="text-sm font-semibold leading-relaxed dark:text-neutral-100 transition-colors duration-200 dark:group-hover:text-white">
{{ $title }} {{ $title }}
</p> </h3>
</div> </div>
</a> </a>
</div> </div>