diff --git a/.gitignore b/.gitignore
index a547bf3..fc5ae9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+.vercel
diff --git a/data.json b/data.json
index 8f666a8..81d6b50 100644
--- a/data.json
+++ b/data.json
@@ -1,124 +1,283 @@
{
- "collegeCode": "SNT",
+ "collegeCode": "GECSKP",
- "college": "Sree Narayana Guru Institute of Science and Technology",
+ "college": "Government Engineering College Sreekrishnapuram",
- "about": "Lorem ipsum dolor sit amet consectetur adipiscing, elit ultricies imperdiet neque mattis, orci pellentesque turpis facilisi leo. Laoreet donec tortor sagittis habitasse eleifend conubia quis lacinia accumsan auctor, montes morbi natoque convallis integer aliquam posuere eu nulla, proin fames dapibus mattis sociis ligula blandit quam potenti. Himenaeos fringilla tincidunt aptent porta ultrices velit dignissim senectus purus suspendisse, fames eleifend feugiat nam hac montes semper pretium potenti, viverra curae netus volutpat cras per eu cubilia primis.",
+ "about": "µLearn GECSKP was officially established on October 20, 2023, with the vision of embodying a synergic philosophy of education and fostering a culture of mutual learning through micro peer groups. With Reny Mathew as the campus lead and Anoop S K M (Assistant Professor - IT)as the faculty enabler, µLearn embarked on a journey to assist students in breaking through echo chambers and freeing themselves from the shackles of conventional thinking.In January 2024, µLearn formed its Executive Committee (Execom), comprised of dedicated student leaders committed to advancing the club's mission and vision..",
- "events": [
+ "events": [
+ {
+ "year": 2025,
+ "eventDetails": [
{
- "month": "Sep",
- "date": "29",
- "head": "Event 1",
- "para": "Webinar on Engineering and Industrial Services division of TCS.",
- "img": "https://wallpaperaccess.com/full/1642272.jpg"
+ "month": "Jun",
+ "date": "12",
+ "head": "Karmayottam",
+ "para": "7 days of growth, productivity, action & rewards! Take on meaningful tasks, level up your skills & rise on the leaderboard!.The more tasks you complete, the higher you rise!.",
+ "img": "https://i.postimg.cc/3rLyXVYd/Karmayottam2.jpg"
},
+
{
- "month": "Sep",
- "date": "27",
- "head": "Opportunities in TCS EIS",
- "para": "Webinar on Engineering and Industrial Services division of TCS.",
- "img": "https://wallpaperaccess.com/full/1642272.jpg"
+ "month": "May",
+ "date": "28",
+ "head": "CodeSprint 30",
+ "para": "GDG GEC Palakkad and μLearn GECSKP launched a 30-day upskilling program starting May 28, focusing on resumes, interviews, and internships.Participants geared up for career success with expert-led sessions and hands-on guidance.",
+ "img": "https://i.postimg.cc/fRLHR65Z/Code-sprint.jpg"
},
{
- "month": "Sep",
- "date": "26",
- "head": "Opportunities in TCS EIS",
- "para": "Webinar on Engineering and Industrial Services division of TCS.",
- "img": "https://wallpaperaccess.com/full/1642272.jpg"
+ "month": "April",
+ "date": "14",
+ "head": "Karmayottam",
+ "para": "μLearn GECSKP organized a week-long Karma Sprint from April 14–21, where participants completed real-world tasks to build skills and earn Karma Points.The challenge promoted growth, productivity, and leaderboard-worthy action.",
+ "img": "https://i.postimg.cc/50nYyksd/Karmayottam.jpg"
},
{
- "month": "Sep",
- "date": "25",
- "head": "Opportunities in TCS EIS",
- "para": "Webinar on Engineering and Industrial Services division of TCS.",
- "img": "https://wallpaperaccess.com/full/1642272.jpg"
+ "month": "Mar",
+ "date": "12",
+ "head": "μLearn Orientation",
+ "para": "μLearn GECSKP conducted an orientation session introducing the community and the concept of Karma Points, inspiring students to learn, grow, and collaborate.The session encouraged active participation and skill-building through community-driven learning.",
+ "img": "https://i.postimg.cc/jdQVf0z7/Orientation.jpg"
},
{
- "month": "Sep",
- "date": "25",
- "head": "Opportunities in TCS EIS",
- "para": "Webinar on Engineering and Industrial Services division of TCS.",
- "img": "https://wallpaperaccess.com/full/1642272.jpg"
+ "month": "Feb",
+ "date": "20",
+ "head": "StackUp Bootcamp",
+ "para": "μLearn GECSKP and Tinker hub GECSKP collaborated to organize a beginner-friendly bootcamp on web development, covering HTML, CSS, JavaScript, and Git.",
+ "img": "https://i.postimg.cc/3NrkyJVh/Stackup.jpg"
+ },
+ {
+ "month": "Jan",
+ "date": "17",
+ "head": "Typeiko",
+ "para": "A thrilling typing competition, showcasing participant's speed and accuracy in typing.",
+ "img": "https://i.postimg.cc/B6vnSQfN/typeiko-2024.jpg"
+ },
+ {
+ "month": "Jan",
+ "date": "30",
+ "head": "Grab Your Superpowers",
+ "para": "µLearn GECSKP organized an insightful session called Grab Your Superpowers, where Viswanatha Kartha an intern at IBM, guided participants on mastering version control with Git & GitHub.",
+ "img": "https://i.postimg.cc/26RDsqgK/grab-your-superpowers-git.jpg"
}
- ],
-
- "gallery": {
- "row1": [
- {
- "image": "https://mulearn.org/assets/home/illustration.webp"
- },
- {
- "image": "https://mulearn.org/assets/home/Chart.webp"
- },
- {
- "image": "https://learn.mulearn.org/assets/challenge/typingsample.webp"
- }
- ],
- "row2": [
- {
- "image": "https://th.bing.com/th/id/OIP.p5zC9uLm5ByGSy8gYI0McAHaE8?pid=ImgDet&rs=1"
- },
- {
- "image": "https://images.squarespace-cdn.com/content/v1/5c710438b914490d5769a64f/b4fb2b4f-5f95-41a1-9416-d156d0ae273f/Most+Famous+Astrologer+in+the+World.jpg"
- }
- ]
+ ]
},
-
- "statistics": {
- "studentsCount": 30,
- "learningCircles": 10,
- "InterestGroups": 5,
- "karmaEarned": 60,
- "rank": 28
- },
-
- "team": {
- "staffAdvisor": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+ {
+ "year": 2024,
+ "eventDetails": [
+ {
+ "month": "Aug",
+ "date": "9",
+ "head": "µPy",
+ "para": "A basic python course using snakify",
+ "img": "https://i.postimg.cc/Kz18wQNy/py.jpg"
+ },
+ {
+ "month": "july",
+ "date": "24",
+ "head": "Salt Mango Tree",
+ "para": "KTU Mastery Pathway 2024",
+ "img": "https://i.postimg.cc/d1Ty7h42/Whats-App-Image-2024-07-24-at-11-55-20-AM.jpg"
},
- "campusLead": {
- "name": "Elon Musk",
- "image": "https://th.bing.com/th/id/OIP.DjyPSeO-t7bK2agoLSYJzgHaHa?pid=ImgDet&rs=1"
+ {
+ "month": "july",
+ "date": "17",
+ "head": "Salt Mango Tree",
+ "para": "Discover the Future of Electric Vehicles and Industries in India!",
+ "img": "https://i.postimg.cc/vBcd9qyJ/Whats-App-Image-2024-07-17-at-12-32-46-4e202e01.jpg"
},
- "campusCoLead": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+
+ {
+ "month": "Mar",
+ "date": "25",
+ "head": "Karmayugam",
+ "para": "The Karma Marathon was an exhilarating interdepartmental battle organized with the aim of fostering team spirit and healthy competition among participants.",
+ "img": "https://i.postimg.cc/pd80CtNN/karamayugam.jpg"
},
- "treasurer": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+ {
+ "month": "Feb",
+ "date": "17",
+ "head": "online python workshop",
+ "para": "µLearn GECSKP and µLearn MITS collaborated to organize an engaging Python online hands-on workshop tailored for beginners",
+ "img": "https://i.postimg.cc/wxkGnH1g/python.jpg"
},
- "technicalLead": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+
+ {
+ "month": "Feb",
+ "date": "13",
+ "head": "Code Karma",
+ "para": "The Code Karma event, organized by µLearn GECSKP, was a transformative 30-day coding challenge designed to enhance participants' programming skills and foster aculture of continuous learning",
+ "img": "https://i.postimg.cc/Y0SfJ5PC/code.jpg"
},
- "mediaLead": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+ {
+ "month": "Nov",
+ "date": "12",
+ "head": "Typeiko",
+ "para": "µLearn GECSKP organized a thrilling typing competition called Typeiko, showcasing participant's speed and accuracy in typing.",
+ "img": "https://i.postimg.cc/YS3FMXYG/typeiko.jpg"
},
- "contentLead": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+ {
+ "month": "Nov",
+ "date": "6",
+ "head": "MuStory",
+ "para": "This event showcased a video presentation highlighting Aami's remarkable story of overcoming challenges and transforming her life through µLearn",
+ "img": "https://i.postimg.cc/ZK2FMDxJ/story.jpg"
},
- "operationLead": {
- "name": "Enric S Neelamkavil",
- "image": "https://mulearn-cce.vercel.app/static/media/img1.31943833473f0d0a748b.png"
+ {
+ "month": "Dec",
+ "date": "27",
+ "head": "Malabari Santa",
+ "para": "Northzone and GECSKP organized a thrilling animation challenge called Malabari Santa, showcasing creative depictions of Santa adapting to Kerala’s culture.",
+ "img": "https://i.postimg.cc/JnNLMrL4/malabari-santa.jpg"
}
- },
+ ]
+ }
+ ],
+ "achievements": [
+ {
+ "title": "4th Best Campus Award at Perµte'25",
+ "description":"We’re proud to be recognized as the 4th Best Campus at Perµte'25, the flagship annual celebration of µLearn! This honor reflects our campus's collective spirit of peer learning, tech exploration, and community-driven growth",
+ "images": [
+ "https://i.postimg.cc/rps6GpLH/m0.png",
+ "https://i.postimg.cc/sD4btWj8/m1.png",
+ "https://i.postimg.cc/7LGsYJ4q/m-2.png",
+ "https://i.postimg.cc/d0y6KMR1/m2.png",
+ "https://i.postimg.cc/FK3yBymk/m3.png"
+ ]
+ }
+ ],
- "discordLink": "",
+ "gallery": {
+ "row1": [
+ {
+ "image": "https://i.postimg.cc/7LQpm0tR/Whats-App-Image-2024-06-30-at-21-10-47-2337d1f1.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/1t84j0mV/Whats-App-Image-2024-05-19-at-19-10-05-7cfb08d4.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/yxzBy0kH/Whats-App-Image-2024-05-11-at-19-24-27-c702d4cc.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/FsLxtDV0/Congratulations-Jerald-S6-CSE-on-your-accomplishment.jpg"
+ }
+ ],
+ "row2": [
+ {
+ "image": "https://i.postimg.cc/cJqDHhj0/Whats-App-Image-2024-05-11-at-11-40-05-14ac719b.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/QM4J7qYF/Whats-App-Image-2024-05-09-at-19-46-51-ae9343a0.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/4NLWZmDT/Congratulations-to-Reny-Mathew-who-selected-as-Learn-Palakkad-District-Lead-We-are-thrilled-to-w.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/SQVB2QBg/Discover-the-Ultimate-Campus-Hub-Join-the-Learn-GECSKP-Discord-Channel-Launching-Now-https-d.jpg"
+ },
+ {
+ "image": "https://i.postimg.cc/Qxyvm4x5/Typing-warriors-rejoice-We-re-thrilled-to-announce-that-the-30-day-Typing-Challenge-has-come-to.jpg"
+ }
+ ]
+ },
+
+
+ "statistics": {
+ "studentsCount": 712,
+ "activeMembers": 202,
+ "InterestGroups": 3,
+ "karmaEarned": 360000,
+ "rank": 14
+ },
+
+ "team": {
+ "CampusEnabler": {
+ "name": "ANOOP S K M",
+ "image": "https://i.postimg.cc/CZMxhypx/ANOOP.png"
+ },
+ "CampusLead": {
+ "name": "ASLAM",
+ "image": "https://i.postimg.cc/YGh2F19c/ASLAM.png"
+ },
+ "CampusCoLead1": {
+ "name": "FAHAD",
+ "image": "https://i.postimg.cc/RW7WCQ3X/FAHADH.png"
+ },
+ "CampusCoLead2": {
+ "name": "GOPIKA",
+ "image": "https://i.postimg.cc/0MQjCTVB/GOPIKA.png"
+ },
+ "CreativeLead": {
+ "name": "FADEELA",
+ "image": "https://i.postimg.cc/rKSV5y8p/FADEELA.png"
+ },
+ "TechnicalLead": {
+ "name": "AYSHA",
+ "image": "https://i.postimg.cc/SJ0QXYb5/AYSHA.png"
+ },
+ "MediaLead": {
+ "name": "AVANTHIKA",
+ "image": "https://i.postimg.cc/fkSTTjpm/AVANTHIKA.png"
+ },
+ "DesignLead": {
+ "name": "NAVAMI BR",
+ "image": "https://i.postimg.cc/G852gXNh/navami.png"
+ },
+ "TechTeam1": {
+ "name": "ANUPAMA",
+ "image": "https://i.postimg.cc/kVjXDj7F/Anupama.png"
+ },
+ "TechTeam2": {
+ "name": "UVAIS",
+ "image": "https://i.postimg.cc/F7cRGgxN/UVAIS.png"
+ },
+ "TechTeam3": {
+ "name": "AISWARYA",
+ "image": "https://i.postimg.cc/Xrkv6jhP/AISWARYA.png"
+ },
+ "MediaTeam1": {
+ "name": "ATHUL",
+ "image": "https://i.postimg.cc/ygt1ykgD/ATHUL.png"
+ },
+ "MediaTeam2": {
+ "name": "ATHULYA",
+ "image": "https://i.postimg.cc/jnfsgtPZ/ATHULYA.png"
+ },
+ "MediaTeam3": {
+ "name": "FIDHA",
+ "image": "https://i.postimg.cc/8FTj7JMD/FIDHA.png"
+ },
+ "DesignTeam1": {
+ "name": "FAHAD MK",
+ "image": "https://i.postimg.cc/GBz9GLxD/M-FAHAD.png"
+ },
+ "DesignTeam2": {
+ "name": "SANJANA",
+ "image": "https://i.postimg.cc/YjT01yYd/SANJANA.png"
+ },
+ "IGLead(WebDev)": {
+ "name": "SABARI",
+ "image": "https://i.postimg.cc/p55dwDbQ/SABARI.png"
+ },
+ "IGLead(UI/UX)": {
+ "name": "RONNIE",
+ "image": "https://i.postimg.cc/NLKL2w9y/RONNIE.png"
+ },
+ "IGLead(IOT)": {
+ "name": "VIGNESH",
+ "image": "https://i.postimg.cc/yDHNGgf9/VIGHNESH.png"
+ }
+ },
+ "discordLink": "https://discord.gg/8ga5EEmAcy",
- "whatsAppLink": "",
+ "whatsAppLink": "https://chat.whatsapp.com/FvoLhftysm04LdsYt2S5Zt",
- "email": "mulearn@cce.edu.in",
+ "email": "mulearngecpkd@gmail.com",
- "linkedIn": "",
+ "linkedIn": "https://www.linkedin.com/company/%CE%BClearn-gec-pkd/",
- "instagram": "",
+ "instagram": "https://www.instagram.com/mulearn.gecskp/?utm_source=ig_web_button_share_sheet&igshid=OGQ5ZDc2ODk2ZA==",
- "twitter": "",
+ "X": "https://x.com/MulearnGecPkd",
- "facebook": ""
+ "youtube": "https://www.youtube.com/@MuLearnGECSKP"
}
diff --git a/package-lock.json b/package-lock.json
index 98eebd0..39ebdc7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,8 @@
"react-dom": "^18.2.0",
"react-fast-marquee": "^1.6.0",
"react-helmet-async": "^1.3.0",
- "react-icons": "^4.11.0"
+ "react-icons": "^4.11.0",
+ "react-router-dom": "^7.6.2"
},
"devDependencies": {
"@types/react": "^18.2.15",
@@ -1398,6 +1399,15 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true
},
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2581,6 +2591,44 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-router": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz",
+ "integrity": "sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz",
+ "integrity": "sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==",
+ "license": "MIT",
+ "dependencies": {
+ "react-router": "7.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
"node_modules/regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
@@ -2700,6 +2748,12 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+ "license": "MIT"
+ },
"node_modules/shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
diff --git a/package.json b/package.json
index 01327df..b37168c 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,8 @@
"react-dom": "^18.2.0",
"react-fast-marquee": "^1.6.0",
"react-helmet-async": "^1.3.0",
- "react-icons": "^4.11.0"
+ "react-icons": "^4.11.0",
+ "react-router-dom": "^7.6.2"
},
"devDependencies": {
"@types/react": "^18.2.15",
@@ -27,5 +28,6 @@
"eslint-plugin-react-refresh": "^0.4.3",
"typescript": "^5.0.2",
"vite": "^4.4.5"
- }
+ },
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
diff --git a/src/App.css b/src/App.css
deleted file mode 100644
index b55bb08..0000000
--- a/src/App.css
+++ /dev/null
@@ -1,28 +0,0 @@
-@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@600;700;800&family=Red+Hat+Text:wght@300;400;500;600;700&display=swap');
-
-* {
- scroll-behavior: smooth;
- margin: 0%;
- padding: 0%;
- box-sizing: border-box;
- font-family: "Plus Jakarta Sans";
-}
-
-::-webkit-scrollbar {
- width: 0px;
- height: 0px;
- background-color: #ffffff;
-}
-
-a {
- text-decoration: none;
- cursor: pointer;
-}
-
-.appWrapper {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- width: 100%;
-}
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index 7ac4f91..bcd5156 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,31 +1,16 @@
-import "./App.css";
-// import { Helmet, HelmetProvider } from "react-helmet-async";
-import Navbar from "./Components/Navbar/Navbar";
-import Home from "./Components/Home/Home";
-import About from "./Components/About/About";
-import Events from "./Components/Events/Events";
-import Gallery from "./Components/Gallery/Gallery";
-import Statistics from "./Components/Statistics/Statistics";
-import ExploreLC from "./Components/ExploreLC/ExploreLC";
-import Team from "./Components/Team/Team";
-import Connect from "./Components/Connect/Connect";
-import Footer from "./Components/Footer/Footer";
-function App() {
+import { BrowserRouter as Router, Routes, Route } from "react-router";
+import HomePage from "./Pages/Home";
+import EventPage from "./Pages/Events";
- return (
-
- );
-}
+const App = () => {
+ return (
+
+
+ } />
+ } />
+
+
+ );
+};
export default App;
diff --git a/src/Components/About/About.tsx b/src/Components/About/About.tsx
deleted file mode 100644
index 1b76051..0000000
--- a/src/Components/About/About.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import styles from "./About.module.css";
-import data from "../../../data.json"
-
-const About = () => {
- return (
-
-
About Us
-
{data.about}
-
- );
-};
-
-export default About;
diff --git a/src/Components/Connect/Connect.tsx b/src/Components/Connect/Connect.tsx
deleted file mode 100644
index aac2bb1..0000000
--- a/src/Components/Connect/Connect.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import styles from "./Connect.module.css";
-import image from "./assets/image.svg";
-import { Discord, Whatsapp } from "./assets/svg";
-import data from "../../../data.json"
-
-const Connect = () => {
- return (
-
- );
-};
-
-export default Connect;
diff --git a/src/Components/Events/Events.module.css b/src/Components/Events/Events.module.css
deleted file mode 100644
index 31982d0..0000000
--- a/src/Components/Events/Events.module.css
+++ /dev/null
@@ -1,196 +0,0 @@
-.events {
- max-height: 700px;
- width: 100%;
- padding: 0rem 2rem;
- display: flex;
- flex-direction: column;
- justify-content: center;
- gap: 1rem;
-}
-
-.events h2 {
- text-align: center;
- align-self: center;
-
- color: #ae59ff;
- font-size: 2rem;
-}
-
-.innerDiv {
- display: flex;
- width: 100%;
- align-items: center;
- justify-content: center;
- gap: 20px;
- height: 100%;
-}
-
-.card {
- display: flex;
- align-items: center;
- box-shadow: 0px 0px 24.0251px 0px rgba(0, 0, 0, 0.1);
- padding: 10px 10px;
- margin-bottom: .5rem;
-}
-
-.card .content {
- display: flex;
- align-items: center;
-}
-
-.card .date,
-.card .text {
- display: flex;
- flex-direction: column;
- justify-content: center;
- padding: 0px 10px;
-}
-
-.card .date {
- font-size: 28px;
- border-right: #d6abfe 5px solid;
- text-transform: uppercase;
-}
-
-.card .text {
- font-size: 18px;
-}
-
-.card img {
- height: 110px;
- border-radius: 10px;
-}
-
-.card.large {
- max-width: 500px;
- width: 50%;
- border-radius: 1rem;
- flex-wrap: wrap-reverse;
- gap: 1rem;
- justify-content: space-evenly;
-}
-
-.card.large img {
- /* height: 400px; */
- height: 100%;
- width: 100%;
- border-radius: 1rem;
- object-fit: contain;
-}
-
-.card .large .text {
- max-width: 300px;
-}
-
-.card.large .text span {
- margin-top: .3rem;
- font-size: 1rem;
-}
-
-.card.small {
- border-radius: 1rem;
- max-width: 700px;
-}
-
-.card.small .text {
- width: 75%;
-}
-
-.card.small .text span {
- margin-top: .3rem;
- font-size: 1rem;
-}
-
-.subContent {
- display: flex;
- align-items: center;
- flex-direction: column;
- gap: .5rem;
- justify-content: space-between;
-}
-
-@media (max-width: 1050px) {
- .card .date {
- font-size: 23px;
- }
-
- .card .text {
- font-size: 15px;
- }
-
- .card.large img {
- height: 360px;
- }
-
- .card img {
- height: 90px;
- }
-
- .subContent {
- height: 100%;
- }
-}
-
-@media screen and (max-width: 880px) {
- .events {
- max-height: none;
- }
-
- .innerDiv {
- flex-direction: column;
- }
-
- .card.large {
- max-width: 400px;
- width: 100%;
- }
-
- .card.small {
- max-width: 550px;
- }
-}
-
-@media screen and (max-width: 500px) {
- .events {
- padding: 0rem 10px;
- }
-
- .card.large img {
- height: auto;
- width: 100%;
- }
-
- .card {
- padding: 5px 10px;
- }
-
- .card .date {
- font-size: 23px;
- }
-
- .card .text strong {
- font-size: .9rem;
- margin-bottom: .1rem;
- }
-
- .card.large .text span,
- .card.small .text span {
- font-size: .75rem;
- margin-top: .1rem;
- }
-
- .card img {
- height: 70px;
- }
-}
-
-@media(width<345px){
- .card .text strong {
- font-size: .6rem;
- }
-
- .card.large .text span,
- .card.small .text span {
- font-size: .55rem;
- }
-}
\ No newline at end of file
diff --git a/src/Components/Events/Events.tsx b/src/Components/Events/Events.tsx
deleted file mode 100644
index 4bf0b0b..0000000
--- a/src/Components/Events/Events.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import styles from "./Events.module.css";
-import data from "../../../data.json";
-
-const Events = () => {
- return (
-
-
Our Event Journey
-
-
-
-
- {data["events"][0].month}
- {data["events"][0].date}
-
-
- {data["events"][0].head}
- {data["events"][0].para}
-
-
-

-
-
- {data.events.slice(1).map((event, index) => {
- return (
-
-
-
- {event.month}
- {event.date}
-
-
- {event.head}
- {event.para}
-
-
-

-
- );
- })}
-
-
-
- );
-};
-
-export default Events;
diff --git a/src/Components/Footer/Footer.tsx b/src/Components/Footer/Footer.tsx
deleted file mode 100644
index bc0a3ba..0000000
--- a/src/Components/Footer/Footer.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import styles from "./Footer.module.css";
-import { Instagram, Twitter, Facebook, LinkedIn } from "./assets/svg";
-import { ULearnWhite } from "../../assets/svg/svg";
-import data from "../../../data.json"
-
-const Footer = () => {
- return (
-
-
-
-
-
- {" "}
-
Copyright © 2023. All Rights Reserved.
-
µLearn Foundation.
-
-
- );
-};
-
-export default Footer;
diff --git a/src/Components/Gallery/Gallery.tsx b/src/Components/Gallery/Gallery.tsx
deleted file mode 100644
index a883a5e..0000000
--- a/src/Components/Gallery/Gallery.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import Marquee from "react-fast-marquee";
-import styles from "./Gallery.module.css";
-import data from '../../../data.json'
-
-const Gallery = () => {
- const marqParams = {
- autoFill: true,
- pauseOnHover: true,
- };
-
- return (
-
-
Memories
-
-
-
-
-
-
-
- );
-};
-
-export default Gallery;
diff --git a/src/Components/Home/Home.module.css b/src/Components/Home/Home.module.css
deleted file mode 100644
index c1a3a21..0000000
--- a/src/Components/Home/Home.module.css
+++ /dev/null
@@ -1,241 +0,0 @@
-.HomeWrapper {
- height: fit-content;
- min-height: 100vh;
- width: 100%;
- background: linear-gradient(180deg, #c18bf5 0%, #fff 68.23%);
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: space-between;
- position: relative;
- gap: 3vh;
- overflow: hidden;
-}
-
-.HomeWrapper img {
- width: 100%;
-}
-
-.contentWraper {
- display: flex;
- flex-direction: column;
- align-items: center;
- margin-top: 20vh;
- position: relative;
- z-index: 9900;
-}
-
-.contentWraper h1 {
- margin: 0%;
- line-height: 1;
- font-size: 7vw;
- font-weight: 600;
-}
-
-.contentWraper h2 {
- margin: 0%;
- line-height: 1;
- font-size: 9vw;
- font-weight: 700;
- margin-top: -3vw;
- color: #ae59ff;
-}
-
-.contentWraper p {
- /* margin-top: -1vw; */
- font-size: 1.5vw;
- width: 25vw;
- text-align: center;
-}
-
-@media screen and (max-width: 900px) {
- .HomeWrapper {
- overflow: hidden;
- }
-
- .HomeWrapper img {
- width: 900px;
- }
-
- .contentWraper {
- margin-top: 16vh;
- }
-
- .contentWraper h1 {
- font-size: 9vw;
- }
-
- .contentWraper h2 {
- font-size: 15vw;
- margin-top: -4vw;
- }
-
- .contentWraper p {
- /* margin-top: -1vw; */
- font-size: 2.4vw;
- width: 43vw;
- }
-}
-
-@media screen and (max-width: 700px) {
- .contentWraper {
- margin-top: 20vh;
- }
-
- .contentWraper h1 {
- font-size: 9.5vw;
- }
-
- .contentWraper h2 {
- /* font-size: 17vw; */
- margin-top: -4vw;
- }
-
- .contentWraper p {
- /* margin-top: -1vw; */
- font-size: 3vw;
- }
-}
-
-@media screen and (max-width: 500px) {
- .contentWraper h1 {
- font-size: 9.5vw;
- }
-
- .contentWraper h2 {
- font-size: 17vw;
- margin-top: -4vw;
- }
-
- .contentWraper p {
- /* margin-top: -1vw; */
- font-size: 3vw;
- }
-}
-
-.start1 {
- position: absolute;
- z-index: 7000;
- left: 15%;
- top: 25%;
-}
-
-.start2 {
- position: absolute;
- z-index: 7000;
- right: 10%;
- top: 30%;
-}
-
-.start3 {
- position: absolute;
- z-index: 7000;
- left: 27%;
- top: 12%;
-}
-
-.start4 {
- position: absolute;
- z-index: 7000;
- right: 27%;
- top: 28%;
-}
-
-.start5 {
- position: absolute;
- z-index: 0;
- right: 45%;
- top: 8%;
-}
-
-.start6 {
- position: absolute;
- z-index: 0;
- left: -5%;
- top: 30%;
-}
-
-.start7 {
- position: absolute;
- z-index: 0;
- right: -5%;
- top: 30%;
-}
-
-.start8 {
- position: absolute;
- z-index: 0;
- right: 14%;
- top: 15%;
-}
-
-@media screen and (max-width: 900px) {
- .start1 {
- left: 17%;
- top: 30%;
- }
-
- .start2 {
- right: 10%;
- top: 30%;
- }
-
- .start3 {
- left: 27%;
- top: 12%;
- }
-
- .start4 {
- right: 18%;
- top: 26%;
- }
-
- .start5 {
- right: 48%;
- top: 13%;
- }
-
- .start6 {
-
- left: -4%;
- top: 40%;
- }
-
- .start7 {
- right: -5%;
- top: 30%;
- }
-
- .start8 {
-
- right: 7%;
- top: 17%;
- }
-}
-
-@media screen and (max-width: 700px) {
- .start1 {
- left: 13%;
- top: 30%;
- }
-
- .start2 {
- right: 10%;
- top: 35%;
- }
-
- .start3 {
- left: 27%;
- top: 15%;
- }
-
- .start4 {
- right: 14%;
- top: 30%;
- }
-
- .start5 {
- right: 48.5%;
- top: 15%;
- }
-}
\ No newline at end of file
diff --git a/src/Components/Home/Home.tsx b/src/Components/Home/Home.tsx
deleted file mode 100644
index b46686a..0000000
--- a/src/Components/Home/Home.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import styles from "./Home.module.css";
-import image from "./assets/homeimg.svg";
-import { BlueStar, WhiteStar, Mu } from "./assets/svg";
-import data from '../../../data.json'
-
-const Home = () => {
- return (
-
-
-
Welcome to the
-
µverse
-
{data.college}
-
-

-
-
-
{" "}
-
-
-
{" "}
-
-
-
-
-
-
{" "}
-
-
-
-
-
-
{" "}
-
-
-
{" "}
-
-
-
-
- );
-};
-
-export default Home;
\ No newline at end of file
diff --git a/src/Components/Navbar/Navbar.tsx b/src/Components/Navbar/Navbar.tsx
deleted file mode 100644
index fba2a38..0000000
--- a/src/Components/Navbar/Navbar.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import styles from "./Navbar.module.css";
-import { useEffect, useState } from "react";
-import { ULearn } from "../../assets/svg/svg";
-import { useReactPath } from "./path.hook.ts";
-import { AiOutlineMenu } from "react-icons/ai";
-import data from "../../../data.json";
-
-const Navbar = () => {
- const [openmenu, setopenmenu] = useState(false);
- const [navbg, setNavBg] = useState(false);
- function openMenu() {
- setopenmenu(!openmenu);
- }
- const path = useReactPath();
- const navContent = ["home", "about", "gallery", "team", "contact"];
- useEffect(() => { }, [path]);
- const changeNavBg = () => {
- window.scrollY >= 150 ? setNavBg(true) : setNavBg(false);
- };
-
- useEffect(() => {
- window.addEventListener("scroll", changeNavBg);
- return () => {
- window.removeEventListener("scroll", changeNavBg);
- };
- }, []);
- return (
-
-
-
-
-
-
- {openmenu && (
-
- )}
-
-
- );
-};
-
-export default Navbar;
\ No newline at end of file
diff --git a/src/Components/Statistics/Statistics.tsx b/src/Components/Statistics/Statistics.tsx
deleted file mode 100644
index bdd6c89..0000000
--- a/src/Components/Statistics/Statistics.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import styles from "./Statistics.module.css";
-import { ULearn } from "../../assets/svg/svg";
-import data from "../../../data.json"
-import { useEffect, useRef, useState } from "react";
-
-const Statistics = () => {
-
- const [counters, setCounters] = useState([0, 0, 0, 0]); // Initialize counters
- const durationInSeconds = 3; // Duration in seconds
-
- const targetRef = useRef(null); // Create a ref
-
- const isElementInViewport = (el: HTMLElement | null) => {
- if (!el) {
- return false;
- }
- const rect = el.getBoundingClientRect();
- return (
- rect.top >= 0 &&
- rect.left >= 0 &&
- rect.bottom <=
- (window.innerHeight || document.documentElement.clientHeight) &&
- rect.right <=
- (window.innerWidth || document.documentElement.clientWidth)
- );
- };
-
- useEffect(() => {
- const finalValues: number[] = [
- data.statistics.studentsCount ?? 0,
- data.statistics.learningCircles ?? 0,
- data.statistics.InterestGroups ?? 0,
- data.statistics.karmaEarned ?? 0,
- ];
-
- const startCounterAnimation = () => {
- const interval = setInterval(() => {
- setCounters((prevCounters) =>
- prevCounters.map((counter, index) =>
- counter < finalValues[index]
- ? counter +
- Math.ceil(
- finalValues[index] / (durationInSeconds * 20)
- ) // Increment smoothly
- : finalValues[index]
- )
- );
- }, 50);
-
- return () => clearInterval(interval);
- };
-
- let cleanup: (() => void) | undefined;
-
- const observer = new IntersectionObserver(
- (entries) => {
- if (entries[0].isIntersecting) {
- cleanup = startCounterAnimation();
- }
- },
- {
- root: null,
- rootMargin: "0px",
- threshold: 0.5,
- }
- );
-
- if (targetRef.current) {
- if (isElementInViewport(targetRef.current)) {
- cleanup = startCounterAnimation();
- } else {
- observer.observe(targetRef.current);
- }
- }
-
- return () => {
- if (cleanup) {
- cleanup();
- }
- if (targetRef.current) {
- observer.unobserve(targetRef.current);
- }
- };
- }, [data.statistics]);
-
- return (
-
-
Our Statistics
-
-
- {counters.map((counter, index) => (
-
-
- {index >= 0
- ? counter >= 2
- ? `${counter}+`
- : counter
- : counter.toLocaleString()}
-
-
- {index === 0
- ? "STUDENTS"
- : index === 1
- ? "LEARNING"
- : index === 2
- ? "INTEREST"
- : "KARMA"
- }
-
-
- {index === 0
- ? "ENROLLED"
- : index === 1
- ? "CIRCLES"
- : index === 2
- ? "GROUPS"
- : "MINED"}
-
-
- ))}
-
-
-
-
Rank:{data.statistics.rank}
-
-
-
- );
-};
-
-export default Statistics;
diff --git a/src/Components/Team/Team.module.css b/src/Components/Team/Team.module.css
deleted file mode 100644
index 5762125..0000000
--- a/src/Components/Team/Team.module.css
+++ /dev/null
@@ -1,600 +0,0 @@
-.teamWrapper {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- gap: 100px;
- width: 100%;
- min-height: 700px;
- margin-top: 3vh;
-}
-
-.teamWrapper h1 {
- color: #ad58ff;
-}
-
-.teamBodyWrapper {
- position: relative;
- height: 85vh;
- min-height: 700px;
-}
-
-.teamBgLineWrapper {
- width: 100%;
- position: relative;
- display: flex;
- flex-direction: column;
- gap: 280px;
-}
-
-.teamBgLineWrapper>img {
- width: 100%;
-}
-
-.teamBgLineWrapper> :nth-child(3),
-.teamBgLineWrapper> :nth-child(4) {
- display: none;
-}
-
-.teamMembersDetailsWrapper {
- display: flex;
- flex-wrap: wrap;
- position: absolute;
- top: 0;
- align-items: center;
- justify-content: center;
- width: 100%;
-}
-
-.team {
- height: 20rem;
- width: 15rem;
- /* background-color: #2196da; */
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- gap: 20px;
- position: absolute;
-}
-
-.teamImageIndividual {
- height: 15rem;
- object-fit: contain;
- position: relative;
- vertical-align: top;
- width: 15rem;
- border-radius: 50%;
-}
-
-.teamNameDesignation {
- height: fit-content;
- position: relative;
- width: 100%;
- display: flex;
- flex-direction: column;
- align-items: center;
-}
-
-.teamMemberName {
- color: #000000;
- display: flex;
- font-weight: 700;
- height: fit-content;
- justify-content: center;
- width: fit-content;
- font-size: 1.5rem;
-}
-
-.teamMemberDesignation {
- color: #ad58ff;
- display: flex;
- font-size: 1.3rem;
-
- font-weight: 500;
- height: fit-content;
- justify-content: center;
- top: 2rem;
- width: fit-content;
-}
-
-.team1Img {
- border-radius: 50%;
- flex-shrink: 0;
- width: 15rem;
- display: flex;
- width: 100%;
- align-items: center;
- justify-content: center;
-}
-
-.team1 {
- margin-top: -30px;
- top: 0;
- left: 5%;
-}
-
-.team2 {
- margin-top: -50px;
-
- top: 0;
- left: 28%;
-}
-
-.team3 {
- margin-top: -60px;
-
- top: 0;
- left: 50%;
-}
-
-.team4 {
- margin-top: -10px;
-
- top: 0;
- left: 74%;
-}
-
-.team5 {
- margin-top: 350px;
-
- top: 100%;
- left: 7%;
-}
-
-.team6 {
- margin-top: 400px;
-
- top: 100%;
- left: 30%;
-}
-
-.team7 {
- margin-top: 430px;
- top: 100%;
- left: 54%;
-}
-
-.team8 {
- margin-top: 360px;
-
- top: 100%;
- left: 77%;
-}
-
-@media screen and (max-width: 1650px) {
- .teamBodyWrapper {
- height: 95vh;
- }
-
- .teamBgLineWrapper {
- gap: 260px;
- }
-
- .team1 {
- margin-top: -50px;
- top: 0;
- left: 5%;
- }
-
- .team2 {
- margin-top: -70px;
-
- top: 0;
- left: 28%;
- }
-
- .team3 {
- margin-top: -60px;
-
- top: 0;
- left: 50%;
- }
-
- .team4 {
- margin-top: -50px;
-
- top: 0;
- left: 74%;
- }
-
- .team5 {
- margin-top: 300px;
-
- top: 100%;
- left: 7%;
- }
-
- .team6 {
- margin-top: 330px;
-
- top: 100%;
- left: 30%;
- }
-
- .team7 {
- margin-top: 350px;
- top: 100%;
- left: 54%;
- }
-
- .team8 {
- margin-top: 310px;
-
- top: 100%;
- left: 77%;
- }
-}
-
-@media screen and (max-width: 1200px) {
- .teamWrapper {
- margin-top: 50px;
- gap: 100px;
- }
-
- .teamBodyWrapper {
- height: 120vh;
- }
-
- .teamBgLineWrapper {
- gap: 270px;
- }
-
- .teamBgLineWrapper> :nth-child(3) {
- display: block;
- }
-
- .teamImageIndividual {
- height: 12rem;
- width: 12rem;
- }
-
- .team1 {
- margin-top: -70px;
- left: 3%;
- }
-
- .team2 {
- margin-top: -100px;
- left: 37%;
- }
-
- .team3 {
- margin-top: -60px;
- left: 69%;
- }
-
- .team4 {
- margin-top: 230px;
-
- top: 100%;
- left: 4%;
- }
-
- .team5 {
- margin-top: 280px;
-
- left: 37%;
- }
-
- .team6 {
- margin-top: 245px;
-
- left: 68%;
- }
-
- .team7 {
- margin-top: 650px;
- left: 20%;
- }
-
- .team8 {
- margin-top: 640px;
-
- left: 60%;
- }
-}
-
-@media screen and (max-width: 900px) {
- .team7 {
- margin-top: 620px;
- left: 20%;
- }
-
- .team8 {
- margin-top: 610px;
-
- left: 60%;
- }
-}
-
-@media screen and (max-width: 780px) {
- .teamBodyWrapper {
- height: 105vh;
- }
-
- .teamBgLineWrapper> :nth-child(3) {
- display: block;
- }
-
- .teamBgLineWrapper {
- gap: 250px;
- }
-
- .teamImageIndividual {
- height: 10rem;
- width: 10rem;
- }
-
- .teamMemberName {
- font-size: 1rem;
- }
-
- .teamMemberDesignation {
- font-size: .85rem;
- }
-
- .team {
- width: 12.3rem;
- }
-
- .team1 {
- margin-top: -100px;
- left: 3%;
- }
-
- .team2 {
- margin-top: -120px;
- left: 35%;
- }
-
- .team3 {
- margin-top: -80px;
- left: 65%;
- }
-
- .team4 {
- margin-top: 160px;
-
- left: 4%;
- }
-
- .team5 {
- margin-top: 220px;
-
- left: 36%;
- }
-
- .team6 {
- margin-top: 190px;
-
- left: 65%;
- }
-
- .team7 {
- margin-top: 520px;
- left: 20%;
- }
-
- .team8 {
- margin-top: 530px;
-
- left: 56%;
- }
-}
-
-@media screen and (max-width: 650px) {
- .teamWrapper {
- overflow: hidden;
- }
-
- .teamBodyWrapper {
- height: 120vh;
- }
-
- .teamBgLineWrapper> :nth-child(4) {
- display: block;
- }
-
- .teamBgLineWrapper {
- width: 100%;
- gap: 220px;
- }
-
- .teamNameDesignation {
- font-size: 1rem;
- }
-
- .team {
- width: 10rem;
- }
-
- .team1 {
- margin-top: -120px;
- top: 0;
- left: 15%;
- }
-
- .team2 {
- margin-top: -120px;
- top: 0%;
- left: 60%;
- }
-
- .team3 {
- margin-top: 130px;
- top: 0;
- left: 14%;
- }
-
- .team4 {
- margin-top: 150px;
-
- left: 59%;
- }
-
- .team5 {
- margin-top: 430px;
-
- left: 16%;
- }
-
- .team6 {
- margin-top: 420px;
-
- left: 60%;
- }
-
- .team7 {
- margin-top: 680px;
- left: 15%;
- }
-
- .team8 {
- margin-top: 690px;
-
- left: 60%;
- }
-}
-
-@media screen and (max-height: 600px) {
- .teamBodyWrapper {
- height: 850px;
- }
-}
-
-@media screen and (max-width: 480px) {
- .team1 {
- margin-top: -120px;
- top: 0;
- left: 7%;
- }
-
- .team2 {
- margin-top: -120px;
- top: 0%;
- left: 52%;
- }
-
- .team3 {
- margin-top: 130px;
- top: 0;
- left: 8%;
- }
-
- .team4 {
- margin-top: 140px;
-
- left: 53%;
- }
-
- .team5 {
- margin-top: 400px;
-
- left: 6%;
- }
-
- .team6 {
- margin-top: 390px;
-
- left: 51%;
- }
-
- .team7 {
- margin-top: 650px;
- left: 7%;
- }
-
- .team8 {
- margin-top: 650px;
-
- left: 52%;
- }
-}
-
-@media screen and (max-width: 380px) {
- .teamBodyWrapper {
- height: 115vh;
- }
-
- .teamImageIndividual {
- height: 8.5rem;
- width: 8.5rem;
- }
-
- .teamMemberName {
- font-size: 0.9rem;
- }
-
- .team {
- width: 9rem;
- }
-
- .team1 {
- margin-top: -130px;
- left: 7%;
- }
-
- .team2 {
- margin-top: -140px;
- left: 51%;
- }
-
- .team3 {
- margin-top: 120px;
- left: 8%;
- }
-
- .team4 {
- margin-top: 130px;
-
- left: 52%;
- }
-
- .team5 {
- margin-top: 380px;
-
- left: 7%;
- }
-
- .team6 {
- margin-top: 370px;
-
- left: 51%;
- }
-
- .team7 {
- margin-top: 620px;
- left: 8%;
- }
-
- .team8 {
- margin-top: 630px;
-
- left: 52%;
- }
-}
-
-@media screen and (max-width: 1200px) and (max-height: 780px) {
- .teamBodyWrapper {
- min-height: 1000px;
- }
-}
-
-@media screen and (max-width: 600px) and (max-height: 800px) {
- .teamBodyWrapper {
- min-height: 920px;
- }
-}
-
-@media screen and (max-width: 500px) and (max-height: 800px) {
- .teamBodyWrapper {
- min-height: 970px;
- }
-}
-
-@media screen and (max-width: 400px) and (max-height: 800px) {
- .teamBodyWrapper {
- min-height: 920px;
- }
-}
\ No newline at end of file
diff --git a/src/Components/Team/Team.tsx b/src/Components/Team/Team.tsx
deleted file mode 100644
index a28ceda..0000000
--- a/src/Components/Team/Team.tsx
+++ /dev/null
@@ -1,160 +0,0 @@
-import styles from "./Team.module.css";
-import line from "./assets/line.png";
-import line2 from "./assets/line2.png";
-import data from "../../../data.json"
-
-const Team = () => {
- return (
-
-
Our Team
-
-
-
-
-
-

-
-
-
- {data.team.staffAdvisor.name}
-
-
- Staff Advisor
-
-
-
-
-
-

-
-
-
- {data.team.campusLead.name}
-
-
- Campus Lead
-
-
-
-
-
-

-
-
-
- {data.team.campusCoLead.name}
-
-
- Campus Co-Lead
-
-
-
-
-
-

-
-
-
- {data.team.treasurer.name}
-
-
- Treasurer
-
-
-
-
-
-

-
-
-
- {data.team.technicalLead.name}
-
-
- Technical Lead
-
-
-
-
-
-

-
-
-
- {data.team.mediaLead.name}
-
-
- Media Lead
-
-
-
-
-
-

-
-
-
- {data.team.contentLead.name}
-
-
- Content Lead
-
-
-
-
-
-

-
-
-
- {data.team.operationLead.name}
-
-
- Operation Lead
-
-
-
-
-
-
- );
-};
-
-export default Team;
\ No newline at end of file
diff --git a/src/Components/About/About.module.css b/src/Pages/Components/About/About.module.css
similarity index 92%
rename from src/Components/About/About.module.css
rename to src/Pages/Components/About/About.module.css
index ed6e7e5..a54e19b 100644
--- a/src/Components/About/About.module.css
+++ b/src/Pages/Components/About/About.module.css
@@ -5,7 +5,7 @@
justify-content: center;
text-align: center;
gap: 25px;
- padding: 5vh 5%;
+ padding: 1.7cm 5%;
width: 100%;
}
@@ -30,7 +30,7 @@
@media screen and (max-width: 670px) {
.AboutWrapper {
gap: 15px;
- padding: 3vh 5%;
+ padding: 10vh 3vh 5%;
}
.AboutWrapper h1 {
diff --git a/src/Pages/Components/About/About.tsx b/src/Pages/Components/About/About.tsx
new file mode 100644
index 0000000..3a1d15b
--- /dev/null
+++ b/src/Pages/Components/About/About.tsx
@@ -0,0 +1,13 @@
+import styles from "./About.module.css";
+import data from "../../../../data.json";
+
+const About = () => {
+ return (
+
+
About Us
+
{data.about}
+
+ );
+};
+
+export default About;
diff --git a/src/Pages/Components/Achievements/Achievements.module.css b/src/Pages/Components/Achievements/Achievements.module.css
new file mode 100644
index 0000000..3c0a2be
--- /dev/null
+++ b/src/Pages/Components/Achievements/Achievements.module.css
@@ -0,0 +1,181 @@
+.achievements {
+ width: 100%;
+ padding: 2rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 2rem;
+}
+
+.achievements h2 {
+ text-align: center;
+ align-self: center;
+ color: #ae59ff;
+ font-size: 2rem;
+ margin-bottom: 1rem;
+}
+
+.achievementsContainer {
+ display: flex;
+ flex-direction: column;
+ gap: 3rem;
+ width: 100%;
+}
+
+.achievementCard {
+ display: flex;
+ flex-direction: column;
+ border-radius: 1rem;
+ box-shadow: 0px 0px 24px rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ transition:
+ transform 0.3s ease,
+ box-shadow 0.3s ease;
+}
+
+.achievementCard:hover {
+ transform: translateY(-5px);
+ box-shadow: 0px 10px 40px rgba(0, 0, 0, 0.15);
+}
+
+.cardHeader {
+ display: flex;
+ flex-direction: column;
+ padding: 2rem;
+ text-align: center;
+}
+
+.achievementTitle {
+ font-size: 1.5rem;
+ font-weight: bold;
+ color: #1f2937;
+ margin: 0 0 1rem 0;
+}
+
+.achievementDescription {
+ font-size: 1rem;
+ color: #6b7280;
+ line-height: 1.6;
+ margin: 0;
+ max-width: 600px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.imageGallery {
+ padding: 1rem 0;
+ background: #ffffff;
+}
+
+.marqueeContainer {
+ width: 100% !important;
+}
+
+.imgContainer {
+ padding: 0 1rem;
+ height: 300px;
+ width: 400px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.imgContainer img {
+ height: 100%;
+ width: 100%;
+ object-fit: cover;
+ border-radius: 0.75rem;
+ transition: transform 0.3s ease;
+}
+
+.imgContainer:hover img {
+ transform: scale(1.05);
+}
+
+/* Responsive Design */
+@media screen and (max-width: 1024px) {
+ .achievements {
+ padding: 1.5rem;
+ }
+
+ .imgContainer {
+ height: 250px;
+ width: 350px;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ .achievements {
+ padding: 1rem;
+ }
+
+ .achievements h2 {
+ font-size: 1.75rem;
+ }
+
+ .cardHeader {
+ padding: 1.5rem;
+ }
+
+ .achievementTitle {
+ font-size: 1.25rem;
+ }
+
+ .achievementDescription {
+ font-size: 0.9rem;
+ }
+
+ .imgContainer {
+ height: 200px;
+ width: 300px;
+ padding: 0 0.75rem;
+ }
+}
+
+@media screen and (max-width: 500px) {
+ .achievements {
+ padding: 0.5rem;
+ gap: 1.5rem;
+ }
+
+ .achievements h2 {
+ font-size: 1.5rem;
+ }
+
+ .cardHeader {
+ padding: 1rem;
+ }
+
+ .achievementTitle {
+ font-size: 1.1rem;
+ }
+
+ .achievementDescription {
+ font-size: 0.85rem;
+ }
+
+ .imgContainer {
+ height: 180px;
+ width: 250px;
+ padding: 0 0.5rem;
+ }
+}
+
+@media screen and (max-width: 400px) {
+ .achievements h2 {
+ font-size: 1.25rem;
+ }
+
+ .achievementTitle {
+ font-size: 1rem;
+ }
+
+ .achievementDescription {
+ font-size: 0.8rem;
+ }
+
+ .imgContainer {
+ height: 150px;
+ width: 200px;
+ }
+}
diff --git a/src/Pages/Components/Achievements/Achievements.tsx b/src/Pages/Components/Achievements/Achievements.tsx
new file mode 100644
index 0000000..d6ce155
--- /dev/null
+++ b/src/Pages/Components/Achievements/Achievements.tsx
@@ -0,0 +1,64 @@
+import React from "react";
+import styles from "./Achievements.module.css";
+import data from "../../../../data.json";
+import Marquee from "react-fast-marquee";
+
+export interface AchievementDetails {
+ title: string;
+ description: string;
+ images: string[];
+}
+
+const Achievements: React.FC = () => {
+ const marqParams = {
+ autoFill: true,
+ pauseOnHover: true,
+ };
+
+ return (
+
+ {data.achievements.length > 0 && (
+ <>
+
Our Achievements
+
+
+ {data.achievements.map(
+ (achievement: AchievementDetails, index: number) => (
+
+
+
+ {achievement.title}
+
+
+ {achievement.description}
+
+
+
+
+
+
+
+ ),
+ )}
+
+ >
+ )}
+
+ );
+};
+
+export default Achievements;
diff --git a/src/Components/Connect/Connect.module.css b/src/Pages/Components/Connect/Connect.module.css
similarity index 94%
rename from src/Components/Connect/Connect.module.css
rename to src/Pages/Components/Connect/Connect.module.css
index fc2266b..adc0f47 100644
--- a/src/Components/Connect/Connect.module.css
+++ b/src/Pages/Components/Connect/Connect.module.css
@@ -3,8 +3,10 @@
flex-direction: column;
align-items: center;
width: 100%;
- padding: 0vh 10vw 5vh;
+ padding: 5vh 10vw;
gap: 25px;
+ padding-top: 1.7cm;
+ background-color: #ffffff; /* Add a background color to ensure it covers the team section */
}
.contentWrapper {
@@ -119,11 +121,12 @@
@media screen and (max-width: 820px) {
.ConnectWrapper {
- padding: 0vh 6vw 5vh;
+ padding: 10vh 6vw 5vh;
}
.innerContent h2 {
font-size: 24px;
+
}
.socialMedia {
diff --git a/src/Pages/Components/Connect/Connect.tsx b/src/Pages/Components/Connect/Connect.tsx
new file mode 100644
index 0000000..9338572
--- /dev/null
+++ b/src/Pages/Components/Connect/Connect.tsx
@@ -0,0 +1,38 @@
+import styles from "./Connect.module.css";
+import image from "./assets/image.svg";
+import { Discord, Whatsapp } from "./assets/svg";
+import data from "../../../../data.json";
+
+const Connect = () => {
+ return (
+
+ );
+};
+
+export default Connect;
diff --git a/src/Components/Connect/assets/image.svg b/src/Pages/Components/Connect/assets/image.svg
similarity index 100%
rename from src/Components/Connect/assets/image.svg
rename to src/Pages/Components/Connect/assets/image.svg
diff --git a/src/Components/Connect/assets/svg.tsx b/src/Pages/Components/Connect/assets/svg.tsx
similarity index 100%
rename from src/Components/Connect/assets/svg.tsx
rename to src/Pages/Components/Connect/assets/svg.tsx
diff --git a/src/Pages/Components/Events/Events.module.css b/src/Pages/Components/Events/Events.module.css
new file mode 100644
index 0000000..ff0d2b1
--- /dev/null
+++ b/src/Pages/Components/Events/Events.module.css
@@ -0,0 +1,277 @@
+.events {
+ width: 100%;
+ padding: 0rem 2rem 4rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 2rem;
+ scroll-margin-top: 80px; /* Add space for fixed header if any */
+ scroll-behavior: smooth; /* Enable smooth scrolling */
+}
+
+/* Add styles for the section anchor */
+.events:target {
+ scroll-margin-top: 80px;
+ padding-top: 80px; /* Add padding to prevent content from being hidden under fixed header */
+}
+
+.events h2 {
+ text-align: center;
+ align-self: center;
+ color: #ae59ff;
+ font-size: 2rem;
+}
+
+.innerDiv {
+ display: flex;
+ width: 100%;
+ align-items: center;
+ justify-content: center;
+ gap: 20px;
+ height: 100%;
+}
+
+.card {
+ display: flex;
+ align-items: center;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ padding: 10px 10px;
+ margin-bottom: 0.5rem;
+ transition: all 0.3s ease;
+}
+
+.card:hover {
+ transform: translateY(-8px);
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.15);
+}
+
+.card .content {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ width: 95%;
+}
+
+.card .date,
+.card .text {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ padding: 10px;
+}
+
+.card .date {
+ font-size: 28px;
+ border-right: #d6abfe 5px solid;
+ text-transform: uppercase;
+ align-items: center;
+}
+
+.card .text {
+ font-size: 18px;
+ padding-left: 12px;
+}
+
+.card img {
+ height: 110px;
+ border-radius: 10px;
+}
+
+.card.large {
+ max-width: 500px;
+ width: 50%;
+ height: 600px;
+ border-radius: 1rem;
+ flex-direction: column;
+ gap: 1rem;
+ justify-content: space-between;
+ align-items: stretch;
+ padding: 1rem;
+ overflow: hidden; /* Hide overflow content */
+}
+
+.card.large img {
+ height: 350px; /* Fixed height for consistency */
+ width: 100%;
+ border-radius: 1rem;
+ object-fit: cover; /* Maintain aspect ratio and fill space */
+ flex-shrink: 0;
+}
+
+/* FIXED: Corrected selector - was missing dot */
+.card.large .text {
+ max-width: 100%;
+ width: 100%;
+ flex: 1; /* Take remaining space after image */
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ overflow: hidden; /* Prevent text overflow */
+}
+
+.card.large .text span {
+ margin-top: 0.3rem;
+ font-size: 1rem;
+ line-height: 1.4;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 4; /* Limit to 4 lines */
+ -webkit-box-orient: vertical;
+}
+
+/* FIXED: Added consistent title styling for large cards */
+.card.large .text strong {
+ font-size: 1.2rem;
+ line-height: 1.3;
+ margin-bottom: 0.5rem;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 2; /* Limit title to 2 lines */
+ -webkit-box-orient: vertical;
+}
+
+.card.small {
+ border-radius: 1rem;
+ width: 95%;
+}
+
+.card.small .text {
+ width: 75%;
+}
+
+.card.small .text span {
+ margin-top: 0.3rem;
+ font-size: 1rem;
+}
+
+.subContent {
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ gap: 0.5rem;
+ justify-content: space-between;
+}
+
+.viewAllButton {
+ padding: 4px 8px;
+ border-radius: 1rem;
+ background-color: #ae59ff;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ color: white;
+ transition: all 0.3s ease;
+}
+
+.viewAllButton:hover {
+ transform: translateY(-8px);
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.15);
+}
+
+@media (max-width: 1050px) {
+ .card .date {
+ font-size: 23px;
+ }
+ .card .text {
+ font-size: 15px;
+ }
+ .card.large img {
+ height: 360px;
+ }
+ .card img {
+ height: 90px;
+ }
+ .subContent {
+ height: 100%;
+ }
+}
+
+@media screen and (max-width: 880px) {
+ .events {
+ max-height: none;
+ }
+ .innerDiv {
+ flex-direction: column;
+ }
+ .card.large {
+ max-width: 400px;
+ width: 100%;
+ height: 500px; /* Adjust height for mobile */
+ }
+ .card.large img {
+ height: 280px; /* Adjust image height for mobile */
+ }
+ .card.small {
+ max-width: 550px;
+ }
+ .yearScroll {
+ padding: 0 0.5rem;
+ }
+}
+
+@media screen and (max-width: 500px) {
+ .events {
+ padding: 0rem 10px 4rem;
+ }
+ .card.large {
+ height: 400px; /* Smaller height for very small screens */
+ }
+ .card.large img {
+ height: 200px; /* Smaller image for mobile */
+ width: 100%;
+ }
+ .card {
+ padding: 5px 10px;
+ width: 85%;
+ }
+ .card .date {
+ font-size: 23px;
+ }
+ .card .text strong {
+ font-size: 0.9rem;
+ margin-bottom: 0.1rem;
+ }
+ .card.large .text span,
+ .card.small .text span {
+ font-size: 0.75rem;
+ margin-top: 0.1rem;
+ }
+ .card img {
+ height: 70px;
+ }
+ .yearButton {
+ min-width: 80px;
+ padding: 0.5rem 1rem;
+ font-size: 0.9rem;
+ }
+}
+
+@media (width < 345px) {
+ .card .text strong {
+ font-size: 0.6rem;
+ }
+ .card.large .text span,
+ .card.small .text span {
+ font-size: 0.55rem;
+ }
+}
+
+.registerButton {
+ padding: 4px 8px;
+ border-radius: 1rem;
+ background-color: #ae59ff;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ color: white;
+ transition: all 0.3s ease;
+ border: none;
+ cursor: pointer;
+ font-weight: 600;
+ margin-top: 12px;
+}
+
+.registerButton:hover {
+ transform: translateY(-8px);
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.15);
+}
diff --git a/src/Pages/Components/Events/Events.tsx b/src/Pages/Components/Events/Events.tsx
new file mode 100644
index 0000000..cbdff3e
--- /dev/null
+++ b/src/Pages/Components/Events/Events.tsx
@@ -0,0 +1,101 @@
+import React, { useEffect } from "react";
+import styles from "./Events.module.css";
+import data from "../../../../data.json";
+
+export interface EventDetail {
+ month: string;
+ date: string;
+ head: string;
+ para: string;
+ img: string;
+}
+
+export interface YearEvent {
+ year: number;
+ eventDetails: EventDetail[];
+}
+
+export interface EventsData {
+ events: YearEvent[];
+}
+
+interface EventsProps {
+ defaultYear?: number;
+}
+
+const Events: React.FC = ({ defaultYear = 2025 }) => {
+ const selectedYearEvents =
+ data.events.find((event) => event.year === defaultYear)?.eventDetails || [];
+
+ useEffect(() => {
+ // Check if the URL contains #events hash
+ if (window.location.hash === '#events') {
+ // Get the events element
+ const eventsElement = document.getElementById('events');
+ if (eventsElement) {
+ // Scroll to the element with smooth behavior
+ eventsElement.scrollIntoView({ behavior: 'smooth' });
+ }
+ }
+ }, []); // Empty dependency array means this runs once on mount
+
+ const handleRegistrationClick = () => {
+ window.open("https://tinyurl.com/karmayottam", "_blank");
+ };
+
+ return (
+
+
Our Event Journey
+
+ {selectedYearEvents.length > 0 && (
+ <>
+
+
+
+ {selectedYearEvents[0].month}
+ {selectedYearEvents[0].date}
+
+
+ {selectedYearEvents[0].head}
+ {selectedYearEvents[0].para}
+
+
+
+
![{selectedYearEvents[0].head]({selectedYearEvents[0].img})
+
+
+
+
+
+ {selectedYearEvents[1].month}
+ {selectedYearEvents[1].date}
+
+
+ {selectedYearEvents[1].head}
+ {selectedYearEvents[1].para}
+
+
+
![{selectedYearEvents[1].head]({selectedYearEvents[1].img})
+
+ >
+ )}
+
+ View All ➤
+
+
+
+ );
+};
+
+export default Events;
diff --git a/src/Components/Events/assets/a4b43559a5f3a8b9a7986a561e1a9619.png b/src/Pages/Components/Events/assets/a4b43559a5f3a8b9a7986a561e1a9619.png
similarity index 100%
rename from src/Components/Events/assets/a4b43559a5f3a8b9a7986a561e1a9619.png
rename to src/Pages/Components/Events/assets/a4b43559a5f3a8b9a7986a561e1a9619.png
diff --git a/src/Components/ExploreLC/ExploreLC.module.css b/src/Pages/Components/ExploreLC/ExploreLC.module.css
similarity index 99%
rename from src/Components/ExploreLC/ExploreLC.module.css
rename to src/Pages/Components/ExploreLC/ExploreLC.module.css
index 2f67c94..7346ee6 100644
--- a/src/Components/ExploreLC/ExploreLC.module.css
+++ b/src/Pages/Components/ExploreLC/ExploreLC.module.css
@@ -52,6 +52,7 @@
.contentWrapper {
min-width: 300px;
gap: 2vh;
+
}
.contentWrapper h1 {
@@ -74,6 +75,7 @@
.contentWrapper {
width: 100%;
+
}
.contentWrapper p {
diff --git a/src/Components/ExploreLC/ExploreLC.tsx b/src/Pages/Components/ExploreLC/ExploreLC.tsx
similarity index 100%
rename from src/Components/ExploreLC/ExploreLC.tsx
rename to src/Pages/Components/ExploreLC/ExploreLC.tsx
diff --git a/src/Components/ExploreLC/assets/bg.svg b/src/Pages/Components/ExploreLC/assets/bg.svg
similarity index 100%
rename from src/Components/ExploreLC/assets/bg.svg
rename to src/Pages/Components/ExploreLC/assets/bg.svg
diff --git a/src/Components/ExploreLC/assets/explorelc.svg b/src/Pages/Components/ExploreLC/assets/explorelc.svg
similarity index 100%
rename from src/Components/ExploreLC/assets/explorelc.svg
rename to src/Pages/Components/ExploreLC/assets/explorelc.svg
diff --git a/src/Components/Footer/Footer.module.css b/src/Pages/Components/Footer/Footer.module.css
similarity index 99%
rename from src/Components/Footer/Footer.module.css
rename to src/Pages/Components/Footer/Footer.module.css
index 8c8fc99..70a6411 100644
--- a/src/Components/Footer/Footer.module.css
+++ b/src/Pages/Components/Footer/Footer.module.css
@@ -8,7 +8,8 @@
width: 100%;
gap: 20px;
color: white;
-}
+
+ }
.topFooter {
display: flex;
diff --git a/src/Pages/Components/Footer/Footer.tsx b/src/Pages/Components/Footer/Footer.tsx
new file mode 100644
index 0000000..a2b5215
--- /dev/null
+++ b/src/Pages/Components/Footer/Footer.tsx
@@ -0,0 +1,56 @@
+import styles from "./Footer.module.css";
+import { Instagram, X, Youtube, LinkedIn } from "./assets/svg";
+import { ULearnWhite } from "../../../assets/svg/svg";
+import data from "../../../../data.json";
+
+const Footer = () => {
+ return (
+
+
+
+
+
+ {" "}
+
Copyright © 2023. All Rights Reserved.
+
µLearn Foundation.
+
+
+ );
+};
+
+export default Footer;
diff --git a/src/Components/Footer/assets/svg.tsx b/src/Pages/Components/Footer/assets/svg.tsx
similarity index 73%
rename from src/Components/Footer/assets/svg.tsx
rename to src/Pages/Components/Footer/assets/svg.tsx
index 0def5ba..ff73d09 100644
--- a/src/Components/Footer/assets/svg.tsx
+++ b/src/Pages/Components/Footer/assets/svg.tsx
@@ -25,38 +25,40 @@ export const Instagram = () => {
>
);
};
-export const Twitter = () => {
+
+export const X = () => {
return (
);
};
-export const Facebook = () => {
+
+export const Youtube = () => {
return (
diff --git a/src/Components/Gallery/Gallery.module.css b/src/Pages/Components/Gallery/Gallery.module.css
similarity index 96%
rename from src/Components/Gallery/Gallery.module.css
rename to src/Pages/Components/Gallery/Gallery.module.css
index 01dd597..83fd712 100644
--- a/src/Components/Gallery/Gallery.module.css
+++ b/src/Pages/Components/Gallery/Gallery.module.css
@@ -1,5 +1,6 @@
.gallery {
padding-bottom: 3rem;
+ padding-top: .4cm;
}
.gallery h2 {
diff --git a/src/Pages/Components/Gallery/Gallery.tsx b/src/Pages/Components/Gallery/Gallery.tsx
new file mode 100644
index 0000000..62fe6da
--- /dev/null
+++ b/src/Pages/Components/Gallery/Gallery.tsx
@@ -0,0 +1,36 @@
+import Marquee from "react-fast-marquee";
+import styles from "./Gallery.module.css";
+import data from "../../../../data.json";
+
+const Gallery = () => {
+ const marqParams = {
+ autoFill: true,
+ pauseOnHover: true,
+ };
+
+ return (
+
+
Memories
+
+
+
+
+
+
+
+ );
+};
+
+export default Gallery;
diff --git a/src/Components/Gallery/assets/image2-2-1024x649.png b/src/Pages/Components/Gallery/assets/image2-2-1024x649.png
similarity index 100%
rename from src/Components/Gallery/assets/image2-2-1024x649.png
rename to src/Pages/Components/Gallery/assets/image2-2-1024x649.png
diff --git a/src/Components/Gallery/assets/index.ts b/src/Pages/Components/Gallery/assets/index.ts
similarity index 100%
rename from src/Components/Gallery/assets/index.ts
rename to src/Pages/Components/Gallery/assets/index.ts
diff --git a/src/Components/Gallery/assets/pexels-pixabay-147411.jpg b/src/Pages/Components/Gallery/assets/pexels-pixabay-147411.jpg
similarity index 100%
rename from src/Components/Gallery/assets/pexels-pixabay-147411.jpg
rename to src/Pages/Components/Gallery/assets/pexels-pixabay-147411.jpg
diff --git a/src/Components/Gallery/assets/sunrise-landscape-scenery-clouds-sky-digital-art-hd-wallpaper-uhdpaper.com-769@0@i.jpg b/src/Pages/Components/Gallery/assets/sunrise-landscape-scenery-clouds-sky-digital-art-hd-wallpaper-uhdpaper.com-769@0@i.jpg
similarity index 100%
rename from src/Components/Gallery/assets/sunrise-landscape-scenery-clouds-sky-digital-art-hd-wallpaper-uhdpaper.com-769@0@i.jpg
rename to src/Pages/Components/Gallery/assets/sunrise-landscape-scenery-clouds-sky-digital-art-hd-wallpaper-uhdpaper.com-769@0@i.jpg
diff --git a/src/Components/Gallery/assets/sunset-horizon-scenery-anime-art-hd-wallpaper-uhdpaper.com-351@0@h.jpg b/src/Pages/Components/Gallery/assets/sunset-horizon-scenery-anime-art-hd-wallpaper-uhdpaper.com-351@0@h.jpg
similarity index 100%
rename from src/Components/Gallery/assets/sunset-horizon-scenery-anime-art-hd-wallpaper-uhdpaper.com-351@0@h.jpg
rename to src/Pages/Components/Gallery/assets/sunset-horizon-scenery-anime-art-hd-wallpaper-uhdpaper.com-351@0@h.jpg
diff --git a/src/Pages/Components/Hero/Hero.module.css b/src/Pages/Components/Hero/Hero.module.css
new file mode 100644
index 0000000..63ba5fc
--- /dev/null
+++ b/src/Pages/Components/Hero/Hero.module.css
@@ -0,0 +1,239 @@
+.HeroWrapper {
+ height: fit-content;
+ min-height: 100vh;
+ width: 100%;
+ background: linear-gradient(180deg, #c18bf5 0%, #fff 68.23%);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ position: relative;
+ gap: 3vh;
+ overflow: hidden;
+}
+
+.HeroWrapper img {
+ width: 100%;
+}
+
+.contentWraper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 20vh;
+ position: relative;
+ z-index: 9900;
+}
+
+.contentWraper h1 {
+ margin: 0%;
+ line-height: 1;
+ font-size: 7vw;
+ font-weight: 600;
+}
+
+.contentWraper h2 {
+ margin: 0%;
+ line-height: 1;
+ font-size: 9vw;
+ font-weight: 700;
+ margin-top: -3vw;
+ color: #ae59ff;
+}
+
+.contentWraper p {
+ /* margin-top: -1vw; */
+ font-size: 1.5vw;
+ width: 25vw;
+ text-align: center;
+}
+
+@media screen and (max-width: 900px) {
+ .HeroWrapper {
+ overflow: hidden;
+ }
+
+ .HeroWrapper img {
+ width: 900px;
+ }
+
+ .contentWraper {
+ margin-top: 16vh;
+ }
+
+ .contentWraper h1 {
+ font-size: 9vw;
+ }
+
+ .contentWraper h2 {
+ font-size: 15vw;
+ margin-top: -4vw;
+ }
+
+ .contentWraper p {
+ /* margin-top: -1vw; */
+ font-size: 2.4vw;
+ width: 43vw;
+ }
+}
+
+@media screen and (max-width: 700px) {
+ .contentWraper {
+ margin-top: 20vh;
+ }
+
+ .contentWraper h1 {
+ font-size: 9.5vw;
+ }
+
+ .contentWraper h2 {
+ /* font-size: 17vw; */
+ margin-top: -4vw;
+ }
+
+ .contentWraper p {
+ /* margin-top: -1vw; */
+ font-size: 3vw;
+ }
+}
+
+@media screen and (max-width: 500px) {
+ .contentWraper h1 {
+ font-size: 9.5vw;
+ }
+
+ .contentWraper h2 {
+ font-size: 17vw;
+ margin-top: -4vw;
+ }
+
+ .contentWraper p {
+ /* margin-top: -1vw; */
+ font-size: 3vw;
+ }
+}
+
+.start1 {
+ position: absolute;
+ z-index: 7000;
+ left: 15%;
+ top: 25%;
+}
+
+.start2 {
+ position: absolute;
+ z-index: 7000;
+ right: 10%;
+ top: 30%;
+}
+
+.start3 {
+ position: absolute;
+ z-index: 7000;
+ left: 27%;
+ top: 12%;
+}
+
+.start4 {
+ position: absolute;
+ z-index: 7000;
+ right: 27%;
+ top: 28%;
+}
+
+.start5 {
+ position: absolute;
+ z-index: 0;
+ right: 45%;
+ top: 8%;
+}
+
+.start6 {
+ position: absolute;
+ z-index: 0;
+ left: -5%;
+ top: 30%;
+}
+
+.start7 {
+ position: absolute;
+ z-index: 0;
+ right: -5%;
+ top: 30%;
+}
+
+.start8 {
+ position: absolute;
+ z-index: 0;
+ right: 14%;
+ top: 15%;
+}
+
+@media screen and (max-width: 900px) {
+ .start1 {
+ left: 17%;
+ top: 30%;
+ }
+
+ .start2 {
+ right: 10%;
+ top: 30%;
+ }
+
+ .start3 {
+ left: 27%;
+ top: 12%;
+ }
+
+ .start4 {
+ right: 18%;
+ top: 26%;
+ }
+
+ .start5 {
+ right: 48%;
+ top: 13%;
+ }
+
+ .start6 {
+ left: -4%;
+ top: 40%;
+ }
+
+ .start7 {
+ right: -5%;
+ top: 30%;
+ }
+
+ .start8 {
+ right: 7%;
+ top: 17%;
+ }
+}
+
+@media screen and (max-width: 700px) {
+ .start1 {
+ left: 13%;
+ top: 30%;
+ }
+
+ .start2 {
+ right: 10%;
+ top: 35%;
+ }
+
+ .start3 {
+ left: 27%;
+ top: 15%;
+ }
+
+ .start4 {
+ right: 14%;
+ top: 30%;
+ }
+
+ .start5 {
+ right: 48.5%;
+ top: 15%;
+ }
+}
diff --git a/src/Pages/Components/Hero/Hero.tsx b/src/Pages/Components/Hero/Hero.tsx
new file mode 100644
index 0000000..ad62858
--- /dev/null
+++ b/src/Pages/Components/Hero/Hero.tsx
@@ -0,0 +1,43 @@
+import styles from "./Hero.module.css";
+import image from "./assets/homeimg.svg";
+import { BlueStar, WhiteStar, Mu } from "./assets/svg";
+import data from "../../../../data.json";
+
+const Hero = () => {
+ return (
+
+
+
Welcome to the
+
µverse
+
{data.college}
+
+

+
+
+
{" "}
+
+
+
{" "}
+
+
+
+
+
+
{" "}
+
+
+
+
+
+
{" "}
+
+
+
{" "}
+
+
+
+
+ );
+};
+
+export default Hero;
diff --git a/src/Components/Home/assets/homeimg.svg b/src/Pages/Components/Hero/assets/homeimg.svg
similarity index 100%
rename from src/Components/Home/assets/homeimg.svg
rename to src/Pages/Components/Hero/assets/homeimg.svg
diff --git a/src/Components/Home/assets/svg.tsx b/src/Pages/Components/Hero/assets/svg.tsx
similarity index 100%
rename from src/Components/Home/assets/svg.tsx
rename to src/Pages/Components/Hero/assets/svg.tsx
diff --git a/src/Components/Navbar/Navbar.module.css b/src/Pages/Components/Navbar/Navbar.module.css
similarity index 100%
rename from src/Components/Navbar/Navbar.module.css
rename to src/Pages/Components/Navbar/Navbar.module.css
diff --git a/src/Pages/Components/Navbar/Navbar.tsx b/src/Pages/Components/Navbar/Navbar.tsx
new file mode 100644
index 0000000..e1244fa
--- /dev/null
+++ b/src/Pages/Components/Navbar/Navbar.tsx
@@ -0,0 +1,102 @@
+import styles from "./Navbar.module.css";
+import { useEffect, useState } from "react";
+import { ULearn } from "../../../assets/svg/svg.tsx";
+import { useReactPath } from "./path.hook.ts";
+import { AiOutlineMenu } from "react-icons/ai";
+import data from "../../../../data.json";
+
+const Navbar = () => {
+ const [openmenu, setopenmenu] = useState(false);
+ const [navbg, setNavBg] = useState(false);
+ function openMenu() {
+ setopenmenu(!openmenu);
+ }
+ const path = useReactPath();
+ const navContent = ["home", "about", "achievements", "events", "contact"];
+ useEffect(() => {}, [path]);
+ const changeNavBg = () => {
+ window.scrollY >= 150 ? setNavBg(true) : setNavBg(false);
+ };
+
+ useEffect(() => {
+ window.addEventListener("scroll", changeNavBg);
+ return () => {
+ window.removeEventListener("scroll", changeNavBg);
+ };
+ }, []);
+ return (
+
+
+
+
+
+
+ {openmenu && (
+
+ )}
+
+
+ );
+};
+
+export default Navbar;
diff --git a/src/Components/Navbar/path.hook.ts b/src/Pages/Components/Navbar/path.hook.ts
similarity index 100%
rename from src/Components/Navbar/path.hook.ts
rename to src/Pages/Components/Navbar/path.hook.ts
diff --git a/src/Components/Statistics/Statistics.module.css b/src/Pages/Components/Statistics/Statistics.module.css
similarity index 100%
rename from src/Components/Statistics/Statistics.module.css
rename to src/Pages/Components/Statistics/Statistics.module.css
diff --git a/src/Pages/Components/Statistics/Statistics.tsx b/src/Pages/Components/Statistics/Statistics.tsx
new file mode 100644
index 0000000..0177ec8
--- /dev/null
+++ b/src/Pages/Components/Statistics/Statistics.tsx
@@ -0,0 +1,126 @@
+import styles from "./Statistics.module.css";
+import { ULearn } from "../../../assets/svg/svg";
+import data from "../../../../data.json";
+import { useEffect, useRef, useState } from "react";
+
+const Statistics = () => {
+ const [counters, setCounters] = useState([0, 0, 0, 0]); // Initialize counters
+ const durationInSeconds = 3; // Duration in seconds
+
+ const targetRef = useRef(null); // Create a ref
+
+ const isElementInViewport = (el: HTMLElement | null) => {
+ if (!el) {
+ return false;
+ }
+ const rect = el.getBoundingClientRect();
+ return (
+ rect.top >= 0 &&
+ rect.left >= 0 &&
+ rect.bottom <=
+ (window.innerHeight || document.documentElement.clientHeight) &&
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth)
+ );
+ };
+
+ useEffect(() => {
+ const finalValues: number[] = [
+ data.statistics.studentsCount ?? 0,
+ data.statistics.activeMembers ?? 0,
+ data.statistics.InterestGroups ?? 0,
+ data.statistics.karmaEarned ?? 0,
+ ];
+
+ const startCounterAnimation = () => {
+ const interval = setInterval(() => {
+ setCounters((prevCounters) =>
+ prevCounters.map((counter, index) =>
+ counter < finalValues[index]
+ ? counter +
+ Math.ceil(finalValues[index] / (durationInSeconds * 20)) // Increment smoothly
+ : finalValues[index],
+ ),
+ );
+ }, 50);
+
+ return () => clearInterval(interval);
+ };
+
+ let cleanup: (() => void) | undefined;
+
+ const observer = new IntersectionObserver(
+ (entries) => {
+ if (entries[0].isIntersecting) {
+ cleanup = startCounterAnimation();
+ }
+ },
+ {
+ root: null,
+ rootMargin: "0px",
+ threshold: 0.5,
+ },
+ );
+
+ if (targetRef.current) {
+ if (isElementInViewport(targetRef.current)) {
+ cleanup = startCounterAnimation();
+ } else {
+ observer.observe(targetRef.current);
+ }
+ }
+
+ return () => {
+ if (cleanup) {
+ cleanup();
+ }
+ if (targetRef.current) {
+ observer.unobserve(targetRef.current);
+ }
+ };
+ }, [data.statistics]);
+
+ return (
+
+
Our Statistics
+
+
+ {counters.map((counter, index) => (
+
+
+ {index >= 0
+ ? counter >= 2
+ ? `${counter}+`
+ : counter
+ : counter.toLocaleString()}
+
+
+ {index === 0
+ ? "STUDENTS"
+ : index === 1
+ ? "ACTIVE"
+ : index === 2
+ ? "INTEREST"
+ : "KARMA"}
+
+
+ {index === 0
+ ? "ENROLLED"
+ : index === 1
+ ? "MEMBERS"
+ : index === 2
+ ? "GROUPS"
+ : "MINED"}
+
+
+ ))}
+
+
+
+
Rank:{data.statistics.rank}
+
+
+
+ );
+};
+
+export default Statistics;
diff --git a/src/Components/Statistics/assets/bg.svg b/src/Pages/Components/Statistics/assets/bg.svg
similarity index 100%
rename from src/Components/Statistics/assets/bg.svg
rename to src/Pages/Components/Statistics/assets/bg.svg
diff --git a/src/Pages/Components/Team/Team.module.css b/src/Pages/Components/Team/Team.module.css
new file mode 100644
index 0000000..f04d6a6
--- /dev/null
+++ b/src/Pages/Components/Team/Team.module.css
@@ -0,0 +1,101 @@
+.teamWrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 50px;
+ width: 100%;
+ margin-top: 3vh;
+ padding-top: 1.7cm;
+}
+
+.teamWrapper h1 {
+ color: #ad58ff;
+ margin-bottom: 20px;
+}
+
+.teamBodyWrapper {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.teamMembersDetailsWrapper {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 30px; /* Adjust as needed */
+ padding: 0px;
+ position: relative;
+ z-index: 1;
+}
+
+.team {
+ height: 20rem;
+ width: 15rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ gap: 20px;
+}
+
+.teamImageIndividual {
+ height: 15rem;
+ object-fit: contain;
+ width: 15rem;
+ border-radius: 50%;
+}
+
+.teamNameDesignation {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.teamMemberName {
+ color: #000000;
+ font-weight: 700;
+ font-size: 1.5rem;
+ text-align: center;
+}
+
+.teamMemberDesignation {
+ color: #ad58ff;
+ font-size: 1.3rem;
+ font-weight: 500;
+ text-align: center;
+}
+
+/* Media queries for responsiveness */
+@media (max-width: 1200px) {
+ .team {
+ width: 20%;
+ }
+}
+
+@media (max-width: 992px) {
+ .team {
+ width: 25%;
+ }
+}
+
+@media (max-width: 768px) {
+ .team {
+ width: 33.33%;
+ }
+}
+
+@media (max-width: 576px) {
+ .team {
+ width: 50%;
+ }
+}
+
+@media (max-width: 400px) {
+ .team {
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/src/Pages/Components/Team/Team.tsx b/src/Pages/Components/Team/Team.tsx
new file mode 100644
index 0000000..3c4dd10
--- /dev/null
+++ b/src/Pages/Components/Team/Team.tsx
@@ -0,0 +1,45 @@
+import styles from "./Team.module.css";
+import data from "../../../../data.json";
+
+const Team = () => {
+ return (
+
+
Our Team
+
+ {/* Remove or comment out the line-related section */}
+ {/*
*/}
+
+ {Object.entries(data.team).map(([key, member], index) => (
+
+
+

+
+
+
{member.name}
+
+ {key.includes("null")
+ ? "Team Member"
+ : key.replace(/([A-Z,1-9])/g, " $1").trim()}
+
+
+
+ ))}
+
+
+
+ );
+};
+
+export default Team;
diff --git a/src/Components/Team/assets/line.png b/src/Pages/Components/Team/assets/line.png
similarity index 100%
rename from src/Components/Team/assets/line.png
rename to src/Pages/Components/Team/assets/line.png
diff --git a/src/Components/Team/assets/line2.png b/src/Pages/Components/Team/assets/line2.png
similarity index 100%
rename from src/Components/Team/assets/line2.png
rename to src/Pages/Components/Team/assets/line2.png
diff --git a/src/Components/Team/assets/member.svg b/src/Pages/Components/Team/assets/member.svg
similarity index 100%
rename from src/Components/Team/assets/member.svg
rename to src/Pages/Components/Team/assets/member.svg
diff --git a/src/Pages/Events.module.css b/src/Pages/Events.module.css
new file mode 100644
index 0000000..c111817
--- /dev/null
+++ b/src/Pages/Events.module.css
@@ -0,0 +1,419 @@
+.events {
+ width: 100%;
+ padding: 6rem 2rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ gap: 2rem;
+}
+
+.events h2 {
+ text-align: center;
+ align-self: center;
+ color: #ae59ff;
+ font-size: 2rem;
+ margin-bottom: 1rem;
+}
+
+/* Hero Section */
+.heroSection {
+ width: 100%;
+ max-width: 1200px;
+ margin: 0 auto;
+ position: relative;
+}
+
+.heroCard {
+ background: mediumpurple;
+ border-radius: 2rem;
+ padding: 3rem;
+ color: white;
+ position: relative;
+ overflow: hidden;
+ min-height: 400px;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.heroCard::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: rgba(0, 0, 0, 0.2);
+ border-radius: 2rem;
+}
+
+.heroContent {
+ display: flex;
+ align-items: center;
+ gap: 2rem;
+ position: relative;
+ z-index: 2;
+ height: 100%;
+}
+
+.heroLeft {
+ flex: 1;
+ display: flex;
+ gap: 2rem;
+ align-items: center;
+}
+
+.heroDate {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: 1rem;
+ padding: 1.5rem 1rem;
+ min-width: 100px;
+ backdrop-filter: blur(10px);
+}
+
+.heroMonth {
+ font-size: 1.2rem;
+ font-weight: bold;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+
+.heroDay {
+ font-size: 3rem;
+ font-weight: bold;
+ line-height: 1;
+}
+
+.heroText {
+ flex: 1;
+}
+
+.heroTitle {
+ font-size: 2.5rem;
+ font-weight: bold;
+ margin-bottom: 1rem;
+ line-height: 1.2;
+}
+
+.heroDescription {
+ font-size: 1.2rem;
+ line-height: 1.6;
+ opacity: 0.9;
+}
+
+.heroImageContainer {
+ flex: 0 0 300px;
+}
+
+.heroImage {
+ width: 100%;
+ height: 250px;
+ object-fit: cover;
+ border-radius: 1rem;
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
+}
+
+/* Hero Navigation Dots */
+.heroDots {
+ display: flex;
+ justify-content: center;
+ gap: 0.5rem;
+ margin-top: 2rem;
+ position: relative;
+ z-index: 2;
+}
+
+.heroDot {
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ border: none;
+ background: rgba(255, 255, 255, 0.4);
+ cursor: pointer;
+ transition: all 0.3s ease;
+}
+
+.heroDot:hover {
+ background: rgba(255, 255, 255, 0.6);
+ transform: scale(1.1);
+}
+
+.heroDotActive {
+ background: white;
+ transform: scale(1.2);
+}
+
+/* Fade Animations */
+.fadeIn {
+ opacity: 1;
+}
+
+.fadeOut {
+ opacity: 0;
+}
+
+/* Year selection styles */
+.yearScroll {
+ position: relative;
+ width: 100%;
+ padding: 0 1rem;
+}
+
+.yearButtons {
+ display: flex;
+ justify-content: center;
+ gap: 1rem;
+ overflow-x: auto;
+ padding-bottom: 1rem;
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+}
+
+.yearButtons::-webkit-scrollbar {
+ display: none;
+}
+
+.yearButton {
+ padding: 0.75rem 2rem;
+ border-radius: 9999px;
+ min-width: 120px;
+ transition: all 0.3s ease;
+ cursor: pointer;
+ border: none;
+ font-weight: 600;
+ font-size: 1rem;
+}
+
+.yearButton.active {
+ background-color: #ae59ff;
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(174, 89, 255, 0.3);
+}
+
+.yearButton:not(.active) {
+ background-color: #f3f4f6;
+ color: #4b5563;
+}
+
+.yearButton:not(.active):hover {
+ background-color: #e5e7eb;
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+}
+
+/* Events Grid */
+.eventsGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-top: 1rem;
+}
+
+.eventCard {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ align-items: center;
+ background: white;
+ border-radius: 1.5rem;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ padding: 1.5rem;
+ transition: all 0.3s ease;
+ cursor: pointer;
+}
+
+.eventCard:hover {
+ transform: translateY(-8px);
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.15);
+}
+
+.eventContent {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ gap: 1.5rem;
+}
+
+.eventDate {
+ display: flex;
+ align-items: center;
+ color: black;
+ gap: 8px;
+ border-radius: 1rem;
+ padding: 1rem 0.75rem;
+ min-width: 80px;
+}
+
+.eventMonth {
+ font-size: 1.5rem;
+ font-weight: bold;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+}
+
+.eventDay {
+ font-size: 1.5rem;
+ font-weight: bold;
+ line-height: 1;
+}
+
+.eventText {
+ flex: 1;
+}
+
+.eventTitle {
+ font-size: 1.3rem;
+ font-weight: bold;
+ color: #333;
+ margin-bottom: 0.5rem;
+ line-height: 1.3;
+}
+
+.eventDescription {
+ font-size: 1rem;
+ color: #666;
+ line-height: 1.5;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+
+.eventImage {
+ height: 250px;
+ width: auto;
+ object-fit: contain;
+ border-radius: 1rem;
+ margin-left: 1rem;
+ flex-shrink: 0;
+}
+
+/* Responsive Design */
+@media (max-width: 1200px) {
+ .heroContent {
+ flex-direction: column;
+ text-align: center;
+ }
+
+ .heroLeft {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .heroImageContainer {
+ flex: none;
+ width: 100%;
+ max-width: 400px;
+ }
+
+ .heroImage {
+ height: 200px;
+ }
+}
+
+@media (max-width: 880px) {
+ .events {
+ padding: 0 1rem;
+ }
+
+ .heroCard {
+ padding: 2rem;
+ min-height: 300px;
+ }
+
+ .heroTitle {
+ font-size: 2rem;
+ }
+
+ .heroDescription {
+ font-size: 1rem;
+ }
+
+ .eventsGrid {
+ grid-template-columns: 1fr;
+ gap: 1.5rem;
+ }
+
+ .eventCard {
+ padding: 1rem;
+ }
+
+ .yearButton {
+ min-width: 100px;
+ padding: 0.5rem 1.5rem;
+ }
+}
+
+@media (max-width: 500px) {
+ .heroCard {
+ padding: 1.5rem;
+ }
+
+ .heroTitle {
+ font-size: 1.5rem;
+ }
+
+ .heroDescription {
+ font-size: 0.9rem;
+ }
+
+ .heroDate {
+ padding: 1rem 0.75rem;
+ min-width: 80px;
+ }
+
+ .heroDay {
+ font-size: 2rem;
+ }
+
+ .eventCard {
+ flex-direction: column;
+ text-align: center;
+ gap: 1rem;
+ }
+
+ /* .eventContent {
+ flex-direction: column;
+ gap: 1rem;
+ } */
+
+ .eventMonth {
+ font-size: 1rem;
+ }
+
+ .eventDay {
+ font-size: 1rem;
+ }
+
+ .eventImage {
+ margin-left: 0;
+ width: 100%;
+ height: 150px;
+ }
+
+ .yearButton {
+ min-width: 80px;
+ padding: 0.5rem 1rem;
+ font-size: 0.9rem;
+ }
+}
+
+@media (width < 345px) {
+ .heroTitle {
+ font-size: 1.2rem;
+ }
+
+ .heroDescription {
+ font-size: 0.8rem;
+ }
+
+ .eventTitle {
+ font-size: 1.1rem;
+ }
+
+ .eventDescription {
+ font-size: 0.9rem;
+ }
+}
diff --git a/src/Pages/Events.tsx b/src/Pages/Events.tsx
new file mode 100644
index 0000000..135fcec
--- /dev/null
+++ b/src/Pages/Events.tsx
@@ -0,0 +1,179 @@
+import React, { useState, useEffect } from "react";
+import styles from "./Events.module.css";
+import data from "../../data.json";
+import Navbar from "./Components/Navbar/Navbar";
+import Footer from "./Components/Footer/Footer";
+
+export interface EventDetail {
+ month: string;
+ date: string;
+ head: string;
+ para: string;
+ img: string;
+}
+
+export interface YearEvent {
+ year: number;
+ eventDetails: EventDetail[];
+}
+
+export interface EventsData {
+ events: YearEvent[];
+}
+
+interface EventsProps {
+ defaultYear?: number;
+}
+
+const Events: React.FC = ({ defaultYear }) => {
+ const [selectedYear, setSelectedYear] = useState(
+ defaultYear || Math.max(...data.events.map((event) => event.year)),
+ );
+ const [years, setYears] = useState([]);
+ const [currentHeroIndex, setCurrentHeroIndex] = useState(0);
+ const [isTransitioning, setIsTransitioning] = useState(false);
+
+ useEffect(() => {
+ const uniqueYears = [...new Set(data.events.map((event) => event.year))];
+ setYears(uniqueYears.sort((a, b) => b - a));
+ }, [data]);
+
+ const selectedYearEvents =
+ data.events.find((event) => event.year === selectedYear)?.eventDetails ||
+ [];
+
+ // Auto-slide hero events
+ useEffect(() => {
+ if (selectedYearEvents.length <= 1) return;
+
+ const interval = setInterval(() => {
+ setIsTransitioning(true);
+ setTimeout(() => {
+ setCurrentHeroIndex((prev) => (prev + 1) % selectedYearEvents.length);
+ setIsTransitioning(false);
+ }, 300);
+ }, 4000);
+
+ return () => clearInterval(interval);
+ }, [selectedYearEvents.length, selectedYear]);
+
+ // Reset hero index when year changes
+ useEffect(() => {
+ setCurrentHeroIndex(0);
+ setIsTransitioning(false);
+ }, [selectedYear]);
+
+ const currentHeroEvent =
+ selectedYearEvents[currentHeroIndex] || selectedYearEvents[0];
+
+ return (
+
+
+
+
Our Event Journey
+
+ {/* Hero Section */}
+ {selectedYearEvents.length > 0 && (
+
+
+
+
+
+
+ {currentHeroEvent.month}
+
+
+ {currentHeroEvent.date}
+
+
+
+
+ {currentHeroEvent.head}
+
+
+ {currentHeroEvent.para}
+
+
+
+
+

+
+
+
+ {/* Hero Navigation Dots */}
+ {selectedYearEvents.length > 1 && (
+
+ {selectedYearEvents.map((_, index) => (
+
+ )}
+
+
+ )}
+
+ {/* Year Selection Buttons */}
+
+
+ {years.map((year) => (
+
+ ))}
+
+
+
+ {/* Events Grid */}
+
+ {selectedYearEvents.map((event, index) => (
+
+
+
+
{event.head}
+
{event.para}
+
+
+ {event.month}
+ {event.date}
+
+
+

+
+ ))}
+
+
+
+
+
+ );
+};
+
+export default Events;
diff --git a/src/Pages/Home.css b/src/Pages/Home.css
new file mode 100644
index 0000000..543b9e8
--- /dev/null
+++ b/src/Pages/Home.css
@@ -0,0 +1,85 @@
+@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@600;700;800&family=Red+Hat+Text:wght@300;400;500;600;700&display=swap');
+
+* {
+ scroll-behavior: smooth;
+ margin: 0%;
+ padding: 0%;
+ box-sizing: border-box;
+ font-family: "Plus Jakarta Sans";
+}
+
+::-webkit-scrollbar {
+ width: 0px;
+ height: 0px;
+ background-color: #ffffff;
+}
+
+a {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+body, #root {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+.appWrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ flex: 1;
+}
+
+.page-wrapper {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+/* Team component adjustments */
+.teamWrapper {
+ flex: 1;
+ margin-bottom: 50px; /* Adjust as needed */
+}
+
+/* Connect component adjustments */
+.ConnectWrapper {
+ position: relative;
+ z-index: 1;
+ background-color: #ffffff;
+ margin-top: auto; /* Push to the bottom of the flex container */
+}
+
+/* Footer component adjustments */
+.FooterWrapper {
+ position: relative;
+ z-index: 1;
+}
+
+/* Existing Connect styles - modify as needed */
+.ConnectWrapper {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ width: 100%;
+ padding: 5vh 10vw;
+ gap: 25px;
+}
+
+/* Existing Footer styles - modify as needed */
+.FooterWrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ padding: 3vh 5vw;
+ background-color: #ae59ff;
+ width: 100%;
+ gap: 20px;
+ color: white;
+}
\ No newline at end of file
diff --git a/src/Pages/Home.tsx b/src/Pages/Home.tsx
new file mode 100644
index 0000000..00cfe31
--- /dev/null
+++ b/src/Pages/Home.tsx
@@ -0,0 +1,33 @@
+import "./Home.css";
+// import { Helmet, HelmetProvider } from "react-helmet-async";
+import Navbar from "./Components/Navbar/Navbar";
+import Hero from "./Components/Hero/Hero";
+import About from "./Components/About/About";
+import Events from "./Components/Events/Events";
+import Gallery from "./Components/Gallery/Gallery";
+import Statistics from "./Components/Statistics/Statistics";
+import ExploreLC from "./Components/ExploreLC/ExploreLC";
+import Team from "./Components/Team/Team";
+import Connect from "./Components/Connect/Connect";
+import Footer from "./Components/Footer/Footer";
+import Achievements from "./Components/Achievements/Achievements";
+
+function Home() {
+ return (
+
+ );
+}
+
+export default Home;
diff --git a/src/assets/images/code.png b/src/assets/images/code.png
new file mode 100644
index 0000000..090a279
Binary files /dev/null and b/src/assets/images/code.png differ
diff --git a/src/assets/images/muweek.jpeg b/src/assets/images/muweek.jpeg
new file mode 100644
index 0000000..ebe543a
Binary files /dev/null and b/src/assets/images/muweek.jpeg differ
diff --git a/src/assets/images/py.png b/src/assets/images/py.png
new file mode 100644
index 0000000..8f33629
Binary files /dev/null and b/src/assets/images/py.png differ
diff --git a/src/assets/images/python.png b/src/assets/images/python.png
new file mode 100644
index 0000000..ea7f10b
Binary files /dev/null and b/src/assets/images/python.png differ
diff --git a/src/assets/images/story.png b/src/assets/images/story.png
new file mode 100644
index 0000000..ec21a8c
Binary files /dev/null and b/src/assets/images/story.png differ
diff --git a/src/assets/images/typeiko.png b/src/assets/images/typeiko.png
new file mode 100644
index 0000000..bdfd440
Binary files /dev/null and b/src/assets/images/typeiko.png differ
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 0000000..3a48e56
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,3 @@
+{
+ "rewrites": [{ "source": "/(.*)", "destination": "/" }]
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..1427b04
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,1511 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@aashutoshrathi/word-wrap@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz"
+ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
+
+"@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@babel/code-frame@^7.22.13":
+ version "7.22.13"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz"
+ integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==
+ dependencies:
+ "@babel/highlight" "^7.22.13"
+ chalk "^2.4.2"
+
+"@babel/compat-data@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz"
+ integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.22.9":
+ version "7.22.17"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.17.tgz"
+ integrity sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.22.13"
+ "@babel/generator" "^7.22.15"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-module-transforms" "^7.22.17"
+ "@babel/helpers" "^7.22.15"
+ "@babel/parser" "^7.22.16"
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.22.17"
+ "@babel/types" "^7.22.17"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz"
+ integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==
+ dependencies:
+ "@babel/types" "^7.22.15"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
+"@babel/helper-compilation-targets@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz"
+ integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==
+ dependencies:
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-validator-option" "^7.22.15"
+ browserslist "^4.21.9"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-environment-visitor@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz"
+ integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
+
+"@babel/helper-function-name@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz"
+ integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==
+ dependencies:
+ "@babel/template" "^7.22.5"
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-module-imports@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
+"@babel/helper-module-transforms@^7.22.17":
+ version "7.22.17"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz"
+ integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.15"
+
+"@babel/helper-plugin-utils@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz"
+ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz"
+ integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+
+"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz"
+ integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==
+
+"@babel/helper-validator-option@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz"
+ integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
+
+"@babel/helpers@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz"
+ integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.22.15"
+ "@babel/types" "^7.22.15"
+
+"@babel/highlight@^7.22.13":
+ version "7.22.13"
+ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz"
+ integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.5"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.22.15", "@babel/parser@^7.22.16":
+ version "7.22.16"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz"
+ integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==
+
+"@babel/plugin-transform-react-jsx-self@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz"
+ integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-react-jsx-source@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz"
+ integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/runtime@^7.12.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz"
+ integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.22.15", "@babel/template@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz"
+ integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/parser" "^7.22.15"
+ "@babel/types" "^7.22.15"
+
+"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.17":
+ version "7.22.17"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.17.tgz"
+ integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/generator" "^7.22.15"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.22.16"
+ "@babel/types" "^7.22.17"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.5":
+ version "7.22.17"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.17.tgz"
+ integrity sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.15"
+ to-fast-properties "^2.0.0"
+
+"@esbuild/darwin-arm64@0.18.20":
+ version "0.18.20"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz"
+ integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
+
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
+ version "4.8.0"
+ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz"
+ integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==
+
+"@eslint/eslintrc@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz"
+ integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@eslint/js@8.49.0":
+ version "8.49.0"
+ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz"
+ integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==
+
+"@humanwhocodes/config-array@^0.11.11":
+ version "0.11.11"
+ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz"
+ integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.1"
+ debug "^4.1.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.3"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
+"@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.4.15"
+ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.19"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz"
+ integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@types/json-schema@^7.0.12":
+ version "7.0.12"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz"
+ integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
+
+"@types/prop-types@*":
+ version "15.7.5"
+ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
+ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
+
+"@types/react-dom@^18.2.7":
+ version "18.2.7"
+ resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz"
+ integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^18.2.15":
+ version "18.2.21"
+ resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz"
+ integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
+"@types/scheduler@*":
+ version "0.16.3"
+ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz"
+ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
+
+"@types/semver@^7.5.0":
+ version "7.5.1"
+ resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz"
+ integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==
+
+"@typescript-eslint/eslint-plugin@^6.0.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.6.0.tgz"
+ integrity sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==
+ dependencies:
+ "@eslint-community/regexpp" "^4.5.1"
+ "@typescript-eslint/scope-manager" "6.6.0"
+ "@typescript-eslint/type-utils" "6.6.0"
+ "@typescript-eslint/utils" "6.6.0"
+ "@typescript-eslint/visitor-keys" "6.6.0"
+ debug "^4.3.4"
+ graphemer "^1.4.0"
+ ignore "^5.2.4"
+ natural-compare "^1.4.0"
+ semver "^7.5.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.6.0.tgz"
+ integrity sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==
+ dependencies:
+ "@typescript-eslint/scope-manager" "6.6.0"
+ "@typescript-eslint/types" "6.6.0"
+ "@typescript-eslint/typescript-estree" "6.6.0"
+ "@typescript-eslint/visitor-keys" "6.6.0"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.6.0.tgz"
+ integrity sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==
+ dependencies:
+ "@typescript-eslint/types" "6.6.0"
+ "@typescript-eslint/visitor-keys" "6.6.0"
+
+"@typescript-eslint/type-utils@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.6.0.tgz"
+ integrity sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "6.6.0"
+ "@typescript-eslint/utils" "6.6.0"
+ debug "^4.3.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/types@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.6.0.tgz"
+ integrity sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==
+
+"@typescript-eslint/typescript-estree@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.6.0.tgz"
+ integrity sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==
+ dependencies:
+ "@typescript-eslint/types" "6.6.0"
+ "@typescript-eslint/visitor-keys" "6.6.0"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.5.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/utils@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.6.0.tgz"
+ integrity sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@types/json-schema" "^7.0.12"
+ "@types/semver" "^7.5.0"
+ "@typescript-eslint/scope-manager" "6.6.0"
+ "@typescript-eslint/types" "6.6.0"
+ "@typescript-eslint/typescript-estree" "6.6.0"
+ semver "^7.5.4"
+
+"@typescript-eslint/visitor-keys@6.6.0":
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.6.0.tgz"
+ integrity sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==
+ dependencies:
+ "@typescript-eslint/types" "6.6.0"
+ eslint-visitor-keys "^3.4.1"
+
+"@vitejs/plugin-react@^4.0.3":
+ version "4.0.4"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz"
+ integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==
+ dependencies:
+ "@babel/core" "^7.22.9"
+ "@babel/plugin-transform-react-jsx-self" "^7.22.5"
+ "@babel/plugin-transform-react-jsx-source" "^7.22.5"
+ react-refresh "^0.14.0"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0:
+ version "8.10.0"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz"
+ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.21.9, "browserslist@>= 4.21.0":
+ version "4.21.10"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz"
+ integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
+ dependencies:
+ caniuse-lite "^1.0.30001517"
+ electron-to-chromium "^1.4.477"
+ node-releases "^2.0.13"
+ update-browserslist-db "^1.0.11"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+caniuse-lite@^1.0.30001517:
+ version "1.0.30001532"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz"
+ integrity sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==
+
+chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+convert-source-map@^1.7.0:
+ version "1.9.0"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
+cookie@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz"
+ integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
+
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+csstype@^3.0.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
+
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+electron-to-chromium@^1.4.477:
+ version "1.4.513"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz"
+ integrity sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==
+
+esbuild@^0.18.10:
+ version "0.18.20"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz"
+ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.18.20"
+ "@esbuild/android-arm64" "0.18.20"
+ "@esbuild/android-x64" "0.18.20"
+ "@esbuild/darwin-arm64" "0.18.20"
+ "@esbuild/darwin-x64" "0.18.20"
+ "@esbuild/freebsd-arm64" "0.18.20"
+ "@esbuild/freebsd-x64" "0.18.20"
+ "@esbuild/linux-arm" "0.18.20"
+ "@esbuild/linux-arm64" "0.18.20"
+ "@esbuild/linux-ia32" "0.18.20"
+ "@esbuild/linux-loong64" "0.18.20"
+ "@esbuild/linux-mips64el" "0.18.20"
+ "@esbuild/linux-ppc64" "0.18.20"
+ "@esbuild/linux-riscv64" "0.18.20"
+ "@esbuild/linux-s390x" "0.18.20"
+ "@esbuild/linux-x64" "0.18.20"
+ "@esbuild/netbsd-x64" "0.18.20"
+ "@esbuild/openbsd-x64" "0.18.20"
+ "@esbuild/sunos-x64" "0.18.20"
+ "@esbuild/win32-arm64" "0.18.20"
+ "@esbuild/win32-ia32" "0.18.20"
+ "@esbuild/win32-x64" "0.18.20"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-plugin-react-hooks@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz"
+ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
+
+eslint-plugin-react-refresh@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz"
+ integrity sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==
+
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.45.0, eslint@>=7:
+ version "8.49.0"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz"
+ integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.2"
+ "@eslint/js" "8.49.0"
+ "@humanwhocodes/config-array" "^0.11.11"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esquery@^1.4.2:
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.2.9:
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz"
+ integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==
+ dependencies:
+ flatted "^3.2.7"
+ keyv "^4.5.3"
+ rimraf "^3.0.2"
+
+flatted@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
+ integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.19.0:
+ version "13.21.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz"
+ integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+ignore@^5.2.0, ignore@^5.2.4:
+ version "5.2.4"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+keyv@^4.5.3:
+ version "4.5.3"
+ resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz"
+ integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==
+ dependencies:
+ json-buffer "3.0.1"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+node-releases@^2.0.13:
+ version "2.0.13"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz"
+ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+optionator@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz"
+ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
+ dependencies:
+ "@aashutoshrathi/word-wrap" "^1.2.3"
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+postcss@^8.4.27:
+ version "8.4.29"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz"
+ integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prop-types@^15.7.2:
+ version "15.8.1"
+ resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+punycode@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+"react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", react-dom@^18.2.0, "react-dom@>= 16.8.0 || 18.0.0", react-dom@>=18:
+ version "18.2.0"
+ resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.0"
+
+react-fast-compare@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz"
+ integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
+
+react-fast-marquee@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/react-fast-marquee/-/react-fast-marquee-1.6.0.tgz"
+ integrity sha512-jtuwT9SNjrqxnE7lGZ8mTL1I8Q4+9G4aBta2p+y2Pa3SjR17QROblwrLICyM8rbjQFHgHawTHcaH9HvoVO2NOA==
+
+react-helmet-async@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz"
+ integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ invariant "^2.2.4"
+ prop-types "^15.7.2"
+ react-fast-compare "^3.2.0"
+ shallowequal "^1.1.0"
+
+react-icons@^4.11.0:
+ version "4.11.0"
+ resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz"
+ integrity sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==
+
+react-is@^16.13.1:
+ version "16.13.1"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-refresh@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz"
+ integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
+
+react-router-dom@^7.6.2:
+ version "7.6.2"
+ resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.2.tgz"
+ integrity sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==
+ dependencies:
+ react-router "7.6.2"
+
+react-router@7.6.2:
+ version "7.6.2"
+ resolved "https://registry.npmjs.org/react-router/-/react-router-7.6.2.tgz"
+ integrity sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==
+ dependencies:
+ cookie "^1.0.1"
+ set-cookie-parser "^2.6.0"
+
+react@*, "react@^16.6.0 || ^17.0.0 || ^18.0.0", react@^18.2.0, "react@>= 16.8.0 || 18.0.0", react@>=18:
+ version "18.2.0"
+ resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rollup@^3.27.1:
+ version "3.29.1"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.1.tgz"
+ integrity sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+scheduler@^0.23.0:
+ version "0.23.0"
+ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz"
+ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+ dependencies:
+ loose-envify "^1.1.0"
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.5.4:
+ version "7.5.4"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+set-cookie-parser@^2.6.0:
+ version "2.7.1"
+ resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz"
+ integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
+
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+ts-api-utils@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz"
+ integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+typescript@^5.0.2, typescript@>=4.2.0:
+ version "5.2.2"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz"
+ integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
+
+update-browserslist-db@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz"
+ integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+vite@^4.2.0, vite@^4.4.5:
+ version "4.4.9"
+ resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz"
+ integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==
+ dependencies:
+ esbuild "^0.18.10"
+ postcss "^8.4.27"
+ rollup "^3.27.1"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==