@thibezer/ui-components-kit 2.14.0 → 2.17.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 (106) hide show
  1. package/CHANGELOG.md +63 -9
  2. package/README.md +4 -2
  3. package/dist/botao.cjs +1 -1
  4. package/dist/botao.js +1 -1
  5. package/dist/camadas.cjs +50 -50
  6. package/dist/camadas.js +381 -373
  7. package/dist/campo-texto.cjs +1 -1
  8. package/dist/campo-texto.js +1 -1
  9. package/dist/canvas.cjs +24 -24
  10. package/dist/canvas.js +757 -751
  11. package/dist/card.cjs +1 -1
  12. package/dist/card.js +1 -1
  13. package/dist/components/ui-avatar/ui-avatar.d.ts +7 -0
  14. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +2 -0
  15. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +7 -0
  16. package/dist/components/ui-mapa/ui-mapa.d.ts +1 -0
  17. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +6 -0
  18. package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
  19. package/dist/components/ui-stat/ui-stat.d.ts +12 -0
  20. package/dist/components/ui-tabela/tabela-corpo.d.ts +5 -0
  21. package/dist/components/ui-tabela/tabela-foco.d.ts +28 -0
  22. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +3 -0
  23. package/dist/components/ui-tabela/tabela-renderizador.d.ts +3 -0
  24. package/dist/components/ui-tabela/tipos.d.ts +7 -1
  25. package/dist/components/ui-tabela/ui-tabela.d.ts +6 -1
  26. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +2 -1
  27. package/dist/components/ui-tabela-propriedades/propriedades-persistencia.d.ts +63 -0
  28. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +1 -0
  29. package/dist/components/ui-tabela-propriedades/tipos.d.ts +16 -0
  30. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +40 -1
  31. package/dist/core/degrade.d.ts +34 -0
  32. package/dist/core/index.d.ts +1 -0
  33. package/dist/core.cjs +1 -1
  34. package/dist/core.js +33 -24
  35. package/dist/cores.cjs +1 -1
  36. package/dist/cores.js +1 -1
  37. package/dist/custom-elements.json +20309 -18611
  38. package/dist/data.cjs +1 -1
  39. package/dist/data.js +89 -79
  40. package/dist/degrade-CIxvOTUv.cjs +1 -0
  41. package/dist/degrade-gDa5sW__.js +119 -0
  42. package/dist/feedback.cjs +1 -1
  43. package/dist/feedback.js +2 -2
  44. package/dist/forms.cjs +1 -1
  45. package/dist/forms.js +2 -2
  46. package/dist/index.cjs +1 -1
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +215 -196
  49. package/dist/mapa.cjs +1 -1
  50. package/dist/mapa.js +1 -1
  51. package/dist/modal.cjs +1 -1
  52. package/dist/modal.js +1 -1
  53. package/dist/register.cjs +1 -1
  54. package/dist/register.js +11 -11
  55. package/dist/seletor-mapa-base.cjs +10 -10
  56. package/dist/seletor-mapa-base.js +34 -28
  57. package/dist/tabela.cjs +1 -1
  58. package/dist/tabela.js +83 -73
  59. package/dist/tipos-elementos.d.ts +33 -3
  60. package/dist/tipos-vue.d.ts +30 -3
  61. package/dist/tools.cjs +1 -1
  62. package/dist/tools.js +1 -1
  63. package/dist/ui-badge-1UU8vT-b.js +198 -0
  64. package/dist/ui-badge-CKKKPdt8.cjs +28 -0
  65. package/dist/ui-badge-DE58YSBY.cjs +28 -0
  66. package/dist/ui-badge-KgmI3jOD.js +201 -0
  67. package/dist/ui-botao-Dz8YvmiA.cjs +12 -0
  68. package/dist/ui-botao-bU_bf6SU.js +166 -0
  69. package/dist/ui-botao-xTbH5mpH.cjs +12 -0
  70. package/dist/ui-botao-zLkcMMyP.js +168 -0
  71. package/dist/ui-campo-texto-DVU_sWV1.cjs +16 -0
  72. package/dist/ui-campo-texto-Dliyt9qr.cjs +16 -0
  73. package/dist/ui-campo-texto-W5M0gNE4.js +377 -0
  74. package/dist/ui-campo-texto-btevggO3.js +379 -0
  75. package/dist/ui-card-BYyYxxY1.cjs +20 -0
  76. package/dist/ui-card-CojoGXaT.js +144 -0
  77. package/dist/ui-card-DFnRp9bl.js +146 -0
  78. package/dist/ui-card-DrWVJQKw.cjs +20 -0
  79. package/dist/ui-controle-cores-Bq_XUrIQ.cjs +32 -0
  80. package/dist/ui-controle-cores-BtA6yzu3.js +291 -0
  81. package/dist/ui-kit.css +1 -1
  82. package/dist/ui-linha-2kY7TNUJ.cjs +38 -0
  83. package/dist/ui-linha-DAz6DBcl.cjs +38 -0
  84. package/dist/ui-linha-DkxwMhD-.js +749 -0
  85. package/dist/ui-linha-KFF86FW5.js +752 -0
  86. package/dist/ui-modal-4nU-tXjO.cjs +18 -0
  87. package/dist/ui-modal-BrXzVZ65.js +216 -0
  88. package/dist/ui-modal-BwB9fksp.js +214 -0
  89. package/dist/ui-modal-lARKzEVZ.cjs +18 -0
  90. package/dist/ui-paleta-ferramentas-Bu6JaT0s.js +1245 -0
  91. package/dist/ui-paleta-ferramentas-D3Jhwt26.cjs +21 -0
  92. package/dist/ui-skeleton-BLEV6h3k.js +653 -0
  93. package/dist/ui-skeleton-B_XTaGrX.cjs +52 -0
  94. package/dist/ui-skeleton-DEHwpDqa.js +648 -0
  95. package/dist/ui-skeleton-sIphhOSx.cjs +52 -0
  96. package/dist/ui-switch-BXIDwC-Y.cjs +66 -0
  97. package/dist/ui-switch-Ctxk-jKS.js +1212 -0
  98. package/dist/ui-switch-DAIgOhqr.cjs +66 -0
  99. package/dist/ui-switch-_F8yubdX.js +1203 -0
  100. package/dist/ui-tabela-propriedades-2bq2nX-b.js +3202 -0
  101. package/dist/ui-tabela-propriedades-8IAYmk3P.cjs +142 -0
  102. package/dist/ui-tabela-propriedades-BoYXzP5Z.js +3191 -0
  103. package/dist/ui-tabela-propriedades-CJyo568n.js +3517 -0
  104. package/dist/ui-tabela-propriedades-CnfW9DZG.cjs +142 -0
  105. package/dist/ui-tabela-propriedades-Wa34hfIr.cjs +142 -0
  106. package/package.json +187 -187
