From 702f43a7190d65c2370e7019311cc26c2cc0eafd Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Tue, 6 Jun 2023 17:01:23 +0700 Subject: program promotion --- src/lib/promotinProgram/components/HomePage.jsx | 69 +++++++++++++ .../promotinProgram/components/PromotionType.jsx | 110 +++++++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 src/lib/promotinProgram/components/HomePage.jsx create mode 100644 src/lib/promotinProgram/components/PromotionType.jsx (limited to 'src/lib/promotinProgram') diff --git a/src/lib/promotinProgram/components/HomePage.jsx b/src/lib/promotinProgram/components/HomePage.jsx new file mode 100644 index 00000000..93134117 --- /dev/null +++ b/src/lib/promotinProgram/components/HomePage.jsx @@ -0,0 +1,69 @@ +import React, { useState } from 'react' +import { Swiper, SwiperSlide } from 'swiper/react' +import 'swiper/swiper.min.css' +import Image from '@/core/components/elements/Image/Image' +import useDevice from '@/core/hooks/useDevice' + +const HomePage = () => { + const [activeTab, setActiveTab] = useState('Tab 1') + + const { isMobile, isDesktop } = useDevice() + const handleTabClick = (label) => { + setActiveTab(label) + } + + const tabItems = [ + { label: 'Tab 1', content: 'Content for Tab 1' }, + { label: 'Tab 2', content: 'Content for Tab 2' }, + { label: 'Tab 3', content: 'Content for Tab 3' }, + { label: 'Tab 4', content: 'Content for Tab 4' }, + { label: 'Tab 5', content: 'Content for Tab 5' }, + { label: 'Tab 6', content: 'Content for Tab 6' }, + { label: 'Tab 7', content: 'Content for Tab 7' }, + { label: 'Tab 8', content: 'Content for Tab 8' }, + { label: 'Tab 9', content: 'Content for Tab 9' }, + { label: 'Tab 10', content: 'Content for Tab 10' } + ] + + return ( +
+
+
{activeTab}
+
+ + {tabItems.map((item, index) => ( + + + + ))} + + +
+ {tabItems.map((item, index) => ( +
+ {item.content} +
+ ))} +
+
+ ) +} + +export default HomePage diff --git a/src/lib/promotinProgram/components/PromotionType.jsx b/src/lib/promotinProgram/components/PromotionType.jsx new file mode 100644 index 00000000..371aa952 --- /dev/null +++ b/src/lib/promotinProgram/components/PromotionType.jsx @@ -0,0 +1,110 @@ +import React, { useEffect, useState } from 'react' +import Image from '@/core/components/elements/Image/Image' + +const PromotionType = ({ isModal = true }) => { + const [selectedPromo, setSelectedPromo] = useState(null) + + const promos = [ + { + id: 1, + title: 'Promo 1', + description: 'Deskripsi Promo 1', + image: '/path/to/image1.jpg' + }, + { + id: 2, + title: 'Promo 2', + description: 'Deskripsi Promo 2', + image: '/path/to/image2.jpg' + }, + { + id: 3, + title: 'Promo 3', + description: 'Deskripsi Promo 3', + image: '/path/to/image3.jpg' + }, + { + id: 4, + title: 'Promo 1', + description: 'Deskripsi Promo 1', + image: '/path/to/image1.jpg' + }, + { + id: 5, + title: 'Promo 2', + description: 'Deskripsi Promo 2', + image: '/path/to/image2.jpg' + }, + { + id: 6, + title: 'Promo 3', + description: 'Deskripsi Promo 3', + image: '/path/to/image3.jpg' + } + ] + const handlePromoClick = (promoId) => { + if (promoId == selectedPromo) { + setSelectedPromo(null) + } else { + setSelectedPromo(promoId) + } + } + return ( +
+ {promos.map((promo) => ( +
handlePromoClick(promo.id)} + className={`p-2 rounded-lg border border-solid border-gray-300 mb-5 w-full hover:cursor-pointer ${ + selectedPromo + ? selectedPromo === promo.id + ? 'opacity-100 border-red-500 bg-red-100' + : 'opacity-50 pointer-events-none' + : 'opacity-100' + } `} + > +
+
+ +
+
+

{promo.title}

+ {isModal == true &&

{promo.description}

} +
+
+
+ //
handlePromoClick(promo.id)} + // className={`p-2 rounded-lg border border-solid border-gray-300 mb-5 w-full hover:cursor-pointer ${ + // selectedPromo + // ? selectedPromo === promo.id + // ? 'opacity-100 border-red-400 bg-red-100' + // : 'opacity-50 pointer-events-none' + // : 'opacity-100' + // } `} + // > + //
+ //
+ // + //
+ //
+ //

{promo.title}

+ // {/*

{promo.description}

*/} + //
+ //
+ //
+ ))} +
+ ) +} + +export default PromotionType -- cgit v1.2.3