|
<!DOCTYPE html> |
|
<html lang="en" class="scroll-smooth"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Portfolio | Creative Developer</title> |
|
<script src="https://cdn.tailwindcss.com"></script> |
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
<style> |
|
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); |
|
|
|
:root { |
|
--primary: #3b82f6; |
|
--primary-dark: #2563eb; |
|
--secondary: #10b981; |
|
--dark: #1e293b; |
|
--light: #f8fafc; |
|
} |
|
|
|
body { |
|
font-family: 'Poppins', sans-serif; |
|
transition: background-color 0.3s, color 0.3s; |
|
} |
|
|
|
.dark { |
|
background-color: #0f172a; |
|
color: #f8fafc; |
|
} |
|
|
|
.light { |
|
background-color: #f8fafc; |
|
color: #1e293b; |
|
} |
|
|
|
.nav-link { |
|
position: relative; |
|
} |
|
|
|
.nav-link::after { |
|
content: ''; |
|
position: absolute; |
|
width: 0; |
|
height: 2px; |
|
bottom: -2px; |
|
left: 0; |
|
background-color: var(--primary); |
|
transition: width 0.3s ease; |
|
} |
|
|
|
.nav-link:hover::after { |
|
width: 100%; |
|
} |
|
|
|
.project-card { |
|
transition: transform 0.3s, box-shadow 0.3s; |
|
} |
|
|
|
.project-card:hover { |
|
transform: translateY(-5px); |
|
} |
|
|
|
.skill-pill { |
|
transition: transform 0.2s; |
|
} |
|
|
|
.skill-pill:hover { |
|
transform: scale(1.05); |
|
} |
|
|
|
.floating { |
|
animation: floating 3s ease-in-out infinite; |
|
} |
|
|
|
@keyframes floating { |
|
0% { transform: translateY(0px); } |
|
50% { transform: translateY(-10px); } |
|
100% { transform: translateY(0px); } |
|
} |
|
|
|
.wave { |
|
animation-name: wave-animation; |
|
animation-duration: 2.5s; |
|
animation-iteration-count: infinite; |
|
transform-origin: 70% 70%; |
|
display: inline-block; |
|
} |
|
|
|
@keyframes wave-animation { |
|
0% { transform: rotate(0deg); } |
|
10% { transform: rotate(14deg); } |
|
20% { transform: rotate(-8deg); } |
|
30% { transform: rotate(14deg); } |
|
40% { transform: rotate(-4deg); } |
|
50% { transform: rotate(10deg); } |
|
60% { transform: rotate(0deg); } |
|
100% { transform: rotate(0deg); } |
|
} |
|
</style> |
|
</head> |
|
<body class="light"> |
|
|
|
<nav class="fixed w-full z-50 bg-white/80 dark:bg-slate-900/80 backdrop-blur-md shadow-sm"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="flex justify-between h-16"> |
|
<div class="flex items-center"> |
|
<a href="#home" class="text-xl font-bold text-blue-500 dark:text-blue-400">Portfolio</a> |
|
</div> |
|
<div class="hidden md:flex items-center space-x-8"> |
|
<a href="#home" class="nav-link text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Home</a> |
|
<a href="#about" class="nav-link text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">About</a> |
|
<a href="#projects" class="nav-link text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Projects</a> |
|
<a href="#skills" class="nav-link text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Skills</a> |
|
<a href="#contact" class="nav-link text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Contact</a> |
|
<button id="theme-toggle" class="p-2 rounded-full hover:bg-slate-200 dark:hover:bg-slate-700 transition-colors"> |
|
<i class="fas fa-moon text-slate-700 dark:text-yellow-300"></i> |
|
</button> |
|
</div> |
|
<div class="md:hidden flex items-center"> |
|
<button id="mobile-menu-button" class="p-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400"> |
|
<i class="fas fa-bars text-xl"></i> |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="mobile-menu" class="hidden md:hidden bg-white dark:bg-slate-900 shadow-lg"> |
|
<div class="px-2 pt-2 pb-3 space-y-1"> |
|
<a href="#home" class="block px-3 py-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Home</a> |
|
<a href="#about" class="block px-3 py-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">About</a> |
|
<a href="#projects" class="block px-3 py-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Projects</a> |
|
<a href="#skills" class="block px-3 py-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Skills</a> |
|
<a href="#contact" class="block px-3 py-2 rounded-md text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400">Contact</a> |
|
<div class="px-3 py-2"> |
|
<button id="theme-toggle-mobile" class="flex items-center text-slate-700 dark:text-slate-300 hover:text-blue-500 dark:hover:text-blue-400"> |
|
<i class="fas fa-moon mr-2 text-slate-700 dark:text-yellow-300"></i> |
|
Toggle Theme |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
</nav> |
|
|
|
|
|
<section id="home" class="min-h-screen flex items-center pt-16"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-20"> |
|
<div class="flex flex-col md:flex-row items-center"> |
|
<div class="md:w-1/2 mb-10 md:mb-0"> |
|
<h1 class="text-4xl md:text-5xl lg:text-6xl font-bold mb-4 text-slate-800 dark:text-white"> |
|
Hi, I'm <span class="text-blue-500">Tesneem</span> <span class="wave">👋</span> |
|
</h1> |
|
<h2 class="text-2xl md:text-3xl font-semibold mb-6 text-slate-600 dark:text-slate-300"> |
|
Aspiring Data Scientist and Mobile Engineer |
|
</h2> |
|
<p class="text-lg mb-8 text-slate-600 dark:text-slate-400 max-w-lg"> |
|
I build exceptional digital experiences that are fast, accessible, and visually appealing. Let's create something amazing together! |
|
</p> |
|
<div class="flex space-x-4"> |
|
<a href="#projects" class="px-6 py-3 bg-blue-500 hover:bg-blue-600 text-white rounded-lg font-medium transition-colors shadow-lg hover:shadow-blue-500/30"> |
|
View My Work |
|
</a> |
|
<a href="#contact" class="px-6 py-3 border border-blue-500 text-blue-500 hover:bg-blue-50 dark:hover:bg-slate-800 rounded-lg font-medium transition-colors"> |
|
Contact Me |
|
</a> |
|
</div> |
|
</div> |
|
<div class="md:w-1/2 flex justify-center"> |
|
<div class="relative w-64 h-64 md:w-80 md:h-80 lg:w-96 lg:h-96"> |
|
<div class="absolute inset-0 bg-blue-500 rounded-full opacity-20 blur-xl animate-pulse"></div> |
|
<div class="relative w-full h-full flex items-center justify-center"> |
|
<img src="https://images.unsplash.com/photo-1570295999919-56ceb5ecca61?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=880&q=80" |
|
alt="Profile" |
|
class="w-full h-full object-cover rounded-full border-4 border-blue-500 shadow-xl floating"> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section id="about" class="py-20 bg-slate-50 dark:bg-slate-800"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="text-center mb-16"> |
|
<h2 class="text-3xl md:text-4xl font-bold text-slate-800 dark:text-white mb-4"> |
|
About <span class="text-blue-500">Me</span> |
|
</h2> |
|
<div class="w-20 h-1 bg-blue-500 mx-auto mb-6"></div> |
|
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto"> |
|
Get to know more about who I am and what I do |
|
</p> |
|
</div> |
|
|
|
<div class="flex flex-col md:flex-row items-center gap-12"> |
|
<div class="md:w-1/3 flex justify-center"> |
|
<div class="relative w-64 h-64"> |
|
<div class="absolute -inset-4 bg-gradient-to-r from-blue-500 to-emerald-500 rounded-2xl opacity-75 blur-xl"></div> |
|
<img src="https://images.unsplash.com/photo-1570295999919-56ceb5ecca61?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=880&q=80" |
|
alt="About Me" |
|
class="relative w-full h-full object-cover rounded-xl shadow-lg"> |
|
</div> |
|
</div> |
|
|
|
<div class="md:w-2/3"> |
|
<h3 class="text-2xl font-semibold text-slate-800 dark:text-white mb-4"> |
|
Who am I? |
|
</h3> |
|
<p class="text-slate-600 dark:text-slate-400 mb-6"> |
|
I'm a passionate frontend developer with 5+ years of experience creating modern web applications. I specialize in React, Vue.js, and responsive design principles. My goal is to build products that provide meaningful, enjoyable experiences for users. |
|
</p> |
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"> |
|
<div class="bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm"> |
|
<div class="flex items-center mb-3"> |
|
<div class="w-10 h-10 rounded-full bg-blue-100 dark:bg-blue-900 flex items-center justify-center mr-4"> |
|
<i class="fas fa-graduation-cap text-blue-500"></i> |
|
</div> |
|
<h4 class="font-semibold text-slate-800 dark:text-white">Education</h4> |
|
</div> |
|
<p class="text-slate-600 dark:text-slate-400"> |
|
B.A. in Computer Science<br> |
|
Hunter College, 2025 |
|
</p> |
|
</div> |
|
|
|
<div class="bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm"> |
|
<div class="flex items-center mb-3"> |
|
<div class="w-10 h-10 rounded-full bg-emerald-100 dark:bg-emerald-900 flex items-center justify-center mr-4"> |
|
<i class="fas fa-briefcase text-emerald-500"></i> |
|
</div> |
|
<h4 class="font-semibold text-slate-800 dark:text-white">Experience</h4> |
|
</div> |
|
<p class="text-slate-600 dark:text-slate-400"> |
|
Senior Frontend Developer<br> |
|
TechCorp Inc., 2020-Present |
|
</p> |
|
</div> |
|
</div> |
|
|
|
<a href="#" class="inline-flex items-center text-blue-500 hover:text-blue-600 dark:hover:text-blue-400 font-medium"> |
|
Download Resume |
|
<i class="fas fa-download ml-2"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section id="projects" class="py-20"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="text-center mb-16"> |
|
<h2 class="text-3xl md:text-4xl font-bold text-slate-800 dark:text-white mb-4"> |
|
My <span class="text-blue-500">Projects</span> |
|
</h2> |
|
<div class="w-20 h-1 bg-blue-500 mx-auto mb-6"></div> |
|
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto"> |
|
Here are some of my recent works that I'm proud of |
|
</p> |
|
</div> |
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"> |
|
|
|
<div class="project-card bg-white dark:bg-slate-800 rounded-xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> |
|
<div class="h-48 overflow-hidden"> |
|
<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80" |
|
alt="Project 1" |
|
class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> |
|
</div> |
|
<div class="p-6"> |
|
<div class="flex justify-between items-start mb-3"> |
|
<h3 class="text-xl font-semibold text-slate-800 dark:text-white">E-commerce Platform</h3> |
|
<span class="text-xs px-2 py-1 bg-blue-100 dark:bg-blue-900 text-blue-600 dark:text-blue-300 rounded-full">React</span> |
|
</div> |
|
<p class="text-slate-600 dark:text-slate-400 mb-4"> |
|
A full-featured e-commerce platform with product listings, cart functionality, and secure checkout. |
|
</p> |
|
<div class="flex justify-between items-center"> |
|
<a href="#" class="text-blue-500 hover:text-blue-600 dark:hover:text-blue-400 font-medium text-sm flex items-center"> |
|
View Project |
|
<i class="fas fa-arrow-right ml-1"></i> |
|
</a> |
|
<div class="flex space-x-2"> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fas fa-external-link-alt"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="project-card bg-white dark:bg-slate-800 rounded-xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> |
|
<div class="h-48 overflow-hidden"> |
|
<img src="https://images.unsplash.com/photo-1555774698-0b77e0d5fac6?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1470&q=80" |
|
alt="Project 2" |
|
class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> |
|
</div> |
|
<div class="p-6"> |
|
<div class="flex justify-between items-start mb-3"> |
|
<h3 class="text-xl font-semibold text-slate-800 dark:text-white">Task Management App</h3> |
|
<span class="text-xs px-2 py-1 bg-emerald-100 dark:bg-emerald-900 text-emerald-600 dark:text-emerald-300 rounded-full">Vue.js</span> |
|
</div> |
|
<p class="text-slate-600 dark:text-slate-400 mb-4"> |
|
A productivity application for managing tasks with drag-and-drop functionality and team collaboration. |
|
</p> |
|
<div class="flex justify-between items-center"> |
|
<a href="#" class="text-blue-500 hover:text-blue-600 dark:hover:text-blue-400 font-medium text-sm flex items-center"> |
|
View Project |
|
<i class="fas fa-arrow-right ml-1"></i> |
|
</a> |
|
<div class="flex space-x-2"> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fas fa-external-link-alt"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="project-card bg-white dark:bg-slate-800 rounded-xl overflow-hidden shadow-lg hover:shadow-xl transition-shadow"> |
|
<div class="h-48 overflow-hidden"> |
|
<img src="https://images.unsplash.com/photo-1467232004584-a241de8bcf5d?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1469&q=80" |
|
alt="Project 3" |
|
class="w-full h-full object-cover transition-transform duration-500 hover:scale-110"> |
|
</div> |
|
<div class="p-6"> |
|
<div class="flex justify-between items-start mb-3"> |
|
<h3 class="text-xl font-semibold text-slate-800 dark:text-white">Weather Dashboard</h3> |
|
<span class="text-xs px-2 py-1 bg-amber-100 dark:bg-amber-900 text-amber-600 dark:text-amber-300 rounded-full">JavaScript</span> |
|
</div> |
|
<p class="text-slate-600 dark:text-slate-400 mb-4"> |
|
Real-time weather information with 5-day forecasts, location search, and interactive maps. |
|
</p> |
|
<div class="flex justify-between items-center"> |
|
<a href="#" class="text-blue-500 hover:text-blue-600 dark:hover:text-blue-400 font-medium text-sm flex items-center"> |
|
View Project |
|
<i class="fas fa-arrow-right ml-1"></i> |
|
</a> |
|
<div class="flex space-x-2"> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-blue-500"> |
|
<i class="fas fa-external-link-alt"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<div class="text-center mt-12"> |
|
<a href="#" class="inline-flex items-center px-6 py-3 border border-blue-500 text-blue-500 hover:bg-blue-50 dark:hover:bg-slate-800 rounded-lg font-medium transition-colors"> |
|
View All Projects |
|
<i class="fas fa-arrow-right ml-2"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section id="skills" class="py-20 bg-slate-50 dark:bg-slate-800"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="text-center mb-16"> |
|
<h2 class="text-3xl md:text-4xl font-bold text-slate-800 dark:text-white mb-4"> |
|
My <span class="text-blue-500">Skills</span> |
|
</h2> |
|
<div class="w-20 h-1 bg-blue-500 mx-auto mb-6"></div> |
|
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto"> |
|
The tools and technologies I use to bring ideas to life |
|
</p> |
|
</div> |
|
|
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-6 mb-12"> |
|
<div class="skill-pill bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm flex flex-col items-center"> |
|
<div class="w-16 h-16 bg-blue-100 dark:bg-blue-900 rounded-full flex items-center justify-center mb-4"> |
|
<i class="fab fa-react text-blue-500 text-3xl"></i> |
|
</div> |
|
<h3 class="font-semibold text-slate-800 dark:text-white mb-2">React</h3> |
|
<div class="w-full bg-slate-200 dark:bg-slate-600 rounded-full h-2"> |
|
<div class="bg-blue-500 h-2 rounded-full" style="width: 90%"></div> |
|
</div> |
|
</div> |
|
|
|
<div class="skill-pill bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm flex flex-col items-center"> |
|
<div class="w-16 h-16 bg-emerald-100 dark:bg-emerald-900 rounded-full flex items-center justify-center mb-4"> |
|
<i class="fab fa-vuejs text-emerald-500 text-3xl"></i> |
|
</div> |
|
<h3 class="font-semibold text-slate-800 dark:text-white mb-2">Vue.js</h3> |
|
<div class="w-full bg-slate-200 dark:bg-slate-600 rounded-full h-2"> |
|
<div class="bg-emerald-500 h-2 rounded-full" style="width: 85%"></div> |
|
</div> |
|
</div> |
|
|
|
<div class="skill-pill bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm flex flex-col items-center"> |
|
<div class="w-16 h-16 bg-amber-100 dark:bg-amber-900 rounded-full flex items-center justify-center mb-4"> |
|
<i class="fab fa-js-square text-amber-500 text-3xl"></i> |
|
</div> |
|
<h3 class="font-semibold text-slate-800 dark:text-white mb-2">JavaScript</h3> |
|
<div class="w-full bg-slate-200 dark:bg-slate-600 rounded-full h-2"> |
|
<div class="bg-amber-500 h-2 rounded-full" style="width: 95%"></div> |
|
</div> |
|
</div> |
|
|
|
<div class="skill-pill bg-white dark:bg-slate-700 p-6 rounded-xl shadow-sm flex flex-col items-center"> |
|
<div class="w-16 h-16 bg-pink-100 dark:bg-pink-900 rounded-full flex items-center justify-center mb-4"> |
|
<i class="fab fa-css3-alt text-pink-500 text-3xl"></i> |
|
</div> |
|
<h3 class="font-semibold text-slate-800 dark:text-white mb-2">CSS/Tailwind</h3> |
|
<div class="w-full bg-slate-200 dark:bg-slate-600 rounded-full h-2"> |
|
<div class="bg-pink-500 h-2 rounded-full" style="width: 92%"></div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<div class="flex flex-wrap justify-center gap-3"> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fab fa-html5 text-orange-500 mr-2"></i> HTML5 |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fab fa-sass text-pink-500 mr-2"></i> SASS |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fab fa-node-js text-green-500 mr-2"></i> Node.js |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fas fa-database text-blue-500 mr-2"></i> MongoDB |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fab fa-git-alt text-orange-600 mr-2"></i> Git |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fab fa-figma text-purple-500 mr-2"></i> Figma |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fas fa-fire text-orange-500 mr-2"></i> Firebase |
|
</span> |
|
<span class="skill-pill px-4 py-2 bg-white dark:bg-slate-700 text-slate-800 dark:text-slate-300 rounded-full text-sm font-medium shadow-sm"> |
|
<i class="fas fa-mobile-alt text-blue-400 mr-2"></i> Responsive Design |
|
</span> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<section id="contact" class="py-20"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="text-center mb-16"> |
|
<h2 class="text-3xl md:text-4xl font-bold text-slate-800 dark:text-white mb-4"> |
|
Get In <span class="text-blue-500">Touch</span> |
|
</h2> |
|
<div class="w-20 h-1 bg-blue-500 mx-auto mb-6"></div> |
|
<p class="text-lg text-slate-600 dark:text-slate-400 max-w-2xl mx-auto"> |
|
Have a project in mind or want to collaborate? Feel free to reach out! |
|
</p> |
|
</div> |
|
|
|
<div class="flex flex-col md:flex-row gap-12"> |
|
<div class="md:w-1/2"> |
|
<form id="contact-form" class="space-y-6"> |
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> |
|
<div> |
|
<label for="name" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1">Name</label> |
|
<input type="text" id="name" name="name" required |
|
class="w-full px-4 py-3 rounded-lg border border-slate-300 dark:border-slate-600 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:text-white transition-colors"> |
|
</div> |
|
<div> |
|
<label for="email" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1">Email</label> |
|
<input type="email" id="email" name="email" required |
|
class="w-full px-4 py-3 rounded-lg border border-slate-300 dark:border-slate-600 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:text-white transition-colors"> |
|
</div> |
|
</div> |
|
<div> |
|
<label for="subject" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1">Subject</label> |
|
<input type="text" id="subject" name="subject" required |
|
class="w-full px-4 py-3 rounded-lg border border-slate-300 dark:border-slate-600 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:text-white transition-colors"> |
|
</div> |
|
<div> |
|
<label for="message" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1">Message</label> |
|
<textarea id="message" name="message" rows="5" required |
|
class="w-full px-4 py-3 rounded-lg border border-slate-300 dark:border-slate-600 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:bg-slate-700 dark:text-white transition-colors"></textarea> |
|
</div> |
|
<button type="submit" class="w-full px-6 py-3 bg-blue-500 hover:bg-blue-600 text-white rounded-lg font-medium transition-colors shadow-lg hover:shadow-blue-500/30"> |
|
Send Message |
|
</button> |
|
</form> |
|
</div> |
|
|
|
<div class="md:w-1/2"> |
|
<div class="bg-white dark:bg-slate-800 p-8 rounded-xl shadow-lg h-full"> |
|
<h3 class="text-xl font-semibold text-slate-800 dark:text-white mb-6">Contact Information</h3> |
|
|
|
<div class="space-y-6"> |
|
<div class="flex items-start"> |
|
<div class="w-10 h-10 rounded-full bg-blue-100 dark:bg-blue-900 flex items-center justify-center mr-4"> |
|
<i class="fas fa-envelope text-blue-500"></i> |
|
</div> |
|
<div> |
|
<h4 class="font-medium text-slate-700 dark:text-slate-300">Email</h4> |
|
<a href="mailto:hello@example.com" class="text-blue-500 hover:text-blue-600 dark:hover:text-blue-400">hello@example.com</a> |
|
</div> |
|
</div> |
|
|
|
<div class="flex items-start"> |
|
<div class="w-10 h-10 rounded-full bg-emerald-100 dark:bg-emerald-900 flex items-center justify-center mr-4"> |
|
<i class="fas fa-phone-alt text-emerald-500"></i> |
|
</div> |
|
<div> |
|
<h4 class="font-medium text-slate-700 dark:text-slate-300">Phone</h4> |
|
<a href="tel:+1234567890" class="text-blue-500 hover:text-blue-600 dark:hover:text-blue-400">+1 (234) 567-890</a> |
|
</div> |
|
</div> |
|
|
|
<div class="flex items-start"> |
|
<div class="w-10 h-10 rounded-full bg-amber-100 dark:bg-amber-900 flex items-center justify-center mr-4"> |
|
<i class="fas fa-map-marker-alt text-amber-500"></i> |
|
</div> |
|
<div> |
|
<h4 class="font-medium text-slate-700 dark:text-slate-300">Location</h4> |
|
<p class="text-slate-600 dark:text-slate-400">San Francisco, CA</p> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<div class="mt-8"> |
|
<h4 class="font-medium text-slate-700 dark:text-slate-300 mb-4">Connect with me</h4> |
|
<div class="flex space-x-4"> |
|
<a href="#" class="w-10 h-10 rounded-full bg-slate-100 dark:bg-slate-700 flex items-center justify-center text-slate-600 dark:text-slate-400 hover:bg-blue-100 hover:text-blue-500 dark:hover:bg-blue-900 dark:hover:text-blue-400 transition-colors"> |
|
<i class="fab fa-linkedin-in"></i> |
|
</a> |
|
<a href="#" class="w-10 h-10 rounded-full bg-slate-100 dark:bg-slate-700 flex items-center justify-center text-slate-600 dark:text-slate-400 hover:bg-blue-100 hover:text-blue-500 dark:hover:bg-blue-900 dark:hover:text-blue-400 transition-colors"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="#" class="w-10 h-10 rounded-full bg-slate-100 dark:bg-slate-700 flex items-center justify-center text-slate-600 dark:text-slate-400 hover:bg-blue-100 hover:text-blue-500 dark:hover:bg-blue-900 dark:hover:text-blue-400 transition-colors"> |
|
<i class="fab fa-twitter"></i> |
|
</a> |
|
<a href="#" class="w-10 h-10 rounded-full bg-slate-100 dark:bg-slate-700 flex items-center justify-center text-slate-600 dark:text-slate-400 hover:bg-blue-100 hover:text-blue-500 dark:hover:bg-blue-900 dark:hover:text-blue-400 transition-colors"> |
|
<i class="fab fa-dribbble"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</section> |
|
|
|
|
|
<footer class="bg-slate-800 text-white py-12"> |
|
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"> |
|
<div class="flex flex-col md:flex-row justify-between items-center"> |
|
<div class="mb-6 md:mb-0"> |
|
<a href="#home" class="text-2xl font-bold text-white">Portfolio</a> |
|
<p class="text-slate-400 mt-2">© 2023 All rights reserved.</p> |
|
</div> |
|
|
|
<div class="flex flex-col items-center md:items-end"> |
|
<div class="flex space-x-6 mb-4"> |
|
<a href="#home" class="text-slate-400 hover:text-white transition-colors">Home</a> |
|
<a href="#about" class="text-slate-400 hover:text-white transition-colors">About</a> |
|
<a href="#projects" class="text-slate-400 hover:text-white transition-colors">Projects</a> |
|
<a href="#contact" class="text-slate-400 hover:text-white transition-colors">Contact</a> |
|
</div> |
|
<div class="flex space-x-4"> |
|
<a href="#" class="text-slate-400 hover:text-white transition-colors"> |
|
<i class="fab fa-linkedin-in"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-white transition-colors"> |
|
<i class="fab fa-github"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-white transition-colors"> |
|
<i class="fab fa-twitter"></i> |
|
</a> |
|
<a href="#" class="text-slate-400 hover:text-white transition-colors"> |
|
<i class="fab fa-instagram"></i> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</footer> |
|
|
|
|
|
<button id="back-to-top" class="fixed bottom-8 right-8 w-12 h-12 bg-blue-500 hover:bg-blue-600 text-white rounded-full shadow-lg flex items-center justify-center transition-opacity opacity-0 invisible"> |
|
<i class="fas fa-arrow-up"></i> |
|
</button> |
|
|
|
<script> |
|
|
|
const themeToggle = document.getElementById('theme-toggle'); |
|
const themeToggleMobile = document.getElementById('theme-toggle-mobile'); |
|
const html = document.documentElement; |
|
|
|
|
|
const savedTheme = localStorage.getItem('theme') || |
|
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); |
|
|
|
|
|
html.classList.add(savedTheme); |
|
|
|
|
|
updateThemeIcon(); |
|
|
|
function toggleTheme() { |
|
if (html.classList.contains('dark')) { |
|
html.classList.remove('dark'); |
|
html.classList.add('light'); |
|
localStorage.setItem('theme', 'light'); |
|
} else { |
|
html.classList.remove('light'); |
|
html.classList.add('dark'); |
|
localStorage.setItem('theme', 'dark'); |
|
} |
|
updateThemeIcon(); |
|
} |
|
|
|
function updateThemeIcon() { |
|
const isDark = html.classList.contains('dark'); |
|
const icons = document.querySelectorAll('.fa-moon, .fa-sun'); |
|
|
|
icons.forEach(icon => { |
|
if (isDark) { |
|
icon.classList.remove('fa-moon'); |
|
icon.classList.add('fa-sun'); |
|
} else { |
|
icon.classList.remove('fa-sun'); |
|
icon.classList.add('fa-moon'); |
|
} |
|
}); |
|
} |
|
|
|
themeToggle.addEventListener('click', toggleTheme); |
|
themeToggleMobile.addEventListener('click', toggleTheme); |
|
|
|
|
|
const mobileMenuButton = document.getElementById('mobile-menu-button'); |
|
const mobileMenu = document.getElementById('mobile-menu'); |
|
|
|
mobileMenuButton.addEventListener('click', () => { |
|
mobileMenu.classList.toggle('hidden'); |
|
}); |
|
|
|
|
|
document.querySelectorAll('#mobile-menu a').forEach(link => { |
|
link.addEventListener('click', () => { |
|
mobileMenu.classList.add('hidden'); |
|
}); |
|
}); |
|
|
|
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
|
anchor.addEventListener('click', function(e) { |
|
e.preventDefault(); |
|
|
|
const targetId = this.getAttribute('href'); |
|
const targetElement = document.querySelector(targetId); |
|
|
|
if (targetElement) { |
|
window.scrollTo({ |
|
top: targetElement.offsetTop - 80, |
|
behavior: 'smooth' |
|
}); |
|
} |
|
}); |
|
}); |
|
|
|
|
|
const backToTopButton = document.getElementById('back-to-top'); |
|
|
|
window.addEventListener('scroll', () => { |
|
if (window.pageYOffset > 300) { |
|
backToTopButton.classList.remove('opacity-0', 'invisible'); |
|
backToTopButton.classList.add('opacity-100', 'visible'); |
|
} else { |
|
backToTopButton.classList.remove('opacity-100', 'visible'); |
|
backToTopButton.classList.add('opacity-0', 'invisible'); |
|
} |
|
}); |
|
|
|
backToTopButton.addEventListener('click', () => { |
|
window.scrollTo({ |
|
top: 0, |
|
behavior: 'smooth' |
|
}); |
|
}); |
|
|
|
|
|
const contactForm = document.getElementById('contact-form'); |
|
|
|
contactForm.addEventListener('submit', (e) => { |
|
e.preventDefault(); |
|
|
|
|
|
const name = document.getElementById('name').value; |
|
const email = document.getElementById('email').value; |
|
const subject = document.getElementById('subject').value; |
|
const message = document.getElementById('message').value; |
|
|
|
|
|
|
|
console.log({ name, email, subject, message }); |
|
|
|
alert('Thank you for your message! I will get back to you soon.'); |
|
contactForm.reset(); |
|
}); |
|
|
|
|
|
const animateOnScroll = () => { |
|
const elements = document.querySelectorAll('.project-card, .skill-pill'); |
|
|
|
elements.forEach(element => { |
|
const elementPosition = element.getBoundingClientRect().top; |
|
const screenPosition = window.innerHeight / 1.2; |
|
|
|
if (elementPosition < screenPosition) { |
|
element.style.opacity = '1'; |
|
element.style.transform = 'translateY(0)'; |
|
} |
|
}); |
|
}; |
|
|
|
|
|
document.querySelectorAll('.project-card, .skill-pill').forEach(element => { |
|
element.style.opacity = '0'; |
|
element.style.transform = 'translateY(20px)'; |
|
element.style.transition = 'opacity 0.5s ease, transform 0.5s ease'; |
|
}); |
|
|
|
window.addEventListener('scroll', animateOnScroll); |
|
window.addEventListener('load', animateOnScroll); |
|
</script> |
|
</body> |
|
</html> |