π κ΅¬μ± μμ
StackSection
β μ 체 νμ΄μ§Stack
β κ°λ³ κΈ°μ μ€ν μΉμ (μ: "Frontend", "Tools")FrontendIcons
,ToolsIcons
β μμ΄μ½κ³Ό μ€λͺ μ λ΄μ λ°μ΄ν°
μ λͺ© λΆλΆ
<aside> π¬
<div className="mt-12 w-[70%] max-w-[150px] h-[50px] bg-main rounded-full flex flex-col items-center justify-center">
<p className="text-[20px] sm:text-[20px] text-center text-text font-sans font-thin">
{title}
</p>
</div>
</aside>
κΈ°μ μ€ν μμ΄ν λ λλ§
<aside> π¬
<div className="mt-8 grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 w-full">
{icons.map((icon) => (
<div
key={icon.id}
className="flex items-start gap-4 bg-black/50 p-4 rounded-lg shadow-xl hover:shadow-2xl transition-transform duration-200 transform hover:scale-105"
>
<img
src={icon.src}
alt={icon.alt}
className="w-[50px] h-[50px] object-contain"
/>
<div className="flex flex-col items-start w-[200px] h-[85px]">
<h4 className="text-lg font-bold text-white">{icon.title}</h4>
<p className="text-sm text-gray-300">{icon.description}</p>
</div>
</div>
))}
</div>
</aside>
StackList
<aside> π¬
const StackSection = () => {
return (
<section
id="stack"
className="w-full min-h-screen py-20 mx-auto flex flex-col justify-start items-center relative bg-[#68835E] overflow-hidden"
>
<p className="mt-4 text-[64px] sm:text-[48px] text-center font-thin font-abhaya decoration-[2px] text-text">
TECH STACK
</p>
<Stack title="Frontend" icons={FrontendIcons} />
<br></br>
<br></br>
<br></br>
<Stack title="Tools" icons={ToolsIcons} />
</section>
);
};
</aside>
StackSection
κ° μ 체 νμ΄μ§λ₯Ό λ΄λΉStack
μ μ΄μ©ν΄ Frontend / Tools λ κ°μ κ·Έλ£Ήμ νμicons.map()
μ μ΄μ©ν΄ κ° κΈ°μ μμ΄μ½κ³Ό μ€λͺ
μ μΉ΄λ ννλ‘ μΆλ ₯