Implement creator studio and upload updates

This commit is contained in:
2026-04-04 10:12:02 +02:00
parent 1da7d3bf88
commit 0b216b7ecd
15107 changed files with 31206 additions and 626514 deletions

View File

@@ -13,6 +13,7 @@ use App\Services\CollectionRecommendationService;
use App\Services\CollectionSearchService;
use App\Services\CollectionService;
use App\Services\CollectionSurfaceService;
use App\Support\Seo\SeoFactory;
use Illuminate\Http\Request;
use Inertia\Inertia;
@@ -50,18 +51,23 @@ class CollectionDiscoveryController extends Controller
$results = $this->search->publicSearch($filters, (int) config('collections.v5.search.public_per_page', 18));
$seo = app(SeoFactory::class)->collectionListing(
'Search Collections — Skinbase Nova',
filled($filters['q'] ?? null)
? sprintf('Search results for "%s" across public Skinbase Nova collections.', $filters['q'])
: 'Browse public collections using filters for category, style, theme, color, quality tier, freshness, and programming metadata.',
$request->fullUrl(),
null,
false,
)->toArray();
return Inertia::render('Collection/CollectionFeaturedIndex', [
'eyebrow' => 'Search',
'title' => 'Search collections',
'description' => filled($filters['q'] ?? null)
? sprintf('Search results for "%s" across public Skinbase Nova collections.', $filters['q'])
: 'Browse public collections using filters for category, style, theme, color, quality tier, freshness, and programming metadata.',
'seo' => [
'title' => 'Search Collections — Skinbase Nova',
'description' => 'Search public collections by category, theme, quality tier, and curator context.',
'canonical' => route('collections.search'),
'robots' => 'index,follow',
],
'seo' => $seo,
'collections' => $this->collections->mapCollectionCardPayloads($results->items(), false, $request->user()),
'communityCollections' => [],
'editorialCollections' => [],
@@ -197,16 +203,17 @@ class CollectionDiscoveryController extends Controller
abort_if(! $program || collect($landing['collections'])->isEmpty(), 404);
$seo = app(SeoFactory::class)->collectionListing(
sprintf('%s — Skinbase Nova', $program['label']),
$program['description'],
route('collections.program.show', ['programKey' => $program['key']]),
)->toArray();
return Inertia::render('Collection/CollectionFeaturedIndex', [
'eyebrow' => 'Program',
'title' => $program['label'],
'description' => $program['description'],
'seo' => [
'title' => sprintf('%s — Skinbase Nova', $program['label']),
'description' => $program['description'],
'canonical' => route('collections.program.show', ['programKey' => $program['key']]),
'robots' => 'index,follow',
],
'seo' => $seo,
'collections' => $this->collections->mapCollectionCardPayloads($landing['collections'], false, $request->user()),
'communityCollections' => $this->collections->mapCollectionCardPayloads($landing['community_collections'] ?? collect(), false, $request->user()),
'editorialCollections' => $this->collections->mapCollectionCardPayloads($landing['editorial_collections'] ?? collect(), false, $request->user()),
@@ -231,16 +238,17 @@ class CollectionDiscoveryController extends Controller
$seasonalCollections = null,
$campaign = null,
) {
$seo = app(SeoFactory::class)->collectionListing(
sprintf('%s — Skinbase Nova', $title),
$description,
url()->current(),
)->toArray();
return Inertia::render('Collection/CollectionFeaturedIndex', [
'eyebrow' => $eyebrow,
'title' => $title,
'description' => $description,
'seo' => [
'title' => sprintf('%s — Skinbase Nova', $title),
'description' => $description,
'canonical' => url()->current(),
'robots' => 'index,follow',
],
'seo' => $seo,
'collections' => $this->collections->mapCollectionCardPayloads($collections, false, $viewer),
'communityCollections' => $this->collections->mapCollectionCardPayloads($communityCollections ?? collect(), false, $viewer),
'editorialCollections' => $this->collections->mapCollectionCardPayloads($editorialCollections ?? collect(), false, $viewer),