---
title: "ADR - Lightweight Filter Drawer Adapter Entrypoint for @praxisui/table"
slug: "adr-table-filter-drawer-adapter-light-entrypoint-2026-03"
description: "Decisao de arquitetura para expor um sub-entrypoint leve de filter drawer adapter em @praxisui/table e reduzir impacto de bundle inicial em apps host."
doc_type: "adr"
document_kind: "adr-record"
category: "architecture"
audience:
  - "frontend"
  - "architect"
  - "platform-team"
level: "advanced"
status: "implemented"
owner: "praxis-ui"
tags:
  - "table"
  - "filter"
  - "drawer"
  - "adapter"
  - "bundle"
  - "entrypoint"
toc: true
sidebar: true
last_updated: "2026-03-06"
---

# ADR: Lightweight Filter Drawer Adapter Entrypoint for `@praxisui/table`

## Status

`implemented`

## Context

Hosts que registram `FILTER_DRAWER_ADAPTER` no bootstrap podem carregar partes desnecessarias do pacote no `initial bundle`.

No estado atual:
- O token `FILTER_DRAWER_ADAPTER` e o contrato leve publicado vivem em `projects/praxis-table/filter-drawer-adapter/src/filter-drawer-adapter.ts`.
- O barrel raiz (`projects/praxis-table/src/public-api.ts`) exporta tabela, filtro, editores e recursos adicionais.

Resultado observado no issue cross-lib:
- inflacao relevante de bundle inicial com adapters ativos.

## Decision

Adotar sub-entrypoint leve para o contrato do adapter:

- Novo path de consumo recomendado: `@praxisui/table/filter-drawer-adapter`
- Exportar somente:
  - `FILTER_DRAWER_ADAPTER`
  - `FilterDrawerAdapter`
  - contratos minimos relacionados ao adapter

Compatibilidade:
- manter um unico caminho publico para consumo host via sub-entrypoint leve.
- atualizar docs/boilerplates para usar o subpath leve.

## Non-goals

- Alterar comportamento de `PraxisFilter` em runtime.
- Redesenhar o contrato funcional do adapter.

## Implementation Outline

1. Criar entrypoint secundario focado em adapter/token.
2. Publicar o subpath via secondary entrypoint do `ng-packagr`.
3. Atualizar docs de integracao e boilerplates para usar subpath leve.
4. Medir bundle no host de referencia antes/depois.

## Acceptance Criteria

- Subpath novo publicado e adotavel em host.
- Documentacao atualizada com recomendacao canonica.
- Reducao relevante do `initial bundle` com adapters ativos (meta orientadora: `-40%` sobre baseline atual).

Estado atual dos criterios:
- Publicacao do subpath: concluida.
- Documentacao canonica: concluida.
- Benchmark de bundle no host de referencia: pendente.

## Implementation Status

- Implementado em `2026-03-06`:
  - secondary entrypoint `projects/praxis-table/filter-drawer-adapter`
  - export removido do barrel raiz `projects/praxis-table/src/public-api.ts`
  - docs/boilerplates atualizados para recomendar `@praxisui/table/filter-drawer-adapter`
- Validacao concluida nesta workspace:
  - build da lib e publicacao do subpath em `dist/praxis-table/filter-drawer-adapter`
- Medicao de bundle host:
  - pendente de benchmark reproduzivel do host de referencia nesta workspace

## Risks and Mitigations

- Risco: diferenca pequena de bundle em alguns perfis de build.
  - Mitigacao: capturar metricas por perfil (dev/prod) e registrar resultado real.
- Risco: divergencia entre token interno e token publicado no sub-entrypoint.
  - Mitigacao: garantir singleton compartilhado e validar identidade em spec dedicada.
- Risco: boilerplates permanecerem em path inconsistente.
  - Mitigacao: checklist de migracao em docs/templates e PRs de ajuste.

## Source References

- `projects/praxis-table/filter-drawer-adapter/src/filter-drawer-adapter.ts`
- `projects/praxis-table/src/public-api.ts`
- `docs/issues/drawer-adapters-bundle-entrypoints.md` (historico cross-lib)
