summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/components/views/DesktopView.jsx14
-rw-r--r--src/core/components/views/MobileView.jsx14
-rw-r--r--src/lib/home/components/HeroBanner.jsx47
3 files changed, 53 insertions, 22 deletions
diff --git a/src/core/components/views/DesktopView.jsx b/src/core/components/views/DesktopView.jsx
new file mode 100644
index 00000000..31a67936
--- /dev/null
+++ b/src/core/components/views/DesktopView.jsx
@@ -0,0 +1,14 @@
+import isMobile from 'is-mobile'
+import { useEffect, useState } from 'react'
+
+const DesktopView = ({ children }) => {
+ const [view, setView] = useState(<></>)
+
+ useEffect(() => {
+ if (!isMobile()) setView(children)
+ }, [children])
+
+ return view
+}
+
+export default DesktopView
diff --git a/src/core/components/views/MobileView.jsx b/src/core/components/views/MobileView.jsx
new file mode 100644
index 00000000..be8aa293
--- /dev/null
+++ b/src/core/components/views/MobileView.jsx
@@ -0,0 +1,14 @@
+import isMobile from 'is-mobile'
+import { useEffect, useState } from 'react'
+
+const MobileView = ({ children }) => {
+ const [view, setView] = useState(<></>)
+
+ useEffect(() => {
+ if (isMobile()) setView(children)
+ }, [children])
+
+ return view
+}
+
+export default MobileView
diff --git a/src/lib/home/components/HeroBanner.jsx b/src/lib/home/components/HeroBanner.jsx
index 0ac14bad..e6690c01 100644
--- a/src/lib/home/components/HeroBanner.jsx
+++ b/src/lib/home/components/HeroBanner.jsx
@@ -1,6 +1,7 @@
import ImageSkeleton from '@/core/components/elements/Skeleton/ImageSkeleton'
import useHeroBanner from '../hooks/useHeroBanner'
import Image from '@/core/components/elements/Image/Image'
+import MobileView from '@/core/components/views/MobileView'
// Swiper
import { Swiper, SwiperSlide } from 'swiper/react'
@@ -22,28 +23,30 @@ const HeroBanner = () => {
const { heroBanners } = useHeroBanner()
return (
- <div className='min-h-[200px]'>
- {heroBanners.isLoading && <ImageSkeleton />}
- {!heroBanners.isLoading && (
- <Swiper
- slidesPerView={1}
- pagination={swiperBanner.pagination}
- modules={swiperBanner.modules}
- autoplay={swiperBanner.autoplay}
- className='border-b border-gray_r-6'
- >
- {heroBanners.data?.map((banner, index) => (
- <SwiperSlide key={index}>
- <Image
- src={banner.image}
- alt={banner.name}
- className='w-full h-auto'
- />
- </SwiperSlide>
- ))}
- </Swiper>
- )}
- </div>
+ <MobileView>
+ <div className='min-h-[200px]'>
+ {heroBanners.isLoading && <ImageSkeleton />}
+ {!heroBanners.isLoading && (
+ <Swiper
+ slidesPerView={1}
+ pagination={swiperBanner.pagination}
+ modules={swiperBanner.modules}
+ autoplay={swiperBanner.autoplay}
+ className='border-b border-gray_r-6'
+ >
+ {heroBanners.data?.map((banner, index) => (
+ <SwiperSlide key={index}>
+ <Image
+ src={banner.image}
+ alt={banner.name}
+ className='w-full h-auto'
+ />
+ </SwiperSlide>
+ ))}
+ </Swiper>
+ )}
+ </div>
+ </MobileView>
)
}