import { FileText, FolderOpen, Upload } from 'lucide-react' import { useMemo, useState } from 'react' import BarraBusqueda from '../../BarraBusqueda' import { FileDropzone } from './FileDropZone' import { Checkbox } from '@/components/ui/checkbox' import { Label } from '@/components/ui/label' import { Tabs, TabsContent, TabsList, TabsTrigger, TabsContents, } from '@/components/ui/motion-tabs' import { ARCHIVOS, REPOSITORIOS } from '@/features/planes/nuevo/catalogs' const ReferenciasParaIA = ({ selectedArchivoIds = [], selectedRepositorioIds = [], onToggleArchivo, onToggleRepositorio, onFilesChange, }: { selectedArchivoIds?: Array selectedRepositorioIds?: Array onToggleArchivo?: (id: string, checked: boolean) => void onToggleRepositorio?: (id: string, checked: boolean) => void onFilesChange?: ( files: Array<{ id: string; name: string; size: string; type: string }>, ) => void }) => { const [busquedaArchivos, setBusquedaArchivos] = useState('') const [busquedaRepositorios, setBusquedaRepositorios] = useState('') const cleanText = (text: string) => { return text .normalize('NFD') // Descompone "á" en "a" + "´" .replace(/[\u0300-\u036f]/g, '') // Elimina los símbolos diacríticos .toLowerCase() // Convierte a minúsculas } // Filtrado de archivos y de repositorios const archivosFiltrados = useMemo(() => { // Función helper para limpiar texto (quita acentos y hace minúsculas) const term = cleanText(busquedaArchivos) return ARCHIVOS.filter((archivo) => cleanText(archivo.nombre).includes(term), ) }, [busquedaArchivos]) const repositoriosFiltrados = useMemo(() => { const term = cleanText(busquedaRepositorios) return REPOSITORIOS.filter((repositorio) => cleanText(repositorio.nombre).includes(term), ) }, [busquedaRepositorios]) const tabs = [ { name: 'Archivos existentes', value: 'archivos-existentes', icon: FileText, content: (
{archivosFiltrados.map((archivo) => ( ))}
), }, { name: 'Repositorios', value: 'repositorios', icon: FolderOpen, content: (
{repositoriosFiltrados.map((repositorio) => ( ))}
), }, { name: 'Subir archivos', value: 'subir-archivos', icon: Upload, content: (
), }, ] return (
{tabs.map(({ icon: Icon, name, value }) => ( {name} ))} {tabs.map((tab) => ( {tab.content} ))}
) } export default ReferenciasParaIA