@@ -0,0 +1,653 @@
1
+ var $ = Object.defineProperty;
2
+ var B = (r, s, t) => s in r ? $(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;
3
+ var o = (r, s, t) => B(r, typeof s != "symbol" ? s + "" : s, t);
4
+ import { L as _ } from "./listener-bag-DQgv7OON.js";
5
+ import { d as m, S as y } from "./ssr-safe-5cWfJP-s.js";
6
+ import { A as w, a as v } from "./degrade-gDa5sW__.js";
7
+ import { U as O } from "./ui-bus-CUd99VJi.js";
8
+ const H = ':host{display:block;box-sizing:border-box;font-family:var(--ui-fonte-base, "Inter", sans-serif)}.ui-drawer__backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:calc(var(--ui-z-drawer, 700) - 1);opacity:0;pointer-events:none;transition:opacity .25s ease}:host([aberto]) .ui-drawer__backdrop,:host([open]) .ui-drawer__backdrop{opacity:1;pointer-events:auto}.ui-drawer__painel{position:fixed;z-index:var(--ui-z-drawer, 700);background:var(--ui-degrade-interno, var(--ui-drawer-fundo, var(--ui-fundo-card, var(--ui-cor-fundo-card, #18181c))));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));box-shadow:var(--ui-sombra-lg, 0 16px 40px rgba(0, 0, 0, .7));display:flex;flex-direction:column;opacity:0;visibility:hidden;pointer-events:none;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .2s ease,visibility .2s ease;box-sizing:border-box;color:var(--ui-cor-texto, #e1e1e6)}:host(:not([posicao])) .ui-drawer__painel,:host([posicao="direita"]) .ui-drawer__painel,:host([position="right"]) .ui-drawer__painel{top:0;right:0;bottom:0;width:var(--ui-drawer-largura, 480px);max-width:92vw;height:100vh;transform:translate(100%);border-left:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16))}:host([aberto]:not([posicao])) .ui-drawer__painel,:host([open]:not([posicao])) .ui-drawer__painel,:host([aberto][posicao="direita"]) .ui-drawer__painel,:host([open][posicao="direita"]) .ui-drawer__painel,:host([aberto][position="right"]) .ui-drawer__painel,:host([open][position="right"]) .ui-drawer__painel{transform:translate(0);opacity:1;visibility:visible;pointer-events:auto}:host([posicao="esquerda"]) .ui-drawer__painel,:host([position="left"]) .ui-drawer__painel{top:0;left:0;bottom:0;width:var(--ui-drawer-largura, 480px);max-width:92vw;height:100vh;transform:translate(-100%);border-right:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16))}:host([aberto][posicao="esquerda"]) .ui-drawer__painel,:host([open][posicao="esquerda"]) .ui-drawer__painel,:host([aberto][position="left"]) .ui-drawer__painel,:host([open][position="left"]) .ui-drawer__painel{transform:translate(0);opacity:1;visibility:visible;pointer-events:auto}:host([posicao="baixo"]) .ui-drawer__painel,:host([position="bottom"]) .ui-drawer__painel{bottom:0;left:0;right:0;width:100vw;max-height:85vh;transform:translateY(100%);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16));border-top-left-radius:14px;border-top-right-radius:14px}:host([aberto][posicao="baixo"]) .ui-drawer__painel,:host([open][posicao="baixo"]) .ui-drawer__painel,:host([aberto][position="bottom"]) .ui-drawer__painel,:host([open][position="bottom"]) .ui-drawer__painel{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}:host([posicao="cima"]) .ui-drawer__painel,:host([position="top"]) .ui-drawer__painel{top:0;left:0;right:0;width:100vw;max-height:85vh;transform:translateY(-100%);border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16));border-bottom-left-radius:14px;border-bottom-right-radius:14px}:host([aberto][posicao="cima"]) .ui-drawer__painel,:host([open][posicao="cima"]) .ui-drawer__painel,:host([aberto][position="top"]) .ui-drawer__painel,:host([open][position="top"]) .ui-drawer__painel{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}.ui-drawer__header{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));flex-shrink:0}.ui-drawer__titulo-container{display:flex;flex-direction:column;gap:2px}.ui-drawer__titulo{margin:0;font-size:16px;font-weight:600;color:var(--ui-cor-texto, #ffffff)}.ui-drawer__descricao{margin:0;font-size:13px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer__close{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);font-size:16px;cursor:pointer;padding:6px;border-radius:6px;line-height:1;display:flex;align-items:center;justify-content:center;transition:color .15s ease,background-color .15s ease}.ui-drawer__close svg,.ui-drawer__close ::slotted(svg){shape-rendering:geometricPrecision}.ui-drawer__close:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .08))}.ui-drawer__close:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-cor-primaria, #00E08A)}.ui-drawer__body{padding:20px;overflow-y:auto;flex:1;box-sizing:border-box}.ui-drawer__footer{padding:14px 20px;border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:flex-end;gap:10px;background:var(--ui-drawer-rodape-fundo, var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15)));flex-shrink:0}@starting-style{:host([aberto]:not([posicao])) .ui-drawer__painel,:host([open]:not([posicao])) .ui-drawer__painel,:host([aberto][posicao="direita"]) .ui-drawer__painel,:host([open][posicao="direita"]) .ui-drawer__painel{transform:translate(100%);opacity:0}:host([aberto][posicao="esquerda"]) .ui-drawer__painel,:host([open][posicao="esquerda"]) .ui-drawer__painel{transform:translate(-100%);opacity:0}:host([aberto][posicao="baixo"]) .ui-drawer__painel,:host([open][posicao="baixo"]) .ui-drawer__painel{transform:translateY(100%);opacity:0}:host([aberto]) .ui-drawer__backdrop,:host([open]) .ui-drawer__backdrop{opacity:0}}:host(.degrade),:host(.ui-degrade),:host(.gradiente),:host(.ui-gradiente),:host([degrade]:not([degrade="false"]):not([degrade="none"]):not([degrade="0"]):not([degrade="off"])),:host([gradiente]:not([gradiente="false"]):not([gradiente="none"]):not([gradiente="0"]):not([gradiente="off"])),:host([gradient]:not([gradient="false"]):not([gradient="none"]):not([gradient="0"]):not([gradient="off"])){--ui-fundo-card: var(--ui-gradiente-card)}', S = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), ui-campo-texto, ui-botao, ui-botao-primario, ui-checkbox, ui-switch, ui-lista-flutuante, ui-radio, ui-select, ui-segmented';
9
+ function q(r, s) {
10
+ let t = Array.from(r.querySelectorAll(S));
11
+ t = t.filter((a) => {
12
+ try {
13
+ return window.getComputedStyle(a).display !== "none";
14
+ } catch {
15
+ return !0;
16
+ }
17
+ });
18
+ const i = r.querySelectorAll("slot"), e = [];
19
+ return i.forEach((a) => {
20
+ a.assignedElements({ flatten: !0 }).forEach((l) => {
21
+ l instanceof HTMLElement && (l.matches(S) && e.push(l), e.push(...Array.from(l.querySelectorAll(S))));
22
+ });
23
+ }), [...t, ...e].filter((a) => !a.hasAttribute("disabled") && a.getAttribute("aria-hidden") !== "true");
24
+ }
25
+ function F(r) {
26
+ if (typeof document > "u") return !0;
27
+ const s = Array.from(
28
+ document.querySelectorAll("ui-drawer[aberto], ui-drawer[open], ui-sheet[aberto], ui-sheet[open]")
29
+ );
30
+ return s[s.length - 1] === r;
31
+ }
32
+ function G(r, s, t, i) {
33
+ if (s.length === 0) {
34
+ r.preventDefault();
35
+ return;
36
+ }
37
+ const e = s[0], a = s[s.length - 1], n = t.getRootNode(), l = n == null ? void 0 : n.activeElement;
38
+ r.shiftKey ? (l === e || !t.contains(l) && !i.contains(l)) && (r.preventDefault(), a.focus()) : (l === a || !t.contains(l) && !i.contains(l)) && (r.preventDefault(), e.focus());
39
+ }
40
+ function j() {
41
+ if (typeof document > "u") return;
42
+ document.querySelectorAll(
43
+ "ui-modal[aberto], ui-modal[open], ui-dialog[aberto], ui-dialog[open], ui-drawer[aberto], ui-drawer[open], ui-sheet[aberto], ui-sheet[open]"
44
+ ).length > 0 ? document.body.style.overflow = "hidden" : document.body.style.overflow = "";
45
+ }
46
+ class g extends y {
47
+ constructor() {
48
+ super();
49
+ o(this, "backdropElement");
50
+ o(this, "painelElement");
51
+ o(this, "tituloElement");
52
+ o(this, "descricaoElement");
53
+ o(this, "closeElement");
54
+ o(this, "listeners", new _());
55
+ o(this, "_elementoGatilho", null);
56
+ o(this, "_focables", []);
57
+ o(this, "handleSlotChange", () => {
58
+ this.syncState();
59
+ });
60
+ o(this, "handleBackdropClick", (t) => {
61
+ t.stopPropagation(), this.hasAttribute("estatico") || this.hasAttribute("static") || this.fechar();
62
+ });
63
+ o(this, "handleCloseClick", (t) => {
64
+ t.stopPropagation(), this.fechar();
65
+ });
66
+ o(this, "handleKeyDown", (t) => {
67
+ this.aberto && F(this) && (t.key === "Escape" ? this.hasAttribute("estatico") || this.hasAttribute("static") || (this.fechar(), t.stopImmediatePropagation()) : t.key === "Tab" && (this._focables = q(this.shadowRoot), G(t, this._focables, this, this.shadowRoot)));
68
+ });
69
+ const t = this.attachShadow({ mode: "open" });
70
+ t.innerHTML = `
71
+ <style>${H}</style>
72
+ <div class="ui-drawer__backdrop" part="fundo"></div>
73
+ <aside class="ui-drawer__painel" part="painel" role="dialog" aria-modal="true" tabindex="-1">
74
+ <div class="ui-drawer__header" part="cabecalho">
75
+ <div class="ui-drawer__titulo-container">
76
+ <h3 class="ui-drawer__titulo" part="titulo"></h3>
77
+ <p class="ui-drawer__descricao" part="descricao" style="display: none;"></p>
78
+ </div>
79
+ <button type="button" class="ui-drawer__close" part="fechar" aria-label="Fechar painel lateral" title="Fechar">✕</button>
80
+ </div>
81
+ <div class="ui-drawer__body" part="corpo">
82
+ <slot></slot>
83
+ </div>
84
+ <div class="ui-drawer__footer" part="rodape">
85
+ <slot name="rodape"></slot>
86
+ <slot name="footer"></slot>
87
+ </div>
88
+ </aside>
89
+ `, this.backdropElement = t.querySelector(".ui-drawer__backdrop"), this.painelElement = t.querySelector(".ui-drawer__painel"), this.tituloElement = t.querySelector(".ui-drawer__titulo"), this.descricaoElement = t.querySelector(".ui-drawer__descricao"), this.closeElement = t.querySelector(".ui-drawer__close");
90
+ }
91
+ static get observedAttributes() {
92
+ return [
93
+ "aberto",
94
+ "open",
95
+ "posicao",
96
+ "position",
97
+ "titulo",
98
+ "title",
99
+ "descricao",
100
+ "description",
101
+ "largura",
102
+ "width",
103
+ "estatico",
104
+ "static",
105
+ ...w
106
+ ];
107
+ }
108
+ connectedCallback() {
109
+ this.listeners.cleanup(), this.listeners.add(this.backdropElement, "click", this.handleBackdropClick), this.listeners.add(this.closeElement, "click", this.handleCloseClick), this.listeners.add(window, "keydown", this.handleKeyDown), this.shadowRoot.querySelectorAll("slot").forEach((i) => {
110
+ this.listeners.add(i, "slotchange", this.handleSlotChange);
111
+ }), this.syncState();
112
+ }
113
+ disconnectedCallback() {
114
+ this.listeners.cleanup(), g.atualizarScrollLock();
115
+ }
116
+ attributeChangedCallback(t, i, e) {
117
+ (t === "aberto" || t === "open") && e !== null && (document.activeElement && document.activeElement !== document.body && (this._elementoGatilho = document.activeElement), setTimeout(() => {
118
+ this._focables = q(this.shadowRoot), this._focables.length > 0 ? this._focables[0].focus() : this.painelElement.focus();
119
+ }, 0)), this.syncState();
120
+ }
121
+ get aberto() {
122
+ return this.hasAttribute("aberto") || this.hasAttribute("open");
123
+ }
124
+ set aberto(t) {
125
+ t ? this.setAttribute("aberto", "") : (this.removeAttribute("aberto"), this.removeAttribute("open")), this.syncState();
126
+ }
127
+ get posicao() {
128
+ const t = (this.getAttribute("posicao") || this.getAttribute("position") || "direita").toLowerCase();
129
+ return t === "esquerda" || t === "left" ? "esquerda" : t === "baixo" || t === "bottom" ? "baixo" : t === "cima" || t === "top" ? "cima" : "direita";
130
+ }
131
+ set posicao(t) {
132
+ this.setAttribute("posicao", t);
133
+ }
134
+ abrir() {
135
+ this.aberto || (document.activeElement && document.activeElement !== document.body && (this._elementoGatilho = document.activeElement), this.aberto = !0, this.dispatchEvent(
136
+ new CustomEvent("ui-abrir", {
137
+ bubbles: !0,
138
+ composed: !0
139
+ })
140
+ ), setTimeout(() => {
141
+ this._focables = q(this.shadowRoot), this._focables.length > 0 ? this._focables[0].focus() : this.painelElement.focus();
142
+ }, 0));
143
+ }
144
+ fechar() {
145
+ this.aberto && (this.aberto = !1, this.dispatchEvent(
146
+ new CustomEvent("ui-fechar", {
147
+ bubbles: !0,
148
+ composed: !0
149
+ })
150
+ ), this._elementoGatilho && (this._elementoGatilho.focus(), this._elementoGatilho = null));
151
+ }
152
+ alternar() {
153
+ this.aberto ? this.fechar() : this.abrir();
154
+ }
155
+ syncState() {
156
+ var l, c;
157
+ const t = this.aberto, i = this.getAttribute("titulo") || this.getAttribute("title") || "", e = this.getAttribute("descricao") || this.getAttribute("description") || "", a = this.getAttribute("largura") || this.getAttribute("width"), n = (l = this.shadowRoot) == null ? void 0 : l.querySelector(".ui-drawer__footer");
158
+ if (this.painelElement.setAttribute("aria-hidden", String(!t)), v(this, this.painelElement), i ? (this.tituloElement.textContent = i, this.tituloElement.style.display = "block") : this.tituloElement.style.display = "none", e ? (this.descricaoElement.textContent = e, this.descricaoElement.style.display = "block") : this.descricaoElement.style.display = "none", a ? this.style.setProperty("--ui-drawer-largura", isNaN(Number(a)) ? a : `${a}px`) : this.style.removeProperty("--ui-drawer-largura"), n) {
159
+ const u = Array.from(((c = this.shadowRoot) == null ? void 0 : c.querySelectorAll('slot[name="rodape"], slot[name="footer"]')) || []).some((b) => b.assignedNodes({ flatten: !0 }).some((f) => f.nodeType === Node.ELEMENT_NODE || f.textContent && f.textContent.trim() !== "")) || this.querySelector('[slot="rodape"], [slot="footer"]') !== null;
160
+ n.style.display = u ? "flex" : "none";
161
+ }
162
+ g.atualizarScrollLock();
163
+ }
164
+ static atualizarScrollLock() {
165
+ j();
166
+ }
167
+ }
168
+ class U extends g {
169
+ }
170
+ class Y extends g {
171
+ }
172
+ class X extends g {
173
+ }
174
+ m("ui-drawer", g);
175
+ m("ui-sheet", U);
176
+ m("ui-painel-lateral", Y);
177
+ m("ui-gaveta", X);
178
+ const Q = ':host{display:block;box-sizing:border-box;font-family:var(--ui-fonte-base, "Inter", sans-serif)}.ui-alerta{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--ui-raio-borda, 8px);border:1px solid transparent;background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-elevado, var(--ui-cor-fundo-elevado, #1a1a1e))));color:var(--ui-cor-texto, #e1e1e6);box-sizing:border-box;position:relative;transition:opacity .2s ease,transform .2s ease;line-height:1.4}.ui-alerta__icone{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;line-height:1}.ui-alerta__icone svg,.ui-alerta__icone ::slotted(svg),.ui-alerta__icone ::slotted(ui-icone){shape-rendering:geometricPrecision}.ui-alerta__conteudo{flex:1}.ui-alerta__titulo{font-size:14px;font-weight:600;margin:0 0 2px;line-height:1.2}.ui-alerta__mensagem{font-size:13px;margin:0;opacity:.9}.ui-alerta__close{background:transparent;border:none;color:currentColor;opacity:.7;font-size:14px;cursor:pointer;padding:2px 6px;border-radius:var(--ui-raio-sm, 4px);line-height:1;flex-shrink:0;margin-top:-2px;margin-right:-4px;transition:opacity .15s ease,background-color .15s ease}.ui-alerta__close:hover{opacity:1;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent)}.ui-alerta--sucesso{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-sucesso, color-mix(in srgb, var(--ui-cor-texto-sucesso, #00E08A) 12%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 30%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A)}.ui-alerta--sucesso .ui-alerta__mensagem{color:var(--ui-cor-texto, #e1e1e6)}.ui-alerta--erro{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-erro, color-mix(in srgb, var(--ui-cor-texto-erro, #ff5555) 12%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 30%,transparent);color:var(--ui-cor-texto-erro, #ff5555)}.ui-alerta--erro .ui-alerta__mensagem{color:var(--ui-cor-texto, #e1e1e6)}.ui-alerta--alerta{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-alerta, color-mix(in srgb, var(--ui-cor-texto-alerta, #ffb86c) 12%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-alerta--alerta .ui-alerta__mensagem{color:var(--ui-cor-texto, #e1e1e6)}.ui-alerta--info{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-info, color-mix(in srgb, var(--ui-cor-texto-info, #33b5ff) 12%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 30%,transparent);color:var(--ui-cor-texto-info, #33b5ff)}.ui-alerta--info .ui-alerta__mensagem{color:var(--ui-cor-texto, #e1e1e6)}.ui-alerta__acoes{display:flex;align-items:center;flex-shrink:0;margin-left:4px}.ui-alerta__botao-acao{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);color:inherit;font-family:inherit;font-size:12px;font-weight:600;padding:4px 10px;border-radius:5px;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,transform .1s ease}.ui-alerta__botao-acao:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 30%,transparent)}.ui-alerta__botao-acao:active{transform:scale(.96)}.ui-alerta__botao-acao:focus-visible{outline:none;box-shadow:0 0 0 2px var(--ui-cor-fundo, #0b0b0d),0 0 0 4px var(--ui-cor-primaria, #00E08A)}.ui-alerta__botao-acao--primario{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 15%,transparent);border-color:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-alerta__botao-acao--primario:hover{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 25%,transparent);border-color:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 50%,transparent)}.ui-alerta__botao-acao--destrutivo{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 15%,transparent);border-color:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555)}.ui-alerta__botao-acao--destrutivo:hover{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 25%,transparent);border-color:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 50%,transparent)}:host(ui-toast){display:block;width:100%;box-sizing:border-box;pointer-events:auto;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .25s ease}.ui-toast__banner{box-shadow:var(--ui-sombra-lg, 0 10px 30px rgba(0, 0, 0, .3)),0 0 0 1px var(--ui-cor-borda, rgba(255, 255, 255, .1));animation:ui-toast-slide .3s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.ui-toast__banner.ui-alerta--sucesso{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-sucesso, color-mix(in srgb, color-mix(in srgb, var(--ui-cor-fundo-elevado, #1a1a1e) 88%, var(--ui-cor-texto-sucesso, #00E08A) 12%) 60%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 40%,transparent)}.ui-toast__banner.ui-alerta--erro{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-erro, color-mix(in srgb, color-mix(in srgb, var(--ui-cor-fundo-elevado, #1a1a1e) 88%, var(--ui-cor-texto-erro, #ff5555) 12%) 60%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 40%,transparent)}.ui-toast__banner.ui-alerta--alerta{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-alerta, color-mix(in srgb, color-mix(in srgb, var(--ui-cor-fundo-elevado, #1a1a1e) 88%, var(--ui-cor-texto-alerta, #ffb86c) 12%) 60%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 40%,transparent)}.ui-toast__banner.ui-alerta--info{background:var(--ui-degrade-interno, var(--ui-alerta-fundo, var(--ui-fundo-info, color-mix(in srgb, color-mix(in srgb, var(--ui-cor-fundo-elevado, #1a1a1e) 88%, var(--ui-cor-texto-info, #33b5ff) 12%) 60%, transparent))));border-color:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 40%,transparent)}.ui-toast__progresso{position:absolute;bottom:0;left:0;right:0;height:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);overflow:hidden}.ui-toast__progresso-barra{width:100%;height:100%;background:currentColor;opacity:.7;transform-origin:left;animation:ui-toast-timer linear forwards}:host(ui-toast:hover) .ui-toast__progresso-barra,:host(ui-toast:focus-within) .ui-toast__progresso-barra{animation-play-state:paused}@keyframes ui-toast-timer{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes ui-toast-slide{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@starting-style{:host(ui-toast){opacity:0;transform:translateY(12px) scale(.96)}}:host(.squarecircle) .ui-alerta,:host(.squarecircles) .ui-alerta,:host(.ui-squarecircle) .ui-alerta,:host(.ui-squarecircles) .ui-alerta,:host([formato="squarecircle"]) .ui-alerta,:host([formato="squarecircles"]) .ui-alerta,:host([formato="squircle"]) .ui-alerta{border-radius:var(--ui-raio-lg, 10px)}:host(.degrade),:host(.ui-degrade),:host(.gradiente),:host(.ui-gradiente),:host([degrade]:not([degrade="false"]):not([degrade="none"]):not([degrade="0"]):not([degrade="off"])),:host([gradiente]:not([gradiente="false"]):not([gradiente="none"]):not([gradiente="0"]):not([gradiente="off"])),:host([gradient]:not([gradient="false"]):not([gradient="none"]):not([gradient="0"]):not([gradient="off"])){--ui-fundo-elevado: var(--ui-gradiente-elevado);--ui-fundo-sucesso: var(--ui-gradiente-sucesso);--ui-fundo-erro: var(--ui-gradiente-erro);--ui-fundo-alerta: var(--ui-gradiente-alerta);--ui-fundo-info: var(--ui-gradiente-info)}', N = {
179
+ sucesso: '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>',
180
+ erro: '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>',
181
+ alerta: '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>',
182
+ info: '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>'
183
+ };
184
+ class R extends y {
185
+ constructor() {
186
+ super();
187
+ o(this, "alertaElement");
188
+ o(this, "iconeElement");
189
+ o(this, "tituloElement");
190
+ o(this, "mensagemElement");
191
+ o(this, "mensagemTextoElement");
192
+ o(this, "closeElement");
193
+ o(this, "acoesElement");
194
+ o(this, "botaoAcaoElement");
195
+ o(this, "progressoContainer");
196
+ o(this, "progressoBarra");
197
+ o(this, "listeners", new _());
198
+ const t = this.attachShadow({ mode: "open" });
199
+ t.innerHTML = `
200
+ <style>${Q}</style>
201
+ <div class="ui-alerta" part="base" role="alert">
202
+ <span class="ui-alerta__icone" part="icone"></span>
203
+ <div class="ui-alerta__conteudo" part="conteudo">
204
+ <h4 class="ui-alerta__titulo" part="titulo" style="display: none;"></h4>
205
+ <p class="ui-alerta__mensagem" part="mensagem">
206
+ <span class="ui-alerta__mensagem-texto" style="display: none;"></span>
207
+ <slot></slot>
208
+ </p>
209
+ </div>
210
+ <div class="ui-alerta__acoes" style="display: none;">
211
+ <button type="button" class="ui-alerta__botao-acao" part="acao"></button>
212
+ </div>
213
+ <button class="ui-alerta__close" part="fechar" type="button" aria-label="Fechar alerta" style="display: none;" title="Fechar">✕</button>
214
+ <div class="ui-toast__progresso" part="progresso" style="display: none;">
215
+ <div class="ui-toast__progresso-barra"></div>
216
+ </div>
217
+ </div>
218
+ `, this.alertaElement = t.querySelector(".ui-alerta"), this.iconeElement = t.querySelector(".ui-alerta__icone"), this.tituloElement = t.querySelector(".ui-alerta__titulo"), this.mensagemElement = t.querySelector(".ui-alerta__mensagem"), this.mensagemTextoElement = t.querySelector(".ui-alerta__mensagem-texto"), this.closeElement = t.querySelector(".ui-alerta__close"), this.acoesElement = t.querySelector(".ui-alerta__acoes"), this.botaoAcaoElement = t.querySelector(".ui-alerta__botao-acao"), this.progressoContainer = t.querySelector(".ui-toast__progresso"), this.progressoBarra = t.querySelector(".ui-toast__progresso-barra");
219
+ }
220
+ static get observedAttributes() {
221
+ return [
222
+ "tipo",
223
+ "variante",
224
+ "variant",
225
+ "titulo",
226
+ "title",
227
+ "mensagem",
228
+ "fechavel",
229
+ "dismissible",
230
+ ...w
231
+ ];
232
+ }
233
+ connectedCallback() {
234
+ this.listeners.cleanup(), this.listeners.add(this.closeElement, "click", () => this.fechar()), this.syncState();
235
+ }
236
+ disconnectedCallback() {
237
+ this.listeners.cleanup();
238
+ }
239
+ attributeChangedCallback(t, i, e) {
240
+ this.syncState();
241
+ }
242
+ fechar() {
243
+ this.dispatchEvent(
244
+ new CustomEvent("ui-fechar", {
245
+ bubbles: !0,
246
+ composed: !0
247
+ })
248
+ ), this.remove();
249
+ }
250
+ syncState() {
251
+ const t = this.getAttribute("tipo") || this.getAttribute("variante") || this.getAttribute("variant") || "info", i = this.getAttribute("titulo") || this.getAttribute("title"), e = this.getAttribute("mensagem"), a = this.hasAttribute("fechavel") || this.hasAttribute("dismissible");
252
+ this.alertaElement.className = `ui-alerta ui-alerta--${t}`, v(this, this.alertaElement);
253
+ const n = N[t] || N.info;
254
+ this.iconeElement.innerHTML = n, i ? (this.tituloElement.textContent = i, this.tituloElement.style.display = "block") : (this.tituloElement.style.display = "none", this.tituloElement.textContent = ""), e ? (this.mensagemTextoElement.textContent = e, this.mensagemTextoElement.style.display = "inline") : (this.mensagemTextoElement.style.display = "none", this.mensagemTextoElement.textContent = ""), a ? this.closeElement.style.display = "block" : this.closeElement.style.display = "none";
255
+ }
256
+ }
257
+ m("ui-alerta", R);
258
+ class k extends R {
259
+ constructor() {
260
+ super(...arguments);
261
+ o(this, "timerId", null);
262
+ o(this, "tempoRestante", 4e3);
263
+ o(this, "inicioTimestamp", 0);
264
+ o(this, "isPausado", !1);
265
+ o(this, "acaoConfig");
266
+ o(this, "containerRef", null);
267
+ o(this, "handleAcaoClick", (t) => {
268
+ var i, e, a;
269
+ t.stopPropagation(), (i = this.acaoConfig) != null && i.onClick && this.acaoConfig.onClick(t), this.dispatchEvent(
270
+ new CustomEvent("ui-toast-acao", {
271
+ detail: {
272
+ rotulo: (e = this.acaoConfig) == null ? void 0 : e.rotulo,
273
+ tipo: (a = this.acaoConfig) == null ? void 0 : a.tipo
274
+ },
275
+ bubbles: !0,
276
+ composed: !0
277
+ })
278
+ ), this.fechar();
279
+ });
280
+ o(this, "pausarTimer", () => {
281
+ if (this.isPausado || this.tempoRestante <= 0) return;
282
+ this.isPausado = !0, this.timerId && (clearTimeout(this.timerId), this.timerId = null);
283
+ const t = Date.now() - this.inicioTimestamp;
284
+ this.tempoRestante = Math.max(0, this.tempoRestante - t), this.progressoBarra.style.animationPlayState = "paused";
285
+ });
286
+ o(this, "retomarTimer", () => {
287
+ !this.isPausado || this.tempoRestante <= 0 || (this.isPausado = !1, this.progressoBarra.style.animationPlayState = "running", this.iniciarTimer(Math.max(this.tempoRestante, 300)));
288
+ });
289
+ }
290
+ configurarAcao(t) {
291
+ this.acaoConfig = t, this.botaoAcaoElement.textContent = t.rotulo, this.acoesElement.style.display = "flex";
292
+ const i = t.tipo || "primario";
293
+ this.botaoAcaoElement.className = `ui-alerta__botao-acao ui-alerta__botao-acao--${i}`;
294
+ }
295
+ connectedCallback() {
296
+ super.connectedCallback(), this.containerRef = this.parentElement, this.alertaElement.classList.add("ui-toast__banner"), this.acaoConfig && this.listeners.add(this.botaoAcaoElement, "click", this.handleAcaoClick);
297
+ const t = this.getAttribute("duracao") || this.getAttribute("duration") || "4000", i = parseInt(t, 10);
298
+ this.tempoRestante = isNaN(i) ? 4e3 : i, this.tempoRestante > 0 ? (this.progressoContainer.style.display = "block", this.progressoBarra.style.animationDuration = `${this.tempoRestante}ms`, this.getAttribute("pausar-no-hover") !== "false" && (this.listeners.add(this, "mouseenter", this.pausarTimer), this.listeners.add(this, "mouseleave", this.retomarTimer), this.listeners.add(this, "focusin", this.pausarTimer), this.listeners.add(this, "focusout", this.retomarTimer)), this.iniciarTimer(this.tempoRestante)) : this.progressoContainer.style.display = "none";
299
+ }
300
+ fechar() {
301
+ const t = this.parentElement || this.containerRef;
302
+ super.fechar(), t && t.id.startsWith("ui-toast-container-") && t.children.length === 0 && t.remove();
303
+ }
304
+ disconnectedCallback() {
305
+ super.disconnectedCallback(), this.timerId && (clearTimeout(this.timerId), this.timerId = null), this.containerRef && this.containerRef.id.startsWith("ui-toast-container-") && this.containerRef.children.length === 0 && (this.containerRef.remove(), this.containerRef = null);
306
+ }
307
+ iniciarTimer(t) {
308
+ this.timerId && clearTimeout(this.timerId), this.inicioTimestamp = Date.now(), this.timerId = setTimeout(() => {
309
+ this.fechar();
310
+ }, t);
311
+ }
312
+ static obterContainer(t) {
313
+ const i = `ui-toast-container-${t}`;
314
+ let e = document.getElementById(i);
315
+ return e || (e = document.createElement("div"), e.id = i, e.style.position = "fixed", e.style.setProperty("z-index", "var(--ui-z-toast, 1100)"), e.style.display = "flex", e.style.gap = "10px", e.style.maxWidth = "400px", e.style.width = "calc(100vw - 32px)", e.style.pointerEvents = "none", e.style.boxSizing = "border-box", e.style.transition = "all 0.2s ease", t === "top-right" ? (e.style.top = "20px", e.style.right = "20px", e.style.flexDirection = "column") : t === "top-left" ? (e.style.top = "20px", e.style.left = "20px", e.style.flexDirection = "column") : t === "bottom-left" ? (e.style.bottom = "20px", e.style.left = "20px", e.style.flexDirection = "column-reverse") : t === "top-center" ? (e.style.top = "20px", e.style.left = "50%", e.style.transform = "translateX(-50%)", e.style.flexDirection = "column") : t === "bottom-center" ? (e.style.bottom = "20px", e.style.left = "50%", e.style.transform = "translateX(-50%)", e.style.flexDirection = "column-reverse") : (e.style.bottom = "20px", e.style.right = "20px", e.style.flexDirection = "column-reverse"), document.body.appendChild(e)), e;
316
+ }
317
+ // Utilitário estático para disparo imperativo de Toasts de qualquer lugar no código
318
+ static notificar(t) {
319
+ if (typeof document > "u") return null;
320
+ const i = t.posicao || "bottom-right", e = document.createElement("ui-toast");
321
+ return t.tipo && e.setAttribute("tipo", t.tipo), t.titulo && e.setAttribute("titulo", t.titulo), t.mensagem && e.setAttribute("mensagem", t.mensagem), t.duracao !== void 0 && e.setAttribute("duracao", String(t.duracao)), t.pausarNoHover === !1 && e.setAttribute("pausar-no-hover", "false"), e.setAttribute("posicao", i), t.fechavel !== !1 && e.setAttribute("fechavel", ""), t.acao && e.configurarAcao(t.acao), k.obterContainer(i).appendChild(e), e;
322
+ }
323
+ }
324
+ m("ui-toast", k);
325
+ function W() {
326
+ O.registrarProvedorToast((r) => {
327
+ k.notificar(r);
328
+ });
329
+ }
330
+ W();
331
+ const K = ':host{display:inline-flex;position:relative;align-items:center;justify-content:center;vertical-align:middle;box-sizing:border-box;--ui-tooltip-texto-distancia: 260px;--ui-tooltip-seta-espaco: 70px}.ui-tooltip__bubble{position:fixed;z-index:var(--ui-z-tooltip, 1200);padding:6px 10px;border-radius:6px;font-size:11px;font-weight:500;background:var(--ui-degrade-interno, var(--ui-tooltip-fundo, var(--ui-fundo-elevado, var(--ui-cor-fundo-elevado, #1e1e24))));color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16));box-shadow:var(--ui-sombra-md, 0 4px 16px rgba(0, 0, 0, .5));white-space:normal;max-width:var(--ui-tooltip-texto-distancia, 260px);width:max-content;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,visibility .15s ease;line-height:1.35;box-sizing:border-box;-webkit-user-select:none;user-select:none;margin:0}.ui-tooltip__bubble[popover]{margin:0;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .16));background:var(--ui-degrade-interno, var(--ui-tooltip-fundo, var(--ui-fundo-elevado, var(--ui-cor-fundo-elevado, #1e1e24))));color:var(--ui-cor-texto, #e1e1e6);padding:6px 10px;overflow:visible;max-width:var(--ui-tooltip-texto-distancia, 260px);width:max-content;white-space:normal}.ui-tooltip__texto{display:inline-block;max-width:100%}.ui-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid}.ui-tooltip--topo .ui-tooltip__arrow{bottom:-5px;left:50%;transform:translate(-50%);border-width:5px 5px 0 5px;border-color:var(--ui-cor-fundo-elevado, #1e1e24) transparent transparent transparent}.ui-tooltip--baixo .ui-tooltip__arrow{top:-5px;left:50%;transform:translate(-50%);border-width:0 5px 5px 5px;border-color:transparent transparent var(--ui-cor-fundo-elevado, #1e1e24) transparent}.ui-tooltip--esquerda .ui-tooltip__arrow{right:-5px;top:50%;transform:translateY(-50%);border-width:5px 0 5px 5px;border-color:transparent transparent transparent var(--ui-cor-fundo-elevado, #1e1e24)}.ui-tooltip--direita .ui-tooltip__arrow{left:-5px;top:50%;transform:translateY(-50%);border-width:5px 5px 5px 0;border-color:transparent var(--ui-cor-fundo-elevado, #1e1e24) transparent transparent}.ui-tooltip--visivel .ui-tooltip__bubble{opacity:1;visibility:visible;pointer-events:auto;transform:scale(1)}@starting-style{.ui-tooltip--visivel .ui-tooltip__bubble,.ui-tooltip__bubble:popover-open{opacity:0;transform:scale(.94)}}:host(.degrade),:host(.ui-degrade),:host(.gradiente),:host(.ui-gradiente),:host([degrade]:not([degrade="false"]):not([degrade="none"]):not([degrade="0"]):not([degrade="off"])),:host([gradiente]:not([gradiente="false"]):not([gradiente="none"]):not([gradiente="0"]):not([gradiente="off"])),:host([gradient]:not([gradient="false"]):not([gradient="none"]):not([gradient="0"]):not([gradient="off"])){--ui-fundo-elevado: var(--ui-gradiente-elevado)}', x = 8, z = 8, L = {
332
+ topo: "topo",
333
+ top: "topo",
334
+ baixo: "baixo",
335
+ bottom: "baixo",
336
+ esquerda: "esquerda",
337
+ left: "esquerda",
338
+ direita: "direita",
339
+ right: "direita"
340
+ };
341
+ function D(r) {
342
+ const s = (r ?? "").trim().toLowerCase();
343
+ return Object.prototype.hasOwnProperty.call(L, s) ? L[s] : "topo";
344
+ }
345
+ const p = (r) => Number.isFinite(r) ? r : 0;
346
+ function V(r, s, t, i) {
347
+ const e = p(s.width), a = p(s.height), n = p(r.left) + p(r.width) / 2, l = p(r.top) + p(r.height) / 2;
348
+ let c = 0, d = 0;
349
+ t === "topo" ? (c = p(r.top) - a - x, d = n - e / 2) : t === "baixo" ? (c = p(r.bottom) + x, d = n - e / 2) : t === "esquerda" ? (c = l - a / 2, d = p(r.left) - e - x) : (c = l - a / 2, d = p(r.right) + x);
350
+ const u = (b, h, f) => Math.max(z, Math.min(b, p(f) - h - z));
351
+ return {
352
+ top: Math.round(u(c, a, i.altura)),
353
+ left: Math.round(u(d, e, i.largura))
354
+ };
355
+ }
356
+ function P(r) {
357
+ return r instanceof DOMException && r.name === "InvalidStateError";
358
+ }
359
+ function J(r) {
360
+ const s = r;
361
+ if (typeof s.showPopover == "function")
362
+ try {
363
+ s.showPopover();
364
+ } catch (t) {
365
+ P(t) || console.warn("[ui-tooltip] Não foi possível abrir o balão como popover:", t);
366
+ }
367
+ }
368
+ function Z(r) {
369
+ const s = r;
370
+ if (typeof s.hidePopover == "function")
371
+ try {
372
+ s.hidePopover();
373
+ } catch (t) {
374
+ P(t) || console.warn("[ui-tooltip] Não foi possível fechar o balão como popover:", t);
375
+ }
376
+ }
377
+ const tt = 120;
378
+ class M extends y {
379
+ constructor() {
380
+ super();
381
+ o(this, "containerElement");
382
+ o(this, "bubbleElement");
383
+ /** Ouvintes do host: valem enquanto o elemento está conectado. */
384
+ o(this, "ouvintesHost", new _());
385
+ /** Ouvintes globais (documento/janela): valem só enquanto o balão está aberto. */
386
+ o(this, "ouvintesAberto", new _());
387
+ o(this, "_timerOcultar", null);
388
+ o(this, "_quadro", null);
389
+ /** Gatilho que recebeu `aria-description` deste tooltip (para remover depois). */
390
+ o(this, "_gatilhoDescrito", null);
391
+ o(this, "posicionarBubble", () => {
392
+ if (!this.aberto) return;
393
+ const t = D(this.getAttribute("posicao") || this.getAttribute("position")), { top: i, left: e } = V(
394
+ this.getBoundingClientRect(),
395
+ this.bubbleElement.getBoundingClientRect(),
396
+ t,
397
+ { largura: window.innerWidth, altura: window.innerHeight }
398
+ );
399
+ this.bubbleElement.style.top = `${i}px`, this.bubbleElement.style.left = `${e}px`;
400
+ });
401
+ o(this, "handleMouseEnter", () => {
402
+ const t = this.lerGatilho();
403
+ (t === "hover" || t === "passar-mouse") && (this.cancelarOcultar(), this.mostrar());
404
+ });
405
+ o(this, "handleMouseLeave", () => {
406
+ const t = this.lerGatilho();
407
+ (t === "hover" || t === "passar-mouse") && (this.cancelarOcultar(), this._timerOcultar = setTimeout(() => {
408
+ this._timerOcultar = null, this.ocultar();
409
+ }, tt));
410
+ });
411
+ /**
412
+ * Escape fecha o tooltip sem mover o foco (WCAG 1.4.13). Ouvido na captura e interrompido,
413
+ * para que dentro de um modal o primeiro Escape feche só o tooltip.
414
+ */
415
+ o(this, "handleEscape", (t) => {
416
+ t.key !== "Escape" || !this.aberto || (t.stopPropagation(), this.cancelarOcultar(), this.ocultar());
417
+ });
418
+ /** O clique do gatilho continua chegando aos ancestrais: o "clicar fora" já ignora cliques dentro do host. */
419
+ o(this, "handleClick", () => {
420
+ const t = typeof window.matchMedia == "function" && window.matchMedia("(pointer: coarse)").matches, i = this.lerGatilho();
421
+ (i === "clique" || i === "click" || t) && (this.aberto = !this.aberto);
422
+ });
423
+ o(this, "handleClickOutside", (t) => {
424
+ t.composedPath().includes(this) || this.ocultar();
425
+ });
426
+ const t = this.attachShadow({ mode: "open" });
427
+ t.innerHTML = `
428
+ <style>${K}</style>
429
+ <div class="ui-tooltip ui-tooltip--topo">
430
+ <slot></slot>
431
+ <div class="ui-tooltip__bubble" part="balao" role="tooltip" popover="manual">
432
+ <span class="ui-tooltip__texto" part="texto"></span>
433
+ <slot name="conteudo"></slot>
434
+ <span class="ui-tooltip__arrow" part="seta"></span>
435
+ </div>
436
+ </div>
437
+ `, this.containerElement = t.querySelector(".ui-tooltip"), this.bubbleElement = t.querySelector(".ui-tooltip__bubble"), t.querySelectorAll("slot").forEach((i) => i.addEventListener("slotchange", () => this.sincronizarDescricao()));
438
+ }
439
+ static get observedAttributes() {
440
+ return [
441
+ "texto",
442
+ "text",
443
+ "posicao",
444
+ "position",
445
+ "gatilho",
446
+ "trigger",
447
+ "aberto",
448
+ "open",
449
+ "disabled",
450
+ ...w
451
+ ];
452
+ }
453
+ connectedCallback() {
454
+ this.ouvintesHost.cleanup(), this.ouvintesHost.add(this, "mouseenter", this.handleMouseEnter), this.ouvintesHost.add(this, "mouseleave", this.handleMouseLeave), this.ouvintesHost.add(this, "focusin", this.handleMouseEnter), this.ouvintesHost.add(this, "focusout", this.handleMouseLeave), this.ouvintesHost.add(this, "click", this.handleClick), this.syncState();
455
+ }
456
+ disconnectedCallback() {
457
+ this.ouvintesHost.cleanup(), this.ouvintesAberto.cleanup(), this.cancelarOcultar(), this.cancelarQuadro(), this.removerDescricao(), this.ocultar();
458
+ }
459
+ attributeChangedCallback(t, i, e) {
460
+ this.syncState();
461
+ }
462
+ get aberto() {
463
+ return this.hasAttribute("aberto") || this.hasAttribute("open");
464
+ }
465
+ set aberto(t) {
466
+ t ? this.setAttribute("aberto", "") : (this.removeAttribute("aberto"), this.removeAttribute("open")), this.syncState();
467
+ }
468
+ get disabled() {
469
+ return this.hasAttribute("disabled");
470
+ }
471
+ set disabled(t) {
472
+ t ? this.setAttribute("disabled", "") : this.removeAttribute("disabled"), this.syncState();
473
+ }
474
+ mostrar() {
475
+ this.disabled || (this.aberto = !0);
476
+ }
477
+ ocultar() {
478
+ this.aberto = !1;
479
+ }
480
+ lerGatilho() {
481
+ return this.getAttribute("gatilho") || this.getAttribute("trigger") || "hover";
482
+ }
483
+ cancelarQuadro() {
484
+ this._quadro !== null && (cancelAnimationFrame(this._quadro), this._quadro = null);
485
+ }
486
+ syncState() {
487
+ var n;
488
+ const t = this.aberto && !this.disabled, i = D(this.getAttribute("posicao") || this.getAttribute("position")), e = this.getAttribute("texto") || this.getAttribute("text") || "", a = (n = this.shadowRoot) == null ? void 0 : n.querySelector(".ui-tooltip__texto");
489
+ this.containerElement.className = `ui-tooltip ui-tooltip--${i}`, v(this, this.bubbleElement), a && (a.textContent = e, a.style.display = e ? "inline" : "none"), this.sincronizarDescricao(), t ? this.abrirBalao() : this.fecharBalao();
490
+ }
491
+ abrirBalao() {
492
+ this.ouvintesAberto.size === 0 && (this.ouvintesAberto.add(document, "click", this.handleClickOutside), this.ouvintesAberto.add(document, "keydown", this.handleEscape, !0), this.ouvintesAberto.add(window, "scroll", this.posicionarBubble, { capture: !0, passive: !0 }), this.ouvintesAberto.add(window, "resize", this.posicionarBubble, { passive: !0 })), J(this.bubbleElement), this.containerElement.classList.add("ui-tooltip--visivel"), this.cancelarQuadro(), this._quadro = requestAnimationFrame(() => {
493
+ this._quadro = null, this.posicionarBubble();
494
+ });
495
+ }
496
+ fecharBalao() {
497
+ this.ouvintesAberto.cleanup(), this.cancelarQuadro(), Z(this.bubbleElement), this.containerElement.classList.remove("ui-tooltip--visivel");
498
+ }
499
+ cancelarOcultar() {
500
+ this._timerOcultar && (clearTimeout(this._timerOcultar), this._timerOcultar = null);
501
+ }
502
+ /**
503
+ * O balão vive no Shadow DOM, fora do alcance de `aria-describedby` do gatilho (light DOM).
504
+ * O texto é exposto como `aria-description` no gatilho, sem sobrescrever uma descrição do consumidor.
505
+ */
506
+ sincronizarDescricao() {
507
+ var a;
508
+ if (!this.isConnected) {
509
+ this.removerDescricao();
510
+ return;
511
+ }
512
+ const t = Array.from(this.children).find((n) => !n.hasAttribute("slot")), i = (this.getAttribute("texto") || this.getAttribute("text") || ((a = this.querySelector('[slot="conteudo"]')) == null ? void 0 : a.textContent) || "").replace(/\s+/g, " ").trim();
513
+ this._gatilhoDescrito && this._gatilhoDescrito !== t && this.removerDescricao(), !(!t || this._gatilhoDescrito !== t && (t.hasAttribute("aria-describedby") || t.hasAttribute("aria-description"))) && (i && !this.disabled ? (t.setAttribute("aria-description", i), this._gatilhoDescrito = t) : this.removerDescricao());
514
+ }
515
+ removerDescricao() {
516
+ var t;
517
+ (t = this._gatilhoDescrito) == null || t.removeAttribute("aria-description"), this._gatilhoDescrito = null;
518
+ }
519
+ }
520
+ class et extends M {
521
+ }
522
+ m("ui-tooltip", M);
523
+ m("ui-popover", et);
524
+ const it = ':host{display:block;box-sizing:border-box}:host([inline]){display:inline-block}.ui-skeleton{background:var(--ui-degrade-interno, var(--ui-skeleton-fundo, var(--ui-fundo-elevado, var(--ui-cor-fundo-elevado, #1e1e24))));border-radius:var(--ui-raio-borda, 6px);position:relative;overflow:hidden;box-sizing:border-box}.ui-skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(90deg,#fff0,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent),#fff0);background-size:200% 100%;background-repeat:no-repeat;animation:ui-skeleton-shimmer 1.6s ease-in-out infinite}@keyframes ui-skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.ui-skeleton--pulso{animation:ui-skeleton-pulse 1.8s ease-in-out infinite}.ui-skeleton--pulso:after{display:none}@keyframes ui-skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}.ui-skeleton--estatico{animation:none}.ui-skeleton--estatico:after{display:none}.ui-skeleton--texto{height:1.1em;border-radius:var(--ui-raio-sm, 4px)}.ui-skeleton--circular{border-radius:50%!important;aspect-ratio:1;width:var(--ui-skeleton-largura, 40px);height:var(--ui-skeleton-altura, 40px)}.ui-skeleton--retangular{border-radius:var(--ui-raio-borda, 6px);min-height:20px}.ui-skeleton__linhas{display:flex;flex-direction:column;gap:8px;width:100%}.ui-skeleton__linhas .ui-skeleton{width:100%}.ui-skeleton__linhas .ui-skeleton:last-child:not(:first-child){width:65%}.ui-skeleton--card{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--ui-raio-borda, 10px);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-degrade-interno, var(--ui-skeleton-fundo, var(--ui-fundo-card, var(--ui-cor-fundo-card, #18181c))));animation:none}.ui-skeleton--card:after{display:none}.ui-skeleton__card-media{width:100%;height:120px;border-radius:6px}.ui-skeleton__card-header{display:flex;align-items:center;gap:10px}.ui-skeleton__card-avatar{width:36px;height:36px;border-radius:50%;flex-shrink:0}.ui-skeleton__card-title{width:50%;height:16px}@media (prefers-reduced-motion: reduce){.ui-skeleton{animation:none!important;opacity:.7}.ui-skeleton:after{display:none!important}}:host(.degrade),:host(.ui-degrade),:host(.gradiente),:host(.ui-gradiente),:host([degrade]:not([degrade="false"]):not([degrade="none"]):not([degrade="0"]):not([degrade="off"])),:host([gradiente]:not([gradiente="false"]):not([gradiente="none"]):not([gradiente="0"]):not([gradiente="off"])),:host([gradient]:not([gradient="false"]):not([gradient="none"]):not([gradient="0"]):not([gradient="off"])){--ui-fundo-elevado: var(--ui-gradiente-elevado);--ui-fundo-card: var(--ui-gradiente-card)}', ot = 100;
525
+ class I extends y {
526
+ constructor() {
527
+ super();
528
+ o(this, "rootElement");
529
+ /** O que este componente escreveu em aria-hidden / role (para não sobrescrever o consumidor). */
530
+ o(this, "_ocultoAuto", !1);
531
+ o(this, "_papelAuto", !1);
532
+ o(this, "_sincronizando", !1);
533
+ const t = this.attachShadow({ mode: "open" });
534
+ t.innerHTML = `
535
+ <style>${it}</style>
536
+ <div class="ui-skeleton-container"></div>
537
+ `, this.rootElement = t.querySelector(".ui-skeleton-container");
538
+ }
539
+ static get observedAttributes() {
540
+ return [
541
+ "variante",
542
+ "variant",
543
+ "largura",
544
+ "width",
545
+ "altura",
546
+ "height",
547
+ "raio",
548
+ "radius",
549
+ "linhas",
550
+ "lines",
551
+ "count",
552
+ "animado",
553
+ "animated",
554
+ "aria-label",
555
+ ...w
556
+ ];
557
+ }
558
+ connectedCallback() {
559
+ this.sincronizarAcessibilidade(), this.syncState();
560
+ }
561
+ attributeChangedCallback(t, i, e) {
562
+ this._sincronizando || (this.sincronizarAcessibilidade(), this.syncState());
563
+ }
564
+ /**
565
+ * Decorativo por padrão (`aria-hidden`). Com `aria-label` vira uma região de status anunciável
566
+ * ("Carregando tabela"). O que o consumidor definiu em aria-hidden/role é preservado.
567
+ */
568
+ sincronizarAcessibilidade() {
569
+ this._sincronizando = !0;
570
+ const t = !!this.getAttribute("aria-label"), i = this.hasAttribute("aria-hidden") && !this._ocultoAuto;
571
+ t ? (this._ocultoAuto && this.removeAttribute("aria-hidden"), this._ocultoAuto = !1, this.hasAttribute("role") || (this.setAttribute("role", "status"), this._papelAuto = !0)) : (this._papelAuto && this.removeAttribute("role"), this._papelAuto = !1, i || (this.setAttribute("aria-hidden", "true"), this._ocultoAuto = !0)), this._sincronizando = !1;
572
+ }
573
+ get variante() {
574
+ const t = (this.getAttribute("variante") || this.getAttribute("variant") || "texto").toLowerCase();
575
+ return t === "circulo" || t === "circular" ? "circular" : t === "retangulo" || t === "retangular" ? "retangular" : t === "card" ? "card" : "texto";
576
+ }
577
+ set variante(t) {
578
+ this.setAttribute("variante", t);
579
+ }
580
+ get animado() {
581
+ const t = (this.getAttribute("animado") || this.getAttribute("animated") || "shimmer").toLowerCase();
582
+ return t === "pulse" || t === "pulso" ? "pulso" : t === "none" || t === "nenhum" || t === "estatico" ? "nenhum" : "shimmer";
583
+ }
584
+ set animado(t) {
585
+ this.setAttribute("animado", t);
586
+ }
587
+ get linhas() {
588
+ const t = parseInt(this.getAttribute("linhas") || this.getAttribute("lines") || this.getAttribute("count") || "1", 10);
589
+ return isNaN(t) || t < 1 ? 1 : Math.min(t, ot);
590
+ }
591
+ set linhas(t) {
592
+ this.setAttribute("linhas", String(t));
593
+ }
594
+ syncState() {
595
+ const t = this.variante, i = this.animado, e = this.getAttribute("largura") || this.getAttribute("width"), a = this.getAttribute("altura") || this.getAttribute("height"), n = this.getAttribute("raio") || this.getAttribute("radius"), l = this.linhas;
596
+ this.rootElement.innerHTML = "";
597
+ const c = i === "pulso" ? "ui-skeleton--pulso" : i === "nenhum" ? "ui-skeleton--estatico" : "";
598
+ if (t === "card") {
599
+ const u = document.createElement("div");
600
+ u.className = "ui-skeleton ui-skeleton--card", u.setAttribute("part", "base");
601
+ const b = document.createElement("div");
602
+ b.className = `ui-skeleton ui-skeleton__card-media ${c}`, b.setAttribute("part", "midia");
603
+ const h = document.createElement("div");
604
+ h.className = "ui-skeleton__card-header";
605
+ const f = document.createElement("div");
606
+ f.className = `ui-skeleton ui-skeleton__card-avatar ${c}`, f.setAttribute("part", "avatar");
607
+ const A = document.createElement("div");
608
+ A.className = `ui-skeleton ui-skeleton__card-title ${c}`, A.setAttribute("part", "titulo"), h.appendChild(f), h.appendChild(A);
609
+ const E = document.createElement("div");
610
+ E.className = "ui-skeleton__linhas";
611
+ for (let T = 0; T < 2; T++) {
612
+ const C = document.createElement("div");
613
+ C.className = `ui-skeleton ui-skeleton--texto ${c}`, C.setAttribute("part", "linha"), E.appendChild(C);
614
+ }
615
+ u.appendChild(b), u.appendChild(h), u.appendChild(E), this.rootElement.appendChild(u), v(this, this.rootElement);
616
+ return;
617
+ }
618
+ if (l > 1 && t === "texto") {
619
+ const u = document.createElement("div");
620
+ u.className = "ui-skeleton__linhas", u.setAttribute("part", "base");
621
+ for (let b = 0; b < l; b++) {
622
+ const h = document.createElement("div");
623
+ h.className = `ui-skeleton ui-skeleton--texto ${c}`, h.setAttribute("part", "linha"), a && (h.style.height = isNaN(Number(a)) ? a : `${a}px`), n && (h.style.borderRadius = isNaN(Number(n)) ? n : `${n}px`), u.appendChild(h);
624
+ }
625
+ e && (u.style.width = isNaN(Number(e)) ? e : `${e}px`), this.rootElement.appendChild(u), v(this, this.rootElement);
626
+ return;
627
+ }
628
+ const d = document.createElement("div");
629
+ d.className = `ui-skeleton ui-skeleton--${t} ${c}`.trim(), d.setAttribute("part", "base"), e && (d.style.width = isNaN(Number(e)) ? e : `${e}px`), a && (d.style.height = isNaN(Number(a)) ? a : `${a}px`), n && (d.style.borderRadius = isNaN(Number(n)) ? n : `${n}px`), this.rootElement.appendChild(d), v(this, this.rootElement);
630
+ }
631
+ }
632
+ class rt extends I {
633
+ }
634
+ m("ui-skeleton", I);
635
+ m("ui-esqueleto", rt);
636
+ export {
637
+ N as I,
638
+ R as U,
639
+ g as a,
640
+ rt as b,
641
+ X as c,
642
+ Y as d,
643
+ et as e,
644
+ U as f,
645
+ I as g,
646
+ k as h,
647
+ M as i,
648
+ j,
649
+ G as k,
650
+ F as l,
651
+ q as o,
652
+ W as r
653
+ };