c93aace56b
---ci--- phase: 1 milestone: v0.1 status: complete requirements: covered: [REQ-001, REQ-002, REQ-003, REQ-004, REQ-005] partial: [] ---/ci--- Phase 1 (project-scaffolding) complete: - Monorepo: pnpm workspaces + turborepo - packages/types: all domain, marketplace, user, UI types - packages/mock-data: 5 competency stacks (70 competencies), 20 jobs, 15 candidates, 10 employers, learner progress, AI tutor responses - packages/ui: design tokens + 5 primitives (Button, Input, Card, Badge, Avatar) - apps/web: Next.js 15 with App Router, Tailwind v4, Inter font, 4 route groups, navigation shell, dark mode toggle, role switcher - Build passes: 4/4 packages, 10 routes prerendered - Typecheck passes: 7/7 tasks
78 lines
2.7 KiB
TypeScript
78 lines
2.7 KiB
TypeScript
import Link from 'next/link';
|
|
import { ArrowRight, GraduationCap, ShoppingBag, Building2, Shield } from 'lucide-react';
|
|
import { Button, Card, CardBody, Badge } from '@nextcraft/ui';
|
|
|
|
const SURFACES = [
|
|
{
|
|
href: '/dashboard',
|
|
title: 'Learner',
|
|
description: 'Competency stacks, microcredentials, AI tutors, oral defenses.',
|
|
icon: GraduationCap,
|
|
color: 'text-primary-600',
|
|
},
|
|
{
|
|
href: '/marketplace',
|
|
title: 'Marketplace',
|
|
description: 'AI-era job board matching verified competencies to roles.',
|
|
icon: ShoppingBag,
|
|
color: 'text-accent-600',
|
|
},
|
|
{
|
|
href: '/employer',
|
|
title: 'Employer',
|
|
description: 'Talent pipelines, evidence-based hiring, culture pages.',
|
|
icon: Building2,
|
|
color: 'text-primary-600',
|
|
},
|
|
{
|
|
href: '/admin',
|
|
title: 'Admin',
|
|
description: 'Cohort oversight, content governance, system health.',
|
|
icon: Shield,
|
|
color: 'text-rose-600',
|
|
},
|
|
];
|
|
|
|
export default function LearnerHome() {
|
|
return (
|
|
<div className="flex flex-col gap-12">
|
|
<section className="flex flex-col items-start gap-6">
|
|
<Badge variant="info">v0.1 · UI/UX Prototype</Badge>
|
|
<h1 className="max-w-3xl text-4xl font-bold tracking-tight text-slate-900 sm:text-5xl dark:text-slate-50">
|
|
Prove what you can build, not what you can write.
|
|
</h1>
|
|
<p className="max-w-2xl text-lg text-slate-600 dark:text-slate-300">
|
|
Nextcraft is an AI-native outcome school and talent marketplace. Learners earn
|
|
microcredentials backed by artifacts, process traces, and oral defenses — and employers
|
|
hire on evidence, not résumés.
|
|
</p>
|
|
<div className="flex items-center gap-3">
|
|
<Link href="/dashboard">
|
|
<Button size="lg" iconRight={<ArrowRight className="h-4 w-4" />}>
|
|
Enter the learner surface
|
|
</Button>
|
|
</Link>
|
|
<Link href="/marketplace">
|
|
<Button variant="outline" size="lg">
|
|
Browse the marketplace
|
|
</Button>
|
|
</Link>
|
|
</div>
|
|
</section>
|
|
|
|
<section className="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
|
|
{SURFACES.map((s) => (
|
|
<Link key={s.href} href={s.href}>
|
|
<Card className="h-full transition-shadow hover:shadow-md">
|
|
<CardBody className="flex flex-col gap-3">
|
|
<s.icon className={`h-6 w-6 ${s.color}`} />
|
|
<h3 className="text-base font-semibold text-slate-900 dark:text-slate-100">{s.title}</h3>
|
|
<p className="text-sm text-slate-600 dark:text-slate-400">{s.description}</p>
|
|
</CardBody>
|
|
</Card>
|
|
</Link>
|
|
))}
|
|
</section>
|
|
</div>
|
|
);
|
|
} |