@thibezer/ui-components-kit 2.8.1 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/CHANGELOG.md +22 -103
  2. package/README.md +8 -32
  3. package/dist/botao.cjs +1 -1
  4. package/dist/botao.js +1 -1
  5. package/dist/camadas.cjs +110 -114
  6. package/dist/camadas.js +1177 -1343
  7. package/dist/campo-texto.cjs +1 -1
  8. package/dist/campo-texto.js +1 -1
  9. package/dist/canvas.cjs +63 -64
  10. package/dist/canvas.js +3544 -4025
  11. package/dist/card.cjs +1 -1
  12. package/dist/card.js +1 -1
  13. package/dist/components/ui-avatar/ui-avatar.d.ts +0 -11
  14. package/dist/components/ui-badge/ui-badge.d.ts +0 -2
  15. package/dist/components/ui-barra-ferramentas/ferramentas-comum.d.ts +22 -1
  16. package/dist/components/ui-barra-ferramentas/tipos.d.ts +31 -0
  17. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +17 -1
  18. package/dist/components/ui-barra-ferramentas/ui-ribbon.d.ts +17 -0
  19. package/dist/components/ui-camadas/camadas-arraste-controles.d.ts +0 -2
  20. package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +11 -4
  21. package/dist/components/ui-camadas/camadas-drag-drop.d.ts +1 -13
  22. package/dist/components/ui-camadas/camadas-host.d.ts +0 -1
  23. package/dist/components/ui-camadas/camadas-mapas-base.d.ts +1 -3
  24. package/dist/components/ui-camadas/camadas-selecao.d.ts +0 -12
  25. package/dist/components/ui-camadas/ui-camadas.d.ts +5 -8
  26. package/dist/components/ui-canvas-cad/cad-atributos-sync.d.ts +1 -2
  27. package/dist/components/ui-canvas-cad/cad-broadcast.d.ts +1 -1
  28. package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +8 -3
  29. package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +106 -39
  30. package/dist/components/ui-canvas-cad/cad-inicializador.d.ts +1 -3
  31. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +1 -15
  32. package/dist/components/ui-checkbox/ui-checkbox.d.ts +1 -4
  33. package/dist/components/ui-cores/tipos.d.ts +0 -2
  34. package/dist/components/ui-cores/ui-controle-cores.d.ts +3 -8
  35. package/dist/components/ui-cores/ui-seletor-cor.d.ts +1 -3
  36. package/dist/components/ui-mapa/ui-mapa-linha.d.ts +5 -12
  37. package/dist/components/ui-mapa/ui-mapa-marcador.d.ts +6 -15
  38. package/dist/components/ui-mapa/ui-mapa.d.ts +1 -14
  39. package/dist/components/ui-modal/modal-acessibilidade.d.ts +5 -5
  40. package/dist/components/ui-modal/ui-modal.d.ts +11 -1
  41. package/dist/components/ui-radio/radio-grupo-registry.d.ts +0 -10
  42. package/dist/components/ui-radio/ui-radio.d.ts +2 -9
  43. package/dist/components/ui-skeleton/ui-skeleton.d.ts +0 -9
  44. package/dist/components/ui-switch/ui-switch.d.ts +1 -3
  45. package/dist/components/ui-tabela/ui-tabela.d.ts +19 -1
  46. package/dist/components/ui-tooltip/ui-tooltip.d.ts +1 -24
  47. package/dist/core/index.d.ts +0 -1
  48. package/dist/core.cjs +1 -1
  49. package/dist/core.js +18 -28
  50. package/dist/cores.cjs +1 -1
  51. package/dist/cores.js +1 -1
  52. package/dist/custom-elements.json +13585 -18764
  53. package/dist/data.cjs +1 -1
  54. package/dist/data.js +2 -2
  55. package/dist/feedback.cjs +1 -1
  56. package/dist/feedback.js +2 -2
  57. package/dist/form-validacao-BIOXxt-1.js +140 -0
  58. package/dist/form-validacao-ytRYSF3E.cjs +1 -0
  59. package/dist/forms.cjs +1 -1
  60. package/dist/forms.js +2 -2
  61. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +1 -0
  62. package/dist/gerencigeo-canvas/feature_metricas.d.ts +9 -0
  63. package/dist/gerencigeo-canvas/feature_popup.d.ts +0 -2
  64. package/dist/gerencigeo-canvas/mapa_core.d.ts +0 -6
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.d.ts +0 -3
  67. package/dist/index.js +176 -179
  68. package/dist/mapa.cjs +16 -11
  69. package/dist/mapa.js +170 -242
  70. package/dist/modal.cjs +1 -1
  71. package/dist/modal.js +1 -1
  72. package/dist/register.cjs +1 -1
  73. package/dist/register.js +11 -11
  74. package/dist/svg-seguro-ChVJ2L2z.js +74 -0
  75. package/dist/svg-seguro-J2RM1Ssf.cjs +1 -0
  76. package/dist/tabela.cjs +1 -1
  77. package/dist/tabela.js +1 -1
  78. package/dist/tipos-elementos.d.ts +20 -48
  79. package/dist/tipos-react.d.ts +0 -2
  80. package/dist/tipos-vue.d.ts +15 -44
  81. package/dist/tools.cjs +1 -1
  82. package/dist/tools.js +1 -1
  83. package/dist/ui-badge-BxT-sDmV.cjs +28 -0
  84. package/dist/ui-badge-C0eKBI8E.js +183 -0
  85. package/dist/ui-botao-BOOnP8ds.cjs +12 -0
  86. package/dist/ui-botao-DfqSivHl.js +165 -0
  87. package/dist/ui-botao-OGJV6Vfk.js +165 -0
  88. package/dist/ui-botao-psS1juof.cjs +12 -0
  89. package/dist/ui-campo-texto-Cnn2UAkS.cjs +16 -0
  90. package/dist/{ui-campo-texto-B_OHVGiN.js → ui-campo-texto-Uu2dJE_0.js} +51 -51
  91. package/dist/ui-card-B86lJXTP.cjs +20 -0
  92. package/dist/{ui-card-BNYCQ7g-.js → ui-card-C_o5_0cB.js} +42 -50
  93. package/dist/ui-controle-cores-BS0WYPdi.js +572 -0
  94. package/dist/ui-controle-cores-Er6ZcQ7U.cjs +111 -0
  95. package/dist/ui-kit.css +1 -1
  96. package/dist/ui-modal-CvGFGh1h.cjs +18 -0
  97. package/dist/{ui-modal-BkYvNP0G.js → ui-modal-DBOtSTbR.js} +140 -116
  98. package/dist/ui-paleta-ferramentas-CEZYcN4J.js +624 -0
  99. package/dist/ui-paleta-ferramentas-CU4icLl0.js +1171 -0
  100. package/dist/{ui-paleta-ferramentas-bDLPbiGA.cjs → ui-paleta-ferramentas-Ccmo-rB5.cjs} +7 -7
  101. package/dist/ui-paleta-ferramentas-DLwZHIDv.cjs +21 -0
  102. package/dist/{ui-paleta-ferramentas-Ksh6gMW3.js → ui-paleta-ferramentas-DNN5i6nL.js} +329 -359
  103. package/dist/ui-paleta-ferramentas-Dbj1kBS9.cjs +18 -0
  104. package/dist/ui-paleta-ferramentas-DbwdWVtT.js +1173 -0
  105. package/dist/ui-paleta-ferramentas-bvqxj1Yd.cjs +21 -0
  106. package/dist/ui-segmented-D6b6zxVs.cjs +19 -0
  107. package/dist/ui-segmented-DyF5YLsV.js +418 -0
  108. package/dist/ui-segmented-rn9RxRGM.cjs +19 -0
  109. package/dist/{ui-linha-nCDh2wPm.js → ui-segmented-wUraId2e.js} +105 -200
  110. package/dist/ui-skeleton-DI4_9WOX.js +428 -0
  111. package/dist/{ui-skeleton-DiOxTBZK.cjs → ui-skeleton-SPYqku8P.cjs} +10 -10
  112. package/dist/{ui-skeleton-B2Rgrv8o.js → ui-skeleton-W9uwIceA.js} +191 -254
  113. package/dist/ui-skeleton-elhKIh2B.cjs +33 -0
  114. package/dist/{ui-switch-DO1R0Ce7.js → ui-switch-BcOqOkiV.js} +128 -187
  115. package/dist/ui-switch-D7iPKDj-.cjs +53 -0
  116. package/dist/ui-tabela-propriedades-BBr5sqki.cjs +145 -0
  117. package/dist/{ui-tabela-propriedades-DzZlyNZ_.cjs → ui-tabela-propriedades-BecPqC-e.cjs} +10 -10
  118. package/dist/{ui-tabela-propriedades-D9Echt2X.js → ui-tabela-propriedades-BokvDD3b.js} +826 -845
  119. package/dist/ui-tabela-propriedades-Boy7I5yW.js +2412 -0
  120. package/dist/ui-tabela-propriedades-C-PeuW1i.cjs +141 -0
  121. package/dist/ui-tabela-propriedades-Df9ajC6M.js +2648 -0
  122. package/dist/ui-toast-Bp_NlM5G.js +156 -0
  123. package/dist/ui-toast-DGTZKne5.cjs +20 -0
  124. package/dist/zero-js-triggers-C_KrvFOQ.js +244 -0
  125. package/dist/zero-js-triggers-C_gtaojZ.cjs +1 -0
  126. package/package.json +3 -3
  127. package/dist/acessibilidade-CSzX-DkG.cjs +0 -1
  128. package/dist/acessibilidade-CUlSXc2X.js +0 -38
  129. package/dist/altura-controle-ukMRPckR.cjs +0 -1
  130. package/dist/altura-controle-vxQiXG4q.js +0 -62
  131. package/dist/components/ui-barra-ferramentas/paleta-atalhos.d.ts +0 -16
  132. package/dist/components/ui-barra-ferramentas/paleta-pressao-longa.d.ts +0 -24
  133. package/dist/components/ui-barra-ferramentas/ribbon-render.d.ts +0 -14
  134. package/dist/components/ui-barra-ferramentas/ribbon-teclado.d.ts +0 -17
  135. package/dist/components/ui-camadas/camadas-colecao.d.ts +0 -27
  136. package/dist/components/ui-camadas/camadas-drop-ops.d.ts +0 -31
  137. package/dist/components/ui-camadas/camadas-hierarquia.d.ts +0 -10
  138. package/dist/components/ui-camadas/camadas-lembranca.d.ts +0 -34
  139. package/dist/components/ui-camadas/camadas-render.d.ts +0 -15
  140. package/dist/components/ui-camadas/camadas-renomear.d.ts +0 -12
  141. package/dist/components/ui-camadas/camadas-selecao-api.d.ts +0 -17
  142. package/dist/components/ui-camadas/camadas-thumb.d.ts +0 -1
  143. package/dist/components/ui-canvas-cad/cad-acessibilidade.d.ts +0 -15
  144. package/dist/components/ui-canvas-cad/cad-evento-coordenadas.d.ts +0 -22
  145. package/dist/components/ui-canvas-cad/cad-feicoes-camera.d.ts +0 -26
  146. package/dist/components/ui-canvas-cad/cad-feicoes-consulta.d.ts +0 -21
  147. package/dist/components/ui-canvas-cad/cad-feicoes-dados.d.ts +0 -39
  148. package/dist/components/ui-canvas-cad/cad-feicoes-desenho.d.ts +0 -68
  149. package/dist/components/ui-canvas-cad/cad-feicoes-edicao.d.ts +0 -37
  150. package/dist/components/ui-canvas-cad/cad-feicoes-operacoes.d.ts +0 -48
  151. package/dist/components/ui-canvas-cad/cad-feicoes-ponteiro.d.ts +0 -28
  152. package/dist/components/ui-canvas-cad/cad-feicoes-selecao-regiao.d.ts +0 -22
  153. package/dist/components/ui-canvas-cad/cad-feicoes-tipos.d.ts +0 -53
  154. package/dist/components/ui-canvas-cad/cad-feicoes-versoes.d.ts +0 -33
  155. package/dist/components/ui-canvas-cad/cad-leaflet-adaptador.d.ts +0 -5
  156. package/dist/components/ui-canvas-cad/cad-selecao-pontos.d.ts +0 -5
  157. package/dist/components/ui-canvas-cad/tipos.d.ts +0 -37
  158. package/dist/components/ui-linha/index.d.ts +0 -1
  159. package/dist/components/ui-linha/ui-linha.d.ts +0 -48
  160. package/dist/components/ui-mapa/mapa-atributos.d.ts +0 -14
  161. package/dist/components/ui-mapa/mapa-basemaps.d.ts +0 -7
  162. package/dist/components/ui-mapa/mapa-icones.d.ts +0 -4
  163. package/dist/components/ui-mapa/mapa-leaflet.d.ts +0 -5
  164. package/dist/components/ui-mapa/mapa-vinculo-pai.d.ts +0 -22
  165. package/dist/components/ui-mapa/tipos.d.ts +0 -13
  166. package/dist/components/ui-modal/modal-foco.d.ts +0 -28
  167. package/dist/components/ui-tabela/tabela-estados.d.ts +0 -16
  168. package/dist/components/ui-tabela/tabela-rolagem.d.ts +0 -44
  169. package/dist/components/ui-tabela/tabela-teclado.d.ts +0 -16
  170. package/dist/components/ui-tooltip/tooltip-popover.d.ts +0 -7
  171. package/dist/components/ui-tooltip/tooltip-posicionamento.d.ts +0 -29
  172. package/dist/core/altura-controle.d.ts +0 -34
  173. package/dist/core/opcoes.d.ts +0 -9
  174. package/dist/core/rotulo-controle.d.ts +0 -13
  175. package/dist/form-validacao-BlQFxUVj.js +0 -104
  176. package/dist/form-validacao-DIeyQVH5.cjs +0 -1
  177. package/dist/gerencigeo-canvas/popup_gate.d.ts +0 -30
  178. package/dist/gerencigeo-canvas/zoom_opcoes.d.ts +0 -10
  179. package/dist/opcoes-CJYLi6kd.js +0 -12
  180. package/dist/opcoes-CkyDxBuQ.cjs +0 -1
  181. package/dist/ui-badge-BWhoGgo9.js +0 -197
  182. package/dist/ui-badge-SIR81R9l.cjs +0 -28
  183. package/dist/ui-botao-D24oXySA.cjs +0 -12
  184. package/dist/ui-botao-Dsj08jjw.js +0 -165
  185. package/dist/ui-campo-texto-DauJCde3.cjs +0 -16
  186. package/dist/ui-card-BrjBL-yo.cjs +0 -20
  187. package/dist/ui-controle-cores-DgEza3wF.js +0 -612
  188. package/dist/ui-controle-cores-uY__TgwW.cjs +0 -117
  189. package/dist/ui-linha-C6HBnsaw.cjs +0 -19
  190. package/dist/ui-modal-CUNbpbZ1.cjs +0 -18
  191. package/dist/ui-switch-D9a8XlVX.cjs +0 -53
