diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..80ee0cb
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/favicon_io/android-chrome-192x192.png b/public/favicon_io/android-chrome-192x192.png
new file mode 100644
index 0000000..5893af2
Binary files /dev/null and b/public/favicon_io/android-chrome-192x192.png differ
diff --git a/public/favicon_io/android-chrome-512x512.png b/public/favicon_io/android-chrome-512x512.png
new file mode 100644
index 0000000..d1ca0b8
Binary files /dev/null and b/public/favicon_io/android-chrome-512x512.png differ
diff --git a/public/favicon_io/apple-touch-icon.png b/public/favicon_io/apple-touch-icon.png
new file mode 100644
index 0000000..6fe853e
Binary files /dev/null and b/public/favicon_io/apple-touch-icon.png differ
diff --git a/public/favicon_io/favicon-16x16.png b/public/favicon_io/favicon-16x16.png
new file mode 100644
index 0000000..9e04d74
Binary files /dev/null and b/public/favicon_io/favicon-16x16.png differ
diff --git a/public/favicon_io/favicon-32x32.png b/public/favicon_io/favicon-32x32.png
new file mode 100644
index 0000000..bb82b79
Binary files /dev/null and b/public/favicon_io/favicon-32x32.png differ
diff --git a/public/favicon_io/site.webmanifest b/public/favicon_io/site.webmanifest
new file mode 100644
index 0000000..fa99de7
--- /dev/null
+++ b/public/favicon_io/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/public/index.html b/public/index.html
index 03daad6..6ab7456 100644
--- a/public/index.html
+++ b/public/index.html
@@ -4,6 +4,11 @@
+
+
Personal Portfolio
diff --git a/src/App.jsx b/src/App.jsx
index 9a7d463..5bf36d9 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,5 +1,6 @@
import React, { useEffect, useState } from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
+import PropTypes from "prop-types";
import Header from "./components/header/Header";
import Nav from "./components/nav/Nav";
@@ -33,6 +34,10 @@ const App = () => {
);
+ RouterWrapper.propTypes = {
+ children: PropTypes.node.isRequired,
+ };
+
return (
{screenWidth > 600 ? (
diff --git a/src/components/education/educationitem.jsx b/src/components/education/educationitem.jsx
index 22dbd6c..0fc980d 100644
--- a/src/components/education/educationitem.jsx
+++ b/src/components/education/educationitem.jsx
@@ -1,4 +1,5 @@
import React from "react";
+import PropTypes from "prop-types";
import { BsFillCalendarEventFill } from "react-icons/bs";
const EducationItem = (props) => {
@@ -17,3 +18,12 @@ const EducationItem = (props) => {
};
export default EducationItem;
+
+EducationItem.propTypes = {
+ item: PropTypes.shape({
+ date: PropTypes.string.isRequired,
+ title: PropTypes.string.isRequired,
+ text: PropTypes.string.isRequired,
+ cgpa: PropTypes.string.isRequired,
+ }).isRequired,
+};
diff --git a/src/components/experience/experienceitem.jsx b/src/components/experience/experienceitem.jsx
index 74418e1..c6cb9a0 100644
--- a/src/components/experience/experienceitem.jsx
+++ b/src/components/experience/experienceitem.jsx
@@ -1,4 +1,5 @@
import React, { useState } from "react";
+import PropTypes from "prop-types";
import { BsFillCalendarEventFill } from "react-icons/bs";
import { IoLocationSharp } from "react-icons/io5";
import { CiCircleChevDown, CiCircleChevUp } from "react-icons/ci";
@@ -10,6 +11,13 @@ const ExperienceItem = ({ item }) => {
setShow(!show);
};
+ // Function to handle keyboard events for accessibility
+ const handleKeyPress = (e) => {
+ if (e.key === "Enter" || e.key === " ") {
+ toggleDropdown();
+ }
+ };
+
return (
@@ -17,7 +25,13 @@ const ExperienceItem = ({ item }) => {
{item.date}
-
+
{show ? : }
@@ -49,7 +63,7 @@ const ExperienceItem = ({ item }) => {
What I did?
{Object.values(item.description).map((desc, index) => (
- - {desc}
+ - {desc}
))}
@@ -57,7 +71,7 @@ const ExperienceItem = ({ item }) => {
Skills I Learned & Used!
{item.skills.map((skill, index) => (
- {skill}
+ {skill}
))}
@@ -65,4 +79,17 @@ const ExperienceItem = ({ item }) => {
);
};
+ExperienceItem.propTypes = {
+ item: PropTypes.shape({
+ date: PropTypes.string.isRequired,
+ title: PropTypes.string.isRequired,
+ position: PropTypes.string.isRequired,
+ company: PropTypes.string.isRequired,
+ location: PropTypes.string.isRequired,
+ location_type: PropTypes.string.isRequired,
+ description: PropTypes.objectOf(PropTypes.string).isRequired,
+ skills: PropTypes.arrayOf(PropTypes.string).isRequired,
+ }).isRequired,
+};
+
export default ExperienceItem;
diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx
index e25691c..c2f3767 100644
--- a/src/components/header/Header.jsx
+++ b/src/components/header/Header.jsx
@@ -1,9 +1,9 @@
import React from "react";
import "./header.css";
-import CTA from "./CTA";
+import CtaComponent from "./CTA"; // Renamed the import to CtaComponent
import ME from "../../assets/me.png";
import HeaderSocials from "./HeaderSocials";
-import TW from "./TW";
+import TwComponent from "./TW"; // Renamed the import to TwComponent
const Header = () => {
const words = [
@@ -14,15 +14,16 @@ const Header = () => {
"Open Source Contributor",
"Tech Enthusiast",
];
+
return (