diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 99f20a1..d9a2d9c 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -16,6 +16,8 @@ import SobreNos from "./pages/SobreNos"; import AddArtigos from "./pages/AddArtigos"; import Configuracoes from "./pages/Configuracoes"; + import ListaClientes from "./pages/ListaClientes"; + import Prontuario from "./pages/Prontuario"; import TermosCondicoes from "./pages/TermosCondicoes"; import VideoChamada from "./pages/VideoChamada"; import Cadastro from "./pages/Cadastro"; @@ -73,6 +75,22 @@ } + /> + + + + } + /> + + + + } /> p.status-tag{ + grid-column: 2; + justify-items: end + } + + .actions-prontuario div{ + flex-wrap: wrap; + } + + main.container-prontuario, + section.historico-atendimentos{ + width: 100%; + } + + section.historico-atendimentos{ + max-height: unset; + } +} \ No newline at end of file diff --git a/frontend/src/assets/styles/ui/buttons.css b/frontend/src/assets/styles/ui/buttons.css index 6eed2b4..84aef39 100644 --- a/frontend/src/assets/styles/ui/buttons.css +++ b/frontend/src/assets/styles/ui/buttons.css @@ -34,7 +34,7 @@ .button-progress-confirm{ background-color: var(--tertiary-light-green-700); color: var(--black-950); - padding:12px 20px; + padding:10px 20px; font-weight: 600; font-size: 1.1rem; border: none; diff --git a/frontend/src/components/videochamada/streaming.css b/frontend/src/assets/styles/videochamada/streaming.css similarity index 58% rename from frontend/src/components/videochamada/streaming.css rename to frontend/src/assets/styles/videochamada/streaming.css index 685d32f..0ddbf89 100644 --- a/frontend/src/components/videochamada/streaming.css +++ b/frontend/src/assets/styles/videochamada/streaming.css @@ -1,11 +1,11 @@ /* Streaming - Videochamada */ .section-stream { display: grid; - grid-template-columns: 1fr 350px; - gap: 1rem; - padding: 1rem; + grid-template-columns: 1fr auto; + gap: var(--spacing-xs); + padding: var(--spacing-xs); min-height: calc(100vh - 80px); - background-color: #1a1a1a; + background-color: var(--white-200); } /* Container principal do vídeo */ @@ -166,78 +166,176 @@ display: flex; align-items: center; justify-content: center; - background-color: #4a90e2; + background-color: var(--accent-dark-green-700); } .btn-control:hover { - background-color: #357abd; + background-color: var(--accent-dark-green-600); transform: scale(1.1); } .btn-control.disabled { - background-color: #666; + background-color: var(--white-900); } .btn-control.btn-hangup { - background-color: #e74c3c; + background-color: var(--accent-mid-orange-900); width: 70px; height: 70px; } .btn-control.btn-hangup:hover { - background-color: #c0392b; + background-color: var(--accent-mid-orange-700); +} + +/* Botão abrir/fechar */ +.container-paciente .toggle-btn { + position: absolute; + top: 5px; + left: 5px; + width: 40px; + height: 40px; + border: none; + padding: 5px 1px 0 0; + cursor: pointer; + z-index: 10; + background-color: transparent; +} + +.toggle-btn:focus { + outline: 3px solid var(--accent-dark-green-700); + opacity: 0.9; +} + +.arrow-note { + font-size: 2rem; + color: var(--black-950) } /* Container lateral */ .container-paciente { - background-color: #2c2c2c; - border-radius: 12px; - padding: 1.5rem; + position: relative; display: flex; flex-direction: column; - gap: 1rem; - overflow-y: auto; + gap: var(--spacing-xs); + padding-top: 55px; + transition: width 0.3s ease; + overflow: hidden; + max-width: 340px; } -.info-sessao { - color: #fff; +.container-paciente.open { + width: 340px; + min-width: 340px; } -.info-sessao h3 { - margin-bottom: 1rem; - color: #4a90e2; - font-size: 1.2rem; +.container-paciente.closed { + width: 50px; + min-width: 50px; } -.info-sessao p { - margin-bottom: 0.5rem; - color: #ddd; +/* Informações da sessão */ +.info-sessao{ + background-color: var(--white-400); + padding: var(--spacing-xs); + border-radius: var(--border-radius-md); } -.info-sessao strong { - color: #4a90e2; +.header-sessao-info { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + cursor: pointer; +} +.header-sessao-info h3 { + color: var(--black-950); + font-size: 1.2rem; + font-weight: 600; +} +.header-sessao-info.open .arrow-note-info{ + transform: rotate(90deg); +} +.arrow-note-info{ + font-size: 1.5rem; + color: var(--white-800); + opacity: 0.6; + transition: transform 0.3s; +} + +.body-sessao-info.closed-info-note { + max-height: 0; + padding: 0 var(--spacing-xs); + opacity: 0; + display: none; +} +.body-sessao-info hr.view{ + margin: var(--spacing-xs) 0; + opacity: 0.3; +} +.body-sessao-info p { + color: var(--black-950); +} +.body-sessao-info strong{ + font-weight: 600; } .room-code { font-family: monospace; - background-color: #1a1a1a; padding: 0.75rem; + background-color: var(--white-500); border-radius: 6px; font-size: 0.95rem; word-break: break-all; margin-top: 0.5rem; - border: 1px solid #444; + border: 1px solid var(--white-700); } .info-tip { - background-color: #1a1a1a; padding: 1rem; - border-radius: 8px; - margin-top: 1rem; - color: #aaa; + margin: var(--spacing-xs) 0; + background-color: var(--white-500); + border-radius: var(--border-radius-md); + color: var(--black-950); font-size: 0.9rem; line-height: 1.5; - border-left: 3px solid #4a90e2; + border-left: 5px solid var(--primary-orange-700); +} + +/* Area de anotação */ + +.anotacoes-content { + background-color: var(--white-400); + border-radius: var(--border-radius-md); + height: 100%; + display: flex; + flex-direction: column; + padding: var(--spacing-xs); +} + +.anotacoes-content p { + color: var(--white-900); + margin-bottom: var(--spacing-xs); + font-size: 0.9rem; + font-weight: 500; +} + +.anotacoes-content textarea { + flex: 1; + resize: none; + background-color: var(--white-50); + color: var(--black-950); + border: 1px solid var(--white-700); + border-radius: 8px; + padding: 1rem; + font-size: 0.95rem; + line-height: 1.5; + outline: none; + transition: border-color 0.3s; +} + +.anotacoes-content textarea:focus { + border: 2px solid var(--accent-dark-green-700); } /* Responsivo */ diff --git a/frontend/src/components/Editor.jsx b/frontend/src/components/Editor.jsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/addartigos/FormArticle.jsx b/frontend/src/components/addartigos/FormArticle.jsx index 6d17a3e..5bd4ef9 100644 --- a/frontend/src/components/addartigos/FormArticle.jsx +++ b/frontend/src/components/addartigos/FormArticle.jsx @@ -91,7 +91,7 @@ export default function FormArticle({ ))}
- +

Visibilidade do artigo

diff --git a/frontend/src/components/perfilpage/InfoPsicologo.jsx b/frontend/src/components/perfilpage/InfoPsicologo.jsx index 2104fe8..f02c850 100644 --- a/frontend/src/components/perfilpage/InfoPsicologo.jsx +++ b/frontend/src/components/perfilpage/InfoPsicologo.jsx @@ -69,6 +69,9 @@ export default function InfoPsicologo({ profileData }) {
+ + Clientes + Criar Artigos diff --git a/frontend/src/components/prontuario/AreaProntuario.jsx b/frontend/src/components/prontuario/AreaProntuario.jsx new file mode 100644 index 0000000..03ccaeb --- /dev/null +++ b/frontend/src/components/prontuario/AreaProntuario.jsx @@ -0,0 +1,110 @@ +import { useEffect, useState } from "react"; +import { HiOutlineClipboardList } from "react-icons/hi"; +import CardProntuario from "../cards/CardProntuario"; + +export default function AreaProntuario({ + formatarData, + prontuarioAtual, +}) { + const [openCard, setOpenCard] = useState(null); + const [loadingTransition, setLoadingTransition] = useState(false); + + useEffect(() => { + if (!prontuarioAtual) return; + setLoadingTransition(true); + + const timer = setTimeout(() => { + setLoadingTransition(false); + }, 250); + + return () => clearTimeout(timer); + }, [prontuarioAtual]); + + if (!prontuarioAtual) { + return ( +
+ +

Selecione um prontuário

+
+ ); + } + + if (loadingTransition) { + return ( +
+ +

Carregando prontuário...

+
+ ); + } + + const sessoesProntuario = [ + { + id: 1, + titulo: "Identificação do usuário/instituição", + descricao: "Descrição da queixa inicial, motivos da busca pelo atendimento e hipótese diagnóstica inicial, se houver.", + informacoes: "" + }, + { + id: 2, + titulo: "Avaliação da demanda e definição de objetivos", + descricao: "Descrição das razões que motivaram a busca pelo serviço ou assistência psicológica, juntamente a apresentação da modalidade de assistência prestada.", + informacoes: "" + }, + { + id: 3, + titulo: "Registro de evolução e Procedimentos técnico-científicos", + descricao: "Descrição das atividades realizadas, bem como intervenções, técnicas e abordagens teóricas utilizadas.", + informacoes: "" + }, + { + id: 4, + titulo: "Registro de encaminhamento ou encerramento", + descricao: "Registro sobre encaminhamentos para outros profissionais ou o motivo do encerramento do caso.", + informacoes: "" + } + ] + + return ( + <> +
+ {} +

Prontuario: {formatarData(prontuarioAtual.data, "longa")}

+

Informações requeridas pelo CFP

+
+
+ {sessoesProntuario.map((sessao, index) => ( + p.sessaoId === sessao.id + ) || null + } + /> + ))} +
+

Informações adicionais

+
+ +
+
+ +

Manual Orientativo

+
+
+
+ + +
+ +
+
+ + ) +} diff --git a/frontend/src/components/prontuario/HistoricoAtendimentos.jsx b/frontend/src/components/prontuario/HistoricoAtendimentos.jsx new file mode 100644 index 0000000..173c91e --- /dev/null +++ b/frontend/src/components/prontuario/HistoricoAtendimentos.jsx @@ -0,0 +1,121 @@ +import "../../assets/styles/prontuario/historico-atendimento.css" +import "../../assets/styles/home/filtros-home.css"; +import { + HiOutlineDocumentText, + HiChevronDown, + HiPlus, + HiOutlineSearch +} from "react-icons/hi"; +import { useState } from "react"; + +export default function HistoricoAtendimentos({ + abrirProntuario, + criarProntuario, + formatarData, + atendimentos, + setAtendimento +}) { + const [openId, setOpenId] = useState(1); + const [searchText, setSearchText] = useState(""); + + const toggleAccordion = (id) => { + setOpenId(openId === id ? null : id); + }; + + const handleTextoChange = (id, value) => { + setAtendimento((prev) => + prev.map((at) => + at.id === id + ? { ...at, relatorioTecnico: value } + : at + ) + ); + }; + + const handleSearch = (e) => { + setSearchText(e.target.value); + } + + const atendimentosFiltrados = atendimentos.filter((at) => { + return ( + searchText.trim() === "" || + at.relatorioTecnico + .toLowerCase() + .includes(searchText.toLowerCase()) + ); + }); + + return ( + <> +
+
+
+ + +
+
+ +
+ + {atendimentosFiltrados.map((item) => ( +
+ +
+ {formatarData(item.data, "curta")} +
+ +
+
toggleAccordion(item.id)}> +
+ {item.hasProntuario ? ( + <> + + Visualizar prontuário do dia + + ) : ( + <> + + Adicionar prontuário do dia + + )} + + {item.titulo} +
+ + +
+ +
+
+ +
+
+ +
+
+ ))} +
+ + ) +} diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index d265276..b8e2fe0 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -27,7 +27,6 @@ export default function Home() { const [selectedLocals, setSelectedLocals] = useState([]); const [visualizacao, setVisualizacao] = useState("col"); const [selectedDays, setSelectedDays] = useState([]); - const [selectedRatings, setSelectedRatings] = useState([]); const [searchText, setSearchText] = useState(""); // Texto de busca // Cards const [openPsi, setOpenPsi] = useState(false); @@ -65,21 +64,42 @@ export default function Home() { // Aplicar filtros const perfisFiltrados = perfis.filter(perfil => { - // Filtro de texto (busca por nome, especialidade, local) - const matchTexto = searchText.trim() === "" || + + // Pesquisa + const matchTexto = + searchText.trim() === "" || perfil.nome.toLowerCase().includes(searchText.toLowerCase()) || perfil.local.toLowerCase().includes(searchText.toLowerCase()) || - perfil.tags.some(tag => tag.toLowerCase().includes(searchText.toLowerCase())) || - (perfil.sobreMim && perfil.sobreMim.toLowerCase().includes(searchText.toLowerCase())) || - (perfil.crp && perfil.crp.toLowerCase().includes(searchText.toLowerCase())); - - const matchEspecialidade = selectedSpecialities.length === 0 - || perfil.tags.some(tag => selectedSpecialities.includes(tag)); - const matchLocal = selectedLocals.length === 0 - || selectedLocals.includes(perfil.local); - - return matchTexto && matchEspecialidade && matchLocal; - }); + perfil.tags.some(tag => + tag.toLowerCase().includes(searchText.toLowerCase()) + ); + + // Especialidade + const matchEspecialidade = + selectedSpecialities.length === 0 || + perfil.tags.some(tag => + selectedSpecialities.includes(tag) + ); + + // Local + const matchLocal = + selectedLocals.length === 0 || + selectedLocals.includes(perfil.local); + + // Semana + const matchDias = + selectedDays.length === 0 || + selectedDays.some(dia => + Object.keys(perfil.horarios || {}).includes(dia) + ); + + return ( + matchTexto && + matchEspecialidade && + matchLocal && + matchDias + ); +}); const handleAgendamento = async (dados) => { // Guardar agendamento feito try{ @@ -105,8 +125,6 @@ export default function Home() { selectedLocals={selectedLocals} setSelectedLocals={setSelectedLocals} locais={locais} - selectedRatings={selectedRatings} - setSelectedRatings={setSelectedRatings} selectedDays={selectedDays} setSelectedDays={setSelectedDays} visualizacao={visualizacao} @@ -137,8 +155,6 @@ export default function Home() { selectedLocals={selectedLocals} setSelectedLocals={setSelectedLocals} locais={locais} - selectedRatings={selectedRatings} - setSelectedRatings={setSelectedRatings} selectedDays={selectedDays} setSelectedDays={setSelectedDays} visualizacao={visualizacao} @@ -167,8 +183,6 @@ export default function Home() { selectedLocals={selectedLocals} setSelectedLocals={setSelectedLocals} locais={locais} - selectedRatings={selectedRatings} - setSelectedRatings={setSelectedRatings} selectedDays={selectedDays} setSelectedDays={setSelectedDays} visualizacao={visualizacao} diff --git a/frontend/src/pages/ListaClientes.jsx b/frontend/src/pages/ListaClientes.jsx new file mode 100644 index 0000000..0d0fc88 --- /dev/null +++ b/frontend/src/pages/ListaClientes.jsx @@ -0,0 +1,142 @@ +import "../assets/styles/listaclientes/listaclientes.css"; +import "../assets/styles/home/filtros-home.css"; +import { useState } from "react"; +import { HiOutlineSearch } from "react-icons/hi"; +import CardClientes from "../components/cards/CardClientes"; +import Filtro from "../components/homepage/Filtro"; + +export default function ListaClientes() { + const [searchText, setSearchText] = useState(""); + const [statusSelecionados, setStatusSelecionados] = useState([]); + + // Mock de dados de clientes + const clientes = [ + { + idProntuario: 1, + foto: "/path/to/foto.jpg", + nome: "Amara Silva", + status: "Ativo", + email: "amara.silva@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 2, + foto: "/path/to/foto.jpg", + nome: "Lira Costa", + status: "Inativo", + email: "lira.costa@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 3, + foto: "/path/to/foto.jpg", + nome: "Snoopy", + status: "Ativo", + email: "snoopy@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 4, + foto: "/path/to/foto.jpg", + nome: "Marcos Silva", + status: "Pendente", + email: "marcos.silva@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 5, + foto: "/path/to/foto.jpg", + nome: "Carlos Matheus", + status: "Ativo", + email: "carlos.matheus@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 6, + foto: "/path/to/foto.jpg", + nome: "Luis Alcantara", + status: "Inativo", + email: "luis.alcantara@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 7, + foto: "/path/to/foto.jpg", + nome: "Heugenia Silva", + status: "Ativo", + email: "heugenia.silva@example.com", + dataInicio: "2023-01-01" + }, + { + idProntuario: 8, + foto: "/path/to/foto.jpg", + nome: "Marcos Santos", + status: "Inativo", + email: "marcos.santos@example.com", + dataInicio: "2023-01-01" + }, + ]; + const statusOptions = ["Ativo", "Pendente", "Inativo"]; + + const handleSearch = (e) => { + setSearchText(e.target.value); + } + + const clientesFiltrados = clientes.filter(cliente => { + const matchTexto = + searchText.trim() === "" || + cliente.nome.toLowerCase().includes(searchText.toLowerCase()); + + const matchStatus = + statusSelecionados.length === 0 || + statusSelecionados.includes(cliente.status); + + return matchTexto && matchStatus; + }); + + return ( + <> +
+
+
+ + +
+ +
+ +
+
+

Cliente

+

Status

+

Email

+

Data de Inicio

+

Prontuários

+
+ +
+ {clientesFiltrados.map((cliente, index) => ( + + ))} +
+
+
+ + ) +} diff --git a/frontend/src/pages/Prontuario.jsx b/frontend/src/pages/Prontuario.jsx new file mode 100644 index 0000000..a06e740 --- /dev/null +++ b/frontend/src/pages/Prontuario.jsx @@ -0,0 +1,247 @@ +import "../assets/styles/prontuario/prontuario.css"; +import "../assets/styles/listaclientes/listaclientes.css"; +import perfil from "../assets/img/perfil-default.png"; +import AreaProntuario from "../components/prontuario/AreaProntuario"; +import HistoricoAtendimentos from "../components/prontuario/HistoricoAtendimentos"; +import { useState } from "react"; + +export default function Prontuario() { + // Mock de dados + const cliente = { + idProntuario: 1, + foto: "/path/to/foto.jpg", + nome: "Amara Silva", + idade: 25, + local: "São Paulo, SP", + status: "Ativo", + email: "amara.silva@example.com", + dataInicio: "2023-01-01", + qtd_atendimentos: 3 + } + const atendimentoMock = [ + { + id: 1, + data: "15/05/2026", + hasProntuario: true, + relatorioTecnico: "Notas do dia 15 de Maio, Lembrete da sessão:", + prontuario: [ + { + sessaoId: 1, + informacoes: "Paciente relata episódios recentes de ansiedade relacionados ao ambiente de trabalho." + }, + { + sessaoId: 2, + informacoes: "Definido acompanhamento semanal para manejo emocional." + }, + { + sessaoId: 3, + informacoes: "" + }, + { + sessaoId: 4, + informacoes: "" + } + ], + informacoesAdicionais: "Paciente demonstrou boa adesão às orientações." + }, + { + id: 2, + data: "08/05/2026", + hasProntuario: true, + relatorioTecnico: "", + prontuario: [ + { + sessaoId: 1, + informacoes: "Queixa principal relacionada à dificuldade de concentração." + }, + { + sessaoId: 2, + informacoes: "Objetivo inicial focado em organização de rotina." + }, + { + sessaoId: 3, + informacoes: "Realizada escuta ativa e levantamento de hábitos." + }, + { + sessaoId: 4, + informacoes: "" + } + ], + informacoesAdicionais: "" + }, + { + id: 3, + data: "01/05/2026", + hasProntuario: false, + relatorioTecnico: "", + prontuario: [], + informacoesAdicionais: "" + }, + { + id: 4, + data: "25/04/2026", + hasProntuario: true, + relatorioTecnico: "", + prontuario: [ + { + sessaoId: 1, + informacoes: "Paciente relata conflitos familiares recorrentes." + }, + { + sessaoId: 2, + informacoes: "Definido fortalecimento de habilidades comunicativas." + }, + { + sessaoId: 3, + informacoes: "Trabalhada identificação de gatilhos emocionais." + }, + { + sessaoId: 4, + informacoes: "" + } + ], + informacoesAdicionais: "Paciente apresentou melhora na comunicação." + }, + ]; + + const [prontuarioAtual, setProntuarioAtual] = useState(null); + const [atendimentos, setAtendimento] = useState(atendimentoMock); + + const criarProntuario = (data) => { + const prontuarioVazio = [ + { + sessaoId: 1, + informacoes: "" + }, + { + sessaoId: 2, + informacoes: "" + }, + { + sessaoId: 3, + informacoes: "" + }, + { + sessaoId: 4, + informacoes: "" + } + ]; + + setAtendimento((prev) => prev.map((at) => + at.data === data ? { + ...at, + hasProntuario: true, + prontuario: prontuarioVazio, + informacoesAdicionais: "" + } + : at + ) + ); + + const atendimentoAtualizado = atendimentos.find( + (at) => at.data === data + ); + + setProntuarioAtual({ + ...atendimentoAtualizado, + hasProntuario: true, + prontuario: prontuarioVazio, + informacoesAdicionais: "" + }); + }; + + const abrirProntuario = (atendimentoData) => { + const prontuarioSelecionado = atendimentos.find((at) => at.data === atendimentoData); + setProntuarioAtual(prontuarioSelecionado); + }; + + const formatarData = (data, tipo = "curta") => { + if (!data) return ""; + const meses = [ + "Janeiro", + "Fevereiro", + "Março", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro" + ]; + + const [dia, mes, ano] = data.split("/"); + if (!dia || !mes || !ano) return data; + + const nomeMes = meses[Number(mes) - 1]; + + if (tipo === "curta") { + return `${nomeMes.length > 5 ? nomeMes.substring(0, 3) : nomeMes} ${dia}`; + } + + return `${dia} de ${nomeMes} de ${ano}`; + } + + // Salvar no backend as informações + const salvarProntuario = async () => { + if (!prontuarioAtual) return; + + const dados = { + clienteId: cliente.idProntuario, + atendimentoId: prontuarioAtual.id, + prontuario: prontuarioAtual.prontuario, + informacoesAdicionais: + prontuarioAtual.informacoesAdicionais, + relatorioTecnico: + prontuarioAtual.relatorioTecnico + }; + }; + + return ( + <> +
+ + + +
+
+ {`Foto { + e.target.src = perfil; + }}/> +
+

{cliente.nome}

+

Idade: {cliente.idade} anos

+

Local: {cliente.local}

+

Primeira consulta: {cliente.dataInicio}

+

Atendimentos: {cliente.qtd_atendimentos}

+
+

{cliente.status}

+
+ +
+ + +
+ + ) +} diff --git a/frontend/src/pages/VideoChamada.jsx b/frontend/src/pages/VideoChamada.jsx index 76beb08..a2dd669 100644 --- a/frontend/src/pages/VideoChamada.jsx +++ b/frontend/src/pages/VideoChamada.jsx @@ -1,10 +1,13 @@ import { useAuth } from '../context/AuthContext'; import { useParams, Navigate, useNavigate } from 'react-router-dom'; import { useEffect, useRef, useState } from 'react'; +import { HiChevronLeft, HiChevronRight} from "react-icons/hi"; import { Video, VideoOff, Mic, MicOff, PhoneOff } from 'lucide-react'; -import '../components/videochamada/streaming.css'; +import '../assets/styles/videochamada/streaming.css'; export default function VideoChamada() { + const [open, setOpen] = useState(true); + const [openInfoNote, setOpenInfoNote] = useState(false); const { user, loading } = useAuth(); const { agendamentoId } = useParams(); const navigate = useNavigate(); @@ -14,6 +17,12 @@ export default function VideoChamada() { const [isVideoOn, setIsVideoOn] = useState(true); const [roomName, setRoomName] = useState(''); const [isInCall, setIsInCall] = useState(false); + const [notes, setNotes] = useState(""); + + const notesPsicologo = (e) => { + setNotes(e.target.value); + // Implementar a lógica para salvar as anotações + } useEffect(() => { if (agendamentoId) { @@ -187,8 +196,10 @@ export default function VideoChamada() { return (
+
{!isInCall ? ( + // Tela de entrada - escolher sala
@@ -258,7 +269,9 @@ export default function VideoChamada() { )}
+ ) : ( + // Container do Jitsi Meet <>
{/* Área lateral */} -
-
-

Informações

-

Usuário: {user.nome}

-

Tipo: {user.tipo}

- {isInCall && ( - <> -

Sala:

-

{roomName}

-
- Compartilhe este nome de sala com a outra pessoa para entrarem juntos! -
- - )} - {!isInCall && ( -
- Modo Debug Ativo
- Você pode entrar em qualquer sala sem restrições. +
+
+
+

Usuário: {user.nome}

+

Tipo: {user.tipo}

+ {isInCall && ( + <> +

Sala:

+

{roomName}

+
+ Compartilhe este nome de sala com a outra pessoa para entrarem juntos! +
+ + )} + {!isInCall && ( +
+ Modo Debug Ativo
+ Você pode entrar em qualquer sala sem restrições. +
+ )} +
+
+
+

Anotações são salvas automaticamente

+