@thibezer/ui-components-kit 2.6.0 → 2.6.1

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.
@@ -1,111 +0,0 @@
1
- "use strict";var O=Object.defineProperty;var L=(c,o,e)=>o in c?O(c,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):c[o]=e;var l=(c,o,e)=>L(c,typeof o!="symbol"?o+"":o,e);const z=require("./ssr-safe-CiHD1adl.cjs"),A=require("./listener-bag-D5omxZ9h.cjs"),S=["#00e08a","#38bdf8","#3b82f6","#6366f1","#a855f7","#ec4899","#ef4444","#f97316","#eab308","#84cc16","#14b8a6","#ffffff","#94a3b8","#0f172a"];function x(c){if(typeof c!="string")return null;const o=c.trim().toLowerCase();if(o==="none"||o==="transparent")return"none";if(/^#[0-9a-f]{6}$/.test(o))return o;const e=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(o);return e?`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`:null}function w(c,o=.35){const e=typeof c=="string"?parseFloat(c):Number(c);return Number.isFinite(e)?Math.max(0,Math.min(1,e)):o}function C(c){if(!Array.isArray(c))return[];const o=new Set;for(const e of c){const t=x(e);t&&t!=="none"&&o.add(t)}return[...o]}function $(c){return String(c??"").replace(/[&<>"']/g,o=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[o])}const B=':host{position:fixed;top:0;left:0;z-index:var(--ui-seletor-cor-z, 10000);display:block;width:260px;max-height:calc(100vh - 20px);overflow-y:auto;box-sizing:border-box;padding:12px;background:var(--ui-seletor-cor-fundo, rgba(18, 18, 24, .95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.14);border-radius:12px;box-shadow:0 16px 40px #000000b3,0 2px 8px #0006;color:#f1f5f9;font-family:var(--ui-fonte-base, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:12px;-webkit-user-select:none;user-select:none;animation:ui-seletor-cor-entrada .18s cubic-bezier(.16,1,.3,1)}:host([hidden]){display:none}*,*:before,*:after{box-sizing:border-box}@keyframes ui-seletor-cor-entrada{0%{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}button{font-family:inherit}.cabecalho{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08)}.titulo{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.titulo svg{flex-shrink:0}.fechar{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;padding:0;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:14px;cursor:pointer;transition:all .15s ease}.fechar:hover{background:#ffffff1a;color:#fff}.abas{display:flex;gap:2px;margin-bottom:10px;padding:2px;background:#00000059;border:1px solid rgba(255,255,255,.08);border-radius:7px}.aba{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 6px;background:transparent;border:none;border-radius:5px;color:#94a3b8;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s ease}.aba:hover{background:#ffffff0f;color:#fff}.aba[aria-selected=true]{background:#ffffff24;color:#fff;box-shadow:0 1px 3px #0000004d}.aba-amostra{width:10px;height:10px;border-radius:2px}.aba-amostra--traco{border:2px solid #ffffff;background:transparent}.previa{display:flex;height:32px;margin-bottom:10px;overflow:hidden;background:#1e1e24;border:1px solid rgba(255,255,255,.15);border-radius:6px;box-shadow:inset 0 1px 3px #0006}.previa-metade{flex:1;position:relative;display:flex;align-items:center;justify-content:center;background-image:linear-gradient(45deg,#2a2a33 25%,transparent 25%),linear-gradient(-45deg,#2a2a33 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a33 75%),linear-gradient(-45deg,transparent 75%,#2a2a33 75%);background-size:10px 10px;background-position:0 0,0 5px,5px -5px,-5px 0}.previa-cor{position:absolute;top:0;right:0;bottom:0;left:0;transition:background-color .12s ease}.previa-cor--sem-cor{background:transparent!important}.previa-cor--sem-cor:after{content:"";position:absolute;top:50%;left:10%;width:80%;height:2px;background:#ef4444;transform:rotate(-30deg)}.previa-metade span{position:relative;z-index:2;font-size:9.5px;font-weight:600;color:#ffffffd9;text-shadow:0 1px 2px rgba(0,0,0,.9)}.linha-hex{display:flex;align-items:center;gap:8px;margin-bottom:10px}.hex{flex:1;position:relative;display:flex;align-items:center}.hex-prefixo{position:absolute;left:8px;color:#64748b;font-weight:600;pointer-events:none}.hex input{width:100%;padding:5px 8px 5px 20px;background:#0006;border:1px solid rgba(255,255,255,.18);border-radius:6px;outline:none;color:#fff;font-family:var(--ui-fonte-codigo, monospace);font-size:12px;text-transform:uppercase;-webkit-user-select:text;user-select:text;transition:border-color .15s ease}.hex input:focus{border-color:var(--ui-cor-primaria, #00e08a)}.nativo{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;overflow:hidden;background:#ffffff0d;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#cbd5e1;cursor:pointer}.nativo:hover{border-color:#ffffff80}.nativo input{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;width:150%;height:150%;opacity:0;cursor:pointer}.opacidade{margin-bottom:10px;padding:8px;background:#00000040;border:1px solid rgba(255,255,255,.06);border-radius:8px}.opacidade[hidden]{display:none}.opacidade-cabecalho{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;color:#cbd5e1;font-size:11px}.opacidade-valor{font-weight:700;color:var(--ui-cor-primaria, #00e08a)}.opacidade input[type=range]{width:100%;height:6px;margin:0;background:#ffffff2e;border-radius:3px;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.opacidade input[type=range]::-webkit-slider-thumb{width:14px;height:14px;background:#fff;border:2px solid var(--ui-cor-primaria, #00e08a);border-radius:50%;box-shadow:0 1px 4px #0009;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.opacidade input[type=range]::-moz-range-thumb{width:12px;height:12px;background:#fff;border:2px solid var(--ui-cor-primaria, #00e08a);border-radius:50%;cursor:pointer}.opacidade-atalhos{display:flex;gap:4px;margin-top:6px}.opacidade-atalhos button{flex:1;padding:2px 0;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:4px;color:#94a3b8;font-size:10px;text-align:center;cursor:pointer;transition:all .12s ease}.opacidade-atalhos button:hover{background:#ffffff24;color:#fff}.opacidade-atalhos button.ativo{background:var(--ui-cor-primaria, #00e08a);border-color:var(--ui-cor-primaria, #00e08a);color:#0f172a;font-weight:700}.rotulo-secao{margin:8px 0 5px;color:#94a3b8;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.amostras{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:8px}.amostra{position:relative;aspect-ratio:1;padding:0;border:1px solid rgba(255,255,255,.2);border-radius:4px;cursor:pointer;transition:transform .12s ease,border-color .12s ease}.amostra:hover{z-index:2;border-color:#fff;transform:scale(1.15)}.amostra.ativo{border:2px solid #ffffff;box-shadow:0 0 0 1.5px var(--ui-cor-primaria, #00e08a)}.sem-cor{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:6px;padding:6px;background:#ef44441f;border:1px solid rgba(239,68,68,.35);border-radius:6px;color:#fca5a5;font-size:11.5px;font-weight:600;cursor:pointer;transition:all .15s ease}.sem-cor:hover{background:#ef444438;border-color:#ef4444;color:#fff}.sem-cor.ativo{background:#ef4444;border-color:#ef4444;color:#fff}.rodape{display:flex;justify-content:flex-end;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid rgba(255,255,255,.08)}.rodape button{padding:4px 10px;border:none;border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;transition:all .15s ease}.botao-concluir{background:var(--ui-cor-primaria, #00e08a);color:#0f172a}.botao-concluir:hover{filter:brightness(1.1)}.botao-cancelar{background:#ffffff14;color:#94a3b8}.botao-cancelar:hover{background:#ffffff26;color:#fff}button:focus-visible,input:focus-visible{outline:2px solid var(--ui-cor-primaria, #00e08a);outline-offset:1px}',D=[.25,.35,.5,.75,1];class P extends z.SafeHTMLElement{constructor(){super();l(this,"raiz");l(this,"listeners",new A.ListenerBag);l(this,"_titulo","Seletor de cor");l(this,"_duplo",!0);l(this,"_alvo","preenchimento");l(this,"_preenchimento","#00e08a");l(this,"_traco","#ffffff");l(this,"_opacidade",.35);l(this,"_mostrarOpacidade");l(this,"_misto",!1);l(this,"_coresProjeto",[]);l(this,"_paleta",[...S]);l(this,"inicial",{preenchimento:"#00e08a",traco:"#ffffff",opacidade:.35});this.raiz=this.attachShadow({mode:"open"})}connectedCallback(){this.hasAttribute("role")||this.setAttribute("role","dialog"),this.renderizar()}disconnectedCallback(){this.listeners.cleanup()}configurar(e={}){this._titulo=e.titulo||"Seletor de cor";const t=e.preenchimento!==void 0&&e.traco!==void 0;this._duplo=e.modo?e.modo==="duplo":t,this._alvo=e.alvo==="traco"?"traco":"preenchimento";const a=x(e.cor);this._preenchimento=x(e.preenchimento)??(this._alvo==="preenchimento"?a:null)??"#00e08a",this._traco=x(e.traco)??(this._alvo==="traco"?a:null)??"#ffffff",this._opacidade=w(e.opacidade),this._mostrarOpacidade=e.mostrarOpacidade,this._misto=e.misto===!0,this._coresProjeto=C(e.coresProjeto),this._paleta=e.paleta?C(e.paleta):[...S],this.inicial={preenchimento:this._preenchimento,traco:this._traco,opacidade:this._opacidade},this.isConnected&&this.renderizar()}get alvo(){return this._alvo}get cor(){return this._alvo==="traco"?this._traco:this._preenchimento}get opacidade(){return this._opacidade}obterEstado(){return{alvo:this._alvo,cor:this.cor,preenchimento:this._preenchimento,traco:this._traco,opacidade:this._opacidade}}trocarAlvo(e){const t=e==="traco"?"traco":"preenchimento";!this._duplo||t===this._alvo||(this._alvo=t,this.atualizarVisual(),this.emitir("ui-alvo-change",{alvo:t}))}definirCor(e){const t=x(e);t&&(this._alvo==="traco"?this._traco=t:this._preenchimento=t,this._misto=!1,this.atualizarVisual(),this.emitir("ui-cor-input",this.obterEstado()))}definirOpacidade(e){this._opacidade=w(e,this._opacidade),this.atualizarVisual(),this.emitir("ui-cor-input",this.obterEstado())}confirmar(){this.emitir("ui-cor-confirmar",this.obterEstado())}cancelar(){this._preenchimento=this.inicial.preenchimento,this._traco=this.inicial.traco,this._opacidade=this.inicial.opacidade,this.atualizarVisual(),this.emitir("ui-cor-input",this.obterEstado()),this.emitir("ui-cor-cancelar",this.obterEstado())}get opacidadeVisivel(){return this._mostrarOpacidade??this._alvo==="preenchimento"}renderizar(){this.listeners.cleanup();const e=t=>t.map(a=>`
2
- <button type="button" class="amostra" data-cor="${a}" style="background-color: ${a};" title="${a.toUpperCase()}" aria-label="Cor ${a.toUpperCase()}"></button>
3
- `).join("");this.raiz.innerHTML=`
4
- <style>${B}</style>
5
- <div class="cabecalho">
6
- <span class="titulo">
7
- <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
8
- <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
9
- </svg>
10
- <span>${$(this._titulo)}</span>
11
- </span>
12
- <button type="button" class="fechar" data-acao="fechar" title="Fechar (Esc)" aria-label="Fechar">✕</button>
13
- </div>
14
-
15
- ${this._duplo?`
16
- <div class="abas" role="tablist" aria-label="Alvo da cor">
17
- <button type="button" class="aba" role="tab" data-alvo="preenchimento" title="Preenchimento">
18
- <span class="aba-amostra aba-amostra--preenchimento"></span>
19
- Preenchimento
20
- </button>
21
- <button type="button" class="aba" role="tab" data-alvo="traco" title="Traço / contorno">
22
- <span class="aba-amostra aba-amostra--traco"></span>
23
- Traço
24
- </button>
25
- </div>
26
- `:""}
27
-
28
- <div class="previa">
29
- <div class="previa-metade" title="Cor original">
30
- <div class="previa-cor previa-cor--original"></div>
31
- <span>ORIGINAL</span>
32
- </div>
33
- <div class="previa-metade" title="Nova cor">
34
- <div class="previa-cor previa-cor--nova"></div>
35
- <span class="previa-rotulo-nova">NOVA</span>
36
- </div>
37
- </div>
38
-
39
- <div class="linha-hex">
40
- <label class="hex">
41
- <span class="hex-prefixo">#</span>
42
- <input type="text" class="hex-entrada" maxlength="7" spellcheck="false" autocomplete="off" aria-label="Cor em hexadecimal" />
43
- </label>
44
- <label class="nativo" title="Abrir o seletor de cor do sistema">
45
- <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
46
- <circle cx="12" cy="12" r="10"/>
47
- <path d="M12 2a10 10 0 0 1 10 10"/>
48
- </svg>
49
- <input type="color" class="nativo-entrada" aria-label="Seletor de cor do sistema" />
50
- </label>
51
- </div>
52
-
53
- <div class="opacidade">
54
- <div class="opacidade-cabecalho">
55
- <span>Opacidade do preenchimento</span>
56
- <span class="opacidade-valor"></span>
57
- </div>
58
- <input type="range" class="opacidade-entrada" min="0" max="100" step="1" aria-label="Opacidade do preenchimento" />
59
- <div class="opacidade-atalhos">
60
- ${D.map(t=>`<button type="button" data-opacidade="${t}">${Math.round(t*100)}%</button>`).join("")}
61
- </div>
62
- </div>
63
-
64
- ${this._coresProjeto.length?`
65
- <div class="rotulo-secao">Cores do projeto</div>
66
- <div class="amostras">${e(this._coresProjeto)}</div>
67
- `:""}
68
-
69
- ${this._paleta.length?`
70
- <div class="rotulo-secao">Paleta padrão</div>
71
- <div class="amostras">${e(this._paleta)}</div>
72
- `:""}
73
-
74
- <button type="button" class="sem-cor" data-cor="none" title="Sem cor (vazado / transparente)">
75
- <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
76
- <circle cx="12" cy="12" r="9"/>
77
- <line x1="5.5" y1="5.5" x2="18.5" y2="18.5"/>
78
- </svg>
79
- Sem cor (vazado / transparente)
80
- </button>
81
-
82
- <div class="rodape">
83
- <button type="button" class="botao-cancelar" data-acao="cancelar">Cancelar</button>
84
- <button type="button" class="botao-concluir" data-acao="concluir">Concluir</button>
85
- </div>
86
- `,this.vincularEventos(),this.atualizarVisual()}atualizarVisual(){var E;const e=f=>this.raiz.querySelector(f),t=this.cor,a=t==="none";this.raiz.querySelectorAll("[data-alvo]").forEach(f=>{f.setAttribute("aria-selected",String(f.dataset.alvo===this._alvo))});const r=e(".aba-amostra--preenchimento");r&&(r.style.backgroundColor=this._preenchimento==="none"?"transparent":this._preenchimento);const n=e(".aba-amostra--traco");n&&(n.style.borderColor=this._traco==="none"?"#ef4444":this._traco);const s=e(".opacidade");s&&(s.hidden=!this.opacidadeVisivel);const d=(f,_)=>String(f?_:1),u=(f,_,M)=>{f&&(f.classList.toggle("previa-cor--sem-cor",_==="none"),f.style.backgroundColor=_==="none"?"":_,f.style.opacity=_==="none"?"":M)},h=this._alvo==="preenchimento",m=h?this.inicial.preenchimento:this.inicial.traco;u(e(".previa-cor--original"),m,d(h,this.inicial.opacidade)),u(e(".previa-cor--nova"),t,d(h,this._opacidade));const i=e(".previa-rotulo-nova");i&&(i.textContent=this._misto?"MISTO (?)":"NOVA");const p=e(".hex-entrada");p&&this.raiz.activeElement!==p&&(p.value=a?"":t.slice(1).toUpperCase(),p.placeholder=a?"NENHUM":"00E08A");const b=e(".nativo-entrada");b&&(b.value=a?"#00e08a":t);const v=Math.round(this._opacidade*100),k=e(".opacidade-entrada");k&&(k.value=String(v));const y=e(".opacidade-valor");y&&(y.textContent=`${v}%`),this.raiz.querySelectorAll("[data-opacidade]").forEach(f=>{f.classList.toggle("ativo",Math.abs(Number(f.dataset.opacidade)-this._opacidade)<.02)}),this.raiz.querySelectorAll(".amostra").forEach(f=>{f.classList.toggle("ativo",f.dataset.cor===t)}),(E=e(".sem-cor"))==null||E.classList.toggle("ativo",a)}vincularEventos(){const e=this.raiz;e.querySelectorAll("[data-alvo]").forEach(s=>{this.listeners.add(s,"click",()=>this.trocarAlvo(s.dataset.alvo))}),e.querySelectorAll("[data-cor]").forEach(s=>{this.listeners.add(s,"click",()=>this.definirCor(s.dataset.cor||""))}),e.querySelectorAll("[data-opacidade]").forEach(s=>{this.listeners.add(s,"click",()=>this.definirOpacidade(Number(s.dataset.opacidade)))});const t=e.querySelector(".opacidade-entrada");this.listeners.add(t,"input",()=>this.definirOpacidade(Number(t.value)/100));const a=e.querySelector(".hex-entrada"),r=s=>{const d=a.value.trim().replace(/^#/,"");(/^[0-9a-f]{6}$/i.test(d)||s&&/^[0-9a-f]{3}$/i.test(d))&&this.definirCor(`#${d}`)};this.listeners.add(a,"input",()=>r(!1)),this.listeners.add(a,"change",()=>{r(!0),this.atualizarVisual()}),this.listeners.add(a,"keydown",s=>{s.key==="Enter"&&(s.preventDefault(),r(!0),this.confirmar())});const n=e.querySelector(".nativo-entrada");this.listeners.add(n,"input",()=>this.definirCor(n.value)),this.listeners.add(e.querySelector('[data-acao="fechar"]'),"click",()=>this.confirmar()),this.listeners.add(e.querySelector('[data-acao="concluir"]'),"click",()=>this.confirmar()),this.listeners.add(e.querySelector('[data-acao="cancelar"]'),"click",()=>this.cancelar())}emitir(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))}}z.definirCustomElement("ui-seletor-cor",P);let g=null;function j(c){g==null||g.descartar();const o=document.createElement("ui-seletor-cor"),{ancora:e,aoAlterar:t,aoConfirmar:a,aoCancelar:r,aoTrocarAlvo:n,...s}=c;o.configurar(s);const d=new A.ListenerBag;let u=!0;const h=()=>u?(u=!1,d.cleanup(),o.remove(),g===m&&(g=null),!0):!1,m={elemento:o,get aberto(){return u},fechar(i=!0){i?o.confirmar():h()},descartar(){h()}};return d.add(o,"ui-cor-input",i=>t==null?void 0:t(i.detail)),d.add(o,"ui-cor-confirmar",i=>{h()&&(a==null||a(i.detail))}),d.add(o,"ui-cor-cancelar",i=>{h()&&(r==null||r(i.detail))}),d.add(o,"ui-alvo-change",i=>n==null?void 0:n(i.detail.alvo)),d.add(o,"pointerdown",i=>i.stopPropagation()),d.add(o,"click",i=>i.stopPropagation()),document.body.appendChild(o),T(o,e),g=m,d.add(window,"pointerdown",i=>{const p=i.composedPath();!p.includes(o)&&!p.includes(e)&&m.fechar(!0)},!0),d.add(window,"keydown",i=>{var b,v;if(i.key==="Escape"){i.preventDefault(),i.stopPropagation(),m.fechar(!0);return}const p=(v=(b=i.composedPath()[0])==null?void 0:b.matches)==null?void 0:v.call(b,'input[type="text"]');(i.key==="x"||i.key==="X")&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&!i.shiftKey&&!p&&(i.preventDefault(),i.stopPropagation(),o.trocarAlvo(o.alvo==="preenchimento"?"traco":"preenchimento"))},!0),m}function N(c=!0){g==null||g.fechar(c)}function T(c,o){const t=o.getBoundingClientRect(),a=c.offsetWidth,r=c.offsetHeight;let n=t.right+10;n+a>window.innerWidth-10&&(n=Math.max(10,t.left-a-10));let s=t.top;s+r>window.innerHeight-10&&(s=Math.max(10,window.innerHeight-r-10)),c.style.left=`${Math.round(n)}px`,c.style.top=`${Math.round(s)}px`}const H=':host{display:inline-block;flex-shrink:0;-webkit-user-select:none;user-select:none}:host([hidden]){display:none}*,*:before,*:after{box-sizing:border-box}.pilha{position:relative;width:34px;height:34px}.amostra{position:absolute;width:20px;height:20px;padding:0;background:#2a2a31;border:1px solid rgba(255,255,255,.28);border-radius:5px;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.amostra--traco{right:0;bottom:0;z-index:1}.amostra--preenchimento{top:0;left:0;z-index:2;box-shadow:0 2px 6px #00000080}.amostra:hover{border-color:#fff9;transform:scale(1.06)}.amostra:focus-visible{outline:none;border-color:#ffffffd9}.amostra--ativa{z-index:3;border-color:var(--ui-cor-primaria, #00e08a);box-shadow:0 0 0 1.5px var(--ui-cor-primaria, #00e08a),0 2px 6px #00000080}:host([so-traco]) .amostra--preenchimento{opacity:.4}.face{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:3px;pointer-events:none}.face--traco{background:transparent;border:4px solid #ffffff}.face--sem-cor{background:repeating-conic-gradient(#33333d,#33333d 25%,#222228 0%,#222228 50%) 50% / 4px 4px!important;border-color:#ef444480!important}.face--sem-cor:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top right,transparent calc(50% - 1px),#ef4444 calc(50% - 1px),#ef4444 calc(50% + 1px),transparent calc(50% + 1px));pointer-events:none}.face--misto{display:flex;align-items:center;justify-content:center;background:#2e2e38!important;border-color:#64748b!important}.face--misto:after{content:"?";color:#fff;font-size:11px;font-weight:800;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.8)}.canto{position:absolute;z-index:4;display:flex;align-items:center;justify-content:center;width:13px;height:13px;padding:0;background:transparent;border:0;border-radius:3px;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;transition:color .15s ease,background .15s ease}.canto:hover{background:#ffffff1a;color:var(--ui-cor-primaria, #00e08a)}.canto:focus-visible{outline:1px solid var(--ui-cor-primaria, #00e08a)}.canto--inverter{top:0;right:0}.canto--inverter svg{width:11px;height:11px}.canto--padrao{left:0;bottom:0}.ponto{position:absolute;width:7px;height:7px;border-radius:1.5px}.ponto--preenchimento{top:1px;left:1px;background:#00e08a;border:1px solid rgba(255,255,255,.5)}.ponto--traco{right:1px;bottom:1px;background:transparent;border:1.5px solid #ffffff}.canto--sem-cor{left:11px;bottom:0}.canto--sem-cor svg{width:10px;height:10px}.canto--sem-cor:hover{background:#ef444433;color:#ef4444}:host([desabilitado]) .pilha{opacity:.5;pointer-events:none}';class q extends z.SafeHTMLElement{constructor(){super();l(this,"raiz");l(this,"listeners",new A.ListenerBag);l(this,"renderizado",!1);l(this,"_preenchimento","#00e08a");l(this,"_traco","#ffffff");l(this,"_opacidade",.35);l(this,"_alvo","preenchimento");l(this,"_misto",{preenchimento:!1,traco:!1});l(this,"_padrao",{preenchimento:"#00e08a",traco:"#ffffff"});l(this,"_coresProjeto",[]);l(this,"_atalhos",{});l(this,"seletor",null);l(this,"estadoAoAbrir",null);this.raiz=this.attachShadow({mode:"open"})}static get observedAttributes(){return["preenchimento","traco","opacidade","alvo","padrao-preenchimento","padrao-traco"]}connectedCallback(){this.renderizado||this.renderizar(),this.listeners.cleanup(),this.vincularEventos(),this.atualizar()}disconnectedCallback(){this.fecharSeletor(!0),this.listeners.cleanup()}attributeChangedCallback(e,t,a){if(!(t===a||a===null)){if(e==="preenchimento")this.definirCores({preenchimento:a});else if(e==="traco")this.definirCores({traco:a});else if(e==="opacidade")this.definirCores({opacidade:Number(a)});else if(e==="alvo")this.definirAlvo(a);else if(e==="padrao-preenchimento"||e==="padrao-traco"){const r=x(a);if(!r)return;e==="padrao-preenchimento"?this._padrao.preenchimento=r:this._padrao.traco=r,this.atualizar()}}}get preenchimento(){return this._preenchimento}set preenchimento(e){this.definirCores({preenchimento:e})}get traco(){return this._traco}set traco(e){this.definirCores({traco:e})}get opacidade(){return this._opacidade}set opacidade(e){this.definirCores({opacidade:e})}get alvo(){return this._alvo}set alvo(e){this.definirAlvo(e)}get coresProjeto(){return[...this._coresProjeto]}set coresProjeto(e){this._coresProjeto=C(e)}get atalhos(){return{...this._atalhos}}set atalhos(e){this._atalhos={...e||{}},this.atualizar()}get seletorAberto(){var e;return!!((e=this.seletor)!=null&&e.aberto)}definirCores(e={}){const t=x(e.preenchimento),a=x(e.traco);t&&(this._preenchimento=t,this._misto.preenchimento=!1),a&&(this._traco=a,this._misto.traco=!1),e.opacidade!==void 0&&(this._opacidade=w(e.opacidade,this._opacidade)),this.atualizar()}obterCores(){return{preenchimento:this._preenchimento,traco:this._traco,opacidade:this._opacidade,alvo:this._alvo}}definirAlvo(e){this._alvo=e==="traco"?"traco":"preenchimento",this.atualizar()}definirMisto(e={}){this._misto={preenchimento:!!e.preenchimento,traco:!!e.traco},this.atualizar()}alternarAlvo(){this.mudarAlvo(this._alvo==="traco"?"preenchimento":"traco")}inverter(){const e=this._preenchimento;this._preenchimento=this._traco,this._traco=e,this._misto={preenchimento:this._misto.traco,traco:this._misto.preenchimento},this.atualizar(),this.emitirCores(!0,["preenchimento","traco"],"inverter")}semCor(e=this._alvo){const t=e==="traco"?"traco":"preenchimento";t==="traco"?this._traco="none":this._preenchimento="none",this._misto[t]=!1,this.atualizar(),this.emitirCores(!0,[t],"sem-cor")}restaurarPadrao(){this._preenchimento=this._padrao.preenchimento,this._traco=this._padrao.traco,this._misto={preenchimento:!1,traco:!1},this.atualizar(),this.emitirCores(!0,["preenchimento","traco"],"padrao")}abrirSeletor(e=this._alvo){if(this.hasAttribute("desabilitado")||(this.mudarAlvo(e==="traco"?"traco":"preenchimento"),this.seletorAberto))return;const t=this.raiz.querySelector(`[data-alvo="${this._alvo}"]`)||this;this.estadoAoAbrir=this.obterCores(),this.seletor=j({ancora:t,titulo:this.getAttribute("titulo-seletor")||"Cores e estilo",modo:"duplo",alvo:this._alvo,preenchimento:this._preenchimento,traco:this._traco,opacidade:this._opacidade,misto:this._misto[this._alvo],coresProjeto:this._coresProjeto,aoAlterar:a=>this.aplicarDoSeletor(a,!1),aoConfirmar:a=>{this.seletor=null,this.aplicarDoSeletor(a,!0)},aoCancelar:()=>{this.seletor=null,this.estadoAoAbrir=null},aoTrocarAlvo:a=>this.mudarAlvo(a)})}fecharSeletor(e=!0){const t=this.seletor;t&&(e?t.fechar(!0):(this.seletor=null,t.fechar(!1)))}mudarAlvo(e){e!==this._alvo&&(this._alvo=e,this.atualizar(),this.dispatchEvent(new CustomEvent("ui-alvo-change",{detail:{alvo:e},bubbles:!0,composed:!0})))}aplicarDoSeletor(e,t){const a=n=>{const s=[];return e.preenchimento!==n.preenchimento&&s.push("preenchimento"),e.traco!==n.traco&&s.push("traco"),e.opacidade!==n.opacidade&&s.push("opacidade"),s},r=a(this.obterCores());if(this._preenchimento=e.preenchimento,this._traco=e.traco,this._opacidade=e.opacidade,r.includes("preenchimento")&&(this._misto.preenchimento=!1),r.includes("traco")&&(this._misto.traco=!1),this.atualizar(),!t){r.length&&this.emitirCores(!1,r,"seletor");return}this.emitirCores(!0,this.estadoAoAbrir?a(this.estadoAoAbrir):r,"seletor"),this.estadoAoAbrir=null}emitirCores(e,t,a){const r={...this.obterCores(),confirmado:e,alterados:t,origem:a};this.dispatchEvent(new CustomEvent("ui-cores-change",{detail:r,bubbles:!0,composed:!0}))}dica(e,t){return t?`${e} [${t}]`:e}renderizar(){this.raiz.innerHTML=`
87
- <style>${H}</style>
88
- <div class="pilha" part="pilha">
89
- <button type="button" class="amostra amostra--traco" data-alvo="traco" part="amostra amostra-traco">
90
- <span class="face face--traco"></span>
91
- </button>
92
- <button type="button" class="amostra amostra--preenchimento" data-alvo="preenchimento" part="amostra amostra-preenchimento">
93
- <span class="face face--preenchimento"></span>
94
- </button>
95
- <button type="button" class="canto canto--inverter" data-acao="inverter" aria-label="Inverter preenchimento e traço">
96
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
97
- <path d="m16 3 4 4-4 4"/><path d="M20 7H4"/><path d="m8 21-4-4 4-4"/><path d="M4 17h16"/>
98
- </svg>
99
- </button>
100
- <button type="button" class="canto canto--sem-cor" data-acao="sem-cor" aria-label="Sem cor">
101
- <svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.4" stroke-linecap="round" aria-hidden="true">
102
- <circle cx="12" cy="12" r="8" stroke="currentColor"/>
103
- <line x1="6.5" y1="6.5" x2="17.5" y2="17.5" stroke="#ef4444"/>
104
- </svg>
105
- </button>
106
- <button type="button" class="canto canto--padrao" data-acao="padrao" aria-label="Restaurar cores padrão">
107
- <span class="ponto ponto--preenchimento"></span>
108
- <span class="ponto ponto--traco"></span>
109
- </button>
110
- </div>
111
- `,this.renderizado=!0}vincularEventos(){const e=this.raiz;e.querySelectorAll("[data-alvo]").forEach(a=>{const r=a.dataset.alvo;this.listeners.add(a,"click",n=>{n.stopPropagation(),r!==this._alvo?this.mudarAlvo(r):this.seletorAberto?this.fecharSeletor(!0):this.abrirSeletor(r)}),this.listeners.add(a,"dblclick",n=>{n.stopPropagation(),this.abrirSeletor(r)}),this.listeners.add(a,"keydown",n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),this.abrirSeletor(r))})});const t=(a,r)=>{this.listeners.add(e.querySelector(`[data-acao="${a}"]`),"click",n=>{n.stopPropagation(),r()})};t("inverter",()=>this.inverter()),t("sem-cor",()=>this.semCor()),t("padrao",()=>this.restaurarPadrao())}atualizar(){if(!this.renderizado)return;const e=this.raiz,t=this._atalhos,a=(u,h)=>h?"Misto (?) [várias cores na seleção]":u==="none"?"Sem cor":u,r=(u,h,m,i)=>{const p=e.querySelector(`[data-alvo="${u}"]`),b=p==null?void 0:p.querySelector(".face");if(!p||!b)return;const v=this._alvo===u;p.classList.toggle("amostra--ativa",v),p.setAttribute("aria-pressed",String(v)),b.classList.toggle("face--misto",m),b.classList.toggle("face--sem-cor",!m&&h==="none");const k=u==="traco"?"borderColor":"backgroundColor";b.style[k]=m||h==="none"?"":h;const y=`${i}: ${a(h,m)}`;p.title=this.dica(`${y} — clique para ativar, clique de novo para editar`,t.alternar),p.setAttribute("aria-label",y)};r("preenchimento",this._preenchimento,this._misto.preenchimento,"Preenchimento"),r("traco",this._traco,this._misto.traco,"Traço / contorno");const n=(u,h)=>{const m=e.querySelector(`[data-acao="${u}"]`);m&&(m.title=h)};n("inverter",this.dica("Inverter preenchimento e traço",t.inverter)),n("sem-cor",this.dica("Sem cor no alvo ativo",t.semCor)),n("padrao",this.dica("Restaurar cores padrão",t.padrao));const s=e.querySelector(".ponto--preenchimento");s&&(s.style.backgroundColor=this._padrao.preenchimento==="none"?"transparent":this._padrao.preenchimento);const d=e.querySelector(".ponto--traco");d&&(d.style.borderColor=this._padrao.traco==="none"?"#ef4444":this._padrao.traco)}}z.definirCustomElement("ui-controle-cores",q);exports.PALETA_CORES_PADRAO=S;exports.UIControleCores=q;exports.UISeletorCor=P;exports.abrirSeletorCor=j;exports.coresUnicas=C;exports.escaparHtml=$;exports.fecharSeletorCor=N;exports.normalizarCor=x;exports.normalizarOpacidade=w;