summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/images/TKDN.pngbin0 -> 50931 bytes
-rw-r--r--public/images/sni-logo.pngbin0 -> 2870 bytes
-rw-r--r--src/lib/product/components/ProductCard.jsx109
3 files changed, 102 insertions, 7 deletions
diff --git a/public/images/TKDN.png b/public/images/TKDN.png
new file mode 100644
index 00000000..dba43d15
--- /dev/null
+++ b/public/images/TKDN.png
Binary files differ
diff --git a/public/images/sni-logo.png b/public/images/sni-logo.png
new file mode 100644
index 00000000..a5ade90c
--- /dev/null
+++ b/public/images/sni-logo.png
Binary files differ
diff --git a/src/lib/product/components/ProductCard.jsx b/src/lib/product/components/ProductCard.jsx
index 38ed35f8..8dde4dbe 100644
--- a/src/lib/product/components/ProductCard.jsx
+++ b/src/lib/product/components/ProductCard.jsx
@@ -1,7 +1,7 @@
import clsx from 'clsx';
import ImageNext from 'next/image';
import { useRouter } from 'next/router';
-import { useMemo } from 'react';
+import { useMemo, useEffect, useState } from 'react';
import Image from '@/core/components/elements/Image/Image';
import Link from '@/core/components/elements/Link/Link';
@@ -15,6 +15,47 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => {
const router = useRouter();
const utmSource = useUtmSource();
+ const [isSni, setIsSni] = useState(false);
+ const [isTkdn, setTkdn] = useState(false);
+
+ useEffect(() => {
+ // Lakukan pemanggilan API untuk memeriksa isSni
+ const fetchSniData = async () => {
+ try {
+ const response = await fetch('URL_API_SNI');
+ const data = await response.json();
+ if (data && data.sni) {
+ setIsSni(true);
+ } else {
+ setIsSni(false);
+ }
+ } catch (error) {
+ console.error('Error fetching SNI data:', error);
+ setIsSni(false);
+ }
+ };
+
+ // Lakukan pemanggilan API untuk memeriksa isTkdn
+ const fetchTkdnData = async () => {
+ try {
+ const response = await fetch('URL_API_TKDN');
+ const data = await response.json();
+ if (data && data.tkdn) {
+ setTkdn(true);
+ } else {
+ setTkdn(false);
+ }
+ } catch (error) {
+ console.error('Error fetching TKDN data:', error);
+ setTkdn(false);
+ }
+ };
+ fetchSniData();
+ fetchTkdnData();
+ return () => {
+ };
+ }, []);
+
const callForPriceWhatsapp = whatsappUrl('product', {
name: product.name,
manufacture: product.manufacture?.name,
@@ -41,11 +82,39 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => {
return (
<div className='rounded shadow-sm border border-gray_r-4 bg-white h-[300px] md:h-[350px]'>
<Link href={URL.product} className='border-b border-gray_r-4 relative'>
+ <div className="relative">
<Image
src={image}
alt={product?.name}
- className='w-full object-contain object-center h-36 sm:h-48'
+ className="gambarA w-full object-contain object-center h-36 sm:h-48"
/>
+ <div className="absolute top-0 right-0 flex mt-3">
+ <div className="gambarB ">
+ {!isSni && (
+ <ImageNext
+ src="/images/sni-logo.png"
+ alt="SNI Logo"
+ className="w-4 h-5 object-contain object-top sm:h-6"
+ width={50}
+ height={50}
+ />
+ )}
+ </div>
+ <div className="gambarC ">
+ {!isTkdn && (
+ <ImageNext
+ src="/images/TKDN.png"
+ alt="TKDN"
+ className="w-11 h-6 object-contain object-top ml-1 mr-1 sm:h-6"
+ width={50}
+ height={50}
+ />
+ )}
+ </div>
+ </div>
+ </div>
+
+
{router.pathname != '/' && product?.flashSale?.id > 0 && (
<div className='absolute bottom-0 w-full grid'>
<div className='absolute bottom-0 w-full h-full'>
@@ -171,11 +240,37 @@ const ProductCard = ({ product, simpleTitle, variant = 'vertical' }) => {
<div className='flex bg-white'>
<div className='w-4/12'>
<Link href={URL.product} className='relative'>
- <Image
- src={image}
- alt={product?.name}
- className='w-full object-contain object-center h-36'
- />
+ <div className="relative">
+ <Image
+ src={image}
+ alt={product?.name}
+ className="gambarA w-full object-contain object-center h-36 sm:h-48"
+ />
+ <div className="absolute top-0 right-0 flex mt-3">
+ <div className="gambarB ">
+ {!isSni && (
+ <ImageNext
+ src="/images/sni-logo.png"
+ alt="SNI Logo"
+ className="w-4 h-5 object-contain object-top sm:h-6"
+ width={50}
+ height={50}
+ />
+ )}
+ </div>
+ <div className="gambarC ">
+ {!isTkdn && (
+ <ImageNext
+ src="/images/TKDN.png"
+ alt="TKDN"
+ className="w-11 h-6 object-contain object-top ml-1 sm:h-6"
+ width={50}
+ height={50}
+ />
+ )}
+ </div>
+ </div>
+ </div>
{product.variantTotal > 1 && (
<div className='absolute badge-gray bottom-1.5 left-1.5'>
{product.variantTotal} Varian