Skip to content

Commit 0cc2054

Browse files
davidagustinclaude
andcommitted
fix: move support strip into footer above copyright line
Merge Donation component into Footer so the support links appear directly above the copyright bar instead of as a separate section. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 264f842 commit 0cc2054

2 files changed

Lines changed: 50 additions & 4 deletions

File tree

src/App.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import type React from 'react';
33
import { useEffect, useState } from 'react';
44
import About from './components/About';
55
import Contact from './components/Contact';
6-
import Donation from './components/Donation';
76
import Footer from './components/Footer';
87
import Hero from './components/Hero';
98
import Navbar from './components/Navbar';
@@ -55,7 +54,6 @@ const App: React.FC = () => {
5554
<Projects />
5655
<Contact />
5756
</main>
58-
<Donation />
5957
<Footer />
6058
</div>
6159
);

src/components/Footer.tsx

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
import type React from 'react';
2-
import { FaGithub, FaLinkedin, FaEnvelope } from 'react-icons/fa';
2+
import { useState } from 'react';
3+
import { FaBitcoin, FaEthereum, FaGithub, FaLinkedin, FaEnvelope } from 'react-icons/fa';
34

45
const Footer: React.FC = () => {
56
const currentYear = new Date().getFullYear();
7+
const [copiedAddress, setCopiedAddress] = useState<string | null>(null);
8+
9+
const btcAddress = 'bc1qkq0g79l2c7s33h28qlevt7jffxajcd3';
10+
const ethAddress = '0x846a4460455f9db3c0b3cd1e0e7d1070288e88f2';
11+
12+
const copyToClipboard = (address: string, label: string) => {
13+
navigator.clipboard.writeText(address).then(() => {
14+
setCopiedAddress(label);
15+
setTimeout(() => setCopiedAddress(null), 2000);
16+
}).catch(() => {});
17+
};
618

719
return (
820
<footer className="bg-surface-950 text-surface-400 py-16 dark:border-t dark:border-surface-800">
@@ -68,7 +80,43 @@ const Footer: React.FC = () => {
6880
</div>
6981
</div>
7082

71-
<div className="border-t border-surface-800 pt-8 flex flex-col sm:flex-row justify-between items-center gap-4">
83+
{/* Support strip */}
84+
<div className="border-t border-surface-800 pt-6 pb-6 flex flex-col sm:flex-row items-center justify-between gap-3">
85+
<p className="text-xs text-surface-500">
86+
Support my projects
87+
</p>
88+
<div className="flex flex-wrap items-center gap-3">
89+
<a
90+
href="https://buy.stripe.com/fZucN5epreyuchqdtZfnO00"
91+
target="_blank"
92+
rel="noopener noreferrer"
93+
className="text-xs text-surface-400 hover:text-white transition-colors"
94+
>
95+
Stripe
96+
</a>
97+
<span className="text-surface-700">|</span>
98+
<button
99+
type="button"
100+
onClick={() => copyToClipboard(btcAddress, 'BTC')}
101+
className="flex items-center gap-1.5 text-xs text-surface-400 hover:text-white transition-colors"
102+
>
103+
<FaBitcoin className="text-xs" />
104+
{copiedAddress === 'BTC' ? 'Copied!' : 'BTC'}
105+
</button>
106+
<span className="text-surface-700">|</span>
107+
<button
108+
type="button"
109+
onClick={() => copyToClipboard(ethAddress, 'ETH')}
110+
className="flex items-center gap-1.5 text-xs text-surface-400 hover:text-white transition-colors"
111+
>
112+
<FaEthereum className="text-xs" />
113+
{copiedAddress === 'ETH' ? 'Copied!' : 'ETH'}
114+
</button>
115+
</div>
116+
</div>
117+
118+
{/* Copyright */}
119+
<div className="border-t border-surface-800 pt-6 flex flex-col sm:flex-row justify-between items-center gap-4">
72120
<p className="text-xs text-surface-500">
73121
&copy; {currentYear} David Agustin
74122
</p>

0 commit comments

Comments
 (0)