feat(outlets): Add outlets page and fix color and function
This commit is contained in:
parent
4078201b03
commit
a4418a500d
@ -16,7 +16,14 @@ public function boot(): void
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$priceRequestCount = PriceRequest::where('status', PriceRequestStatus::PENDING->value)->count();
|
if (Schema::hasTable('price_requests') && Schema::hasColumn('price_requests', 'status')) {
|
||||||
|
$priceRequestCount = PriceRequest::where(
|
||||||
|
'status',
|
||||||
|
PriceRequestStatus::PENDING->value
|
||||||
|
)->count();
|
||||||
|
} else {
|
||||||
|
$priceRequestCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
View::composer('*', function ($view) use ($priceRequestCount) {
|
View::composer('*', function ($view) use ($priceRequestCount) {
|
||||||
$sidebar = [
|
$sidebar = [
|
||||||
|
|||||||
@ -4,10 +4,13 @@
|
|||||||
|
|
||||||
@custom-variant dark (&:where(.dark, .dark *));
|
@custom-variant dark (&:where(.dark, .dark *));
|
||||||
:root {
|
:root {
|
||||||
--home-background: #E5F0FF;
|
--home-background: #F5FEFF;
|
||||||
--home-accent: #D1E8FF;
|
--home-accent: #E2E8F0;
|
||||||
--home-foreground: #000000;
|
--home-foreground: #000000;
|
||||||
--home-primary: #CAE8FF;
|
--home-primary: #0E2F76;
|
||||||
|
--home-secondary: #AAC0E1;
|
||||||
|
--home-surface: #C7B189;
|
||||||
|
--home-neutral: #334155;
|
||||||
}
|
}
|
||||||
@theme {
|
@theme {
|
||||||
--font-sans: Inter, sans-serif;
|
--font-sans: Inter, sans-serif;
|
||||||
@ -18,6 +21,9 @@ @theme {
|
|||||||
--color-home-accent: var(--home-accent);
|
--color-home-accent: var(--home-accent);
|
||||||
--color-home-foreground: var(--home-foreground);
|
--color-home-foreground: var(--home-foreground);
|
||||||
--color-home-primary: var(--home-primary);
|
--color-home-primary: var(--home-primary);
|
||||||
|
--color-home-secondary: var(--home-secondary);
|
||||||
|
--color-home-surface: var(--home-surface);
|
||||||
|
--color-home-neutral: var(--home-neutral);
|
||||||
}
|
}
|
||||||
|
|
||||||
@layer theme {
|
@layer theme {
|
||||||
|
|||||||
@ -20,6 +20,8 @@
|
|||||||
@endpersist
|
@endpersist
|
||||||
|
|
||||||
{{ $slot }}
|
{{ $slot }}
|
||||||
|
@include('components.partials.home._footer')
|
||||||
|
|
||||||
@fluxScripts
|
@fluxScripts
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -40,39 +42,39 @@
|
|||||||
const closeIcon = document.getElementById('close-icon');
|
const closeIcon = document.getElementById('close-icon');
|
||||||
|
|
||||||
function setIconsLight() {
|
function setIconsLight() {
|
||||||
cartIcon.classList.remove('bg-black', 'bg-gray-100');
|
cartIcon.classList.remove('bg-home-foreground', 'bg-gray-100');
|
||||||
cartIcon.classList.add('bg-white');
|
cartIcon.classList.add('bg-white');
|
||||||
cartSvg.classList.remove('text-white', 'text-gray-800');
|
cartSvg.classList.remove('text-white', 'text-home-foreground');
|
||||||
cartSvg.classList.add('text-black');
|
cartSvg.classList.add('text-home-foreground');
|
||||||
|
|
||||||
profileIcon.classList.remove('bg-black', 'bg-gray-100');
|
profileIcon.classList.remove('bg-home-foreground', 'bg-gray-100');
|
||||||
profileIcon.classList.add('bg-white');
|
profileIcon.classList.add('bg-white');
|
||||||
profileSvg.classList.remove('text-white', 'text-gray-800');
|
profileSvg.classList.remove('text-white', 'text-home-foreground');
|
||||||
profileSvg.classList.add('text-black');
|
profileSvg.classList.add('text-home-foreground');
|
||||||
}
|
}
|
||||||
|
|
||||||
function setIconsDark() {
|
function setIconsDark() {
|
||||||
cartIcon.classList.add('bg-black');
|
cartIcon.classList.add('bg-home-foreground');
|
||||||
cartIcon.classList.remove('bg-white', 'bg-gray-100');
|
cartIcon.classList.remove('bg-white', 'bg-gray-100');
|
||||||
cartSvg.classList.add('text-white');
|
cartSvg.classList.add('text-white');
|
||||||
cartSvg.classList.remove('text-black', 'text-gray-800');
|
cartSvg.classList.remove('text-home-foreground', 'text-home-foreground');
|
||||||
|
|
||||||
profileIcon.classList.add('bg-black');
|
profileIcon.classList.add('bg-home-foreground');
|
||||||
profileIcon.classList.remove('bg-white', 'bg-gray-100');
|
profileIcon.classList.remove('bg-white', 'bg-gray-100');
|
||||||
profileSvg.classList.add('text-white');
|
profileSvg.classList.add('text-white');
|
||||||
profileSvg.classList.remove('text-black', 'text-gray-800');
|
profileSvg.classList.remove('text-home-foreground', 'text-home-foreground');
|
||||||
}
|
}
|
||||||
|
|
||||||
function setIconsScrolled() {
|
function setIconsScrolled() {
|
||||||
cartIcon.classList.add('bg-gray-100');
|
cartIcon.classList.add('bg-gray-100');
|
||||||
cartIcon.classList.remove('bg-black', 'bg-white');
|
cartIcon.classList.remove('bg-home-foreground', 'bg-white');
|
||||||
cartSvg.classList.add('text-gray-800');
|
cartSvg.classList.add('text-home-foreground');
|
||||||
cartSvg.classList.remove('text-white', 'text-black');
|
cartSvg.classList.remove('text-white');
|
||||||
|
|
||||||
profileIcon.classList.add('bg-gray-100');
|
profileIcon.classList.add('bg-gray-100');
|
||||||
profileIcon.classList.remove('bg-black', 'bg-white');
|
profileIcon.classList.remove('bg-home-foreground', 'bg-white');
|
||||||
profileSvg.classList.add('text-gray-800');
|
profileSvg.classList.add('text-home-foreground');
|
||||||
profileSvg.classList.remove('text-white', 'text-black');
|
profileSvg.classList.remove('text-white');
|
||||||
}
|
}
|
||||||
|
|
||||||
mobileBtn.addEventListener('click', () => {
|
mobileBtn.addEventListener('click', () => {
|
||||||
@ -131,18 +133,18 @@ function setIconsScrolled() {
|
|||||||
navbar.classList.add('bg-white/40', 'backdrop-blur-md', 'shadow-sm', 'border-gray-200');
|
navbar.classList.add('bg-white/40', 'backdrop-blur-md', 'shadow-sm', 'border-gray-200');
|
||||||
navbar.classList.remove('bg-transparent');
|
navbar.classList.remove('bg-transparent');
|
||||||
|
|
||||||
navLinks.classList.add('bg-white', 'border-gray-300', 'text-black');
|
navLinks.classList.add('bg-white', 'border-home-accent');
|
||||||
navLinks.classList.remove('bg-transparent', 'border-black', 'text-black');
|
navLinks.classList.remove('bg-transparent', 'border-home-foreground');
|
||||||
|
|
||||||
cart.classList.add('border-gray-300', 'bg-white');
|
cart.classList.add('border-home-accent', 'bg-white');
|
||||||
cart.classList.remove('border-black');
|
cart.classList.remove('border-home-foreground');
|
||||||
cart.querySelector('span').classList.add('text-gray-800');
|
cart.querySelector('span').classList.add('text-home-foreground');
|
||||||
|
|
||||||
login.classList.add('border-gray-300', 'text-gray-800', 'bg-white');
|
login.classList.add('border-home-accent', 'text-home-foreground', 'bg-white');
|
||||||
login.classList.remove('border-black', 'text-black');
|
login.classList.remove('border-home-foreground');
|
||||||
|
|
||||||
profile.classList.add('border-gray-300');
|
profile.classList.add('border-home-accent');
|
||||||
profile.classList.remove('border-black');
|
profile.classList.remove('border-home-foreground');
|
||||||
|
|
||||||
setIconsScrolled();
|
setIconsScrolled();
|
||||||
} else {
|
} else {
|
||||||
@ -150,19 +152,19 @@ function setIconsScrolled() {
|
|||||||
navbar.classList.remove('bg-white/40', 'backdrop-blur-md', 'shadow-sm', 'border-b',
|
navbar.classList.remove('bg-white/40', 'backdrop-blur-md', 'shadow-sm', 'border-b',
|
||||||
'border-gray-200');
|
'border-gray-200');
|
||||||
|
|
||||||
navLinks.classList.add('bg-transparent', 'border-black', 'text-black');
|
navLinks.classList.add('bg-transparent', 'border-home-foreground', 'text-home-foreground');
|
||||||
navLinks.classList.remove('bg-white', 'border-gray-300');
|
navLinks.classList.remove('bg-white', 'border-home-accent');
|
||||||
|
|
||||||
cart.classList.add('border-black');
|
cart.classList.add('border-home-foreground');
|
||||||
cart.classList.remove('border-gray-300', 'bg-white');
|
cart.classList.remove('border-home-accent', 'bg-white');
|
||||||
cart.querySelector('span').classList.remove('text-gray-800');
|
cart.querySelector('span').classList.remove('text-home-foreground');
|
||||||
cart.querySelector('span').classList.add('text-black');
|
cart.querySelector('span').classList.add('text-home-foreground');
|
||||||
|
|
||||||
login.classList.add('border-black', 'text-black');
|
login.classList.add('border-home-foreground', 'text-home-foreground');
|
||||||
login.classList.remove('border-gray-300', 'text-gray-800', 'bg-white');
|
login.classList.remove('border-home-accent', 'bg-white');
|
||||||
|
|
||||||
profile.classList.add('border-black');
|
profile.classList.add('border-home-foreground');
|
||||||
profile.classList.remove('border-gray-300');
|
profile.classList.remove('border-home-accent');
|
||||||
|
|
||||||
setIconsDark();
|
setIconsDark();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,93 +1,105 @@
|
|||||||
<footer class="bg-gray-100 text-gray-700 py-12 px-6 lg:px-32 xl:px-48 font-sans">
|
<footer class="bg-home-foreground text-white font-sans pt-16 pb-12 relative">
|
||||||
<div class="container mx-auto">
|
|
||||||
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-12 gap-8 mb-8">
|
<div class="container mx-auto px-6 lg:px-32 xl:px-48 relative z-10">
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-12 gap-12">
|
||||||
|
|
||||||
<div class="md:col-span-4 flex flex-col gap-4">
|
<div class="md:col-span-4 flex flex-col gap-6">
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<img src="{{ asset('assets/images/logo.png') }}" alt="Logo Yadi Parfum"
|
<img src="{{ asset('assets/images/logo.png') }}" alt="Logo Yadi Parfum"
|
||||||
class="w-16 h-16 object-contain">
|
class="w-10 h-10 object-contain brightness-0 invert">
|
||||||
<h2 class="text-2xl font-bold text-gray-800">Yadi Parfum</h2>
|
<h2 class="text-2xl font-bold tracking-wide text-white">Yadi Parfum</h2>
|
||||||
</div>
|
</div>
|
||||||
|
<p class="text-gray-400 text-sm leading-relaxed">
|
||||||
<p class="text-gray-600 text-sm leading-relaxed text-justify">
|
|
||||||
Menyediakan berbagai macam varian parfum berkualitas tinggi dengan wangi yang tahan lama dan harga
|
Menyediakan berbagai macam varian parfum berkualitas tinggi dengan wangi yang tahan lama dan harga
|
||||||
terjangkau. Temukan aroma khasmu di sini.
|
terjangkau.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
<div class="flex items-center gap-4 mt-2">
|
||||||
|
<a href="#"
|
||||||
<div class="md:col-span-3 md:pl-8">
|
class="w-10 h-10 rounded-full bg-white/5 flex items-center justify-center text-gray-400 hover:bg-white hover:text-home-foreground transition-all duration-300">
|
||||||
<h3 class="text-lg font-bold text-gray-800 mb-4 uppercase tracking-wider">Tautan Cepat</h3>
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
||||||
<ul class="space-y-2">
|
|
||||||
<li><a href="#" class="hover:text-blue-600 transition-colors duration-200">Beranda</a></li>
|
|
||||||
<li><a href="#" class="hover:text-blue-600 transition-colors duration-200">Katalog Produk</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#" class="hover:text-blue-600 transition-colors duration-200">Tentang Kami</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="#" class="hover:text-blue-600 transition-colors duration-200">Kontak</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- RIGHT SIDE -->
|
|
||||||
<div class="md:col-span-5 flex flex-col gap-4">
|
|
||||||
|
|
||||||
<div class="mt-4">
|
|
||||||
<p class="text-gray-700 text-lg leading-relaxed">
|
|
||||||
Alamat
|
|
||||||
</p>
|
|
||||||
<p class="text-gray-500">
|
|
||||||
{{ $outlet->note ?? '' }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="space-y-2 mt-2">
|
|
||||||
<div class="flex items-center gap-3">
|
|
||||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
||||||
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
<span class="text-sm">{{ $outlet->email ?? 'admin@yadiparfum.com' }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex items-center gap-3">
|
|
||||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
||||||
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
<span class="text-sm">{{ $outlet->phone ?? '+62 812-3456-7890' }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="border-gray-300 my-8">
|
|
||||||
|
|
||||||
<div class="flex flex-col md:flex-row justify-between items-center gap-4">
|
|
||||||
|
|
||||||
<div class="text-sm text-gray-500 text-center md:text-left">
|
|
||||||
© {{ date('Y') }} Yadi Parfum. All rights reserved.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a href="#" class="text-gray-500 hover:text-blue-600 transition-colors">
|
|
||||||
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"></path>
|
<path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="text-gray-500 hover:text-pink-600 transition-colors">
|
<a href="#"
|
||||||
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
|
class="w-10 h-10 rounded-full bg-white/5 flex items-center justify-center text-gray-400 hover:bg-white hover:text-home-foreground transition-all duration-300">
|
||||||
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
||||||
<path d="M12 2.163c3.204..."></path>
|
<path d="M12 2.163c3.204..."></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a href="#" class="text-gray-500 hover:text-green-500 transition-colors">
|
<a href="#"
|
||||||
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
|
class="w-10 h-10 rounded-full bg-white/5 flex items-center justify-center text-gray-400 hover:bg-white hover:text-home-foreground transition-all duration-300">
|
||||||
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
||||||
<path d="M.057 24l1.687..."></path>
|
<path d="M.057 24l1.687..."></path>
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-3 md:pl-8">
|
||||||
|
<h3 class="text-white font-bold mb-6 text-sm uppercase tracking-wider">Quick Links</h3>
|
||||||
|
<ul class="space-y-4 text-sm text-gray-400">
|
||||||
|
<li><a href="#"
|
||||||
|
class="hover:text-home-secondary transition-colors duration-300 flex items-center gap-2">Beranda</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="#"
|
||||||
|
class="hover:text-home-secondary transition-colors duration-300 flex items-center gap-2">Katalog
|
||||||
|
Produk</a></li>
|
||||||
|
<li><a href="#"
|
||||||
|
class="hover:text-home-secondary transition-colors duration-300 flex items-center gap-2">Tentang
|
||||||
|
Kami</a></li>
|
||||||
|
<li><a href="#"
|
||||||
|
class="hover:text-home-secondary transition-colors duration-300 flex items-center gap-2">Kontak</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-5 flex flex-col gap-6">
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-bold mb-6 text-sm uppercase tracking-wider">Contact Us</h3>
|
||||||
|
<div class="space-y-5 text-sm text-gray-400">
|
||||||
|
<div class="flex items-start gap-4">
|
||||||
|
<div class="mt-1"><svg class="w-5 h-5 text-home-primary" fill="none"
|
||||||
|
stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z">
|
||||||
|
</path>
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||||
|
</svg></div>
|
||||||
|
<span
|
||||||
|
class="leading-relaxed">{{ $outlet->note ?? 'Jalan Wangi Semerbak No. 123, Kota Parfum, Indonesia' }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-4">
|
||||||
|
<div><svg class="w-5 h-5 text-home-primary" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z">
|
||||||
|
</path>
|
||||||
|
</svg></div>
|
||||||
|
<span>{{ $outlet->email ?? 'admin@yadiparfum.com' }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-4">
|
||||||
|
<div><svg class="w-5 h-5 text-home-primary" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z">
|
||||||
|
</path>
|
||||||
|
</svg></div>
|
||||||
|
<span>{{ $outlet->phone ?? '+62 812-3456-7890' }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="border-t border-white/10 pt-8 flex flex-col md:flex-row justify-between items-center gap-4">
|
||||||
|
<div class="text-sm text-gray-500">
|
||||||
|
© {{ date('Y') }} Yadi Parfum. All rights reserved.
|
||||||
|
</div>
|
||||||
|
<div class="flex gap-6 text-sm text-gray-500">
|
||||||
|
<a href="#" class="hover:text-white transition-colors">Privacy Policy</a>
|
||||||
|
<a href="#" class="hover:text-white transition-colors">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<header id="navbar"
|
<header id="navbar"
|
||||||
class="fixed top-0 left-0 w-full p-4 lg:px-10 flex justify-between items-center z-50 transition-all duration-200">
|
class="fixed top-0 left-0 w-full p-4 lg:px-10 flex justify-between items-center z-50 transition-all duration-200 bg-transparent">
|
||||||
|
|
||||||
<div class="flex lg:hidden items-center z-50">
|
<div class="flex lg:hidden items-center z-50">
|
||||||
<button id="mobile-menu-btn" aria-label="Toggle Mobile Menu" aria-expanded="false" aria-controls="mobile-menu"
|
<button id="mobile-menu-btn" aria-label="Toggle Mobile Menu" aria-expanded="false" aria-controls="mobile-menu"
|
||||||
class="rounded-full w-10 h-10 flex items-center justify-center hover:bg-white/10 transition-colors relative group">
|
class="rounded-full w-10 h-10 flex items-center justify-center hover:bg-white/10 transition-colors relative group">
|
||||||
|
|
||||||
<svg id="hamburger-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
<svg id="hamburger-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
stroke-width="1.5" stroke="currentColor" class="size-6 text-black transition-colors duration-300">
|
stroke-width="1.5" stroke="currentColor" class="size-6 text-home-foreground transition-colors duration-300">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
@ -20,11 +20,11 @@ class="size-6 text-white hidden transition-transform duration-300">
|
|||||||
|
|
||||||
<a href="/" class="flex items-center ml-8 lg:ml-0 z-50">
|
<a href="/" class="flex items-center ml-8 lg:ml-0 z-50">
|
||||||
<img src="{{ asset('assets/images/logo.png') }}" alt="Logo"
|
<img src="{{ asset('assets/images/logo.png') }}" alt="Logo"
|
||||||
class="w-10 h-8 lg:w-16 lg:h-12 transition-all duration-500">
|
class="w-10 h-8 lg:w-16 lg:h-12 transition-all duration-200">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<nav id="nav-links"
|
<nav id="nav-links"
|
||||||
class="hidden lg:flex items-center gap-6 font-medium px-8 py-3 rounded-full transition-all duration-500 border"
|
class="hidden lg:flex items-center gap-6 font-medium px-8 py-3 rounded-full transition-all duration-200 border text-home-foreground"
|
||||||
aria-label="Main Navigation">
|
aria-label="Main Navigation">
|
||||||
@foreach ($header as $item)
|
@foreach ($header as $item)
|
||||||
@if ($item['type'] === 'link')
|
@if ($item['type'] === 'link')
|
||||||
@ -60,31 +60,31 @@ class="block px-4 py-2 hover:bg-gray-50 transition-colors">
|
|||||||
@endforeach
|
@endforeach
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<section class="flex items-center lg:gap-3 z-50">
|
<section class="flex items-center lg:gap-2 gap-1 z-50">
|
||||||
<button id="cart"
|
<button id="cart"
|
||||||
class="flex items-center rounded-full transition-all duration-500 border lg:p-0 lg:border-0 hover:scale-110">
|
class="flex items-center rounded-full transition-all duration-200 border border-home-foreground lg:p-0 hover:scale-110">
|
||||||
<div id="cart-icon"
|
<div id="cart-icon"
|
||||||
class="w-8 h-8 lg:w-10 lg:h-10 flex justify-center items-center rounded-full transition-all duration-500">
|
class="w-8 h-8 lg:w-10 lg:h-10 flex justify-center items-center rounded-full transition-all duration-200 text-white bg-home-foreground">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2"
|
||||||
stroke="currentColor" class="size-4 lg:size-6 transition-all duration-500" id="cart-svg">
|
stroke="currentColor" class="size-4 lg:size-6 transition-all duration-200" id="cart-svg">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
|
d="M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<span class="ms-2 me-3 transition-all duration-500 hidden lg:block">Keranjang</span>
|
<span class="ms-2 me-3 transition-all duration-200 hidden lg:block text-home-foreground">Keranjang</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button id="login"
|
<button id="login"
|
||||||
class="hidden lg:flex items-center border px-4 py-2 rounded-full ms-2 transition-all duration-500 hover:scale-105 font-medium">
|
class="hidden lg:flex items-center border px-4 py-2 rounded-full transition-all duration-200 hover:scale-105 font-medium border-home-foreground text-home-foreground">
|
||||||
Masuk
|
Masuk
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button id="profile"
|
<button id="profile"
|
||||||
class="flex items-center rounded-full transition-all duration-500 p-2 lg:p-0 lg:border-0 hover:scale-110">
|
class="flex items-center rounded-full transition-all duration-200 lg:p-0 lg:border-0 hover:scale-110">
|
||||||
<div id="profile-icon"
|
<div id="profile-icon"
|
||||||
class="w-8 h-8 lg:w-10 lg:h-10 flex justify-center items-center rounded-full transition-all duration-500">
|
class="w-8 h-8 lg:w-10 lg:h-10 flex justify-center items-center rounded-full transition-all duration-200 text-white bg-home-foreground">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2"
|
||||||
stroke="currentColor" class="size-4 lg:size-6 transition-all duration-500" id="profile-svg">
|
stroke="currentColor" class="size-4 lg:size-6 transition-all duration-200" id="profile-svg">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
d="M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
|
||||||
</svg>
|
</svg>
|
||||||
@ -93,7 +93,7 @@ class="w-8 h-8 lg:w-10 lg:h-10 flex justify-center items-center rounded-full tra
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<nav id="mobile-menu"
|
<nav id="mobile-menu"
|
||||||
class="fixed inset-0 h-screen w-screen bg-black/80 backdrop-blur-md z-40 flex flex-col items-center justify-center gap-8 hidden transition-all duration-500 opacity-0"
|
class="fixed inset-0 h-screen w-screen bg-home-foreground/80 backdrop-blur-md z-40 flex flex-col items-center justify-center gap-8 hidden transition-all duration-200 opacity-0"
|
||||||
aria-label="Mobile Navigation">
|
aria-label="Mobile Navigation">
|
||||||
|
|
||||||
<a href="#" class="text-3xl font-bold text-white hover:text-gray-300 transition-colors">Beranda</a>
|
<a href="#" class="text-3xl font-bold text-white hover:text-gray-300 transition-colors">Beranda</a>
|
||||||
@ -116,7 +116,7 @@ class="text-3xl font-bold text-white hover:text-gray-300 transition-colors curso
|
|||||||
<a href="#" class="text-3xl font-bold text-white hover:text-gray-300 transition-colors">FAQ</a>
|
<a href="#" class="text-3xl font-bold text-white hover:text-gray-300 transition-colors">FAQ</a>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="mt-8 px-8 py-3 bg-white text-black font-bold rounded-full hover:bg-gray-100 transition-all shadow-lg hover:shadow-white/20">
|
class="mt-8 px-8 py-3 bg-white text-home-foreground font-bold rounded-full hover:bg-gray-100 transition-all shadow-lg hover:shadow-white/20">
|
||||||
Get CV
|
Get CV
|
||||||
</button>
|
</button>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@ -1,217 +1,220 @@
|
|||||||
<div>
|
<div>
|
||||||
<main class="px-8 py-12 mt-24 bg-white min-h-screen">
|
<main class="px-6 lg:px-32 xl:px-48 pb-24 pt-36 bg-white min-h-screen font-sans">
|
||||||
<header class="mb-8">
|
|
||||||
<h1 class="text-3xl font-bold text-home-foreground mb-2">Artikel</h1>
|
<header class="mb-12">
|
||||||
<p class="text-home-foreground/60">Baca tips dan trik seputar perawatan wewangian dan lifestyle</p>
|
<h1 class="text-3xl md:text-4xl font-bold text-home-primary mb-3">Artikel Terbaru</h1>
|
||||||
|
<p class="text-home-foreground/60 text-lg max-w-2xl">Baca tips profesional seputar perawatan wewangian, tren
|
||||||
|
lifestyle, dan rekomendasi terbaik.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-4 gap-8">
|
<div class="grid grid-cols-1 lg:grid-cols-4 gap-12">
|
||||||
|
|
||||||
<section class="lg:col-span-3">
|
<section class="lg:col-span-3">
|
||||||
<div class="flex flex-col sm:flex-row gap-4 mb-8">
|
|
||||||
|
<div class="flex flex-col sm:flex-row gap-4 mb-10">
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<div class="relative">
|
<div class="relative group">
|
||||||
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-foreground/50" fill="none"
|
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-primary/50 group-focus-within:text-home-primary transition-colors"
|
||||||
stroke="currentColor" viewBox="0 0 24 24">
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
<input type="search" placeholder="Cari artikel..." aria-label="Cari artikel"
|
<input type="search" placeholder="Cari artikel..." aria-label="Cari artikel"
|
||||||
class="w-full py-3 pl-11 pr-4 rounded-lg border border-home-foreground/10 text-home-foreground placeholder-home-foreground/50 focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition">
|
class="w-full py-3 pl-11 pr-4 rounded-xl border border-home-foreground/10 text-home-foreground placeholder-home-foreground/40 focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition shadow-sm">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="relative">
|
||||||
<select aria-label="Urutkan artikel"
|
<select aria-label="Urutkan artikel"
|
||||||
class="px-4 py-3 rounded-lg border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition cursor-pointer min-w-fit">
|
class="appearance-none px-6 py-3 pr-10 rounded-xl border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition cursor-pointer min-w-[160px] shadow-sm">
|
||||||
<option value="">Urutkan</option>
|
<option value="">Urutkan</option>
|
||||||
<option value="latest">Terbaru</option>
|
<option value="latest">Terbaru</option>
|
||||||
<option value="name">Nama</option>
|
<option value="name">Nama</option>
|
||||||
<option value="views">Paling Dilihat</option>
|
<option value="views">Terpopuler</option>
|
||||||
</select>
|
</select>
|
||||||
|
<svg class="absolute right-4 top-4 w-4 h-4 text-home-foreground/50 pointer-events-none"
|
||||||
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-8">
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-lg transition-shadow group">
|
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:shadow-home-primary/5 hover:border-home-primary/20 transition-all duration-300 group">
|
||||||
<div class="flex flex-col sm:flex-row">
|
<div class="flex flex-col sm:flex-row h-full">
|
||||||
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden">
|
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden relative">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Tips Memilih Parfum" loading="lazy"
|
<img src="https://placehold.co/600x400/png?text=Tips+Parfum" alt="Tips Memilih Parfum"
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300">
|
loading="lazy"
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
|
||||||
|
<div
|
||||||
|
class="absolute inset-0 bg-home-primary/10 opacity-0 group-hover:opacity-100 transition-opacity duration-300">
|
||||||
</div>
|
</div>
|
||||||
<div class="p-6 sm:w-3/5 flex flex-col justify-between">
|
</div>
|
||||||
|
<div class="p-8 sm:w-3/5 flex flex-col justify-between">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex gap-2 mb-3">
|
<div class="flex items-center gap-3 mb-4">
|
||||||
<span
|
<span
|
||||||
class="text-xs font-bold text-home-foreground bg-home-foreground/10 px-3 py-1 rounded-full">Perawatan</span>
|
class="text-xs font-bold text-home-primary bg-home-primary/10 px-3 py-1 rounded-full border border-home-primary/10 uppercase tracking-wider">Perawatan</span>
|
||||||
<span class="text-xs text-home-foreground/60">5 min read</span>
|
<span class="text-xs text-home-foreground/50 flex items-center gap-1">
|
||||||
|
<svg class="w-3 h-3" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||||||
|
</svg>
|
||||||
|
5 min read
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h3
|
<h3
|
||||||
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
class="text-2xl font-bold text-home-foreground mb-3 group-hover:text-home-primary transition-colors line-clamp-2 leading-tight">
|
||||||
Tips Memilih Parfum yang Tepat Sesuai Kepribadian Anda</h3>
|
Tips Memilih Parfum yang Tepat Sesuai Kepribadian Anda
|
||||||
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3">Memilih parfum yang
|
</h3>
|
||||||
tepat bukan hanya tentang aroma yang disukai, tetapi juga tentang menemukan
|
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3 leading-relaxed">
|
||||||
signature scent yang mencerminkan kepribadian Anda. Dalam artikel ini kami akan
|
Memilih parfum yang tepat bukan hanya tentang aroma yang disukai, tetapi juga
|
||||||
membahas cara memilih parfum yang paling sesuai...</p>
|
tentang menemukan signature scent yang mencerminkan karakter...
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-between pt-4 border-t border-home-foreground/10">
|
|
||||||
|
<div class="flex items-center justify-between pt-6 border-t border-home-foreground/5">
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Siti Rahma"
|
<img src="https://placehold.co/100x100/png?text=User" alt="Author"
|
||||||
class="w-8 h-8 rounded-full">
|
class="w-9 h-9 rounded-full ring-2 ring-white shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<p class="text-sm font-semibold text-home-foreground">Siti Rahma</p>
|
<p class="text-sm font-bold text-home-foreground">Siti Rahma</p>
|
||||||
<time datetime="2024-11-05" class="text-xs text-home-foreground/60">5 Nov
|
<p class="text-xs text-home-foreground/50">5 Nov 2024</p>
|
||||||
2024</time>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<svg class="w-5 h-5 text-home-foreground/60 group-hover:translate-x-1 transition-transform"
|
<div
|
||||||
fill="currentColor" viewBox="0 0 20 20">
|
class="w-10 h-10 rounded-full bg-home-foreground/5 flex items-center justify-center group-hover:bg-home-primary group-hover:text-white transition-all duration-300">
|
||||||
<path fill-rule="evenodd"
|
<svg class="w-5 h-5 transition-transform group-hover:translate-x-0.5"
|
||||||
d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z"
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
clip-rule="evenodd"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-lg transition-shadow group">
|
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:shadow-home-primary/5 hover:border-home-primary/20 transition-all duration-300 group">
|
||||||
<div class="flex flex-col sm:flex-row">
|
<div class="flex flex-col sm:flex-row h-full">
|
||||||
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden">
|
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden relative">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Cara Menyimpan Parfum" loading="lazy"
|
<img src="https://placehold.co/600x400/png?text=Menyimpan+Parfum"
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300">
|
alt="Cara Menyimpan Parfum" loading="lazy"
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
|
||||||
</div>
|
</div>
|
||||||
<div class="p-6 sm:w-3/5 flex flex-col justify-between">
|
<div class="p-8 sm:w-3/5 flex flex-col justify-between">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex gap-2 mb-3">
|
<div class="flex items-center gap-3 mb-4">
|
||||||
<span
|
<span
|
||||||
class="text-xs font-bold text-home-foreground bg-home-foreground/10 px-3 py-1 rounded-full">Lifestyle</span>
|
class="text-xs font-bold text-home-primary bg-home-primary/10 px-3 py-1 rounded-full border border-home-primary/10 uppercase tracking-wider">Lifestyle</span>
|
||||||
<span class="text-xs text-home-foreground/60">8 min read</span>
|
<span class="text-xs text-home-foreground/50 flex items-center gap-1">
|
||||||
|
<svg class="w-3 h-3" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||||||
|
</svg>
|
||||||
|
8 min read
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h3
|
<h3
|
||||||
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
class="text-2xl font-bold text-home-foreground mb-3 group-hover:text-home-primary transition-colors line-clamp-2 leading-tight">
|
||||||
Panduan Lengkap Cara Menyimpan Parfum agar Tahan Lama</h3>
|
Panduan Lengkap Cara Menyimpan Parfum agar Tahan Lama
|
||||||
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3">Parfum adalah
|
</h3>
|
||||||
investasi
|
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3 leading-relaxed">
|
||||||
yang berharga, dan penyimpanan yang tepat adalah kunci untuk menjaga kualitas
|
Parfum adalah investasi yang berharga. Penyimpanan yang tepat adalah kunci untuk
|
||||||
dan daya tahan aroma. Temukan tips profesional tentang suhu ideal, lokasi
|
menjaga kualitas aroma agar tetap orisinil...
|
||||||
penyimpanan terbaik, dan cara menjaga botol parfum Anda...</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-between pt-4 border-t border-home-foreground/10">
|
|
||||||
|
<div class="flex items-center justify-between pt-6 border-t border-home-foreground/5">
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Ahmad Rizki"
|
<img src="https://placehold.co/100x100/png?text=User" alt="Author"
|
||||||
class="w-8 h-8 rounded-full">
|
class="w-9 h-9 rounded-full ring-2 ring-white shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<p class="text-sm font-semibold text-home-foreground">Ahmad Rizki</p>
|
<p class="text-sm font-bold text-home-foreground">Ahmad Rizki</p>
|
||||||
<time datetime="2024-11-03" class="text-xs text-home-foreground/60">3 Nov
|
<p class="text-xs text-home-foreground/50">3 Nov 2024</p>
|
||||||
2024</time>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<svg class="w-5 h-5 text-home-foreground/60 group-hover:translate-x-1 transition-transform"
|
<div
|
||||||
fill="currentColor" viewBox="0 0 20 20">
|
class="w-10 h-10 rounded-full bg-home-foreground/5 flex items-center justify-center group-hover:bg-home-primary group-hover:text-white transition-all duration-300">
|
||||||
<path fill-rule="evenodd"
|
<svg class="w-5 h-5 transition-transform group-hover:translate-x-0.5"
|
||||||
d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z"
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
clip-rule="evenodd"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-lg transition-shadow group">
|
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:shadow-home-primary/5 hover:border-home-primary/20 transition-all duration-300 group">
|
||||||
<div class="flex flex-col sm:flex-row">
|
<div class="flex flex-col sm:flex-row h-full">
|
||||||
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden">
|
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden relative">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Parfum Musim Dingin" loading="lazy"
|
<img src="https://placehold.co/600x400/png?text=Parfum+Unisex" alt="Parfum Unisex"
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300">
|
loading="lazy"
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
|
||||||
</div>
|
</div>
|
||||||
<div class="p-6 sm:w-3/5 flex flex-col justify-between">
|
<div class="p-8 sm:w-3/5 flex flex-col justify-between">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex gap-2 mb-3">
|
<div class="flex items-center gap-3 mb-4">
|
||||||
<span
|
<span
|
||||||
class="text-xs font-bold text-home-foreground bg-home-foreground/10 px-3 py-1 rounded-full">Tren</span>
|
class="text-xs font-bold text-home-primary bg-home-primary/10 px-3 py-1 rounded-full border border-home-primary/10 uppercase tracking-wider">Tren</span>
|
||||||
<span class="text-xs text-home-foreground/60">6 min read</span>
|
<span class="text-xs text-home-foreground/50 flex items-center gap-1">
|
||||||
|
<svg class="w-3 h-3" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||||||
|
</svg>
|
||||||
|
7 min read
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h3
|
<h3
|
||||||
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
class="text-2xl font-bold text-home-foreground mb-3 group-hover:text-home-primary transition-colors line-clamp-2 leading-tight">
|
||||||
Parfum Musim Dingin: Aroma Hangat yang Sempurna untuk Liburan</h3>
|
Parfum Unisex Terbaik 2024: Pilihan Untuk Semua
|
||||||
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3">Musim dingin
|
</h3>
|
||||||
membutuhkan aromaterapi yang berbeda. Kami merekomendasikan koleksi parfum
|
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3 leading-relaxed">
|
||||||
dengan nada hangat seperti vanilla, kayu cedar, dan musk yang sempurna untuk
|
Parfum unisex semakin populer karena fleksibilitas dan keunikannya. Kami
|
||||||
menciptakan suasana nyaman di musim yang dingin...</p>
|
mengumpulkan rekomendasi terbaik tahun ini...
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center justify-between pt-4 border-t border-home-foreground/10">
|
|
||||||
<div class="flex items-center gap-3">
|
|
||||||
<img src="https://placehold.co/500x300/png" alt="Rina Kusuma"
|
|
||||||
class="w-8 h-8 rounded-full">
|
|
||||||
<div>
|
|
||||||
<p class="text-sm font-semibold text-home-foreground">Rina Kusuma</p>
|
|
||||||
<time datetime="2024-11-01" class="text-xs text-home-foreground/60">1 Nov
|
|
||||||
2024</time>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<svg class="w-5 h-5 text-home-foreground/60 group-hover:translate-x-1 transition-transform"
|
|
||||||
fill="currentColor" viewBox="0 0 20 20">
|
|
||||||
<path fill-rule="evenodd"
|
|
||||||
d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z"
|
|
||||||
clip-rule="evenodd"></path>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article
|
<div class="flex items-center justify-between pt-6 border-t border-home-foreground/5">
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-lg transition-shadow group">
|
|
||||||
<div class="flex flex-col sm:flex-row">
|
|
||||||
<div class="sm:w-2/5 h-64 sm:h-auto overflow-hidden">
|
|
||||||
<img src="https://placehold.co/500x300/png" alt="Parfum Unisex" loading="lazy"
|
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300">
|
|
||||||
</div>
|
|
||||||
<div class="p-6 sm:w-3/5 flex flex-col justify-between">
|
|
||||||
<div>
|
|
||||||
<div class="flex gap-2 mb-3">
|
|
||||||
<span
|
|
||||||
class="text-xs font-bold text-home-foreground bg-home-foreground/10 px-3 py-1 rounded-full">Rekomendasi</span>
|
|
||||||
<span class="text-xs text-home-foreground/60">7 min read</span>
|
|
||||||
</div>
|
|
||||||
<h3
|
|
||||||
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
|
||||||
Parfum Unisex Terbaik 2024: Pilihan Untuk Semua Jenis Kelamin</h3>
|
|
||||||
<p class="text-home-foreground/60 text-sm mb-4 line-clamp-3">Parfum unisex semakin
|
|
||||||
populer karena fleksibilitas dan keunikannya. Kami telah mengumpulkan
|
|
||||||
rekomendasi parfum unisex terbaik tahun ini yang dapat digunakan oleh siapa saja
|
|
||||||
dan cocok untuk berbagai kesempatan...</p>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center justify-between pt-4 border-t border-home-foreground/10">
|
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<img src="https://placehold.co/500x300/png" alt="Budi Santoso"
|
<img src="https://placehold.co/100x100/png?text=User" alt="Author"
|
||||||
class="w-8 h-8 rounded-full">
|
class="w-9 h-9 rounded-full ring-2 ring-white shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<p class="text-sm font-semibold text-home-foreground">Budi Santoso</p>
|
<p class="text-sm font-bold text-home-foreground">Budi Santoso</p>
|
||||||
<time datetime="2024-10-28" class="text-xs text-home-foreground/60">28 Oct
|
<p class="text-xs text-home-foreground/50">28 Oct 2024</p>
|
||||||
2024</time>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<svg class="w-5 h-5 text-home-foreground/60 group-hover:translate-x-1 transition-transform"
|
<div
|
||||||
fill="currentColor" viewBox="0 0 20 20">
|
class="w-10 h-10 rounded-full bg-home-foreground/5 flex items-center justify-center group-hover:bg-home-primary group-hover:text-white transition-all duration-300">
|
||||||
<path fill-rule="evenodd"
|
<svg class="w-5 h-5 transition-transform group-hover:translate-x-0.5"
|
||||||
d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z"
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
clip-rule="evenodd"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav class="flex items-center justify-center mt-12" aria-label="Pagination">
|
<nav class="flex items-center justify-center mt-16" aria-label="Pagination">
|
||||||
<div class="flex items-center gap-2">
|
<div
|
||||||
|
class="flex items-center gap-3 bg-white p-2 rounded-full shadow-sm border border-home-foreground/5">
|
||||||
<button
|
<button
|
||||||
class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foreground/50 cursor-not-allowed"
|
class="w-10 h-10 flex items-center justify-center rounded-full border border-home-foreground/10 text-home-foreground/30 cursor-not-allowed hover:bg-gray-50 transition-colors"
|
||||||
disabled aria-label="Halaman sebelumnya">
|
disabled>
|
||||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||||
<path fill-rule="evenodd"
|
<path fill-rule="evenodd"
|
||||||
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
||||||
@ -222,17 +225,16 @@ class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foregroun
|
|||||||
@for ($page = 1; $page <= 3; $page++)
|
@for ($page = 1; $page <= 3; $page++)
|
||||||
@if ($page == 1)
|
@if ($page == 1)
|
||||||
<button
|
<button
|
||||||
class="px-4 py-2 rounded-lg bg-home-foreground text-white font-bold cursor-default"
|
class="w-10 h-10 flex items-center justify-center rounded-full bg-home-primary text-white font-bold shadow-md shadow-home-primary/20"
|
||||||
aria-current="page">{{ $page }}</button>
|
aria-current="page">{{ $page }}</button>
|
||||||
@else
|
@else
|
||||||
<button
|
<button
|
||||||
class="px-4 py-2 rounded-lg border border-home-foreground/20 text-home-foreground hover:bg-home-foreground/5 transition-colors font-medium">{{ $page }}</button>
|
class="w-10 h-10 flex items-center justify-center rounded-full text-home-foreground hover:bg-home-primary/10 hover:text-home-primary transition-colors font-medium">{{ $page }}</button>
|
||||||
@endif
|
@endif
|
||||||
@endfor
|
@endfor
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foreground hover:bg-home-foreground/5 transition-colors"
|
class="w-10 h-10 flex items-center justify-center rounded-full border border-home-foreground/10 text-home-foreground hover:bg-home-primary/10 hover:text-home-primary hover:border-home-primary transition-all">
|
||||||
aria-label="Halaman selanjutnya">
|
|
||||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
||||||
<path fill-rule="evenodd"
|
<path fill-rule="evenodd"
|
||||||
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||||
@ -244,68 +246,105 @@ class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foregroun
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<aside class="lg:col-span-1">
|
<aside class="lg:col-span-1">
|
||||||
<div class="sticky top-24 space-y-6">
|
<div class="sticky top-32 space-y-8">
|
||||||
|
|
||||||
<nav class="bg-white rounded-2xl border border-home-foreground/10 p-6"
|
<nav class="bg-white rounded-2xl border border-home-foreground/10 p-8 shadow-sm">
|
||||||
aria-labelledby="cat-heading">
|
<h3 class="text-lg font-bold text-home-primary mb-6 border-b border-home-foreground/5 pb-4">
|
||||||
<h3 id="cat-heading" class="text-lg font-bold text-home-foreground mb-4">Kategori</h3>
|
Kategori</h3>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1">
|
||||||
<button
|
<button
|
||||||
class="w-full text-left px-3 py-2 rounded-lg text-home-foreground/70 hover:bg-home-foreground/10 hover:text-home-foreground transition-colors text-sm font-medium">Perawatan
|
class="w-full text-left px-4 py-3 rounded-xl text-home-foreground/70 hover:bg-home-primary/5 hover:text-home-primary transition-all text-sm font-medium flex justify-between items-center group">
|
||||||
Parfum</button>
|
Perawatan Parfum
|
||||||
|
<span
|
||||||
|
class="text-home-primary opacity-0 -translate-x-2 group-hover:translate-x-0 group-hover:opacity-100 transition-all duration-300">→</span>
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
class="w-full text-left px-3 py-2 rounded-lg text-home-foreground/70 hover:bg-home-foreground/10 hover:text-home-foreground transition-colors text-sm font-medium">Lifestyle</button>
|
class="w-full text-left px-4 py-3 rounded-xl text-home-foreground/70 hover:bg-home-primary/5 hover:text-home-primary transition-all text-sm font-medium flex justify-between items-center group">
|
||||||
|
Lifestyle
|
||||||
|
<span
|
||||||
|
class="text-home-primary opacity-0 -translate-x-2 group-hover:translate-x-0 group-hover:opacity-100 transition-all duration-300">→</span>
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
class="w-full text-left px-3 py-2 rounded-lg text-home-foreground/70 hover:bg-home-foreground/10 hover:text-home-foreground transition-colors text-sm font-medium">Tren
|
class="w-full text-left px-4 py-3 rounded-xl text-home-foreground/70 hover:bg-home-primary/5 hover:text-home-primary transition-all text-sm font-medium flex justify-between items-center group">
|
||||||
Terkini</button>
|
Tren Terkini
|
||||||
|
<span
|
||||||
|
class="text-home-primary opacity-0 -translate-x-2 group-hover:translate-x-0 group-hover:opacity-100 transition-all duration-300">→</span>
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
class="w-full text-left px-3 py-2 rounded-lg text-home-foreground/70 hover:bg-home-foreground/10 hover:text-home-foreground transition-colors text-sm font-medium">Tips
|
class="w-full text-left px-4 py-3 rounded-xl text-home-foreground/70 hover:bg-home-primary/5 hover:text-home-primary transition-all text-sm font-medium flex justify-between items-center group">
|
||||||
& Trik</button>
|
Tips & Trik
|
||||||
<button
|
<span
|
||||||
class="w-full text-left px-3 py-2 rounded-lg text-home-foreground/70 hover:bg-home-foreground/10 hover:text-home-foreground transition-colors text-sm font-medium">Review
|
class="text-home-primary opacity-0 -translate-x-2 group-hover:translate-x-0 group-hover:opacity-100 transition-all duration-300">→</span>
|
||||||
Produk</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<nav class="bg-white rounded-2xl border border-home-foreground/10 p-6"
|
<nav class="bg-white rounded-2xl border border-home-foreground/10 p-8 shadow-sm">
|
||||||
aria-labelledby="pop-heading">
|
<h3 class="text-lg font-bold text-home-primary mb-6 border-b border-home-foreground/5 pb-4">
|
||||||
<h3 id="pop-heading" class="text-lg font-bold text-home-foreground mb-4">Artikel Populer</h3>
|
Populer</h3>
|
||||||
<div class="space-y-4">
|
<div class="space-y-5">
|
||||||
<a href="#" class="block group">
|
<a href="#" class="block group">
|
||||||
<p
|
<p
|
||||||
class="text-sm font-semibold text-home-foreground group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
class="text-sm font-bold text-home-foreground group-hover:text-home-primary transition-colors line-clamp-2 leading-snug">
|
||||||
Tips Memilih Parfum yang Tepat Sesuai Kepribadian</p>
|
Tips Memilih Parfum yang Tepat Sesuai Kepribadian
|
||||||
<p class="text-xs text-home-foreground/60 mt-1">2.5K views</p>
|
</p>
|
||||||
|
<p class="text-xs text-home-foreground/40 mt-2 font-medium flex items-center gap-1">
|
||||||
|
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
2.5K views
|
||||||
|
</p>
|
||||||
</a>
|
</a>
|
||||||
<div class="border-t border-home-foreground/10"></div>
|
<div class="border-t border-home-foreground/5"></div>
|
||||||
<a href="#" class="block group">
|
<a href="#" class="block group">
|
||||||
<p
|
<p
|
||||||
class="text-sm font-semibold text-home-foreground group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
class="text-sm font-bold text-home-foreground group-hover:text-home-primary transition-colors line-clamp-2 leading-snug">
|
||||||
Panduan Lengkap Cara Menyimpan Parfum</p>
|
Panduan Lengkap Cara Menyimpan Parfum
|
||||||
<p class="text-xs text-home-foreground/60 mt-1">1.8K views</p>
|
</p>
|
||||||
</a>
|
<p class="text-xs text-home-foreground/40 mt-2 font-medium flex items-center gap-1">
|
||||||
<div class="border-t border-home-foreground/10"></div>
|
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<a href="#" class="block group">
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
<p
|
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||||
class="text-sm font-semibold text-home-foreground group-hover:text-home-foreground/70 transition-colors line-clamp-2">
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
Parfum Musim Dingin: Aroma Hangat</p>
|
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z">
|
||||||
<p class="text-xs text-home-foreground/60 mt-1">1.2K views</p>
|
</path>
|
||||||
|
</svg>
|
||||||
|
1.8K views
|
||||||
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<section class="bg-home-foreground/5 rounded-2xl border border-home-foreground/10 p-6"
|
<section
|
||||||
aria-labelledby="newsletter-heading">
|
class="bg-home-primary rounded-2xl p-8 text-center relative overflow-hidden group shadow-lg shadow-home-primary/20">
|
||||||
<h3 id="newsletter-heading" class="text-lg font-bold text-home-foreground mb-2">Newsletter
|
<div
|
||||||
</h3>
|
class="absolute top-0 right-0 w-32 h-32 bg-home-secondary/20 rounded-full blur-2xl -mr-10 -mt-10">
|
||||||
<p class="text-sm text-home-foreground/60 mb-4">Dapatkan tips dan artikel terbaru langsung ke
|
</div>
|
||||||
email Anda</p>
|
|
||||||
<form onsubmit="event.preventDefault();">
|
<div class="relative z-10">
|
||||||
|
<div
|
||||||
|
class="w-12 h-12 bg-white/10 rounded-full flex items-center justify-center mx-auto mb-4 text-white">
|
||||||
|
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 class="text-xl font-bold text-white mb-2">Newsletter</h3>
|
||||||
|
<p class="text-sm text-white/80 mb-6 leading-relaxed">Dapatkan tips eksklusif dan artikel
|
||||||
|
terbaru langsung ke email Anda.</p>
|
||||||
|
|
||||||
|
<form onsubmit="event.preventDefault();" class="space-y-3">
|
||||||
<input type="email" placeholder="Email Anda..." required aria-label="Alamat Email"
|
<input type="email" placeholder="Email Anda..." required aria-label="Alamat Email"
|
||||||
class="w-full py-2 px-3 rounded-lg border border-home-foreground/20 text-home-foreground placeholder-home-foreground/50 text-sm mb-3 focus:outline-none focus:ring-2 focus:ring-home-foreground">
|
class="w-full py-3 px-4 rounded-xl border border-white/20 bg-white/10 text-white placeholder-white/50 text-sm focus:outline-none focus:bg-white/20 focus:border-home-secondary transition-all">
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
class="w-full bg-home-foreground text-white font-bold py-2.5 rounded-lg hover:opacity-90 transition-opacity text-sm">Subscribe</button>
|
class="w-full bg-home-secondary text-home-primary font-bold py-3 rounded-xl hover:bg-white transition-all duration-300 text-sm shadow-lg">Subscribe</button>
|
||||||
</form>
|
</form>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,62 +1,78 @@
|
|||||||
<div>
|
<div>
|
||||||
<section class="px-6 md:px-12 lg:px-24 py-28 md:py-36 bg-white min-h-screen">
|
<section class="px-6 lg:px-32 xl:px-48 py-36 bg-white min-h-screen">
|
||||||
<header class="mb-12 text-center md:text-left">
|
|
||||||
<h1 class="text-4xl font-bold text-home-foreground mb-2">Frequently Asked Questions</h1>
|
<header class="mb-16 text-center">
|
||||||
<p class="text-home-foreground/60 text-lg">
|
<h1 class="text-3xl md:text-4xl font-bold text-home-primary mb-4">Frequently Asked Questions</h1>
|
||||||
Temukan jawaban untuk pertanyaan umum Anda tentang produk dan layanan kami
|
<p class="text-home-foreground/60 text-lg max-w-2xl mx-auto">
|
||||||
|
Temukan jawaban cepat untuk pertanyaan umum seputar produk, pengiriman, dan layanan kami.
|
||||||
</p>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="columns-1 lg:columns-2 gap-6 space-y-6 lg:space-y-0">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 items-start" x-data="{ activeAccordion: null }">
|
||||||
|
|
||||||
@foreach ([
|
@foreach ([
|
||||||
['id' => 1, 'q' => 'Bagaimana cara melakukan pemesanan?', 'a' => 'Anda dapat melakukan pemesanan melalui website atau aplikasi kami. Pilih produk yang diinginkan, masukkan ke keranjang, dan ikuti langkah checkout.'],
|
['q' => 'Bagaimana cara melakukan pemesanan?', 'a' => 'Anda dapat melakukan pemesanan melalui website atau aplikasi kami. Pilih produk yang diinginkan, masukkan ke keranjang, dan ikuti langkah checkout.'],
|
||||||
['id' => 2, 'q' => 'Berapa lama waktu pengiriman?', 'a' => 'Pengiriman untuk area Jakarta 1-2 hari kerja dan luar Jakarta 3-5 hari kerja tergantung ekspedisi yang dipilih.'],
|
['q' => 'Berapa lama waktu pengiriman?', 'a' => 'Pengiriman untuk area Jakarta 1-2 hari kerja dan luar Jakarta 3-5 hari kerja tergantung ekspedisi yang dipilih.'],
|
||||||
['id' => 3, 'q' => 'Apakah produk original?', 'a' => 'Semua produk 100% original dari distributor resmi dengan sertifikat keaslian dan garansi uang kembali.'],
|
['q' => 'Apakah produk original?', 'a' => 'Semua produk 100% original dari distributor resmi dengan sertifikat keaslian dan garansi uang kembali.'],
|
||||||
['id' => 4, 'q' => 'Bagaimana kebijakan pengembalian barang?', 'a' => 'Pengembalian dalam 30 hari dengan syarat barang belum digunakan, segel utuh, dan menyertakan video unboxing.'],
|
['q' => 'Bagaimana kebijakan pengembalian barang?', 'a' => 'Pengembalian dalam 30 hari dengan syarat barang belum digunakan, segel utuh, dan menyertakan video unboxing.'],
|
||||||
['id' => 5, 'q' => 'Metode pembayaran apa saja yang tersedia?', 'a' => 'Kami menerima Transfer bank (BCA, Mandiri), Kartu Kredit, E-wallet (GoPay, OVO), dan cicilan 0%.'],
|
['q' => 'Metode pembayaran apa saja yang tersedia?', 'a' => 'Kami menerima Transfer bank (BCA, Mandiri), Kartu Kredit, E-wallet (GoPay, OVO), dan cicilan 0%.'],
|
||||||
['id' => 6, 'q' => 'Bagaimana cara menggunakan voucher?', 'a' => 'Masukkan kode voucher pada halaman checkout di kolom "Kode Promo", diskon akan otomatis terpotong.'],
|
['q' => 'Bagaimana cara menggunakan voucher?', 'a' => 'Masukkan kode voucher pada halaman checkout di kolom "Kode Promo", diskon akan otomatis terpotong.'],
|
||||||
] as $index => $faq)
|
] as $index => $faq)
|
||||||
<article x-data="{ open: null }"
|
<article
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden break-inside-avoid mb-6 shadow-sm">
|
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden shadow-sm hover:shadow-md transition-shadow group">
|
||||||
|
<button
|
||||||
|
@click="activeAccordion = (activeAccordion === {{ $index }} ? null : {{ $index }})"
|
||||||
|
class="w-full px-6 py-5 flex items-center justify-between text-left focus:outline-none transition-colors"
|
||||||
|
:class="activeAccordion === {{ $index }} ? 'bg-home-primary/5' :
|
||||||
|
'bg-white hover:bg-home-foreground/5'">
|
||||||
|
|
||||||
<button @click="open === {{ $index }} ? open = null : open = {{ $index }}"
|
<h3 class="text-lg font-bold pr-4 transition-colors"
|
||||||
:aria-expanded="open === {{ $index }}"
|
:class="activeAccordion === {{ $index }} ? 'text-home-primary' :
|
||||||
class="w-full px-6 py-5 flex items-center justify-between hover:bg-home-foreground/5 transition-colors">
|
'text-home-foreground group-hover:text-home-primary'">
|
||||||
|
|
||||||
<h3 class="text-lg font-bold text-home-foreground text-left pr-4">
|
|
||||||
{{ $faq['q'] }}
|
{{ $faq['q'] }}
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
<span class="flex-shrink-0 ml-4 p-1 rounded-full transition-all duration-300"
|
||||||
class="w-6 h-6 text-home-foreground transition-transform duration-300"
|
:class="activeAccordion === {{ $index }} ? 'bg-home-primary text-white rotate-180' :
|
||||||
:class="{ 'rotate-180': open === {{ $index }} }" fill="none" viewBox="0 0 24 24"
|
'bg-home-foreground/10 text-home-foreground group-hover:bg-home-primary group-hover:text-white'">
|
||||||
stroke-width="2" stroke="currentColor">
|
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="none" viewBox="0 0 24 24"
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
|
stroke="currentColor" stroke-width="2">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />
|
||||||
</svg>
|
</svg>
|
||||||
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div x-show="open === {{ $index }}" x-collapse
|
<div x-show="activeAccordion === {{ $index }}" x-collapse x-cloak
|
||||||
x-transition:enter="transition ease-out duration-300"
|
class="px-6 pb-6 pt-2 bg-home-primary/5 border-t border-home-primary/10 text-home-foreground/70 leading-relaxed text-sm md:text-base">
|
||||||
x-transition:leave="transition ease-in duration-200"
|
|
||||||
class="px-6 pb-5 border-t border-home-foreground/10 text-home-foreground/70">
|
|
||||||
<p class="leading-relaxed">
|
|
||||||
{{ $faq['a'] }}
|
{{ $faq['a'] }}
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</article>
|
</article>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-10 bg-home-foreground/5 rounded-2xl border border-home-foreground/10 p-8 text-center">
|
<div
|
||||||
<h3 class="text-2xl font-bold text-home-foreground mb-2">Masih ada pertanyaan?</h3>
|
class="mt-16 bg-home-primary rounded-2xl p-10 text-center relative overflow-hidden shadow-xl shadow-home-primary/20">
|
||||||
<p class="text-home-foreground/60 mb-6">Tim customer service kami siap membantu Anda 24/7</p>
|
<div class="absolute top-0 right-0 w-48 h-48 bg-white/10 rounded-full blur-3xl -mr-12 -mt-12"></div>
|
||||||
|
<div class="absolute bottom-0 left-0 w-32 h-32 bg-home-secondary/20 rounded-full blur-2xl -ml-8 -mb-8">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="relative z-10">
|
||||||
|
<h3 class="text-2xl font-bold text-white mb-3">Masih ada pertanyaan?</h3>
|
||||||
|
<p class="text-white/80 mb-8 max-w-xl mx-auto">Jika Anda tidak menemukan jawaban yang dicari, tim
|
||||||
|
customer service kami siap membantu Anda 24/7.</p>
|
||||||
|
|
||||||
|
<div class="flex flex-col sm:flex-row gap-4 justify-center">
|
||||||
<button
|
<button
|
||||||
class="bg-home-foreground text-white font-bold px-8 py-3 rounded-lg hover:opacity-90 transition-opacity">
|
class="bg-white text-home-primary font-bold px-8 py-3 rounded-xl hover:bg-home-secondary hover:text-white transition-all shadow-lg">
|
||||||
Hubungi Kami
|
Chat WhatsApp
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="bg-home-primary border border-white/20 text-white font-bold px-8 py-3 rounded-xl hover:bg-white/10 transition-all">
|
||||||
|
Kirim Email
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -12,14 +12,25 @@
|
|||||||
#brand-slider img {
|
#brand-slider img {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-drag: none;
|
-webkit-user-drag: none;
|
||||||
filter: grayscale(100%);
|
filter: brightness(0) invert(1);
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#brand-slider img:hover {
|
#brand-slider img:hover {
|
||||||
filter: grayscale(0%);
|
/* filter: brightness(0) invert(1); */
|
||||||
|
filter: none;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor-grab {
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor-grabbing {
|
||||||
|
cursor: grabbing;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fade-enter {
|
.fade-enter {
|
||||||
@ -38,7 +49,6 @@
|
|||||||
@script
|
@script
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('livewire:navigated', () => {
|
document.addEventListener('livewire:navigated', () => {
|
||||||
// brand slider
|
|
||||||
const track = document.getElementById('brand-track');
|
const track = document.getElementById('brand-track');
|
||||||
const originalChildren = Array.from(track.children);
|
const originalChildren = Array.from(track.children);
|
||||||
const originalHTML = track.innerHTML;
|
const originalHTML = track.innerHTML;
|
||||||
@ -48,44 +58,79 @@
|
|||||||
const itemWidth = originalChildren[0].offsetWidth;
|
const itemWidth = originalChildren[0].offsetWidth;
|
||||||
const gapStyle = window.getComputedStyle(track).gap;
|
const gapStyle = window.getComputedStyle(track).gap;
|
||||||
const gap = parseFloat(gapStyle) || 0;
|
const gap = parseFloat(gapStyle) || 0;
|
||||||
|
|
||||||
const singleSetWidth = (itemWidth + gap) * originalChildren.length;
|
const singleSetWidth = (itemWidth + gap) * originalChildren.length;
|
||||||
|
|
||||||
let currentWidth = singleSetWidth;
|
let currentWidth = singleSetWidth;
|
||||||
while (currentWidth < window.innerWidth + singleSetWidth * 2) {
|
while (currentWidth < window.innerWidth + singleSetWidth * 2) {
|
||||||
track.innerHTML += originalHTML;
|
track.innerHTML += originalHTML;
|
||||||
currentWidth
|
currentWidth += singleSetWidth;
|
||||||
+= singleSetWidth;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let position = 0;
|
let position = 0;
|
||||||
const speed = 1;
|
const speed = 1;
|
||||||
|
let isDown = false;
|
||||||
|
let startX;
|
||||||
|
let scrollLeft;
|
||||||
|
let animationId;
|
||||||
|
|
||||||
|
track.addEventListener('mousedown', (e) => {
|
||||||
|
isDown = true;
|
||||||
|
track.classList.add('cursor-grabbing');
|
||||||
|
track.classList.remove('cursor-grab');
|
||||||
|
startX = e.pageX - track.offsetLeft;
|
||||||
|
scrollLeft = position;
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
cancelAnimationFrame(animationId);
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('mouseup', () => {
|
||||||
|
if (!isDown) return;
|
||||||
|
isDown = false;
|
||||||
|
track.classList.remove('cursor-grabbing');
|
||||||
|
track.classList.add('cursor-grab');
|
||||||
|
animate();
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener('mousemove', (e) => {
|
||||||
|
if (!isDown) return;
|
||||||
|
e.preventDefault();
|
||||||
|
const x = e.pageX - track.offsetLeft;
|
||||||
|
const walk = (x - startX) * 1;
|
||||||
|
position = scrollLeft + walk;
|
||||||
|
track.style.transform = `translateX(${position}px)`;
|
||||||
|
});
|
||||||
|
|
||||||
function animate() {
|
function animate() {
|
||||||
|
if (isDown) return;
|
||||||
|
|
||||||
position -= speed;
|
position -= speed;
|
||||||
if (Math.abs(position) >=
|
|
||||||
singleSetWidth) {
|
if (position <= -singleSetWidth) {
|
||||||
position = 0;
|
position += singleSetWidth;
|
||||||
|
} else if (position > 0) {
|
||||||
|
position -= singleSetWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
track.style.transform = `translateX(${position}px)`;
|
track.style.transform = `translateX(${position}px)`;
|
||||||
requestAnimationFrame(animate);
|
animationId = requestAnimationFrame(animate);
|
||||||
}
|
}
|
||||||
|
|
||||||
animate();
|
animate();
|
||||||
|
|
||||||
// category pagination
|
|
||||||
const links = document.querySelectorAll('.pagination-link');
|
const links = document.querySelectorAll('.pagination-link');
|
||||||
const container = document.getElementById('category-container');
|
const container = document.getElementById('category-container');
|
||||||
|
|
||||||
|
if (links.length > 0 && container) {
|
||||||
links.forEach(link => {
|
links.forEach(link => {
|
||||||
link.addEventListener('click', e => {
|
link.addEventListener('click', e => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
links.forEach(l => l.classList.remove('bg-black'));
|
links.forEach(l => l.classList.remove('bg-home-foreground'));
|
||||||
links.forEach(l => l.classList.add('bg-gray-400'));
|
links.forEach(l => l.classList.add('bg-gray-400'));
|
||||||
|
|
||||||
e.target.classList.remove('bg-gray-400');
|
e.target.classList.remove('bg-gray-400');
|
||||||
e.target.classList.add('bg-black');
|
e.target.classList.add('bg-home-foreground');
|
||||||
|
|
||||||
fetch(link.href)
|
fetch(link.href)
|
||||||
.then(res => res.text())
|
.then(res => res.text())
|
||||||
@ -104,6 +149,7 @@ function animate() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endscript
|
@endscript
|
||||||
|
|||||||
@ -1,3 +1,173 @@
|
|||||||
<div class="">
|
<div>
|
||||||
Outlet
|
@php
|
||||||
|
$outlets = [
|
||||||
|
[
|
||||||
|
'id' => 1,
|
||||||
|
'name' => 'Yadi Parfum Central Park',
|
||||||
|
'address' => 'Central Park Mall, Lt. LG, Unit 112, Jl. Letjen S. Parman No.28, Jakarta Barat',
|
||||||
|
'city' => 'Jakarta Barat',
|
||||||
|
'phone' => '+62 812-3456-7890',
|
||||||
|
'hours' => '10:00 - 22:00 WIB',
|
||||||
|
'image' => 'https://placehold.co/800x600/png?text=Boutique+Central+Park',
|
||||||
|
'facilities' => ['Consultation', 'Refill Station', 'Engraving'],
|
||||||
|
'status' => 'Buka',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 2,
|
||||||
|
'name' => 'Yadi Parfum Senayan City',
|
||||||
|
'address' => 'Senayan City, Lt. 1, Unit 45, Jl. Asia Afrika Lot 19, Jakarta Pusat',
|
||||||
|
'city' => 'Jakarta Pusat',
|
||||||
|
'phone' => '+62 812-9876-5432',
|
||||||
|
'hours' => '10:00 - 22:00 WIB',
|
||||||
|
'image' => 'https://placehold.co/800x600/png?text=Boutique+Senayan',
|
||||||
|
'facilities' => ['VIP Lounge', 'Consultation'],
|
||||||
|
'status' => 'Buka',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => 3,
|
||||||
|
'name' => 'Yadi Parfum Bandung',
|
||||||
|
'address' => 'Paris Van Java, Resort Level, Jl. Sukajadi No.131-139, Bandung',
|
||||||
|
'city' => 'Bandung',
|
||||||
|
'phone' => '+62 822-1122-3344',
|
||||||
|
'hours' => '10:00 - 21:00 WIB',
|
||||||
|
'image' => 'https://placehold.co/800x600/png?text=Boutique+Bandung',
|
||||||
|
'facilities' => ['Refill Station'],
|
||||||
|
'status' => 'Tutup',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div class="flex flex-col min-h-screen bg-white font-sans">
|
||||||
|
|
||||||
|
<main class="flex-grow px-6 lg:px-32 xl:px-48 pb-24 pt-36">
|
||||||
|
|
||||||
|
<header class="mb-16 text-center max-w-3xl mx-auto">
|
||||||
|
<span class="text-home-primary font-bold tracking-widest text-xs uppercase mb-3 block">Lokasi
|
||||||
|
Butik</span>
|
||||||
|
<h1 class="text-4xl md:text-5xl font-bold text-home-foreground mb-6">Temukan Butik Terdekat</h1>
|
||||||
|
<p class="text-home-foreground/60 text-lg">
|
||||||
|
Rasakan pengalaman langsung kemewahan aroma kami. Kunjungi butik kami untuk konsultasi personal dan
|
||||||
|
layanan eksklusif.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="mt-10 relative max-w-xl mx-auto group">
|
||||||
|
<div
|
||||||
|
class="absolute inset-0 bg-home-primary/5 rounded-full blur-xl opacity-0 group-hover:opacity-100 transition-opacity duration-500">
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="relative flex items-center bg-white rounded-full shadow-lg border border-home-foreground/5 py-2 px-4">
|
||||||
|
<div class="pl-4 text-home-foreground/40">
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<input type="text" placeholder="Masukkan kota atau nama area..."
|
||||||
|
class="flex-1 px-4 py-3 bg-transparent text-home-foreground placeholder-home-foreground/40 focus:outline-none">
|
||||||
|
<button
|
||||||
|
class="bg-home-primary text-white px-6 py-3 rounded-full font-bold text-sm hover:bg-home-primary transition-colors">
|
||||||
|
Cari Lokasi
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 mb-24">
|
||||||
|
@foreach ($outlets as $outlet)
|
||||||
|
<article
|
||||||
|
class="group bg-white rounded-3xl border border-home-foreground/10 overflow-hidden hover:shadow-2xl hover:shadow-home-primary/10 hover:-translate-y-2 transition-all duration-500 flex flex-col h-full">
|
||||||
|
|
||||||
|
<div class="relative h-64 overflow-hidden">
|
||||||
|
<div
|
||||||
|
class="absolute inset-0 bg-home-primary/10 mix-blend-multiply opacity-0 group-hover:opacity-100 transition-opacity duration-500 z-10">
|
||||||
|
</div>
|
||||||
|
<img src="{{ $outlet['image'] }}" alt="{{ $outlet['name'] }}"
|
||||||
|
class="w-full h-full object-cover transform group-hover:scale-110 transition-transform duration-700">
|
||||||
|
|
||||||
|
<div class="absolute top-4 left-4 z-20">
|
||||||
|
<span
|
||||||
|
class="px-3 py-1 rounded-full text-[10px] font-bold uppercase tracking-wide backdrop-blur-md bg-white/90 shadow-sm
|
||||||
|
{{ $outlet['status'] == 'Buka' ? 'text-green-700' : 'text-red-700' }}">
|
||||||
|
{{ $outlet['status'] }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="p-8 flex flex-col flex-grow">
|
||||||
|
<div class="mb-4">
|
||||||
|
<h3
|
||||||
|
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-primary transition-colors">
|
||||||
|
{{ $outlet['name'] }}</h3>
|
||||||
|
<p class="text-sm text-home-foreground/60 leading-relaxed">{{ $outlet['address'] }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-wrap gap-2 mb-6">
|
||||||
|
@foreach ($outlet['facilities'] as $facility)
|
||||||
|
<span
|
||||||
|
class="text-[10px] px-2 py-1 border border-home-foreground/10 rounded text-home-foreground/50">
|
||||||
|
{{ $facility }}
|
||||||
|
</span>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="grid grid-cols-2 gap-4 text-xs text-home-foreground/70 mb-6 pt-4 border-t border-home-foreground/5">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<svg class="w-4 h-4 text-home-primary" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||||||
|
</svg>
|
||||||
|
{{ $outlet['hours'] }}
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<svg class="w-4 h-4 text-home-primary" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
Call Store
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-auto flex gap-3">
|
||||||
|
<button
|
||||||
|
class="flex-1 py-3 rounded-xl bg-home-primary text-white text-sm font-bold hover:bg-home-secondary hover:text-home-primary transition-colors shadow-lg shadow-home-primary/20">
|
||||||
|
Petunjuk Arah
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="w-12 h-12 rounded-xl border border-home-foreground/10 flex items-center justify-center text-home-foreground hover:border-home-primary hover:text-home-primary transition-all">
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
@endforeach
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="relative rounded-3xl overflow-hidden shadow-2xl border border-home-foreground/10 group">
|
||||||
|
<div
|
||||||
|
class="absolute inset-0 bg-home-foreground/5 z-10 pointer-events-none group-hover:bg-transparent transition-colors duration-500">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="absolute top-6 left-6 z-20 bg-white/90 backdrop-blur-md px-6 py-4 rounded-2xl shadow-lg border border-white/20 hidden md:block">
|
||||||
|
<p class="text-xs text-home-foreground/50 font-bold uppercase tracking-wider mb-1">Cakupan Area</p>
|
||||||
|
<h3 class="text-home-primary font-bold">Indonesia & Asia Tenggara</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<iframe
|
||||||
|
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d126920.28318625622!2d106.76457105!3d-6.229571199999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x2e69f3e945e34b9d%3A0x5371bf0fdad786a2!2sJakarta%2C%20Special%20Capital%20Region%20of%20Jakarta!5e0!3m2!1sen!2sid!4v1652756763428!5m2!1sen!2sid"
|
||||||
|
width="100%" height="450" style="border:0; filter: grayscale(100%) contrast(1.2);"
|
||||||
|
allowfullscreen="" loading="lazy" class="hover:filter-none transition-all duration-700">
|
||||||
|
</iframe>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -23,42 +23,63 @@
|
|||||||
];
|
];
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<section class="bg-white py-20 px-6 lg:px-48 font-sans text-home-foreground">
|
<section class="bg-white py-16 lg:py-24 px-4 md:px-8 lg:px-24 xl:px-32 font-sans text-home-foreground overflow-hidden">
|
||||||
<div class="grid lg:grid-cols-2 gap-12 items-start">
|
<div class="max-w-7xl mx-auto">
|
||||||
<figure class="w-full">
|
<div class="grid lg:grid-cols-2 gap-12 lg:gap-20 items-center">
|
||||||
<img src="https://images.unsplash.com/photo-1523275335684-37898b6baf30?q=80"
|
|
||||||
class="w-full h-[500px] object-cover rounded-2xl shadow">
|
|
||||||
</figure>
|
|
||||||
<article class="space-y-4">
|
|
||||||
<h2 class="text-4xl leading-tight mb-6">Keunggulan Produk Kami.</h2>
|
|
||||||
<p class="text-gray-700 mb-8 max-w-3xl leading-relaxed">
|
|
||||||
Setiap parfum dibuat dengan standar tinggi agar kamu mendapatkan kualitas terbaik.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
<figure class="w-full relative order-2 lg:order-1">
|
||||||
|
<div class="absolute -inset-4 bg-home-primary/5 rounded-3xl -z-10 transform -rotate-2"></div>
|
||||||
|
<img src="https://images.unsplash.com/photo-1523275335684-37898b6baf30?q=80"
|
||||||
|
alt="Botol Parfum Elegan"
|
||||||
|
class="w-full h-[400px] lg:h-[600px] object-cover rounded-2xl shadow-lg">
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<article class="space-y-8 order-1 lg:order-2" x-data="{ activeAccordion: 0 }">
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-home-foreground leading-tight mb-6">
|
||||||
|
Keunggulan Produk Kami.
|
||||||
|
</h2>
|
||||||
|
<p class="text-base md:text-lg text-home-foreground/70 leading-relaxed">
|
||||||
|
Setiap parfum dibuat dengan standar tinggi agar kamu mendapatkan kualitas terbaik dan pengalaman wangi yang tak terlupakan.
|
||||||
|
</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="bg-white rounded-2xl p-6 md:p-8 shadow-sm border border-gray-100">
|
||||||
@foreach ($accordions as $index => $acc)
|
@foreach ($accordions as $index => $acc)
|
||||||
<div x-data="{ open: null }" class="border-b border-gray-200 pb-4 accordion-item">
|
<div class="border-b border-gray-100 last:border-0">
|
||||||
<button @click="open === {{ $index }} ? open = null : open = {{ $index }}"
|
<button
|
||||||
class="w-full flex justify-between items-center py-2 text-left group focus:outline-none"
|
@click="activeAccordion = (activeAccordion === {{ $index }} ? null : {{ $index }})"
|
||||||
:aria-expanded="open === {{ $index }}">
|
class="w-full flex justify-between items-center py-5 text-left group focus:outline-none transition-all duration-300"
|
||||||
<span class="text-lg font-semibold text-home-foreground group-hover:text-gray-600 transition">
|
:aria-expanded="activeAccordion === {{ $index }}">
|
||||||
|
|
||||||
|
<span class="text-lg font-bold transition-colors duration-300"
|
||||||
|
:class="activeAccordion === {{ $index }} ? 'text-home-primary' : 'text-home-foreground group-hover:text-home-primary'">
|
||||||
{{ $acc['title'] }}
|
{{ $acc['title'] }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="icon-plus text-xl font-light text-gray-400 transition-transform duration-300"
|
<span class="ml-4 flex-shrink-0 transition-transform duration-300 w-8 h-8 flex items-center justify-center rounded-full"
|
||||||
:class="{ 'rotate-45': open === {{ $index }} }">
|
:class="activeAccordion === {{ $index }} ? 'rotate-180 bg-home-primary text-white' : 'bg-gray-100 text-gray-400 group-hover:bg-home-primary/10 group-hover:text-home-primary'">
|
||||||
+
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
||||||
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<div x-show="open === {{ $index }}" x-collapse
|
|
||||||
x-transition:enter="transition ease-out duration-300"
|
<div x-show="activeAccordion === {{ $index }}"
|
||||||
x-transition:leave="transition ease-in duration-200"
|
x-collapse
|
||||||
class="min-h-0 content overflow-hidden text-gray-700 text-sm leading-relaxed">
|
x-cloak
|
||||||
<div class="pt-2 pb-2">
|
class="overflow-hidden text-home-foreground/70 text-base leading-relaxed">
|
||||||
|
<div class="pb-5">
|
||||||
{{ $acc['content'] }}
|
{{ $acc['content'] }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</div>
|
||||||
|
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@ -33,31 +33,40 @@
|
|||||||
$totalPages = ceil($total / $perPage);
|
$totalPages = ceil($total / $perPage);
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<section class="bg-gray-100 py-16 sm:py-20 px-6 sm:px-10 lg:px-48 relative overflow-hidden">
|
<section class="bg-home-foreground py-16 lg:py-24 px-4 md:px-8 lg:px-24 xl:px-32 relative overflow-hidden">
|
||||||
|
|
||||||
<header class="text-center mb-12">
|
<div class="max-w-7xl mx-auto">
|
||||||
<h2 class="text-2xl sm:text-3xl md:text-4xl font-bold text-gray-900 leading-tight">
|
|
||||||
|
<header class="text-center mb-16">
|
||||||
|
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-home-background leading-tight mb-4">
|
||||||
Temukan Aroma yang <br class="hidden sm:block">
|
Temukan Aroma yang <br class="hidden sm:block">
|
||||||
Cocok dengan Kepribadianmu.
|
Cocok dengan Kepribadianmu.
|
||||||
</h2>
|
</h2>
|
||||||
|
<p class="text-gray-500 text-lg max-w-2xl mx-auto">
|
||||||
|
Pilih kategori aroma yang paling menggambarkan dirimu dan ciptakan kesan tak terlupakan.
|
||||||
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
|
|
||||||
<div id="category-container" class="fade-enter-active">
|
<div id="category-container" class="fade-enter-active">
|
||||||
<div
|
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 gap-6">
|
||||||
class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 gap-px bg-gray-300 overflow-hidden rounded-2xl">
|
|
||||||
@foreach ($currentItems as $industry)
|
@foreach ($currentItems as $industry)
|
||||||
<article
|
<article
|
||||||
class="flex flex-col items-center justify-center py-8 sm:py-10 px-4 bg-gray-100 group hover:bg-white transition duration-300 cursor-pointer">
|
class="group flex flex-col items-center justify-center py-10 px-4 bg-white rounded-2xl border border-gray-100 hover:border-home-primary hover:shadow-xl hover:shadow-home-primary/5 hover:-translate-y-1 transition-all duration-300 cursor-pointer h-full">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
||||||
stroke="currentColor"
|
<div
|
||||||
class="w-6 h-6 sm:w-7 sm:h-7 md:w-8 md:h-8 text-gray-600 mb-3 group-hover:text-black transition">
|
class="w-14 h-14 mb-4 rounded-full bg-gray-50 flex items-center justify-center group-hover:bg-home-primary transition-colors duration-300">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5" stroke="currentColor"
|
||||||
|
class="w-7 h-7 text-gray-400 group-hover:text-white transition-colors duration-300">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M12 6v12m-3-2.818l.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
d="M12 6v12m-3-2.818l.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
</div>
|
||||||
|
|
||||||
<h3
|
<h3
|
||||||
class="text-[10px] sm:text-[11px] md:text-xs font-bold tracking-[0.15em] text-gray-500 uppercase group-hover:text-black transition">
|
class="text-[11px] md:text-xs font-bold tracking-widest text-gray-400 uppercase group-hover:text-home-primary transition-colors duration-300 text-center">
|
||||||
{{ $industry['name'] }}
|
{{ $industry['name'] }}
|
||||||
</h3>
|
</h3>
|
||||||
</article>
|
</article>
|
||||||
@ -65,33 +74,24 @@ class="text-[10px] sm:text-[11px] md:text-xs font-bold tracking-[0.15em] text-gr
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav class="mt-10 flex flex-col items-center space-y-4 lg:hidden" aria-label="Pagination Mobile">
|
<nav class="mt-12 flex flex-col items-center space-y-4 lg:hidden" aria-label="Pagination Mobile">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
@for ($i = 1; $i <= $totalPages; $i++)
|
@for ($i = 1; $i <= $totalPages; $i++)
|
||||||
<a href="?page={{ $i }}" aria-label="Halaman {{ $i }}"
|
<a href="?page={{ $i }}" aria-label="Halaman {{ $i }}"
|
||||||
class="w-2 h-6 rounded-full pagination-link transition duration-300 {{ $i == $page ? 'bg-black' : 'bg-gray-400' }}"></a>
|
class="w-2 h-2 rounded-full transition-all duration-300 {{ $i == $page ? 'bg-home-primary w-8' : 'bg-gray-300 hover:bg-gray-400' }}"></a>
|
||||||
@endfor
|
@endfor
|
||||||
</div>
|
</div>
|
||||||
<div class="text-[10px] font-bold tracking-widest text-gray-400">
|
|
||||||
TAP TO EXPLORE
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<nav class="hidden lg:flex absolute top-0 right-[-40px] h-full items-start" aria-label="Pagination Desktop">
|
<nav class="hidden lg:flex absolute top-0 -right-16 h-full items-center" aria-label="Pagination Desktop">
|
||||||
<div class="flex items-center gap-4 sticky top-10">
|
<div class="flex flex-col gap-3">
|
||||||
<div class="flex flex-col items-center gap-2">
|
|
||||||
@for ($i = 1; $i <= $totalPages; $i++)
|
@for ($i = 1; $i <= $totalPages; $i++)
|
||||||
<a href="?page={{ $i }}" aria-label="Halaman {{ $i }}"
|
<a href="?page={{ $i }}" aria-label="Halaman {{ $i }}"
|
||||||
class="w-[3px] h-10 rounded-full pagination-link transition duration-300 {{ $i == $page ? 'bg-black' : 'bg-gray-400' }}"></a>
|
class="w-1 rounded-full transition-all duration-300 {{ $i == $page ? 'bg-home-primary h-12' : 'bg-gray-200 h-6 hover:bg-gray-300' }}"></a>
|
||||||
@endfor
|
@endfor
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col text-[10px] font-bold tracking-widest text-gray-400">
|
|
||||||
@foreach (str_split('TAP TO EXPLORE') as $char)
|
|
||||||
<span>{!! $char == ' ' ? ' ' : $char !!}</span>
|
|
||||||
@endforeach
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@ -1,45 +1,75 @@
|
|||||||
<section class="relative text-center md:text-left bg-black text-white py-16 px-6 md:px-12 mt-48 lg:mt-0">
|
<section class="bg-home-primary text-home-foreground font-sans py-24 relative overflow-hidden">
|
||||||
<div class="max-w-5xl mx-auto">
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
|
|
||||||
|
|
||||||
<figure class="flex justify-center md:justify-start relative z-10">
|
<div class="container mx-auto px-6 lg:px-32 xl:px-48 relative z-10">
|
||||||
<img src="https://png.pngtree.com/png-vector/20230918/ourmid/pngtree-man-in-shirt-smiles-and-gives-thumbs-up-to-show-approval-png-image_10094392.png"
|
<div class="grid lg:grid-cols-2 gap-12 lg:gap-24 items-center">
|
||||||
alt="Testimoni Pelanggan yang Puas"
|
|
||||||
class="w-full max-w-sm lg:max-w-md h-auto absolute bottom-0 md:-top-72 object-contain drop-shadow-2xl">
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<div class="relative z-20">
|
<div class="space-y-8">
|
||||||
|
<h2 class="text-4xl md:text-5xl font-bold tracking-tight leading-tight text-home-background">
|
||||||
|
Bergabung dengan Member Eksklusif.
|
||||||
|
</h2>
|
||||||
|
<p class="text-home-background/40 text-lg leading-relaxed max-w-md">
|
||||||
|
Dapatkan akses awal ke koleksi terbaru, diskon member khusus, dan tips perawatan parfum langsung
|
||||||
|
dari ahlinya.
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="flex justify-center md:justify-start gap-1 mb-4" aria-label="Rating bintang 5 dari 5">
|
<form onsubmit="event.preventDefault();" class="flex flex-col sm:flex-row gap-4 w-full">
|
||||||
@for ($i = 0; $i < 5; $i++)
|
<button type="submit"
|
||||||
<span class="text-white text-xl" aria-hidden="true">★</span>
|
class="px-8 py-4 rounded-xl bg-home-background text-home-foreground font-bold hover:bg-home-secondary hover:text-home-foreground transition-all duration-300 shadow-lg shadow-home-background/20 whitespace-nowrap">
|
||||||
@endfor
|
Gabung Sekarang
|
||||||
</div>
|
|
||||||
|
|
||||||
<figure>
|
|
||||||
<blockquote
|
|
||||||
class="text-gray-300 text-lg leading-relaxed mb-6 italic border-l-4 border-white/20 pl-4 md:border-none md:pl-0">
|
|
||||||
"Fusce dapibus tellus ac cursus commodo, tortor mauris condimentum nibh ut fermentum massa,
|
|
||||||
justo sit amet vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor."
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<figcaption>
|
|
||||||
<cite class="not-italic font-bold text-white text-lg mb-1 block">
|
|
||||||
Coriss Ambady
|
|
||||||
</cite>
|
|
||||||
<span class="text-gray-400 text-sm tracking-widest font-semibold block uppercase">
|
|
||||||
Financial Analyst
|
|
||||||
</span>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<div class="mt-8 flex justify-center md:justify-start">
|
|
||||||
<button
|
|
||||||
class="border border-white py-2 px-6 bg-home-foreground rounded-full hover:bg-white hover:text-black transition-colors duration-300 font-medium">
|
|
||||||
Gabung Member Sekarang
|
|
||||||
</button>
|
</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="flex items-center gap-4 text-sm text-home-background/40">
|
||||||
|
<div class="flex -space-x-2">
|
||||||
|
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://placehold.co/100x100/png"
|
||||||
|
alt="User">
|
||||||
|
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://placehold.co/100x100/png"
|
||||||
|
alt="User">
|
||||||
|
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://placehold.co/100x100/png"
|
||||||
|
alt="User">
|
||||||
|
</div>
|
||||||
|
<p>Bergabung bersama <span class="text-home-background font-bold">2,000+</span> member lainnya.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="relative hidden lg:block">
|
||||||
|
<div
|
||||||
|
class="w-full h-full min-h-[300px] bg-gradient-to-tr from-home-secondary/30 to-home-primary/10 rounded-full blur-3xl absolute inset-0">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="relative bg-home-foreground text-white rounded-2xl p-8 transform rotate-3 hover:rotate-0 transition-transform duration-500 shadow-2xl">
|
||||||
|
<div class="flex items-center justify-between mb-8">
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<div class="w-10 h-10 bg-home-primary rounded-full flex items-center justify-center">
|
||||||
|
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M5 3v4M3 5h4M6 17v4m-2-2h4m5-16l2.286 6.857L21 12l-5.714 2.143L13 21l-2.286-6.857L5 12l5.714-2.143L13 3z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3 class="font-bold text-white">Member Card</h3>
|
||||||
|
<p class="text-xs text-gray-400">Exclusive Access</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<img src="{{ asset('assets/images/logo.png') }}" alt="Logo"
|
||||||
|
class="w-8 h-8 opacity-80 brightness-0 invert">
|
||||||
|
</div>
|
||||||
|
<div class="space-y-3">
|
||||||
|
<div class="h-2 w-2/3 bg-white/10 rounded-full"></div>
|
||||||
|
<div class="h-2 w-1/2 bg-white/10 rounded-full"></div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-8 flex justify-between items-end">
|
||||||
|
<div class="text-xs text-gray-400">Valid thru<br><span class="text-white font-mono">12/28</span>
|
||||||
|
</div>
|
||||||
|
<div class="text-2xl font-bold text-white tracking-widest">•••• 8892</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="absolute top-0 right-0 w-32 h-32 bg-white/5 rounded-full blur-2xl pointer-events-none">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,51 +1,49 @@
|
|||||||
<section
|
<section
|
||||||
class="relative w-full lg:w-[35%] mt-24 lg:mt-0 p-6 lg:p-10 flex flex-col justify-center text-lg space-y-6 z-20 bg-white lg:bg-transparent">
|
class="relative w-full lg:w-[35%] pt-24 lg:pt-0 py-0 px-6 lg:p-10 flex flex-col justify-center text-lg space-y-6 z-20 bg-white">
|
||||||
|
|
||||||
<header class="flex flex-wrap items-center gap-4">
|
<header class="flex flex-wrap items-center gap-4">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<figure
|
<figure class="border-2 border-home-background w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
||||||
class="border-2 border-home-background w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
|
||||||
<img src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?auto=format&fit=crop&q=80&w=100"
|
||||||
alt="User 1" class="w-full h-full object-cover">
|
alt="User 1" class="w-full h-full object-cover">
|
||||||
</figure>
|
</figure>
|
||||||
<figure
|
<figure class="border-2 border-home-background -ms-2 w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
||||||
class="border-2 border-home-background -ms-2 w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
|
||||||
<img src="https://images.unsplash.com/photo-1586297135537-94bc9ba060aa?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1586297135537-94bc9ba060aa?auto=format&fit=crop&q=80&w=100"
|
||||||
alt="User 2" class="w-full h-full object-cover">
|
alt="User 2" class="w-full h-full object-cover">
|
||||||
</figure>
|
</figure>
|
||||||
<figure
|
<figure class="border-2 border-home-background -ms-2 w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
||||||
class="border-2 border-home-background -ms-2 w-8 h-8 lg:w-10 lg:h-10 rounded-full overflow-hidden shadow-sm">
|
|
||||||
<img src="https://images.unsplash.com/photo-1633332755192-727a05c4013d?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1633332755192-727a05c4013d?auto=format&fit=crop&q=80&w=100"
|
||||||
alt="User 3" class="w-full h-full object-cover">
|
alt="User 3" class="w-full h-full object-cover">
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="border border-black py-1 px-3 rounded-full text-sm lg:text-lg">
|
<div
|
||||||
Plus <span class="px-2 py-1 bg-black text-home-background rounded-full">25K</span> Trusted users!
|
class="border border-home-primary/30 py-1 px-3 rounded-full text-sm lg:text-lg text-home-primary">
|
||||||
|
Plus <span class="text-home-primary font-bold">25K</span> Trusted users!
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<h1 class="text-black text-4xl lg:text-6xl leading-tight text-start font-bold">
|
<h1 class="text-home-foreground text-4xl lg:text-6xl leading-tight text-start font-bold">
|
||||||
Discover your best<br><span class="italic font-serif font-light">perfume</span> at today
|
Discover your best<br><span class="italic font-serif font-light text-home-primary">perfume</span> at today
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p class="text-lg w-[90%] lg:w-full lg:text-lg text-gray-700">
|
<p class="text-lg w-[90%] lg:w-full lg:text-lg text-home-foreground/80">
|
||||||
Selecting a perfume is a personal journey. Consider your lifestyle, favorite scents, and the impression you want
|
Selecting a perfume is a personal journey. Consider your lifestyle, favorite scents, and the impression you want
|
||||||
to make.
|
to make.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<button
|
<button
|
||||||
class="bg-black text-home-background py-3 px-6 rounded-full hover:opacity-90 transition-opacity font-medium">
|
class="bg-home-primary text-home-background py-3 px-6 rounded-full hover:shadow-lg hover:shadow-home-primary/30 transition-all font-medium">
|
||||||
Explore Shop
|
Explore Shop
|
||||||
</button>
|
</button>
|
||||||
<span class="w-8 h-[2px] bg-black"></span>
|
<span class="w-8 h-[2px] bg-home-primary/20"></span>
|
||||||
<button
|
<button
|
||||||
class="flex items-center justify-center w-12 h-12 border border-gray-300 rounded-full hover:bg-gray-50 transition-colors group">
|
class="flex items-center justify-center w-12 h-12 border border-home-primary rounded-full hover:bg-home-background transition-colors group bg-transparent">
|
||||||
<div
|
<div
|
||||||
class="w-8 h-8 bg-black flex justify-center items-center rounded-full group-hover:scale-110 transition-transform">
|
class="w-8 h-8 bg-home-primary flex justify-center items-center rounded-full group-hover:scale-110 transition-transform">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
stroke="currentColor" class="size-4 text-white">
|
stroke="currentColor" class="size-4 text-home-background">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
@ -53,67 +51,67 @@ class="w-8 h-8 bg-black flex justify-center items-center rounded-full group-hove
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="relative w-full mt-10 h-[300px] lg:h-[250px] lg:w-[800px] lg:absolute lg:bottom-2 lg:left-10 lg:mt-0 bg-white lg:bg-white/40 backdrop-blur-xl border border-home-foreground/5 rounded-2xl z-30 shadow-lg lg:shadow-none overflow-hidden">
|
class="relative w-full mt-10 h-[300px] lg:h-[250px] lg:w-[800px] lg:absolute lg:bottom-2 lg:left-10 lg:mt-0 bg-home-background/40 backdrop-blur-md border border-home-secondary rounded-2xl z-30 shadow-sm overflow-hidden">
|
||||||
|
|
||||||
<div id="testimonial-track" class="relative w-full h-full p-6">
|
<div id="testimonial-track" class="relative w-full h-full py-0 px-6">
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="testimonial-slide absolute inset-0 p-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-100 z-10 translate-x-0 bg-white lg:bg-transparent">
|
class="testimonial-slide absolute inset-0 py-0 px-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-100 z-10 translate-x-0">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<img src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&q=80&w=100"
|
||||||
class="w-12 h-12 rounded-full object-cover shadow-sm">
|
class="w-12 h-12 rounded-full object-cover ring-2 ring-home-background">
|
||||||
<div>
|
<div>
|
||||||
<h4 class="font-bold text-black text-sm lg:text-base">Sarah Jenkins</h4>
|
<h4 class="font-bold text-home-foreground text-sm lg:text-base">Sarah Jenkins</h4>
|
||||||
<div class="flex text-yellow-500 text-xs">★★★★★</div>
|
<div class="flex text-home-primary text-xs">★★★★★</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-800 text-base lg:text-lg italic leading-relaxed">"Aroma yang sangat elegan dan tahan
|
<p class="text-home-neutral text-base lg:text-lg italic leading-relaxed">"Aroma yang sangat elegan dan
|
||||||
lama. Saya sangat menyukainya untuk dipakai sehari-hari ke kantor."</p>
|
tahan lama. Saya sangat menyukainya untuk dipakai sehari-hari ke kantor."</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="testimonial-slide absolute inset-0 p-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-0 z-0 translate-x-full bg-white lg:bg-transparent">
|
class="testimonial-slide absolute inset-0 py-0 px-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-0 z-0 translate-x-full">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&q=80&w=100"
|
||||||
class="w-12 h-12 rounded-full object-cover shadow-sm">
|
class="w-12 h-12 rounded-full object-cover ring-2 ring-home-background">
|
||||||
<div>
|
<div>
|
||||||
<h4 class="font-bold text-black text-sm lg:text-base">Michael Chen</h4>
|
<h4 class="font-bold text-home-foreground text-sm lg:text-base">Michael Chen</h4>
|
||||||
<div class="flex text-yellow-500 text-xs">★★★★★</div>
|
<div class="flex text-home-primary text-xs">★★★★★</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-800 text-base lg:text-lg italic leading-relaxed">"Pengiriman sangat cepat dan
|
<p class="text-home-neutral text-base lg:text-lg italic leading-relaxed">"Pengiriman sangat cepat dan
|
||||||
packaging aman. Wanginya persis seperti deskripsi di website."</p>
|
packaging aman. Wanginya persis seperti deskripsi di website."</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="testimonial-slide absolute inset-0 p-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-0 z-0 translate-x-full bg-white lg:bg-transparent">
|
class="testimonial-slide absolute inset-0 py-0 px-6 flex flex-col justify-center transition-all duration-500 ease-in-out opacity-0 z-0 translate-x-full">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<img src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&q=80&w=100"
|
<img src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&q=80&w=100"
|
||||||
class="w-12 h-12 rounded-full object-cover shadow-sm">
|
class="w-12 h-12 rounded-full object-cover ring-2 ring-home-background">
|
||||||
<div>
|
<div>
|
||||||
<h4 class="font-bold text-black text-sm lg:text-base">Jessica Tan</h4>
|
<h4 class="font-bold text-home-foreground text-sm lg:text-base">Jessica Tan</h4>
|
||||||
<div class="flex text-yellow-500 text-xs">★★★★★</div>
|
<div class="flex text-home-primary text-xs">★★★★★</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-800 text-base lg:text-lg italic leading-relaxed">"Varian Product Two adalah favorit
|
<p class="text-home-neutral text-base lg:text-lg italic leading-relaxed">"Varian Product Two adalah
|
||||||
saya! Sangat fresh dan tidak menyengat. Recommended!"</p>
|
favorit saya! Sangat fresh dan tidak menyengat. Recommended!"</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="absolute bottom-4 right-4 flex items-center gap-2 z-30">
|
<div class="absolute bottom-4 right-4 flex items-center gap-2 z-30">
|
||||||
<button id="prev-testi"
|
<button id="prev-testi"
|
||||||
class="w-10 h-10 rounded-full bg-white border border-gray-100 shadow-md hover:bg-gray-50 flex justify-center items-center transition-colors group">
|
class="w-10 h-10 rounded-full bg-home-background/80 backdrop-blur border border-home-background shadow-sm hover:bg-home-background flex justify-center items-center transition-colors group">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
class="w-4 h-4 text-black group-hover:scale-110 transition-transform" fill="none"
|
class="w-4 h-4 text-home-primary group-hover:scale-110 transition-transform" fill="none"
|
||||||
viewBox="0 0 24 24" stroke="currentColor">
|
viewBox="0 0 24 24" stroke="currentColor">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
<button id="next-testi"
|
<button id="next-testi"
|
||||||
class="w-10 h-10 rounded-full bg-black shadow-md hover:bg-gray-800 flex justify-center items-center transition-colors group">
|
class="w-10 h-10 rounded-full bg-home-primary shadow-md hover:bg-home-primary/80 flex justify-center items-center transition-colors group">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
class="w-4 h-4 text-white group-hover:scale-110 transition-transform" fill="none"
|
class="w-4 h-4 text-home-background group-hover:scale-110 transition-transform" fill="none"
|
||||||
viewBox="0 0 24 24" stroke="currentColor">
|
viewBox="0 0 24 24" stroke="currentColor">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
@ -2,14 +2,14 @@
|
|||||||
class="relative w-full lg:w-[65%] min-h-[600px] lg:min-h-screen flex flex-col lg:flex-row justify-end items-end pb-8 pr-0 lg:pr-10 z-10">
|
class="relative w-full lg:w-[65%] min-h-[600px] lg:min-h-screen flex flex-col lg:flex-row justify-end items-end pb-8 pr-0 lg:pr-10 z-10">
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="absolute inset-0 bg-[url('https://images.unsplash.com/photo-1595425959632-34f2822322ce?q=80&w=1098&auto=format&fit=crop')] bg-cover bg-center bg-no-repeat">
|
class="absolute inset-0 bg-[url('https://images.unsplash.com/photo-1591925463023-1ca6b0636780?q=80&w=1632&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D')] bg-cover bg-center bg-no-repeat">
|
||||||
<div class="absolute inset-0 bg-gradient-to-t from-white/90 via-white/50 to-transparent lg:hidden"></div>
|
<div class="absolute inset-0 bg-gradient-to-t from-home-background/90 via-home-background/50 to-transparent lg:hidden"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="relative w-full px-6 lg:px-0 lg:w-[80%] grid grid-cols-1 lg:grid-cols-2 gap-6 mb-24 lg:mb-0">
|
<div class="relative w-full px-6 lg:px-0 lg:w-[80%] grid grid-cols-1 lg:grid-cols-2 gap-6 mb-24 lg:mb-0">
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white/90 backdrop-blur-md rounded-2xl shadow-lg hover:shadow-xl transition-shadow flex flex-row items-center p-4 h-auto lg:h-[250px] group">
|
class="bg-home-background backdrop-blur-md rounded-2xl shadow-lg hover:shadow-xl transition-shadow flex flex-row items-center p-4 h-auto lg:h-[250px] group">
|
||||||
|
|
||||||
<figure class="w-[40%] lg:w-auto h-32 lg:h-full overflow-hidden rounded-xl bg-gray-100">
|
<figure class="w-[40%] lg:w-auto h-32 lg:h-full overflow-hidden rounded-xl bg-gray-100">
|
||||||
<img src="https://images.unsplash.com/photo-1693960794377-b388be4227c2?q=80&w=880&auto=format&fit=crop"
|
<img src="https://images.unsplash.com/photo-1693960794377-b388be4227c2?q=80&w=880&auto=format&fit=crop"
|
||||||
@ -25,13 +25,13 @@ class="w-full h-full object-cover group-hover:scale-105 transition-transform dur
|
|||||||
|
|
||||||
<div class="flex items-center gap-2 mt-auto">
|
<div class="flex items-center gap-2 mt-auto">
|
||||||
<button
|
<button
|
||||||
class="flex-1 justify-center items-center border border-gray-200 py-2 px-3 bg-white rounded-full text-xs lg:text-sm font-medium hover:bg-black hover:text-white transition-colors">
|
class="flex-1 justify-center items-center border border-gray-200 py-2 px-3 bg-home-primary rounded-full text-xs lg:text-sm font-medium hover:bg-black hover:text-home-background transition-colors text-home-background">
|
||||||
Shop Now
|
Shop Now
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="w-8 h-8 lg:w-10 lg:h-10 bg-black flex justify-center items-center rounded-full hover:bg-gray-800 transition-colors">
|
class="w-8 h-8 lg:w-10 lg:h-10 bg-home-primary flex justify-center items-center rounded-full hover:bg-gray-800 transition-colors">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
stroke="currentColor" class="size-4 lg:size-5 text-white">
|
stroke="currentColor" class="size-4 lg:size-5 text-home-background">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
||||||
</svg>
|
</svg>
|
||||||
@ -41,7 +41,7 @@ class="w-8 h-8 lg:w-10 lg:h-10 bg-black flex justify-center items-center rounded
|
|||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white/90 backdrop-blur-md rounded-2xl shadow-lg hover:shadow-xl transition-shadow flex flex-row items-center p-4 h-auto lg:h-[250px] group">
|
class="bg-home-background backdrop-blur-md rounded-2xl shadow-lg hover:shadow-xl transition-shadow flex flex-row items-center p-4 h-auto lg:h-[250px] group">
|
||||||
|
|
||||||
<figure class="w-[40%] lg:w-auto h-32 lg:h-full overflow-hidden rounded-xl bg-gray-100">
|
<figure class="w-[40%] lg:w-auto h-32 lg:h-full overflow-hidden rounded-xl bg-gray-100">
|
||||||
<img src="https://images.unsplash.com/photo-1693960794377-b388be4227c2?q=80&w=880&auto=format&fit=crop"
|
<img src="https://images.unsplash.com/photo-1693960794377-b388be4227c2?q=80&w=880&auto=format&fit=crop"
|
||||||
@ -57,13 +57,13 @@ class="w-full h-full object-cover group-hover:scale-105 transition-transform dur
|
|||||||
|
|
||||||
<div class="flex items-center gap-2 mt-auto">
|
<div class="flex items-center gap-2 mt-auto">
|
||||||
<button
|
<button
|
||||||
class="flex-1 justify-center items-center border border-gray-200 py-2 px-3 bg-white rounded-full text-xs lg:text-sm font-medium hover:bg-black hover:text-white transition-colors">
|
class="flex-1 justify-center items-center border border-gray-200 py-2 px-3 bg-home-primary rounded-full text-xs lg:text-sm font-medium hover:bg-black hover:text-home-background transition-colors text-home-background">
|
||||||
Shop Now
|
Shop Now
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="w-8 h-8 lg:w-10 lg:h-10 bg-black flex justify-center items-center rounded-full hover:bg-gray-800 transition-colors">
|
class="w-8 h-8 lg:w-10 lg:h-10 bg-home-primary flex justify-center items-center rounded-full hover:bg-gray-800 transition-colors">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
stroke="currentColor" class="size-4 lg:size-5 text-white">
|
stroke="currentColor" class="size-4 lg:size-5 text-home-background">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<section class="overflow-hidden relative pt-4" id="brand-slider" aria-label="Brand Slider">
|
<section class="overflow-hidden relative pt-4 bg-home-foreground" id="brand-slider" aria-label="Brand Slider">
|
||||||
<div class="flex gap-6 items-center whitespace-nowrap will-change-transform" id="brand-track">
|
<div class="flex gap-6 items-center whitespace-nowrap will-change-transform cursor-grab active:cursor-grabbing"
|
||||||
|
id="brand-track" style="touch-action: pan-y;">
|
||||||
<img src="https://images.seeklogo.com/logo-png/44/2/next-js-logo-png_seeklogo-449824.png" alt="Next.js"
|
<img src="https://images.seeklogo.com/logo-png/44/2/next-js-logo-png_seeklogo-449824.png" alt="Next.js"
|
||||||
class="w-32 h-32 object-contain rounded-xl flex-shrink-0">
|
class="w-32 h-32 object-contain rounded-xl flex-shrink-0">
|
||||||
<img src="https://logo.svgcdn.com/devicon/laravel-original-wordmark.png" alt="Laravel"
|
<img src="https://logo.svgcdn.com/devicon/laravel-original-wordmark.png" alt="Laravel"
|
||||||
|
|||||||
@ -1,75 +1,100 @@
|
|||||||
<section class="bg-white py-12 md:py-20 lg:py-24 px-4 md:px-8 lg:px-48">
|
<section class="bg-white py-16 lg:py-24 px-4 md:px-8 lg:px-24 xl:px-32 overflow-hidden">
|
||||||
<div class="space-y-8 md:space-y-12 lg:space-y-16">
|
<div class="max-w-7xl mx-auto">
|
||||||
<header class="space-y-4 md:space-y-6">
|
|
||||||
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-black leading-tight">
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-20 items-center mb-20">
|
||||||
|
<div class="order-2 lg:order-1 space-y-6">
|
||||||
|
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-gray-900 leading-tight">
|
||||||
Temukan Parfum Favorit dengan Kualitas Terbaik
|
Temukan Parfum Favorit dengan Kualitas Terbaik
|
||||||
</h2>
|
</h2>
|
||||||
<p class="text-base md:text-lg text-gray-700 leading-relaxed max-w-3xl">
|
<p class="text-base md:text-lg text-gray-600 leading-relaxed">
|
||||||
Kami menghadirkan parfum original berkualitas tinggi langsung dari distributor resmi. Setiap aroma
|
Kami menghadirkan parfum original berkualitas tinggi langsung dari distributor resmi. Setiap aroma
|
||||||
dirancang untuk bertahan lama, memberikan pengalaman wangi yang istimewa, dan memastikan setiap tetesnya
|
dirancang untuk bertahan lama, memberikan pengalaman wangi yang istimewa, dan memastikan setiap
|
||||||
asli dan terpercaya.
|
tetesnya asli dan terpercaya.
|
||||||
</p>
|
</p>
|
||||||
</header>
|
<div class="pt-4">
|
||||||
|
<button
|
||||||
|
class="text-home-primary font-bold hover:opacity-80 transition-opacity flex items-center gap-2">
|
||||||
|
Pelajari Selengkapnya
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M17 8l4 4m0 0l-4 4m4-4H3"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<img src="https://plus.unsplash.com/premium_photo-1723579353390-f4dd36758856?q=80&w=1469&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
<div class="order-1 lg:order-2 relative">
|
||||||
alt="Parfum berkualitas" class="rounded-2xl w-full h-64 md:h-96 lg:h-[550px] object-cover">
|
<div class="absolute -inset-4 bg-home-primary/5 rounded-3xl -z-10 transform rotate-2"></div>
|
||||||
|
<img src="https://plus.unsplash.com/premium_photo-1723579353390-f4dd36758856?q=80&w=1469&auto=format&fit=crop"
|
||||||
|
alt="Koleksi Parfum Eksklusif"
|
||||||
|
class="rounded-2xl w-full h-[400px] lg:h-[500px] object-cover shadow-xl">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 md:gap-6">
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl p-6 md:p-8 shadow-md hover:shadow-lg transition-shadow duration-300 border border-gray-100">
|
class="bg-white rounded-2xl p-8 shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300 border border-gray-100 group">
|
||||||
<div class="mb-4 md:mb-6">
|
<div
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-amber-600" fill="none"
|
class="mb-6 w-14 h-14 rounded-full bg-home-primary/5 flex items-center justify-center group-hover:bg-home-primary transition-colors duration-300">
|
||||||
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="h-7 w-7 text-home-primary group-hover:text-white transition-colors duration-300"
|
||||||
|
fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-black mb-2 md:mb-3">Keaslian 100%</h3>
|
<h3 class="text-xl font-bold text-gray-900 mb-3">Keaslian 100%</h3>
|
||||||
<p class="text-sm md:text-base text-gray-600 leading-relaxed">
|
<p class="text-sm text-gray-600 leading-relaxed">
|
||||||
Setiap botol dijamin original dari distributor resmi untuk kualitas dan aroma yang murni.
|
Setiap botol dijamin original dari distributor resmi untuk kualitas dan aroma yang murni.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl p-6 md:p-8 shadow-md hover:shadow-lg transition-shadow duration-300 border border-gray-100">
|
class="bg-white rounded-2xl p-8 shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300 border border-gray-100 group">
|
||||||
<div class="mb-4 md:mb-6">
|
<div
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-amber-600" fill="none"
|
class="mb-6 w-14 h-14 rounded-full bg-home-primary/5 flex items-center justify-center group-hover:bg-home-primary transition-colors duration-300">
|
||||||
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="h-7 w-7 text-home-primary group-hover:text-white transition-colors duration-300"
|
||||||
|
fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M13 10V3L4 14h7v7l9-11h-7z" />
|
<path stroke-linecap="round" stroke-linejoin="round" d="M13 10V3L4 14h7v7l9-11h-7z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-black mb-2 md:mb-3">Pengiriman Cepat</h3>
|
<h3 class="text-xl font-bold text-gray-900 mb-3">Pengiriman Cepat</h3>
|
||||||
<p class="text-sm md:text-base text-gray-600 leading-relaxed">
|
<p class="text-sm text-gray-600 leading-relaxed">
|
||||||
Pesananmu diproses dan dikirim di hari yang sama untuk sampai lebih cepat dan aman.
|
Pesananmu diproses dan dikirim di hari yang sama untuk sampai lebih cepat dan aman.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl p-6 md:p-8 shadow-md hover:shadow-lg transition-shadow duration-300 border border-gray-100">
|
class="bg-white rounded-2xl p-8 shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300 border border-gray-100 group">
|
||||||
<div class="mb-4 md:mb-6">
|
<div
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-amber-600" fill="none"
|
class="mb-6 w-14 h-14 rounded-full bg-home-primary/5 flex items-center justify-center group-hover:bg-home-primary transition-colors duration-300">
|
||||||
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="h-7 w-7 text-home-primary group-hover:text-white transition-colors duration-300"
|
||||||
|
fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3-.895 3-2-1.343-2-3-2zm0 4c-2.485 0-4.5 1.567-4.5 3.5V18h9v-2.5c0-1.933-2.015-3.5-4.5-3.5z" />
|
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3-.895 3-2-1.343-2-3-2zm0 4c-2.485 0-4.5 1.567-4.5 3.5V18h9v-2.5c0-1.933-2.015-3.5-4.5-3.5z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-black mb-2 md:mb-3">Harga Bersahabat</h3>
|
<h3 class="text-xl font-bold text-gray-900 mb-3">Harga Bersahabat</h3>
|
||||||
<p class="text-sm md:text-base text-gray-600 leading-relaxed">
|
<p class="text-sm text-gray-600 leading-relaxed">
|
||||||
Nikmati parfum favorit dengan harga kompetitif tanpa mengurangi kualitas premium.
|
Nikmati parfum favorit dengan harga kompetitif tanpa mengurangi kualitas premium.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article
|
<article
|
||||||
class="bg-white rounded-2xl p-6 md:p-8 shadow-md hover:shadow-lg transition-shadow duration-300 border border-gray-100">
|
class="bg-white rounded-2xl p-8 shadow-sm hover:shadow-xl hover:-translate-y-1 transition-all duration-300 border border-gray-100 group">
|
||||||
<div class="mb-4 md:mb-6">
|
<div
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-amber-600" fill="none"
|
class="mb-6 w-14 h-14 rounded-full bg-home-primary/5 flex items-center justify-center group-hover:bg-home-primary transition-colors duration-300">
|
||||||
viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="h-7 w-7 text-home-primary group-hover:text-white transition-colors duration-300"
|
||||||
|
fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
d="M18.364 5.636l-3.536 3.536m0 5.656l3.536 3.536M9.172 9.172L5.636 5.636m3.536 9.192l-3.536 3.536M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-5 0a4 4 0 11-8 0 4 4 0 018 0z" />
|
d="M18.364 5.636l-3.536 3.536m0 5.656l3.536 3.536M9.172 9.172L5.636 5.636m3.536 9.192l-3.536 3.536M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-5 0a4 4 0 11-8 0 4 4 0 018 0z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-black mb-2 md:mb-3">Layanan Terbaik</h3>
|
<h3 class="text-xl font-bold text-gray-900 mb-3">Layanan Terbaik</h3>
|
||||||
<p class="text-sm md:text-base text-gray-600 leading-relaxed">
|
<p class="text-sm text-gray-600 leading-relaxed">
|
||||||
Tim customer service kami siap membantu 24/7 untuk pengalaman belanja yang sempurna.
|
Tim customer service kami siap membantu 24/7 untuk pengalaman belanja yang sempurna.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
</article>
|
||||||
|
|||||||
@ -1,353 +1,352 @@
|
|||||||
<div>
|
@php
|
||||||
<main class="px-8 py-12 mt-24 bg-white min-h-screen">
|
$products = [
|
||||||
<div class="grid grid-cols-1 md:grid-cols-12 gap-6">
|
[
|
||||||
|
'name' => 'Oud Royal Premium',
|
||||||
|
'category' => 'Luxury',
|
||||||
|
'price' => 1200000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Oud+Royal',
|
||||||
|
'rating' => 5.0,
|
||||||
|
'reviews' => 120,
|
||||||
|
'is_new' => true,
|
||||||
|
'colors' => ['#78350f', '#1f2937'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Rose Velvet',
|
||||||
|
'category' => 'Floral',
|
||||||
|
'price' => 450000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Rose+Velvet',
|
||||||
|
'rating' => 4.8,
|
||||||
|
'reviews' => 85,
|
||||||
|
'is_new' => false,
|
||||||
|
'colors' => ['#be123c', '#fce7f3'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Ocean Breeze',
|
||||||
|
'category' => 'Fresh',
|
||||||
|
'price' => 320000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Ocean+Breeze',
|
||||||
|
'rating' => 4.9,
|
||||||
|
'reviews' => 200,
|
||||||
|
'is_new' => false,
|
||||||
|
'colors' => ['#0ea5e9', '#e0f2fe'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Vanilla Sky',
|
||||||
|
'category' => 'Sweet',
|
||||||
|
'price' => 350000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Vanilla+Sky',
|
||||||
|
'rating' => 4.7,
|
||||||
|
'reviews' => 150,
|
||||||
|
'is_new' => true,
|
||||||
|
'colors' => ['#d4d4d8', '#71717a'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Midnight Musk',
|
||||||
|
'category' => 'Musky',
|
||||||
|
'price' => 550000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Midnight+Musk',
|
||||||
|
'rating' => 4.6,
|
||||||
|
'reviews' => 90,
|
||||||
|
'is_new' => false,
|
||||||
|
'colors' => ['#1f2937', '#000000'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Citrus Energy',
|
||||||
|
'category' => 'Fresh',
|
||||||
|
'price' => 280000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Citrus+Energy',
|
||||||
|
'rating' => 4.5,
|
||||||
|
'reviews' => 60,
|
||||||
|
'is_new' => false,
|
||||||
|
'colors' => ['#eab308', '#fef08a'],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
<aside class="md:col-span-3">
|
$recommendations = [
|
||||||
<div
|
[
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 p-6 shadow-sm hover:shadow-md transition-shadow sticky top-24">
|
'name' => 'Golden Amber',
|
||||||
<h2 class="text-lg font-bold text-home-foreground mb-5">Kategori</h2>
|
'category' => 'Oriental',
|
||||||
|
'price' => 890000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Golden+Amber',
|
||||||
|
'rating' => 4.9,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Spring Blossom',
|
||||||
|
'category' => 'Floral',
|
||||||
|
'price' => 380000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Spring+Blossom',
|
||||||
|
'rating' => 4.7,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Woody Intense',
|
||||||
|
'category' => 'Woody',
|
||||||
|
'price' => 650000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Woody+Intense',
|
||||||
|
'rating' => 4.8,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Aqua Marine',
|
||||||
|
'category' => 'Fresh',
|
||||||
|
'price' => 420000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Aqua+Marine',
|
||||||
|
'rating' => 4.6,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Spicy Leather',
|
||||||
|
'category' => 'Leather',
|
||||||
|
'price' => 750000,
|
||||||
|
'image' => 'https://placehold.co/400x500/png?text=Spicy+Leather',
|
||||||
|
'rating' => 4.9,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
@endphp
|
||||||
|
|
||||||
<form>
|
<div class="flex flex-col min-h-screen bg-white font-sans">
|
||||||
<fieldset class="space-y-3">
|
|
||||||
<legend class="sr-only">Pilih Kategori</legend>
|
<main class="flex-grow px-6 lg:px-32 xl:px-48 pb-24 pt-36">
|
||||||
@foreach (['Pria', 'Wanita', 'Unisex', 'Aromatherapy', 'Luxury'] as $kategori)
|
<header class="mb-12">
|
||||||
|
<h1 class="text-3xl md:text-4xl font-bold text-home-primary mb-3">Koleksi Parfum</h1>
|
||||||
|
<p class="text-home-foreground/60 text-lg max-w-2xl">Temukan aroma khas yang mencerminkan kepribadian dan
|
||||||
|
gaya Anda.</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 lg:grid-cols-4 gap-12 mb-24">
|
||||||
|
|
||||||
|
<aside class="hidden lg:block lg:col-span-1 space-y-8">
|
||||||
|
<div class="bg-white rounded-2xl border border-home-foreground/10 p-6 shadow-sm sticky top-32">
|
||||||
|
<h3 class="font-bold text-home-primary mb-6 border-b border-home-foreground/10 pb-4">Kategori</h3>
|
||||||
|
<div class="space-y-4">
|
||||||
|
@foreach (['Pria', 'Wanita', 'Unisex', 'Luxury', 'Best Seller', 'New Arrival'] as $cat)
|
||||||
<label class="flex items-center cursor-pointer group">
|
<label class="flex items-center cursor-pointer group">
|
||||||
<input type="checkbox"
|
<input type="checkbox"
|
||||||
class="w-5 h-5 rounded border-gray-300 text-home-foreground cursor-pointer"
|
class="w-5 h-5 rounded border-home-foreground/20 text-home-primary focus:ring-home-primary cursor-pointer accent-home-primary">
|
||||||
value="{{ $kategori }}">
|
|
||||||
<span
|
<span
|
||||||
class="ml-3 text-home-foreground group-hover:opacity-70 transition-opacity">{{ $kategori }}</span>
|
class="ml-3 text-home-foreground/70 group-hover:text-home-primary transition-colors text-sm font-medium">{{ $cat }}</span>
|
||||||
</label>
|
</label>
|
||||||
@endforeach
|
@endforeach
|
||||||
</fieldset>
|
</div>
|
||||||
|
|
||||||
<div class="border-t border-home-foreground/10 my-5"></div>
|
<div class="border-t border-home-foreground/10 my-8"></div>
|
||||||
|
|
||||||
<h3 class="text-sm font-semibold text-home-foreground mb-3">Rentang Harga</h3>
|
<h3 class="font-bold text-home-primary mb-6 border-b border-home-foreground/10 pb-4">Harga</h3>
|
||||||
<fieldset class="space-y-3">
|
<div class="space-y-4">
|
||||||
<legend class="sr-only">Pilih Rentang Harga</legend>
|
@foreach (['< 100k', '100k - 500k', '500k - 1jt', '> 1jt'] as $price)
|
||||||
<label class="flex items-center cursor-pointer">
|
<label class="flex items-center cursor-pointer group">
|
||||||
<input type="radio" name="price" class="w-4 h-4 cursor-pointer text-home-foreground"
|
<input type="radio" name="price"
|
||||||
value="all" checked>
|
class="w-5 h-5 border-home-foreground/20 text-home-primary focus:ring-home-primary cursor-pointer accent-home-primary">
|
||||||
<span class="ml-2 text-sm text-home-foreground">Semua Harga</span>
|
<span
|
||||||
|
class="ml-3 text-home-foreground/70 group-hover:text-home-primary transition-colors text-sm font-medium">{{ $price }}</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="flex items-center cursor-pointer">
|
@endforeach
|
||||||
<input type="radio" name="price" class="w-4 h-4 cursor-pointer text-home-foreground"
|
</div>
|
||||||
value="under-100k">
|
|
||||||
<span class="ml-2 text-sm text-home-foreground">Di bawah Rp100.000</span>
|
|
||||||
</label>
|
|
||||||
<label class="flex items-center cursor-pointer">
|
|
||||||
<input type="radio" name="price" class="w-4 h-4 cursor-pointer text-home-foreground"
|
|
||||||
value="100k-500k">
|
|
||||||
<span class="ml-2 text-sm text-home-foreground">Rp100.000 - Rp500.000</span>
|
|
||||||
</label>
|
|
||||||
<label class="flex items-center cursor-pointer">
|
|
||||||
<input type="radio" name="price" class="w-4 h-4 cursor-pointer text-home-foreground"
|
|
||||||
value="above-500k">
|
|
||||||
<span class="ml-2 text-sm text-home-foreground">Di atas Rp500.000</span>
|
|
||||||
</label>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<section class="md:col-span-9">
|
<section class="lg:col-span-3">
|
||||||
<header class="flex flex-col sm:flex-row gap-4 mb-6">
|
|
||||||
<div class="flex-1">
|
<div class="flex flex-col sm:flex-row gap-4 mb-8">
|
||||||
<div class="relative">
|
<div class="flex-1 relative group">
|
||||||
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-foreground/50" fill="none"
|
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-primary/50 group-focus-within:text-home-primary transition-colors"
|
||||||
stroke="currentColor" viewBox="0 0 24 24">
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
<input type="search" placeholder="Cari parfum favorit..."
|
<input type="text" placeholder="Cari produk..."
|
||||||
class="w-full py-3 pl-11 pr-4 rounded-lg border border-home-foreground/10 text-home-foreground placeholder-home-foreground/50 focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition"
|
class="w-full pl-11 pr-4 py-3 rounded-xl border border-home-foreground/10 focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition shadow-sm placeholder-home-foreground/40 text-home-foreground bg-white">
|
||||||
aria-label="Cari produk">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="relative min-w-[200px]">
|
||||||
|
|
||||||
<select
|
<select
|
||||||
class="px-4 py-3 rounded-lg border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition cursor-pointer min-w-fit"
|
class="w-full appearance-none px-6 py-3 pr-10 rounded-xl border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition cursor-pointer shadow-sm">
|
||||||
aria-label="Urutkan produk">
|
<option>Urutkan: Terbaru</option>
|
||||||
<option value="">Urutkan</option>
|
<option>Harga Terendah</option>
|
||||||
<option value="latest">Terbaru</option>
|
<option>Harga Tertinggi</option>
|
||||||
<option value="popular">Terpopuler</option>
|
<option>Terpopuler</option>
|
||||||
<option value="price_low">Harga Terendah</option>
|
|
||||||
<option value="price_high">Harga Tertinggi</option>
|
|
||||||
<option value="best_rating">Rating Terbaik</option>
|
|
||||||
</select>
|
</select>
|
||||||
</header>
|
<svg class="absolute right-4 top-4 w-4 h-4 text-home-foreground/50 pointer-events-none"
|
||||||
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<div class="bg-home-foreground/5 border border-home-foreground/10 rounded-lg p-4 mb-6" role="status">
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7">
|
||||||
<p class="text-sm text-home-foreground">Menampilkan <span class="font-semibold">12</span> dari <span
|
|
||||||
class="font-semibold">48</span> koleksi parfum</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@php
|
|
||||||
$mainProducts = [
|
|
||||||
[
|
|
||||||
'name' => 'Aqua Di Luna',
|
|
||||||
'description' => 'Fresh aquatic fragrance',
|
|
||||||
'price' => 249000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#10b981', '#3b82f6', '#1f2937'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Velvet Bloom',
|
|
||||||
'description' => 'Bunga merah jambu dengan musk',
|
|
||||||
'price' => 189000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#ec4899', '#f97316', '#6b7280'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Santal Noir',
|
|
||||||
'description' => 'Sandalwood oriental elegance',
|
|
||||||
'price' => 350000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#8b4513', '#1f2937', '#f5f5f5'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Citron Essence',
|
|
||||||
'description' => 'Lemon dan bergamot fresh',
|
|
||||||
'price' => 159000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#fbbf24', '#f59e0b', '#1f2937'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Rose Garden',
|
|
||||||
'description' => 'Mawar klasik modern',
|
|
||||||
'price' => 199000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#ef4444', '#ec4899', '#6b7280'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Lavender Dream',
|
|
||||||
'description' => 'Aromatherapy lavender murni',
|
|
||||||
'price' => 129000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#a78bfa', '#7c3aed', '#1f2937'],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-12">
|
|
||||||
@foreach ($mainProducts as $product)
|
|
||||||
<article
|
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden shadow-sm hover:shadow-md transition-shadow group">
|
|
||||||
<div class="relative h-80 bg-home-foreground/5 overflow-hidden">
|
|
||||||
<img src="{{ $product['image'] }}" alt="{{ $product['name'] }}"
|
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
|
|
||||||
loading="lazy">
|
|
||||||
<button
|
|
||||||
class="absolute top-4 left-4 bg-white rounded-full p-2.5 shadow-md hover:shadow-lg transition-shadow"
|
|
||||||
aria-label="Simpan ke favorit">
|
|
||||||
<svg class="w-5 h-5 text-home-foreground" fill="none" stroke="currentColor"
|
|
||||||
viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
||||||
d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2 9m10 0l2-9m0 0h3.6">
|
|
||||||
</path>
|
</path>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="p-5">
|
|
||||||
<div class="flex gap-2 mb-3">
|
|
||||||
@foreach ($product['colors'] as $color)
|
|
||||||
<button
|
|
||||||
class="w-5 h-5 rounded-full border-2 border-home-foreground/20 hover:border-home-foreground transition-all cursor-pointer"
|
|
||||||
style="background-color: {{ $color }}"
|
|
||||||
aria-label="Pilih warna"></button>
|
|
||||||
@endforeach
|
|
||||||
</div>
|
|
||||||
<h3 class="text-lg font-bold text-home-foreground mb-1">{{ $product['name'] }}</h3>
|
|
||||||
<p class="text-sm text-home-foreground/60 mb-4">{{ $product['description'] }}</p>
|
|
||||||
<div class="mb-4">
|
|
||||||
<span
|
|
||||||
class="text-xl font-bold text-home-foreground">Rp{{ number_format($product['price'], 0, ',', '.') }}</span>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="w-full bg-home-foreground text-white font-bold py-3 rounded-lg hover:opacity-90 transition-opacity">Add
|
|
||||||
to Cart</button>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
@endforeach
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav class="flex items-center justify-between bg-white rounded-2xl border border-home-foreground/10 p-6 shadow-sm"
|
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||||
aria-label="Pagination">
|
@foreach ($products as $item)
|
||||||
<div class="text-sm text-home-foreground">
|
<article
|
||||||
Halaman <span class="font-bold">1</span> dari <span class="font-bold">4</span>
|
class="group bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:shadow-home-primary/5 hover:border-home-primary/30 hover:-translate-y-1 transition-all duration-300 flex flex-col h-full relative">
|
||||||
</div>
|
|
||||||
<div class="flex items-center gap-2">
|
@if ($item['is_new'])
|
||||||
<button
|
<span
|
||||||
class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foreground/50 cursor-not-allowed"
|
class="absolute top-4 left-4 bg-home-primary text-white text-[10px] uppercase tracking-wider font-bold px-3 py-1 rounded-full z-10 shadow-md">New</span>
|
||||||
aria-label="Halaman sebelumnya" disabled>
|
|
||||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
|
||||||
<path fill-rule="evenodd"
|
|
||||||
d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"
|
|
||||||
clip-rule="evenodd"></path>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
@for ($page = 1; $page <= 4; $page++)
|
|
||||||
@if ($page == 1)
|
|
||||||
<button
|
|
||||||
class="px-4 py-2 rounded-lg bg-home-foreground text-white font-bold cursor-default"
|
|
||||||
aria-current="page">{{ $page }}</button>
|
|
||||||
@else
|
|
||||||
<button
|
|
||||||
class="px-4 py-2 rounded-lg border border-home-foreground/20 text-home-foreground hover:bg-home-foreground/5 transition-colors font-medium">{{ $page }}</button>
|
|
||||||
@endif
|
@endif
|
||||||
@endfor
|
|
||||||
|
<div class="relative h-72 overflow-hidden bg-home-primary/5">
|
||||||
|
<img src="{{ $item['image'] }}" alt="{{ $item['name'] }}"
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="absolute inset-0 bg-black/20 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center gap-3">
|
||||||
<button
|
<button
|
||||||
class="px-3 py-2 rounded-lg border border-home-foreground/20 text-home-foreground hover:bg-home-foreground/5 transition-colors"
|
class="w-10 h-10 bg-white rounded-full flex items-center justify-center text-home-foreground hover:bg-home-primary hover:text-white transition-all shadow-lg transform hover:scale-110"
|
||||||
aria-label="Halaman selanjutnya">
|
title="Lihat Detail">
|
||||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path fill-rule="evenodd"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
||||||
clip-rule="evenodd"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z">
|
||||||
|
</path>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section class="mt-12" aria-labelledby="related-products-heading">
|
|
||||||
<div class="flex items-center justify-between my-6">
|
|
||||||
<h2 id="related-products-heading" class="text-2xl font-bold text-home-foreground">Produk
|
|
||||||
Lainnya</h2>
|
|
||||||
<div class="flex items-center gap-3">
|
|
||||||
<button id="prevBtn"
|
|
||||||
class="bg-white border border-home-foreground/20 w-10 h-10 rounded-full flex items-center justify-center shadow hover:bg-gray-50 transition-colors z-10"
|
|
||||||
aria-label="Produk sebelumnya">‹</button>
|
|
||||||
<button id="nextBtn"
|
|
||||||
class="bg-white border border-home-foreground/20 w-10 h-10 rounded-full flex items-center justify-center shadow hover:bg-gray-50 transition-colors z-10"
|
|
||||||
aria-label="Produk selanjutnya">›</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="sliderTrack"
|
|
||||||
class="flex gap-6 overflow-x-auto scroll-smooth pb-4 snap-x snap-mandatory hide-scrollbar"
|
|
||||||
style="scrollbar-width: none; -ms-overflow-style: none;">
|
|
||||||
@php
|
|
||||||
$otherProducts = [
|
|
||||||
[
|
|
||||||
'name' => 'Oud Royal',
|
|
||||||
'description' => 'Oud premium luxury',
|
|
||||||
'price' => 1200000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#78350f', '#1f2937', '#d1d5db'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Coconut Paradise',
|
|
||||||
'description' => 'Tropical eksotis',
|
|
||||||
'price' => 169000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#f4a460', '#d2691e', '#8b4513'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Musk Addiction',
|
|
||||||
'description' => 'Musk manis tahan lama',
|
|
||||||
'price' => 149000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#d4a373', '#a0826d', '#5a4a42'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Woody Spice',
|
|
||||||
'description' => 'Kayu rempah maskulin',
|
|
||||||
'price' => 229000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#92400e', '#1f2937', '#c2410c'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Jasmine Nights',
|
|
||||||
'description' => 'Melati romantis malam',
|
|
||||||
'price' => 269000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#be123c', '#e11d48', '#6b7280'],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'Mint Fresh',
|
|
||||||
'description' => 'Mint herbal menenangkan',
|
|
||||||
'price' => 139000,
|
|
||||||
'image' => 'https://placehold.co/400x500/png',
|
|
||||||
'colors' => ['#10b981', '#059669', '#047857'],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
@endphp
|
|
||||||
|
|
||||||
@foreach ($otherProducts as $product)
|
|
||||||
<article
|
|
||||||
class="slider-item flex-none w-full sm:w-[calc(50%-12px)] lg:w-[calc(33.333%-16px)] snap-start bg-white rounded-2xl border border-home-foreground/10 overflow-hidden shadow-sm hover:shadow-md transition-shadow group">
|
|
||||||
<div class="relative h-80 bg-home-foreground/5 overflow-hidden">
|
|
||||||
<img src="{{ $product['image'] }}" alt="{{ $product['name'] }}"
|
|
||||||
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
|
|
||||||
loading="lazy">
|
|
||||||
<button
|
<button
|
||||||
class="absolute top-4 left-4 bg-white rounded-full p-2.5 shadow-md hover:shadow-lg transition-shadow"
|
class="w-10 h-10 bg-white rounded-full flex items-center justify-center text-home-foreground hover:bg-home-primary hover:text-white transition-all shadow-lg transform hover:scale-110"
|
||||||
aria-label="Simpan ke favorit">
|
title="Simpan ke Wishlist">
|
||||||
<svg class="w-5 h-5 text-home-foreground" fill="none"
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2 9m10 0l2-9m0 0h3.6">
|
d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z">
|
||||||
</path>
|
</path>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-5">
|
</div>
|
||||||
<div class="flex gap-2 mb-3">
|
|
||||||
@foreach ($product['colors'] as $color)
|
<div class="p-5 flex flex-col flex-grow">
|
||||||
|
<div class="flex justify-between items-start mb-2">
|
||||||
|
<span
|
||||||
|
class="text-[10px] font-bold tracking-widest text-home-primary uppercase bg-home-primary/10 px-2 py-1 rounded">{{ $item['category'] }}</span>
|
||||||
|
<div class="flex items-center gap-1">
|
||||||
|
<svg class="w-3 h-3 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
|
||||||
|
<path
|
||||||
|
d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
||||||
|
</svg>
|
||||||
|
<span
|
||||||
|
class="text-xs font-bold text-home-foreground">{{ $item['rating'] }}</span>
|
||||||
|
<span class="text-xs text-home-foreground/40">({{ $item['reviews'] }})</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
class="text-lg font-bold text-home-foreground group-hover:text-home-primary transition-colors mb-4 line-clamp-1">
|
||||||
|
{{ $item['name'] }}</h3>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="mt-auto pt-4 border-t border-home-foreground/5 flex items-center justify-between">
|
||||||
|
<span class="text-xl font-bold text-home-primary">Rp
|
||||||
|
{{ number_format($item['price'], 0, ',', '.') }}</span>
|
||||||
<button
|
<button
|
||||||
class="w-5 h-5 rounded-full border-2 border-home-foreground/20 hover:border-home-foreground transition-all cursor-pointer"
|
class="w-10 h-10 rounded-lg bg-home-foreground text-white flex items-center justify-center hover:bg-home-primary transition-colors shadow-md">
|
||||||
style="background-color: {{ $color }}"
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
aria-label="Pilih warna"></button>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 4v16m8-8H4"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg font-bold text-home-foreground mb-1">{{ $product['name'] }}
|
|
||||||
</h3>
|
<div class="mt-16 flex justify-center">
|
||||||
<p class="text-sm text-home-foreground/60 mb-4">{{ $product['description'] }}</p>
|
<nav class="flex items-center gap-2">
|
||||||
<div class="mb-4">
|
|
||||||
<span
|
|
||||||
class="text-xl font-bold text-home-foreground">Rp{{ number_format($product['price'], 0, ',', '.') }}</span>
|
|
||||||
</div>
|
|
||||||
<button
|
<button
|
||||||
class="w-full bg-home-foreground text-white font-bold py-3 rounded-lg hover:opacity-90 transition-opacity">Add
|
class="w-10 h-10 flex items-center justify-center rounded-full border border-home-foreground/10 text-home-foreground/30 cursor-not-allowed hover:bg-transparent">
|
||||||
to Cart</button>
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M15 19l-7-7 7-7"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="w-10 h-10 flex items-center justify-center rounded-full bg-home-primary text-white font-bold shadow-lg shadow-home-primary/20 transition-all">1</button>
|
||||||
|
<button
|
||||||
|
class="w-10 h-10 flex items-center justify-center rounded-full text-home-foreground hover:bg-home-primary/5 transition-all font-medium">2</button>
|
||||||
|
<button
|
||||||
|
class="w-10 h-10 flex items-center justify-center rounded-full text-home-foreground hover:bg-home-primary/5 transition-all font-medium">3</button>
|
||||||
|
<span class="w-10 h-10 flex items-center justify-center text-home-foreground/40">...</span>
|
||||||
|
<button
|
||||||
|
class="w-10 h-10 flex items-center justify-center rounded-full border border-home-foreground/10 text-home-foreground hover:border-home-primary hover:text-home-primary transition-all">
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M9 5l7 7-7 7"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="mt-24 pt-16 border-t border-home-foreground/10">
|
||||||
|
<div class="flex items-center justify-between mb-12">
|
||||||
|
<h2 class="text-2xl md:text-3xl font-bold text-home-primary">Mungkin Anda Suka</h2>
|
||||||
|
<div class="flex gap-3">
|
||||||
|
<button id="slideLeft"
|
||||||
|
class="w-12 h-12 rounded-full border border-home-foreground/10 flex items-center justify-center text-home-foreground hover:bg-home-primary hover:text-white hover:border-home-primary transition-all shadow-sm">
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M15 19l-7-7 7-7"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button id="slideRight"
|
||||||
|
class="w-12 h-12 rounded-full border border-home-foreground/10 flex items-center justify-center text-home-foreground hover:bg-home-primary hover:text-white hover:border-home-primary transition-all shadow-sm">
|
||||||
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="productSlider"
|
||||||
|
class="flex gap-6 overflow-x-auto pb-12 snap-x snap-mandatory scroll-smooth hide-scrollbar"
|
||||||
|
style="scrollbar-width: none; -ms-overflow-style: none;">
|
||||||
|
@foreach ($recommendations as $rec)
|
||||||
|
<article
|
||||||
|
class="min-w-[280px] md:min-w-[300px] bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:border-home-primary/30 transition-all duration-300 snap-start group flex flex-col h-full">
|
||||||
|
<div class="h-60 overflow-hidden relative bg-home-primary/5">
|
||||||
|
<img src="{{ $rec['image'] }}" alt="{{ $rec['name'] }}"
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
|
||||||
|
</div>
|
||||||
|
<div class="p-5 flex flex-col flex-grow">
|
||||||
|
<div class="text-[10px] font-bold tracking-widest text-home-primary uppercase mb-2">
|
||||||
|
{{ $rec['category'] }}</div>
|
||||||
|
<h3 class="text-lg font-bold text-home-foreground mb-1">{{ $rec['name'] }}</h3>
|
||||||
|
<div class="mt-auto pt-4 flex items-center justify-between">
|
||||||
|
<span class="font-bold text-home-primary">Rp
|
||||||
|
{{ number_format($rec['price'], 0, ',', '.') }}</span>
|
||||||
|
<button
|
||||||
|
class="w-8 h-8 rounded bg-home-foreground/5 text-home-foreground hover:bg-home-primary hover:text-white flex items-center justify-center transition-colors">
|
||||||
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 4v16m8-8H4"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
const track = document.getElementById("sliderTrack");
|
const slider = document.getElementById('productSlider');
|
||||||
const next = document.getElementById("nextBtn");
|
const leftBtn = document.getElementById('slideLeft');
|
||||||
const prev = document.getElementById("prevBtn");
|
const rightBtn = document.getElementById('slideRight');
|
||||||
|
|
||||||
if (track && next && prev) {
|
if (slider && leftBtn && rightBtn) {
|
||||||
next.addEventListener("click", () => {
|
rightBtn.addEventListener('click', () => {
|
||||||
const item = track.querySelector('.slider-item');
|
slider.scrollBy({
|
||||||
if (item) {
|
left: 320,
|
||||||
const scrollAmount = item.getBoundingClientRect().width + 24;
|
|
||||||
track.scrollBy({
|
|
||||||
left: scrollAmount,
|
|
||||||
behavior: 'smooth'
|
behavior: 'smooth'
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
prev.addEventListener("click", () => {
|
leftBtn.addEventListener('click', () => {
|
||||||
const item = track.querySelector('.slider-item');
|
slider.scrollBy({
|
||||||
if (item) {
|
left: -320,
|
||||||
const scrollAmount = item.getBoundingClientRect().width + 24;
|
|
||||||
track.scrollBy({
|
|
||||||
left: -scrollAmount,
|
|
||||||
behavior: 'smooth'
|
behavior: 'smooth'
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,98 +1,160 @@
|
|||||||
<div>
|
<div class="flex flex-col min-h-screen bg-white">
|
||||||
<main class="px-8 py-12 mt-24 bg-white min-h-screen">
|
<main class="flex-grow px-6 lg:px-32 xl:px-48 pb-24 pt-36 font-sans flex flex-col">
|
||||||
<header class="mb-8">
|
|
||||||
<h1 class="text-3xl font-bold text-home-foreground mb-2">Voucher</h1>
|
<header class="mb-12">
|
||||||
<p class="text-home-foreground/60">Dapatkan diskon spesial dengan voucher eksklusif kami</p>
|
<h1 class="text-3xl md:text-4xl font-bold text-home-primary mb-3">Voucher Eksklusif</h1>
|
||||||
|
<p class="text-home-foreground/60 text-lg max-w-2xl">Nikmati potongan harga spesial untuk koleksi parfum
|
||||||
|
favorit Anda.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="flex flex-col lg:flex-row gap-4 mb-8" aria-label="Pencarian dan Filter">
|
<section class="flex flex-col lg:flex-row gap-4 mb-12" aria-label="Pencarian dan Filter">
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<div class="relative">
|
<div class="relative group">
|
||||||
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-foreground/50" fill="none"
|
<svg class="absolute left-4 top-3.5 w-5 h-5 text-home-primary/50 group-focus-within:text-home-primary transition-colors"
|
||||||
stroke="currentColor" viewBox="0 0 24 24">
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
<input type="text" placeholder="Cari voucher..." aria-label="Cari voucher"
|
<input type="text" placeholder="Cari kode voucher..." aria-label="Cari voucher"
|
||||||
wire:model.live.debounce.500ms="search"
|
wire:model.live.debounce.500ms="search"
|
||||||
class="w-full py-3 pl-11 pr-4 rounded-lg border border-home-foreground/10 text-home-foreground placeholder-home-foreground/50 focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition">
|
class="w-full py-3 pl-11 pr-4 rounded-xl border border-home-foreground/10 text-home-foreground placeholder-home-foreground/40 focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition shadow-sm">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col sm:flex-row gap-4">
|
||||||
|
<div class="relative">
|
||||||
<select wire:model.live="outlet_id" aria-label="Filter Outlet"
|
<select wire:model.live="outlet_id" aria-label="Filter Outlet"
|
||||||
class="px-4 py-3 rounded-lg border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition cursor-pointer min-w-fit">
|
class="appearance-none px-6 py-3 pr-10 rounded-xl border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition cursor-pointer min-w-[180px] shadow-sm">
|
||||||
<option value="">Filter Outlet</option>
|
<option value="">Semua Outlet</option>
|
||||||
@foreach ($outlets as $key => $value)
|
@foreach ($outlets as $key => $value)
|
||||||
<option value="{{ $key }}">{{ $value }}</option>
|
<option value="{{ $key }}">{{ $value }}</option>
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
|
<svg class="absolute right-4 top-4 w-4 h-4 text-home-foreground/50 pointer-events-none"
|
||||||
<select wire:model.live="sort" aria-label="Urutkan Voucher"
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
class="px-4 py-3 rounded-lg border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-foreground focus:border-transparent transition cursor-pointer min-w-fit">
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
||||||
<option value="">Urutkan</option>
|
</svg>
|
||||||
<option value="latest">Terbaru</option>
|
|
||||||
<option value="biggest">Terbesar</option>
|
|
||||||
<option value="ending-soon">Berakhir Segera</option>
|
|
||||||
</select>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
||||||
@foreach ($vouchers as $voucher)
|
|
||||||
<article
|
|
||||||
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-lg transition-shadow">
|
|
||||||
<div class="bg-home-foreground/5 p-6 relative overflow-hidden">
|
|
||||||
<div class="absolute top-0 right-0 w-24 h-24 bg-home-foreground/5 rounded-full -mr-8 -mt-8">
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
|
<select wire:model.live="sort" aria-label="Urutkan Voucher"
|
||||||
|
class="appearance-none px-6 py-3 pr-10 rounded-xl border border-home-foreground/10 bg-white text-home-foreground font-medium focus:outline-none focus:ring-2 focus:ring-home-primary focus:border-transparent transition cursor-pointer min-w-[160px] shadow-sm">
|
||||||
|
<option value="">Urutkan</option>
|
||||||
|
<option value="latest">Terbaru</option>
|
||||||
|
<option value="biggest">Potongan Terbesar</option>
|
||||||
|
<option value="ending-soon">Segera Berakhir</option>
|
||||||
|
</select>
|
||||||
|
<svg class="absolute right-4 top-4 w-4 h-4 text-home-foreground/50 pointer-events-none"
|
||||||
|
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 mb-12">
|
||||||
|
@foreach ($vouchers as $voucher)
|
||||||
|
<article
|
||||||
|
class="bg-white rounded-2xl border border-home-foreground/10 overflow-hidden hover:shadow-xl hover:shadow-home-primary/5 hover:border-home-primary/30 hover:-translate-y-1 transition-all duration-300 group flex flex-col h-full">
|
||||||
|
|
||||||
|
<div class="bg-home-primary/5 p-6 relative overflow-hidden flex-1">
|
||||||
<div
|
<div
|
||||||
class="inline-block bg-home-foreground text-white px-3 py-1 rounded-full text-xs font-bold mb-3">
|
class="absolute top-0 right-0 w-24 h-24 bg-home-primary/10 rounded-full blur-2xl -mr-10 -mt-10">
|
||||||
{{ $voucher->tags }}</div>
|
|
||||||
<h3 class="text-xl font-bold text-home-foreground mb-1">{{ $voucher->name }}</h3>
|
|
||||||
<p class="text-sm text-home-foreground/60 mb-4">{{ $voucher->summary }}</p>
|
|
||||||
|
|
||||||
<div class="bg-white rounded-lg p-3 mb-4 border border-home-foreground/20">
|
|
||||||
<p class="text-xs text-home-foreground/60 mb-1">Kode Voucher:</p>
|
|
||||||
<p class="text-lg font-bold text-home-foreground font-mono tracking-widest">
|
|
||||||
{{ $voucher->code }}</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-2 text-sm mb-4">
|
<div class="relative z-10">
|
||||||
<div class="flex justify-between">
|
<div
|
||||||
<span class="text-home-foreground/60">Min. Pembelian:</span>
|
class="inline-flex items-center gap-2 bg-white px-3 py-1 rounded-full border border-home-primary/10 shadow-sm mb-4">
|
||||||
|
<span class="w-2 h-2 rounded-full bg-home-primary"></span>
|
||||||
<span
|
<span
|
||||||
class="font-semibold text-home-foreground">{{ $voucher->min_purchase_formatted }}</span>
|
class="text-xs font-bold text-home-primary uppercase tracking-wider">{{ $voucher->tags }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
|
||||||
<span class="text-home-foreground/60">Berlaku s.d.:</span>
|
<h3
|
||||||
<time datetime="{{ $voucher->end_date }}"
|
class="text-xl font-bold text-home-foreground mb-2 group-hover:text-home-primary transition-colors line-clamp-2">
|
||||||
class="font-semibold text-home-foreground">{{ $voucher->end_date }}</time>
|
{{ $voucher->name }}
|
||||||
|
</h3>
|
||||||
|
<p class="text-sm text-home-foreground/60 mb-6 line-clamp-2 leading-relaxed">
|
||||||
|
{{ $voucher->summary }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="bg-white rounded-xl p-4 border border-dashed border-home-primary/30 flex items-center justify-between group-hover:border-home-primary transition-colors">
|
||||||
|
<div>
|
||||||
|
<p
|
||||||
|
class="text-[10px] text-home-foreground/50 uppercase tracking-widest font-bold mb-1">
|
||||||
|
Kode Voucher</p>
|
||||||
|
<p class="text-lg font-bold text-home-primary font-mono tracking-widest select-all">
|
||||||
|
{{ $voucher->code }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div
|
||||||
<span class="text-home-foreground/60">Sisa Voucher:</span>
|
class="w-8 h-8 rounded-full bg-home-primary/10 flex items-center justify-center text-home-primary">
|
||||||
<span class="font-semibold text-home-foreground">{{ $voucher->available_count }} /
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
{{ $voucher->quota ?? '∞' }}</span>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="p-6 flex gap-3">
|
<div class="px-6 pt-4 pb-0 space-y-3">
|
||||||
|
<div class="flex justify-between items-center text-sm border-b border-home-foreground/5 pb-3">
|
||||||
|
<span class="text-home-foreground/50 flex items-center gap-2">
|
||||||
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3-.895 3-2-1.343-2-3-2zm0 4c-2.485 0-4.5 1.567-4.5 3.5V18h9v-2.5c0-1.933-2.015-3.5-4.5-3.5z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
Min. Pembelian
|
||||||
|
</span>
|
||||||
|
<span class="font-bold text-home-foreground">{{ $voucher->min_purchase_formatted }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-between items-center text-sm border-b border-home-foreground/5 pb-3">
|
||||||
|
<span class="text-home-foreground/50 flex items-center gap-2">
|
||||||
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
Berlaku Hingga
|
||||||
|
</span>
|
||||||
|
<time datetime="{{ $voucher->end_date }}"
|
||||||
|
class="font-bold text-home-foreground">{{ $voucher->end_date }}</time>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-between items-center text-sm">
|
||||||
|
<span class="text-home-foreground/50 flex items-center gap-2">
|
||||||
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M20 12H4"></path>
|
||||||
|
</svg>
|
||||||
|
Sisa Kuota
|
||||||
|
</span>
|
||||||
|
<span class="font-bold text-home-primary bg-home-primary/10 px-2 py-0.5 rounded text-xs">
|
||||||
|
{{ $voucher->available_count }} / {{ $voucher->quota ?? '∞' }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="p-6 flex gap-3 mt-auto">
|
||||||
<button
|
<button
|
||||||
class="flex-1 bg-home-foreground text-white font-bold py-2.5 rounded-lg hover:opacity-90 transition-opacity">
|
class="flex-1 bg-home-primary text-white font-bold py-3 rounded-xl hover:bg-home-secondary hover:text-home-primary hover:shadow-lg hover:shadow-home-primary/20 transition-all duration-300 text-sm shadow-md shadow-home-primary/10">
|
||||||
Klaim
|
Klaim Voucher
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="flex-1 border-2 border-home-foreground text-home-foreground font-bold py-2.5 rounded-lg hover:bg-home-foreground/5 transition-colors">
|
class="flex-1 border border-home-foreground/20 text-home-foreground font-bold py-3 rounded-xl hover:border-home-primary hover:text-home-primary hover:bg-home-primary/5 transition-all duration-300 text-sm">
|
||||||
Detail
|
Lihat Detail
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</section>
|
||||||
|
|
||||||
<div class="mt-8 flex justify-center">
|
<div class="mt-auto flex justify-center w-full">
|
||||||
{{ $vouchers->links() }}
|
{{ $vouchers->links() }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user