@thibezer/ui-components-kit 1.0.0

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 (249) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +624 -0
  3. package/dist/botao.cjs +1 -0
  4. package/dist/botao.d.ts +8 -0
  5. package/dist/botao.js +6 -0
  6. package/dist/camadas.cjs +296 -0
  7. package/dist/camadas.d.ts +14 -0
  8. package/dist/camadas.js +1857 -0
  9. package/dist/campo-texto.cjs +1 -0
  10. package/dist/campo-texto.d.ts +8 -0
  11. package/dist/campo-texto.js +11 -0
  12. package/dist/canvas.cjs +254 -0
  13. package/dist/canvas.d.ts +8 -0
  14. package/dist/canvas.js +3082 -0
  15. package/dist/card.cjs +1 -0
  16. package/dist/card.d.ts +7 -0
  17. package/dist/card.js +5 -0
  18. package/dist/components/ui-alerta/index.d.ts +2 -0
  19. package/dist/components/ui-alerta/ui-alerta-base.d.ts +23 -0
  20. package/dist/components/ui-alerta/ui-alerta.d.ts +2 -0
  21. package/dist/components/ui-alerta/ui-toast.d.ts +34 -0
  22. package/dist/components/ui-avatar/index.d.ts +1 -0
  23. package/dist/components/ui-avatar/ui-avatar.d.ts +12 -0
  24. package/dist/components/ui-badge/index.d.ts +1 -0
  25. package/dist/components/ui-badge/ui-badge.d.ts +20 -0
  26. package/dist/components/ui-barra-ferramentas/ferramentas-comum.d.ts +22 -0
  27. package/dist/components/ui-barra-ferramentas/ferramentas-icones.d.ts +24 -0
  28. package/dist/components/ui-barra-ferramentas/index.d.ts +4 -0
  29. package/dist/components/ui-barra-ferramentas/tipos.d.ts +55 -0
  30. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +54 -0
  31. package/dist/components/ui-barra-ferramentas/ui-ribbon.d.ts +52 -0
  32. package/dist/components/ui-botao/index.d.ts +1 -0
  33. package/dist/components/ui-botao/ui-botao.d.ts +26 -0
  34. package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +18 -0
  35. package/dist/components/ui-camadas/camadas-drag-drop.d.ts +18 -0
  36. package/dist/components/ui-camadas/camadas-eventos-arvore.d.ts +2 -0
  37. package/dist/components/ui-camadas/camadas-eventos-camadas.d.ts +2 -0
  38. package/dist/components/ui-camadas/camadas-eventos-rodape.d.ts +2 -0
  39. package/dist/components/ui-camadas/camadas-host.d.ts +23 -0
  40. package/dist/components/ui-camadas/camadas-icones.d.ts +23 -0
  41. package/dist/components/ui-camadas/camadas-mapas-base.d.ts +3 -0
  42. package/dist/components/ui-camadas/camadas-metricas.d.ts +17 -0
  43. package/dist/components/ui-camadas/camadas-persistencia.d.ts +65 -0
  44. package/dist/components/ui-camadas/camadas-resizer.d.ts +16 -0
  45. package/dist/components/ui-camadas/camadas-rodape.d.ts +2 -0
  46. package/dist/components/ui-camadas/camadas-selecao.d.ts +24 -0
  47. package/dist/components/ui-camadas/camadas-sincronizacao-dom.d.ts +3 -0
  48. package/dist/components/ui-camadas/camadas-teclado.d.ts +3 -0
  49. package/dist/components/ui-camadas/camadas-utils.d.ts +26 -0
  50. package/dist/components/ui-camadas/index.d.ts +11 -0
  51. package/dist/components/ui-camadas/tipos.d.ts +116 -0
  52. package/dist/components/ui-camadas/ui-camadas.d.ts +112 -0
  53. package/dist/components/ui-campo-texto/campo-texto-estados.d.ts +12 -0
  54. package/dist/components/ui-campo-texto/campo-texto-template.d.ts +2 -0
  55. package/dist/components/ui-campo-texto/index.d.ts +1 -0
  56. package/dist/components/ui-campo-texto/ui-campo-texto.d.ts +57 -0
  57. package/dist/components/ui-canvas-cad/cad-atributos-sync.d.ts +13 -0
  58. package/dist/components/ui-canvas-cad/cad-broadcast.d.ts +19 -0
  59. package/dist/components/ui-canvas-cad/cad-colecoes-dados.d.ts +46 -0
  60. package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +26 -0
  61. package/dist/components/ui-canvas-cad/cad-inicializador.d.ts +19 -0
  62. package/dist/components/ui-canvas-cad/cad-painel-camadas.d.ts +9 -0
  63. package/dist/components/ui-canvas-cad/cad-tamanho-observer.d.ts +7 -0
  64. package/dist/components/ui-canvas-cad/cad-template.d.ts +1 -0
  65. package/dist/components/ui-canvas-cad/cad-toolbar-painel.d.ts +29 -0
  66. package/dist/components/ui-canvas-cad/index.d.ts +8 -0
  67. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +91 -0
  68. package/dist/components/ui-card/index.d.ts +1 -0
  69. package/dist/components/ui-card/ui-card.d.ts +18 -0
  70. package/dist/components/ui-checkbox/index.d.ts +1 -0
  71. package/dist/components/ui-checkbox/ui-checkbox.d.ts +36 -0
  72. package/dist/components/ui-drawer/drawer-acessibilidade.d.ts +16 -0
  73. package/dist/components/ui-drawer/index.d.ts +1 -0
  74. package/dist/components/ui-drawer/ui-drawer.d.ts +37 -0
  75. package/dist/components/ui-icone/index.d.ts +1 -0
  76. package/dist/components/ui-icone/ui-icone.d.ts +15 -0
  77. package/dist/components/ui-lista-flutuante/index.d.ts +1 -0
  78. package/dist/components/ui-lista-flutuante/lista-flutuante-posicionamento.d.ts +15 -0
  79. package/dist/components/ui-lista-flutuante/lista-flutuante-render.d.ts +9 -0
  80. package/dist/components/ui-lista-flutuante/lista-flutuante-teclado.d.ts +13 -0
  81. package/dist/components/ui-lista-flutuante/lista-flutuante-template.d.ts +2 -0
  82. package/dist/components/ui-lista-flutuante/tipos.d.ts +4 -0
  83. package/dist/components/ui-lista-flutuante/ui-lista-flutuante.d.ts +63 -0
  84. package/dist/components/ui-mapa/index.d.ts +3 -0
  85. package/dist/components/ui-mapa/ui-mapa-linha.d.ts +12 -0
  86. package/dist/components/ui-mapa/ui-mapa-marcador.d.ts +15 -0
  87. package/dist/components/ui-mapa/ui-mapa.d.ts +16 -0
  88. package/dist/components/ui-modal/index.d.ts +2 -0
  89. package/dist/components/ui-modal/modal-acessibilidade.d.ts +12 -0
  90. package/dist/components/ui-modal/ui-modal.d.ts +30 -0
  91. package/dist/components/ui-radio/index.d.ts +1 -0
  92. package/dist/components/ui-radio/radio-grupo-registry.d.ts +10 -0
  93. package/dist/components/ui-radio/ui-radio.d.ts +29 -0
  94. package/dist/components/ui-segmented/index.d.ts +1 -0
  95. package/dist/components/ui-segmented/segmented-indicador.d.ts +13 -0
  96. package/dist/components/ui-segmented/segmented-teclado.d.ts +4 -0
  97. package/dist/components/ui-segmented/segmented-template.d.ts +4 -0
  98. package/dist/components/ui-segmented/ui-segmented.d.ts +48 -0
  99. package/dist/components/ui-seletor-mapa-base/index.d.ts +2 -0
  100. package/dist/components/ui-seletor-mapa-base/tipos.d.ts +22 -0
  101. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +43 -0
  102. package/dist/components/ui-skeleton/index.d.ts +1 -0
  103. package/dist/components/ui-skeleton/ui-skeleton.d.ts +19 -0
  104. package/dist/components/ui-stat/index.d.ts +1 -0
  105. package/dist/components/ui-stat/ui-stat.d.ts +30 -0
  106. package/dist/components/ui-switch/index.d.ts +1 -0
  107. package/dist/components/ui-switch/ui-switch.d.ts +36 -0
  108. package/dist/components/ui-tabela/index.d.ts +7 -0
  109. package/dist/components/ui-tabela/tabela-atributos-sync.d.ts +14 -0
  110. package/dist/components/ui-tabela/tabela-corpo.d.ts +18 -0
  111. package/dist/components/ui-tabela/tabela-dom.d.ts +15 -0
  112. package/dist/components/ui-tabela/tabela-header.d.ts +18 -0
  113. package/dist/components/ui-tabela/tabela-interacao.d.ts +9 -0
  114. package/dist/components/ui-tabela/tabela-localizador.d.ts +4 -0
  115. package/dist/components/ui-tabela/tabela-ordenacao.d.ts +12 -0
  116. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +18 -0
  117. package/dist/components/ui-tabela/tabela-redimensionamento.d.ts +28 -0
  118. package/dist/components/ui-tabela/tabela-remota.d.ts +15 -0
  119. package/dist/components/ui-tabela/tabela-renderizador.d.ts +29 -0
  120. package/dist/components/ui-tabela/tabela-selecao.d.ts +24 -0
  121. package/dist/components/ui-tabela/tipos.d.ts +27 -0
  122. package/dist/components/ui-tabela/ui-tabela.d.ts +83 -0
  123. package/dist/components/ui-tabela-propriedades/avaliador-expressao.d.ts +6 -0
  124. package/dist/components/ui-tabela-propriedades/editores-basicos.d.ts +7 -0
  125. package/dist/components/ui-tabela-propriedades/editores-cad.d.ts +17 -0
  126. package/dist/components/ui-tabela-propriedades/index.d.ts +6 -0
  127. package/dist/components/ui-tabela-propriedades/propriedades-densidade.d.ts +5 -0
  128. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +6 -0
  129. package/dist/components/ui-tabela-propriedades/propriedades-editores.d.ts +5 -0
  130. package/dist/components/ui-tabela-propriedades/propriedades-flutuante.d.ts +7 -0
  131. package/dist/components/ui-tabela-propriedades/propriedades-gerenciador-valores.d.ts +26 -0
  132. package/dist/components/ui-tabela-propriedades/propriedades-painel-controles.d.ts +15 -0
  133. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +24 -0
  134. package/dist/components/ui-tabela-propriedades/propriedades-seletor-tipo.d.ts +13 -0
  135. package/dist/components/ui-tabela-propriedades/propriedades-splitter.d.ts +13 -0
  136. package/dist/components/ui-tabela-propriedades/propriedades-template.d.ts +1 -0
  137. package/dist/components/ui-tabela-propriedades/tipos.d.ts +48 -0
  138. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +66 -0
  139. package/dist/components/ui-texto/index.d.ts +1 -0
  140. package/dist/components/ui-texto/ui-texto.d.ts +15 -0
  141. package/dist/components/ui-tooltip/index.d.ts +1 -0
  142. package/dist/components/ui-tooltip/ui-tooltip.d.ts +25 -0
  143. package/dist/core/acessibilidade.d.ts +21 -0
  144. package/dist/core/form-associated-element.d.ts +33 -0
  145. package/dist/core/form-validacao.d.ts +34 -0
  146. package/dist/core/index.d.ts +7 -0
  147. package/dist/core/leaflet-loader.d.ts +7 -0
  148. package/dist/core/leaflet-style.d.ts +7 -0
  149. package/dist/core/listener-bag.d.ts +21 -0
  150. package/dist/core/ssr-safe.d.ts +20 -0
  151. package/dist/core/ui-bus.d.ts +85 -0
  152. package/dist/core/zero-js-triggers.d.ts +1 -0
  153. package/dist/core.cjs +1 -0
  154. package/dist/core.js +22 -0
  155. package/dist/data.cjs +1 -0
  156. package/dist/data.d.ts +22 -0
  157. package/dist/data.js +63 -0
  158. package/dist/feedback.cjs +1 -0
  159. package/dist/feedback.d.ts +26 -0
  160. package/dist/feedback.js +25 -0
  161. package/dist/form-validacao-BIOXxt-1.js +140 -0
  162. package/dist/form-validacao-ytRYSF3E.cjs +1 -0
  163. package/dist/forms.cjs +1 -0
  164. package/dist/forms.d.ts +22 -0
  165. package/dist/forms.js +25 -0
  166. package/dist/gerencigeo-canvas/canvas_destaque.d.ts +13 -0
  167. package/dist/gerencigeo-canvas/canvas_destaque_marcadores.d.ts +8 -0
  168. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +56 -0
  169. package/dist/gerencigeo-canvas/canvas_selecao_box.d.ts +23 -0
  170. package/dist/gerencigeo-canvas/controller_dados_ops.d.ts +15 -0
  171. package/dist/gerencigeo-canvas/index.d.ts +17 -0
  172. package/dist/gerencigeo-canvas/layer_defaults.d.ts +3 -0
  173. package/dist/gerencigeo-canvas/layer_instance_ops.d.ts +6 -0
  174. package/dist/gerencigeo-canvas/layer_manager.d.ts +37 -0
  175. package/dist/gerencigeo-canvas/layer_pane_ops.d.ts +8 -0
  176. package/dist/gerencigeo-canvas/layer_renderer_factory.d.ts +14 -0
  177. package/dist/gerencigeo-canvas/layer_state_ops.d.ts +6 -0
  178. package/dist/gerencigeo-canvas/mapa_config.d.ts +11 -0
  179. package/dist/gerencigeo-canvas/mapa_controller.d.ts +53 -0
  180. package/dist/gerencigeo-canvas/mapa_core.d.ts +30 -0
  181. package/dist/gerencigeo-canvas/mapa_linhas.d.ts +14 -0
  182. package/dist/gerencigeo-canvas/mapa_marcadores.d.ts +18 -0
  183. package/dist/gerencigeo-canvas/mapa_pontos_shapes.d.ts +8 -0
  184. package/dist/gerencigeo-canvas/renderers/grid_renderer.d.ts +9 -0
  185. package/dist/gerencigeo-canvas/renderers/tile_renderer.d.ts +8 -0
  186. package/dist/gerencigeo-canvas/renderers/vector_lines_builder.d.ts +4 -0
  187. package/dist/gerencigeo-canvas/renderers/vector_lines_renderer.d.ts +9 -0
  188. package/dist/gerencigeo-canvas/renderers/vector_points_renderer.d.ts +11 -0
  189. package/dist/gerencigeo-canvas/renderers/vector_polygons_renderer.d.ts +9 -0
  190. package/dist/gerencigeo-canvas/renderers/wms_renderer.d.ts +8 -0
  191. package/dist/gerencigeo-canvas/sigef_consultor.d.ts +9 -0
  192. package/dist/gerencigeo-canvas/tile_preloader.d.ts +2 -0
  193. package/dist/gerencigeo-canvas/types.d.ts +169 -0
  194. package/dist/gerencigeo-canvas/utils.d.ts +46 -0
  195. package/dist/index.cjs +1 -0
  196. package/dist/index.d.ts +116 -0
  197. package/dist/index.js +186 -0
  198. package/dist/leaflet-Cw6tqYFh.cjs +1 -0
  199. package/dist/leaflet-DkaFZYc5.js +69 -0
  200. package/dist/leaflet-loader-94z5VsdY.cjs +2 -0
  201. package/dist/leaflet-loader-Cjcdgj5R.js +21 -0
  202. package/dist/listener-bag-D5omxZ9h.cjs +1 -0
  203. package/dist/listener-bag-DQgv7OON.js +34 -0
  204. package/dist/mapa.cjs +19 -0
  205. package/dist/mapa.d.ts +11 -0
  206. package/dist/mapa.js +264 -0
  207. package/dist/modal.cjs +1 -0
  208. package/dist/modal.d.ts +8 -0
  209. package/dist/modal.js +8 -0
  210. package/dist/register.cjs +1 -0
  211. package/dist/register.d.ts +7 -0
  212. package/dist/register.js +21 -0
  213. package/dist/seletor-mapa-base.cjs +53 -0
  214. package/dist/seletor-mapa-base.d.ts +8 -0
  215. package/dist/seletor-mapa-base.js +275 -0
  216. package/dist/ssr-safe-5cWfJP-s.js +10 -0
  217. package/dist/ssr-safe-CiHD1adl.cjs +1 -0
  218. package/dist/tabela.cjs +1 -0
  219. package/dist/tabela.d.ts +12 -0
  220. package/dist/tabela.js +56 -0
  221. package/dist/tools.cjs +1 -0
  222. package/dist/tools.d.ts +8 -0
  223. package/dist/tools.js +30 -0
  224. package/dist/ui-badge-92yelKls.js +183 -0
  225. package/dist/ui-badge-B95jSECC.cjs +28 -0
  226. package/dist/ui-botao-BShEouvi.js +124 -0
  227. package/dist/ui-botao-DF1yuUUD.cjs +12 -0
  228. package/dist/ui-campo-texto-BCh5HyCM.cjs +16 -0
  229. package/dist/ui-campo-texto-B_JF6POq.js +361 -0
  230. package/dist/ui-card-BJ8SmvVf.js +111 -0
  231. package/dist/ui-card-Bhm6k91e.cjs +20 -0
  232. package/dist/ui-kit.css +1 -0
  233. package/dist/ui-modal-Bi4isGYh.cjs +18 -0
  234. package/dist/ui-modal-DV-pw2x1.js +194 -0
  235. package/dist/ui-paleta-ferramentas-B6dJ0O6K.cjs +18 -0
  236. package/dist/ui-paleta-ferramentas-Bpp4XBVg.js +633 -0
  237. package/dist/ui-segmented-C8wuycjJ.js +411 -0
  238. package/dist/ui-segmented-NC5cBXLh.cjs +19 -0
  239. package/dist/ui-skeleton-B3xQyn0Z.js +396 -0
  240. package/dist/ui-skeleton-D42oQufF.cjs +33 -0
  241. package/dist/ui-switch-C6o4yZUF.cjs +53 -0
  242. package/dist/ui-switch-CO9MoS8x.js +826 -0
  243. package/dist/ui-tabela-propriedades-7yJ9g7ti.cjs +145 -0
  244. package/dist/ui-tabela-propriedades-D-XKNVwK.js +2078 -0
  245. package/dist/ui-toast-CQBqvUm3.cjs +20 -0
  246. package/dist/ui-toast-CwUmiqyG.js +156 -0
  247. package/dist/zero-js-triggers-DdESy0tk.js +205 -0
  248. package/dist/zero-js-triggers-QGD7FOTv.cjs +1 -0
  249. package/package.json +149 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 thibezer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,624 @@
