chore(release): snapshot 1.4.2

This commit is contained in:
Erik Silva
2025-12-17 13:36:23 -03:00
parent 2a112f169d
commit 99d828869a
95 changed files with 9933 additions and 1601 deletions

View File

@@ -1,4 +1,4 @@
"use client";
"use client";
import { useEffect, useState } from "react";
import DashboardPreview from "./DashboardPreview";
@@ -14,211 +14,199 @@ interface DynamicBrandingProps {
export default function DynamicBranding({
currentStep,
companyName = '',
subdomain = '',
primaryColor = '#0ea5e9',
secondaryColor = '#0284c7',
logoUrl = ''
companyName = "",
subdomain = "",
primaryColor = "#0ea5e9",
secondaryColor = "#0284c7",
logoUrl = ""
}: DynamicBrandingProps) {
const [activeTestimonial, setActiveTestimonial] = useState(0);
const testimonials = [
{
text: "Com o Aggios, nossa produtividade aumentou 40%. Gestão de projetos nunca foi tão simples!",
author: "Maria Silva",
company: "DigitalWorks",
avatar: "MS"
text: "A implementação do Aggios transformou completamente a gestão da nossa agência. Conseguimos reduzir em 65% o tempo gasto com tarefas administrativas e aumentar nossa capacidade de atendimento.",
author: "Carlos Eduardo Martins",
position: "CEO",
company: "Martins & Associados",
rating: 5
},
{
text: "Reduzi 60% do tempo gasto com controle financeiro. Tudo centralizado em um só lugar.",
author: "João Santos",
company: "TechHub",
avatar: "JS"
text: "Como diretora de operações, preciso de dados precisos em tempo real. O Aggios entrega exatamente isso. A plataforma é intuitiva e os relatórios são excepcionais para tomada de decisão estratégica.",
author: "Patricia Almeida Santos",
position: "Diretora de Operações",
company: "Digital Solutions Group",
rating: 5
},
{
text: "A melhor decisão para nossa agência. Dashboard intuitivo e relatórios incríveis!",
author: "Ana Costa",
company: "CreativeFlow",
avatar: "AC"
text: "Implementamos o Aggios há 6 meses e o ROI foi imediato. Melhor controle financeiro, visibilidade total dos projetos e uma equipe muito mais produtiva. Recomendo sem ressalvas.",
author: "Roberto Henrique Costa",
position: "Diretor Financeiro",
company: "Costa & Partners",
rating: 5
},
{
text: "A integração com nossas ferramentas foi perfeita e o suporte técnico é simplesmente excepcional. O Aggios se tornou parte fundamental da nossa operação diária.",
author: "Fernanda Silva Rodrigues",
position: "Head de TI",
company: "Tech Innovators",
rating: 5
}
];
const stepContent = [
{
icon: "ri-user-heart-line",
title: "Bem-vindo ao Aggios!",
description: "Vamos criar sua conta em poucos passos",
benefits: [
"✓ Acesso completo ao painel",
"✓ Gestão ilimitada de projetos",
"✓ Suporte prioritário"
]
},
{
icon: "ri-building-line",
title: "Configure sua Empresa",
description: "Personalize de acordo com seu negócio",
benefits: [
"✓ Dashboard personalizado",
"✓ Gestão de equipe e clientes",
"✓ Controle financeiro integrado"
]
},
{
icon: "ri-map-pin-line",
title: "Quase lá!",
description: "Informações de localização e contato",
benefits: [
"✓ Multi-contatos configuráveis",
"✓ Integração com WhatsApp",
"✓ Notificações em tempo real"
]
},
{
icon: "ri-palette-line",
title: "Personalize as Cores",
description: "Deixe com a cara da sua empresa",
benefits: [
"✓ Preview em tempo real",
"✓ Paleta de cores customizada",
"✓ Identidade visual única"
]
}
];
const content = stepContent[currentStep - 1] || stepContent[0];
// Auto-rotate testimonials
useEffect(() => {
const interval = setInterval(() => {
setActiveTestimonial((prev) => (prev + 1) % testimonials.length);
}, 5000);
}, 6000);
return () => clearInterval(interval);
}, [testimonials.length]);
// Se for etapa 4, mostrar preview do dashboard
if (currentStep === 4) {
return (
<div className="relative z-10 flex flex-col justify-center items-center w-full p-12">
{/* Logo */}
<div className="mb-8">
<div className="inline-block px-6 py-3 rounded-2xl bg-white/10 backdrop-blur-sm border border-white/20">
<h1 className="text-5xl font-bold tracking-tight bg-linear-to-r from-white to-white/80 bg-clip-text text-transparent">
<div className="relative z-10 flex flex-col h-full w-full overflow-hidden bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900">
{/* Decorative elements */}
<div className="absolute inset-0 opacity-10">
<div className="absolute top-0 left-0 w-96 h-96 bg-blue-500 rounded-full blur-3xl" />
<div className="absolute bottom-0 right-0 w-96 h-96 bg-purple-500 rounded-full blur-3xl" />
</div>
<div className="relative z-10 flex flex-col justify-center items-center h-full p-12 text-white">
<div className="mb-6">
<h1 className="text-4xl font-bold tracking-tight text-white text-center mb-2">
aggios
</h1>
<p className="text-sm text-white/70 font-medium tracking-wide uppercase text-center">
Gestão Inteligente para Agências
</p>
</div>
<div className="max-w-lg text-center mb-8">
<h2 className="text-3xl font-bold mb-2 text-white">Preview do seu Painel</h2>
<p className="text-white/70 text-base">Veja como ficará seu dashboard personalizado</p>
</div>
<div className="w-full max-w-3xl mb-6">
<DashboardPreview
companyName={companyName}
subdomain={subdomain}
primaryColor={primaryColor}
secondaryColor={secondaryColor}
logoUrl={logoUrl}
/>
</div>
<div className="text-center">
<p className="text-white/60 text-sm">
As cores e configurações são atualizadas em tempo real
</p>
</div>
</div>
{/* Conteúdo */}
<div className="max-w-lg text-center">
<h2 className="text-3xl font-bold mb-2 text-white">Preview do seu Painel</h2>
<p className="text-white/80 text-lg">Veja como ficará seu dashboard personalizado</p>
</div>
{/* Preview */}
<div className="w-full max-w-3xl">
<DashboardPreview
companyName={companyName}
subdomain={subdomain}
primaryColor={primaryColor}
secondaryColor={secondaryColor}
logoUrl={logoUrl}
/>
</div>
{/* Info */}
<div className="mt-6 text-center">
<p className="text-white/70 text-sm">
As cores e configurações são atualizadas em tempo real
</p>
</div>
{/* Decorative circles */}
<div className="absolute -bottom-32 -left-32 w-96 h-96 rounded-full bg-white/5" />
<div className="absolute -top-16 -right-16 w-64 h-64 rounded-full bg-white/5" />
</div>
);
}
return (
<div className="relative z-10 flex flex-col justify-between w-full p-12 text-white">
{/* Logo e Conteúdo da Etapa */}
<div className="flex flex-col justify-center flex-1">
{/* Logo */}
<div className="relative z-10 flex flex-col h-full w-full overflow-hidden bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900">
{/* Decorative elements */}
<div className="absolute inset-0 opacity-10">
<div className="absolute top-20 right-20 w-96 h-96 bg-blue-500 rounded-full blur-3xl" />
<div className="absolute bottom-20 left-20 w-80 h-80 bg-indigo-500 rounded-full blur-3xl" />
</div>
<div className="relative z-10 flex flex-col justify-between h-full p-12 text-white">
<div className="mb-8">
<div className="inline-block px-6 py-3 rounded-2xl bg-white/10 backdrop-blur-sm border border-white/20">
<h1 className="text-5xl font-bold tracking-tight bg-linear-to-r from-white to-white/80 bg-clip-text text-transparent">
<div className="inline-block">
<h1 className="text-4xl font-bold tracking-tight text-white mb-2">
aggios
</h1>
<p className="text-sm text-white/70 font-medium tracking-wide uppercase">
Gestão Inteligente para Agências
</p>
</div>
</div>
{/* Ícone e Título da Etapa */}
<div className="mb-6">
<div className="w-16 h-16 rounded-2xl bg-white/20 flex items-center justify-center mb-4">
<i className={`${content.icon} text-3xl`} />
</div>
<h2 className="text-3xl font-bold mb-2">{content.title}</h2>
<p className="text-white/80 text-lg">{content.description}</p>
</div>
<div className="flex-1" />
{/* Benefícios */}
<div className="space-y-3 mb-8">
{content.benefits.map((benefit, index) => (
<div
key={index}
className="flex items-center gap-3 text-white/90 animate-fade-in"
style={{ animationDelay: `${index * 100}ms` }}
>
<span className="text-lg">{benefit}</span>
<div className="space-y-6">
<div className="mb-6">
<h3 className="text-sm font-semibold text-white/60 uppercase tracking-wider mb-1">
Depoimentos
</h3>
<p className="text-2xl font-bold text-white">
O que nossos clientes dizem
</p>
</div>
<div className="relative">
<div className="bg-white/5 backdrop-blur-md rounded-xl p-8 border border-white/10 shadow-2xl">
<div className="flex gap-1 mb-4">
{[...Array(testimonials[activeTestimonial].rating)].map((_, i) => (
<i key={i} className="ri-star-fill text-yellow-400 text-lg" />
))}
</div>
<div className="mb-4">
<i className="ri-double-quotes-l text-4xl text-white/20" />
</div>
<p className="text-white/95 text-lg leading-relaxed mb-6 min-h-[140px]">
{testimonials[activeTestimonial].text}
</p>
<div className="flex items-center gap-4 pt-6 border-t border-white/10">
<div className="relative w-14 h-14 rounded-full overflow-hidden ring-2 ring-white/20 bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center">
<span className="text-white font-bold text-xl">
{testimonials[activeTestimonial].author.split(' ').map(n => n[0]).join('')}
</span>
</div>
<div className="flex-1">
<p className="font-semibold text-white text-lg">
{testimonials[activeTestimonial].author}
</p>
<p className="text-sm text-white/70">
{testimonials[activeTestimonial].position}
</p>
<p className="text-sm text-white/50 font-medium">
{testimonials[activeTestimonial].company}
</p>
</div>
</div>
</div>
))}
<div className="flex gap-2 justify-center mt-6">
{testimonials.map((_, index) => (
<button
key={index}
onClick={() => setActiveTestimonial(index)}
className={`h-2 rounded-full transition-all duration-300 ${index === activeTestimonial
? "w-12 bg-white shadow-lg shadow-white/20"
: "w-2 bg-white/30 hover:bg-white/50"
}`}
aria-label={`Ir para depoimento ${index + 1}`}
/>
))}
</div>
</div>
<div className="flex items-center justify-center gap-6 mt-8 pt-6 border-t border-white/10">
<div className="text-center">
<p className="text-2xl font-bold text-white">10.000+</p>
<p className="text-xs text-white/60 uppercase tracking-wide">Projetos</p>
</div>
<div className="w-px h-8 bg-white/20" />
<div className="text-center">
<p className="text-2xl font-bold text-white">98%</p>
<p className="text-xs text-white/60 uppercase tracking-wide">Satisfação</p>
</div>
<div className="w-px h-8 bg-white/20" />
<div className="text-center">
<p className="text-2xl font-bold text-white">5.000+</p>
<p className="text-xs text-white/60 uppercase tracking-wide">Usuários</p>
</div>
</div>
</div>
</div>
{/* Carrossel de Depoimentos */}
<div className="relative">
<div className="bg-white/10 backdrop-blur-sm rounded-2xl p-6 border border-white/20">
<div className="mb-4">
<i className="ri-double-quotes-l text-3xl text-white/40" />
</div>
<p className="text-white/95 mb-4 min-h-[60px]">
{testimonials[activeTestimonial].text}
</p>
<div className="flex items-center gap-3">
<div className="w-10 h-10 rounded-full bg-white/20 flex items-center justify-center font-semibold">
{testimonials[activeTestimonial].avatar}
</div>
<div>
<p className="font-semibold text-white">
{testimonials[activeTestimonial].author}
</p>
<p className="text-sm text-white/70">
{testimonials[activeTestimonial].company}
</p>
</div>
</div>
</div>
{/* Indicadores */}
<div className="flex gap-2 justify-center mt-4">
{testimonials.map((_, index) => (
<button
key={index}
onClick={() => setActiveTestimonial(index)}
className={`h-1.5 rounded-full transition-all ${index === activeTestimonial
? "w-8 bg-white"
: "w-1.5 bg-white/40 hover:bg-white/60"
}`}
aria-label={`Ir para depoimento ${index + 1}`}
/>
))}
</div>
</div>
{/* Decorative circles */}
<div className="absolute -bottom-32 -left-32 w-96 h-96 rounded-full bg-white/5" />
<div className="absolute -top-16 -right-16 w-64 h-64 rounded-full bg-white/5" />
</div>
);
}