package/CHANGELOG.md CHANGED
@@ -1,108 +1,27 @@
1
1
  # Changelog
2
2
 
3
- ## 2.8.1 — 2026-10-21
4
-
5
- ### `<ui-canvas-cad>`: popups e câmera só a pedido (como CAD/GIS)
6
-
7
- - **Popups sob demanda (mudança de comportamento):** clicar numa feição, vértice, linha ou polígono **não abre mais o popup nem move o mapa** (o Leaflet abria no clique e fazia auto-pan). Abrem com **duplo clique** sobre a camada, por `abrirPopupFeicao(camadaId, id)` ou, no código, por `marcador.openPopup()` fora de um clique. Popups abertos a pedido não fazem auto-pan. Novo atributo/propriedade `popups`: `sob-demanda` (padrão), `automatico` (comportamento antigo: abre ao selecionar uma feição, com auto-pan e `definirMargensPopup`) e `desligado` (clique e duplo clique não abrem). A consulta SIGEF segue abrindo ao clicar (é um pedido explícito). No modo sob demanda, terminar a edição de vértices não reabre o popup.
8
- - **Implementação:** `popup_gate.ts` (`PortaoPopups`, `liberarPopups`, `lerModoPopups`) intercepta `map.addLayer` só para popups e separa clique do mouse de abertura pelo código; `FeicaoPopup` aceita `liberar`; `PonteiroFeicoes.duploClique` e `GerenciadorFeicoes.abrirPopupFeicao`/`aoDuploClique`.
9
- - **`selectPonto(id)` / `selecionarPonto(id)`:** só seleciona. Antes recentralizava o mapa sempre e abria o popup; agora isso acontece apenas com `zoomLevel` informado (pedido de "ir até o ponto").
10
- - **Zoom em passos finos:** `zoomSnap: 0.25`, `zoomDelta: 0.5`, `wheelPxPerZoomLevel: 90` (antes 1, 1 e 60: cada giro da roda saltava um nível inteiro). Zoom fracionário é aceito por simplificação, clusters, densidade e pré-carga de tiles.
11
- - **Botão do meio:** o duplo clique que enquadra (`zoomExtents`) agora exige dois cliques limpos; dois arrastes rápidos em sequência (pan) não enquadram mais.
12
- - **Toque:** removido o zoom próprio da pinça (passos de 1 nível, em paralelo ao `touchZoom` do Leaflet, que também reagia ao mesmo gesto). Um dedo continua arrastando.
13
- - **Não mudou:** `zoomParaFeicao(s)`, `ajustarTudo`, `ajustarCamada`, `fitBounds`, clique em cluster, ação "zoom" do popup e o botão "Enquadrar" seguem como pedidos explícitos. `zoomExtents` continua considerando só os vértices (não as feições).
14
-
15
- ### `<ui-camadas>`: busca, espaço da lista e documentação de eventos
16
-
17
- - **Busca por nome de camada (correção):** o campo "Buscar camada ou feição" só filtrava feições; buscar `eixos` deixava todas as camadas na tela com "Nenhum item correspondente", inclusive a que casava. Agora a árvore mostra só camadas que casam (pelo nome) ou que levam a um resultado, mantendo os grupos ancestrais; um grupo que casa traz suas subcamadas; sem resultado há uma mensagem única (termo escapado). Nova função pura `filtrarCamadasPorBusca()` em `camadas-selecao.ts`; a seleção em intervalo (`Shift`) segue as mesmas linhas.
18
- - **Mapa base recolhível:** novo atributo/propriedade `mapas-base-recolhido` / `mapasBaseRecolhido`, e o cabeçalho "Mapa Base" vira botão (`aria-expanded`) que mostra o mapa ativo. Novo evento `ui-mapas-base-recolhimento` (`{ recolhido }`), só para ação do usuário. Padrão inalterado (aberta).
19
- - **Espaço da lista:** `.ui-panel-box` passa de `min-height: 80px` para `140px`, para a árvore não ficar espremida por rodapé e mapas base em painéis `docked` baixos (o corpo rola abaixo disso).
20
- - **Documentação:** `ui-camada-grupo-adicionar` é emitido com `{ isGroup: true }` (o README dizia `{ grupoId, nome }`); `ui-camada-adicionar` (`{}` ou `{ parentId }`) passa a constar na tabela. Ambos são pedidos: sem handler no aplicativo, os botões não criam nada.
21
-
22
- ## 2.8.0 — 2026-10-17
23
-
24
- ### Controles na mesma linha: altura única e `<ui-linha>`
25
-
26
- - **Novo `<ui-linha>`** (L3): contêiner que alinha botão, campo, lista, segmented e badge na mesma linha. `tamanho`/`densidade` (`sm|md|lg`), `altura`, `alinhar`, `justificar`, `espaco`, `sem-quebra`, `inline`; filhos ganham largura natural (botão e campo deixam de ocupar 100%), campos e listas ocupam o espaço restante e qualquer filho aceita `expandir`.
27
- - **`tamanho`, `densidade` e `altura` agora funcionam** em `ui-botao`, `ui-campo-texto`, `ui-lista-flutuante` e `ui-segmented` (o README já os documentava, mas só `altura` tinha efeito). Lógica única em `src/core/altura-controle.ts` (exportada em `core`): entrada hostil é descartada, `altura` é limitada a 15–200px.
28
- - **`ui-segmented` segue `--ui-campo-altura`** (antes tinha alturas fixas de 28/36/42px, o que o desalinhava do botão e do campo). O host passou a `inline-flex` com `vertical-align: middle`. `tamanho` inválido não vira mais classe CSS arbitrária (cai em `md`).
29
- - **Escala de tokens** `--ui-altura-sm|md|lg` (26/34/42px). **Mudança de comportamento:** a altura padrão dos controles passou de 15px para `--ui-altura-md` (34px), o valor que o README já descrevia como padrão. Quem quiser o antigo define `--ui-campo-altura: 15px`.
30
- - **`ui-badge[controle]`** assume a altura dos controles (e o alvo de toque mínimo no mobile).
31
- - Hosts `inline` de botão, campo e lista ganharam `vertical-align: middle`.
32
- - Teste de contrato `tests/contrato-linha.test.ts` + regressões; guia em `docs/layout-linha.md`.
33
-
34
- ## 2.7.0 — 2026-10-17
35
-
36
- ### `UIBus`: independente do componente de toast
37
-
38
- - `src/core/ui-bus.ts` (L1) deixou de importar `ui-alerta` (L3). Novo `UIBus.registrarProvedorToast(fn | null)`; o `ui-toast` se registra sozinho ao ser carregado (`registrarToastNoBus()`).
39
- - **Mudança de comportamento:** quem importar apenas `core/ui-bus` sem carregar `ui-alerta` (ou o pacote principal) passa a ter `UIBus.notificar()` como no-op, sem erro. Exceções do provedor são capturadas (`console.error`).
40
- - Contratos `UIToastOpcoes`/`UIToastAcao` movidos para `src/core/tipos-toast.ts` e reexportados por `ui-alerta` (nomes públicos inalterados).
41
-
42
- ### `<ui-ribbon>`, `<ui-paleta-ferramentas>` e `<ui-tabela>`: organização interna
43
-
44
- - **Sem mudança de comportamento nem de API.** Teclado, renderização, clique longo, atalhos, rolagem de linhas e estados (erro, anúncio do filtro, aria) passam a viver em módulos próprios com testes unitários.
45
-
46
- ### Componentes simples e de formulário: robustez e acessibilidade
47
-
48
- - **`<ui-skeleton>`:** `linhas` é limitado a 100 (um valor enorme derrubava a página). Decorativo por padrão (`aria-hidden`); com `aria-label` vira `role="status"`.
49
- - **Classes por atributo:** `variante`, `cor`, `peso`, `alinhamento` (`ui-texto`), `elevacao` (`ui-stat`, `ui-card`), `variante`/`estilo` (`ui-badge`) só aceitam valores conhecidos; qualquer outro usa o padrão (antes, o texto virava classes CSS arbitrárias).
50
- - **`<ui-avatar>`:** host com `role="img"` e `aria-label` (nome, e o status quando houver) ou `aria-hidden` sem nome; **a imagem interna agora tem `alt=""`** (antes `alt` = nome ou "Avatar"). `aria-label`/`aria-hidden` do consumidor são respeitados. Tamanho numérico aceito entre 8 e 512 px.
51
- - **`<ui-stat>`:** grupo rotulado e indicador de variação como imagem nomeada. **`<ui-card clicavel>`:** `role="button"`, `aria-disabled`. **`<ui-badge>`:** `disabled` desativa o ✕; nome acessível "Remover …".
52
- - **`<ui-radio>`:** o grupo agora acompanha `setAttribute('name')` depois de conectado, mudança de nome e remoção do formulário; o primeiro radio habilitado entra na ordem de Tab.
53
- - **`<ui-checkbox>`, `<ui-switch>`, `<ui-radio>`:** `focus()` no host foca o controle; checkbox e radio passam a respeitar `<label for>`, `<label>` envolvente e `aria-label` (como o switch).
54
-
55
- ### `<ui-tooltip>` e `<ui-modal>`: correções de comportamento
56
-
57
- - **`<ui-tooltip>`:** o clique no gatilho deixa de ser interrompido (`stopPropagation`) e volta a chegar aos ouvintes de ancestrais; `disabled` fecha o balão aberto (e `aberto` + `disabled` não o mostra); ambientes sem `matchMedia` não lançam; o quadro de animação do posicionamento é cancelado ao fechar/desconectar.
58
- - **`<ui-modal>`:** `Shift+Tab` no botão de fechar agora leva ao último controle do conteúdo (antes o foco escapava do modal); `Tab` no último controle volta ao primeiro. O foco real é lido atravessando Shadow DOMs.
59
- - Ouvintes globais de ambos passam a ser gerenciados por `ListenerBag`. Sem mudança de API.
60
-
61
- ### `<ui-camadas>`: arrastos interrompidos e organização interna
62
-
63
- - Desconectar o painel durante a pintura de controles (olho, cadeado, seleção) deixava `user-select: none` no `body` da página e ouvintes em `window`; o gesto agora é cancelado. O mesmo vale para o arraste por toque de camadas.
64
- - Dados com ciclo de `parentId` não travam mais a verificação de descendência ao aninhar camadas por arraste.
65
- - **Sem mudança de API.** Código dividido em módulos de responsabilidade única (renderização, seleção, lembrança, coleções, regras de soltar, renomear, miniaturas e hierarquia).
66
-
67
- ### `<ui-mapa>`, `<ui-mapa-marcador>` e `<ui-mapa-linha>`: robustez e acessibilidade
68
-
69
- - **Segurança:** `cor` do `<ui-mapa-marcador>` era interpolada em HTML/estilo do ícone (injeção de atributo). O ícone agora é montado com DOM e `cor` só aceita hex, `rgb()`/`hsl()` ou nome de cor; outro valor usa a cor padrão (`#00f5a0`; `#3388ff` na linha).
70
- - `lat`, `lng` e `zoom` inválidos (ou fora de -90..90, -180..180, 0..22) caem no padrão em vez de lançar; `espessura` inválida usa 3.
71
- - Desconectar o `<ui-mapa>` antes de o Leaflet carregar não cria mais um mapa órfão. `<ui-mapa-linha>` reaparece quando o mapa é recriado e ignora pares inválidos em `pontos`.
72
- - **Acessibilidade:** o mapa é uma região com nome (`aria-label` do host, padrão "Mapa"; o atributo passa a ser observado); marcadores são focáveis por teclado (`role=button`) e usam `titulo` como nome acessível.
73
-
74
- ### `<ui-canvas-cad>`: organização interna e acessibilidade
75
-
76
- - **Sem mudança de API.** `GerenciadorFeicoes` virou fachada sobre módulos de responsabilidade única (`cad-feicoes-dados`, `-operacoes`, `-versoes`, `-camera`, `-desenho`, `-edicao`, `-consulta`, `-ponteiro`, `-selecao-regiao`, `-tipos`); tipos do Leaflet em `tipos.ts`, `cad-leaflet-adaptador.ts` e `cad-selecao-pontos.ts` substituem casts `as any`.
77
- - **Acessibilidade:** o canvas é uma região nomeada ("Mapa CAD"), a barra rápida é uma `toolbar` com botões nomeados, o botão de snap expõe `aria-pressed` e uma região viva anuncia a seleção ("2 feições selecionadas") e a ferramenta ativa.
78
-
79
- ### Ferramentas de arquitetura
80
-
81
- - `scripts/check-layers.mjs` verifica o DAG L0→L5 resolvendo imports (estáticos, de efeito colateral, re-exports e dinâmicos); `npm run gate` / `gate:full` agrupam as verificações.
82
-
83
- ## 2.6.1 — 2026-10-17
84
-
85
- ### `<ui-controle-cores>` e `<ui-seletor-cor>`: revisão de erros e visual
86
-
87
- **Correções**
88
-
89
- - O botão "sem cor" ficava por cima da amostra do traço e roubava os cliques da metade inferior esquerda dela. As ações (inverter, sem cor, restaurar padrão) agora ficam numa coluna ao lado das amostras, cada uma com a própria área de clique, sem sobreposição.
90
- - `desabilitado` agora desativa todos os botões (antes só bloqueava o mouse: Tab + Enter ainda inverter/limpar/restaurar) e fecha um seletor aberto; remover o atributo reativa o controle.
91
- - Trocar o alvo pelo controle (`alternarAlvo()`, `definirAlvo()`, clique na outra amostra) agora acompanha a aba do seletor aberto, em vez de deixá-las divergentes.
92
- - `fecharSeletor(false)` agora cancela de verdade: as cores iniciais voltam (com um `ui-cores-change` não confirmado) em vez de ficar a pré-visualização aplicada sem nenhuma confirmação.
93
- - `ui-alvo-change` não é mais emitido em duplicidade no documento (o painel do seletor deixou de repassá-lo ao abrir pelo popover; use `aoTrocarAlvo`).
94
- - Espaço/Enter na amostra ativa com o seletor aberto fecham como o clique, e o Espaço não fecha mais o painel recém-aberto em navegadores que disparam o clique ao soltar a tecla.
95
-
96
- **Acessibilidade**
97
-
98
- - `abrirSeletorCor({ focar: true })` leva o foco ao painel (o controle usa ao abrir por teclado); ao fechar, o foco volta para a âncora. O painel ganha `aria-label` e as amostras da paleta `aria-pressed`.
99
- - O grupo de amostras é anunciado como "Cores de desenho"; a dica/`aria-label` do preenchimento informa a opacidade.
100
-
101
- **Visual**
102
-
103
- - Amostras maiores (`--ui-controle-cores-amostra`, padrão 26px), coluna de ações alinhada, ícone "padrão" refeito e anel de foco visível.
104
- - Ambos os componentes passam a usar os tokens do kit (`--ui-cor-texto`, `--ui-cor-borda`, `--ui-cor-primaria`…) e acompanham o tema claro; antes eram fixos no escuro.
105
- - Seletor: trilha da opacidade preenchida até o valor, rótulos ORIGINAL/NOVA sempre legíveis, diagonal de "sem cor" igual à do controle, aba de preenchimento "sem cor" com a diagonal vermelha, `prefers-reduced-motion` respeitado e painel reposicionado ao redimensionar a janela.
3
+ ## 2.8.2 — 2026-10-23
4
+
5
+ ### Canvas de feições: medidas no elipsoide GRS80
6
+
7
+ - **Distância, comprimento e área** (`feature_metricas`) deixam a esfera de 6371 km: distância pela escala local do elipsoide (M e N) até 0,1° e Vincenty acima disso; área por Σ(λ[i+1]−λ[i−1])·sen φ·M·N/2. Antes o erro chegava a 0,5% na distância e 0,45% na área; agora fica abaixo de 0,01% na área e de 2e-7 na distância curta (linha Flinders–Buninyong confere em milímetros).
8
+ - **Deslocamentos, offsets e alça de borda do círculo** (`feature_algoritmos`, `feature_edicao_ops`) usam a mesma escala (`metrosPorGrau`, exportada), para o raio lido da alça bater com o desenhado.
9
+
10
+ ### `<ui-ribbon>` e `<ui-paleta-ferramentas>`: pendências de UX, acessibilidade e robustez
11
+
12
+ - **Harmonização de bordas, raios e alinhamento vertical no Ribbon**: botões pequenos agora utilizam `--ui-raio-sm` (4px) com `padding: 0 8px` proporcional; colunas de ferramentas recebem `gap: 2px` evitando colisão de cantos arredondados entre itens adjacentes; botões grandes têm altura calibrada em 76px (equivalente a 3 slots de 24px + gaps) com área de itens centrada verticalmente; grupos sem rótulo não geram nó vazio, eliminando o espaçamento inferior fantasma e garantindo margens perfeitamente simétricas.
13
+ - **Tooltip estilizado leve (M2)**: substituição do `title` nativo do browser por tooltip no Shadow DOM exibido em `focus-visible` e `pointerover`, com renderização do atalho formatado (`kbd`). Remoção de `aria-label` duplicado em botões que já possuem rótulo visível.
14
+ - **Colapso automático de grupos no Ribbon (A4)**: suporte a `prioridade` em `RibbonGrupo` e colapso dinâmico via `ResizeObserver` quando o espaço é insuficiente, transformando o grupo em botão único com flyout (estilo Office).
15
+ - **Botão dividido e Lançador de Diálogo (M4)**: suporte a `item.dividido` no ribbon (ação primária + gatilho de menu independente) e botão lançador de diálogo opcional (`grupo.lancadorDialogo`) com emissão do evento `ui-grupo-dialogo`.
16
+ - **Atalhos compostos e escopo multi-paletas (M7/B9)**: suporte a atalhos combinados (`Ctrl+Z`, `Shift+V`, `Esc`, etc.) via `correspondeAtalho`. No ribbon, suporte ao atributo `atalhos` e `keytips` (Alt). Conflito entre múltiplas paletas com atalhos na mesma página resolvido via escopo de foco (`:focus-within`) e ordenação DOM.
17
+ - **Navegação em grade de 2 colunas (M9)**: em paletas verticais com `colunas="2"`, navegação bidimensional intuitiva com `ArrowUp`, `ArrowDown`, `ArrowLeft` e `ArrowRight` respeitando a ordem visual e layout RTL.
18
+ - **Ativação manual de abas (M10)**: atributo opt-in `ativacao-manual` e propriedade `ativacaoManual` no ribbon, onde setas apenas transferem o foco do teclado e Enter/Espaço ativam a aba.
19
+ - **Fechamento de menu no window blur (M8)**: removido fechamento indevido em `window blur` para permitir inspeção no DevTools e troca de janelas; menus fecham apenas por clique fora, `Escape` ou rolagem.
20
+ - **Exclusividade configurável de ferramentas no Ribbon (B8)**: suporte a `tipo: 'ferramenta'` com seleção única por grupo e propriedade `grupo.exclusivo` (padrão `true`, `false` para múltipla ativação).
21
+ - **Submenus aninhados**: suporte a múltiplos níveis de `filhos` dentro de `filhos` na paleta e no ribbon, com abertura/fechamento via `ArrowRight` e `ArrowLeft` (respeitando RTL).
22
+ - **Modo controlado sem mutação de dados (A1)**: propriedade `modoControlado` e atributos `modo-controlado` / `copiar-dados` para clonagem profunda na entrada, garantindo que objetos do consumidor não sofram mutações.
23
+ - **IDs em SVG inline e allowlist (B1)**: prefixagem de IDs em `<defs>` de ícones SVG (`url(#...)` e `href`) no `svg-seguro.ts` para evitar colisões no DOM, e aviso em console para elementos descartados pela allowlist.
24
+ - **SSR e prevenção de layout shift (B9)**: reserva de altura mínima no `:host` do ribbon para evitar Cumulative Layout Shift (CLS) antes da hidratação.
106
25
 
