diff --git a/public/fonts/Montserrat-ExtraBold.ttf b/public/fonts/Montserrat-ExtraBold.ttf new file mode 100644 index 0000000..476ec30 Binary files /dev/null and b/public/fonts/Montserrat-ExtraBold.ttf differ diff --git a/src/components/About.tsx b/src/components/About.tsx deleted file mode 100644 index 088a76c..0000000 --- a/src/components/About.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { useState } from "react"; -import BouncingText from "./ui/BouncingText"; -import { IconCaretUp, IconCaretDown } from "@tabler/icons-react"; -import AnimatedTestimonials from "./ui/Animated-testimonials"; - - -export default function About() { - const [storyOpen, setStoryOpen] = useState(true); - const [selectedTeam, setSelectedTeam] = useState("President"); - - const teams = [ - { - name: "President", - members: [ - { name: "Brittney Chong", role: "Prez", img: "/execs/Brittney.jpg", - bio: "My name is Brittney and I love to climb with my cat. I love making new friends let’s climb together (lead, boulder and even toprope)!" }, - ] - }, - { - name: "Communications", - members: [ - { name: "Caleb Chen", role: "VP", img: "/execs/comms/Caleb.jpg", - bio: "Hey everyone! I'm Caleb, I've been climbing for almost 2 years now. I love slopers, but slabs always humble me. Can't wait to see you all on climb nights!"}, - { name: "Carina Chan", role: "", img: "/execs/comms/Carina.jpg", - bio: "Hi! I'm Carina and I'm in fourth year studying Psych and MIT. I love being outdoors, whether I'm climbing or sk8ing. I'm all about capturing fun moments and turning them into creativer photos and designs to share the club's best adventures!" }, - { name: "Jiajun Chen", role: "", img: "/execs/comms/Jiajun.jpg", - bio: "Hi, I’m Jiajun — a third-year Medical Sciences student specializing in Physiology and Pharmacology. I’ve been climbing for a little over a year, mostly bouldering. Outside the gym, I’m into photography. Currently working on making it through a session without getting injured." }, - { name: "Kayleigh Gerritsen", role: "", img: "/execs/comms/Kayleigh.jpg", - bio: "Hi WCC! I'm a third year student specializing in biology. I love anything outdoorsy, going on hikes, and of course climbing! Bouldering specifically helps me release stress while also exercising both my body and mind. Aside from that I also love formula one, concerts, and exploring new countires :)" }, - ] - }, - { - name: "Events", - members: [ - { name: "Sophie DiCiacca", role: "VP", img: "/execs/events/Sophie.jpg", - bio: "Hey, my name is Sophie and I'm a second year in accounting. I used to be a competitive climber and coach!" }, - { name: "Luna Olin", role: "", img: "/execs/events/Luna.jpg", - bio: "Hi! My name is Luna Olin. I am currently a second year student studying Geography and Environment. I love spending time outdoors, going to concerts, and hanging out with my friends!" }, - { name: "Charlie Song", role: "", img: "/execs/events/Charlie.jpg", - bio: "Hey! I'm Charlie, I'm a 2nd year student studying finance. I've been bouldering for about 2 years now and I love crimps and dynos. I love spending time with friends, going outside, and snowboarding. I can't wait to meet you all at Junction!" }, - ] - }, - { - name: "Finance", - members: [ - { name: "Isa Dahya", role: "VP", img: "/execs/finance/Isa.jpg", bio: "Hi! I'm Isa and I'm in 4th year HSP physharm. Surprisingly I also like climbing especially indoor bouldering. I got 2 pet cats and I also enjoy biking. If you ever need any med sci advice feel free to contact :)" }, - { name: "Noah Medland", role: "VP", img: "/execs/finance/Noah.jpg", - bio: "Hey guys, I'm a third-year finance student with a passion for adventure. Outside the classroom, I thrive on mountain climbing, skydiving, and bungee jumping - activities that fuel my drive for challenge, focus, and resilience." }, - { name: "Jason Too", role: "VP", img: "/execs/finance/Jason.jpg", - bio: "Hi, my name is Jason and I’m a 2nd year finance student. I have been climbing for a year and I now live for it. I also play volleyball and a bit of soccer. My home is the climbing gym and if you see me say hi!" - } - ] - }, - { - name: "Sponsorship", - members: [ - { name: "Marshall Howard", role: "", img: "/execs/sponsor/Marshall.jpg", - bio: "Hi! I'm Marshall and I'm a second year psychology major with a minor in ethics! I've been climbing for about 3-ish years now, and it's one of my fav ways to pass the time! Aside from climbing, I also like to train triathalon, read, and binge watch shows!" }, - { name: "Jeremy Dai", role: "", img: "/execs/sponsor/Jeremy.jpg", - bio: "Hey! I'm Jeremy, a second year in med sci. I'm relatively new to climbing, having just over a year under my belt, but I'm already hooked. Apart from climbing, I enjoy folding origami and sharing what I make on my Instagram account. Hope to see you on the wall!" }, - ] - }, - { - name: "Web Devs", - members: [ - { name: "Ethan Wakefield", role: "VP", img: "/execs/web/Ethan.jpg", - bio: "Hey! I’m Ethan, a 4th year computer science student and the VP of web development. I’ve been climbing consistently for a few months and I’m completely hooked. I also enjoy going to the gym, playing games, watching movies, and sleeping. Looking forward to meeting new faces and climbing with yall!" }, - { name: "Jenni Shi", role: "", img: "/execs/web/Jen.jpg", - bio: "Hey guys! I'm Jen, a 4th-year Software Engineering student. I've been bouldering for around 2 years, but I dabble in top rope occasionally. You’ll probably catch me eating, thrifting, or crimping some wall on campus >:)" }, - { name: "Ryhana Williams", role: "", img: "/execs/web/Ryhana.jpg", - bio: "Hi! My name is Ryhana. I'm in my 2nd year of cs and I love to go thrifting, stay active and try new cafes." }, - ] - }, - ]; - - return ( -
-
- -

- - {/* Mission */} -

setStoryOpen(!storyOpen)} - > - Our Story - {storyOpen ? ( - - ) : ( - - )} -

- - {storyOpen && ( -
- {/* Text */} -
-

- Hey Climbers! We’re so excited to welcome you to another incredible year with the Western Climbing Club! - Since our very first meet-up in 2017, this community has grown into something truly special — all because of you. - Your passion, your encouragement, and your adventurous spirit are what make this club feel like home. -

-

- Over the past months, our exec team has been busy behind the scenes making this year the most unforgettable one yet. - From friendly competitions and outdoor trips to skill-building sessions and late-night bouldering hangs, - everything we’ve planned is here to support you — to help you push your limits, grow your skills, and connect with others who share your love for climbing. -

-

- Whether you’ve been with us since our first rope nights or you’re just stepping onto the wall for the first time, - we want this to be a place where you feel encouraged to challenge yourself, try new things, and share in the joy of reaching new heights. - We can’t wait to see the memories we’ll make together this year. - Here’s to another season of climbing, laughter, and adventure. -

-

- – Western Climbing Club Team -

-
- - {/* Team Photo */} -
- Our Team -
-
- )} - - {/*Nav*/} -
-
- {teams.map((team) => ( - - ))} -
-
- - {/* Team display */} -
- {teams - .filter((team) => team.name === selectedTeam) // show selected team - .map((team) => ( -
- - ({ - quote: member.bio, - name: member.name, - designation: member.role, - src: member.img, - }))} - /> -
- ))} -
-
-
- ); -} diff --git a/src/components/Contact.tsx b/src/components/Contact.tsx index f64f169..679137f 100644 --- a/src/components/Contact.tsx +++ b/src/components/Contact.tsx @@ -49,27 +49,40 @@ export default function Contact() { ]; return ( -
-
-

- -

+
+
+ {/* Header Section */} +
+
+ + Get in Touch + +
+ +

+ +

+ +

+ Have questions? We're here to help! Reach out through any of the channels below. +

+
{/* Contact Information */} -
+
{/* General Questions */} -
+
-
- +
+
-

General Questions

+

General Questions

-

+

For general questions about the club, events, or membership, reach out to us at{" "} climbing.club@westernusc.ca @@ -77,20 +90,20 @@ export default function Contact() {

{/* Instagram Contact */} -
+
-
- +
+
-

Quick Contact

+

Quick Contact

-

+

For quick questions and updates, contact us through our Instagram DMs at{" "} @westernclimbingclub @@ -98,29 +111,29 @@ export default function Contact() {

{/* FAQ Section */} -
-
-
- +
+
+
+
-

Frequently Asked Questions

+

Frequently Asked Questions

{faqData.map((item, index) => ( -
+
@@ -131,7 +144,7 @@ export default function Contact() { : 'max-h-0 opacity-0' }`} > -
+

{item.answer}

@@ -143,33 +156,33 @@ export default function Contact() {
{/* Social Media Links */} -
-

Connect With Us

-
+
+

Connect With Us

+
- diff --git a/src/components/Events.tsx b/src/components/Events.tsx index 9f5a139..6e1fb99 100644 --- a/src/components/Events.tsx +++ b/src/components/Events.tsx @@ -11,8 +11,8 @@ export default function Events() { )); return ( -
-
+
+

diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index d297fd2..af5bdbc 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -7,7 +7,7 @@ import { IconMenu2, IconX } from "@tabler/icons-react"; import wccLogo from "@/assets/WCC-logo-symbol.png"; const navLinks = [ - { name: "About", href: "#about" }, + { name: "Team", href: "#team" }, { name: "Events", href: "#events" }, { name: "Pricing", href: "#pricing" }, // { name: "History", href: "#history" }, diff --git a/src/components/Pricing.tsx b/src/components/Pricing.tsx index 9747638..1e6a7db 100644 --- a/src/components/Pricing.tsx +++ b/src/components/Pricing.tsx @@ -161,24 +161,40 @@ export default function Pricing() { return (
-

- -

- {/* Animated background elements */} -
-
-
-
+ {/* Large Wavy Squiggle Transition */} + +
+ + +
-
-

- -

- -
+ + +
+ {/* Header Section */} +
+
+ + Membership Options + +
+ +

+ +

+ +
+ + {/* Toggle Section */} +
+ +
+ + {/* Cards Grid */} +
{Object.values(plans).map((plan) => ( ))}
+ + {/* Bottom Info */} +
+

+ All passes include access to our exclusive climb nights with free snacks and exciting giveaways. + Junction Members save 50%! +

+
+
+ {/* Bottom Wavy Divider */} +
+ + +
); diff --git a/src/components/Team.tsx b/src/components/Team.tsx new file mode 100644 index 0000000..bfc252c --- /dev/null +++ b/src/components/Team.tsx @@ -0,0 +1,265 @@ +import { useState } from "react"; +import AnimatedTestimonials from "./ui/Animated-testimonials"; + + +export default function About() { + const [selectedTeam, setSelectedTeam] = useState("President"); + const [isFlipped, setIsFlipped] = useState(false); + + const teams = [ + { + name: "President", + members: [ + { name: "Brittney Chong", role: "Prez", img: "/execs/Brittney.jpg", + bio: "My name is Brittney and I love to climb with my cat. I love making new friends let’s climb together (lead, boulder and even toprope)!" }, + ] + }, + { + name: "Communications", + members: [ + { name: "Caleb Chen", role: "VP", img: "/execs/comms/Caleb.jpg", + bio: "Hey everyone! I'm Caleb, I've been climbing for almost 2 years now. I love slopers, but slabs always humble me. Can't wait to see you all on climb nights!"}, + { name: "Carina Chan", role: "", img: "/execs/comms/Carina.jpg", + bio: "Hi! I'm Carina and I'm in fourth year studying Psych and MIT. I love being outdoors, whether I'm climbing or sk8ing. I'm all about capturing fun moments and turning them into creativer photos and designs to share the club's best adventures!" }, + { name: "Jiajun Chen", role: "", img: "/execs/comms/Jiajun.jpg", + bio: "Hi, I’m Jiajun — a third-year Medical Sciences student specializing in Physiology and Pharmacology. I’ve been climbing for a little over a year, mostly bouldering. Outside the gym, I’m into photography. Currently working on making it through a session without getting injured." }, + { name: "Kayleigh Gerritsen", role: "", img: "/execs/comms/Kayleigh.jpg", + bio: "Hi WCC! I'm a third year student specializing in biology. I love anything outdoorsy, going on hikes, and of course climbing! Bouldering specifically helps me release stress while also exercising both my body and mind. Aside from that I also love formula one, concerts, and exploring new countires :)" }, + ] + }, + { + name: "Events", + members: [ + { name: "Sophie DiCiacca", role: "VP", img: "/execs/events/Sophie.jpg", + bio: "Hey, my name is Sophie and I'm a second year in accounting. I used to be a competitive climber and coach!" }, + { name: "Luna Olin", role: "", img: "/execs/events/Luna.jpg", + bio: "Hi! My name is Luna Olin. I am currently a second year student studying Geography and Environment. I love spending time outdoors, going to concerts, and hanging out with my friends!" }, + { name: "Charlie Song", role: "", img: "/execs/events/Charlie.jpg", + bio: "Hey! I'm Charlie, I'm a 2nd year student studying finance. I've been bouldering for about 2 years now and I love crimps and dynos. I love spending time with friends, going outside, and snowboarding. I can't wait to meet you all at Junction!" }, + ] + }, + { + name: "Finance", + members: [ + { name: "Isa Dahya", role: "VP", img: "/execs/finance/Isa.jpg", bio: "Hi! I'm Isa and I'm in 4th year HSP physharm. Surprisingly I also like climbing especially indoor bouldering. I got 2 pet cats and I also enjoy biking. If you ever need any med sci advice feel free to contact :)" }, + { name: "Noah Medland", role: "VP", img: "/execs/finance/Noah.jpg", + bio: "Hey guys, I'm a third-year finance student with a passion for adventure. Outside the classroom, I thrive on mountain climbing, skydiving, and bungee jumping - activities that fuel my drive for challenge, focus, and resilience." }, + { name: "Jason Too", role: "VP", img: "/execs/finance/Jason.jpg", + bio: "Hi, my name is Jason and I’m a 2nd year finance student. I have been climbing for a year and I now live for it. I also play volleyball and a bit of soccer. My home is the climbing gym and if you see me say hi!" + } + ] + }, + { + name: "Sponsorship", + members: [ + { name: "Marshall Howard", role: "", img: "/execs/sponsor/Marshall.jpg", + bio: "Hi! I'm Marshall and I'm a second year psychology major with a minor in ethics! I've been climbing for about 3-ish years now, and it's one of my fav ways to pass the time! Aside from climbing, I also like to train triathalon, read, and binge watch shows!" }, + { name: "Jeremy Dai", role: "", img: "/execs/sponsor/Jeremy.jpg", + bio: "Hey! I'm Jeremy, a second year in med sci. I'm relatively new to climbing, having just over a year under my belt, but I'm already hooked. Apart from climbing, I enjoy folding origami and sharing what I make on my Instagram account. Hope to see you on the wall!" }, + ] + }, + { + name: "Web Devs", + members: [ + { name: "Ethan Wakefield", role: "VP", img: "/execs/web/Ethan.jpg", + bio: "Hey! I’m Ethan, a 4th year computer science student and the VP of web development. I’ve been climbing consistently for a few months and I’m completely hooked. I also enjoy going to the gym, playing games, watching movies, and sleeping. Looking forward to meeting new faces and climbing with yall!" }, + { name: "Jenni Shi", role: "", img: "/execs/web/Jen.jpg", + bio: "Hey guys! I'm Jen, a 4th-year Software Engineering student. I've been bouldering for around 2 years, but I dabble in top rope occasionally. You’ll probably catch me eating, thrifting, or crimping some wall on campus >:)" }, + { name: "Ryhana Williams", role: "", img: "/execs/web/Ryhana.jpg", + bio: "Hi! My name is Ryhana. I'm in my 2nd year of cs and I love to go thrifting, stay active and try new cafes." }, + ] + }, + ]; + + return ( +
+ {/* Gradient Background */} +
+ + {/* Top Squiggly Border */} +
+ + + +
+ + {/* Bottom Squiggly Border */} +
+ + + +
+ +
+ + {/* Rotated Title */} +
+

+ Our Team +

+
+ +
+ {/* Header Section */} +
+

+ Meet the Dream Team +

+

+ The passionate climbers behind Western's most exciting community +

+
+ + {/* Postcard Container */} +
+
+
setIsFlipped((prev) => !prev)} + > + {/* Front of Postcard */} +
+
+ Our Team +
+ + {/* Flip Indicator */} +
+

+ + Click to flip +

+
+ + {/* Bottom Info */} +
+
+

Western Climbing Club

+

2025-2026 Executive Team

+
+
+
+
+ + {/* Back of Postcard */} +
+
+ {/* Decorative lines */} +
+ {[...Array(15)].map((_, i) => ( +
+ ))} +
+ + {/* Header */} +
+
+

+ Welcome to WCC! +

+
+
+
+ + {/* Content */} +
+

+ 🧗 Hey Climbers! We're thrilled to welcome you to another amazing year with the Western Climbing Club! +

+

+ Since 2017, we've built an incredible community where passion meets adventure. Your energy and spirit make this club feel like home. +

+

+ Whether you're a seasoned climber or just starting out, we're here to support you as you challenge yourself and reach new heights! 🎯 +

+ + {/* Signature */} +
+

+ – The WCC Team +

+
+
+ + {/* Decorative stamp */} +
+
+ 🧗 +

WCC

+
+
+
+
+
+
+
+ + {/* Team Navigation */} +
+
+ {teams.map((team) => ( + + ))} +
+
+ + {/* Team Display */} +
+ {teams + .filter((team) => team.name === selectedTeam) + .map((team) => ( +
+ ({ + quote: member.bio, + name: member.name, + designation: member.role, + src: member.img, + }))} + /> +
+ ))} +
+
+
+
+ ); +} diff --git a/src/components/Title.tsx b/src/components/Title.tsx index d6bf5f5..8a24e8b 100644 --- a/src/components/Title.tsx +++ b/src/components/Title.tsx @@ -33,14 +33,26 @@ export default function Title() { {!isMobile ? ( <> - {[bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8, bg9].map((bg, i) => ( + + {/* +
+ WESTERN + CLIMBING + CLUB +
+
*/} + + {[bg2, bg3, bg4, bg5, bg6, bg7, bg8, bg9].map((bg, i) => ( - {i === 0 && } ))} @@ -81,7 +93,7 @@ export default function Title() {
-
+
) } \ No newline at end of file diff --git a/src/components/Tutorial.tsx b/src/components/Tutorial.tsx new file mode 100644 index 0000000..5bf2bbd --- /dev/null +++ b/src/components/Tutorial.tsx @@ -0,0 +1,150 @@ + + +export default function Tutorial() { + const steps = [ + { + number: "1", + title: "Get Your Membership", + description: "Sign up for membership to access exclusive discounts, events, and climbing sessions throughout the year.", + icon: "🤝", + color: "from-purple-500 to-pink-500" + }, + { + number: "2", + title: "Sign the Waivers", + description: "Complete all necessary waivers to ensure a safe and enjoyable climbing experience.", + icon: "🖊️", + color: "from-pink-500 to-purple-600" + }, + { + number: "3", + title: "Purchase Tickets", + description: "Buy your climbing session tickets online or at the gym to secure your spot.", + icon: "🎟️", + color: "from-purple-600 to-indigo-500" + }, + { + number: "4", + title: "Start Climbing!", + description: "Whether you're a beginner or expert, challenge yourself, meet new friends, and reach new heights!", + icon: "🧗‍♂️", + color: "from-indigo-500 to-purple-500" + } + ]; + + return ( +
+
+ + {/* Steps Container */} +
+
+

+ How to Join +

+

+ Follow these simple steps to become part of Western's most exciting climbing community +

+
+ + {/* Steps Grid */} +
+ {steps.map((step, index) => ( +
+ {/* Step Number */} +
+ {step.number} +
+ + {/* Icon */} +
+ {step.icon} +
+ + {/* Content */} +
+

+ {step.title} +

+

+ {step.description} +

+
+ + {/* Decorative gradient line */} +
+
+ ))} +
+ + {/* Call to Action */} +
+
+ {/* Membership Link */} + + + {/* Waivers Link */} + + + + + {/* Tickets Link */} + +
+
+
+
+
+ ) +} \ No newline at end of file diff --git a/src/components/ui/Noise.tsx b/src/components/ui/Noise.tsx new file mode 100644 index 0000000..0601fae --- /dev/null +++ b/src/components/ui/Noise.tsx @@ -0,0 +1,79 @@ +import React, { useRef, useEffect } from 'react'; + +interface NoiseProps { + patternRefreshInterval?: number; + patternAlpha?: number; +} + +const Noise: React.FC = ({ + patternRefreshInterval = 2, + patternAlpha = 15 +}) => { + const grainRef = useRef(null); + + useEffect(() => { + const canvas = grainRef.current; + if (!canvas) return; + + const ctx = canvas.getContext('2d', { alpha: true }); + if (!ctx) return; + + let frame = 0; + let animationId: number; + + const canvasSize = 1024; + + const resize = () => { + if (!canvas) return; + canvas.width = canvasSize; + canvas.height = canvasSize; + + canvas.style.width = '100vw'; + canvas.style.height = '200vh'; + }; + + const drawGrain = () => { + const imageData = ctx.createImageData(canvasSize, canvasSize); + const data = imageData.data; + + for (let i = 0; i < data.length; i += 4) { + const value = Math.random() * 255; + data[i] = value; + data[i + 1] = value; + data[i + 2] = value; + data[i + 3] = patternAlpha; + } + + ctx.putImageData(imageData, 0, 0); + }; + + const loop = () => { + if (frame % patternRefreshInterval === 0) { + drawGrain(); + } + frame++; + animationId = window.requestAnimationFrame(loop); + }; + + window.addEventListener('resize', resize); + resize(); + loop(); + + return () => { + window.removeEventListener('resize', resize); + window.cancelAnimationFrame(animationId); + }; + }, [patternRefreshInterval, patternAlpha]); + + return ( + + ); +}; + +export default Noise; diff --git a/src/index.css b/src/index.css index a17e504..94b0d51 100644 --- a/src/index.css +++ b/src/index.css @@ -30,6 +30,13 @@ html { src: local('Montserrat'), url('/fonts/Montserrat-VariableFont_wght.ttf') format('truetype'); } +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: bold; + src: local('Montserrat Bold'), url('/fonts/Montserrat-ExtraBold.ttf') format('truetype'); +} + .scrollbar-hide::-webkit-scrollbar { display: none; /* Safari and Chrome */ } diff --git a/src/pages/Homepage.tsx b/src/pages/Homepage.tsx index 94ec06c..5d5bfde 100644 --- a/src/pages/Homepage.tsx +++ b/src/pages/Homepage.tsx @@ -1,6 +1,7 @@ import Title from '@/components/Title' -import About from '@/components/About' +import Team from '@/components/Team' import Events from '@/components/Events' +import Tutorial from '@/components/Tutorial' // import History from '@/components/History' // import Sponsors from '@/components/Sponsors' // import Resources from '@/components/Resources' @@ -11,7 +12,8 @@ export default function Homepage() { return ( <> - <About /> + <Tutorial /> + <Team /> <Events /> <Pricing /> {/* <History /> */}