src/views/UseCase/index.jsx (88 lines of code) (raw):

import { useState } from "react"; import { ArrowRightOutlined } from "@ant-design/icons"; import { useNavigate } from "react-router-dom"; import { Button, Image, Typography } from "antd"; import { useTranslation } from "../../hooks/useTranslation"; import { useCase } from "./useCase"; import "./index.scss"; const UseCase = () => { const [more, setMore] = useState(false); const { locale, t } = useTranslation(); const navigate = useNavigate(); const { users, cases } = useCase(locale); return ( <section className="usecase"> <div className="usecase-top"> <div className="usecase-title"> <div>DolphinScheduler</div> <div className="gradient-text">Use Case</div> </div> <div className="usecase-top-bg"></div> </div> <div className="usecase-user"> <div className="usecase-user-title">{t("user_title")}</div> <div className={`usecase-user-list ${ users.length < 14 ? "usecase-user-list-less" : "" }`} > {users .filter((item, i) => (more ? true : i < 21)) .map((item, i) => ( <Image key={i} src={item} preview={false} /> ))} </div> {users.length >= 21 && !more && ( <div className="usecase-user-more"> <Button type="primary" shape="round" size="large" onClick={() => { setMore(true); }} > {t("show_more")} </Button> </div> )} </div> <div className="usecase-cases"> <div className="usecase-cases-title">Use Cases</div> <div className="usecase-cases-list"> {cases.map((item, i) => ( <div className="usecase-cases-item" key={i}> <Image preview={false} src={item.img} /> <Typography.Paragraph ellipsis={{ rows: 1 }} className="usecase-cases-item-title" > {item.title} </Typography.Paragraph> <Typography.Paragraph ellipsis={{ rows: 2 }} className="usecase-cases-item-text" > {item.desc} </Typography.Paragraph> <div className="usecase-cases-item-footer"> <div> {item.logo && <div className="usecase-cases-item-logo"></div>} </div> <Button type="link" onClick={() => { navigate(`/${locale}/blog/${item.name}`); }} > {t("explore_the_story")} <ArrowRightOutlined /> </Button> </div> </div> ))} </div> </div> </section> ); }; export default UseCase;