'use client'; import { useState } from 'react'; import { useFormStatus } from 'react-dom'; import { TIPO_LABEL } from '@/lib/funnel'; const TIPOS = ['cocina', 'bano', 'salon', 'comedor', 'integral', 'otro'] as const; const CALIDADES = [ { value: 'basica', label: 'Básica' }, { value: 'media', label: 'Media' }, { value: 'premium', label: 'Premium' }, ] as const; const URGENCIAS = [ { value: 'alta', label: 'Cuanto antes' }, { value: 'media', label: 'En unos meses' }, { value: 'baja', label: 'Sin prisa' }, ] as const; const MAX_FOTOS = 4; const inputClass = 'w-full px-4 py-3 text-base font-sans text-dark bg-white border-[1.5px] border-gray-200 rounded-lg transition-all duration-150 outline-none placeholder:text-gray-400 focus:border-black focus:shadow-[0_0_0_3px_rgba(0,0,0,0.06)]'; function SubmitButton({ disabled }: { disabled: boolean }) { const { pending } = useFormStatus(); return ( {pending ? ( <> Generando tu presupuesto... > ) : ( 'Generar mi presupuesto' )} ); } export default function FotosUploader({ action, }: { action: (formData: FormData) => void | Promise; }) { const [previews, setPreviews] = useState([]); const handleFiles = (e: React.ChangeEvent) => { const files = Array.from(e.target.files ?? []).slice(0, MAX_FOTOS); previews.forEach((url) => URL.revokeObjectURL(url)); setPreviews(files.map((f) => URL.createObjectURL(f))); }; return ( {/* Fotos */} Sube fotos del espacio (hasta {MAX_FOTOS}) {previews.length > 0 && ( {previews.map((url, i) => ( // eslint-disable-next-line @next/next/no-img-element ))} )} {/* Tipo de reforma */} ¿Qué quieres reformar? {TIPOS.map((t) => ( {TIPO_LABEL[t]} ))} {/* m2 + calidad */} Metros cuadrados (aprox.) Nivel de acabado {CALIDADES.map((c) => ( {c.label} ))} {/* Provincia */} Provincia {/* Urgencia + presupuesto objetivo */} ¿Para cuándo? {URGENCIAS.map((u) => ( {u.label} ))} Presupuesto objetivo (opcional, €) {/* Cambios estructurales */} Hay que mover sanitarios, tirar algún muro o cambiar la distribución {/* Bloque abierto de gustos */} Cuéntanos cómo lo imaginas Calculamos un presupuesto orientativo con tus datos. Sin compromiso. ); }
Calculamos un presupuesto orientativo con tus datos. Sin compromiso.