import { ArrowUpRight, Ban, CircleFadingPlus, Cog, Telescope, Wand, } from 'lucide-react'; import type { FormEvent } from 'react'; import { getOpenAIKey, isLoggedIn } from '../../lib/jwt'; import { showLoginPopup } from '../../lib/popup'; import { cn } from '../../lib/classname.ts'; import { useState } from 'react'; import { OpenAISettings } from './OpenAISettings.tsx'; type RoadmapSearchProps = { roadmapTerm: string; setRoadmapTerm: (topic: string) => void; handleSubmit: (e: FormEvent) => void; loadAIRoadmapLimit: () => void; onLoadTerm: (topic: string) => void; limit: number; limitUsed: number; }; export function RoadmapSearch(props: RoadmapSearchProps) { const { roadmapTerm, setRoadmapTerm, handleSubmit, limit = 0, limitUsed = 0, onLoadTerm, loadAIRoadmapLimit, } = props; const canGenerateMore = limitUsed < limit; const [isConfiguring, setIsConfiguring] = useState(false); const openAPIKey = getOpenAIKey(); const randomTerms = ['OAuth', 'APIs', 'UX Design', 'gRPC']; return (
{isConfiguring && ( { setIsConfiguring(false); loadAIRoadmapLimit(); }} /> )}

Generate roadmaps with AI AI Roadmap Generator

Enter a topic and let the AI generate a roadmap for you Enter a topic to generate a roadmap

{ if (limit > 0 && canGenerateMore) { handleSubmit(e); } else { e.preventDefault(); } }} className="flex w-full flex-col gap-2 sm:flex-row" > setRoadmapTerm((e.target as HTMLInputElement).value) } />
{randomTerms.map((term) => ( ))} Explore AI Roadmaps

You have generated{' '} {limitUsed} of {limit} {' '} roadmaps.

{limit > 0 && !isLoggedIn() && ( )}

{limit > 0 && isLoggedIn() && !openAPIKey && ( )} {limit > 0 && isLoggedIn() && openAPIKey && ( )}

); }