diff --git a/app/(pages)/(hackers)/_components/Schedule/CalendarItem.tsx b/app/(pages)/(hackers)/_components/Schedule/CalendarItem.tsx index c44cf270..b69e3a44 100644 --- a/app/(pages)/(hackers)/_components/Schedule/CalendarItem.tsx +++ b/app/(pages)/(hackers)/_components/Schedule/CalendarItem.tsx @@ -12,6 +12,8 @@ interface CalendarItemProps { event: Event & { originalType?: string }; attendeeCount?: number; inPersonalSchedule?: boolean; + hideAddButton?: boolean; + disableAddButton?: boolean; onAddToSchedule?: () => void; onRemoveFromSchedule?: () => void; isRecommended?: boolean; @@ -27,6 +29,8 @@ export function CalendarItem({ event, attendeeCount, inPersonalSchedule = false, + hideAddButton = false, + disableAddButton = false, tags, host, onAddToSchedule, @@ -40,6 +44,9 @@ export function CalendarItem({ ? normalizedType : 'GENERAL'; const eventStyle = SCHEDULE_EVENT_STYLES[displayType]; + const actionIconPath = inPersonalSchedule + ? '/icons/check.svg' + : '/icons/plus.svg'; // Handle different time display scenarios const timeDisplay = formatScheduleTimeRange( @@ -49,27 +56,14 @@ export function CalendarItem({ return (
-
-
+
+

{name} @@ -123,13 +117,8 @@ export function CalendarItem({ )}

{displayType !== 'GENERAL' && displayType !== 'MEALS' && ( -
- {displayType === 'WORKSHOPS' && ( +
+ {(displayType === 'WORKSHOPS' || displayType === 'ACTIVITIES') && (
0 @@ -150,47 +139,46 @@ export function CalendarItem({
)} -
- -
+ {!hideAddButton && ( +
+ +
+ )}
)}
diff --git a/app/(pages)/(hackers)/_components/StarterKit/Ideate/IdeateMentorCallout.tsx b/app/(pages)/(hackers)/_components/StarterKit/Ideate/IdeateMentorCallout.tsx index 961588d1..fecc0f8a 100644 --- a/app/(pages)/(hackers)/_components/StarterKit/Ideate/IdeateMentorCallout.tsx +++ b/app/(pages)/(hackers)/_components/StarterKit/Ideate/IdeateMentorCallout.tsx @@ -1,52 +1,66 @@ import Image from 'next/image'; import { ArrowRight } from 'lucide-react'; +import type { StaticImageData } from 'next/image'; +import type { ReactNode } from 'react'; import mentorGraphic from '@public/hackers/starter-kit/ideate/TalkMentor.svg'; import IdeateSection from './IdeateSection'; -export default function IdeateMentorCallout() { - const mentorDiscordLink = 'https://discord.gg/wc6QQEc'; +interface MentorCalloutCardProps { + imageSrc: StaticImageData; + imageAlt: string; + eyebrow: string; + description: ReactNode; + note?: ReactNode; + noteBgClassName?: string; + ctaHref: string; + ctaLabel: string; +} + +export function MentorCalloutCard({ + imageSrc, + imageAlt, + eyebrow, + description, + note, + noteBgClassName, + ctaHref, + ctaLabel, +}: MentorCalloutCardProps) { return (
-
+
HackDavis mentor illustration

- Still Feel Stuck? + {eyebrow}

- No worries, we have a panel of industry mentors who are ready to - lend you help at any part of your development process. + {description}

-
-

- Note: If you have any questions - regarding hackathon events, please contact a{' '} - - director - - . -

-
+ {note ? ( +
+

{note}

+
+ ) : null}
@@ -54,3 +68,31 @@ export default function IdeateMentorCallout() { ); } + +export default function IdeateMentorCallout() { + return ( + + Note: If you have any questions + regarding hackathon events, please contact a{' '} + + director + + . + + } + ctaHref="https://discord.gg/wc6QQEc" + ctaLabel="Contact a mentor" + /> + ); +} diff --git a/app/(pages)/(hackers)/_components/StarterKit/TeamBuilding.tsx b/app/(pages)/(hackers)/_components/StarterKit/TeamBuilding.tsx index ddceca14..2aac607f 100644 --- a/app/(pages)/(hackers)/_components/StarterKit/TeamBuilding.tsx +++ b/app/(pages)/(hackers)/_components/StarterKit/TeamBuilding.tsx @@ -1,3 +1,116 @@ +import Image from 'next/image'; +import type Event from '@typeDefs/event'; +import teamMixer from '@public/hackers/starter-kit/teamBuilding/teamMixer.svg'; +import mascots from '@public/hackers/starter-kit/teamBuilding/mascotSquad.svg'; +import { CalendarItem } from '@pages/(hackers)/_components/Schedule/CalendarItem'; +import { MentorCalloutCard } from '@pages/(hackers)/_components/StarterKit/Ideate/IdeateMentorCallout'; + +const TEAM_MIXER_EVENT: Event = { + name: 'Team Mixer', + type: 'WORKSHOPS', + location: 'ARC Ballroom B', + start_time: new Date('2026-04-10T11:00:00'), + end_time: new Date('2026-04-10T12:00:00'), +}; + export default function TeamBuilding() { - return
Team Building
; + return ( +
+ {/* Header */} +
+
+

+ Team Building +

+ +

+ Find your squad. +

+ +

+ Building with friends (new or old) is what makes hackathons + memorable. Looking for a crew? Join us for our in-person Mixer to + meet potential teammates and brainstorm ideas. +

+
+ + {/* Event Card */} +
+ +
+
+ + {/* Illustration + Discord CTA */} + + No worries! Jump into our Discord and head to the{' '} + + #team-formation + {' '} + channel. Introduce yourself, share your skills, and see who's + looking for a teammate. + + } + note={ + <> + Pro-tip: You can switch teams + anytime before the final submission deadline. + + } + noteBgClassName="bg-[#F3F3FC]" + ctaHref="https://discord.gg/wc6QQEc" + ctaLabel="Go to Discord" + /> + + {/* Guiding Questions */} +
+
+

+ Guiding questions to find the right team +

+ +

+ Ask yourself questions like… +

+
+ +
+ {[ + { n: '01.', q: 'Is this person passionate about the same tracks?' }, + { n: '02.', q: "Does this person's skills complement mine?" }, + { n: '03.', q: 'Can I see myself working with them for 24 hours?' }, + ].map(({ n, q }) => ( +
+ + {n} + + +

{q}

+
+ ))} +
+ + {/* Mascot banner */} +
+ HackDavis mascots +
+
+
+ ); } diff --git a/public/hackers/starter-kit/teamBuilding/add.svg b/public/hackers/starter-kit/teamBuilding/add.svg new file mode 100644 index 00000000..c1c8b666 --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/add.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/hackers/starter-kit/teamBuilding/blackArrow.svg b/public/hackers/starter-kit/teamBuilding/blackArrow.svg new file mode 100644 index 00000000..56ff4da8 --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/blackArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/hackers/starter-kit/teamBuilding/cowIcon.svg b/public/hackers/starter-kit/teamBuilding/cowIcon.svg new file mode 100644 index 00000000..40e5ae81 --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/cowIcon.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/hackers/starter-kit/teamBuilding/locationIcon.svg b/public/hackers/starter-kit/teamBuilding/locationIcon.svg new file mode 100644 index 00000000..eb75d14f --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/locationIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/hackers/starter-kit/teamBuilding/mascotSquad.svg b/public/hackers/starter-kit/teamBuilding/mascotSquad.svg new file mode 100644 index 00000000..68786d0a --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/mascotSquad.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/hackers/starter-kit/teamBuilding/teamMixer.svg b/public/hackers/starter-kit/teamBuilding/teamMixer.svg new file mode 100644 index 00000000..d6449d27 --- /dev/null +++ b/public/hackers/starter-kit/teamBuilding/teamMixer.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +