diff --git a/config/timeline.config.ts b/config/timeline.config.ts
new file mode 100644
index 0000000..c335bc3
--- /dev/null
+++ b/config/timeline.config.ts
@@ -0,0 +1,86 @@
+export type TimelineItem = {
+ title: string;
+ date: string;
+ description: string;
+};
+
+export const timeline: TimelineItem[] = [
+ {
+ title: 'ACM UTD is charted',
+ date: 'Circa 1996',
+ description: 'ACM v1, the first ACM chapter at UTD',
+ },
+ {
+ title: 'Computer Science Association is formed',
+ date: 'Fall 2012',
+ description: 'Another organization is formed at UTD',
+ },
+ {
+ title: 'ACM merges with CSSA',
+ date: 'Summer 2013',
+ description: 'The two organizations merge to create a larger ACM',
+ },
+ {
+ title: 'ACM creates the first Hack_UTD',
+ date: 'January 17, 2015',
+ description: 'The first of our many hackathons. This also marks the beginning of ACM v2',
+ },
+ {
+ title: 'ACM Projects becomes a division',
+ date: 'Fall 2016',
+ description: 'The first projects cohort creates various projects',
+ },
+ {
+ title: 'ACM Labs starts its first projects',
+ date: 'Fall 2017',
+ description: 'Labs is a precursor to what would later become ACM Development',
+ },
+ {
+ title: 'ACM Ignite Launches',
+ date: 'Circa 2018',
+ description:
+ 'ACM Ignite was a year-long program that would later be transformed into modern-day ACM Research',
+ },
+ {
+ title: 'ACM Education becomes a division',
+ date: 'Circa 2018',
+ description: 'The education program begins with brand new programs for beginners',
+ },
+ {
+ title: 'ACM Education starts the mentor program',
+ date: 'January 2020',
+ description: 'The mentor program is started to help students with their projects',
+ },
+ {
+ title: 'ACM Education starts the technical interview prep program (TIP)',
+ date: 'Fall 2020',
+ description:
+ 'The technical interview prep program is started to help students with their interviews. The creation of TIP and the mentor program marks the beginning of ACM v3',
+ },
+ {
+ title: 'ACM Development becomes a division',
+ date: 'May 2020',
+ description:
+ 'ACM Development is born to create and maintain platforms for ACM and UTD students',
+ },
+ {
+ title: 'ACM Research becomes a division',
+ date: 'Fall 2020',
+ description: 'ACM Research begins its first cohort of research participants',
+ },
+ {
+ title: 'ACM Media becomes a division',
+ date: 'September 2020',
+ description: 'ACM Media is born to create and maintain the media for ACM',
+ },
+ {
+ title: 'ACM Community becomes a division',
+ date: 'Spring 2022',
+ description: 'ACM Community is born to create and connect with the community',
+ },
+ {
+ title: 'You join ACM!!!',
+ date: '?????',
+ description: 'You can become part of our family!',
+ },
+];
diff --git a/package-lock.json b/package-lock.json
index 6e34be1..abcbaf3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"@radix-ui/react-dialog": "^1.1.7",
"@radix-ui/react-dropdown-menu": "^2.1.13",
"@radix-ui/react-hover-card": "^1.1.7",
+ "@radix-ui/react-navigation-menu": "^1.2.14",
"@radix-ui/react-popover": "^1.1.7",
"@radix-ui/react-slot": "^1.1.2",
"@tanstack/react-query": "^5.85.9",
@@ -1883,6 +1884,94 @@
}
}
},
+ "node_modules/@radix-ui/react-navigation-menu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz",
+ "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-collection": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-direction": "1.1.1",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@radix-ui/react-use-previous": "1.1.1",
+ "@radix-ui/react-visually-hidden": "1.2.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/primitive": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz",
+ "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz",
+ "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-escape-keydown": "1.1.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz",
+ "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-effect-event": "0.0.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@radix-ui/react-popover": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.7.tgz",
@@ -2353,6 +2442,21 @@
}
}
},
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz",
+ "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@radix-ui/react-use-rect": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz",
@@ -2389,6 +2493,29 @@
}
}
},
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
+ "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.1.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@radix-ui/rect": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
diff --git a/package.json b/package.json
index 4681383..372a6ed 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,7 @@
"@radix-ui/react-dialog": "^1.1.7",
"@radix-ui/react-dropdown-menu": "^2.1.13",
"@radix-ui/react-hover-card": "^1.1.7",
+ "@radix-ui/react-navigation-menu": "^1.2.14",
"@radix-ui/react-popover": "^1.1.7",
"@radix-ui/react-slot": "^1.1.2",
"@tanstack/react-query": "^5.85.9",
diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx
index 3fe2b59..93d3b1d 100644
--- a/src/app/about/page.tsx
+++ b/src/app/about/page.tsx
@@ -3,6 +3,7 @@ import { aboutPageData } from '../../../config/about.config';
import Divisions from '@/components/About/Divisions';
import AboutHeader from '@/components/About/AboutHeader';
import { AboutPageData } from '../../../lib/types';
+import Timeline from '@/components/About/Timeline';
export default function About() {
const { divisionDescription, divisions }: AboutPageData = aboutPageData;
@@ -12,6 +13,7 @@ export default function About() {
{description}
-+ Fun fact: ACM UTD is the 77th student chapter of ACM founded. ACM's history is a + little long, but what do you expect with the largest CS organization at UTD? +
++ {item.description} +
+