23-01-2026
This commit is contained in:
parent
07959c0ba2
commit
854ce02bf6
166 changed files with 32909 additions and 1262 deletions
148
resources/views/admin/dashboards/admin.blade.php
Normal file
148
resources/views/admin/dashboards/admin.blade.php
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<div class="space-y-6">
|
||||
{{-- KPI-Karten --}}
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
{{-- Aktive Hubs --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-blue-700 dark:text-blue-300 font-medium">{{ __('Aktive Hubs') }}</div>
|
||||
<div class="text-3xl font-bold text-blue-900 dark:text-blue-100 mt-2">{{ $activeHubs }}</div>
|
||||
<div class="text-xs text-blue-600 dark:text-blue-400 mt-1">{{ $plannedHubs }} {{ __('geplant') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-map-pin', 'w-10 h-10 text-blue-400 dark:text-blue-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Partner-Wachstum --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-green-700 dark:text-green-300 font-medium">{{ __('Partner gesamt') }}</div>
|
||||
<div class="text-3xl font-bold text-green-900 dark:text-green-100 mt-2">{{ $totalPartners }}</div>
|
||||
<div class="text-xs text-green-600 dark:text-green-400 mt-1">+{{ $partnersThisMonth }} {{ __('diesen Monat') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-user-group', 'w-10 h-10 text-green-400 dark:text-green-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Plattform-Umsatz --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-purple-700 dark:text-purple-400 font-medium">{{ __('Plattform-Umsatz') }}</div>
|
||||
<div class="text-3xl font-bold text-purple-900 dark:text-purple-100 mt-2">{{ number_format($platformRevenue, 0, ',', '.') }} €</div>
|
||||
<div class="text-xs text-purple-600 dark:text-purple-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-currency-euro', 'w-10 h-10 text-purple-400 dark:text-purple-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- System-Status --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-emerald-700 dark:text-emerald-300 font-medium">{{ __('System-Status') }}</div>
|
||||
<div class="text-3xl font-bold text-emerald-900 dark:text-emerald-100 mt-2">{{ __('Optimal') }}</div>
|
||||
<div class="flex items-center gap-1 mt-1">
|
||||
<div class="w-2 h-2 rounded-full bg-emerald-500 animate-pulse"></div>
|
||||
<div class="text-xs text-emerald-600 dark:text-emerald-400">{{ __('Alle Systeme laufen') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@svg('heroicon-o-server', 'w-10 h-10 text-emerald-400 dark:text-emerald-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
{{-- Widgets --}}
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
{{-- Onboarding-Pipeline --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Onboarding-Pipeline') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Offene Einladungen') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 flex items-center justify-center py-8 bg-orange-50 dark:bg-zinc-800 rounded-lg">
|
||||
<div class="text-center">
|
||||
<div class="text-5xl font-bold text-sky-600 dark:text-sky-400">{{ $pendingInvitations }}</div>
|
||||
<div class="text-sm text-sky-700 dark:text-sky-300 mt-2">{{ __('Einladungen ohne Registrierung') }}</div>
|
||||
<flux:button href="{{ route('admin.partners.registration-codes') }}" variant="primary" size="sm" class="mt-4">
|
||||
{{ __('Einladungen verwalten') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Partner-Übersicht --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Partner & Kunden') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Übersicht der Plattform-Nutzer') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 space-y-3">
|
||||
<div class="flex items-center justify-between p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-user', 'w-6 h-6 text-blue-500')
|
||||
<span class="font-medium">{{ __('Kunden') }}</span>
|
||||
</div>
|
||||
<span class="text-2xl font-bold">{{ $totalCustomers }}</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-building-storefront', 'w-6 h-6 text-green-500')
|
||||
<span class="font-medium">{{ __('Händler') }}</span>
|
||||
</div>
|
||||
<span class="text-2xl font-bold">{{ \App\Models\Partner::where('type', 'Retailer')->count() }}</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-building-office', 'w-6 h-6 text-purple-500')
|
||||
<span class="font-medium">{{ __('Hersteller') }}</span>
|
||||
</div>
|
||||
<span class="text-2xl font-bold">{{ \App\Models\Partner::where('type', 'Manufacturer')->count() }}</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-briefcase', 'w-6 h-6 text-orange-500')
|
||||
<span class="font-medium">{{ __('Makler') }}</span>
|
||||
</div>
|
||||
<span class="text-2xl font-bold">{{ \App\Models\Partner::whereIn('type', ['Broker', 'Estate-Agent'])->count() }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
{{-- Besucher-Statistik Chart --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Besucher-Statistik') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Tägliche Besucherzahlen der letzten Tage') }}</flux:subheading>
|
||||
|
||||
<div class="mt-6">
|
||||
@if(!empty($data))
|
||||
<flux:chart :value="$data" class="aspect-[3/1]">
|
||||
<flux:chart.svg>
|
||||
<flux:chart.line field="visitors" class="text-pink-500 dark:text-pink-400" />
|
||||
|
||||
<flux:chart.axis axis="x" field="date">
|
||||
<flux:chart.axis.line />
|
||||
<flux:chart.axis.tick />
|
||||
</flux:chart.axis>
|
||||
|
||||
<flux:chart.axis axis="y">
|
||||
<flux:chart.axis.grid />
|
||||
<flux:chart.axis.tick />
|
||||
</flux:chart.axis>
|
||||
|
||||
<flux:chart.cursor />
|
||||
</flux:chart.svg>
|
||||
|
||||
<flux:chart.tooltip>
|
||||
<flux:chart.tooltip.heading field="date" :format="['year' => 'numeric', 'month' => 'numeric', 'day' => 'numeric']" />
|
||||
<flux:chart.tooltip.value field="visitors" label="Besucher" />
|
||||
</flux:chart.tooltip>
|
||||
</flux:chart>
|
||||
@else
|
||||
<div class="text-center py-8 text-zinc-500 dark:text-zinc-400">
|
||||
{{ __('Keine Daten verfügbar') }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
104
resources/views/admin/dashboards/broker.blade.php
Normal file
104
resources/views/admin/dashboards/broker.blade.php
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<div class="space-y-6">
|
||||
{{-- KPI-Karten --}}
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
{{-- Verdiente Provision --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-green-700 dark:text-green-300 font-medium">{{ __('Verdiente Provision') }}</div>
|
||||
<div class="text-3xl font-bold text-green-900 dark:text-green-100 mt-2">{{ number_format($totalCommission, 2, ',', '.') }} €</div>
|
||||
<div class="text-xs text-green-600 dark:text-green-400 mt-1">{{ __('Lifetime Earnings (Platzhalter)') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-currency-euro', 'w-10 h-10 text-green-400 dark:text-green-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Offene Auszahlung --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-blue-700 dark:text-blue-300 font-medium">{{ __('Offene Auszahlung') }}</div>
|
||||
<div class="text-3xl font-bold text-blue-900 dark:text-blue-100 mt-2">{{ number_format($pendingPayout, 2, ',', '.') }} €</div>
|
||||
<div class="text-xs text-blue-600 dark:text-blue-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-banknotes', 'w-10 h-10 text-blue-400 dark:text-blue-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Generierte Leads --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-purple-700 dark:text-purple-300 font-medium">{{ __('Generierte Leads') }}</div>
|
||||
<div class="text-3xl font-bold text-purple-900 dark:text-purple-100 mt-2">{{ $generatedLeads }}</div>
|
||||
<div class="text-xs text-purple-600 dark:text-purple-400 mt-1">{{ __('Registrierte Kunden') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-user-group', 'w-10 h-10 text-purple-400 dark:text-purple-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
{{-- Widgets --}}
|
||||
<div class="grid grid-cols-1 gap-6">
|
||||
{{-- Empfehlungs-Link --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Mein Empfehlungs-Link') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Teilen Sie diesen Link mit Ihren Kunden') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 p-4 bg-blue-50 dark:bg-blue-900/20 rounded-lg border-2 border-dashed border-blue-300 dark:border-blue-700">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="flex-1 bg-white dark:bg-zinc-800 px-4 py-3 rounded font-mono text-sm break-all">
|
||||
{{ $referralLink }}
|
||||
</div>
|
||||
<flux:button
|
||||
variant="primary"
|
||||
icon="clipboard"
|
||||
x-data
|
||||
@click="navigator.clipboard.writeText('{{ $referralLink }}'); $tooltip('{{ __('Link kopiert!') }}', { timeout: 2000 })"
|
||||
>
|
||||
{{ __('Kopieren') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 flex gap-2">
|
||||
<flux:button variant="ghost" size="sm" icon="chat-bubble-left">{{ __('Per WhatsApp teilen') }}</flux:button>
|
||||
<flux:button variant="ghost" size="sm" icon="envelope">{{ __('Per E-Mail teilen') }}</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
{{-- Meine Kunden --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Meine Kunden') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Über Sie registrierte Kunden') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 flex items-center justify-center py-8 bg-purple-50 dark:bg-purple-900/10 rounded-lg">
|
||||
<div class="text-center">
|
||||
<div class="text-5xl font-bold text-purple-600 dark:text-purple-400">{{ $brokerCustomers }}</div>
|
||||
<div class="text-sm text-purple-700 dark:text-purple-300 mt-2">{{ __('Registrierte Kunden') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Letzte Aktivitäten --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Letzte Aktivitäten') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Was ist neu?') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 space-y-2">
|
||||
<div class="p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg text-sm">
|
||||
<div class="font-medium">{{ __('Kunde Max M. hat sich registriert') }}</div>
|
||||
<div class="text-xs text-zinc-500 dark:text-zinc-400 mt-1">{{ __('vor 2 Stunden (Platzhalter)') }}</div>
|
||||
</div>
|
||||
<div class="p-3 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg text-sm">
|
||||
<div class="font-medium">{{ __('Provision gutgeschrieben: 125,00 €') }}</div>
|
||||
<div class="text-xs text-zinc-500 dark:text-zinc-400 mt-1">{{ __('gestern (Platzhalter)') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
184
resources/views/admin/dashboards/customer.blade.php
Normal file
184
resources/views/admin/dashboards/customer.blade.php
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
<div class="space-y-6">
|
||||
{{-- Marken-Header mit Logo --}}
|
||||
<flux:card>
|
||||
<div class="flex flex-col md:flex-row items-center justify-between gap-6 p-6 rounded-lg"
|
||||
style="background: linear-gradient(135deg, {{ $customerBrandColors['primary'] ?? '#2b3f51' }}15 0%, {{ $customerBrandColors['secondary'] ?? '#20a0da' }}15 100%);">
|
||||
<div class="flex-1 text-center md:text-left">
|
||||
<div class="mb-4">
|
||||
<img src="{{ asset($customerBrandLogo) }}" alt="{{ $customerBrandName }}" class="h-12 mx-auto md:mx-0 dark:hidden">
|
||||
<img src="{{ asset(\App\Helpers\ThemeHelper::getLogoPathForBrand($customerBrand, 'negative')) }}" alt="{{ $customerBrandName }}" class="h-12 mx-auto md:mx-0 hidden dark:block">
|
||||
</div>
|
||||
<flux:heading size="xl">{{ __('Willkommen bei') }} {{ $customerBrandName }}!</flux:heading>
|
||||
<flux:subheading class="mt-2">{{ __('Ihr persönliches Kundenportal') }}</flux:subheading>
|
||||
@if($customerBrokerName)
|
||||
<div class="mt-3 flex items-center gap-2 justify-center md:justify-start">
|
||||
@svg('heroicon-o-user-circle', 'w-5 h-5 text-zinc-500 dark:text-zinc-400')
|
||||
<span class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
{{ __('Ihr Ansprechpartner:') }} <strong>{{ $customerBrokerName }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="flex-shrink-0">
|
||||
<div class="w-32 h-32 rounded-full flex items-center justify-center"
|
||||
style="background-color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }}20;">
|
||||
@svg('heroicon-o-home', 'w-16 h-16', ['style' => 'color: ' . ($customerBrandColors['primary'] ?? '#2b3f51')])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Info-Box --}}
|
||||
<flux:card>
|
||||
<div class="p-4 rounded-lg" style="background-color: {{ $customerBrandColors['secondary'] ?? '#20a0da' }}10;">
|
||||
<div class="flex items-start gap-3">
|
||||
@svg('heroicon-o-information-circle', 'w-6 h-6 flex-shrink-0', ['style' => 'color: ' . ($customerBrandColors['secondary'] ?? '#20a0da')])
|
||||
<div>
|
||||
<div class="font-medium" style="color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }};">
|
||||
{{ __('Ihr Dashboard wird bald erweitert') }}
|
||||
</div>
|
||||
<div class="text-sm text-zinc-700 dark:text-zinc-300 mt-1">
|
||||
{{ __('Hier sehen Sie bald Ihre Bestellungen, Wunschliste und Empfehlungen.') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Top-Angebote --}}
|
||||
@if(!empty($topOffers))
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<div>
|
||||
<flux:heading size="lg">{{ __('Top-Angebote für Sie') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Exklusive Möbel zu besonderen Preisen') }}</flux:subheading>
|
||||
</div>
|
||||
<flux:button variant="ghost" size="sm" icon="arrow-right">
|
||||
{{ __('Alle Angebote') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mt-6">
|
||||
@foreach($topOffers as $offer)
|
||||
<div class="group relative overflow-hidden rounded-lg border border-zinc-200 dark:border-zinc-700 hover:shadow-lg transition-shadow duration-300">
|
||||
{{-- Produktbild --}}
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-zinc-100 dark:bg-zinc-800">
|
||||
<img src="{{ $offer['image'] }}"
|
||||
alt="{{ $offer['name'] }}"
|
||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300">
|
||||
|
||||
{{-- Rabatt-Badge --}}
|
||||
@if($offer['discount'] > 0)
|
||||
<div class="absolute top-3 right-3 px-2 py-1 rounded-full text-xs font-bold text-white"
|
||||
style="background-color: {{ $customerBrandColors['secondary'] ?? '#20a0da' }};">
|
||||
-{{ $offer['discount'] }}%
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- Kategorie-Badge --}}
|
||||
<div class="absolute top-3 left-3 px-2 py-1 rounded-full text-xs font-medium bg-white/90 dark:bg-zinc-900/90 text-zinc-700 dark:text-zinc-300">
|
||||
{{ $offer['category'] }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Produktinfo --}}
|
||||
<div class="p-4">
|
||||
<h3 class="font-semibold text-lg mb-2 text-zinc-900 dark:text-zinc-100">
|
||||
{{ $offer['name'] }}
|
||||
</h3>
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mb-3">
|
||||
{{ $offer['description'] }}
|
||||
</p>
|
||||
|
||||
{{-- Preis --}}
|
||||
<div class="flex items-center gap-2 mb-4">
|
||||
<span class="text-2xl font-bold" style="color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }};">
|
||||
{{ number_format($offer['price'], 2, ',', '.') }} €
|
||||
</span>
|
||||
@if($offer['original_price'] > $offer['price'])
|
||||
<span class="text-sm text-zinc-500 dark:text-zinc-400 line-through">
|
||||
{{ number_format($offer['original_price'], 2, ',', '.') }} €
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- Aktions-Buttons --}}
|
||||
<div class="flex gap-2">
|
||||
<flux:button
|
||||
variant="primary"
|
||||
size="sm"
|
||||
icon="eye"
|
||||
class="flex-1"
|
||||
style="background-color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }}; border-color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }};">
|
||||
{{ __('Details') }}
|
||||
</flux:button>
|
||||
<flux:button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
icon="heart"
|
||||
style="color: {{ $customerBrandColors['secondary'] ?? '#20a0da' }};">
|
||||
</flux:button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</flux:card>
|
||||
@endif
|
||||
|
||||
{{-- Feature-Vorschau --}}
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
<flux:card>
|
||||
<div class="p-4 text-center">
|
||||
<div class="w-16 h-16 rounded-full mx-auto mb-3 flex items-center justify-center"
|
||||
style="background-color: {{ $customerBrandColors['primary'] ?? '#2b3f51' }}20;">
|
||||
@svg('heroicon-o-shopping-bag', 'w-8 h-8', ['style' => 'color: ' . ($customerBrandColors['primary'] ?? '#2b3f51')])
|
||||
</div>
|
||||
<div class="font-medium text-lg">{{ __('Meine Bestellungen') }}</div>
|
||||
<div class="text-sm text-zinc-500 dark:text-zinc-400 mt-1">{{ __('Bald verfügbar') }}</div>
|
||||
<div class="mt-3">
|
||||
<flux:badge color="zinc" size="sm">{{ __('In Entwicklung') }}</flux:badge>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
<flux:card>
|
||||
<div class="p-4 text-center">
|
||||
<div class="w-16 h-16 rounded-full mx-auto mb-3 flex items-center justify-center"
|
||||
style="background-color: {{ $customerBrandColors['secondary'] ?? '#20a0da' }}20;">
|
||||
@svg('heroicon-o-heart', 'w-8 h-8', ['style' => 'color: ' . ($customerBrandColors['secondary'] ?? '#20a0da')])
|
||||
</div>
|
||||
<div class="font-medium text-lg">{{ __('Meine Wunschliste') }}</div>
|
||||
<div class="text-sm text-zinc-500 dark:text-zinc-400 mt-1">{{ __('Bald verfügbar') }}</div>
|
||||
<div class="mt-3">
|
||||
<flux:badge color="zinc" size="sm">{{ __('In Entwicklung') }}</flux:badge>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
<flux:card>
|
||||
<div class="p-4 text-center">
|
||||
<div class="w-16 h-16 rounded-full mx-auto mb-3 flex items-center justify-center"
|
||||
style="background-color: {{ $customerBrandColors['accent'] ?? ($customerBrandColors['secondary'] ?? '#20a0da') }}20;">
|
||||
@svg('heroicon-o-star', 'w-8 h-8', ['style' => 'color: ' . ($customerBrandColors['accent'] ?? ($customerBrandColors['secondary'] ?? '#20a0da'))])
|
||||
</div>
|
||||
<div class="font-medium text-lg">{{ __('Empfehlungen') }}</div>
|
||||
<div class="text-sm text-zinc-500 dark:text-zinc-400 mt-1">{{ __('Bald verfügbar') }}</div>
|
||||
<div class="mt-3">
|
||||
<flux:badge color="zinc" size="sm">{{ __('In Entwicklung') }}</flux:badge>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
{{-- Marken-Info Footer --}}
|
||||
<flux:card>
|
||||
<div class="text-center py-6">
|
||||
<div class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
{{ __('Powered by') }}
|
||||
</div>
|
||||
<img src="{{ asset($customerBrandLogo) }}" alt="{{ $customerBrandName }}" class="h-8 mx-auto mt-2 opacity-60 dark:hidden">
|
||||
<img src="{{ asset(\App\Helpers\ThemeHelper::getLogoPathForBrand($customerBrand, 'negative')) }}" alt="{{ $customerBrandName }}" class="h-8 mx-auto mt-2 opacity-60 hidden dark:block">
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
95
resources/views/admin/dashboards/manufacturer.blade.php
Normal file
95
resources/views/admin/dashboards/manufacturer.blade.php
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<div class="space-y-6">
|
||||
{{-- KPI-Karten --}}
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||
{{-- Marken-Reichweite --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-purple-700 dark:text-purple-300 font-medium">{{ __('Marken-Reichweite') }}</div>
|
||||
<div class="text-3xl font-bold text-purple-900 dark:text-purple-100 mt-2">{{ $brandReach }}</div>
|
||||
<div class="text-xs text-purple-600 dark:text-purple-400 mt-1">{{ __('Händler führen meine Produkte') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-globe-alt', 'w-10 h-10 text-purple-400 dark:text-purple-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Katalog-Status --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-blue-700 dark:text-blue-300 font-medium">{{ __('Katalog-Status') }}</div>
|
||||
<div class="text-3xl font-bold text-blue-900 dark:text-blue-100 mt-2">{{ $activeProducts }}</div>
|
||||
<div class="text-xs text-blue-600 dark:text-blue-400 mt-1">{{ $draftProducts }} {{ __('Entwürfe') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-cube', 'w-10 h-10 text-blue-400 dark:text-blue-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Gesamt-Views --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-green-700 dark:text-green-300 font-medium">{{ __('Gesamt-Views') }}</div>
|
||||
<div class="text-3xl font-bold text-green-900 dark:text-green-100 mt-2">{{ number_format($totalViews, 0, ',', '.') }}</div>
|
||||
<div class="text-xs text-green-600 dark:text-green-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-eye', 'w-10 h-10 text-green-400 dark:text-green-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
{{-- Widgets --}}
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
{{-- Katalog-Pflege --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Katalog-Pflege') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Verwalten Sie Ihre Produkte') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 space-y-3">
|
||||
<div class="flex items-center justify-between p-3 bg-green-50 dark:bg-green-900/10 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-check-circle', 'w-5 h-5 text-green-500')
|
||||
<span>{{ __('Aktive Produkte') }}</span>
|
||||
</div>
|
||||
<span class="font-bold text-lg">{{ $activeProducts }}</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-orange-50 dark:bg-orange-900/10 rounded-lg">
|
||||
<div class="flex items-center gap-3">
|
||||
@svg('heroicon-o-pencil', 'w-5 h-5 text-orange-500')
|
||||
<span>{{ __('Entwürfe') }}</span>
|
||||
</div>
|
||||
<span class="font-bold text-lg">{{ $draftProducts }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<flux:button variant="primary" size="sm" icon="plus">{{ __('Neues Produkt (Master)') }}</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Schnellzugriff --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Schnellzugriff') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Häufig benötigte Funktionen') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 space-y-2">
|
||||
<flux:button variant="ghost" icon="photo" class="w-full justify-start">
|
||||
{{ __('Marketing-Material hochladen') }}
|
||||
</flux:button>
|
||||
<flux:button variant="ghost" icon="chart-bar" class="w-full justify-start">
|
||||
{{ __('Händler-Performance') }} ({{ __('Platzhalter') }})
|
||||
</flux:button>
|
||||
<flux:button variant="ghost" icon="tag" class="w-full justify-start">
|
||||
{{ __('Meine Marke bearbeiten') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
95
resources/views/admin/dashboards/retailer.blade.php
Normal file
95
resources/views/admin/dashboards/retailer.blade.php
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<div class="space-y-6">
|
||||
{{-- KPI-Karten --}}
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
{{-- Offene Bestellungen --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-red-700 dark:text-red-300 font-medium">{{ __('Offene Bestellungen') }}</div>
|
||||
<div class="text-3xl font-bold text-red-900 dark:text-red-100 mt-2">{{ $openOrders }}</div>
|
||||
<div class="text-xs text-red-600 dark:text-red-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-shopping-cart', 'w-10 h-10 text-red-400 dark:text-red-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Umsatz --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-green-700 dark:text-green-300 font-medium">{{ __('Umsatz diesen Monat') }}</div>
|
||||
<div class="text-3xl font-bold text-green-900 dark:text-green-100 mt-2">{{ number_format($monthlyRevenue, 0, ',', '.') }} €</div>
|
||||
<div class="text-xs text-green-600 dark:text-green-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-currency-euro', 'w-10 h-10 text-green-400 dark:text-green-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Produkt-Views --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-blue-700 dark:text-blue-300 font-medium">{{ __('Produkt-Views') }}</div>
|
||||
<div class="text-3xl font-bold text-blue-900 dark:text-blue-100 mt-2">{{ number_format($productViews, 0, ',', '.') }}</div>
|
||||
<div class="text-xs text-blue-600 dark:text-blue-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-eye', 'w-10 h-10 text-blue-400 dark:text-blue-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Lager-Warnungen --}}
|
||||
<flux:card>
|
||||
<div class="flex items-start justify-between">
|
||||
<div>
|
||||
<div class="text-sm text-orange-700 dark:text-orange-300 font-medium">{{ __('Lager-Warnungen') }}</div>
|
||||
<div class="text-3xl font-bold text-orange-900 dark:text-orange-100 mt-2">{{ $stockWarnings }}</div>
|
||||
<div class="text-xs text-orange-600 dark:text-orange-400 mt-1">{{ __('Platzhalter') }}</div>
|
||||
</div>
|
||||
@svg('heroicon-o-exclamation-triangle', 'w-10 h-10 text-orange-400 dark:text-orange-600')
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
{{-- Widgets --}}
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
{{-- To-Do Liste --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('To-Do Liste') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Ihre anstehenden Aufgaben') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 space-y-2">
|
||||
<div class="flex items-center gap-3 p-3 bg-red-50 dark:bg-red-900/10 rounded-lg">
|
||||
@svg('heroicon-o-shopping-cart', 'w-5 h-5 text-red-500')
|
||||
<span class="font-medium">{{ $openOrders }} {{ __('neue Bestellungen warten') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-3 p-3 bg-blue-50 dark:bg-blue-900/10 rounded-lg">
|
||||
@svg('heroicon-o-chat-bubble-left-right', 'w-5 h-5 text-blue-500')
|
||||
<span class="font-medium">{{ __('2 Kundenfragen offen') }} ({{ __('Platzhalter') }})</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-3 p-3 bg-orange-50 dark:bg-orange-900/10 rounded-lg">
|
||||
@svg('heroicon-o-cube', 'w-5 h-5 text-orange-500')
|
||||
<span class="font-medium">{{ $stockWarnings }} {{ __('Lager-Warnungen') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 flex gap-2">
|
||||
<flux:button variant="primary" size="sm" icon="plus">{{ __('Neues Produkt') }}</flux:button>
|
||||
<flux:button variant="ghost" size="sm" icon="arrow-path">{{ __('Bestände aktualisieren') }}</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
|
||||
{{-- Meine Kunden --}}
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Meine Kunden') }}</flux:heading>
|
||||
<flux:subheading>{{ __('Kunden in Ihrem Einzugsgebiet') }}</flux:subheading>
|
||||
|
||||
<div class="mt-4 flex items-center justify-center py-8 bg-blue-50 dark:bg-blue-900/10 rounded-lg">
|
||||
<div class="text-center">
|
||||
<div class="text-5xl font-bold text-blue-600 dark:text-blue-400">{{ $myCustomers }}</div>
|
||||
<div class="text-sm text-blue-700 dark:text-blue-300 mt-2">{{ __('zugeordnete Kunden') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue