From 98be1a04051a96e1ffeb084ce697a8567cac5a11 Mon Sep 17 00:00:00 2001 From: Guillermo Arrieta Medina Date: Fri, 6 Mar 2026 19:58:32 -0600 Subject: [PATCH] =?UTF-8?q?close=20#150:=20Se=20implement=C3=B3=20el=20mod?= =?UTF-8?q?al=20de=20=E2=80=9CAgregar=20Bibliograf=C3=ADa=E2=80=9D=20con?= =?UTF-8?q?=20b=C3=BAsqueda=20en=20l=C3=ADnea,=20generaci=C3=B3n=20de=20ci?= =?UTF-8?q?tas=20y=20tipado=20fuerte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Se creó el modal de “Agregar Bibliografía” como ruta-modal y se enlazó desde el botón correspondiente con estilo consistente. - Se implementó la búsqueda de sugerencias en línea mediante Edge Function y se conservó únicamente lo seleccionado al regenerar sugerencias. - Se replicó el tooltip de “seleccionadas” con control total: se mostró solo en la primera generación y se permitió cerrarlo únicamente con el tache. - Se integró la generación de citas con citeproc-js y se cargaron los recursos CSL/locale desde archivos locales en public/, usando BASE_URL. - Se decodificaron entidades HTML en las citas generadas (p. ej., & → &). - Se habilitó la regeneración forzada de citas por formato y se conservaron las citas (incluidas ediciones) al alternar formatos. - Se mejoró la UI: se usó textarea autoajustable para citas y se estiró el select de tipo a ancho completo en sm+; se validó cantidad 1–40 o vacío (con deshabilitado del botón). - Se tipó fuertemente la inserción a bibliografia_asignatura y se tiparon source/tipo en las referencias conforme a los tipos de Supabase. --- src/components/ui/textarea.tsx | 18 +- src/data/api/subjects.api.ts | 20 +- .../nueva/NuevaBibliografiaModalContainer.tsx | 499 +++++++++++++----- 3 files changed, 374 insertions(+), 163 deletions(-) diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx index 7f21b5e..80aa346 100644 --- a/src/components/ui/textarea.tsx +++ b/src/components/ui/textarea.tsx @@ -1,18 +1,24 @@ -import * as React from "react" +import * as React from 'react' -import { cn } from "@/lib/utils" +import { cn } from '@/lib/utils' -function Textarea({ className, ...props }: React.ComponentProps<"textarea">) { +const Textarea = React.forwardRef< + HTMLTextAreaElement, + React.ComponentProps<'textarea'> +>(({ className, ...props }, ref) => { return (