kids/map/page.tsx - 儿童学习地图
基本信息
| 属性 | 值 |
| 路径 | src/app/kids/map/page.tsx |
| 类型 | Next.js 页面组件 (Server Component) |
| 功能 | 儿童模式的关卡选择地图 |
功能描述
展示儿童学习模式的世界地图界面,允许孩子选择关卡开始学习。渲染交给 ProgressMap 客户端组件处理。
代码实现
import { getTranslations } from "next-intl/server";
import { ProgressMap } from "@/components/kids/elements/progress-map";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "World Map | Learn Prompting for Kids",
description: "Choose your adventure! Pick a level and start learning how to talk to AI.",
};
export default async function KidsMapPage() {
const t = await getTranslations("kids");
return (
<div className="h-full flex flex-col overflow-hidden">
<ProgressMap />
</div>
);
}
元数据
| 属性 | 值 |
title | "World Map \ | Learn Prompting for Kids" |
description | "Choose your adventure! Pick a level and start learning how to talk to AI." |
布局容器
<div className="h-full flex flex-col overflow-hidden">
<ProgressMap />
</div>
| 类名 | 作用 |
h-full | 填满父容器高度 |
flex flex-col | 垂直弹性布局 |
overflow-hidden | 隐藏溢出内容(地图自行处理滚动) |
架构说明
服务端/客户端分离
| 层级 | 组件 | 职责 |
| Server | KidsMapPage | 元数据、布局容器 |
| Client | ProgressMap | 交互式地图、关卡选择 |
设计考虑
- 全屏地图: 地图组件需要占据全部可用空间
- 无滚动条: 地图内部自行处理平移/缩放
- 游戏化体验: 类似游戏世界地图的交互方式
组件引用
| 组件 | 来源 | 类型 | 功能 |
ProgressMap | @/components/kids/elements/progress-map | Client Component | 交互式关卡地图 |
推测功能(基于 ProgressMap)
地图特性
- 🗺️ 可视化世界地图
- 📍 关卡节点标记
- 🔒 锁定/解锁状态
- ⭐ 完成进度指示
- 🎨 像素艺术风格
关卡结构
World 1: Prompt Basics
├── Level 1-1: What is a Prompt?
├── Level 1-2: Talking to AI
└── Level 1-3: Your First Prompt
World 2: Prompt Tricks
├── Level 2-1: Be Clear
├── Level 2-2: Give Examples
└── ...
翻译
虽然获取了 kids 命名空间的翻译,但当前实现中未直接使用,可能用于未来扩展。
const t = await getTranslations("kids");
路由
| 路径 | 说明 |
/kids | 儿童首页 |
/kids/map | 学习地图(当前) |
/kids/level/{slug} | 具体关卡 |
相关文件
src/app/kids/layout.tsx - 儿童模式布局(天空背景、音乐)
src/app/kids/page.tsx - 儿童首页
src/components/kids/elements/progress-map.tsx - 地图组件
用户体验流程
/kids (首页)
↓ 点击开始
/kids/map (选择关卡)
↓ 点击关卡节点
/kids/level/{slug} (学习关卡)
↓ 完成
/kids/map (返回地图,解锁下一关)