blob: f016d29ffa3544b495df51325c7ead917506b08c [file] [log] [blame]
import React from "react";
import BlogInfo from "/info/Blog/EditorPickBlog.json";
import { BlogInfoType } from './types';
import dateFormatter from "./utils";
import apacheWelcomesDevLake from '/static/img/Blog/apache-welcomes-devLake.png';
import compatibilityOfApacheDevLakeWithPostgreSQL from '/static/img/Blog/compatibility-of-apache-devLake-with-postgreSQL.png';
import HowDevLakeIsUpAndRunning from '/static/img/Blog/How DevLake is up and running.png';
const coverImgArr = [HowDevLakeIsUpAndRunning, apacheWelcomesDevLake, compatibilityOfApacheDevLakeWithPostgreSQL];
const Card = function (props: {cardInfo: BlogInfoType, index: number}) {
const { cardInfo, index } = props;
return (
<a
href={cardInfo.detailLink}
className="flex flex-col sm:flex-row mobile:flex-col
w-[22.33vw] sm:max-w-[100%] sm:min-w-[100%]
p-[16px] bg-neutral-invert
rounded-[16px] shadow-lower hover:shadow-high hover:no-underline "
>
<img
src={coverImgArr[index]}
className="
w-[100%] sm:w-[43.05vw] sm:min-w-[43.05vw] mobile:w-[100%]
h-[12.76vw] sm:h-[24.21vw] mobile:h-[45.88vw]
bg-primary-300 rounded-[16px]"
/>
<div className="sm:ml-5 mobile:ml-[0]">
<div className="flex h-[90px] sm:h-[60px] items-center mt-3 sm:mt-[0] mb-3">
<p
className="
text-primary-800 text-heading2 sm:text-heading4 font-semibold
line-clamp-3 m-[0]
"
>
{cardInfo.title}
</p>
</div>
<div className="
text-neutral-300 text-label14Lake
">
{`${dateFormatter(cardInfo.publishTime)} · ${cardInfo.readTime}`}
</div>
<div className="mt-3 h-[50px] flex items-center">
<img src={cardInfo.authorImgUrl} className="w-[50px] h-[50px] mr-3 rounded-full bg-primary-500 shrink-0 uppercase flex justify-center items-center overflow-hidden text-white"
/>
<span className="text-primary-800 text-heading4 font-semibold">
{cardInfo.authorName}
</span>
</div>
</div>
</a>
);
};
export function EditorPick() {
return (
<div>
<h2
className="
text-primary-800 text-heading1 sm:text-heading3 font-semibold
mt-[60px] sm:mt-[32px] mobile:mt-[20px]
"
>
Editors Picks
</h2>
<div className="
flex sm:flex-col justify-between
mt-[64px] sm:mt-[32px] mobile:mt-[24px]
sm:gap-5 mobile:gap-4
">
{BlogInfo.data.map((card: BlogInfoType, index:number) => (
<Card cardInfo ={card} key={card.title} index={index}/>
))}
</div>
</div>
);
}