1+ 'use client'
2+
3+ import { useState } from 'react'
4+ import { FaLinkedin , FaEnvelope , FaCopy , FaCheck , FaLock } from 'react-icons/fa'
5+
16export default function Contact ( ) {
7+ const [ copied , setCopied ] = useState ( false )
8+ const email = 'hello@thomaslbohn.com'
9+ const linkedinUrl = 'https://www.linkedin.com/in/thomaslbohn'
10+
11+ const copyToClipboard = async ( ) => {
12+ try {
13+ await navigator . clipboard . writeText ( email )
14+ setCopied ( true )
15+ setTimeout ( ( ) => setCopied ( false ) , 2000 )
16+ } catch ( err ) {
17+ console . error ( 'Failed to copy email:' , err )
18+ }
19+ }
20+
221 return (
322 < div className = "container mx-auto px-4 py-12" >
423 < div className = "max-w-6xl mx-auto" >
@@ -8,49 +27,84 @@ export default function Contact() {
827 { '// CONTACT' }
928 </ h1 >
1029 < p className = "text-text-secondary leading-relaxed" >
11- Get in touch with me through any of these channels
30+ I'm always open to discussing new opportunities, technical challenges, or potential collaborations. Reach out through any of the channels below.
1231 </ p >
1332 </ div >
1433
1534 < div className = "space-y-6" >
16- < div className = "border border-border rounded-lg p-6 bg-bg-secondary" >
17- < h2 className = "text-2xl font-semibold mb-4 text-text-primary" > Email</ h2 >
18- < p className = "text-text-secondary mb-4" >
19- [Your email address will go here]
20- </ p >
35+ { /* Email Section */ }
36+ < div className = "border border-border rounded-lg p-6 bg-bg-secondary hover:border-accent/50 transition-colors" >
37+ < div className = "flex items-center gap-3 mb-4" >
38+ < div className = "p-2 bg-accent/10 rounded-lg" >
39+ < FaEnvelope className = "w-5 h-5 text-accent" />
40+ </ div >
41+ < h2 className = "text-2xl font-semibold text-text-primary" > Email</ h2 >
42+ </ div >
43+ < div className = "flex items-center gap-3 mb-4" >
44+ < p className = "text-text-primary text-lg font-mono" > { email } </ p >
45+ < button
46+ onClick = { copyToClipboard }
47+ className = "p-2 hover:bg-bg-primary rounded transition-colors group"
48+ title = "Copy email to clipboard"
49+ aria-label = "Copy email to clipboard"
50+ >
51+ { copied ? (
52+ < FaCheck className = "w-4 h-4 text-green-500" />
53+ ) : (
54+ < FaCopy className = "w-4 h-4 text-text-secondary group-hover:text-accent transition-colors" />
55+ ) }
56+ </ button >
57+ </ div >
2158 < a
22- href = " mailto:[your- email@example.com]"
23- className = "text-link hover:text-link-hover underline"
59+ href = { ` mailto:${ email } ` }
60+ className = "inline-flex items-center gap-2 text-link hover:text-link-hover underline transition-colors "
2461 >
62+ < FaEnvelope className = "w-4 h-4" />
2563 Send me an email
2664 </ a >
2765 </ div >
2866
29- < div className = "border border-border rounded-lg p-6 bg-bg-secondary" >
30- < h2 className = "text-2xl font-semibold mb-4 text-text-primary" > Social Media</ h2 >
31- < div className = "space-y-2 text-text-secondary" >
32- < p >
33- < a href = "#" className = "text-link hover:text-link-hover underline" >
34- [Social media link 1]
35- </ a >
36- </ p >
37- < p >
38- < a href = "#" className = "text-link hover:text-link-hover underline" >
39- [Social media link 2]
40- </ a >
41- </ p >
67+ { /* LinkedIn Section */ }
68+ < div className = "border border-border rounded-lg p-6 bg-bg-secondary hover:border-accent/50 transition-colors" >
69+ < div className = "flex items-center gap-3 mb-4" >
70+ < div className = "p-2 bg-[#0077b5]/10 rounded-lg" >
71+ < FaLinkedin className = "w-5 h-5 text-[#0077b5]" />
72+ </ div >
73+ < h2 className = "text-2xl font-semibold text-text-primary" > LinkedIn</ h2 >
4274 </ div >
75+ < p className = "text-text-secondary mb-4" >
76+ Connect with me on LinkedIn to stay updated with my professional journey and network.
77+ </ p >
78+ < a
79+ href = { linkedinUrl }
80+ target = "_blank"
81+ rel = "noopener noreferrer"
82+ className = "inline-flex items-center gap-2 text-link hover:text-link-hover underline transition-colors"
83+ >
84+ < FaLinkedin className = "w-4 h-4" />
85+ Visit my LinkedIn profile
86+ </ a >
4387 </ div >
4488
89+ { /* Other Section */ }
4590 < div className = "border border-border rounded-lg p-6 bg-bg-secondary" >
46- < h2 className = "text-2xl font-semibold mb-4 text-text-primary" > Other </ h2 >
47- < p className = "text-text-secondary" >
91+ < h2 className = "text-2xl font-semibold mb-4 text-text-primary" > More Ways to Connect </ h2 >
92+ < p className = "text-text-secondary mb-4 " >
4893 Check out my{ ' ' }
49- < a href = "/hub" className = "text-link hover:text-link-hover underline" >
94+ < a href = "/hub" className = "inline-flex items-center gap-1.5 text-link hover:text-link-hover underline" >
95+ < FaLock className = "w-3.5 h-3.5 opacity-70" />
5096 Hub page
5197 </ a >
52- { ' ' } for all the places you can find me online.
98+ { ' ' } for all the places you can find me online, including GitHub, Medium, Credly, and more .
5399 </ p >
100+ < div className = "mt-4 p-4 bg-accent/10 border border-accent/20 rounded-lg" >
101+ < p className = "text-sm text-text-secondary" >
102+ < span className = "font-semibold text-accent" > Note:</ span > The Hub is currently in{ ' ' }
103+ < span className = "font-semibold" > beta testing</ span > and{ ' ' }
104+ < span className = "font-semibold" > locked</ span > , but{ ' ' }
105+ < span className = "font-semibold text-accent" > coming soon</ span > !
106+ </ p >
107+ </ div >
54108 </ div >
55109 </ div >
56110 </ div >
0 commit comments