Function bodies 9 total
AiWorkflow function · typescript · L126-L268 (143 LOC)src/components/sections/AiWorkflow.tsx
export default function AiWorkflow() {
return (
<section id="ai-workflow" className="px-6 py-24">
<div className="mx-auto max-w-4xl">
{/* Header */}
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
>
<h2 className="mb-2 text-sm font-semibold uppercase tracking-widest text-[var(--color-primary)]">
AI-Augmented Development
</h2>
<h3 className="mb-4 text-3xl font-bold md:text-4xl font-[family-name:var(--font-heading)]">
AI와 함께 일하는 시스템
</h3>
<p className="mb-12 text-[var(--color-text-secondary)] leading-relaxed">
현재는 AI를 얼마나 잘 활용하느냐에 따라
<br className="hidden md:inline" /> 생산성과 결과물의 품질이
달라집니다.
</p>
</motion.div>
{/* Cycle Diagram */}
<motion.div
initial={{ opacity: 0 }}
Experience function · typescript · L5-L79 (75 LOC)src/components/sections/Experience.tsx
export default function Experience() {
return (
<section id="experience" className="px-6 py-24">
<div className="mx-auto max-w-4xl">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
>
<h2 className="mb-2 text-sm font-semibold uppercase tracking-widest text-[var(--color-primary)]">
Experience
</h2>
<h3 className="mb-12 text-3xl font-bold md:text-4xl font-[family-name:var(--font-heading)]">
경력
</h3>
</motion.div>
<div className="relative">
{/* Timeline line */}
<div className="absolute left-4 top-0 bottom-0 w-px bg-gradient-to-b from-[var(--color-primary)] via-[var(--color-secondary)] to-transparent md:left-1/2" />
{experiences.map((exp, index) => (
<motion.div
key={index}
initial={{ opProjects function · typescript · L105-L180 (76 LOC)src/components/sections/Projects.tsx
export default function Projects() {
return (
<section id="projects" className="px-6 py-24">
<div className="mx-auto max-w-5xl">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
>
<h2 className="mb-2 text-sm font-semibold uppercase tracking-widest text-[var(--color-primary)]">
Projects
</h2>
<h3 className="mb-12 text-3xl font-bold md:text-4xl font-[family-name:var(--font-heading)]">
프로젝트
</h3>
</motion.div>
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
{projects.map((project, index) => (
<motion.div
key={project.title}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: index * Skills function · typescript · L5-L61 (57 LOC)src/components/sections/Skills.tsx
export default function Skills() {
const sizeClasses = {
large: "md:col-span-2 md:row-span-2",
medium: "md:col-span-1 md:row-span-1",
small: "md:col-span-1 md:row-span-1",
};
return (
<section id="skills" className="px-6 py-24">
<div className="mx-auto max-w-5xl">
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
>
<h2 className="mb-2 text-sm font-semibold uppercase tracking-widest text-[var(--color-primary)]">
Skills
</h2>
<h3 className="mb-12 text-3xl font-bold md:text-4xl font-[family-name:var(--font-heading)]">
기술 스택
</h3>
</motion.div>
<div className="grid grid-cols-1 gap-4 md:grid-cols-3 md:auto-rows-[minmax(140px,auto)]">
{skills.map((category, index) => (
<motion.div
key={category.title}
AnimatedSection function · typescript · L10-L26 (17 LOC)src/components/ui/AnimatedSection.tsx
export default function AnimatedSection({
children,
className = "",
delay = 0,
}: Props) {
return (
<motion.div
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: "-50px" }}
transition={{ duration: 0.6, delay, ease: "easeOut" }}
className={className}
>
{children}
</motion.div>
);
}GlassCard function · typescript · L10-L24 (15 LOC)src/components/ui/GlassCard.tsx
export default function GlassCard({
children,
className = "",
hover = true,
}: Props) {
return (
<motion.div
whileHover={hover ? { scale: 1.02, y: -4 } : undefined}
transition={{ duration: 0.2 }}
className={`rounded-2xl border border-[var(--color-border)] bg-[var(--color-surface)]/60 p-6 shadow-lg backdrop-blur-xl ${className}`}
>
{children}
</motion.div>
);
}ScrollProgress function · typescript · L3-L12 (10 LOC)src/components/ui/ScrollProgress.tsx
export default function ScrollProgress() {
const { scrollYProgress } = useScroll();
return (
<motion.div
className="fixed top-0 left-0 right-0 z-[100] h-[2px] origin-left bg-gradient-to-r from-[var(--color-primary)] via-[var(--color-secondary)] to-[var(--color-accent)]"
style={{ scaleX: scrollYProgress }}
/>
);
}Source: Repobility analyzer · https://repobility.com
TypeWriter function · typescript · L10-L58 (49 LOC)src/components/ui/TypeWriter.tsx
export default function TypeWriter({
texts,
speed = 80,
deleteSpeed = 40,
pause = 2000,
}: Props) {
const [displayText, setDisplayText] = useState("");
const [textIndex, setTextIndex] = useState(0);
const [phase, setPhase] = useState<"typing" | "pausing" | "deleting">(
"typing",
);
const timeoutRef = useRef<ReturnType<typeof setTimeout>>();
useEffect(() => {
const currentText = texts[textIndex];
if (phase === "typing") {
if (displayText.length < currentText.length) {
timeoutRef.current = setTimeout(() => {
setDisplayText(currentText.slice(0, displayText.length + 1));
}, speed);
} else {
setPhase("pausing");
}
} else if (phase === "pausing") {
timeoutRef.current = setTimeout(() => {
setPhase("deleting");
}, pause);
} else if (phase === "deleting") {
if (displayText.length > 0) {
timeoutRef.current = setTimeout(() => {
setDisplayText(currentText.slice(convert_unicode_to_text function · python · L4-L15 (12 LOC)tools/convert_unicode.py
def convert_unicode_to_text(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
# 정규식을 사용하여 유니코드 패턴을 찾고 변환
converted_content = re.sub(r'&#(\d+);', lambda x: chr(int(x.group(1))), content)
save_path = file_path.replace('.html', '_converted.html')
with open(save_path, 'w', encoding='utf-8') as file:
file.write(converted_content)
print(f"유니코드 변환 완료: {file_path}")