summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-09-19 17:08:55 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-09-19 17:08:55 +0700
commit54b3b9670995d62c2e11b761911430e4300fa36e (patch)
treeeffb6f46e197995a2eb3d279da9fcf4f0b450583 /src/lib
parent74b4e3a9b86f1d3b102ad3f907237f7da1b05009 (diff)
popup cart
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/cart/components/Cartheader.jsx127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/lib/cart/components/Cartheader.jsx b/src/lib/cart/components/Cartheader.jsx
new file mode 100644
index 00000000..1760360d
--- /dev/null
+++ b/src/lib/cart/components/Cartheader.jsx
@@ -0,0 +1,127 @@
+import { useEffect, useState } from 'react'
+import { getCartApi } from '../api/CartApi'
+import currencyFormat from '@/core/utils/currencyFormat'
+import Image from '@/core/components/elements/Image/Image'
+import { createSlug } from '@/core/utils/slug'
+
+const { ShoppingCartIcon } = require('@heroicons/react/24/outline')
+const { default: Link } = require('next/link')
+
+const Cardheader = (cartCount) => {
+ const [count, setCardCount] = useState(null)
+ const [products, setProducts] = useState(null)
+
+ const getCart = async () => {
+ const listCart = await getCartApi()
+ setProducts(listCart.products)
+ }
+
+ useEffect(() => {
+ getCart()
+ }, [])
+
+ return (
+ <div className='relative group'>
+ <Link
+ href='/shop/cart'
+ target='_blank'
+ rel='noreferrer'
+ className='flex items-center gap-x-2 !text-gray_r-12/80'
+ >
+ <div className={`relative ${cartCount.cartCount > 0 && 'mr-2'}`}>
+ <ShoppingCartIcon className='w-7' />
+ {cartCount.cartCount > 0 && (
+ <span className='absolute -top-2 -right-2 badge-solid-red rounded-full w-5 h-5 flex items-center justify-center'>
+ {cartCount.cartCount}
+ </span>
+ )}
+ </div>
+ <span>
+ Keranjang
+ <br />
+ Belanja
+ </span>
+ </Link>
+ {/* <div className='hidden group-hover:block fixed top-0 left-0 w-full h-full bg-black opacity-50 z-10'></div> */}
+ <div className='hidden group-hover:block absolute z-10 left-0 w-96'>
+ <div className='w-full max-w-md p-2 bg-white border border-gray-200 rounded-lg shadow'>
+ <div className='p-2 flex justify-between items-center'>
+ <h5 class='text-base font-semibold leading-none'>Keranjang Belanja</h5>
+ <Link href='/shop/cart' class='text-sm font-medium text-red-600 underline'>
+ Lihat Semua
+ </Link>
+ </div>
+ <hr className='mt-3 mb-3 border border-gray-100' />
+ <div className='flow-root max-h-[250px] overflow-y-auto'>
+ <ul role='list' class='divide-y divide-gray-200 dark:divide-gray-700'>
+ {products &&
+ products?.map((product, index) => (
+ <>
+ <li class='py-1 sm:py-2'>
+ <div class='flex items-center space-x-4'>
+ <div class='flex-shrink-0'>
+ <Link
+ href={createSlug(
+ '/shop/product/',
+ product?.parent.name,
+ product?.parent.id
+ )}
+ className='line-clamp-2 leading-6 !text-gray_r-12 font-normal'
+ >
+ <Image
+ src={product?.parent?.image}
+ alt={product?.name}
+ className='object-contain object-center border border-gray_r-6 h-16 w-16 rounded-md'
+ />
+ </Link>
+ </div>
+ <div class='flex-1 min-w-0'>
+ <Link
+ href={createSlug(
+ '/shop/product/',
+ product?.parent.name,
+ product?.parent.id
+ )}
+ className='line-clamp-2 leading-6 !text-gray_r-12 font-normal'
+ >
+ {' '}
+ <p class='text-caption-2 font-medium text-gray-900 truncate dark:text-white'>
+ {product.parent.name}
+ </p>
+ </Link>
+
+ {product?.price?.discountPercentage > 0 && (
+ <div className='flex gap-x-1 items-center mb-2 mt-1'>
+ <div className='badge-solid-red'>
+ {product?.price?.discountPercentage}%
+ </div>
+ <div className='text-gray_r-11 line-through text-caption-2'>
+ {currencyFormat(product?.price?.price)}
+ </div>
+ </div>
+ )}
+ <div className='flex justify-between items-center'>
+ <div className='font-semibold text-sm text-red-600'>
+ {currencyFormat(product?.price?.priceDiscount)}
+ </div>
+ </div>
+ </div>
+ </div>
+ </li>
+ </>
+ ))}
+ </ul>
+ <hr />
+ </div>
+ {/* <div className='mt-3'>
+ <Link href='#' className='text-caption-1 text-red-600 underline'>
+ Buka Keranjang Belanja
+ </Link>
+ </div> */}
+ </div>
+ </div>
+ </div>
+ )
+}
+
+export default Cardheader