diff --git a/sites/mainweb/app/(portal)/judge/page.tsx b/sites/mainweb/app/(portal)/judge/page.tsx index d57af57..c082547 100644 --- a/sites/mainweb/app/(portal)/judge/page.tsx +++ b/sites/mainweb/app/(portal)/judge/page.tsx @@ -5,6 +5,7 @@ import { useSession } from 'next-auth/react'; import { trpc } from '@/lib/trpc'; import { useRouter } from 'next/navigation'; import { RubricSlider, RubricSliderStyles } from '@/components/portal/judge/RubricSlider'; +import { ZoneMapModal, ViewMapButton } from '@/components/portal/judge/ZoneMapModal'; import Background from '@/components/portal/Background'; import { LiquidGlass } from '@/components/portal/LiquidGlass'; @@ -85,6 +86,7 @@ export default function JudgePage() { const [mounted, setMounted] = useState(false); const [step, setStep] = useState('viewing'); const [showHelp, setShowHelp] = useState(false); + const [showMap, setShowMap] = useState(false); const [scores, setScores] = useState({ creativity: 5, impact: 5, scope: 5, clarity: 5, soundness: 5, }); @@ -331,6 +333,8 @@ export default function JudgePage() { + setShowMap(true)} className="w-full max-w-sm mb-4" /> + + + setShowMap(false)} /> ); } diff --git a/sites/mainweb/app/(portal)/login/page.tsx b/sites/mainweb/app/(portal)/login/page.tsx index 41cc92e..b9faf71 100644 --- a/sites/mainweb/app/(portal)/login/page.tsx +++ b/sites/mainweb/app/(portal)/login/page.tsx @@ -4,6 +4,8 @@ import React, { useState, useEffect } from 'react'; import { useSession, signIn } from 'next-auth/react'; import { trpc } from '@/lib/trpc'; import { useRouter } from 'next/navigation'; +import Background from '@/components/portal/Background'; +import { LiquidGlass } from '@/components/portal/LiquidGlass'; export default function Home() { const { data: session, status } = useSession(); diff --git a/sites/mainweb/components/portal/judge/ZoneMapModal.tsx b/sites/mainweb/components/portal/judge/ZoneMapModal.tsx new file mode 100644 index 0000000..22f9eb8 --- /dev/null +++ b/sites/mainweb/components/portal/judge/ZoneMapModal.tsx @@ -0,0 +1,141 @@ +'use client'; + +import { useState } from 'react'; +import Image from 'next/image'; + +const ZONE_MAPS = [ + { id: 1, name: 'Zone A', location: 'Klaus Atrium', src: '/images/zones/1.png' }, + { id: 2, name: 'Zone B', location: 'Klaus 1456', src: '/images/zones/2.png' }, + { id: 3, name: 'Zone C', location: 'Klaus 1447', src: '/images/zones/3.png' }, + { id: 4, name: 'Zone D', location: 'Klaus 1116', src: '/images/zones/4.png' }, + { id: 5, name: 'Zone E', location: 'Klaus 1443', src: '/images/zones/5.png' }, + { id: 6, name: 'Zone F', location: 'Klaus 2456', src: '/images/zones/6.png' }, +]; + +interface ZoneMapModalProps { + isOpen: boolean; + onClose: () => void; +} + +export function ZoneMapModal({ isOpen, onClose }: ZoneMapModalProps) { + const [activeIndex, setActiveIndex] = useState(0); + + if (!isOpen) return null; + + const activeMap = ZONE_MAPS[activeIndex]; + if (!activeMap) return null; + + return ( +
+ {/* Header */} +
e.stopPropagation()} + > +
+

Venue Maps

+

{activeMap.name} — {activeMap.location}

+
+ +
+ + {/* Zone Tabs */} +
e.stopPropagation()} + style={{ scrollbarWidth: 'none', msOverflowStyle: 'none' }} + > + {ZONE_MAPS.map((zone, idx) => ( + + ))} +
+ + {/* Map Image */} +
e.stopPropagation()} + > +
+ {`${activeMap.name} +
+
+ + {/* Nav Arrows */} +
e.stopPropagation()} + > + +
+ {ZONE_MAPS.map((_, idx) => ( +
+ ))} +
+ +
+
+ ); +} + +/** Button to trigger the zone map modal */ +export function ViewMapButton({ onClick, className = '' }: { onClick: () => void; className?: string }) { + return ( + + ); +} diff --git a/sites/mainweb/public/images/zones/1.png b/sites/mainweb/public/images/zones/1.png new file mode 100644 index 0000000..87c995e Binary files /dev/null and b/sites/mainweb/public/images/zones/1.png differ diff --git a/sites/mainweb/public/images/zones/2.png b/sites/mainweb/public/images/zones/2.png new file mode 100644 index 0000000..12fc0a8 Binary files /dev/null and b/sites/mainweb/public/images/zones/2.png differ diff --git a/sites/mainweb/public/images/zones/3.png b/sites/mainweb/public/images/zones/3.png new file mode 100644 index 0000000..9d30f5e Binary files /dev/null and b/sites/mainweb/public/images/zones/3.png differ diff --git a/sites/mainweb/public/images/zones/4.png b/sites/mainweb/public/images/zones/4.png new file mode 100644 index 0000000..29189e8 Binary files /dev/null and b/sites/mainweb/public/images/zones/4.png differ diff --git a/sites/mainweb/public/images/zones/5.png b/sites/mainweb/public/images/zones/5.png new file mode 100644 index 0000000..646f23d Binary files /dev/null and b/sites/mainweb/public/images/zones/5.png differ diff --git a/sites/mainweb/public/images/zones/6.png b/sites/mainweb/public/images/zones/6.png new file mode 100644 index 0000000..f668890 Binary files /dev/null and b/sites/mainweb/public/images/zones/6.png differ