@extends('layouts.nova') @section('main-class', '') @section('content') [], 'meta' => ['current_page' => 1, 'last_page' => 1, 'per_page' => 24, 'total' => 0], 'summary' => ['total_categories' => 0, 'total_artworks' => 0], 'popular_categories' => [], 'request' => ['query' => '', 'sort' => 'popular', 'page' => 1, 'per_page' => 24], ]; $categories = $initialPayload['data'] ?? []; $meta = $initialPayload['meta'] ?? ['current_page' => 1, 'last_page' => 1, 'per_page' => 24, 'total' => 0]; $summary = $initialPayload['summary'] ?? ['total_categories' => 0, 'total_artworks' => 0]; $popularCategories = $initialPayload['popular_categories'] ?? []; $requestState = $initialPayload['request'] ?? ['query' => '', 'sort' => 'popular', 'page' => 1, 'per_page' => 24]; $query = (string) ($requestState['query'] ?? ''); $sort = (string) ($requestState['sort'] ?? 'popular'); $currentPage = (int) ($meta['current_page'] ?? 1); $lastPage = (int) ($meta['last_page'] ?? 1); $buildCategoriesUrl = function (int $page) use ($query, $sort): string { $params = []; if ($page > 1) { $params['page'] = $page; } if ($sort !== 'popular') { $params['sort'] = $sort; } if ($query !== '') { $params['q'] = $query; } $queryString = http_build_query($params); return $queryString === '' ? url('/categories') : url('/categories') . '?' . $queryString; }; $categoryStyles = [ 'wallpapers' => ['badge' => 'from-cyan-400/90 to-sky-500/90', 'overlay' => 'from-sky-950/10 via-slate-950/12 to-slate-950/92'], 'skins' => ['badge' => 'from-orange-400/90 to-amber-500/90', 'overlay' => 'from-orange-950/10 via-slate-950/12 to-slate-950/92'], 'photography' => ['badge' => 'from-emerald-400/90 to-teal-500/90', 'overlay' => 'from-emerald-950/10 via-slate-950/12 to-slate-950/92'], 'other' => ['badge' => 'from-fuchsia-400/90 to-rose-500/90', 'overlay' => 'from-rose-950/10 via-slate-950/12 to-slate-950/92'], 'default' => ['badge' => 'from-cyan-400/90 to-orange-400/90', 'overlay' => 'from-slate-900/10 via-slate-950/12 to-slate-950/92'], ]; ?>
Category directory

{{ $page_title ?? 'Categories' }}

{{ $page_meta_description ?? 'Browse all wallpapers, skins, themes and digital art categories' }}

Categories

{{ number_format((int) ($summary['total_categories'] ?? 0)) }}

Artworks indexed

{{ number_format((int) ($summary['total_artworks'] ?? 0)) }}

View

Grid

@if ($query === '' && count($popularCategories) > 0)

Popular categories

Start with the busiest destinations

@endif

Directory results

{{ number_format((int) ($meta['total'] ?? 0)) }} categories visible

@if ((int) ($meta['total'] ?? 0) > 0) Showing {{ number_format($categories === [] ? 0 : 1) }} to {{ number_format(count($categories)) }} of {{ number_format((int) ($meta['total'] ?? 0)) }} categories. @else Browse all wallpapers, skins, themes and digital art categories. @endif

@if ((int) ($meta['total'] ?? 0) === 0)

No matching categories

Nothing matched "{{ $query }}"

Try a shorter term or switch sorting to browse the full category directory again.

@else
@foreach ($categories as $index => $category) @php $contentTypeSlug = $category['content_type']['slug'] ?? 'default'; $contentTypeName = $category['content_type']['name'] ?? 'Category'; $style = $categoryStyles[$contentTypeSlug] ?? $categoryStyles['default']; @endphp
Cover artwork for {{ $category['name'] }}
{{ $contentTypeName }} {{ number_format((int) ($category['artwork_count'] ?? 0)) }} artworks

{{ $category['name'] }}

Explore {{ $category['name'] }} across wallpapers, skins, themes, and digital art collections.

@endforeach

Loaded through page {{ number_format($currentPage) }} of {{ number_format($lastPage) }}

@if ($currentPage > 1) Previous @endif Page {{ number_format($currentPage) }} / {{ number_format($lastPage) }} @if ($currentPage < $lastPage) Next @endif
@endif
@vite(['resources/js/Pages/CategoriesPage.jsx']) @endsection