feat(outlets): Add outlets page and fix color and function

This commit is contained in:
ifanprima130206 2025-12-11 10:26:33 +07:00
parent 4078201b03
commit a4418a500d
18 changed files with 1522 additions and 1088 deletions

View File

@ -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 = [

View File

@ -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 {

View File

@ -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();
} }

View File

@ -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">
&copy; {{ 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">
&copy; {{ 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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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 == ' ' ? '&nbsp;' : $char !!}</span>
@endforeach
</div>
</div>
</nav> </nav>
</div> </div>
</div>
</section> </section>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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"

View File

@ -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>

View File

@ -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'
}); });
}
}); });
} }
}); });

View File

@ -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>