diff --git a/src/App.js b/src/App.js
index d232aea..20c54ee 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,11 +1,11 @@
import PerfilMedico from "./perfis/Perfil_medico/PerfilMedico"; //Mude para (import PerfilMedico from "./perfis/perfil_secretaria/PerfilSecretaria";) para ve a secretaria
-
-
+ //Mude para (import Perfiladm from "./perfis/Perfil_adm/Perfiladm.jsx";) para ver o ADM
+//Perfiladm
function App() {
return (
<>
-
+
>
);
}
diff --git a/src/PagesAdm/gestao.css b/src/PagesAdm/gestao.css
new file mode 100644
index 0000000..c881f06
--- /dev/null
+++ b/src/PagesAdm/gestao.css
@@ -0,0 +1,255 @@
+
+.dashboard-container {
+ padding: 2rem;
+ font-family: 'Arial', sans-serif;
+ background-color: #f5f6fa;
+ min-height: 100vh;
+}
+
+
+.dashboard-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 2rem;
+}
+
+.dashboard-title {
+ font-size: 20px;
+ font-weight: bold;
+ margin: 0;
+ color: #333;
+}
+
+.dashboard-subtitle {
+ margin: 0.2rem 0 0 0;
+ color: #000;
+ font-size: 0.95rem;
+}
+
+.new-user-btn {
+ background-color: #1e3a8a;
+ color: white;
+ padding: 0.6rem 1.2rem;
+ border: none;
+ border-radius: 8px;
+ font-size: 1rem;
+ cursor: pointer;
+ transition: background-color 0.3s, transform 0.25s ease, box-shadow 0.25s ease;
+}
+
+.new-user-btn:hover {
+ background-color: #162d6b;
+ transform: translateY(-2px);
+ box-shadow: 0px 4px 12px rgba(30, 58, 138, 0.3);
+}
+
+
+.filters-container {
+ background: #fff;
+ border-radius: 12px;
+ padding: 1.5rem;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ margin-bottom: 2rem;
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.filters-container:hover {
+ transform: translateY(-3px);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
+}
+
+.filters-title {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 0.3rem;
+ color: #333;
+}
+
+.filters-subtitle {
+ font-size: 0.9rem;
+ color: #666;
+ margin-bottom: 1rem;
+}
+
+.filters-content {
+ display: flex;
+ gap: 1rem;
+ align-items: center;
+}
+
+.filters-input {
+ flex: 1;
+ padding: 0.6rem 1rem;
+ border: 1px solid #d1d5db;
+ border-radius: 8px;
+ font-size: 0.95rem;
+ color: #333;
+ transition: border-color 0.2s, box-shadow 0.2s;
+}
+
+.filters-input:focus {
+ border-color: #1e3a8a;
+ box-shadow: 0px 0px 0px 3px rgba(30, 58, 138, 0.2);
+ outline: none;
+}
+
+.filters-select {
+ padding: 0.6rem 1rem;
+ border: 1px solid #d1d5db;
+ border-radius: 8px;
+ font-size: 0.95rem;
+ background: #fff;
+ color: #333;
+ cursor: pointer;
+ transition: border-color 0.2s, box-shadow 0.2s;
+}
+
+.filters-select:focus {
+ border-color: #1e3a8a;
+ box-shadow: 0px 0px 0px 3px rgba(30, 58, 138, 0.2);
+ outline: none;
+}
+
+
+.cards-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 1.5rem;
+ margin-bottom: 2rem;
+}
+
+.card {
+ background-color: white;
+ padding: 1.5rem;
+ border-radius: 12px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ border: 1px solid transparent;
+ transition: transform 0.25s ease, box-shadow 0.25s ease, border 0.25s ease, background 0.25s ease;
+ cursor: pointer;
+}
+
+.card:hover {
+ transform: translateY(-6px);
+ box-shadow: 0 8px 20px rgba(30, 58, 138, 0.2);
+ background: #f8faff;
+ border: 1px solid #1e3a8a33;
+}
+
+.card-label {
+ font-size: 0.9rem;
+ color: #999;
+ margin-bottom: 0.5rem;
+}
+
+.card-value {
+ font-size: 1.8rem;
+ font-weight: bold;
+ margin: 0;
+ color: #333;
+}
+
+.card-extra {
+ font-size: 0.85rem;
+ color: #666;
+}
+
+.card-extra.positive {
+ color: #1e3a8a;
+}
+
+
+.user-table-container {
+ background: #fff;
+ border-radius: 12px;
+ padding: 1.5rem;
+ box-shadow: 0 4px 6px rgba(0,0,0,0.1);
+ margin-top: 2rem;
+ transition: transform 0.25s ease, box-shadow 0.25s ease;
+}
+
+.user-table-container:hover {
+ transform: translateY(-4px);
+ box-shadow: 0 6px 14px rgba(0,0,0,0.15);
+}
+
+.user-table-container h2 {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 0.3rem;
+ color: #333;
+}
+
+.user-table-container p {
+ font-size: 0.9rem;
+ color: #666;
+ margin-bottom: 1rem;
+}
+
+.user-table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.user-table th,
+.user-table td {
+ padding: 12px 15px;
+ text-align: left;
+ border-bottom: 1px solid #e0e0e0;
+}
+
+.user-table th {
+ background-color: #f3f4f6;
+ color: #333;
+ font-weight: 600;
+}
+
+.user-table tr {
+ transition: background-color 0.25s ease;
+}
+
+.user-table tr:hover {
+ background-color: #f0f4ff;
+}
+
+.profile-badge {
+ background-color: #1e3a8a;
+ color: #f7f7f7;
+ padding: 3px 8px;
+ border-radius: 8px;
+ font-size: 0.85rem;
+ display: inline-block;
+}
+
+.status-badge {
+ padding: 3px 8px;
+ border-radius: 8px;
+ font-size: 0.85rem;
+ color: #fff;
+ display: inline-block;
+ text-transform: capitalize;
+}
+
+.status-badge.ativo {
+ background-color: #28a745;
+}
+
+.status-badge.inativo {
+ background-color: #dc3545;
+}
+
+.actions {
+ display: flex;
+ gap: 10px;
+}
+
+.action-icon {
+ cursor: pointer;
+ color: #555;
+ transition: color 0.2s, transform 0.2s;
+}
+
+.action-icon:hover {
+ color: #1e3a8a;
+ transform: scale(1.2);
+}
diff --git a/src/PagesAdm/gestao.jsx b/src/PagesAdm/gestao.jsx
new file mode 100644
index 0000000..40dd7f1
--- /dev/null
+++ b/src/PagesAdm/gestao.jsx
@@ -0,0 +1,142 @@
+
+import React from "react";
+import "./gestao.css";
+import { FaEdit, FaTrash } from "react-icons/fa";
+
+
+function UserDashboard() {
+ return (
+
+
+
+
+
+
Gestão de Usuários
+
+ Gerencie usuários, perfis e permissões do sistema
+
+
+
+
+
+
+
+
Total de Usuários
+
15
+
+3 este mês
+
+
+
Usuários Ativos
+
12
+
80.0% do total
+
+
+
Tempo Médio Sessão
+
2h 30min
+
Última semana
+
+
+
Usuários Hoje
+
10
+
+2 desde ontem
+
+
+
+
+
Filtros
+
+ Use os filtros abaixo para encontrar usuários específicos
+
+
+
+
+
+
+
+
+
+
Usuários do Sistema
+
Lista completa de usuários e suas permissões
+
+
+
+ | Nome |
+ Email |
+ Perfil |
+ Departamento |
+ Status |
+ Último Acesso |
+ Ações |
+
+
+
+
+ | Ana Silva |
+ ana.silva@mediconnect.com |
+ Gestão / Coordenação |
+ Administração |
+ Ativo |
+ 20/12/2024, 08:30 |
+
+
+
+ |
+
+
+ | Dr. Carlos Santos |
+ carlos.santos@mediconnect.com |
+ Médico |
+ Cardiologia |
+ Ativo |
+ 19/12/2024, 14:20 |
+
+
+
+ |
+
+
+ | Maria Oliveira |
+ maria.oliveira@mediconnect.com |
+ Secretária |
+ Recepção |
+ Ativo |
+ 20/12/2024, 07:45 |
+
+
+
+ |
+
+
+ | Dr. João Pereira |
+ joao.pereira@mediconnect.com |
+ Médico |
+ Ortopedia |
+ Inativo |
+ 15/12/2024, 16:30 |
+
+
+
+ |
+
+
+
+
+
+ );
+}
+
+
+export default UserDashboard;
\ No newline at end of file
diff --git a/src/PagesAdm/painel.css b/src/PagesAdm/painel.css
new file mode 100644
index 0000000..d476105
--- /dev/null
+++ b/src/PagesAdm/painel.css
@@ -0,0 +1,214 @@
+.painel-container {
+ padding: 2rem;
+ font-family: Arial, sans-serif;
+}
+
+.painel-titulo {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 0.5rem;
+}
+
+.painel-subtitulo {
+ color: #666;
+ margin-bottom: 2rem;
+}
+
+.painel-cards {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 1rem;
+}
+
+.painel-card {
+ background: white;
+ border-radius: 10px;
+ padding: 1rem;
+ box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1);
+ transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
+ cursor: pointer;
+ border: 1px solid transparent;
+}
+
+
+.painel-card:hover {
+ transform: translateY(-6px);
+ box-shadow: 0px 8px 20px rgba(0, 102, 255, 0.2);
+ background: #f8faff;
+ border: 1px solid #0066ff33;
+}
+
+.card-header {
+ display: flex;
+ justify-content: space-between;
+ font-size: 14px;
+ margin-bottom: 0.5rem;
+}
+
+.badge {
+ background: #0066ff;
+ color: white;
+ padding: 2px 6px;
+ border-radius: 6px;
+ font-size: 12px;
+}
+
+.card-numero {
+ font-size: 22px;
+ font-weight: bold;
+ margin: 0.3rem 0;
+}
+
+.card-info {
+ font-size: 14px;
+ color: #666;
+}
+
+.progress-bar {
+ background: #eee;
+ border-radius: 8px;
+ height: 8px;
+ margin-top: 0.5rem;
+ overflow: hidden;
+}
+
+.progress-fill {
+ background: #0066ff;
+ height: 100%;
+ width: 80%;
+ border-radius: 8px;
+ transition: width 0.3s ease;
+}
+
+
+.painel-card:hover .progress-fill {
+ width: 90%;
+}
+
+.painel-graficos {
+ margin-top: 2rem;
+ display: flex;
+ gap: 1.5rem;
+ flex-wrap: wrap;
+}
+
+.grafico-card {
+ flex: 1;
+ min-width: 300px;
+ background: white;
+ border-radius: 10px;
+ padding: 1rem;
+ box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1);
+ transition: transform 0.25s ease, box-shadow 0.25s ease;
+}
+
+
+.grafico-card:hover {
+ transform: translateY(-4px);
+ box-shadow: 0px 6px 16px rgba(0, 0, 0, 0.15);
+}
+
+.grafico-titulo {
+ font-size: 16px;
+ font-weight: bold;
+ margin-bottom: 0.2rem;
+}
+
+.grafico-subtitulo {
+ font-size: 13px;
+ color: #666;
+ margin-bottom: 1rem;
+}
+
+
+.performance-container {
+ background: #fff;
+ border-radius: 10px;
+ padding: 1.5rem;
+ box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1);
+ margin-top: 2rem;
+}
+
+.performance-titulo {
+ font-size: 20px;
+ font-weight: bold;
+ margin-bottom: 0.2rem;
+}
+
+.performance-subtitulo {
+ font-size: 14px;
+ color: #666;
+ margin-bottom: 1.5rem;
+}
+
+.departamento {
+ margin-bottom: 1.2rem;
+}
+
+.departamento-label {
+ display: flex;
+ justify-content: space-between;
+ font-size: 14px;
+ margin-bottom: 0.4rem;
+}
+
+.departamento-barra {
+ background: #f0f2f5;
+ border-radius: 6px;
+ height: 10px;
+ overflow: hidden;
+}
+
+.departamento-fill {
+ background: #001a40;
+ height: 100%;
+ width: 0%;
+ border-radius: 6px;
+ transition: width 0.4s ease;
+}
+
+
+.departamento-fill.ativo {
+ width: var(--percent, 0%);
+}
+.department-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin: 0.5rem 0;
+}
+
+.department-name {
+ font-weight: bold;
+ color: #000;
+ min-width: 120px;
+}
+
+.progress-wrapper {
+ display: flex;
+ align-items: center;
+ flex: 1;
+ gap: 0.5rem;
+}
+
+.progress-bar {
+ flex: 1;
+ background: #eee;
+ border-radius: 8px;
+ height: 8px;
+ overflow: hidden;
+}
+
+.progress-fill {
+ background: #0066ff;
+ height: 100%;
+ border-radius: 8px;
+ transition: width 0.3s ease;
+}
+
+.department-info {
+ font-size: 13px;
+ color: #333;
+ white-space: nowrap;
+}
+
diff --git a/src/PagesAdm/painel.jsx b/src/PagesAdm/painel.jsx
new file mode 100644
index 0000000..f37716b
--- /dev/null
+++ b/src/PagesAdm/painel.jsx
@@ -0,0 +1,193 @@
+import React from "react";
+import {
+ PieChart,
+ Pie,
+ Cell,
+ Tooltip,
+ BarChart,
+ Bar,
+ XAxis,
+ YAxis,
+ CartesianGrid,
+ ResponsiveContainer
+} from "recharts";
+import "./painel.css";
+
+export default function PainelAdministrativo() {
+
+ const profileData = [
+ { name: "Médico", value: 8 },
+ { name: "Secretária", value: 5 },
+ { name: "Gestão / Coordena", value: 3 },
+ ];
+ const COLORS = ["#1e3a8a", "#051AFF", "#0066ff"];
+
+
+ const activityData = [
+ { name: "Hoje", value: 10 },
+ { name: "Esta Semana", value: 14 },
+ { name: "Este Mês", value: 15 },
+ ];
+
+
+ const departamentos = [
+ { nome: "Cardiologia", ativos: 3, total: 3 },
+ { nome: "Ortopedia", ativos: 1, total: 2 },
+ { nome: "Neurologia", ativos: 2, total: 2 },
+ { nome: "Administração", ativos: 2, total: 2 },
+ { nome: "Recepção", ativos: 5, total: 6 },
+ ];
+
+ return (
+
+
Painel Administrativo
+
+ Visão geral completa do sistema MediConnect
+
+
+
+
+
+
+
+ Total de Usuários
+ 15
+
+
12
+
3 inativos
+
+
+
+
+
+
+ Novos Usuários
+ +3
+
+
Este Mês
+
+20% comparado ao mês anterior
+
+
+
+
+
+ Tempo Médio de Sessão
+
+
2h 30min
+
+5% comparado à semana anterior
+
+
+
+
+
+ Taxa de Atividade
+
+
80.0%
+
Usuários ativos vs total
+
+
+
+
+
+
+
Distribuição por Perfil
+
+ Quantidade de usuários por tipo de perfil
+
+
+
+ `${name}: ${value}`}
+ >
+ {profileData.map((entry, index) => (
+ |
+ ))}
+
+
+
+
+
+
+
+
+
Atividade de Usuários
+
Usuários ativos por período
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Performance por Departamento
+
+ Atividade e engajamento dos usuários por departamento
+
+ {departamentos.map((dep, index) => {
+ const percentual = Math.round((dep.ativos / dep.total) * 100);
+ return (
+
+
+
+ {dep.nome}
+
+
+
+
+
+
+
+ {dep.ativos}/{dep.total} ({percentual}%)
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/Sidebar.jsx b/src/components/Sidebar.jsx
index 67fdde0..d9c065a 100644
--- a/src/components/Sidebar.jsx
+++ b/src/components/Sidebar.jsx
@@ -1,6 +1,6 @@
import React, { useState } from "react";
import { Link } from "react-router-dom";
-import menuItems from "../data/sidebar-items-medico.json"; // Use "sidebar-items-secretaria.json" para secretaria
+import menuItems from "../data/sidebar-items-medico.json"; // Use "sidebar-items-secretaria.json" para secretaria e "sidebar-items-adm.json" para ADM
function Sidebar() {
const [isActive, setIsActive] = useState(true);
diff --git a/src/data/sidebar-items-adm.json b/src/data/sidebar-items-adm.json
new file mode 100644
index 0000000..907d2a3
--- /dev/null
+++ b/src/data/sidebar-items-adm.json
@@ -0,0 +1,60 @@
+[
+ {
+ "name": "Menu",
+ "isTitle": true
+ },
+
+ {
+ "name":"Início",
+ "url": "/",
+ "icon": "house"
+ },
+
+ {
+ "name": "Cadastro de Pacientes",
+ "url": "/pacientes/cadastro",
+ "icon": "heart-pulse-fill"
+ },
+
+ {
+ "name": "Cadastro do Médico",
+ "url": "/medicos/cadastro",
+ "icon": "capsule"
+ },
+
+ {
+ "name": "Lista de Pacientes",
+ "icon": "clipboard-heart-fill",
+ "url": "/pacientes"
+ },
+
+ {
+ "name": "Lista de Médico",
+ "icon": "hospital-fill",
+ "url": "/medicos"
+ },
+ {
+ "name": "Agendar consulta",
+ "icon": "calendar-plus-fill",
+ "url": "/agendamento"
+ },
+
+ {
+ "name": "Gestão de Usuários",
+ "icon": "person-badge-fill",
+ "url": "/gestao"
+ },
+
+ {
+ "name": "Painel Administrativo",
+ "icon": "file-bar-graph-fill",
+ "url": "/painel"
+ },
+
+ {
+ "name": "Laudo do Paciente",
+ "icon": "table",
+ "url": "/laudo"
+ }
+
+]
\ No newline at end of file
diff --git a/src/perfis/Perfil_adm/Perfiladm.jsx b/src/perfis/Perfil_adm/Perfiladm.jsx
new file mode 100644
index 0000000..cc32f5f
--- /dev/null
+++ b/src/perfis/Perfil_adm/Perfiladm.jsx
@@ -0,0 +1,46 @@
+import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
+import Sidebar from "../../components/Sidebar";
+import Inicio from "../../pages/Inicio";
+import TablePaciente from "../../pages/TablePaciente";
+import PatientCadastroManager from "../../pages/PatientCadastroManager";
+import DoctorCadastroManager from "../../pages/DoctorCadastroManager";
+import DoctorTable from "../../pages/DoctorTable";
+import Agendamento from "../../pages/Agendamento";
+import LaudoManager from "../../pages/LaudoManager";
+import Details from "../../pages/Details";
+import EditPage from "../../pages/EditPage";
+import DoctorDetails from "../../pages/DoctorDetails";
+import DoctorEditPage from "../../pages/DoctorEditPage";
+import UserDashboard from '../../PagesAdm/gestao.jsx';
+import PainelAdministrativo from '../../PagesAdm/painel.jsx';
+// ...restante do código...
+function Perfiladm() {
+ return (
+
+
+
+
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ Página não encontrada} />
+
+
+
+
+ );
+}
+
+export default Perfiladm;
\ No newline at end of file