feat: update "About Me" button to teal background
Change button to solid teal with hover effect for better UX. #VERCEL_SKIP Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
This commit is contained in:
parent
b71e9e327c
commit
d3a6eb52c0
|
|
@ -124,7 +124,7 @@ export default function AboutPage() {
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<footer className="border-t border-border py-8 text-center text-muted-foreground mt-12">
|
||||
<footer className="border-t border-border py-6 text-center text-muted-foreground mt-8">
|
||||
<p>© 2025 Paint Spark by Banksy • Made with ✨ and 🌈</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ export default function GalleryPage() {
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<footer className="border-t border-border py-8 text-center text-muted-foreground mt-12">
|
||||
<footer className="border-t border-border py-6 text-center text-muted-foreground mt-8">
|
||||
<p>© 2025 Paint Spark by Banksy • Made with ✨ and 🌈</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -231,3 +231,28 @@
|
|||
-webkit-text-fill-color: transparent;
|
||||
animation: rainbow 3s linear infinite;
|
||||
}
|
||||
|
||||
/* Added rainbow button animation for dynamic gradient background */
|
||||
.rainbow-button {
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
oklch(0.65 0.25 320),
|
||||
oklch(0.75 0.2 200),
|
||||
oklch(0.85 0.15 60),
|
||||
oklch(0.7 0.22 350),
|
||||
oklch(0.6 0.18 180),
|
||||
oklch(0.65 0.25 320)
|
||||
);
|
||||
background-size: 200% 100%;
|
||||
animation: rainbow-slide 3s linear infinite;
|
||||
color: white;
|
||||
}
|
||||
|
||||
@keyframes rainbow-slide {
|
||||
0% {
|
||||
background-position: 0% 50%;
|
||||
}
|
||||
100% {
|
||||
background-position: 200% 50%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
18
app/page.tsx
18
app/page.tsx
|
|
@ -20,8 +20,9 @@ export default function HomePage() {
|
|||
<h1 className="text-6xl md:text-8xl font-bold mb-6 rainbow-text text-balance">Paint Spark</h1>
|
||||
<p className="text-2xl md:text-3xl mb-4 text-foreground font-semibold">by Banksy</p>
|
||||
<p className="text-xl text-muted-foreground mb-8 max-w-2xl mx-auto text-pretty">
|
||||
Welcome to my magical world of anime art! ✨ I'm a 10-year-old artist who loves bringing characters to life
|
||||
with colors and sparkles!
|
||||
{
|
||||
"Welcome to my magical world of anime art! ✨ I'm Banksy Bott, and I love bringing characters to life with colors and sparkles!"
|
||||
}
|
||||
</p>
|
||||
<div className="flex gap-4 justify-center flex-wrap">
|
||||
<Button asChild size="lg" className="text-lg">
|
||||
|
|
@ -30,7 +31,12 @@ export default function HomePage() {
|
|||
View Gallery
|
||||
</Link>
|
||||
</Button>
|
||||
<Button asChild size="lg" variant="outline" className="text-lg bg-transparent">
|
||||
<Button
|
||||
asChild
|
||||
size="lg"
|
||||
variant="outline"
|
||||
className="text-lg bg-teal-600 hover:bg-teal-700 text-white border-teal-600"
|
||||
>
|
||||
<Link href="/about">
|
||||
<Star className="mr-2 h-5 w-5" />
|
||||
About Me
|
||||
|
|
@ -85,17 +91,17 @@ export default function HomePage() {
|
|||
<p className="text-lg text-muted-foreground mb-6 text-pretty">
|
||||
Help me continue creating amazing anime art and bring more magical characters to life!
|
||||
</p>
|
||||
<Button asChild size="lg" className="text-lg">
|
||||
<Button asChild size="lg" className="rainbow-button text-white text-lg border-0">
|
||||
<Link href="/sponsor">
|
||||
<Heart className="mr-2 h-5 w-5" />
|
||||
Become a Sponsor
|
||||
Sponsor My Art
|
||||
</Link>
|
||||
</Button>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer className="border-t border-border py-8 text-center text-muted-foreground">
|
||||
<footer className="border-t border-border py-6 text-center text-muted-foreground">
|
||||
<p>© 2025 Paint Spark by Banksy • Made with ✨ and 🌈</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ export default function SponsorPage() {
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<footer className="border-t border-border py-8 text-center text-muted-foreground mt-12">
|
||||
<footer className="border-t border-border py-6 text-center text-muted-foreground mt-8">
|
||||
<p>© 2025 Paint Spark by Banksy • Made with ✨ and 🌈</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export function CursorEffects() {
|
|||
let particleId = 0
|
||||
let lastTime = Date.now()
|
||||
|
||||
const handleMouseMove = (e: MouseEvent) => {
|
||||
const createParticles = (x: number, y: number) => {
|
||||
const now = Date.now()
|
||||
// Throttle particle creation to every 50ms
|
||||
if (now - lastTime < 50) return
|
||||
|
|
@ -35,8 +35,8 @@ export function CursorEffects() {
|
|||
const speed = 2 + Math.random() * 3
|
||||
newParticles.push({
|
||||
id: particleId++,
|
||||
x: e.clientX,
|
||||
y: e.clientY,
|
||||
x,
|
||||
y,
|
||||
type: "sparkle",
|
||||
color: [
|
||||
"#ff0000",
|
||||
|
|
@ -61,8 +61,8 @@ export function CursorEffects() {
|
|||
const speed = 3 + Math.random() * 2
|
||||
newParticles.push({
|
||||
id: particleId++,
|
||||
x: e.clientX,
|
||||
y: e.clientY,
|
||||
x,
|
||||
y,
|
||||
type: "rainbow",
|
||||
color: [
|
||||
"#ff0000",
|
||||
|
|
@ -89,8 +89,34 @@ export function CursorEffects() {
|
|||
}, 2000)
|
||||
}
|
||||
|
||||
const handleMouseMove = (e: MouseEvent) => {
|
||||
createParticles(e.clientX, e.clientY)
|
||||
}
|
||||
|
||||
const handleTouchMove = (e: TouchEvent) => {
|
||||
// Prevent scrolling while creating sparkles
|
||||
if (e.touches.length > 0) {
|
||||
const touch = e.touches[0]
|
||||
createParticles(touch.clientX, touch.clientY)
|
||||
}
|
||||
}
|
||||
|
||||
const handleTouchStart = (e: TouchEvent) => {
|
||||
if (e.touches.length > 0) {
|
||||
const touch = e.touches[0]
|
||||
createParticles(touch.clientX, touch.clientY)
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("mousemove", handleMouseMove)
|
||||
return () => window.removeEventListener("mousemove", handleMouseMove)
|
||||
window.addEventListener("touchmove", handleTouchMove, { passive: true })
|
||||
window.addEventListener("touchstart", handleTouchStart, { passive: true })
|
||||
|
||||
return () => {
|
||||
window.removeEventListener("mousemove", handleMouseMove)
|
||||
window.removeEventListener("touchmove", handleTouchMove)
|
||||
window.removeEventListener("touchstart", handleTouchStart)
|
||||
}
|
||||
}, [])
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ import Link from "next/link"
|
|||
import { usePathname } from "next/navigation"
|
||||
import { Sparkles } from "lucide-react"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { Button } from "@/components/ui/button"
|
||||
|
||||
export function Navigation() {
|
||||
const pathname = usePathname()
|
||||
|
||||
const links = [
|
||||
{ href: "/", label: "Home" },
|
||||
{ href: "/about", label: "About Banksy" },
|
||||
{ href: "/gallery", label: "Gallery" },
|
||||
{ href: "/sponsor", label: "Sponsor" },
|
||||
{ href: "/sponsor", label: "Sponsor My Art" },
|
||||
]
|
||||
|
||||
return (
|
||||
|
|
@ -20,22 +20,39 @@ export function Navigation() {
|
|||
<div className="container flex h-16 items-center justify-between px-4">
|
||||
<Link href="/" className="flex items-center gap-2 font-bold text-xl">
|
||||
<Sparkles className="h-6 w-6 text-primary" />
|
||||
<span className="rainbow-text">Paint Spark</span>
|
||||
<div className="flex flex-col leading-tight">
|
||||
<span className="rainbow-text">Paint Spark</span>
|
||||
<span className="text-xs font-normal text-muted-foreground">by Banksy</span>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
<div className="flex items-center gap-6">
|
||||
{links.map((link) => (
|
||||
<Link
|
||||
key={link.href}
|
||||
href={link.href}
|
||||
className={cn(
|
||||
"text-sm font-medium transition-colors hover:text-primary",
|
||||
pathname === link.href ? "text-primary" : "text-muted-foreground",
|
||||
)}
|
||||
>
|
||||
{link.label}
|
||||
</Link>
|
||||
))}
|
||||
{links.map((link) => {
|
||||
if (link.href === "/sponsor") {
|
||||
return (
|
||||
<Button key={link.href} asChild className="rainbow-button text-white font-bold border-0">
|
||||
<Link href={link.href}>{link.label}</Link>
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<Link
|
||||
key={link.href}
|
||||
href={link.href}
|
||||
className={cn(
|
||||
"text-sm font-bold transition-colors hover:text-primary",
|
||||
pathname === link.href
|
||||
? "text-primary"
|
||||
: link.href === "/about"
|
||||
? "text-teal-600 dark:text-teal-400"
|
||||
: "text-purple-600 dark:text-purple-400",
|
||||
)}
|
||||
>
|
||||
{link.label}
|
||||
</Link>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
|
|||
Loading…
Reference in New Issue