107
26
  ## 2.6.0 — 2026-10-17
108
27
 
package/README.md CHANGED
@@ -150,7 +150,7 @@ Configurações simples passadas diretamente nas tags:
150
150
 
151
151
  ### 📏 Ajuste de Altura e Dimensionamento Inteligente (Zero Atrito)
152
152
 
153
- Os campos de texto (`<ui-campo-texto>`), listas flutuantes/selects (`<ui-lista-flutuante>`, `<ui-select>`), botões (`<ui-botao>`) e o controle segmentado (`<ui-segmented>`) leem **a mesma variável**, `--ui-campo-altura`, e por isso têm sempre a mesma altura lado a lado. Há 5 formas de ajustá-la:
153
+ Os campos de texto (`<ui-campo-texto>`), listas flutuantes/selects (`<ui-lista-flutuante>`, `<ui-select>`) e botões (`<ui-botao-primario>`) possuem 4 formas flexíveis de ajuste de altura:
154
154
 
155
155
  #### 1. Via Atributo de Tamanho Predefinido (`tamanho` ou `densidade`):
156
156
  ```html
@@ -194,29 +194,6 @@ UIBus.definirDensidade('relaxada'); // 42px
194
194
  UIBus.definirDensidade(38); // Valor numérico em px customizado
195
195
  ```
