import { useMemo, useState } from 'react' import { Card, CardContent, CardHeader, CardTitle, CardDescription, } from '@/components/ui/card' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { cn } from '@/lib/utils' type TemplateData = { id: string name: string versions: Array } // Default data (kept for backward compatibility if caller doesn't pass templates) const DEFAULT_TEMPLATES_DATA: Array = [ { id: 'sep-2025', name: 'Licenciatura RVOE SEP', versions: ['v2025.2 (Vigente)', 'v2025.1', 'v2024.Final'], }, { id: 'interno-mix', name: 'Estándar Institucional Mixto', versions: ['v2.0', 'v1.5', 'v1.0-beta'], }, { id: 'conacyt', name: 'Formato Posgrado CONAHCYT', versions: ['v3.0 (2025)', 'v2.8'], }, ] interface Props { cardTitle?: string cardDescription?: string templatesData?: Array // Controlled selection (optional). If not provided, component manages its own state selectedTemplateId?: string selectedVersion?: string onChange?: (sel: { templateId: string; version: string }) => void } export function TemplateSelectorCard({ cardTitle = 'Configuración del Documento', cardDescription = 'Selecciona la base para tu nuevo plan.', templatesData = DEFAULT_TEMPLATES_DATA, selectedTemplateId, selectedVersion, onChange, }: Props) { const [internalTemplate, setInternalTemplate] = useState('') const [internalVersion, setInternalVersion] = useState('') const selectedTemplate = selectedTemplateId ?? internalTemplate const version = selectedVersion ?? internalVersion // Buscamos las versiones de la plantilla seleccionada const currentTemplateData = useMemo( () => templatesData.find((t) => t.id === selectedTemplate), [templatesData, selectedTemplate], ) const availableVersions = currentTemplateData?.versions || [] const handleTemplateChange = (value: string) => { const template = templatesData.find((t) => t.id === value) const firstVersion = template?.versions[0] ?? '' if (onChange) { onChange({ templateId: value, version: firstVersion }) } else { setInternalTemplate(value) setInternalVersion(firstVersion) } } const handleVersionChange = (value: string) => { if (onChange) { onChange({ templateId: selectedTemplate, version: value }) } else { setInternalVersion(value) } } return ( {cardTitle} {cardDescription} {/* SELECT 1: PRIMARIO (Llamativo) */}
{/* SELECT 2: SECUNDARIO (Sutil) */}
) }