@@ -54,23 +54,43 @@ async function Post({ params }: { params: Params }) {
5454 await Promise . resolve ( getPost ( slug ) ) ;
5555
5656 return (
57- < main className = { cn ( 'mb-4 flex w-full flex-col gap-4 px-6 py-2' ) } >
58- < div className = { cn ( 'border-b' ) } >
59- < div className = { cn ( 'mb-4 flex flex-row gap-1' ) } >
60- { category . map ( ( item : Category ) => (
61- < TagChip key = { item . id } color = { item . color } label = { item . name } />
62- ) ) }
63- </ div >
64- < h1 className = { cn ( 'mb-1 text-2xl' ) } > { title } </ h1 >
65- < p className = { cn ( 'mb-4 text-neutral-400' ) } > { description } </ p >
66- < p className = { cn ( 'text-neutral-400' ) } >
67- { lastEditedTime . format ( 'YYYY-MM-DD' ) }
68- </ p >
69- </ div >
70- < TableOfContents toc = { toc } />
71- { /* biome-ignore lint/security/noDangerouslySetInnerHtml: This is Notion content */ }
72- < div dangerouslySetInnerHTML = { { __html : content } } id = "post" />
73- < Giscus />
57+ < main className = { cn ( 'flex w-full flex-col items-center py-12' ) } >
58+ < article className = { cn ( 'w-full max-w-3xl' ) } >
59+ < header
60+ className = { cn (
61+ 'mb-12 flex flex-col gap-6 border-b border-border/40 pb-8' ,
62+ ) }
63+ >
64+ < div className = { cn ( 'flex flex-row flex-wrap gap-2' ) } >
65+ { category . map ( ( item : Category ) => (
66+ < TagChip key = { item . id } color = { item . color } label = { item . name } />
67+ ) ) }
68+ </ div >
69+ < h1
70+ className = { cn (
71+ 'text-3xl font-bold leading-tight tracking-tight text-balance sm:text-4xl lg:text-5xl' ,
72+ 'bg-gradient-to-br from-foreground to-foreground/80 bg-clip-text' ,
73+ ) }
74+ >
75+ { title }
76+ </ h1 >
77+ < p className = { cn ( 'text-lg text-muted-foreground leading-relaxed' ) } >
78+ { description }
79+ </ p >
80+ < time className = { cn ( 'text-sm text-muted-foreground/80' ) } >
81+ { lastEditedTime . format ( 'YYYY년 MM월 DD일' ) }
82+ </ time >
83+ </ header >
84+ < TableOfContents toc = { toc } />
85+ { /* biome-ignore lint/security/noDangerouslySetInnerHtml: Notion content requires HTML rendering */ }
86+ { /* biome-ignore lint/a11y/useValidAriaValues: Static ID used for post styling */ }
87+ < div
88+ className = { cn ( 'prose prose-lg dark:prose-invert max-w-none' ) }
89+ dangerouslySetInnerHTML = { { __html : content } }
90+ id = "post"
91+ />
92+ < Giscus />
93+ </ article >
7494 </ main >
7595 ) ;
7696}
0 commit comments