Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
1b2fc9b
chore: update dependencies and configurations
Spyderma9 Feb 25, 2026
f6889d1
fixed issues with updates and some errors
Spyderma9 Feb 25, 2026
9aabdf1
update layout and globals styles, refine tailwind configurations for …
Spyderma9 Feb 26, 2026
8198891
chore: enhance dev scripts with UI stream option
Spyderma9 Feb 26, 2026
da3f19b
update package versions and configurations for eslint, typescript, an…
Spyderma9 Feb 26, 2026
04f0e82
bump patch/minor dependencies to latest
Spyderma9 Feb 26, 2026
63f107f
chore: bump next 15→16, stripe 17→20, drizzle-kit 0.26→0.31, resend 3…
Spyderma9 Feb 26, 2026
d8971de
update eslint and prettier dependencies
Spyderma9 Feb 26, 2026
cfe448e
update some high-risk packages and fix breaking changes
Spyderma9 Feb 27, 2026
bf3300b
fix: resolve Next.js 16 and Tailwind v4 breaking changes across apps
Spyderma9 Feb 27, 2026
4d69851
style: refine component styles and improve layout consistency across …
Spyderma9 Feb 27, 2026
b125e6e
fix: update schema path in turbo.json to use local reference
Spyderma9 Feb 27, 2026
e3bae06
updated eslint version to 10.0.0 and remove unused @types/eslint__js …
Spyderma9 Feb 27, 2026
9cc85c2
update zod to v4.0.0 and react-day-picker to v9.14
Spyderma9 Feb 27, 2026
d660d95
Refactor code structure and remove redundant sections for improved re…
Spyderma9 Feb 27, 2026
6c07f47
fix: add support for dark mode class in Tailwind configuration
Spyderma9 Feb 27, 2026
32eb2a9
chore: update eslint dependencies to include @eslint/js version 10.0.0
Spyderma9 Feb 27, 2026
fafd764
refactor: simplify image processing in command handlers for better re…
Spyderma9 Feb 27, 2026
1887669
style: format pixel color retrieval for better readability across com…
Spyderma9 Feb 27, 2026
13abad8
fix: add TypeScript error suppression for activeIndex in Pie charts a…
Spyderma9 Feb 27, 2026
bb27543
Attempt to fix Eslint error and typescript check
Spyderma9 Feb 27, 2026
b38f6ed
fixed the TypeScript typecheck error
Spyderma9 Feb 27, 2026
1fc0247
fixed typecheck error 2
Spyderma9 Feb 27, 2026
377e2df
fixed lint errors
Spyderma9 Feb 27, 2026
a9081ba
fixed lint errors 2
Spyderma9 Feb 27, 2026
d7ec5a8
fix format error
Spyderma9 Feb 27, 2026
bcb932d
fixed remaining error on blade
Spyderma9 Feb 27, 2026
af23f7b
add tailwindCSS experimental config file settings
Spyderma9 Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,15 @@
{
"mode": "auto"
}
]
],
"css.lint.unknownAtRules": "ignore",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"tailwindCSS.experimental.configFile": {
"apps/blade/**": "apps/blade/tailwind.config.ts",
"apps/club/**": "apps/club/tailwind.config.ts",
"apps/guild/**": "apps/guild/tailwind.config.ts",
"apps/gemiknights/**": "apps/gemiknights/tailwind.config.ts",
"apps/2025/**": "apps/2025/tailwind.config.ts"
}
}
1 change: 0 additions & 1 deletion apps/2025/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ const config = {
transpilePackages: ["@forge/ui"],

/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },

