diff --git a/.coderabbit.yml b/.coderabbit.yml index 80add6faf..0ef78013f 100644 --- a/.coderabbit.yml +++ b/.coderabbit.yml @@ -62,6 +62,8 @@ reviews: # Package labels - label: "API" instructions: "Apply when PR changes files in packages/api/** (tRPC routers, procedures)" + - label: "Constants" + instructions: "Apply when PR changes files in packages/consts/** (constants)" - label: "UI" instructions: "Apply when PR changes files in packages/ui/** (shared component library)" - label: "Database" @@ -170,8 +172,14 @@ reviews: - path: "packages/consts/**" instructions: | - Shared constants. Changes here affect the entire monorepo. - Ensure values are correct and changes are intentional. + Shared constants used across all apps and packages. Changes here affect the entire monorepo. Check: + - All constant names follow SCREAMING_SNAKE_CASE convention + - Values are intentional and well-documented (Discord IDs, API endpoints, role IDs, etc.) + - URLs and external API endpoints are correct and won't break integrations + - Type definitions are properly exported and used + - Constants do not contain sensitive data + - PROD and DEV constants are prefixed accordingly + - Exported values have valid reason to be shared repository wide # Applications - path: "apps/blade/**" diff --git a/apps/2025/package.json b/apps/2025/package.json index 30573d3ae..79ca99f1c 100644 --- a/apps/2025/package.json +++ b/apps/2025/package.json @@ -17,7 +17,6 @@ }, "dependencies": { "@forge/api": "workspace:*", - "@forge/consts": "workspace:*", "@forge/ui": "workspace:*", "@t3-oss/env-nextjs": "^0.11.1", "@tanstack/react-query": "^5.69.0", diff --git a/apps/blade/src/app/_components/bad-perms.tsx b/apps/blade/src/app/_components/bad-perms.tsx index bc1c605e6..4324c9713 100644 --- a/apps/blade/src/app/_components/bad-perms.tsx +++ b/apps/blade/src/app/_components/bad-perms.tsx @@ -1,12 +1,11 @@ import { ShieldX } from "lucide-react"; -import type { PermissionKey } from "@forge/consts/knight-hacks"; -import { PERMISSION_DATA } from "@forge/consts/knight-hacks"; +import { PERMISSIONS } from "@forge/consts"; -export function BadPerms({ perms }: { perms: PermissionKey[] }) { +export function BadPerms({ perms }: { perms: PERMISSIONS.PermissionKey[] }) { const permNames: string[] = []; perms.forEach((v) => { - const permissionData = PERMISSION_DATA[v]; + const permissionData = PERMISSIONS.PERMISSION_DATA[v]; if (permissionData) permNames.push(permissionData.name); }); diff --git a/apps/blade/src/app/_components/discord-modal.tsx b/apps/blade/src/app/_components/discord-modal.tsx index ba40d8fc9..7594fb373 100644 --- a/apps/blade/src/app/_components/discord-modal.tsx +++ b/apps/blade/src/app/_components/discord-modal.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import Image from "next/image"; -import { PERMANENT_DISCORD_INVITE } from "@forge/consts/knight-hacks"; +import { DISCORD } from "@forge/consts"; import { Button } from "@forge/ui/button"; import { Dialog, @@ -48,7 +48,7 @@ export function TacoTuesday({ initialState }: { initialState: boolean }) { className="text-md w-3/4" onClick={() => window.open( - PERMANENT_DISCORD_INVITE, + DISCORD.PERMANENT_INVITE, "_blank", "noopener,noreferrer", ) diff --git a/apps/blade/src/app/_components/navigation/reusable-user-dropdown.tsx b/apps/blade/src/app/_components/navigation/reusable-user-dropdown.tsx index aef60f732..a01b7dd1f 100644 --- a/apps/blade/src/app/_components/navigation/reusable-user-dropdown.tsx +++ b/apps/blade/src/app/_components/navigation/reusable-user-dropdown.tsx @@ -12,7 +12,7 @@ import { Users, } from "lucide-react"; -import type { PermissionKey } from "@forge/consts/knight-hacks"; +import type { PERMISSIONS } from "@forge/consts"; import { USER_DROPDOWN_ICON_COLOR, USER_DROPDOWN_ICON_SIZE } from "~/consts"; @@ -29,8 +29,8 @@ export interface roleItems { component: React.JSX.Element; route: string; requiredPermissions?: { - or?: PermissionKey[]; - and?: PermissionKey[]; + or?: PERMISSIONS.PermissionKey[]; + and?: PERMISSIONS.PermissionKey[]; }; } diff --git a/apps/blade/src/app/_components/navigation/user-dropdown.tsx b/apps/blade/src/app/_components/navigation/user-dropdown.tsx index 667678f64..17719c495 100644 --- a/apps/blade/src/app/_components/navigation/user-dropdown.tsx +++ b/apps/blade/src/app/_components/navigation/user-dropdown.tsx @@ -3,7 +3,7 @@ import { useRouter } from "next/navigation"; import { LayoutDashboard } from "lucide-react"; -import type { PermissionKey } from "@forge/consts/knight-hacks"; +import type { PERMISSIONS } from "@forge/consts"; import { signOut } from "@forge/auth"; import { Avatar, AvatarFallback, AvatarImage } from "@forge/ui/avatar"; import { Button } from "@forge/ui/button"; @@ -29,7 +29,7 @@ import { } from "./reusable-user-dropdown"; interface UserDropdownProps { - permissions: Record; + permissions: Record; } /** @@ -37,7 +37,7 @@ interface UserDropdownProps { */ function filterItemsByPermissions( items: roleItems[], - permissions: Record, + permissions: Record, ): roleItems[] { return items.filter((item) => { // If no permissions required, show the item diff --git a/apps/blade/src/app/admin/_components/GenderPie.tsx b/apps/blade/src/app/admin/_components/GenderPie.tsx index 78f3c9a3c..ef18aeca1 100644 --- a/apps/blade/src/app/admin/_components/GenderPie.tsx +++ b/apps/blade/src/app/admin/_components/GenderPie.tsx @@ -4,9 +4,8 @@ import type { PieSectorDataItem } from "recharts/types/polar/Pie"; import { useEffect, useMemo, useState } from "react"; import { Cell, Label, Pie, PieChart, Sector } from "recharts"; -import type { GENDERS } from "@forge/consts/knight-hacks"; import type { ChartConfig } from "@forge/ui/chart"; -import { ADMIN_PIE_CHART_COLORS } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -23,7 +22,7 @@ import { } from "@forge/ui/select"; interface Person { - gender?: (typeof GENDERS)[number]; + gender?: (typeof FORMS.GENDERS)[number]; } export default function GenderPie({ people }: { people: Person[] }) { @@ -61,7 +60,10 @@ export default function GenderPie({ people }: { people: Person[] }) { if (gender && !baseConfig[gender]) { baseConfig[gender] = { label: gender, - color: ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + color: + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -192,8 +194,8 @@ export default function GenderPie({ people }: { people: Person[] }) { diff --git a/apps/blade/src/app/admin/_components/MajorBarChart.tsx b/apps/blade/src/app/admin/_components/MajorBarChart.tsx index 8bc6a4ae4..19031fbcf 100644 --- a/apps/blade/src/app/admin/_components/MajorBarChart.tsx +++ b/apps/blade/src/app/admin/_components/MajorBarChart.tsx @@ -9,7 +9,7 @@ import { YAxis, } from "recharts"; -import type { MAJORS } from "@forge/consts/knight-hacks"; +import type { FORMS } from "@forge/consts"; import type { ChartConfig } from "@forge/ui/chart"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, ChartTooltip } from "@forge/ui/chart"; @@ -22,7 +22,7 @@ const chartConfig = { } satisfies ChartConfig; interface Person { - major?: (typeof MAJORS)[number]; + major?: (typeof FORMS.MAJORS)[number]; } export default function MajorBarChart({ people }: { people: Person[] }) { diff --git a/apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx b/apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx index c4a117895..d07657bc1 100644 --- a/apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx +++ b/apps/blade/src/app/admin/_components/RaceOrEthnicityPie.tsx @@ -5,11 +5,7 @@ import { useEffect, useMemo, useState } from "react"; import { Cell, Label, Pie, PieChart, Sector } from "recharts"; import type { ChartConfig } from "@forge/ui/chart"; -import { - ADMIN_PIE_CHART_COLORS, - RACES_OR_ETHNICITIES, - SHORT_RACES_AND_ETHNICITIES, -} from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -26,17 +22,17 @@ import { } from "@forge/ui/select"; interface Person { - raceOrEthnicity?: (typeof RACES_OR_ETHNICITIES)[number]; + raceOrEthnicity?: (typeof FORMS.RACES_OR_ETHNICITIES)[number]; } const shortenRaceOrEthnicity = (raceOrEthnicity: string): string => { const replacements: Record = { // Native Hawaiian or Other Pacific Islander - [RACES_OR_ETHNICITIES[4]]: SHORT_RACES_AND_ETHNICITIES[0], // Native Hawaiian/Pacific Islander + [FORMS.RACES_OR_ETHNICITIES[4]]: FORMS.SHORT_RACES_AND_ETHNICITIES[0], // Native Hawaiian/Pacific Islander // Hispanic / Latino / Spanish Origin - [RACES_OR_ETHNICITIES[2]]: SHORT_RACES_AND_ETHNICITIES[1], // Hispanic/Latino + [FORMS.RACES_OR_ETHNICITIES[2]]: FORMS.SHORT_RACES_AND_ETHNICITIES[1], // Hispanic/Latino // Native American or Alaskan Native - [RACES_OR_ETHNICITIES[5]]: SHORT_RACES_AND_ETHNICITIES[2], // Native American/Alaskan Native + [FORMS.RACES_OR_ETHNICITIES[5]]: FORMS.SHORT_RACES_AND_ETHNICITIES[2], // Native American/Alaskan Native }; return replacements[raceOrEthnicity] ?? raceOrEthnicity; }; @@ -83,7 +79,9 @@ export default function RaceOrEthnicityPie({ people }: { people: Person[] }) { baseConfig[shortenedString] = { label: shortenedString, color: - ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -217,8 +215,8 @@ export default function RaceOrEthnicityPie({ people }: { people: Person[] }) { diff --git a/apps/blade/src/app/admin/_components/SchoolBarChart.tsx b/apps/blade/src/app/admin/_components/SchoolBarChart.tsx index 5e2e99a75..2ff31a0d8 100644 --- a/apps/blade/src/app/admin/_components/SchoolBarChart.tsx +++ b/apps/blade/src/app/admin/_components/SchoolBarChart.tsx @@ -9,7 +9,7 @@ import { YAxis, } from "recharts"; -import type { SCHOOLS } from "@forge/consts/knight-hacks"; +import type { FORMS } from "@forge/consts"; import type { ChartConfig } from "@forge/ui/chart"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, ChartTooltip } from "@forge/ui/chart"; @@ -22,7 +22,7 @@ const chartConfig = { } satisfies ChartConfig; interface Person { - school?: (typeof SCHOOLS)[number]; + school?: (typeof FORMS.SCHOOLS)[number]; } export default function SchoolBarChart({ people }: { people: Person[] }) { diff --git a/apps/blade/src/app/admin/_components/SchoolYearPie.tsx b/apps/blade/src/app/admin/_components/SchoolYearPie.tsx index a8de00f65..3cb2e2166 100644 --- a/apps/blade/src/app/admin/_components/SchoolYearPie.tsx +++ b/apps/blade/src/app/admin/_components/SchoolYearPie.tsx @@ -5,11 +5,7 @@ import { useEffect, useMemo, useState } from "react"; import { Cell, Label, Pie, PieChart, Sector } from "recharts"; import type { ChartConfig } from "@forge/ui/chart"; -import { - ADMIN_PIE_CHART_COLORS, - LEVELS_OF_STUDY, - SHORT_LEVELS_OF_STUDY, -} from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -26,17 +22,17 @@ import { } from "@forge/ui/select"; interface Person { - levelOfStudy?: (typeof LEVELS_OF_STUDY)[number]; + levelOfStudy?: (typeof FORMS.LEVELS_OF_STUDY)[number]; } const shortenLevelOfStudy = (levelOfStudy: string): string => { const replacements: Record = { // Undergraduate University (2 year - community college or similar) - [LEVELS_OF_STUDY[2]]: SHORT_LEVELS_OF_STUDY[0], // Undergraduate University (2 year) + [FORMS.LEVELS_OF_STUDY[2]]: FORMS.SHORT_LEVELS_OF_STUDY[0], // Undergraduate University (2 year) // Graduate University (Masters, Professional, Doctoral, etc) - [LEVELS_OF_STUDY[4]]: SHORT_LEVELS_OF_STUDY[1], // Graduate University (Masters/PhD) + [FORMS.LEVELS_OF_STUDY[4]]: FORMS.SHORT_LEVELS_OF_STUDY[1], // Graduate University (Masters/PhD) // Other Vocational / Trade Program or Apprenticeship - [LEVELS_OF_STUDY[6]]: SHORT_LEVELS_OF_STUDY[2], // Vocational/Trade School + [FORMS.LEVELS_OF_STUDY[6]]: FORMS.SHORT_LEVELS_OF_STUDY[2], // Vocational/Trade School }; return replacements[levelOfStudy] ?? levelOfStudy; }; @@ -84,7 +80,10 @@ export default function SchoolYearPie({ people }: { people: Person[] }) { if (shortenedString && !baseConfig[shortenedString]) { baseConfig[shortenedString] = { label: shortenedString, - color: ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + color: + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -217,8 +216,8 @@ export default function SchoolYearPie({ people }: { people: Person[] }) { diff --git a/apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx b/apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx index 878d465f4..cbc9e7379 100644 --- a/apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx +++ b/apps/blade/src/app/admin/club/data/_components/EventDemographics.tsx @@ -2,11 +2,7 @@ import { useState } from "react"; -import type { Semester } from "@forge/consts/knight-hacks"; -import { - ALL_DATES_RANGE_UNIX, - SEMESTER_START_DATES, -} from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Checkbox } from "@forge/ui/checkbox"; import { Select, @@ -25,16 +21,16 @@ import { WeekdayPopularityRadar } from "./event-data/WeekdayPopularityRadar"; export default function EventDemographics() { const { data: events } = api.event.getEvents.useQuery(); - const semestersArr: Semester[] = [ + const semestersArr: FORMS.Semester[] = [ { name: "All Semesters", - startDate: new Date(ALL_DATES_RANGE_UNIX.start), - endDate: new Date(ALL_DATES_RANGE_UNIX.end), + startDate: new Date(FORMS.ALL_DATES_RANGE_UNIX.start), + endDate: new Date(FORMS.ALL_DATES_RANGE_UNIX.end), }, ]; // for select options const defaultSemester = semestersArr[0] ?? null; - const [activeSemester, setActiveSemester] = useState( + const [activeSemester, setActiveSemester] = useState( defaultSemester, ); const [includeHackathons, setIncludeHackathons] = useState(false); @@ -43,13 +39,13 @@ export default function EventDemographics() { events?.forEach(({ start_datetime }) => { const year = start_datetime.getFullYear(); const springStart = new Date( - `${year}-${SEMESTER_START_DATES.spring.month + 1}-${SEMESTER_START_DATES.spring.day}`, + `${year}-${FORMS.SEMESTER_START_DATES.spring.month + 1}-${FORMS.SEMESTER_START_DATES.spring.day}`, ); const summerStart = new Date( - `${year}-${SEMESTER_START_DATES.summer.month + 1}-${SEMESTER_START_DATES.summer.day}`, + `${year}-${FORMS.SEMESTER_START_DATES.summer.month + 1}-${FORMS.SEMESTER_START_DATES.summer.day}`, ); const fallStart = new Date( - `${year}-${SEMESTER_START_DATES.fall.month + 1}-${SEMESTER_START_DATES.fall.day}`, + `${year}-${FORMS.SEMESTER_START_DATES.fall.month + 1}-${FORMS.SEMESTER_START_DATES.fall.day}`, ); // keep track of semesters that exist in events table of db @@ -58,7 +54,7 @@ export default function EventDemographics() { if (!semestersSet.has(semesterName)) { semestersSet.add(semesterName); const springEnd = new Date( - `${year}-${SEMESTER_START_DATES.summer.month + 1}-${SEMESTER_START_DATES.summer.day}`, + `${year}-${FORMS.SEMESTER_START_DATES.summer.month + 1}-${FORMS.SEMESTER_START_DATES.summer.day}`, ); semestersArr.push({ name: semesterName, @@ -71,7 +67,7 @@ export default function EventDemographics() { if (!semestersSet.has(semesterName)) { semestersSet.add(semesterName); const summerEnd = new Date( - `${year}-${SEMESTER_START_DATES.fall.month + 1}-${SEMESTER_START_DATES.fall.day}`, + `${year}-${FORMS.SEMESTER_START_DATES.fall.month + 1}-${FORMS.SEMESTER_START_DATES.fall.day}`, ); semestersArr.push({ name: semesterName, @@ -87,7 +83,7 @@ export default function EventDemographics() { if (!semestersSet.has(semesterName)) { semestersSet.add(semesterName); const fallEnd = new Date( - `${year + 1}-${SEMESTER_START_DATES.spring.month + 1}-${SEMESTER_START_DATES.spring.day}`, + `${year + 1}-${FORMS.SEMESTER_START_DATES.spring.month + 1}-${FORMS.SEMESTER_START_DATES.spring.day}`, ); semestersArr.push({ name: semesterName, diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx b/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx index 96830ec29..36416ce79 100644 --- a/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx +++ b/apps/blade/src/app/admin/club/data/_components/event-data/AttendancesBarChart.tsx @@ -11,7 +11,7 @@ import { import type { ReturnEvent } from "@forge/db/schemas/knight-hacks"; import type { ChartConfig } from "@forge/ui/chart"; -import { ADMIN_PIE_CHART_COLORS } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -33,7 +33,7 @@ export default function AttendancesBarChart({ if (!baseConfig[tag]) { baseConfig[tag] = { label: tag, - color: ADMIN_PIE_CHART_COLORS[6], + color: FORMS.ADMIN_PIE_CHART_COLORS[6], }; } }); @@ -57,7 +57,7 @@ export default function AttendancesBarChart({ ([tag, { totalAttendees, totalEvents }]) => ({ tag: tag, avgAttendees: (totalAttendees / totalEvents).toFixed(0), - fill: baseConfig[tag]?.color ?? ADMIN_PIE_CHART_COLORS[6], + fill: baseConfig[tag]?.color ?? FORMS.ADMIN_PIE_CHART_COLORS[6], }), ); diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx b/apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx index d78a369ce..40197c868 100644 --- a/apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx +++ b/apps/blade/src/app/admin/club/data/_components/event-data/PopularityRanking.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import type { ReturnEvent } from "@forge/db/schemas/knight-hacks"; -import { RANKING_STYLES } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Button } from "@forge/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; @@ -36,7 +36,7 @@ export default function PopularityRanking({ (event, index: number) => (
  • {index + 1}. {event.name} [{event.tag.toUpperCase()} diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx b/apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx index 45f260187..ab7bf1a06 100644 --- a/apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx +++ b/apps/blade/src/app/admin/club/data/_components/event-data/TypePie.tsx @@ -6,7 +6,7 @@ import { Cell, Label, Pie, PieChart, Sector } from "recharts"; import type { ReturnEvent } from "@forge/db/schemas/knight-hacks"; import type { ChartConfig } from "@forge/ui/chart"; -import { ADMIN_PIE_CHART_COLORS } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -66,7 +66,10 @@ export default function TypePie({ events }: { events: ReturnEvent[] }) { if (!baseConfig[tag]) { baseConfig[tag] = { label: tag, - color: ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + color: + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -183,8 +186,8 @@ export default function TypePie({ events }: { events: ReturnEvent[] }) { diff --git a/apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx b/apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx index 659754b1d..e7caef5c1 100644 --- a/apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx +++ b/apps/blade/src/app/admin/club/data/_components/event-data/WeekdayPopularityRadar.tsx @@ -10,10 +10,7 @@ import { import type { ReturnEvent } from "@forge/db/schemas/knight-hacks"; import type { ChartConfig } from "@forge/ui/chart"; -import { - ADMIN_PIE_CHART_COLORS, - WEEKDAY_ORDER, -} from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -25,7 +22,7 @@ export function WeekdayPopularityRadar({ events }: { events: ReturnEvent[] }) { const chartConfig = { attendees: { label: "Average attendees", - color: ADMIN_PIE_CHART_COLORS[1], + color: FORMS.ADMIN_PIE_CHART_COLORS[1], }, } satisfies ChartConfig; @@ -106,11 +103,12 @@ export function WeekdayPopularityRadar({ events }: { events: ReturnEvent[] }) { .map(([weekday, { totalAttendees, totalEvents }]) => ({ weekday: weekday, avgAttendees: (totalAttendees / totalEvents).toFixed(0), - fill: ADMIN_PIE_CHART_COLORS[1], + fill: FORMS.ADMIN_PIE_CHART_COLORS[1], })) .sort( (a, b) => - WEEKDAY_ORDER.indexOf(a.weekday) - WEEKDAY_ORDER.indexOf(b.weekday), + FORMS.WEEKDAY_ORDER.indexOf(a.weekday) - + FORMS.WEEKDAY_ORDER.indexOf(b.weekday), ); const maxAvgAttendees = Math.max( @@ -145,7 +143,7 @@ export function WeekdayPopularityRadar({ events }: { events: ReturnEvent[] }) { diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx b/apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx index a1ccd19d8..262065d0d 100644 --- a/apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx +++ b/apps/blade/src/app/admin/club/data/_components/member-data/SchoolBarChart.tsx @@ -9,7 +9,7 @@ import { YAxis, } from "recharts"; -import type { SCHOOLS } from "@forge/consts/knight-hacks"; +import type { FORMS } from "@forge/consts"; import type { ChartConfig } from "@forge/ui/chart"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, ChartTooltip } from "@forge/ui/chart"; @@ -22,7 +22,7 @@ const chartConfig = { } satisfies ChartConfig; interface Member { - school?: (typeof SCHOOLS)[number]; + school?: (typeof FORMS.SCHOOLS)[number]; } export default function SchoolBarChart({ members }: { members: Member[] }) { diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx b/apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx index 939dbc102..dfbf82f53 100644 --- a/apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx +++ b/apps/blade/src/app/admin/club/data/_components/member-data/ShirtSizePie.tsx @@ -4,9 +4,8 @@ import type { PieSectorDataItem } from "recharts/types/polar/Pie"; import { useEffect, useMemo, useState } from "react"; import { Cell, Label, Pie, PieChart, Sector } from "recharts"; -import type { SHIRT_SIZES } from "@forge/consts/knight-hacks"; import type { ChartConfig } from "@forge/ui/chart"; -import { ADMIN_PIE_CHART_COLORS } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -23,7 +22,7 @@ import { } from "@forge/ui/select"; interface Member { - shirtSize?: (typeof SHIRT_SIZES)[number]; + shirtSize?: (typeof FORMS.SHIRT_SIZES)[number]; } export default function ShirtSizePie({ members }: { members: Member[] }) { @@ -66,7 +65,10 @@ export default function ShirtSizePie({ members }: { members: Member[] }) { if (shirtSize && !baseConfig[shirtSize]) { baseConfig[shirtSize] = { label: shirtSize, - color: ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + color: + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -197,8 +199,8 @@ export default function ShirtSizePie({ members }: { members: Member[] }) { diff --git a/apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx b/apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx index f0d46b3dd..cbfa47939 100644 --- a/apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx +++ b/apps/blade/src/app/admin/club/data/_components/member-data/YearOfStudyPie.tsx @@ -5,7 +5,7 @@ import { useEffect, useMemo, useState } from "react"; import { Cell, Label, Pie, PieChart, Sector } from "recharts"; import type { ChartConfig } from "@forge/ui/chart"; -import { ADMIN_PIE_CHART_COLORS } from "@forge/consts/knight-hacks"; +import { FORMS } from "@forge/consts"; import { Card, CardContent, CardHeader, CardTitle } from "@forge/ui/card"; import { ChartContainer, @@ -129,7 +129,10 @@ export default function YearOfStudyPie({ members }: YearOfStudyPieProps) { if (!baseConfig[name]) { baseConfig[name] = { label: name, - color: ADMIN_PIE_CHART_COLORS[colorIdx % ADMIN_PIE_CHART_COLORS.length], + color: + FORMS.ADMIN_PIE_CHART_COLORS[ + colorIdx % FORMS.ADMIN_PIE_CHART_COLORS.length + ], }; colorIdx++; } @@ -258,8 +261,8 @@ export default function YearOfStudyPie({ members }: YearOfStudyPieProps) { diff --git a/apps/blade/src/app/admin/club/events/_components/create-event.tsx b/apps/blade/src/app/admin/club/events/_components/create-event.tsx index e00c3fb0f..89ff35b70 100644 --- a/apps/blade/src/app/admin/club/events/_components/create-event.tsx +++ b/apps/blade/src/app/admin/club/events/_components/create-event.tsx @@ -4,7 +4,7 @@ import { useState } from "react"; import { Loader2, Plus } from "lucide-react"; import { z } from "zod"; -import { EVENT_TAGS } from "@forge/consts/knight-hacks"; +import { EVENTS } from "@forge/consts"; import { InsertEventSchema } from "@forge/db/schemas/knight-hacks"; import { Button } from "@forge/ui/button"; import { Checkbox } from "@forge/ui/checkbox"; @@ -101,7 +101,7 @@ export function CreateEventButton() { description: "", dues_paying: false, location: "", - tag: EVENT_TAGS[0], + tag: EVENTS.EVENT_TAGS[0], hackathonId: "none", startDate: "", endDate: "", @@ -261,7 +261,7 @@ export function CreateEventButton() { - {EVENT_TAGS.map((tagOption) => ( + {EVENTS.EVENT_TAGS.map((tagOption) => ( {tagOption} diff --git a/apps/blade/src/app/admin/club/events/_components/delete-event.tsx b/apps/blade/src/app/admin/club/events/_components/delete-event.tsx index 65237c76d..fac4780a0 100644 --- a/apps/blade/src/app/admin/club/events/_components/delete-event.tsx +++ b/apps/blade/src/app/admin/club/events/_components/delete-event.tsx @@ -3,8 +3,8 @@ import { useState } from "react"; import { Loader2, Trash2 } from "lucide-react"; -import type { EVENT_TAGS } from "@forge/consts/knight-hacks"; -import { USE_CAUTION } from "@forge/consts/knight-hacks"; +import type { EVENTS } from "@forge/consts"; +import { CLUB } from "@forge/consts"; import { Button } from "@forge/ui/button"; import { Dialog, @@ -26,7 +26,7 @@ interface DeleteEventButtonProps { discordId: string; googleId: string; name: string; - tag: (typeof EVENT_TAGS)[number]; + tag: (typeof EVENTS.EVENT_TAGS)[number]; }; } @@ -112,7 +112,7 @@ export function DeleteEventButton({ event }: DeleteEventButtonProps) {