第二期:企业信任风 UI + 打卡科目分类 + 英语语法学习模块

- 全站按 Corporate Trust 设计规范重做:靛蓝/紫罗兰渐变、Plus Jakarta Sans
  自托管字体、带色阴影、卡片悬浮、氛围光斑
- 打卡任务增加科目分类(语文/数学/英语/运动/其他),孩子端按科目分组
- 英语语法自学模块:线性解锁课程 + 课后/周/月测验引擎,测验达标
  自动联动当日英语打卡;家长概览显示语法进度
- 课程内容:A1→B1 完整大纲,9 周 54 课 + 9 周测 + 2 月测,讲解/例句/
  练习/测验均原创,仅参考两份语法书的主题编排

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
jacobxu666
2026-08-03 01:20:04 +08:00
co-authored by Claude Opus 4.8
parent b08f6649be
commit 6ed4d5a61e
45 changed files with 5824 additions and 92 deletions
+14 -8
View File
@@ -2,9 +2,11 @@
import { useActionState } from "react";
import Link from "next/link";
import { KeyRound } from "lucide-react";
import { BackgroundBlobs } from "@/components/background-blobs";
import { activate } from "./actions";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Card, CardContent, CardHeader } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
@@ -12,12 +14,16 @@ export default function JoinPage() {
const [state, formAction, pending] = useActionState(activate, null);
return (
<main className="flex min-h-dvh items-center justify-center bg-muted/40 p-4">
<Card className="w-full max-w-sm">
<CardHeader className="text-center">
<CardTitle className="text-2xl">激活这台设备</CardTitle>
<main className="relative flex min-h-dvh items-center justify-center p-4">
<BackgroundBlobs />
<Card className="w-full max-w-sm border-slate-100 shadow-soft transition-shadow duration-200 hover:shadow-lift">
<CardHeader className="items-center gap-3 text-center">
<div className="flex size-14 items-center justify-center rounded-xl bg-gradient-to-br from-indigo-600 to-violet-600 shadow-btn">
<KeyRound className="size-7 text-white" />
</div>
<h1 className="text-2xl font-extrabold tracking-tight">激活这台设备</h1>
<p className="text-sm text-muted-foreground">
请让家长在家长端生成激活码,然后输入下面的框里
请让家长在家长端生成激活码,输入下面的框里
</p>
</CardHeader>
<CardContent>
@@ -32,7 +38,7 @@ export default function JoinPage() {
pattern="\d{6}"
maxLength={6}
autoComplete="one-time-code"
className="text-center text-3xl tracking-[0.5em] font-bold"
className="text-center text-3xl font-bold tracking-[0.5em] text-indigo-600"
placeholder="······"
required
/>
@@ -47,7 +53,7 @@ export default function JoinPage() {
我是家长,{" "}
<Link
href="/login"
className="font-medium text-primary underline-offset-4 hover:underline"
className="font-semibold text-indigo-600 underline-offset-4 hover:underline"
>
去登录
</Link>