@@ -4,7 +4,7 @@ import { redirect } from "next/navigation";
44import { auth , signOut } from "@/lib/auth" ;
55import { Button } from "@/components/ui/button" ;
66import {
7- PageHeader ,
7+ HeroBand ,
88 PageShell ,
99 UtilityCard ,
1010} from "@/components/layout/AppChrome" ;
@@ -22,25 +22,60 @@ export default async function HomePage() {
2222 }
2323
2424 return (
25- < PageShell width = "narrow" surface = "parchment" >
26- < PageHeader
27- align = "center"
25+ < >
26+ < HeroBand
2827 eyebrow = "Animu Running Archive"
2928 title = "뮤런"
3029 description = { < > 안녕하세요, { session . user . name } . 오늘의 러닝 기록을 남겨요.</ > }
31- />
32-
33- < UtilityCard className = "flex flex-col gap-3" >
34- < Button asChild size = "lg" className = "w-full" >
35- < Link href = "/sessions/new" > 새 세션 만들기</ Link >
36- </ Button >
37- < Button asChild variant = "outline" size = "lg" className = "w-full" >
38- < Link href = "/sessions" > 전체 아카이브</ Link >
39- </ Button >
40- < Button asChild variant = "secondary" size = "lg" className = "w-full" >
41- < Link href = "/me" > 내 기록</ Link >
42- </ Button >
43- </ UtilityCard >
30+ actions = {
31+ < >
32+ < Button asChild size = "lg" >
33+ < Link href = "/sessions/new" > 새 세션 만들기</ Link >
34+ </ Button >
35+ < Button asChild variant = "outline" size = "lg" className = "border-white bg-transparent text-white" >
36+ < Link href = "/sessions" > 아카이브 보기</ Link >
37+ </ Button >
38+ </ >
39+ }
40+ >
41+ < div className = "grid gap-px overflow-hidden rounded-[18px] border border-white/10 bg-white/10 sm:grid-cols-3" >
42+ < HeroStat label = "Surface" value = "Parchment" />
43+ < HeroStat label = "Accent" value = "Action Blue" />
44+ < HeroStat label = "Rhythm" value = "Run log" />
45+ </ div >
46+ </ HeroBand >
47+
48+ < PageShell width = "content" surface = "parchment" >
49+
50+ < div className = "grid gap-4 md:grid-cols-3" >
51+ < UtilityCard className = "flex flex-col gap-4" >
52+ < span className = "font-display text-[28px] font-semibold leading-[1.14] tracking-[0.196px]" > Create</ span >
53+ < p className = "font-text text-sm leading-[1.43] tracking-[-0.224px] text-apple-muted-48" >
54+ 오늘의 세션을 만들고 사진과 기록을 이어 붙입니다.
55+ </ p >
56+ < Button asChild className = "mt-auto w-full" >
57+ < Link href = "/sessions/new" > 새 세션</ Link >
58+ </ Button >
59+ </ UtilityCard >
60+ < UtilityCard className = "flex flex-col gap-4" >
61+ < span className = "font-display text-[28px] font-semibold leading-[1.14] tracking-[0.196px]" > Archive</ span >
62+ < p className = "font-text text-sm leading-[1.43] tracking-[-0.224px] text-apple-muted-48" >
63+ 날짜, 장소, 멤버로 지난 러닝의 맥락을 다시 찾습니다.
64+ </ p >
65+ < Button asChild variant = "outline" className = "mt-auto w-full" >
66+ < Link href = "/sessions" > 전체 아카이브</ Link >
67+ </ Button >
68+ </ UtilityCard >
69+ < UtilityCard className = "flex flex-col gap-4" >
70+ < span className = "font-display text-[28px] font-semibold leading-[1.14] tracking-[0.196px]" > Me</ span >
71+ < p className = "font-text text-sm leading-[1.43] tracking-[-0.224px] text-apple-muted-48" >
72+ 누적 거리와 페이스 흐름을 한 화면에서 확인합니다.
73+ </ p >
74+ < Button asChild variant = "secondary" className = "mt-auto w-full" >
75+ < Link href = "/me" > 내 기록</ Link >
76+ </ Button >
77+ </ UtilityCard >
78+ </ div >
4479
4580 < div className = "mt-8 flex items-center justify-center gap-5 font-text text-sm leading-[1.29] tracking-[-0.224px]" >
4681 { session . user . role === "ADMIN" && (
@@ -54,6 +89,20 @@ export default async function HomePage() {
5489 </ Button >
5590 </ form >
5691 </ div >
57- </ PageShell >
92+ </ PageShell >
93+ </ >
94+ ) ;
95+ }
96+
97+ function HeroStat ( { label, value } : { label : string ; value : string } ) {
98+ return (
99+ < div className = "bg-white/[0.03] p-5" >
100+ < span className = "block font-text text-xs uppercase leading-none tracking-[-0.12px] text-apple-body-muted" >
101+ { label }
102+ </ span >
103+ < span className = "mt-2 block font-display text-[21px] font-semibold leading-[1.19] tracking-[0.231px] text-white" >
104+ { value }
105+ </ span >
106+ </ div >
58107 ) ;
59108}
0 commit comments