Danool Logo
Iniciar sesión / Crear una cuenta

Menú principal

Enlaces rápidos

Contáctanos

Generador de nombres comerciales elegante

El motor de IA más potente para crear nombres de empresas para filtros y plantas de tratamiento de agua.

La inteligencia artificial se basará en estas palabras para derivar sinónimos y combinaciones inteligentes.

Evaluación general ${data.overall_score}%

${data.reason}

Profesionalismo ${data.ratings.professionalism}%
Fácil de memorizar ${data.ratings.memorability}%
Poder de marketing ${data.ratings.marketing_power}%
Poder SEO ${data.ratings.seo}%
`; resultsContainer.insertAdjacentHTML('beforeend', cardHtml); gsap.to(`#card-${index}`, { opacity: 1, y: 0, duration: 0.5, delay: i * 0.1 }); }); } // Infinite Scroll Logic const scrollAnchor = document.getElementById('scrollAnchor'); const infiniteLoading = document.getElementById('infiniteLoading'); const observer = new IntersectionObserver(async (entries) => { if(entries[0].isIntersecting && currentResults.length > 0 && !isGenerating) { isGenerating = true; infiniteLoading.classList.remove('hidden'); try { const formData = new FormData(form); currentResults.forEach(r => formData.append('existing_names[]', r.name_en)); const response = await fetch('https://www.danool.com/es/api/your-brand/generate', { method: 'POST', headers: { 'X-CSRF-TOKEN': 'ArMyTt8GExBIjfmkbdOKSsVc3tZzIQcdgQnGgskw', 'Accept': 'application/json' }, body: formData }); const result = await response.json(); if(result.success) { const oldLength = currentResults.length; currentResults = currentResults.concat(result.data); document.getElementById('resultsCount').innerText = currentResults.length; renderCards(result.data, oldLength); } } catch (e) { console.error("Failed to load more brands:", e); } finally { isGenerating = false; infiniteLoading.classList.add('hidden'); } } }, { rootMargin: '200px' }); observer.observe(scrollAnchor); // Modal Logic const reportModal = document.getElementById('reportModal'); let currentBrandNameEn = ''; let currentBrandData = null; function openReportModal(index) { const data = currentResults[index]; currentBrandData = data; currentBrandNameEn = data.name_en; document.getElementById('modalTitle').innerText = `${data.name_en} | ${data.name_ar}`; document.getElementById('modalSlogan').innerText = `"${data.slogan || ''}"`; document.getElementById('modalStory').innerText = data.story; document.getElementById('modalUses').innerText = data.suitable_uses; document.getElementById('modalMarkets').innerText = data.target_markets; // Setup SEO Link const slug = data.name_en.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)+/g, ''); document.getElementById('seoPageLink').href = `/business-name/${slug}`; // Overall Score Animation document.getElementById('modalOverallScore').innerText = '0'; document.getElementById('modalOverallBar').style.width = '0%'; setTimeout(() => { document.getElementById('modalOverallScore').innerText = data.overall_score; document.getElementById('modalOverallBar').style.width = `${data.overall_score}%`; }, 300); // Metrics Grid const metricsMap = { 'الاحترافية': {val: data.ratings.professionalism, color: '#052033'}, 'سهولة الحفظ': {val: data.ratings.memorability, color: '#ffb600'}, 'سهولة النطق': {val: data.ratings.pronunciation_ease, color: '#10b981'}, 'قوة التسويق': {val: data.ratings.marketing_power, color: '#f59e0b'}, 'السيو SEO': {val: data.ratings.seo, color: '#ef4444'}, 'الثقة': {val: data.ratings.trust, color: '#0ea5e9'}, 'العالمية': {val: data.ratings.global_appeal, color: '#6366f1'}, 'الابتكار': {val: data.ratings.innovation, color: '#ec4899'}, 'التصدير': {val: data.ratings.exportability, color: '#14b8a6'}, 'الشعار': {val: data.ratings.logo_potential, color: '#84cc16'} }; const metricsGrid = document.getElementById('metricsGrid'); metricsGrid.innerHTML = ''; Object.entries(metricsMap).forEach(([label, info]) => { metricsGrid.innerHTML += renderMetricCircle(label, info.val, info.color); }); // SWOT document.getElementById('swotS').innerHTML = data.swot.strengths.map(s => `
  • ${s}
  • `).join(''); document.getElementById('swotW').innerHTML = data.swot.weaknesses.map(w => `
  • ${w}
  • `).join(''); document.getElementById('swotO').innerHTML = data.swot.opportunities.map(o => `
  • ${o}
  • `).join(''); document.getElementById('swotT').innerHTML = data.swot.threats.map(t => `
  • ${t}
  • `).join(''); document.getElementById('modalAiNotes').innerText = data.ai_notes; // Identity - Render all palettes const paletteContainer = document.getElementById('colorPalette'); paletteContainer.innerHTML = ''; if (data.identity.palettes && data.identity.palettes.length > 0) { // Set input colors to the first palette document.getElementById('customColor1').value = data.identity.palettes[0][0]; document.getElementById('customColor2').value = data.identity.palettes[0][1]; document.getElementById('customColor3').value = data.identity.palettes[0][2]; data.identity.palettes.forEach((palette, pIndex) => { const isActive = pIndex === 0 ? 'ring-4 ring-[#ffb600]' : 'border-transparent'; let paletteHtml = `
    `; palette.forEach(c => { paletteHtml += `
    `; }); paletteHtml += `
    `; paletteContainer.innerHTML += paletteHtml; }); } else { // Fallback for older data format data.identity.colors.forEach(c => { paletteContainer.innerHTML += `
    `; }); } document.getElementById('modalFontAr').innerText = data.identity.best_arabic_font || 'Almarai'; document.getElementById('modalFontEn').innerText = data.identity.best_english_font || 'Inter'; document.getElementById('modalLogoType').innerText = data.identity.suitable_logo_type || 'Minimalist'; updateLogoPrompt(data.identity.colors); // Reset Checkers document.getElementById('dbCheckContainer').innerHTML = `Examen en directo en curso...`; document.getElementById('domainsTableBody').innerHTML = ` Actualmente se están examinando los registros globales de RDAP...`; reportModal.classList.remove('hidden'); gsap.fromTo(reportModal.children[1], { scale: 0.9, opacity: 0, y: 50 }, { scale: 1, opacity: 1, y: 0, duration: 0.4, ease: "back.out(1.2)" }); // Trigger Checks triggerCheckers(data.name_en, index); } function closeReportModal() { gsap.to(reportModal.children[1], { scale: 0.9, opacity: 0, y: 50, duration: 0.2, onComplete: () => reportModal.classList.add('hidden') }); } function renderMetricCircle(label, percentage, color) { return `
    ${percentage} ${label}
    `; } // Trigger GSAP for circles after modal opens reportModal.addEventListener('transitionend', () => { document.querySelectorAll('#reportModal .circle').forEach(circle => { const final = circle.getAttribute('data-final'); circle.setAttribute('stroke-dasharray', `${final}, 100`); }); }); function selectPalette(index, element) { if(!currentBrandData || !currentBrandData.identity.palettes) return; // Update UI Rings document.querySelectorAll('.palette-group').forEach(el => { el.classList.remove('ring-4', 'ring-[#ffb600]'); el.classList.add('border-transparent'); }); element.classList.remove('border-transparent'); element.classList.add('ring-4', 'ring-[#ffb600]'); // Update Prompt const newColors = currentBrandData.identity.palettes[index]; updateLogoPrompt(newColors); // Sync custom color inputs if(newColors[0]) document.getElementById('customColor1').value = newColors[0]; if(newColors[1]) document.getElementById('customColor2').value = newColors[1]; if(newColors[2]) document.getElementById('customColor3').value = newColors[2]; } function applyCustomColors() { if(!currentBrandData) return; const c1 = document.getElementById('customColor1').value; const c2 = document.getElementById('customColor2').value; const c3 = document.getElementById('customColor3').value; // Remove ring from predefined palettes since user chose custom document.querySelectorAll('.palette-group').forEach(el => { el.classList.remove('ring-4', 'ring-[#ffb600]'); el.classList.add('border-transparent'); }); updateLogoPrompt([c1, c2, c3]); } function updateLogoPrompt(colors) { if(!currentBrandData) return; const prompt = `A minimalist logo for a water brand named ${currentBrandData.name_en}, modern, professional, using hex colors ${colors.join(', ')}, vector, clean white background.`; document.getElementById('modalLogoPrompt').innerText = prompt; } async function triggerCheckers(nameEn, index) { try { const formData = new FormData(); formData.append('name_en', nameEn); formData.append('_token', 'ArMyTt8GExBIjfmkbdOKSsVc3tZzIQcdgQnGgskw'); const response = await fetch('https://www.danool.com/es/api/your-brand/check', { method: 'POST', body: formData }); const result = await response.json(); if(result.success) { // DB Status const db = result.db_status; const dbIcon = db.color === 'green' ? 'check-circle' : (db.color === 'yellow' ? 'exclamation-triangle' : 'times-circle'); const dbColorClass = db.color === 'green' ? 'text-green-600' : (db.color === 'yellow' ? 'text-yellow-600' : 'text-red-600'); document.getElementById('dbCheckContainer').innerHTML = ` ${db.text} ${db.color !== 'green' ? `Similitud: ${db.percentage}% con ${db.similar_to}` : ''} `; // Update inline card const inlineCard = document.getElementById(`inlineCheck-${index}`); if(inlineCard) { inlineCard.classList.remove('hidden'); inlineCard.querySelector('.db-res').innerText = db.text; inlineCard.querySelector('.db-res').className = `db-res font-black ${dbColorClass}`; } // Domains const tbody = document.getElementById('domainsTableBody'); tbody.innerHTML = ''; let dotComAvail = false; Object.entries(result.domains).forEach(([dom, status]) => { const isAvail = status === 'Available'; if(dom.toLowerCase() === nameEn.toLowerCase() + '.com' && isAvail) { dotComAvail = true; } tbody.innerHTML += ` ${dom} ${isAvail ? 'Disponible para la compra' : 'Reservado'} `; }); if(inlineCard) { const domRes = inlineCard.querySelector('.dom-res'); domRes.innerText = dotComAvail ? 'Disponible (.com)' : 'Reservado'; domRes.className = `dom-res font-black ${dotComAvail ? 'text-green-600' : 'text-red-600'}`; } } } catch(e) { console.error(e); } } function copyText(text) { navigator.clipboard.writeText(text); alert('Copiado: ' + text); } function copyPrompt() { const p = document.getElementById('modalLogoPrompt').innerText; copyText(p); } function downloadPDF() { const element = document.getElementById('pdfContent'); const opt ​​​​= { margin: 0, filename: `${currentBrandNameEn}_Brand_Report.pdf`, image: { tipo: 'jpeg', calidad: 0.98 }, html2canvas: { escala: 2, useCORS: true }, jsPDF: { unidad: 'in', formato: 'a4', orientación: 'portrait' } }; html2pdf().set(opt).from(element).save(); }