diff --git a/apps/2025/next.config.js b/apps/2025/next.config.js index 18f5d4a2..2b7b88d2 100644 --- a/apps/2025/next.config.js +++ b/apps/2025/next.config.js @@ -1,5 +1,5 @@ import { fileURLToPath } from "url"; -import createJiti from 'jiti'; +import createJiti from "jiti"; // Import env files to validate at build time. Use jiti so we can load .ts files in here. await createJiti(fileURLToPath(import.meta.url)).import("./src/env", {}); diff --git a/apps/2025/src/app/_components/about/about.tsx b/apps/2025/src/app/_components/about/about.tsx index 17c48e44..113ce5c9 100644 --- a/apps/2025/src/app/_components/about/about.tsx +++ b/apps/2025/src/app/_components/about/about.tsx @@ -1,6 +1,6 @@ "use client"; -import useScrollAnimation from "../hooks/useScrollAnimation"; +import useScrollAnimation from "~/hooks/useScrollAnimation"; import AboutComicSVG from "./about-comic-svg"; import AboutText from "./about-text"; @@ -11,7 +11,7 @@ export default function About() { return (

About Knight Hacks

diff --git a/apps/2025/src/app/_components/faq/faq.tsx b/apps/2025/src/app/_components/faq/faq.tsx index aeebb5ac..0fadcba6 100644 --- a/apps/2025/src/app/_components/faq/faq.tsx +++ b/apps/2025/src/app/_components/faq/faq.tsx @@ -5,7 +5,7 @@ import { ChevronDownIcon } from "@radix-ui/react-icons"; import Image from "next/image"; import Link from "next/link"; import { useState } from "react"; -import useStaggeredAnimation from "../hooks/useStaggeredAnimation"; +import useStaggeredAnimation from "~/hooks/useStaggeredAnimation"; /* Radix aliases ----------------------------------------------------------- */ const Accordion = AccordionPrimitive.Root; @@ -375,7 +375,7 @@ export default function Faq() {
{/* Fixed height container to prevent background shifting */} -
+
{filteredFaqData.map((faq) => (
diff --git a/apps/2025/src/app/_components/partners/partnerPosters.tsx b/apps/2025/src/app/_components/partners/partnerPosters.tsx index 73634c8b..787426b9 100644 --- a/apps/2025/src/app/_components/partners/partnerPosters.tsx +++ b/apps/2025/src/app/_components/partners/partnerPosters.tsx @@ -94,7 +94,7 @@ const partners: Partner[] = [ }, ]; -import useStaggeredAnimation from "../hooks/useStaggeredAnimation"; +import useStaggeredAnimation from "~/hooks/useStaggeredAnimation"; export default function PartnerPosters() { const partnersGridRef = useStaggeredAnimation(80); @@ -121,7 +121,7 @@ export default function PartnerPosters() { {/* Main card */}
{/* subtle dot pattern */} -
+
{/* logo container */}
diff --git a/apps/2025/src/app/_components/partners/partners.tsx b/apps/2025/src/app/_components/partners/partners.tsx index 9e3976f4..107741a6 100644 --- a/apps/2025/src/app/_components/partners/partners.tsx +++ b/apps/2025/src/app/_components/partners/partners.tsx @@ -1,6 +1,6 @@ "use client"; -import useStaggeredAnimation from "../hooks/useStaggeredAnimation"; +import useStaggeredAnimation from "~/hooks/useStaggeredAnimation"; import PartnerPosters from "./partnerPosters"; import PartnersTitle from "./partnersTitle"; @@ -12,7 +12,7 @@ const Partners = () => {
diff --git a/apps/2025/src/app/_components/sponsors/sponsorPosters.tsx b/apps/2025/src/app/_components/sponsors/sponsorPosters.tsx index e74facb2..10c88238 100644 --- a/apps/2025/src/app/_components/sponsors/sponsorPosters.tsx +++ b/apps/2025/src/app/_components/sponsors/sponsorPosters.tsx @@ -37,7 +37,7 @@ import Image from "next/image"; import Link from "next/link"; -import useStaggeredAnimation from "../hooks/useStaggeredAnimation"; +import useStaggeredAnimation from "~/hooks/useStaggeredAnimation"; type Tier = "Platinum" | "Gold" | "Silver" | "Bronze"; @@ -262,7 +262,7 @@ export default function SponsorPosters() { className={`relative flex h-full w-full items-center justify-center rounded-none bg-[#F7F0C6] outline-2 -outline-offset-3 outline-black transition-transform duration-100 group-hover:-translate-x-1 group-hover:-translate-y-1 ${tierConfig.hover}`} > {/* subtle dot pattern */} -
+
{/* logo container */}
diff --git a/apps/2025/src/app/_components/sponsors/sponsors.tsx b/apps/2025/src/app/_components/sponsors/sponsors.tsx index dd5fb977..0a4cd7fb 100644 --- a/apps/2025/src/app/_components/sponsors/sponsors.tsx +++ b/apps/2025/src/app/_components/sponsors/sponsors.tsx @@ -1,6 +1,6 @@ "use client"; -import useStaggeredAnimation from "../hooks/useStaggeredAnimation"; +import useStaggeredAnimation from "~/hooks/useStaggeredAnimation"; import SponsorPosters from "./sponsorPosters"; import SponsorsTitle from "./sponsorsTitle"; @@ -12,7 +12,7 @@ const Sponsors = () => {
diff --git a/apps/2025/src/app/_components/tracks/tracks.tsx b/apps/2025/src/app/_components/tracks/tracks.tsx index 932b2146..a03fe81b 100644 --- a/apps/2025/src/app/_components/tracks/tracks.tsx +++ b/apps/2025/src/app/_components/tracks/tracks.tsx @@ -1,6 +1,6 @@ "use client"; -import useScrollAnimation from "../hooks/useScrollAnimation"; +import useScrollAnimation from "~/hooks/useScrollAnimation"; import TextBox from "../textbox"; import Comic from "./comic"; @@ -11,7 +11,7 @@ export default function Tracks() {
diff --git a/apps/2025/src/app/_components/hooks/useScrollAnimation.tsx b/apps/2025/src/hooks/useScrollAnimation.tsx similarity index 100% rename from apps/2025/src/app/_components/hooks/useScrollAnimation.tsx rename to apps/2025/src/hooks/useScrollAnimation.tsx diff --git a/apps/2025/src/app/_components/hooks/useStaggeredAnimation.tsx b/apps/2025/src/hooks/useStaggeredAnimation.tsx similarity index 100% rename from apps/2025/src/app/_components/hooks/useStaggeredAnimation.tsx rename to apps/2025/src/hooks/useStaggeredAnimation.tsx diff --git a/apps/2025/src/styles/globals.css b/apps/2025/src/styles/globals.css index c0f43990..c28b29a6 100644 --- a/apps/2025/src/styles/globals.css +++ b/apps/2025/src/styles/globals.css @@ -1,7 +1,8 @@ @import "tailwindcss"; @theme { - --font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif, + --font-sans: + var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } diff --git a/apps/blade/package.json b/apps/blade/package.json index 0aa5cfe3..0b9eec8e 100644 --- a/apps/blade/package.json +++ b/apps/blade/package.json @@ -61,6 +61,7 @@ "@forge/prettier-config": "workspace:*", "@forge/tailwind-config": "workspace:*", "@forge/tsconfig": "workspace:*", + "@types/canvas-confetti": "^1.9.0", "@types/node": "^20.16.11", "@types/react": "catalog:react18", "@types/react-dom": "catalog:react18", diff --git a/apps/blade/src/app/admin/banquet-raffle/components/raffle-draw.tsx b/apps/blade/src/app/_components/admin/banquet-raffle/raffle-draw.tsx similarity index 99% rename from apps/blade/src/app/admin/banquet-raffle/components/raffle-draw.tsx rename to apps/blade/src/app/_components/admin/banquet-raffle/raffle-draw.tsx index 18ce06c7..3179ddda 100644 --- a/apps/blade/src/app/admin/banquet-raffle/components/raffle-draw.tsx +++ b/apps/blade/src/app/_components/admin/banquet-raffle/raffle-draw.tsx @@ -4,6 +4,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unnecessary-condition */ /* eslint-disable @typescript-eslint/no-empty-function */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ "use client"; import { useEffect, useRef, useState } from "react"; @@ -236,7 +237,7 @@ export default function RaffleDraw({ entries }: { entries: RaffleEntry[] }) { // Confetti if (containerRef.current) { const rect = containerRef.current.getBoundingClientRect(); - confetti({ + void confetti({ particleCount: 150, spread: 90, origin: { diff --git a/apps/blade/src/app/admin/_components/AgeBarChart.tsx b/apps/blade/src/app/_components/admin/charts/AgeBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/AgeBarChart.tsx rename to apps/blade/src/app/_components/admin/charts/AgeBarChart.tsx diff --git a/apps/blade/src/app/admin/_components/CustomPagination.tsx b/apps/blade/src/app/_components/admin/charts/CustomPagination.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/CustomPagination.tsx rename to apps/blade/src/app/_components/admin/charts/CustomPagination.tsx diff --git a/apps/blade/src/app/admin/_components/CustomPaginationSelect.tsx b/apps/blade/src/app/_components/admin/charts/CustomPaginationSelect.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/CustomPaginationSelect.tsx rename to apps/blade/src/app/_components/admin/charts/CustomPaginationSelect.tsx diff --git a/apps/blade/src/app/admin/_components/FirstTimeHackersPie.tsx b/apps/blade/src/app/_components/admin/charts/FirstTimeHackersPie.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/FirstTimeHackersPie.tsx rename to apps/blade/src/app/_components/admin/charts/FirstTimeHackersPie.tsx diff --git a/apps/blade/src/app/admin/_components/FoodAllergiesBarChart.tsx b/apps/blade/src/app/_components/admin/charts/FoodAllergiesBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/FoodAllergiesBarChart.tsx rename to apps/blade/src/app/_components/admin/charts/FoodAllergiesBarChart.tsx diff --git a/apps/blade/src/app/admin/_components/GenderPie.tsx b/apps/blade/src/app/_components/admin/charts/GenderPie.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/GenderPie.tsx rename to apps/blade/src/app/_components/admin/charts/GenderPie.tsx diff --git a/apps/blade/src/app/admin/_components/MajorBarChart.tsx b/apps/blade/src/app/_components/admin/charts/MajorBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/MajorBarChart.tsx rename to apps/blade/src/app/_components/admin/charts/MajorBarChart.tsx diff --git a/apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx b/apps/blade/src/app/_components/admin/charts/RaceOrEthnicityPie.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx rename to apps/blade/src/app/_components/admin/charts/RaceOrEthnicityPie.tsx diff --git a/apps/blade/src/app/admin/_components/SchoolBarChart.tsx b/apps/blade/src/app/_components/admin/charts/SchoolBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/SchoolBarChart.tsx rename to apps/blade/src/app/_components/admin/charts/SchoolBarChart.tsx diff --git a/apps/blade/src/app/admin/_components/SchoolYearPie.tsx b/apps/blade/src/app/_components/admin/charts/SchoolYearPie.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/SchoolYearPie.tsx rename to apps/blade/src/app/_components/admin/charts/SchoolYearPie.tsx diff --git a/apps/blade/src/app/admin/club/check-in/_components/check-in-page.tsx b/apps/blade/src/app/_components/admin/club/check-in/check-in-page.tsx similarity index 93% rename from apps/blade/src/app/admin/club/check-in/_components/check-in-page.tsx rename to apps/blade/src/app/_components/admin/club/check-in/check-in-page.tsx index e27342a3..ad8e46fd 100644 --- a/apps/blade/src/app/admin/club/check-in/_components/check-in-page.tsx +++ b/apps/blade/src/app/_components/admin/club/check-in/check-in-page.tsx @@ -11,8 +11,8 @@ import { } from "@forge/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; -import ScannerPopUp from "../../../club/members/_components/scanner"; -import { ManualEntryForm } from "./manual-entry-form"; +import { ManualEntryForm } from "~/app/_components/admin/club/check-in/manual-entry-form"; +import ScannerPopUp from "~/app/_components/shared/scanner"; export function CheckInPage() { return ( diff --git a/apps/blade/src/app/admin/club/check-in/_components/manual-entry-form.tsx b/apps/blade/src/app/_components/admin/club/check-in/manual-entry-form.tsx similarity index 100% rename from apps/blade/src/app/admin/club/check-in/_components/manual-entry-form.tsx rename to apps/blade/src/app/_components/admin/club/check-in/manual-entry-form.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx b/apps/blade/src/app/_components/admin/club/data/EventDemographics.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx rename to apps/blade/src/app/_components/admin/club/data/EventDemographics.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/HackerEventDemographics.tsx b/apps/blade/src/app/_components/admin/club/data/HackerEventDemographics.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/HackerEventDemographics.tsx rename to apps/blade/src/app/_components/admin/club/data/HackerEventDemographics.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/MemberDemographics.tsx b/apps/blade/src/app/_components/admin/club/data/MemberDemographics.tsx similarity index 84% rename from apps/blade/src/app/admin/club/data/_components/MemberDemographics.tsx rename to apps/blade/src/app/_components/admin/club/data/MemberDemographics.tsx index 1ffd922d..8fda1163 100644 --- a/apps/blade/src/app/admin/club/data/_components/MemberDemographics.tsx +++ b/apps/blade/src/app/_components/admin/club/data/MemberDemographics.tsx @@ -1,10 +1,10 @@ "use client"; +import AgeBarChart from "~/app/_components/admin/charts/AgeBarChart"; +import MajorBarChart from "~/app/_components/admin/charts/MajorBarChart"; +import RaceOrEthnicityPie from "~/app/_components/admin/charts/RaceOrEthnicityPie"; +import SchoolYearPie from "~/app/_components/admin/charts/SchoolYearPie"; import { api } from "~/trpc/react"; -import AgeBarChart from "../../../_components/AgeBarChart"; -import MajorBarChart from "../../../_components/MajorBarChart"; -import RaceOrEthnicityPie from "../../../_components/RaceOrEthnicityPie"; -import SchoolYearPie from "../../../_components/SchoolYearPie"; import DuesOverTimeBarChart from "./member-data/DuesOverTimeBarChart"; import EngagementInfo from "./member-data/EngagementInfo"; import GenderPie from "./member-data/GenderPie"; diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/AttendancesBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/AttendancesBarChart.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesMobile.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/AttendancesMobile.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/AttendancesMobile.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/AttendancesMobile.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/HowFound.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/HowFound.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/HowFound.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/HowFound.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/PopularityRanking.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/PopularityRanking.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/RatingRanking.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/RatingRanking.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/RatingRanking.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/RatingRanking.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/TypePie.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/TypePie.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx b/apps/blade/src/app/_components/admin/club/data/event-data/WeekdayPopularityRadar.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx rename to apps/blade/src/app/_components/admin/club/data/event-data/WeekdayPopularityRadar.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/DuesOverTimeBarChart.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/DuesOverTimeBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/DuesOverTimeBarChart.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/DuesOverTimeBarChart.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/EngagementInfo.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/EngagementInfo.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/EngagementInfo.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/EngagementInfo.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/GenderPie.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/GenderPie.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/GenderPie.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/GenderPie.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/SchoolBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/SchoolBarChart.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/ShirtSizePie.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/ShirtSizePie.tsx diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx b/apps/blade/src/app/_components/admin/club/data/member-data/YearOfStudyPie.tsx similarity index 100% rename from apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx rename to apps/blade/src/app/_components/admin/club/data/member-data/YearOfStudyPie.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/create-event.tsx b/apps/blade/src/app/_components/admin/club/events/create-event.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/create-event.tsx rename to apps/blade/src/app/_components/admin/club/events/create-event.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/delete-event.tsx b/apps/blade/src/app/_components/admin/club/events/delete-event.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/delete-event.tsx rename to apps/blade/src/app/_components/admin/club/events/delete-event.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/event-details.tsx b/apps/blade/src/app/_components/admin/club/events/event-details.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/event-details.tsx rename to apps/blade/src/app/_components/admin/club/events/event-details.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/events-table.tsx b/apps/blade/src/app/_components/admin/club/events/events-table.tsx similarity index 99% rename from apps/blade/src/app/admin/club/events/_components/events-table.tsx rename to apps/blade/src/app/_components/admin/club/events/events-table.tsx index 076b3982..b8df2f7a 100644 --- a/apps/blade/src/app/admin/club/events/_components/events-table.tsx +++ b/apps/blade/src/app/_components/admin/club/events/events-table.tsx @@ -16,7 +16,7 @@ import { TableRow, } from "@forge/ui/table"; -import SortButton from "~/app/admin/_components/SortButton"; +import SortButton from "~/app/_components/shared/SortButton"; import { getFormattedDate } from "~/lib/utils"; import { api } from "~/trpc/react"; import { CreateEventButton } from "./create-event"; diff --git a/apps/blade/src/app/admin/club/events/_components/update-event.tsx b/apps/blade/src/app/_components/admin/club/events/update-event.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/update-event.tsx rename to apps/blade/src/app/_components/admin/club/events/update-event.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/view-attendance-button.tsx b/apps/blade/src/app/_components/admin/club/events/view-attendance-button.tsx similarity index 94% rename from apps/blade/src/app/admin/club/events/_components/view-attendance-button.tsx rename to apps/blade/src/app/_components/admin/club/events/view-attendance-button.tsx index a0641534..a4fa02a9 100644 --- a/apps/blade/src/app/admin/club/events/_components/view-attendance-button.tsx +++ b/apps/blade/src/app/_components/admin/club/events/view-attendance-button.tsx @@ -12,9 +12,9 @@ import { DialogTrigger, } from "@forge/ui/dialog"; -import HackerProfileButton from "~/app/admin/hackathon/hackers/_components/hacker-profile"; +import MemberProfileButton from "~/app/_components/admin/club/members/member-profile"; +import HackerProfileButton from "~/app/_components/admin/hackathon/hackers/hacker-profile"; import { api } from "~/trpc/react"; -import MemberProfileButton from "../../members/_components/member-profile"; export function ViewAttendanceButton({ event, diff --git a/apps/blade/src/app/admin/club/events/_components/view-feedback-button.tsx b/apps/blade/src/app/_components/admin/club/events/view-feedback-button.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/view-feedback-button.tsx rename to apps/blade/src/app/_components/admin/club/events/view-feedback-button.tsx diff --git a/apps/blade/src/app/admin/club/events/_components/view-rating-button.tsx b/apps/blade/src/app/_components/admin/club/events/view-rating-button.tsx similarity index 100% rename from apps/blade/src/app/admin/club/events/_components/view-rating-button.tsx rename to apps/blade/src/app/_components/admin/club/events/view-rating-button.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/clear-dues.tsx b/apps/blade/src/app/_components/admin/club/members/clear-dues.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/clear-dues.tsx rename to apps/blade/src/app/_components/admin/club/members/clear-dues.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/delete-member.tsx b/apps/blade/src/app/_components/admin/club/members/delete-member.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/delete-member.tsx rename to apps/blade/src/app/_components/admin/club/members/delete-member.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/dues-toggle.tsx b/apps/blade/src/app/_components/admin/club/members/dues-toggle.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/dues-toggle.tsx rename to apps/blade/src/app/_components/admin/club/members/dues-toggle.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/final-dues-dialog.tsx b/apps/blade/src/app/_components/admin/club/members/final-dues-dialog.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/final-dues-dialog.tsx rename to apps/blade/src/app/_components/admin/club/members/final-dues-dialog.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/member-profile.tsx b/apps/blade/src/app/_components/admin/club/members/member-profile.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/member-profile.tsx rename to apps/blade/src/app/_components/admin/club/members/member-profile.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/members-table.tsx b/apps/blade/src/app/_components/admin/club/members/members-table.tsx similarity index 97% rename from apps/blade/src/app/admin/club/members/_components/members-table.tsx rename to apps/blade/src/app/_components/admin/club/members/members-table.tsx index 81345084..ee2df3ce 100644 --- a/apps/blade/src/app/admin/club/members/_components/members-table.tsx +++ b/apps/blade/src/app/_components/admin/club/members/members-table.tsx @@ -17,9 +17,9 @@ import { TableRow, } from "@forge/ui/table"; -import CustomPagination from "~/app/admin/_components/CustomPagination"; -import CustomPaginationSelect from "~/app/admin/_components/CustomPaginationSelect"; -import SortButton from "~/app/admin/_components/SortButton"; +import CustomPagination from "~/app/_components/admin/charts/CustomPagination"; +import CustomPaginationSelect from "~/app/_components/admin/charts/CustomPaginationSelect"; +import SortButton from "~/app/_components/shared/SortButton"; import { useDebounce } from "~/app/admin/_hooks/debounce"; import { api } from "~/trpc/react"; import ClearDuesButton from "./clear-dues"; diff --git a/apps/blade/src/app/admin/club/members/_components/scanner.tsx b/apps/blade/src/app/_components/admin/club/members/scanner.tsx similarity index 99% rename from apps/blade/src/app/admin/club/members/_components/scanner.tsx rename to apps/blade/src/app/_components/admin/club/members/scanner.tsx index 24cfc9c7..82f6ff22 100644 --- a/apps/blade/src/app/admin/club/members/_components/scanner.tsx +++ b/apps/blade/src/app/_components/admin/club/members/scanner.tsx @@ -27,9 +27,9 @@ import { import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; import { toast } from "@forge/ui/toast"; +import ToggleButton from "~/app/_components/admin/hackathon/hackers/toggle-button"; import { getClassTeam } from "~/lib/utils"; import { api } from "~/trpc/react"; -import ToggleButton from "../../../../admin/hackathon/hackers/_components/toggle-button"; const ScannerPopUp = ({ eventType }: { eventType: "Member" | "Hacker" }) => { const { data: events } = api.event.getEvents.useQuery(); diff --git a/apps/blade/src/app/admin/club/members/_components/second-dues-dialog.tsx b/apps/blade/src/app/_components/admin/club/members/second-dues-dialog.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/second-dues-dialog.tsx rename to apps/blade/src/app/_components/admin/club/members/second-dues-dialog.tsx diff --git a/apps/blade/src/app/admin/club/members/_components/update-member.tsx b/apps/blade/src/app/_components/admin/club/members/update-member.tsx similarity index 100% rename from apps/blade/src/app/admin/club/members/_components/update-member.tsx rename to apps/blade/src/app/_components/admin/club/members/update-member.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/client.tsx b/apps/blade/src/app/_components/admin/forms/editor/client.tsx similarity index 99% rename from apps/blade/src/app/admin/forms/[slug]/client.tsx rename to apps/blade/src/app/_components/admin/forms/editor/client.tsx index 86a21615..ab8625f5 100644 --- a/apps/blade/src/app/admin/forms/[slug]/client.tsx +++ b/apps/blade/src/app/_components/admin/forms/editor/client.tsx @@ -45,8 +45,8 @@ import { Textarea } from "@forge/ui/textarea"; import type { MatchingType } from "./linker"; import type { ProcedureMeta } from "~/lib/utils"; -import { InstructionEditCard } from "~/components/admin/forms/instruction-edit-card"; -import { QuestionEditCard } from "~/components/admin/forms/question-edit-card"; +import { InstructionEditCard } from "~/app/_components/forms/shared/instruction-edit-card"; +import { QuestionEditCard } from "~/app/_components/forms/shared/question-edit-card"; import { api } from "~/trpc/react"; import { ConnectionViewer } from "./con-viewer"; import ListMatcher from "./linker"; diff --git a/apps/blade/src/app/admin/forms/[slug]/con-viewer.tsx b/apps/blade/src/app/_components/admin/forms/editor/con-viewer.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/con-viewer.tsx rename to apps/blade/src/app/_components/admin/forms/editor/con-viewer.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/linker.tsx b/apps/blade/src/app/_components/admin/forms/editor/linker.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/linker.tsx rename to apps/blade/src/app/_components/admin/forms/editor/linker.tsx diff --git a/apps/blade/src/app/_components/admin/forms/homepage.tsx b/apps/blade/src/app/_components/admin/forms/homepage.tsx index 067c2edb..c70ac359 100644 --- a/apps/blade/src/app/_components/admin/forms/homepage.tsx +++ b/apps/blade/src/app/_components/admin/forms/homepage.tsx @@ -5,9 +5,9 @@ import { useRouter } from "next/navigation"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; -import { CreateFormCard } from "~/components/forms/create-form-card"; -import { FormCard } from "~/components/forms/form-card"; -import { SectionManagerDialog } from "~/components/forms/section-manager-dialog"; +import { CreateFormCard } from "~/app/_components/forms/shared/create-form-card"; +import { FormCard } from "~/app/_components/forms/shared/form-card"; +import { SectionManagerDialog } from "~/app/_components/forms/shared/section-manager-dialog"; import { api } from "~/trpc/react"; export default function FormsClient() { diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/AllResponsesView.tsx b/apps/blade/src/app/_components/admin/forms/responses/AllResponsesView.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/AllResponsesView.tsx rename to apps/blade/src/app/_components/admin/forms/responses/AllResponsesView.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/FileUploadResponsesTable.tsx b/apps/blade/src/app/_components/admin/forms/responses/FileUploadResponsesTable.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/FileUploadResponsesTable.tsx rename to apps/blade/src/app/_components/admin/forms/responses/FileUploadResponsesTable.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/PerUserResponsesView.tsx b/apps/blade/src/app/_components/admin/forms/responses/PerUserResponsesView.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/PerUserResponsesView.tsx rename to apps/blade/src/app/_components/admin/forms/responses/PerUserResponsesView.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponseBarChart.tsx b/apps/blade/src/app/_components/admin/forms/responses/ResponseBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponseBarChart.tsx rename to apps/blade/src/app/_components/admin/forms/responses/ResponseBarChart.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponseHorizontalBarChart.tsx b/apps/blade/src/app/_components/admin/forms/responses/ResponseHorizontalBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponseHorizontalBarChart.tsx rename to apps/blade/src/app/_components/admin/forms/responses/ResponseHorizontalBarChart.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponsePieChart.tsx b/apps/blade/src/app/_components/admin/forms/responses/ResponsePieChart.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponsePieChart.tsx rename to apps/blade/src/app/_components/admin/forms/responses/ResponsePieChart.tsx diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponsesTable.tsx b/apps/blade/src/app/_components/admin/forms/responses/ResponsesTable.tsx similarity index 100% rename from apps/blade/src/app/admin/forms/[slug]/responses/_components/ResponsesTable.tsx rename to apps/blade/src/app/_components/admin/forms/responses/ResponsesTable.tsx diff --git a/apps/blade/src/app/admin/hackathon/check-in/_components/check-in-page.tsx b/apps/blade/src/app/_components/admin/hackathon/check-in/check-in-page.tsx similarity index 93% rename from apps/blade/src/app/admin/hackathon/check-in/_components/check-in-page.tsx rename to apps/blade/src/app/_components/admin/hackathon/check-in/check-in-page.tsx index c61c6cdc..c74aa3a9 100644 --- a/apps/blade/src/app/admin/hackathon/check-in/_components/check-in-page.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/check-in/check-in-page.tsx @@ -11,8 +11,8 @@ import { } from "@forge/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; -import ScannerPopUp from "../../../club/members/_components/scanner"; -import { ManualEntryForm } from "./manual-entry-form"; +import { ManualEntryForm } from "~/app/_components/admin/hackathon/check-in/manual-entry-form"; +import ScannerPopUp from "~/app/_components/shared/scanner"; export function CheckInPage() { return ( diff --git a/apps/blade/src/app/admin/hackathon/check-in/_components/manual-entry-form.tsx b/apps/blade/src/app/_components/admin/hackathon/check-in/manual-entry-form.tsx similarity index 99% rename from apps/blade/src/app/admin/hackathon/check-in/_components/manual-entry-form.tsx rename to apps/blade/src/app/_components/admin/hackathon/check-in/manual-entry-form.tsx index bbdc53e3..34b08f14 100644 --- a/apps/blade/src/app/admin/hackathon/check-in/_components/manual-entry-form.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/check-in/manual-entry-form.tsx @@ -27,8 +27,8 @@ import { Popover, PopoverContent, PopoverTrigger } from "@forge/ui/popover"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; import { toast } from "@forge/ui/toast"; +import ToggleButton from "~/app/_components/admin/hackathon/hackers/toggle-button"; import { api } from "~/trpc/react"; -import ToggleButton from "../../../hackathon/hackers/_components/toggle-button"; export function ManualEntryForm() { const { data: events } = api.event.getEvents.useQuery(); diff --git a/apps/blade/src/app/admin/hackathon/control-room/_components/control-room-client.tsx b/apps/blade/src/app/_components/admin/hackathon/control-room/control-room-client.tsx similarity index 98% rename from apps/blade/src/app/admin/hackathon/control-room/_components/control-room-client.tsx rename to apps/blade/src/app/_components/admin/hackathon/control-room/control-room-client.tsx index 35b8460b..16cfaa83 100644 --- a/apps/blade/src/app/admin/hackathon/control-room/_components/control-room-client.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/control-room/control-room-client.tsx @@ -6,7 +6,7 @@ import { Alert, AlertDescription } from "@forge/ui/alert"; import { Button } from "@forge/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; -import CsvImporter from "~/app/_components/csv-importer"; +import CsvImporter from "~/app/_components/shared/csv-importer"; import { api } from "~/trpc/react"; export default function ControlRoomClient() { diff --git a/apps/blade/src/app/admin/hackathon/data/_components/ApplicationsOverTimeBarChart.tsx b/apps/blade/src/app/_components/admin/hackathon/data/ApplicationsOverTimeBarChart.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/data/_components/ApplicationsOverTimeBarChart.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/ApplicationsOverTimeBarChart.tsx diff --git a/apps/blade/src/app/admin/hackathon/data/_components/FirstTimeInfo.tsx b/apps/blade/src/app/_components/admin/hackathon/data/FirstTimeInfo.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/data/_components/FirstTimeInfo.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/FirstTimeInfo.tsx diff --git a/apps/blade/src/app/admin/hackathon/data/_components/HackathonDataContent.tsx b/apps/blade/src/app/_components/admin/hackathon/data/HackathonDataContent.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/data/_components/HackathonDataContent.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/HackathonDataContent.tsx diff --git a/apps/blade/src/app/admin/hackathon/data/_components/HackerCharts.tsx b/apps/blade/src/app/_components/admin/hackathon/data/HackerCharts.tsx similarity index 86% rename from apps/blade/src/app/admin/hackathon/data/_components/HackerCharts.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/HackerCharts.tsx index 1a3adf25..f22c45ae 100644 --- a/apps/blade/src/app/admin/hackathon/data/_components/HackerCharts.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/data/HackerCharts.tsx @@ -3,14 +3,14 @@ import { useState } from "react"; import { FORMS } from "@forge/consts"; import { ToggleGroup, ToggleGroupItem } from "@forge/ui/toggle-group"; -import AgeBarChart from "~/app/admin/_components/AgeBarChart"; -import FirstTimeHackersPie from "~/app/admin/_components/FirstTimeHackersPie"; -import FoodAllergiesBarChart from "~/app/admin/_components/FoodAllergiesBarChart"; -import GenderPie from "~/app/admin/_components/GenderPie"; -import MajorBarChart from "~/app/admin/_components/MajorBarChart"; -import RaceOrEthnicityPie from "~/app/admin/_components/RaceOrEthnicityPie"; -import SchoolBarChart from "~/app/admin/_components/SchoolBarChart"; -import SchoolYearPie from "~/app/admin/_components/SchoolYearPie"; +import AgeBarChart from "~/app/_components/admin/charts/AgeBarChart"; +import FirstTimeHackersPie from "~/app/_components/admin/charts/FirstTimeHackersPie"; +import FoodAllergiesBarChart from "~/app/_components/admin/charts/FoodAllergiesBarChart"; +import GenderPie from "~/app/_components/admin/charts/GenderPie"; +import MajorBarChart from "~/app/_components/admin/charts/MajorBarChart"; +import RaceOrEthnicityPie from "~/app/_components/admin/charts/RaceOrEthnicityPie"; +import SchoolBarChart from "~/app/_components/admin/charts/SchoolBarChart"; +import SchoolYearPie from "~/app/_components/admin/charts/SchoolYearPie"; import { api } from "~/trpc/react"; import ApplicationsOverTimeBarChart from "./ApplicationsOverTimeBarChart"; import FirstTimeInfo from "./FirstTimeInfo"; diff --git a/apps/blade/src/app/admin/hackathon/data/_components/LevelOfStudyPie.tsx b/apps/blade/src/app/_components/admin/hackathon/data/LevelOfStudyPie.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/data/_components/LevelOfStudyPie.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/LevelOfStudyPie.tsx diff --git a/apps/blade/src/app/admin/hackathon/data/_components/ShirtSizePie.tsx b/apps/blade/src/app/_components/admin/hackathon/data/ShirtSizePie.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/data/_components/ShirtSizePie.tsx rename to apps/blade/src/app/_components/admin/hackathon/data/ShirtSizePie.tsx diff --git a/apps/blade/src/app/admin/hackathon/events/_components/create-event.tsx b/apps/blade/src/app/_components/admin/hackathon/events/create-event.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/events/_components/create-event.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/create-event.tsx diff --git a/apps/blade/src/app/admin/hackathon/events/_components/delete-event.tsx b/apps/blade/src/app/_components/admin/hackathon/events/delete-event.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/events/_components/delete-event.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/delete-event.tsx diff --git a/apps/blade/src/app/admin/hackathon/events/_components/event-details.tsx b/apps/blade/src/app/_components/admin/hackathon/events/event-details.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/events/_components/event-details.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/event-details.tsx diff --git a/apps/blade/src/app/admin/hackathon/events/_components/events-table.tsx b/apps/blade/src/app/_components/admin/hackathon/events/events-table.tsx similarity index 99% rename from apps/blade/src/app/admin/hackathon/events/_components/events-table.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/events-table.tsx index 46bf9bbb..403ebcee 100644 --- a/apps/blade/src/app/admin/hackathon/events/_components/events-table.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/events/events-table.tsx @@ -16,7 +16,7 @@ import { TableRow, } from "@forge/ui/table"; -import SortButton from "~/app/admin/_components/SortButton"; +import SortButton from "~/app/_components/shared/SortButton"; import { getFormattedDate } from "~/lib/utils"; import { api } from "~/trpc/react"; import { CreateEventButton } from "./create-event"; diff --git a/apps/blade/src/app/admin/hackathon/events/_components/update-event.tsx b/apps/blade/src/app/_components/admin/hackathon/events/update-event.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/events/_components/update-event.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/update-event.tsx diff --git a/apps/blade/src/app/admin/hackathon/events/_components/view-attendance-button.tsx b/apps/blade/src/app/_components/admin/hackathon/events/view-attendance-button.tsx similarity index 96% rename from apps/blade/src/app/admin/hackathon/events/_components/view-attendance-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/events/view-attendance-button.tsx index 1ec295ce..ea34deaa 100644 --- a/apps/blade/src/app/admin/hackathon/events/_components/view-attendance-button.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/events/view-attendance-button.tsx @@ -12,7 +12,7 @@ import { DialogTrigger, } from "@forge/ui/dialog"; -import HackerProfileButton from "~/app/admin/hackathon/hackers/_components/hacker-profile"; +import HackerProfileButton from "~/app/_components/admin/hackathon/hackers/hacker-profile"; import { api } from "~/trpc/react"; export function ViewAttendanceButton({ diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/accept-button.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/accept-button.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/accept-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/accept-button.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/blacklist-button.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/blacklist-button.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/blacklist-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/blacklist-button.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/delete-hacker.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/delete-hacker.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/delete-hacker.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/delete-hacker.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/deny-button.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/deny-button.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/deny-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/deny-button.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/food-restrictions.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/food-restrictions.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/food-restrictions.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/food-restrictions.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/hacker-client.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-client.tsx similarity index 92% rename from apps/blade/src/app/admin/hackathon/hackers/hacker-client.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-client.tsx index 18684abf..4341879c 100644 --- a/apps/blade/src/app/admin/hackathon/hackers/hacker-client.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-client.tsx @@ -2,9 +2,9 @@ import { useState } from "react"; +import HackerStatusCounter from "~/app/_components/admin/hackathon/hackers/hacker-status-counter"; +import HackerTable from "~/app/_components/admin/hackathon/hackers/hackers-table"; import { HACKER_STATUS_MAP } from "~/consts"; -import HackerStatusCounter from "./_components/hacker-status-counter"; -import HackerTable from "./_components/hackers-table"; export default function HackersClient({ currentActiveHackathon, diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hacker-profile.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-profile.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hacker-profile.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-profile.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-counter-card.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-counter-card.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-counter-card.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-counter-card.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-counter.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-counter.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-counter.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-counter.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-toggle.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-toggle.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hacker-status-toggle.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-status-toggle.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hacker-survey-responses.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hacker-survey-responses.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hacker-survey-responses.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hacker-survey-responses.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/hackers-table.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/hackers-table.tsx similarity index 99% rename from apps/blade/src/app/admin/hackathon/hackers/_components/hackers-table.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/hackers-table.tsx index 1e15b4b4..696afaf2 100644 --- a/apps/blade/src/app/admin/hackathon/hackers/_components/hackers-table.tsx +++ b/apps/blade/src/app/_components/admin/hackathon/hackers/hackers-table.tsx @@ -27,7 +27,7 @@ import { TableRow, } from "@forge/ui/table"; -import SortButton from "~/app/admin/_components/SortButton"; +import SortButton from "~/app/_components/shared/SortButton"; import { HACKER_STATUS_MAP } from "~/consts"; import { api } from "~/trpc/react"; import DeleteHackerButton from "./delete-hacker"; diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/toggle-button.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/toggle-button.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/toggle-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/toggle-button.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/update-hacker.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/update-hacker.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/update-hacker.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/update-hacker.tsx diff --git a/apps/blade/src/app/admin/hackathon/hackers/_components/waitlist-button.tsx b/apps/blade/src/app/_components/admin/hackathon/hackers/waitlist-button.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/hackers/_components/waitlist-button.tsx rename to apps/blade/src/app/_components/admin/hackathon/hackers/waitlist-button.tsx diff --git a/apps/blade/src/app/admin/hackathon/judge-assignment/_components/judges-client.tsx b/apps/blade/src/app/_components/admin/hackathon/judge-assignment/judges-client.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/judge-assignment/_components/judges-client.tsx rename to apps/blade/src/app/_components/admin/hackathon/judge-assignment/judges-client.tsx diff --git a/apps/blade/src/app/admin/hackathon/roomAssignment/_components/AddJudgeDialogue.tsx b/apps/blade/src/app/_components/admin/hackathon/roomAssignment/AddJudgeDialogue.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/roomAssignment/_components/AddJudgeDialogue.tsx rename to apps/blade/src/app/_components/admin/hackathon/roomAssignment/AddJudgeDialogue.tsx diff --git a/apps/blade/src/app/admin/hackathon/roomAssignment/_components/ChallengesTable.tsx b/apps/blade/src/app/_components/admin/hackathon/roomAssignment/ChallengesTable.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/roomAssignment/_components/ChallengesTable.tsx rename to apps/blade/src/app/_components/admin/hackathon/roomAssignment/ChallengesTable.tsx diff --git a/apps/blade/src/app/admin/hackathon/roomAssignment/_components/DeleteJudgeDialogue.tsx b/apps/blade/src/app/_components/admin/hackathon/roomAssignment/DeleteJudgeDialogue.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/roomAssignment/_components/DeleteJudgeDialogue.tsx rename to apps/blade/src/app/_components/admin/hackathon/roomAssignment/DeleteJudgeDialogue.tsx diff --git a/apps/blade/src/app/admin/hackathon/roomAssignment/_components/JudgeItem.tsx b/apps/blade/src/app/_components/admin/hackathon/roomAssignment/JudgeItem.tsx similarity index 100% rename from apps/blade/src/app/admin/hackathon/roomAssignment/_components/JudgeItem.tsx rename to apps/blade/src/app/_components/admin/hackathon/roomAssignment/JudgeItem.tsx diff --git a/apps/blade/src/app/admin/roles/manage/roleassign.tsx b/apps/blade/src/app/_components/admin/roles/roleassign.tsx similarity index 100% rename from apps/blade/src/app/admin/roles/manage/roleassign.tsx rename to apps/blade/src/app/_components/admin/roles/roleassign.tsx diff --git a/apps/blade/src/app/admin/roles/configure/_components/roleedit.tsx b/apps/blade/src/app/_components/admin/roles/roleedit.tsx similarity index 100% rename from apps/blade/src/app/admin/roles/configure/_components/roleedit.tsx rename to apps/blade/src/app/_components/admin/roles/roleedit.tsx diff --git a/apps/blade/src/app/admin/roles/configure/_components/roletable.tsx b/apps/blade/src/app/_components/admin/roles/roletable.tsx similarity index 100% rename from apps/blade/src/app/admin/roles/configure/_components/roletable.tsx rename to apps/blade/src/app/_components/admin/roles/roletable.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/countdown.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/countdown.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/countdown.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/countdown.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/hackathon-dashboard.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-dashboard.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/hackathon-dashboard.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-dashboard.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/hackathon-data.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx similarity index 98% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/hackathon-data.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx index 007a8c0b..95e23d45 100644 --- a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/hackathon-data.tsx +++ b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/hackathon-data.tsx @@ -14,10 +14,10 @@ import { } 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 { HackerQRCodePopup } from "../hacker-dashboard/hacker-qr-button"; -import { DownloadQRPass } from "../member-dashboard/download-qr-pass"; import AlertButton from "./issue-dialog"; import { PointLeaderboard } from "./point-leaderboard"; diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/issue-dialog.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/issue-dialog.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/issue-dialog.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/issue-dialog.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/point-leaderboard.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/point-leaderboard.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/point-leaderboard.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/point-leaderboard.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/team-points.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/team-points.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/team-points.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/team-points.tsx diff --git a/apps/blade/src/app/dashboard/_components/hackathon-dashboard/upcoming-events.tsx b/apps/blade/src/app/_components/dashboard/hackathon-dashboard/upcoming-events.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hackathon-dashboard/upcoming-events.tsx rename to apps/blade/src/app/_components/dashboard/hackathon-dashboard/upcoming-events.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/confirm-button.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/confirm-button.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/confirm-button.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/confirm-button.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-dashboard.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-dashboard.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-dashboard.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-dashboard.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-data.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-data.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-data.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-data.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-qr-button.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-qr-button.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-qr-button.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-qr-button.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-resume-button.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/hacker-resume-button.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx diff --git a/apps/blade/src/app/dashboard/_components/hacker-dashboard/past-hackathons.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/hacker-dashboard/past-hackathons.tsx rename to apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx diff --git a/apps/blade/src/app/hacker/application/_components/hacker-application-form.tsx b/apps/blade/src/app/_components/dashboard/hacker/hacker-application-form.tsx similarity index 100% rename from apps/blade/src/app/hacker/application/_components/hacker-application-form.tsx rename to apps/blade/src/app/_components/dashboard/hacker/hacker-application-form.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/AlumniDiscord.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/AlumniDiscord.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/AlumniDiscord.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/AlumniDiscord.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/download-qr-pass.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/download-qr-pass.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/download-qr-pass.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/download-qr-pass.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/event/event-feedback.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/event/event-feedback.tsx similarity index 91% rename from apps/blade/src/app/dashboard/_components/member-dashboard/event/event-feedback.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/event/event-feedback.tsx index 787126e5..7a57c682 100644 --- a/apps/blade/src/app/dashboard/_components/member-dashboard/event/event-feedback.tsx +++ b/apps/blade/src/app/_components/dashboard/member-dashboard/event/event-feedback.tsx @@ -6,7 +6,7 @@ import type { InsertMember, SelectEvent } from "@forge/db/schemas/knight-hacks"; import { Button } from "@forge/ui/button"; import { Dialog, DialogContent, DialogTrigger } from "@forge/ui/dialog"; -import { FormResponderWrapper } from "~/app/forms/[formName]/_components/form-responder-client"; +import { FormResponderWrapper } from "~/app/_components/forms/form-responder-client"; export function EventFeedbackForm({ event, diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/event/event-number.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/event/event-number.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/event/event-number.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/event/event-number.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/event/event-showcase.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/event/event-showcase.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/event/event-showcase.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/event/event-showcase.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/forms/form-responses.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/forms/form-responses.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/forms/form-responses.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/forms/form-responses.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/info.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/info.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/info.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/info.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/member-dashboard.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/member-dashboard.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/member-dashboard.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/member-dashboard.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/payment/donate.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/payment/donate.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/payment/donate.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/payment/donate.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/payment/payment-button.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/payment/payment-button.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/payment/payment-button.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/payment/payment-button.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/payment/payment-dues.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/payment/payment-dues.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/payment/payment-dues.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/payment/payment-dues.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/points.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/points.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/points.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/points.tsx diff --git a/apps/blade/src/app/dashboard/_components/member-dashboard/resume-button.tsx b/apps/blade/src/app/_components/dashboard/member-dashboard/resume-button.tsx similarity index 100% rename from apps/blade/src/app/dashboard/_components/member-dashboard/resume-button.tsx rename to apps/blade/src/app/_components/dashboard/member-dashboard/resume-button.tsx diff --git a/apps/blade/src/app/member/application/_components/member-application-form.tsx b/apps/blade/src/app/_components/dashboard/member/member-application-form.tsx similarity index 100% rename from apps/blade/src/app/member/application/_components/member-application-form.tsx rename to apps/blade/src/app/_components/dashboard/member/member-application-form.tsx diff --git a/apps/blade/src/app/member/success/_components/membership-success-page.tsx b/apps/blade/src/app/_components/dashboard/member/membership-success-page.tsx similarity index 100% rename from apps/blade/src/app/member/success/_components/membership-success-page.tsx rename to apps/blade/src/app/_components/dashboard/member/membership-success-page.tsx diff --git a/apps/blade/src/app/member/success/_components/membership-success-skeleton.tsx b/apps/blade/src/app/_components/dashboard/member/membership-success-skeleton.tsx similarity index 100% rename from apps/blade/src/app/member/success/_components/membership-success-skeleton.tsx rename to apps/blade/src/app/_components/dashboard/member/membership-success-skeleton.tsx diff --git a/apps/blade/src/app/forms/[formName]/_hooks/useSubmissionSuccess.ts b/apps/blade/src/app/_components/forms/_hooks/useSubmissionSuccess.ts similarity index 100% rename from apps/blade/src/app/forms/[formName]/_hooks/useSubmissionSuccess.ts rename to apps/blade/src/app/_components/forms/_hooks/useSubmissionSuccess.ts diff --git a/apps/blade/src/app/forms/[formName]/_components/connection-handler.ts b/apps/blade/src/app/_components/forms/connection-handler.ts similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/connection-handler.ts rename to apps/blade/src/app/_components/forms/connection-handler.ts diff --git a/apps/blade/src/app/forms/[formName]/_components/form-not-found.tsx b/apps/blade/src/app/_components/forms/form-not-found.tsx similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/form-not-found.tsx rename to apps/blade/src/app/_components/forms/form-not-found.tsx diff --git a/apps/blade/src/app/forms/[formName]/_components/form-responder-client.tsx b/apps/blade/src/app/_components/forms/form-responder-client.tsx similarity index 98% rename from apps/blade/src/app/forms/[formName]/_components/form-responder-client.tsx rename to apps/blade/src/app/_components/forms/form-responder-client.tsx index 507e23af..aeb2ccba 100644 --- a/apps/blade/src/app/forms/[formName]/_components/form-responder-client.tsx +++ b/apps/blade/src/app/_components/forms/form-responder-client.tsx @@ -10,7 +10,7 @@ import { Card } from "@forge/ui/card"; import type { FormResponsePayload } from "./utils"; import { api } from "~/trpc/react"; -import { useSubmissionSuccess } from "../_hooks/useSubmissionSuccess"; +import { useSubmissionSuccess } from "./_hooks/useSubmissionSuccess"; import { handleCallbacks } from "./connection-handler"; import FormNotFound from "./form-not-found"; import { FormRunner } from "./form-runner"; diff --git a/apps/blade/src/app/forms/[formName]/_components/form-runner.tsx b/apps/blade/src/app/_components/forms/form-runner.tsx similarity index 96% rename from apps/blade/src/app/forms/[formName]/_components/form-runner.tsx rename to apps/blade/src/app/_components/forms/form-runner.tsx index 4b5e19fd..0f005306 100644 --- a/apps/blade/src/app/forms/[formName]/_components/form-runner.tsx +++ b/apps/blade/src/app/_components/forms/form-runner.tsx @@ -7,8 +7,8 @@ import { Button } from "@forge/ui/button"; import { Card } from "@forge/ui/card"; import type { FormResponsePayload, FormResponseUI } from "./utils"; -import { InstructionResponseCard } from "~/app/forms/[formName]/_components/instruction-response-card"; -import { QuestionResponseCard } from "~/app/forms/[formName]/_components/question-response-card"; +import { InstructionResponseCard } from "~/app/_components/forms/instruction-response-card"; +import { QuestionResponseCard } from "~/app/_components/forms/question-response-card"; import { getValidationError, isFormValid, normalizeResponses } from "./utils"; /** diff --git a/apps/blade/src/app/forms/[formName]/_components/form-submitted-success.tsx b/apps/blade/src/app/_components/forms/form-submitted-success.tsx similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/form-submitted-success.tsx rename to apps/blade/src/app/_components/forms/form-submitted-success.tsx diff --git a/apps/blade/src/app/forms/[formName]/_components/form-view-edit-client.tsx b/apps/blade/src/app/_components/forms/form-view-edit-client.tsx similarity index 98% rename from apps/blade/src/app/forms/[formName]/_components/form-view-edit-client.tsx rename to apps/blade/src/app/_components/forms/form-view-edit-client.tsx index 4dda3f78..e517a00f 100644 --- a/apps/blade/src/app/forms/[formName]/_components/form-view-edit-client.tsx +++ b/apps/blade/src/app/_components/forms/form-view-edit-client.tsx @@ -7,7 +7,7 @@ import type { FORMS } from "@forge/consts"; import type { FormResponsePayload, FormResponseUI } from "./utils"; import { api } from "~/trpc/react"; -import { useSubmissionSuccess } from "../_hooks/useSubmissionSuccess"; +import { useSubmissionSuccess } from "./_hooks/useSubmissionSuccess"; import FormNotFound from "./form-not-found"; import { FormRunner } from "./form-runner"; import { SubmissionSuccessCard } from "./form-submitted-success"; diff --git a/apps/blade/src/app/forms/[formName]/_components/instruction-response-card.tsx b/apps/blade/src/app/_components/forms/instruction-response-card.tsx similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/instruction-response-card.tsx rename to apps/blade/src/app/_components/forms/instruction-response-card.tsx diff --git a/apps/blade/src/app/forms/[formName]/_components/question-response-card.tsx b/apps/blade/src/app/_components/forms/question-response-card.tsx similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/question-response-card.tsx rename to apps/blade/src/app/_components/forms/question-response-card.tsx diff --git a/apps/blade/src/app/forms/[formName]/_components/response-not-found.tsx b/apps/blade/src/app/_components/forms/response-not-found.tsx similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/response-not-found.tsx rename to apps/blade/src/app/_components/forms/response-not-found.tsx diff --git a/apps/blade/src/components/forms/create-form-card.tsx b/apps/blade/src/app/_components/forms/shared/create-form-card.tsx similarity index 100% rename from apps/blade/src/components/forms/create-form-card.tsx rename to apps/blade/src/app/_components/forms/shared/create-form-card.tsx diff --git a/apps/blade/src/components/forms/delete-form-dialog.tsx b/apps/blade/src/app/_components/forms/shared/delete-form-dialog.tsx similarity index 100% rename from apps/blade/src/components/forms/delete-form-dialog.tsx rename to apps/blade/src/app/_components/forms/shared/delete-form-dialog.tsx diff --git a/apps/blade/src/components/forms/export-csv.tsx b/apps/blade/src/app/_components/forms/shared/export-csv.tsx similarity index 100% rename from apps/blade/src/components/forms/export-csv.tsx rename to apps/blade/src/app/_components/forms/shared/export-csv.tsx diff --git a/apps/blade/src/components/forms/form-card.tsx b/apps/blade/src/app/_components/forms/shared/form-card.tsx similarity index 100% rename from apps/blade/src/components/forms/form-card.tsx rename to apps/blade/src/app/_components/forms/shared/form-card.tsx diff --git a/apps/blade/src/components/forms/form-qr-code.tsx b/apps/blade/src/app/_components/forms/shared/form-qr-code.tsx similarity index 100% rename from apps/blade/src/components/forms/form-qr-code.tsx rename to apps/blade/src/app/_components/forms/shared/form-qr-code.tsx diff --git a/apps/blade/src/components/admin/forms/instruction-edit-card.tsx b/apps/blade/src/app/_components/forms/shared/instruction-edit-card.tsx similarity index 100% rename from apps/blade/src/components/admin/forms/instruction-edit-card.tsx rename to apps/blade/src/app/_components/forms/shared/instruction-edit-card.tsx diff --git a/apps/blade/src/components/forms/move-form-section-dialog.tsx b/apps/blade/src/app/_components/forms/shared/move-form-section-dialog.tsx similarity index 100% rename from apps/blade/src/components/forms/move-form-section-dialog.tsx rename to apps/blade/src/app/_components/forms/shared/move-form-section-dialog.tsx diff --git a/apps/blade/src/components/admin/forms/question-edit-card.tsx b/apps/blade/src/app/_components/forms/shared/question-edit-card.tsx similarity index 100% rename from apps/blade/src/components/admin/forms/question-edit-card.tsx rename to apps/blade/src/app/_components/forms/shared/question-edit-card.tsx diff --git a/apps/blade/src/components/forms/section-manager-dialog.tsx b/apps/blade/src/app/_components/forms/shared/section-manager-dialog.tsx similarity index 100% rename from apps/blade/src/components/forms/section-manager-dialog.tsx rename to apps/blade/src/app/_components/forms/shared/section-manager-dialog.tsx diff --git a/apps/blade/src/app/forms/[formName]/_components/utils.ts b/apps/blade/src/app/_components/forms/utils.ts similarity index 100% rename from apps/blade/src/app/forms/[formName]/_components/utils.ts rename to apps/blade/src/app/_components/forms/utils.ts diff --git a/apps/blade/src/app/judge/_components/judge-navigation.tsx b/apps/blade/src/app/_components/judge/judge-navigation.tsx similarity index 100% rename from apps/blade/src/app/judge/_components/judge-navigation.tsx rename to apps/blade/src/app/_components/judge/judge-navigation.tsx diff --git a/apps/blade/src/app/judge/_components/projects-table.tsx b/apps/blade/src/app/_components/judge/projects-table.tsx similarity index 100% rename from apps/blade/src/app/judge/_components/projects-table.tsx rename to apps/blade/src/app/_components/judge/projects-table.tsx diff --git a/apps/blade/src/app/judge/results/_components/results-filter.tsx b/apps/blade/src/app/_components/judge/results-filter.tsx similarity index 100% rename from apps/blade/src/app/judge/results/_components/results-filter.tsx rename to apps/blade/src/app/_components/judge/results-filter.tsx diff --git a/apps/blade/src/app/judge/results/_components/results-table.tsx b/apps/blade/src/app/_components/judge/results-table.tsx similarity index 99% rename from apps/blade/src/app/judge/results/_components/results-table.tsx rename to apps/blade/src/app/_components/judge/results-table.tsx index 0780a1f1..1ec1c625 100644 --- a/apps/blade/src/app/judge/results/_components/results-table.tsx +++ b/apps/blade/src/app/_components/judge/results-table.tsx @@ -36,7 +36,7 @@ import { TableRow, } from "@forge/ui/table"; -import SortButton from "~/app/admin/_components/SortButton"; +import SortButton from "~/app/_components/shared/SortButton"; import { api } from "~/trpc/react"; import ResultsFilter from "./results-filter"; diff --git a/apps/blade/src/app/judge/_components/rubric-form.tsx b/apps/blade/src/app/_components/judge/rubric-form.tsx similarity index 100% rename from apps/blade/src/app/judge/_components/rubric-form.tsx rename to apps/blade/src/app/_components/judge/rubric-form.tsx diff --git a/apps/blade/src/app/settings/_components/delete-hacker-button.tsx b/apps/blade/src/app/_components/settings/delete-hacker-button.tsx similarity index 100% rename from apps/blade/src/app/settings/_components/delete-hacker-button.tsx rename to apps/blade/src/app/_components/settings/delete-hacker-button.tsx diff --git a/apps/blade/src/app/settings/_components/delete-member-button.tsx b/apps/blade/src/app/_components/settings/delete-member-button.tsx similarity index 100% rename from apps/blade/src/app/settings/_components/delete-member-button.tsx rename to apps/blade/src/app/_components/settings/delete-member-button.tsx diff --git a/apps/blade/src/app/settings/hacker-profile/hacker-profile-form.tsx b/apps/blade/src/app/_components/settings/hacker-profile-form.tsx similarity index 99% rename from apps/blade/src/app/settings/hacker-profile/hacker-profile-form.tsx rename to apps/blade/src/app/_components/settings/hacker-profile-form.tsx index cb556b68..6d3dbcb3 100644 --- a/apps/blade/src/app/settings/hacker-profile/hacker-profile-form.tsx +++ b/apps/blade/src/app/_components/settings/hacker-profile-form.tsx @@ -33,9 +33,9 @@ import { Textarea } from "@forge/ui/textarea"; import { toast } from "@forge/ui/toast"; import type { api as serverCaller } from "~/trpc/server"; +import { HackerAppCard } from "~/app/_components/option-cards"; +import DeleteHackerButton from "~/app/_components/settings/delete-hacker-button"; import { api } from "~/trpc/react"; -import DeleteHackerButton from "../_components/delete-hacker-button"; -import { HackerAppCard } from "../../_components/option-cards"; export function HackerProfileForm({ data, diff --git a/apps/blade/src/app/settings/member-profile-form.tsx b/apps/blade/src/app/_components/settings/member-profile-form.tsx similarity index 99% rename from apps/blade/src/app/settings/member-profile-form.tsx rename to apps/blade/src/app/_components/settings/member-profile-form.tsx index 60ebef44..1dc24645 100644 --- a/apps/blade/src/app/settings/member-profile-form.tsx +++ b/apps/blade/src/app/_components/settings/member-profile-form.tsx @@ -32,9 +32,9 @@ import { Textarea } from "@forge/ui/textarea"; import { toast } from "@forge/ui/toast"; import type { api as serverCaller } from "~/trpc/server"; +import { MemberAppCard } from "~/app/_components/option-cards"; +import DeleteMemberButton from "~/app/_components/settings/delete-member-button"; import { api } from "~/trpc/react"; -import { MemberAppCard } from "../_components/option-cards"; -import DeleteMemberButton from "./_components/delete-member-button"; export function MemberProfileForm({ data, diff --git a/apps/blade/src/app/settings/_components/sidebar-nav.tsx b/apps/blade/src/app/_components/settings/sidebar-nav.tsx similarity index 100% rename from apps/blade/src/app/settings/_components/sidebar-nav.tsx rename to apps/blade/src/app/_components/settings/sidebar-nav.tsx diff --git a/apps/blade/src/app/admin/_components/AddPoints.tsx b/apps/blade/src/app/_components/shared/AddPoints.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/AddPoints.tsx rename to apps/blade/src/app/_components/shared/AddPoints.tsx diff --git a/apps/blade/src/app/admin/_components/SortButton.tsx b/apps/blade/src/app/_components/shared/SortButton.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/SortButton.tsx rename to apps/blade/src/app/_components/shared/SortButton.tsx diff --git a/apps/blade/src/app/admin/_components/ToggleEditInput.tsx b/apps/blade/src/app/_components/shared/ToggleEditInput.tsx similarity index 100% rename from apps/blade/src/app/admin/_components/ToggleEditInput.tsx rename to apps/blade/src/app/_components/shared/ToggleEditInput.tsx diff --git a/apps/blade/src/app/_components/csv-importer.tsx b/apps/blade/src/app/_components/shared/csv-importer.tsx similarity index 100% rename from apps/blade/src/app/_components/csv-importer.tsx rename to apps/blade/src/app/_components/shared/csv-importer.tsx diff --git a/apps/blade/src/app/_components/shared/scanner.tsx b/apps/blade/src/app/_components/shared/scanner.tsx new file mode 100644 index 00000000..82f6ff22 --- /dev/null +++ b/apps/blade/src/app/_components/shared/scanner.tsx @@ -0,0 +1,366 @@ +"use client"; + +import { useRef, useState } from "react"; +import { AwardIcon, WrenchIcon } from "lucide-react"; +import { QrReader } from "react-qr-reader"; +import { z } from "zod"; + +import type { HackerClass } from "@forge/db/schemas/knight-hacks"; +import { HACKER_CLASSES } from "@forge/db/schemas/knight-hacks"; +import { Button } from "@forge/ui/button"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@forge/ui/dialog"; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, + useForm, +} from "@forge/ui/form"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; +import { toast } from "@forge/ui/toast"; + +import ToggleButton from "~/app/_components/admin/hackathon/hackers/toggle-button"; +import { getClassTeam } from "~/lib/utils"; +import { api } from "~/trpc/react"; + +const ScannerPopUp = ({ eventType }: { eventType: "Member" | "Hacker" }) => { + const { data: events } = api.event.getEvents.useQuery(); + + const filteredEvents = events?.filter((v) => { + if (eventType == "Member") return !v.hackathonId; + else return v.hackathonId; + }); + + const [open, setOpen] = useState(false); + const [openPersistentDialog, setOpenPersistentDialog] = useState(false); + const [firstName, setFirstName] = useState(""); + const [lastName, setLastName] = useState(""); + const [assignedClass, setAssignedClass] = useState(""); + const [checkInMessage, setCheckInMessage] = useState(""); + const [toggleRepeatedCheckIn, setToggleRepeatedCheckIn] = useState(false); + const [errorColor, setErrorColor] = useState("text-red-500"); + + const scanningRef = useRef(false); + + const now = new Date(); + const currentEvents = (filteredEvents ?? []).filter((event) => { + const eventEndTime = new Date(event.end_datetime); + const dayAfterEvent = new Date(eventEndTime); + dayAfterEvent.setDate(dayAfterEvent.getDate() + 1); + return dayAfterEvent >= now; + }); + const previousEvents = (filteredEvents ?? []).filter((event) => { + const eventEndTime = new Date(event.end_datetime); + const dayAfterEvent = new Date(eventEndTime); + dayAfterEvent.setDate(dayAfterEvent.getDate() + 1); + return dayAfterEvent < now; + }); + + const memberCheckIn = api.member.eventCheckIn.useMutation({ + onSuccess(opts) { + toast.success(opts.message); + return; + }, + onError(opts) { + toast.error(opts.message, { + icon: "⚠️", + }); + }, + }); + const hackerEventCheckIn = api.hacker.eventCheckIn.useMutation({ + onSuccess(opts) { + toast.success(opts.message); + setErrorColor( + opts.messageforHackers.includes("[ERROR]") ? "text-red-500" : "", + ); + setFirstName(opts.firstName); + setLastName(opts.lastName); + setAssignedClass(opts.class ?? "No class assigned"); + setCheckInMessage(opts.messageforHackers); + setOpenPersistentDialog(true); + + return; + }, + onError(opts) { + if (!openPersistentDialog) { + toast.error(opts.message, { + icon: "⚠️", + }); + setErrorColor("text-red-500"); + setCheckInMessage(opts.message); + setFirstName("Error"); + setLastName("Error"); + setAssignedClass(""); + setOpenPersistentDialog(true); + } + toast.error(opts.message, { + icon: "⚠️", + }); + }, + }); + const AssignedClassCheckinSchema = z.union([ + z.literal("All"), + z.enum(HACKER_CLASSES), + ]); + const form = useForm({ + schema: z.object({ + userId: z.string(), + eventId: z.string(), + eventPoints: z.number(), + hackathonId: z.string(), + assignedClassCheckin: AssignedClassCheckinSchema, + repeatedCheckin: z.boolean(), + }), + defaultValues: { + eventId: "", + userId: "", + eventPoints: 0, + hackathonId: "", + assignedClassCheckin: "All", + repeatedCheckin: false, + }, + }); + const closeModal = () => { + setOpen(false); + window.location.reload(); + }; + const closePersistentDialog = () => { + setOpenPersistentDialog(false); + }; + + const renderEventSelect = (filteredEvents: typeof events) => ( + ( + + + + Event + + This event only accepts{" "} + {eventType} QR + codes. + + + + + + + + + )} + /> + ); + const renderClassCheckinSelect = () => ( + ( + + Check-in class + + + + + + )} + /> + ); + + return ( + + + + + + + Check-in {eventType} + +
+ { + if (!result) return; + if (scanningRef.current) return; + scanningRef.current = true; + try { + const userId = result.getText().substring(5); + form.setValue("userId", userId); + const eventId = form.getValues("eventId"); + if (eventId) { + if (eventType === "Hacker") { + await form.handleSubmit((data) => + hackerEventCheckIn.mutate(data), + )(); + } else { + await form.handleSubmit((data) => + memberCheckIn.mutate(data), + )(); + } + } else { + toast.error("Please select an event first!"); + } + } finally { + setTimeout(() => { + scanningRef.current = false; + }, 3000); + } + }} + /> +
+
+ { + if (eventType == "Hacker") hackerEventCheckIn.mutate(data); + else memberCheckIn.mutate(data); + })} + className="space-y-4" + > + + + Upcoming Events + Previous Events + + + {renderEventSelect(currentEvents)} + {eventType === "Hacker" && renderClassCheckinSelect()} + {eventType === "Hacker" && ( + { + setToggleRepeatedCheckIn(value); + form.setValue("repeatedCheckin", value); + }} + /> + )} + + + {renderEventSelect(previousEvents)} + {eventType === "Hacker" && renderClassCheckinSelect()} + {eventType === "Hacker" && ( + { + setToggleRepeatedCheckIn(value); + form.setValue("repeatedCheckin", value); + }} + /> + )} + + +
+ +
+ +
+ {openPersistentDialog && ( +
+ +
+ CHECKED IN +
+
+
FIRST
+
{firstName}
+
+
+
LAST
+
{lastName}
+
+
+
CLASS
+
+ {assignedClass} +
+
+
+ {errorColor != "" ? ( +
+ {checkInMessage} +
+ ) : ( +
+ {checkInMessage} +
+ )} +
+ )} + +
+ ); +}; + +export default ScannerPopUp; diff --git a/apps/blade/src/app/_components/user-interface.tsx b/apps/blade/src/app/_components/user-interface.tsx index de465e82..3f8f7218 100644 --- a/apps/blade/src/app/_components/user-interface.tsx +++ b/apps/blade/src/app/_components/user-interface.tsx @@ -1,10 +1,10 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; +import HackathonDashboard from "~/app/_components/dashboard/hackathon-dashboard/hackathon-dashboard"; +import HackerDashboard from "~/app/_components/dashboard/hacker-dashboard/hacker-dashboard"; +import MemberDashboard from "~/app/_components/dashboard/member-dashboard/member-dashboard"; +import { HackerAppCard, MemberAppCard } from "~/app/_components/option-cards"; import { api } from "~/trpc/server"; -import HackathonDashboard from "../dashboard/_components/hackathon-dashboard/hackathon-dashboard"; -import HackerDashboard from "../dashboard/_components/hacker-dashboard/hacker-dashboard"; -import MemberDashboard from "../dashboard/_components/member-dashboard/member-dashboard"; -import { HackerAppCard, MemberAppCard } from "./option-cards"; export async function UserInterface() { const [member, hacker] = await Promise.allSettled([ diff --git a/apps/blade/src/app/admin/banquet-raffle/components/confetti.d.ts b/apps/blade/src/app/admin/banquet-raffle/components/confetti.d.ts deleted file mode 100644 index 7cdf1b95..00000000 --- a/apps/blade/src/app/admin/banquet-raffle/components/confetti.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -declare module "canvas-confetti" { - function confetti(options?: { - particleCount?: number; - angle?: number; - spread?: number; - startVelocity?: number; - decay?: number; - gravity?: number; - drift?: number; - ticks?: number; - origin?: { - x?: number; - y?: number; - }; - colors?: string[]; - shapes?: string[]; - scalar?: number; - zIndex?: number; - disableForReducedMotion?: boolean; - }); - - export = confetti; -} diff --git a/apps/blade/src/app/admin/banquet-raffle/page.tsx b/apps/blade/src/app/admin/banquet-raffle/page.tsx index ba58bed5..ef0cc82f 100644 --- a/apps/blade/src/app/admin/banquet-raffle/page.tsx +++ b/apps/blade/src/app/admin/banquet-raffle/page.tsx @@ -6,9 +6,9 @@ import { db } from "@forge/db/client"; import { User } from "@forge/db/schemas/auth"; import { Member } from "@forge/db/schemas/knight-hacks"; +import RaffleDraw from "~/app/_components/admin/banquet-raffle/raffle-draw"; import { SIGN_IN_PATH } from "~/consts"; import { api } from "~/trpc/server"; -import RaffleDraw from "./components/raffle-draw"; export default async function Raffle() { const session = await auth(); diff --git a/apps/blade/src/app/admin/club/check-in/page.tsx b/apps/blade/src/app/admin/club/check-in/page.tsx index 39e7f263..9eba275a 100644 --- a/apps/blade/src/app/admin/club/check-in/page.tsx +++ b/apps/blade/src/app/admin/club/check-in/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { CheckInPage } from "~/app/_components/admin/club/check-in/check-in-page"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { CheckInPage } from "./_components/check-in-page"; export default async function HackathonCheckIn() { // Check if the user is authenticated diff --git a/apps/blade/src/app/admin/club/data/page.tsx b/apps/blade/src/app/admin/club/data/page.tsx index bbd900a5..a6d17051 100644 --- a/apps/blade/src/app/admin/club/data/page.tsx +++ b/apps/blade/src/app/admin/club/data/page.tsx @@ -3,10 +3,10 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; +import EventDemographics from "~/app/_components/admin/club/data/EventDemographics"; +import MemberDemographics from "~/app/_components/admin/club/data/MemberDemographics"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import EventDemographics from "./_components/EventDemographics"; -import MemberDemographics from "./_components/MemberDemographics"; export default async function Data() { // authentication diff --git a/apps/blade/src/app/admin/club/events/page.tsx b/apps/blade/src/app/admin/club/events/page.tsx index 90c63deb..d099e3e8 100644 --- a/apps/blade/src/app/admin/club/events/page.tsx +++ b/apps/blade/src/app/admin/club/events/page.tsx @@ -2,11 +2,11 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { EventsTable } from "~/app/_components/admin/club/events/events-table"; +import { AddPoints } from "~/app/_components/shared/AddPoints"; +import ScannerPopUp from "~/app/_components/shared/scanner"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { AddPoints } from "../../_components/AddPoints"; -import ScannerPopUp from "../members/_components/scanner"; -import { EventsTable } from "./_components/events-table"; export default async function Events() { const session = await auth(); diff --git a/apps/blade/src/app/admin/club/members/page.tsx b/apps/blade/src/app/admin/club/members/page.tsx index 0fe070b7..5145da0b 100644 --- a/apps/blade/src/app/admin/club/members/page.tsx +++ b/apps/blade/src/app/admin/club/members/page.tsx @@ -2,10 +2,10 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import MemberTable from "~/app/_components/admin/club/members/members-table"; +import ScannerPopUp from "~/app/_components/shared/scanner"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import MemberTable from "./_components/members-table"; -import ScannerPopUp from "./_components/scanner"; export default async function Members() { // authentication diff --git a/apps/blade/src/app/admin/forms/[slug]/page.tsx b/apps/blade/src/app/admin/forms/[slug]/page.tsx index b1190a33..a7dc299b 100644 --- a/apps/blade/src/app/admin/forms/[slug]/page.tsx +++ b/apps/blade/src/app/admin/forms/[slug]/page.tsx @@ -3,9 +3,9 @@ import { redirect } from "next/navigation"; import { appRouter } from "@forge/api"; import { auth } from "@forge/auth/server"; +import { EditorClient } from "~/app/_components/admin/forms/editor/client"; import { extractProcedures } from "~/lib/utils"; import { api } from "~/trpc/server"; -import { EditorClient } from "./client"; export default async function FormEditorPage({ params, diff --git a/apps/blade/src/app/admin/forms/[slug]/responses/page.tsx b/apps/blade/src/app/admin/forms/[slug]/responses/page.tsx index c1e095ad..1f9576dd 100644 --- a/apps/blade/src/app/admin/forms/[slug]/responses/page.tsx +++ b/apps/blade/src/app/admin/forms/[slug]/responses/page.tsx @@ -7,16 +7,17 @@ import { auth } from "@forge/auth"; import { Button } from "@forge/ui/button"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; +import { AllResponsesView } from "~/app/_components/admin/forms/responses/AllResponsesView"; +import { PerUserResponsesView } from "~/app/_components/admin/forms/responses/PerUserResponsesView"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { AllResponsesView } from "./_components/AllResponsesView"; -import { PerUserResponsesView } from "./_components/PerUserResponsesView"; export default async function FormResponsesPage({ params, }: { params: { slug: string }; }) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const session = await auth(); if (!session) { redirect(SIGN_IN_PATH); diff --git a/apps/blade/src/app/admin/forms/page.tsx b/apps/blade/src/app/admin/forms/page.tsx index 4bd131aa..6bf21c92 100644 --- a/apps/blade/src/app/admin/forms/page.tsx +++ b/apps/blade/src/app/admin/forms/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import FormsClient from "~/app/_components/admin/forms/homepage"; import { SIGN_IN_PATH } from "~/consts"; import { api } from "~/trpc/server"; -import FormsClient from "../../_components/admin/forms/homepage"; export default async function Page() { const session = await auth(); diff --git a/apps/blade/src/app/admin/hackathon/check-in/page.tsx b/apps/blade/src/app/admin/hackathon/check-in/page.tsx index 5891316a..ec1b1f87 100644 --- a/apps/blade/src/app/admin/hackathon/check-in/page.tsx +++ b/apps/blade/src/app/admin/hackathon/check-in/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { CheckInPage } from "~/app/_components/admin/hackathon/check-in/check-in-page"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { CheckInPage } from "./_components/check-in-page"; export default async function HackathonCheckIn() { // Check if the user is authenticated diff --git a/apps/blade/src/app/admin/hackathon/control-room/page.tsx b/apps/blade/src/app/admin/hackathon/control-room/page.tsx index 444b54c0..942ebac0 100644 --- a/apps/blade/src/app/admin/hackathon/control-room/page.tsx +++ b/apps/blade/src/app/admin/hackathon/control-room/page.tsx @@ -2,8 +2,8 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import ControlRoomClient from "~/app/_components/admin/hackathon/control-room/control-room-client"; import { api, HydrateClient } from "~/trpc/server"; -import ControlRoomClient from "./_components/control-room-client"; export default async function ControlRoom() { const session = await auth(); diff --git a/apps/blade/src/app/admin/hackathon/data/page.tsx b/apps/blade/src/app/admin/hackathon/data/page.tsx index 14153199..3ebee0d6 100644 --- a/apps/blade/src/app/admin/hackathon/data/page.tsx +++ b/apps/blade/src/app/admin/hackathon/data/page.tsx @@ -3,10 +3,10 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@forge/ui/tabs"; +import HackerEventDemographics from "~/app/_components/admin/club/data/HackerEventDemographics"; +import HackathonDataContent from "~/app/_components/admin/hackathon/data/HackathonDataContent"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import HackerEventDemographics from "../../club/data/_components/HackerEventDemographics"; -import HackathonDataContent from "./_components/HackathonDataContent"; export default async function HackathonData() { const session = await auth(); diff --git a/apps/blade/src/app/admin/hackathon/events/page.tsx b/apps/blade/src/app/admin/hackathon/events/page.tsx index 9499b5b8..ee460883 100644 --- a/apps/blade/src/app/admin/hackathon/events/page.tsx +++ b/apps/blade/src/app/admin/hackathon/events/page.tsx @@ -2,11 +2,11 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { EventsTable } from "~/app/_components/admin/hackathon/events/events-table"; +import { AddPoints } from "~/app/_components/shared/AddPoints"; +import ScannerPopUp from "~/app/_components/shared/scanner"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { AddPoints } from "../../_components/AddPoints"; -import ScannerPopUp from "../../club/members/_components/scanner"; -import { EventsTable } from "./_components/events-table"; export default async function HackathonEvents() { // Check if the user is authenticated diff --git a/apps/blade/src/app/admin/hackathon/hackers/page.tsx b/apps/blade/src/app/admin/hackathon/hackers/page.tsx index daf7a33f..4c6b77c6 100644 --- a/apps/blade/src/app/admin/hackathon/hackers/page.tsx +++ b/apps/blade/src/app/admin/hackathon/hackers/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import HackerClient from "~/app/_components/admin/hackathon/hackers/hacker-client"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import HackerClient from "./hacker-client"; export default async function Hackers() { const session = await auth(); diff --git a/apps/blade/src/app/admin/hackathon/judge-assignment/page.tsx b/apps/blade/src/app/admin/hackathon/judge-assignment/page.tsx index e4b1ec4f..4b681793 100644 --- a/apps/blade/src/app/admin/hackathon/judge-assignment/page.tsx +++ b/apps/blade/src/app/admin/hackathon/judge-assignment/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import QRCodesClient from "~/app/_components/admin/hackathon/judge-assignment/judges-client"; import { SIGN_IN_PATH } from "~/consts"; import { api } from "~/trpc/server"; -import QRCodesClient from "./_components/judges-client"; export default async function Judges() { const session = await auth(); diff --git a/apps/blade/src/app/admin/hackathon/roomAssignment/page.tsx b/apps/blade/src/app/admin/hackathon/roomAssignment/page.tsx index e3aa88b6..ff05d2c8 100644 --- a/apps/blade/src/app/admin/hackathon/roomAssignment/page.tsx +++ b/apps/blade/src/app/admin/hackathon/roomAssignment/page.tsx @@ -2,9 +2,9 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { ChallengesTable } from "~/app/_components/admin/hackathon/roomAssignment/ChallengesTable"; import { SIGN_IN_PATH } from "~/consts"; import { api, HydrateClient } from "~/trpc/server"; -import { ChallengesTable } from "./_components/ChallengesTable"; export default async function Hackers() { const session = await auth(); diff --git a/apps/blade/src/app/admin/layout.tsx b/apps/blade/src/app/admin/layout.tsx index bcd40402..69b38551 100644 --- a/apps/blade/src/app/admin/layout.tsx +++ b/apps/blade/src/app/admin/layout.tsx @@ -1,4 +1,4 @@ -import { SessionNavbar } from "../_components/navigation/session-navbar"; +import { SessionNavbar } from "~/app/_components/navigation/session-navbar"; export default function AdminLayout(props: { children: React.ReactNode }) { return ( diff --git a/apps/blade/src/app/admin/roles/configure/page.tsx b/apps/blade/src/app/admin/roles/configure/page.tsx index 1e39181a..cf669af5 100644 --- a/apps/blade/src/app/admin/roles/configure/page.tsx +++ b/apps/blade/src/app/admin/roles/configure/page.tsx @@ -5,10 +5,10 @@ import { auth } from "@forge/auth"; import { Button } from "@forge/ui/button"; import { Dialog, DialogContent, DialogTrigger } from "@forge/ui/dialog"; +import RoleEdit from "~/app/_components/admin/roles/roleedit"; +import RoleTable from "~/app/_components/admin/roles/roletable"; import { SIGN_IN_PATH } from "~/consts"; import { api } from "~/trpc/server"; -import RoleEdit from "./_components/roleedit"; -import RoleTable from "./_components/roletable"; export default async function Roles() { const session = await auth(); diff --git a/apps/blade/src/app/admin/roles/manage/page.tsx b/apps/blade/src/app/admin/roles/manage/page.tsx index c26e075a..113b46d7 100644 --- a/apps/blade/src/app/admin/roles/manage/page.tsx +++ b/apps/blade/src/app/admin/roles/manage/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; +import RoleAssign from "~/app/_components/admin/roles/roleassign"; import { api } from "~/trpc/server"; -import RoleAssign from "./roleassign"; export default async function ManageRoles() { const hasAccess = await api.roles.hasPermission({ diff --git a/apps/blade/src/app/dashboard/page.tsx b/apps/blade/src/app/dashboard/page.tsx index bb8f374c..31e14c41 100644 --- a/apps/blade/src/app/dashboard/page.tsx +++ b/apps/blade/src/app/dashboard/page.tsx @@ -3,10 +3,10 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; +import { TacoTuesday } from "~/app/_components/discord-modal"; +import { SessionNavbar } from "~/app/_components/navigation/session-navbar"; +import { UserInterface } from "~/app/_components/user-interface"; import { api, HydrateClient } from "~/trpc/server"; -import { TacoTuesday } from "../_components/discord-modal"; -import { SessionNavbar } from "../_components/navigation/session-navbar"; -import { UserInterface } from "../_components/user-interface"; export const metadata: Metadata = { title: "Blade | Dashboard", diff --git a/apps/blade/src/app/forms/[formName]/[responseId]/page.tsx b/apps/blade/src/app/forms/[formName]/[responseId]/page.tsx index bcff006e..22f5e2a6 100644 --- a/apps/blade/src/app/forms/[formName]/[responseId]/page.tsx +++ b/apps/blade/src/app/forms/[formName]/[responseId]/page.tsx @@ -2,10 +2,10 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth/server"; +import FormNotFound from "~/app/_components/forms/form-not-found"; +import { FormReviewWrapper } from "~/app/_components/forms/form-view-edit-client"; +import ResponseNotFound from "~/app/_components/forms/response-not-found"; import { api, HydrateClient } from "~/trpc/server"; -import FormNotFound from "../_components/form-not-found"; -import { FormReviewWrapper } from "../_components/form-view-edit-client"; -import ResponseNotFound from "../_components/response-not-found"; function serializeSearchParams( searchParams: Record, diff --git a/apps/blade/src/app/forms/[formName]/page.tsx b/apps/blade/src/app/forms/[formName]/page.tsx index 42d0d37a..7d956101 100644 --- a/apps/blade/src/app/forms/[formName]/page.tsx +++ b/apps/blade/src/app/forms/[formName]/page.tsx @@ -5,8 +5,8 @@ import { XCircle } from "lucide-react"; import { auth } from "@forge/auth/server"; import { Card } from "@forge/ui/card"; +import { FormResponderWrapper } from "~/app/_components/forms/form-responder-client"; import { api, HydrateClient } from "~/trpc/server"; -import { FormResponderWrapper } from "./_components/form-responder-client"; export async function generateMetadata({ params, diff --git a/apps/blade/src/app/hacker/application/[hackathon-id]/page.tsx b/apps/blade/src/app/hacker/application/[hackathon-id]/page.tsx index 20a7f0d5..eb1cef80 100644 --- a/apps/blade/src/app/hacker/application/[hackathon-id]/page.tsx +++ b/apps/blade/src/app/hacker/application/[hackathon-id]/page.tsx @@ -4,8 +4,8 @@ import { redirect } from "next/navigation"; import { auth, signIn } from "@forge/auth/server"; +import { HackerFormPage } from "~/app/_components/dashboard/hacker/hacker-application-form"; import { api } from "~/trpc/server"; -import { HackerFormPage } from "../_components/hacker-application-form"; export const metadata: Metadata = { title: "Blade | Hacker Application", diff --git a/apps/blade/src/app/judge/dashboard/page.tsx b/apps/blade/src/app/judge/dashboard/page.tsx index 29b30ca7..e58e6382 100644 --- a/apps/blade/src/app/judge/dashboard/page.tsx +++ b/apps/blade/src/app/judge/dashboard/page.tsx @@ -12,8 +12,8 @@ import { } from "@forge/ui/card"; import { Separator } from "@forge/ui/separator"; +import { ProjectsTable } from "~/app/_components/judge/projects-table"; import { api } from "~/trpc/server"; -import { ProjectsTable } from "../_components/projects-table"; export default async function Page() { const isJudge = await api.auth.getJudgeStatus(); diff --git a/apps/blade/src/app/judge/layout.tsx b/apps/blade/src/app/judge/layout.tsx index 6a92ead5..4b8d07bd 100644 --- a/apps/blade/src/app/judge/layout.tsx +++ b/apps/blade/src/app/judge/layout.tsx @@ -1,4 +1,4 @@ -import { JudgeNavigation } from "./_components/judge-navigation"; +import { JudgeNavigation } from "~/app/_components/judge/judge-navigation"; export default function JudgeLayout({ children, diff --git a/apps/blade/src/app/judge/results/page.tsx b/apps/blade/src/app/judge/results/page.tsx index bea167be..db1e4223 100644 --- a/apps/blade/src/app/judge/results/page.tsx +++ b/apps/blade/src/app/judge/results/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; +import ResultsTable from "~/app/_components/judge/results-table"; import { api, HydrateClient } from "~/trpc/server"; -import ResultsTable from "./_components/results-table"; export default async function ResultsDashboard() { const hasAccess = await api.roles.hasPermission({ diff --git a/apps/blade/src/app/member/application/page.tsx b/apps/blade/src/app/member/application/page.tsx index 820f1784..0505f934 100644 --- a/apps/blade/src/app/member/application/page.tsx +++ b/apps/blade/src/app/member/application/page.tsx @@ -3,8 +3,8 @@ import { redirect } from "next/navigation"; import { auth, signIn } from "@forge/auth/server"; +import { MemberApplicationForm } from "~/app/_components/dashboard/member/member-application-form"; import { api } from "~/trpc/server"; -import { MemberApplicationForm } from "./_components/member-application-form"; export const metadata: Metadata = { title: "Blade | Member Application", diff --git a/apps/blade/src/app/member/success/page.tsx b/apps/blade/src/app/member/success/page.tsx index 96ca4784..7e0b08d1 100644 --- a/apps/blade/src/app/member/success/page.tsx +++ b/apps/blade/src/app/member/success/page.tsx @@ -1,7 +1,7 @@ import { Suspense } from "react"; -import { MembershipSuccess } from "./_components/membership-success-page"; -import { MembershipSuccessSkeleton } from "./_components/membership-success-skeleton"; +import { MembershipSuccess } from "~/app/_components/dashboard/member/membership-success-page"; +import { MembershipSuccessSkeleton } from "~/app/_components/dashboard/member/membership-success-skeleton"; export default function CheckoutSuccessPage() { return ( diff --git a/apps/blade/src/app/page.tsx b/apps/blade/src/app/page.tsx index 50d2ff90..571ee833 100644 --- a/apps/blade/src/app/page.tsx +++ b/apps/blade/src/app/page.tsx @@ -1,5 +1,5 @@ +import { Auth } from "~/app/_components/auth-showcase"; import { HydrateClient } from "~/trpc/server"; -import { Auth } from "./_components/auth-showcase"; export default function HomePage() { return ( diff --git a/apps/blade/src/app/settings/hacker-profile/page.tsx b/apps/blade/src/app/settings/hacker-profile/page.tsx index 4ce41851..3a21c345 100644 --- a/apps/blade/src/app/settings/hacker-profile/page.tsx +++ b/apps/blade/src/app/settings/hacker-profile/page.tsx @@ -6,8 +6,8 @@ import { auth } from "@forge/auth"; import { DISCORD } from "@forge/consts"; import { Separator } from "@forge/ui/separator"; +import { HackerProfileForm } from "~/app/_components/settings/hacker-profile-form"; import { api, HydrateClient } from "~/trpc/server"; -import { HackerProfileForm } from "./hacker-profile-form"; export default async function SettingsProfilePage() { const session = await auth(); diff --git a/apps/blade/src/app/settings/layout.tsx b/apps/blade/src/app/settings/layout.tsx index e3228dc9..a742fb23 100644 --- a/apps/blade/src/app/settings/layout.tsx +++ b/apps/blade/src/app/settings/layout.tsx @@ -5,8 +5,8 @@ import { ArrowLeftIcon, cn } from "@forge/ui"; import { buttonVariants } from "@forge/ui/button"; import { Separator } from "@forge/ui/separator"; +import { SidebarNav } from "~/app/_components/settings/sidebar-nav"; import { SIDEBAR_NAV_ITEMS } from "~/consts"; -import { SidebarNav } from "./_components/sidebar-nav"; interface SettingsLayoutProps { children: React.ReactNode; diff --git a/apps/blade/src/app/settings/page.tsx b/apps/blade/src/app/settings/page.tsx index 012cdf39..8feed77c 100644 --- a/apps/blade/src/app/settings/page.tsx +++ b/apps/blade/src/app/settings/page.tsx @@ -5,8 +5,8 @@ import { redirect } from "next/navigation"; import { auth } from "@forge/auth"; import { Separator } from "@forge/ui/separator"; +import { MemberProfileForm } from "~/app/_components/settings/member-profile-form"; import { api, HydrateClient } from "~/trpc/server"; -import { MemberProfileForm } from "./member-profile-form"; export default async function SettingsProfilePage() { const session = await auth(); diff --git a/apps/club/src/app/contact/_components/assets/abstract-left.tsx b/apps/club/src/app/_components/contact/assets/abstract-left.tsx similarity index 100% rename from apps/club/src/app/contact/_components/assets/abstract-left.tsx rename to apps/club/src/app/_components/contact/assets/abstract-left.tsx diff --git a/apps/club/src/app/contact/_components/assets/abstract-right.tsx b/apps/club/src/app/_components/contact/assets/abstract-right.tsx similarity index 100% rename from apps/club/src/app/contact/_components/assets/abstract-right.tsx rename to apps/club/src/app/_components/contact/assets/abstract-right.tsx diff --git a/apps/club/src/app/contact/_components/assets/shield.tsx b/apps/club/src/app/_components/contact/assets/shield.tsx similarity index 100% rename from apps/club/src/app/contact/_components/assets/shield.tsx rename to apps/club/src/app/_components/contact/assets/shield.tsx diff --git a/apps/club/src/app/contact/_components/assets/sword-left.tsx b/apps/club/src/app/_components/contact/assets/sword-left.tsx similarity index 100% rename from apps/club/src/app/contact/_components/assets/sword-left.tsx rename to apps/club/src/app/_components/contact/assets/sword-left.tsx diff --git a/apps/club/src/app/contact/_components/assets/sword-right.tsx b/apps/club/src/app/_components/contact/assets/sword-right.tsx similarity index 100% rename from apps/club/src/app/contact/_components/assets/sword-right.tsx rename to apps/club/src/app/_components/contact/assets/sword-right.tsx diff --git a/apps/club/src/app/contact/_components/contact-form.tsx b/apps/club/src/app/_components/contact/contact-form.tsx similarity index 100% rename from apps/club/src/app/contact/_components/contact-form.tsx rename to apps/club/src/app/_components/contact/contact-form.tsx diff --git a/apps/club/src/app/contact/_components/header.tsx b/apps/club/src/app/_components/contact/header.tsx similarity index 100% rename from apps/club/src/app/contact/_components/header.tsx rename to apps/club/src/app/_components/contact/header.tsx diff --git a/apps/club/src/app/contact/_components/left-side.tsx b/apps/club/src/app/_components/contact/left-side.tsx similarity index 100% rename from apps/club/src/app/contact/_components/left-side.tsx rename to apps/club/src/app/_components/contact/left-side.tsx diff --git a/apps/club/src/app/contact/_components/right-side.tsx b/apps/club/src/app/_components/contact/right-side.tsx similarity index 100% rename from apps/club/src/app/contact/_components/right-side.tsx rename to apps/club/src/app/_components/contact/right-side.tsx diff --git a/apps/club/src/app/links/_components/assets/abstract-shape-left-1.tsx b/apps/club/src/app/_components/links/assets/abstract-shape-left-1.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/abstract-shape-left-1.tsx rename to apps/club/src/app/_components/links/assets/abstract-shape-left-1.tsx diff --git a/apps/club/src/app/links/_components/assets/abstract-shape-left-2.tsx b/apps/club/src/app/_components/links/assets/abstract-shape-left-2.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/abstract-shape-left-2.tsx rename to apps/club/src/app/_components/links/assets/abstract-shape-left-2.tsx diff --git a/apps/club/src/app/links/_components/assets/abstract-shape-right-1.tsx b/apps/club/src/app/_components/links/assets/abstract-shape-right-1.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/abstract-shape-right-1.tsx rename to apps/club/src/app/_components/links/assets/abstract-shape-right-1.tsx diff --git a/apps/club/src/app/links/_components/assets/abstract-shape-right-2.tsx b/apps/club/src/app/_components/links/assets/abstract-shape-right-2.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/abstract-shape-right-2.tsx rename to apps/club/src/app/_components/links/assets/abstract-shape-right-2.tsx diff --git a/apps/club/src/app/links/_components/assets/binary-icon.tsx b/apps/club/src/app/_components/links/assets/binary-icon.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/binary-icon.tsx rename to apps/club/src/app/_components/links/assets/binary-icon.tsx diff --git a/apps/club/src/app/links/_components/assets/blank-calendar.tsx b/apps/club/src/app/_components/links/assets/blank-calendar.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/blank-calendar.tsx rename to apps/club/src/app/_components/links/assets/blank-calendar.tsx diff --git a/apps/club/src/app/links/_components/assets/chat-bubble.tsx b/apps/club/src/app/_components/links/assets/chat-bubble.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/chat-bubble.tsx rename to apps/club/src/app/_components/links/assets/chat-bubble.tsx diff --git a/apps/club/src/app/links/_components/assets/facebook.tsx b/apps/club/src/app/_components/links/assets/facebook.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/facebook.tsx rename to apps/club/src/app/_components/links/assets/facebook.tsx diff --git a/apps/club/src/app/links/_components/assets/instagram.tsx b/apps/club/src/app/_components/links/assets/instagram.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/instagram.tsx rename to apps/club/src/app/_components/links/assets/instagram.tsx diff --git a/apps/club/src/app/links/_components/assets/kh-logo.tsx b/apps/club/src/app/_components/links/assets/kh-logo.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/kh-logo.tsx rename to apps/club/src/app/_components/links/assets/kh-logo.tsx diff --git a/apps/club/src/app/links/_components/assets/knighthacks-text.tsx b/apps/club/src/app/_components/links/assets/knighthacks-text.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/knighthacks-text.tsx rename to apps/club/src/app/_components/links/assets/knighthacks-text.tsx diff --git a/apps/club/src/app/links/_components/assets/laptop-charging.tsx b/apps/club/src/app/_components/links/assets/laptop-charging.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/laptop-charging.tsx rename to apps/club/src/app/_components/links/assets/laptop-charging.tsx diff --git a/apps/club/src/app/links/_components/assets/linkedin.tsx b/apps/club/src/app/_components/links/assets/linkedin.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/linkedin.tsx rename to apps/club/src/app/_components/links/assets/linkedin.tsx diff --git a/apps/club/src/app/links/_components/assets/mail.tsx b/apps/club/src/app/_components/links/assets/mail.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/mail.tsx rename to apps/club/src/app/_components/links/assets/mail.tsx diff --git a/apps/club/src/app/links/_components/assets/menu horizontal.tsx b/apps/club/src/app/_components/links/assets/menu-horizontal.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/menu horizontal.tsx rename to apps/club/src/app/_components/links/assets/menu-horizontal.tsx diff --git a/apps/club/src/app/links/_components/assets/officer-card-assets/linkedin-icon.tsx b/apps/club/src/app/_components/links/assets/officer-card-assets/linkedin-icon.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/officer-card-assets/linkedin-icon.tsx rename to apps/club/src/app/_components/links/assets/officer-card-assets/linkedin-icon.tsx diff --git a/apps/club/src/app/links/_components/assets/officer-card-assets/major.tsx b/apps/club/src/app/_components/links/assets/officer-card-assets/major.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/officer-card-assets/major.tsx rename to apps/club/src/app/_components/links/assets/officer-card-assets/major.tsx diff --git a/apps/club/src/app/links/_components/assets/officer-card-assets/round-major.tsx b/apps/club/src/app/_components/links/assets/officer-card-assets/round-major.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/officer-card-assets/round-major.tsx rename to apps/club/src/app/_components/links/assets/officer-card-assets/round-major.tsx diff --git a/apps/club/src/app/links/_components/assets/outline.tsx b/apps/club/src/app/_components/links/assets/outline.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/outline.tsx rename to apps/club/src/app/_components/links/assets/outline.tsx diff --git a/apps/club/src/app/links/_components/assets/terminal-icon.tsx b/apps/club/src/app/_components/links/assets/terminal-icon.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/terminal-icon.tsx rename to apps/club/src/app/_components/links/assets/terminal-icon.tsx diff --git a/apps/club/src/app/links/_components/assets/tk-neon-sign.tsx b/apps/club/src/app/_components/links/assets/tk-neon-sign.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/tk-neon-sign.tsx rename to apps/club/src/app/_components/links/assets/tk-neon-sign.tsx diff --git a/apps/club/src/app/links/_components/assets/tk-neon.tsx b/apps/club/src/app/_components/links/assets/tk-neon.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/tk-neon.tsx rename to apps/club/src/app/_components/links/assets/tk-neon.tsx diff --git a/apps/club/src/app/links/_components/assets/twitter.tsx b/apps/club/src/app/_components/links/assets/twitter.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/twitter.tsx rename to apps/club/src/app/_components/links/assets/twitter.tsx diff --git a/apps/club/src/app/links/_components/assets/youtube.tsx b/apps/club/src/app/_components/links/assets/youtube.tsx similarity index 100% rename from apps/club/src/app/links/_components/assets/youtube.tsx rename to apps/club/src/app/_components/links/assets/youtube.tsx diff --git a/apps/club/src/app/links/_components/button.tsx b/apps/club/src/app/_components/links/button.tsx similarity index 97% rename from apps/club/src/app/links/_components/button.tsx rename to apps/club/src/app/_components/links/button.tsx index 8326a176..40adf826 100644 --- a/apps/club/src/app/links/_components/button.tsx +++ b/apps/club/src/app/_components/links/button.tsx @@ -1,7 +1,7 @@ import type { ComponentType, SVGProps } from "react"; import type { ButtonProps } from "rsuite"; -import MenuHorizontalSVG from "./assets/menu horizontal"; +import MenuHorizontalSVG from "./assets/menu-horizontal"; interface Props extends ButtonProps { icon?: ComponentType>; diff --git a/apps/club/src/app/links/_components/links-header.tsx b/apps/club/src/app/_components/links/links-header.tsx similarity index 100% rename from apps/club/src/app/links/_components/links-header.tsx rename to apps/club/src/app/_components/links/links-header.tsx diff --git a/apps/club/src/app/officers/_components/assets/officer-card-assets/linkedin-icon.tsx b/apps/club/src/app/_components/officers/assets/officer-card-assets/linkedin-icon.tsx similarity index 100% rename from apps/club/src/app/officers/_components/assets/officer-card-assets/linkedin-icon.tsx rename to apps/club/src/app/_components/officers/assets/officer-card-assets/linkedin-icon.tsx diff --git a/apps/club/src/app/officers/_components/assets/officer-card-assets/major.tsx b/apps/club/src/app/_components/officers/assets/officer-card-assets/major.tsx similarity index 100% rename from apps/club/src/app/officers/_components/assets/officer-card-assets/major.tsx rename to apps/club/src/app/_components/officers/assets/officer-card-assets/major.tsx diff --git a/apps/club/src/app/officers/_components/assets/officer-card-assets/round-major.tsx b/apps/club/src/app/_components/officers/assets/officer-card-assets/round-major.tsx similarity index 100% rename from apps/club/src/app/officers/_components/assets/officer-card-assets/round-major.tsx rename to apps/club/src/app/_components/officers/assets/officer-card-assets/round-major.tsx diff --git a/apps/club/src/app/officers/_components/assets/officer-card.tsx b/apps/club/src/app/_components/officers/assets/officer-card.tsx similarity index 100% rename from apps/club/src/app/officers/_components/assets/officer-card.tsx rename to apps/club/src/app/_components/officers/assets/officer-card.tsx diff --git a/apps/club/src/app/officers/_components/assets/officer-header-svg.tsx b/apps/club/src/app/_components/officers/assets/officer-header-svg.tsx similarity index 100% rename from apps/club/src/app/officers/_components/assets/officer-header-svg.tsx rename to apps/club/src/app/_components/officers/assets/officer-header-svg.tsx diff --git a/apps/club/src/app/officers/_components/header.tsx b/apps/club/src/app/_components/officers/header.tsx similarity index 100% rename from apps/club/src/app/officers/_components/header.tsx rename to apps/club/src/app/_components/officers/header.tsx diff --git a/apps/club/src/app/officers/_components/officers.tsx b/apps/club/src/app/_components/officers/officers.tsx similarity index 100% rename from apps/club/src/app/officers/_components/officers.tsx rename to apps/club/src/app/_components/officers/officers.tsx diff --git a/apps/club/src/app/contact/page.tsx b/apps/club/src/app/contact/page.tsx index b3b35c58..2867d257 100644 --- a/apps/club/src/app/contact/page.tsx +++ b/apps/club/src/app/contact/page.tsx @@ -1,9 +1,9 @@ import React from "react"; -import ContactForm from "./_components/contact-form"; -import Header from "./_components/header"; -import LeftSide from "./_components/left-side"; -import RightSide from "./_components/right-side"; +import ContactForm from "~/app/_components/contact/contact-form"; +import Header from "~/app/_components/contact/header"; +import LeftSide from "~/app/_components/contact/left-side"; +import RightSide from "~/app/_components/contact/right-side"; export default function page() { return ( diff --git a/apps/club/src/app/links/page.tsx b/apps/club/src/app/links/page.tsx index 9e1877fc..50d6ee5f 100644 --- a/apps/club/src/app/links/page.tsx +++ b/apps/club/src/app/links/page.tsx @@ -1,17 +1,17 @@ -import SwordSVG from "../_components/landing/assets/sword"; -import AbstractShapeLeft1SVG from "./_components/assets/abstract-shape-left-1"; -import AbstractShapeLeft2SVG from "./_components/assets/abstract-shape-left-2"; -import AbstractShapeRight1SVG from "./_components/assets/abstract-shape-right-1"; -import AbstractShapeRight2SVG from "./_components/assets/abstract-shape-right-2"; -import BinaryIconSVG from "./_components/assets/binary-icon"; -import BlankCalendarSVG from "./_components/assets/blank-calendar"; -import ChatBubbleSVG from "./_components/assets/chat-bubble"; -import LaptopChargingSVG from "./_components/assets/laptop-charging"; -import TerminalIconSVG from "./_components/assets/terminal-icon"; -import TKNeonSVG from "./_components/assets/tk-neon"; -import TKNeonSignSVG from "./_components/assets/tk-neon-sign"; -import Button from "./_components/button"; -import LinksHeader from "./_components/links-header"; +import SwordSVG from "~/app/_components/landing/assets/sword"; +import AbstractShapeLeft1SVG from "~/app/_components/links/assets/abstract-shape-left-1"; +import AbstractShapeLeft2SVG from "~/app/_components/links/assets/abstract-shape-left-2"; +import AbstractShapeRight1SVG from "~/app/_components/links/assets/abstract-shape-right-1"; +import AbstractShapeRight2SVG from "~/app/_components/links/assets/abstract-shape-right-2"; +import BinaryIconSVG from "~/app/_components/links/assets/binary-icon"; +import BlankCalendarSVG from "~/app/_components/links/assets/blank-calendar"; +import ChatBubbleSVG from "~/app/_components/links/assets/chat-bubble"; +import LaptopChargingSVG from "~/app/_components/links/assets/laptop-charging"; +import TerminalIconSVG from "~/app/_components/links/assets/terminal-icon"; +import TKNeonSVG from "~/app/_components/links/assets/tk-neon"; +import TKNeonSignSVG from "~/app/_components/links/assets/tk-neon-sign"; +import Button from "~/app/_components/links/button"; +import LinksHeader from "~/app/_components/links/links-header"; const buttons = [ { diff --git a/apps/club/src/app/officers/page.tsx b/apps/club/src/app/officers/page.tsx index 3d020963..dd150744 100644 --- a/apps/club/src/app/officers/page.tsx +++ b/apps/club/src/app/officers/page.tsx @@ -1,5 +1,5 @@ -import Header from "./_components/header"; -import Officers from "./_components/officers"; +import Header from "~/app/_components/officers/header"; +import Officers from "~/app/_components/officers/officers"; export default function officers() { return ( diff --git a/apps/gemiknights/src/app/_components/footer/footer.tsx b/apps/gemiknights/src/app/_components/footer/footer.tsx index 5257c0a6..cd1ce3bb 100644 --- a/apps/gemiknights/src/app/_components/footer/footer.tsx +++ b/apps/gemiknights/src/app/_components/footer/footer.tsx @@ -1,7 +1,8 @@ import React from "react"; import Link from "next/link"; -import { Separator } from "../ui/separator"; +import { Separator } from "@forge/ui/separator"; + import { footerLinks, footerMessage } from "./footerContent"; export default function Footer() { diff --git a/apps/gemiknights/src/app/_components/partners/partners.tsx b/apps/gemiknights/src/app/_components/partners/partners.tsx index 323cfc57..83132ce2 100644 --- a/apps/gemiknights/src/app/_components/partners/partners.tsx +++ b/apps/gemiknights/src/app/_components/partners/partners.tsx @@ -3,8 +3,9 @@ import Link from "next/link"; import { motion } from "framer-motion"; +import { Card, CardContent } from "@forge/ui/card"; + import { BackgroundGradientAnimation } from "../ui/background-gradient-animation"; -import { Card, CardContent } from "../ui/card"; import { partnerLogos } from "./partnerLogos"; const Partners = () => { diff --git a/apps/gemiknights/src/app/_components/ui/accordion.tsx b/apps/gemiknights/src/app/_components/ui/accordion.tsx deleted file mode 100644 index 3cb3ca6d..00000000 --- a/apps/gemiknights/src/app/_components/ui/accordion.tsx +++ /dev/null @@ -1,66 +0,0 @@ -"use client"; - -import * as React from "react"; -import * as AccordionPrimitive from "@radix-ui/react-accordion"; -import { ChevronDownIcon } from "lucide-react"; - -import { cn } from "~/lib/utils"; - -function Accordion({ - ...props -}: React.ComponentProps) { - return ; -} - -function AccordionItem({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function AccordionTrigger({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - - svg]:rotate-180", - className, - )} - {...props} - > - {children} - - - - ); -} - -function AccordionContent({ - className, - children, - ...props -}: React.ComponentProps) { - return ( - -
{children}
-
- ); -} - -export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/apps/gemiknights/src/app/_components/ui/card.tsx b/apps/gemiknights/src/app/_components/ui/card.tsx deleted file mode 100644 index 46557e8e..00000000 --- a/apps/gemiknights/src/app/_components/ui/card.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import * as React from "react"; - -import { cn } from "~/lib/utils"; - -function Card({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardHeader({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardTitle({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardDescription({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardAction({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardContent({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CardFooter({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -export { - Card, - CardHeader, - CardFooter, - CardTitle, - CardAction, - CardDescription, - CardContent, -}; diff --git a/apps/gemiknights/src/app/_components/ui/separator.tsx b/apps/gemiknights/src/app/_components/ui/separator.tsx deleted file mode 100644 index a6e3e246..00000000 --- a/apps/gemiknights/src/app/_components/ui/separator.tsx +++ /dev/null @@ -1,28 +0,0 @@ -"use client"; - -import * as React from "react"; -import * as SeparatorPrimitive from "@radix-ui/react-separator"; - -import { cn } from "~/lib/utils"; - -function Separator({ - className, - orientation = "horizontal", - decorative = true, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { Separator }; diff --git a/docs/API-AND-PERMISSIONS.md b/docs/API-AND-PERMISSIONS.md index 27957137..5e51cb44 100644 --- a/docs/API-AND-PERMISSIONS.md +++ b/docs/API-AND-PERMISSIONS.md @@ -57,7 +57,7 @@ export const myRouter = { .mutation(async ({ input, ctx }) => { // Check if user has the required permission controlPerms.or(["MANAGE_EVENTS"], ctx); - + return await db.delete(Events).where(eq(Events.id, input.eventId)); }), }; @@ -117,12 +117,11 @@ For admin pages, use the permissions router to check if a user can access a page // If someone has edit rights, they need to see the page // Same is true for read-only access export const pageRouter = { - canAccessEventsPage: permProcedure - .query(async ({ ctx }) => { - // Will throw UNAUTHORIZED if they don't have either permission - controlPerms.or(["VIEW_EVENTS", "MANAGE_EVENTS"], ctx); - return { canAccess: true }; - }), + canAccessEventsPage: permProcedure.query(async ({ ctx }) => { + // Will throw UNAUTHORIZED if they don't have either permission + controlPerms.or(["VIEW_EVENTS", "MANAGE_EVENTS"], ctx); + return { canAccess: true }; + }), }; ``` @@ -222,21 +221,24 @@ Every mutation must wrap its logic in a try-catch block with appropriate logging ```typescript export const myRouter = { updateMember: permProcedure - .input(z.object({ - memberId: z.string(), - name: z.string(), - })) + .input( + z.object({ + memberId: z.string(), + name: z.string(), + }), + ) .mutation(async ({ input, ctx }) => { try { // Check permissions controlPerms.or(["MANAGE_MEMBERS"], ctx); - + // Perform the action - const result = await db.update(Members) + const result = await db + .update(Members) .set({ name: input.name }) .where(eq(Members.id, input.memberId)) .returning(); - + // Log success await log({ title: "Member Updated", @@ -244,7 +246,7 @@ export const myRouter = { color: "success_green", userId: ctx.session.user.discordUserId, }); - + return result; } catch (error) { // Log failure @@ -254,7 +256,7 @@ export const myRouter = { color: "uhoh_red", userId: ctx.session.user.discordUserId, }); - + // Re-throw to let tRPC handle the error response throw error; } @@ -284,38 +286,36 @@ export const myRouter = { where: eq(Members.id, input.id), }); }), - + // Sensitive query - should be logged - exportAllMemberData: permProcedure - .query(async ({ ctx }) => { - try { - controlPerms.or(["EXPORT_DATA"], ctx); - - const data = await db.query.Members.findMany(); - - await log({ - title: "Member Data Exported", - message: `Exported ${data.length} member records`, - color: "blade_purple", - userId: ctx.session.user.discordUserId, - }); - - return data; - } catch (error) { - await log({ - title: "Member Export Failed", - message: `Failed to export member data: ${error instanceof Error ? error.message : "Unknown error"}`, - color: "uhoh_red", - userId: ctx.session.user.discordUserId, - }); - - throw error; - } - }), + exportAllMemberData: permProcedure.query(async ({ ctx }) => { + try { + controlPerms.or(["EXPORT_DATA"], ctx); + + const data = await db.query.Members.findMany(); + + await log({ + title: "Member Data Exported", + message: `Exported ${data.length} member records`, + color: "blade_purple", + userId: ctx.session.user.discordUserId, + }); + + return data; + } catch (error) { + await log({ + title: "Member Export Failed", + message: `Failed to export member data: ${error instanceof Error ? error.message : "Unknown error"}`, + color: "uhoh_red", + userId: ctx.session.user.discordUserId, + }); + + throw error; + } + }), }; ``` - ## Best Practices ### 1. Always Log State Changes @@ -332,14 +332,14 @@ Every mutation must log both success and failure. No exceptions. .mutation(async ({ input, ctx }) => { try { const result = await db.update(Something).set(input); - + await log({ title: "Something Updated", message: `Updated something with ID ${input.id}`, color: "success_green", userId: ctx.session.user.discordUserId, }); - + return result; } catch (error) { await log({ @@ -348,7 +348,7 @@ Every mutation must log both success and failure. No exceptions. color: "uhoh_red", userId: ctx.session.user.discordUserId, }); - + throw error; } }); @@ -393,14 +393,14 @@ import { TRPCError } from "@trpc/server"; try { const found = await db.query.Something.findFirst(); - + if (!found) { throw new TRPCError({ code: "NOT_FOUND", message: "Resource not found", }); } - + // ... rest of logic } catch (error) { await log({ @@ -409,7 +409,7 @@ try { color: "uhoh_red", userId: ctx.session.user.discordUserId, }); - + throw error; } ``` @@ -438,13 +438,13 @@ export const complexRouter = { .mutation(async ({ input, ctx }) => { // Check permissions first controlPerms.or(["COMPLEX_PERMISSION"], ctx); - + // Step 1: Fetch related data const data = await db.query.Something.findFirst(); - + // Step 2: Process based on business logic // Note: We do X because of Y business requirement - + // Step 3: Update database // ... }), diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index dc9660f7..bd806721 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -125,6 +125,7 @@ Shared constants used across the repository. - `Hacker`: Full profile for hackathon participants (national students) A single `User` can be both a `Member` and a `Hacker`. We separate these because Knight Hacks serves two distinct audiences: + - Local club members at UCF - National students attending our 1000+ person annual hackathon diff --git a/docs/GETTING-STARTED.md b/docs/GETTING-STARTED.md index 69fc7011..2532a800 100644 --- a/docs/GETTING-STARTED.md +++ b/docs/GETTING-STARTED.md @@ -157,15 +157,15 @@ Replace `@forge/blade` with any app name. When running the apps, they will be available at the following ports: -| App | Package Name | Port | URL | Description | -|-----|-------------|------|-----|-------------| -| Blade | `@forge/blade` | 3000 | http://localhost:3000 | Main monolithic app (membership, hacker registration, dues, events) | -| Club | `@forge/club` | 3001 | http://localhost:3001 | Club site (frontend only) | -| 2025 | `@forge/2025` | 3002 | http://localhost:3002 | Knight Hacks VIII 2025 hackathon site (frontend only) | -| Guild | `@forge/guild` | 3003 | http://localhost:3003 | Member networking site (Knight Hacks LinkedIn) | -| GemiKnights | `@forge/gemiknights` | 3005 | http://localhost:3005 | GemiKnights 2025 hackathon site (frontend only) | -| TK | `@forge/tk` | N/A | N/A | Discord bot for Knight Hacks server | -| Cron | `@forge/cron` | N/A | N/A | Cron job server | +| App | Package Name | Port | URL | Description | +| ----------- | -------------------- | ---- | --------------------- | ------------------------------------------------------------------- | +| Blade | `@forge/blade` | 3000 | http://localhost:3000 | Main monolithic app (membership, hacker registration, dues, events) | +| Club | `@forge/club` | 3001 | http://localhost:3001 | Club site (frontend only) | +| 2025 | `@forge/2025` | 3002 | http://localhost:3002 | Knight Hacks VIII 2025 hackathon site (frontend only) | +| Guild | `@forge/guild` | 3003 | http://localhost:3003 | Member networking site (Knight Hacks LinkedIn) | +| GemiKnights | `@forge/gemiknights` | 3005 | http://localhost:3005 | GemiKnights 2025 hackathon site (frontend only) | +| TK | `@forge/tk` | N/A | N/A | Discord bot for Knight Hacks server | +| Cron | `@forge/cron` | N/A | N/A | Cron job server | ## What Works Locally diff --git a/docs/GITHUB-ETIQUETTE.md b/docs/GITHUB-ETIQUETTE.md index c328547a..17865bd9 100644 --- a/docs/GITHUB-ETIQUETTE.md +++ b/docs/GITHUB-ETIQUETTE.md @@ -69,6 +69,7 @@ removed deprecated cron job ### Examples **Good:** + ``` added permission checks to events page fixed typo in email template @@ -76,6 +77,7 @@ updated dependencies to latest versions ``` **Avoid:** + ``` stuff asdfasdf @@ -90,6 +92,7 @@ All work starts with an issue. ### Who Can Create Issues Anyone can create issues: + - **Community members** can report bugs or request features - **Developers** create issues for work items - **External contributors** can create issues and pick them up @@ -103,6 +106,7 @@ Anyone can create issues: ### Issue Requirements Every issue must have: + 1. **At least one label** (see label guide below) 2. **An assignee** (if work has started or been claimed) @@ -131,6 +135,7 @@ The title must start with `[#XYZ]` where XYZ is the issue number. ### Examples **Good:** + ``` [#45] Add event registration form [#102] Fix member count display bug @@ -138,6 +143,7 @@ The title must start with `[#XYZ]` where XYZ is the issue number. ``` **Bad:** + ``` Add event registration form (missing issue number) [45] Fix bug (missing # symbol) @@ -167,6 +173,7 @@ A PR template is auto-populated when you create a PR. Fill it out completely: ### Draft PRs Draft PRs are encouraged for: + - Early feedback on approach - Work in progress that needs discussion - Large changes where you want direction before continuing @@ -235,6 +242,7 @@ Labels: Documentation, Minor All PRs are first reviewed by CodeRabbit (automated code review). **Your responsibilities:** + - Read all CodeRabbit comments - Either fix the issue or dismiss the comment with explanation - Don't ignore CodeRabbit - resolve or dismiss all comments @@ -263,10 +271,12 @@ pnpm build Once CodeRabbit is resolved and CI passes, request review from the dev team. **Review requirements:** + - **Minor changes** - 1 reviewer approval required - **Major changes** - 2+ reviewer approvals required **Review timeline:** + - Reviews typically take 1-3 days - Be patient but feel free to follow up if it's been >3 days @@ -280,6 +290,7 @@ When reviewers request changes: - Re-request review when ready **Be receptive to feedback:** + - Assume good intent - Ask questions if you don't understand - Explain your reasoning if you disagree @@ -288,10 +299,12 @@ When reviewers request changes: ### 5. Merging **Who can merge:** + - Maintainers can merge any PR - Developers (including you) can merge their own PRs **Merge requirements:** + - All CI checks must pass (no exceptions) - Required approvals received - CodeRabbit comments resolved or dismissed @@ -304,6 +317,7 @@ When reviewers request changes: ### Where to Communicate **Use PR comments for:** + - Questions about the code - Requesting clarification - Discussing implementation details @@ -311,6 +325,7 @@ When reviewers request changes: - Responding to review feedback **Avoid Discord for:** + - PR-specific discussions (these should be on GitHub) - Code review feedback - Technical implementation details @@ -320,6 +335,7 @@ Discord is fine for general questions, but keep PR discussions on GitHub to avoi ### Tagging People Tagging is appropriate when: + - Requesting review: `@username can you review this?` - Asking for specific expertise: `@username do you know how this works?` - Following up after 3+ days: `@username gentle ping on this PR` @@ -459,4 +475,4 @@ added email validation to member signup form - Read [CONTRIBUTING.md](../CONTRIBUTING.md) for general contribution guidelines - Review [Getting Started](./GETTING-STARTED.md) for setup instructions -- Check out [API & Permissions](./API-AND-PERMISSIONS.md) for forge specific backend development guidelines \ No newline at end of file +- Check out [API & Permissions](./API-AND-PERMISSIONS.md) for forge specific backend development guidelines diff --git a/package.json b/package.json index 9797e1e9..d43357e5 100644 --- a/package.json +++ b/package.json @@ -46,4 +46,4 @@ "@types/react-dom": "^18.3.1" } } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f52156e6..caf4f75b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,7 +240,7 @@ importers: version: 6.6.0 geist: specifier: ^1.3.1 - version: 1.5.1(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.5.1(next@14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) google-auth-library: specifier: ^9.15.0 version: 9.15.1 @@ -299,6 +299,9 @@ importers: '@forge/tsconfig': specifier: workspace:* version: link:../../tooling/typescript + '@types/canvas-confetti': + specifier: ^1.9.0 + version: 1.9.0 '@types/node': specifier: ^22.10.1 version: 22.19.8 @@ -355,7 +358,7 @@ importers: version: 12.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) geist: specifier: ^1.3.1 - version: 1.5.1(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.5.1(next@14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) gsap: specifier: ^3.12.7 version: 3.14.2 @@ -528,7 +531,7 @@ importers: version: 12.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) geist: specifier: ^1.3.1 - version: 1.5.1(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.5.1(next@14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) gsap: specifier: ^3.12.7 version: 3.14.2 @@ -577,7 +580,7 @@ importers: version: 7.4.4 eslint: specifier: 'catalog:' - version: 9.39.2(jiti@1.21.7) + version: 9.39.2(jiti@2.6.1) prettier: specifier: 'catalog:' version: 3.8.1 @@ -619,7 +622,7 @@ importers: version: 12.31.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) geist: specifier: ^1.3.1 - version: 1.5.1(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + version: 1.5.1(next@14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) gsap: specifier: ^3.12.7 version: 3.14.2 @@ -1272,7 +1275,7 @@ importers: version: link:../typescript eslint: specifier: 'catalog:' - version: 9.39.2(jiti@1.21.7) + version: 9.39.2(jiti@2.6.1) prettier: specifier: 'catalog:' version: 3.8.1 @@ -4278,6 +4281,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/canvas-confetti@1.9.0': + resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -10078,11 +10084,6 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@1.21.7))': - dependencies: - eslint: 9.39.2(jiti@1.21.7) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: eslint: 9.39.2(jiti@2.6.1) @@ -12073,6 +12074,8 @@ snapshots: tslib: 2.8.1 optional: true + '@types/canvas-confetti@1.9.0': {} + '@types/cookie@0.6.0': {} '@types/d3-array@3.2.2': {} @@ -13533,47 +13536,6 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2(jiti@1.21.7): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 1.21.7 - transitivePeerDependencies: - - supports-color - eslint@9.39.2(jiti@2.6.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -13810,7 +13772,7 @@ snapshots: - encoding - supports-color - geist@1.5.1(next@14.2.35(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + geist@1.5.1(next@14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: next: 14.2.35(@babel/core@7.29.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)