Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import TeamPage from "pages/TeamPage";
import ProjectsPage from "pages/ProjectsPage";
import MerchPage from "pages/MerchPage";

import { useEffect } from "react";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import React, { useEffect } from "react";
import { BrowserRouter as Router, Route, Switch, useLocation } from "react-router-dom";
import Navbar from "components/Navbar";
import Footer from "components/Footer/Footer";
import "./App.css";
Expand All @@ -16,6 +16,26 @@ import "aos/dist/aos.css";
import ScrollToTop from "components/ScrollToTop";
import GalleryPage from "pages/GalleryPage";

function ScrollToHash() {
const location = useLocation();

useEffect(() => {
if (location.hash) {
setTimeout(() => {
const id = location.hash.replace('#', '');
const element = document.getElementById(id);
if (element) {
const yOffset = -80;
const y = element.getBoundingClientRect().top + window.pageYOffset + yOffset;
window.scrollTo({ top: y, behavior: 'smooth' });
}
}, 100);
}
}, [location]);

return null;
}

function App() {
//
useEffect(() => {
Expand All @@ -24,6 +44,7 @@ function App() {
// Use React Router to switch between different pages
return (
<Router>
<ScrollToHash />
<ScrollToTop />
<div className="App">
<Navbar />
Expand Down
27 changes: 27 additions & 0 deletions src/components/Navbar.css
Original file line number Diff line number Diff line change
Expand Up @@ -166,3 +166,30 @@
opacity: 0;
display: none;
}

/* Navigation sections with subsections */
.navbar__section {
display: block;
}

.navbar__subsections {
display: flex;
flex-direction: column;
list-style: none;
padding: 5px 0 0 40px;
margin: 0;
}

.navbar__subsections li {
margin: 3px 0;
}

.navbar__subsections a {
font-size: 0.85rem;
color: #ccc;
transition: color 0.3s ease;
}

.navbar__subsections a:hover {
color: var(--primary-green);
}
111 changes: 103 additions & 8 deletions src/components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,109 @@ const Header = () => {
</a>
<nav className="navbar__content ">
<motion.ul initial={{ y: -250 }} animate={{ y: 0 }}>
<NavbarLink top="homePageTop" link="/" name="About" />
<NavbarLink top="teamPageTop" link="/team" name="Team" />
<NavbarLink
top="projectsPageTop"
link="/projects"
name="Projects"
/>
<NavbarLink top="applyPageTop" link="/apply" name="Apply" />
<li className="navbar__section">
<a href="#">
<LinkScroll to="homePageTop" spy={true} offset={-80} duration={500}>
<Link onClick={hideNavbar} to="/">
About
</Link>
</LinkScroll>
</a>
<ul className="navbar__subsections">
<li>
<Link onClick={hideNavbar} to="/#projects">
Tech Start Projects
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/#events">
Events
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/#sponsors">
Our Sponsors
</Link>
</li>
</ul>
</li>

<li className="navbar__section">
<a href="#">
<LinkScroll to="teamPageTop" spy={true} offset={-80} duration={500}>
<Link onClick={hideNavbar} to="/team">
Team
</Link>
</LinkScroll>
</a>
<ul className="navbar__subsections">
<li>
<Link onClick={hideNavbar} to="/team#the-board">
The Board
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/team#our-team">
Our Team
</Link>
</li>
</ul>
</li>

<li className="navbar__section">
<a href="#">
<LinkScroll to="projectsPageTop" spy={true} offset={-80} duration={500}>
<Link onClick={hideNavbar} to="/projects">
Projects
</Link>
</LinkScroll>
</a>
<ul className="navbar__subsections">
<li>
<Link onClick={hideNavbar} to="/projects#showcase-winners">
Final Showcase Winners
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/projects#featured-projects">
Featured Projects
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/projects#past-projects">
Past Projects
</Link>
</li>
</ul>
</li>

<li className="navbar__section">
<a href="#">
<LinkScroll to="applyPageTop" spy={true} offset={-80} duration={500}>
<Link onClick={hideNavbar} to="/apply">
Apply
</Link>
</LinkScroll>
</a>
<ul className="navbar__subsections">
<li>
<Link onClick={hideNavbar} to="/apply#what-we-do">
What We Do
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/apply#faq">
FAQ
</Link>
</li>
<li>
<Link onClick={hideNavbar} to="/apply#applications">
Applications
</Link>
</li>
</ul>
</li>

<NavbarLink top="merchPageTop" link="/merch" name="Merch" />
<NavbarLink top="galleryPageTop" link="/gallery" name="Gallery" />
<NavbarLink top="docsPageTop" link="/resources" name="Resources" />
Expand Down
6 changes: 3 additions & 3 deletions src/pages/ApplyPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const ApplyPage = () => {
</div>
</header>

<div className="applyPage__introContainer">
<div className="applyPage__introContainer" id="what-we-do">
<Blobbie
id={8}
width={400}
Expand Down Expand Up @@ -105,7 +105,7 @@ const ApplyPage = () => {
<img src={execs_24} alt="Tech Start Members" />
</div>

<div className="applyPage__container applyPage__projectIntroContainer">
<div className="applyPage__container applyPage__projectIntroContainer" id="faq">
<div className="applyPage__projectIntroImg">
<Lottie options={applyPageTeamLottieOptions} />
</div>
Expand Down Expand Up @@ -227,7 +227,7 @@ const ApplyPage = () => {
/>
</div>

<div className="applyPage__container applyPage__applicationContainer">
<div className="applyPage__container applyPage__applicationContainer" id="applications">
<div className="applyPage__application">
<Blobbie
id={2}
Expand Down
8 changes: 5 additions & 3 deletions src/pages/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,11 @@ const HomePage = () => {
</div>
</section>

<ProjectsSection />
<div id="projects">
<ProjectsSection />
</div>

<section className="homePage__section homePage__section--events">
<section className="homePage__section homePage__section--events" id="events">
<Blobbie
id={3}
width={400}
Expand All @@ -129,7 +131,7 @@ const HomePage = () => {
</div>
</section>

<section className="homePage__section homePage__section--sponsors">
<section className="homePage__section homePage__section--sponsors" id="sponsors">
<Blobbie
id={9}
width={800}
Expand Down
5 changes: 3 additions & 2 deletions src/pages/ProjectsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const ProjectsPage = () => {
<h2
className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin"
style={{ marginTop: "0px" }}
id="showcase-winners"
>
Final Showcase Winners
</h2>
Expand Down Expand Up @@ -120,13 +121,13 @@ const ProjectsPage = () => {
</S.WrapDiv>
</div>
<ProjectKeywordsSection />
<h2 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin">
<h2 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin" id="featured-projects">
Featured Projects
</h2>
<Divider />
<FeaturedProjectSection featuredProjects={featuredProjects} />

<h2 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin">
<h2 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin" id="past-projects">
Past Projects
</h2>
<Divider />
Expand Down
4 changes: 2 additions & 2 deletions src/pages/TeamPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ const TeamPage = () => {
</motion.div>
</S.TeamPageHeader>

<h1 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin">
<h1 className="chonkyHeading chonkyHeading--white chonkyHeading--lessMargin" id="the-board">
The Board
</h1>
<Divider />
<FounderSection />
<T.TeamSection>
<T.TeamSection id="our-team">
<Team
teamMembers={boardMembers}
desktopView={defaultView}
Expand Down