From d24bf41818cb992a4738e9ec2db120ccd8a0e29b Mon Sep 17 00:00:00 2001 From: Jhony Date: Sun, 30 Nov 2025 01:40:07 -0300 Subject: [PATCH 1/9] modos de acessbilidade --- app/context/AccessibilityContext.tsx | 31 +- app/doctor/dashboard/page.tsx | 18 +- app/doctor/disponibilidade/excecoes/page.tsx | 26 +- app/doctor/disponibilidade/page.tsx | 44 +- app/globals.css | 10 +- app/layout.tsx | 13 +- app/login/page.tsx | 3 +- app/manager/dashboard/page.tsx | 28 +- app/manager/disponibilidade/page.tsx | 10 +- app/manager/home/[id]/editar/page.tsx | 26 +- app/manager/home/page.tsx | 96 ++-- app/manager/login/page.tsx | 2 +- app/manager/pacientes/[id]/editar/page.tsx | 48 +- app/manager/pacientes/page.tsx | 74 +-- app/manager/usuario/[id]/editar/page.tsx | 24 +- app/manager/usuario/novo/page.tsx | 12 +- app/manager/usuario/page.tsx | 78 ++-- app/page.tsx | 62 +-- app/patient/appointments/page.tsx | 8 +- app/patient/dashboard/page.tsx | 26 +- app/patient/profile/page.tsx | 12 +- app/patient/register/page.tsx | 15 +- app/patient/reports/page.tsx | 20 +- app/providers.tsx | 18 + app/secretary/appointments/page.tsx | 72 +-- app/secretary/dashboard/page.tsx | 30 +- app/secretary/pacientes/[id]/editar/page.tsx | 40 +- app/secretary/pacientes/page.tsx | 459 ++++++++++--------- components/Sidebar.tsx | 64 +-- components/schedule/schedule-form.tsx | 32 +- components/ui/WeeklyScheduleCard.tsx | 12 +- components/ui/filter-bar.tsx | 8 +- components/ui/patient-details-modal.tsx | 66 +-- components/ui/userToolTip.tsx | 16 +- 34 files changed, 761 insertions(+), 742 deletions(-) create mode 100644 app/providers.tsx diff --git a/app/context/AccessibilityContext.tsx b/app/context/AccessibilityContext.tsx index 1594f2e..ae52c99 100644 --- a/app/context/AccessibilityContext.tsx +++ b/app/context/AccessibilityContext.tsx @@ -19,20 +19,25 @@ interface AccessibilityContextProps { const AccessibilityContext = createContext(undefined); export const AccessibilityProvider = ({ children }: { children: ReactNode }) => { - const [theme, setThemeState] = useState('light'); - const [contrast, setContrastState] = useState('normal'); - const [fontSize, setFontSize] = useState(16); - - useEffect(() => { - const storedTheme = (localStorage.getItem('accessibility-theme') as Theme) || 'light'; - const storedContrast = (localStorage.getItem('accessibility-contrast') as Contrast) || 'normal'; - const storedSize = localStorage.getItem('accessibility-font-size'); - setThemeState(storedTheme); - setContrastState(storedContrast); - if (storedSize) { - setFontSize(parseFloat(storedSize)); + const [theme, setThemeState] = useState(() => { + if (typeof window !== 'undefined') { + return (localStorage.getItem('accessibility-theme') as Theme) || 'light'; } - }, []); + return 'light'; + }); + const [contrast, setContrastState] = useState(() => { + if (typeof window !== 'undefined') { + return (localStorage.getItem('accessibility-contrast') as Contrast) || 'normal'; + } + return 'normal'; + }); + const [fontSize, setFontSize] = useState(() => { + if (typeof window !== 'undefined') { + const storedSize = localStorage.getItem('accessibility-font-size'); + return storedSize ? parseFloat(storedSize) : 16; + } + return 16; + }); useEffect(() => { const root = document.documentElement; diff --git a/app/doctor/dashboard/page.tsx b/app/doctor/dashboard/page.tsx index a018dfd..d34bc4e 100644 --- a/app/doctor/dashboard/page.tsx +++ b/app/doctor/dashboard/page.tsx @@ -264,8 +264,8 @@ export default function PatientDashboard() {
-

Dashboard

-

+

Dashboard

+

Bem-vindo ao seu portal de consultas médicas

@@ -367,21 +367,21 @@ export default function PatientDashboard() { return (
-
+

{date}

-

+

{startTime && endTime ? `${startTime} - ${endTime}` : "Dia todo"}

-

{ex.kind === "bloqueio" ? "Bloqueio" : "Liberação"}

-

{ex.reason || "Sem motivo especificado"}

+

{ex.kind === "bloqueio" ? "Bloqueio" : "Liberação"}

+

{ex.reason || "Sem motivo especificado"}

-
@@ -390,7 +390,7 @@ export default function PatientDashboard() { ); }) ) : ( -

Nenhuma exceção registrada.

+

Nenhuma exceção registrada.

)} @@ -403,7 +403,7 @@ export default function PatientDashboard() { Cancelar - exceptionToDelete && handleDeleteException(exceptionToDelete)} className="bg-red-600 hover:bg-red-700"> + exceptionToDelete && handleDeleteException(exceptionToDelete)} className="bg-destructive hover:bg-destructive/90"> Excluir diff --git a/app/doctor/disponibilidade/excecoes/page.tsx b/app/doctor/disponibilidade/excecoes/page.tsx index 932cb3f..212aa33 100644 --- a/app/doctor/disponibilidade/excecoes/page.tsx +++ b/app/doctor/disponibilidade/excecoes/page.tsx @@ -149,12 +149,12 @@ export default function ExceptionPage() {
-

Adicione exceções

-

Altere a disponibilidade em casos especiais para o Dr. João Silva

+

Adicione exceções

+

Altere a disponibilidade em casos especiais para o Dr. João Silva

-

Consultas para: {displayDate}

+

Consultas para: {displayDate}

-
diff --git a/app/doctor/disponibilidade/page.tsx b/app/doctor/disponibilidade/page.tsx index 9dd35b8..a9a6b17 100644 --- a/app/doctor/disponibilidade/page.tsx +++ b/app/doctor/disponibilidade/page.tsx @@ -379,23 +379,23 @@ export default function AvailabilityPage() {
-

+

Definir Disponibilidade

-

+

Defina sua disponibilidade para consultas{" "}

-
-

Dados

+
+

Dados

{/* **AJUSTE DE RESPONSIVIDADE: DIAS DA SEMANA** */}
- @@ -414,7 +414,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="tuesday" - className="text-blue-600" + className="text-primary" /> Terça @@ -423,7 +423,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="wednesday" - className="text-blue-600" + className="text-primary" /> Quarta @@ -432,7 +432,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="thursday" - className="text-blue-600" + className="text-primary" /> Quinta @@ -441,7 +441,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="friday" - className="text-blue-600" + className="text-primary" /> Sexta @@ -450,7 +450,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="saturday" - className="text-blue-600" + className="text-primary" /> Sábado @@ -459,7 +459,7 @@ export default function AvailabilityPage() { type="radio" name="weekday" value="sunday" - className="text-blue-600" + className="text-primary" /> Domingo @@ -472,7 +472,7 @@ export default function AvailabilityPage() {
@@ -487,7 +487,7 @@ export default function AvailabilityPage() {
@@ -502,7 +502,7 @@ export default function AvailabilityPage() {
@@ -520,7 +520,7 @@ export default function AvailabilityPage() {
@@ -551,7 +551,7 @@ export default function AvailabilityPage() { -
@@ -571,7 +571,7 @@ export default function AvailabilityPage() { const times = schedule[day] || []; return (
-
+

{weekdaysPT[day]}

{times.length > 0 ? ( @@ -579,7 +579,7 @@ export default function AvailabilityPage() {
-

+

{formatTime(t.start)} - {formatTime(t.end)}

@@ -590,7 +590,7 @@ export default function AvailabilityPage() { openDeleteDialog(t, day)} - className="text-red-600 focus:bg-red-50 focus:text-red-600"> + className="text-destructive focus:bg-destructive/10 focus:text-destructive"> Excluir @@ -599,7 +599,7 @@ export default function AvailabilityPage() {
)) ) : ( -

Sem horário

+

Sem horário

)}
@@ -619,7 +619,7 @@ export default function AvailabilityPage() { Cancelar - selectedAvailability && handleDeleteAvailability(selectedAvailability.id)} className="bg-red-600 hover:bg-red-700"> + selectedAvailability && handleDeleteAvailability(selectedAvailability.id)} className="bg-destructive hover:bg-destructive/90"> Excluir diff --git a/app/globals.css b/app/globals.css index 95ff1b4..d34f124 100644 --- a/app/globals.css +++ b/app/globals.css @@ -16,8 +16,8 @@ --muted-foreground: oklch(0.556 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(0.577 0.245 27.325); + --destructive: oklch(0.637 0.237 25.331); + --destructive-foreground: oklch(0.985 0 0); --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.708 0 0); @@ -52,8 +52,8 @@ --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.396 0.141 25.723); - --destructive-foreground: oklch(0.637 0.237 25.331); + --destructive: oklch(0.7 0.25 25); + --destructive-foreground: oklch(0.985 0 0); --border: oklch(0.269 0 0); --input: oklch(0.269 0 0); --ring: oklch(0.439 0 0); @@ -87,7 +87,7 @@ --muted-foreground: oklch(1 0.5 100); --accent: oklch(0 0 0); --accent-foreground: oklch(1 0.5 100); - --destructive: oklch(0.5 0.3 30); + --destructive: oklch(0.8 0.5 25); --destructive-foreground: oklch(0 0 0); --border: oklch(1 0.5 100); --input: oklch(0 0 0); diff --git a/app/layout.tsx b/app/layout.tsx index 797f31e..b358dcd 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -4,11 +4,7 @@ import { GeistMono } from "geist/font/mono"; import { Analytics } from "@vercel/analytics/next"; import "./globals.css"; import { Toaster } from "@/components/ui/toaster"; -// [PASSO 1.2] - Importando o nosso provider -import { AppointmentsProvider } from "./context/AppointmentsContext"; -import { AccessibilityProvider } from "./context/AccessibilityContext"; -import { AccessibilityModal } from "@/components/accessibility-modal"; -import { ThemeInitializer } from "@/components/theme-initializer"; +import { Providers } from "./providers"; export default function RootLayout({ children, @@ -18,12 +14,7 @@ export default function RootLayout({ return ( - {/* [PASSO 1.2] - Envolvendo a aplicação com o provider */} - - - {children} - - + {children} diff --git a/app/login/page.tsx b/app/login/page.tsx index 4af96d9..951e3ba 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -97,7 +97,7 @@ export default function LoginPage() {
{/* O contêiner principal que agora terá a sombra e o estilo de card */} -
+
{/* NOVO: Bloco da Logo e Nome (Painel Esquerdo) */}
{/* Camada de sobreposição para escurecer a imagem e destacar o texto */}
diff --git a/app/manager/dashboard/page.tsx b/app/manager/dashboard/page.tsx index 11f5c19..1d29623 100644 --- a/app/manager/dashboard/page.tsx +++ b/app/manager/dashboard/page.tsx @@ -94,8 +94,8 @@ export default function ManagerDashboard() {
{/* Cabeçalho */}
-

Dashboard

-

+

Dashboard

+

Bem-vindo ao seu portal de consultas médicas

@@ -114,7 +114,7 @@ export default function ManagerDashboard() { {loadingUser ? ( -
+
Carregando usuário...
) : firstUser ? ( @@ -127,7 +127,7 @@ export default function ManagerDashboard() {

) : ( -
+
Nenhum usuário encontrado
)} @@ -159,15 +159,15 @@ export default function ManagerDashboard() { - - + Página {page} de {totalPages} diff --git a/app/manager/home/[id]/editar/page.tsx b/app/manager/home/[id]/editar/page.tsx index 1cce7a8..b2a5a8f 100644 --- a/app/manager/home/[id]/editar/page.tsx +++ b/app/manager/home/[id]/editar/page.tsx @@ -209,8 +209,8 @@ export default function EditarMedicoPage() { return (
- -

Carregando dados do médico...

+ +

Carregando dados do médico...

); @@ -221,10 +221,10 @@ export default function EditarMedicoPage() {
-

- Editar Médico: {formData.nomeCompleto} +

+ Editar Médico: {formData.nomeCompleto}

-

+

Atualize as informações do médico

@@ -239,14 +239,14 @@ export default function EditarMedicoPage() { {error && ( -
+

Erro na Atualização:

{error}

)} -
-

+
+

Dados Principais e Pessoais

@@ -348,8 +348,8 @@ export default function EditarMedicoPage() {
-
-

+
+

Contato e Endereço

@@ -452,8 +452,8 @@ export default function EditarMedicoPage() {
-
-

+
+

Observações (Apenas internas)