photum/frontend/pages/Home.tsx
João Vitor 3178207353 feat: Sistema completo de Gestão FOT e melhorias no dashboard
- Sistema FOT (Formatura Operations Tracking):
  * Tela de Gestão FOT (/cursos) com tabela Excel-style
  * Modal CourseForm com 10 campos (FOT, Empresa, Instituição, etc)
  * Validação de FOT (5 dígitos numéricos)
  * Edição de turmas ao clicar na linha
  * Integração com API backend (empresas, níveis educacionais, universidades)

- Dashboard renovado (/painel):
  * Tabela com 8 colunas (FOT, Data, Curso, Instituição, Ano, Empresa, Tipo, Status)
  * Filtros avançados: FOT (busca numérica), Data, Tipo de Evento
  * Removidos filtros de Estado e Cidade
  * Página de detalhes com tabela vertical (12 informações)
  * Botão Aprovar redireciona para modal de equipe

- Sistema de Aprovação Dupla (/aprovacao):
  * 2 tabelas separadas por abas (Usuários Normais e Profissionais)
  * Coluna Universidade renomeada para Empresa
  * Coluna Função nos profissionais
  * Workflow de aprovação com atribuição de equipe

- Cadastro Profissional (/cadastro-profissional):
  * Formulário específico para fotógrafos
  * Dropdown de Função Profissional da API
  * Tratamento de erro quando backend offline

- Modal de Criar Evento:
  * Tipo de Evento como primeiro campo
  * Nome do Evento (Opcional) como segundo campo

- Componentes novos:
  * EventTable.tsx - Tabela de eventos com ordenação
  * EventFiltersBar.tsx - Filtros avançados (3 filtros)
  * CourseForm.tsx - Formulário FOT completo
  * ProfessionalForm.tsx - Cadastro profissional

- API Service:
  * Integração com backend Go
  * Endpoints: /api/empresas, /api/funcoes, /api/niveis-educacionais, /api/universidades, /graduation-years

- Documentação:
  * README.md principal atualizado
  * frontend/README.md atualizado
  * Documentação completa de componentes e features
2025-12-11 16:02:39 -03:00

83 lines
2.3 KiB
TypeScript

import React from "react";
import { Button } from "../components/Button";
interface HomeProps {
onEnter: () => void;
}
export const Home: React.FC<HomeProps> = ({ onEnter }) => {
return (
<div
className="min-h-screen flex items-center justify-center relative overflow-hidden"
style={{ backgroundColor: "#B9CF33" }}
>
<style>{`
@keyframes fadeInScale {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes float {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-20px);
}
}
.animate-fade-in-scale {
animation: fadeInScale 0.6s ease-out forwards;
}
.animate-float {
animation: float 6s ease-in-out infinite;
}
`}</style>
{/* Círculos decorativos animados */}
<div
className="absolute top-10 left-10 w-64 h-64 bg-white/20 rounded-full blur-3xl animate-float"
style={{ animationDelay: "0s" }}
></div>
<div
className="absolute bottom-20 right-20 w-80 h-80 bg-white/20 rounded-full blur-3xl animate-float"
style={{ animationDelay: "2s" }}
></div>
<div
className="absolute top-1/3 right-10 w-48 h-48 bg-white/20 rounded-full blur-2xl animate-float"
style={{ animationDelay: "4s" }}
></div>
<div className="bg-white rounded-2xl shadow-2xl p-8 sm:p-12 max-w-md w-full mx-4 animate-fade-in-scale relative z-10">
{/* Logo */}
<div className="flex justify-center mb-6">
<img
src="/logo_preta.png"
alt="Photum Formaturas"
className="h-24 sm:h-32 w-auto object-contain"
/>
</div>
{/* Botões */}
<div className="space-y-4">
<Button onClick={onEnter} className="w-full" size="lg">
Entrar
</Button>
<Button
onClick={() => (window.location.href = "/cadastro")}
variant="outline"
className="w-full"
size="lg"
>
Cadastre-se agora
</Button>
</div>
</div>
</div>
);
};