@tmf/kb-front (7.9.0-rc.2)
Installation
@tmf:registry=npm install @tmf/kb-front@7.9.0-rc.2"@tmf/kb-front": "7.9.0-rc.2"About this package
@tmf/kb-front
UI plug-and-play do módulo Base de Conhecimento (KB) multi-domínio da
plataforma TMF: o host instala o pacote e renderiza <KBApp baseUrl getToken tenantId can />, sem depender de @tmf/platform-core nem montar um
AppContract. Backend irmão: packages/kb/back —
consumir sempre via manual de integração dele
(INTEGRATION.md).
A versão é a do package.json (fonte única) e a da tabela gerada do README.md da raiz
do monorepo; este arquivo não a repete. O que cada versão trouxe: CHANGELOG.md.
O que existe em src/
KBApp(app/KBApp.tsx) — shell completo: nav de seções (browse,curation,blocks,import,settings, cada uma escondida porcan()), árvore de categorias com drag-and-drop, listagem/busca, leitura de artigo (?article=), quick switcher (Ctrl/Cmd+K) e backlinks. Cria umQueryClientpróprio — não exigeQueryClientProviderno host.- Renderização de conteúdo pelo
content_formatdo backend:md(viamarked, sempre sanitizado com DOMPurify depois),html(caminho anterior), wikilinks[[nota]], frontmatter como grade de propriedades e callouts. Detalhes noCHANGELOG.md. - Páginas e componentes exportados pelo barrel (
src/index.ts) para hosts que queiram montar peças fora doKBApp:KBBrowse,KBArticleView,KBCuration,KBBlocks,KBDomainsSettings,KBTenantSettings,KBArticleEditor,KBCategoryTree,KBQuickSwitcher,KBBacklinksPanel, entre outros. ClientKnowledgeBaseTab(pages/embed.tsx) — a KB de um cliente embutida na tela do host (aba);clientIdé obrigatório nesse ponto de montagem.KBContext/useKBContext,useKBRouting(History API, semreact-router; modos"query"e"path"),createKBClient(wrapper defetchcom Bearer viagetToken()), i18npt-BR/en-USetheme/tokens.css(custom properties--kb-*).
Uso
import { KBApp } from '@tmf/kb-front'
import '@tmf/kb-front/styles.css' // tokens --kb-* — sem isso a KB renderiza sem estilo
<KBApp
baseUrl="/api"
getToken={() => auth.token}
tenantId={tenant.id}
can={(permission) => hasPermission(permission)} // recebe 'kb:view', 'kb:edit', 'kb:admin'…
/>
⚠️ baseUrl é o prefix= usado pelo host em app.include_router(kb_module.router, prefix=...) — nunca esse prefixo + /kb, porque toda rota do backend já declara
/kb/... no próprio path (com baseUrl="/api/kb" saem requests em /api/kb/kb/..., 404
em tudo). Ver ../back/INTEGRATION.md §5.
⚠️ tenantId é só contexto da UI: o backend resolve o tenant pelo token (via get_scope
do host) e nunca lê tenant do request. O recorte por cliente (clientId) viaja como
client_id em query e é validado pelo backend contra o escopo do principal (pedir cliente
alheio é 403).
Peer dependencies: react/react-dom e @tiptap/react, @tiptap/starter-kit,
@tiptap/pm (o editor usa a instância do host). Faixas em package.json.
Testes
cd packages/kb/front && npm ci
npm run typecheck && npm test # vitest + Testing Library
Documentação
| Arquivo | Conteúdo |
|---|---|
INTEGRATION.md |
Manual do consumidor do front (montagem, props, roteamento, checklist) |
../back/INTEGRATION.md |
Manual do backend tmf-kb-back (pré-requisitos, montagem, rota canônica, env vars, checklist, troubleshooting) |
../back/README.md |
Visão do backend |
Dependencies
Dependencies
| ID | Version |
|---|---|
| @dnd-kit/core | ^6.0.0 |
| @dnd-kit/sortable | ^10.0.0 |
| @tanstack/react-query | ^5.0.0 |
| dompurify | ^3.0.0 |
| lucide-react | ^0.400.0 |
| marked | ^17.0.3 |
Development dependencies
| ID | Version |
|---|---|
| @testing-library/jest-dom | ^6.0.0 |
| @testing-library/react | ^16.0.0 |
| @tiptap/pm | ^3.27.3 |
| @tiptap/react | ^3.27.3 |
| @tiptap/starter-kit | ^3.27.3 |
| @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 |
|---|---|
| @tiptap/pm | >=3.0.0 |
| @tiptap/react | >=3.0.0 |
| @tiptap/starter-kit | >=3.0.0 |
| @tmf/design-tokens | >=0.6.0 |
| react | >=18.0.0 |
| react-dom | >=18.0.0 |