@3r1s_s/erisui 1.0.11 → 1.0.13

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;
@@ -614,6 +614,22 @@
614
614
  .small p {
615
615
  margin: 0;
616
616
  }
617
+
618
+ @media (max-width: 768px) {
619
+ .header {
620
+ padding: 1rem;
621
+ }
622
+
623
+ .hero {
624
+ align-items: center;
625
+ justify-content: center;
626
+ text-align: center;
627
+ }
628
+
629
+ .large h1, .hero h1 {
630
+ font-size: 4rem;
631
+ }
632
+ }
617
633
  </style>
618
634
 
619
635
  <div class="header">
@@ -623,7 +639,7 @@
623
639
  <p></p>
624
640
  </div>
625
641
  </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=`
642
+ `}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
643
  <style>
628
644
  :host {
629
645
  display: block;
@@ -706,7 +722,7 @@
706
722
  <rect class="mark long"></rect>
707
723
  </svg>
708
724
  </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=`
725
+ `}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
726
  <style>
711
727
  button, a {
712
728
  display: flex;
@@ -809,10 +825,10 @@
809
825
  }
810
826
 
811
827
  </style>
812
- <${i}>
828
+ <${e}>
813
829
  <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=`
830
+ </${e}>
831
+ `;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
832
  <style>
817
833
  :host {
818
834
  display: block;
@@ -870,7 +886,7 @@
870
886
  <span class="anchor-hash">#</span>
871
887
  </a>
872
888
  `:""}
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=`
889
+ `}}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
890
  <style>
875
891
  :host {
876
892
  position: relative;
@@ -907,14 +923,14 @@
907
923
  }
908
924
 
909
925
  .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); }
926
+ .token.string { color: #9ECE6A; }
927
+ .token.number { color: #F97C5F; }
928
+ .token.keyword { color: #7DCFFF; }
929
+ .token.function { color: #7DCFFF; }
930
+ .token.tag { color: #DE5971; }
931
+ .token.attr-name { color: #BB9AF7; }
932
+ .token.attr-value { color: #9ECE6A; }
933
+ .token.boolean { color: #F97C5F; }
918
934
  </style>
919
935
 
920
936
  <eui-button class="copy" width="36" height="36" border-radius="100">
@@ -922,9 +938,9 @@
922
938
  </eui-button>
923
939
 
924
940
  <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=`
941
+ `,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(`
942
+ `),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(`
943
+ `)}_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
944
  <style>
929
945
  :host {
930
946
  display: block;
@@ -1016,7 +1032,7 @@
1016
1032
  <slot></slot>
1017
1033
  </div>
1018
1034
  </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=`
1035
+ `}}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
1036
  <style>
1021
1037
  :host {
1022
1038
  display: block;
@@ -1077,4 +1093,4 @@
1077
1093
  <div class="surface">
1078
1094
  <slot></slot>
1079
1095
  </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"})}));
1096
+ `}}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"];
@@ -1073,6 +1074,22 @@ class B extends HTMLElement {
1073
1074
  .small p {
1074
1075
  margin: 0;
1075
1076
  }
1077
+
1078
+ @media (max-width: 768px) {
1079
+ .header {
1080
+ padding: 1rem;
1081
+ }
1082
+
1083
+ .hero {
1084
+ align-items: center;
1085
+ justify-content: center;
1086
+ text-align: center;
1087
+ }
1088
+
1089
+ .large h1, .hero h1 {
1090
+ font-size: 4rem;
1091
+ }
1092
+ }
1076
1093
  </style>
1077
1094
 
1078
1095
  <div class="header">
@@ -1087,9 +1104,9 @@ class B extends HTMLElement {
1087
1104
  connectedCallback() {
1088
1105
  this.hd = this.shadowRoot.querySelector(".header"), this.hasAttribute("type") && this.hd.classList.add(this.getAttribute("type"));
1089
1106
  }
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})` : "");
1107
+ attributeChangedCallback(t, e, i) {
1108
+ const n = this.shadowRoot.querySelector("h1"), s = this.shadowRoot.querySelector("p"), r = this.shadowRoot.querySelector(".img");
1109
+ t === "title" && (n.textContent = i), t === "subtitle" && (s.textContent = i), t === "img" && (r.style.backgroundImage = i ? `url(${i})` : "");
1093
1110
  }
1094
1111
  }
1095
1112
  customElements.define("eui-header", B);
@@ -1188,14 +1205,14 @@ class N extends HTMLElement {
1188
1205
  }
1189
1206
  toggle() {
1190
1207
  this.selected = !this.selected, w();
1191
- const t = this.selected, i = this.dataset.setting;
1192
- i && k.set(i, t);
1208
+ const t = this.selected, e = this.dataset.setting;
1209
+ e && k.set(e, t);
1193
1210
  }
1194
1211
  updateFromAttribute() {
1195
1212
  const t = this.hasAttribute("selected");
1196
1213
  this.inputEl.checked = t, this.checkEl.classList.toggle("selected", t);
1197
1214
  }
1198
- attributeChangedCallback(t, i, e) {
1215
+ attributeChangedCallback(t, e, i) {
1199
1216
  t === "selected" && this.inputEl && this.updateFromAttribute();
1200
1217
  }
1201
1218
  get selected() {
@@ -1206,7 +1223,7 @@ class N extends HTMLElement {
1206
1223
  }
1207
1224
  }
1208
1225
  customElements.define("eui-checkbox", N);
1209
- class A extends HTMLElement {
1226
+ class E extends HTMLElement {
1210
1227
  constructor() {
1211
1228
  super(), this.attachShadow({ mode: "open" });
1212
1229
  }
@@ -1214,7 +1231,7 @@ class A extends HTMLElement {
1214
1231
  this.render();
1215
1232
  }
1216
1233
  render() {
1217
- const t = this.getAttribute("href"), i = t ? "a" : "button";
1234
+ const t = this.getAttribute("href"), e = t ? "a" : "button";
1218
1235
  this.shadowRoot.innerHTML = `
