{{ __('Profiles') }}

{{ __('Browse all member profiles and use the filters to find people who match your interests, location, or diagnosis. Click a profile to view details and send a like.') }}
@php $allFilterKeys = ['name','user_id','gender','age_from','age_to','zip','city','country','lang_1','lang_2','lang_3','diagnosis','strength','mbti_type','interests','connection_purpose','relation','profile_types']; $panelOpenKeys = ['name','user_id','gender','age_from','age_to','zip','city','country','lang_1','lang_2','lang_3','diagnosis','strength','mbti_type','interests','connection_purpose','profile_types']; $hasFilters = request()->hasAny($allFilterKeys); $filterCount = collect($allFilterKeys)->filter(fn($k) => request()->filled($k))->count(); $langs = ['' => __('All'), 'nl' => 'πŸ‡³πŸ‡± NL', 'en' => 'πŸ‡¬πŸ‡§ EN', 'fr' => 'πŸ‡«πŸ‡· FR', 'de' => 'πŸ‡©πŸ‡ͺ DE', 'es' => 'πŸ‡ͺπŸ‡Έ ES']; @endphp
{{-- Mobile: result count --}}

{{ trans_choice(':count result|:count results', $profiles->total()) }}

{{-- ── Desktop sidebar ──────────────────────────────────────────── --}} {{-- ── Mobile drawer ─────────────────────────────────────────────── --}}
{{-- Drawer header --}}

{{ __('Filters') }} @if ($hasFilters) {{ $filterCount }} @endif

@auth @endauth
{{-- Save-name input (shown when saveMode is active) --}} @auth
βœ“ !
@endauth {{-- Scrollable form --}}
{{-- Saved searches --}} @auth

{{ __('Saved searches') }}

…

{{ __('No saved searches yet.') }}

@endauth {{-- Relation quick filters --}} @auth

{{ __('Relation') }}

@foreach ([ ['received', 'πŸ‘€', __('Likes received')], ['sent', '⭐', __('My likes')], ['matches', 'πŸ”—', __('My matches')], ] as [$val, $emoji, $label]) {{ $emoji }} {{ $label }} @endforeach @if (request('relation')) βœ• {{ __('All profiles') }} @endif
@endauth {{-- Name + profile number --}}

{{ __('Search') }}

{{-- Gender + Age --}}

{{ __('Basic filters') }}

{{-- Location --}}

{{ __('Location') }}

{{-- Premium advanced filters --}} @if (auth()->check() && auth()->user()->is_premium)

πŸ’Ž {{ __('Advanced filters') }}

@endif {{-- Profile type --}}

{{ __('Profile type') }}

@foreach ([ ['parent', __('Parent'), 'pill-parent'], ['partner', __('Partner'), 'pill-partner'], ] as [$val, $label, $pillClass]) @endforeach
{{-- Sort --}}

{{ __('Sort') }}

