← back to kangnam7654__kangnam7654.github.io

Function bodies 9 total

All specs Real LLM only Function bodies
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={{ op
Projects 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}")