mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-28 00:04:47 +08:00
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
|
|
import { motion } from "framer-motion";
|
||
|
|
|
||
|
|
import { cn } from "~/lib/utils";
|
||
|
|
|
||
|
|
import { Welcome } from "./welcome";
|
||
|
|
|
||
|
|
const questions = [
|
||
|
|
"How many times taller is the Eiffel Tower than the tallest building in the world?",
|
||
|
|
"How many years does an average Tesla battery last compared to a gasoline engine?",
|
||
|
|
"How many liters of water are required to produce 1 kg of beef?",
|
||
|
|
"How many times faster is the speed of light compared to the speed of sound?",
|
||
|
|
];
|
||
|
|
export function ConversationStarter({
|
||
|
|
className,
|
||
|
|
onSend,
|
||
|
|
}: {
|
||
|
|
className?: string;
|
||
|
|
onSend?: (message: string) => void;
|
||
|
|
}) {
|
||
|
|
return (
|
||
|
|
<div className={cn("flex flex-col items-center", className)}>
|
||
|
|
<div className="pointer-events-none fixed inset-0 flex items-center justify-center">
|
||
|
|
<Welcome className="pointer-events-auto mb-15 w-[75%] -translate-y-24" />
|
||
|
|
</div>
|
||
|
|
<ul className="flex flex-wrap">
|
||
|
|
{questions.map((question, index) => (
|
||
|
|
<motion.li
|
||
|
|
key={question}
|
||
|
|
className="flex w-1/2 shrink-0 p-2 active:scale-105"
|
||
|
|
style={{ transition: "all 0.2s ease-out" }}
|
||
|
|
initial={{ opacity: 0, y: 24 }}
|
||
|
|
animate={{ opacity: 1, y: 0 }}
|
||
|
|
exit={{ opacity: 0, y: -20 }}
|
||
|
|
transition={{
|
||
|
|
duration: 0.2,
|
||
|
|
delay: index * 0.1 + 0.5,
|
||
|
|
ease: "easeOut",
|
||
|
|
}}
|
||
|
|
>
|
||
|
|
<div
|
||
|
|
className="cursor-pointer rounded-2xl border bg-[rgba(255,255,255,0.5)] px-4 py-4 text-gray-500 transition-all duration-300 hover:bg-[rgba(255,255,255,1)] hover:text-gray-900 hover:shadow-md"
|
||
|
|
onClick={() => {
|
||
|
|
onSend?.(question);
|
||
|
|
}}
|
||
|
|
>
|
||
|
|
{question}
|
||
|
|
</div>
|
||
|
|
</motion.li>
|
||
|
|
))}
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|