Files
zooqueenandHanzo Dev d5315d5859 A checkout's sign-in keeps its plan, coupon and campaign, says the offer, and goes back to the checkout
pay sends a buyer with no session to /login with the checkout as `next`.
That page is now the checkout's first step:

- /login for a checkout carrying a coupon becomes /signup before it paints
  (lib/auth/sale EARLY); the page opens in create-account mode, says the
  offer across the top in pay's words from commerce's quote, drops the
  eyebrow and the demo, and draws pay's 56px controls at 1rem. "I already
  have an account" switches the mode in place.
- /login and /signup are one page (components/auth/page.tsx); the switch
  between them carries the whole query, so `next` and everything in it
  survives a change of mind.
- Signed in, a checkout chosen before signing in is opened as it was asked
  for (components/onboarding/flow.tsx), with the organization worked in and
  a coupon the tab keeps added only where it names none. The terms page
  stays for an account a provider made a moment ago, which has accepted
  none on record, and returns to the checkout; billing is not asked. Free
  chosen earlier in the tab no longer skips that page for a checkout.
- Try again after a refused sign-in carries the destination as `next`.
- /pricing's paid plans read "Get <plan>" and open the sign-up carrying
  pay's card step; signed in, the picker, which opens it with nothing to
  press unless terms are owed. A team's plan still names its team first.
  A catalog row's own link is kept only when it is a page on this site.
- Home's Try Hanzo brings the hero's sign-up into view and focuses it when
  the panel is on the page.

e2e/gates/sale.spec.ts holds the chain; e2e/campaign.spec.ts drives the
live offer link up to IAM's authorize.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-15 20:21:21 -07:00
..