diff --git a/src/Pages/About/About.js b/src/Pages/About/About.js index 756eceed2..5b8c1b67b 100644 --- a/src/Pages/About/About.js +++ b/src/Pages/About/About.js @@ -1,6 +1,35 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; + +function useScrollSpy() { + const [activeId, setActiveId] = useState(null); + + useEffect(() => { + const sections = document.querySelectorAll("[data-spy]"); + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setActiveId(entry.target.id); + } + }); + }, + { + rootMargin: "-100px 0px -80% 0px", // adjust to activate earlier/later + threshold: 0, + } + ); + + sections.forEach((section) => observer.observe(section)); + return () => observer.disconnect(); + }, []); + + return activeId; +} export default function AboutPage() { + const activeId = useScrollSpy(); + const scrollToSection = (id) => { document.getElementById(id)?.scrollIntoView({ behavior: 'smooth' }); }; @@ -19,7 +48,7 @@ export default function AboutPage() {

-
+

Introduction

@@ -37,7 +66,7 @@ export default function AboutPage() {

-
+

Location & Hours

@@ -66,7 +95,7 @@ export default function AboutPage() {

-
+

Becoming an SCE Member

@@ -102,7 +131,7 @@ export default function AboutPage() {

-
+

Development Team

@@ -127,7 +156,7 @@ export default function AboutPage() {

-
+

Summer Internship Program

@@ -153,7 +182,7 @@ export default function AboutPage() {

-
+

Join Our Community

@@ -195,37 +224,55 @@ export default function AboutPage() {