Untitled
unknown
plain_text
a year ago
6.0 kB
4
Indexable
'use client'; import GlobalLoading from '@/components/Global/GlobalLoading'; import { xoomBackendUrl } from '@/lib/axios/getAxios'; import { useEffect, useState } from 'react'; import { FaCheckCircle } from 'react-icons/fa'; const PACKAGE_SELECTED_CLASS = 'ring-2 ring-red-500 scale-110 shadow shadow-gray-400'; const PACKAGE_DEFAULT_CLASS = 'ring-1 ring-white-500'; export default function SubscriptionHome() { const [subscriptionData, setSubscriptionData] = useState([]); const [selectedPackage, setSelectedPackage] = useState(0); const [loading, setLoading] = useState(true); useEffect(() => { async function getAllSubscription() { try { const { data = [] } = await xoomBackendUrl.get(`/api/subscriptions`); setSubscriptionData(data); setLoading(false); setSelectedPackage(data.length > 0 ? data[0] : 0); } catch (error) { console.error('Error fetching subscription data:', error); setLoading(false); } } getAllSubscription(); }, []); const handlePackageClick = (packageData) => { setSelectedPackage(packageData); }; return ( <div className="mx-auto max-w-screen-xl mt-3"> {loading ? ( <GlobalLoading /> ) : ( <div className="bg-white text-black mt-5"> <div className="flex flex-col lg:flex-row items-center justify-around mt-2 lg:mt-10 p-5"> {subscriptionData?.data?.map((packageData, index) => ( <div key={packageData?._id} onClick={() => handlePackageClick(index)} className={`bg-primary rounded-3xl p-4 xl:p-8 mt-5 lg:mt-0 ${ parseInt(selectedPackage) === parseInt(index) ? PACKAGE_SELECTED_CLASS : PACKAGE_DEFAULT_CLASS } cursor-pointer`} > <div className="flex items-center justify-between gap-x-4"> <h2 className="text-sm lg:text-lg font-semibold leading-8 text-white"> {packageData?.title} </h2> </div> <p className="mt-4 text-sm leading-6 text-gray-300"> Package details for {packageData?.title} </p> <p className="mt-6 flex items-baseline gap-x-1"> <span className="text-xl lg:text-4xl font-bold tracking-tight text-white"> {(packageData?.price / packageData?.duration).toFixed(2)} $ / month </span> </p> <div className="flex items-center justify-center mt-3"> <a href="#order" aria-describedby="" className={`btn btn-sm rounded-md ${ parseInt(selectedPackage) === parseInt(index) ? 'btn-secondary' : '' }`} > Get Now </a> </div> </div> ))} </div> <br /> <br /> <div className="divider m-0 bg-white"> <div className="bg-[#FB0405] py-2 text-white"> <span className="p-5 cursor-pointer">{`Package Details for ${subscriptionData?.data?.[selectedPackage]?.title}`}</span> </div> </div> <br /> {/* description */} <div id="order" className="grid grid-cols-12 gap-5 px-5 mt-10"> <div className="col-span-12 lg:col-span-7"> {subscriptionData?.data?.map((item, index) => ( <div key={index}> {parseInt(selectedPackage) === parseInt(index) && ( <div className="bg-primary -skew-y-[0.5deg]"> <div className="skew-y-[0.5deg] divide-y p-4 lg:p-10 text-white"> <div className="flex items-center justify-between py-2"> <h4>{item?.title}</h4> <h4>{`US ${item?.price}$`}</h4> </div> <div className="flex items-center justify-between py-2"> <h4>Total</h4> <h4 className="text-green-600">{`US ${item?.price}$`}</h4> </div> <div className="flex justify-between items-center"> <p className="text-xs text-gray-400"> By proceeding, you agree to our Terms of Service and Privacy Policy. </p> <button type="submit" className="btn btn-sm btn-secondary rounded-md mt-3" > Payment Now </button> </div> </div> </div> )} </div> ))} </div> <div className="col-span-12 lg:col-span-5"> <div className="bg-primary p-5 -skew-y-[0.5deg]"> <h4 className="text-xl font-semibold py-3 text-white"> Package Benefits </h4> {subscriptionData?.data?.[selectedPackage]?.descriptions.map( (description, index) => ( <div key={index} className="py-1 flex gap-2 bg-gray-600 p-2 mt-2 skew-y-[0.5deg]" > <div> <FaCheckCircle className="text-white inline-block align-text-bottom mr-2 text-xl" /> </div> <p>{description}</p> </div> ) )} </div> </div> </div> </div> )} </div> ); }
Editor is loading...
Leave a Comment