From db1774beda965e1ce08f0e1772200a3add4ac07a Mon Sep 17 00:00:00 2001 From: M-Gabrielly Date: Thu, 13 Nov 2025 20:06:18 -0300 Subject: [PATCH] feat: add standardized select hover styles with blue-500 --- .../app/(main-routes)/consultas/page.tsx | 4 +-- .../app/(main-routes)/doutores/page.tsx | 10 +++--- .../app/(main-routes)/pacientes/page.tsx | 8 ++--- susconecta/app/globals.css | 15 +++++++++ susconecta/app/paciente/page.tsx | 8 ++--- susconecta/app/profissional/page.tsx | 32 +++++++++---------- .../components/features/dashboard/header.tsx | 4 +-- 7 files changed, 48 insertions(+), 33 deletions(-) diff --git a/susconecta/app/(main-routes)/consultas/page.tsx b/susconecta/app/(main-routes)/consultas/page.tsx index fe97473..0b99c88 100644 --- a/susconecta/app/(main-routes)/consultas/page.tsx +++ b/susconecta/app/(main-routes)/consultas/page.tsx @@ -519,7 +519,7 @@ export default function ConsultasPage() { {/* Linha 2: Selects responsivos */}
setItemsPerPage(Number(e.target.value))} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > diff --git a/susconecta/app/(main-routes)/doutores/page.tsx b/susconecta/app/(main-routes)/doutores/page.tsx index 2a52829..c0a1517 100644 --- a/susconecta/app/(main-routes)/doutores/page.tsx +++ b/susconecta/app/(main-routes)/doutores/page.tsx @@ -534,7 +534,7 @@ export default function DoutoresPage() { aria-label="Ordenar por" value={sortBy} onChange={(e) => setSortBy(e.target.value as any)} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > @@ -546,7 +546,7 @@ export default function DoutoresPage() { aria-label="Filtrar por especialidade" value={specialtyFilter} onChange={(e) => setSpecialtyFilter(e.target.value)} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > {specialtyOptions.map((sp) => ( @@ -558,7 +558,7 @@ export default function DoutoresPage() { aria-label="Filtrar por estado" value={stateFilter} onChange={(e) => { setStateFilter(e.target.value); setCityFilter(""); }} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > {stateOptions.map((uf) => ( @@ -570,7 +570,7 @@ export default function DoutoresPage() { aria-label="Filtrar por cidade" value={cityFilter} onChange={(e) => setCityFilter(e.target.value)} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > {cityOptions.map((c) => ( @@ -764,7 +764,7 @@ export default function DoutoresPage() { setItemsPerPage(Number(e.target.value))} - className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary hover:border-primary transition-colors cursor-pointer" + className="h-8 sm:h-9 rounded-md border border-input bg-background px-2 sm:px-3 py-1 text-xs sm:text-sm shadow-sm focus:outline-none focus:ring-2 focus:ring-primary select-hover-blue cursor-pointer" > diff --git a/susconecta/app/globals.css b/susconecta/app/globals.css index d41795d..ada3c18 100644 --- a/susconecta/app/globals.css +++ b/susconecta/app/globals.css @@ -167,3 +167,18 @@ button[aria-label="Close"], display: none !important; } +/* Classe padronizada de hover azul - consistente em todos os modos (claro/escuro SO e app) */ +.hover-primary-blue { + @apply hover:bg-blue-500 hover:text-white hover:border-blue-500 transition-all duration-200; +} + +/* Hover simples para ícones e botões menores */ +.hover-primary-blue-soft { + @apply hover:bg-blue-500/10 hover:text-blue-500 transition-colors duration-200; +} + +/* Hover padronizado para selects de filtro */ +.select-hover-blue { + @apply hover:bg-blue-500 hover:text-white hover:border-blue-500 transition-colors duration-200; +} + diff --git a/susconecta/app/paciente/page.tsx b/susconecta/app/paciente/page.tsx index 54f0317..dd9792b 100644 --- a/susconecta/app/paciente/page.tsx +++ b/susconecta/app/paciente/page.tsx @@ -693,10 +693,10 @@ export default function PacientePage() { const [tipoConsulta, setTipoConsulta] = useState<'teleconsulta' | 'presencial'>('teleconsulta') const [especialidade, setEspecialidade] = useState('cardiologia') const [localizacao, setLocalizacao] = useState('') - 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 hoverPrimaryClass = "hover-primary-blue focus-visible:ring-2 focus-visible:ring-blue-500/60 active:scale-[0.97]" + const activeToggleClass = "w-full transition duration-200 focus-visible:ring-2 focus-visible:ring-blue-500/60 active:scale-[0.97] bg-blue-500 text-white hover:bg-blue-500 hover:text-white" + const inactiveToggleClass = "w-full transition duration-200 bg-slate-50 text-blue-500 border border-blue-500/30 hover:bg-blue-50 hover:text-blue-500 dark:bg-white/5 dark:text-white dark:hover:bg-blue-500/20 dark:border-white/20" + const hoverPrimaryIconClass = "rounded-xl bg-white text-slate-900 border border-black/10 shadow-[0_2px_8px_rgba(0,0,0,0.03)] hover-primary-blue focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 dark:bg-slate-800 dark:text-slate-100 dark:border-white/10 dark:shadow-none" 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() diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx index 84e791f..e800161 100644 --- a/susconecta/app/profissional/page.tsx +++ b/susconecta/app/profissional/page.tsx @@ -809,13 +809,13 @@ const ProfissionalPage = () => {
{/* Navegação de Data - Responsiva */} -
+
@@ -826,7 +826,7 @@ const ProfissionalPage = () => { variant="outline" size="sm" onClick={() => navigateDate('next')} - className="p-1.5 sm:p-2 hover:bg-primary! hover:text-white! cursor-pointer transition-colors h-auto" + className="p-1.5 sm:p-2 hover-primary-blue cursor-pointer h-auto" > @@ -1027,7 +1027,7 @@ const ProfissionalPage = () => { variant={selectedRange === 'todos' ? 'default' : 'outline'} size="sm" onClick={() => setSelectedRange('todos')} - className="hover:bg-primary! hover:text-white! transition-colors" + className="hover-primary-blue" > Todos @@ -1035,7 +1035,7 @@ const ProfissionalPage = () => { variant={selectedRange === 'semana' ? 'default' : 'outline'} size="sm" onClick={() => setSelectedRange('semana')} - className="hover:bg-primary! hover:text-white! transition-colors" + className="hover-primary-blue" > Semana @@ -1043,7 +1043,7 @@ const ProfissionalPage = () => { variant={selectedRange === 'mes' ? 'default' : 'outline'} size="sm" onClick={() => setSelectedRange('mes')} - className="hover:bg-primary! hover:text-white! transition-colors" + className="hover-primary-blue" > Mês @@ -1204,7 +1204,7 @@ const ProfissionalPage = () => { -
@@ -1503,7 +1503,7 @@ const ProfissionalPage = () => { onClick={() => { router.push(`/laudos/${laudo.id}`); }} - className="flex items-center gap-1 hover:bg-primary! hover:text-white! transition-colors" + className="flex items-center gap-1 hover-primary-blue" > Ver Laudo @@ -2308,16 +2308,16 @@ const ProfissionalPage = () => { title="Cor da fonte" /> {/* Alinhamento */} - - - - + + + + {/* Listas */} - - + + {/* Recuo */} - - + + {/* Desfazer/Refazer */}
diff --git a/susconecta/components/features/dashboard/header.tsx b/susconecta/components/features/dashboard/header.tsx index 5b78f26..160de92 100644 --- a/susconecta/components/features/dashboard/header.tsx +++ b/susconecta/components/features/dashboard/header.tsx @@ -43,14 +43,14 @@ export function PagesHeader({ title = "", subtitle = "" }: { title?: string, sub
- {/* Avatar Dropdown Simples */}