196
196
 
197
- #### 5. Via Contêiner de Linha (`<ui-linha>`): a forma de menor esforço
198
- Quando vários controles ficam na mesma linha, envolva-os em `<ui-linha>`: um único atributo define a altura de todos, e o contêiner cuida de alinhamento, espaço, quebra e largura (botão e campo deixam de ocupar 100%).
199
-
200
- ```html
201
- <ui-linha tamanho="sm" justificar="entre">
202
- <ui-segmented valor="todos"><span valor="todos">Todos</span><span valor="abertos">Abertos</span></ui-segmented>
203
- <ui-campo-texto placeholder="Buscar..."></ui-campo-texto> <!-- ocupa o espaço que sobrar -->
204
- <ui-botao variante="primario">Adicionar</ui-botao>
205
- <ui-badge controle>Carlos</ui-badge> <!-- [controle]: badge com a altura dos controles -->
206
- </ui-linha>
207
- ```
208
-
209
- | Atributo (`ui-linha`) | Valores | Padrão |
210
- | :--- | :--- | :--- |
211
- | `tamanho` / `densidade` | `sm` (26px), `md` (34px), `lg` (42px); também `compacta`, `padrao`, `relaxada` | herda do token global |
212
- | `altura` | `40`, `40px`, `2.5rem` (vence `tamanho`) | - |
213
- | `alinhar` | `centro`, `inicio`, `fim`, `esticar` (use `fim` quando um campo tem rótulo acima) | `centro` |
214
- | `justificar` | `inicio`, `centro`, `fim`, `entre`, `ao-redor` | `inicio` |
215
- | `espaco` | `nenhum`, `xs`, `sm`, `md`, `lg` | `sm` |
216
- | `sem-quebra` / `inline` | booleanos | a linha quebra |
217
-
218
- Regras do contrato: o filho com `tamanho`/`altura` próprio vence só ele; `expandir` em qualquer filho faz ocupar o espaço restante; CSS do consumidor (`style`, classe) vence as regras do contêiner. Tokens: `--ui-altura-sm|md|lg` (escala), `--ui-campo-altura` (valor efetivo), `--ui-linha-espaco`, `--ui-linha-campo-base`. No mobile (≤ 640px) todos os controles sobem para no mínimo 38px (alvo de toque), sem exceção, para continuarem alinhados. Mais detalhes em [`docs/layout-linha.md`](docs/layout-linha.md).
219
-
220
197
  ---
