Files
jouwdriedee/resources/views/account/index.blade.php
T
2026-11-01 15:27:57 +01:00

224 lines
13 KiB
PHP

@extends('layouts.app')
@section('title', 'Mijn Account | Jouwdriedee.nl')
@section('content')
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8 sm:py-12 space-y-8" x-data="{ tab: 'orders' }">
<!-- Account Welcome Banner -->
<div class="p-6 sm:p-8 rounded-3xl bg-gradient-to-r from-amber-500/10 via-rose-500/10 to-indigo-500/10 border border-slate-200/80 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
<div class="flex items-center space-x-4">
<div class="w-14 h-14 rounded-2xl bg-gradient-to-tr from-amber-400 to-rose-400 flex items-center justify-center text-white font-heading font-black text-2xl shadow-xs">
{{ strtoupper(substr($user->name, 0, 1)) }}
</div>
<div>
<div class="flex items-center space-x-2">
<h1 class="font-heading text-xl sm:text-2xl font-black text-slate-900">
Hallo, {{ $user->name }}!
</h1>
@if($user->isAdmin())
<span class="px-2.5 py-0.5 rounded-full bg-slate-900 text-amber-400 text-[10px] font-black uppercase tracking-wider">
Admin Beheerder
</span>
@endif
</div>
<p class="text-xs text-slate-500 mt-0.5">
{{ $user->email }} &bull; Lid sinds {{ $user->created_at->format('d-m-Y') }}
</p>
</div>
</div>
<div class="flex items-center space-x-2.5 self-stretch sm:self-auto justify-end">
@if($user->isAdmin())
<a href="{{ route('admin.content.index') }}" class="px-4 py-2 rounded-xl bg-slate-900 hover:bg-slate-800 text-amber-300 font-black text-xs transition flex items-center space-x-1.5 shadow-xs">
<i data-lucide="shield" class="w-4 h-4"></i>
<span>Admin Dashboard</span>
</a>
@endif
<form action="{{ route('logout') }}" method="POST">
@csrf
<button type="submit" class="px-4 py-2 rounded-xl bg-white hover:bg-rose-50 text-rose-600 border border-slate-200 text-xs font-bold transition flex items-center space-x-1.5 cursor-pointer shadow-2xs">
<i data-lucide="log-out" class="w-3.5 h-3.5"></i>
<span>Uitloggen</span>
</button>
</form>
</div>
</div>
<!-- Navigation Tabs -->
<div class="flex items-center space-x-2 border-b border-slate-200 text-xs font-bold pb-2">
<button
type="button"
@click="tab = 'orders'"
:class="tab === 'orders' ? 'bg-amber-400 text-slate-950 font-black' : 'bg-white text-slate-600 hover:bg-slate-100'"
class="px-4 py-2 rounded-xl transition flex items-center space-x-1.5 cursor-pointer"
>
<i data-lucide="package" class="w-4 h-4"></i>
<span>Mijn Bestellingen ({{ $orders->count() }})</span>
</button>
<button
type="button"
@click="tab = 'profile'"
:class="tab === 'profile' ? 'bg-amber-400 text-slate-950 font-black' : 'bg-white text-slate-600 hover:bg-slate-100'"
class="px-4 py-2 rounded-xl transition flex items-center space-x-1.5 cursor-pointer"
>
<i data-lucide="user-cog" class="w-4 h-4"></i>
<span>Profiel & Beveiliging</span>
</button>
</div>
<!-- TAB 1: BESTELLINGEN -->
<div x-show="tab === 'orders'" class="space-y-4">
@if($orders->isEmpty())
<div class="p-12 text-center rounded-3xl bg-white border border-slate-200/80 shadow-xs space-y-3">
<div class="w-14 h-14 rounded-2xl bg-amber-50 text-amber-600 flex items-center justify-center mx-auto text-2xl">
🛍️
</div>
<h3 class="font-heading text-lg font-black text-slate-900">Nog geen bestellingen geplaatst</h3>
<p class="text-xs text-slate-500 max-w-sm mx-auto">
Je hebt nog geen 3D prints besteld. Ontdek onze fidget toys, Pokémon figuren en popculture modellen!
</p>
<div class="pt-2">
<a href="{{ route('catalog') }}" class="inline-flex items-center space-x-2 px-5 py-2.5 rounded-xl bg-amber-400 hover:bg-amber-300 text-slate-950 text-xs font-black transition">
<span>Winkelassortiment bekijken</span>
<i data-lucide="arrow-right" class="w-3.5 h-3.5"></i>
</a>
</div>
</div>
@else
<div class="space-y-4">
@foreach($orders as $order)
<div class="p-5 sm:p-6 rounded-3xl bg-white border border-slate-200/80 shadow-xs space-y-4">
<!-- Header regel -->
<div class="flex flex-col sm:flex-row sm:items-center justify-between pb-3 border-b border-slate-100 gap-2">
<div>
<span class="font-mono font-bold text-xs text-slate-900">#{{ $order->order_number }}</span>
<span class="text-xs text-slate-400 ml-2">&bull; {{ $order->created_at->format('d-m-Y om H:i') }}</span>
</div>
<div class="flex items-center space-x-3">
<span class="px-2.5 py-0.5 rounded-full text-[10px] font-black uppercase
@if($order->status === 'completed' || $order->status === 'shipped' || $order->status === 'verzonden') bg-emerald-100 text-emerald-800
@elseif($order->status === 'printed' || $order->status === 'processing' || $order->status === 'in_print') bg-sky-100 text-sky-800
@elseif($order->status === 'cancelled' || $order->status === 'geannuleerd') bg-rose-100 text-rose-800
@else bg-amber-100 text-amber-900 @endif
">
{{ str_replace('_', ' ', $order->status) }}
</span>
<span class="font-heading font-black text-slate-900 text-sm">
{{ $order->formatted_total }}
</span>
</div>
</div>
<!-- Items -->
<div class="divide-y divide-slate-100">
@foreach($order->items as $item)
<div class="py-2.5 flex items-start justify-between text-xs">
<div>
<div class="font-bold text-slate-900">{{ $item->product_name }}</div>
<div class="text-[11px] text-slate-500 mt-0.5">
@if($item->material) Materiaal: <span class="font-semibold">{{ strtoupper($item->material) }}</span> &bull; @endif
@if($item->color) Kleur: <span class="font-semibold">{{ $item->color }}</span> &bull; @endif
Schaal: {{ $item->scale ?? '100%' }}
</div>
</div>
<div class="text-right">
<span class="font-semibold text-slate-600">{{ $item->quantity }}x</span>
<span class="font-bold text-slate-900 ml-1">&euro; {{ number_format($item->total_price, 2, ',', '.') }}</span>
</div>
</div>
@endforeach
</div>
<!-- Bezorging adres -->
<div class="pt-3 border-t border-slate-100 flex items-center justify-between text-[11px] text-slate-500">
<span>Bezorgadres: {{ $order->shipping_street }} {{ $order->shipping_number }}, {{ $order->shipping_postal_code }} {{ $order->shipping_city }}</span>
<span class="font-bold text-emerald-600 flex items-center space-x-1">
<i data-lucide="truck" class="w-3.5 h-3.5"></i>
<span>PostNL</span>
</span>
</div>
</div>
@endforeach
</div>
@endif
</div>
<!-- TAB 2: PROFIEL & BEVEILIGING -->
<div x-show="tab === 'profile'" class="grid grid-cols-1 md:grid-cols-2 gap-6">
<!-- Profielgegevens -->
<div class="p-6 rounded-3xl bg-white border border-slate-200/80 shadow-xs space-y-4">
<h3 class="font-heading text-base font-black text-slate-900 flex items-center space-x-2">
<i data-lucide="user" class="w-4 h-4 text-amber-500"></i>
<span>Persoonlijke gegevens</span>
</h3>
<form action="{{ route('account.profile') }}" method="POST" class="space-y-4">
@csrf
@method('PUT')
<div class="space-y-1.5">
<label class="block text-xs font-bold text-slate-700">Naam</label>
<input type="text" name="name" value="{{ old('name', $user->name) }}" required class="w-full bg-slate-50 border border-slate-200 rounded-xl px-3.5 py-2 text-xs font-semibold focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400">
</div>
<div class="space-y-1.5">
<label class="block text-xs font-bold text-slate-700">E-mailadres</label>
<input type="email" name="email" value="{{ old('email', $user->email) }}" required class="w-full bg-slate-50 border border-slate-200 rounded-xl px-3.5 py-2 text-xs font-semibold focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400">
</div>
<div class="pt-2">
<button type="submit" class="px-5 py-2.5 rounded-xl bg-amber-400 hover:bg-amber-300 text-slate-950 font-black text-xs transition cursor-pointer">
Gegevens Opslaan
</button>
</div>
</form>
</div>
<!-- Wachtwoord Wijzigen -->
<div class="p-6 rounded-3xl bg-white border border-slate-200/80 shadow-xs space-y-4">
<h3 class="font-heading text-base font-black text-slate-900 flex items-center space-x-2">
<i data-lucide="lock" class="w-4 h-4 text-rose-500"></i>
<span>Wachtwoord wijzigen</span>
</h3>
<form action="{{ route('account.password') }}" method="POST" class="space-y-4">
@csrf
@method('PUT')
<div class="space-y-1.5">
<label class="block text-xs font-bold text-slate-700">Huidig wachtwoord</label>
<input type="password" name="current_password" required placeholder="••••••••" class="w-full bg-slate-50 border border-slate-200 rounded-xl px-3.5 py-2 text-xs font-semibold focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400">
</div>
<div class="space-y-1.5">
<label class="block text-xs font-bold text-slate-700">Nieuw wachtwoord (min. 8 tekens)</label>
<input type="password" name="password" required placeholder="••••••••" class="w-full bg-slate-50 border border-slate-200 rounded-xl px-3.5 py-2 text-xs font-semibold focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400">
</div>
<div class="space-y-1.5">
<label class="block text-xs font-bold text-slate-700">Bevestig nieuw wachtwoord</label>
<input type="password" name="password_confirmation" required placeholder="••••••••" class="w-full bg-slate-50 border border-slate-200 rounded-xl px-3.5 py-2 text-xs font-semibold focus:bg-white focus:outline-none focus:ring-2 focus:ring-amber-400">
</div>
<div class="pt-2">
<button type="submit" class="px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 text-white font-black text-xs transition cursor-pointer">
Wachtwoord Wijzigen
</button>
</div>
</form>
</div>
</div>
</div>
@endsection