@@ -4,19 +4,10 @@ import Link from 'next/link'
44import { track } from '@vercel/analytics'
55import GitHubIcon from '@/components/GitHubIcon'
66
7- const FONT = `var(--font-courier), system-ui, sans-serif`
8-
97interface SiteFooterProps {
108 compact ?: boolean
119}
1210
13- const linkStyle = {
14- fontFamily : FONT , fontSize : '13px' , color : 'var(--c-muted)' ,
15- textDecoration : 'none' , display : 'inline-flex' , alignItems : 'center' ,
16- gap : '4px' , transition : 'color 0.15s' ,
17- WebkitTapHighlightColor : 'transparent' ,
18- } as const
19-
2011function XIcon ( { size = 13 } : { size ?: number } ) {
2112 return (
2213 < svg width = { size } height = { size } viewBox = "0 0 24 24" fill = "currentColor" aria-hidden >
@@ -38,77 +29,63 @@ function InstagramIcon({ size = 13 }: { size?: number }) {
3829export default function SiteFooter ( { compact = false } : SiteFooterProps ) {
3930 return (
4031 < footer className = { `site-footer${ compact ? ' site-footer--compact' : '' } ` } >
41- < div style = { { display : 'flex' , alignItems : 'center' , justifyContent : 'center' , gap : '14px' , flexWrap : 'wrap' } } >
42- < Link
43- href = "/about"
44- style = { linkStyle }
45- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
46- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
47- >
48- About
49- </ Link >
50- < span style = { { color : 'var(--c-border-light)' , fontSize : '12px' } } > ·</ span >
51- < Link
52- href = "/legal"
53- style = { linkStyle }
54- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
55- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
56- >
57- Legal
58- </ Link >
59- < span style = { { color : 'var(--c-border-light)' , fontSize : '12px' } } > ·</ span >
60- < a
61- href = "https://github.com/dotsystemsdevs/commitmentissues"
62- target = "_blank"
63- rel = "noopener noreferrer"
64- style = { linkStyle }
65- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
66- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
67- >
68- < GitHubIcon size = { 13 } />
69- Open source
70- </ a >
71- < span style = { { color : 'var(--c-border-light)' , fontSize : '12px' } } > ·</ span >
72- < a
73- href = "https://x.com/Dotsystemsdevs"
74- target = "_blank"
75- rel = "noopener noreferrer"
76- aria-label = "Follow on X"
77- onClick = { ( ) => track ( 'social_clicked' , { platform : 'x' , from : 'footer' } ) }
78- style = { linkStyle }
79- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
80- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
81- >
82- < XIcon size = { 12 } />
83- X
84- </ a >
85- < span style = { { color : 'var(--c-border-light)' , fontSize : '12px' } } > ·</ span >
86- < a
87- href = "https://www.instagram.com/dotsystemsdevs/"
88- target = "_blank"
89- rel = "noopener noreferrer"
90- aria-label = "Follow on Instagram"
91- onClick = { ( ) => track ( 'social_clicked' , { platform : 'instagram' , from : 'footer' } ) }
92- style = { linkStyle }
93- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
94- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
95- >
96- < InstagramIcon size = { 13 } />
97- Instagram
98- </ a >
99- < span style = { { color : 'var(--c-border-light)' , fontSize : '12px' } } > ·</ span >
32+ < nav className = "footer-row" aria-label = "Site footer" >
33+ < div className = "footer-group" >
34+ < Link href = "/about" className = "footer-link" > About</ Link >
35+ < span className = "footer-sep" aria-hidden > ·</ span >
36+ < Link href = "/legal" className = "footer-link" > Legal</ Link >
37+ < span className = "footer-sep" aria-hidden > ·</ span >
38+ < a
39+ href = "https://github.com/dotsystemsdevs/commitmentissues"
40+ target = "_blank"
41+ rel = "noopener noreferrer"
42+ className = "footer-link"
43+ >
44+ < GitHubIcon size = { 13 } />
45+ < span className = "footer-link-text" > Open source</ span >
46+ </ a >
47+ </ div >
48+
49+ < span className = "footer-divider" aria-hidden />
50+
51+ < div className = "footer-group footer-group--socials" >
52+ < a
53+ href = "https://x.com/Dotsystemsdevs"
54+ target = "_blank"
55+ rel = "noopener noreferrer"
56+ aria-label = "Follow on X"
57+ onClick = { ( ) => track ( 'social_clicked' , { platform : 'x' , from : 'footer' } ) }
58+ className = "footer-link footer-link--icon"
59+ >
60+ < XIcon size = { 12 } />
61+ < span className = "footer-link-text" > X</ span >
62+ </ a >
63+ < a
64+ href = "https://www.instagram.com/dotsystemsdevs/"
65+ target = "_blank"
66+ rel = "noopener noreferrer"
67+ aria-label = "Follow on Instagram"
68+ onClick = { ( ) => track ( 'social_clicked' , { platform : 'instagram' , from : 'footer' } ) }
69+ className = "footer-link footer-link--icon"
70+ >
71+ < InstagramIcon size = { 13 } />
72+ < span className = "footer-link-text" > Instagram</ span >
73+ </ a >
74+ </ div >
75+
76+ < span className = "footer-divider" aria-hidden />
77+
10078 < a
10179 href = "https://buymeacoffee.com/dotdevs"
10280 target = "_blank"
10381 rel = "noopener noreferrer"
10482 onClick = { ( ) => track ( 'buy_me_a_coffin_clicked' , { from : 'footer' } ) }
105- style = { linkStyle }
106- onMouseEnter = { e => ( e . currentTarget . style . color = 'var(--c-ink)' ) }
107- onMouseLeave = { e => ( e . currentTarget . style . color = 'var(--c-muted)' ) }
83+ className = "footer-coffin"
10884 >
109- ⚰ Buy me a coffin
85+ < span aria-hidden > ⚰</ span >
86+ < span > Buy me a coffin</ span >
11087 </ a >
111- </ div >
88+ </ nav >
11289 </ footer >
11390 )
11491}
0 commit comments