1219
1236
  <style>
1220
1237
  button, a {
@@ -1318,21 +1335,21 @@ class A extends HTMLElement {
1318
1335
  }
1319
1336
 
1320
1337
  </style>
1321
- <${i}>
1338
+ <${e}>
1322
1339
  <slot></slot>
1323
- </${i}>
1340
+ </${e}>
1324
1341
  `;
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();
1342
+ const i = this.shadowRoot.querySelector(e);
1343
+ 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) => {
1344
+ const s = document.createElement("span"), r = n.currentTarget, c = r.getBoundingClientRect(), d = Math.max(r.offsetWidth, r.offsetHeight), a = d / 2;
1345
+ 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", () => {
1346
+ s.remove();
1330
1347
  });
1331
1348
  });
1332
1349
  }
1333
1350
  }
1334
- v(A, "observedAttributes", ["type", "width", "height", "border-radius", "icon", "link", "href"]);
1335
- customElements.define("eui-button", A);
1351
+ v(E, "observedAttributes", ["type", "width", "height", "border-radius", "icon", "link", "href"]);
1352
+ customElements.define("eui-button", E);
1336
1353
  class O extends HTMLElement {
1337
1354
  static get observedAttributes() {
1338
1355
  return ["type", "anchor"];
@@ -1407,28 +1424,28 @@ class O extends HTMLElement {
1407
1424
  }
1408
1425
  customElements.define("eui-heading", O);
1409
1426
  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`;
1427
+ 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);
1428
+ return a > 0 ? `${a}y` : d > 0 ? `${d}mo` : c > 0 ? `${c}d` : r > 0 ? `${r}h` : s > 0 ? `${s}m` : `${n}s`;
1412
1429
  }