/** Disable image optimization for static export */
Expand Down
49 changes: 24 additions & 25 deletions apps/2025/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,35 @@
"dependencies": {
"@forge/api": "workspace:*",
"@forge/ui": "workspace:*",
"@t3-oss/env-nextjs": "^0.11.1",
"@tanstack/react-query": "^5.69.0",
"@trpc/client": "^11.0.0",
"@trpc/react-query": "^11.0.0",
"@trpc/server": "^11.0.0",
"framer-motion": "^12.0.1",
"minimatch": "^10.2.1",
"next": "^14.2.26",
"react": "catalog:react18",
"react-dom": "catalog:react18",
"@t3-oss/env-nextjs": "^0.13.10",
"@tanstack/react-query": "^5.90.21",
"@trpc/client": "^11.10.0",
"@trpc/react-query": "^11.10.0",
"@trpc/server": "^11.10.0",
"framer-motion": "^12.34.3",
"minimatch": "^10.2.4",
"next": "^16.0.0",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"server-only": "^0.0.1",
"superjson": "2.2.1",
"superjson": "2.2.6",
"tailwindcss-animate": "^1.0.7",
"zod": "catalog:"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
"@tailwindcss/postcss": "^4.0.15",
"@types/minimatch": "^6.0.0",
"@types/node": "^20.16.11",
"@types/react": "catalog:react18",
"@types/react-dom": "catalog:react18",
"eslint": "^9.22.0",
"eslint-config-next": "^14.2.26",
"postcss": "^8.4.47",
"prettier": "^3.5.3",
"prettier-plugin-tailwindcss": "^0.6.8",
"tailwindcss": "^4.1.4",
"typescript": "~5.7.2",
"typescript-eslint": "^8.26.1"
"@eslint/eslintrc": "^3.3.4",
"@tailwindcss/postcss": "^4.2.1",
"@types/node": "^25.3.2",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"eslint": "catalog:",
"eslint-config-next": "^16.0.0",
"postcss": "^8.5.6",
"prettier": "^3.8.1",
"prettier-plugin-tailwindcss": "^0.7.2",
"tailwindcss": "catalog:",
"typescript": "^5.9.3",
"typescript-eslint": "^8.56.1"
},
"ct3aMetadata": {
"initVersion": "7.39.3"
Expand Down
14 changes: 7 additions & 7 deletions apps/2025/src/app/_components/navbar/FloatingNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
ref={skipLinkRef}
href="#main-content"
tabIndex={1}
className="sr-only fixed top-0 left-0 z-[10000] rounded-none bg-[#d83434] px-4 py-2 text-white focus:not-sr-only focus:absolute focus:top-4 focus:left-4"
className="sr-only fixed top-0 left-0 z-10000 rounded-none bg-[#d83434] px-4 py-2 text-white focus:not-sr-only focus:absolute focus:top-4 focus:left-4"
>
Skip to main content
</a>
Expand All @@ -271,7 +271,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
opacity: isNavVisible || isAtTop ? 1 : 0,
}}
transition={{ duration: 0.3, ease: "easeOut" }}
className="fixed top-4 left-1/2 z-[9999] hidden w-auto -translate-x-1/2 md:block"
className="fixed top-4 left-1/2 z-9999 hidden w-auto -translate-x-1/2 md:block"
role="navigation"
aria-label="Main navigation"
style={{
Expand Down Expand Up @@ -319,7 +319,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
handleDesktopNavClick(link.href);
}
}}
className={`tk-ccmeanwhile relative flex min-h-[48px] cursor-pointer items-center justify-center rounded-none px-3 py-3 text-base font-bold outline-1 -outline-offset-1 outline-black transition-all duration-200 focus:outline-4 focus:outline-offset-2 focus:outline-[#d83434] md:px-4 xl:text-lg ${
className={`tk-ccmeanwhile relative flex min-h-12 cursor-pointer items-center justify-center rounded-none px-3 py-3 text-base font-bold outline-1 -outline-offset-1 outline-black transition-all duration-200 focus:outline-4 focus:outline-offset-2 focus:outline-[#d83434] md:px-4 xl:text-lg ${
isActive
? "text-white shadow-lg"
: "text-slate-800 hover:text-white"
Expand Down Expand Up @@ -371,7 +371,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
opacity: isNavVisible || isAtTop ? 1 : 0,
}}
transition={{ duration: 0.3, ease: "easeOut" }}
className="mobile-nav-container fixed top-4 left-4 z-[9999] touch-manipulation md:hidden"
className="mobile-nav-container fixed top-4 left-4 z-9999 touch-manipulation md:hidden"
role="navigation"
aria-label="Mobile navigation"
style={{
Expand Down Expand Up @@ -430,7 +430,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
animate={{ opacity: 1, y: 0, scale: 1 }}
exit={{ opacity: 0, y: -20, scale: 0.95 }}
transition={{ duration: 0.2 }}
className="mobile-nav-container absolute top-full left-0 z-[9999] mt-2 touch-manipulation"
className="mobile-nav-container absolute top-full left-0 z-9999 mt-2 touch-manipulation"
style={{
WebkitTapHighlightColor: "transparent",
maxHeight: "calc(100vh - 100px)",
Expand All @@ -443,7 +443,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
<div className="group relative">
{/* Mobile menu with TextBox styling */}
<div className="relative 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">
<div className="min-w-[200px] space-y-2 p-3">
<div className="min-w-50 space-y-2 p-3">
{navLinks.map((link, index) => {
const isActive =
!isAtTop && activeSection === link.href.substring(1);
Expand All @@ -463,7 +463,7 @@ function FloatingNav({ navLinks }: FloatingNavProps) {
handleMobileNavClick(link.href);
}
}}
className={`tk-ccmeanwhile flex min-h-[48px] w-full cursor-pointer items-center rounded-none px-4 py-3 text-left text-base font-bold outline-1 -outline-offset-1 outline-black transition-all duration-200 focus:outline-4 focus:outline-offset-2 focus:outline-[#d83434] ${
className={`tk-ccmeanwhile flex min-h-12 w-full cursor-pointer items-center rounded-none px-4 py-3 text-left text-base font-bold outline-1 -outline-offset-1 outline-black transition-all duration-200 focus:outline-4 focus:outline-offset-2 focus:outline-[#d83434] ${
isActive
? "text-white shadow-md"
: "text-slate-800 hover:text-white"
Expand Down
8 changes: 3 additions & 5 deletions apps/2025/src/app/_components/navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,21 @@ const NAV_LINKS = [

const Navbar = () => {
const [showFloating, setShowFloating] = useState(false);
const [mounted, setMounted] = useState(false);

useEffect(() => {
setMounted(true);

const handleScroll = () => {
// Show navbar when scrolling, hide when at top
const shouldShow = window.scrollY > 50;
setShowFloating(shouldShow);
};

// set initial value without a dedicated mounted state
handleScroll();

window.addEventListener("scroll", handleScroll, { passive: true });
return () => window.removeEventListener("scroll", handleScroll);
}, []);

if (!mounted) return null;

return (
<>
<FloatingNav navLinks={NAV_LINKS} />
Expand Down
47 changes: 23 additions & 24 deletions apps/2025/src/app/_components/partners/partnerPosters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,33 +112,32 @@ export default function PartnerPosters() {
key={idx}
className={`${partner.mobilePosition} ${partner.gridPosition} stagger-item`}
>
<Link href={partner.link} passHref legacyBehavior>
<a
target="_blank"
rel="noopener noreferrer"
className="group relative flex h-full items-center justify-center rounded-none focus:outline-4 focus:outline-offset-2 focus:outline-[#FBB03B]"
>
{/* Main card */}
<div 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 hover:scale-[1.02] hover:shadow-2xl hover:ring-4 hover:shadow-[#FBB03B]/80 hover:ring-[#FBB03B]/50">
{/* subtle dot pattern */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(0,0,0,0.03)_1px,transparent_1px)] bg-size-[20px_20px] opacity-30" />
<Link
href={partner.link}
target="_blank"
rel="noopener noreferrer"
className="group relative flex h-full items-center justify-center rounded-none focus:outline-4 focus:outline-offset-2 focus:outline-[#FBB03B]"
>
{/* Main card */}
<div 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 hover:scale-[1.02] hover:shadow-2xl hover:ring-4 hover:shadow-[#FBB03B]/80 hover:ring-[#FBB03B]/50">
{/* subtle dot pattern */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(0,0,0,0.03)_1px,transparent_1px)] bg-size-[20px_20px] opacity-30" />

{/* logo container */}
<div className="relative flex h-full w-full items-center justify-center">
<Image
src={partner.src}
alt={partner.alt}
fill
className={`object-contain p-4 drop-shadow-sm md:p-8 ${partner.alt === "IEEE@UCF" ? "brightness-0 filter" : ""}`}
sizes="(max-width: 640px) 45vw, (max-width: 1024px) 25vw, 20vw"
draggable={false}
/>
</div>
{/* logo container */}
<div className="relative flex h-full w-full items-center justify-center">
<Image
src={partner.src}
alt={partner.alt}
fill
className={`object-contain p-4 drop-shadow-sm md:p-8 ${partner.alt === "IEEE@UCF" ? "brightness-0 filter" : ""}`}
sizes="(max-width: 640px) 45vw, (max-width: 1024px) 25vw, 20vw"
draggable={false}
/>
</div>
</div>

{/* Black drop shadow */}
<div className="absolute top-0 left-0 -z-10 h-full w-full rounded-none bg-black transition-transform duration-100 group-hover:translate-x-2 group-hover:translate-y-2" />
</a>
{/* Black drop shadow */}
<div className="absolute top-0 left-0 -z-10 h-full w-full rounded-none bg-black transition-transform duration-100 group-hover:translate-x-2 group-hover:translate-y-2" />
</Link>
</div>
))}
Expand Down
93 changes: 43 additions & 50 deletions apps/2025/src/app/_components/sponsors/sponsorPosters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -246,69 +246,62 @@ export default function SponsorPosters() {
>
<Link
href={sponsor.link}
passHref
legacyBehavior
aria-label={sponsor.ariaLabel}
target="_blank"
rel="noopener noreferrer"
className="group relative flex h-full items-center justify-center rounded-none focus:outline-4 focus:outline-offset-2 focus:outline-[#1570AD]"
>
<a
target="_blank"
rel="noopener noreferrer"
className="group relative flex h-full items-center justify-center rounded-none focus:outline-4 focus:outline-offset-2 focus:outline-[#1570AD]"
{/* Main card */}
<div
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}`}
>
{/* Main card */}
<div
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 */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(0,0,0,0.03)_1px,transparent_1px)] bg-size-[20px_20px] opacity-30" />
{/* subtle dot pattern */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(0,0,0,0.03)_1px,transparent_1px)] bg-size-[20px_20px] opacity-30" />

{/* logo container */}
<div className="relative flex h-full w-full items-center justify-center">
{sponsor.alt === "GOOGLE" ? (
<>
<Image
src="/sponsorSectionSvgs/google-mobile.svg"
alt={sponsor.alt}
fill
className="object-contain p-4 drop-shadow-sm sm:hidden"
sizes="45vw"
draggable={false}
/>
<Image
src="/sponsorSectionSvgs/google.svg"
alt={sponsor.alt}
fill
className="hidden object-contain p-8 drop-shadow-sm sm:block"
sizes="(max-width: 1024px) 16vw, 12vw"
draggable={false}
/>
</>
) : (
{/* logo container */}
<div className="relative flex h-full w-full items-center justify-center">
{sponsor.alt === "GOOGLE" ? (
<>
<Image
src={sponsor.src}
src="/sponsorSectionSvgs/google-mobile.svg"
alt={sponsor.alt}
fill
className={`object-contain drop-shadow-sm ${
sponsor.alt === "NVIDIA"
? "p-2 sm:p-4 md:scale-125 md:p-6"
: "p-4 md:p-8"
} ${sponsor.alt === "GITHUB" ? "p-2 sm:p-4 md:scale-125 md:p-6" : ""} ${
sponsor.alt === "SHINIES PROPS"
? "brightness-0"
: ""
}`}
sizes="(max-width: 640px) 45vw, (max-width: 1024px) 16vw, 12vw"
className="object-contain p-4 drop-shadow-sm sm:hidden"
sizes="45vw"
draggable={false}
/>
)}
</div>
<Image
src="/sponsorSectionSvgs/google.svg"
alt={sponsor.alt}
fill
className="hidden object-contain p-8 drop-shadow-sm sm:block"
sizes="(max-width: 1024px) 16vw, 12vw"
draggable={false}
/>
</>
) : (
<Image
src={sponsor.src}
alt={sponsor.alt}
fill
className={`object-contain drop-shadow-sm ${
sponsor.alt === "NVIDIA"
? "p-2 sm:p-4 md:scale-125 md:p-6"
: "p-4 md:p-8"
} ${sponsor.alt === "GITHUB" ? "p-2 sm:p-4 md:scale-125 md:p-6" : ""} ${
sponsor.alt === "SHINIES PROPS"
? "brightness-0"
: ""
}`}
sizes="(max-width: 640px) 45vw, (max-width: 1024px) 16vw, 12vw"
draggable={false}
/>
)}
</div>
</div>

{/* Black drop shadow */}
<div className="absolute top-0 left-0 -z-10 h-full w-full rounded-none bg-black transition-transform duration-100 group-hover:translate-x-2 group-hover:translate-y-2" />
</a>
{/* Black drop shadow */}
<div className="absolute top-0 left-0 -z-10 h-full w-full rounded-none bg-black transition-transform duration-100 group-hover:translate-x-2 group-hover:translate-y-2" />
</Link>
</div>
);
Expand Down
1 change: 0 additions & 1 deletion apps/2025/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ export const metadata: Metadata = {
},
],
},
themeColor: "#c84c3c",
};

export const viewport: Viewport = {
Expand Down
1 change: 0 additions & 1 deletion apps/blade/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ const config = {
],

/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },

images: {
Expand Down
Loading