@php $expertiseOrder = [ 'Marketing Digital' => 0, 'Marketing_Digital' => 0, 'Marketing de contenu' => 1, 'Marketing_de_contenu' => 1, 'Content Marketing' => 1, 'Social Media' => 2, 'Social Média' => 2, 'Social_Media' => 2, 'Paid Ads' => 3, 'Paid_Ads' => 3, 'SEO' => 4, 'Analytics et data' => 5, 'Analytics_et_data' => 5, 'Développement & technologies' => 6, 'Développement_&_technologies' => 6, 'Développement Web' => 6, 'Automation' => 7, ]; $expertiseLabels = [ 'Paid_Ads' => 'Paid Ads', 'SEO' => 'SEO/GEO', 'Social_Media' => 'Social Média', 'Développement_&_technologies' => 'Développement & technologies', 'Développement Web' => 'Développement & technologies', 'Marketing_de_contenu' => 'Marketing de contenu', 'Content Marketing' => 'Marketing de contenu', 'Marketing_Digital' => 'Marketing Digital', 'Analytics_et_data' => 'Analytics et data', 'Automation' => 'Automation', ]; $serviceGroups = collect($groupedServices ?? [])->sortBy(function ($services, $categoryName) use ($expertiseOrder) { $service = $services->first(); return $expertiseOrder[$service->category_slug ?? null] ?? $expertiseOrder[$categoryName] ?? optional($service)->order ?? 999; }); $fallbackExpertises = [ [ 'label' => 'Paid Ads', 'desc' => 'Améliorez votre ROI', 'href' => route('expertises.show', 'Paid_Ads'), 'services' => [ ['label' => 'Google Ads (SEA)', 'desc' => 'Touchez les clients qui recherchent déjà vos services, avec un ROI optimisé.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'MagnifyingGlassIcon'], ['label' => 'Social Ads', 'desc' => 'Ciblez les bonnes audiences avec des messages qui marquent.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'UserGroupIcon'], ['label' => 'Amazon Ads', 'desc' => 'Augmentez vos ventes sur la marketplace la plus puissante du monde.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'GlobeAltIcon'], ['label' => 'Programmatique et display', 'desc' => 'Diffusez vos campagnes au bon endroit, au bon moment, au bon prix.', 'href' => route('expertises.show', 'Paid_Ads'), 'icon' => 'ChartBarIcon'], ], ], ['label' => 'Marketing de contenu', 'desc' => 'Touchez votre public cible', 'href' => route('expertises.show', 'Marketing_de_contenu'), 'services' => []], ['label' => 'Développement & technologies', 'desc' => 'Des solutions sur-mesure', 'href' => route('expertises.show', rawurldecode('D%C3%A9veloppement_%26_technologies')), 'services' => []], ['label' => 'Analytics et data', 'desc' => 'Mesurez l’efficacité de vos actions', 'href' => route('expertises.show', 'Analytics_et_data'), 'services' => []], ['label' => 'Marketing Digital', 'desc' => 'Clarifiez vos priorités, structurez votre croissance.', 'href' => route('expertises.show', 'Marketing_Digital'), 'services' => []], ['label' => 'Automation', 'desc' => 'Automatisez vos actions marketing', 'href' => route('expertises.show', 'Automation'), 'services' => []], ['label' => 'SEO', 'desc' => 'Améliorez votre positionnement', 'href' => route('expertises.show', 'SEO'), 'services' => []], ['label' => 'Social Média', 'desc' => 'Touchez, engagez et convertissez votre audience.', 'href' => route('expertises.show', 'Social_Media'), 'services' => []], ]; $fallbackExpertises = collect($fallbackExpertises) ->sortBy(fn ($item) => $expertiseOrder[$item['label']] ?? 999) ->values() ->all(); $icons = ['MegaphoneIcon', 'PencilSquareIcon', 'CodeBracketIcon', 'ChartBarIcon', 'GlobeAltIcon', 'BoltIcon', 'MagnifyingGlassIcon', 'UserGroupIcon']; $expertiseGroups = $serviceGroups->isNotEmpty() ? $serviceGroups->map(function ($services, $categoryName) use ($icons, $expertiseLabels) { $service = $services->first(); $label = $expertiseLabels[$service->category_slug ?? null] ?? $expertiseLabels[$categoryName] ?? $categoryName; return [ 'label' => $label, 'desc' => $service->categ_description ?? 'Decouvrir cette expertise', 'href' => route('expertises.show', $service->category_slug), 'services' => $services->map(function ($item, $index) use ($icons) { $description = $item->description; if ($item->name === 'Smsing' && blank($description)) { $description = 'Envoyez des messages courts et percutants, lus en quelques secondes'; } return [ 'label' => $item->name, 'desc' => $description, 'href' => route('services.show', $item->slug), 'icon' => $icons[$index % count($icons)], 'iconHtml' => $item->icon, ]; })->values()->all(), ]; })->values()->all() : $fallbackExpertises; $expertiseLinks = $expertiseGroups; $currentExpertiseSlug = request()->routeIs('expertises.show') ? request()->route('slug') : null; $activeExpertiseIndex = 0; if ($currentExpertiseSlug) { $matchedExpertiseIndex = collect($expertiseGroups)->search(function ($group) use ($currentExpertiseSlug) { $groupPath = parse_url($group['href'], PHP_URL_PATH) ?: ''; return rawurldecode(basename($groupPath)) === $currentExpertiseSlug; }); if ($matchedExpertiseIndex !== false) { $activeExpertiseIndex = $matchedExpertiseIndex; } } $resources = [ ['label' => 'Blog', 'desc' => 'Faites un état des lieux du référencement de votre site', 'href' => route('blog'), 'icon' => 'NewspaperIcon'], ['label' => 'Etude de cas', 'desc' => 'Faites un état des lieux du référencement de votre site', 'href' => route('caseStudie'), 'icon' => 'DocumentChartBarIcon'], ]; @endphp