Skip to content

Commit f74485a

Browse files
authored
Merge pull request #332 from ajay-dhangar/new-update
New large update for few required components
2 parents c487a0c + c42bfe3 commit f74485a

19 files changed

+1700
-491
lines changed

package-lock.json

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"dotenv": "^16.4.5",
4141
"express": "^4.18.2",
4242
"framer-motion": "^11.3.21",
43+
"gsap": "^3.13.0",
4344
"joi": "^17.12.1",
4445
"lucide-react": "^0.468.0",
4546
"passport": "^0.7.0",
@@ -60,7 +61,8 @@
6061
"rehype-katex": "^6.0.3",
6162
"remark-math": "^5.1.1",
6263
"styled-components": "^6.1.8",
63-
"tailwind-merge": "^2.4.0"
64+
"tailwind-merge": "^2.4.0",
65+
"three": "^0.180.0"
6466
},
6567
"devDependencies": {
6668
"@docusaurus/module-type-aliases": "^3.3.2",

src/components/About.tsx

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
import { useEffect, useRef } from "react";
2+
import { gsap } from "gsap";
3+
import { ScrollTrigger } from "gsap/ScrollTrigger";
4+
import { Code, Palette, Zap, Heart } from "lucide-react";
5+
6+
gsap.registerPlugin(ScrollTrigger);
7+
8+
const About = () => {
9+
const sectionRef = useRef<HTMLDivElement>(null);
10+
11+
useEffect(() => {
12+
const section = sectionRef.current;
13+
if (!section) return;
14+
15+
gsap.fromTo(
16+
".about-title",
17+
{ opacity: 0, y: 50 },
18+
{
19+
opacity: 1,
20+
y: 0,
21+
duration: 1,
22+
scrollTrigger: {
23+
trigger: section,
24+
start: "top 80%",
25+
end: "bottom 20%",
26+
},
27+
}
28+
);
29+
30+
gsap.fromTo(
31+
".about-text",
32+
{ opacity: 0, x: -50 },
33+
{
34+
opacity: 1,
35+
x: 0,
36+
duration: 1,
37+
delay: 0.3,
38+
scrollTrigger: {
39+
trigger: section,
40+
start: "top 80%",
41+
end: "bottom 20%",
42+
},
43+
}
44+
);
45+
46+
gsap.fromTo(
47+
".about-card",
48+
{ opacity: 0, y: 30 },
49+
{
50+
opacity: 1,
51+
y: 0,
52+
duration: 0.8,
53+
stagger: 0.2,
54+
scrollTrigger: {
55+
trigger: section,
56+
start: "top 60%",
57+
end: "bottom 20%",
58+
},
59+
}
60+
);
61+
}, []);
62+
63+
const highlights = [
64+
{
65+
icon: Code,
66+
title: "Development",
67+
description: "Expertise in modern web technologies and frameworks",
68+
},
69+
{
70+
icon: Palette,
71+
title: "Design",
72+
description: "Creating beautiful and intuitive user interfaces",
73+
},
74+
{
75+
icon: Zap,
76+
title: "Performance",
77+
description: "Optimized solutions for speed and efficiency",
78+
},
79+
{
80+
icon: Heart,
81+
title: "Passion",
82+
description: "Dedicated to crafting exceptional digital experiences",
83+
},
84+
];
85+
86+
return (
87+
<div ref={sectionRef} className="py-10 px-4 bg-gray-50 dark:bg-gray-800">
88+
<div className="max-w-6xl mx-auto">
89+
<h1 className="heading text-4xl text-center lg:text-6xl mb-16">
90+
About <span className="text-primaryColor">Me</span>
91+
</h1>
92+
93+
<div className="grid lg:grid-cols-2 gap-16 items-center">
94+
<div className="about-text">
95+
<p className="text-lg text-gray-700 dark:text-gray-300 leading-relaxed mb-6">
96+
I'm a passionate full-stack developer with over 5 years of
97+
experience in creating digital solutions that combine beautiful
98+
design with robust functionality. My journey in tech started with
99+
a curiosity about how things work, which evolved into a love for
100+
building applications that make people's lives easier.
101+
</p>
102+
103+
<p className="text-lg text-gray-700 dark:text-gray-300 leading-relaxed mb-8">
104+
When I'm not coding, you'll find me exploring the latest design
105+
trends, contributing to open-source projects, or mentoring
106+
aspiring developers. I believe in the power of technology to solve
107+
real-world problems and am always excited to take on new
108+
challenges.
109+
</p>
110+
111+
<div className="flex flex-wrap gap-3">
112+
{[
113+
"React",
114+
"TypeScript",
115+
"Node.js",
116+
"Python",
117+
"AWS",
118+
"Docker",
119+
].map((tech) => (
120+
<span
121+
key={tech}
122+
className="px-4 py-2 bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 rounded-full text-sm font-medium"
123+
>
124+
{tech}
125+
</span>
126+
))}
127+
</div>
128+
</div>
129+
130+
<div className="grid grid-cols-2 gap-6">
131+
{highlights.map((item, index) => (
132+
<div
133+
key={index}
134+
className="about-card bg-white dark:bg-gray-900 p-6 rounded-2xl shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-105"
135+
>
136+
<item.icon className="w-10 h-10 text-blue-500 mb-4" />
137+
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-2">
138+
{item.title}
139+
</h3>
140+
<p className="text-gray-600 dark:text-gray-400 text-sm">
141+
{item.description}
142+
</p>
143+
</div>
144+
))}
145+
</div>
146+
</div>
147+
</div>
148+
</div>
149+
);
150+
};
151+
152+
export default About;

0 commit comments

Comments
 (0)