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.title} {f.accent}
{f.desc}
))}
{/* 7-day journey */}
{['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 (
)
})}
{/* 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 */}
"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 (
)
}
function ProgressRing({ value }: { value: number }) {
const r = 58
const c = 2 * Math.PI * r
const offset = c - (value / 100) * c
return (
)
}