221
198
 
222
199
  ### 2. Propriedades JavaScript (Dados Complexos)
@@ -731,9 +708,8 @@ window.addEventListener('message', (event) => {
731
708
  | `<ui-checkbox>` | Caixa de seleção múltipla com estado indeterminado. | `marcado`, `indeterminado`, `name`, `value` | `ui-change` |
732
709
  | `<ui-radio>` | Opção única com agrupamento automático por nome. | `marcado`, `name`, `value` | `ui-change` |
733
710
  | `<ui-switch>` | Chave de alternância liga/desliga física instantânea. | `ativo`, `name`, `value` | `ui-change` |
734
- | `<ui-segmented>` | Controle segmentado de opções (Pills/Tabs deslizantes). | `opcoes`, `value`, `name`, `tamanho`, `altura` | `ui-change`, `ui-selecionar` |
735
- | `<ui-badge>` / `<ui-chip>` | Tags de status e chips com botão de remoção. | `variante`, `removivel`, `value`, `controle` | `ui-remove` |
736
- | `<ui-linha>` | Contêiner que alinha controles na mesma linha (altura única, espaço, quebra). | `tamanho`, `altura`, `alinhar`, `justificar`, `espaco`, `sem-quebra` | - |
711
+ | `<ui-segmented>` | Controle segmentado de opções (Pills/Tabs deslizantes). | `opcoes`, `value`, `name`, `tamanho` | `ui-change`, `ui-selecionar` |
712
+ | `<ui-badge>` / `<ui-chip>` | Tags de status e chips com botão de remoção. | `variante`, `removivel`, `value` | `ui-remove` |
737
713
  | `<ui-avatar>` | Avatar com fotos, iniciais e status online. | `nome`, `src`, `status`, `tamanho` | - |
738
714
 
739
715
  ### 🟣 Camada 3: Contêineres, Overlays, Dados & GIS
@@ -749,13 +725,13 @@ window.addEventListener('message', (event) => {
749
725
  | `<ui-stat>` | Cartão KPI de estatísticas, métricas e tendências. | `rotulo`, `valor`, `variacao`, `tendencia` (`alta`, `baixa`, `neutro`) | - |
750
726
  | `<ui-tabela>` | Tabela orientada a dados, virtualizada tipo Excel. **Teclado**: cabeçalhos ordenáveis são botões (Tab + Enter/Espaço, com `aria-sort`); nas linhas, ↑/↓, Home/End e PageUp/PageDown movem o foco e Enter/Espaço selecionam (`aria-current`). A seleção é mantida ao ordenar e filtrar. Nome acessível via `aria-label`. | `colunas`, `dados`, `src`, `densidade`, `aria-label` | `ui-sort`, `ui-column-resize`, `ui-linha-clique` (demais eventos: ver seção 4) |
751
727
  | `<ui-tabela-propriedades>` | Inspetor de propriedades técnicas padrão AutoCAD & Revit com cálculos matemáticos inline (+, -, *, /, ^, %), arraste de valor contínuo (scrubbing), splitter redimensionável e editores CAD. | `categorias`, `tipo-objeto`, `splitter-pos`, `modo-aplicar`, `filtro` | `ui-propriedade-alterada`, `ui-aplicar`, `ui-desfazer`, `ui-editar-tipo`, `ui-acao-clique`, `ui-quick-select`, `ui-calculadora` |
752
- | `<ui-ribbon>` | Barra de ferramentas em abas e grupos (estilo AutoCAD / Word / Excel): botões grandes e pequenos em colunas de 3, toggles, menus suspensos, abas contextuais, modo recolhido (duplo clique na aba) e navegação por teclado (roving tabindex). `aba-ativa` pode ser definido antes de `abas` (fica pendente); `aria-label` e `rotulo-abas` rotulam a toolbar e o tablist; `ui-ferramenta` é cancelável (`preventDefault()` reverte o toggle); `atalho` é só texto no ribbon. Use `id` únicos e `rotulo`/`rotuloAcessivel` em botões só de ícone. | `abas`, `aba-ativa`, `recolhido`, `compacto`, `aria-label`, `rotulo-abas` | `ui-ferramenta`, `ui-aba-change`, `ui-recolhido-change` |
753
- | `<ui-paleta-ferramentas>` | Paleta de ferramentas (estilo Illustrator / Photoshop): seleção exclusiva, grupos com flyout (clique longo, botão direito ou seta), 1 ou 2 colunas, vertical/horizontal e atalhos de teclado que percorrem o grupo. `valor` pode vir antes de `ferramentas` (pendente) e `valor = ''` / `limpar()` remove a seleção; `ui-ferramenta` dispara sempre e é cancelável (`preventDefault()` reverte), `ui-change`/`ui-selecionar` só quando a seleção muda (ouça um deles, não ambos). Atalhos: use `atalhos` em uma paleta por página. | `ferramentas`, `valor`, `orientacao`, `colunas`, `tamanho`, `atalhos`, `aria-label` | `ui-change`, `ui-selecionar`, `ui-ferramenta` |
754
- | `<ui-controle-cores>` | Par de cores de desenho (estilo Illustrator): preenchimento na frente, traço atrás, botões de inverter, "sem cor" e restaurar padrão, estado misto (`?`) e modo só traço. Clique no alvo ativo abre o `<ui-seletor-cor>`. Não registra atalhos: quem usa chama `alternarAlvo()`, `inverter()`, `semCor()`, `restaurarPadrao()` e pode exibir as teclas via `atalhos`. Tamanho ajustável com `--ui-controle-cores-amostra`. Entrada: `@thibezer/ui-components-kit/cores`. | `preenchimento`, `traco`, `opacidade`, `alvo`, `padrao-preenchimento`, `padrao-traco`, `titulo-seletor`, `so-traco`, `desabilitado`, `coresProjeto`, `definirCores()`, `definirMisto()` | `ui-cores-change` (`confirmado` false = pré-visualização), `ui-alvo-change` |
755
- | `<ui-seletor-cor>` | Painel de cor flutuante: abas Preenchimento/Traço (ou cor única), prévia antes × depois, hexadecimal, seletor do sistema, opacidade, cores do projeto, paleta e "sem cor". Abra com `abrirSeletorCor({ ancora, ... })`: um por vez, Esc/clique fora confirmam, Cancelar restaura, `X` alterna o alvo. | `abrirSeletorCor()`, `fecharSeletorCor()`, `configurar()`, `modo` (`duplo`, `simples`), `alvo`, `preenchimento`, `traco`, `cor`, `opacidade`, `mostrarOpacidade`, `misto`, `coresProjeto`, `paleta`, `focar` | `ui-cor-input`, `ui-cor-confirmar`, `ui-cor-cancelar`, `ui-alvo-change` |
728
+ | `<ui-ribbon>` | Barra de ferramentas em abas e grupos (estilo AutoCAD / Word / Excel): botões grandes e pequenos em colunas de 3, split buttons (`item.dividido`), toggles, exclusividade configurável (`grupo.exclusivo`), menus suspensos com submenus aninhados, lançador de diálogo (`grupo.lancadorDialogo`), colapso automático responsivo de grupos (`ResizeObserver` + `grupo.prioridade`), abas contextuais, ativação manual de abas (`ativacao-manual`), atalhos de teclado e KeyTips (`keytips`), modo controlado sem mutação (`copiar-dados`), tooltips estilizados e navegação por teclado (roving tabindex). | `abas`, `aba-ativa`, `recolhido`, `compacto`, `ativacao-manual`, `copiar-dados`, `atalhos`, `keytips`, `aria-label`, `rotulo-abas` | `ui-ferramenta`, `ui-aba-change`, `ui-recolhido-change`, `ui-grupo-dialogo` |
729
+ | `<ui-paleta-ferramentas>` | Paleta de ferramentas gráficas (estilo Illustrator / Photoshop): seleção exclusiva, grupos com flyout expansível e submenus aninhados, navegação em grade bidimensional para `colunas="2"`, suporte a atalhos compostos (`Ctrl+Z`, `Shift+V`, `Esc`) com isolamento multi-paleta, modo controlado sem mutação (`copiar-dados`), orientações vertical/horizontal e tooltips leves integrados no Shadow DOM. | `ferramentas`, `valor`, `orientacao`, `colunas`, `tamanho`, `atalhos`, `copiar-dados`, `aria-label` | `ui-change`, `ui-selecionar`, `ui-ferramenta` |
730
+ | `<ui-controle-cores>` | Par de cores de desenho (estilo Illustrator): preenchimento na frente, traço atrás, botões de inverter, "sem cor" e restaurar padrão, estado misto (`?`) e modo só traço. Clique no alvo ativo abre o `<ui-seletor-cor>`. Não registra atalhos: quem usa chama `alternarAlvo()`, `inverter()`, `semCor()`, `restaurarPadrao()` e pode exibir as teclas via `atalhos`. Entrada: `@thibezer/ui-components-kit/cores`. | `preenchimento`, `traco`, `opacidade`, `alvo`, `padrao-preenchimento`, `padrao-traco`, `titulo-seletor`, `so-traco`, `desabilitado`, `coresProjeto`, `definirCores()`, `definirMisto()` | `ui-cores-change` (`confirmado` false = pré-visualização), `ui-alvo-change` |
731
+ | `<ui-seletor-cor>` | Painel de cor flutuante: abas Preenchimento/Traço (ou cor única), prévia antes × depois, hexadecimal, seletor do sistema, opacidade, cores do projeto, paleta e "sem cor". Abra com `abrirSeletorCor({ ancora, ... })`: um por vez, Esc/clique fora confirmam, Cancelar restaura, `X` alterna o alvo. | `abrirSeletorCor()`, `fecharSeletorCor()`, `configurar()`, `modo` (`duplo`, `simples`), `alvo`, `preenchimento`, `traco`, `cor`, `opacidade`, `mostrarOpacidade`, `misto`, `coresProjeto`, `paleta` | `ui-cor-input`, `ui-cor-confirmar`, `ui-cor-cancelar`, `ui-alvo-change` |
756
732
  | `<ui-mapa>` | Mapa geográfico interativo com camadas OpenStreetMap. | `lat`, `lng`, `zoom`, `camadas` | - |
757
733
  | `<ui-camadas>` | Painel de camadas vetoriais CAD/GIS com hierarquia em árvore, barra de arraste vertical (`redimensionavel`), estabilidade de altura sem colapso, drag-and-drop, métricas geodésicas e persistência no LocalStorage. | `redimensionavel`, `altura`, `min-altura`, `max-altura`, `flutuante`, `colapsado`, `camada-ativa`, `persistir` | `ui-redimensionar-altura`, `ui-camada-selecionada`, `ui-camada-visibilidade`, `ui-camadas-reordenadas`, `ui-acao-massa` |
758
- | `<ui-canvas-cad>` | Mesa CAD/GIS para poligonais, vértices geodésicos e **feições genéricas** (ponto, linha, polígono, círculo, texto) que você cria: seleção por clique e caixa, popup, edição de vértices, snap, 15 ferramentas de desenho/medição, oficial × prévia, cursores remotos e culling/clusters para 100 mil feições. Linha multiparte, feição `oculta`, selo de texto e contorno de ponto. Nenhuma camada vem pronta. Guia: [`docs/guia-migracao-mapengine.md`](docs/guia-migracao-mapengine.md). | `pontos`, `segmentos`, `ferramentas`, `sem-camadas-padrao`, `sem-painel-camadas`, `sem-barra-rapida`, `sem-atalho-snap`, `aceitar-origem`, `popups`, `abrirPopupFeicao()`, `inicializarAgora()`, `definirFeicoes()`, `aplicarLote()`, `definirFerramenta()`, `editarVertices()`, `definirMargensHud()`, `definirEstilosExternos()`, `fitBounds()` | `ui-ponto-selecionado`, `cad-selecao`, `cad-feicao-selecionada`, `cad-feicao-criada`, `cad-feicao-atualizada`, `cad-feicao-hover`, `cad-feicao-menu`, `cad-snap`, `cad-previas` e outros (ver `docs/canvas-cad-eventos.md`) |
734
+ | `<ui-canvas-cad>` | Mesa CAD/GIS para poligonais, vértices geodésicos e **feições genéricas** (ponto, linha, polígono, círculo, texto) que você cria: seleção por clique e caixa, popup, edição de vértices, snap, 15 ferramentas de desenho/medição, oficial × prévia, cursores remotos e culling/clusters para 100 mil feições. Linha multiparte, feição `oculta`, selo de texto e contorno de ponto. Nenhuma camada vem pronta. Guia: [`docs/guia-migracao-mapengine.md`](docs/guia-migracao-mapengine.md). | `pontos`, `segmentos`, `ferramentas`, `sem-camadas-padrao`, `sem-painel-camadas`, `sem-barra-rapida`, `sem-atalho-snap`, `aceitar-origem`, `inicializarAgora()`, `definirFeicoes()`, `aplicarLote()`, `definirFerramenta()`, `editarVertices()`, `definirMargensHud()`, `definirEstilosExternos()`, `fitBounds()` | `ui-ponto-selecionado`, `cad-selecao`, `cad-feicao-selecionada`, `cad-feicao-criada`, `cad-feicao-atualizada`, `cad-feicao-hover`, `cad-feicao-menu`, `cad-snap`, `cad-previas` e outros (ver `docs/canvas-cad-eventos.md`) |
759
735
 
760
736
  #### `<ui-canvas-cad>`: montar só com API pública (2.1)
761
737
 
package/dist/botao.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const o=require("./ui-botao-D24oXySA.cjs");exports.UIBotao=o.UIBotao;exports.UIBotaoPrimario=o.UIBotaoPrimario;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const o=require("./ui-botao-BOOnP8ds.cjs");exports.UIBotao=o.UIBotao;exports.UIBotaoPrimario=o.UIBotaoPrimario;
package/dist/botao.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* empty css */
2
- import { U as t, a as i } from "./ui-botao-Dsj08jjw.js";
2
+ import { U as t, a as i } from "./ui-botao-DfqSivHl.js";
3
3
  export {
4
4
  t as UIBotao,
5
5
  i as UIBotaoPrimario