import React, { useState, useMemo } from 'react';
import {
CheckCircle2,
Circle,
Briefcase,
Rocket,
MonitorPlay,
Megaphone,
LayoutList
} from 'lucide-react';
// Categorias e ícones para melhorar a UX
const CATEGORIES = {
'Operacional & Financeiro': ,
'Vendas & Comercial': ,
'Produto & Tecnologia': ,
'Marketing & Tráfego':
};
// Lista de tarefas inicial baseada no rascunho
const initialTasks = [
{ id: 1, category: 'Operacional & Financeiro', text: 'Modelo de contrato', completed: false },
{ id: 2, category: 'Operacional & Financeiro', text: 'Metodologia de cobrança (Asaas - Boleto / Pix)', completed: false },
{ id: 3, category: 'Operacional & Financeiro', text: 'E-mail comercial administrativo@envise.com.br (verificar plano de hospedagem)', completed: false },
{ id: 4, category: 'Vendas & Comercial', text: 'Proposta comercial (modelo do site - usar Claude/Gemini) e forma de apresentar', completed: false },
{ id: 5, category: 'Vendas & Comercial', text: 'Estruturar serviços com precificação individual e com pacotes', completed: false },
{ id: 6, category: 'Vendas & Comercial', text: 'Guia/Estrutura de reunião de fechamento (condução e possíveis demonstrações)', completed: false },
{ id: 7, category: 'Vendas & Comercial', text: 'Briefing e roadmap base após fechamento', completed: false },
{ id: 8, category: 'Produto & Tecnologia', text: 'Levantar custo de assinaturas ao cliente e diferenças das LLMs', completed: false },
{ id: 9, category: 'Produto & Tecnologia', text: 'Testar Manychat para domínio e entendimento', completed: false },
{ id: 10, category: 'Produto & Tecnologia', text: 'Testar criação de sites Gemini Canvas + Netlify', completed: false },
{ id: 11, category: 'Marketing & Tráfego', text: 'Configuração BM Envise (Tráfego)', completed: false },
{ id: 12, category: 'Marketing & Tráfego', text: 'Criativos de tráfego (vários criativos em imagens que segmentam)', completed: false },
{ id: 13, category: 'Marketing & Tráfego', text: 'Estratégia de prospecção: currículo', completed: false },
];
export default function App() {
const [tasks, setTasks] = useState(initialTasks);
// Função para alternar o status da tarefa
const toggleTask = (taskId) => {
setTasks(tasks.map(task =>
task.id === taskId ? { ...task, completed: !task.completed } : task
));
};
// Cálculos de progresso
const totalTasks = tasks.length;
const completedTasks = tasks.filter(t => t.completed).length;
const progressPercentage = Math.round((completedTasks / totalTasks) * 100);
// Agrupar tarefas por categoria
const tasksByCategory = useMemo(() => {
return tasks.reduce((acc, task) => {
if (!acc[task.category]) acc[task.category] = [];
acc[task.category].push(task);
return acc;
}, {});
}, [tasks]);
return (
{/* HEADER */}
{
// Fallback caso a imagem não carregue no ambiente de preview
e.target.style.display = 'none';
e.target.nextSibling.style.display = 'block';
}}
/>
Envise
Próximos Passos
Roadmap 25/04
{/* MAIN CONTENT */}
{/* PROGRESS SECTION */}
Visão Geral
Acompanhe o progresso do lançamento da Envise.
{progressPercentage}%
Concluído
{/* Progress Bar */}
{completedTasks} de {totalTasks} tarefas finalizadas