| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  | import { normalizeDate } from "@/lib/date"; | 
					
						
							|  |  |  | import { TPostListItem } from "@/types/post-list"; | 
					
						
							|  |  |  | import { nanoid } from "nanoid"; | 
					
						
							|  |  |  | import Link from "next/link"; | 
					
						
							| 
									
										
										
										
											2024-01-09 16:48:48 +08:00
										 |  |  | import { Badge } from "../ui/badge"; | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export const PostList = (props: { data: TPostListItem[] }) => { | 
					
						
							|  |  |  |   return ( | 
					
						
							|  |  |  |     <div> | 
					
						
							| 
									
										
										
										
											2024-01-09 16:48:48 +08:00
										 |  |  |       {props.data.map((postItem, index) => ( | 
					
						
							|  |  |  |         <Link className="cursor-pointer" href={`/blog/${postItem.id}`} key={`post-list-${nanoid()}`}> | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |           <div | 
					
						
							| 
									
										
										
										
											2024-01-09 16:48:48 +08:00
										 |  |  |             className={`flex flex-col justify-center ${ | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |               index !== props.data.length - 1 && "border-b" | 
					
						
							| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  |             } border-gray-200 hover:bg-gray-50 dark:hover:bg-gray-900 dark:border-gray-800 px-3 py-1`}
 | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |           > | 
					
						
							| 
									
										
										
										
											2024-08-12 13:39:19 +08:00
										 |  |  |             <div className={"post-list-caption-font flex-col py-3"}> | 
					
						
							| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  |               <div className="flex justify-center"> | 
					
						
							|  |  |  |                 <h3 className="mx-auto text-lg font-extrabold capitalize">{postItem.frontMatter.title}</h3> | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |               </div> | 
					
						
							| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  |               <div className="flex justify-center"> | 
					
						
							|  |  |  |                 {postItem.frontMatter.subtitle && ( | 
					
						
							|  |  |  |                   <div className="mx-auto text-sm font-bold capitalize text-gray-700 dark:text-gray-300"> | 
					
						
							|  |  |  |                     {postItem.frontMatter.subtitle} | 
					
						
							|  |  |  |                   </div> | 
					
						
							|  |  |  |                 )} | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |             </div> | 
					
						
							| 
									
										
										
										
											2024-01-15 11:44:48 +08:00
										 |  |  |             {postItem.frontMatter.summary && ( | 
					
						
							| 
									
										
										
										
											2024-08-12 13:39:19 +08:00
										 |  |  |               <div className={"content-font flex justify-center"}> | 
					
						
							| 
									
										
										
										
											2024-01-15 11:44:48 +08:00
										 |  |  |                 <p>{postItem.frontMatter.summary}</p> | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |             )} | 
					
						
							| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  |             <div className="flex flex-wrap justify-between my-2"> | 
					
						
							|  |  |  |               <div className="text-center flex flex-col justify-center italic text-sm my-auto mr-2 h-6"> | 
					
						
							|  |  |  |                 <div className="my-auto">{normalizeDate(postItem.frontMatter.time)}</div> | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |               {postItem.frontMatter.tags && ( | 
					
						
							|  |  |  |                 <div className="flex flex-wrap my-auto"> | 
					
						
							|  |  |  |                   {postItem.frontMatter.tags.map((tagName) => ( | 
					
						
							|  |  |  |                     <Badge | 
					
						
							|  |  |  |                       className="mr-1 my-1 text-gray-600 dark:text-gray-300" | 
					
						
							|  |  |  |                       key={`tags-${nanoid()}`} | 
					
						
							|  |  |  |                       variant={"secondary"} | 
					
						
							|  |  |  |                     > | 
					
						
							|  |  |  |                       {tagName} | 
					
						
							|  |  |  |                     </Badge> | 
					
						
							|  |  |  |                   ))} | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  |               )} | 
					
						
							|  |  |  |             </div> | 
					
						
							| 
									
										
										
										
											2024-01-08 18:18:21 +08:00
										 |  |  |           </div> | 
					
						
							|  |  |  |         </Link> | 
					
						
							| 
									
										
										
										
											2023-12-25 17:21:39 +08:00
										 |  |  |       ))} | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | }; |