diff --git a/public/img/thumbnail/blog-thumbnail.png b/public/img/thumbnail/blog-thumbnail.png index e81f6b0..53b7a36 100644 Binary files a/public/img/thumbnail/blog-thumbnail.png and b/public/img/thumbnail/blog-thumbnail.png differ diff --git a/public/img/thumbnail/chim-planet-thumbnail.png b/public/img/thumbnail/chim-planet-thumbnail.png index 3816ab4..db9b1a3 100644 Binary files a/public/img/thumbnail/chim-planet-thumbnail.png and b/public/img/thumbnail/chim-planet-thumbnail.png differ diff --git a/public/img/thumbnail/default-thumbnail.png b/public/img/thumbnail/default-thumbnail.png index 3de3a56..fd839b2 100644 Binary files a/public/img/thumbnail/default-thumbnail.png and b/public/img/thumbnail/default-thumbnail.png differ diff --git a/public/img/thumbnail/discord-bot-thumbnail.png b/public/img/thumbnail/discord-bot-thumbnail.png index ca940b8..561f00d 100644 Binary files a/public/img/thumbnail/discord-bot-thumbnail.png and b/public/img/thumbnail/discord-bot-thumbnail.png differ diff --git a/public/img/thumbnail/fandom-k-thumbnail.png b/public/img/thumbnail/fandom-k-thumbnail.png index 83f3dc4..cc1d241 100644 Binary files a/public/img/thumbnail/fandom-k-thumbnail.png and b/public/img/thumbnail/fandom-k-thumbnail.png differ diff --git a/public/img/thumbnail/global-nomad-thumbnail.png b/public/img/thumbnail/global-nomad-thumbnail.png index 1a2cf4d..f16319c 100644 Binary files a/public/img/thumbnail/global-nomad-thumbnail.png and b/public/img/thumbnail/global-nomad-thumbnail.png differ diff --git a/public/img/thumbnail/maple-helper-thumbnail.png b/public/img/thumbnail/maple-helper-thumbnail.png index fffb665..59b166d 100644 Binary files a/public/img/thumbnail/maple-helper-thumbnail.png and b/public/img/thumbnail/maple-helper-thumbnail.png differ diff --git a/public/img/thumbnail/sprint-bootcamp-thumbnail.png b/public/img/thumbnail/sprint-bootcamp-thumbnail.png index c2cea01..08a5289 100644 Binary files a/public/img/thumbnail/sprint-bootcamp-thumbnail.png and b/public/img/thumbnail/sprint-bootcamp-thumbnail.png differ diff --git a/public/img/thumbnail/the-julge-thumbnail.png b/public/img/thumbnail/the-julge-thumbnail.png index 437eac8..0744b62 100644 Binary files a/public/img/thumbnail/the-julge-thumbnail.png and b/public/img/thumbnail/the-julge-thumbnail.png differ diff --git a/src/app/blog/_components/SeriesAside/index.tsx b/src/app/blog/_components/SeriesAside/index.tsx index f5b367e..7891f50 100644 --- a/src/app/blog/_components/SeriesAside/index.tsx +++ b/src/app/blog/_components/SeriesAside/index.tsx @@ -33,8 +33,7 @@ const SeriesAside = ({ series }: SeriesAsideProps) => { {series.map((seriesItem) => (
  • { return getPostMeta(ref.category, ref.slug); }); + const firstPost = posts[posts.length - 1]; + return (
    -
    +
    +
    + + + 블로그 홈 + +

    + {currentSeriesInfo?.seriesName} +

    +
    - - 블로그 홈 + 첫 게시글 보기 -

    - {currentSeriesInfo?.seriesName} -

    { - const { category, slug, filePath } = fileInfo; +interface ParsedPost { + fileInfo: PostFileInfo; + data: { [key: string]: string }; + content: string; +} - const fileContents = fs.readFileSync(filePath, "utf8"); - const { data, content } = parseMarkdownFrontmatter(fileContents); +const processSinglePost = async ({ fileInfo, data, content }: ParsedPost) => { + const { category, slug } = fileInfo; const html = await convertMarkdownToHtml(content); const htmlOutPath = getPostHtmlFilePath(category, slug); @@ -55,7 +58,35 @@ export const buildAllPosts = async () => { fs.mkdirSync(path.join(POSTS_JSON_DIR, category), { recursive: true }); }); - const buildTasks = postFiles.map((fileInfo) => processSinglePost(fileInfo)); + const parsedPosts: ParsedPost[] = postFiles.map((fileInfo) => { + const fileContents = fs.readFileSync(fileInfo.filePath, "utf8"); + const { data, content } = parseMarkdownFrontmatter(fileContents); + return { fileInfo, data, content }; + }); + + const seriesMap: Record = {}; + parsedPosts.forEach((post) => { + const series = post.data.series; + if (series) { + if (!seriesMap[series]) seriesMap[series] = []; + seriesMap[series].push(post); + } + }); + + Object.keys(seriesMap).forEach((series) => { + seriesMap[series] + .sort((a, b) => { + const dateA = new Date(a.data.date || 0).getTime(); + const dateB = new Date(b.data.date || 0).getTime(); + return dateA - dateB; + }) + .forEach((post, index) => { + const originalTitle = post.data.title || "Default Title"; + post.data.title = `[${series} - ${index + 1}] ${originalTitle}`; + }); + }); + + const buildTasks = parsedPosts.map((post) => processSinglePost(post)); await Promise.all(buildTasks); diff --git a/src/styles/typography.css b/src/styles/typography.css index 8e0c1dc..191e470 100644 --- a/src/styles/typography.css +++ b/src/styles/typography.css @@ -78,7 +78,7 @@ @utility typo-18-b { font-size: 18px; font-weight: 700; - line-height: 1; + line-height: 1.2; letter-spacing: -0.025em; }