Files
zeekay 4fd349aa06 beta: the portal says less, and opting in and sharing are one press
Prose that carried no decision or fact is gone: the hero, the questions, the
gate and every step are a heading and at most a line. What scores is said once
(the leaderboard step), and every claim the cloud does not keep is out.

Step 1 is one share card (the member's link, Copy, the device's share sheet on
phones, seven channels as icons, Customize behind a text button) and a quiet
invite-by-email card. Step 3 is one searched, grouped list with one control a
row: On when `opens` says so, Get access when it does not, Requested at once
after the press. Stars and follows moved under the leaderboard as Earn more.

The 1,800-line dashboard is a shell over share, rank, betas and alpha; what
they read is one hook (standing.ts); the questions are data (program.ts).
Dead access, card, hint and referral components are deleted. Every press is
44px, every input too, and a gate walks each screen at 390px.

scripts/brands and scripts/prebuild are TypeScript now; the three marks the
share row draws ship in a JSON only /beta loads. /beta's title and card say
what the page says.

Claude-Session: https://claude.ai/code/session_017vrVus6PPBgP5YRzKV1iqW
2026-10-26 03:29:13 -07:00

16 lines
669 B
TypeScript

'use client'
import type { ComponentProps } from 'react'
import { YStack } from '@hanzo/ui'
import { More } from '@hanzo/ui/marketing'
/** The one card of the portal: a corner, an edge, the panel's ground. */
export function Card(props: ComponentProps<typeof YStack>) {
return <YStack data-motion="rise" width="100%" gap={24} p={28} $sm={{ p: 36 }} rounded="var(--radius-2xl)" borderWidth={1} borderColor="var(--border)" bg="$panel" {...props} />
}
/** The quiet link at the thumb's size: 44px tall, the floor for a press. */
export function Quiet(props: ComponentProps<typeof More>) {
return <More display="inline-flex" items="center" minH={44} {...props} />
}