feat: add Customer Portal (Área do Cliente & Central de Acessos) with 23 preloaded items and WhatsApp export

This commit is contained in:
2026-10-15 12:37:25 -03:00
parent 512cb4ea7e
commit d16ff4f70e
7 changed files with 1551 additions and 31 deletions
+21 -11
View File
@@ -4,10 +4,11 @@ import {
ArrowRight,
RotateCcw,
AlertCircle,
Sparkles,
Lock,
Loader2,
MessageSquare
Sparkles,
Lock,
Loader2,
MessageSquare,
Bookmark
} from 'lucide-react';
import Header from './components/Header';
import SecurityBadge from './components/SecurityBadge';
@@ -18,10 +19,11 @@ import OutputFiles from './components/OutputFiles';
import OpenSslReference from './components/OpenSslReference';
import HostGuideModal from './components/HostGuideModal';
import AppWPP from './components/wpp/AppWPP';
import CustomerPortal from './components/portal/CustomerPortal';
import { convertPfx } from './utils/certConverter';
export default function App() {
const [activeTab, setActiveTab] = useState('cert'); // 'cert' | 'wpp'
const [activeTab, setActiveTab] = useState('portal'); // 'portal' | 'cert' | 'wpp' (default to portal since user asked for it!)
const [file, setFile] = useState(null);
const [arrayBuffer, setArrayBuffer] = useState(null);
const [baseName, setBaseName] = useState('certificado');
@@ -102,9 +104,15 @@ export default function App() {
onOpenHostingGuide={() => setIsHostingGuideOpen(true)}
/>
{/* Conteúdo Principal */}
{/* Conteúdo Principal Dinâmico */}
<main className="main-content">
{activeTab === 'cert' ? (
{activeTab === 'portal' && (
/* Área do Cliente & Central de Acessos */
<CustomerPortal />
)}
{activeTab === 'cert' && (
/* Conversor de Certificados PFX */
<div className="container">
{/* Banner de Segurança & Privacidade */}
<SecurityBadge />
@@ -201,7 +209,9 @@ export default function App() {
</section>
)}
</div>
) : (
)}
{activeTab === 'wpp' && (
/* Aplicativo WPPConnect Integrado */
<div className="wpp-view-wrapper">
<AppWPP />
@@ -213,9 +223,9 @@ export default function App() {
<footer className="footer">
<div className="footer-content">
<p>
{activeTab === 'cert'
? 'CertConverter Web — Conversão PKCS#12 / X.509 em conformidade com padrões ICP-Brasil e OpenSSL.'
: 'AppWPP Web — Gerenciador de Sessões WPPConnect integrado ao portal de utilitários.'}
{activeTab === 'portal' && 'InflavioApps — Área do Cliente & Central de Acessos C2 Sistemas.'}
{activeTab === 'cert' && 'InflavioApps — Conversão PKCS#12 / X.509 em conformidade com padrões ICP-Brasil e OpenSSL.'}
{activeTab === 'wpp' && 'InflavioApps — Gerenciador de Sessões WPPConnect integrado ao portal.'}
</p>
<div className="footer-links">
<button