10-04-2026

This commit is contained in:
Kevin Adametz 2026-04-10 17:18:17 +02:00
parent 4d6b4930b2
commit 4bb89aad8c
836 changed files with 52961 additions and 5950 deletions

View file

@ -2,26 +2,32 @@
use App\Enums\ProductStatus;
use App\Models\Partner;
use App\Models\Product;
use Livewire\Volt\Component;
use function Livewire\Volt\{layout, title};
use function Livewire\Volt\layout;
layout('components.layouts.app');
new class extends Component {
new class extends Component
{
public Partner $partner;
public string $title = '';
public function mount(int $partnerId): void
{
$this->partner = Partner::with(['hub', 'products' => function ($q) {
$q->where('status', ProductStatus::Active)
->where('is_curated', true)
->where('is_available', true)
->with(['categories', 'media'])
->latest()
->limit(6);
}])->findOrFail($partnerId);
$this->partner = Partner::with([
'hub',
'media',
'products' => function ($q) {
$q->where('status', ProductStatus::Active)
->where('is_curated', true)
->where('is_available', true)
->with(['categories', 'media'])
->latest()
->limit(6);
},
])->findOrFail($partnerId);
$this->title = $this->partner->display_name ?? $this->partner->company_name;
}
@ -31,6 +37,9 @@ new class extends Component {
return [
'partner' => $this->partner,
'products' => $this->partner->products,
'teamPhotos' => $this->partner->media->where('type', 'team_photo')->sortBy('order_column')->values(),
'showroomPhotos' => $this->partner->media->where('type', 'showroom')->sortBy('order_column')->values(),
'brandImages' => $this->partner->media->where('type', 'brand_image')->sortBy('order_column')->values(),
];
}
}; ?>
@ -95,7 +104,7 @@ new class extends Component {
</flux:card>
<div class="grid grid-cols-1 gap-8 lg:grid-cols-3">
{{-- Linke Spalte: Story + Spezialisierungen --}}
{{-- Linke Spalte: Story + Showroom + Marken-Bilder + Produkte --}}
<div class="space-y-6 lg:col-span-2">
{{-- Story / Über uns --}}
@if($partner->story_text)
@ -107,6 +116,42 @@ new class extends Component {
</flux:card>
@endif
{{-- Showroom-Galerie (Händler) --}}
@if($showroomPhotos->isNotEmpty())
<flux:card class="shadow-elegant">
<flux:heading size="lg" class="mb-4">{{ __('Unser Showroom') }}</flux:heading>
<div class="grid grid-cols-2 gap-3 sm:grid-cols-3">
@foreach($showroomPhotos as $photo)
<div class="aspect-square overflow-hidden rounded-lg bg-zinc-100 dark:bg-zinc-800">
<img
src="{{ Storage::url($photo->file_path) }}"
alt="{{ __('Showroom') }}"
class="h-full w-full object-cover"
>
</div>
@endforeach
</div>
</flux:card>
@endif
{{-- Marken-Bilder (Hersteller) --}}
@if($brandImages->isNotEmpty())
<flux:card class="shadow-elegant">
<flux:heading size="lg" class="mb-4">{{ __('Unsere Marke') }}</flux:heading>
<div class="grid grid-cols-2 gap-3 sm:grid-cols-3">
@foreach($brandImages as $photo)
<div class="aspect-square overflow-hidden rounded-lg bg-zinc-100 dark:bg-zinc-800">
<img
src="{{ Storage::url($photo->file_path) }}"
alt="{{ __('Markenbild') }}"
class="h-full w-full object-cover"
>
</div>
@endforeach
</div>
</flux:card>
@endif
{{-- Produkte --}}
@if($products->isNotEmpty())
<flux:card class="shadow-elegant">
@ -197,6 +242,24 @@ new class extends Component {
</flux:card>
@endif
{{-- Team-Fotos --}}
@if($teamPhotos->isNotEmpty())
<flux:card class="shadow-elegant">
<flux:heading size="lg" class="mb-4">{{ __('Unser Team') }}</flux:heading>
<div class="grid grid-cols-2 gap-3">
@foreach($teamPhotos as $photo)
<div class="aspect-square overflow-hidden rounded-lg bg-zinc-100 dark:bg-zinc-800">
<img
src="{{ Storage::url($photo->file_path) }}"
alt="{{ __('Team') }}"
class="h-full w-full object-cover"
>
</div>
@endforeach
</div>
</flux:card>
@endif
{{-- Adresse --}}
@if($partner->street || $partner->city)
<flux:card class="shadow-elegant">