@tmf/email-front (6.9.0)
Installation
@tmf:registry=npm install @tmf/email-front@6.9.0"@tmf/email-front": "6.9.0"About this package
@tmf/email-front
Módulo Email plug-and-play da plataforma TMF — caixa de e-mail pessoal do usuário autenticado (Microsoft Graph / Gmail).
Extraído do módulo de e-mail do
Hub(tmf-management). É o e-mail 1:1 do colaborador, com contrato (EmailApiClient) e backend próprio (tmf-email-back). O antigo@tmf/mailbox-front(inbound multicanal) foi removido do monorepo (TMFP-61408) — inbound tem dono único noservice-desk.
- Versão: ver
package.json(PACKAGE_VERSIONé gerado dele noprebuild; não replicada aqui) - Distribuição: registry npm privado (org TMF, Forgejo)
- Peer deps:
react,react-dom(>= 18) - Deps:
@tanstack/react-query,lucide-react,dompurify @tmf/platform-core:devDependencyinlined no bundle — o host não instala
Instalação
npm install @tmf/email-front
Uso (plug-and-play)
import { EmailApp } from '@tmf/email-front'
<EmailApp baseUrl="/api/service/email" getToken={() => auth.token} />
⚠️
baseUrldeve ser/api/service/email— é o prefixo que otmf-email-backexpõe (paths absolutos nos sub-routers). O client interno concatena paths crus (${baseUrl}/messages), então aqui obaseUrlcarrega o prefixo do serviço (divergência conhecida da Convenção A do ADR-002 — verINTEGRATION.md§4/§5). O Provider monta sozinho oEmailApiCliente umQueryClientinterno — o host não precisa prover<QueryClientProvider>.
Uso (modo avançado — client próprio)
import { EmailApp, type EmailApiClient } from '@tmf/email-front'
const client: EmailApiClient = {
listMessages: (params) => http.get('/api/service/email/messages', params),
}
<EmailApp client={client} />
Contrato de backend
O front é agnóstico de transporte; o backend do módulo é o tmf-email-back
(packages/email/back, FastAPI montável). O EmailApiClient (em src/types.ts) tem
listMessages, getMessage, listFolders, getConfig e getThread obrigatórios; os demais
métodos (envio, IA, OAuth, conta, aliases, sync, getMeta) são opcionais. O client default
(baseUrl) fala com as rotas reais sob /api/service/email/* — catálogo de rotas em
../back/README.md.
⚠️ Divergência de contrato conhecida: o front pagina por cursor e o
GET /messagesdo back pagina porpage/per_page— compatível só para a 1ª página (verINTEGRATION.md§8/§9).
Exports
EmailApp— componente top-level (Provider + header + caixa de e-mail)EmailInbox— só a tabela da caixa de e-mail (uso avulso)EmailChatView,EmailKanbanView,EmailSettingsPage,ViewModeToggle,ComposeModal,AIButtonsEmailProvider,useEmailContext,useEmailUIdefaultEmailUIPrimitives,mergeEmailUI(slot pattern de UI)emailQueryKeys,sanitizeEmailHtml, tipos (EmailMessage,EmailApiClient,EmailLabels, …)PACKAGE_VERSION
Documentação
| Arquivo | Conteúdo |
|---|---|
FUNCIONALIDADES.md |
Catálogo de componentes, hooks, slots e tipos |
CONFORMANCE.md |
Checklist de conformidade ao padrão-ouro TMF |
CHANGELOG.md |
Histórico de versões |
Publicação (release)
- Registry: npm privado Forgejo TMF
(
https://git.trademarketingforce.com/api/packages/TMF/npm/, já configurado empublishConfig) - Trigger:
.forgejo/workflows/publish.yml— sóworkflow_dispatch(sem gatilhopush: tags, TMFP-68196); push de tag não publica. Canônico: skill/release— sempre confirmar rodada verde antes de considerar publicado - Pré-requisito: bump de
versionnopackage.jsonantes (o CI não bumpa sozinho) enpm run prebuildpara regenerarsrc/version.ts
Dependencies
Dependencies
| ID | Version |
|---|---|
| @tanstack/react-query | ^5.0.0 |
| dompurify | ^3.0.0 |
| lucide-react | ^0.400.0 |
Development dependencies
| ID | Version |
|---|---|
| @testing-library/jest-dom | ^6.0.0 |
| @testing-library/react | ^16.0.0 |
| @tmf/platform-core | file:../../platform-core |
| @types/dompurify | ^3.0.5 |
| @types/react | ^18.2.47 |
| @types/react-dom | ^18.2.18 |
| jsdom | ^25.0.0 |
| tsup | ^8.5.1 |
| typescript | ^5.3.3 |
| vitest | ^4.1.11 |
Peer dependencies
| ID | Version |
|---|---|
| @tmf/design-tokens | >=0.6.0 |
| react | >=18.0.0 |
| react-dom | >=18.0.0 |