{{-- Alpine manages expand/collapse only. Active state is PHP-rendered. --}} @php $flatCats = $this->allCategoriesFlat; $initialExpanded = []; $selectedNode = $this->selectedCategoryId ? collect($flatCats)->firstWhere('id', $this->selectedCategoryId) : null; $selectedAncestors = $selectedNode ? $selectedNode['ancestors'] : []; @endphp
Categories
@forelse ($flatCats as $node)
@if ($node['hasChildren']) @else @endif {{ $node['name'] }}
@empty
No categories crawled yet.
@endforelse
{{-- ── Right main area ──────────────────────────────────────────────── --}}
@if ($this->selectedCategoryId && !empty($this->toolsInCategory)) {{-- Tool grid --}}
{{ $this->selectedCategory?->name }}
@foreach ($this->toolsInCategory as $tool)
@if (!empty($tool['thumbnail_r2_key'])) {{ $tool['name'] }} @elseif (!empty($tool['thumbnail_url'])) {{ $tool['name'] }} @else
@endif
{{ $tool['name'] }}
@if ($tool['model_number'])
{{ $tool['model_number'] }}
@endif
@endforeach
@elseif ($this->selectedCategoryId && !empty($this->childCategories)) {{-- Sub-category message --}}
{{ $this->selectedCategory?->name }}
Select a sub-category from the left panel.
@elseif (!$this->selectedCategoryId)
Select a category to browse tools
@endif {{-- Diagram viewer --}} @if ($this->selectedToolId) @php $hotspotData = array_values(array_filter( $this->partsForDiagram, fn($p) => isset($p['hotspot_x'], $p['hotspot_y']) && $p['hotspot_x'] !== null )); @endphp
{{ $this->selectedTool?->name }} @if (!empty($this->diagramsForTool))
@foreach ($this->diagramsForTool as $diagram)
{{ $diagram['name'] ?: 'Diagram ' . ($loop->iteration) }}
@endforeach
@endif
@if ($this->selectedDiagramId)
{{-- Diagram image with hotspots --}}
@php $diagram = $this->selectedDiagram; @endphp @if ($diagram?->diagram_r2_key || $diagram?->diagram_image_url) @php $imgUrl = $diagram->diagram_r2_key ? \Storage::disk('r2')->url($diagram->diagram_r2_key) : $diagram->diagram_image_url; @endphp
Diagram {{-- Hotspot overlay — rendered via Alpine x-for to avoid Blade comment spam --}}
@else
No diagram image
@endif
{{-- Parts list --}}
@forelse ($this->partsForDiagram as $part) @empty @endforelse
Pos Part No. Description Price
@if ($part['position']) {{ $part['position'] }} @endif {{ $part['part_number'] }} {{ $part['description'] }} @if ($part['price'] !== null) {{ number_format((float) $part['price'], 2) }} {{ $part['currency'] }} @else — @endif
No parts data for this diagram.
@endif
@endif
{{-- .ek-main --}}
{{-- .ek-browser --}}