diff options
Diffstat (limited to 'src/lib/home')
| -rw-r--r-- | src/lib/home/components/PreferredBrand.jsx | 6 | ||||
| -rw-r--r-- | src/lib/home/components/ServiceList.jsx | 105 | ||||
| -rw-r--r-- | src/lib/home/components/Skeleton/PopularProductSkeleton.jsx | 3 | ||||
| -rw-r--r-- | src/lib/home/hooks/usePreferredBrand.js | 13 |
4 files changed, 123 insertions, 4 deletions
diff --git a/src/lib/home/components/PreferredBrand.jsx b/src/lib/home/components/PreferredBrand.jsx index 55abe0b7..571c4745 100644 --- a/src/lib/home/components/PreferredBrand.jsx +++ b/src/lib/home/components/PreferredBrand.jsx @@ -6,7 +6,9 @@ import useDevice from '@/core/hooks/useDevice' import Link from '@/core/components/elements/Link/Link' const PreferredBrand = () => { - const { preferredBrands } = usePreferredBrand() + let query = 'level_s' + let params = 'prioritas' + const { preferredBrands } = usePreferredBrand(query) const { isMobile, isDesktop } = useDevice() return ( @@ -22,7 +24,7 @@ const PreferredBrand = () => { {preferredBrands.isLoading && <PreferredBrandSkeleton />} {!preferredBrands.isLoading && ( <Swiper slidesPerView={isMobile ? 3.5 : 7.5} spaceBetween={isMobile ? 12 : 24} freeMode> - {preferredBrands.data?.manufactures.map((brand) => ( + {preferredBrands.data?.data.map((brand) => ( <SwiperSlide key={brand.id}> <BrandCard brand={brand} /> </SwiperSlide> diff --git a/src/lib/home/components/ServiceList.jsx b/src/lib/home/components/ServiceList.jsx new file mode 100644 index 00000000..b8799d7d --- /dev/null +++ b/src/lib/home/components/ServiceList.jsx @@ -0,0 +1,105 @@ +import Image from 'next/image' +import Link from '@/core/components/elements/Link/Link' + +const ServiceList = () => { + return ( + <div className='px-4 sm:px-0'> + <div className='grid md:grid-cols-4 grid-cols-2 justify-between gap-2 items-center'> + <div className='w-full'> + <Link + href='/tentang-kami' + className='border border-gray-200 p-2 flex items-center gap-x-2 rounded-lg' + > + <div className=''> + <Image + width={24} + height={24} + quality={100} + src='/images/icon_service/ONE-STOP-SOLUTIONS.svg' + alt='' + className='h-20 w-20 rounded' + /> + </div> + <div className=''> + <h1 className='text-gray-900 font-semibold text-base'>One Stop Solution</h1> + <p className='text-xs md:text-sm text-gray-500'> + Temukan Solusi Lengkap Anda dalam Satu Tempat. + </p> + </div> + </Link> + </div> + <div className='w-full'> + <Link + href='/tentang-kami' + className='border border-gray-200 p-2 flex items-center gap-x-2 rounded-lg' + > + <div className=''> + <Image + width={24} + height={24} + quality={100} + src='/images/icon_service/WARRANTY.svg' + alt='' + className='h-20 w-20 rounded' + /> + </div> + <div> + <h1 className='text-gray-900 font-semibold text-base'>Garansi Resmi</h1> + <p className='text-xs md:text-sm text-gray-500'> + Garansi Keaslian Barang dan Jaminan Purna Jual. + </p> + </div> + </Link> + </div> + <div className='w-full '> + <Link + href='/tentang-kami' + className='border border-gray-200 p-2 flex items-center gap-x-2 rounded-lg' + > + <div className=''> + <Image + width={24} + height={24} + quality={100} + src='/images/icon_service/DUE-PAYMENT.svg' + alt='' + className='h-20 w-20 rounded' + /> + </div> + <div> + <h1 className='text-gray-900 font-semibold text-base'>Pembayaran Tempo</h1> + <p className='text-xs md:text-sm text-gray-500'> + Lebih mudah mengatur pembelian dengan pembayaran tempo. + </p> + </div> + </Link> + </div> + <div className='w-full'> + <Link + href='/tentang-kami' + className='border border-gray-200 p-2 flex items-center gap-x-2 rounded-lg' + > + <div className=''> + <Image + width={24} + height={24} + quality={100} + src='/images/icon_service/TAX.svg' + alt='' + className='h-20 w-20 rounded' + /> + </div> + <div> + <h1 className='text-gray-900 font-semibold text-base'>Faktur Pajak</h1> + <p className='text-xs md:text-sm text-gray-500'> + Dapat Faktur pajak untuk setiap transaksi dengan indoteknik.com + </p> + </div> + </Link> + </div> + </div> + </div> + ) +} + +export default ServiceList diff --git a/src/lib/home/components/Skeleton/PopularProductSkeleton.jsx b/src/lib/home/components/Skeleton/PopularProductSkeleton.jsx index 29fda966..754bdd57 100644 --- a/src/lib/home/components/Skeleton/PopularProductSkeleton.jsx +++ b/src/lib/home/components/Skeleton/PopularProductSkeleton.jsx @@ -11,7 +11,8 @@ const PopularProductSkeleton = () => ( </div> </MobileView> <DesktopView> - <div className='grid grid-cols-5 gap-x-3'> + <div className='grid grid-cols-6 gap-x-3'> + <ProductCardSkeleton /> <ProductCardSkeleton /> <ProductCardSkeleton /> <ProductCardSkeleton /> diff --git a/src/lib/home/hooks/usePreferredBrand.js b/src/lib/home/hooks/usePreferredBrand.js index e56d361f..b7d707e6 100644 --- a/src/lib/home/hooks/usePreferredBrand.js +++ b/src/lib/home/hooks/usePreferredBrand.js @@ -1,3 +1,4 @@ +import axios from 'axios' import preferredBrandApi from '../api/preferredBrandApi' import { useQuery } from 'react-query' @@ -10,4 +11,14 @@ const usePreferredBrand = () => { } } -export default usePreferredBrand +const GetBrands = (query) => { + const fetchingbrand = async () => + await axios(`${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/brands?params=` + query) + + const { data, isLoading } = useQuery('preferredBrand', fetchingbrand) + return { + preferredBrands: { data, isLoading } + } +} + +export default GetBrands |
