diff --git a/susconecta/app/paciente/page.tsx b/susconecta/app/paciente/page.tsx index f76067b..0d23ec2 100644 --- a/susconecta/app/paciente/page.tsx +++ b/susconecta/app/paciente/page.tsx @@ -14,6 +14,7 @@ import { SimpleThemeToggle } from '@/components/simple-theme-toggle' import Link from 'next/link' import ProtectedRoute from '@/components/ProtectedRoute' import { useAuth } from '@/hooks/useAuth' +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' // Simulação de internacionalização básica const strings = { dashboard: 'Dashboard', @@ -145,8 +146,7 @@ export default function PacientePage() { }, ]; - function formatDatePt(dateStr: string) { - const date = new Date(dateStr); + function formatDatePt(date: Date) { return date.toLocaleDateString('pt-BR', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }); } @@ -163,65 +163,222 @@ export default function PacientePage() { const consultasDoDia = consultasFicticias.filter(c => c.data === todayStr); function Consultas() { + const [tipoConsulta, setTipoConsulta] = useState<'teleconsulta' | 'presencial'>('teleconsulta') + const [especialidade, setEspecialidade] = useState('cardiologia') + const [localizacao, setLocalizacao] = useState('') + const [mostrarAgendadas, setMostrarAgendadas] = useState(false) + const hoverPrimaryClass = "transition duration-200 hover:bg-[#2563eb] hover:text-white focus-visible:ring-2 focus-visible:ring-[#2563eb]/60 active:scale-[0.97]" + const activeToggleClass = "w-full transition duration-200 focus-visible:ring-2 focus-visible:ring-[#2563eb]/60 active:scale-[0.97] bg-[#2563eb] text-white hover:bg-[#2563eb] hover:text-white" + const inactiveToggleClass = "w-full transition duration-200 bg-slate-50 text-[#2563eb] border border-[#2563eb]/30 hover:bg-slate-100 hover:text-[#2563eb] dark:bg-white/5 dark:text-white dark:hover:bg-white/10 dark:border-white/20" + const hoverPrimaryIconClass = "rounded-xl bg-white text-[#1e293b] border border-black/10 shadow-[0_2px_8px_rgba(0,0,0,0.03)] transition duration-200 hover:bg-[#2563eb] hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#2563eb] dark:bg-slate-800 dark:text-slate-100 dark:border-white/10 dark:shadow-none dark:hover:bg-[#2563eb] dark:hover:text-white" + const today = new Date(); today.setHours(0, 0, 0, 0); + const selectedDate = new Date(currentDate); selectedDate.setHours(0, 0, 0, 0); + const isSelectedDateToday = selectedDate.getTime() === today.getTime() + return (
-
-

Minhas Consultas

-
- {/* Navegação de Data */} -
-
- -

{formatDatePt(todayStr)}

- - -
-
- {consultasDoDia.length} consulta{consultasDoDia.length !== 1 ? 's' : ''} agendada{consultasDoDia.length !== 1 ? 's' : ''} -
-
- {/* Lista de Consultas do Dia */} -
- {consultasDoDia.length === 0 ? ( -
- -

Nenhuma consulta agendada para este dia

-

Você pode agendar uma nova consulta

- +
+
+

Agende sua próxima consulta

+

Escolha o formato ideal, selecione a especialidade e encontre o profissional perfeito para você.

+
+ +
+
+ +
+ + +
- ) : ( - consultasDoDia.map(consulta => ( -
-
-
-
-
-
- - {consulta.medico} + +
+
+ + +
+ +
+ +
+ + setLocalizacao(event.target.value)} + placeholder="Cidade ou estado" + className="pl-9" + /> +
+
+
+ + +
+ +
+ +
+
+ + setMostrarAgendadas(open)}> + + + Consultas agendadas + Gerencie suas consultas confirmadas, pendentes ou canceladas. + + +
+
+ + {formatDatePt(currentDate)} + + {isSelectedDateToday && ( + + )} +
+
+ {consultasDoDia.length} consulta{consultasDoDia.length !== 1 ? 's' : ''} agendada{consultasDoDia.length !== 1 ? 's' : ''} +
+
+ +
+ {consultasDoDia.length === 0 ? ( +
+ +

Nenhuma consulta agendada para este dia

+

Use a busca para marcar uma nova consulta.

+
+ ) : ( + consultasDoDia.map(consulta => ( +
+
+
+ +
+
+ + {consulta.medico} +
+

+ {consulta.especialidade} • {consulta.local} +

+
-
- {consulta.especialidade} • {consulta.local} + +
+ + {consulta.hora} +
+ +
+ + {consulta.status} + +
+ +
+ + {consulta.status !== 'Cancelada' && ( + + )} + {consulta.status !== 'Cancelada' && ( + + )}
-
- - {consulta.hora} -
-
-
{consulta.status}
-
-
- - {consulta.status !== 'Cancelada' && } - {consulta.status !== 'Cancelada' && } -
-
-
- )) - )} -
+ )) + )} +
+ + + + + +
) } diff --git a/susconecta/next-env.d.ts b/susconecta/next-env.d.ts index 830fb59..40c3d68 100644 --- a/susconecta/next-env.d.ts +++ b/susconecta/next-env.d.ts @@ -1,6 +1,5 @@ /// /// -/// // NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.