mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-26 19:44:51 +02:00
[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:
@@ -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 →
|
||||
</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',
|
||||
|
||||
Reference in New Issue
Block a user