Skip to content

Commit efadec7

Browse files
committed
feat: til archive 페이지 추가
1 parent 2020dce commit efadec7

File tree

8 files changed

+815
-18
lines changed

8 files changed

+815
-18
lines changed

.vitepress/config.mts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default defineConfig({
2323
nav: [
2424
{ text: "Home", link: "/" },
2525
{ text: "Blog", link: "/posts/" },
26+
{ text: "Archive", link: "/archive" },
2627
],
2728

2829
sidebar: {
@@ -42,6 +43,7 @@ export default defineConfig({
4243
},
4344

4445
rewrites: {
46+
"contents/archive/:slug*": "archive/:slug*",
4547
"contents/posts/index.md": "posts/index.md",
4648
"contents/posts/:slug*": "posts/:slug*",
4749
"contents/projects/index.md": "projects/index.md",

contents/archive/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script setup>
2+
import ArchiveContent from '@/components/ArchiveContent/ArchiveContent.vue'
3+
</script>
4+
5+
<ArchiveContent />

data/posts.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,21 @@
135135
}
136136
},
137137
{
138-
"url": "/posts/React/build-react-1",
138+
"url": "/posts/Web/indexed-db",
139139
"frontmatter": {
140-
"title": "DIY React 1 - JSX 마크업을 Virtual DOM 객체로 변환하기",
140+
"title": "IndexedDB 를 TypeOrm 처럼 사용하기",
141141
"createdAt": "2025-10-07T00:00:00.000Z",
142-
"category": "React",
143-
"description": "React의 핵심 개념과 동작 원리를 이해하기 위해, React를 직접 구현해보는 시리즈의 첫 번째 글입니다. 이번 글에서는 JSX 마크업을 Virtual DOM 객체로 변환하는 과정을 다룹니다."
142+
"category": "Web",
143+
"description": "IndexedDB 는 브라우저 내장 데이터베이스로, 대용량 데이터를 클라이언트에 저장할 수 있습니다. 이 글에서는 TypeOrm 스타일의 추상화를 통해 IndexedDB 를 더 쉽게 사용하는 방법을 소개합니다."
144144
}
145145
},
146146
{
147-
"url": "/posts/Web/indexed-db",
147+
"url": "/posts/React/build-react-1",
148148
"frontmatter": {
149-
"title": "IndexedDB 를 TypeOrm 처럼 사용하기",
149+
"title": "DIY React 1 - JSX 마크업을 Virtual DOM 객체로 변환하기",
150150
"createdAt": "2025-10-07T00:00:00.000Z",
151-
"category": "Web",
152-
"description": "IndexedDB 는 브라우저 내장 데이터베이스로, 대용량 데이터를 클라이언트에 저장할 수 있습니다. 이 글에서는 TypeOrm 스타일의 추상화를 통해 IndexedDB 를 더 쉽게 사용하는 방법을 소개합니다."
151+
"category": "React",
152+
"description": "React의 핵심 개념과 동작 원리를 이해하기 위해, React를 직접 구현해보는 시리즈의 첫 번째 글입니다. 이번 글에서는 JSX 마크업을 Virtual DOM 객체로 변환하는 과정을 다룹니다."
153153
}
154154
},
155155
{
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
.archive-content {
2+
max-width: 800px;
3+
margin: 0 auto;
4+
padding: 2rem 1rem;
5+
}
6+
7+
.til-header {
8+
text-align: center;
9+
margin-bottom: 3rem;
10+
}
11+
12+
.til-header h1 {
13+
font-size: 2.5rem;
14+
margin-bottom: 1rem;
15+
color: var(--vp-c-text-1);
16+
}
17+
18+
.til-description {
19+
font-size: 1.1rem;
20+
color: var(--vp-c-text-2);
21+
font-style: italic;
22+
}
23+
24+
@media (max-width: 768px) {
25+
.til-header {
26+
margin-bottom: 2rem;
27+
}
28+
29+
.til-header h1 {
30+
font-size: 1.5rem;
31+
}
32+
33+
.til-description {
34+
font-size: 1rem;
35+
}
36+
}
37+
38+
@media (max-width: 480px) {
39+
.til-header {
40+
margin-bottom: 1.5rem;
41+
}
42+
43+
.til-header h1 {
44+
font-size: 1.25rem;
45+
}
46+
47+
.til-description {
48+
font-size: 0.75rem;
49+
}
50+
}
51+
52+
.til-input-section {
53+
margin-bottom: 2rem;
54+
padding: 0 0.25rem;
55+
}
56+
57+
.til-input-section h3 {
58+
font-size: 1.3rem;
59+
margin-bottom: 1rem;
60+
color: var(--vp-c-text-1);
61+
}
62+
63+
.til-divider {
64+
height: 1px;
65+
background: var(--vp-c-divider);
66+
margin: 3rem 0;
67+
}
68+
69+
.til-list-section {
70+
margin-bottom: 2rem;
71+
}
72+
73+
.til-list-section h3 {
74+
font-size: 1.3rem;
75+
margin-bottom: 0.5rem;
76+
color: var(--vp-c-text-1);
77+
}
78+
79+
.til-list-description {
80+
font-size: 0.95rem;
81+
color: var(--vp-c-text-2);
82+
margin-bottom: 1.5rem;
83+
}
84+
85+
.giscus-input :deep(.giscus),
86+
.giscus-input :deep(iframe) {
87+
margin-top: 0;
88+
}
89+
90+
.giscus-frame {
91+
margin-top: 0;
92+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<script setup lang="ts">
2+
import { computed } from "vue";
3+
import { useData } from "vitepress";
4+
import Giscus from "@giscus/vue";
5+
import { GISCUS } from "@/constants/giscus";
6+
import "./ArchiveContent.css";
7+
8+
const { isDark, lang } = useData();
9+
10+
const theme = computed(() => (isDark.value ? "dark" : "light"));
11+
const mapping = "pathname";
12+
const uiLang = computed(() => (lang.value?.startsWith("ko") ? "ko" : "en"));
13+
</script>
14+
15+
<template>
16+
<div class="archive-content">
17+
<header class="til-header">
18+
<h1>📚 Archive of TIL</h1>
19+
<p class="til-description">매일 하나씩, 아주 작은 것이라도 배우고 기록합니다.</p>
20+
</header>
21+
22+
<section class="til-giscus-section">
23+
<Giscus
24+
class="giscus-comments"
25+
:repo="GISCUS.repo"
26+
:repo-id="GISCUS.repoId"
27+
:category="GISCUS.category"
28+
:category-id="GISCUS.categoryId"
29+
:mapping="mapping"
30+
strict="0"
31+
reactions-enabled="0"
32+
emit-metadata="0"
33+
input-position="top"
34+
:theme="theme"
35+
:lang="uiLang"
36+
crossorigin="anonymous"
37+
loading="lazy"
38+
/>
39+
</section>
40+
</div>
41+
</template>

src/components/PostComment/PostComment.vue

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ import { computed } from "vue";
33
import { useData } from "vitepress";
44
import Giscus from "@giscus/vue";
55
import { isProduction } from "@/constants/env";
6-
7-
const GISCUS = {
8-
repo: "toothlessdev/toothlessdev.github.io",
9-
repoId: "R_kgDOK8A2Yg",
10-
category: "General",
11-
categoryId: "DIC_kwDOK8A2Ys4Cv8uz",
12-
} as const;
6+
import { GISCUS } from "@/constants/giscus";
137
148
const { isDark, lang } = useData();
159

src/constants/giscus.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const GISCUS = {
2+
repo: "toothlessdev/toothlessdev.github.io",
3+
repoId: "R_kgDOK8A2Yg",
4+
category: "General",
5+
categoryId: "DIC_kwDOK8A2Ys4Cv8uz",
6+
} as const;

0 commit comments

Comments
 (0)