Files
zeekay 3a8a35d13c beta: the portal is the app's Betas pane, after a plan step
/beta's portal is one component now. A stranger has it in the site's frame;
a member has the app in its Betas mode (@hanzo/app 0.2.27: no sidebar there)
with the same portal as its pane: the form if there is no application, a plan
step once after filing (Pro with the beta code, or stay on Free), then the
dashboard.

Every share link, on the dashboard, the referral card, /referral and the page
share widget, goes out through tagged(): the sharer's ref and the channel as
utm_source, so a visit, a lead and a signup each say who shared and where. The
page share widget's tracking was a no-op; it records waitlist_shared now.

Claude-Session: https://claude.ai/code/session_017vrVus6PPBgP5YRzKV1iqW
2026-10-25 18:38:26 -07:00

34 lines
971 B
TypeScript

'use client'
/**
* /beta — the beta portal (components/beta/portal.tsx): in the site's frame for
* a stranger, and for a member the app in its Betas mode with the same portal as
* its pane (./_door.tsx).
*/
import { AccountProvider } from '@hanzo/app/lib/account'
import { BOOT } from '@hanzo/app/lib/session'
import { SiteHeader, SiteFooter } from '@/components/home/shell'
import { Box } from '@/components/ui'
import Closing from '@/components/marketing/Closing'
import { Portal } from '@/components/beta/portal'
import { Door } from './_door'
export default function BetaPage() {
return (
<Door>
<script dangerouslySetInnerHTML={{ __html: BOOT }} />
<AccountProvider>
<Box minH="100vh" $platform-web={{ color: 'var(--foreground)' }}>
<SiteHeader />
<main id="main">
<Portal />
</main>
<Closing />
<SiteFooter />
</Box>
</AccountProvider>
</Door>
)
}