[eric] onboarding: shorten consent (short question + explainer), de-chatbot the payoff (drop composer chrome, 'a real agent does this' framing)

This commit is contained in:
ciregenz
2026-06-30 23:36:30 -07:00
parent 391df21b0d
commit eb5da15dd3
2 changed files with 26 additions and 16 deletions
@@ -69,35 +69,32 @@ export const Payoff: React.FC<{
marginTop: 16,
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
gap: 12,
color: S.muted,
fontSize: 13,
borderTop: `1px solid ${S.border}`,
paddingTop: 14,
}}
>
<span>+</span>
<span>Cowork</span>
<span style={{ marginLeft: 8 }}>Opus 4.8</span>
<span style={{ fontSize: 13, color: S.muted }}>a real agent goes and does this, live</span>
<span
onClick={onRun}
style={{
marginLeft: 'auto',
background: S.ctaBg,
color: S.ctaText,
borderRadius: 9,
padding: '7px 15px',
padding: '8px 18px',
fontWeight: 600,
cursor: 'pointer',
whiteSpace: 'nowrap',
}}
>
Run
Do it &rarr;
</span>
</div>
</div>
<div style={{ marginTop: 24, width: '100%', maxWidth: 600, textAlign: 'left' }}>
<div style={{ fontSize: 13, color: S.muted, marginBottom: 8 }}>Ideas for you</div>
<div style={{ fontSize: 13, color: S.muted, marginBottom: 8 }}>Or put me on one of these</div>
{ideas.map((idea) => (
<IdeaRow key={idea.id} idea={idea} onPick={() => onPickIdea(idea)} />
))}
@@ -1,15 +1,15 @@
// D3: the personalize consent. The line reveals word-by-word (smooth, layout-stable, no jumpy
// caret), then a single Yes. "Yes" authorizes the (later) background profiling read; copy says so.
// D3: the personalize consent. Short question reveals word-by-word, then a small explainer + Yes.
// "Yes" authorizes the (later) background profiling read; the sub-line says exactly what that means.
import React, { useEffect, useMemo, useState } from 'react';
import { useReducedMotion } from '@/shared/hooks/useReducedMotion';
import { useOnboardingSkin } from '../onboardingSkin';
import { PrimaryButton, GhostLink } from '../OnboardingAtoms';
const LINE =
"Want me to actually get you? Say yes and I'll take a quick look at whatever you connect, so everything I show is aimed at your world, not a generic demo.";
const LINE = 'Want me to make this yours?';
const SUB = "I'll take a quick look at what you connect, nothing else.";
const WORD_STAGGER_S = 0.055;
const WORD_STAGGER_S = 0.06;
const WORD_DUR_S = 0.5;
export const PersonalizeConsent: React.FC<{ onConsent: (yes: boolean) => void }> = ({ onConsent }) => {
@@ -28,7 +28,7 @@ export const PersonalizeConsent: React.FC<{ onConsent: (yes: boolean) => void }>
return (
<>
<div style={{ fontFamily: S.serif, fontWeight: 500, fontSize: 29, lineHeight: 1.4, maxWidth: 620, color: S.text }}>
<div style={{ fontFamily: S.serif, fontWeight: 500, fontSize: 33, lineHeight: 1.25, color: S.text }}>
{words.map((w, i) => (
<React.Fragment key={i}>
<span
@@ -45,9 +45,22 @@ export const PersonalizeConsent: React.FC<{ onConsent: (yes: boolean) => void }>
</React.Fragment>
))}
</div>
<div
style={{
marginTop: 34,
marginTop: 14,
fontSize: 15,
color: S.muted,
opacity: done ? 1 : 0,
transition: 'opacity .5s ease',
}}
>
{SUB}
</div>
<div
style={{
marginTop: 30,
display: 'flex',
flexDirection: 'column',
alignItems: 'center',