{{-- Services — IMPULSA skin. The same paginated Index component (per-user pricing via PriceResolver, real $svc->average_time, real $svc->description); this partial re-skins the page into category-grouped cards with a "Ver" modal. --}} @php use Illuminate\Support\Str; $groups = $services->getCollection()->groupBy('category_id'); $legend = [ ['icon' => '⭐', 'text' => __('Top seller')], ['icon' => '⚡', 'text' => __('Speed')], ['icon' => '🔥', 'text' => __('Popular')], ['icon' => '💎', 'text' => __('Best service')], ]; @endphp
{{-- Header: title · legend · platform filter --}}
{{ __('Services') }}
@foreach ($legend as $l) {{ $l['icon'] }} {{ $l['text'] }} @endforeach
{{-- Grouped services --}}
@forelse ($groups as $categoryId => $rows) @php $first = $rows->first(); $gnet = $serviceNetMap[$first->id] ?? null; $gdot = $gnet ? "var(--net-{$gnet['key']})" : 'var(--color-primary-600)'; @endphp
@if ($gnet && $gnet['sprite']) @else @endif {{ $first->category?->name ?? __('Uncategorised') }} NEW
{{ __('ID') }}
{{ __('Name') }}
{{ __('Rate/1000') }}
{{ __('Min / Max') }}
{{ __('Avg. time') }}
@foreach ($rows as $svc) @php $net = $serviceNetMap[$svc->id] ?? null; $svcData = \Illuminate\Support\Js::from([ 'id' => $svc->id, 'name' => $svc->name, 'desc' => $svc->description, 'time' => $svc->average_time, 'rate' => client_rate_money($svc->client_price), 'min' => number_format($svc->min), 'max' => number_format($svc->max), ]); @endphp
{{ $svc->id }}
@if ($net && $net['sprite']) @else {{ $net['mono'] ?? Str::upper(Str::substr($svc->category?->platform?->name ?? '?', 0, 1)) }} @endif {{ $svc->name }}
{{ client_rate_money($svc->client_price) }}
{{ number_format($svc->min) }} / {{ number_format($svc->max) }}
{{ $svc->average_time ?: '—' }}
@endforeach
@empty

{{ __('No services found') }}

{{ __('Try a different platform or search term.') }}

@endforelse
@if ($services->hasPages())
{{ $services->links() }}
@endif {{-- Service description modal ("Ver") --}}
{{ __('Average time') }}
{{ __('Min.') }}
{{ __('Max.') }}
{{ __('Rate/1000') }}