@3r1s_s/erisui 1.0.11 → 1.0.12

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.
package/dist/erisui.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(h,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(h=typeof globalThis<"u"?globalThis:h||self,g(h.eui={}))})(this,(function(h){"use strict";var G=Object.defineProperty;var Q=(h,g,u)=>g in h?G(h,g,{enumerable:!0,configurable:!0,writable:!0,value:u}):h[g]=u;var C=(h,g,u)=>Q(h,typeof g!="symbol"?g+"":g,u);class g extends HTMLElement{static get observedAttributes(){return["size","border-radius","name","color"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
1
+ (function(h,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(h=typeof globalThis<"u"?globalThis:h||self,g(h.eui={}))})(this,(function(h){"use strict";var G=Object.defineProperty;var Q=(h,g,p)=>g in h?G(h,g,{enumerable:!0,configurable:!0,writable:!0,value:p}):h[g]=p;var C=(h,g,p)=>Q(h,typeof g!="symbol"?g+"":g,p);class g extends HTMLElement{static get observedAttributes(){return["size","border-radius","name","color"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
2
2
  <style>
3
3
  :host {
4
4
  aspect-ratio: 1 / 1;
@@ -43,7 +43,7 @@
43
43
  <slot></slot>
44
44
  <span id="initials"></span>
45
45
  </div>
46
- `}connectedCallback(){this.avatar=this.shadowRoot.querySelector(".avatar"),this.initials=this.shadowRoot.querySelector("#initials");const t=this.shadowRoot.querySelector("slot"),i=t&&t.assignedNodes().length>0;if(i){const e=t.assignedNodes()[0];e&&e.tagName==="IMG"&&(this.initials.style.display="none",this.avatar.style.backgroundColor="transparent")}else this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color"));if(this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color")),this.hasAttribute("size")){const e=this.getAttribute("size");this.avatar.style.width=e+"px",this.avatar.style.height=e+"px",this.initials.style.fontSize=e/2+"px"}if(this.hasAttribute("border-radius")&&(this.avatar.style.borderRadius=this.getAttribute("border-radius")+"px"),this.hasAttribute("name")&&(this.avatar.title=this.getAttribute("name")),!i&&this.hasAttribute("name")){const s=this.getAttribute("name").trim().split(/\s+/);let n="";s.length===1?n=s[0][0]||"":n=(s[0][0]||"")+(s[s.length-1][0]||""),this.initials.textContent=n.toUpperCase()}}}customElements.define("eui-avatar",g);const u=(()=>{let o={};return{register(t,i){o[t]=i},get(t){return o[t]||""}}})();u.register("menu",'<svg width="24" height="24" viewBox="0 0 24 24" focusable="false"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"></path></svg>'),u.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),u.register("kit",'<svg width="26" height="28" viewBox="0 0 26 28" xmlns="http://www.w3.org/2000/svg"><path d="m13.118 14.831c0.433 0 1.257-0.024 1.795-0.344l9.151-4.057c0.869-0.59 1.051-1.255 1.067-1.773 0.02-0.662-0.313-1.634-1.181-2.15l-8.515-3.921c-0.537-0.309-2.096-0.552-2.529-0.552-0.444 0-1.958 0.42-2.496 0.73l-8.643 4.034c-0.85 0.602-1.022 1.284-0.951 1.942 0.098 0.887 0.206 0.857 0.889 1.503l9.577 4.212c0.537 0.32 1.391 0.376 1.836 0.376zm-0.12 5.467c0.403 0 1.443-0.068 1.928-0.345l8.858-3.991c0.497-0.3 1.448-1.117 1.382-1.952-0.091-1.138-0.598-1.7-0.948-1.906l-9.22 3.888c-0.454 0.261-1.417 0.478-1.916 0.478-0.542 0-1.539-0.228-1.766-0.362l-9.395-4.012c-0.462 0.022-1.174 0.911-1.201 1.642-0.03 0.761 0.7 1.62 1.135 1.839l9.408 4.384c0.485 0.278 1.322 0.337 1.735 0.337zm0.09 5.344c0.403 0 1.296-0.053 1.781-0.342l9.147-4.299c0.485-0.289 1.129-0.789 1.053-1.879-0.056-0.794-0.071-1.123-0.918-1.765l-9.203 4.113c-0.228 0.134-0.948 0.39-1.853 0.39-0.939 0-1.603-0.224-1.831-0.359l-9.451-4.017c-0.979 0.247-1.005 1.45-1.005 1.947 0 0.455 0.403 1.279 0.9 1.568l9.465 4.262c0.486 0.29 1.502 0.381 1.915 0.381z" fill="currentColor"></path></svg>'),u.register("settings",'<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.644169 15.2044C0.751639 15.4175 0.866389 15.627 0.988219 15.8323C1.34503 16.445 1.76284 17.0223 2.23048 17.545C2.3967 17.7307 2.65856 17.7968 2.89375 17.7126L5.25826 16.8621C5.96645 16.608 6.74841 17.07 6.87902 17.8018L7.32018 20.2764C7.36418 20.5227 7.55119 20.7167 7.79454 20.7688C8.86201 20.9976 9.95753 21.057 11.0418 20.9452C11.427 20.9061 11.8095 20.8457 12.1863 20.7643C12.375 20.7232 12.5303 20.5969 12.6121 20.4275C12.6441 20.37 12.6671 20.3068 12.6794 20.2397L13.132 17.7739C13.1978 17.4162 13.4191 17.1252 13.7102 16.9498C13.7478 16.9275 13.7867 16.9072 13.8264 16.8889C14.1041 16.7654 14.426 16.7408 14.7301 16.8496L17.0889 17.6938C17.2068 17.7362 17.3318 17.7406 17.4482 17.7107C17.5805 17.6872 17.7044 17.6208 17.7983 17.5172C18.2857 16.9783 18.7189 16.3833 19.0875 15.7497C19.4503 15.1137 19.748 14.4403 19.9703 13.7471C20.0128 13.6142 20.0083 13.4742 19.9629 13.3481C19.9307 13.2315 19.8646 13.1245 19.7685 13.043L17.8596 11.4179C17.6114 11.2067 17.4714 10.912 17.4409 10.6065C17.4371 10.563 17.4355 10.5194 17.4361 10.4758C17.444 10.1379 17.5847 9.80337 17.8591 9.56905L19.7638 7.94348C19.8146 7.90007 19.857 7.84958 19.8904 7.7944C19.9978 7.63842 20.0299 7.43844 19.9706 7.25291C19.8534 6.88733 19.7151 6.52704 19.5572 6.17466C19.1114 5.17572 18.5115 4.2528 17.7787 3.43934C17.612 3.25429 17.3509 3.18886 17.1161 3.27382L14.7569 4.12827C14.0592 4.38082 13.2679 3.93321 13.1344 3.19155L12.6871 0.714256C12.6423 0.468053 12.4542 0.273849 12.2106 0.22246C11.5182 0.0764882 10.803 0.00250031 10.088 0.000608251C9.88769 -0.0015584 9.68739 0.002064 9.48735 0.0114648C8.92415 0.0369819 8.36389 0.107332 7.81778 0.222459C7.78135 0.230146 7.74615 0.241028 7.71249 0.2548C7.5098 0.328781 7.35888 0.505679 7.31996 0.723547L6.8788 3.19817C6.81394 3.56157 6.58834 3.85866 6.29097 4.03446C5.98991 4.2061 5.61923 4.25412 5.27153 4.12827L2.91237 3.27382C2.70694 3.1995 2.48138 3.24016 2.31657 3.37545C2.2857 3.39886 2.25676 3.42543 2.23026 3.45505C1.81793 3.91588 1.44433 4.4192 1.11714 4.95183C1.05788 5.04799 1.00019 5.14513 0.944072 5.24319C0.878302 5.35619 0.814661 5.4704 0.753186 5.58577C0.464267 6.12611 0.222113 6.69081 0.0338354 7.26739C0.0213426 7.30567 0.0127871 7.34455 0.00802709 7.38352C-0.0257478 7.59364 0.0518458 7.809 0.218337 7.94974L2.13633 9.56992C2.41146 9.80242 2.55518 10.1364 2.56469 10.4743C2.56917 10.8294 2.42529 11.1857 2.13611 11.4301L0.218115 13.0503C0.0484589 13.1937 -0.0289685 13.4145 0.00982709 13.6284C0.0147983 13.6634 0.0228404 13.6982 0.0340542 13.7326C0.198098 14.235 0.403035 14.7283 0.644169 15.2044ZM10 14.5C12.2091 14.5 14 12.7091 14 10.5C14 8.29086 12.2091 6.5 10 6.5C7.79086 6.5 6 8.29086 6 10.5C6 12.7091 7.79086 14.5 10 14.5Z" fill="currentColor"></path></svg>'),u.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),u.register("copy",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 11C2 11.7956 2.31607 12.5587 2.87868 13.1213C3.44129 13.6839 4.20435 14 5 14H11C11.7956 14 12.5587 13.6839 13.1213 13.1213C13.6839 12.5587 14 11.7956 14 11V8H11.75C10.7554 8 9.80161 7.60491 9.09835 6.90165C8.39509 6.19839 8 5.24456 8 4.25V2H5C4.20435 2 3.44129 2.31607 2.87868 2.87868C2.31607 3.44129 2 4.20435 2 5V11Z" fill="currentColor"/><path d="M13.7975 6.49965C13.6881 6.25457 13.5357 6.03105 13.3475 5.83965L10.16 2.65965C9.96921 2.4688 9.74565 2.31384 9.5 2.20215V4.24965C9.5 4.54512 9.5582 4.8377 9.67127 5.11069C9.78434 5.38367 9.95008 5.63171 10.159 5.84064C10.3679 6.04957 10.616 6.2153 10.889 6.32838C11.1619 6.44145 11.4545 6.49965 11.75 6.49965H13.7975Z" fill="currentColor"/></svg>'),u.register("arrow",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>'),u.register("back",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" style="transform: rotate(180deg)"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>');class z extends HTMLElement{static get observedAttributes(){return["name","width","height"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}render(){const t=this.getAttribute("name"),i=u.get(t);if(!i){this.shadowRoot.innerHTML='<span style="color:red;">?</span>';return}const e=document.createElement("template");e.innerHTML=i.trim();const s=e.content.cloneNode(!0),n=s.firstElementChild;if(n&&n.style){const l=this.getAttribute("width"),c=this.getAttribute("height");l&&n.setAttribute("width",l),c&&n.setAttribute("height",c),n.style.display="block"}this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(s)}}customElements.define("eui-icon",z);class M extends HTMLElement{static get observedAttributes(){return["label","value","id","type","filled"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
46
+ `}connectedCallback(){this.avatar=this.shadowRoot.querySelector(".avatar"),this.initials=this.shadowRoot.querySelector("#initials");const t=this.shadowRoot.querySelector("slot"),e=t&&t.assignedNodes().length>0;if(e){const i=t.assignedNodes()[0];i&&i.tagName==="IMG"&&(this.initials.style.display="none",this.avatar.style.backgroundColor="transparent")}else this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color"));if(this.hasAttribute("color")&&(this.avatar.style.backgroundColor=this.getAttribute("color")),this.hasAttribute("size")){const i=this.getAttribute("size");this.avatar.style.width=i+"px",this.avatar.style.height=i+"px",this.initials.style.fontSize=i/2+"px"}if(this.hasAttribute("border-radius")&&(this.avatar.style.borderRadius=this.getAttribute("border-radius")+"px"),this.hasAttribute("name")&&(this.avatar.title=this.getAttribute("name")),!e&&this.hasAttribute("name")){const r=this.getAttribute("name").trim().split(/\s+/);let s="";r.length===1?s=r[0][0]||"":s=(r[0][0]||"")+(r[r.length-1][0]||""),this.initials.textContent=s.toUpperCase()}}}customElements.define("eui-avatar",g);const p=(()=>{let o={};return{register(t,e){o[t]=e},get(t){return o[t]||""}}})();p.register("menu",'<svg width="24" height="24" viewBox="0 0 24 24" focusable="false"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="currentColor"></path></svg>'),p.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),p.register("kit",'<svg width="26" height="28" viewBox="0 0 26 28" xmlns="http://www.w3.org/2000/svg"><path d="m13.118 14.831c0.433 0 1.257-0.024 1.795-0.344l9.151-4.057c0.869-0.59 1.051-1.255 1.067-1.773 0.02-0.662-0.313-1.634-1.181-2.15l-8.515-3.921c-0.537-0.309-2.096-0.552-2.529-0.552-0.444 0-1.958 0.42-2.496 0.73l-8.643 4.034c-0.85 0.602-1.022 1.284-0.951 1.942 0.098 0.887 0.206 0.857 0.889 1.503l9.577 4.212c0.537 0.32 1.391 0.376 1.836 0.376zm-0.12 5.467c0.403 0 1.443-0.068 1.928-0.345l8.858-3.991c0.497-0.3 1.448-1.117 1.382-1.952-0.091-1.138-0.598-1.7-0.948-1.906l-9.22 3.888c-0.454 0.261-1.417 0.478-1.916 0.478-0.542 0-1.539-0.228-1.766-0.362l-9.395-4.012c-0.462 0.022-1.174 0.911-1.201 1.642-0.03 0.761 0.7 1.62 1.135 1.839l9.408 4.384c0.485 0.278 1.322 0.337 1.735 0.337zm0.09 5.344c0.403 0 1.296-0.053 1.781-0.342l9.147-4.299c0.485-0.289 1.129-0.789 1.053-1.879-0.056-0.794-0.071-1.123-0.918-1.765l-9.203 4.113c-0.228 0.134-0.948 0.39-1.853 0.39-0.939 0-1.603-0.224-1.831-0.359l-9.451-4.017c-0.979 0.247-1.005 1.45-1.005 1.947 0 0.455 0.403 1.279 0.9 1.568l9.465 4.262c0.486 0.29 1.502 0.381 1.915 0.381z" fill="currentColor"></path></svg>'),p.register("settings",'<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.644169 15.2044C0.751639 15.4175 0.866389 15.627 0.988219 15.8323C1.34503 16.445 1.76284 17.0223 2.23048 17.545C2.3967 17.7307 2.65856 17.7968 2.89375 17.7126L5.25826 16.8621C5.96645 16.608 6.74841 17.07 6.87902 17.8018L7.32018 20.2764C7.36418 20.5227 7.55119 20.7167 7.79454 20.7688C8.86201 20.9976 9.95753 21.057 11.0418 20.9452C11.427 20.9061 11.8095 20.8457 12.1863 20.7643C12.375 20.7232 12.5303 20.5969 12.6121 20.4275C12.6441 20.37 12.6671 20.3068 12.6794 20.2397L13.132 17.7739C13.1978 17.4162 13.4191 17.1252 13.7102 16.9498C13.7478 16.9275 13.7867 16.9072 13.8264 16.8889C14.1041 16.7654 14.426 16.7408 14.7301 16.8496L17.0889 17.6938C17.2068 17.7362 17.3318 17.7406 17.4482 17.7107C17.5805 17.6872 17.7044 17.6208 17.7983 17.5172C18.2857 16.9783 18.7189 16.3833 19.0875 15.7497C19.4503 15.1137 19.748 14.4403 19.9703 13.7471C20.0128 13.6142 20.0083 13.4742 19.9629 13.3481C19.9307 13.2315 19.8646 13.1245 19.7685 13.043L17.8596 11.4179C17.6114 11.2067 17.4714 10.912 17.4409 10.6065C17.4371 10.563 17.4355 10.5194 17.4361 10.4758C17.444 10.1379 17.5847 9.80337 17.8591 9.56905L19.7638 7.94348C19.8146 7.90007 19.857 7.84958 19.8904 7.7944C19.9978 7.63842 20.0299 7.43844 19.9706 7.25291C19.8534 6.88733 19.7151 6.52704 19.5572 6.17466C19.1114 5.17572 18.5115 4.2528 17.7787 3.43934C17.612 3.25429 17.3509 3.18886 17.1161 3.27382L14.7569 4.12827C14.0592 4.38082 13.2679 3.93321 13.1344 3.19155L12.6871 0.714256C12.6423 0.468053 12.4542 0.273849 12.2106 0.22246C11.5182 0.0764882 10.803 0.00250031 10.088 0.000608251C9.88769 -0.0015584 9.68739 0.002064 9.48735 0.0114648C8.92415 0.0369819 8.36389 0.107332 7.81778 0.222459C7.78135 0.230146 7.74615 0.241028 7.71249 0.2548C7.5098 0.328781 7.35888 0.505679 7.31996 0.723547L6.8788 3.19817C6.81394 3.56157 6.58834 3.85866 6.29097 4.03446C5.98991 4.2061 5.61923 4.25412 5.27153 4.12827L2.91237 3.27382C2.70694 3.1995 2.48138 3.24016 2.31657 3.37545C2.2857 3.39886 2.25676 3.42543 2.23026 3.45505C1.81793 3.91588 1.44433 4.4192 1.11714 4.95183C1.05788 5.04799 1.00019 5.14513 0.944072 5.24319C0.878302 5.35619 0.814661 5.4704 0.753186 5.58577C0.464267 6.12611 0.222113 6.69081 0.0338354 7.26739C0.0213426 7.30567 0.0127871 7.34455 0.00802709 7.38352C-0.0257478 7.59364 0.0518458 7.809 0.218337 7.94974L2.13633 9.56992C2.41146 9.80242 2.55518 10.1364 2.56469 10.4743C2.56917 10.8294 2.42529 11.1857 2.13611 11.4301L0.218115 13.0503C0.0484589 13.1937 -0.0289685 13.4145 0.00982709 13.6284C0.0147983 13.6634 0.0228404 13.6982 0.0340542 13.7326C0.198098 14.235 0.403035 14.7283 0.644169 15.2044ZM10 14.5C12.2091 14.5 14 12.7091 14 10.5C14 8.29086 12.2091 6.5 10 6.5C7.79086 6.5 6 8.29086 6 10.5C6 12.7091 7.79086 14.5 10 14.5Z" fill="currentColor"></path></svg>'),p.register("home",'<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5258 0.204649C11.2291 -0.0682165 10.7709 -0.0682161 10.4742 0.204649L0.249923 9.68588C-0.266994 10.1612 0.0714693 11.0197 0.775759 11.0197L3.48971 11.0197V18.6923C3.48971 19.542 4.18295 20.2308 5.03811 20.2308H16.9619C17.8171 20.2308 18.5103 19.542 18.5103 18.6923V11.0197L21.2242 11.0197C21.9285 11.0197 22.267 10.1612 21.7501 9.68588L11.5258 0.204649Z" fill="currentColor"/></svg>'),p.register("copy",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 11C2 11.7956 2.31607 12.5587 2.87868 13.1213C3.44129 13.6839 4.20435 14 5 14H11C11.7956 14 12.5587 13.6839 13.1213 13.1213C13.6839 12.5587 14 11.7956 14 11V8H11.75C10.7554 8 9.80161 7.60491 9.09835 6.90165C8.39509 6.19839 8 5.24456 8 4.25V2H5C4.20435 2 3.44129 2.31607 2.87868 2.87868C2.31607 3.44129 2 4.20435 2 5V11Z" fill="currentColor"/><path d="M13.7975 6.49965C13.6881 6.25457 13.5357 6.03105 13.3475 5.83965L10.16 2.65965C9.96921 2.4688 9.74565 2.31384 9.5 2.20215V4.24965C9.5 4.54512 9.5582 4.8377 9.67127 5.11069C9.78434 5.38367 9.95008 5.63171 10.159 5.84064C10.3679 6.04957 10.616 6.2153 10.889 6.32838C11.1619 6.44145 11.4545 6.49965 11.75 6.49965H13.7975Z" fill="currentColor"/></svg>'),p.register("arrow",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>'),p.register("back",'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" style="transform: rotate(180deg)"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>'),p.register("check",'<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.86368 9.12226C3.82463 9.16131 3.76131 9.16131 3.72226 9.12226L0.146522 5.54652C-0.0487403 5.35126 -0.0487401 5.03468 0.146522 4.83942L0.839416 4.14652C1.03468 3.95126 1.35126 3.95126 1.54652 4.14652L3.72226 6.32226C3.76131 6.36131 3.82463 6.36131 3.86368 6.32226L10.0394 0.146522C10.2347 -0.0487398 10.5513 -0.0487399 10.7465 0.146522L11.4394 0.839416C11.6347 1.03468 11.6347 1.35126 11.4394 1.54652L3.86368 9.12226Z" fill="currentColor"/></svg>');class M extends HTMLElement{static get observedAttributes(){return["name","width","height"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}render(){const t=this.getAttribute("name"),e=p.get(t);if(!e){this.shadowRoot.innerHTML='<span style="color:red;">?</span>';return}const i=document.createElement("template");i.innerHTML=e.trim();const r=i.content.cloneNode(!0),s=r.firstElementChild;if(s&&s.style){const n=this.getAttribute("width"),c=this.getAttribute("height");n&&s.setAttribute("width",n),c&&s.setAttribute("height",c),s.style.display="block"}this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(r)}}customElements.define("eui-icon",M);class z extends HTMLElement{static get observedAttributes(){return["label","value","id","type","filled"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
47
47
  <style>
48
48
  .form {
49
49
  display: flex;
@@ -143,7 +143,7 @@
143
143
  <input class="form-input" placeholder=" ">
144
144
  <label></label>
145
145
  </div>
146
- `}connectedCallback(){this.form=this.shadowRoot.querySelector(".form"),this.inputEl=this.shadowRoot.querySelector(".form-input"),this.labelEl=this.shadowRoot.querySelector("label"),this.hasAttribute("value")&&(this.inputEl.value=this.getAttribute("value")),this.hasAttribute("id")&&(this.inputEl.id=this.getAttribute("id")),this.hasAttribute("label")&&(this.labelEl.textContent=this.getAttribute("label")),this.hasAttribute("type")&&(this.inputEl.type=this.getAttribute("type")),this.hasAttribute("filled")&&this.form.classList.add("filled"),this.inputEl.addEventListener("input",()=>{this.setAttribute("value",this.inputEl.value)})}attributeChangedCallback(t,i,e){if(!(!this.inputEl||!this.labelEl))switch(t){case"value":this.inputEl.value!==e&&(this.inputEl.value=e);break;case"id":this.inputEl.id=e;break;case"label":this.labelEl.textContent=e;break}}get value(){return this.inputEl.value}set value(t){this.setAttribute("value",t)}}customElements.define("eui-input",M);class T extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
146
+ `}connectedCallback(){this.form=this.shadowRoot.querySelector(".form"),this.inputEl=this.shadowRoot.querySelector(".form-input"),this.labelEl=this.shadowRoot.querySelector("label"),this.hasAttribute("value")&&(this.inputEl.value=this.getAttribute("value")),this.hasAttribute("id")&&(this.inputEl.id=this.getAttribute("id")),this.hasAttribute("label")&&(this.labelEl.textContent=this.getAttribute("label")),this.hasAttribute("type")&&(this.inputEl.type=this.getAttribute("type")),this.hasAttribute("filled")&&this.form.classList.add("filled"),this.inputEl.addEventListener("input",()=>{this.setAttribute("value",this.inputEl.value)})}attributeChangedCallback(t,e,i){if(!(!this.inputEl||!this.labelEl))switch(t){case"value":this.inputEl.value!==i&&(this.inputEl.value=i);break;case"id":this.inputEl.id=i;break;case"label":this.labelEl.textContent=i;break}}get value(){return this.inputEl.value}set value(t){this.setAttribute("value",t)}}customElements.define("eui-input",z);class T extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
147
147
  <style>
148
148
  .loader {
149
149
  width: 24px;
@@ -232,7 +232,7 @@
232
232
  <div class="progressbar">
233
233
  <span class="progress"></span>
234
234
  </div>
235
- `}set value(t){this.setAttribute("value",t)}attributeChangedCallback(){this.connectedCallback()}connectedCallback(){const t=this.shadowRoot.querySelector(".progress");this.hasAttribute("id")&&(this.progress.id=this.getAttribute("id")),this.hasAttribute("intermediate")&&t.classList.add("intermediate"),this.hasAttribute("value")&&(t.style.width=this.getAttribute("value")+"%")}}customElements.define("eui-progressbar",$);const v={is:{iPhone:/iPhone/.test(navigator.userAgent),iPad:/iPad/.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/.test(navigator.userAgent),android:/Android/.test(navigator.userAgent),mobile:/Mobi|Android/i.test(navigator.userAgent)},prefers:{language:navigator.language||navigator.userLanguage,reducedMotion:window.matchMedia("(prefers-reduced-motion: reduce)").matches,reducedTransparency:window.matchMedia("(prefers-reduced-transparency: reduce)").matches},supports:{share:typeof navigator.share=="function",directDownload:"download"in document.createElement("a"),haptics:"vibrate"in navigator||"Vibrate"in window||typeof window.navigator.vibrate=="function"},userAgent:navigator.userAgent},R=Object.freeze(Object.defineProperty({__proto__:null,device:v},Symbol.toStringTag,{value:"Module"}));function H(){try{const o=document.createElement("label");o.ariaHidden="true",o.style.display="none";const t=document.createElement("input");t.type="checkbox",t.setAttribute("switch",""),o.appendChild(t),document.head.appendChild(o),o.click(),document.head.removeChild(o)}catch{}}function x(o){v.supports.haptics?navigator.vibrate(o||50):v.is.iPhone&&H()}const _=Object.freeze(Object.defineProperty({__proto__:null,haptic:x},Symbol.toStringTag,{value:"Module"})),A=(()=>{let o={},t;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(i){console.error(i)}return{get(i){return o[i]},set(i,e){o[i]=e,localStorage.setItem(t,JSON.stringify(o))},delete(i){delete o[i],localStorage.setItem(t,JSON.stringify(o))},all(){return o},clear(){o={},localStorage.setItem(t,JSON.stringify(o))},name(i){t=i;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(e){console.error(e)}},settings:{get(i){return o&&o.settings&&o.settings[i]},set(i,e){o.settings||(o.settings={}),o.settings[i]=e,localStorage.setItem(t,JSON.stringify(o))},delete(i){o.settings&&(delete o.settings[i],localStorage.setItem(t,JSON.stringify(o)))},all(){return o.settings||{}},clear(){o.settings&&(o.settings={},localStorage.setItem(t,JSON.stringify(o)))}}}})(),E=A.settings,I=Object.freeze(Object.defineProperty({__proto__:null,settings:E,storage:A},Symbol.toStringTag,{value:"Module"}));class F extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
235
+ `}set value(t){this.setAttribute("value",t)}attributeChangedCallback(){this.connectedCallback()}connectedCallback(){const t=this.shadowRoot.querySelector(".progress");this.hasAttribute("id")&&(this.progress.id=this.getAttribute("id")),this.hasAttribute("intermediate")&&t.classList.add("intermediate"),this.hasAttribute("value")&&(t.style.width=this.getAttribute("value")+"%")}}customElements.define("eui-progressbar",$);const v={is:{iPhone:/iPhone/.test(navigator.userAgent),iPad:/iPad/.test(navigator.userAgent),iOS:/iPhone|iPad|iPod/.test(navigator.userAgent),android:/Android/.test(navigator.userAgent),mobile:/Mobi|Android/i.test(navigator.userAgent)},prefers:{language:navigator.language||navigator.userLanguage,reducedMotion:window.matchMedia("(prefers-reduced-motion: reduce)").matches,reducedTransparency:window.matchMedia("(prefers-reduced-transparency: reduce)").matches},supports:{share:typeof navigator.share=="function",directDownload:"download"in document.createElement("a"),haptics:"vibrate"in navigator||"Vibrate"in window||typeof window.navigator.vibrate=="function"},userAgent:navigator.userAgent},R=Object.freeze(Object.defineProperty({__proto__:null,device:v},Symbol.toStringTag,{value:"Module"}));function H(){try{const o=document.createElement("label");o.ariaHidden="true",o.style.display="none";const t=document.createElement("input");t.type="checkbox",t.setAttribute("switch",""),o.appendChild(t),document.head.appendChild(o),o.click(),document.head.removeChild(o)}catch{}}function x(o){v.supports.haptics?navigator.vibrate(o||50):v.is.iPhone&&H()}const _=Object.freeze(Object.defineProperty({__proto__:null,haptic:x},Symbol.toStringTag,{value:"Module"})),E=(()=>{let o={},t;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(e){console.error(e)}return{get(e){return o[e]},set(e,i){o[e]=i,localStorage.setItem(t,JSON.stringify(o))},delete(e){delete o[e],localStorage.setItem(t,JSON.stringify(o))},all(){return o},clear(){o={},localStorage.setItem(t,JSON.stringify(o))},name(e){t=e;try{o=JSON.parse(localStorage.getItem(t)||"{}")}catch(i){console.error(i)}},settings:{get(e){return o&&o.settings&&o.settings[e]},set(e,i){o.settings||(o.settings={}),o.settings[e]=i,localStorage.setItem(t,JSON.stringify(o))},delete(e){o.settings&&(delete o.settings[e],localStorage.setItem(t,JSON.stringify(o)))},all(){return o.settings||{}},clear(){o.settings&&(o.settings={},localStorage.setItem(t,JSON.stringify(o)))}}}})(),A=E.settings,F=Object.freeze(Object.defineProperty({__proto__:null,settings:A,storage:E},Symbol.toStringTag,{value:"Module"}));class I extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
236
236
  <style>
237
237
  .switch {
238
238
  background-color: var(--app-200);
@@ -301,7 +301,7 @@
301
301
  <input type="checkbox" role="switch">
302
302
  <span class="handle"></span>
303
303
  </div>
304
- `}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.switchEl=this.shadowRoot.querySelector(".switch"),this.updateFromAttribute(),this.switchEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x()}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.switchEl.classList.toggle("selected",t)}attributeChangedCallback(t,i,e){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-switch",F);class j extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.shadowRoot.innerHTML=`
304
+ `}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.switchEl=this.shadowRoot.querySelector(".switch"),this.updateFromAttribute(),this.switchEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x()}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.switchEl.classList.toggle("selected",t)}attributeChangedCallback(t,e,i){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-switch",I);class j extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.shadowRoot.innerHTML=`
305
305
  <style>
306
306
  :host {
307
307
  display: inline-flex;
@@ -346,7 +346,7 @@
346
346
  }
347
347
  </style>
348
348
  <slot></slot>
349
- `,this.addEventListener("pointerdown",t=>{const i=document.createElement("span"),e=t.currentTarget,s=Math.max(e.offsetWidth,e.offsetHeight);i.classList.add("ripple"),i.style.left=t.clientX-e.getBoundingClientRect().left-s/2+"px",i.style.top=t.clientY-e.getBoundingClientRect().top-s/2+"px",i.style.width=s+"px",i.style.height=s+"px",this.shadowRoot.appendChild(i),setTimeout(()=>{i.remove()},600)})}}customElements.define("eui-chip",j);const f="",w=(()=>{const o=[];function t(r,a){const p=[],m=r.replace(/:([^/]+)/g,(y,k)=>(p.push(k),"([^/]+)")).replace(/\//g,"\\/"),b=new RegExp(`^${f}${m}$`);o.push({regex:b,paramNames:p,renderFn:a})}function i(r){for(const{regex:a,paramNames:p,renderFn:m}of o){const b=r.match(a);if(b){const y={};return p.forEach((k,K)=>{y[k]=decodeURIComponent(b[K+1])}),{renderFn:m,params:y}}}return null}function e(r,a=!0){r.startsWith(f)||(r=f+(r.startsWith("/")?"":"/")+r);const p=r.split(/[?#]/)[0];if(p===window.location.pathname&&r.includes("#")){a&&history.pushState({},"",r);const b="#"+r.split("#")[1];s(b);return}const m=i(p);if(m)if(a&&history.pushState({},"",r),m.renderFn(m.params),window.dispatchEvent(new CustomEvent("route-changed",{detail:{path:r}})),r.includes("#")){const b="#"+r.split("#")[1];setTimeout(()=>s(b),100)}else{const b=document.getElementById("main");b&&b.scrollTo(0,0)}else n?(a&&history.pushState({},"",r),n()):console.warn(`No route found for ${p}`)}function s(r){if(r)try{const a=document.querySelector(r);a&&a.scrollIntoView({behavior:"smooth"})}catch{console.warn("Invalid hash:",r)}}let n=null;function l(r){n=r}function c(){history.back()}function d(){return window.location.pathname.replace(f,"")||"/"}return window.addEventListener("popstate",()=>{const r=window.location.pathname+window.location.search+window.location.hash;e(r,!1)}),window.addEventListener("click",r=>{if(r.button!==0||r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)return;const a=r.target.closest("a");if(!a||a.hasAttribute("download")||a.getAttribute("target")==="_blank")return;const p=a.getAttribute("href");if(!(!p||p.startsWith("http")&&!p.startsWith(window.location.origin))){if(r.preventDefault(),p.startsWith("#")){history.pushState({},"",p),s(p);return}e(p)}}),{add:t,navigate:e,back:c,location:d,setNotFound:l}})();async function q(o){try{const t=document.getElementById("main");t.classList.add("fade-out"),await new Promise(e=>setTimeout(e,200));const i=await fetch(`/src/pages/${o}.html`).then(e=>e.text());t.innerHTML=i,t.classList.remove("fade-out"),t.classList.add("fade-in"),window.location.hash?setTimeout(()=>{try{const e=document.querySelector(window.location.hash);e&&e.scrollIntoView({behavior:"smooth"})}catch{}},100):t&&t.scrollTo(0,0),setTimeout(()=>{t.classList.remove("fade-in")},200)}catch(t){console.error("Page load failed:",t)}}class B extends HTMLElement{constructor(){super();C(this,"handleClick",()=>{const i=this.getAttribute("path");i&&w.navigate(i)});this.attachShadow({mode:"open"})}static get observedAttributes(){return["path","icon","label","badge","active","avatar-src","avatar-name"]}connectedCallback(){this.hasRendered||(this.render(),this.setupEventListeners(),this.hasRendered=!0),this.updateContent(),this.addEventListener("click",this.handleClick)}disconnectedCallback(){this.removeEventListener("click",this.handleClick)}attributeChangedCallback(i,e,s){if(e!==s&&this.hasRendered){if(i==="active")return;this.updateContent()}}setupEventListeners(){this.addEventListener("pointerdown",i=>{const e=document.createElement("span"),s=i.currentTarget,n=s.getBoundingClientRect(),l=Math.max(s.offsetWidth,s.offsetHeight),c=l/2;e.classList.add("ripple"),e.style.width=`${l}px`,e.style.height=`${l}px`,e.style.left=`${i.clientX-n.left-c}px`,e.style.top=`${i.clientY-n.top-c}px`,this.shadowRoot.appendChild(e),e.addEventListener("animationend",()=>{e.remove()})})}updateContent(){const i=this.getAttribute("icon"),e=this.getAttribute("avatar-src"),s=this.getAttribute("avatar-name"),n=this.getAttribute("label")||"",l=this.getAttribute("badge"),c=this.shadowRoot.querySelector(".badge");if(l)if(c)c.textContent=l;else{const a=document.createElement("span");a.className="badge",a.textContent=l,this.shadowRoot.appendChild(a)}else c&&c.remove();const d=this.shadowRoot.querySelector("slot[name='icon']");if(d)if(e||s){let a='<eui-avatar size="24"';s&&(a+=` name="${s}"`),a+=">",e&&(a+=`<img src="${e}" alt="${s||"Avatar"}" />`),a+="</eui-avatar>",d.innerHTML=a}else{const a=d.querySelector("eui-icon");i&&a?a.getAttribute("name")!==i&&a.setAttribute("name",i):i?d.innerHTML=`<eui-icon width="24" height="24" name="${i}"></eui-icon>`:d.innerHTML=""}const r=this.shadowRoot.querySelector(".label");r&&(r.textContent=n)}render(){this.shadowRoot.innerHTML=`
349
+ `,this.addEventListener("pointerdown",t=>{const e=document.createElement("span"),i=t.currentTarget,r=Math.max(i.offsetWidth,i.offsetHeight);e.classList.add("ripple"),e.style.left=t.clientX-i.getBoundingClientRect().left-r/2+"px",e.style.top=t.clientY-i.getBoundingClientRect().top-r/2+"px",e.style.width=r+"px",e.style.height=r+"px",this.shadowRoot.appendChild(e),setTimeout(()=>{e.remove()},600)})}}customElements.define("eui-chip",j);const f="",w=(()=>{const o=[];function t(a,l){const u=[],b=a.replace(/:([^/]+)/g,(y,k)=>(u.push(k),"([^/]+)")).replace(/\//g,"\\/"),m=new RegExp(`^${f}${b}$`);o.push({regex:m,paramNames:u,renderFn:l})}function e(a){for(const{regex:l,paramNames:u,renderFn:b}of o){const m=a.match(l);if(m){const y={};return u.forEach((k,Y)=>{y[k]=decodeURIComponent(m[Y+1])}),{renderFn:b,params:y}}}return null}function i(a,l=!0){a.startsWith(f)||(a=f+(a.startsWith("/")?"":"/")+a);const u=a.split(/[?#]/)[0];if(u===window.location.pathname&&a.includes("#")){l&&history.pushState({},"",a);const m="#"+a.split("#")[1];r(m);return}const b=e(u);if(b)if(l&&history.pushState({},"",a),b.renderFn(b.params),window.dispatchEvent(new CustomEvent("route-changed",{detail:{path:a}})),a.includes("#")){const m="#"+a.split("#")[1];setTimeout(()=>r(m),100)}else{const m=document.getElementById("main");m&&m.scrollTo(0,0)}else s?(l&&history.pushState({},"",a),s()):console.warn(`No route found for ${u}`)}function r(a){if(a)try{const l=document.querySelector(a);l&&l.scrollIntoView({behavior:"smooth"})}catch{console.warn("Invalid hash:",a)}}let s=null;function n(a){s=a}function c(){history.back()}function d(){return window.location.pathname.replace(f,"")||"/"}return window.addEventListener("popstate",()=>{const a=window.location.pathname+window.location.search+window.location.hash;i(a,!1)}),window.addEventListener("click",a=>{if(a.button!==0||a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)return;const l=a.target.closest("a");if(!l||l.hasAttribute("download")||l.getAttribute("target")==="_blank")return;const u=l.getAttribute("href");if(!(!u||u.startsWith("http")&&!u.startsWith(window.location.origin))){if(a.preventDefault(),u.startsWith("#")){history.pushState({},"",u),r(u);return}i(u)}}),{add:t,navigate:i,back:c,location:d,setNotFound:n}})();async function q(o){try{const t=document.getElementById("main");t.classList.add("fade-out"),await new Promise(i=>setTimeout(i,200));const e=await fetch(`/src/pages/${o}.html`).then(i=>i.text());t.innerHTML=e,t.classList.remove("fade-out"),t.classList.add("fade-in"),window.location.hash?setTimeout(()=>{try{const i=document.querySelector(window.location.hash);i&&i.scrollIntoView({behavior:"smooth"})}catch{}},100):t&&t.scrollTo(0,0),setTimeout(()=>{t.classList.remove("fade-in")},200)}catch(t){console.error("Page load failed:",t)}}class B extends HTMLElement{constructor(){super();C(this,"handleClick",()=>{const e=this.getAttribute("path");e&&w.navigate(e)});this.attachShadow({mode:"open"})}static get observedAttributes(){return["path","icon","label","badge","active","avatar-src","avatar-name"]}connectedCallback(){this.hasRendered||(this.render(),this.setupEventListeners(),this.hasRendered=!0),this.updateContent(),this.addEventListener("click",this.handleClick)}disconnectedCallback(){this.removeEventListener("click",this.handleClick)}attributeChangedCallback(e,i,r){if(i!==r&&this.hasRendered){if(e==="active")return;this.updateContent()}}setupEventListeners(){this.addEventListener("pointerdown",e=>{const i=document.createElement("span"),r=e.currentTarget,s=r.getBoundingClientRect(),n=Math.max(r.offsetWidth,r.offsetHeight),c=n/2;i.classList.add("ripple"),i.style.width=`${n}px`,i.style.height=`${n}px`,i.style.left=`${e.clientX-s.left-c}px`,i.style.top=`${e.clientY-s.top-c}px`,this.shadowRoot.appendChild(i),i.addEventListener("animationend",()=>{i.remove()})})}updateContent(){const e=this.getAttribute("icon"),i=this.getAttribute("avatar-src"),r=this.getAttribute("avatar-name"),s=this.getAttribute("label")||"",n=this.getAttribute("badge"),c=this.shadowRoot.querySelector(".badge");if(n)if(c)c.textContent=n;else{const l=document.createElement("span");l.className="badge",l.textContent=n,this.shadowRoot.appendChild(l)}else c&&c.remove();const d=this.shadowRoot.querySelector("slot[name='icon']");if(d)if(i||r){let l='<eui-avatar size="24"';r&&(l+=` name="${r}"`),l+=">",i&&(l+=`<img src="${i}" alt="${r||"Avatar"}" />`),l+="</eui-avatar>",d.innerHTML=l}else{const l=d.querySelector("eui-icon");e&&l?l.getAttribute("name")!==e&&l.setAttribute("name",e):e?d.innerHTML=`<eui-icon width="24" height="24" name="${e}"></eui-icon>`:d.innerHTML=""}const a=this.shadowRoot.querySelector(".label");a&&(a.textContent=s)}render(){this.shadowRoot.innerHTML=`
350
350
  <style>
351
351
  :host {
352
352
  position: relative;
@@ -551,10 +551,10 @@
551
551
  <div class="app-nav-container">
552
552
  <a href="#content" id="skip_navigation_link">Skip To Content</a>
553
553
  <div class="nav-items">
554
- ${this.navItems.map(t=>{var s,n;if(t.type==="divider")return'<div style="height: 1px; background: var(--app-300); margin: 0.5rem 0;"></div>';const i=((s=t.avatar)==null?void 0:s.src)||"",e=((n=t.avatar)==null?void 0:n.name)||"";return`<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${i}" avatar-name="${e}" label="${t.label}"></eui-nav-item>`}).join("")}
554
+ ${this.navItems.map(t=>{var r,s;if(t.type==="divider")return'<div style="height: 1px; background: var(--app-300); margin: 0.5rem 0;"></div>';const e=((r=t.avatar)==null?void 0:r.src)||"",i=((s=t.avatar)==null?void 0:s.name)||"";return`<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${e}" avatar-name="${i}" label="${t.label}"></eui-nav-item>`}).join("")}
555
555
  </div>
556
556
  </div>
557
- `}set navItems(t){this._navItems=t,this.render(),this.updateActiveState()}get navItems(){return this._navItems||[]}updateActiveState(t){t||(t=w.location()),t.startsWith("/")||(t="/"+t),this.shadowRoot.querySelectorAll("eui-nav-item").forEach(e=>{e.getAttribute("path")===t?e.setAttribute("active",""):e.removeAttribute("active")})}}customElements.define("eui-app-nav",N);class O extends HTMLElement{static get observedAttributes(){return["type","title","subtitle","img"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
557
+ `}set navItems(t){this._navItems=t,this.render(),this.updateActiveState()}get navItems(){return this._navItems||[]}updateActiveState(t){t||(t=w.location()),t.startsWith("/")||(t="/"+t),this.shadowRoot.querySelectorAll("eui-nav-item").forEach(i=>{i.getAttribute("path")===t?i.setAttribute("active",""):i.removeAttribute("active")})}}customElements.define("eui-app-nav",N);class O extends HTMLElement{static get observedAttributes(){return["type","title","subtitle","img"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
558
558
  <style>
559
559
  :host {
560
560
  border-radius: 24px;
@@ -623,7 +623,7 @@
623
623
  <p></p>
624
624
  </div>
625
625
  </div>
626
- `}connectedCallback(){this.hd=this.shadowRoot.querySelector(".header"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}attributeChangedCallback(t,i,e){const s=this.shadowRoot.querySelector("h1"),n=this.shadowRoot.querySelector("p"),l=this.shadowRoot.querySelector(".img");t==="title"&&(s.textContent=e),t==="subtitle"&&(n.textContent=e),t==="img"&&(l.style.backgroundImage=e?`url(${e})`:"")}}customElements.define("eui-header",O);class P extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
626
+ `}connectedCallback(){this.hd=this.shadowRoot.querySelector(".header"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}attributeChangedCallback(t,e,i){const r=this.shadowRoot.querySelector("h1"),s=this.shadowRoot.querySelector("p"),n=this.shadowRoot.querySelector(".img");t==="title"&&(r.textContent=i),t==="subtitle"&&(s.textContent=i),t==="img"&&(n.style.backgroundImage=i?`url(${i})`:"")}}customElements.define("eui-header",O);class P extends HTMLElement{static get observedAttributes(){return["selected"]}constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`
627
627
  <style>
628
628
  :host {
629
629
  display: block;
@@ -706,7 +706,7 @@
706
706
  <rect class="mark long"></rect>
707
707
  </svg>
708
708
  </div>
709
- `}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.checkEl=this.shadowRoot.querySelector(".checkbox"),this.updateFromAttribute(),this.checkEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x();const t=this.selected,i=this.dataset.setting;i&&E.set(i,t)}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.checkEl.classList.toggle("selected",t)}attributeChangedCallback(t,i,e){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-checkbox",P);class L extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}render(){const t=this.getAttribute("href"),i=t?"a":"button";this.shadowRoot.innerHTML=`
709
+ `}connectedCallback(){this.inputEl=this.shadowRoot.querySelector("input"),this.checkEl=this.shadowRoot.querySelector(".checkbox"),this.updateFromAttribute(),this.checkEl.addEventListener("click",()=>this.toggle())}toggle(){this.selected=!this.selected,x();const t=this.selected,e=this.dataset.setting;e&&A.set(e,t)}updateFromAttribute(){const t=this.hasAttribute("selected");this.inputEl.checked=t,this.checkEl.classList.toggle("selected",t)}attributeChangedCallback(t,e,i){t==="selected"&&this.inputEl&&this.updateFromAttribute()}get selected(){return this.hasAttribute("selected")}set selected(t){t?this.setAttribute("selected",""):this.removeAttribute("selected")}}customElements.define("eui-checkbox",P);class L extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}render(){const t=this.getAttribute("href"),e=t?"a":"button";this.shadowRoot.innerHTML=`
710
710
  <style>
711
711
  button, a {
712
712
  display: flex;
@@ -809,10 +809,10 @@
809
809
  }
810
810
 
811
811
  </style>
812
- <${i}>
812
+ <${e}>
813
813
  <slot></slot>
814
- </${i}>
815
- `;const e=this.shadowRoot.querySelector(i);t&&e.setAttribute("href",t),this.hasAttribute("type")&&e.classList.add(this.getAttribute("type")),this.hasAttribute("icon")&&e.classList.add("icon"),this.hasAttribute("width")&&(e.style.width=this.getAttribute("width")+"px"),this.hasAttribute("height")&&(e.style.height=this.getAttribute("height")+"px"),this.hasAttribute("border-radius")&&(e.style.borderRadius=this.getAttribute("border-radius")+"px"),e.addEventListener("pointerdown",s=>{const n=document.createElement("span"),l=s.currentTarget,c=l.getBoundingClientRect(),d=Math.max(l.offsetWidth,l.offsetHeight),r=d/2;n.classList.add("ripple"),n.style.width=`${d}px`,n.style.height=`${d}px`,n.style.left=`${s.clientX-c.left-r}px`,n.style.top=`${s.clientY-c.top-r}px`,e.appendChild(n),n.addEventListener("animationend",()=>{n.remove()})})}}C(L,"observedAttributes",["type","width","height","border-radius","icon","link","href"]),customElements.define("eui-button",L);class V extends HTMLElement{static get observedAttributes(){return["type","anchor"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.hd=this.shadowRoot.querySelector(".hd"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}render(){this.shadowRoot.innerHTML=`
814
+ </${e}>
815
+ `;const i=this.shadowRoot.querySelector(e);t&&i.setAttribute("href",t),this.hasAttribute("type")&&i.classList.add(this.getAttribute("type")),this.hasAttribute("icon")&&i.classList.add("icon"),this.hasAttribute("width")&&(i.style.width=this.getAttribute("width")+"px"),this.hasAttribute("height")&&(i.style.height=this.getAttribute("height")+"px"),this.hasAttribute("border-radius")&&(i.style.borderRadius=this.getAttribute("border-radius")+"px"),i.addEventListener("pointerdown",r=>{const s=document.createElement("span"),n=r.currentTarget,c=n.getBoundingClientRect(),d=Math.max(n.offsetWidth,n.offsetHeight),a=d/2;s.classList.add("ripple"),s.style.width=`${d}px`,s.style.height=`${d}px`,s.style.left=`${r.clientX-c.left-a}px`,s.style.top=`${r.clientY-c.top-a}px`,i.appendChild(s),s.addEventListener("animationend",()=>{s.remove()})})}}C(L,"observedAttributes",["type","width","height","border-radius","icon","link","href"]),customElements.define("eui-button",L);class V extends HTMLElement{static get observedAttributes(){return["type","anchor"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.hd=this.shadowRoot.querySelector(".hd"),this.hasAttribute("type")&&this.hd.classList.add(this.getAttribute("type"))}render(){this.shadowRoot.innerHTML=`
816
816
  <style>
817
817
  :host {
818
818
  display: block;
@@ -870,7 +870,7 @@
870
870
  <span class="anchor-hash">#</span>
871
871
  </a>
872
872
  `:""}
873
- `}}customElements.define("eui-heading",V);function U(o){const e=Date.now()-o,s=Math.floor(e/1e3),n=Math.floor(s/60),l=Math.floor(n/60),c=Math.floor(l/24),d=Math.floor(c/30),r=Math.floor(d/12);return r>0?`${r}y`:d>0?`${d}mo`:c>0?`${c}d`:l>0?`${l}h`:n>0?`${n}m`:`${s}s`}function Z(o){const e=Date.now()-o,s=Math.floor(e/1e3),n=Math.floor(s/60),l=Math.floor(n/60),c=Math.floor(l/24),d=Math.floor(c/30),r=Math.floor(d/12);return r>0?`${r} year${r>1?"s":""} ago`:d>0?`${d} month${d>1?"s":""} ago`:c>0?`${c} day${c>1?"s":""} ago`:l>0?`${l} hour${l>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:`${s} second${s>1?"s":""} ago`}function D(o){return o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/`/g,"&#96;").replace(/'/g,"&#39;")}function S(o){const t=document.createElement("input");t.value=o,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}const X=Object.freeze(Object.defineProperty({__proto__:null,copystr:S,joinedAgo:Z,sanitize:D,timeAgo:U},Symbol.toStringTag,{value:"Module"}));class W extends HTMLElement{static get observedAttributes(){return["copy","id","type","language"]}constructor(){super(),this.attachShadow({mode:"open"}),this._boundCopy=this._onCopy.bind(this),this._isRendered=!1}connectedCallback(){this._isRendered||(this.render(),this._isRendered=!0)}attributeChangedCallback(t,i,e){this._isRendered&&i!==e&&this.render()}render(){const t=this.hasAttribute("copy"),i=this.getAttribute("language")||"text";this.shadowRoot.innerHTML=`
873
+ `}}customElements.define("eui-heading",V);function D(o){const i=Date.now()-o,r=Math.floor(i/1e3),s=Math.floor(r/60),n=Math.floor(s/60),c=Math.floor(n/24),d=Math.floor(c/30),a=Math.floor(d/12);return a>0?`${a}y`:d>0?`${d}mo`:c>0?`${c}d`:n>0?`${n}h`:s>0?`${s}m`:`${r}s`}function U(o){const i=Date.now()-o,r=Math.floor(i/1e3),s=Math.floor(r/60),n=Math.floor(s/60),c=Math.floor(n/24),d=Math.floor(c/30),a=Math.floor(d/12);return a>0?`${a} year${a>1?"s":""} ago`:d>0?`${d} month${d>1?"s":""} ago`:c>0?`${c} day${c>1?"s":""} ago`:n>0?`${n} hour${n>1?"s":""} ago`:s>0?`${s} minute${s>1?"s":""} ago`:`${r} second${r>1?"s":""} ago`}function Z(o){return o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/`/g,"&#96;").replace(/'/g,"&#39;")}function S(o){const t=document.createElement("input");t.value=o,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}const X=Object.freeze(Object.defineProperty({__proto__:null,copystr:S,joinedAgo:U,sanitize:Z,timeAgo:D},Symbol.toStringTag,{value:"Module"}));class W extends HTMLElement{static get observedAttributes(){return["copy","id","type","language"]}constructor(){super(),this.attachShadow({mode:"open"}),this._boundCopy=this._onCopy.bind(this),this._isRendered=!1}connectedCallback(){this._isRendered||(this.render(),this._isRendered=!0)}attributeChangedCallback(t,e,i){this._isRendered&&e!==i&&this.render()}render(){const t=this.hasAttribute("copy"),e=this.getAttribute("language")||"text";this.shadowRoot.innerHTML=`
874
874
  <style>
875
875
  :host {
876
876
  position: relative;
@@ -907,14 +907,14 @@
907
907
  }
908
908
 
909
909
  .token.comment { color: var(--app-700); font-style: italic; }
910
- .token.string { color: var(--app-green); }
911
- .token.number { color: var(--app-orange); }
912
- .token.keyword { color: var(--app-purple); font-weight: bold; }
913
- .token.function { color: var(--app-blue); }
914
- .token.tag { color: var(--app-red); }
915
- .token.attr-name { color: var(--app-yellow); }
916
- .token.attr-value { color: var(--app-green); }
917
- .token.boolean { color: var(--app-orange); }
910
+ .token.string { color: #9ECE6A; }
911
+ .token.number { color: #F97C5F; }
912
+ .token.keyword { color: #7DCFFF; }
913
+ .token.function { color: #7DCFFF; }
914
+ .token.tag { color: #DE5971; }
915
+ .token.attr-name { color: #BB9AF7; }
916
+ .token.attr-value { color: #9ECE6A; }
917
+ .token.boolean { color: #F97C5F; }
918
918
  </style>
919
919
 
920
920
  <eui-button class="copy" width="36" height="36" border-radius="100">
@@ -922,9 +922,9 @@
922
922
  </eui-button>
923
923
 
924
924
  <pre class="${t?"g":""}"><code></code></pre>
925
- `,this.copyBtn=this.shadowRoot.querySelector(".copy"),this.codeEl=this.shadowRoot.querySelector("code");const e=this._getFormattedText();this.codeEl.innerHTML=this._highlight(e,i),t?this.copyBtn.addEventListener("click",this._boundCopy):this.copyBtn.style.display="none"}_getFormattedText(){let t=this.textContent||"";t=t.replace(/^\s*\n/,"").replace(/\n\s*$/,"");const i=t.split(`
926
- `),e=i.filter(n=>n.trim()).map(n=>n.match(/^\s*/)[0].length),s=e.length?Math.min(...e):0;return i.map(n=>n.slice(s)).join(`
927
- `)}_highlight(t,i){return t=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),i==="javascript"||i==="js"||i==="json"?(t=t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g,'<span class="token string">$1</span>'),t=t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm,'<span class="token comment">$1</span>'),t=t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(true|false|null|undefined)\b/g,'<span class="token boolean">$1</span>'),t=t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g,'<span class="token function">$1</span>')):i==="bash"||i==="sh"?(t=t.replace(/(#.*$)/gm,'<span class="token comment">$1</span>'),t=t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g,'<span class="token string">$1</span>'),t=t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g,'<span class="token function">$1</span>'),t=t.replace(/(\s-+[a-zA-Z0-9-]+)/g,'<span class="token attr-name">$1</span>'),t=t.replace(/(\$[A-Z0-9_]+)/g,'<span class="token number">$1</span>')):i==="html"||i==="xml"?(t=t.replace(/(&lt;!--[\s\S]*?--&gt;)/g,'<span class="token comment">$1</span>'),t=t.replace(/(&lt;\/?[a-z0-9:-]+)/gi,'<span class="token tag">$1</span>'),t=t.replace(/\s([a-z0-9:-]+)=/gi,' <span class="token attr-name">$1</span>='),t=t.replace(/(".*?")/g,'<span class="token attr-value">$1</span>'),t=t.replace(/&gt;/g,'<span class="token tag">&gt;</span>')):i==="css"&&(t=t.replace(/(\/\*[\s\S]*?\*\/)/g,'<span class="token comment">$1</span>'),t=t.replace(/([a-z-]+)(?=:)/g,'<span class="token keyword">$1</span>')),t}_onCopy(){S(this._getFormattedText());const t=this.copyBtn.querySelector("eui-icon");if(t){const i=t.getAttribute("name");t.setAttribute("name","check"),setTimeout(()=>t.setAttribute("name",i),2e3)}}disconnectedCallback(){this.copyBtn&&this.copyBtn.removeEventListener("click",this._boundCopy)}}customElements.define("eui-code",W);class J extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["name"]}attributeChangedCallback(t,i,e){t==="name"&&(this.render(),this.setupEventListeners())}setupEventListeners(){const t=this.shadowRoot.querySelector("#nav-toggle");t&&t.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("toggle-nav"))})}render(){const t=this.getAttribute("name")||"Title";this.shadowRoot.innerHTML=`
925
+ `,this.copyBtn=this.shadowRoot.querySelector(".copy"),this.codeEl=this.shadowRoot.querySelector("code");const i=this._getFormattedText();this.codeEl.innerHTML=this._highlight(i,e),t?this.copyBtn.addEventListener("click",this._boundCopy):this.copyBtn.style.display="none"}_getFormattedText(){let e=(this.querySelector("code")||this).innerHTML||"";e=this._unescapeHtml(e),e=e.replace(/^\s*\n/,"").replace(/\n\s*$/,"");const i=e.split(`
926
+ `),r=i.filter(n=>n.trim()).map(n=>n.match(/^\s*/)[0].length),s=r.length?Math.min(...r):0;return i.map(n=>n.slice(s)).join(`
927
+ `)}_unescapeHtml(t){const e=document.createElement("textarea");return e.innerHTML=t,e.value}_highlight(t,e){t=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");const i={};let r=0;function s(n,c){const d=`__TOKEN_${c}_${r++}__`;return i[d]=`<span class="token ${c}">${n}</span>`,d}return["javascript","js","json","bash","sh","css"].includes(e)?(t=t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g,n=>s(n,"string")),e==="bash"||e==="sh"?t=t.replace(/(#.*$)/gm,n=>s(n,"comment")):e==="css"?t=t.replace(/(\/\*[\s\S]*?\*\/)/g,n=>s(n,"comment")):t=t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm,n=>s(n,"comment"))):["html","xml"].includes(e)&&(t=t.replace(/(&lt;!--[\s\S]*?--&gt;)/g,n=>s(n,"comment")),t=t.replace(/(&lt;\/?[a-z0-9:-]+)/gi,n=>s(n,"tag"))),e==="javascript"||e==="js"||e==="json"?(t=t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(true|false|null|undefined)\b/g,'<span class="token boolean">$1</span>'),t=t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g,'<span class="token function">$1</span>')):e==="bash"||e==="sh"?(t=t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g,'<span class="token keyword">$1</span>'),t=t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g,'<span class="token function">$1</span>'),t=t.replace(/(\s-+[a-zA-Z0-9-]+)/g,'<span class="token attr-name">$1</span>'),t=t.replace(/(\$[A-Z0-9_]+)/g,'<span class="token number">$1</span>')):e==="html"||e==="xml"?(t=t.replace(/\s([a-z0-9:-]+)=/gi,(n,c)=>" "+s(c,"attr-name")+"="),t=t.replace(/(".*?")/g,n=>s(n,"attr-value")),t=t.replace(/&gt;/g,'<span class="token tag">&gt;</span>')):e==="css"&&(t=t.replace(/([a-z-]+)(?=:)/g,'<span class="token keyword">$1</span>')),Object.keys(i).reverse().forEach(n=>{t=t.replace(n,i[n])}),t}_onCopy(){S(this._getFormattedText());const t=this.copyBtn.querySelector("eui-icon");if(t){const e=t.getAttribute("name");t.setAttribute("name","check"),setTimeout(()=>t.setAttribute("name",e),2e3)}}disconnectedCallback(){this.copyBtn&&this.copyBtn.removeEventListener("click",this._boundCopy)}}customElements.define("eui-code",W);class J extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["name"]}attributeChangedCallback(t,e,i){t==="name"&&(this.render(),this.setupEventListeners())}setupEventListeners(){const t=this.shadowRoot.querySelector("#nav-toggle");t&&t.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("toggle-nav"))})}render(){const t=this.getAttribute("name")||"Title";this.shadowRoot.innerHTML=`
928
928
  <style>
929
929
  :host {
930
930
  display: block;
@@ -1016,7 +1016,7 @@
1016
1016
  <slot></slot>
1017
1017
  </div>
1018
1018
  </div>
1019
- `}}customElements.define("eui-app-titlebar",J);class Y extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._handleMouseDown=this._addRipple.bind(this)}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["elevated","interactive","ripple"]}attributeChangedCallback(t,i,e){i!==e&&t==="ripple"&&this.setupEventListeners()}setupEventListeners(){this.removeEventListener("mousedown",this._handleMouseDown),this.hasAttribute("ripple")&&this.addEventListener("mousedown",this._handleMouseDown)}_addRipple(t){const i=this.getBoundingClientRect(),e=document.createElement("span"),s=Math.max(i.width,i.height),n=s/2;e.style.width=e.style.height=`${s}px`,e.style.left=`${t.clientX-i.left-n}px`,e.style.top=`${t.clientY-i.top-n}px`,e.classList.add("ripple"),this.shadowRoot.querySelector(".surface").appendChild(e),e.addEventListener("animationend",()=>{e.remove()})}render(){this.shadowRoot.innerHTML=`
1019
+ `}}customElements.define("eui-app-titlebar",J);class K extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._handleMouseDown=this._addRipple.bind(this)}connectedCallback(){this.render(),this.setupEventListeners()}static get observedAttributes(){return["elevated","interactive","ripple"]}attributeChangedCallback(t,e,i){e!==i&&t==="ripple"&&this.setupEventListeners()}setupEventListeners(){this.removeEventListener("mousedown",this._handleMouseDown),this.hasAttribute("ripple")&&this.addEventListener("mousedown",this._handleMouseDown)}_addRipple(t){const e=this.getBoundingClientRect(),i=document.createElement("span"),r=Math.max(e.width,e.height),s=r/2;i.style.width=i.style.height=`${r}px`,i.style.left=`${t.clientX-e.left-s}px`,i.style.top=`${t.clientY-e.top-s}px`,i.classList.add("ripple"),this.shadowRoot.querySelector(".surface").appendChild(i),i.addEventListener("animationend",()=>{i.remove()})}render(){this.shadowRoot.innerHTML=`
1020
1020
  <style>
1021
1021
  :host {
1022
1022
  display: block;
@@ -1077,4 +1077,4 @@
1077
1077
  <div class="surface">
1078
1078
  <slot></slot>
1079
1079
  </div>
1080
- `}}customElements.define("eui-surface",Y),typeof window<"u"&&console.log("ErisUI loaded successfully"),h.device=R,h.haptics=_,h.icons=u,h.loadPage=q,h.router=w,h.storage=I,h.utils=X,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
1080
+ `}}customElements.define("eui-surface",K),typeof window<"u"&&console.log("ErisUI loaded successfully"),h.device=R,h.haptics=_,h.icons=p,h.loadPage=q,h.router=w,h.storage=F,h.utils=X,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
package/dist/erisui.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  var S = Object.defineProperty;
2
- var z = (o, t, i) => t in o ? S(o, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : o[t] = i;
3
- var v = (o, t, i) => z(o, typeof t != "symbol" ? t + "" : t, i);
4
- class M extends HTMLElement {
2
+ var M = (o, t, e) => t in o ? S(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e;
3
+ var v = (o, t, e) => M(o, typeof t != "symbol" ? t + "" : t, e);
4
+ class z extends HTMLElement {
5
5
  static get observedAttributes() {
6
6
  return ["size", "border-radius", "name", "color"];
7
7
  }
@@ -55,29 +55,29 @@ class M extends HTMLElement {
55
55
  }
56
56
  connectedCallback() {
57
57
  this.avatar = this.shadowRoot.querySelector(".avatar"), this.initials = this.shadowRoot.querySelector("#initials");
58
- const t = this.shadowRoot.querySelector("slot"), i = t && t.assignedNodes().length > 0;
59
- if (i) {
60
- const e = t.assignedNodes()[0];
61
- e && e.tagName === "IMG" && (this.initials.style.display = "none", this.avatar.style.backgroundColor = "transparent");
58
+ const t = this.shadowRoot.querySelector("slot"), e = t && t.assignedNodes().length > 0;
59
+ if (e) {
60
+ const i = t.assignedNodes()[0];
61
+ i && i.tagName === "IMG" && (this.initials.style.display = "none", this.avatar.style.backgroundColor = "transparent");
62
62
  } else
63
63
  this.hasAttribute("color") && (this.avatar.style.backgroundColor = this.getAttribute("color"));
64
64
  if (this.hasAttribute("color") && (this.avatar.style.backgroundColor = this.getAttribute("color")), this.hasAttribute("size")) {
65
- const e = this.getAttribute("size");
66
- this.avatar.style.width = e + "px", this.avatar.style.height = e + "px", this.initials.style.fontSize = e / 2 + "px";
65
+ const i = this.getAttribute("size");
66
+ this.avatar.style.width = i + "px", this.avatar.style.height = i + "px", this.initials.style.fontSize = i / 2 + "px";
67
67
  }
68
- if (this.hasAttribute("border-radius") && (this.avatar.style.borderRadius = this.getAttribute("border-radius") + "px"), this.hasAttribute("name") && (this.avatar.title = this.getAttribute("name")), !i && this.hasAttribute("name")) {
69
- const s = this.getAttribute("name").trim().split(/\s+/);
70
- let n = "";
71
- s.length === 1 ? n = s[0][0] || "" : n = (s[0][0] || "") + (s[s.length - 1][0] || ""), this.initials.textContent = n.toUpperCase();
68
+ if (this.hasAttribute("border-radius") && (this.avatar.style.borderRadius = this.getAttribute("border-radius") + "px"), this.hasAttribute("name") && (this.avatar.title = this.getAttribute("name")), !e && this.hasAttribute("name")) {
69
+ const n = this.getAttribute("name").trim().split(/\s+/);
70
+ let s = "";
71
+ n.length === 1 ? s = n[0][0] || "" : s = (n[0][0] || "") + (n[n.length - 1][0] || ""), this.initials.textContent = s.toUpperCase();
72
72
  }
73
73
  }
74
74
  }
75
- customElements.define("eui-avatar", M);
75
+ customElements.define("eui-avatar", z);
76
76
  const u = /* @__PURE__ */ (() => {
77
77
  let o = {};
78
78
  return {
79
- register(t, i) {
80
- o[t] = i;
79
+ register(t, e) {
80
+ o[t] = e;
81
81
  },
82
82
  get(t) {
83
83
  return o[t] || "";
@@ -92,7 +92,8 @@ u.register("home", '<svg width="22" height="21" viewBox="0 0 22 21" fill="none"
92
92
  u.register("copy", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 11C2 11.7956 2.31607 12.5587 2.87868 13.1213C3.44129 13.6839 4.20435 14 5 14H11C11.7956 14 12.5587 13.6839 13.1213 13.1213C13.6839 12.5587 14 11.7956 14 11V8H11.75C10.7554 8 9.80161 7.60491 9.09835 6.90165C8.39509 6.19839 8 5.24456 8 4.25V2H5C4.20435 2 3.44129 2.31607 2.87868 2.87868C2.31607 3.44129 2 4.20435 2 5V11Z" fill="currentColor"/><path d="M13.7975 6.49965C13.6881 6.25457 13.5357 6.03105 13.3475 5.83965L10.16 2.65965C9.96921 2.4688 9.74565 2.31384 9.5 2.20215V4.24965C9.5 4.54512 9.5582 4.8377 9.67127 5.11069C9.78434 5.38367 9.95008 5.63171 10.159 5.84064C10.3679 6.04957 10.616 6.2153 10.889 6.32838C11.1619 6.44145 11.4545 6.49965 11.75 6.49965H13.7975Z" fill="currentColor"/></svg>');
93
93
  u.register("arrow", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>');
94
94
  u.register("back", '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" style="transform: rotate(180deg)"><path d="M9.3 5.3a1 1 0 0 0 0 1.4l5.29 5.3-5.3 5.3a1 1 0 1 0 1.42 1.4l6-6a1 1 0 0 0 0-1.4l-6-6a1 1 0 0 0-1.42 0Z"></path></svg>');
95
- class $ extends HTMLElement {
95
+ u.register("check", '<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.86368 9.12226C3.82463 9.16131 3.76131 9.16131 3.72226 9.12226L0.146522 5.54652C-0.0487403 5.35126 -0.0487401 5.03468 0.146522 4.83942L0.839416 4.14652C1.03468 3.95126 1.35126 3.95126 1.54652 4.14652L3.72226 6.32226C3.76131 6.36131 3.82463 6.36131 3.86368 6.32226L10.0394 0.146522C10.2347 -0.0487398 10.5513 -0.0487399 10.7465 0.146522L11.4394 0.839416C11.6347 1.03468 11.6347 1.35126 11.4394 1.54652L3.86368 9.12226Z" fill="currentColor"/></svg>');
96
+ class T extends HTMLElement {
96
97
  static get observedAttributes() {
97
98
  return ["name", "width", "height"];
98
99
  }
@@ -106,23 +107,23 @@ class $ extends HTMLElement {
106
107
  this.render();
107
108
  }
108
109
  render() {
109
- const t = this.getAttribute("name"), i = u.get(t);
110
- if (!i) {
110
+ const t = this.getAttribute("name"), e = u.get(t);
111
+ if (!e) {
111
112
  this.shadowRoot.innerHTML = '<span style="color:red;">?</span>';
112
113
  return;
113
114
  }
114
- const e = document.createElement("template");
115
- e.innerHTML = i.trim();
116
- const s = e.content.cloneNode(!0), n = s.firstElementChild;
117
- if (n && n.style) {
118
- const l = this.getAttribute("width"), c = this.getAttribute("height");
119
- l && n.setAttribute("width", l), c && n.setAttribute("height", c), n.style.display = "block";
115
+ const i = document.createElement("template");
116
+ i.innerHTML = e.trim();
117
+ const n = i.content.cloneNode(!0), s = n.firstElementChild;
118
+ if (s && s.style) {
119
+ const r = this.getAttribute("width"), c = this.getAttribute("height");
120
+ r && s.setAttribute("width", r), c && s.setAttribute("height", c), s.style.display = "block";
120
121
  }
121
- this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(s);
122
+ this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(n);
122
123
  }
123
124
  }
124
- customElements.define("eui-icon", $);
125
- class T extends HTMLElement {
125
+ customElements.define("eui-icon", T);
126
+ class $ extends HTMLElement {
126
127
  static get observedAttributes() {
127
128
  return ["label", "value", "id", "type", "filled"];
128
129
  }
@@ -234,17 +235,17 @@ class T extends HTMLElement {
234
235
  this.setAttribute("value", this.inputEl.value);
235
236
  });
236
237
  }
237
- attributeChangedCallback(t, i, e) {
238
+ attributeChangedCallback(t, e, i) {
238
239
  if (!(!this.inputEl || !this.labelEl))
239
240
  switch (t) {
240
241
  case "value":
241
- this.inputEl.value !== e && (this.inputEl.value = e);
242
+ this.inputEl.value !== i && (this.inputEl.value = i);
242
243
  break;
243
244
  case "id":
244
- this.inputEl.id = e;
245
+ this.inputEl.id = i;
245
246
  break;
246
247
  case "label":
247
- this.labelEl.textContent = e;
248
+ this.labelEl.textContent = i;
248
249
  break;
249
250
  }
250
251
  }
@@ -255,7 +256,7 @@ class T extends HTMLElement {
255
256
  this.setAttribute("value", t);
256
257
  }
257
258
  }
258
- customElements.define("eui-input", T);
259
+ customElements.define("eui-input", $);
259
260
  class R extends HTMLElement {
260
261
  constructor() {
261
262
  super(), this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = `
@@ -406,25 +407,25 @@ function _() {
406
407
  function w(o) {
407
408
  x.supports.haptics ? navigator.vibrate(o || 50) : x.is.iPhone && _();
408
409
  }
409
- const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
410
+ const K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
410
411
  __proto__: null,
411
412
  haptic: w
412
413
  }, Symbol.toStringTag, { value: "Module" })), y = (() => {
413
414
  let o = {}, t;
414
415
  try {
415
416
  o = JSON.parse(localStorage.getItem(t) || "{}");
416
- } catch (i) {
417
- console.error(i);
417
+ } catch (e) {
418
+ console.error(e);
418
419
  }
419
420
  return {
420
- get(i) {
421
- return o[i];
421
+ get(e) {
422
+ return o[e];
422
423
  },
423
- set(i, e) {
424
- o[i] = e, localStorage.setItem(t, JSON.stringify(o));
424
+ set(e, i) {
425
+ o[e] = i, localStorage.setItem(t, JSON.stringify(o));
425
426
  },
426
- delete(i) {
427
- delete o[i], localStorage.setItem(t, JSON.stringify(o));
427
+ delete(e) {
428
+ delete o[e], localStorage.setItem(t, JSON.stringify(o));
428
429
  },
429
430
  all() {
430
431
  return o;
@@ -432,23 +433,23 @@ const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
432
433
  clear() {
433
434
  o = {}, localStorage.setItem(t, JSON.stringify(o));
434
435
  },
435
- name(i) {
436
- t = i;
436
+ name(e) {
437
+ t = e;
437
438
  try {
438
439
  o = JSON.parse(localStorage.getItem(t) || "{}");
439
- } catch (e) {
440
- console.error(e);
440
+ } catch (i) {
441
+ console.error(i);
441
442
  }
442
443
  },
443
444
  settings: {
444
- get(i) {
445
- return o && o.settings && o.settings[i];
445
+ get(e) {
446
+ return o && o.settings && o.settings[e];
446
447
  },
447
- set(i, e) {
448
- o.settings || (o.settings = {}), o.settings[i] = e, localStorage.setItem(t, JSON.stringify(o));
448
+ set(e, i) {
449
+ o.settings || (o.settings = {}), o.settings[e] = i, localStorage.setItem(t, JSON.stringify(o));
449
450
  },
450
- delete(i) {
451
- o.settings && (delete o.settings[i], localStorage.setItem(t, JSON.stringify(o)));
451
+ delete(e) {
452
+ o.settings && (delete o.settings[e], localStorage.setItem(t, JSON.stringify(o)));
452
453
  },
453
454
  all() {
454
455
  return o.settings || {};
@@ -458,12 +459,12 @@ const Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
458
459
  }
459
460
  }
460
461
  };
461
- })(), k = y.settings, K = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
462
+ })(), k = y.settings, Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
462
463
  __proto__: null,
463
464
  settings: k,
464
465
  storage: y
465
466
  }, Symbol.toStringTag, { value: "Module" }));
466
- class I extends HTMLElement {
467
+ class F extends HTMLElement {
467
468
  static get observedAttributes() {
468
469
  return ["selected"];
469
470
  }
@@ -549,7 +550,7 @@ class I extends HTMLElement {
549
550
  const t = this.hasAttribute("selected");
550
551
  this.inputEl.checked = t, this.switchEl.classList.toggle("selected", t);
551
552
  }
552
- attributeChangedCallback(t, i, e) {
553
+ attributeChangedCallback(t, e, i) {
553
554
  t === "selected" && this.inputEl && this.updateFromAttribute();
554
555
  }
555
556
  get selected() {
@@ -559,8 +560,8 @@ class I extends HTMLElement {
559
560
  t ? this.setAttribute("selected", "") : this.removeAttribute("selected");
560
561
  }
561
562
  }
562
- customElements.define("eui-switch", I);
563
- class F extends HTMLElement {
563
+ customElements.define("eui-switch", F);
564
+ class I extends HTMLElement {
564
565
  constructor() {
565
566
  super(), this.attachShadow({ mode: "open" });
566
567
  }
@@ -611,97 +612,97 @@ class F extends HTMLElement {
611
612
  </style>
612
613
  <slot></slot>
613
614
  `, this.addEventListener("pointerdown", (t) => {
614
- const i = document.createElement("span"), e = t.currentTarget, s = Math.max(e.offsetWidth, e.offsetHeight);
615
- i.classList.add("ripple"), i.style.left = t.clientX - e.getBoundingClientRect().left - s / 2 + "px", i.style.top = t.clientY - e.getBoundingClientRect().top - s / 2 + "px", i.style.width = s + "px", i.style.height = s + "px", this.shadowRoot.appendChild(i), setTimeout(() => {
616
- i.remove();
615
+ const e = document.createElement("span"), i = t.currentTarget, n = Math.max(i.offsetWidth, i.offsetHeight);
616
+ e.classList.add("ripple"), e.style.left = t.clientX - i.getBoundingClientRect().left - n / 2 + "px", e.style.top = t.clientY - i.getBoundingClientRect().top - n / 2 + "px", e.style.width = n + "px", e.style.height = n + "px", this.shadowRoot.appendChild(e), setTimeout(() => {
617
+ e.remove();
617
618
  }, 600);
618
619
  });
619
620
  }
620
621
  }
621
- customElements.define("eui-chip", F);
622
- const b = "", C = (() => {
622
+ customElements.define("eui-chip", I);
623
+ const m = "", C = (() => {
623
624
  const o = [];
624
- function t(r, a) {
625
- const h = [], g = r.replace(/:([^/]+)/g, (m, f) => (h.push(f), "([^/]+)")).replace(/\//g, "\\/"), p = new RegExp(`^${b}${g}$`);
626
- o.push({ regex: p, paramNames: h, renderFn: a });
625
+ function t(a, l) {
626
+ const h = [], g = a.replace(/:([^/]+)/g, (b, f) => (h.push(f), "([^/]+)")).replace(/\//g, "\\/"), p = new RegExp(`^${m}${g}$`);
627
+ o.push({ regex: p, paramNames: h, renderFn: l });
627
628
  }
628
- function i(r) {
629
- for (const { regex: a, paramNames: h, renderFn: g } of o) {
630
- const p = r.match(a);
629
+ function e(a) {
630
+ for (const { regex: l, paramNames: h, renderFn: g } of o) {
631
+ const p = a.match(l);
631
632
  if (p) {
632
- const m = {};
633
+ const b = {};
633
634
  return h.forEach((f, L) => {
634
- m[f] = decodeURIComponent(p[L + 1]);
635
- }), { renderFn: g, params: m };
635
+ b[f] = decodeURIComponent(p[L + 1]);
636
+ }), { renderFn: g, params: b };
636
637
  }
637
638
  }
638
639
  return null;
639
640
  }
640
- function e(r, a = !0) {
641
- r.startsWith(b) || (r = b + (r.startsWith("/") ? "" : "/") + r);
642
- const h = r.split(/[?#]/)[0];
643
- if (h === window.location.pathname && r.includes("#")) {
644
- a && history.pushState({}, "", r);
645
- const p = "#" + r.split("#")[1];
646
- s(p);
641
+ function i(a, l = !0) {
642
+ a.startsWith(m) || (a = m + (a.startsWith("/") ? "" : "/") + a);
643
+ const h = a.split(/[?#]/)[0];
644
+ if (h === window.location.pathname && a.includes("#")) {
645
+ l && history.pushState({}, "", a);
646
+ const p = "#" + a.split("#")[1];
647
+ n(p);
647
648
  return;
648
649
  }
649
- const g = i(h);
650
+ const g = e(h);
650
651
  if (g)
651
- if (a && history.pushState({}, "", r), g.renderFn(g.params), window.dispatchEvent(new CustomEvent("route-changed", { detail: { path: r } })), r.includes("#")) {
652
- const p = "#" + r.split("#")[1];
653
- setTimeout(() => s(p), 100);
652
+ if (l && history.pushState({}, "", a), g.renderFn(g.params), window.dispatchEvent(new CustomEvent("route-changed", { detail: { path: a } })), a.includes("#")) {
653
+ const p = "#" + a.split("#")[1];
654
+ setTimeout(() => n(p), 100);
654
655
  } else {
655
656
  const p = document.getElementById("main");
656
657
  p && p.scrollTo(0, 0);
657
658
  }
658
- else n ? (a && history.pushState({}, "", r), n()) : console.warn(`No route found for ${h}`);
659
+ else s ? (l && history.pushState({}, "", a), s()) : console.warn(`No route found for ${h}`);
659
660
  }
660
- function s(r) {
661
- if (r)
661
+ function n(a) {
662
+ if (a)
662
663
  try {
663
- const a = document.querySelector(r);
664
- a && a.scrollIntoView({ behavior: "smooth" });
664
+ const l = document.querySelector(a);
665
+ l && l.scrollIntoView({ behavior: "smooth" });
665
666
  } catch {
666
- console.warn("Invalid hash:", r);
667
+ console.warn("Invalid hash:", a);
667
668
  }
668
669
  }
669
- let n = null;
670
- function l(r) {
671
- n = r;
670
+ let s = null;
671
+ function r(a) {
672
+ s = a;
672
673
  }
673
674
  function c() {
674
675
  history.back();
675
676
  }
676
677
  function d() {
677
- return window.location.pathname.replace(b, "") || "/";
678
+ return window.location.pathname.replace(m, "") || "/";
678
679
  }
679
680
  return window.addEventListener("popstate", () => {
680
- const r = window.location.pathname + window.location.search + window.location.hash;
681
- e(r, !1);
682
- }), window.addEventListener("click", (r) => {
683
- if (r.button !== 0 || r.metaKey || r.altKey || r.ctrlKey || r.shiftKey) return;
684
- const a = r.target.closest("a");
685
- if (!a || a.hasAttribute("download") || a.getAttribute("target") === "_blank") return;
686
- const h = a.getAttribute("href");
681
+ const a = window.location.pathname + window.location.search + window.location.hash;
682
+ i(a, !1);
683
+ }), window.addEventListener("click", (a) => {
684
+ if (a.button !== 0 || a.metaKey || a.altKey || a.ctrlKey || a.shiftKey) return;
685
+ const l = a.target.closest("a");
686
+ if (!l || l.hasAttribute("download") || l.getAttribute("target") === "_blank") return;
687
+ const h = l.getAttribute("href");
687
688
  if (!(!h || h.startsWith("http") && !h.startsWith(window.location.origin))) {
688
- if (r.preventDefault(), h.startsWith("#")) {
689
- history.pushState({}, "", h), s(h);
689
+ if (a.preventDefault(), h.startsWith("#")) {
690
+ history.pushState({}, "", h), n(h);
690
691
  return;
691
692
  }
692
- e(h);
693
+ i(h);
693
694
  }
694
- }), { add: t, navigate: e, back: c, location: d, setNotFound: l };
695
+ }), { add: t, navigate: i, back: c, location: d, setNotFound: r };
695
696
  })();
696
697
  async function G(o) {
697
698
  try {
698
699
  const t = document.getElementById("main");
699
- t.classList.add("fade-out"), await new Promise((e) => setTimeout(e, 200));
700
- const i = await fetch(`/src/pages/${o}.html`).then((e) => e.text());
701
- t.innerHTML = i, t.classList.remove("fade-out"), t.classList.add("fade-in"), window.location.hash ? setTimeout(() => {
700
+ t.classList.add("fade-out"), await new Promise((i) => setTimeout(i, 200));
701
+ const e = await fetch(`/src/pages/${o}.html`).then((i) => i.text());
702
+ t.innerHTML = e, t.classList.remove("fade-out"), t.classList.add("fade-in"), window.location.hash ? setTimeout(() => {
702
703
  try {
703
- const e = document.querySelector(window.location.hash);
704
- e && e.scrollIntoView({ behavior: "smooth" });
704
+ const i = document.querySelector(window.location.hash);
705
+ i && i.scrollIntoView({ behavior: "smooth" });
705
706
  } catch {
706
707
  }
707
708
  }, 100) : t && t.scrollTo(0, 0), setTimeout(() => {
@@ -711,12 +712,12 @@ async function G(o) {
711
712
  console.error("Page load failed:", t);
712
713
  }
713
714
  }
714
- class q extends HTMLElement {
715
+ class j extends HTMLElement {
715
716
  constructor() {
716
717
  super();
717
718
  v(this, "handleClick", () => {
718
- const i = this.getAttribute("path");
719
- i && C.navigate(i);
719
+ const e = this.getAttribute("path");
720
+ e && C.navigate(e);
720
721
  });
721
722
  this.attachShadow({ mode: "open" });
722
723
  }
@@ -729,42 +730,42 @@ class q extends HTMLElement {
729
730
  disconnectedCallback() {
730
731
  this.removeEventListener("click", this.handleClick);
731
732
  }
732
- attributeChangedCallback(i, e, s) {
733
- if (e !== s && this.hasRendered) {
734
- if (i === "active")
733
+ attributeChangedCallback(e, i, n) {
734
+ if (i !== n && this.hasRendered) {
735
+ if (e === "active")
735
736
  return;
736
737
  this.updateContent();
737
738
  }
738
739
  }
739
740
  setupEventListeners() {
740
- this.addEventListener("pointerdown", (i) => {
741
- const e = document.createElement("span"), s = i.currentTarget, n = s.getBoundingClientRect(), l = Math.max(s.offsetWidth, s.offsetHeight), c = l / 2;
742
- e.classList.add("ripple"), e.style.width = `${l}px`, e.style.height = `${l}px`, e.style.left = `${i.clientX - n.left - c}px`, e.style.top = `${i.clientY - n.top - c}px`, this.shadowRoot.appendChild(e), e.addEventListener("animationend", () => {
743
- e.remove();
741
+ this.addEventListener("pointerdown", (e) => {
742
+ const i = document.createElement("span"), n = e.currentTarget, s = n.getBoundingClientRect(), r = Math.max(n.offsetWidth, n.offsetHeight), c = r / 2;
743
+ i.classList.add("ripple"), i.style.width = `${r}px`, i.style.height = `${r}px`, i.style.left = `${e.clientX - s.left - c}px`, i.style.top = `${e.clientY - s.top - c}px`, this.shadowRoot.appendChild(i), i.addEventListener("animationend", () => {
744
+ i.remove();
744
745
  });
745
746
  });
746
747
  }
747
748
  updateContent() {
748
- const i = this.getAttribute("icon"), e = this.getAttribute("avatar-src"), s = this.getAttribute("avatar-name"), n = this.getAttribute("label") || "", l = this.getAttribute("badge"), c = this.shadowRoot.querySelector(".badge");
749
- if (l)
749
+ const e = this.getAttribute("icon"), i = this.getAttribute("avatar-src"), n = this.getAttribute("avatar-name"), s = this.getAttribute("label") || "", r = this.getAttribute("badge"), c = this.shadowRoot.querySelector(".badge");
750
+ if (r)
750
751
  if (c)
751
- c.textContent = l;
752
+ c.textContent = r;
752
753
  else {
753
- const a = document.createElement("span");
754
- a.className = "badge", a.textContent = l, this.shadowRoot.appendChild(a);
754
+ const l = document.createElement("span");
755
+ l.className = "badge", l.textContent = r, this.shadowRoot.appendChild(l);
755
756
  }
756
757
  else c && c.remove();
757
758
  const d = this.shadowRoot.querySelector("slot[name='icon']");
758
759
  if (d)
759
- if (e || s) {
760
- let a = '<eui-avatar size="24"';
761
- s && (a += ` name="${s}"`), a += ">", e && (a += `<img src="${e}" alt="${s || "Avatar"}" />`), a += "</eui-avatar>", d.innerHTML = a;
760
+ if (i || n) {
761
+ let l = '<eui-avatar size="24"';
762
+ n && (l += ` name="${n}"`), l += ">", i && (l += `<img src="${i}" alt="${n || "Avatar"}" />`), l += "</eui-avatar>", d.innerHTML = l;
762
763
  } else {
763
- const a = d.querySelector("eui-icon");
764
- i && a ? a.getAttribute("name") !== i && a.setAttribute("name", i) : i ? d.innerHTML = `<eui-icon width="24" height="24" name="${i}"></eui-icon>` : d.innerHTML = "";
764
+ const l = d.querySelector("eui-icon");
765
+ e && l ? l.getAttribute("name") !== e && l.setAttribute("name", e) : e ? d.innerHTML = `<eui-icon width="24" height="24" name="${e}"></eui-icon>` : d.innerHTML = "";
765
766
  }
766
- const r = this.shadowRoot.querySelector(".label");
767
- r && (r.textContent = n);
767
+ const a = this.shadowRoot.querySelector(".label");
768
+ a && (a.textContent = s);
768
769
  }
769
770
  render() {
770
771
  this.shadowRoot.innerHTML = `
@@ -875,8 +876,8 @@ class q extends HTMLElement {
875
876
  `;
876
877
  }
877
878
  }
878
- customElements.define("eui-nav-item", q);
879
- class j extends HTMLElement {
879
+ customElements.define("eui-nav-item", j);
880
+ class q extends HTMLElement {
880
881
  constructor() {
881
882
  super(), this.attachShadow({ mode: "open" });
882
883
  }
@@ -985,11 +986,11 @@ class j extends HTMLElement {
985
986
  <a href="#content" id="skip_navigation_link">Skip To Content</a>
986
987
  <div class="nav-items">
987
988
  ${this.navItems.map((t) => {
988
- var s, n;
989
+ var n, s;
989
990
  if (t.type === "divider")
990
991
  return '<div style="height: 1px; background: var(--app-300); margin: 0.5rem 0;"></div>';
991
- const i = ((s = t.avatar) == null ? void 0 : s.src) || "", e = ((n = t.avatar) == null ? void 0 : n.name) || "";
992
- return `<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${i}" avatar-name="${e}" label="${t.label}"></eui-nav-item>`;
992
+ const e = ((n = t.avatar) == null ? void 0 : n.src) || "", i = ((s = t.avatar) == null ? void 0 : s.name) || "";
993
+ return `<eui-nav-item path="${t.path}" icon="${t.icon}" avatar-src="${e}" avatar-name="${i}" label="${t.label}"></eui-nav-item>`;
993
994
  }).join("")}
994
995
  </div>
995
996
  </div>
@@ -1002,12 +1003,12 @@ class j extends HTMLElement {
1002
1003
  return this._navItems || [];
1003
1004
  }
1004
1005
  updateActiveState(t) {
1005
- t || (t = C.location()), t.startsWith("/") || (t = "/" + t), this.shadowRoot.querySelectorAll("eui-nav-item").forEach((e) => {
1006
- e.getAttribute("path") === t ? e.setAttribute("active", "") : e.removeAttribute("active");
1006
+ t || (t = C.location()), t.startsWith("/") || (t = "/" + t), this.shadowRoot.querySelectorAll("eui-nav-item").forEach((i) => {
1007
+ i.getAttribute("path") === t ? i.setAttribute("active", "") : i.removeAttribute("active");
1007
1008
  });
1008
1009
  }
1009
1010
  }
1010
- customElements.define("eui-app-nav", j);
1011
+ customElements.define("eui-app-nav", q);
1011
1012
  class B extends HTMLElement {
1012
1013
  static get observedAttributes() {
1013
1014
  return ["type", "title", "subtitle", "img"];
@@ -1087,9 +1088,9 @@ class B extends HTMLElement {
1087
1088
  connectedCallback() {
1088
1089
  this.hd = this.shadowRoot.querySelector(".header"), this.hasAttribute("type") && this.hd.classList.add(this.getAttribute("type"));
1089
1090
  }
1090
- attributeChangedCallback(t, i, e) {
1091
- const s = this.shadowRoot.querySelector("h1"), n = this.shadowRoot.querySelector("p"), l = this.shadowRoot.querySelector(".img");
1092
- t === "title" && (s.textContent = e), t === "subtitle" && (n.textContent = e), t === "img" && (l.style.backgroundImage = e ? `url(${e})` : "");
1091
+ attributeChangedCallback(t, e, i) {
1092
+ const n = this.shadowRoot.querySelector("h1"), s = this.shadowRoot.querySelector("p"), r = this.shadowRoot.querySelector(".img");
1093
+ t === "title" && (n.textContent = i), t === "subtitle" && (s.textContent = i), t === "img" && (r.style.backgroundImage = i ? `url(${i})` : "");
1093
1094
  }
1094
1095
  }
1095
1096
  customElements.define("eui-header", B);
@@ -1188,14 +1189,14 @@ class N extends HTMLElement {
1188
1189
  }
1189
1190
  toggle() {
1190
1191
  this.selected = !this.selected, w();
1191
- const t = this.selected, i = this.dataset.setting;
1192
- i && k.set(i, t);
1192
+ const t = this.selected, e = this.dataset.setting;
1193
+ e && k.set(e, t);
1193
1194
  }
1194
1195
  updateFromAttribute() {
1195
1196
  const t = this.hasAttribute("selected");
1196
1197
  this.inputEl.checked = t, this.checkEl.classList.toggle("selected", t);
1197
1198
  }
1198
- attributeChangedCallback(t, i, e) {
1199
+ attributeChangedCallback(t, e, i) {
1199
1200
  t === "selected" && this.inputEl && this.updateFromAttribute();
1200
1201
  }
1201
1202
  get selected() {
@@ -1206,7 +1207,7 @@ class N extends HTMLElement {
1206
1207
  }
1207
1208
  }
1208
1209
  customElements.define("eui-checkbox", N);
1209
- class A extends HTMLElement {
1210
+ class E extends HTMLElement {
1210
1211
  constructor() {
1211
1212
  super(), this.attachShadow({ mode: "open" });
1212
1213
  }
@@ -1214,7 +1215,7 @@ class A extends HTMLElement {
1214
1215
  this.render();
1215
1216
  }
1216
1217
  render() {
1217
- const t = this.getAttribute("href"), i = t ? "a" : "button";
1218
+ const t = this.getAttribute("href"), e = t ? "a" : "button";
1218
1219
  this.shadowRoot.innerHTML = `
1219
1220
  <style>
1220
1221
  button, a {
@@ -1318,21 +1319,21 @@ class A extends HTMLElement {
1318
1319
  }
1319
1320
 
1320
1321
  </style>
1321
- <${i}>
1322
+ <${e}>
1322
1323
  <slot></slot>
1323
- </${i}>
1324
+ </${e}>
1324
1325
  `;
1325
- const e = this.shadowRoot.querySelector(i);
1326
- t && e.setAttribute("href", t), this.hasAttribute("type") && e.classList.add(this.getAttribute("type")), this.hasAttribute("icon") && e.classList.add("icon"), this.hasAttribute("width") && (e.style.width = this.getAttribute("width") + "px"), this.hasAttribute("height") && (e.style.height = this.getAttribute("height") + "px"), this.hasAttribute("border-radius") && (e.style.borderRadius = this.getAttribute("border-radius") + "px"), e.addEventListener("pointerdown", (s) => {
1327
- const n = document.createElement("span"), l = s.currentTarget, c = l.getBoundingClientRect(), d = Math.max(l.offsetWidth, l.offsetHeight), r = d / 2;
1328
- n.classList.add("ripple"), n.style.width = `${d}px`, n.style.height = `${d}px`, n.style.left = `${s.clientX - c.left - r}px`, n.style.top = `${s.clientY - c.top - r}px`, e.appendChild(n), n.addEventListener("animationend", () => {
1329
- n.remove();
1326
+ const i = this.shadowRoot.querySelector(e);
1327
+ t && i.setAttribute("href", t), this.hasAttribute("type") && i.classList.add(this.getAttribute("type")), this.hasAttribute("icon") && i.classList.add("icon"), this.hasAttribute("width") && (i.style.width = this.getAttribute("width") + "px"), this.hasAttribute("height") && (i.style.height = this.getAttribute("height") + "px"), this.hasAttribute("border-radius") && (i.style.borderRadius = this.getAttribute("border-radius") + "px"), i.addEventListener("pointerdown", (n) => {
1328
+ const s = document.createElement("span"), r = n.currentTarget, c = r.getBoundingClientRect(), d = Math.max(r.offsetWidth, r.offsetHeight), a = d / 2;
1329
+ s.classList.add("ripple"), s.style.width = `${d}px`, s.style.height = `${d}px`, s.style.left = `${n.clientX - c.left - a}px`, s.style.top = `${n.clientY - c.top - a}px`, i.appendChild(s), s.addEventListener("animationend", () => {
1330
+ s.remove();
1330
1331
  });
1331
1332
  });
1332
1333
  }
1333
1334
  }
1334
- v(A, "observedAttributes", ["type", "width", "height", "border-radius", "icon", "link", "href"]);
1335
- customElements.define("eui-button", A);
1335
+ v(E, "observedAttributes", ["type", "width", "height", "border-radius", "icon", "link", "href"]);
1336
+ customElements.define("eui-button", E);
1336
1337
  class O extends HTMLElement {
1337
1338
  static get observedAttributes() {
1338
1339
  return ["type", "anchor"];
@@ -1407,28 +1408,28 @@ class O extends HTMLElement {
1407
1408
  }
1408
1409
  customElements.define("eui-heading", O);
1409
1410
  function P(o) {
1410
- const e = Date.now() - o, s = Math.floor(e / 1e3), n = Math.floor(s / 60), l = Math.floor(n / 60), c = Math.floor(l / 24), d = Math.floor(c / 30), r = Math.floor(d / 12);
1411
- return r > 0 ? `${r}y` : d > 0 ? `${d}mo` : c > 0 ? `${c}d` : l > 0 ? `${l}h` : n > 0 ? `${n}m` : `${s}s`;
1411
+ const i = Date.now() - o, n = Math.floor(i / 1e3), s = Math.floor(n / 60), r = Math.floor(s / 60), c = Math.floor(r / 24), d = Math.floor(c / 30), a = Math.floor(d / 12);
1412
+ return a > 0 ? `${a}y` : d > 0 ? `${d}mo` : c > 0 ? `${c}d` : r > 0 ? `${r}h` : s > 0 ? `${s}m` : `${n}s`;
1412
1413
  }
1413
1414
  function V(o) {
1414
- const e = Date.now() - o, s = Math.floor(e / 1e3), n = Math.floor(s / 60), l = Math.floor(n / 60), c = Math.floor(l / 24), d = Math.floor(c / 30), r = Math.floor(d / 12);
1415
- return r > 0 ? `${r} year${r > 1 ? "s" : ""} ago` : d > 0 ? `${d} month${d > 1 ? "s" : ""} ago` : c > 0 ? `${c} day${c > 1 ? "s" : ""} ago` : l > 0 ? `${l} hour${l > 1 ? "s" : ""} ago` : n > 0 ? `${n} minute${n > 1 ? "s" : ""} ago` : `${s} second${s > 1 ? "s" : ""} ago`;
1415
+ const i = Date.now() - o, n = Math.floor(i / 1e3), s = Math.floor(n / 60), r = Math.floor(s / 60), c = Math.floor(r / 24), d = Math.floor(c / 30), a = Math.floor(d / 12);
1416
+ return a > 0 ? `${a} year${a > 1 ? "s" : ""} ago` : d > 0 ? `${d} month${d > 1 ? "s" : ""} ago` : c > 0 ? `${c} day${c > 1 ? "s" : ""} ago` : r > 0 ? `${r} hour${r > 1 ? "s" : ""} ago` : s > 0 ? `${s} minute${s > 1 ? "s" : ""} ago` : `${n} second${n > 1 ? "s" : ""} ago`;
1416
1417
  }
1417
- function U(o) {
1418
+ function D(o) {
1418
1419
  return o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;").replace(/`/g, "&#96;").replace(/'/g, "&#39;");
1419
1420
  }
1420
- function E(o) {
1421
+ function A(o) {
1421
1422
  const t = document.createElement("input");
1422
1423
  t.value = o, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t);
1423
1424
  }
1424
1425
  const Q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1425
1426
  __proto__: null,
1426
- copystr: E,
1427
+ copystr: A,
1427
1428
  joinedAgo: V,
1428
- sanitize: U,
1429
+ sanitize: D,
1429
1430
  timeAgo: P
1430
1431
  }, Symbol.toStringTag, { value: "Module" }));
1431
- class Z extends HTMLElement {
1432
+ class U extends HTMLElement {
1432
1433
  static get observedAttributes() {
1433
1434
  return ["copy", "id", "type", "language"];
1434
1435
  }
@@ -1438,11 +1439,11 @@ class Z extends HTMLElement {
1438
1439
  connectedCallback() {
1439
1440
  this._isRendered || (this.render(), this._isRendered = !0);
1440
1441
  }
1441
- attributeChangedCallback(t, i, e) {
1442
- this._isRendered && i !== e && this.render();
1442
+ attributeChangedCallback(t, e, i) {
1443
+ this._isRendered && e !== i && this.render();
1443
1444
  }
1444
1445
  render() {
1445
- const t = this.hasAttribute("copy"), i = this.getAttribute("language") || "text";
1446
+ const t = this.hasAttribute("copy"), e = this.getAttribute("language") || "text";
1446
1447
  this.shadowRoot.innerHTML = `
1447
1448
  <style>
1448
1449
  :host {
@@ -1480,14 +1481,14 @@ class Z extends HTMLElement {
1480
1481
  }
1481
1482
 
1482
1483
  .token.comment { color: var(--app-700); font-style: italic; }
1483
- .token.string { color: var(--app-green); }
1484
- .token.number { color: var(--app-orange); }
1485
- .token.keyword { color: var(--app-purple); font-weight: bold; }
1486
- .token.function { color: var(--app-blue); }
1487
- .token.tag { color: var(--app-red); }
1488
- .token.attr-name { color: var(--app-yellow); }
1489
- .token.attr-value { color: var(--app-green); }
1490
- .token.boolean { color: var(--app-orange); }
1484
+ .token.string { color: #9ECE6A; }
1485
+ .token.number { color: #F97C5F; }
1486
+ .token.keyword { color: #7DCFFF; }
1487
+ .token.function { color: #7DCFFF; }
1488
+ .token.tag { color: #DE5971; }
1489
+ .token.attr-name { color: #BB9AF7; }
1490
+ .token.attr-value { color: #9ECE6A; }
1491
+ .token.boolean { color: #F97C5F; }
1491
1492
  </style>
1492
1493
 
1493
1494
  <eui-button class="copy" width="36" height="36" border-radius="100">
@@ -1496,34 +1497,47 @@ class Z extends HTMLElement {
1496
1497
 
1497
1498
  <pre class="${t ? "g" : ""}"><code></code></pre>
1498
1499
  `, this.copyBtn = this.shadowRoot.querySelector(".copy"), this.codeEl = this.shadowRoot.querySelector("code");
1499
- const e = this._getFormattedText();
1500
- this.codeEl.innerHTML = this._highlight(e, i), t ? this.copyBtn.addEventListener("click", this._boundCopy) : this.copyBtn.style.display = "none";
1500
+ const i = this._getFormattedText();
1501
+ this.codeEl.innerHTML = this._highlight(i, e), t ? this.copyBtn.addEventListener("click", this._boundCopy) : this.copyBtn.style.display = "none";
1501
1502
  }
1502
1503
  _getFormattedText() {
1503
- let t = this.textContent || "";
1504
- t = t.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
1505
- const i = t.split(`
1506
- `), e = i.filter((n) => n.trim()).map((n) => n.match(/^\s*/)[0].length), s = e.length ? Math.min(...e) : 0;
1507
- return i.map((n) => n.slice(s)).join(`
1504
+ let e = (this.querySelector("code") || this).innerHTML || "";
1505
+ e = this._unescapeHtml(e), e = e.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
1506
+ const i = e.split(`
1507
+ `), n = i.filter((r) => r.trim()).map((r) => r.match(/^\s*/)[0].length), s = n.length ? Math.min(...n) : 0;
1508
+ return i.map((r) => r.slice(s)).join(`
1508
1509
  `);
1509
1510
  }
1510
- _highlight(t, i) {
1511
- return t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), i === "javascript" || i === "js" || i === "json" ? (t = t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g, '<span class="token string">$1</span>'), t = t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm, '<span class="token comment">$1</span>'), t = t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(true|false|null|undefined)\b/g, '<span class="token boolean">$1</span>'), t = t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g, '<span class="token function">$1</span>')) : i === "bash" || i === "sh" ? (t = t.replace(/(#.*$)/gm, '<span class="token comment">$1</span>'), t = t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g, '<span class="token string">$1</span>'), t = t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g, '<span class="token function">$1</span>'), t = t.replace(/(\s-+[a-zA-Z0-9-]+)/g, '<span class="token attr-name">$1</span>'), t = t.replace(/(\$[A-Z0-9_]+)/g, '<span class="token number">$1</span>')) : i === "html" || i === "xml" ? (t = t.replace(/(&lt;!--[\s\S]*?--&gt;)/g, '<span class="token comment">$1</span>'), t = t.replace(/(&lt;\/?[a-z0-9:-]+)/gi, '<span class="token tag">$1</span>'), t = t.replace(/\s([a-z0-9:-]+)=/gi, ' <span class="token attr-name">$1</span>='), t = t.replace(/(".*?")/g, '<span class="token attr-value">$1</span>'), t = t.replace(/&gt;/g, '<span class="token tag">&gt;</span>')) : i === "css" && (t = t.replace(/(\/\*[\s\S]*?\*\/)/g, '<span class="token comment">$1</span>'), t = t.replace(/([a-z-]+)(?=:)/g, '<span class="token keyword">$1</span>')), t;
1511
+ _unescapeHtml(t) {
1512
+ const e = document.createElement("textarea");
1513
+ return e.innerHTML = t, e.value;
1514
+ }
1515
+ _highlight(t, e) {
1516
+ t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1517
+ const i = {};
1518
+ let n = 0;
1519
+ function s(r, c) {
1520
+ const d = `__TOKEN_${c}_${n++}__`;
1521
+ return i[d] = `<span class="token ${c}">${r}</span>`, d;
1522
+ }
1523
+ return ["javascript", "js", "json", "bash", "sh", "css"].includes(e) ? (t = t.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/g, (r) => s(r, "string")), e === "bash" || e === "sh" ? t = t.replace(/(#.*$)/gm, (r) => s(r, "comment")) : e === "css" ? t = t.replace(/(\/\*[\s\S]*?\*\/)/g, (r) => s(r, "comment")) : t = t.replace(/(\/\/.*$|\/\*[\s\S]*?\*\/)/gm, (r) => s(r, "comment"))) : ["html", "xml"].includes(e) && (t = t.replace(/(&lt;!--[\s\S]*?--&gt;)/g, (r) => s(r, "comment")), t = t.replace(/(&lt;\/?[a-z0-9:-]+)/gi, (r) => s(r, "tag"))), e === "javascript" || e === "js" || e === "json" ? (t = t.replace(/\b(const|let|var|if|else|for|while|return|function|class|import|export|from|default|switch|case|break|continue|new|this|async|await)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(true|false|null|undefined)\b/g, '<span class="token boolean">$1</span>'), t = t.replace(/\b([a-zA-Z0-9_]+)\s*(?=\()/g, '<span class="token function">$1</span>')) : e === "bash" || e === "sh" ? (t = t.replace(/\b(npm|npx|node|git|cd|ls|mkdir|rm|mv|cp|echo|cat|sudo|docker|brew|grep|curl|wget|chmod|chown|touch)\b/g, '<span class="token keyword">$1</span>'), t = t.replace(/\b(install|run|build|start|test|dev|init|clone|pull|push|commit|add|checkout|branch|merge)\b/g, '<span class="token function">$1</span>'), t = t.replace(/(\s-+[a-zA-Z0-9-]+)/g, '<span class="token attr-name">$1</span>'), t = t.replace(/(\$[A-Z0-9_]+)/g, '<span class="token number">$1</span>')) : e === "html" || e === "xml" ? (t = t.replace(/\s([a-z0-9:-]+)=/gi, (r, c) => " " + s(c, "attr-name") + "="), t = t.replace(/(".*?")/g, (r) => s(r, "attr-value")), t = t.replace(/&gt;/g, '<span class="token tag">&gt;</span>')) : e === "css" && (t = t.replace(/([a-z-]+)(?=:)/g, '<span class="token keyword">$1</span>')), Object.keys(i).reverse().forEach((r) => {
1524
+ t = t.replace(r, i[r]);
1525
+ }), t;
1512
1526
  }
1513
1527
  _onCopy() {
1514
- E(this._getFormattedText());
1528
+ A(this._getFormattedText());
1515
1529
  const t = this.copyBtn.querySelector("eui-icon");
1516
1530
  if (t) {
1517
- const i = t.getAttribute("name");
1518
- t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name", i), 2e3);
1531
+ const e = t.getAttribute("name");
1532
+ t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name", e), 2e3);
1519
1533
  }
1520
1534
  }
1521
1535
  disconnectedCallback() {
1522
1536
  this.copyBtn && this.copyBtn.removeEventListener("click", this._boundCopy);
1523
1537
  }
1524
1538
  }
1525
- customElements.define("eui-code", Z);
1526
- class D extends HTMLElement {
1539
+ customElements.define("eui-code", U);
1540
+ class Z extends HTMLElement {
1527
1541
  constructor() {
1528
1542
  super(), this.attachShadow({ mode: "open" });
1529
1543
  }
@@ -1533,7 +1547,7 @@ class D extends HTMLElement {
1533
1547
  static get observedAttributes() {
1534
1548
  return ["name"];
1535
1549
  }
1536
- attributeChangedCallback(t, i, e) {
1550
+ attributeChangedCallback(t, e, i) {
1537
1551
  t === "name" && (this.render(), this.setupEventListeners());
1538
1552
  }
1539
1553
  setupEventListeners() {
@@ -1639,7 +1653,7 @@ class D extends HTMLElement {
1639
1653
  `;
1640
1654
  }
1641
1655
  }
1642
- customElements.define("eui-app-titlebar", D);
1656
+ customElements.define("eui-app-titlebar", Z);
1643
1657
  class X extends HTMLElement {
1644
1658
  constructor() {
1645
1659
  super(), this.attachShadow({ mode: "open" }), this._handleMouseDown = this._addRipple.bind(this);
@@ -1650,16 +1664,16 @@ class X extends HTMLElement {
1650
1664
  static get observedAttributes() {
1651
1665
  return ["elevated", "interactive", "ripple"];
1652
1666
  }
1653
- attributeChangedCallback(t, i, e) {
1654
- i !== e && t === "ripple" && this.setupEventListeners();
1667
+ attributeChangedCallback(t, e, i) {
1668
+ e !== i && t === "ripple" && this.setupEventListeners();
1655
1669
  }
1656
1670
  setupEventListeners() {
1657
1671
  this.removeEventListener("mousedown", this._handleMouseDown), this.hasAttribute("ripple") && this.addEventListener("mousedown", this._handleMouseDown);
1658
1672
  }
1659
1673
  _addRipple(t) {
1660
- const i = this.getBoundingClientRect(), e = document.createElement("span"), s = Math.max(i.width, i.height), n = s / 2;
1661
- e.style.width = e.style.height = `${s}px`, e.style.left = `${t.clientX - i.left - n}px`, e.style.top = `${t.clientY - i.top - n}px`, e.classList.add("ripple"), this.shadowRoot.querySelector(".surface").appendChild(e), e.addEventListener("animationend", () => {
1662
- e.remove();
1674
+ const e = this.getBoundingClientRect(), i = document.createElement("span"), n = Math.max(e.width, e.height), s = n / 2;
1675
+ i.style.width = i.style.height = `${n}px`, i.style.left = `${t.clientX - e.left - s}px`, i.style.top = `${t.clientY - e.top - s}px`, i.classList.add("ripple"), this.shadowRoot.querySelector(".surface").appendChild(i), i.addEventListener("animationend", () => {
1676
+ i.remove();
1663
1677
  });
1664
1678
  }
1665
1679
  render() {
@@ -1731,10 +1745,10 @@ customElements.define("eui-surface", X);
1731
1745
  typeof window < "u" && console.log("ErisUI loaded successfully");
1732
1746
  export {
1733
1747
  J as device,
1734
- Y as haptics,
1748
+ K as haptics,
1735
1749
  u as icons,
1736
1750
  G as loadPage,
1737
1751
  C as router,
1738
- K as storage,
1752
+ Y as storage,
1739
1753
  Q as utils
1740
1754
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3r1s_s/erisui",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "an awesome ui library for web apps",
5
5
  "type": "module",
6
6
  "files": [