ghassan c160242dbc WIP: storage-fix-local-nas work before playlist controls feature
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 11:15:20 +03:00

114 lines
3.7 KiB
PHP

@props(['playlist'])
@once
<style>
.pl-count-badge {
position: absolute;
inset: 0 0 0 auto;
width: 72px;
background: rgba(0,0,0,.78);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
font-size: 12px;
font-weight: 600;
color: #fff;
pointer-events: none;
z-index: 3;
}
.pl-count-badge i { font-size: 20px; }
.pl-visibility-badge {
position: absolute;
bottom: 8px;
left: 8px;
background: rgba(0,0,0,.75);
color: #fff;
font-size: 11px;
font-weight: 700;
padding: 3px 8px;
border-radius: 4px;
display: flex;
align-items: center;
gap: 4px;
text-transform: uppercase;
letter-spacing: .4px;
pointer-events: none;
z-index: 3;
}
.pl-type-badge {
position: absolute;
top: 8px;
left: 8px;
background: rgba(0,0,0,.82);
color: #a78bfa;
font-size: 11px;
font-weight: 700;
padding: 3px 7px;
border-radius: 4px;
display: flex;
align-items: center;
gap: 4px;
text-transform: uppercase;
letter-spacing: .4px;
pointer-events: none;
white-space: nowrap;
z-index: 3;
}
</style>
@endonce
@php $pl = $playlist; @endphp
<div class="yt-video-card">
<a href="{{ route('playlists.show', $pl->id) }}">
<div class="yt-video-thumb">
<img src="{{ $pl->thumbnail_url }}" alt="{{ $pl->name }}" loading="lazy" decoding="async" onload="this.classList.add('loaded');this.closest('.yt-video-thumb').classList.add('loaded')">
<div class="pl-count-badge">
<i class="bi bi-collection-play-fill"></i>
{{ $pl->videos_count }}
</div>
<span class="pl-type-badge">
<i class="bi bi-collection-play-fill"></i> Playlist
</span>
@if($pl->visibility === 'private')
<span class="pl-visibility-badge"><i class="bi bi-lock-fill"></i> Private</span>
@elseif($pl->visibility === 'unlisted')
<span class="pl-visibility-badge"><i class="bi bi-link-45deg"></i> Unlisted</span>
@endif
</div>
</a>
<div class="yt-video-info">
<div class="yt-channel-icon"
style="cursor:pointer;"
onclick="window.location.href='{{ $pl->user ? route('channel', $pl->user->channel) : '#' }}'">
@if($pl->user?->avatar_url)
<img src="{{ $pl->user->avatar_url }}" alt="{{ $pl->user->name }}"
style="width:100%;height:100%;object-fit:cover;border-radius:50%;">
@elseif($pl->user)
<span style="width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff;">
{{ mb_strtoupper(mb_substr($pl->user->name, 0, 1)) }}
</span>
@endif
</div>
<div class="yt-video-details">
<h3 class="yt-video-title">
<a href="{{ route('playlists.show', $pl->id) }}">{{ $pl->name }}</a>
</h3>
@if($pl->user)
<a href="{{ route('channel', $pl->user->channel) }}" class="yt-channel-name"
onclick="event.stopPropagation()">{{ $pl->user->name }}</a>
@endif
<div class="yt-video-meta">
<span class="yt-type-label" style="color:#a78bfa;">
<i class="bi bi-collection-play-fill"></i>
Playlist
</span>
&nbsp;·&nbsp;
{{ number_format($pl->view_count) }} {{ Str::plural('view', $pl->view_count) }} · {{ $pl->created_at->diffForHumans() }}
</div>
</div>
</div>
</div>