@extends('frontend.layouts.user.index') @section('title', __('P2P Marketplace')) @section('content') {{-- Marketplace Screen: listing filters, trade ads, CTA cards, and trade order modal --}}
@if($subscriptionGates['can_create_ad']) @lang('Create Trade Ad') @else @endif
@php $side = request('side'); $sideEnum = \App\Enums\P2P\OrderSide::tryFrom($side); $activeBuyTab = $sideEnum === \App\Enums\P2P\OrderSide::SELL || $sideEnum === null; $activeSellTab = $sideEnum === \App\Enums\P2P\OrderSide::BUY; $buySideValue = \App\Enums\P2P\OrderSide::SELL->value; $sellSideValue = \App\Enums\P2P\OrderSide::BUY->value; $sideValue = $activeBuyTab ? $buySideValue : $sellSideValue; $coinMeta = [ 'USDT' => ['sym' => '₮', 'bg' => '#26A17B'], 'USDC' => ['sym' => '$', 'bg' => '#2775CA'], 'BTC' => ['sym' => '₿', 'bg' => '#F7931A'], 'ETH' => ['sym' => 'Ξ', 'bg' => '#627EEA'], 'BNB' => ['sym' => 'B', 'bg' => '#F0B90B'], 'TRX' => ['sym' => 'T', 'bg' => '#EF0027'], ]; $coinPriority = ['USDT' => 1, 'USDC' => 2, 'BTC' => 3, 'ETH' => 4, 'BNB' => 5, 'TRX' => 6]; $assetOptions = $currencyOptions->sortBy(fn ($code) => $coinPriority[$code] ?? 99)->values(); $preservedFilters = array_filter([ 'amount_min' => request('amount_min'), 'amount_max' => request('amount_max'), 'currency' => request('currency'), 'fiat' => request('fiat'), 'payment_method_id' => request('payment_method_id'), 'sort' => request('sort'), ], fn ($value) => $value !== null && $value !== ''); $totalOffers = $offers->total(); $selectedAsset = request('currency') ?: __('All assets'); $countText = $totalOffers.' '.($totalOffers === 1 ? __('offer') : __('offers')).' · '.$selectedAsset.' · '.($activeBuyTab ? __('Buying') : __('Selling')); @endphp {{-- Top bar: Buy/Sell side toggle + crypto asset pills --}}
@if($assetOptions->isNotEmpty())
@foreach($assetOptions as $assetCode) @php $meta = $coinMeta[$assetCode] ?? ['sym' => strtoupper(substr($assetCode, 0, 1)), 'bg' => '#64748B']; $coinActive = request('currency') === $assetCode; $coinFilters = \Illuminate\Support\Arr::except($preservedFilters, 'currency'); $coinUrl = $coinActive ? route('user.p2p.offers.index', array_merge(['side' => $sideValue], $coinFilters)) : route('user.p2p.offers.index', array_merge(['side' => $sideValue, 'currency' => $assetCode], $coinFilters)); @endphp {{ $meta['sym'] }} {{ $assetCode }} @endforeach
@endif
{{-- Resume Banner --}}
@lang('Resume last trade')
@lang('Order') #
@lang('Resume Trade')
{{-- Filter bar: fiat currency, payment method, amount range, search --}}
@if(request('sort')) @endif {{-- Dashboard selects: dashboard-main.js enhances these into the global premium dropdown UI. --}}
{{-- Toolbar: result count + sort + refresh --}}
{{ $countText }}
@foreach(\Illuminate\Support\Arr::except($preservedFilters, 'sort') as $filterKey => $filterValue) @endforeach
{{-- Column labels (desktop) --}}
@include('frontend.user.p2p.trade_ads.partials._trade_ad_rows', ['offers' => $offers, 'sellerStats' => $sellerStats, 'marketplaceRow' => true])
@lang('Loading more trade ads...')
@lang('You have reached the end of the available trade ads.')
{{ $offers->links() }}
@include('frontend.user.p2p.trade_ads.partials._marketplace_order_modal') {{-- Marketplace Script: resume state, modal population, payment selection, and total calculations --}} @push('scripts') @include('frontend.user.p2p.trade_ads.partials._marketplace_scripts') @endpush @endsection