@auvyx/ui 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/auvyx.bundle.css +94 -1
  2. package/dist/auvyx.chart.min.js +1 -1
  3. package/dist/auvyx.css +56 -0
  4. package/dist/auvyx.js +1 -1
  5. package/dist/auvyx.min.css +2 -2
  6. package/dist/auvyx.min.js +1 -1
  7. package/dist/custom-elements.json +1 -1
  8. package/dist/elements/calendar.min.js +1 -1
  9. package/dist/elements/context-menu.min.js +1 -1
  10. package/dist/elements/data-table.min.js +1 -1
  11. package/dist/elements/date-picker.min.js +1 -1
  12. package/dist/elements/index.min.js +1 -1
  13. package/dist/elements/menu.min.js +1 -1
  14. package/dist/elements/resizable.min.js +1 -1
  15. package/dist/js/accordion.min.js +1 -1
  16. package/dist/js/calendar.min.js +1 -1
  17. package/dist/js/combobox.min.js +1 -1
  18. package/dist/js/command.min.js +1 -1
  19. package/dist/js/context-menu.min.js +1 -1
  20. package/dist/js/copy.min.js +1 -1
  21. package/dist/js/data-table.min.js +1 -1
  22. package/dist/js/date-picker.min.js +1 -1
  23. package/dist/js/drawer.min.js +1 -1
  24. package/dist/js/dropdown-menu.min.js +1 -1
  25. package/dist/js/manifest.json +12 -12
  26. package/dist/js/menu.min.js +1 -1
  27. package/dist/js/popover.min.js +1 -1
  28. package/dist/js/resizable.min.js +1 -1
  29. package/dist/js/select.min.js +1 -1
  30. package/dist/js/sidebar.min.js +1 -1
  31. package/dist/js/slider.min.js +1 -1
  32. package/dist/js/tabs.min.js +1 -1
  33. package/dist/js/toast.min.js +1 -1
  34. package/dist/styles/auvyx-luma.min.css +2 -2
  35. package/dist/styles/auvyx-lyra.min.css +2 -2
  36. package/dist/styles/auvyx-maia.min.css +2 -2
  37. package/dist/styles/auvyx-mira.min.css +2 -2
  38. package/dist/styles/auvyx-nova.min.css +2 -2
  39. package/dist/styles/auvyx-rhea.min.css +2 -2
  40. package/dist/styles/auvyx-sera.min.css +2 -2
  41. package/dist/styles/auvyx-vega.min.css +2 -2
  42. package/dist/ui/accordion.js +1 -1
  43. package/dist/ui/base.css +56 -0
  44. package/dist/ui/calendar.js +1 -1
  45. package/dist/ui/combobox.js +1 -1
  46. package/dist/ui/command.js +1 -1
  47. package/dist/ui/context-menu.js +1 -1
  48. package/dist/ui/copy.js +1 -1
  49. package/dist/ui/data-table.js +1 -1
  50. package/dist/ui/date-picker.js +1 -1
  51. package/dist/ui/drawer.js +1 -1
  52. package/dist/ui/dropdown-menu.js +1 -1
  53. package/dist/ui/menu.js +1 -1
  54. package/dist/ui/popover.js +1 -1
  55. package/dist/ui/resizable.js +1 -1
  56. package/dist/ui/select.js +1 -1
  57. package/dist/ui/sidebar.js +1 -1
  58. package/dist/ui/slider.js +1 -1
  59. package/dist/ui/tabs.js +1 -1
  60. package/dist/ui/toast.js +1 -1
  61. package/dist/wc/accordion.min.js +1 -1
  62. package/dist/wc/combobox.min.js +1 -1
  63. package/dist/wc/command.min.js +1 -1
  64. package/dist/wc/drawer.min.js +1 -1
  65. package/dist/wc/dropdown-menu.min.js +1 -1
  66. package/dist/wc/manifest.json +8 -8
  67. package/dist/wc/popover.min.js +1 -1
  68. package/dist/wc/select.min.js +1 -1
  69. package/dist/wc/sidebar.min.js +1 -1
  70. package/dist/wc/slider.min.js +1 -1
  71. package/dist/wc/tabs.min.js +1 -1
  72. package/dist/wc/toast.min.js +1 -1
  73. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  (()=>{var u=class extends HTMLElement{connectedCallback(){if(this._init||(this._init=!0,this.vertical=this.dataset.orientation==="vertical",this.panels=[...this.children].filter(e=>e.getAttribute("role")!=="separator"),this.handles=[...this.children].filter(e=>e.getAttribute("role")==="separator"),this.panels.length<2))return;const t=this.panels.map(e=>parseFloat(getComputedStyle(e).getPropertyValue("--size"))||0),s=t.filter(e=>!e).length,i=Math.max(0,100-t.reduce((e,r)=>e+r,0));this.sizes=t.map(e=>e||(s?i/s:0));const a=this.sizes.reduce((e,r)=>e+r,0)||1;this.sizes=this.sizes.map(e=>e/a*100),this.apply(),this.handles.forEach((e,r)=>{e.setAttribute("aria-orientation",this.vertical?"horizontal":"vertical"),e.setAttribute("aria-valuemin","0"),e.setAttribute("aria-valuemax","100"),this.panels[r].id&&e.setAttribute("aria-controls",this.panels[r].id),e.hasAttribute("tabindex")||(e.tabIndex=0),e.addEventListener("pointerdown",n=>this.startDrag(n,r)),e.addEventListener("keydown",n=>this.onKey(n,r)),e.addEventListener("dblclick",()=>this.resetPair(r))})}minOf(t){const s=parseFloat(this.panels[t].dataset.min);return Number.isFinite(s)?s:10}maxOf(t){const s=parseFloat(this.panels[t].dataset.max);return Number.isFinite(s)?s:100}setPair(t,s){const i=this.sizes[t]+this.sizes[t+1],a=Math.max(this.minOf(t),i-this.maxOf(t+1)),e=Math.min(this.maxOf(t),i-this.minOf(t+1)),r=Math.min(e,Math.max(a,s));this.sizes[t]=r,this.sizes[t+1]=i-r,this.apply()}resetPair(t){const s=this.sizes[t]+this.sizes[t+1];this.setPair(t,s/2)}apply(){this.panels.forEach((t,s)=>t.style.setProperty("--size",this.sizes[s].toFixed(3))),this.handles?.forEach((t,s)=>t.setAttribute("aria-valuenow",String(Math.round(this.sizes[s])))),this.dispatchEvent(new CustomEvent("resize",{detail:{sizes:[...this.sizes]}}))}startDrag(t,s){if(t.button!==0)return;t.preventDefault();const i=t.currentTarget;i.setPointerCapture(t.pointerId),i.setAttribute("data-active",""),this.setAttribute("data-dragging","");const a=this.getBoundingClientRect(),e=this.vertical?a.height:a.width,r=!this.vertical&&getComputedStyle(this).direction==="rtl",n=this.vertical?t.clientY:t.clientX,d=this.sizes[s],o=l=>{const c=((this.vertical?l.clientY:l.clientX)-n)/e*100;this.setPair(s,d+(r?-c:c))},h=()=>{i.removeEventListener("pointermove",o),i.removeAttribute("data-active"),this.removeAttribute("data-dragging")};i.addEventListener("pointermove",o),i.addEventListener("pointerup",h,{once:!0}),i.addEventListener("pointercancel",h,{once:!0})}onKey(t,s){const i=t.shiftKey?10:5,a=!this.vertical&&getComputedStyle(this).direction==="rtl",e=this.vertical?"ArrowDown":a?"ArrowLeft":"ArrowRight",r=this.vertical?"ArrowUp":a?"ArrowRight":"ArrowLeft",n={[e]:this.sizes[s]+i,[r]:this.sizes[s]-i,Home:0,End:100,Enter:null};t.key in n&&(t.preventDefault(),t.key==="Enter"?this.resetPair(s):this.setPair(s,n[t.key]))}};customElements.get("auvyx-resizable")||customElements.define("auvyx-resizable",u)})();
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  window.auvyx||(()=>{const h={};let x=null;const p=(n,r,d)=>{const b=typeof r=="object"?r:{selector:r,init:d};h[n]={selector:b.selector,init:b.init,refresh:b.refresh}},E=(n,r)=>{const d=h[r];if(d)try{d.init(n),n.hasAttribute(`data-${r}-initialized`)&&(n.dataset.basecoatComponent=r)}catch(b){if(console.error(`Failed to initialize ${r}:`,b),typeof n._destroy=="function")try{n._destroy()}catch(e){console.error(`Failed to clean up ${r} after initialization error:`,e)}delete n._destroy,n.removeAttribute(`data-${r}-initialized`),delete n.dataset.basecoatComponent}},O=n=>{if(!n||n.nodeType!==Node.ELEMENT_NODE)return;const r=n.dataset?.basecoatComponent;if(typeof n._destroy=="function")try{n._destroy()}catch(d){console.error("Failed to destroy component:",d)}delete n._destroy,r&&n.removeAttribute(`data-${r}-initialized`),delete n.dataset.basecoatComponent},j=n=>{n.nodeType===Node.ELEMENT_NODE&&(n.isConnected||(n.dataset?.basecoatComponent&&O(n),n.querySelectorAll("[data-basecoat-component]").forEach(O)))},A=n=>Array.from(new Set(n)),I=(n,r,d=!1)=>{const b=Array.from(document.querySelectorAll(r));return d&&b.push(...document.querySelectorAll(`[data-basecoat-component="${n}"]`)),A(b)},L=(n={})=>{const r=n.force===!0;Object.entries(h).forEach(([d,{selector:b}])=>{I(d,b,r).forEach(e=>{const t=e.dataset?.basecoatComponent===d;r&&O(e),(t||e.matches(b))&&E(e,d)})})},S=n=>{n.nodeType===Node.ELEMENT_NODE&&Object.entries(h).forEach(([r,{selector:d}])=>{n.matches(d)&&E(n,r),n.querySelectorAll(d).forEach(b=>E(b,r))})},q=n=>{if(!n)return;if(typeof n.refresh=="function"){n.refresh();return}const r=n.dataset?.basecoatComponent,d=r?h[r]:null;d?.refresh&&d.refresh(n)},k=()=>{x||(x=new MutationObserver(n=>{n.forEach(r=>{r.addedNodes.forEach(S),r.removedNodes.forEach(j)})}),x.observe(document.body,{childList:!0,subtree:!0}))},y=()=>{x&&(x.disconnect(),x=null)},f=(n,r={})=>{const d=h[n];if(!d){console.warn(`Component '${n}' not found in registry`);return}const b=r.force===!0;I(n,d.selector,b).forEach(e=>{const t=e.dataset?.basecoatComponent===n;b&&O(e),(t||e.matches(d.selector))&&E(e,n)})},M=(n={})=>{L(n)},C=n=>{const r=n==="dark";document.documentElement.classList.toggle("dark",r);try{localStorage.setItem("themeMode",r?"dark":"light")}catch{}document.dispatchEvent(new CustomEvent("basecoat:themechange",{detail:{mode:r?"dark":"light"}}))},w=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.auvyx=window.basecoat={register:p,init:f,initAll:M,refresh:q,start:k,stop:y,theme:{get:w,set:C,toggle:()=>C(w()==="dark"?"light":"dark")}},document.addEventListener("DOMContentLoaded",()=>{L(),k()})})(),(()=>{const h=new WeakMap,x=e=>{const t=e.querySelector(":scope > button"),i=t?.querySelector(":scope > span")||null,s=e.querySelector(":scope > [data-popover]"),o=s?s.querySelector('[role="listbox"]'):null,c=e.querySelector(':scope > input[type="hidden"]');return{trigger:t,selectedLabel:i,popover:s,listbox:o,input:c}},p=e=>e.dataset.value??e.textContent.trim(),E=e=>e.dataset.label||e.textContent.trim(),O=e=>e.dataset.format==="object"?"object":"value",j=e=>e.getAttribute("aria-disabled")==="true",A=e=>({value:p(e),label:E(e)}),I=e=>{const t=Array.from(e.querySelectorAll('[role="option"]'));return{allOptions:t,options:t.filter(i=>!j(i))}},L=(e,{isMultiple:t,format:i})=>{if(t)try{const s=JSON.parse(e||"[]");return Array.isArray(s)?s.map(o=>i==="object"&&o&&typeof o=="object"?o.value:o).filter(o=>o!=null).map(String):[]}catch{return[]}if(i==="object")try{const s=JSON.parse(e||"null");return s&&typeof s=="object"&&s.value!=null?String(s.value):""}catch{return""}return e||""},S=(e,t)=>{if(e.format==="object")return JSON.stringify(e.isMultiple?t:t[0]||null);const i=t.map(s=>s.value);return e.isMultiple?JSON.stringify(i):i[0]||""},q=e=>{e.selectedLabel.textContent=e.placeholder||"",e.selectedLabel.classList.toggle("text-muted-foreground",!!e.placeholder),e.input.value=e.isMultiple?S(e,[]):""},k=(e,t)=>{const i=t.getBoundingClientRect(),s=e.listbox.getBoundingClientRect();i.top<s.top?e.listbox.scrollTop-=s.top-i.top:i.bottom>s.bottom&&(e.listbox.scrollTop+=i.bottom-s.bottom)},y=(e,t)=>{if(e.activeIndex>-1&&e.options[e.activeIndex]&&e.options[e.activeIndex].classList.remove("active"),e.activeIndex=t,e.activeIndex>-1){const i=e.options[e.activeIndex];i.classList.add("active"),i.id?e.trigger.setAttribute("aria-activedescendant",i.id):e.trigger.removeAttribute("aria-activedescendant")}else e.trigger.removeAttribute("aria-activedescendant")},f=(e,t,i=!0)=>{const s=h.get(e);let o,c;if(s.isMultiple){const a=Array.isArray(t)?t:[];s.selectedOptions.clear(),a.forEach(m=>s.selectedOptions.add(m));const g=s.options.filter(m=>s.selectedOptions.has(m));c=g.map(A),g.length===0?(s.selectedLabel.textContent=s.placeholder,s.selectedLabel.classList.add("text-muted-foreground")):(s.selectedLabel.textContent=c.map(m=>m.label).join(", "),s.selectedLabel.classList.remove("text-muted-foreground")),o=c.map(m=>m.value),s.input.value=S(s,c)}else{const a=t;a?(a.dataset.label?s.selectedLabel.textContent=a.dataset.label:s.selectedLabel.innerHTML=a.innerHTML,s.selectedLabel.classList.remove("text-muted-foreground"),c=A(a),o=c.value,s.input.value=S(s,[c])):(s.options.forEach(g=>g.removeAttribute("aria-selected")),q(s),c=null,o="")}s.options.forEach(a=>{(s.isMultiple?s.selectedOptions.has(a):t&&a===t)?a.setAttribute("aria-selected","true"):a.removeAttribute("aria-selected")}),i&&e.dispatchEvent(new CustomEvent("change",{detail:{value:o,selected:c},bubbles:!0}))},M=(e,t=!0)=>{e.popover.getAttribute("aria-hidden")!=="true"&&(t&&e.trigger.focus(),e.popover.setAttribute("aria-hidden","true"),e.trigger.setAttribute("aria-expanded","false"),y(e,-1))},C=e=>{const t=h.get(e);if(!t)return;const i=x(e);if(!i.trigger||!i.selectedLabel||!i.popover||!i.listbox||!i.input){const c=[];i.trigger||c.push("trigger"),i.selectedLabel||c.push("selected label"),i.popover||c.push("popover"),i.listbox||c.push("listbox"),i.input||c.push("input"),console.error(`Select component refresh failed. Missing element(s): ${c.join(", ")}`,e);return}const s=i.input.value;if(Object.assign(t,i,I(i.listbox)),t.visibleOptions=[...t.options],t.isMultiple=t.listbox.getAttribute("aria-multiselectable")==="true",t.format=O(e),t.placeholder=e.dataset.placeholder||"",t.closeOnSelect=e.dataset.closeOnSelect==="true",t.isMultiple){t.selectedOptions||(t.selectedOptions=new Set);const c=L(s,t),a=c.length?c.map(g=>t.options.find(m=>p(m)===g)).filter(Boolean):t.options.filter(g=>g.getAttribute("aria-selected")==="true");f(e,a,!1)}else{const c=L(s,t),a=c===""&&t.placeholder?null:t.options.find(g=>p(g)===c)||t.options.find(g=>g.getAttribute("aria-selected")==="true");t.options.forEach(g=>g.removeAttribute("aria-selected")),f(e,a||null,!1)}const o=t.listbox.querySelector('[role="option"][aria-selected="true"]');y(t,o?t.options.indexOf(o):-1)},w=(e,t)=>{const i=h.get(e);i.selectedOptions.has(t)?i.selectedOptions.delete(t):i.selectedOptions.add(t),f(e,i.options.filter(s=>i.selectedOptions.has(s)))},n=(e,t)=>{const i=h.get(e);if(i.isMultiple){const s=i.options.find(o=>p(o)===t&&!i.selectedOptions.has(o));if(!s)return;i.selectedOptions.add(s),f(e,i.options.filter(o=>i.selectedOptions.has(o)))}else{const s=i.options.find(o=>p(o)===t);if(!s)return;if(i.placeholder&&p(s)===""){f(e,null),M(i);return}e.value!==t&&f(e,s),M(i)}},r=(e,t)=>{const i=h.get(e);if(!i.isMultiple)return;const s=i.options.find(o=>p(o)===t&&i.selectedOptions.has(o));s&&(i.selectedOptions.delete(s),f(e,i.options.filter(o=>i.selectedOptions.has(o))))},d=(e,t)=>{const i=h.get(t),s=i.popover.getAttribute("aria-hidden")==="false";if(!["ArrowDown","ArrowUp","Enter","Home","End","Escape"].includes(e.key))return;if(!s){e.key!=="Enter"&&e.key!=="Escape"&&(e.preventDefault(),t.open());return}if(e.preventDefault(),e.key==="Escape"){t.close();return}if(e.key==="Enter"){if(i.activeIndex>-1){const a=i.options[i.activeIndex];i.isMultiple?(w(t,a),i.closeOnSelect&&t.close()):(i.placeholder&&p(a)===""?f(t,null):t.value!==p(a)&&f(t,a),t.close())}return}if(i.visibleOptions.length===0)return;const o=i.activeIndex>-1?i.visibleOptions.indexOf(i.options[i.activeIndex]):-1;let c=o;if(e.key==="ArrowDown"&&o<i.visibleOptions.length-1&&(c=o+1),e.key==="ArrowUp"&&(c=o>0?o-1:0),e.key==="Home"&&(c=0),e.key==="End"&&(c=i.visibleOptions.length-1),c!==o){const a=i.visibleOptions[c];y(i,i.options.indexOf(a)),k(i,a)}},b=e=>{if(e.dataset.selectInitialized)return;const t={activeIndex:-1,selectedOptions:null,options:[],allOptions:[],visibleOptions:[],format:"value"};if(h.set(e,t),e.refresh=()=>C(e),C(e),!t.trigger||!t.selectedLabel||!t.popover||!t.listbox||!t.input){h.delete(e),delete e.refresh;return}e.open=()=>{document.dispatchEvent(new CustomEvent("basecoat:popover",{detail:{source:e}})),e.refresh(),t.popover.setAttribute("aria-hidden","false"),t.trigger.setAttribute("aria-expanded","true");const l=t.listbox.querySelector('[role="option"][aria-selected="true"]');l&&(y(t,t.options.indexOf(l)),k(t,l))},e.close=(l=!0)=>M(t,l),e.togglePopover=()=>t.trigger.getAttribute("aria-expanded")==="true"?e.close():e.open();const i=l=>d(l,e),s=e.togglePopover,o=l=>{const v=l.target.closest('[role="option"]');if(v&&t.visibleOptions.includes(v)){const u=t.options.indexOf(v);u!==t.activeIndex&&y(t,u)}},c=()=>{const l=t.listbox.querySelector('[role="option"][aria-selected="true"]');y(t,l?t.options.indexOf(l):-1)},a=l=>{const v=l.target.closest('[role="option"]');if(!v)return;const u=t.options.find(T=>T===v);u&&(t.isMultiple?(w(e,u),t.closeOnSelect?e.close():(y(t,t.options.indexOf(u)),t.trigger.focus())):(t.placeholder&&p(u)===""?f(e,null):e.value!==p(u)&&f(e,u),e.close()))},g=l=>{e.contains(l.target)||e.close(!1)},m=l=>{e.contains(l.detail.source)||e.close(!1)};t.trigger.addEventListener("keydown",i),t.trigger.addEventListener("click",s),t.listbox.addEventListener("mousemove",o),t.listbox.addEventListener("mouseleave",c),t.listbox.addEventListener("click",a),document.addEventListener("click",g),document.addEventListener("basecoat:popover",m),e._destroy=()=>{t.trigger.removeEventListener("keydown",i),t.trigger.removeEventListener("click",s),t.listbox.removeEventListener("mousemove",o),t.listbox.removeEventListener("mouseleave",c),t.listbox.removeEventListener("click",a),document.removeEventListener("click",g),document.removeEventListener("basecoat:popover",m),h.delete(e),delete e.refresh,delete e.open,delete e.close,delete e.togglePopover,delete e.select,delete e.selectByValue,delete e.deselect,delete e.toggle,delete e.selectAll,delete e.selectNone},Object.defineProperty(e,"value",{configurable:!0,get:()=>t.isMultiple?t.options.filter(l=>t.selectedOptions.has(l)).map(p):L(t.input.value,t),set:l=>{if(t.isMultiple){const v=Array.isArray(l)?l:l!=null?[l]:[];f(e,v.map(u=>t.options.find(T=>p(T)===u)).filter(Boolean))}else{if(l==null||l===""){f(e,null),e.close();return}const v=t.options.find(u=>p(u)===l);v&&(f(e,v),e.close())}}}),Object.defineProperty(e,"selected",{configurable:!0,get:()=>{if(t.isMultiple)return t.options.filter(u=>t.selectedOptions.has(u)).map(A);const l=e.value,v=t.options.find(u=>p(u)===l);return v?A(v):null}}),e.select=l=>n(e,l),e.selectByValue=e.select,t.isMultiple&&(e.deselect=l=>r(e,l),e.toggle=l=>{const v=t.options.find(u=>p(u)===l);v&&w(e,v)},e.selectAll=()=>f(e,t.options),e.selectNone=()=>f(e,[])),t.popover.setAttribute("aria-hidden","true"),t.trigger.setAttribute("aria-expanded","false"),e.dataset.selectInitialized="true",e.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.auvyx&&window.auvyx.register("select",{selector:"div.select:not([data-select-initialized])",init:b,refresh:C})})(),document.readyState!=="loading"&&(window.auvyx.initAll(),window.auvyx.start());
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  window.auvyx||(()=>{const u={};let l=null;const e=(t,o,r)=>{const i=typeof o=="object"?o:{selector:o,init:r};u[t]={selector:i.selector,init:i.init,refresh:i.refresh}},s=(t,o)=>{const r=u[o];if(r)try{r.init(t),t.hasAttribute(`data-${o}-initialized`)&&(t.dataset.basecoatComponent=o)}catch(i){if(console.error(`Failed to initialize ${o}:`,i),typeof t._destroy=="function")try{t._destroy()}catch(a){console.error(`Failed to clean up ${o} after initialization error:`,a)}delete t._destroy,t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent}},y=t=>{if(!t||t.nodeType!==Node.ELEMENT_NODE)return;const o=t.dataset?.basecoatComponent;if(typeof t._destroy=="function")try{t._destroy()}catch(r){console.error("Failed to destroy component:",r)}delete t._destroy,o&&t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent},f=t=>{t.nodeType===Node.ELEMENT_NODE&&(t.isConnected||(t.dataset?.basecoatComponent&&y(t),t.querySelectorAll("[data-basecoat-component]").forEach(y)))},n=t=>Array.from(new Set(t)),h=(t,o,r=!1)=>{const i=Array.from(document.querySelectorAll(o));return r&&i.push(...document.querySelectorAll(`[data-basecoat-component="${t}"]`)),n(i)},g=(t={})=>{const o=t.force===!0;Object.entries(u).forEach(([r,{selector:i}])=>{h(r,i,o).forEach(a=>{const b=a.dataset?.basecoatComponent===r;o&&y(a),(b||a.matches(i))&&s(a,r)})})},E=t=>{t.nodeType===Node.ELEMENT_NODE&&Object.entries(u).forEach(([o,{selector:r}])=>{t.matches(r)&&s(t,o),t.querySelectorAll(r).forEach(i=>s(i,o))})},p=t=>{if(!t)return;if(typeof t.refresh=="function"){t.refresh();return}const o=t.dataset?.basecoatComponent,r=o?u[o]:null;r?.refresh&&r.refresh(t)},c=()=>{l||(l=new MutationObserver(t=>{t.forEach(o=>{o.addedNodes.forEach(E),o.removedNodes.forEach(f)})}),l.observe(document.body,{childList:!0,subtree:!0}))},d=()=>{l&&(l.disconnect(),l=null)},w=(t,o={})=>{const r=u[t];if(!r){console.warn(`Component '${t}' not found in registry`);return}const i=o.force===!0;h(t,r.selector,i).forEach(a=>{const b=a.dataset?.basecoatComponent===t;i&&y(a),(b||a.matches(r.selector))&&s(a,t)})},v=(t={})=>{g(t)},A=t=>{const o=t==="dark";document.documentElement.classList.toggle("dark",o);try{localStorage.setItem("themeMode",o?"dark":"light")}catch{}document.dispatchEvent(new CustomEvent("basecoat:themechange",{detail:{mode:o?"dark":"light"}}))},k=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.auvyx=window.basecoat={register:e,init:w,initAll:v,refresh:p,start:c,stop:d,theme:{get:k,set:A,toggle:()=>A(k()==="dark"?"light":"dark")}},document.addEventListener("DOMContentLoaded",()=>{g(),c()})})(),(()=>{const u=e=>{if(e.dataset.sidebarInitialized&&typeof e.toggle=="function")return;if(e.dataset.position==="static"){e.dataset.sidebarInitialized="true";return}const s=e.dataset.initialOpen!=="false",y=e.dataset.initialMobileOpen==="true",f=parseInt(e.dataset.breakpoint)||768;let n=f>0?window.innerWidth>=f?s:y:s;const h=()=>e.dataset.collapsible==="icon"&&(f<=0||window.innerWidth>=f),g=()=>{const c=h();e.setAttribute("aria-hidden",String(!n&&!c)),e.dataset.state=n?"open":"collapsed",n||c?e.removeAttribute("inert"):e.setAttribute("inert",""),e.id&&document.querySelectorAll(`[data-sidebar-toggle="${CSS.escape(e.id)}"]`).forEach(d=>d.setAttribute("aria-expanded",String(n))),e.dispatchEvent(new CustomEvent("basecoat:sidebar",{detail:{open:n}}))},E=c=>{n=!!c,g()};e.open=()=>E(!0),e.close=()=>E(!1),e.toggle=()=>E(!n);const p=c=>{const d=c.target,w=e.querySelector(":scope > nav");if(window.innerWidth<f&&d.closest("a, button")&&!d.closest("[data-keep-mobile-sidebar-open]")){document.activeElement&&document.activeElement.blur(),e.close();return}if(!n&&h()&&d.closest("summary")){c.preventDefault(),e.open(),d.closest("details").open=!0;return}(d===e||w&&!w.contains(d))&&(document.activeElement&&document.activeElement.blur(),e.close())};e.addEventListener("click",p),e._destroy=()=>{e.removeEventListener("click",p),delete e.open,delete e.close,delete e.toggle},g(),e.dataset.sidebarInitialized="true",e.dispatchEvent(new CustomEvent("basecoat:initialized"))},l=e=>e?document.getElementById(e):document.querySelector('.sidebar:not([data-position="static"])');document.addEventListener("click",e=>{const s=e.target.closest("[data-sidebar-toggle]");s&&l(s.getAttribute("data-sidebar-toggle"))?.toggle?.()}),document.addEventListener("keydown",e=>{if(e.key.toLowerCase()!=="b"||!(e.metaKey||e.ctrlKey)||e.altKey||e.shiftKey||e.target.closest("input, textarea, select, [contenteditable]"))return;const s=l("");!s||s.dataset.shortcut==="none"||typeof s.toggle!="function"||(e.preventDefault(),s.toggle())}),window.auvyx&&window.auvyx.register("sidebar",".sidebar",u)})(),document.readyState!=="loading"&&(window.auvyx.initAll(),window.auvyx.start());
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  window.auvyx||(()=>{const i={};let c=null;const n=(t,o,e)=>{const r=typeof o=="object"?o:{selector:o,init:e};i[t]={selector:r.selector,init:r.init,refresh:r.refresh}},s=(t,o)=>{const e=i[o];if(e)try{e.init(t),t.hasAttribute(`data-${o}-initialized`)&&(t.dataset.basecoatComponent=o)}catch(r){if(console.error(`Failed to initialize ${o}:`,r),typeof t._destroy=="function")try{t._destroy()}catch(a){console.error(`Failed to clean up ${o} after initialization error:`,a)}delete t._destroy,t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent}},d=t=>{if(!t||t.nodeType!==Node.ELEMENT_NODE)return;const o=t.dataset?.basecoatComponent;if(typeof t._destroy=="function")try{t._destroy()}catch(e){console.error("Failed to destroy component:",e)}delete t._destroy,o&&t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent},u=t=>{t.nodeType===Node.ELEMENT_NODE&&(t.isConnected||(t.dataset?.basecoatComponent&&d(t),t.querySelectorAll("[data-basecoat-component]").forEach(d)))},f=t=>Array.from(new Set(t)),p=(t,o,e=!1)=>{const r=Array.from(document.querySelectorAll(o));return e&&r.push(...document.querySelectorAll(`[data-basecoat-component="${t}"]`)),f(r)},y=(t={})=>{const o=t.force===!0;Object.entries(i).forEach(([e,{selector:r}])=>{p(e,r,o).forEach(a=>{const l=a.dataset?.basecoatComponent===e;o&&d(a),(l||a.matches(r))&&s(a,e)})})},b=t=>{t.nodeType===Node.ELEMENT_NODE&&Object.entries(i).forEach(([o,{selector:e}])=>{t.matches(e)&&s(t,o),t.querySelectorAll(e).forEach(r=>s(r,o))})},v=t=>{if(!t)return;if(typeof t.refresh=="function"){t.refresh();return}const o=t.dataset?.basecoatComponent,e=o?i[o]:null;e?.refresh&&e.refresh(t)},h=()=>{c||(c=new MutationObserver(t=>{t.forEach(o=>{o.addedNodes.forEach(b),o.removedNodes.forEach(u)})}),c.observe(document.body,{childList:!0,subtree:!0}))},C=()=>{c&&(c.disconnect(),c=null)},w=(t,o={})=>{const e=i[t];if(!e){console.warn(`Component '${t}' not found in registry`);return}const r=o.force===!0;p(t,e.selector,r).forEach(a=>{const l=a.dataset?.basecoatComponent===t;r&&d(a),(l||a.matches(e.selector))&&s(a,t)})},m=(t={})=>{y(t)},E=t=>{const o=t==="dark";document.documentElement.classList.toggle("dark",o);try{localStorage.setItem("themeMode",o?"dark":"light")}catch{}document.dispatchEvent(new CustomEvent("basecoat:themechange",{detail:{mode:o?"dark":"light"}}))},g=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.auvyx=window.basecoat={register:n,init:w,initAll:m,refresh:v,start:h,stop:C,theme:{get:g,set:E,toggle:()=>E(g()==="dark"?"light":"dark")}},document.addEventListener("DOMContentLoaded",()=>{y(),h()})})(),(()=>{function i(n){const s=parseFloat(n.min||"0"),d=parseFloat(n.max||"100"),u=parseFloat(n.value||"0"),f=d===s?0:(u-s)/(d-s)*100;n.style.setProperty("--slider-value",`${f}%`)}function c(n){if(n.dataset.rangeInitialized)return;i(n);const s=()=>i(n);n.addEventListener("input",s),n._destroy=()=>{n.removeEventListener("input",s)},n.dataset.rangeInitialized="true"}window.auvyx&&window.auvyx.register("range",'input[type="range"]:not([data-range-initialized])',c)})(),document.readyState!=="loading"&&(window.auvyx.initAll(),window.auvyx.start());
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  window.auvyx||(()=>{const d={};let l=null;const A=(t,e,s)=>{const a=typeof e=="object"?e:{selector:e,init:s};d[t]={selector:a.selector,init:a.init,refresh:a.refresh}},E=(t,e)=>{const s=d[e];if(s)try{s.init(t),t.hasAttribute(`data-${e}-initialized`)&&(t.dataset.basecoatComponent=e)}catch(a){if(console.error(`Failed to initialize ${e}:`,a),typeof t._destroy=="function")try{t._destroy()}catch(b){console.error(`Failed to clean up ${e} after initialization error:`,b)}delete t._destroy,t.removeAttribute(`data-${e}-initialized`),delete t.dataset.basecoatComponent}},p=t=>{if(!t||t.nodeType!==Node.ELEMENT_NODE)return;const e=t.dataset?.basecoatComponent;if(typeof t._destroy=="function")try{t._destroy()}catch(s){console.error("Failed to destroy component:",s)}delete t._destroy,e&&t.removeAttribute(`data-${e}-initialized`),delete t.dataset.basecoatComponent},r=t=>{t.nodeType===Node.ELEMENT_NODE&&(t.isConnected||(t.dataset?.basecoatComponent&&p(t),t.querySelectorAll("[data-basecoat-component]").forEach(p)))},n=t=>Array.from(new Set(t)),h=(t,e,s=!1)=>{const a=Array.from(document.querySelectorAll(e));return s&&a.push(...document.querySelectorAll(`[data-basecoat-component="${t}"]`)),n(a)},c=(t={})=>{const e=t.force===!0;Object.entries(d).forEach(([s,{selector:a}])=>{h(s,a,e).forEach(b=>{const C=b.dataset?.basecoatComponent===s;e&&p(b),(C||b.matches(a))&&E(b,s)})})},m=t=>{t.nodeType===Node.ELEMENT_NODE&&Object.entries(d).forEach(([e,{selector:s}])=>{t.matches(s)&&E(t,e),t.querySelectorAll(s).forEach(a=>E(a,e))})},i=t=>{if(!t)return;if(typeof t.refresh=="function"){t.refresh();return}const e=t.dataset?.basecoatComponent,s=e?d[e]:null;s?.refresh&&s.refresh(t)},y=()=>{l||(l=new MutationObserver(t=>{t.forEach(e=>{e.addedNodes.forEach(m),e.removedNodes.forEach(r)})}),l.observe(document.body,{childList:!0,subtree:!0}))},o=()=>{l&&(l.disconnect(),l=null)},f=(t,e={})=>{const s=d[t];if(!s){console.warn(`Component '${t}' not found in registry`);return}const a=e.force===!0;h(t,s.selector,a).forEach(b=>{const C=b.dataset?.basecoatComponent===t;a&&p(b),(C||b.matches(s.selector))&&E(b,t)})},g=(t={})=>{c(t)},u=t=>{const e=t==="dark";document.documentElement.classList.toggle("dark",e);try{localStorage.setItem("themeMode",e?"dark":"light")}catch{}document.dispatchEvent(new CustomEvent("basecoat:themechange",{detail:{mode:e?"dark":"light"}}))},w=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.auvyx=window.basecoat={register:A,init:f,initAll:g,refresh:i,start:y,stop:o,theme:{get:w,set:u,toggle:()=>u(w()==="dark"?"light":"dark")}},document.addEventListener("DOMContentLoaded",()=>{c(),y()})})(),(()=>{const d=new WeakMap,l=r=>r.disabled||r.getAttribute("aria-disabled")==="true",A=r=>{const n=r.querySelector('[role="tablist"]'),h=n?Array.from(n.querySelectorAll('[role="tab"]')):[],c=h.map(m=>document.getElementById(m.getAttribute("aria-controls"))).filter(Boolean);return{tablist:n,tabs:h,panels:c}},E=r=>{const n=d.get(r);if(!n||(Object.assign(n,A(r)),!n.tablist))return;const h=n.tabs.find(c=>c.getAttribute("aria-selected")==="true"&&!l(c))||n.tabs.find(c=>!l(c));h&&r.select(h,!1)},p=r=>{if(r.dataset.tabsInitialized)return;const n={};d.set(r,n),r.refresh=()=>E(r);const h=(i,y=!1)=>{if(!i||l(i))return;n.tabs.forEach(f=>{f.setAttribute("aria-selected","false"),f.setAttribute("tabindex","-1");const g=document.getElementById(f.getAttribute("aria-controls"));g&&(g.hidden=!0)}),i.setAttribute("aria-selected","true"),i.setAttribute("tabindex","0");const o=document.getElementById(i.getAttribute("aria-controls"));o&&(o.hidden=!1),y&&i.focus()};if(r.select=h,E(r),!n.tablist){d.delete(r),delete r.refresh,delete r.select;return}const c=i=>{const y=i.target.closest('[role="tab"]');y&&r.select(y)},m=i=>{const y=i.target;if(!n.tabs.includes(y))return;const o=n.tabs.filter(w=>!l(w)),f=o.indexOf(y),g=n.tablist.getAttribute("aria-orientation")||"horizontal";if(f===-1)return;let u;i.key==="ArrowRight"&&g==="horizontal"&&(u=o[(f+1)%o.length]),i.key==="ArrowLeft"&&g==="horizontal"&&(u=o[(f-1+o.length)%o.length]),i.key==="ArrowDown"&&g==="vertical"&&(u=o[(f+1)%o.length]),i.key==="ArrowUp"&&g==="vertical"&&(u=o[(f-1+o.length)%o.length]),i.key==="Home"&&(u=o[0]),i.key==="End"&&(u=o[o.length-1]),u&&(i.preventDefault(),r.select(u,!0))};n.tablist.addEventListener("click",c),n.tablist.addEventListener("keydown",m),r._destroy=()=>{n.tablist.removeEventListener("click",c),n.tablist.removeEventListener("keydown",m),d.delete(r),delete r.refresh,delete r.select},r.dataset.tabsInitialized="true",r.dispatchEvent(new CustomEvent("basecoat:initialized"))};window.auvyx&&window.auvyx.register("tabs",{selector:".tabs:not([data-tabs-initialized])",init:p,refresh:E})})(),document.readyState!=="loading"&&(window.auvyx.initAll(),window.auvyx.start());
@@ -1,4 +1,4 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  window.auvyx||(()=>{const i={};let s=null;const p=(t,o,n)=>{const a=typeof o=="object"?o:{selector:o,init:n};i[t]={selector:a.selector,init:a.init,refresh:a.refresh}},g=(t,o)=>{const n=i[o];if(n)try{n.init(t),t.hasAttribute(`data-${o}-initialized`)&&(t.dataset.basecoatComponent=o)}catch(a){if(console.error(`Failed to initialize ${o}:`,a),typeof t._destroy=="function")try{t._destroy()}catch(l){console.error(`Failed to clean up ${o} after initialization error:`,l)}delete t._destroy,t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent}},m=t=>{if(!t||t.nodeType!==Node.ELEMENT_NODE)return;const o=t.dataset?.basecoatComponent;if(typeof t._destroy=="function")try{t._destroy()}catch(n){console.error("Failed to destroy component:",n)}delete t._destroy,o&&t.removeAttribute(`data-${o}-initialized`),delete t.dataset.basecoatComponent},v=t=>{t.nodeType===Node.ELEMENT_NODE&&(t.isConnected||(t.dataset?.basecoatComponent&&m(t),t.querySelectorAll("[data-basecoat-component]").forEach(m)))},E=t=>Array.from(new Set(t)),y=(t,o,n=!1)=>{const a=Array.from(document.querySelectorAll(o));return n&&a.push(...document.querySelectorAll(`[data-basecoat-component="${t}"]`)),E(a)},f=(t={})=>{const o=t.force===!0;Object.entries(i).forEach(([n,{selector:a}])=>{y(n,a,o).forEach(l=>{const b=l.dataset?.basecoatComponent===n;o&&m(l),(b||l.matches(a))&&g(l,n)})})},h=t=>{t.nodeType===Node.ELEMENT_NODE&&Object.entries(i).forEach(([o,{selector:n}])=>{t.matches(n)&&g(t,o),t.querySelectorAll(n).forEach(a=>g(a,o))})},k=t=>{if(!t)return;if(typeof t.refresh=="function"){t.refresh();return}const o=t.dataset?.basecoatComponent,n=o?i[o]:null;n?.refresh&&n.refresh(t)},e=()=>{s||(s=new MutationObserver(t=>{t.forEach(o=>{o.addedNodes.forEach(h),o.removedNodes.forEach(v)})}),s.observe(document.body,{childList:!0,subtree:!0}))},r=()=>{s&&(s.disconnect(),s=null)},c=(t,o={})=>{const n=i[t];if(!n){console.warn(`Component '${t}' not found in registry`);return}const a=o.force===!0;y(t,n.selector,a).forEach(l=>{const b=l.dataset?.basecoatComponent===t;a&&m(l),(b||l.matches(n.selector))&&g(l,t)})},d=(t={})=>{f(t)},u=t=>{const o=t==="dark";document.documentElement.classList.toggle("dark",o);try{localStorage.setItem("themeMode",o?"dark":"light")}catch{}document.dispatchEvent(new CustomEvent("basecoat:themechange",{detail:{mode:o?"dark":"light"}}))},w=()=>document.documentElement.classList.contains("dark")?"dark":"light";window.auvyx=window.basecoat={register:p,init:c,initAll:d,refresh:k,start:e,stop:r,theme:{get:w,set:u,toggle:()=>u(w()==="dark"?"light":"dark")}},document.addEventListener("DOMContentLoaded",()=>{f(),e()})})(),(()=>{let i;const s=new WeakMap;let p=!1;const g={success:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></svg>',error:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>',info:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>',warning:'<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>'};function m(e){if(e.dataset.toasterInitialized)return;i=e;const r=c=>{const d=c.target.closest(".toast footer a"),u=c.target.closest(".toast footer button");(d||u)&&f(c.target.closest(".toast"))};i.addEventListener("mouseenter",E),i.addEventListener("mouseleave",y),i.addEventListener("click",r),e.toast=(c={})=>{const d=k(c);return e.appendChild(d),v(d),d},e.closeAll=()=>{e.querySelectorAll('.toast:not([aria-hidden="true"])').forEach(f)},i.querySelectorAll(".toast:not([data-toast-initialized])").forEach(v),i._destroy=()=>{i.removeEventListener("mouseenter",E),i.removeEventListener("mouseleave",y),i.removeEventListener("click",r),i.querySelectorAll(".toast[data-toast-initialized]").forEach(c=>c._destroy?.()),delete i.toast,delete i.closeAll,i===e&&(i=null)},i.dataset.toasterInitialized="true",i.dispatchEvent(new CustomEvent("basecoat:initialized"))}function v(e){if(e.dataset.toastInitialized)return;const r=parseInt(e.dataset.duration),c=r!==-1?r||(e.dataset.category==="error"?5e3:3e3):-1,d={remainingTime:c,timeoutId:null,startTime:null};c!==-1&&(p?d.timeoutId=null:(d.startTime=Date.now(),d.timeoutId=setTimeout(()=>f(e),c))),s.set(e,d),e.close=()=>f(e),e._destroy=()=>{clearTimeout(d.timeoutId),s.delete(e),delete e.close},e.dataset.toastInitialized="true"}function E(){p||!i||(p=!0,i.querySelectorAll('.toast:not([aria-hidden="true"])').forEach(e=>{if(!s.has(e))return;const r=s.get(e);r.timeoutId&&(clearTimeout(r.timeoutId),r.timeoutId=null,r.remainingTime-=Date.now()-r.startTime)}))}function y(){!p||!i||(p=!1,i.querySelectorAll('.toast:not([aria-hidden="true"])').forEach(e=>{if(!s.has(e))return;const r=s.get(e);r.remainingTime!==-1&&!r.timeoutId&&(r.remainingTime>0?(r.startTime=Date.now(),r.timeoutId=setTimeout(()=>f(e),r.remainingTime)):f(e))}))}function f(e){if(!e||!s.has(e))return;const r=s.get(e);clearTimeout(r.timeoutId),s.delete(e),e.contains(document.activeElement)&&document.activeElement.blur(),e.setAttribute("aria-hidden","true"),e.addEventListener("transitionend",()=>e.remove(),{once:!0})}const h=e=>String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;");function k(e){const{category:r="info",title:c,description:d,action:u,cancel:w,duration:t,icon:o,html:n=!1}=e,a=A=>n?String(A):h(A),l=o||r&&g[r]||"",b=c?`<h2>${a(c)}</h2>`:"",x=d?`<p>${a(d)}</p>`:"",C=u?.href?`<a href="${h(u.href)}" class="btn" data-toast-action>${a(u.label)}</a>`:u?.onclick?`<button type="button" class="btn" data-toast-action onclick="${h(u.onclick)}">${a(u.label)}</button>`:"",T=w?`<button type="button" class="btn h-6 text-xs px-2.5 rounded-sm" data-variant="outline" data-toast-cancel onclick="${h(w?.onclick||"")}">${a(w.label)}</button>`:"",I=C||T?`<footer>${C}${T}</footer>`:"",L=`
3
3
  <div
4
4
  class="toast"