From 6e1450f178b62863802affa3e0ad4ff2f4ff1d0d Mon Sep 17 00:00:00 2001
From: Tyler Diorio <109099227+TylerDiorio@users.noreply.github.com>
Date: Mon, 22 Jun 2026 12:17:13 -0700
Subject: [PATCH 01/11] initial
---
app/catalyst-nyc/page.tsx | 50 ++++++++++++
components/catalyst/CatalystAuthHeader.tsx | 52 ++++++++++++
components/catalyst/CatalystLockup.tsx | 81 +++++++++++++++++++
components/catalyst/CatalystSignupTrigger.tsx | 25 ++++++
components/catalyst/catalystTokens.ts | 21 +++++
components/modals/Auth/AuthModal.tsx | 24 +++++-
components/modals/SignupModalContainer.tsx | 1 +
contexts/AuthModalContext.tsx | 21 ++++-
8 files changed, 269 insertions(+), 6 deletions(-)
create mode 100644 app/catalyst-nyc/page.tsx
create mode 100644 components/catalyst/CatalystAuthHeader.tsx
create mode 100644 components/catalyst/CatalystLockup.tsx
create mode 100644 components/catalyst/CatalystSignupTrigger.tsx
create mode 100644 components/catalyst/catalystTokens.ts
diff --git a/app/catalyst-nyc/page.tsx b/app/catalyst-nyc/page.tsx
new file mode 100644
index 000000000..e1811a163
--- /dev/null
+++ b/app/catalyst-nyc/page.tsx
@@ -0,0 +1,50 @@
+import { Metadata } from 'next';
+import { getServerSession } from 'next-auth/next';
+import { authOptions } from '@/app/api/auth/[...nextauth]/auth.config';
+import { buildOpenGraphMetadata } from '@/lib/metadata';
+import { handleTrendingRedirect } from '@/utils/navigation';
+import { LandingPage } from '@/components/landing/LandingPage';
+import { CatalystSignupTrigger } from '@/components/catalyst/CatalystSignupTrigger';
+
+export const metadata: Metadata = {
+ ...buildOpenGraphMetadata({
+ title: 'Catalyst NYC — Join ResearchHub',
+ description:
+ 'Catalyst NYC attendees: join ResearchHub and get $500 in Funding Credits to fund real research. Your credits earn yield daily in the ResearchHub Endowment.',
+ url: '/catalyst-nyc',
+ }),
+ // Event-specific QR landing; keep it out of search results.
+ robots: {
+ index: false,
+ follow: false,
+ nocache: true,
+ },
+};
+
+export default async function CatalystNycPage({
+ searchParams,
+}: {
+ searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
+}) {
+ const session = await getServerSession(authOptions);
+
+ const resolvedSearchParams = await searchParams;
+
+ const urlSearchParams = new URLSearchParams();
+ Object.entries(resolvedSearchParams).forEach(([key, value]) => {
+ if (typeof value === 'string') {
+ urlSearchParams.set(key, value);
+ } else if (Array.isArray(value) && value.length > 0) {
+ urlSearchParams.set(key, value[0]);
+ }
+ });
+
+ handleTrendingRedirect(!!session?.user, urlSearchParams);
+
+ return (
+ <>
+
+ {CATALYST_TAGLINE} +
++ Sign up to receive $500 to fund real research. Your + credits live in the{' '} + + ResearchHub Endowment + {' '} + and earn yield daily — your balance grows every day. +
++ Use the email from your Catalyst NYC registration so we can credit your account. +
+- {CATALYST_TAGLINE} -
-- Sign up to receive $500 to fund real research. Your - credits live in the{' '} - - ResearchHub Endowment - {' '} - and earn yield daily — your balance grows every day. -
-- Use the email from your Catalyst NYC registration so we can credit your account. -
-
+
-
+
+ You're signed in as {email}. {loggedIn.bodyPrefix} —{' '} + {loggedIn.bodySuffix} {formatCredit(creditAmount)}. +
+ ++ {loggedIn.mismatchPrefix}{' '} + + {contact.name} ({contact.role}) + {' '} + at{' '} + + {contact.email} + + . +
+ + +{error}
} + + + + {entryNote} + + +