import { Link } from '@tanstack/react-router' import { useUser } from '@/hooks/use-auth' import { useAuthModalStore } from '@/store/auth-modal-store' const FEATURES = [ { to: '/toeic', icon: 'assignment', title: 'Luyện đề', accent: 'TOEIC', desc: 'Kho đề thi cập nhật theo cấu trúc mới nhất. Phân tích điểm yếu từng Part.', stat: '350+ câu hỏi', }, { to: '/writing', icon: 'auto_fix_high', title: 'AI chấm', accent: 'Writing', desc: 'Phản hồi tức thì về ngữ pháp, từ vựng, cấu trúc và bài viết mẫu.', stat: '3 lượt / ngày', }, { to: '/flash-card', icon: 'menu_book', title: 'Từ vựng', accent: 'thông minh', desc: 'Bộ thẻ TOEIC với spaced-repetition, lật 3D, ảnh minh hoạ.', stat: '18 000+ từ', }, ] export function Home() { const user = useUser() const openModal = useAuthModalStore((s) => s.open) const firstName = user?.name ?? 'bạn' return (
{/* Page head — editorial */}
Học TOEIC cùng AI

Chào {firstName},
hôm nay học 15 phút?

Mục tiêu 850 hiện tại 720 còn 130 điểm nữa
Học từ vựng play_arrow Tiếp tục học
{/* MAIN COL */}
{/* Progress hero */}
Lộ trình
Bạn đang đi đúng hướng — tuần này 4/7 ngày.
{/* Feature cards */}
Khám phá

Tính năng nổi bật

{FEATURES.map((f) => (
{f.icon}
{f.stat}
{f.title} {f.accent}
{f.desc}
))}
{/* 7-day journey */}
Tuần này
Lộ trình 7 ngày
+24% so với tuần trước
{['T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'CN'].map((d, i) => { const h = [60, 85, 40, 90, 75, 0, 0][i] const done = h > 0 const today = i === 4 return (
{d}
) })}
{/* SIDE COL */}
{/* Streak card (inky) */}
Streak
local_fire_department
7 ngày
Kỷ lục: 21 ngày
{['T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'CN'].map((d, i) => (
{d}
))}
{/* AI nudge */}
auto_awesome
AI gợi ý
"Bạn yếu nhất Part 3 — dành 10 phút hôm nay có thể tăng 30+ điểm."
— EnglishAI Coach
{/* Pro tip */}
Pro tip
Học theo cụm từ (collocations) giúp bạn ghi nhớ nhanh hơn{' '} 40% so với học từ đơn lẻ.
{/* Guest CTA (only if not logged in) */} {!user && (
Khách
Đăng ký để lưu tiến độ.
)}
) } function Stat({ num, label, color }: { num: string; label: string; color?: string }) { return (
{num}
{label}
) } function ProgressRing({ value }: { value: number }) { const r = 58 const c = 2 * Math.PI * r const offset = c - (value / 100) * c return (
720
/ 850
) }