src/views/Home/Events.jsx (76 lines of code) (raw):
import { useEffect } from "react";
import { Button, Typography, Image } from "antd";
import { ArrowRightOutlined } from "@ant-design/icons";
import { useNavigate } from "react-router-dom";
import { useTranslation, useEvents } from "../../hooks";
import { formatDate } from "../../utils/formatDate";
import "./events.scss";
export const Events = () => {
const { locale, t } = useTranslation();
const navigate = useNavigate();
const { getEvents, homeEvents } = useEvents(locale);
useEffect(() => {
getEvents();
// eslint-disable-next-line
}, []);
return (
<div className="home-events">
{homeEvents.map(
(event, i) =>
event && (
<div className="home-events-item" key={i}>
<div className="home-events-item-img">
{event.imgName ? (
<Image
src={`/img/${event.imgName}`}
width={504}
height={278}
/>
) : (
""
)}
</div>
<div className="home-events-item-detail">
<div className="home-events-item-title">
<div>{i === 0 ? "Upcoming" : "Latest"}</div>
<div className="gradient-text">
{i === 0 ? "Events" : "Post"}
</div>
</div>
{event.startTime && i === 0 && (
<div className="home-events-item-time">
{formatDate(event.startTime, locale)}
</div>
)}
<Typography.Paragraph
className="home-events-item-text"
ellipsis={{ rows: 4 }}
>
{event.desc}
</Typography.Paragraph>
<div className="home-events-item-btn">
<Button
size="large"
shape="round"
onClick={() => {
if (i === 0) {
navigate(`/${locale}/events/${event.more}`);
return;
}
if (i === 1) {
navigate(`/${locale}/blog/${event.post.name}`);
return;
}
}}
>
{t("learn_more")}
<ArrowRightOutlined />
</Button>
</div>
</div>
</div>
)
)}
</div>
);
};