import React, { useState } from 'react'; import { Building2, ArrowRight, Loader2, CheckCircle2, LogOut, Clock, Briefcase } from 'lucide-react'; import { HybridBackend } from '../services/backend.ts'; interface CreateClinicViewProps { onCreated: () => void; } function getStoredUser(): { nome?: string; role?: string } { try { return JSON.parse(localStorage.getItem('SCOREODONTO_USER_DATA') || '{}'); } catch { return {}; } } function applyWorkspace(result: any, userRole: string) { const ws = { id: result.clinica.id, nome: result.clinica.nome_fantasia, cor: '#2563eb', role: userRole, }; localStorage.setItem('SCOREODONTO_WORKSPACES', JSON.stringify([ws])); localStorage.setItem('SCOREODONTO_ACTIVE_WORKSPACE', JSON.stringify(ws)); } export const CreateClinicView: React.FC = ({ onCreated }) => { const storedUser = getStoredUser(); const userRole = storedUser.role || 'donoclinica'; const isConsultorio = userRole === 'donoconsultorio'; const label = isConsultorio ? 'CONSULTÓRIO' : 'CLÍNICA'; const [nome, setNome] = useState(''); const [documento, setDocumento] = useState(''); const [loading, setLoading] = useState(false); const [skipping, setSkipping] = useState(false); const [error, setError] = useState(''); const [done, setDone] = useState(false); const doCreate = async (nomeFinal: string, doc?: string) => { const result = await HybridBackend.createClinica(nomeFinal.trim(), doc?.trim() || undefined); if (!result.success) return result; applyWorkspace(result, userRole); return result; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!nome.trim()) return; setLoading(true); setError(''); const result = await doCreate(nome, documento); setLoading(false); if (!result.success) { setError(result.message || `Erro ao criar ${label.toLowerCase()}.`); return; } setDone(true); setTimeout(() => { window.location.href = '/dashboard'; }, 1800); }; const handleSkip = async () => { setSkipping(true); const autoNome = storedUser.nome ? `${storedUser.nome} - ${label}` : `MEU ${label}`; const result = await doCreate(autoNome); setSkipping(false); if (!result.success) { setError(result.message || 'Erro ao configurar. Tente novamente.'); return; } window.location.href = '/dashboard'; }; if (done) { return (

{label} CRIADO!

Carregando seu painel...

); } const headerColor = isConsultorio ? 'bg-emerald-600' : 'bg-teal-600'; const Icon = isConsultorio ? Briefcase : Building2; const placeholder = isConsultorio ? 'EX: DR. SILVA - CONSULTÓRIO' : 'EX: CLÍNICA SORRISO'; return (

NOVO {label}

CONFIGURAÇÃO INICIAL DO SISTEMA

{isConsultorio ? 'Crie seu consultório para começar. Você pode configurar endereço e dados depois.' : 'Crie sua clínica para começar. O módulo de RX será provisionado automaticamente.'}

setNome(e.target.value)} className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-teal-500 outline-none text-sm font-medium uppercase" placeholder={placeholder} />
setDocumento(e.target.value)} className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-teal-500 outline-none text-sm font-medium" placeholder="00.000.000/0000-00" />
{error && (
{error}
)}

Prefere configurar depois?

); };