J

Jenn

Femenino Inglés
¿Te resultó útil? ¡Invítanos un café para seguir adelante! Apóyanos

Significado e Historia

Jenn es un nombre femenino, frecuentemente una forma abreviada (hipocorístico) de Jennifer. Como diminutivo, surgió junto con el aumento de la popularidad de Jennifer en el siglo XX, particularmente en regiones de habla inglesa.

Etimología e Historia

El nombre raíz Jennifer proviene de una forma córnica del nombre galés Gwenhwyfar, el nombre original de la reina Ginebra de la leyenda artúrica. Aunque Jennifer era raro fuera de Cornualles antes de principios del siglo XX, ganó reconocimiento generalizado después de aparecer en la obra de George Bernard Shaw The Doctor's Dilemma (1906). El nombre aumentó en popularidad en los Estados Unidos durante mediados del siglo XX, convirtiéndose en el nombre más popular para niñas entre 1970 y 1984. La forma abreviada Jenn siguió naturalmente esta tendencia como una versión corta y afectuosa.

Portadores Notables

Cultura y Artes

Jenn Bostic (nacida en 1986), cantautora country estadounidense</plaintext><plaintext>Jenn Grant (nacida en 1980), cantante folk pop canadiense</plaintext><plaintext>Jenn Colella, actriz y cantante estadounidense</plaintext><plaintext>Jenn Ashworth (nacida en 1982), escritora inglesa</plaintext><h3>Otros Campos</h3><plaintext>Jenn Robinson (nacida en 1991), modelo de moda canadiense</plaintext><plaintext>Jenn Stone, periodista de videojuegos estadounidense</plaintext><h2>Nombres Relacionados</h2><p>Las variantes de Jenn incluyen <a href="/name/jen">Jen</a>, <a href="/name/jena">Jena</a> y <a href="/name/jenni">Jenni</a>. El nombre también comparte raíces con formas más largas como <a href="/name/guinevere">Ginebra</a> (mitología galesa) y <a href="/name/gwenhwyfar">Gwenhwyfar</a> (galés).</p><ul><li><strong>Significado:</strong> Forma corta de Jennifer</li><li><strong>Origen:</strong> Córnico/Galés (a través de Ginebra)</li><li><strong>Tipo:</strong> Diminutivo/hipocorístico</li><li><strong>Regiones de uso:</strong> Países de habla inglesa (particularmente EE. UU. y Reino Unido)</li></ul> </div> </section> <section class="mb-8"> <div class="flex items-center gap-3 mb-3"> <h2 class="text-base font-semibold text-gray-900">Nombres relacionados</h2> <div class="h-px flex-1 bg-gray-200"></div> </div> <div class="space-y-3"> <div class="bg-white rounded-xl border border-gray-100 hover:border-gray-200 transition p-4"> <div class="text-xs font-bold uppercase tracking-wider text-gray-500 mb-2">Variants</div> <div class="flex flex-wrap items-baseline gap-x-1.5 gap-y-2 leading-relaxed"> <a href="https://namehub.ngrok.app/es/name/jen" class="name-link hover:underline text-sm font-medium">Jen</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jena" class="name-link hover:underline text-sm font-medium">Jena</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenelle" class="name-link hover:underline text-sm font-medium">Jenelle</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jeni" class="name-link hover:underline text-sm font-medium">Jeni</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenna" class="name-link hover:underline text-sm font-medium">Jenna</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenni" class="name-link hover:underline text-sm font-medium">Jenni</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jennie" class="name-link hover:underline text-sm font-medium">Jennie</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenny" class="name-link hover:underline text-sm font-medium">Jenny</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenae" class="name-link hover:underline text-sm font-medium">Jenae</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenessa" class="name-link hover:underline text-sm font-medium">Jenessa</a> </div> </div> <div class="bg-white rounded-xl border border-gray-100 hover:border-gray-200 transition p-4"> <div class="text-xs font-bold uppercase tracking-wider text-gray-500 mb-2">Other Languages &amp; Cultures</div> <div class="flex flex-wrap items-baseline gap-x-1.5 gap-y-2 leading-relaxed"> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Welsh Mythology)</span> <a href="https://namehub.ngrok.app/es/name/gwenhwyfar" class="name-link hover:underline text-sm font-medium">Gwenhwyfar</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Arthurian Cycle)</span> <a href="https://namehub.ngrok.app/es/name/guenevere" class="name-link hover:underline text-sm font-medium">Guenevere</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/guinevere" class="name-link hover:underline text-sm font-medium">Guinevere</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Spanish)</span> <a href="https://namehub.ngrok.app/es/name/jenifer" class="name-link hover:underline text-sm font-medium">Jenifer</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Swedish)</span> <a href="https://namehub.ngrok.app/es/name/jennifer" class="name-link hover:underline text-sm font-medium">Jennifer</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jenny" class="name-link hover:underline text-sm font-medium">Jenny</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(French)</span> <a href="https://namehub.ngrok.app/es/name/jenna" class="name-link hover:underline text-sm font-medium">Jenna</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Finnish)</span> <a href="https://namehub.ngrok.app/es/name/jenni" class="name-link hover:underline text-sm font-medium">Jenni</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(French)</span> <a href="https://namehub.ngrok.app/es/name/guenie11vre" class="name-link hover:underline text-sm font-medium">Guenièvre</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/jennah" class="name-link hover:underline text-sm font-medium">Jennah</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Hungarian)</span> <a href="https://namehub.ngrok.app/es/name/dzsenifer" class="name-link hover:underline text-sm font-medium">Dzsenifer</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Icelandic)</span> <a href="https://namehub.ngrok.app/es/name/jenny10" class="name-link hover:underline text-sm font-medium">Jenný</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Italian)</span> <a href="https://namehub.ngrok.app/es/name/ginevra" class="name-link hover:underline text-sm font-medium">Ginevra</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Spanish (Latin American))</span> <a href="https://namehub.ngrok.app/es/name/ye10nifer" class="name-link hover:underline text-sm font-medium">Yénifer</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/ye10nnifer" class="name-link hover:underline text-sm font-medium">Yénnifer</a><span class="text-gray-300">,</span> <a href="https://namehub.ngrok.app/es/name/yenny" class="name-link hover:underline text-sm font-medium">Yenny</a> <span class="basis-full"></span> <span class="text-xs font-semibold text-gray-400 uppercase tracking-wider">(Swedish)</span> <a href="https://namehub.ngrok.app/es/name/jennie" class="name-link hover:underline text-sm font-medium">Jennie</a> </div> </div> </div> </section> <p class="mt-8 pt-3 border-t border-gray-100 text-sm text-gray-500 leading-relaxed"> <svg class="inline w-3.5 h-3.5 mr-1 mb-0.5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/></svg> <span class="font-semibold text-gray-700">Fuentes:</span> <a href="https://en.wikipedia.org/wiki/Jenn" rel="nofollow noopener" target="_blank" class="hover:text-indigo-600 hover:underline">Wikipedia — Jenn</a> </p> </div> <div class="w-full lg:w-72 shrink-0 space-y-4"> <div class="bg-white rounded-xl border border-gray-100 p-5 space-y-5"> <div> <div class="flex items-center gap-3 mb-3"> <h2 class="text-sm font-bold text-gray-900">Descargar</h2> <div class="h-px flex-1 bg-gray-200"></div> </div> <a href="https://namehub.ngrok.app/es/certificate/preview/jenn" class="flex items-center gap-2.5 px-3.5 py-2.5 rounded-xl border-2 border-gray-200 text-sm font-semibold text-gray-700 hover:bg-gray-50 hover:border-gray-300 transition"> <svg class="w-4 h-4 text-gray-500 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"/></svg> <span class="flex-1">Certificado de Nombre</span> <span class="inline-flex items-center px-1.5 py-0.5 rounded-full text-[10px] font-bold uppercase tracking-wider bg-emerald-50 text-emerald-700">Gratis</span> </a> </div> <div> <div class="flex items-center gap-3 mb-3"> <h2 class="text-sm font-bold text-gray-900">Compartir</h2> <div class="h-px flex-1 bg-gray-200"></div> </div> <div class="flex flex-wrap gap-1.5"> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fnamehub.ngrok.app%2Fes%2Fname%2Fjenn" target="_blank" rel="noopener" class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition" title="Facebook"> <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg> </a> <a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fnamehub.ngrok.app%2Fes%2Fname%2Fjenn&text=Jenn+%E2%80%94+Significado+y+origen+del+nombre" target="_blank" rel="noopener" class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition" title="X"> <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg> </a> <a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fnamehub.ngrok.app%2Fes%2Fname%2Fjenn&description=Jenn+%E2%80%94+Significado+y+origen+del+nombre" target="_blank" rel="noopener" class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition" title="Pinterest"> <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24"><path d="M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 01.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12.017 24c6.624 0 11.99-5.367 11.99-11.988C24.007 5.367 18.641 0 12.017 0z"/></svg> </a> <button id="copy-link-btn" class="inline-flex items-center justify-center w-9 h-9 rounded-lg border border-gray-200 text-gray-500 hover:bg-indigo-50 hover:border-indigo-300 hover:text-indigo-600 transition cursor-pointer" title="Copiar enlace"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"/></svg> </button> <script> document.getElementById('copy-link-btn')?.addEventListener('click', function() { const btn = this; navigator.clipboard.writeText('https://namehub.ngrok.app/es/name/jenn').then(function() { btn.classList.add('bg-emerald-50', 'border-emerald-300', 'text-emerald-600'); setTimeout(function() { btn.classList.remove('bg-emerald-50', 'border-emerald-300', 'text-emerald-600'); }, 2000); }); }); </script> </div> </div> </div> <div class="bg-white rounded-xl border border-gray-100 p-5"> <div class="flex items-center gap-3 mb-3"> <h2 class="text-sm font-bold text-gray-900">Categorías</h2> <div class="h-px flex-1 bg-gray-200"></div> </div> <div class="flex flex-wrap gap-1.5"> <a href="https://namehub.ngrok.app/es/names/tag/youtubers" class="inline-flex items-center px-2.5 py-1 text-xs font-semibold rounded-full border border-gray-200 text-gray-600 hover:border-indigo-300 hover:text-indigo-700 transition" > youtubers </a> <a href="https://namehub.ngrok.app/es/names/tag/the_west_wing_characters" class="inline-flex items-center px-2.5 py-1 text-xs font-semibold rounded-full border border-gray-200 text-gray-600 hover:border-indigo-300 hover:text-indigo-700 transition" > Los personajes del ala oeste </a> <a href="https://namehub.ngrok.app/es/names/tag/short_forms" class="inline-flex items-center px-2.5 py-1 text-xs font-semibold rounded-full border border-gray-200 text-gray-600 hover:border-indigo-300 hover:text-indigo-700 transition" > formas cortas </a> <a href="https://namehub.ngrok.app/es/names/tag/family_ties_characters" class="inline-flex items-center px-2.5 py-1 text-xs font-semibold rounded-full border border-gray-200 text-gray-600 hover:border-indigo-300 hover:text-indigo-700 transition" > Personajes de lazos familiares </a> <a href="https://namehub.ngrok.app/es/names/tag/rappers" class="inline-flex items-center px-2.5 py-1 text-xs font-semibold rounded-full border border-gray-200 text-gray-600 hover:border-indigo-300 hover:text-indigo-700 transition" > raperos </a> </div> </div> </div> </div> </main> <footer class="bg-gradient-to-b from-gray-50 to-white border-t border-gray-200"> <div class="max-w-6xl mx-auto px-4 pt-8 pb-6"> <div class="grid grid-cols-2 md:grid-cols-12 gap-8 mb-6"> <div class="col-span-2 md:col-span-4"> <a href="https://namehub.ngrok.app/es" class="inline-flex items-center gap-2 mb-4"> <div class="w-9 h-9 rounded-xl bg-gradient-to-br from-indigo-500 via-violet-600 to-fuchsia-600 flex items-center justify-center shadow-md"> <span class="text-white font-bold text-lg">N</span> </div> <span class="text-lg font-bold text-gray-900">NameHub</span> </a> <p class="text-sm text-gray-600 leading-relaxed mb-4 max-w-sm">Una base de datos en crecimiento de nombres y apellidos con orígenes, significados e historias de culturas de todo el mundo.</p> <div class="flex items-center gap-3"> <a href="https://buy.stripe.com/6oU5kE6OM1ct0g35ed7Zu00" target="_blank" rel="noopener" class="inline-flex items-center gap-1.5 px-3 py-1.5 bg-rose-50 hover:bg-rose-100 border border-rose-200 hover:border-rose-300 rounded-full text-xs font-bold text-rose-700 transition"> <svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="currentColor"><path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg> Donar </a> </div> </div> <div class="md:col-span-3"> <h3 class="text-xs font-bold uppercase tracking-wider text-gray-500 mb-4">Descubrir</h3> <ul class="space-y-2.5 text-sm"> <li><a href="https://namehub.ngrok.app/es/names" class="text-gray-700 hover:text-indigo-700 transition">Nombres</a></li> <li><a href="https://namehub.ngrok.app/es/names/list" class="text-gray-700 hover:text-indigo-700 transition">Por origen</a></li> <li><a href="https://namehub.ngrok.app/es/top" class="text-gray-700 hover:text-indigo-700 transition">Nombres populares</a></li> <li><a href="https://namehub.ngrok.app/es/namesakes" class="text-gray-700 hover:text-indigo-700 transition">Homónimos</a></li> <li><a href="https://namehub.ngrok.app/es/glossary" class="text-gray-700 hover:text-indigo-700 transition">Glosario</a></li> </ul> </div> <div class="md:col-span-2"> <h3 class="text-xs font-bold uppercase tracking-wider text-gray-500 mb-4">Herramientas</h3> <ul class="space-y-2.5 text-sm"> <li><a href="https://namehub.ngrok.app/es/name-combiner" class="text-gray-700 hover:text-indigo-700 transition">Combina vuestros nombres</a></li> <li><a href="https://namehub.ngrok.app/es/names/random" class="text-gray-700 hover:text-indigo-700 transition">Generador de Nombres</a></li> <li><a href="https://namehub.ngrok.app/es/family-tree" class="text-gray-700 hover:text-indigo-700 transition">Árbol Genealógico</a></li> <li><a href="https://namehub.ngrok.app/es/members" class="text-gray-700 hover:text-indigo-700 transition">Miembros</a></li> </ul> </div> <div class="md:col-span-3"> <h3 class="text-xs font-bold uppercase tracking-wider text-gray-500 mb-4">Recursos</h3> <ul class="space-y-2.5 text-sm"> <li><a href="https://namehub.ngrok.app/es/pages" class="text-gray-700 hover:text-indigo-700 transition">Artículos</a></li> <li><a href="https://namehub.ngrok.app/es/contact" class="text-gray-700 hover:text-indigo-700 transition">Contacto</a></li> <li><a href="https://namehub.ngrok.app/es/pricing" class="text-gray-700 hover:text-indigo-700 transition">Precios</a></li> <li> <a href="https://surnames.namehub.info/es/names" class="inline-flex items-center gap-1 text-gray-700 hover:text-indigo-700 transition"> Apellidos <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/></svg> </a> </li> </ul> </div> </div> <div class="pt-6 border-t border-gray-200"> <div class="flex flex-col md:flex-row justify-between items-center gap-4 text-sm"> <div class="text-gray-500"> &copy; 2026 NameHub. Todos los derechos reservados. </div> <nav class="flex flex-wrap items-center gap-x-6 gap-y-2 text-gray-500"> <a href="https://namehub.ngrok.app/es/page/privacy-policy" class="hover:text-indigo-700 transition">Política de Privacidad</a> <a href="https://namehub.ngrok.app/es/page/terms-of-service" class="hover:text-indigo-700 transition">Términos de Servicio</a> </nav> </div> </div> </div> </footer> <div class="js-cookie-consent cookie-consent fixed bottom-0 inset-x-0 z-50 p-4"> <div class="max-w-3xl mx-auto"> <div class="bg-white rounded-2xl shadow-2xl border border-gray-200 px-6 py-5 flex flex-col sm:flex-row items-start sm:items-center gap-4"> <div class="flex items-start gap-3 flex-1"> <div class="w-10 h-10 rounded-xl bg-indigo-100 flex items-center justify-center shrink-0 mt-0.5"> <svg class="w-5 h-5 text-indigo-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 8v4m0 4h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"/></svg> </div> <div> <p class="text-sm font-medium text-gray-800 mb-0.5">We use cookies</p> <p class="text-xs text-gray-500">We use essential cookies to make NameHub work. We'd also like to set analytics cookies to understand how you use the site. <a href="https://namehub.ngrok.app/es/page/privacy-policy" class="text-indigo-600 hover:underline">Privacy Policy</a></p> </div> </div> <div class="flex items-center gap-2 shrink-0"> <button class="js-cookie-consent-agree cookie-consent__agree cursor-pointer px-5 py-2 bg-indigo-600 text-white text-sm font-medium rounded-lg hover:bg-indigo-700 transition"> Accept </button> <button onclick="document.querySelector('.js-cookie-consent').style.display='none'" class="cursor-pointer px-5 py-2 bg-gray-100 text-gray-600 text-sm font-medium rounded-lg hover:bg-gray-200 transition"> Decline </button> </div> </div> </div> </div> <script> window.laravelCookieConsent = (function () { const COOKIE_VALUE = 1; const COOKIE_DOMAIN = 'namehub.ngrok.app'; function consentWithCookies() { setCookie('laravel_cookie_consent', COOKIE_VALUE, 7300); hideCookieDialog(); } function cookieExists(name) { return (document.cookie.split('; ').indexOf(name + '=' + COOKIE_VALUE) !== -1); } function hideCookieDialog() { const dialogs = document.getElementsByClassName('js-cookie-consent'); for (let i = 0; i < dialogs.length; ++i) { dialogs[i].style.display = 'none'; } } function setCookie(name, value, expirationInDays) { const date = new Date(); date.setTime(date.getTime() + (expirationInDays * 24 * 60 * 60 * 1000)); document.cookie = name + '=' + value + ';expires=' + date.toUTCString() + ';domain=' + COOKIE_DOMAIN + ';path=/' + ';samesite=lax'; } if (cookieExists('laravel_cookie_consent')) { hideCookieDialog(); } const buttons = document.getElementsByClassName('js-cookie-consent-agree'); for (let i = 0; i < buttons.length; ++i) { buttons[i].addEventListener('click', consentWithCookies); } return { consentWithCookies: consentWithCookies, hideCookieDialog: hideCookieDialog }; })(); </script> <script> document.getElementById('mobile-menu-btn')?.addEventListener('click', function() { document.getElementById('mobile-menu')?.classList.toggle('hidden'); document.getElementById('mobile-lang-menu')?.classList.add('hidden'); }); document.getElementById('mobile-lang-btn')?.addEventListener('click', function(e) { e.stopPropagation(); document.getElementById('mobile-lang-menu')?.classList.toggle('hidden'); document.getElementById('mobile-menu')?.classList.add('hidden'); }); document.getElementById('lang-switcher-btn')?.addEventListener('click', function(e) { e.stopPropagation(); document.getElementById('lang-switcher-menu')?.classList.toggle('hidden'); document.getElementById('tools-dropdown-menu')?.classList.add('hidden'); }); document.getElementById('tools-dropdown-btn')?.addEventListener('click', function(e) { e.stopPropagation(); document.getElementById('tools-dropdown-menu')?.classList.toggle('hidden'); document.getElementById('lang-switcher-menu')?.classList.add('hidden'); }); document.getElementById('profile-dropdown-btn')?.addEventListener('click', function(e) { e.stopPropagation(); document.getElementById('profile-dropdown-menu')?.classList.toggle('hidden'); document.getElementById('lang-switcher-menu')?.classList.add('hidden'); }); document.getElementById('auth-dropdown-btn')?.addEventListener('click', function(e) { e.stopPropagation(); document.getElementById('auth-dropdown-menu')?.classList.toggle('hidden'); document.getElementById('lang-switcher-menu')?.classList.add('hidden'); }); document.addEventListener('click', function() { document.getElementById('lang-switcher-menu')?.classList.add('hidden'); document.getElementById('tools-dropdown-menu')?.classList.add('hidden'); document.getElementById('profile-dropdown-menu')?.classList.add('hidden'); document.getElementById('auth-dropdown-menu')?.classList.add('hidden'); document.getElementById('mobile-lang-menu')?.classList.add('hidden'); }); </script> <script> (function() { const toggle = document.getElementById('header-search-toggle'); const box = document.getElementById('header-search-box'); const input = document.getElementById('header-search-input'); const results = document.getElementById('header-search-results'); if (!toggle) return; const noNamesText = "No se encontraron nombres"; const currentLocale = "es"; const headerSpinner = document.getElementById('header-search-spinner'); const setLoading = (on) => headerSpinner?.classList.toggle('hidden', !on); let timeout; toggle.addEventListener('click', function(e) { e.stopPropagation(); box.classList.toggle('hidden'); if (!box.classList.contains('hidden')) { input.focus(); } }); input?.addEventListener('input', function() { clearTimeout(timeout); const q = this.value.trim(); if (q.length < 2) { results.innerHTML = ''; setLoading(false); return; } setLoading(true); timeout = setTimeout(async () => { const requestedQuery = q; let names; try { const res = await fetch(`https://namehub.ngrok.app/api/names/search?q=${encodeURIComponent(q)}`); names = await res.json(); } catch (_) { names = []; } if (input.value.trim() !== requestedQuery) return; setLoading(false); const genderColors = { m: 'bg-sky-100 text-sky-600', f: 'bg-rose-100 text-rose-600', mf: 'bg-amber-100 text-amber-600' }; const genderLabels = { m: 'M', f: 'F', mf: 'M&F' }; if (names.length === 0) { results.innerHTML = '<div class="px-4 py-3 text-sm text-gray-400">' + noNamesText + '</div>'; } else { results.innerHTML = names.map(n => { const gc = genderColors[n.gender] || 'bg-gray-100 text-gray-500'; const gl = genderLabels[n.gender] || ''; const usages = n.usages ? `<div class="text-[11px] text-gray-400 truncate">${n.usages}</div>` : ''; return `<a href="/${currentLocale}/name/${n.slug}" class="flex items-center gap-3 px-4 py-2 hover:bg-indigo-50 transition border-b border-gray-50 last:border-0"> <div class="w-8 h-8 rounded-full ${gc} flex items-center justify-center font-bold text-[10px] shrink-0">${gl || n.name.charAt(0)}</div> <div class="min-w-0 flex-1 overflow-hidden"> <div class="text-sm font-medium text-gray-800 truncate">${n.name}</div> ${usages} </div> </a>`; }).join(''); } }, 250); }); input?.addEventListener('keydown', function(e) { if (e.key === 'Escape') { box.classList.add('hidden'); results.innerHTML = ''; } }); document.addEventListener('click', function(e) { if (!document.getElementById('header-search-wrapper')?.contains(e.target)) { box?.classList.add('hidden'); } }); })(); </script> <div x-data="aiChatWidget({ isAuth: false, balanceCents: 0, balancePct: 100, maxLength: 200, userKey: 'guest', streamUrl: 'https://namehub.ngrok.app/api/chat/stream', loginUrl: 'https://namehub.ngrok.app/login', topUpUrl: 'https://namehub.ngrok.app/es/ai-pricing', csrf: 'EpWJi8l7bzowEhMbCG7JZf7cYVolIiYs5WEGLZFK', i18n: { outOfCreditTitle: 'Sin cr\u00e9dito AI', outOfCreditBody: 'Has usado todo tu cr\u00e9dito AI. Recarga para seguir chateando.', topupButton: 'A\u00f1adir cr\u00e9dito', loginRequiredTitle: 'Inicio de sesi\u00f3n requerido', loginRequiredBody: 'Por favor, inicia sesi\u00f3n para usar el chat AI.', blockedTitle: 'Cuenta bloqueada', blockedBody: 'Esta cuenta est\u00e1 bloqueada del chat AI. Contacta a soporte si crees que es un error.', verifyEmailTitle: 'Verifica tu correo', verifyEmailBody: 'Por favor confirma tu direcci\u00f3n de correo para usar el chat AI.', verifyEmailButton: 'Verificar correo', verifyEmailResend: 'Reenviar enlace de verificaci\u00f3n', verifyEmailResent: 'Enlace enviado \u2014 revisa tu bandeja de entrada.', errorGeneric: 'Algo sali\u00f3 mal. Int\u00e9ntalo de nuevo.', errorRateLimited: 'Demasiadas peticiones. Por favor, ve m\u00e1s despacio.', }, })" class="fixed bottom-4 right-4 z-[60]" role="region" aria-label="Preguntar a la IA" > <button type="button" @click="toggle" x-show="!open" class="group flex items-center gap-2 rounded-full bg-indigo-600 px-4 py-3 text-white shadow-lg shadow-indigo-500/30 hover:bg-indigo-700 transition" :aria-label="'Abrir chat'" > <svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.86 9.86 0 0 1-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"/> </svg> <span class="font-semibold text-sm">Preguntar a la IA</span> </button> <template x-if="mounted"> <div x-show="open" x-transition:enter="transition ease-out duration-150" x-transition:enter-start="opacity-0 translate-y-2" x-transition:enter-end="opacity-100 translate-y-0" class="flex flex-col w-[min(380px,calc(100vw-2rem))] h-[min(560px,calc(100vh-2rem))] rounded-2xl bg-white shadow-2xl ring-1 ring-black/10 overflow-hidden" x-cloak > <div class="flex items-center justify-between px-4 py-3 bg-gradient-to-br from-indigo-600 to-violet-600 text-white"> <div class="min-w-0 flex-1 mr-2"> <p class="font-semibold text-sm">Preguntar a la IA</p> <div x-show="isAuth" :title="balanceTooltip" class="mt-1.5 cursor-help w-full h-1 rounded-full bg-white/20 overflow-hidden"> <div class="h-full bg-white transition-all" :style="`width: ${balancePct}%`"></div> </div> </div> <div class="flex items-center gap-1"> <button x-show="hasHistory" @click="newConversation" class="rounded-lg p-1 hover:bg-white/10" :title="'Iniciar una nueva conversaci\u00f3n'" :aria-label="'Iniciar una nueva conversaci\u00f3n'" > <svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3m0 0v3m0-3h3m-3 0H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z" transform="rotate(0)"/> </svg> </button> <button @click="toggle" class="rounded-lg p-1 hover:bg-white/10" :aria-label="'Cerrar chat'"> <svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> </svg> </button> </div> </div> <div class="flex-1 overflow-y-auto overscroll-contain touch-pan-y px-3 py-4 space-y-3 bg-gray-50" x-ref="messages"> <template x-if="messages.length === 0"> <div class="text-center text-gray-500 text-sm pt-4"> <p>Pregunta lo que quieras sobre nombres — significados, orígenes, popularidad.</p> </div> </template> <template x-for="(msg, idx) in messages" :key="idx"> <div :class="msg.role === 'user' ? 'flex justify-end' : 'flex justify-start'" :data-msg-role="msg.role"> <div :class="msg.role === 'user' ? 'max-w-[80%] bg-indigo-600 text-white rounded-2xl rounded-br-sm px-3 py-2 text-sm' : 'max-w-[80%] bg-white ring-1 ring-black/5 text-gray-800 rounded-2xl rounded-bl-sm px-3 py-2 text-sm prose prose-sm max-w-none'" x-html="msg.role === 'user' ? escapeHtml(msg.content) : renderMarkdown(msg.content)" ></div> </div> </template> <div x-show="status" x-ref="statusPill" class="flex justify-start"> <div class="bg-white ring-1 ring-black/5 rounded-2xl px-3 py-2 text-sm text-gray-500 italic flex items-center gap-2"> <span class="inline-block w-2 h-2 bg-indigo-500 rounded-full animate-pulse"></span> <span x-text="status"></span> </div> </div> <div x-show="pendingSpacerPx > 0" :style="`height: ${pendingSpacerPx}px`" aria-hidden="true"></div> <div x-show="blocker" class="rounded-xl bg-amber-50 border border-amber-200 p-3 text-sm"> <p class="font-semibold text-amber-900" x-text="blocker?.title"></p> <p class="text-amber-800 mt-1" x-text="blocker?.body"></p> <div class="mt-2 flex flex-wrap gap-2"> <a x-show="blocker?.cta && blocker?.url" :href="blocker?.url" class="inline-block px-3 py-1.5 bg-amber-600 text-white text-xs font-semibold rounded-lg hover:bg-amber-700"> <span x-text="blocker?.cta"></span> </a> <button x-show="blocker?.secondaryAction === 'resend_verification'" @click="resendVerification" :disabled="resendBusy" class="inline-block px-3 py-1.5 bg-white border border-amber-600 text-amber-700 text-xs font-semibold rounded-lg hover:bg-amber-50 disabled:opacity-60"> <span x-text="resendBusy ? '…' : i18n.verifyEmailResend"></span> </button> </div> </div> </div> <form @submit.prevent="send" class="border-t border-gray-200 px-2 pt-2 pb-1 bg-white"> <div class="flex gap-2"> <input type="text" x-model="draft" :placeholder="'Escribe tu pregunta\u2026'" :disabled="busy" :maxlength="maxLength" class="flex-1 rounded-xl border border-gray-200 px-3 py-2 text-sm focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 disabled:bg-gray-100" > <button type="submit" :disabled="busy || draft.trim() === '' || draft.length > maxLength" class="rounded-xl bg-indigo-600 px-3 py-2 text-white text-sm font-semibold hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed" > Enviar </button> </div> <div class="text-[10px] text-right pr-1 mt-0.5 select-none" :class="draft.length > maxLength * 0.9 ? 'text-amber-600' : 'text-gray-400'"> <span x-text="draft.length"></span>/<span x-text="maxLength"></span> </div> </form> </div> </template> </div> </body> </html>