Files
resume/components/sections/about.tsx
evan 6fec90ea71 feat: build resume website with MagicUI components
- 6 sections: Hero, About, Experience, Skills, Projects, Contact
- MagicUI: Globe, Particles, Meteors, AnimatedList, IconCloud, BentoGrid
- Dark mode support, scroll-triggered animations
- Static export ready for deployment
2026-04-14 15:09:48 +08:00

93 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client"
import {
CodeIcon,
CpuIcon,
TerminalIcon,
GlobeIcon,
DatabaseIcon,
LayerIcon,
} from "@hugeicons/core-free-icons"
import { HugeiconsIcon } from "@hugeicons/react"
import { OrbitingCircles } from "@/components/ui/orbiting-circles"
import { SectionWrapper } from "@/components/section-wrapper"
const techIcons = [
{ icon: <HugeiconsIcon icon={CodeIcon} className="size-6" />, label: "Go" },
{ icon: <HugeiconsIcon icon={TerminalIcon} className="size-6" />, label: "Python" },
{ icon: <HugeiconsIcon icon={DatabaseIcon} className="size-6" />, label: "TypeScript" },
{ icon: <HugeiconsIcon icon={CpuIcon} className="size-6" />, label: "C#" },
{ icon: <HugeiconsIcon icon={LayerIcon} className="size-6" />, label: "React" },
{ icon: <HugeiconsIcon icon={GlobeIcon} className="size-6" />, label: "Django" },
]
export function About() {
return (
<SectionWrapper id="about" className="py-24">
<div className="mx-auto max-w-5xl px-6">
<div className="grid gap-12 lg:grid-cols-2 lg:items-center">
{/* 简介文字 */}
<div>
<h2 className="mb-4 text-3xl font-bold tracking-tight sm:text-4xl">
</h2>
<div className="space-y-3 text-muted-foreground">
<p className="text-base">
AI AI
</p>
<p className="text-sm">
Go / Python / C# React Docker / Linux
</p>
<p className="text-sm">
AI
</p>
</div>
</div>
{/* 环绕动画 */}
<div className="relative flex items-center justify-center">
<div className="relative flex size-80 items-center justify-center">
{/* 中心文字 */}
<div className="z-10 text-center">
<div className="text-4xl font-bold">6+</div>
<div className="text-sm text-muted-foreground">
</div>
</div>
<OrbitingCircles radius={110} duration={25} iconSize={40}>
{techIcons.slice(0, 3).map((tech, i) => (
<div
key={i}
className="flex size-10 items-center justify-center rounded-full border border-border bg-background p-2"
title={tech.label}
>
{tech.icon}
</div>
))}
</OrbitingCircles>
<OrbitingCircles
radius={160}
duration={35}
reverse
iconSize={40}
>
{techIcons.slice(3).map((tech, i) => (
<div
key={i}
className="flex size-10 items-center justify-center rounded-full border border-border bg-background p-2"
title={tech.label}
>
{tech.icon}
</div>
))}
</OrbitingCircles>
</div>
</div>
</div>
</div>
</SectionWrapper>
)
}