{{-- Extra bottom padding so last item clears the sticky footer --}}
{{-- Sticky drawer footer: Cancel + Apply --}}
@if ($hasFilters) {{ __('Reset') }} @endif
{{-- ── Results area ──────────────────────────────────────────────── --}}
{{-- Active filter chips + result count --}}
@php // Helper: URL with one or more keys removed from the query string $except = fn(array $keys) => route('profiles.index', array_filter(request()->except(array_merge($keys, ['page'])), fn($v) => $v !== null && $v !== '' && $v !== [])); $chipClass = 'inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs border transition bg-indigo-100 dark:bg-indigo-900/40 border-indigo-200 dark:border-indigo-700 text-indigo-700 dark:text-indigo-300 hover:bg-indigo-200 dark:hover:bg-indigo-900/70'; $relationLabels = ['received' => __('Likes received'), 'sent' => __('My likes'), 'matches' => __('My matches')]; $genderLabels = ['male' => __('Male'), 'female' => __('Female'), 'other' => __('Other')]; $langLabels = ['nl' => 'πŸ‡³πŸ‡± NL', 'en' => 'πŸ‡¬πŸ‡§ EN', 'fr' => 'πŸ‡«πŸ‡· FR', 'de' => 'πŸ‡©πŸ‡ͺ DE', 'es' => 'πŸ‡ͺπŸ‡Έ ES']; @endphp @if (request('relation')) {{ $relationLabels[request('relation')] ?? request('relation') }} × @endif @if (request('name')) {{ request('name') }} × @endif @if (request('user_id')) #{{ request('user_id') }} × @endif @if (request('gender')) {{ $genderLabels[request('gender')] ?? request('gender') }} × @endif @if (request('age_from') || request('age_to')) {{ request('age_from', '…') }}–{{ request('age_to', '…') }} {{ __('years') }} × @endif @if (request('lang_1')) {{ $langLabels[request('lang_1')] ?? strtoupper(request('lang_1')) }} × @endif @if (request('zip')) {{ request('zip') }} × @endif @if (request('city')) {{ request('city') }} × @endif @if (request('country')) {{ \App\Helpers\CountryHelper::flag(request('country')) }} {{ __(\App\Helpers\CountryHelper::name(request('country'))) }} × @endif @if (request('interests')) πŸ’Ž {{ \Illuminate\Support\Str::limit(request('interests'), 30) }} × @endif @php $diagnosisLabels = ['autism' => __('Autism'), 'adhd' => __('AD(H)D'), 'giftedness' => __('Giftedness'), 'intellectual_disability' => __('Intellectual disability'), 'dyslexia' => __('Dyslexia'), 'dyscalculia' => __('Dyscalculia'), 'dyspraxia' => __('Dyspraxia'), 'tourette' => __('Tourette syndrome'), 'ocd' => __('OCD'), 'sensory_processing' => __('Sensory processing'), 'synesthesia' => __('Synesthesia'), 'anxiety_disorder' => __('Anxiety disorder'), 'ptsd' => __('PTSD'), 'abi' => __('Acquired brain injury (ABI)')]; $strengthLabels = ['cognitive' => __('Cognitive skills'), 'creative' => __('Creative skills'), 'social' => __('Social skills'), 'self_management' => __('Organisation & self-management'), 'adaptability' => __('Adaptability & resilience'), 'tech' => __('IT & programming'), 'analytical' => __('Mathematics & analytical thinking'), 'science' => __('Science & research'), 'music' => __('Music'), 'technical' => __('Technical & craftsmanship'), 'nature' => __('Nature & animals'), 'writing' => __('Writing & storytelling'), 'languages' => __('Languages')]; $purposeLabels = ['activities' => __('Doing activities together'), 'online_contact' => __('Online contact / pen pal'), 'friendship' => __('Friendship'), 'romance' => __('Romantic relationship'), 'find_mentor' => __('Finding a mentor'), 'professional' => __('Professional / networking'), 'nd_parents' => __('Meeting parents of neurodivergent children'), 'neurodiverse_partner' => __('Meeting partners in a neurodiverse relationship'), 'mentor' => __('Becoming a mentor')]; @endphp @if (request('diagnosis')) πŸ’Ž {{ $diagnosisLabels[request('diagnosis')] ?? request('diagnosis') }} × @endif @if (request('strength')) πŸ’Ž {{ $strengthLabels[request('strength')] ?? request('strength') }} × @endif @if (request('mbti_type')) πŸ’Ž {{ request('mbti_type') }} × @endif @if (request('connection_purpose')) πŸ’Ž {{ $purposeLabels[request('connection_purpose')] ?? request('connection_purpose') }} × @endif @foreach ((array) request('profile_types', []) as $pt) @php $ptLabels = ['parent' => __('Parent'), 'partner' => __('Partner')]; @endphp @php $remaining = array_values(array_diff((array) request('profile_types', []), [$pt])); $ptUrl = route('profiles.index', array_filter( array_merge(request()->except(['profile_types', 'page']), $remaining ? ['profile_types' => $remaining] : []), fn($v) => $v !== null && $v !== '' && $v !== [])); @endphp {{ $ptLabels[$pt] ?? $pt }} × @endforeach @if ($hasFilters) {{ __('Reset') }} × @endif
{{-- Grid --}}
@forelse ($profiles as $profile) @php $mainPhoto = $profile->user->photos->firstWhere('is_primary', true) ?? $profile->user->photos->first(); $isMatch = $matchedUserIds->contains($profile->user_id); $isMatchPending = $matchPendingUserIds->contains($profile->user_id); $isSent = $likedUserIds->contains($profile->user_id); $isReceived = $receivedUserIds->contains($profile->user_id); $showActions = auth()->check() && auth()->id() !== $profile->user_id && ($isMatch || $isMatchPending || $isSent || $isReceived); @endphp {{-- PRO profiles use their own card partial --}} @if ($profile->profile_type === 'pro' && $profile->user->proProfile)
@include('pro.partials.card', [ 'proProfile' => $profile->user->proProfile, 'mainPhoto' => $mainPhoto, ])
@else
{{-- Full-card link overlay (behind action buttons) --}} {{-- Thumb --}}
@if ($mainPhoto) {{ $profile->user->name }} @else
@endif
{{-- Info --}}

{{ $profile->user->name }} @php $cardType = $profile->profile_type ?? 'self'; $cardPill = match($cardType) { 'parent' => ['label' => __('Parent'), 'class' => 'pill-parent'], 'partner' => ['label' => __('Partner'), 'class' => 'pill-partner'], 'pro' => ['label' => 'PRO', 'class' => 'pill-pro'], default => null, }; @endphp @if ($cardPill) {{ $cardPill['label'] }} @endif

#{{ $profile->user->id }}

{{ collect([ $profile->gender ? __($profile->gender) : null, $profile->age !== null ? $profile->age . ' ' . __('years') : null, ])->filter()->implode(' Β· ') }}

@if ($profile->city || $profile->zip_code)

{{ collect([$profile->zip_code, $profile->city])->filter()->implode(' Β· ') }}

@endif @if ($profile->country)

{{ __(\App\Helpers\CountryHelper::name($profile->country)) }}

@endif
{{-- Like / match badge --}} @if ($showActions)
@if ($isMatch) πŸ”— @elseif ($isMatchPending) ⏳ @elseif ($isSent)
@csrf
@elseif ($isReceived)
@csrf
@endif
@endif
@endif {{-- end @else (non-PRO card) --}} @empty

{{ __('No profiles found.') }}

@endforelse
{{-- Scroll anchor for "Last" button --}}
{{-- end results --}}
{{-- Mobile: filter button fixed above the bottom bar --}}
@push('scripts') @endpush @push('bottom-bar-buttons')
{{ $profiles->links() }}
@endpush