'use client'; import { CuestionarioWithCupo, GetEvento } from '@/types/evento'; import Image from 'next/image'; import Link from 'next/link'; import React, { useState } from 'react'; import MarkdownRenderer from '../markdown-render'; import { toParam } from '@/utils/slugify'; import { formatearFechaCard, formatearHorario } from '@/utils/date-utils'; import Button from '../button'; export default function FormularioCardUser({ evento, formulario, }: { evento: GetEvento; formulario: CuestionarioWithCupo; }) { const [verMas, setVerMas] = useState(false); const descripcion = formulario.descripcion ?? ''; const limite = 100; // Determinar si hay cupos disponibles const sinCupos = formulario.cupo_maximo !== null && formulario.cupos_disponibles <= 0; // Verificar si el evento es el mismo día const fechaInicio = new Date(formulario.fecha_inicio); const fechaFin = new Date(formulario.fecha_fin); const esElMismoDia = fechaInicio.toDateString() === fechaFin.toDateString(); // Obtener información de fecha formateada usando las utilidades const { mesTexto, diaTexto } = formatearFechaCard( formulario.fecha_inicio, formulario.fecha_fin ); // Obtener horario formateado si es el mismo día const horarioFormateado = esElMismoDia ? formatearHorario(formulario.fecha_inicio, formulario.fecha_fin) : null; const descripcionRecortada = descripcion.length > limite && !verMas ? `${descripcion.slice(0, limite)}...` : descripcion; const imgSrc = formulario.banner ? `${process.env.NEXT_PUBLIC_API_URL}/banners/${formulario.banner}` : evento.banner ? `${process.env.NEXT_PUBLIC_API_URL}/banners/${evento.banner}` : `/default-banner.png`; return (