diff --git a/app/(pages)/(hackers)/(hub)/page.tsx b/app/(pages)/(hackers)/(hub)/page.tsx
index 5aef90db..bf6ae3c6 100644
--- a/app/(pages)/(hackers)/(hub)/page.tsx
+++ b/app/(pages)/(hackers)/(hub)/page.tsx
@@ -43,27 +43,6 @@ export default function Page() {
-
- {/* this is last year's page structure for reference (temp) */}
- {/*
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- */}
);
}
diff --git a/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.module.scss b/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.module.scss
deleted file mode 100644
index 2797bd20..00000000
--- a/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.module.scss
+++ /dev/null
@@ -1,289 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap');
-
-.container {
- position: relative;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- row-gap: 162px;
- column-gap: 96px;
-
- text-align: left;
- color: var(--text-dark);
- font-size: 1.125rem;
- font-weight: 400;
-
- @include mixins.desktop-m {
- row-gap: 100px;
- column-gap: 64px;
- }
-
- @include mixins.desktop-s {
- column-gap: 48px;
- }
-
- @include mixins.tablet-l {
- justify-content: center;
- row-gap: 16px;
- }
-}
-
-.infoContainer {
- width: 100%;
- order: 0;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
-
- .date {
- flex: 1;
- text-align: left;
- }
-
- .link {
- display: inline-flex;
- align-items: flex-start;
- gap: 0.25rem;
- }
-
- .map {
- // flex: 1;
- text-align: right;
- }
-
- .map:hover {
- text-decoration: underline;
- }
-
- @include mixins.tablet-l {
- text-align: center;
- }
-}
-
-.heroRow {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: space-between;
- flex-wrap: nowrap;
- width: 100%;
- gap: 40px;
-
- // @include mixins.desktop-s {
- // justify-content: center;
- // gap: 25px;
- // padding: 0% 2%;
- // }
-
- @include mixins.tablet-l {
- flex-direction: column-reverse;
- align-items: center;
- gap: 24px;
- }
-}
-
-.belowClock {
- display: flex;
- flex-direction: row;
- align-items: center;
- gap: 40px;
- justify-content: space-between;
- width: 100%;
-
- @include mixins.desktop-m {
- gap: 20px;
- }
-
- @include mixins.tablet-l {
- flex-direction: row;
- justify-content: center;
- align-items: flex-start;
- }
-}
-
-.center_right {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: flex-start;
- width: fit-content;
-
- @include mixins.tablet-l {
- align-items: center;
- order: 1;
- }
-
- .countdown {
- max-width: 100%;
- }
- }
-
-
- .submitButton {
- background-color: var(--background-secondary);
- display: flex;
- font-weight: 600;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- gap: 10px;
- padding: 36px 108px;
- color: var(--text-light);
- border-radius: 1000px;
-
- .submitArrow {
- color: white;
- width: 24px;
- height: 24px;
- }
-
- @include mixins.desktop-l {
- padding: 18px 54px;
- }
-
- @include mixins.tablet-l {
- p {
- font-size: 14px;
- }
- }
- }
-
-
-.judge_info{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- padding: 35px 32px;
- display: flex;
- justify-content: space-between;
-
- .judge_bunny_ducky_img{
- position: absolute;
- bottom: 0;
- right: 0;
- }
- .schedule_button{
- padding: 2% 6%;
- border-radius: 20px;
- border: 1.5px dashed #000;
- display: flex;
- align-items: center;
- }
-}
-
-.notification {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- text-align: center;
- padding: 35px 32px;
-
- @include mixins.desktop-s {
- padding: 24px;
- }
-
- @include mixins.tablet-l {
- order: 3;
- padding: 50px 35px;
- margin-top: 50px;
- text-align: left;
- }
-}
-
-.monospace {
- font-family: "DM Mono", monospace;
- font-size: 18px;
-
- @include mixins.desktop-s {
- font-size: 17px;
- }
-}
-
-.info {
- font-size: 18px;
- @include mixins.desktop-s {
- font-size: 17px;
- }
- @include mixins.tablet-l {
- display: none;
- }
-}
-
-.scrollSection {
- display: none;
-
- @include mixins.tablet-l {
- padding-top: 15%;
- display: flex;
- }
-}
-
-.scrollDesktopSection {
- width: 100%;
-
- @include mixins.tablet-l {
- display: none;
- }
-}
-
-.star_social_good {
- display: none;
-
- @include mixins.tablet-l {
- display: flex;
- flex-direction: row;
- gap: 10px;
- order: 0;
- width: 100%;
- // padding: 0% 2%;
- order: 0;
- }
-}
-
-.star_box, .social_good {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
-}
-
-.star_box {
- flex-grow: 0;
- flex-shrink: 0;
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 0 28px;
- order: 4;
-}
-
-.social_good {
- font-family: "DM Mono", monospace;
- text-align: left;
- flex-grow: 1;
- padding: 28px;
-}
-
-.box_star {
- width: 36px;
- height: auto;
-}
-
-.spacer_star_container {
- display: none;
-
- @include mixins.tablet-l {
- order: 1;
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- margin: 24px;
- }
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.tsx b/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.tsx
deleted file mode 100644
index 6a311ec1..00000000
--- a/app/(pages)/(hackers)/_components/2025DOE/Hacking/IndexHeroContentHacking.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-'use client';
-
-import Image from 'next/image';
-import { LuArrowUpRight } from 'react-icons/lu';
-import { GoArrowRight } from 'react-icons/go';
-import styles from './IndexHeroContentHacking.module.scss';
-import MusicPlayer from '../../2025IndexHero/MusicPlayer';
-import Scroll from '../../2025IndexHero/Scroll';
-import { useRollout } from '@pages/_hooks/useRollout';
-import ClientTimeProtectedDisplay from '@pages/_components/TimeProtectedDisplay/ClientTimeProtectedDisplay';
-import Announcements from '../../2025IndexHero/Announcements';
-import NextSchedule from '../../2025IndexHero/NextSchedule';
-import Countdown from '../../2025IndexHero/Countdown';
-
-import star from 'public/hackers/index-hero/star.svg';
-
-export default function IndexHeroContentHacking() {
- const { loading, rolloutRes, fetchRollout } = useRollout('hacking-starts');
-
- if (loading) return null;
- if (!rolloutRes.ok) return JSON.stringify(rolloutRes.error);
-
- const countdownTarget = rolloutRes.body.rollout_time + 24 * 60 * 60 * 1000;
-
- return (
-
-
-
-
-
-
-
-
-
- }
- callback={() => fetchRollout('hacking-starts')}
- >
-
-
-
-
-
- A HACKDAVIS HUB
-
- FOR EVERYONE WHO
-
- {' // creates for social good'}
-
-
-
-
- SUBMIT!
-
-
-
-
-
-
-
-
-
- {/* bottom one */}
-
-
-
-
-
{'// for social good'}
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.module.scss b/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.module.scss
deleted file mode 100644
index 9d3d159d..00000000
--- a/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.module.scss
+++ /dev/null
@@ -1,394 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-@import '@globals/mixins.scss';
-@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap');
-
-.container {
- // position: absolute;
- position: relative;
- // left: 120px;
- // right: 120px;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- row-gap: 100px;
- column-gap: 96px;
-
- text-align: left;
- color: var(--text-dark);
- font-size: 1.125rem;
- font-weight: 400;
-
- @include mixins.desktop-m {
- row-gap: 100px;
- column-gap: 64px;
- }
-
- @include mixins.desktop-s {
- column-gap: 48px;
- }
-
- @include mixins.tablet-l {
- justify-content: center;
- row-gap: 16px;
- }
-
-}
-
-.infoContainer {
- width: 100%;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
-
- .date {
- // flex: 1;
- text-align: left;
- }
-
- .link {
- display: inline-flex;
- align-items: flex-start;
- gap: 0.25rem;
- }
-
- .map {
- // flex: 1;
- text-align: right;
- }
-
- .map:hover {
- text-decoration: underline;
- }
-
- .text {
- width: 100%;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- }
-
- .notifications {
- width: 100%;
- display: flex;
- align-items: flex-end;
- }
-
- @include mixins.tablet-l {
- text-align: center;
- }
-}
-
-.heroRow {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: space-around;
- flex-wrap: nowrap;
- width: 100%;
-
- @include mixins.desktop-s {
- justify-content: center;
- gap: 25px;
- padding: 0% 2%;
-
- // .center_right {
- // width: 80%;
- // padding-bottom: 10%;
- // }
- }
-
- @include mixins.tablet-l {
- flex-direction: column-reverse;
- align-items: center;
- gap: 24px;
- width: 100%;
- }
-
- > * {
- flex-shrink: 0;
- }
- }
-
- .center_right {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: flex-start;
- width: 60%; // hopefully no merge conflict...
-
- @include mixins.tablet-l {
- padding-top: 5%;
- align-items: center;
- width: 100%;
- }
- }
-
-
- .submitButton {
- background-color: var(--background-secondary);
- display: flex;
- font-weight: 600;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- gap: 10px;
- padding: 3% 6%;
- color: var(--text-light);
- border-radius: 1000px;
-
- .submitArrow {
- color: white;
- width: 24px;
- height: 24px;
- }
- }
-
-
-.group_width{
- width: 100%;
- .countdown{
- p{
- font-size: 18px;
- font-weight: 400;
- color: #000;
-
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- span{
- font-size: 18px;
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
-
- }
- p {
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- h2{
- font-size: 36px;
- font-weight: 700;
- @include mixins.tablet-l{
- font-size: 20px;
- font-weight: 600;
- }
- }
- .star_icon_img{
- @include mixins.tablet-l{
- width: 16px;
- height: 16px;
- }
-
- }
- button{
- font-size: 18px;
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- h6{
- font-size: 20px;
- @include mixins.tablet-l{
- font-size: 16px;
- }
- }
-}
-
-.judge_info{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- padding: 35px 32px;
- display: flex;
- justify-content: space-between;
-
- .judge_bunny_ducky_img{
- position: absolute;
- bottom: 0;
- right: 0;
-
- @include tablet-l {
- max-height: 100%;
- }
- }
- .schedule_button{
- padding: 2% 6%;
- border-radius: 20px;
- border: 1.5px dashed #000;
- display: flex;
- align-items: center;
- }
-}
-
-.notification {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- padding: 35px 32px;
-
- @include mixins.desktop-s {
- padding: 24px;
- }
-
- @include mixins.tablet-l {
- // order: 3;
- padding: 50px 35px;
- // margin-top: 50px;
- text-align: left;
- }
-
- .schedule_button{
- padding: 1% 4%;
- border-radius: 20px;
- border: 1.5px dashed #000;
- display: flex;
- align-items: center;
- @include mixins.tablet-s{
- width: 100%;
- margin-top: 5%;
- }
- }
- .time_location{
- display: flex;
- gap: 1%;
- @include mixins.tablet-l{
- gap: 4%;
- }
- }
- .button_cont{
- display: flex;
- justify-content: flex-end;
- }
-}
-
-.live_now_empty{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- text-align: center;
- display: flex;
- align-items: center;
- flex-direction: column;
- padding: 5% 10%;
-}
-
-.live_now{
- overflow: auto;
- height: 554px;
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- // text-align: center;
- padding: 0% 10%;
- scrollbar-color: white white;
- @include mixins.tablet-l{
- padding: 0% 5%;
- }
-
- .announcement{
- background-color: white;
- padding: 3%;
- border-radius: 16px;
- margin-top: 2%;
- margin-bottom: 2%;
- @include mixins.tablet-l{
- margin-top: 10%;
- padding: 10%;
- }
- }
- .time_and_icon{
- display: flex;
- justify-content: space-between;
- .circle{
- width: 15px;
- height: 15px;
- background-color: #9EE7E5;
- border-radius: 50%;
- }
- }
-}
-
-.monospace {
- font-family: "DM Mono", monospace;
- font-size: 18px;
-
- @include mixins.desktop-s {
- font-size: 17px;
- }
-}
-
-.info {
- font-size: 18px;
- flex-wrap: nowrap;
- @include mixins.desktop-s {
- font-size: 17px;
- }
- @include mixins.tablet-l {
- display: none;
- }
-}
-
-.star_social_good {
- display: none;
- @include mixins.tablet-l {
- display: flex;
- flex-direction: row;
- gap: 10px;
- // order: 4;
- width: 100%;
- padding: 0% 2%;
- }
-}
-
-.star_box, .social_good {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
-}
-
-.star_box {
- flex-grow: 0;
- flex-shrink: 0;
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 0 28px;
-}
-
-.social_good {
- font-family: "DM Mono", monospace;
- text-align: left;
- flex-grow: 1;
- padding: 28px;
-}
-
-.box_star {
- width: 36px;
- height: auto;
-}
-
-.spacer_star_container {
- display: none;
-
- @include mixins.tablet-l {
- order: 1;
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- margin: 24px;
- }
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.tsx b/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.tsx
deleted file mode 100644
index 2684975a..00000000
--- a/app/(pages)/(hackers)/_components/2025DOE/Judging/IndexHeroContentJudging.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-'use client';
-
-import Image from 'next/image';
-import MusicPlayer from '../../2025IndexHero/MusicPlayer';
-import star_icon from '@public/hackers/hero/star.svg';
-import judge_bunny_and_ducky from '@public/hackers/hero/judge_bunny_and_ducky.svg';
-import { LuArrowUpRight } from 'react-icons/lu';
-import star from 'public/hackers/index-hero/star.svg';
-import Link from 'next/link';
-import JudgeBanners from '../../2025IndexHero/JudgeBanners';
-import styles from './IndexHeroContentJudging.module.scss';
-
-export default function IndexHeroContentJudging() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{'// for social good'}
-
-
-
-
-
WHILE YOU WAIT, CHECK OUT OUR JUDGING INFORMATION
-
-
-
-
-
- Judging Information
-
-
-
- Read on the process
-
-
-
-
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.module.scss
deleted file mode 100644
index c50e04b1..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.module.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-
-.container{
- display: flex;
- // width: 60%;
- margin-left: 30%;
- // margin-right: 20%;
- position: relative;
- @include mixins.tablet-l{
- margin-left: 0%;
- width: 100%;
- flex-direction: column;
- align-items: center;
- margin-top: 15%;
- }
-
-}
-
-.text_container{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- padding: 5%;
-}
-.sleeping_cow_img{
- position: absolute;
- left: -200px;
- top: 60px;
- z-index: 99;
- @include mixins.tablet-l{
- position: unset;
- }
-}
-.radio_img{
- position: absolute;
- top: -72.5px;
- right: 0;
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.tsx
deleted file mode 100644
index df68665c..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/AssigningJudges.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import styles from './AssigningJudges.module.scss';
-import sleeping_cow from 'public/hackers/hero/sleeping_cow.svg';
-import radio from 'public/hackers/hero/radio.svg';
-import Image from 'next/image';
-
-export default function AssigningJudges() {
- return (
-
-
-
PLEASE SIT TIGHT FOR JUDGING INFORMATION...
-
-
- Hi hacker, we're assigning you your judges. Sit tight, practice
- pitching your project, and submit your vote for{' '}
- Hackers Choice Award!
-
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.module.scss
deleted file mode 100644
index d9e6fbe5..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.module.scss
+++ /dev/null
@@ -1,95 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-@import '@globals/mixins.scss';
-
-.container {
- display: flex;
- flex-direction: column;
- padding-top: 3%;
-
- @include tablet-l {
- padding-bottom: 5%;
- }
-}
-
-.labels {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
-
- &.space_around {
- justify-content: space-around;
- }
-}
-
-.countdown_text {
- color: var(--background-secondary);
- font-size: 9.875vw;
- font-weight: 700;
- justify-content: center;
- // border: 1px solid black;
-
- // &.fixed_text {
- // width: 11vw;
- // }
-
- @include mixins.tablet-l {
- text-align: center;
- }
-}
-
-// .days_countdown {
-// > p {
-// @include mixins.tablet-l {
-// text-align: center;
-// }
-// }
-
-// }
-
-.time_countdown {
- display: flex;
- flex-direction: row;
- align-items: flex-end;
- // border: 1px solid red;
-
- // gap: 3%;
-
- > div {
- text-align: center;
- }
-
- // @include mixins.desktop-m {
- // gap: 24px;
- // }
-
- // @include mixins.desktop-s {
- // gap: 24px;
- // }
-
- // @include mixins.tablet-l {
- // gap: 16px;
- // }
-
- @include mixins.mobile-l {
- padding-top: 8%;
- gap: 10px;
- }
-
- &.countdown_text {
- text-align: center;
- }
-}
-
-// .seconds {
-// @include mixins.tablet-s {
-// transform: translateX(-15%);
-// }
-// }
-
-.words {
- @include mixins.mobile-l {
- font-size: 14px;
- font-style: normal;
- font-weight: 400;
- }
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.tsx
deleted file mode 100644
index 4bf40c64..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/Countdown.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-'use client';
-
-import styles from './Countdown.module.scss';
-import { useState, useEffect } from 'react';
-
-interface CountdownProps {
- countdownTarget?: number;
-}
-
-export default function Countdown({
- countdownTarget = new Date('2026-04-20T07:00:00-07:00').getTime(),
-}: CountdownProps) {
- const [timeLeft, setTimeLeft] = useState({
- hours: 24,
- minutes: 0,
- seconds: 0,
- });
-
- useEffect(() => {
- const timer = setInterval(() => {
- const calculateTimeLeft = () => {
- const now = Date.now();
- const difference = countdownTarget - now;
-
- // when done, display 00:00:00
- if (difference <= 0) return { hours: 0, minutes: 0, seconds: 0 };
-
- // if > 24 hours before judging time, cap the display at 24:00:00
- if (difference > 24 * 60 * 60 * 1000)
- return { hours: 24, minutes: 0, seconds: 0 };
-
- // actual functionality
- return {
- hours: Math.floor(difference / (1000 * 60 * 60)),
- minutes: Math.floor((difference / (1000 * 60)) % 60),
- seconds: Math.floor((difference / 1000) % 60),
- };
- };
- setTimeLeft(calculateTimeLeft());
- }, 1000);
-
- return () => clearInterval(timer);
- }, [countdownTarget]);
-
- return (
-
-
-
-
HOURS
-
- {timeLeft.hours.toString().padStart(2, '0')}
-
-
-
{' : '}
-
-
MINUTES
-
- {timeLeft.minutes.toString().padStart(2, '0')}
-
-
-
{' : '}
-
-
SECONDS
-
- {timeLeft.seconds.toString().padStart(2, '0')}
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.module.scss
deleted file mode 100644
index ff42104c..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.module.scss
+++ /dev/null
@@ -1,98 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-
-.container{
- display: flex;
- margin-left: 30%;
- margin-right: 7%;
- // margin-right: 20%;
- position: relative;
- @include mixins.desktop-s{
- margin-right: 10%;
- }
- @include mixins.tablet-l{
- margin-left: 0%;
- margin-right: 0;
- width: 100%;
- flex-direction: column;
- align-items: center;
- margin-top: 15%;
- }
-
- a{
- font-weight: 600;
- text-decoration-line: underline;
- text-decoration-style: solid;
- }
-
-
-}
-
-.text_container{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- padding: 5%;
-}
-.bunny_phone_img{
- position: absolute;
- right: -100px;
- top: 90px;
- z-index: 99;
- @include mixins.tablet-l{
- display: none;
- }
-}
-.stars_img{
- position: absolute;
- top: -22.5px;
- left: -40px;
- @include mixins.tablet-l{
- left: -20px;
- }
-}
-
-.grid_container{
- display: none;
-
- @include mixins.tablet-l{
- margin-top: 5%;
- display: flex;
- justify-content: space-between;
- gap: 5%;
- }
- .left_container{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- padding: 5%;
- width: 60%;
- }
- .right_container{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- padding: 5%;
- width: 40%;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .bunny_phone_img_mobile{
- width: 50%;
- }
- .hackdavis_text{
- color: var(--teal-1, #005271);
- font-family: "DM Mono";
- font-size: 16px;
- font-weight: 400;
- line-height: 145%;
- letter-spacing: 0.32px;
- }
-}
-.ducky_img{
- transform: rotate(-15deg);
- width: 100%;
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.tsx
deleted file mode 100644
index aea60aaf..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/DoneJudging.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import styles from './DoneJudging.module.scss';
-import bunny_phone from 'public/hackers/hero/bunny_phone.svg';
-import stars from 'public/hackers/hero/stars.svg';
-import ducky from 'public/hackers/hero/ducky.svg';
-import Image from 'next/image';
-
-export default function DoneJudging() {
- return (
-
-
-
-
CONGRATS!
-
-
- You're all done, thank you so much for your participation at
- HackDavis 2025. Please wait until Closing Ceremony for
- judging results! In the meantime, put in your vote for{' '}
-
- Hacker's Choice Award
- {' '}
- and check out our insta @hackdavis!
-
-
-
-
-
-
-
-
-
@hackdavis
-
Check out our instagram
-
-
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.module.scss
deleted file mode 100644
index 698e9dc4..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.module.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-@import '@globals/mixins.scss';
-
-.container {
- position: relative;
- width: 100%;
- height: fit-content;
- padding-bottom: 25%;
- background: linear-gradient(154deg, #76DEEB 45.75%, #FCFCD1 92.58%);
-
- @include tablet-l {
- padding-bottom: 15%;
- }
-}
-
-.base_grass {
- width: 100%;
- position: absolute;
- bottom: 0;
- transform: translateY(42%);
-}
-
-.bunny {
- position: absolute;
- bottom: 0;
- transform: translateX(200%);
- width: 20%;
-}
-
-.small_left_cloud {
- position: absolute;
- left: 0;
- top: 0;
- width: 20%;
- transform: translateY(100%);
-}
-
-.big_left_cloud {
- position: absolute;
- left: 0;
- top: 0;
- width: 40%;
- transform: translateY(170%);
-}
-
-.small_right_cloud {
- position: absolute;
- right: 0;
- top: 0;
- width: 55%;
- transform: translateY(95%);
-}
-
-.big_right_cloud {
- position: absolute;
- right: 0;
- top: 0;
- width: 70%;
- transform: translateY(10%);
-}
-
-.children {
- width: 100%;
- padding: 0px 108px;
- padding-top: 142px;
-
- @include desktop-m {
- padding: 0px 64px;
- padding-top: 142px;
- }
-
- @include tablet-l {
- padding: 0px 32px;
- padding-top: 120px;
- }
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.tsx
deleted file mode 100644
index 15d41c15..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHero.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import styles from './IndexHero.module.scss';
-import Image from 'next/image';
-import baseGrass from '@public/hackers/hero/GrassDivider.svg';
-import bigLeftCloud from '@public/hackers/index-hero/big-left-cloud.svg';
-import smallLeftCloud from '@public/hackers/index-hero/small-left-cloud.svg';
-import bigRightCloud from '@public/hackers/index-hero/big-right-cloud.svg';
-import smallRightCloud from '@public/hackers/index-hero/small-right-cloud.svg';
-
-export default function IndexHero({ children }: { children: React.ReactNode }) {
- return (
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.module.scss
deleted file mode 100644
index d6c4f6ca..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.module.scss
+++ /dev/null
@@ -1,419 +0,0 @@
-@use 'app/(pages)/_globals/mixins';
-@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap');
-
-.container {
- // position: absolute;
- position: relative;
- padding: 7.5%;
- // left: 120px;
- // right: 120px;
- top: 4%;
- position: absolute;
- left: 120px;
- right: 120px;
- top: 10%;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- row-gap: 162px;
- column-gap: 96px;
-
- text-align: left;
- color: var(--text-dark);
- font-size: 1.125rem;
- font-weight: 400;
- justify-content: space-between; // ONLY FOR WAITING FOR JUDGING STATE
-
- @include mixins.desktop-m {
- left: 64px;
- right: 64px;
- row-gap: 100px;
- column-gap: 64px;
-
- }
-
- @include mixins.desktop-s {
- left: 48px;
- right: 48px;
- column-gap: 48px;
- }
-
- @include mixins.tablet-l {
- justify-content: center;
- row-gap: 16px;
- left: 20px;
- right: 20px;
- }
-
-}
-
-
-.infoContainer {
- width: 100%;
- order: 0;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
-
- .heading_split{
- display: flex;
- justify-content: space-between;
- width: 50%;
- @include mixins.tablet-l{
- width: 100%;
- }
- }
-
- .date {
- flex: 1;
- text-align: left;
- }
-
- .link {
- display: inline-flex;
- align-items: flex-start;
- gap: 0.25rem;
- }
-
- .map {
- // flex: 1;
- text-align: right;
- }
-
- .map:hover {
- text-decoration: underline;
- }
-
- @include mixins.tablet-l {
- text-align: center;
- flex-direction: column;
- }
-}
-
-.heroRow {
- display: flex;
- flex-direction: row;
- align-items: center;
- justify-content: space-around;
- flex-wrap: nowrap;
- width: 100%;
-
- @include mixins.desktop-s {
- justify-content: center;
- gap: 25px;
- padding: 0% 2%;
- }
-
- @include mixins.tablet-l {
- flex-direction: column-reverse; // 👈 flips order
- align-items: center;
- gap: 24px;
- }
-
- > * {
- flex-shrink: 0;
- }
- }
-
-
-
-.belowClock {
- display: flex;
- flex-direction: row;
- align-items: center;
- gap: 40px;
- justify-content: space-between;
- width: 100%;
-
- @include mixins.tablet-l {
- flex-direction: row;
- justify-content: center;
- align-items: flex-start;
- }
-}
-
-.center_right {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- justify-content: center;
- align-items: flex-start;
- width: 60%; //needed for some components
-
- @include mixins.tablet-l {
- align-items: center;
- width: 100%;
- }
-}
-
-.live_now_heading{
- display: flex;
- gap: 1%;
- padding-bottom: 1%;
- align-items: center;
- @include mixins.tablet-l{
- display: none;
- }
- }
-
-
- .submitButton {
- background-color: var(--background-secondary);
- display: flex;
- font-weight: 600;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- gap: 10px;
- padding: 3% 6%;
- color: var(--text-light);
- border-radius: 1000px;
-
- .submitArrow {
- color: white;
- width: 24px;
- height: 24px;
- }
-
- @include mixins.tablet-l {
- padding: 5% 20%;
-
- p {
- font-size: 14px;
- }
- }
- }
-
-
-.group_width{
- width: 100%;
-
- .countdown{
- p{
- font-size: 18px;
- font-weight: 400;
- color: #000;
-
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- span{
- font-size: 18px;
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
-
- }
- p {
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- h2{
- font-size: 36px;
- font-weight: 700;
- @include mixins.tablet-l{
- font-size: 20px;
- font-weight: 600;
- }
- }
- .star_icon_img{
- @include mixins.tablet-l{
- width: 16px;
- height: 16px;
- }
-
- }
- button{
- font-size: 18px;
- @include mixins.tablet-l{
- font-size: 14px;
- }
- }
- h6{
- font-size: 20px;
- @include mixins.tablet-l{
- font-size: 16px;
- }
- }
-}
-
-.judge_info{
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- padding: 35px 32px;
- display: flex;
- justify-content: space-between;
- // align-items: center;
-
- @include mixins.tablet-l{
- flex-direction: column;
- padding: 35px 32px 0 35px ;
- text-align: center;
- width: 100%;
- }
-
- .judge_bunny_ducky_img{
- position: absolute;
- bottom: 0;
- right: 0;
-
- @include mixins.tablet-l{
- position: relative;
- width: 67%;
- }
- }
- .schedule_button{
- padding: 2% 6%;
- border-radius: 20px;
- border: 1.5px dashed #000;
- display: flex;
- align-items: center;
- @include mixins.tablet-l{
- width: 100%;
- justify-content: center;
- margin-top: 5%;
- }
- }
-}
-
-.notification {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
- width: 100%;
- text-align: center;
- padding: 35px 32px;
-
- @include mixins.desktop-s {
- padding: 24px;
- }
-
- @include mixins.tablet-l {
- order: 3;
- padding: 50px 35px;
- margin-top: 50px;
- text-align: left;
- }
-
- .schedule_button{
- padding: 1% 4%;
- border-radius: 20px;
- border: 1.5px dashed #000;
- display: flex;
- align-items: center;
- @include mixins.tablet-s{
- width: 100%;
- margin-top: 5%;
- justify-content: center;
- }
- }
- .time_location{
- display: flex;
- gap: 1%;
- @include mixins.tablet-l{
- gap: 4%;
- }
- }
- .button_cont{
- display: flex;
- justify-content: flex-end;
- }
-}
-
-.monospace {
- font-family: "DM Mono", monospace;
- font-size: 18px;
- @include mixins.desktop-s {
- font-size: 17px;
- }
-}
-
-.info {
- font-size: 18px;
- @include mixins.desktop-s {
- font-size: 17px;
- }
- @include mixins.tablet-l {
- display: none;
- }
-}
-
-.scrollSection {
- display: none;
-
- @include mixins.tablet-l {
- padding-top: 15%;
- display: flex;
- }
-}
-
-.scrollDesktopSection {
- width: 100%;
-
- @include mixins.tablet-l {
- display: none;
- }
-}
-
-.star_social_good {
- display: none;
-
- @include mixins.tablet-l {
- display: flex;
- flex-direction: row;
- gap: 10px;
- order: 0;
- width: 100%;
- // padding: 0% 2%;
- order: 0;
- }
-}
-
-.star_box, .social_good {
- border-radius: 18px;
- border: 1.5px solid rgba(255, 255, 255, 0.10);
- background: rgba(255, 255, 255, 0.50);
- backdrop-filter: blur(30px);
-}
-
-.star_box {
- flex-grow: 0;
- flex-shrink: 0;
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 0 28px;
- order: 4;
-}
-
-.social_good {
- font-family: "DM Mono", monospace;
- text-align: left;
- flex-grow: 1;
- padding: 28px;
-}
-
-.box_star {
- width: 36px;
- height: auto;
-}
-
-.spacer_star_container {
- display: none;
-
- @include mixins.tablet-l {
- order: 1;
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- margin: 24px;
- }
-}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.tsx
deleted file mode 100644
index d292696d..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/IndexHeroContentDone.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-import Image from 'next/image';
-// import Countdown from './Countdown';
-import styles from './IndexHeroContentDone.module.scss';
-import MusicPlayer from './MusicPlayer';
-import star_icon from '@public/hackers/hero/star.svg';
-import judge_bunny_and_ducky from '@public/hackers/hero/judge_bunny_and_ducky.svg';
-import Scroll from './Scroll';
-import { LuArrowUpRight } from 'react-icons/lu';
-// import Map from '@pages/judges/(app)/map/_components/Map/Map';
-import star from 'public/hackers/index-hero/star.svg';
-import Link from 'next/link';
-// import TimeTracker from './TimeTracker';
-import Notifications from './Notifications';
-// import AssigningJudges from './AssigningJudges';
-import DoneJudging from './DoneJudging';
-
-export default function IndexHeroContentDone() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
{'// for social good'}
-
-
-
-
-
UNTIL HACKATHON BEGINS
-
-
-
-
-
-
-
-
-
-
-
-
NEXT ON YOUR SCHEDULE
-
- {/*
-
-
*/}
-
- {/*
*/}
-
-
-
-
-
WHILE YOU WAIT, CHECK OUT OUR JUDGING INFORMATION
-
-
-
-
-
- Judging Information
-
-
-
- Read on the process
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.module.scss b/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.module.scss
deleted file mode 100644
index f640c994..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.module.scss
+++ /dev/null
@@ -1,88 +0,0 @@
-@import '@globals/mixins.scss';
-
-.container {
- padding: 2%;
- width: 100%;
- text-align: center;
-
- @include tablet-l {
- padding: 0%;
- margin: 5% 0% 5% 0%;
-}
-
- .star {
- display: block;
- margin: 0 auto;
- width: fit-content;
- padding-bottom: 3%;
-
- @include tablet-l {
- display: none;
- }
- }
-
- .parent {
- display: flex;
- flex-direction: row;
- justify-content: center;
- gap: 20px;
-
- @include tablet-l {
- gap: 10px;
- }
- }
-
- .child {
- position: relative;
- display: flex;
- flex-direction: column;
- justify-content: flex-end;
- align-items: center;
- width: 60px;
- height: 100px;
- cursor: pointer;
-
- @include tablet-l {
- width: 40px;
- gap: 5px;
- height: 80px;
- }
-
- .note {
- position: absolute;
- top: 0;
- height: 30px;
- opacity: 1;
- transform: translateY(0);
- transition: opacity 0.2s ease;
-
- @include tablet-l {
- height: 20px;
- gap: 5px;
- }
- }
-
- .head {
- width: 60px;
- height: auto;
- z-index: 1;
- }
-
- .note {
- position: absolute;
- top: 0;
- height: 30px;
- opacity: 1;
- transform: translateY(0);
- transition: transform 0.3s ease;
-
- @include tablet-l {
- height: 20px;
- }
- }
-
- &:hover .note {
- transform: translateY(-8px);
- }
- }
-}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.tsx b/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.tsx
deleted file mode 100644
index aad7f771..00000000
--- a/app/(pages)/(hackers)/_components/2025IndexHero/Scroll.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import styles from './Scroll.module.scss';
-import Image from 'next/image';
-import CowHead from 'public/hackers/hero/CowHead.svg';
-import BunnyHead from 'public/hackers/hero/BunnyHead.svg';
-import FrogHead from 'public/hackers/hero/FrogHead.svg';
-import DuckHead from 'public/hackers/hero/DuckHead.svg';
-import star from 'public/hackers/hero/star.svg';
-import evenNote from 'public/hackers/hero/EvenMusic.svg';
-import oddNote from 'public/hackers/hero/OddMusic.svg';
-
-// can delete scroll text
-// make music notes hidden + upon hover notes go up
-
-export default function Scroll() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/*
SCROLL
*/}
-
- );
-}
diff --git a/app/(pages)/(hackers)/_components/HomeJudging/HeroJudging.tsx b/app/(pages)/(hackers)/_components/HomeJudging/HeroJudging.tsx
index 14e01fd0..e373cba0 100644
--- a/app/(pages)/(hackers)/_components/HomeJudging/HeroJudging.tsx
+++ b/app/(pages)/(hackers)/_components/HomeJudging/HeroJudging.tsx
@@ -1,3 +1,109 @@
+'use client';
+
+import { useState, useCallback } from 'react';
+import Image from 'next/image';
+import Link from 'next/link';
+import { GoArrowRight } from 'react-icons/go';
+import { LuEye, LuEyeOff } from 'react-icons/lu';
+
+import useTableNumberContext from '@pages/_hooks/useTableNumberContext';
+import JudgeBanners from './_components/JudgeBanners';
+import HeroWaiting from './HeroWaiting';
+import DoneJudgingModal from './_components/DoneJudgingModal';
+
+import clouds from '@public/hackers/hero/Clouds.svg';
+
export default function HeroJudging() {
- return Hero Judging
;
+ const { storedValue: tableNumber } = useTableNumberContext();
+ const [showPreviousJudges, setShowPreviousJudges] = useState(false);
+ const [showDoneModal, setShowDoneModal] = useState(false);
+ const [hasDismissedModal, setHasDismissedModal] = useState(false);
+
+ const handleAllScored = useCallback(() => {
+ if (!hasDismissedModal) {
+ setShowDoneModal(true);
+ }
+ }, [hasDismissedModal]);
+
+ if (!tableNumber) {
+ return ;
+ }
+
+ return (
+
+ {showDoneModal && (
+
{
+ setShowDoneModal(false);
+ setHasDismissedModal(true);
+ }}
+ />
+ )}
+
+
+
+
+ TABLE {tableNumber ?? '---'}
+
+
+
+
+
+ {/* Previous Judges (top on mobile) */}
+ setShowPreviousJudges((prev) => !prev)}
+ className="flex items-center gap-2 md:max-w-[45%] underline underline-offset-4 cursor-pointer md:justify-end md:order-2"
+ >
+ {showPreviousJudges ? (
+
+ ) : (
+
+ )}
+
+ {showPreviousJudges
+ ? 'Hide previous judges'
+ : 'View previous judges'}
+
+
+
+ {/* Judging Process */}
+
+
+
+ Learn more about our judging process{' '}
+ here
+
+
+
+
+
+
+ );
}
diff --git a/app/(pages)/(hackers)/_components/HomeJudging/_components/DoneJudgingModal.tsx b/app/(pages)/(hackers)/_components/HomeJudging/_components/DoneJudgingModal.tsx
new file mode 100644
index 00000000..80492e75
--- /dev/null
+++ b/app/(pages)/(hackers)/_components/HomeJudging/_components/DoneJudgingModal.tsx
@@ -0,0 +1,56 @@
+'use client';
+
+import Image from 'next/image';
+import { useEffect } from 'react';
+import mascots_celebrate from '@public/hackers/hero/hero-judging/mascots_celebrate.svg';
+
+interface DoneJudgingModalProps {
+ onClose: () => void;
+}
+
+export default function DoneJudgingModal({ onClose }: DoneJudgingModalProps) {
+ // Close modal when user pressed Escape key or clicks outside
+ useEffect(() => {
+ const handleEsc = (e: KeyboardEvent) => {
+ if (e.key === 'Escape') onClose();
+ };
+ window.addEventListener('keydown', handleEsc);
+ return () => window.removeEventListener('keydown', handleEsc);
+ }, [onClose]);
+
+ return (
+ {
+ if (e.target === e.currentTarget) {
+ onClose();
+ }
+ }}
+ >
+
+
+
Congratulations Hacker!
+
+ You’re all done, thank you so much for your participation at HackDavis
+ 2026. Please wait until Closing Ceremony for judging results!
+ In the meantime, put in your vote for{' '}
+
+ Hacker’s Choice Award.
+
+
+
+
+ );
+}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.module.scss b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.module.scss
similarity index 98%
rename from app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.module.scss
rename to app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.module.scss
index f8552c6f..5ff6af2a 100644
--- a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.module.scss
+++ b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.module.scss
@@ -135,10 +135,6 @@
padding: 8px 12px;
}
-.finishing {
- filter: blur(3px);
-}
-
.hidden {
display: none;
}
\ No newline at end of file
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.tsx b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.tsx
similarity index 66%
rename from app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.tsx
rename to app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.tsx
index c3e05771..f53c75d4 100644
--- a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBannerIndividual.tsx
+++ b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBannerIndividual.tsx
@@ -17,9 +17,7 @@ export default function JudgeBannerIndividual({
completed,
}: JudgeBannerIndividualProps) {
return (
-
+
{name}
- {teamsAhead && (
-
There are {teamsAhead} teams ahead of you for this judge.
+ {completed ? (
+
This judge has already visited you.
+ ) : (
+ <>
+ {typeof teamsAhead === 'number' && (
+
There are {teamsAhead} teams ahead of you for this judge.
+ )}
+ {description &&
{description}
}
+ >
)}
- {description &&
{description}
}
{teamsAhead}
diff --git a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBanners.tsx b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBanners.tsx
similarity index 65%
rename from app/(pages)/(hackers)/_components/2025IndexHero/JudgeBanners.tsx
rename to app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBanners.tsx
index 4a3c9bee..8435bd41 100644
--- a/app/(pages)/(hackers)/_components/2025IndexHero/JudgeBanners.tsx
+++ b/app/(pages)/(hackers)/_components/HomeJudging/_components/JudgeBanners.tsx
@@ -4,11 +4,9 @@ import { useEffect } from 'react';
import JudgeBannerIndividual from './JudgeBannerIndividual';
import User from '@typeDefs/user';
import styles from './JudgeBannerIndividual.module.scss';
-import DoneJudging from './DoneJudging';
import useTableNumberContext from '@pages/_hooks/useTableNumberContext';
import { useTeamJudgesFromTableNumber } from '@pages/_hooks/useTeamJudgesFromTableNumber';
import { nonHDTracks } from '@data/tracks';
-import AssigningJudges from './AssigningJudges';
const icons = [
'/hackers/hero/PeekingCow.svg',
@@ -24,10 +22,25 @@ interface HydratedJudge extends User {
isScored: boolean;
}
-export default function JudgeBanners() {
+interface JudgeBannersProps {
+ showPreviousJudges: boolean;
+ onAllScored: () => void;
+}
+
+export default function JudgeBanners({
+ showPreviousJudges,
+ onAllScored,
+}: JudgeBannersProps) {
const { storedValue: tableNumber } = useTableNumberContext();
const { team, judges, loading, error, fetchTeamJudges } =
useTeamJudgesFromTableNumber(tableNumber ?? -1);
+ const allScored = judges?.every((judge: HydratedJudge) => judge.isScored);
+
+ useEffect(() => {
+ if (judges && judges.length > 0 && allScored) {
+ onAllScored();
+ }
+ }, [allScored, onAllScored, judges]);
useEffect(() => {
if (tableNumber) {
@@ -43,22 +56,17 @@ export default function JudgeBanners() {
return () => clearInterval(pollingInterval);
}, [fetchTeamJudges, tableNumber]);
- if (!tableNumber) {
- return
;
+ if (loading || error !== null) {
+ return error;
}
- if (loading || error !== null) return error;
-
- if (judges.length === 0) {
- return
;
+ if (!tableNumber || judges.length === 0) {
+ return null;
}
- const allScored = judges.every((judge: HydratedJudge) => judge.isScored);
- if (allScored) {
- return
;
- }
+ const effectiveJudges = judges as HydratedJudge[];
- const teamNonHDCategories: string[] = team.tracks
+ const teamNonHDCategories: string[] = ((team as any)?.tracks ?? [])
.filter((track: string) => track in nonHDTracks)
.map((track: string) => nonHDTracks[track].filter);
const hasNonprofitTrack = teamNonHDCategories.includes('Non-Profit');
@@ -91,15 +99,26 @@ export default function JudgeBanners() {
completed={false}
/>
)}
- {judges.map((judge: HydratedJudge, index: number) => (
-
- ))}
+ {effectiveJudges.map((judge: HydratedJudge, index: number) => {
+ // Automatically blur judges that have already scored, unless showPreviousJudges toggle is true
+ const isBlurred = judge.isScored && !showPreviousJudges;
+
+ return (
+
+
+
+ );
+ })}
);
}
diff --git a/public/hackers/hero/BunnyHead.svg b/public/hackers/hero/BunnyHead.svg
deleted file mode 100644
index ed346974..00000000
--- a/public/hackers/hero/BunnyHead.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/hero/CowHead.svg b/public/hackers/hero/CowHead.svg
deleted file mode 100644
index 92dacdf1..00000000
--- a/public/hackers/hero/CowHead.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/hero/DuckHead.svg b/public/hackers/hero/DuckHead.svg
deleted file mode 100644
index 72d70872..00000000
--- a/public/hackers/hero/DuckHead.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/public/hackers/hero/EvenMusic.svg b/public/hackers/hero/EvenMusic.svg
deleted file mode 100644
index 80635ebc..00000000
--- a/public/hackers/hero/EvenMusic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/public/hackers/hero/FrogHead.svg b/public/hackers/hero/FrogHead.svg
deleted file mode 100644
index b1042610..00000000
--- a/public/hackers/hero/FrogHead.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/hero/OddMusic.svg b/public/hackers/hero/OddMusic.svg
deleted file mode 100644
index cd92d4d7..00000000
--- a/public/hackers/hero/OddMusic.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/public/hackers/hero/hero-judging/mascots_celebrate.svg b/public/hackers/hero/hero-judging/mascots_celebrate.svg
new file mode 100644
index 00000000..a2a3f2e1
--- /dev/null
+++ b/public/hackers/hero/hero-judging/mascots_celebrate.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/hackers/hero/location_icon.svg b/public/hackers/hero/location_icon.svg
deleted file mode 100644
index 5cf81525..00000000
--- a/public/hackers/hero/location_icon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/public/hackers/index-hero/big-left-cloud.svg b/public/hackers/index-hero/big-left-cloud.svg
deleted file mode 100644
index 233480ec..00000000
--- a/public/hackers/index-hero/big-left-cloud.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/public/hackers/index-hero/big-right-cloud.svg b/public/hackers/index-hero/big-right-cloud.svg
deleted file mode 100644
index 7de76da0..00000000
--- a/public/hackers/index-hero/big-right-cloud.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/index-hero/small-left-cloud.svg b/public/hackers/index-hero/small-left-cloud.svg
deleted file mode 100644
index 01662a87..00000000
--- a/public/hackers/index-hero/small-left-cloud.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/index-hero/small-right-cloud.svg b/public/hackers/index-hero/small-right-cloud.svg
deleted file mode 100644
index 650d0d7b..00000000
--- a/public/hackers/index-hero/small-right-cloud.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/public/hackers/index-hero/star.svg b/public/hackers/index-hero/star.svg
deleted file mode 100644
index d0d0a7f4..00000000
--- a/public/hackers/index-hero/star.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-