- {/* Main content */}
-
-
- {/* Transparent Triangle overlay in bottom right corner - hidden on mobile */}
-
-
- {/* Triangle in bottom right corner - hidden on mobile */}
-
-
- {/* Top rectangle - hidden on mobile */}
-
-
-
-
- {/* Bottom rectangle - hidden on mobile */}
-
-
-
-
- {/* Left side rectangle - hidden on mobile */}
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-}
diff --git a/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx
index 1db3589fd..67e4e4ed9 100644
--- a/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx
+++ b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx
@@ -1,53 +1,67 @@
"use client";
import { useEffect, useState } from "react";
-import Image from "next/image";
import Link from "next/link";
import { BookOpen, CircleCheckBig, Trophy } from "lucide-react";
-import {
- Dialog,
- DialogContent,
- DialogHeader,
- DialogTitle,
- DialogTrigger,
-} from "@forge/ui/dialog";
+import type { SelectHackathon } from "@forge/db/schemas/knight-hacks";
+import { Dialog, DialogTrigger } from "@forge/ui/dialog";
import type { api as serverCall } from "~/trpc/server";
import { HackerQRCodePopup } from "~/app/_components/dashboard/hacker-dashboard/hacker-qr-button";
import { DownloadQRPass } from "~/app/_components/dashboard/member-dashboard/download-qr-pass";
import { HACKER_STATUS_MAP } from "~/consts";
import { api } from "~/trpc/react";
-import AlertButton from "./issue-dialog";
-import { PointLeaderboard } from "./point-leaderboard";
+import { BaseHackathonIssueButton } from "./issue-dialog";
type StatusKey = keyof typeof HACKER_STATUS_MAP | null | undefined;
+type HackerProfile = Awaited<
+ ReturnType<(typeof serverCall.hackerQuery)["getHacker"]>
+>;
-export function HackathonData({
+export function BaseHackathonQRCodeButton() {
+ return ;
+}
+
+export function BaseHackathonWalletButton({
+ profile,
+}: {
+ profile: HackerProfile;
+}) {
+ return ;
+}
+
+export function BaseHackathonGuideButton({ href }: { href: string }) {
+ return (
+
+
+ Hacker's Guide
+
+ );
+}
+
+export function BaseHackathonData({
data,
- teamColor,
- team,
- classPfp,
+ guideHref,
+ hackathon,
}: {
- data: Awaited>;
- teamColor: string;
- team: string;
- classPfp: string;
+ data: HackerProfile;
+ guideHref: string;
+ hackathon: SelectHackathon;
}) {
const [hackerStatus, setHackerStatus] = useState("");
const [hackerStatusColor, setHackerStatusColor] = useState("");
const { data: hacker, isError } = api.hackerQuery.getHacker.useQuery(
- {},
+ { hackathonName: hackathon.name },
{
initialData: data,
},
);
- const { data: hackathonData } = api.hackathon.getHackathon.useQuery({
- hackathonName: undefined,
- });
-
function getStatusName(status: StatusKey) {
if (!status) return "";
return HACKER_STATUS_MAP[status].name;
@@ -89,32 +103,10 @@ export function HackathonData({
)}
-
- You have not applied to be a Knight Hacks member or hacker for an
- upcoming Hackathon yet. Please fill out an application below to get
- started!
+ You have not applied to be a Knight Hacks member yet. Please fill out
+ an application below to get started!