ずっと手を付けられていなかった記事一覧のデザインをいい感じにしたかった
前回の記事で記事の頭にアイキャッチが付くようにしたので、その仕組みを応用して、記事一覧にもアイキャッチが表示されるようにした。
GatsbyJSで作っているブログでアイキャッチが自動でいい感じに付くようにした
各記事のリンクはPostというコンポーネントを作っていて、GraphQLで取得した記事のデータを渡せばいい感じに表示してくれるようにしている。
import dayjs from "dayjs"
import { Link } from "gatsby"
import React from "react"
import Date from "./date"
import EyeCatch from "./eye_catch"
import styles from "./post.module.sass"
import TagLink from "./tag_link"
const Post = ({ slug, title, date, tags }) => (
<Link to={slug} key={slug}>
<div className={styles.wrapper}>
<EyeCatch tags={tags} size="medium" />
<div className={styles.content}>
<h3 className={styles.title}>{title}</h3>
<Date date={dayjs(date).format("YYYY-MM-DD")} />
{tags.map((tag) => {
return <TagLink>{tag}</TagLink>
})}
</div>
</div>
</Link>
)
export default Post
前回、EyeCatchというコンポーネントを作成していたのだが、そのコンポーネントに新たにsizeのオプションを渡せるようにして、記事トップで使う場合と記事一覧で使う場合との両方でタグに応じてアイコンや背景色を出し分ける部分を共通化できるようにした。
デザインがいい感じになってきたので、他の細かい部分も整えていきたい。