-
-
+
+
+ ))}
+
+
+
+
+
+
+
+ Poyraz Avsever
+
+
+
+ Teknolojiyi merak eden bir genç. Yazılım geliştirme, yapay zeka ve teknoloji dünyasındaki gelişmeleri takip ediyor.
+
-
-
+
+
+
+
);
}
diff --git a/components/motion-wrapper.tsx b/components/motion-wrapper.tsx
new file mode 100644
index 0000000..9c7aca4
--- /dev/null
+++ b/components/motion-wrapper.tsx
@@ -0,0 +1,64 @@
+"use client";
+
+import { motion } from "framer-motion";
+import type { ReactNode } from "react";
+
+type FadeInProps = {
+ children: ReactNode;
+ className?: string;
+ delay?: number;
+};
+
+export function FadeIn({ children, className, delay = 0 }: FadeInProps) {
+ return (
+
+ {children}
+
+ );
+}
+
+type StaggerContainerProps = {
+ children: ReactNode;
+ className?: string;
+ stagger?: number;
+};
+
+export function StaggerContainer({ children, className, stagger = 0.06 }: StaggerContainerProps) {
+ return (
+
+ {children}
+
+ );
+}
+
+type StaggerItemProps = {
+ children: ReactNode;
+ className?: string;
+};
+
+export function StaggerItem({ children, className }: StaggerItemProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/components/projects-content.tsx b/components/projects-content.tsx
index d7db257..269f291 100644
--- a/components/projects-content.tsx
+++ b/components/projects-content.tsx
@@ -3,6 +3,7 @@ import Link from "next/link";
import { Icon } from "@iconify/react";
import { Badge, Card, Typography } from "poyraz-ui/atoms";
import { ImageCard } from "poyraz-ui/molecules";
+import { StaggerContainer, StaggerItem } from "@/components/motion-wrapper";
import { FIGMA_TEMPLATES, MOBILE_APPS, WEB_APPS, type ProjectItem } from "@/data/projects";
import { getGithubRepos, getNpmPackages } from "@/lib/project-feeds";
@@ -43,19 +44,20 @@ function ProjectSection({ title, items }: { title: string; items: ProjectItem[]
{title}
-
+
{items.map((item) => (
-
+
+
+
))}
-
+
);
}