72 lines
2.6 KiB
PHP
72 lines
2.6 KiB
PHP
|
|
@php
|
|
$gridV2 = request()->query('grid') === 'v2';
|
|
$seoPage = (int) request()->query('page', 1);
|
|
$seoBase = url()->current();
|
|
$seoCanonical = $seoPage > 1 ? $seoBase . '?page=' . $seoPage : $seoBase;
|
|
$seoPrev = $seoPage > 1
|
|
? ($seoPage === 2 ? $seoBase : $seoBase . '?page=' . ($seoPage - 1))
|
|
: null;
|
|
$seoNext = (isset($latestUploads) && method_exists($latestUploads, 'hasMorePages') && $latestUploads->hasMorePages())
|
|
? $seoBase . '?page=' . ($seoPage + 1)
|
|
: null;
|
|
@endphp
|
|
|
|
@push('head')
|
|
<link rel="canonical" href="{{ $seoCanonical ?? url()->current() }}">
|
|
@if(!empty($seoPrev ?? null))<link rel="prev" href="{{ $seoPrev }}">@endif
|
|
@if(!empty($seoNext ?? null))<link rel="next" href="{{ $seoNext }}">@endif
|
|
@endpush
|
|
|
|
{{-- Latest uploads grid — use same Nova gallery layout as /browse --}}
|
|
<section class="px-6 pb-10 pt-6 md:px-10" data-nova-gallery data-gallery-type="home-uploads">
|
|
<div class="{{ ($gridV2 ?? false) ? 'gallery' : 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-6' }}" data-gallery-grid>
|
|
@forelse($latestUploads as $upload)
|
|
<x-artwork-card :art="$upload" />
|
|
@empty
|
|
<div class="panel panel-default effect2">
|
|
<div class="panel-heading"><strong>No uploads yet</strong></div>
|
|
<div class="panel-body text-neutral-400">No recent uploads to show.</div>
|
|
</div>
|
|
@endforelse
|
|
</div>
|
|
|
|
<div class="flex justify-center mt-10" data-gallery-pagination>
|
|
{{-- no pagination for home grid; kept for parity with browse layout --}}
|
|
</div>
|
|
<div class="hidden" data-gallery-skeleton-template aria-hidden="true">
|
|
<x-skeleton.artwork-card />
|
|
</div>
|
|
<div class="hidden mt-8" data-gallery-skeleton></div>
|
|
</section>
|
|
|
|
@push('styles')
|
|
@if(! ($gridV2 ?? false))
|
|
<style>
|
|
[data-nova-gallery].is-enhanced [data-gallery-grid] {
|
|
display: grid;
|
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
grid-auto-rows: 8px;
|
|
gap: 1rem;
|
|
}
|
|
@media (min-width: 768px) {
|
|
[data-nova-gallery].is-enhanced [data-gallery-grid] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
}
|
|
@media (min-width: 1024px) {
|
|
[data-nova-gallery].is-enhanced [data-gallery-grid] { grid-template-columns: repeat(5, minmax(0, 1fr)); }
|
|
}
|
|
@media (min-width: 2600px) {
|
|
[data-nova-gallery].is-enhanced [data-gallery-grid] { grid-template-columns: repeat(6, minmax(0, 1fr)); }
|
|
}
|
|
[data-nova-gallery].is-enhanced [data-gallery-grid] > .nova-card { margin: 0 !important; }
|
|
[data-nova-gallery].is-enhanced [data-gallery-pagination] { display: none; }
|
|
[data-gallery-skeleton].is-loading { display: grid !important; grid-template-columns: inherit; gap: 1rem; }
|
|
</style>
|
|
@endif
|
|
@endpush
|
|
|
|
@push('scripts')
|
|
<script src="/js/legacy-gallery-init.js" defer></script>
|
|
@endpush
|
|
|