diff --git a/src/app/controllers/useScroll.js b/src/app/controllers/useScroll.js index f2a4ece0..a325cc84 100644 --- a/src/app/controllers/useScroll.js +++ b/src/app/controllers/useScroll.js @@ -13,11 +13,14 @@ function useScroll() { }, [scrollableElements]); useEffect(() => { - window.scrollTo({ - top: 0, - left: 0, - behavior: "smooth", - }); + if (!pathname.includes("beta")) { + window.scrollTo({ + top: 0, + left: 0, + behavior: "smooth", + }); + } + setScrollableElements(document.getElementsByClassName("wait")); window.addEventListener("scroll", pageScroll); pageScroll(); diff --git a/src/app/pages/Designathons/Designathon24/Designathon24.js b/src/app/pages/Designathons/Designathon24/Designathon24.js index 0e7abd08..acf4ed1d 100644 --- a/src/app/pages/Designathons/Designathon24/Designathon24.js +++ b/src/app/pages/Designathons/Designathon24/Designathon24.js @@ -13,6 +13,7 @@ import FOF from "./assets/FOF.png"; import notion from "./assets/notion.png"; import balsamiq from "./assets/balsamiq.png"; import { + About, Profile, Prizes, SectionNavigation, @@ -48,32 +49,7 @@ const Designathon24 = () => ( -
-
-

About

-

- Design-a-thon is a 3 day long hybrid event where you or a team design - a product focused on the theme: community and inclusivity. It takes - place on February 24, starting at 5:30 pm and ends February 26, 8:00 - pm PST. -

-

- Design at UCI is the premier student-run organization at UCI for - anything graphic design, UI/UX design, product design, and more. - Started in 2016, we foster a special community for all digital - designers to connect, learn, and innovate. -

-

- Design at UCI’s designathon is the largest collegiate designathon in - Orange County. Each year, we bring together hundreds of student - designers nationwide to define, develop, and pitch a product built - from scratch. We hope that this experience can help you acquire and - grow both your soft and hard skills in empathizing with your users, - defining a set of goals and needs, developing your product, and - improving your confidence and creativity as a human-centric designer. -

-
-
+
diff --git a/src/app/pages/Designathons/Designathon24/Designathon24.module.scss b/src/app/pages/Designathons/Designathon24/Designathon24.module.scss index f55fc11a..47051652 100644 --- a/src/app/pages/Designathons/Designathon24/Designathon24.module.scss +++ b/src/app/pages/Designathons/Designathon24/Designathon24.module.scss @@ -42,40 +42,6 @@ } } - & > .about { - padding: 10px; - background-color: var(--des24-cream); - color: var(--des24-black); - font-size: 1em; - - & h2 { - font-size: 2em; - font-weight: bold; - } - - & p { - font-size: 1.2em; - line-height: 1.5em; - } - - & .aboutHeading { - color: var(--des24-hot-pink); - } - - @media screen and (min-width: 1100px) { - padding-bottom: 80px; - - & h2 { - font-size: 3em; - } - - & p { - font-size: 1.3em; - line-height: 1.4em; - } - } - } - & > .prizes { background-color: white; } diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/airplane.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/airplane.svg new file mode 100644 index 00000000..6dc895a2 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/airplane.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_gradient.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_gradient.svg new file mode 100644 index 00000000..e9db8ad8 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_gradient.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_stars.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_stars.svg new file mode 100644 index 00000000..6c56fc32 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/bl_stars.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/paperclip.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/paperclip.svg new file mode 100644 index 00000000..4c12ef8d --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/paperclip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_gradient.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_gradient.svg new file mode 100644 index 00000000..35d4542f --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_gradient.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_stars.svg b/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_stars.svg new file mode 100644 index 00000000..8ca8f9f1 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/assets/graphics/about/tr_stars.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/pages/Designathons/Designathon24/components/About/About.module.scss b/src/app/pages/Designathons/Designathon24/components/About/About.module.scss new file mode 100644 index 00000000..9585b4c8 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/components/About/About.module.scss @@ -0,0 +1,111 @@ +.container { + position: relative; + overflow: hidden; + + background-color: var(--des24-cream); + color: var(--des24-black); + + padding: 3rem 1rem 5rem; + font-size: 0.75em; + + & .aboutHeading { + color: var(--des24-hot-pink); + font-size: 50px; + font-weight: 700; + } + + .airplane { + position: absolute; + max-width: 125px; + + bottom: 0px; + right: 10px; + + @media screen and (min-width: 640px) { + max-width: 200px; + + right: 40px; + } + + @media screen and (min-width: 1024px) { + max-width: 250px; + + right: 0px; + } + + @media screen and (min-width: 1280px) { + max-width: 300px; + } + } + + .paperclip { + position: absolute; + max-width: 75px; + + top: 320px; + left: -24px; + + @media screen and (min-width: 640px) { + max-width: 100px; + + top: 374px; + left: 22px; + } + + @media screen and (min-width: 1280px) { + max-width: 250px; + + top: 386px; + left: 74px; + } + } + + .bl { + position: absolute; + max-width: 200px; + z-index: -1; + + bottom: 0px; + left: 0px; + + @media screen and (min-width: 640px) { + max-width: 500px; + } + } + + .tr { + position: absolute; + max-width: 200px; + z-index: -1; + + top: 0px; + right: 0px; + + @media screen and (min-width: 640px) { + max-width: 500px; + } + } + + .gradient { + max-width: 300px; + top: -100px; + } +} + +@media screen and (min-width: 640px) { + .container { + padding: 6rem 2rem 6rem; + + & .aboutHeading { + font-size: 70px; + font-weight: 700; + } + } +} + +@media screen and (min-width: 1280px) { + .container { + font-size: 1em; + padding: 6rem 5rem 6rem; + } +} diff --git a/src/app/pages/Designathons/Designathon24/components/About/index.jsx b/src/app/pages/Designathons/Designathon24/components/About/index.jsx new file mode 100644 index 00000000..69befaf7 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/components/About/index.jsx @@ -0,0 +1,59 @@ +import cn from "./About.module.scss"; +import clsx from "clsx"; + +import airplane from "../../assets/graphics/about/airplane.svg"; +import paperclip from "../../assets/graphics/about/paperclip.svg"; +import tr_gradient from "../../assets/graphics/about/tr_gradient.svg"; +import bl_gradient from "../../assets/graphics/about/bl_gradient.svg"; +import tr_stars from "../../assets/graphics/about/tr_stars.svg"; +import bl_stars from "../../assets/graphics/about/bl_stars.svg"; +import Notecard from "../Notecard/Notecard"; + +const About = () => { + return ( +
+

About

+ +

+ Design-a-thon is a 3 day long hybrid event where you or a + team design a product focused on the theme: community and + inclusivity. It takes place on February 24, starting at 5:30 + pm and ends February 26, 8:00 pm PST. +

+

+ Design at UCI is the premier student-run organization at UCI + for anything graphic design, UI/UX design, product design, + and more. Started in 2016, we foster a special community for + all digital designers to connect, learn, and innovate. +

+

+ Design at UCI’s designathon is the largest collegiate + designathon in Orange County. Each year, we bring together + hundreds of student designers nationwide to define, develop, + and pitch a product built from scratch. We hope that this + experience can help you acquire and grow both your soft and + hard skills in empathizing with your users, defining a set + of goals and needs, developing your product, and improving + your confidence and creativity as a human-centric designer. +

+
+ + + + tr_gradient + + + +
+ ); +}; + +export { About }; diff --git a/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.jsx b/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.jsx new file mode 100644 index 00000000..a644794e --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.jsx @@ -0,0 +1,37 @@ +import cn from "./Notecard.module.scss"; + +import { useRef } from "react"; +import useNotecardLines from "./useNotecardLines"; + +const Notecard = ({ children }) => { + const textRef = useRef(null); + + const { lines, notecardLineTop, notecardLineHeight } = + useNotecardLines(textRef); + + return ( +
+
+ +
+ {children} +
+ +
+ {/* The number of lines, determined by line height and height of total text */} + {[...Array(lines).keys()].map((index) => ( +
+ ))} +
+
+ ); +}; + +export default Notecard; diff --git a/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.module.scss b/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.module.scss new file mode 100644 index 00000000..490f56a2 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/components/Notecard/Notecard.module.scss @@ -0,0 +1,85 @@ +.noteCard { + position: relative; + + background-color: #fbfbfb; + color: var(--des24-black); + + box-shadow: 0px 4px 6px 4px rgba(0, 0, 0, 0.1); + + margin: 1.5rem 1rem 0; + + .noteCardHeader { + height: 60px; + border-bottom: 4px solid; + border-color: var(--des24-hot-pink); + opacity: 70%; + } + + .text { + margin-top: 0.5rem; + max-width: 95%; + + p { + display: flex; + flex-direction: column; + gap: 3rem; + + padding: 0 1.5rem 2rem 1.5rem; + line-height: 200%; + font-size: 16px; + } + } + + & .lines { + .line { + position: absolute; + height: 3px; + width: 100%; + + background-color: #8ebbdc; + opacity: 30%; + + z-index: -10; + } + } + + @media screen and (min-width: 640px) { + margin: 1.5rem 4rem 0; + + .noteCardHeader { + height: 80px; + border-bottom: 4px solid; + border-color: var(--des24-hot-pink); + opacity: 70%; + } + + .text { + margin-top: 0.75rem; + + p { + padding: 0 2rem 2.5rem; + font-size: 20px; + } + } + } + + @media screen and (min-width: 1280px) { + position: relative; + + background-color: #fbfbfb; + color: var(--des24-black); + + box-shadow: 0px 4px 6px 4px rgba(0, 0, 0, 0.1); + + margin: 1.5rem 6rem 0; + + .text { + margin-top: 0.5rem; + + p { + font-size: 24px; + padding: 0 2.5rem 3rem 2.5rem; + } + } + } +} diff --git a/src/app/pages/Designathons/Designathon24/components/Notecard/useNotecardLines.jsx b/src/app/pages/Designathons/Designathon24/components/Notecard/useNotecardLines.jsx new file mode 100644 index 00000000..821ae8a8 --- /dev/null +++ b/src/app/pages/Designathons/Designathon24/components/Notecard/useNotecardLines.jsx @@ -0,0 +1,69 @@ +import { useState, useEffect, useCallback } from "react"; + +const LINE_BREAKPOINTS = { + XL: 48, + LG: 40, + SM: 32, +}; + +const SMALL_SCREEN = 640; +const TOP_MARGIN = 128; +const TOP_MARGIN_SM = 96; + +function useNotecardLines(textRef) { + const [dimensions, setDimensions] = useState({ + width: 0, + height: 0, + lines: 0, + notecardLineHeight: 0, + notecardLineTop: 0, + }); + + const handleResize = useCallback(() => { + let newHeight = 0; + let newWidth = 0; + + if (textRef.current) { + newHeight = textRef.current.clientHeight; + } + + newWidth = window.innerWidth; + + /* Distance between notecard (blue) lines */ + const notecardLineHeight = + newWidth >= 1280 + ? LINE_BREAKPOINTS.XL + : newWidth >= 640 + ? LINE_BREAKPOINTS.LG + : LINE_BREAKPOINTS.SM; + + const numLines = Math.floor(newHeight / notecardLineHeight) - 1; + const lines = numLines > 0 ? numLines : 1; + + /* Distance from top border of card */ + const notecardLineTop = + newWidth >= SMALL_SCREEN ? TOP_MARGIN : TOP_MARGIN_SM; + + setDimensions({ + width: newWidth, + height: newHeight, + lines, + notecardLineHeight, + notecardLineTop, + }); + }, [textRef]); + + useEffect(() => { + handleResize(); + + window.addEventListener("resize", handleResize); + + return () => { + window.removeEventListener("resize", handleResize); + }; + }, [handleResize]); + + return dimensions; +} + +export default useNotecardLines; diff --git a/src/app/pages/Designathons/Designathon24/components/index.js b/src/app/pages/Designathons/Designathon24/components/index.js index 862b1321..04bfc40d 100644 --- a/src/app/pages/Designathons/Designathon24/components/index.js +++ b/src/app/pages/Designathons/Designathon24/components/index.js @@ -1,3 +1,4 @@ +export * from "./About"; export * from "./Profile"; export * from "./Prizes"; export * from "./SectionNavigation";