import { useState } from 'react'; import { FrameworkType } from '../../types'; import { FRAMEWORKS } from '../../types/project'; import { Globe, Monitor, Smartphone, Server, ChevronRight, Check, Code2, Zap, Layers, Layout } from 'lucide-react'; interface FrameworkSelectorProps { onSelect: (name: string, framework: FrameworkType, description: string) => void; onCancel: () => void; } export default function FrameworkSelector({ onSelect, onCancel }: FrameworkSelectorProps) { const [selected, setSelected] = useState(null); const [projectName, setProjectName] = useState(''); const [description, setDescription] = useState(''); const getIcon = (fw: FrameworkType) => { switch (fw) { case 'web': return Globe; case 'electron': return Monitor; case 'maui': return Smartphone; case 'nodejs': return Server; } }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (selected && projectName.trim()) { onSelect(projectName.trim(), selected, description.trim()); } }; return (
{/* Project Name */}
45 ? 'text-red-400' : 'text-surface-500'}`}> {projectName.length}/50
setProjectName(e.target.value.slice(0, 50))} className="input" placeholder="My Awesome App" required autoFocus maxLength={50} />
{/* Framework Selection */}
{(Object.entries(FRAMEWORKS) as [FrameworkType, typeof FRAMEWORKS[FrameworkType]][]).map(([key, fw]) => { const Icon = getIcon(key); const isSelected = selected === key; return ( ); })}
{/* Description */}