import { WandIcon } from 'lucide-react'; import { useEffect, useState } from 'react'; import { isLoggedIn } from '../../lib/jwt'; import { showLoginPopup } from '../../lib/popup'; import { FineTuneCourse } from './FineTuneCourse'; import { DifficultyDropdown } from '../AITutor/DifficultyDropdown'; import { clearFineTuneData, getCourseFineTuneData, getLastSessionId, storeFineTuneData, } from '../../lib/ai'; import { cn } from '../../lib/classname'; export const difficultyLevels = [ 'beginner', 'intermediate', 'advanced', ] as const; export type DifficultyLevel = (typeof difficultyLevels)[number]; type AICourseProps = {}; export function AICourse(props: AICourseProps) { const [keyword, setKeyword] = useState(''); const [difficulty, setDifficulty] = useState('beginner'); const [hasFineTuneData, setHasFineTuneData] = useState(false); const [about, setAbout] = useState(''); const [goal, setGoal] = useState(''); const [customInstructions, setCustomInstructions] = useState(''); useEffect(() => { const lastSessionId = getLastSessionId(); if (!lastSessionId) { return; } const fineTuneData = getCourseFineTuneData(lastSessionId); if (!fineTuneData) { return; } setAbout(fineTuneData.about); setGoal(fineTuneData.goal); setCustomInstructions(fineTuneData.customInstructions); }, []); const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && keyword.trim()) { onSubmit(); } }; function onSubmit() { if (!isLoggedIn()) { showLoginPopup(); return; } let sessionId = ''; if (hasFineTuneData) { clearFineTuneData(); sessionId = storeFineTuneData({ about, goal, customInstructions, }); } window.location.href = `/ai/search?term=${encodeURIComponent(keyword)}&difficulty=${difficulty}&id=${sessionId}`; } return (

What can I help you learn?

Enter a topic below to generate a personalized course for it

{ e.preventDefault(); onSubmit(); }} > setKeyword(e.target.value)} onKeyDown={handleKeyDown} placeholder="e.g. JavaScript Promises, React Hooks, Go Routines etc" className="w-full rounded-md border-none bg-transparent px-4 pt-4 pb-8 text-gray-900 focus:outline-hidden max-sm:placeholder:text-base" maxLength={50} />
); }