import { useState } from 'react' import { FeatureCallout } from '../components/FeatureState.jsx' import { settingsRepository } from '../repositories/settingsRepository.js' const cardClass = 'rounded-2xl border border-[#404040] bg-[#262626] shadow-sm' const rowClass = 'flex items-center justify-between gap-6 border-b border-[#404040] py-4 last:border-0' const inputClass = 'h-10 rounded-sm border border-[#404040] bg-[#171717] px-3 text-sm text-[#e5e5e5] outline-none transition focus:border-[#3b82f6] focus:ring-2 focus:ring-[#3b82f6]/20' export function SettingsPage() { const sections = settingsRepository.getSections() const [activeSection, setActiveSection] = useState('aparencia') return (

Configurações

Gerencie preferências, segurança e integrações do MediConnect

{activeSection === 'aparencia' ? : null} {activeSection === 'notificacoes' ? : null} {activeSection === 'privacidade' ? : null} {activeSection === 'conta' ? : null} {activeSection === 'integracoes' ? : null} {activeSection === 'dados' ? : null}
) } function AppearanceSection() { const [theme, setTheme] = useState('dark') const [compact, setCompact] = useState(false) const [contrast, setContrast] = useState(false) const [animations, setAnimations] = useState(true) return (

Tema da Interface

{[ { id: 'dark', label: 'Escuro', preview: 'bg-[#0a1628]' }, { id: 'light', label: 'Claro', preview: 'bg-[#f4f7fb]' }, ].map((item) => ( ))}

A preferência de tema é salva localmente neste protótipo.

) } function NotificationsSection() { const [settings, setSettings] = useState({ email: true, sms: true, whatsapp: true, push: false, ai: true, appointment: true, report: true, noShow: true, }) return ( setSettings((current) => ({ ...current, email: value }))} /> setSettings((current) => ({ ...current, sms: value }))} /> setSettings((current) => ({ ...current, whatsapp: value }))} /> setSettings((current) => ({ ...current, push: value }))} /> setSettings((current) => ({ ...current, ai: value }))} /> setSettings((current) => ({ ...current, appointment: value }))} /> setSettings((current) => ({ ...current, report: value }))} /> setSettings((current) => ({ ...current, noShow: value }))} /> {}} />
até
) } function PrivacySection() { const [twoFactor, setTwoFactor] = useState(false) const [audit, setAudit] = useState(true) const [anonymous, setAnonymous] = useState(false) return (

Conformidade LGPD Ativa

Dados de pacientes são tratados com finalidade legítima e armazenados com segurança neste protótipo.

) } function AccountSection() { const [profile, setProfile] = useState({ name: 'Dra. Ana Silva', email: 'ana.silva@mediconnect.com.br', role: 'Coordenação Médica', crm: 'CRM/SE 12345', }) function update(field, value) { setProfile((current) => ({ ...current, [field]: value })) } return (
AS

{profile.name}

{profile.role}

update('name', value)} value={profile.name} /> update('email', value)} value={profile.email} /> update('role', value)} value={profile.role} /> update('crm', value)} value={profile.crm} />
) } function IntegrationsSection() { const integrations = settingsRepository.getIntegrations() return (
{integrations.map(([name, desc, connected, color]) => (

{name}

{desc}

{connected ? 'Conectado' : 'Desconectado'}
))}
) } function DataSection() { return (
{[ ['Pacientes (CSV)', 'Lista completa com dados cadastrais'], ['Prontuários (PDF)', 'Registros médicos do período'], ['Relatório Geral (PDF)', 'Dashboard executivo completo'], ].map(([label, desc]) => ( ))}
{}} />
) } function SectionFrame({ children, description, title }) { return (

{title}

{description}

{children}
) } function Subsection({ children, title }) { return (

{title}

{children}
) } function SettingsGroup({ children }) { return
{children}
} function ToggleRow({ checked, description, label, onChange }) { return ( ) } function SettingRow({ children, description, label }) { return (

{label}

{description ?

{description}

: null}
{children}
) } function TextField({ label, onChange, value }) { return ( ) } function ToggleSwitch({ checked, onChange }) { return ( ) } function SettingsIcon({ className = 'size-4', name }) { const common = { className, fill: 'none', stroke: 'currentColor', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 1.9, viewBox: '0 0 24 24', } if (name === 'bell') { return ( ) } if (name === 'shield') { return ( ) } if (name === 'user') { return ( ) } if (name === 'globe') { return ( ) } if (name === 'database') { return ( ) } if (name === 'download') { return ( ) } if (name === 'alert') { return ( ) } return ( ) }