fix: corrige hydration, notificacoes e melhora visual

- Corrige hydration mismatch no Toaster (sonner) e ChatWidgetProvider
- Corrige API de preferencias de notificacao (typePreferences como string)
- Melhora visual do Switch (estado ativo em preto)
- Adiciona icones em circulos na pagina de notificacoes
- Corrige acentuacao em "Obrigatorio"
- Corrige centralizacao das estrelas de avaliacao nos e-mails
- Aplica Sentence case nos titulos dos templates de e-mail
- Adiciona script de teste de e-mail

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
esdrasrenan 2025-12-15 19:52:46 -03:00
parent 7a3791117b
commit eedd446b36
7 changed files with 302 additions and 55 deletions

View file

@ -1,5 +1,6 @@
"use client"
import { useEffect, useState } from "react"
import dynamic from "next/dynamic"
import { api } from "@/convex/_generated/api"
import { useAuth } from "@/lib/auth-client"
@ -17,12 +18,19 @@ function checkLiveChatApiExists() {
// Importacao dinamica para evitar problemas de SSR
const ChatWidget = dynamic(
() => import("./chat-widget").then((mod) => ({ default: mod.ChatWidget })),
{ ssr: false }
{ ssr: false, loading: () => null }
)
export function ChatWidgetProvider() {
const { role, isLoading } = useAuth()
const [mounted, setMounted] = useState(false)
useEffect(() => {
setMounted(true)
}, [])
// Evita hydration mismatch - so renderiza apos montar no cliente
if (!mounted) return null
if (isLoading) return null
if (!isAgentOrAdmin(role)) return null