1
+ # 🎨 UI Components Kit - Web Components Nativos & Universais
2
+
3
+ Biblioteca de **Web Components Nativos Universais e Agnósticos**, construída no padrão oficial **W3C Custom Elements + Shadow DOM**, com TypeScript, Design Tokens em CSS modular e Vite.
4
+
5
+ Projetada para funcionar em **qualquer linguagem, framework ou sistema web** (HTML puro, React, Next.js, Vue, Angular, Svelte, PHP, Django, WordPress, Blazor, etc.) com **zero dependências externas**.
6
+
7
+ ---
8
+
9
+ ## 📑 Índice
10
+
11
+ 1. [Por que Web Components?](#-por-que-web-components)
12
+ 2. [Como Importar na sua Aplicação](#-como-importar-na-sua-aplicação)
13
+ - [Opção 1: CDN / Script Tag (HTML puro, PHP, Django)](#opção-1-cdn--script-tag-html-puro-php-django)
14
+ - [Opção 2: NPM / Módulos ES (React, Vue, Next.js, Vite)](#opção-2-npm--módulos-es-react-vue-nextjs-vite)
15
+ 3. [Como Controlar os Componentes (5 Pilares)](#-como-controlar-os-componentes-5-pilares)
16
+ 4. [⚡ Recursos Inteligentes de Alta Produtividade](#-recursos-inteligentes-de-alta-produtividade)
17
+ - [Ações Declarativas "Zero-JS" (Triggers Nativos)](#1-ações-declarativas-zero-js-triggers-nativos)
18
+ - [Formulários Automáticos com FormData Nativo (W3C FACE)](#2-formulários-automáticos-com-formdata-nativo-w3c-face)
19
+ - [Barramento Global de Orquestração (UIBus)](#3-barramento-global-de-orquestração-uibus)
20
+ - [Tabelas Autônomas com Auto-Fetch Remoto](#4-tabelas-autônomas-com-auto-fetch-remoto)
21
+ 5. [💻 Exemplos de Uso por Tecnologia](#-exemplos-de-uso-por-tecnologia)
22
+ - [HTML Puro + JavaScript](#html-puro--javascript)
23
+ - [React / Next.js](#react--nextjs)
24
+ - [Vue.js](#vuejs)
25
+ - [Iframes / Microfrontends](#iframes--microfrontends)
26
+ 6. [🧩 Catálogo de Componentes & Referência](#-catálogo-de-componentes--referência)
27
+ 7. [🛠️ Como Executar e Compilar Localmente](#️-como-executar-e-compilar-localmente)
28
+
29
+ ---
30
+
31
+ ## 🎯 Por que Web Components?
32
+
33
+ * 🌐 **100% Universal e Agnóstico**: Funciona em qualquer stack sem necessidade de bibliotecas intermediárias.
34
+ * 🛡️ **Encapsulamento Total (Shadow DOM)**: O CSS da sua aplicação nunca quebra o componente, e o CSS do componente nunca vaza para o seu site.
35
+ * 📐 **Design Tokens Centralizados**: Variáveis CSS personalizáveis para cores, tipografia, raios e densidade.
36
+ * 🚀 **Suporte a Altíssima Densidade**: Otimizado para interfaces densas e técnicas (GIS, CAD, Topografia de 15px a 20px de altura) até interfaces fluidas modernas.
37
+
38
+ ---
39
+
40
+ ## 📦 Como Importar na sua Aplicação
41
+
42
+ ### Opção 1: CDN / Script Tag (HTML puro, PHP, Django)
43
+
44
+ Adicione as tags no `<head>` ou antes do fechamento do `</body>`:
45
+
46
+ ```html
47
+ <!-- 1. Design Tokens e Estilos Globais -->
48
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@thibezer/ui-components-kit@1/dist/ui-kit.css">
49
+
50
+ <!-- 2. Biblioteca dos Componentes (Módulo ES) -->
51
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@thibezer/ui-components-kit@1/dist/index.js"></script>
52
+
53
+ <!-- 3. Uso imediato no HTML -->
54
+ <ui-botao-primario variante="primary">Clique Aqui</ui-botao-primario>
55
+ ```
56
+
57
+ ### Opção 2: NPM / Módulos ES (React, Vue, Next.js, Vite)
58
+
59
+ Instale pelo npm:
60
+
61
+ ```bash
62
+ npm install @thibezer/ui-components-kit
63
+ ```
64
+
65
+ > O pacote é publicado já compilado (`dist/`) e **não executa build na instalação**, então funciona em CI/CD e em servidores com `npm ci --omit=dev`. A antiga instalação por URL Git (`git+https://github.com/...`) não é mais suportada: o repositório não versiona `dist/`.
66
+
67
+ No ponto de entrada da sua aplicação (`main.ts`, `index.js` ou `App.tsx`):
68
+
69
+ ```typescript
70
+ // 1. Estilos globais obrigatórios (tokens CSS)
71
+ import '@thibezer/ui-components-kit/style.css';
72
+
73
+ // 2. Biblioteca completa (ou escolha os submódulos abaixo)
74
+ import '@thibezer/ui-components-kit';
75
+ ```
76
+
77
+ #### 🚀 Importação Modular e Otimizada (Sub-paths)
78
+
79
+ Pague apenas pelo que utilizar. Importe por domínio de funcionalidade ou por componente específico:
80
+
81
+ O export map expõe explicitamente os pontos de entrada canônicos (ESM em `.js`, CommonJS em `.cjs` e tipos `.d.ts`):
82
+
83
+ | Subpath | Arquivo (ESM) |
84
+ |---|---|
85
+ | `@thibezer/ui-components-kit` | `dist/index.js` |
86
+ | `@thibezer/ui-components-kit/camadas` | `dist/camadas.js` |
87
+ | `@thibezer/ui-components-kit/forms` | `dist/forms.js` |
88
+ | `@thibezer/ui-components-kit/feedback` | `dist/feedback.js` |
89
+ | `@thibezer/ui-components-kit/tabela` | `dist/tabela.js` |
90
+ | `@thibezer/ui-components-kit/style.css` | `dist/ui-kit.css` (100% autocontido, sem `@import`) |
91
+
92
+ ##### 1. Por Domínio / Categoria:
93
+ ```typescript
94
+ import '@thibezer/ui-components-kit/forms'; // Campos, Select, Checkbox, Radio, Switch (~8 kB gzip)
95
+ import '@thibezer/ui-components-kit/feedback'; // Modais, Drawers, Alertas, Toasts, Tooltips, Skeletons (~6 kB gzip)
96
+ import '@thibezer/ui-components-kit/data'; // Tabela, Tabela-Propriedades, Stat KPI, Badge (~4 kB gzip)
97
+ import '@thibezer/ui-components-kit/tools'; // Ribbon CAD/Office e Paleta de Ferramentas (~10 kB gzip)
98
+ import '@thibezer/ui-components-kit/core'; // Apenas UIBus, Zero-JS e ListenerBag (< 1 kB gzip)
99
+ import '@thibezer/ui-components-kit/canvas'; // Mesa CAD vetorial e motor GIS (~33 kB gzip)
100
+ import '@thibezer/ui-components-kit/camadas'; // Painel de Camadas GIS/CAD redimensionável (~21 kB gzip)
101
+ import '@thibezer/ui-components-kit/mapa'; // Mapa Geográfico Leaflet (~3 kB gzip)
102
+ ```
103
+
104
+ ##### 2. Granular por Componente (Ultra Leve):
105
+ ```typescript
106
+ import '@thibezer/ui-components-kit/botao'; // Apenas <ui-botao> e <ui-botao-primario> (~3.4 kB gzip)
107
+ import '@thibezer/ui-components-kit/campo-texto'; // Apenas <ui-campo-texto> com FACE e anti-zoom (~3.9 kB gzip)
108
+ import '@thibezer/ui-components-kit/modal'; // Apenas <ui-modal> com bottom-sheet mobile (~3.3 kB gzip)
109
+ import '@thibezer/ui-components-kit/card'; // Apenas <ui-card> com elevação (~2.3 kB gzip)
110
+ import '@thibezer/ui-components-kit/tabela'; // Apenas <ui-tabela> virtualizada
111
+ ```
112
+
113
+ > **Zero Overhead**: Uma tela que utilize apenas `<ui-botao>` e `<ui-campo-texto>` importa menos de **8 kB gzip**, sem carregar nada de Leaflet, CAD, GIS ou virtualização.
114
+
115
+ ---
116
+
117
+ ## 🎛️ Como Controlar os Componentes (5 Pilares)
118
+
119
+ ```text
120
+ ┌─────────────────────────────────────────────────────────────┐
121
+ │ SISTEMA EXTERNO │
122
+ └──────┬───────────────▲─────────────────┬─────────────────▲──┘
123
+ │ │ │ │
124
+ 1. Atributos 4. Eventos Custom 2. Propriedades 3. Métodos
125
+ (HTML) (ui-*) (Objetos/Listas) (Imperativo)
126
+ │ │ │ │
127
+ ┌──────▼───────────────┴─────────────────▼─────────────────┴──┐
128
+ │ WEB COMPONENT (<ui-*>) │
129
+ └─────────────────────────────────────────────────────────────┘
130
+ ```
131
+
132
+ ### 1. Atributos HTML (Controle Declarativo)
133
+ Configurações simples passadas diretamente nas tags:
134
+ ```html
135
+ <ui-campo-texto label="CPF" placeholder="000.000.000-00" obrigatorio></ui-campo-texto>
136
+ <ui-modal id="meu-modal" titulo="Confirmar Exclusão"></ui-modal>
137
+ ```
138
+
139
+ ---
140
+
141
+ ### 📏 Ajuste de Altura e Dimensionamento Inteligente (Zero Atrito)
142
+
143
+ 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:
144
+
145
+ #### 1. Via Atributo de Tamanho Predefinido (`tamanho` ou `densidade`):
146
+ ```html
147
+ <!-- Compacto (26px) - Ideal para Toolbars CAD/GIS, tabelas e alta densidade -->
148
+ <ui-campo-texto tamanho="sm" placeholder="26px Compacto"></ui-campo-texto>
149
+ <ui-lista-flutuante tamanho="sm" placeholder="Selecione..."></ui-lista-flutuante>
150
+
151
+ <!-- Padrão (34px) - Padrão moderno e equilibrado para formulários e modais -->
152
+ <ui-campo-texto tamanho="md" placeholder="34px Padrão"></ui-campo-texto>
153
+ <ui-lista-flutuante tamanho="md" placeholder="Selecione..."></ui-lista-flutuante>
154
+
155
+ <!-- Conforto / Touch (42px) - Otimizado para dispositivos móveis e telas sensíveis ao toque -->
156
+ <ui-campo-texto tamanho="lg" placeholder="42px Conforto"></ui-campo-texto>
157
+ <ui-lista-flutuante tamanho="lg" placeholder="Selecione..."></ui-lista-flutuante>
158
+ ```
159
+
160
+ #### 2. Via Atributo de Altura Explícita (`altura` ou `height`):
161
+ ```html
162
+ <!-- Define a altura exata em pixels diretamente no elemento -->
163
+ <ui-campo-texto altura="38" placeholder="Altura de 38px"></ui-campo-texto>
164
+ <ui-lista-flutuante altura="44px" placeholder="Altura de 44px"></ui-lista-flutuante>
165
+ <ui-botao-primario altura="40">Salvar</ui-botao-primario>
166
+ ```
167
+
168
+ #### 3. Via Variável CSS Customizável (`--ui-campo-altura`):
169
+ ```css
170
+ /* No seu CSS global ou no container pai */
171
+ .meu-formulario {
172
+ --ui-campo-altura: 36px; /* Aplica instantaneamente em todos os inputs, selects e botões filhos */
173
+ }
174
+ ```
175
+
176
+ #### 4. Via Barramento Global de Densidade (`UIBus`):
177
+ ```javascript
178
+ import { UIBus } from '@thibezer/ui-components-kit';
179
+
180
+ // Altera a densidade de toda a aplicação em tempo real:
181
+ UIBus.definirDensidade('compacta'); // 26px
182
+ UIBus.definirDensidade('padrao'); // 34px
183
+ UIBus.definirDensidade('relaxada'); // 42px
184
+ UIBus.definirDensidade(38); // Valor numérico em px customizado
185
+ ```
186
+
187
+ ---
188
+
189
+ ### 2. Propriedades JavaScript (Dados Complexos)
190
+ Para enviar arrays e objetos complexos:
191
+ ```javascript
192
+ const tabela = document.querySelector('ui-tabela');
193
+ tabela.colunas = [
194
+ { id: 'ponto', rotulo: 'Ponto', ordenavel: true },
195
+ { id: 'altitude', rotulo: 'Altitude (m)' }
196
+ ];
197
+ tabela.dados = [
198
+ { ponto: 'P-01', altitude: '542,15' },
199
+ { ponto: 'P-02', altitude: '545,30' }
200
+ ];
201
+ ```
202
+
203
+ ### 3. Métodos Imperativos (Ações Diretas)
204
+ Comandos diretos chamados na instância do elemento:
205
+ ```javascript
206
+ const modal = document.getElementById('meu-modal');
207
+ modal.abrir();
208
+ modal.fechar();
209
+ ```
210
+
211
+ ### 4. Eventos Customizados Nativos (`ui-*`)
212
+ Escuta de eventos disparados pelas interações do usuário:
213
+ ```javascript
214
+ const campo = document.querySelector('ui-campo-texto');
215
+ campo.addEventListener('ui-input', (e) => {
216
+ console.log('Texto digitado:', e.detail.value);
217
+ });
218
+ ```
219
+
220
+ > **Mutação de usuário vs. programática (`<ui-camadas>`)**: eventos saem do componente **somente** em resposta a interações físicas (clique, drag-and-drop, teclado). Atribuir `painel.layers = [...]`, alterar atributos (`camada-ativa`, `colapsado`, `mapa-base-ativo`...) ou chamar métodos públicos (`definirCamadaAtiva`, `selecionarFeicao`, `limparSelecao`, `colapsar`, `definirAltura`...) apenas atualiza o DOM interno — sem redisparar eventos. Isso elimina loops de sincronização em apps reativos (React, Vue, Svelte). Para forçar a emissão numa chamada programática, passe `emitirEvento = true` (ex.: `painel.definirCamadaAtiva('lotes', true)`).
221
+
222
+ ### 5. Serviços Globais e Helpers
223
+ Utilitários prontos para uso sem necessidade de instanciar elementos:
224
+ ```javascript
225
+ import { UIToast, UIBus } from '@thibezer/ui-components-kit';
226
+
227
+ UIToast.notificar({
228
+ tipo: 'sucesso',
229
+ titulo: 'Registro Salvo!',
230
+ mensagem: 'Os dados foram sincronizados.',
231
+ duracao: 4000
232
+ });
233
+ ```
234
+
235
+ ### 6. Escala de Elevação (z-index)
236
+ Todos os componentes flutuantes consomem tokens de elevação previsíveis (com fallback), definidos em `ui-kit.css`. Sobrescreva-os no `:root` da aplicação para encaixar a pilha do kit entre os HUDs e modais do seu app:
237
+ ```css
238
+ :root {
239
+ --ui-z-workspace-hud: 500; /* <ui-camadas flutuante>, <ui-seletor-mapa-base>, toolbars do canvas */
240
+ --ui-z-docked-bar: 600; /* <ui-ribbon> recolhido, <ui-tabela-propriedades flutuante> */
241
+ --ui-z-drawer: 700; /* <ui-drawer> e backdrop */
242
+ --ui-z-modal: 1000; /* <ui-modal> e backdrop */
243
+ --ui-z-popover: 1050; /* menus suspensos/contexto, <ui-select> (acima do modal, funciona dentro dele) */
244
+ --ui-z-toast: 1100; /* UIToast */
245
+ --ui-z-tooltip: 1200; /* <ui-tooltip> */
246
+ }
247
+ ```
248
+
249
+ ### 7. Acessibilidade Nativa de Rótulos
250
+ `<ui-input>` (alias de `<ui-campo-texto>`), `<ui-select>` e `<ui-switch>` geram IDs únicos internamente e associam o rótulo visível ao controle nativo do Shadow DOM — o projeto consumidor não precisa gerenciar IDs:
251
+ ```html
252
+ <ui-input label="Nome"></ui-input> <!-- <label for> ↔ <input> interno -->
253
+ <ui-select label="Cidade">...</ui-select> <!-- aria-labelledby = rótulo + valor atual -->
254
+ <ui-switch label="Modo escuro"></ui-switch> <!-- role="switch" aria-labelledby -->
255
+
256
+ <!-- Sem o atributo label, o nome acessível vem de fora do Shadow DOM: -->
257
+ <label>Telefone <ui-input></ui-input></label>
258
+ <ui-switch aria-label="Camada visível"></ui-switch>
259
+ ```
260
+
261
+ ---
262
+
263
+ ## ⚡ Recursos Inteligentes de Alta Produtividade
264
+
265
+ ### 1. Ações Declarativas "Zero-JS" (Triggers Nativos)
266
+ Você pode acionar modais, fechar janelas, disparar notificações toast ou copiar textos **sem escrever nenhuma linha de JavaScript**, apenas adicionando atributos nas tags HTML:
267
+
268
+ ```html
269
+ <!-- Abrir Modal sem JS -->
270
+ <ui-botao-primario target-modal="modal-exclusao" variante="destrutivo">
271
+ Excluir Registro
272
+ </ui-botao-primario>
273
+
274
+ <!-- Modal com Fechamento e Toast automáticos -->
275
+ <ui-modal id="modal-exclusao" titulo="Confirmação">
276
+ Tem certeza que deseja excluir?
277
+ <div slot="rodape">
278
+ <ui-botao-primario dismiss-modal variante="secundario">Cancelar</ui-botao-primario>
279
+ <ui-botao-primario dismiss-modal toast-sucesso="Excluído com sucesso!" variante="destrutivo">
280
+ Confirmar
281
+ </ui-botao-primario>
282
+ </div>
283
+ </ui-modal>
284
+
285
+ <!-- Copiar Texto em 1 Clique -->
286
+ <ui-campo-texto id="input-token" value="SIGEF-2026-X88"></ui-campo-texto>
287
+ <ui-botao-primario copiar-texto="#input-token" copiar-mensagem="Token copiado!">
288
+ Copiar Chave
289
+ </ui-botao-primario>
290
+ ```
291
+
292
+ #### Tabela de Atributos Zero-JS Disponíveis:
293
+ | Atributo | Descrição | Exemplo de Uso |
294
+ | :--- | :--- | :--- |
295
+ | `target-modal="id"` | Abre o modal com o ID especificado ao clicar. | `target-modal="modal-login"` |
296
+ | `dismiss-modal` | Fecha o modal atual (ou o especificado por ID). | `dismiss-modal` |
297
+ | `toast-sucesso="msg"` | Dispara uma notificação flutuante de sucesso. | `toast-sucesso="Salvo com sucesso!"` |
298
+ | `toast-erro="msg"` | Dispara uma notificação flutuante de erro. | `toast-erro="Falha na conexão."` |
299
+ | `toast-alerta="msg"` | Dispara uma notificação flutuante de aviso. | `toast-alerta="Preencha os campos obrigatórios."` |
300
+ | `copiar-texto="texto\|#id"` | Copia o texto ou o valor do elemento referenciado. | `copiar-texto="#campo-pix"` |
301
+ | `limpar-form="id"` | Reseta todos os campos do formulário indicado. | `limpar-form="form-cadastro"` |
302
+ | `alternar-tema` | Alterna entre tema claro e escuro globalmente. | `alternar-tema` |
303
+
304
+ ---
305
+
306
+ ### 2. Formulários Automáticos com `FormData` Nativo (W3C FACE)
307
+ Todos os campos (`<ui-campo-texto>`, `<ui-lista-flutuante>`, `<ui-checkbox>`, `<ui-radio>`, `<ui-switch>`) implementam a especificação oficial de **Form-Associated Custom Elements**.
308
+
309
+ Isso significa que você extrai os dados de todos os campos de uma única vez, sem ler um por um:
310
+
311
+ ```html
312
+ <form id="form-imovel">
313
+ <ui-campo-texto name="denominacao" label="Nome da Fazenda" value="Boa Vista"></ui-campo-texto>
314
+ <ui-campo-texto name="municipio" label="Município" value="Uberlândia"></ui-campo-texto>
315
+ <ui-checkbox name="georreferenciado" label="Georreferenciado" marcado value="sim"></ui-checkbox>
316
+
317
+ <ui-botao-primario type="submit">Salvar Imóvel</ui-botao-primario>
318
+ </form>
319
+ ```
320
+
321
+ ```javascript
322
+ const form = document.getElementById('form-imovel');
323
+
324
+ form.addEventListener('submit', (e) => {
325
+ e.preventDefault();
326
+
327
+ // Extrai TODOS os campos em 1 única linha nativa:
328
+ const dados = Object.fromEntries(new FormData(form));
329
+ console.log(dados);
330
+ // Resultado: { denominacao: "Boa Vista", municipio: "Uberlândia", georreferenciado: "sim" }
331
+ });
332
+ ```
333
+
334
+ ---
335
+
336
+ ### 3. Barramento Global de Orquestração (`UIBus`)
337
+ O `UIBus` é uma central reativa que permite comandar qualquer componente do sistema ou ouvir eventos sem precisar de `querySelector`:
338
+
339
+ ```javascript
340
+ import { UIBus } from '@thibezer/ui-components-kit';
341
+
342
+ // 1. Executar Ações Diretas:
343
+ UIBus.abrirModal('modal-confirmacao');
344
+ UIBus.fecharModal('modal-confirmacao');
345
+ UIBus.notificar({ tipo: 'sucesso', mensagem: 'Operação concluída!' });
346
+ UIBus.copiar('Texto para a área de transferência', 'Copiado!');
347
+ UIBus.definirDensidade('compacta'); // 'compacta' | 'normal' | 'relaxada'
348
+ UIBus.definirTema('escuro'); // 'claro' | 'escuro'
349
+
350
+ // 2. Comunicação Desacoplada (Pub/Sub):
351
+ UIBus.on('vertice:selecionado', (dadosVertice) => {
352
+ console.log('Vértice selecionado em qualquer tela:', dadosVertice);
353
+ });
354
+
355
+ UIBus.emit('vertice:selecionado', { id: 101, nome: 'M-01', altitude: 432.10 });
356
+ ```
357
+
358
+ ---
359
+
360
+ ### 4. Tabelas Autônomas com Auto-Fetch Remoto
361
+ A `<ui-tabela>` pode buscar dados de uma API remota de forma totalmente autônoma, exibindo indicador de loading, tratando erros e permitindo filtragem instantânea:
362
+
363
+ ```html
364
+ <ui-tabela
365
+ id="tabela-vertices"
366
+ src="/api/v1/geodesia/vertices"
367
+ max-height="400px"
368
+ densidade="compacta">
369
+ </ui-tabela>
370
+ ```
371
+
372
+ ```javascript
373
+ const tabela = document.getElementById('tabela-vertices');
374
+
375
+ // Definir colunas da tabela:
376
+ tabela.colunas = [
377
+ { id: 'nome_vertice', rotulo: 'Vértice', ordenavel: true },
378
+ { id: 'este', rotulo: 'Este (m)', ordenavel: true, alinhamento: 'direita' },
379
+ { id: 'norte', rotulo: 'Norte (m)', ordenavel: true, alinhamento: 'direita' }
380
+ ];
381
+
382
+ // Métodos inteligentes disponíveis na tabela:
383
+ tabela.filtrar('M-01'); // Filtra instantaneamente em todas as colunas
384
+ tabela.recarregar(); // Recarrega os dados da API remota
385
+ ```
386
+
387
+ ---
388
+
389
+ ## 💻 Exemplos de Uso por Tecnologia
390
+
391
+ ### HTML Puro + JavaScript
392
+ ```html
393
+ <!DOCTYPE html>
394
+ <html lang="pt-BR">
395
+ <head>
396
+ <link rel="stylesheet" href="dist/ui-kit.css">
397
+ <script type="module" src="dist/index.js"></script>
398
+ </head>
399
+ <body>
400
+ <ui-campo-texto id="meu-campo" label="Nome do Projeto"></ui-campo-texto>
401
+ <ui-botao-primario target-modal="meu-modal">Abrir Detalhes</ui-botao-primario>
402
+
403
+ <ui-modal id="meu-modal" titulo="Detalhes">
404
+ <p>Conteúdo do modal...</p>
405
+ <div slot="rodape">
406
+ <ui-botao-primario dismiss-modal>Fechar</ui-botao-primario>
407
+ </div>
408
+ </ui-modal>
409
+
410
+ <script>
411
+ document.getElementById('meu-campo').addEventListener('ui-input', (e) => {
412
+ console.log('Digitado:', e.detail.value);
413
+ });
414
+ </script>
415
+ </body>
416
+ </html>
417
+ ```
418
+
419
+ ---
420
+
421
+ ### React / Next.js (SSR & Client Components)
422
+
423
+ A biblioteca é **100% SSR-safe**: todas as classes herdam de `SafeHTMLElement` e o registro de tags utiliza verificações de segurança para ambientes sem DOM (Node.js). Isso garante que você pode importar tipos, classes e constantes tanto no servidor quanto no cliente sem encontrar `ReferenceError: HTMLElement is not defined` ou `customElements is not defined`.
424
+
425
+ #### No Next.js (App Router):
426
+
427
+ Crie um componente cliente provedor ou registre no topo do seu layout/página cliente:
428
+
429
+ ```tsx
430
+ // components/UIProvider.tsx
431
+ 'use client';
432
+
433
+ import { useEffect } from 'react';
434
+ import '@thibezer/ui-components-kit/style.css';
435
+ import '@thibezer/ui-components-kit/register'; // Registra todos os Custom Elements com segurança no cliente
436
+
437
+ export function UIProvider({ children }: { children: React.ReactNode }) {
438
+ return <>{children}</>;
439
+ }
440
+ ```
441
+
442
+ Ou registre de forma modular apenas o que a tela precisa:
443
+
444
+ ```tsx
445
+ // app/dashboard/page.tsx
446
+ 'use client';
447
+
448
+ import React, { useEffect, useRef, useState } from 'react';
449
+ import '@thibezer/ui-components-kit/style.css';
450
+ import '@thibezer/ui-components-kit/forms';
451
+ import '@thibezer/ui-components-kit/botao';
452
+ import '@thibezer/ui-components-kit/tabela';
453
+ import { UIBus } from '@thibezer/ui-components-kit/core';
454
+
455
+ export default function DashboardPropriedades() {
456
+ const tabelaRef = useRef<any>(null);
457
+ const [nome, setNome] = useState('');
458
+
459
+ useEffect(() => {
460
+ if (tabelaRef.current) {
461
+ tabelaRef.current.colunas = [
462
+ { id: 'id', rotulo: 'Código' },
463
+ { id: 'nome', rotulo: 'Propriedade' }
464
+ ];
465
+ tabelaRef.current.dados = [
466
+ { id: 1, nome: 'Fazenda Santa Luzia' }
467
+ ];
468
+ }
469
+ }, []);
470
+
471
+ return (
472
+ <div style={{ padding: 24 }}>
473
+ <ui-campo-texto
474
+ label="Pesquisar Imóvel"
475
+ value={nome}
476
+ onInput={(e: any) => {
477
+ setNome(e.detail?.value || '');
478
+ tabelaRef.current?.filtrar(e.detail?.value || '');
479
+ }}
480
+ ></ui-campo-texto>
481
+
482
+ <ui-tabela ref={tabelaRef} max-height="300px" densidade="compacta"></ui-tabela>
483
+
484
+ <ui-botao-primario
485
+ variante="primary"
486
+ onClick={() => UIBus.notificar({ tipo: 'sucesso', mensagem: 'Dados sincronizados!' })}>
487
+ Sincronizar
488
+ </ui-botao-primario>
489
+ </div>
490
+ );
491
+ }
492
+ ```
493
+
494
+ ---
495
+
496
+ ### Vue.js
497
+ ```vue
498
+ <template>
499
+ <div class="container">
500
+ <ui-campo-texto
501
+ :value="termoBusca"
502
+ label="Buscar Vértice"
503
+ @ui-input="aoDigitar"
504
+ />
505
+
506
+ <ui-lista-flutuante
507
+ .itens="opcoes"
508
+ @ui-selecionar="aoSelecionar"
509
+ />
510
+
511
+ <ui-botao-primario target-modal="modal-confirmacao">
512
+ Confirmar Operação
513
+ </ui-botao-primario>
514
+ </div>
515
+ </template>
516
+
517
+ <script setup>
518
+ import { ref } from 'vue';
519
+ import '@thibezer/ui-components-kit/style.css';
520
+ import '@thibezer/ui-components-kit';
521
+
522
+ const termoBusca = ref('');
523
+ const opcoes = ref([
524
+ { id: '1', label: 'Marco Geodésico M' },
525
+ { id: '2', label: 'Ponto Topográfico P' }
526
+ ]);
527
+
528
+ function aoDigitar(e) {
529
+ termoBusca.value = e.detail.value;
530
+ }
531
+
532
+ function aoSelecionar(e) {
533
+ console.log('Opção selecionada:', e.detail);
534
+ }
535
+ </script>
536
+ ```
537
+
538
+ ---
539
+
540
+ ### Iframes / Microfrontends
541
+ Comunicação segura entre iframes e sistemas pais via eventos do `UIBus`:
542
+
543
+ ```javascript
544
+ // Dentro do Iframe (Filho):
545
+ import { UIBus } from '@thibezer/ui-components-kit';
546
+
547
+ UIBus.on('vertice:salvo', (dados) => {
548
+ window.parent.postMessage({ tipo: 'VERTICE_SALVO', payload: dados }, '*');
549
+ });
550
+
551
+ // No Sistema Principal (Pai):
552
+ window.addEventListener('message', (event) => {
553
+ if (event.data?.tipo === 'VERTICE_SALVO') {
554
+ console.log('Recebido do Iframe:', event.data.payload);
555
+ }
556
+ });
557
+ ```
558
+
559
+ ---
560
+
561
+ ## 🧩 Catálogo de Componentes & Referência
562
+
563
+ ### 🟢 Camada 1: Fundamentos
564
+ | Tag | Descrição | Principais Atributos / Props | Eventos Emitidos |
565
+ | :--- | :--- | :--- | :--- |
566
+ | `<ui-botao-primario>` | Botão com estados de loading, ícone e variantes. | `variante`, `carregando`, `disabled`, `target-modal` | `ui-click` |
567
+ | `<ui-campo-texto>` | Input de texto com Floating Label, validação e senha. | `label`, `value`, `tipo`, `obrigatorio`, `name` | `ui-input`, `ui-change` |
568
+ | `<ui-lista-flutuante>` | Select/Dropdown com Bottom Sheet no mobile. | `itens`, `value`, `placeholder`, `name` | `ui-selecionar` |
569
+ | `<ui-texto>` | Tipografia semântica (H1-H6, corpo, caption, código). | `variante`, `cor`, `peso` | - |
570
+ | `<ui-icone>` | Wrapper para ícones vetoriais padronizados. | `nome`, `tamanho`, `cor` | - |
571
+
572
+ ### 🔵 Camada 2: Controles & Seleção
573
+ | Tag | Descrição | Principais Atributos / Props | Eventos Emitidos |
574
+ | :--- | :--- | :--- | :--- |
575
+ | `<ui-checkbox>` | Caixa de seleção múltipla com estado indeterminado. | `marcado`, `indeterminado`, `name`, `value` | `ui-change` |
576
+ | `<ui-radio>` | Opção única com agrupamento automático por nome. | `marcado`, `name`, `value` | `ui-change` |
577
+ | `<ui-switch>` | Chave de alternância liga/desliga física instantânea. | `ativo`, `name`, `value` | `ui-change` |
578
+ | `<ui-segmented>` | Controle segmentado de opções (Pills/Tabs deslizantes). | `opcoes`, `value`, `name`, `tamanho` | `ui-change`, `ui-selecionar` |
579
+ | `<ui-badge>` / `<ui-chip>` | Tags de status e chips com botão de remoção. | `variante`, `removivel`, `value` | `ui-remove` |
580
+ | `<ui-avatar>` | Avatar com fotos, iniciais e status online. | `nome`, `foto`, `status`, `tamanho` | - |
581
+
582
+ ### 🟣 Camada 3: Contêineres, Overlays, Dados & GIS
583
+ | Tag | Descrição | Principais Atributos / Props | Eventos Emitidos |
584
+ | :--- | :--- | :--- | :--- |
585
+ | `<ui-card>` | Cartão de conteúdo com slots nomeados e elevação. | `elevacao`, `clicavel` | `ui-click` |
586
+ | `<ui-modal>` | Modal centralizado no PC e Bottom Sheet no Mobile. | `aberto`, `titulo`, `bottom-sheet` | `ui-abrir`, `ui-fechar` |
587
+ | `<ui-drawer>` | Painel lateral deslizante (Sheet/Gaveta direita/esquerda). | `aberto`, `lado`, `titulo`, `largura` | `ui-abrir`, `ui-fechar` |
588
+ | `<ui-alerta>` | Banner de notificação contextual fixo. | `variante`, `titulo`, `fechavel` | `ui-fechar` |
589
+ | `<ui-toast>` | Notificações flutuantes inteligentes com pilha flex. | `UIToast.notificar({ tipo, mensagem })` | - |
590
+ | `<ui-tooltip>` | Dica contextual inteligente (Hover PC / Toque Mobile). | `texto`, `posicao`, `gatilho` | - |
591
+ | `<ui-skeleton>` | Placeholder de carregamento animado com pulsos. | `tipo`, `largura`, `altura`, `animado` | - |
592
+ | `<ui-stat>` | Cartão KPI de estatísticas, métricas e tendências. | `rotulo`, `valor`, `variacao`, `tipo-variacao` | - |
593
+ | `<ui-tabela>` | Tabela orientada a dados, virtualizada tipo Excel. | `colunas`, `dados`, `src`, `densidade` | `ui-sort`, `ui-column-resize` |
594
+ | `<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` |
595
+ | `<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). | `abas`, `aba-ativa`, `recolhido`, `compacto` | `ui-ferramenta`, `ui-aba-change` |
596
+ | `<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. | `ferramentas`, `valor`, `orientacao`, `colunas`, `tamanho`, `atalhos` | `ui-change`, `ui-selecionar`, `ui-ferramenta` |
597
+ | `<ui-mapa>` | Mapa geográfico interativo com camadas OpenStreetMap. | `lat`, `lng`, `zoom`, `camadas` | - |
598
+ | `<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` |
599
+ | `<ui-canvas-cad>` | Mesa CAD/GIS para poligonais e vértices geodésicos. | `pontos`, `segmentos`, `fitBounds()` | `ui-ponto-selecionado` |
600
+
601
+ ---
602
+
603
+ ## 🛠️ Como Executar e Compilar Localmente
604
+
605
+ 1. **Instalar Dependências**:
606
+ ```bash
607
+ npm install
608
+ ```
609
+
610
+ 2. **Executar o Playground Sandbox em Desenvolvimento**:
611
+ ```bash
612
+ npm run dev
613
+ ```
614
+ Acesse: `http://localhost:5173/`
615
+
616
+ 3. **Compilar Pacote de Produção (Library Mode)**:
617
+ ```bash
618
+ npm run build
619
+ ```
620
+ Gera na pasta `dist/`:
621
+ * `dist/index.js` e `dist/<modulo>.js` (Módulos ES para Vite, Webpack, Rollup)
622
+ * `dist/index.cjs` e `dist/<modulo>.cjs` (CommonJS para `require`)
623
+ * `dist/*.d.ts` (Tipagens TypeScript)
624
+ * `dist/ui-kit.css` (Design Tokens compilados, 100% autocontido — o build falha se restar qualquer `@import`)
package/dist/botao.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const o=require("./ui-botao-DF1yuUUD.cjs");exports.UIBotao=o.UIBotao;exports.UIBotaoPrimario=o.UIBotaoPrimario;
@@ -0,0 +1,8 @@
1
+ import { UIBotao, UIBotaoPrimario } from './components/ui-botao';
2
+ export * from './components/ui-botao';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'ui-botao': UIBotao;
6
+ 'ui-botao-primario': UIBotaoPrimario;
7
+ }
8
+ }
package/dist/botao.js ADDED
@@ -0,0 +1,6 @@
1
+ /* empty css */
2
+ import { U as t, a as i } from "./ui-botao-BShEouvi.js";
3
+ export {
4
+ t as UIBotao,
5
+ i as UIBotaoPrimario
6
+ };