Initial commit: AI Vertice - Site Institucional
This commit is contained in:
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
node_modules/
|
||||
.next/
|
||||
dist/
|
||||
.env
|
||||
.env.local
|
||||
.env*.local
|
||||
*.log
|
||||
.DS_Store
|
||||
coverage/
|
||||
.turbo/
|
||||
*.tsbuildinfo
|
||||
2077
index.html
Normal file
2077
index.html
Normal file
File diff suppressed because it is too large
Load Diff
542
script.js
Normal file
542
script.js
Normal file
@@ -0,0 +1,542 @@
|
||||
/* ==========================================
|
||||
AI VERTICE - Premium Interactive Effects
|
||||
========================================== */
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
// ==========================================
|
||||
// Cursor Glow Effect
|
||||
// ==========================================
|
||||
const cursorGlow = document.querySelector('.cursor-glow');
|
||||
|
||||
if (cursorGlow && window.innerWidth > 768) {
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
cursorGlow.style.left = e.clientX + 'px';
|
||||
cursorGlow.style.top = e.clientY + 'px';
|
||||
});
|
||||
|
||||
document.addEventListener('mouseenter', () => {
|
||||
cursorGlow.style.opacity = '1';
|
||||
});
|
||||
|
||||
document.addEventListener('mouseleave', () => {
|
||||
cursorGlow.style.opacity = '0';
|
||||
});
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// Mobile Menu Toggle
|
||||
// ==========================================
|
||||
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
|
||||
const navLinks = document.querySelector('.nav-links');
|
||||
const navActions = document.querySelector('.nav-actions');
|
||||
|
||||
if (mobileMenuBtn) {
|
||||
mobileMenuBtn.addEventListener('click', function() {
|
||||
this.classList.toggle('active');
|
||||
|
||||
let mobileMenu = document.querySelector('.mobile-menu');
|
||||
|
||||
if (!mobileMenu) {
|
||||
mobileMenu = document.createElement('div');
|
||||
mobileMenu.className = 'mobile-menu';
|
||||
mobileMenu.innerHTML = `
|
||||
<div class="mobile-menu-content">
|
||||
${navLinks ? navLinks.innerHTML : ''}
|
||||
${navActions ? navActions.innerHTML : ''}
|
||||
</div>
|
||||
`;
|
||||
document.querySelector('.header').appendChild(mobileMenu);
|
||||
|
||||
const style = document.createElement('style');
|
||||
style.textContent = `
|
||||
.mobile-menu {
|
||||
position: fixed;
|
||||
top: 80px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: rgba(3, 7, 18, 0.98);
|
||||
backdrop-filter: blur(20px);
|
||||
padding: 2rem;
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
z-index: 999;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
.mobile-menu.active {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
.mobile-menu-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
.mobile-menu a {
|
||||
display: block;
|
||||
padding: 0.75rem 0;
|
||||
color: #d1d5db;
|
||||
font-size: 1.1rem;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.05);
|
||||
}
|
||||
.mobile-menu a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.mobile-menu .btn {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.mobile-menu-btn.active span:nth-child(1) {
|
||||
transform: rotate(45deg) translate(5px, 5px);
|
||||
}
|
||||
.mobile-menu-btn.active span:nth-child(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
.mobile-menu-btn.active span:nth-child(3) {
|
||||
transform: rotate(-45deg) translate(7px, -6px);
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
mobileMenu.classList.toggle('active');
|
||||
});
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// FAQ Accordion
|
||||
// ==========================================
|
||||
const faqItems = document.querySelectorAll('.faq-item');
|
||||
|
||||
faqItems.forEach(item => {
|
||||
const question = item.querySelector('.faq-question');
|
||||
|
||||
question.addEventListener('click', function() {
|
||||
const isActive = item.classList.contains('active');
|
||||
|
||||
faqItems.forEach(otherItem => {
|
||||
otherItem.classList.remove('active');
|
||||
});
|
||||
|
||||
if (!isActive) {
|
||||
item.classList.add('active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Smooth Scroll
|
||||
// ==========================================
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
|
||||
if (target) {
|
||||
const mobileMenu = document.querySelector('.mobile-menu');
|
||||
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
|
||||
if (mobileMenu && mobileMenu.classList.contains('active')) {
|
||||
mobileMenu.classList.remove('active');
|
||||
mobileMenuBtn.classList.remove('active');
|
||||
}
|
||||
|
||||
const headerHeight = document.querySelector('.header').offsetHeight;
|
||||
const targetPosition = target.getBoundingClientRect().top + window.pageYOffset - headerHeight;
|
||||
|
||||
window.scrollTo({
|
||||
top: targetPosition,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Header Background on Scroll
|
||||
// ==========================================
|
||||
const header = document.querySelector('.header');
|
||||
|
||||
window.addEventListener('scroll', function() {
|
||||
if (window.pageYOffset > 100) {
|
||||
header.style.background = 'rgba(3, 7, 18, 0.95)';
|
||||
header.style.boxShadow = '0 4px 30px rgba(0, 0, 0, 0.3)';
|
||||
} else {
|
||||
header.style.background = 'rgba(3, 7, 18, 0.7)';
|
||||
header.style.boxShadow = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Intersection Observer for Animations
|
||||
// ==========================================
|
||||
const observerOptions = {
|
||||
root: null,
|
||||
rootMargin: '0px',
|
||||
threshold: 0.1
|
||||
};
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('animate-in');
|
||||
observer.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
}, observerOptions);
|
||||
|
||||
const animationStyle = document.createElement('style');
|
||||
animationStyle.textContent = `
|
||||
.animate-on-scroll {
|
||||
opacity: 0;
|
||||
transform: translateY(40px);
|
||||
transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.animate-on-scroll.animate-in {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
.animate-on-scroll:nth-child(1) { transition-delay: 0s; }
|
||||
.animate-on-scroll:nth-child(2) { transition-delay: 0.1s; }
|
||||
.animate-on-scroll:nth-child(3) { transition-delay: 0.2s; }
|
||||
.animate-on-scroll:nth-child(4) { transition-delay: 0.3s; }
|
||||
.animate-on-scroll:nth-child(5) { transition-delay: 0.4s; }
|
||||
.animate-on-scroll:nth-child(6) { transition-delay: 0.5s; }
|
||||
`;
|
||||
document.head.appendChild(animationStyle);
|
||||
|
||||
const animateElements = document.querySelectorAll(
|
||||
'.platform-card, .timeline-item, .use-case-card, .metric-card, .testimonial-card, .feature-card, .faq-item, .integration-category'
|
||||
);
|
||||
|
||||
animateElements.forEach(el => {
|
||||
el.classList.add('animate-on-scroll');
|
||||
observer.observe(el);
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Counter Animation
|
||||
// ==========================================
|
||||
const counters = document.querySelectorAll('[data-count]');
|
||||
|
||||
const animateCounter = (el) => {
|
||||
const target = parseInt(el.getAttribute('data-count'));
|
||||
const duration = 2000;
|
||||
const step = target / (duration / 16);
|
||||
let current = 0;
|
||||
|
||||
const updateCounter = () => {
|
||||
current += step;
|
||||
if (current < target) {
|
||||
el.textContent = Math.floor(current);
|
||||
requestAnimationFrame(updateCounter);
|
||||
} else {
|
||||
el.textContent = target;
|
||||
}
|
||||
};
|
||||
|
||||
updateCounter();
|
||||
};
|
||||
|
||||
const counterObserver = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
animateCounter(entry.target);
|
||||
counterObserver.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.5 });
|
||||
|
||||
counters.forEach(counter => counterObserver.observe(counter));
|
||||
|
||||
// ==========================================
|
||||
// Tilt Effect on Cards
|
||||
// ==========================================
|
||||
const tiltCards = document.querySelectorAll('[data-tilt]');
|
||||
|
||||
tiltCards.forEach(card => {
|
||||
card.addEventListener('mousemove', (e) => {
|
||||
const rect = card.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left;
|
||||
const y = e.clientY - rect.top;
|
||||
|
||||
const centerX = rect.width / 2;
|
||||
const centerY = rect.height / 2;
|
||||
|
||||
const rotateX = (y - centerY) / 20;
|
||||
const rotateY = (centerX - x) / 20;
|
||||
|
||||
card.style.transform = `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(10px)`;
|
||||
});
|
||||
|
||||
card.addEventListener('mouseleave', () => {
|
||||
card.style.transform = 'perspective(1000px) rotateX(0) rotateY(0) translateZ(0)';
|
||||
});
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Form Submission
|
||||
// ==========================================
|
||||
const contactForm = document.querySelector('.contact-form');
|
||||
|
||||
if (contactForm) {
|
||||
contactForm.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const btn = this.querySelector('button[type="submit"]');
|
||||
const originalHTML = btn.innerHTML;
|
||||
|
||||
btn.innerHTML = '<span>Enviando...</span>';
|
||||
btn.disabled = true;
|
||||
btn.style.opacity = '0.7';
|
||||
|
||||
setTimeout(() => {
|
||||
btn.innerHTML = '<span>✓ Mensagem Enviada!</span>';
|
||||
btn.style.background = 'linear-gradient(135deg, #10b981 0%, #059669 100%)';
|
||||
btn.style.opacity = '1';
|
||||
|
||||
this.reset();
|
||||
|
||||
setTimeout(() => {
|
||||
btn.innerHTML = originalHTML;
|
||||
btn.style.background = '';
|
||||
btn.disabled = false;
|
||||
}, 3000);
|
||||
}, 1500);
|
||||
});
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// Parallax on Neural Network
|
||||
// ==========================================
|
||||
const neuralNetwork = document.querySelector('.neural-network');
|
||||
const floatingCards = document.querySelectorAll('.floating-card');
|
||||
|
||||
if (neuralNetwork && window.innerWidth > 992) {
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
const mouseX = (e.clientX / window.innerWidth - 0.5) * 2;
|
||||
const mouseY = (e.clientY / window.innerHeight - 0.5) * 2;
|
||||
|
||||
neuralNetwork.style.transform = `translate(calc(-50% + ${mouseX * 20}px), calc(-50% + ${mouseY * 20}px))`;
|
||||
|
||||
floatingCards.forEach((card, index) => {
|
||||
const speed = (index + 1) * 8;
|
||||
const baseTransform = card.style.transform || '';
|
||||
card.style.transform = `translate(${mouseX * speed}px, ${mouseY * speed}px)`;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// Glitch Effect on Hover
|
||||
// ==========================================
|
||||
const glitchText = document.querySelector('.glitch');
|
||||
|
||||
if (glitchText) {
|
||||
const glitchStyle = document.createElement('style');
|
||||
glitchStyle.textContent = `
|
||||
.glitch {
|
||||
position: relative;
|
||||
}
|
||||
.glitch:hover::before,
|
||||
.glitch:hover::after {
|
||||
content: attr(data-text);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: transparent;
|
||||
}
|
||||
.glitch:hover::before {
|
||||
left: 2px;
|
||||
text-shadow: -2px 0 #ff00ff;
|
||||
clip-path: inset(44% 0 56% 0);
|
||||
animation: glitch-anim-1 0.5s infinite linear alternate-reverse;
|
||||
}
|
||||
.glitch:hover::after {
|
||||
left: -2px;
|
||||
text-shadow: -2px 0 #00ffff;
|
||||
clip-path: inset(24% 0 76% 0);
|
||||
animation: glitch-anim-2 0.5s infinite linear alternate-reverse;
|
||||
}
|
||||
@keyframes glitch-anim-1 {
|
||||
0% { clip-path: inset(44% 0 36% 0); }
|
||||
20% { clip-path: inset(12% 0 64% 0); }
|
||||
40% { clip-path: inset(78% 0 2% 0); }
|
||||
60% { clip-path: inset(32% 0 52% 0); }
|
||||
80% { clip-path: inset(88% 0 4% 0); }
|
||||
100% { clip-path: inset(56% 0 24% 0); }
|
||||
}
|
||||
@keyframes glitch-anim-2 {
|
||||
0% { clip-path: inset(24% 0 56% 0); }
|
||||
20% { clip-path: inset(68% 0 12% 0); }
|
||||
40% { clip-path: inset(8% 0 72% 0); }
|
||||
60% { clip-path: inset(96% 0 4% 0); }
|
||||
80% { clip-path: inset(48% 0 32% 0); }
|
||||
100% { clip-path: inset(16% 0 64% 0); }
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(glitchStyle);
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// Scroll Progress Indicator
|
||||
// ==========================================
|
||||
const progressBar = document.createElement('div');
|
||||
progressBar.className = 'scroll-progress';
|
||||
document.body.appendChild(progressBar);
|
||||
|
||||
const progressStyle = document.createElement('style');
|
||||
progressStyle.textContent = `
|
||||
.scroll-progress {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 3px;
|
||||
background: linear-gradient(90deg, #6366f1, #8b5cf6, #ec4899);
|
||||
width: 0%;
|
||||
z-index: 10001;
|
||||
transition: width 0.1s;
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(progressStyle);
|
||||
|
||||
window.addEventListener('scroll', () => {
|
||||
const scrollTop = document.documentElement.scrollTop;
|
||||
const scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
|
||||
const progress = (scrollTop / scrollHeight) * 100;
|
||||
progressBar.style.width = progress + '%';
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Magnetic Buttons
|
||||
// ==========================================
|
||||
const magneticBtns = document.querySelectorAll('.btn-glow');
|
||||
|
||||
magneticBtns.forEach(btn => {
|
||||
btn.addEventListener('mousemove', (e) => {
|
||||
const rect = btn.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left - rect.width / 2;
|
||||
const y = e.clientY - rect.top - rect.height / 2;
|
||||
|
||||
btn.style.transform = `translate(${x * 0.2}px, ${y * 0.2}px)`;
|
||||
});
|
||||
|
||||
btn.addEventListener('mouseleave', () => {
|
||||
btn.style.transform = 'translate(0, 0)';
|
||||
});
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Typewriter Effect for Hero
|
||||
// ==========================================
|
||||
const typewriterText = document.querySelector('.hero-subtitle');
|
||||
|
||||
if (typewriterText && window.innerWidth > 768) {
|
||||
const originalText = typewriterText.innerHTML;
|
||||
const strongTags = typewriterText.querySelectorAll('strong');
|
||||
|
||||
// Highlight strong text on load with animation
|
||||
strongTags.forEach((tag, index) => {
|
||||
tag.style.opacity = '0';
|
||||
tag.style.transform = 'translateY(10px)';
|
||||
tag.style.transition = 'all 0.5s ease';
|
||||
tag.style.transitionDelay = `${1 + index * 0.3}s`;
|
||||
|
||||
setTimeout(() => {
|
||||
tag.style.opacity = '1';
|
||||
tag.style.transform = 'translateY(0)';
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// Ripple Effect on Buttons
|
||||
// ==========================================
|
||||
const buttons = document.querySelectorAll('.btn');
|
||||
|
||||
buttons.forEach(button => {
|
||||
button.addEventListener('click', function(e) {
|
||||
const ripple = document.createElement('span');
|
||||
const rect = this.getBoundingClientRect();
|
||||
const size = Math.max(rect.width, rect.height);
|
||||
const x = e.clientX - rect.left - size / 2;
|
||||
const y = e.clientY - rect.top - size / 2;
|
||||
|
||||
ripple.style.cssText = `
|
||||
position: absolute;
|
||||
width: ${size}px;
|
||||
height: ${size}px;
|
||||
left: ${x}px;
|
||||
top: ${y}px;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
border-radius: 50%;
|
||||
transform: scale(0);
|
||||
animation: ripple 0.6s ease-out;
|
||||
pointer-events: none;
|
||||
`;
|
||||
|
||||
this.style.position = 'relative';
|
||||
this.style.overflow = 'hidden';
|
||||
this.appendChild(ripple);
|
||||
|
||||
setTimeout(() => ripple.remove(), 600);
|
||||
});
|
||||
});
|
||||
|
||||
const rippleStyle = document.createElement('style');
|
||||
rippleStyle.textContent = `
|
||||
@keyframes ripple {
|
||||
to {
|
||||
transform: scale(4);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(rippleStyle);
|
||||
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// Console Easter Egg
|
||||
// ==========================================
|
||||
console.log('%c AI Vertice ', 'background: linear-gradient(90deg, #6366f1, #8b5cf6); color: white; font-size: 24px; padding: 10px 20px; border-radius: 8px;');
|
||||
console.log('%c Transformando dados com IA 🚀', 'color: #8b5cf6; font-size: 14px;');
|
||||
|
||||
// ==========================================
|
||||
|
||||
// Product Carousel Navigation
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const showcase = document.querySelector('.products-showcase');
|
||||
const dots = document.querySelectorAll('.product-nav-dot');
|
||||
|
||||
if (!showcase || !dots.length) return;
|
||||
|
||||
dots.forEach(dot => {
|
||||
dot.addEventListener('click', () => {
|
||||
const productId = dot.dataset.product;
|
||||
const target = document.getElementById('product-' + productId);
|
||||
if (target) {
|
||||
target.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });
|
||||
dots.forEach(d => d.classList.remove('active'));
|
||||
dot.classList.add('active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Update active dot on scroll
|
||||
if ('IntersectionObserver' in window) {
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
const id = entry.target.id.replace('product-', '');
|
||||
dots.forEach(d => {
|
||||
d.classList.toggle('active', d.dataset.product === id);
|
||||
});
|
||||
}
|
||||
});
|
||||
}, { root: showcase, threshold: 0.5 });
|
||||
|
||||
showcase.querySelectorAll('.product-hero').forEach(hero => observer.observe(hero));
|
||||
}
|
||||
});
|
||||
4856
styles.css
Normal file
4856
styles.css
Normal file
File diff suppressed because it is too large
Load Diff
116
vertex-ai.js
Normal file
116
vertex-ai.js
Normal file
@@ -0,0 +1,116 @@
|
||||
// VERTEX AI - Assistente
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
var aiOrb = document.getElementById('aiOrb');
|
||||
console.log('VERTEX AI loaded, aiOrb:', aiOrb);
|
||||
var aiChat = document.getElementById('aiChat');
|
||||
var aiClose = document.getElementById('aiClose');
|
||||
var aiMessages = document.getElementById('aiMessages');
|
||||
var aiInput = document.getElementById('aiInput');
|
||||
var aiSend = document.getElementById('aiSend');
|
||||
var hudOverlay = document.getElementById('hudOverlay');
|
||||
|
||||
if (!aiOrb || !aiChat) return;
|
||||
|
||||
function getResponse(text) {
|
||||
text = text.toLowerCase();
|
||||
|
||||
if (text.match(/oi|ola|hey|bom dia|boa tarde|boa noite/)) {
|
||||
return 'Ola! Sou o VERTEX, assistente da AI Vertice. Posso ajudar com informacoes sobre nossos produtos, precos ou agendar uma demo.';
|
||||
}
|
||||
|
||||
if (text.match(/produto|solucao|fazem/)) {
|
||||
return 'Nossos produtos: LexMind (Juridico), MetisClass (Educacao), ArgusFinance (Financas), Strix (Seguranca). Qual te interessa?';
|
||||
}
|
||||
|
||||
if (text.match(/lexmind|juridico|advogado|contrato/)) {
|
||||
return 'LexMind: IA para o setor juridico. Analise de contratos, pesquisa e peticoes automaticas. 85% menos tempo.';
|
||||
}
|
||||
|
||||
if (text.match(/metisclass|metis|educacao|curso/)) {
|
||||
return 'MetisClass: Plataforma de educacao com IA. Tutor virtual 24/7 e trilhas adaptativas. 3x mais engajamento.';
|
||||
}
|
||||
|
||||
if (text.match(/argusfinance|argus|financeiro|bloomberg/)) {
|
||||
return 'ArgusFinance: Terminal financeiro com IA. Dados em tempo real e analise preditiva. 50K+ ativos.';
|
||||
}
|
||||
|
||||
if (text.match(/strix|seguranca|vigilancia|camera/)) {
|
||||
return 'Strix: Sistema de vigilancia com IA. Visao computacional 24/7. 99.9% uptime.';
|
||||
}
|
||||
|
||||
if (text.match(/preco|valor|quanto/)) {
|
||||
return 'Planos: Starter a partir de R$2.500/mes. Enterprise sob consulta. Demo gratuita disponivel!';
|
||||
}
|
||||
|
||||
if (text.match(/demo|agendar|testar/)) {
|
||||
return 'Agende sua demo gratuita em contato@aivertice.com ou clique em Agendar Demo.';
|
||||
}
|
||||
|
||||
if (text.match(/contato|email/)) {
|
||||
return 'Contato: contato@aivertice.com - Brasil - Grupo Kislanski Industries.';
|
||||
}
|
||||
|
||||
if (text.match(/empresa|vertice|kislanski/)) {
|
||||
return 'AI Vertice: Empresa de solucoes de IA do grupo Kislanski Industries. Produtos: LexMind, MetisClass, ArgusFinance, Strix.';
|
||||
}
|
||||
|
||||
if (text.match(/obrigad|valeu/)) {
|
||||
return 'Por nada! Precisa de mais alguma coisa?';
|
||||
}
|
||||
|
||||
return 'Posso ajudar com: Produtos, Precos, Demo ou Contato. Pergunte sobre LexMind, MetisClass, ArgusFinance ou Strix!';
|
||||
}
|
||||
|
||||
function addMessage(text, isUser) {
|
||||
var div = document.createElement('div');
|
||||
div.className = isUser ? 'ai-message ai-message-user' : 'ai-message ai-message-bot';
|
||||
var avatar = isUser ? '👤' : '◆';
|
||||
div.innerHTML = '<div class="ai-avatar">' + avatar + '</div><div class="ai-bubble">' + text + '</div>';
|
||||
aiMessages.appendChild(div);
|
||||
aiMessages.scrollTop = aiMessages.scrollHeight;
|
||||
}
|
||||
|
||||
function send() {
|
||||
var text = aiInput.value.trim();
|
||||
if (!text) return;
|
||||
|
||||
addMessage(text, true);
|
||||
aiInput.value = '';
|
||||
|
||||
setTimeout(function() {
|
||||
addMessage(getResponse(text), false);
|
||||
}, 400);
|
||||
}
|
||||
|
||||
aiOrb.onclick = function() {
|
||||
aiChat.classList.toggle('active');
|
||||
if (hudOverlay) hudOverlay.classList.toggle('active');
|
||||
};
|
||||
|
||||
if (aiClose) {
|
||||
aiClose.onclick = function() {
|
||||
aiChat.classList.remove('active');
|
||||
if (hudOverlay) hudOverlay.classList.remove('active');
|
||||
};
|
||||
}
|
||||
|
||||
if (aiSend) {
|
||||
aiSend.onclick = send;
|
||||
}
|
||||
|
||||
if (aiInput) {
|
||||
aiInput.onkeypress = function(e) {
|
||||
if (e.key === 'Enter') send();
|
||||
};
|
||||
}
|
||||
|
||||
var suggestions = document.querySelectorAll('.ai-suggestion');
|
||||
for (var i = 0; i < suggestions.length; i++) {
|
||||
suggestions[i].onclick = function() {
|
||||
aiInput.value = this.getAttribute('data-question');
|
||||
send();
|
||||
};
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user