portfolio/src/sections/HobbiesSection.tsx

51 lines
1.9 KiB
TypeScript
Raw Normal View History

import { A } from "@solidjs/router";
import { For } from "solid-js";
import { ArrowRight } from "lucide-solid";
2026-04-22 15:40:44 +02:00
import { useScrollReveal } from "../hooks/useScrollReveal";
import { hobbies, hobbiesPage } from "../data/hobbies";
import { Icon } from "@/lib/icons";
export default function HobbiesSection() {
const revealRef = useScrollReveal<HTMLDivElement>({ stagger: 0.2 });
return (
<section id="hobbies" class="py-20 md:py-32 px-[5vw]">
<div class="max-w-[1200px] mx-auto">
<div class="space-y-4 mb-12">
<h2 class="section-label">{hobbiesPage.label}</h2>
<p class="text-text-secondary max-w-xl">
2026-04-22 15:40:44 +02:00
{hobbiesPage.sectionSubtitle}
</p>
</div>
<div ref={revealRef} class="grid grid-cols-1 md:grid-cols-2 gap-8">
<For each={hobbies}>
{(hobby) => (
<div class="border border-warm-grey p-8 space-y-6 group hover:border-amber/30 transition-colors">
<div class="w-10 h-10 flex items-center justify-center border border-warm-grey">
<Icon name={hobby.icon} size={20} class="text-amber" />
</div>
<h3 class="font-display font-semibold text-text-primary text-2xl tracking-tight">
2026-04-22 15:40:44 +02:00
{hobby.title}
</h3>
<p class="text-text-secondary leading-relaxed">
2026-04-22 15:40:44 +02:00
{hobby.shortDescription}
</p>
<A
2026-04-22 15:40:44 +02:00
href="/hobbies"
class="inline-flex items-center gap-2 text-amber hover:text-amber-hover transition-colors group/link"
2026-04-22 15:40:44 +02:00
>
<span class="text-link">{hobbiesPage.linkText}</span>
2026-04-22 15:40:44 +02:00
<ArrowRight
size={18}
class="group-hover/link:translate-x-1 transition-transform"
2026-04-22 15:40:44 +02:00
/>
</A>
2026-04-22 15:40:44 +02:00
</div>
)}
</For>
2026-04-22 15:40:44 +02:00
</div>
</div>
</section>
);
}