KidsHomeContent 组件
儿童版首页内容组件,提供引导式的欢迎流程。
功能概述
- 分步引导: 三步欢迎流程
- 动画效果: 页面切换动画
- 像素风格: 复古游戏视觉风格
- 响应式设计: 适配各种屏幕尺寸
- 进度导航: 底部导航控制
步骤流程
Step 0: 欢迎页
- 徽章显示
- 主标题和副标题
- Promi 机器人介绍
- "开始学习"引导
Step 1: 功能介绍
- "你将学到什么"标题
- 游戏功能介绍(游戏手柄图标)
- 故事功能介绍(书本图标)
- 星星收集系统(星星图标)
Step 2: 准备开始
- 像素艺术场景(树、机器人、城堡)
- "准备好了吗"提示
- 开始按钮(链接到地图)
- 年龄提示
Props 接口
无 Props,使用翻译和内部状态。
内部状态
const [step, setStep] = useState(0); // 当前步骤 (0-2)
const totalSteps = 3; // 总步骤数
导航控制
方法
const nextStep = () => setStep((prev) => Math.min(prev + 1, totalSteps - 1));
const prevStep = () => setStep((prev) => Math.max(prev - 1, 0));
按钮
- 返回: 上一步(第一步隐藏)
- 下一步: 继续(最后一步变为"开始")
- 进度指示器: 点击跳转到对应步骤
分析追踪
import { analyticsKids } from "@/lib/analytics";
// 点击开始按钮时
analyticsKids.startGame();
使用示例
import { KidsHomeContent } from "@/components/kids/layout/kids-home-content";
export default function KidsHomePage() {
return (
<div className="h-screen flex flex-col">
<KidsHeader />
<KidsHomeContent />
</div>
);
}
翻译键
{
"kids": {
"home": {
"badge": "AI 学习之旅",
"title": "Prompt 探险",
"subtitle": "学习如何和 AI 对话",
"promiIntro": {
"greeting": "你好!我是 Promi!",
"message": "让我来教你如何写出超棒的 Prompt 吧!"
},
"whatYouLearn": "你将学到什么",
"features": {
"games": {
"title": "有趣的游戏",
"description": "通过游戏学习 Prompt 技巧"
},
"stories": {
"title": "精彩的故事",
"description": "和 AI 一起创造奇妙故事"
},
"stars": {
"title": "收集星星",
"description": "完成关卡获得星星奖励"
}
},
"readyTitle": "准备好开始了吗?",
"readyMessage": "和我一起踏上 Prompt 学习之旅吧!",
"startButton": "开始探险",
"ageNote": "适合 6-12 岁儿童"
},
"navigation": {
"back": "返回",
"next": "下一步"
}
}
}
像素图标
组件内部定义多个像素艺术 SVG 图标:
PixelPlayIcon
播放/开始图标 (12x12)
PixelArrowLeft / PixelArrowRight
左右箭头图标 (12x12)
PixelGamepad
游戏手柄图标 (24x16)
- 深色主体
- 绿色十字键
- 红色/蓝色功能键
PixelBook
书本图标 (20x16)
- 棕色封面
- 米黄色内页
- 中间装订线
样式说明
主内容区域
- 垂直居中 (
items-center justify-center) - 可滚动 (
overflow-y-auto) - 最大宽度:
max-w-2xl - 内边距:
p-4
欢迎页样式
- 徽章: 白色背景,金色边框
- 标题: 大号字体,像素阴影 (
pixel-text-shadow) - 副标题: 中等字号,棕色
功能卡片
- 使用
.pixel-panel类 - 不同变体: 绿色、蓝色、默认
- 图标 + 标题 + 描述布局
底部导航栏
- 背景:
#2C1810(深棕色) - 顶部边框: 4px 实线
#8B4513 - 按钮:
.pixel-btn样式
进度指示器
- 当前步骤: 绿色 (
#22C55E) - 其他步骤: 深棕色 (
#4A3728) - 像素风格边框 (使用 clipPath)
动画效果
页面切换
animate-in fade-in slide-in-from-right-4 duration-300
Promi 机器人
animate-bounce-slow /* 最后一步 */
响应式断点
| 断点 | 样式调整 |
|---|---|
| 默认 | 移动端样式,小按钮 |
sm | 桌面端样式,大按钮,显示完整进度指示器 |
md | 更大的标题和文字 |
依赖
next-intl- 国际化next/link- 链接组件@/lib/utils(cn) - 工具函数@/lib/analytics- 分析追踪@/components/kids/elements/pixel-art- 像素艺术
注意事项
- 组件使用
"use client"指令 - 使用 localStorage 保存进度(通过子组件)
- 所有像素图标使用
imageRendering: "pixelated" - 最后一步的开始按钮链接到
/kids/map