1413
1430
  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`;
1431
+ 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);
1432
+ 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
1433
  }
1417
- function U(o) {
1434
+ function D(o) {
1418
1435
  return o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;").replace(/`/g, "&#96;").replace(/'/g, "&#39;");
1419
1436
  }
1420
- function E(o) {
1437
+ function A(o) {
1421
1438
  const t = document.createElement("input");
1422
1439
  t.value = o, document.body.appendChild(t), t.select(), document.execCommand("copy"), document.body.removeChild(t);
1423
1440
  }
1424
1441
  const Q = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1425
1442
  __proto__: null,
1426
- copystr: E,
1443
+ copystr: A,
1427
1444
  joinedAgo: V,
1428
- sanitize: U,
1445
+ sanitize: D,
1429
1446
  timeAgo: P
1430
1447
  }, Symbol.toStringTag, { value: "Module" }));
1431
- class Z extends HTMLElement {
1448
+ class U extends HTMLElement {
1432
1449
  static get observedAttributes() {
1433
1450
  return ["copy", "id", "type", "language"];
1434
1451
  }
@@ -1438,11 +1455,11 @@ class Z extends HTMLElement {
1438
1455
  connectedCallback() {
1439
1456
  this._isRendered || (this.render(), this._isRendered = !0);
1440
1457
  }
1441
- attributeChangedCallback(t, i, e) {
1442
- this._isRendered && i !== e && this.render();
1458
+ attributeChangedCallback(t, e, i) {
1459
+ this._isRendered && e !== i && this.render();
1443
1460
  }
1444
1461
  render() {
1445
- const t = this.hasAttribute("copy"), i = this.getAttribute("language") || "text";
1462
+ const t = this.hasAttribute("copy"), e = this.getAttribute("language") || "text";
1446
1463
  this.shadowRoot.innerHTML = `
1447
1464
  <style>
1448
1465
  :host {
@@ -1480,14 +1497,14 @@ class Z extends HTMLElement {
1480
1497
  }
1481
1498
 
1482
1499
  .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); }
1500
+ .token.string { color: #9ECE6A; }
1501
+ .token.number { color: #F97C5F; }
1502
+ .token.keyword { color: #7DCFFF; }
1503
+ .token.function { color: #7DCFFF; }
1504
+ .token.tag { color: #DE5971; }
1505
+ .token.attr-name { color: #BB9AF7; }
1506
+ .token.attr-value { color: #9ECE6A; }
1507
+ .token.boolean { color: #F97C5F; }
1491
1508
  </style>
1492
1509
 
1493
1510
  <eui-button class="copy" width="36" height="36" border-radius="100">
@@ -1496,34 +1513,47 @@ class Z extends HTMLElement {
1496
1513
 
1497
1514
  <pre class="${t ? "g" : ""}"><code></code></pre>
1498
1515
  `, 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";
1516
+ const i = this._getFormattedText();
1517
+ this.codeEl.innerHTML = this._highlight(i, e), t ? this.copyBtn.addEventListener("click", this._boundCopy) : this.copyBtn.style.display = "none";
1501
1518
  }
1502
1519
  _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(`
1520
+ let e = (this.querySelector("code") || this).innerHTML || "";
1521
+ e = this._unescapeHtml(e), e = e.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
1522
+ const i = e.split(`
1523
+ `), n = i.filter((r) => r.trim()).map((r) => r.match(/^\s*/)[0].length), s = n.length ? Math.min(...n) : 0;
1524
+ return i.map((r) => r.slice(s)).join(`
1508
1525
  `);
1509
1526
  }
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;
1527
+ _unescapeHtml(t) {
1528
+ const e = document.createElement("textarea");
1529
+ return e.innerHTML = t, e.value;
1530
+ }
1531
+ _highlight(t, e) {
1532
+ t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1533
+ const i = {};
1534
+ let n = 0;
1535
+ function s(r, c) {
1536
+ const d = `__TOKEN_${c}_${n++}__`;
1537
+ return i[d] = `<span class="token ${c}">${r}</span>`, d;
1538
+ }
1539
+ 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) => {
1540
+ t = t.replace(r, i[r]);
1541
+ }), t;
1512
1542
  }
1513
1543
  _onCopy() {
1514
- E(this._getFormattedText());
1544
+ A(this._getFormattedText());
1515
1545
  const t = this.copyBtn.querySelector("eui-icon");
1516
1546
  if (t) {
1517
- const i = t.getAttribute("name");
1518
- t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name", i), 2e3);
1547
+ const e = t.getAttribute("name");
1548
+ t.setAttribute("name", "check"), setTimeout(() => t.setAttribute("name", e), 2e3);
1519
1549
  }
1520
1550
  }
1521
1551
  disconnectedCallback() {
1522
1552
  this.copyBtn && this.copyBtn.removeEventListener("click", this._boundCopy);
1523
1553
  }
1524
1554
  }
1525
- customElements.define("eui-code", Z);
1526
- class D extends HTMLElement {
1555
+ customElements.define("eui-code", U);
1556
+ class Z extends HTMLElement {
1527
1557
  constructor() {
1528
1558
  super(), this.attachShadow({ mode: "open" });
1529
1559
  }
@@ -1533,7 +1563,7 @@ class D extends HTMLElement {
1533
1563
  static get observedAttributes() {
1534
1564
  return ["name"];
1535
1565
  }
1536
- attributeChangedCallback(t, i, e) {
1566
+ attributeChangedCallback(t, e, i) {
1537
1567
  t === "name" && (this.render(), this.setupEventListeners());
1538
1568
  }
1539
1569
  setupEventListeners() {
@@ -1639,7 +1669,7 @@ class D extends HTMLElement {
1639
1669
  `;
1640
1670
  }
1641
1671
  }
1642
- customElements.define("eui-app-titlebar", D);
1672
+ customElements.define("eui-app-titlebar", Z);
1643
1673
  class X extends HTMLElement {
1644
1674
  constructor() {
1645
1675
  super(), this.attachShadow({ mode: "open" }), this._handleMouseDown = this._addRipple.bind(this);
@@ -1650,16 +1680,16 @@ class X extends HTMLElement {
1650
1680
  static get observedAttributes() {
1651
1681
  return ["elevated", "interactive", "ripple"];
1652
1682
  }
1653
- attributeChangedCallback(t, i, e) {
1654
- i !== e && t === "ripple" && this.setupEventListeners();
1683
+ attributeChangedCallback(t, e, i) {
1684
+ e !== i && t === "ripple" && this.setupEventListeners();
1655
1685
  }
1656
1686
  setupEventListeners() {
1657
1687
  this.removeEventListener("mousedown", this._handleMouseDown), this.hasAttribute("ripple") && this.addEventListener("mousedown", this._handleMouseDown);
1658
1688
  }
1659
1689
  _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();
1690
+ const e = this.getBoundingClientRect(), i = document.createElement("span"), n = Math.max(e.width, e.height), s = n / 2;
1691
+ 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", () => {
1692
+ i.remove();
1663
1693
  });
1664
1694
  }
1665
1695
  render() {
@@ -1731,10 +1761,10 @@ customElements.define("eui-surface", X);
1731
1761
  typeof window < "u" && console.log("ErisUI loaded successfully");
1732
1762
  export {
1733
1763
  J as device,
1734
- Y as haptics,
1764
+ K as haptics,
1735
1765
  u as icons,
1736
1766
  G as loadPage,
1737
1767
  C as router,
1738
- K as storage,
1768
+ Y as storage,
1739
1769
  Q as utils
1740
1770
  };
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.13",
4
4
  "description": "an awesome ui library for web apps",
5
5
  "type": "module",
6
6
  "files": [