3042ddca38
- /wa-inbox, /wa-sessions e /wa-secretaria rodam sem a sidebar do scoreodonto (isStandaloneView); cada tela tem seu "Voltar" (Secretária ganhou botão na ThinNav). - SessionsView: banner "Você já possui acesso ao WhatsApp" quando há sessão ativa. - avatares: usa a URL do CDN (contactAvatarUrl/instance.avatar) direto; Avatar exibe sem depender de version; self-heal no onError re-busca a foto atual. - deps: framer-motion, immer. Dev override com HMR (docker-compose.dev.yml). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import path from 'path';
|
|
import { defineConfig, loadEnv } from 'vite';
|
|
import react from '@vitejs/plugin-react';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
|
|
export default defineConfig(({ mode }) => {
|
|
const env = loadEnv(mode, '.', '');
|
|
// Servido atrás de um proxy TLS (ex.: dev.scoreodonto.com via nginx/traefik):
|
|
// libera o host e roteia o websocket de HMR por wss:443. Só ativa quando
|
|
// DEV_PUBLIC_HOST está definido (container dev) — `npm run dev` local não muda.
|
|
const proxiedHost = process.env.DEV_PUBLIC_HOST;
|
|
return {
|
|
server: {
|
|
port: 3000,
|
|
host: 'localhost',
|
|
...(proxiedHost ? {
|
|
allowedHosts: [proxiedHost],
|
|
hmr: { protocol: 'wss', host: proxiedHost, clientPort: 443 },
|
|
} : {}),
|
|
},
|
|
plugins: [
|
|
react(),
|
|
tailwindcss(),
|
|
],
|
|
define: {
|
|
'process.env.API_KEY': JSON.stringify(env.GEMINI_API_KEY),
|
|
'process.env.GEMINI_API_KEY': JSON.stringify(env.GEMINI_API_KEY)
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, '.'),
|
|
}
|
|
}
|
|
};
|
|
});
|