web-humas-fe/components/landing/ENewsPolri.tsx

115 lines
4.1 KiB
TypeScript

"use client";
import { Card, CardFooter } from "@heroui/react";
import Image from "next/image";
import { useEffect, useState } from "react";
import { ChevronLeftWhite, ChevronRightIcon, EyeIcon } from "../icons";
import Link from "next/link";
import { getListArticle } from "@/services/article";
import { convertDateFormat, textEllipsis } from "@/utils/global";
import { Autoplay, Pagination, Navigation } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import "swiper/css";
import "swiper/css/pagination";
import "swiper/css/effect-fade";
import "swiper/css/navigation";
import { getListMagazine } from "@/services/magazine";
export default function ENewsPolri() {
const [article, setArticle] = useState<any>([]);
useEffect(() => {
async function getArticle() {
const req = { page: 1, search: "", limit: "10" };
const response = await getListMagazine(req);
setArticle(response?.data?.data);
}
getArticle();
}, []);
return (
<div className="bg-[#f0f0f0] dark:bg-[#1F1A17] text-center md:rounded-lg h-auto flex py-4 flex-col justify-between items-center rounded-md">
<p className="text-black dark:text-white border-b-3 border-red-500 py-2 mb-3 text-xl">
E-Majalah Polri
</p>
<div className="w-[90vw] lg:w-[90%]">
<div>
<Swiper
centeredSlides={false}
spaceBetween={10}
navigation={true}
modules={[Autoplay, Navigation]}
className="mySwiper"
slidesPerView={1}
breakpoints={{
// When the window width is less than 640px
720: {
slidesPerView: 3, // Set slidesPerView to 1 on mobile
},
}}
onSwiper={(swiper) => {
swiper.navigation.nextEl?.classList.add(
"bg-white/70",
"!text-black",
"rounded-full",
"!w-[40px]",
"!h-[40px]"
);
swiper.navigation.prevEl?.classList.add(
"bg-white/70",
"!text-black",
"rounded-full",
"!w-[40px]",
"!h-[40px]"
);
}}
>
{article?.map((newsItem: any) => (
<SwiperSlide key={newsItem.id}>
<Card isFooterBlurred radius="lg" className="border-none">
<img
// width={720}
// height={480}
alt="thumbnail"
src={
newsItem?.thumbnailUrl
? newsItem?.thumbnailUrl
: "no-image.jpg"
}
className="!h-[25vh] object-cover rounded-none"
/>
<CardFooter className="before:bg-white/10 border-white/20 border-1 overflow-hidden py-1 md:absolute bottom-1 shadow-small z-10">
<div className="text-white">
<Link href={`/e-majalah-polri/detail/${newsItem.id}`}>
<p className="text-left font-semibold text-sm">
{textEllipsis(newsItem.title, 40)}
</p>
</Link>
<div className="flex flex-row gap-1">
<p className="py-[2px] text-left text-xs">
{convertDateFormat(newsItem.createdAt)} WIB
</p>
<p className="flex items-center gap-1 text-xs">
<EyeIcon className="text-white" />
{newsItem.viewCount === null ? 0 : newsItem.viewCount}
</p>
</div>
</div>
</CardFooter>
</Card>
</SwiperSlide>
))}
</Swiper>
</div>
</div>
<Link
className="flex items-center gap-2 text-[#bb3523] mt-3"
href="/e-majalah-polri/daftar-majalah"
>
Lihat Semua <ChevronRightIcon color="[#bb3523]" />
</Link>
</div>
);
}