This commit is contained in:
eric
2026-03-10 01:35:37 -05:00
parent ff51622bb6
commit be7a298604
69 changed files with 11016 additions and 57 deletions

82
app/certificate/page.tsx Normal file
View File

@@ -0,0 +1,82 @@
"use client";
import { useEffect, useState } from "react";
import Link from "next/link";
import { Header } from "@/app/components";
import { getProgress } from "@/app/lib/learning";
import { CURRICULUM_CONFIG } from "@/config/course";
import { isPaid } from "@/app/lib/payment";
const TOTAL = CURRICULUM_CONFIG.modules.reduce((s, m) => s + m.lessons.length, 0);
export default function CertificatePage() {
const [progress, setProgress] = useState({ completed: 0, percent: 0 });
const [paid, setPaid] = useState(false);
useEffect(() => {
setProgress(getProgress(TOTAL));
setPaid(isPaid());
}, []);
const completed = progress.percent >= 100;
return (
<div className="min-h-screen bg-[var(--background)] text-[var(--foreground)]">
<Header />
<main className="pt-20 pb-16">
<div className="mx-auto max-w-2xl px-4 text-center">
{!paid ? (
<div className="rounded-2xl border border-[var(--border)] bg-[var(--card)] p-8">
<h1 className="mb-4 text-2xl font-bold"></h1>
<p className="mb-6 text-[var(--muted-foreground)]">
{TOTAL}
</p>
<Link
href="/pay"
className="inline-flex rounded-full bg-[var(--accent)] px-6 py-3 font-medium text-[var(--accent-foreground)] hover:opacity-90"
>
</Link>
</div>
) : completed ? (
<div className="rounded-2xl border-2 border-[var(--accent)] bg-[var(--card)] p-8">
<div className="mb-6 text-5xl">🎓</div>
<h1 className="mb-2 text-2xl font-bold"></h1>
<p className="mb-6 text-[var(--muted-foreground)]">
{TOTAL}
</p>
<p className="mb-8 text-sm text-[var(--muted-foreground)]">
</p>
<Link
href="/"
className="text-[var(--accent)] underline hover:no-underline"
>
</Link>
</div>
) : (
<div className="rounded-2xl border border-[var(--border)] bg-[var(--card)] p-8">
<h1 className="mb-4 text-2xl font-bold"></h1>
<p className="mb-6 text-[var(--muted-foreground)]">
{progress.completed}/{TOTAL}
</p>
<div className="mb-6 h-3 overflow-hidden rounded-full bg-[var(--muted)]">
<div
className="h-full rounded-full bg-[var(--accent)] transition-all"
style={{ width: `${progress.percent}%` }}
/>
</div>
<Link
href="/course/0/0"
className="inline-flex rounded-full bg-[var(--accent)] px-6 py-3 font-medium text-[var(--accent-foreground)] hover:opacity-90"
>
</Link>
</div>
)}
</div>
</main>
</div>
);
}