portfolio / index.html
Tesneem's picture
Update index.html
2ff55b3 verified
<!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">
<!-- Navigation -->
<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>
<!-- Mobile menu -->
<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>
<!-- Hero Section -->
<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>
<!-- About 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>
<!-- Projects 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">
<!-- Project 1 -->
<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>
<!-- Project 2 -->
<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>
<!-- Project 3 -->
<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>
<!-- Skills 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>
<!-- Contact 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 -->
<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>
<!-- Back to Top Button -->
<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>
// Theme toggle
const themeToggle = document.getElementById('theme-toggle');
const themeToggleMobile = document.getElementById('theme-toggle-mobile');
const html = document.documentElement;
// Check for saved user preference or use system preference
const savedTheme = localStorage.getItem('theme') ||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
// Apply the saved theme
html.classList.add(savedTheme);
// Update icon based on theme
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);
// Mobile menu toggle
const mobileMenuButton = document.getElementById('mobile-menu-button');
const mobileMenu = document.getElementById('mobile-menu');
mobileMenuButton.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
// Close mobile menu when clicking on a link
document.querySelectorAll('#mobile-menu a').forEach(link => {
link.addEventListener('click', () => {
mobileMenu.classList.add('hidden');
});
});
// Smooth scrolling for navigation links
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'
});
}
});
});
// Back to top button
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'
});
});
// Form submission
const contactForm = document.getElementById('contact-form');
contactForm.addEventListener('submit', (e) => {
e.preventDefault();
// Get form values
const name = document.getElementById('name').value;
const email = document.getElementById('email').value;
const subject = document.getElementById('subject').value;
const message = document.getElementById('message').value;
// Here you would typically send the form data to a server
// For this example, we'll just log it and show an alert
console.log({ name, email, subject, message });
alert('Thank you for your message! I will get back to you soon.');
contactForm.reset();
});
// Animation on scroll
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)';
}
});
};
// Set initial state for animated elements
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>