建档、起步问题、清单打勾、天空过场和合盘按 T7 播放一次。减少动态效果时只剩淡入,没有星点和闪烁。Motion 仍按需加载,首屏 gzip 631199,相对 627046 约 +0.66%。 自测:tsc --noEmit、npm run lint(0 error)、定向测试 58 项 fail 0、npm run build(/ 仍 Static)。 Co-Authored-By: Grok (agent loop)
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
"use client";
|
|
|
|
import { Badge } from "@/components/ui/badge";
|
|
import { Button } from "@/components/ui/button";
|
|
import {
|
|
STARTER_FREE_BADGE,
|
|
starterLead,
|
|
starterQuestions,
|
|
starterWatching,
|
|
type StarterAudience,
|
|
type StarterChartSigns,
|
|
} from "@/lib/starter-questions";
|
|
|
|
export function StarterQuestions({
|
|
audience,
|
|
signs,
|
|
onAsk,
|
|
onNudge,
|
|
}: {
|
|
readonly audience: StarterAudience;
|
|
readonly signs: StarterChartSigns;
|
|
readonly onAsk: (question: string) => void;
|
|
readonly onNudge: () => void;
|
|
}) {
|
|
const questions = starterQuestions(audience, signs);
|
|
return (
|
|
<div className="starter-questions">
|
|
<p className="starter-questions-lead">{starterLead(audience)}</p>
|
|
{audience.kind === "other" ? <Badge variant="outline">{starterWatching(audience)}</Badge> : null}
|
|
<span data-onboarding-pop="free-once"><Badge variant="secondary">{STARTER_FREE_BADGE}</Badge></span>
|
|
<div className="starter-questions-list">
|
|
<Button type="button" variant="outline" data-onboarding-press="" data-onboarding-enter="starter-0" data-onboarding-index={0} data-onboarding-follow-source="" onClick={() => onAsk(questions[0])}>{questions[0]}</Button>
|
|
<Button type="button" variant="outline" data-onboarding-press="" data-onboarding-enter="starter-1" data-onboarding-index={1} data-onboarding-follow-source="" onClick={() => onAsk(questions[1])}>{questions[1]}</Button>
|
|
<Button type="button" variant="outline" data-onboarding-press="" data-onboarding-enter="starter-2" data-onboarding-index={2} onClick={onNudge}>{questions[2]}</Button>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|