feat: micro-learning module with seed data
- Add Course and Module models to Prisma schema - Create seed-learn.json with Daily Fiqh for Beginners (5 modules) - Create seed-learn.js with Hermes patch (strip id/courseId from create) - Add /learn page with course listing - Add /learn/[courseSlug]/[moduleId] page with content + quiz - Quiz data stored as JSON string per module - Content rendered as markdown with Key Concept, Details, Reflection, Action Step sections TODO: - Add audio player component for listen toggle - Add progress tracking per user - Add actual quiz scoring/validation - Connect to TTS pipeline for audio generation
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
'use client'
|
||||
|
||||
import Link from 'next/link'
|
||||
import { ShoppingCart, Bot, MessageCircle, Wallet, Crown, LogIn, User } from 'lucide-react'
|
||||
import { useAuth } from '@/lib/AuthContext'
|
||||
|
||||
export default function Navbar() {
|
||||
const { user, token } = useAuth()
|
||||
|
||||
const linkClass = (path: string) => {
|
||||
return `flex items-center gap-1 text-sm transition ${typeof window !== 'undefined' && window.location.pathname === path ? 'text-[#D4AF37]' : 'text-gray-400 hover:text-white'}`
|
||||
}
|
||||
|
||||
return (
|
||||
<nav className="sticky top-0 z-50 bg-[#0a0a0f]/80 backdrop-blur border-b border-gray-800">
|
||||
<div className="max-w-6xl mx-auto px-4 h-14 flex items-center justify-between">
|
||||
<Link href="/" className="text-lg font-bold text-[#D4AF37]">FLH</Link>
|
||||
<div className="flex items-center gap-4">
|
||||
<Link href="/souq" className={linkClass('/souq')}>
|
||||
<ShoppingCart size={16} />
|
||||
<span className="hidden sm:inline">Souq</span>
|
||||
</Link>
|
||||
<Link href="/nur" className={linkClass('/nur')}>
|
||||
<Bot size={16} />
|
||||
<span className="hidden sm:inline">Nur</span>
|
||||
</Link>
|
||||
<Link href="/forum" className={linkClass('/forum')}>
|
||||
<MessageCircle size={16} />
|
||||
<span className="hidden sm:inline">Forum</span>
|
||||
</Link>
|
||||
<Link href="/wallet" className={linkClass('/wallet')}>
|
||||
<Wallet size={16} />
|
||||
<span className="hidden sm:inline">Wallet</span>
|
||||
</Link>
|
||||
<div className="w-px h-5 bg-gray-700" />
|
||||
{token && user?.isPremium ? (
|
||||
<Link href="/halal-monitor" className={linkClass('/halal-monitor')}>
|
||||
<Crown size={16} />
|
||||
<span className="hidden sm:inline">Monitor</span>
|
||||
</Link>
|
||||
) : token ? (
|
||||
<Link href="/halal-monitor" className="flex items-center gap-1 text-sm transition text-gray-500 hover:text-[#D4AF37]">
|
||||
<Crown size={14} />
|
||||
</Link>
|
||||
) : null}
|
||||
{token ? (
|
||||
<Link href="/profile" className="text-gray-400 hover:text-white transition">
|
||||
<User size={16} />
|
||||
</Link>
|
||||
) : (
|
||||
<Link href="/login" className="text-gray-400 hover:text-white transition">
|
||||
<LogIn size={16} />
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user