@@ -12,51 +12,80 @@ const posts = (await getCollection("medical")).sort(
1212---
1313
1414<Layout >
15- <!-- Hero -->
16- <section class =" hero" >
17- <h1 >Cody Nguyen</h1 >
18- <p class =" text-lg leading-relaxed max-w-prose" >
19- { SITE_DESCRIPTION }
20- </p >
21- <p class =" leading-relaxed max-w-prose" >
22- I like working on problems that sit between fields — finding where
23- software can unlock something useful in medicine, robotics, ML, or
24- finance.
25- </p >
26- <div class =" flex flex-wrap gap-4 mt-4" >
27- {
28- Object .entries (SOCIAL_LINKS ).map (([key , value ]) => {
29- if (! value ) return null ;
30- return (
15+ <!-- Splash -->
16+ <section class =" flex items-center gap-8" >
17+ <div >
18+ <h1 >
19+ <span class =" fancy" >Cody Nguyen,</span > building at the intersection of
20+ fields.
21+ </h1 >
22+ <p >
23+ I like working on problems that sit between fields — finding where
24+ software can unlock something useful in medicine, robotics, ML, or
25+ finance.
26+ </p >
27+ <div class =" flex flex-wrap gap-4 mt-4" >
28+ {
29+ Object .entries (SOCIAL_LINKS ).map (([key , value ]) => {
30+ if (! value ) return null ;
31+ return (
32+ <a
33+ href = { value }
34+ rel = " noopener noreferrer"
35+ target = " _blank"
36+ aria-label = { key }
37+ title = { key }
38+ class = " inline-flex items-center gap-1.5 text-gray text-sm no-underline hover:text-secondary transition-colors"
39+ >
40+ <Fragment
41+ set :html = { getSizedIcon (key as keyof typeof icons , 18 ) ?? " " }
42+ />
43+ <span >{ key } </span >
44+ </a >
45+ );
46+ })
47+ }
48+ {
49+ BLOG_CONFIG .email && (
3150 <a
32- href = { value }
33- rel = " noopener noreferrer"
34- target = " _blank"
35- aria-label = { key }
36- title = { key }
51+ href = { BLOG_CONFIG .email }
52+ aria-label = " Email"
53+ title = " Email"
3754 class = " inline-flex items-center gap-1.5 text-gray text-sm no-underline hover:text-secondary transition-colors"
3855 >
39- <Fragment
40- set :html = { getSizedIcon (key as keyof typeof icons , 18 ) ?? " " }
41- />
42- <span >{ key } </span >
56+ <Fragment set :html = { getSizedIcon (" Email" , 18 )} />
57+ <span >Email</span >
4358 </a >
44- );
45- })
46- }
47- {
48- BLOG_CONFIG .email && (
49- <a
50- href = { BLOG_CONFIG .email }
51- aria-label = " Email"
52- title = " Email"
53- class = " inline-flex items-center gap-1.5 text-gray text-sm no-underline hover:text-secondary transition-colors"
54- >
55- <Fragment set :html = { getSizedIcon (" Email" , 18 )} />
56- <span >Email</span >
57- </a >
58- )
59- }
59+ )
60+ }
61+ </div >
62+ </div >
63+ <div class =" relative hidden md:block w-full max-w-md shrink-0" >
64+ <div
65+ class =" absolute -top-4 -right-4 w-full h-full bg-elevated border border-primary/20"
66+ aria-hidden =" true"
67+ >
68+ </div >
69+ <div class =" relative bg-white border border-primary/20" >
70+ <div
71+ class =" flex items-center gap-1.5 border-b border-primary/10 px-4 py-3"
72+ >
73+ <span class =" w-2.5 h-2.5 rounded-full bg-primary/60" ></span >
74+ <span class =" w-2.5 h-2.5 rounded-full bg-primary/35" ></span >
75+ <span class =" w-2.5 h-2.5 rounded-full bg-primary/15" ></span >
76+ <span class =" ml-3 flex-1 h-4 bg-elevated" ></span >
77+ </div >
78+ <div class =" p-5 flex flex-col gap-3" >
79+ <div class =" h-3 w-2/3 bg-primary/20" ></div >
80+ <div class =" h-3 w-1/2 bg-primary/10" ></div >
81+ <div class =" h-24 w-full bg-secondary/20 mt-2" ></div >
82+ <div class =" flex gap-3 mt-2" >
83+ <div class =" h-16 flex-1 bg-elevated border border-primary/10" ></div >
84+ <div class =" h-16 flex-1 bg-elevated border border-primary/10" ></div >
85+ <div class =" h-16 flex-1 bg-elevated border border-primary/10" ></div >
86+ </div >
87+ </div >
88+ </div >
6089 </div >
6190 </section >
6291
@@ -115,9 +144,6 @@ const posts = (await getCollection("medical")).sort(
115144</Layout >
116145
117146<style >
118- .hero h1 {
119- margin-bottom: 0.5rem;
120- }
121147 .domain-grid {
122148 display: grid;
123149 grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
0 commit comments