| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  | import { normalizeDate } from "@/lib/date"; | 
					
						
							| 
									
										
										
										
											2023-12-29 20:07:19 +08:00
										 |  |  | import { fontSourceSerifScreenCN } from "@/styles/font"; | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  | import { TPostListItem } from "@/types/post-list"; | 
					
						
							|  |  |  | import { nanoid } from "nanoid"; | 
					
						
							|  |  |  | import Link from "next/link"; | 
					
						
							| 
									
										
										
										
											2023-12-29 19:55:54 +08:00
										 |  |  | import { TagBadge } from "./TagBadge"; | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export const PostList = (props: { data: TPostListItem[] }) => { | 
					
						
							|  |  |  |   return ( | 
					
						
							|  |  |  |     <div> | 
					
						
							|  |  |  |       {props.data.map((postListItem, index) => ( | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |         <Link className="cursor-pointer" href={`/blog/${postListItem.id}`} key={`post-list-${nanoid()}`}> | 
					
						
							|  |  |  |           <div | 
					
						
							|  |  |  |             className={`${fontSourceSerifScreenCN.className} flex flex-col justify-center ${ | 
					
						
							|  |  |  |               index !== props.data.length - 1 && "border-b" | 
					
						
							|  |  |  |             } border-gray-200 hover:bg-gray-50 dark:hover:bg-gray-950 dark:border-gray-800 p-3`}
 | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             <div className="flex-center flex flex-col py-2"> | 
					
						
							|  |  |  |               <h3 className="mx-auto text-lg font-extrabold capitalize">{postListItem.frontMatter.title}</h3> | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  |               {postListItem.frontMatter.subtitle && ( | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |                 <div className="mx-auto text-base font-semibold capitalize text-gray-700 dark:text-gray-300"> | 
					
						
							|  |  |  |                   {postListItem.frontMatter.subtitle} | 
					
						
							|  |  |  |                 </div> | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  |               )} | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |             <div className="text-center">{normalizeDate(postListItem.frontMatter.time)}</div> | 
					
						
							|  |  |  |             {postListItem.frontMatter.summary && ( | 
					
						
							|  |  |  |               <div className="flex my-1 justify-center"> | 
					
						
							|  |  |  |                 <p>{postListItem.frontMatter.summary}</p> | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |             )} | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |             {postListItem.frontMatter.tags && ( | 
					
						
							|  |  |  |               <div className="my-2 flex justify-center"> | 
					
						
							|  |  |  |                 {postListItem.frontMatter.tags.map((tagName) => ( | 
					
						
							|  |  |  |                   <TagBadge name={tagName} size="sm" key={`tags-${nanoid()}`} /> | 
					
						
							|  |  |  |                 ))} | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |             )} | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         </Link> | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  |       ))} | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | }; |