import { useState } from "react"; import { AnimatePresence, motion } from "framer-motion"; import { getStaticImage } from "@/lib/utils"; import { Image } from "@/components"; export interface LetterToSunzhongshanProps { /** 是否可见 */ visible?: boolean; /** 关闭回调 */ onClose?: () => void; /** 提交回调 */ onSubmit?: (values: string[]) => void; } /** * LetterToSunzhongshan 组件 - 写给孙中山爷爷的信 * 包含飞入和放大动画 */ const LetterToSunzhongshan = ({ visible = false, onClose, onSubmit, }: LetterToSunzhongshanProps) => { // 下划线可填写内容 const [blankValues, setBlankValues] = useState([]); // 信件内容模板(根据设计稿) const letterContent = `敬爱的孙中山先生: 您好! 今天,我怀着崇敬的心情走进香山路7号,看着您亲手设计的房屋、勾画的《中国铁路全图》、撰写的《实业计划》手稿,仿佛能看到您为"振兴中华"奔走的身影。在李教授的解读中,我终于明白:您喊出的"____",不是遥远的历史,而是我们这代人正在接续的接力;您追求的"____(空里填天下为公)",不是抽象的理念,而是从服务身边人、做好专业事开始的担当;您秉持的"____(空里填与时俱进)",不是过去的选择,而是面对未来时必须有的勇气。 我是____专业的学生,今后,我会以您"知难行易"的信念,在专业学习中攻克难题,就像您当年为了革命理想屡败屡战;我会以您"心系民众"的情怀,参与____,帮身边人解决实际困难;我更会记住您"适乎世界之潮流"的智慧,紧跟时代步伐,努力用____为民族复兴添砖加瓦。 请您放心,"革命尚未成功,同志仍须努力"的嘱托,我们从未忘记;"振兴中华"的初心,我们会用一生践行!`; return ( {visible && ( <> {/* 遮罩层 */} {/* 信件容器 */}
e.stopPropagation()} > {/* 信纸背景 */} 信纸 {/* 标题 - 垂直显示在左侧 */}
写给孙中山先生的信
{/* 信件内容区域 */}
{(() => { let placeholderIndex = 0; let foundNiHao = false; return letterContent.split("\n").map((line, lineIndex) => { // 检测是否已经找到"您好"行 if (line.includes("您好")) { foundNiHao = true; } // "您好"行之后的非空行需要首行缩进 const needsIndent = foundNiHao && line.trim() !== "" && !line.includes("您好"); const segments = line.split("____"); return (
{segments.map((part, partIndex) => { const isLast = partIndex === segments.length - 1; if (isLast) { return ( {part} ); } const currentIndex = placeholderIndex++; return ( {part} { const next = [...blankValues]; next[currentIndex] = e.target.value; setBlankValues(next); }} /> ); })}
); }); })()}
{/* 笔的图片 */}
笔
{/* 提交按钮 */}
可提交状态 onSubmit?.(blankValues)} button />
{/* 寄信图标(可选,如果需要的话) */}
寄信
)}
); }; export default LetterToSunzhongshan;