vanilla-breeze 0.1.2 → 0.1.3
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/cdn/components/accordion-wc.js +1 -1
- package/dist/cdn/components/analytics-panel.js +1 -1
- package/dist/cdn/components/audio-player.js +1 -1
- package/dist/cdn/components/audio-visualizer.js +2 -2
- package/dist/cdn/components/author-index.js +1 -1
- package/dist/cdn/components/brand-mark.js +1 -1
- package/dist/cdn/components/calendar-wc.js +2 -2
- package/dist/cdn/components/card-list.js +1 -1
- package/dist/cdn/components/carousel-wc.js +1 -1
- package/dist/cdn/components/change-set.js +1 -1
- package/dist/cdn/components/chart-wc.js +11 -11
- package/dist/cdn/components/chat-input.js +1 -1
- package/dist/cdn/components/chat-window.js +1 -1
- package/dist/cdn/components/color-palette.js +4 -4
- package/dist/cdn/components/color-picker.js +1 -1
- package/dist/cdn/components/combo-box.js +1 -1
- package/dist/cdn/components/command-palette.js +1 -1
- package/dist/cdn/components/comment-wc.js +1 -1
- package/dist/cdn/components/compare-surface.js +1 -1
- package/dist/cdn/components/component-sampler.js +4 -4
- package/dist/cdn/components/consent-banner.js +1 -1
- package/dist/cdn/components/content-lens.js +1 -1
- package/dist/cdn/components/content-swap.js +1 -1
- package/dist/cdn/components/context-menu.js +1 -1
- package/dist/cdn/components/data-table.js +1 -1
- package/dist/cdn/components/date-picker.js +1 -1
- package/dist/cdn/components/day-view.js +1 -1
- package/dist/cdn/components/drag-surface.js +1 -1
- package/dist/cdn/components/drop-down.js +1 -1
- package/dist/cdn/components/emoji-picker.js +1 -1
- package/dist/cdn/components/flow-diagram.js +1 -1
- package/dist/cdn/components/font-pairer.js +1 -1
- package/dist/cdn/components/foot-notes.js +1 -1
- package/dist/cdn/components/form-field.js +1 -1
- package/dist/cdn/components/gantt-chart.js +1 -1
- package/dist/cdn/components/geo-map.js +3 -3
- package/dist/cdn/components/glossary-index.js +1 -1
- package/dist/cdn/components/glossary-wc.js +1 -1
- package/dist/cdn/components/gradient-builder.js +1 -1
- package/dist/cdn/components/heading-links.js +1 -1
- package/dist/cdn/components/highlight-wc.js +2 -2
- package/dist/cdn/components/image-gallery.js +1 -1
- package/dist/cdn/components/image-map.js +1 -1
- package/dist/cdn/components/impact-effort.js +1 -1
- package/dist/cdn/components/include-file.js +1 -1
- package/dist/cdn/components/kanban-board.js +1 -1
- package/dist/cdn/components/manifest.json +95 -95
- package/dist/cdn/components/markdown-editor.js +1 -1
- package/dist/cdn/components/markdown-viewer.js +1 -1
- package/dist/cdn/components/motion-specimen.js +3 -3
- package/dist/cdn/components/note-wc.js +1 -1
- package/dist/cdn/components/notification-wc.js +4 -4
- package/dist/cdn/components/page-info.js +20 -20
- package/dist/cdn/components/page-stats.js +1 -1
- package/dist/cdn/components/page-toc.js +1 -1
- package/dist/cdn/components/page-tools.js +1 -1
- package/dist/cdn/components/page-tour.js +2 -2
- package/dist/cdn/components/palette-generator.js +1 -1
- package/dist/cdn/components/popularity-index.js +1 -1
- package/dist/cdn/components/print-page.js +1 -1
- package/dist/cdn/components/qr-code.js +1 -1
- package/dist/cdn/components/reader-view.js +2 -2
- package/dist/cdn/components/recently-visited.js +26 -2
- package/dist/cdn/components/selection-menu.js +1 -1
- package/dist/cdn/components/semantic-palette.js +1 -1
- package/dist/cdn/components/settings-panel.js +2 -2
- package/dist/cdn/components/share-wc.js +1 -1
- package/dist/cdn/components/short-cuts.js +1 -1
- package/dist/cdn/components/site-index.js +1 -1
- package/dist/cdn/components/site-map-wc.js +1 -1
- package/dist/cdn/components/site-map.js +1 -1
- package/dist/cdn/components/site-search.js +3 -3
- package/dist/cdn/components/slide-accept.js +1 -1
- package/dist/cdn/components/social-embed.js +1 -1
- package/dist/cdn/components/spacing-specimen.js +2 -2
- package/dist/cdn/components/split-surface.js +1 -1
- package/dist/cdn/components/star-rating.js +1 -1
- package/dist/cdn/components/story-map.js +1 -1
- package/dist/cdn/components/tab-set.js +1 -1
- package/dist/cdn/components/text-reader.js +2 -2
- package/dist/cdn/components/theme-export.js +1 -1
- package/dist/cdn/components/theme-picker.js +3 -3
- package/dist/cdn/components/time-index.js +1 -1
- package/dist/cdn/components/time-picker.js +1 -1
- package/dist/cdn/components/toast-msg.js +1 -1
- package/dist/cdn/components/token-specimen.js +6 -6
- package/dist/cdn/components/tool-tip.js +1 -1
- package/dist/cdn/components/topic-map.js +3 -2
- package/dist/cdn/components/trust-filter.js +3 -3
- package/dist/cdn/components/type-specimen.js +1 -1
- package/dist/cdn/components/user-story.js +8 -8
- package/dist/cdn/components/video-player.js +4 -4
- package/dist/cdn/components/watch-wc.js +2 -2
- package/dist/cdn/components/week-view.js +1 -1
- package/dist/cdn/components/work-item.js +14 -14
- package/dist/cdn/components/youtube-player.js +1 -1
- package/dist/cdn/packs/design-system.full.js +15 -15
- package/dist/cdn/packs/effects.full.js +1 -1
- package/dist/cdn/packs/manifest.json +5 -5
- package/dist/cdn/packs/ui.full.css +1 -1
- package/dist/cdn/packs/ui.full.js +5 -5
- package/dist/cdn/packs/ux-planning.full.js +119 -119
- package/dist/cdn/vanilla-breeze-charts.css +1 -1
- package/dist/cdn/vanilla-breeze-charts.js +11 -11
- package/dist/cdn/vanilla-breeze-core.css +1 -1
- package/dist/cdn/vanilla-breeze-core.js +21 -21
- package/dist/cdn/vanilla-breeze-extras.js +3 -3
- package/dist/cdn/vanilla-breeze.css +1 -1
- package/dist/cdn/vanilla-breeze.js +210 -185
- package/package.json +5 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var c=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let t of this.#t)t();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,s,i){t.addEventListener(e,s,i),this.#t.push(()=>t.removeEventListener(e,s,i))}setup(){}teardown(){}};var d=new Set,u=class o extends c{#t="scroll";#s=0;#a=1;#o=2;#n="auto";#l=[0];#r=null;#i=null;#e=null;#m=null;#p=null;#g=!1;#b=0;#w=!1;#f=null;#v=null;static FONT_SIZES=["0.875rem","0.9375rem","1rem","1.0625rem","1.125rem","1.25rem"];static SNAP_DELAY=90;static STORAGE_KEY="vb-reader";setup(){this.#w||(this.#Z(),this.#q(),this.#I(),this.#z(),this.#O(),this.#w=!0),this.#D(),this.#W(),this.#c(this.#t,!1),this.setAttribute("upgraded","")}teardown(){this.#p?.disconnect(),this.#p=null,this.removeAttribute("upgraded"),clearTimeout(this.#b),d.delete(this)}#q(){let t=this.getAttribute("mode");(t==="scroll"||t==="pages")&&(this.#t=t);let e=this.getAttribute("columns");e&&(this.#n=e)}#I(){let t=this.querySelector('[slot="chrome"]'),e=[...this.children].filter(h=>!h.matches('[slot="chrome"]')),s=document.createElement("header");s.className="reader-chrome",t?s.appendChild(t):s.innerHTML=this.#L();let i=document.createElement("div");i.className="reader-scroll";let a=document.createElement("div");a.className="reader-pager",a.setAttribute("role","region"),a.setAttribute("aria-label","Article pages");let n=document.createElement("div");n.className="reader-progress",n.setAttribute("aria-hidden","true");let l=document.createElement("nav");l.className="reader-page-nav",l.setAttribute("aria-label","Page navigation"),l.innerHTML=`
|
|
1
|
+
var c=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let t of this.#t)t();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,s,i){t.addEventListener(e,s,i),this.#t.push(()=>t.removeEventListener(e,s,i))}setup(){}teardown(){}};var d=new Set,u=class o extends c{#t="scroll";#s=0;#a=1;#o=2;#n="auto";#l=[0];#r=null;#i=null;#e=null;#m=null;#p=null;#g=!1;#b=0;#w=!1;#f=null;#v=null;static FONT_SIZES=["0.875rem","0.9375rem","1rem","1.0625rem","1.125rem","1.25rem"];static SNAP_DELAY=90;static STORAGE_KEY="vb-reader";setup(){this.#w||(this.#Z(),this.#q(),this.#I(),this.#z(),this.#O(),this.#w=!0),this.#D(),this.#W(),this.#c(this.#t,!1),this.setAttribute("upgraded","")}teardown(){this.#p?.disconnect(),this.#p=null,this.removeAttribute("upgraded"),clearTimeout(this.#b),d.delete(this)}#q(){let t=this.getAttribute("mode");(t==="scroll"||t==="pages")&&(this.#t=t);let e=this.getAttribute("columns");e&&(this.#n=e)}#I(){let t=this.querySelector('[slot="chrome"]'),e=[...this.children].filter(h=>!h.matches('[slot="chrome"]')),s=document.createElement("header");s.className="reader-chrome",t?s.appendChild(t):s.innerHTML=this.#L();let i=document.createElement("div");i.className="reader-scroll";let a=document.createElement("div");a.className="reader-pager",a.setAttribute("role","region"),a.setAttribute("aria-label","Article pages");let n=document.createElement("div");n.className="reader-progress",n.setAttribute("aria-hidden","true");let l=document.createElement("nav");l.className="reader-page-nav",l.setAttribute("aria-label","Page navigation"),l.innerHTML=`
|
|
2
2
|
<button class="reader-nav-btn" data-reader-action="prev-page" type="button" aria-label="Previous page">\u2190</button>
|
|
3
3
|
<output class="reader-page-indicator" data-reader-output="page-indicator" aria-live="polite">1 / 1</output>
|
|
4
4
|
<button class="reader-nav-btn" data-reader-action="next-page" type="button" aria-label="Next page">\u2192</button>
|
|
@@ -24,5 +24,5 @@ var c=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("dat
|
|
|
24
24
|
<button class="reader-seg-btn" data-reader-action="set-columns" data-reader-value="1" type="button">1</button>
|
|
25
25
|
<button class="reader-seg-btn" data-reader-action="set-columns" data-reader-value="2" type="button">2</button>
|
|
26
26
|
<button class="reader-seg-btn" data-reader-action="set-columns" data-reader-value="3" type="button">3</button>
|
|
27
|
-
</div>`),i+="</div>",i}#F(){if(this.getAttribute("reader-title"))return this.getAttribute("reader-title");let t=this.querySelector("h1");return t?t.textContent.trim():document.title||"Reader"}#z(){if(this.#r=this.#e.querySelector(":scope > layout-columns"),this.#r)return;let t=document.createElement("layout-columns");[...this.#e.children].forEach(s=>t.appendChild(s)),this.#e.appendChild(t),this.#r=t}#c(t,e=!0){let s=this.#u();if(this.#t=t,this.setAttribute("mode",t),t==="pages"){for(let a of d)a!==this&&a.#c("scroll",!1);d.add(this),this.#i.appendChild(this.#r),this.#i.style.display="block",this.#e.style.display="none",this.#m.style.display="flex",this.#y(),this.#k(),requestAnimationFrame(()=>{this.#d(s)})}else d.delete(this),this.#e.appendChild(this.#r),this.#i.style.display="none",this.#e.style.display="",this.#m.style.display="none",this.#r.style.removeProperty("column-count"),this.#r.style.removeProperty("column-width"),requestAnimationFrame(()=>{let a=this.#e.scrollHeight-this.#e.clientHeight;this.#e.scrollTop=a>0?s*a:0,this.#A()});this.#N(),this.#S(),this.#E("reader-view:mode",{mode:t})}#H(){if(this.#n!=="auto")return Number(this.#n);let t=this.#i?.clientWidth||window.innerWidth;return t>=1680?3:t>=960?2:1}#y(){let t=this.#H();this.#r.style.setProperty("column-count",String(t)),this.#r.style.setProperty("column-width","auto"),this.setAttribute("columns",this.#n)}#d(t=this.#u()){if(this.#t!=="pages")return;let e=this.#i,s=e.clientWidth||1,i=e.scrollWidth,a=Math.max(0,i-s),n=i/s,l=Math.max(1,Math.ceil(n-.01));this.#l=[];for(let r=0;r<l;r++){let h=r===l-1?a:Math.min(r*s,a);(!this.#l.length||h-this.#l[this.#l.length-1]>1)&&this.#l.push(h)}this.#a=Math.max(1,this.#l.length),this.#s=this.#a>1?Math.min(Math.round(t*(this.#a-1)),this.#a-1):0,this.#h(this.#s,!1)}#h(t,e=!0){this.#s=Math.max(0,Math.min(t,this.#a-1));let s=this.#l[this.#s]??0;this.#g=!0;let i=e&&!this.#K();this.#i.scrollTo({left:s,behavior:i?"smooth":"instant"}),this.#
|
|
27
|
+
</div>`),i+="</div>",i}#F(){if(this.getAttribute("reader-title"))return this.getAttribute("reader-title");let t=this.querySelector("h1");return t?t.textContent.trim():document.title||"Reader"}#z(){if(this.#r=this.#e.querySelector(":scope > layout-columns"),this.#r)return;let t=document.createElement("layout-columns");[...this.#e.children].forEach(s=>t.appendChild(s)),this.#e.appendChild(t),this.#r=t}#c(t,e=!0){let s=this.#u();if(this.#t=t,this.setAttribute("mode",t),t==="pages"){for(let a of d)a!==this&&a.#c("scroll",!1);d.add(this),this.#i.appendChild(this.#r),this.#i.style.display="block",this.#e.style.display="none",this.#m.style.display="flex",this.#y(),this.#k(),requestAnimationFrame(()=>{this.#d(s)})}else d.delete(this),this.#e.appendChild(this.#r),this.#i.style.display="none",this.#e.style.display="",this.#m.style.display="none",this.#r.style.removeProperty("column-count"),this.#r.style.removeProperty("column-width"),requestAnimationFrame(()=>{let a=this.#e.scrollHeight-this.#e.clientHeight;this.#e.scrollTop=a>0?s*a:0,this.#A()});this.#N(),this.#S(),this.#E("reader-view:mode",{mode:t})}#H(){if(this.#n!=="auto")return Number(this.#n);let t=this.#i?.clientWidth||window.innerWidth;return t>=1680?3:t>=960?2:1}#y(){let t=this.#H();this.#r.style.setProperty("column-count",String(t)),this.#r.style.setProperty("column-width","auto"),this.setAttribute("columns",this.#n)}#d(t=this.#u()){if(this.#t!=="pages")return;let e=this.#i,s=e.clientWidth||1,i=e.scrollWidth,a=Math.max(0,i-s),n=i/s,l=Math.max(1,Math.ceil(n-.01));this.#l=[];for(let r=0;r<l;r++){let h=r===l-1?a:Math.min(r*s,a);(!this.#l.length||h-this.#l[this.#l.length-1]>1)&&this.#l.push(h)}this.#a=Math.max(1,this.#l.length),this.#s=this.#a>1?Math.min(Math.round(t*(this.#a-1)),this.#a-1):0,this.#h(this.#s,!1)}#h(t,e=!0){this.#s=Math.max(0,Math.min(t,this.#a-1));let s=this.#l[this.#s]??0;this.#g=!0;let i=e&&!this.#K();this.#i.scrollTo({left:s,behavior:i?"smooth":"instant"}),this.#x(),setTimeout(()=>{this.#g=!1},i?220:0)}#C(t){let e=0,s=1/0;return this.#l.forEach((i,a)=>{let n=Math.abs(i-t);n<s&&(s=n,e=a)}),e}#u(){if(this.#t==="scroll"){if(!this.#e)return 0;let e=this.#e.scrollHeight-this.#e.clientHeight;return e>0?this.#e.scrollTop/e:0}if(!this.#i)return 0;let t=this.#i.scrollWidth-this.#i.clientWidth;return t>0?this.#i.scrollLeft/t:0}#x(){let t=this.#a>1?this.#s/(this.#a-1):1;this.#T(t),this.querySelectorAll('[data-reader-output="page-indicator"]').forEach(e=>{e.textContent=`${this.#s+1} / ${this.#a}`}),this.querySelectorAll('[data-reader-action="prev-page"]').forEach(e=>{e.toggleAttribute("disabled",this.#s===0)}),this.querySelectorAll('[data-reader-action="next-page"]').forEach(e=>{e.toggleAttribute("disabled",this.#s===this.#a-1)}),this.#E("reader-view:page",{page:this.#s+1,total:this.#a})}#A(){if(this.#t!=="scroll"||!this.#e)return;let t=this.#e.scrollHeight-this.#e.clientHeight,e=t>0?this.#e.scrollTop/t:1;this.#T(e)}#T(t){this.style.setProperty("--_progress",String(t))}#k(){this.#r&&(this.#r.style.fontSize=o.FONT_SIZES[this.#o])}#P(t){let e=this.#o+t;if(e<0||e>=o.FONT_SIZES.length)return;this.#o=e;let s=this.#u();this.#k(),this.#M(),this.#t==="pages"&&requestAnimationFrame(()=>this.#d(s)),this.#S(),this.#E("reader-view:font",{size:o.FONT_SIZES[this.#o],index:this.#o})}#M(){this.querySelectorAll('[data-reader-action="font-decrease"]').forEach(t=>{t.toggleAttribute("disabled",this.#o===0)}),this.querySelectorAll('[data-reader-action="font-increase"]').forEach(t=>{t.toggleAttribute("disabled",this.#o===o.FONT_SIZES.length-1)})}#O(){this.addEventListener("click",t=>{let e=t.target.closest("[data-reader-action]");if(!e)return;switch(e.dataset.readerAction){case"toggle-mode":this.#c(this.#t==="scroll"?"pages":"scroll");break;case"set-mode-scroll":this.#c("scroll");break;case"set-mode-pages":this.#c("pages");break;case"font-increase":this.#P(1);break;case"font-decrease":this.#P(-1);break;case"set-columns":{let i=this.#u();this.#n=e.dataset.readerValue??"auto",this.#y(),this.#N(),this.#t==="pages"&&requestAnimationFrame(()=>this.#d(i)),this.#S();break}case"prev-page":this.#h(this.#s-1);break;case"next-page":this.#h(this.#s+1);break}}),this.#e.addEventListener("scroll",()=>this.#A(),{passive:!0}),this.#i.addEventListener("scroll",()=>{if(this.#t!=="pages")return;let t=this.#C(this.#i.scrollLeft);t!==this.#s&&(this.#s=t,this.#x()),!this.#g&&(clearTimeout(this.#b),this.#b=setTimeout(()=>{this.#h(this.#C(this.#i.scrollLeft),!1)},o.SNAP_DELAY))},{passive:!0}),this.#f=this.#R.bind(this)}#R(t){if(this.#t==="pages"&&!t.target?.matches?.("input, textarea, select, button, a, [contenteditable]"))switch(t.key){case"ArrowRight":case"PageDown":case" ":t.preventDefault(),this.#h(this.#s+1);break;case"ArrowLeft":case"PageUp":t.preventDefault(),this.#h(this.#s-1);break;case"Home":t.preventDefault(),this.#h(0,!1);break;case"End":t.preventDefault(),this.#h(this.#a-1,!1);break}}#D(){this.#p=new ResizeObserver(()=>{this.#t==="pages"?requestAnimationFrame(()=>{this.#y(),this.#d(this.#u())}):this.#A()}),this.#p.observe(this.#i)}#W(){this.#f&&this.listen(document,"keydown",this.#f),window.visualViewport&&(this.#v=()=>{this.#t==="pages"&&requestAnimationFrame(()=>this.#d())},this.listen(window.visualViewport,"resize",this.#v),this.listen(window.visualViewport,"scroll",this.#v))}#S(){if(this.getAttribute("persist")==="false")return;let t=this.getAttribute("storage-key")||o.STORAGE_KEY;try{localStorage.setItem(t,JSON.stringify({mode:this.#t,sizeIdx:this.#o,columns:this.#n}))}catch{}}#Z(){if(this.getAttribute("persist")==="false")return;let t=this.getAttribute("storage-key")||o.STORAGE_KEY;try{let e=JSON.parse(localStorage.getItem(t)??"null");if(!e)return;(e.mode==="scroll"||e.mode==="pages")&&(this.#t=e.mode),typeof e.sizeIdx=="number"&&e.sizeIdx>=0&&e.sizeIdx<o.FONT_SIZES.length&&(this.#o=e.sizeIdx),e.columns&&(this.#n=e.columns)}catch{}}#N(){this.querySelectorAll('[data-reader-action="set-mode-scroll"]').forEach(t=>{let e=this.#t==="scroll";t.setAttribute("data-reader-state",e?"active":""),t.setAttribute("aria-pressed",String(e))}),this.querySelectorAll('[data-reader-action="set-mode-pages"]').forEach(t=>{let e=this.#t==="pages";t.setAttribute("data-reader-state",e?"active":""),t.setAttribute("aria-pressed",String(e))}),this.querySelectorAll('[data-reader-action="set-columns"]').forEach(t=>{let e=t.dataset.readerValue===this.#n;t.setAttribute("data-reader-state",e?"active":"")}),this.#M(),this.querySelectorAll('[data-reader-output="mode-label"]').forEach(t=>{t.textContent=this.#t==="scroll"?"Scroll":"Pages"})}#E(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0,composed:!0}))}#K(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}#V(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}};customElements.define("reader-view",u);
|
|
28
28
|
//# sourceMappingURL=reader-view.js.map
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
1
|
+
var $=window.matchMedia("(prefers-reduced-motion: reduce)");var y=new Map;function b(s,e,n={}){let t=n.priority??10,i={impl:e,bundle:n.bundle,contract:n.contract,priority:t},r=y.get(s);if(customElements.get(s)){if(!r||r.priority>=t){r&&r.priority===t&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${s}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${s}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${n.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=t){r.priority===t&&console.warn(`[VB Bundle] Tag <${s}> already registered by "${r.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}y.set(s,i),customElements.define(s,e)}var c=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,n,t,i){e.addEventListener(n,t,i),this.#e.push(()=>e.removeEventListener(n,t,i))}setup(){}teardown(){}};var p=class s extends c{static STORAGE_KEY="vb:recently-visited";static PAUSE_KEY="vb:recently-visited:paused";static SHOW_ANCHORS_KEY="vb:recently-visited:show-anchors";setup(){this.#t(),this.#n()}disconnect(){this.#e&&(window.removeEventListener("storage",this.#e),this.#e=null)}#e=null;#n(){let e=new Set([s.STORAGE_KEY,s.PAUSE_KEY,s.SHOW_ANCHORS_KEY]);this.#e=n=>{e.has(n.key)&&this.#t()},window.addEventListener("storage",this.#e)}#s(){try{return localStorage.getItem(s.PAUSE_KEY)==="1"}catch{return!1}}#i(e){try{e?localStorage.setItem(s.PAUSE_KEY,"1"):localStorage.removeItem(s.PAUSE_KEY)}catch{}}#r(){try{return localStorage.getItem(s.SHOW_ANCHORS_KEY)==="1"}catch{return!1}}#o(e){try{e?localStorage.setItem(s.SHOW_ANCHORS_KEY,"1"):localStorage.removeItem(s.SHOW_ANCHORS_KEY)}catch{}}#a(){try{let e=localStorage.getItem(s.STORAGE_KEY);if(!e)return[];let n=JSON.parse(e);return Array.isArray(n)?n:[]}catch{return[]}}#c(e){try{localStorage.setItem(s.STORAGE_KEY,JSON.stringify(e))}catch{}}#l(){let e=parseInt(this.getAttribute("limit")||"25",10);return Number.isFinite(e)&&e>0?e:25}#u(e){let n=new Map;for(let t of e){let i=t.url,r=n.get(i);r||(r={url:i,title:t.title,ts:t.ts,anchors:[]},n.set(i,r)),t.ts>r.ts&&(r.ts=t.ts,t.title&&(r.title=t.title)),t.hash&&r.anchors.push({hash:t.hash,hashTitle:t.hashTitle||t.hash.slice(1)||t.hash,ts:t.ts})}for(let t of n.values())t.anchors.sort((i,r)=>r.ts-i.ts);return[...n.values()].sort((t,i)=>i.ts-t.ts)}#t(){let e=this.#a(),n=this.#u(e).slice(0,this.#l()),t=this.getAttribute("empty-text")||"No recently visited pages yet.",i=this.#s(),r=this.#r(),f=i?"Resume tracking":"Pause tracking",v=i?"play":"pause",m=r?"Hide anchor visits":"Show anchor visits",E=e.length===0,o=[];if(o.push('<header class="recently-visited-header">'),o.push('<h2 class="recently-visited-heading">Recently visited</h2>'),o.push('<menu class="recently-visited-actions">'),o.push(`<li><button type="button"
|
|
2
|
+
data-recently-visited-pause
|
|
3
|
+
class="icon-button"
|
|
4
|
+
aria-pressed="${i}"
|
|
5
|
+
aria-label="${f}"
|
|
6
|
+
title="${f}"
|
|
7
|
+
><icon-wc name="${v}" size="sm"></icon-wc></button></li>`),o.push(`<li><button type="button"
|
|
8
|
+
data-recently-visited-anchors
|
|
9
|
+
class="icon-button"
|
|
10
|
+
aria-pressed="${r}"
|
|
11
|
+
aria-label="${m}"
|
|
12
|
+
title="${m}"
|
|
13
|
+
><icon-wc name="hash" size="sm"></icon-wc></button></li>`),o.push(`<li><button type="button"
|
|
14
|
+
data-recently-visited-clear
|
|
15
|
+
class="icon-button"
|
|
16
|
+
aria-label="Clear history"
|
|
17
|
+
title="Clear history"
|
|
18
|
+
${E?"disabled":""}
|
|
19
|
+
><icon-wc name="trash-2" size="sm"></icon-wc></button></li>`),o.push("</menu>"),o.push("</header>"),o.push('<p class="recently-visited-explainer"><small>Stored on this device only. Never sent to a server.</small></p>'),n.length===0)o.push(`<p class="recently-visited-empty">${l(t)}</p>`);else{o.push('<ol class="recently-visited-list">');for(let a of n)if(r&&a.anchors.length>0){let g=a.anchors.map(h=>`<li><a href="${u(a.url)}${u(h.hash)}">${l(h.hashTitle)}</a><small>${d(h.ts)}</small></li>`).join(""),S=a.anchors.length===1?"1 anchor":`${a.anchors.length} anchors`;o.push(`<li class="has-anchors"><details>
|
|
20
|
+
<summary>
|
|
21
|
+
<a href="${u(a.url)}">${l(a.title||a.url)}</a>
|
|
22
|
+
<small>${S} · ${d(a.ts)}</small>
|
|
23
|
+
</summary>
|
|
24
|
+
<ul class="recently-visited-anchors">${g}</ul>
|
|
25
|
+
</details></li>`)}else o.push(`<li><a href="${u(a.url)}">${l(a.title||a.url)}</a><small>${d(a.ts)}</small></li>`);o.push("</ol>")}this.innerHTML=o.join(`
|
|
26
|
+
`),this.#h()}#h(){let e=this.querySelector("[data-recently-visited-clear]");e&&e.addEventListener("click",()=>{this.#c([]),this.#t(),this.dispatchEvent(new CustomEvent("recently-visited:clear",{bubbles:!0}))});let n=this.querySelector("[data-recently-visited-pause]");n&&n.addEventListener("click",()=>{this.#i(!this.#s()),this.#t(),this.dispatchEvent(new CustomEvent("recently-visited:pause-toggle",{bubbles:!0,detail:{paused:this.#s()}}))});let t=this.querySelector("[data-recently-visited-anchors]");t&&t.addEventListener("click",()=>{this.#o(!this.#r()),this.#t(),this.dispatchEvent(new CustomEvent("recently-visited:anchors-toggle",{bubbles:!0,detail:{showAnchors:this.#r()}}))})}};function l(s){return String(s??"").replace(/[&<>]/g,e=>({"&":"&","<":"<",">":">"})[e])}function u(s){return String(s??"").replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e])}function d(s){let e=Date.now()-s;return e<6e4?"just now":e<36e5?`${Math.floor(e/6e4)}m ago`:e<864e5?`${Math.floor(e/36e5)}h ago`:`${Math.floor(e/864e5)}d ago`}b("recently-visited",p);export{p as RecentlyVisited};
|
|
3
27
|
//# sourceMappingURL=recently-visited.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var d=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,i,s){e.addEventListener(t,i,s),this.#e.push(()=>e.removeEventListener(t,i,s))}setup(){}teardown(){}};var p=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function h(o,e,t={}){let i=t.priority??10,s={impl:e,bundle:t.bundle,contract:t.contract,priority:i},n=u.get(o);if(customElements.get(o)){if(!n||n.priority>=i){n&&n.priority===i&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${o}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=i){n.priority===i&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${n.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}u.set(o,s),customElements.define(o,e)}var f=8,l=8,a=class extends d{#e=null;#t=new Set;#n=!1;setup(){this.hidden=!0,this.#o(),this.listen(document,"pointerup",this.#s),this.listen(document,"pointerdown",this.#d),this.listen(document,"keydown",this.#l),this.id&&new MutationObserver(()=>this.#o()).observe(document.body,{childList:!0,subtree:!0,attributeFilter:["data-selection-menu"]})}getSelection(){return this.#e?{...this.#e}:null}dismiss(){this.#i()}#o(){this.#t.clear();let e=this.getAttribute("for");if(e){let t=document.getElementById(e);t&&(this.#t.add(t),t.hasAttribute("data-selection-menu")||t.setAttribute("data-selection-menu",this.id||""))}this.id&&document.querySelectorAll(`[data-selection-menu="${this.id}"]`).forEach(t=>{this.#t.add(t)})}#s=()=>{requestAnimationFrame(()=>{this.isConnected&&this.#r()})};#r(){let e=window.getSelection();if(!e||e.isCollapsed||!e.toString().trim())return;let t=e.getRangeAt(0),i=t.commonAncestorContainer,s=i.nodeType===Node.ELEMENT_NODE?i:i.parentElement,n=null;for(let c of this.#t)if(c.contains(s)){n=c;break}if(!n)return;let r=e.toString().trim();this.#e={range:t.cloneRange(),text:r,target:n},this.dispatchEvent(new CustomEvent("selection-menu:select",{detail:{range:this.#e.range,text:r,target:n},bubbles:!0})),this.#c(t.getBoundingClientRect())}#c(e){this.hidden=!1,this.#n=!0,requestAnimationFrame(()=>{let t=this.getBoundingClientRect(),i=t.width||200,s=t.height||40,n=e.top-s-f,r=e.left+e.width/2-i/2;n<l&&(n=e.bottom+f);let c=window.innerWidth-i-l;r=Math.max(l,Math.min(r,c)),this.style.top=`${n}px`,this.style.left=`${r}px`})}#i(){this.hidden=!0,this.#n=!1,this.#e=null,this.dispatchEvent(new CustomEvent("selection-menu:dismiss",{bubbles:!0}))}#d=e=>{this.#n&&(this.contains(e.target)||this.#i())};#l=e=>{e.key==="Escape"&&this.#n&&this.#i()}};h("selection-menu",a);
|
|
1
|
+
var d=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,i,s){e.addEventListener(t,i,s),this.#e.push(()=>e.removeEventListener(t,i,s))}setup(){}teardown(){}};var p=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function h(o,e,t={}){let i=t.priority??10,s={impl:e,bundle:t.bundle,contract:t.contract,priority:i},n=u.get(o);if(customElements.get(o)){if(!n||n.priority>=i){n&&n.priority===i&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${o}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=i){n.priority===i&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${n.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}u.set(o,s),customElements.define(o,e)}var f=8,l=8,a=class extends d{#e=null;#t=new Set;#n=!1;setup(){this.hidden=!0,this.#o(),this.listen(document,"pointerup",this.#s),this.listen(document,"pointerdown",this.#d),this.listen(document,"keydown",this.#l),this.id&&new MutationObserver(()=>this.#o()).observe(document.body,{childList:!0,subtree:!0,attributeFilter:["data-selection-menu"]})}getSelection(){return this.#e?{...this.#e}:null}dismiss(){this.#i()}#o(){this.#t.clear();let e=this.getAttribute("for");if(e){let t=document.getElementById(e);t&&(this.#t.add(t),t.hasAttribute("data-selection-menu")||t.setAttribute("data-selection-menu",this.id||""))}this.id&&document.querySelectorAll(`[data-selection-menu="${this.id}"]`).forEach(t=>{this.#t.add(t)})}#s=()=>{requestAnimationFrame(()=>{this.isConnected&&this.#r()})};#r(){let e=window.getSelection();if(!e||e.isCollapsed||!e.toString().trim())return;let t=e.getRangeAt(0),i=t.commonAncestorContainer,s=i.nodeType===Node.ELEMENT_NODE?i:i.parentElement,n=null;for(let c of this.#t)if(c.contains(s)){n=c;break}if(!n)return;let r=e.toString().trim();this.#e={range:t.cloneRange(),text:r,target:n},this.dispatchEvent(new CustomEvent("selection-menu:select",{detail:{range:this.#e.range,text:r,target:n},bubbles:!0})),this.#c(t.getBoundingClientRect())}#c(e){this.hidden=!1,this.#n=!0,requestAnimationFrame(()=>{let t=this.getBoundingClientRect(),i=t.width||200,s=t.height||40,n=e.top-s-f,r=e.left+e.width/2-i/2;n<l&&(n=e.bottom+f);let c=window.innerWidth-i-l;r=Math.max(l,Math.min(r,c)),this.style.top=`${n}px`,this.style.left=`${r}px`})}#i(){this.hidden=!0,this.#n=!1,this.#e=null,this.dispatchEvent(new CustomEvent("selection-menu:dismiss",{bubbles:!0}))}#d=e=>{this.#n&&(this.contains(e.target)||this.#i())};#l=e=>{e.key==="Escape"&&this.#n&&this.#i()}};h("selection-menu",a);
|
|
2
2
|
//# sourceMappingURL=selection-menu.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var at=window.matchMedia("(prefers-reduced-motion: reduce)");var q=new Map;function F(r,e,t={}){let o=t.priority??10,s={impl:e,bundle:t.bundle,contract:t.contract,priority:o},n=q.get(r);if(customElements.get(r)){if(!n||n.priority>=o){n&&n.priority===o&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${r}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=o){n.priority===o&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}q.set(r,s),customElements.define(r,e)}var v=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,o,s){e.addEventListener(t,o,s),this.#t.push(()=>e.removeEventListener(t,o,s))}setup(){}teardown(){}};function X(r,e,t){e/=100,t/=100;let o=i=>(i+r/30)%12,s=e*Math.min(t,1-t),n=i=>t-s*Math.max(-1,Math.min(o(i)-3,9-o(i),1));return{r:Math.round(n(0)*255),g:Math.round(n(8)*255),b:Math.round(n(4)*255)}}function G(r,e,t){r/=255,e/=255,t/=255;let o=Math.max(r,e,t),s=Math.min(r,e,t),n=(o+s)/2,i=0,l=0;if(o!==s){let a=o-s;switch(l=n>.5?a/(2-o-s):a/(o+s),o){case r:i=((e-t)/a+(e<t?6:0))/6;break;case e:i=((t-r)/a+2)/6;break;case t:i=((r-e)/a+4)/6;break}}return{h:Math.round(i*360),s:Math.round(l*100),l:Math.round(n*100)}}function S(r){r=r.replace(/^#/,""),r.length===3&&(r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);let e=parseInt(r,16);return{r:e>>16&255,g:e>>8&255,b:e&255}}function k(r,e,t){return"#"+[r,e,t].map(o=>Math.max(0,Math.min(255,Math.round(o))).toString(16).padStart(2,"0")).join("")}function N(r){let{r:e,g:t,b:o}=S(r);return G(e,t,o)}function c(r,e,t){let{r:o,g:s,b:n}=X(r,e,t);return k(o,s,n)}var E=r=>r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4),z=r=>r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055,
|
|
1
|
+
var at=window.matchMedia("(prefers-reduced-motion: reduce)");var q=new Map;function F(r,e,t={}){let o=t.priority??10,s={impl:e,bundle:t.bundle,contract:t.contract,priority:o},n=q.get(r);if(customElements.get(r)){if(!n||n.priority>=o){n&&n.priority===o&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${r}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=o){n.priority===o&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}q.set(r,s),customElements.define(r,e)}var v=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,o,s){e.addEventListener(t,o,s),this.#t.push(()=>e.removeEventListener(t,o,s))}setup(){}teardown(){}};function X(r,e,t){e/=100,t/=100;let o=i=>(i+r/30)%12,s=e*Math.min(t,1-t),n=i=>t-s*Math.max(-1,Math.min(o(i)-3,9-o(i),1));return{r:Math.round(n(0)*255),g:Math.round(n(8)*255),b:Math.round(n(4)*255)}}function G(r,e,t){r/=255,e/=255,t/=255;let o=Math.max(r,e,t),s=Math.min(r,e,t),n=(o+s)/2,i=0,l=0;if(o!==s){let a=o-s;switch(l=n>.5?a/(2-o-s):a/(o+s),o){case r:i=((e-t)/a+(e<t?6:0))/6;break;case e:i=((t-r)/a+2)/6;break;case t:i=((r-e)/a+4)/6;break}}return{h:Math.round(i*360),s:Math.round(l*100),l:Math.round(n*100)}}function S(r){r=r.replace(/^#/,""),r.length===3&&(r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);let e=parseInt(r,16);return{r:e>>16&255,g:e>>8&255,b:e&255}}function k(r,e,t){return"#"+[r,e,t].map(o=>Math.max(0,Math.min(255,Math.round(o))).toString(16).padStart(2,"0")).join("")}function N(r){let{r:e,g:t,b:o}=S(r);return G(e,t,o)}function c(r,e,t){let{r:o,g:s,b:n}=X(r,e,t);return k(o,s,n)}var E=r=>r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4),z=r=>r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055,C=r=>r<0?0:r>1?1:r;function h(r){let{r:e,g:t,b:o}=S(r),s=E(e/255),n=E(t/255),i=E(o/255),l=.4122214708*s+.5363325363*n+.0514459929*i,a=.2119034982*s+.6806995451*n+.1073969566*i,d=.0883024619*s+.2817188376*n+.6299787005*i,p=Math.cbrt(l),f=Math.cbrt(a),b=Math.cbrt(d),M=.2104542553*p+.793617785*f-.0040720468*b,g=1.9779984951*p-2.428592205*f+.4505937099*b,y=.0259040371*p+.7827717662*f-.808675766*b,T=Math.sqrt(g*g+y*y),x=Math.atan2(y,g)*180/Math.PI;return x<0&&(x+=360),{l:M,c:T,h:x}}function $(r,e,t){let o=t*Math.PI/180,s=e*Math.cos(o),n=e*Math.sin(o),i=r+.3963377774*s+.2158037573*n,l=r-.1055613458*s-.0638541728*n,a=r-.0894841775*s-1.291485548*n,d=i*i*i,p=l*l*l,f=a*a*a,b=4.0767416621*d-3.3077115913*p+.2309699292*f,M=-1.2684380046*d+2.6097574011*p-.3413193965*f,g=-.0041960863*d-.7034186147*p+1.707614701*f,y=C(z(b)),T=C(z(M)),x=C(z(g));return k(Math.round(y*255),Math.round(T*255),Math.round(x*255))}function B(r,e){if(!r)return null;let t=String(r).trim();if(/^#[0-9a-f]{6}$/i.test(t))return t.toLowerCase();if(/^#[0-9a-f]{3}$/i.test(t))return("#"+t.slice(1).split("").map(i=>i+i).join("")).toLowerCase();if(typeof document>"u")return null;let o=e||document.createElement("span");e||(o.style.display="none",document.body.appendChild(o)),o.style.color="",o.style.color=t;let s=getComputedStyle(o).color;e||o.remove();let n=s.match(/rgba?\(\s*([0-9.]+)[\s,]+([0-9.]+)[\s,]+([0-9.]+)/);return n?k(Math.round(+n[1]),Math.round(+n[2]),Math.round(+n[3])):null}function P({l:r,c:e,h:t}){return`oklch(${(r*100).toFixed(1)}% ${e.toFixed(3)} ${t.toFixed(1)})`}function A(r){let{r:e,g:t,b:o}=S(r),s=n=>{let i=n/255;return i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)};return .2126*s(e)+.7152*s(t)+.0722*s(o)}function _(r,e){let t=A(r),o=A(e),s=Math.max(t,o),n=Math.min(t,o);return(s+.05)/(n+.05)}function V(r){return r>=7?"AAA":r>=4.5?"AA":"Fail"}function L(r){return A(r)>.4?"#000000":"#ffffff"}var u=r=>(r%360+360)%360;function K(r,e,t){return{colors:[c(r,e,t),c(u(r+180),e,t)],names:["Base","Complement"]}}function Q(r,e,t){return{colors:[c(u(r-30),e,t),c(r,e,t),c(u(r+30),e,t)],names:["Analog A","Base","Analog B"]}}function Y(r,e,t){return{colors:[c(r,e,t),c(u(r+120),e,t),c(u(r+240),e,t)],names:["Base","Triad A","Triad B"]}}function Z(r,e,t){return{colors:[c(r,e,t),c(u(r+150),e,t),c(u(r+210),e,t)],names:["Base","Split A","Split B"]}}function tt(r,e,t){return{colors:[c(r,e,t),c(u(r+90),e,t),c(u(r+180),e,t),c(u(r+270),e,t)],names:["Base","Tetrad A","Tetrad B","Tetrad C"]}}var et=[{label:"50",l:96},{label:"100",l:90},{label:"200",l:80},{label:"300",l:70},{label:"400",l:60},{label:"500",l:50},{label:"600",l:40},{label:"700",l:30},{label:"800",l:22},{label:"900",l:15},{label:"950",l:10}];function rt(r,e,t){let o=[],s=[];for(let n of et){let i=n.l>85||n.l<20?Math.max(e*.6,5):e;o.push(c(r,Math.round(i),n.l)),s.push(n.label)}return{colors:o,names:s}}var D={complementary:K,analogous:Q,triadic:Y,"split-complementary":Z,tetradic:tt,monochromatic:rt};function I(r,e){let{h:t,s:o,l:s}=N(r);return(D[e]||D.complementary)(t,o,s)}var w=["primary","secondary","accent"],W=["success","warning","error","info"],ot=[...w,...W],U={primary:"Primary",secondary:"Secondary",accent:"Accent",success:"Success",warning:"Warning",error:"Error",info:"Info"},nt={aaa:{bg:"oklch(92% 0.08 145)",fg:"oklch(30% 0.12 145)"},aa:{bg:"oklch(94% 0.08 90)",fg:"oklch(35% 0.12 70)"},fail:{bg:"oklch(92% 0.08 25)",fg:"oklch(35% 0.15 25)"}},O="var(--font-mono, monospace)",R="var(--color-text-muted, #666)",H="var(--color-border, #ddd)",J="var(--color-surface, #fff)",st="var(--color-text, #222)",m="var(--radius-s, 0.25rem)",it="var(--radius-m, 0.5rem)",j=class extends v{static observedAttributes=["colors","roles","show-export","label"];#t=[];#o=[];#b=null;#l=null;#e=null;setup(){this.#e=document.createElement("span"),this.#e.style.cssText="position:absolute;visibility:hidden;pointer-events:none",this.append(this.#e),this.#b=this.querySelector("color-palette, palette-generator"),this.#d(),this.#s(),this.#u(),this.#a("init"),this.#v(),this.#p(),this.#c("init")}attributeChangedCallback(e){!this.isConnected||!this.hasAttribute("data-upgraded")||(e==="roles"&&this.#d(),e==="colors"&&this.#s(),this.#u(),this.#a("attribute"),this.#p(),this.#c("attribute"))}teardown(){this.#e?.remove(),this.#e=null}#s(){let e=this.querySelector("color-palette");if(e){if(typeof e.colors<"u"&&e.colors.length){this.#t=e.colors.slice();return}let n=(e.getAttribute("colors")||"").split(",").map(i=>i.trim()).filter(Boolean);if(n.length){this.#t=n;return}}let t=this.querySelector("palette-generator");if(t){let s=t.getAttribute("seed")||t.querySelector('input[type="color"]')?.value||"",n=t.getAttribute("harmony")||"complementary";if(s)try{let{colors:i}=I(s,n);this.#t=i.slice();return}catch{}}let o=this.getAttribute("colors")||"";this.#t=o.split(",").map(s=>s.trim()).filter(Boolean)}#d(){let t=(this.getAttribute("roles")||w.join(",")).split(",").map(o=>o.trim().toLowerCase()).filter(o=>ot.includes(o));this.#o=t.length?t:[...w]}#i(){let e={};for(let t=0;t<this.#o.length;t++)e[this.#o[t]]=this.#t[t]||this.#t[this.#t.length-1]||"#888888";return e}#u(){let e=this.querySelector(":scope > .sp-shell");e&&e.remove();let t=this.getAttribute("label"),o=this.hasAttribute("show-export"),s=document.createElement("div");if(s.className="sp-shell",s.style.cssText="display:flex;flex-direction:column;gap:var(--size-m,1rem);margin-block-start:var(--size-s,0.75rem)",t){let i=document.createElement("p");i.style.cssText="font-weight:600;margin:0",i.textContent=t,s.append(i)}let n=document.createElement("section");n.className="sp-previews",n.setAttribute("aria-label","Role previews"),n.style.cssText="display:grid;grid-template-columns:repeat(auto-fill,minmax(min(22rem,100%),1fr));gap:var(--size-m,1rem)",s.append(n),this.#l=n,o&&s.insertAdjacentHTML("beforeend",this.#$()),this.append(s)}#a(e){if(!this.#l)return;let t=this.#i();this.#l.innerHTML=this.#o.map(o=>this.#g(o,t[o])).join("")}#g(e,t){let o=U[e]||e,n=W.includes(e)?this.#x(e,t):this.#y(e,t),i=`display:flex;flex-direction:column;gap:var(--size-s,0.75rem);padding:var(--size-m,1rem);border:1px solid ${H};border-radius:${it};background:${J};min-inline-size:0`;return`<article class="sp-card" data-role="${e}" aria-label="${o} role preview" style="${i}">
|
|
2
2
|
<header style="display:flex;align-items:center;justify-content:space-between;gap:var(--size-s,0.75rem)">
|
|
3
3
|
<div>
|
|
4
4
|
<code style="font-family:${O};font-size:var(--font-size-sm,0.875rem);font-weight:600">${e}</code>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Ue=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var me=(t,e)=>{for(var a in e)Ue(t,a,{get:e[a],enumerable:!0})};var V={};me(V,{destroyStickyManager:()=>tt,initStickyManager:()=>et});function C(){let t=document.documentElement;if(!t.hasAttribute("data-sticky"))return;let e=document.querySelector("header");e&&!e.hasAttribute("data-sticky")&&(e.dataset.sticky="",Z=!0);let a=document.querySelector("header[data-sticky]"),s=a?a.getBoundingClientRect().height:0;t.style.setProperty("--sticky-offset",`${s}px`)}function Le(){C()}function et(){if(I)return;I=!0,C(),requestAnimationFrame(C),document.fonts?.ready?.then(C),window.addEventListener("resize",C,{passive:!0}),document.addEventListener("toggle",Le,!0),Q=new ResizeObserver(C);let t=document.querySelector("header[data-sticky]");t&&Q.observe(t)}function tt(){if(I){if(I=!1,window.removeEventListener("resize",C),document.removeEventListener("toggle",Le,!0),Q?.disconnect(),Z){let t=document.querySelector("header[data-sticky]");t&&delete t.dataset.sticky,Z=!1}document.documentElement.style.removeProperty("--sticky-offset")}}var I,Q,Z,G=ge(()=>{I=!1,Z=!1});var Re={};me(Re,{SoundManager:()=>at});var qe,ee,at,He=ge(()=>{qe="vb-sound",ee={enabled:!1,volume:.5},at={_ctx:null,_enabled:!1,_volume:.5,_initialized:!1,init(){if(this._initialized)return this;let t=this._load();return this._enabled=t.enabled,this._volume=t.volume,this._initialized=!0,this},_getContext(){return this._ctx||(this._ctx=new(window.AudioContext||window.webkitAudioContext)),this._ctx.state==="suspended"&&this._ctx.resume(),this._ctx},_load(){try{let t=localStorage.getItem(qe);return t?{...ee,...JSON.parse(t)}:{...ee}}catch{return{...ee}}},_save(t){try{let e=this._load();localStorage.setItem(qe,JSON.stringify({...e,...t}))}catch{}},_playTone(t,e,a="sine"){if(!this._enabled)return;let s=this._getContext(),r=s.createOscillator(),n=s.createGain();r.connect(n),n.connect(s.destination),r.frequency.value=t,r.type=a,n.gain.value=this._volume*.3,r.start(),n.gain.exponentialRampToValueAtTime(.01,s.currentTime+e),r.stop(s.currentTime+e)},enable(){this._enabled=!0,this._save({enabled:!0}),this.play("click")},disable(){this._enabled=!1,this._save({enabled:!1})},toggle(){return this._enabled?this.disable():this.enable(),this._enabled},isEnabled(){return this._enabled},setVolume(t){this._volume=Math.max(0,Math.min(1,t)),this._save({volume:this._volume})},getVolume(){return this._volume},play(t){if(this._enabled)switch(t){case"click":this._playTone(800,.1);break;case"success":this._playTone(523,.1),setTimeout(()=>this._playTone(659,.1),100),setTimeout(()=>this._playTone(784,.15),200);break;case"error":this._playTone(200,.15,"sawtooth"),setTimeout(()=>this._playTone(180,.2,"sawtooth"),150);break;case"notification":this._playTone(880,.1),setTimeout(()=>this._playTone(1100,.15),100);break;case"soft":this._playTone(600,.05);break;case"tick":this._playTone(1200,.02,"square");break}},getState(){return{enabled:this._enabled,volume:this._volume}}}});var rt=window.matchMedia("(prefers-reduced-motion: reduce)");var pe=new Map;function ye(t,e,a={}){let s=a.priority??10,r={impl:e,bundle:a.bundle,contract:a.contract,priority:s},n=pe.get(t);if(customElements.get(t)){if(!n||n.priority>=s){n&&n.priority===s&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=s){n.priority===s&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${n.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}pe.set(t,r),customElements.define(t,e)}var L=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,a,s,r){e.addEventListener(a,s,r),this.#t.push(()=>e.removeEventListener(a,s,r))}setup(){}teardown(){}};var _=new Map,W=new Map;var fe=null;function be(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(fe)return fe;if(typeof document<"u"){let t=document.querySelectorAll('script[src*="vanilla-breeze"]');for(let e of t){let a=e.getAttribute("src");if(a){let s=a.lastIndexOf("/");if(s!==-1)return a.slice(0,s)}}}return"/cdn"}var We=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),je=new Set(["kawaii","memphis"]);function j(t){return je.has(t)}function ze(t,e){return`${e}/themes/${t}.css`}function we(t,e){if(!j(t))return Promise.resolve();if(W.has(t))return W.get(t);let a=import(`${e}/packs/${t}.full.js`).catch(()=>{});return W.set(t,a),a}function Ne(t,e){let a=be(),s=()=>{(j(e)||t.hasAttribute("data-vb-pack"))&&we(e,a)};return t.getAttribute("data-vb-theme-state")==="error"?Promise.reject(new Error(`Failed to load theme: ${e}`)):t.getAttribute("data-vb-theme-state")==="ready"||t.sheet?(s(),Promise.resolve()):new Promise((r,n)=>{let i=()=>{t.setAttribute("data-vb-theme-state","ready"),h(),s(),r()},c=()=>{t.setAttribute("data-vb-theme-state","error"),_.delete(e),h(),n(new Error(`Failed to load theme: ${e}`))},h=()=>{t.removeEventListener("load",i),t.removeEventListener("error",c)};t.addEventListener("load",i,{once:!0}),t.addEventListener("error",c,{once:!0})})}async function q(t){if(!t||We.has(t))return;if(_.has(t))return _.get(t);if(typeof document<"u"){let s=document.querySelector(`link[data-vb-theme="${t}"]`);if(s){let r=Ne(s,t);return _.set(t,r),r}}let e=be(),a=j(t)?Xe(t,e):Ke(t,e);return _.set(t,a),a}async function Ke(t,e){let a=ze(t,e);return new Promise((s,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${t}"]`);n&&n.remove();let i=document.createElement("link");i.rel="stylesheet",i.href=a,i.setAttribute("data-vb-theme",t),i.setAttribute("data-vb-theme-state","loading"),i.onload=()=>{i.setAttribute("data-vb-theme-state","ready"),s()},i.onerror=()=>{i.setAttribute("data-vb-theme-state","error"),i.remove(),_.delete(t),r(new Error(`Failed to load theme: ${t}`))},document.head.appendChild(i)})}function Xe(t,e){let a=`${e}/packs/${t}.theme.css`,s=`${e}/packs/${t}.effects.css`;return new Promise((r,n)=>{let i=document.querySelector(`link[data-vb-theme-preload="${t}"]`);i&&i.remove();let c=document.createElement("link");c.rel="stylesheet",c.href=a,c.setAttribute("data-vb-theme",t),c.setAttribute("data-vb-pack",t),c.setAttribute("data-vb-theme-state","loading"),c.onload=()=>{c.setAttribute("data-vb-theme-state","ready");let h=document.createElement("link");h.rel="stylesheet",h.href=s,h.setAttribute("data-vb-pack-effects",t),document.head.appendChild(h),we(t,e),r()},c.onerror=()=>{c.setAttribute("data-vb-theme-state","error"),c.remove(),_.delete(t),n(new Error(`Failed to load pack: ${t}`))},document.head.appendChild(c)})}var ve=[{id:"default",name:"Default",swatchBg:"#3b82f6",seeds:{}},{id:"ocean",name:"Ocean",swatchBg:"#0891b2",seeds:{"--hue-primary":200,"--hue-secondary":180,"--hue-accent":45,"--lightness-primary":"50%","--chroma-primary":.15,"--lightness-secondary":"45%","--chroma-secondary":.1,"--lightness-accent":"70%","--chroma-accent":.15},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.12}},{id:"forest",name:"Forest",swatchBg:"#059669",seeds:{"--hue-primary":145,"--hue-secondary":90,"--hue-accent":30,"--lightness-primary":"45%","--chroma-primary":.15,"--lightness-secondary":"55%","--chroma-secondary":.12,"--lightness-accent":"65%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"55%","--chroma-primary":.12}},{id:"sunset",name:"Sunset",swatchBg:"#ea580c",seeds:{"--hue-primary":25,"--hue-secondary":0,"--hue-accent":280,"--lightness-primary":"60%","--chroma-primary":.2,"--lightness-secondary":"55%","--chroma-secondary":.18,"--lightness-accent":"55%","--chroma-accent":.18},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.16}},{id:"rose",name:"Rose",swatchBg:"#e11d48",seeds:{"--hue-primary":350,"--hue-secondary":330,"--hue-accent":200,"--lightness-primary":"55%","--chroma-primary":.18,"--lightness-secondary":"50%","--chroma-secondary":.14,"--lightness-accent":"60%","--chroma-accent":.12},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.14}},{id:"lavender",name:"Lavender",swatchBg:"#a855f7",seeds:{"--hue-primary":280,"--hue-secondary":300,"--hue-accent":60,"--lightness-primary":"55%","--chroma-primary":.14,"--lightness-secondary":"50%","--chroma-secondary":.12,"--lightness-accent":"70%","--chroma-accent":.14},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.12}},{id:"coral",name:"Coral",swatchBg:"#f97316",seeds:{"--hue-primary":15,"--hue-secondary":25,"--hue-accent":180,"--lightness-primary":"60%","--chroma-primary":.18,"--lightness-secondary":"55%","--chroma-secondary":.15,"--lightness-accent":"55%","--chroma-accent":.12},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.15}},{id:"slate",name:"Slate",swatchBg:"#64748b",seeds:{"--hue-primary":220,"--hue-secondary":210,"--hue-accent":45,"--lightness-primary":"48%","--chroma-primary":.1,"--lightness-secondary":"45%","--chroma-secondary":.06,"--lightness-accent":"68%","--chroma-accent":.15},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.08}},{id:"emerald",name:"Emerald",swatchBg:"#10b981",seeds:{"--hue-primary":160,"--hue-secondary":140,"--hue-accent":30,"--lightness-primary":"50%","--chroma-primary":.15,"--lightness-secondary":"48%","--chroma-secondary":.12,"--lightness-accent":"65%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.12}},{id:"amber",name:"Amber",swatchBg:"#f59e0b",seeds:{"--hue-primary":45,"--hue-secondary":30,"--hue-accent":240,"--lightness-primary":"60%","--chroma-primary":.16,"--lightness-secondary":"55%","--chroma-secondary":.15,"--lightness-accent":"52%","--chroma-accent":.14},seedsDark:{"--lightness-primary":"68%","--chroma-primary":.14}},{id:"indigo",name:"Indigo",swatchBg:"#6366f1",seeds:{"--hue-primary":250,"--hue-secondary":270,"--hue-accent":35,"--lightness-primary":"48%","--chroma-primary":.18,"--lightness-secondary":"45%","--chroma-secondary":.14,"--lightness-accent":"68%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"62%","--chroma-primary":.14}}],Se=[{id:"default",name:"Default",hue:210,shape:"balanced",character:"The default",swatchBg:"#3b82f6",tier:"core"},{id:"modern",name:"Modern",hue:270,shape:"rounded",character:"Vibrant & elevated",swatchBg:"#6366f1",tier:"core"},{id:"minimal",name:"Minimal",hue:240,shape:"sharp",character:"Clean & flat",swatchBg:"#71717a",tier:"core"},{id:"classic",name:"Classic",hue:220,shape:"subtle",character:"Serif & elegant",swatchBg:"#92400e",tier:"core"}],z=[{id:"swiss",name:"Swiss",icon:"grid-3x3",character:"Precision grid",swatchBg:"#ff3e00",swatchFg:"white",tier:"showcase",category:"Design"},{id:"brutalist",name:"Brutalist",icon:"square",character:"Raw, industrial",swatchBg:"#1a1a1a",swatchFg:"#f5f5f5",tier:"showcase",category:"Design"},{id:"art-deco",name:"Art Deco",icon:"crown",character:"1920s luxury",swatchBg:"#1A1A1A",swatchFg:"#C9A84C",tier:"showcase",category:"Design"},{id:"editorial",name:"Editorial",icon:"newspaper",character:"Magazine elegance",swatchBg:"#1a1a1a",swatchFg:"#c9a227",tier:"showcase",category:"Content"},{id:"genai",name:"GenAI",icon:"sparkles",character:"AI aesthetic",swatchBg:"#1a0a2e",swatchFg:"#a855f7",tier:"showcase",category:"Modern"},{id:"glassmorphism",name:"Glass",icon:"glass-water",character:"Frosted surfaces",swatchBg:"#667eea",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"startup",name:"Startup",icon:"rocket",character:"SaaS energy",swatchBg:"#4f46e5",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"organic",name:"Organic",icon:"leaf",character:"Natural, handcrafted",swatchBg:"#2d5016",swatchFg:"#faf5e6",tier:"showcase",category:"Creative"},{id:"rough",name:"Rough",icon:"pencil",character:"Hand-drawn sketch",swatchBg:"#f5f0e8",swatchFg:"#3a3a3a",tier:"showcase",category:"Creative"},{id:"cyber",name:"Cyber",icon:"zap",character:"Neon futuristic",swatchBg:"#0a0a1a",swatchFg:"#00ff88",tier:"showcase",category:"Creative"},{id:"vaporwave",name:"Vaporwave",icon:"radio",character:"Neon dreamy",swatchBg:"#2b0040",swatchFg:"#ff6ad5",tier:"showcase",category:"Aesthetic"},{id:"neumorphism",name:"Neumorph",icon:"circle",character:"Soft embossed",swatchBg:"#e0e0e0",swatchFg:"#a0a0a0",tier:"showcase",category:"Aesthetic"},{id:"bauhaus",name:"Bauhaus",icon:"shapes",character:"Geometric",swatchBg:"#F1FAEE",swatchFg:"#E63946",tier:"showcase",category:"Aesthetic"},{id:"claymorphism",name:"Clay",icon:"circle-dot",character:"Puffy 3D",swatchBg:"#f0f0f5",swatchFg:"#FF6B9D",tier:"showcase",category:"Aesthetic"},{id:"alpha1999",name:"Alpha1999",icon:"orbit",character:"Space retro-fi",swatchBg:"#0a0a14",swatchFg:"#d4880f",tier:"showcase",category:"Signature"},{id:"super2026",name:"Super2026",icon:"triangle",character:"Supergraphic bold",swatchBg:"#f5f0e6",swatchFg:"#c23616",tier:"showcase",category:"Signature"},{id:"magna",name:"Magna",icon:"orbit",character:"Odyssey 2 retro",swatchBg:"#0d0b14",swatchFg:"#f97316",tier:"showcase",category:"Signature"},{id:"win9x",name:"Win9x",icon:"monitor",character:"Classic desktop",swatchBg:"#008080",swatchFg:"#c0c0c0",tier:"showcase",category:"OS Styles"},{id:"nes",name:"NES",icon:"joystick",character:"Console pixels",swatchBg:"#bcbcbc",swatchFg:"#e40521",tier:"showcase",category:"OS Styles"},{id:"8bit",name:"8-Bit",icon:"gamepad-2",character:"Retro pixel art",swatchBg:"#000080",swatchFg:"#ffff00",tier:"showcase",category:"OS Styles"}],N=[{id:"nord",name:"Nord",icon:"snowflake",character:"Arctic calm",swatchBg:"#2E3440",swatchFg:"#81A1C1",tier:"community",category:"Editor Palettes"},{id:"solarized",name:"Solarized",icon:"sun-dim",character:"Engineered precision",swatchBg:"#002B36",swatchFg:"#268BD2",tier:"community",category:"Editor Palettes"},{id:"dracula",name:"Dracula",icon:"moon-star",character:"Dark elegance",swatchBg:"#282A36",swatchFg:"#BD93F9",tier:"community",category:"Editor Palettes"},{id:"catppuccin-mocha",name:"Catppuccin",icon:"coffee",character:"Warm pastels",swatchBg:"#1E1E2E",swatchFg:"#CBA6F7",tier:"community",category:"Editor Palettes"},{id:"catppuccin-latte",name:"Ctp Latte",icon:"coffee",character:"Cozy daytime",swatchBg:"#eff1f5",swatchFg:"#8839ef",tier:"community",category:"Editor Palettes"},{id:"catppuccin-frappe",name:"Ctp Frapp\xE9",icon:"coffee",character:"Cool twilight",swatchBg:"#303446",swatchFg:"#ca9ee6",tier:"community",category:"Editor Palettes"},{id:"catppuccin-macchiato",name:"Ctp Macchiato",icon:"coffee",character:"Deep blue",swatchBg:"#24273a",swatchFg:"#c6a0f6",tier:"community",category:"Editor Palettes"},{id:"gruvbox",name:"Gruvbox",icon:"palette",character:"Retro warmth",swatchBg:"#282828",swatchFg:"#ebdbb2",tier:"community",category:"Editor Palettes"},{id:"tokyo-night",name:"Tokyo Night",icon:"moon",character:"Night-owl vibes",swatchBg:"#1a1b26",swatchFg:"#7aa2f7",tier:"community",category:"Editor Palettes"},{id:"rose-pine",name:"Ros\xE9 Pine",icon:"flower-2",character:"Muted elegance",swatchBg:"#191724",swatchFg:"#ebbcba",tier:"community",category:"Editor Palettes"},{id:"cottagecore",name:"Cottagecore",icon:"flower-2",character:"Pastoral",swatchBg:"#fdf8f0",swatchFg:"#7d8c6d",tier:"community",category:"Niche"},{id:"terminal",name:"Terminal",icon:"terminal",character:"Retro CRT",swatchBg:"#0d1117",swatchFg:"#00ff00",tier:"community",category:"Niche"},{id:"clinical",name:"Clinical",icon:"heart-pulse",character:"Sterile precision",swatchBg:"#ffffff",swatchFg:"#0077b6",tier:"community",category:"Industry"},{id:"financial",name:"Financial",icon:"landmark",character:"Navy + gold",swatchBg:"#1b2a4a",swatchFg:"#c9a84c",tier:"community",category:"Industry"},{id:"government",name:"Government",icon:"shield",character:"Official",swatchBg:"#002868",swatchFg:"#bf0a30",tier:"community",category:"Industry"},{id:"dawn",name:"Dawn",icon:"sunrise",character:"Golden morning",swatchBg:"#fef3e2",swatchFg:"#d4a574",tier:"community",category:"Mood/Time"},{id:"dusk",name:"Dusk",icon:"sunset",character:"Twilight",swatchBg:"#1a1b2e",swatchFg:"#e5a858",tier:"community",category:"Mood/Time"},{id:"midnight",name:"Midnight",icon:"moon",character:"Deep night",swatchBg:"#0d1117",swatchFg:"#58a6ff",tier:"community",category:"Mood/Time"},{id:"high-noon",name:"High Noon",icon:"sun",character:"Maximum bright",swatchBg:"#ffffff",swatchFg:"#e63946",tier:"community",category:"Mood/Time"}],ke=[{id:"kawaii",name:"Kawaii",icon:"heart",character:"Cute aesthetic",swatchBg:"#ffb7c5",swatchFg:"#ff69b4",tier:"showcase",category:"Packs"},{id:"memphis",name:"Memphis",icon:"star",character:"Bold patterns",swatchBg:"#FFF8F0",swatchFg:"#d03040",tier:"showcase",category:"Packs"}];var ct=[...z,...N],dt=[...Se,...z,...N,...ke],x=t=>z.filter(e=>e.category===t),Ee=[{label:"Style",themes:Se,tier:"core"},{label:"Design",themes:x("Design"),tier:"showcase"},{label:"Content",themes:x("Content"),tier:"showcase"},{label:"Modern",themes:x("Modern"),tier:"showcase"},{label:"Creative",themes:x("Creative"),tier:"showcase"},{label:"Aesthetic",themes:x("Aesthetic"),tier:"showcase"},{label:"Signature",themes:x("Signature"),tier:"showcase"},{label:"OS Styles",themes:x("OS Styles"),tier:"showcase"},{label:"Packs",themes:ke,tier:"showcase"},{label:"More Themes",themes:N,tier:"community"}];function Ye(){let t=globalThis.localStorage;if(!t)throw new Error("VBStore: localStorage is not available in this environment");return{async getRaw(e){return t.getItem(e)},async setRaw(e,a){t.setItem(e,a)},async removeRaw(e){t.removeItem(e)},async keys(e){let a=[];for(let s=0;s<t.length;s++){let r=t.key(s);r&&r.startsWith(e)&&a.push(r)}return a}}}var R=null;function w(){return R||(R=Ye()),R}function K(t,e){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");if(typeof e!="string"||!e)throw new TypeError("VBStore: key must be a non-empty string");return`vb:${t}:${e}`}function _e(t){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");return`vb:${t}:`}function xe(t){try{let e=JSON.parse(t);if(e&&typeof e=="object"&&typeof e.timestamp=="number")return e}catch{}return null}var u={configure(t={}){R=t.backend??null},async set(t,e,a){let s={data:a,timestamp:Date.now()};await w().setRaw(K(t,e),JSON.stringify(s))},async get(t,e,a){let s=await w().getRaw(K(t,e));if(s==null)return null;let r=xe(s);return!r||a?.maxAge!=null&&Date.now()-r.timestamp>a.maxAge?null:r.data},async remove(t,e){await w().removeRaw(K(t,e))},async list(t){let e=_e(t),a=await w().keys(e),s=[];for(let r of a){let n=await w().getRaw(r);if(n==null)continue;let i=xe(n);i&&s.push({key:r.slice(e.length),data:i.data,timestamp:i.timestamp})}return s},async clear(t){let e=_e(t),a=await w().keys(e);for(let s of a)await w().removeRaw(s)},async clearAll(){let t=await w().keys("vb:");for(let e of t)await w().removeRaw(e)},async setMany(t,e){for(let[a,s]of e)await u.set(t,a,s)}};var X="theme",Y="current",P={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""},Be=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],g=null,l={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let t=await u.get(X,Y);g=t?{...P,...t}:{...P};try{await q(g.brand)}catch{g.brand="default"}return this.apply(g),this._watchSystemPreference(),this._watchRootAttributes(),g})(),this._initPromise)},load(){return g?{...g}:{...P}},save(t){let e={...g??P,...t};return g=e,u.set(X,Y,e).catch(()=>{}),e},apply({mode:t="auto",brand:e="default",borderStyle:a="",iconSet:s="",fluid:r="",backdrop:n="",backdropChrome:i="",pageBgType:c="",pageBgColor:h="",pageBgGradStart:y="",pageBgGradEnd:p="",pageBgGradDir:f=""}={}){let d=document.documentElement;d.dataset.mode=t==="auto"?this.getEffectiveMode():t;let A=(d.dataset.theme||"").split(" ").filter(M=>M.startsWith("a11y-")),m=e!=="default"?[e,...A]:[...A];m.length?d.dataset.theme=m.join(" "):delete d.dataset.theme;let v=a||this._readCSSHint("--theme-border-style");v&&v!=="clean"?d.dataset.borderStyle=v:delete d.dataset.borderStyle;let o=s||this._readCSSHint("--theme-icon-set");if(o&&o!=="lucide"?d.dataset.iconSet=o:delete d.dataset.iconSet,r?d.dataset.fluid=r:delete d.dataset.fluid,n?d.dataset.backdrop=n:delete d.dataset.backdrop,i&&i!=="card"?d.dataset.backdropChrome=i:delete d.dataset.backdropChrome,c==="color"&&h)d.style.setProperty("--page-bg-color",h),d.style.removeProperty("--page-bg-gradient");else if(c==="gradient"&&y&&p){let M=f||"to bottom";d.style.setProperty("--page-bg-gradient",`linear-gradient(${M}, ${y}, ${p})`),d.style.removeProperty("--page-bg-color")}else d.style.removeProperty("--page-bg-color"),d.style.removeProperty("--page-bg-gradient");let b=this.load().accent||"default";this._applyAccent(b),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:t,brand:e,accent:b,borderStyle:v,iconSet:o,fluid:r,backdrop:n,backdropChrome:i,pageBgType:c,effectiveMode:this.getEffectiveMode()}}))},setMode(t){let e=this.save({mode:t});this.apply(e)},async setBrand(t){try{await q(t)}catch(a){console.warn(`[VB] Theme "${t}" failed to load, using default`,a),t="default"}let e=this.save({brand:t});this.apply(e)},setAccent(t){this.save({accent:t}),this._applyAccent(t),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}}))},setBorderStyle(t){let e=this.save({borderStyle:t});this.apply(e)},setIconSet(t){let e=this.save({iconSet:t});this.apply(e)},setFluid(t){let e=this.save({fluid:t});this.apply(e)},setBackdrop(t){let e=this.save({backdrop:t});this.apply(e)},setBackdropChrome(t){let e=this.save({backdropChrome:t});this.apply(e)},setPageBg({type:t="",color:e="",gradStart:a="",gradEnd:s="",gradDir:r=""}={}){let n=this.save({pageBgType:t,pageBgColor:e,pageBgGradStart:a,pageBgGradEnd:s,pageBgGradDir:r});this.apply(n)},getEffectiveMode(){let{mode:t}=this.load();return t!=="auto"?t:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},getState(){let{mode:t,brand:e,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:c,pageBgType:h,pageBgColor:y,pageBgGradStart:p,pageBgGradEnd:f,pageBgGradDir:d}=this.load();return{mode:t,brand:e,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:c,pageBgType:h,pageBgColor:y,pageBgGradStart:p,pageBgGradEnd:f,pageBgGradDir:d,effectiveMode:this.getEffectiveMode()}},toggleMode(){let e=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(e)},reset(){g={...P},u.remove(X,Y).catch(()=>{});let t=document.documentElement;t.style.removeProperty("--page-bg-color"),t.style.removeProperty("--page-bg-gradient");for(let e of Be)t.style.removeProperty(e);this.apply(P)},_readCSSHint(t){return getComputedStyle(document.documentElement).getPropertyValue(t).trim()},_applyAccent(t){let e=document.documentElement,a=ve.find(s=>s.id===t);for(let s of Be)e.style.removeProperty(s);if(!(!a||!a.seeds||Object.keys(a.seeds).length===0)){for(let[s,r]of Object.entries(a.seeds))e.style.setProperty(s,String(r));if(a.seedsDark&&this.getEffectiveMode()==="dark")for(let[s,r]of Object.entries(a.seedsDark))e.style.setProperty(s,String(r))}},_watchRootAttributes(){this._rootObserver||(this._rootObserver=new MutationObserver(t=>{for(let e of t)e.attributeName==="data-theme"?this._syncFromDataTheme():e.attributeName==="data-mode"&&this._syncFromDataMode()}),this._rootObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","data-mode"]}))},_syncFromDataTheme(){if(!g)return;let a=(document.documentElement.dataset.theme||"").split(/\s+/).filter(Boolean).find(s=>!s.startsWith("a11y-"))||"default";a!==g.brand&&(g.brand=a,q(a).catch(()=>{}),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_syncFromDataMode(){if(!g)return;let t=document.documentElement.dataset.mode||"auto",e=g.mode==="auto"?this.getEffectiveMode():g.mode;t!==e&&(g.mode=t,window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_watchSystemPreference(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{let e=this.load();e.mode==="auto"&&this.apply(e)})}};var Ce="environment",Te="preferences",J={timeOfDay:!1,seasonal:!1},Je=900*1e3,k={...J};function B(t,e,a){return t+(e-t)*Math.min(1,Math.max(0,a))}var O={_timer:null,_baseHues:null,_timeOverride:null,_monthOverride:null,async init(){let t=await u.get(Ce,Te);k=t?{...J,...t}:{...J},(k.timeOfDay||k.seasonal)&&(this._captureBaseHues(),this._update(),this._startLoop()),window.addEventListener("vb:theme-change",()=>{this._hasActiveSource()&&requestAnimationFrame(()=>{this._captureBaseHues(),this._update()})})},load(){return{...k}},save(t){return k={...k,...t},u.set(Ce,Te,k).catch(()=>{}),{...k}},setTimeOverride(t){this._timeOverride=t,this._hasActiveSource()&&this._update()},setMonthOverride(t){this._monthOverride=t,this._hasActiveSource()&&this._update()},setSource(t,e){let a=this.save({[t]:e});e?(this._captureBaseHues(),this._update(),this._startLoop()):this._hasActiveSource(a)?this._update():(this._clearModifiers(),this._stopLoop())},_hasActiveSource(t){let e=t||this.load();return e.timeOfDay||e.seasonal},_captureBaseHues(){let t=document.documentElement;t.style.removeProperty("--hue-primary"),t.style.removeProperty("--hue-secondary"),t.style.removeProperty("--hue-accent");let e=t.getAttribute("data-theme");if(e){let a=`[data-theme~="${e}"]`;for(let s of document.styleSheets)try{for(let r=0;r<s.cssRules.length;r++){let n=s.cssRules[r];if(n.selectorText?.includes(a)&&!n.selectorText.includes("dark")){let i=n.style?.getPropertyValue("--hue-primary");if(i){this._baseHues={primary:parseFloat(i)||260,secondary:parseFloat(n.style.getPropertyValue("--hue-secondary"))||200,accent:parseFloat(n.style.getPropertyValue("--hue-accent"))||30};return}}}}catch{}}this._baseHues={primary:260,secondary:200,accent:30}},_update(){let t=this.load(),e=0;t.timeOfDay&&(e+=this._getTimeOfDayOffset()),t.seasonal&&(e+=this._getSeasonalOffset());let a=document.documentElement;e!==0&&this._baseHues?(a.style.setProperty("--hue-primary",String(this._baseHues.primary+e)),a.style.setProperty("--hue-secondary",String(this._baseHues.secondary+e)),a.style.setProperty("--hue-accent",String(this._baseHues.accent+e*.5))):e===0&&this._clearModifiers()},_clearModifiers(){let t=document.documentElement;t.style.removeProperty("--hue-primary"),t.style.removeProperty("--hue-secondary"),t.style.removeProperty("--hue-accent")},_getTimeOfDayOffset(){let t=this._timeOverride??new Date().getHours()+new Date().getMinutes()/60;return t<5?-20:t<7?B(-20,20,(t-5)/2):t<10?B(20,5,(t-7)/3):t<14?B(5,0,(t-10)/4):t<17?B(0,-5,(t-14)/3):t<19?B(-5,15,(t-17)/2):t<21?B(15,-10,(t-19)/2):B(-10,-20,(t-21)/8)},_getHemisphere(){return window.__VB_ENV_LOCATION?.hemisphere||"north"},_getSeasonalOffset(){let t=this._monthOverride??new Date().getMonth(),a=this._getHemisphere()==="south"?(t+6)%12:t;return a>=2&&a<=4?5:a>=5&&a<=7?10:a>=8&&a<=10?-5:-10},_startLoop(){this._timer||(this._timer=setInterval(()=>this._update(),Je))},_stopLoop(){this._timer&&clearInterval(this._timer),this._timer=null}};var H=null;function Me(){return"0.1.2-9bbc11a4"}function Qe(){let t=document.querySelectorAll('script[src*="vanilla-breeze"]'),e="/cdn/sw.js";for(let a of t){let s=a.getAttribute("src");if(s){let r=s.lastIndexOf("/");if(r!==-1){e=s.slice(0,r)+"/sw.js";break}}}return e}function Pe(){return H||(H=navigator.serviceWorker?.ready??Promise.reject(new Error("SW not supported"))),H}function Fe(t){return new Promise((e,a)=>{navigator.serviceWorker?.controller?Ae(navigator.serviceWorker.controller,t,e,a):Pe().then(s=>{let r=s.active||s.waiting||s.installing;r?Ae(r,t,e,a):a(new Error("No active service worker"))}).catch(a)})}function Ae(t,e,a,s){let r=new MessageChannel;r.port1.onmessage=n=>a(n.data),r.port1.onmessageerror=()=>s(new Error("Message error")),t.postMessage({type:e},[r.port2]),setTimeout(()=>s(new Error("SW message timeout")),5e3)}async function $e(){return Fe("GET_STATUS")}async function Oe(){return Fe("CLEAR_CACHE")}async function De(){let t=await Pe();return await t.update(),{updated:!!t.waiting}}function Ze(){return typeof window>"u"||!("serviceWorker"in navigator)?!1:window.__VB_SERVICE_WORKER?!0:document.querySelector('meta[name="vb-service-worker"]')?.content==="true"}if(Ze()){let t=Qe();window.addEventListener("load",()=>{H=navigator.serviceWorker.register(t).catch(e=>{console.warn("[VB] Service worker registration failed:",e)})})}var F=null,E="settings",U={motionFx:!0,sounds:!1},te=class extends L{#t=null;#e=null;#a=!1;#r=[];#s={...U};#n=!1;async setup(){await this.#A(),this.#M(),this.#F(),this.#o(),this.listen(window,"vb:theme-change",this.#g),this.listen(window,"vb:extensions-change",this.#g),this.listen(window,"vb:a11y-themes-change",this.#g)}teardown(){}async#A(){let[e,a,s]=await Promise.all([u.get(E,"a11y"),u.get(E,"extensions"),u.get(E,"sticky")]);this.#r=Array.isArray(e)?e:[],this.#s={...U,...a??{}},this.#n=s==="on"}#b(e){return e!==""&&e!==void 0}#d(e){return e==="compact"?"compact":e==="spacious"?"spacious":"default"}#w(e,a){return e?a==="compact"?"compact":a==="spacious"?"spacious":"default":""}#v(){return this.#n}#S(e){return e!==""&&e!==void 0}#l(e){return e==="flush"?"flush":e==="elevated"?"elevated":"default"}#k(e,a){return e?a==="flush"?"flush":a==="elevated"?"elevated":"default":""}#h(e){if(!e)return"card";let a=e.split(/\s+/);for(let s of a)if(s==="stretch"||s==="integrated")return s;return"card"}#u(e){return e?e.split(/\s+/).includes("fixed"):!1}#E(e,a){let s=[];return e&&e!=="card"&&s.push(e),a&&s.push("fixed"),s.join(" ")||"card"}#M(){this.#t=this.querySelector(":scope > [data-trigger]")||this.querySelector(":scope > button"),this.#t||(this.#t=document.createElement("button"),this.#t.setAttribute("data-trigger",""),this.#t.setAttribute("aria-label","Site settings"),this.#t.className="settings-trigger",this.#t.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>',this.prepend(this.#t)),this.#t.setAttribute("aria-haspopup","dialog"),this.#t.setAttribute("aria-expanded","false"),this.#e=document.createElement("div"),this.#e.className="settings-panel",this.#e.setAttribute("role","dialog"),this.#e.setAttribute("aria-label","Site settings");let e=`settings-panel-${crypto.randomUUID().slice(0,8)}`;this.#e.id=e,this.#t.setAttribute("aria-controls",e),this.#e.innerHTML=this.#P(),this.appendChild(this.#e)}#P(){let{mode:e,brand:a,fluid:s,backdrop:r,backdropChrome:n,pageBgType:i,pageBgColor:c,pageBgGradStart:h,pageBgGradEnd:y,pageBgGradDir:p}=l.getState(),f=this.#c(),d=this.#f(),T=this.#b(s),A=this.#d(s),m=this.#S(r),v=this.#l(r);return`
|
|
1
|
+
var Ue=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var me=(t,e)=>{for(var a in e)Ue(t,a,{get:e[a],enumerable:!0})};var V={};me(V,{destroyStickyManager:()=>tt,initStickyManager:()=>et});function C(){let t=document.documentElement;if(!t.hasAttribute("data-sticky"))return;let e=document.querySelector("header");e&&!e.hasAttribute("data-sticky")&&(e.dataset.sticky="",Z=!0);let a=document.querySelector("header[data-sticky]"),s=a?a.getBoundingClientRect().height:0;t.style.setProperty("--sticky-offset",`${s}px`)}function Le(){C()}function et(){if(I)return;I=!0,C(),requestAnimationFrame(C),document.fonts?.ready?.then(C),window.addEventListener("resize",C,{passive:!0}),document.addEventListener("toggle",Le,!0),Q=new ResizeObserver(C);let t=document.querySelector("header[data-sticky]");t&&Q.observe(t)}function tt(){if(I){if(I=!1,window.removeEventListener("resize",C),document.removeEventListener("toggle",Le,!0),Q?.disconnect(),Z){let t=document.querySelector("header[data-sticky]");t&&delete t.dataset.sticky,Z=!1}document.documentElement.style.removeProperty("--sticky-offset")}}var I,Q,Z,G=ge(()=>{I=!1,Z=!1});var Re={};me(Re,{SoundManager:()=>at});var qe,ee,at,He=ge(()=>{qe="vb-sound",ee={enabled:!1,volume:.5},at={_ctx:null,_enabled:!1,_volume:.5,_initialized:!1,init(){if(this._initialized)return this;let t=this._load();return this._enabled=t.enabled,this._volume=t.volume,this._initialized=!0,this},_getContext(){return this._ctx||(this._ctx=new(window.AudioContext||window.webkitAudioContext)),this._ctx.state==="suspended"&&this._ctx.resume(),this._ctx},_load(){try{let t=localStorage.getItem(qe);return t?{...ee,...JSON.parse(t)}:{...ee}}catch{return{...ee}}},_save(t){try{let e=this._load();localStorage.setItem(qe,JSON.stringify({...e,...t}))}catch{}},_playTone(t,e,a="sine"){if(!this._enabled)return;let s=this._getContext(),r=s.createOscillator(),n=s.createGain();r.connect(n),n.connect(s.destination),r.frequency.value=t,r.type=a,n.gain.value=this._volume*.3,r.start(),n.gain.exponentialRampToValueAtTime(.01,s.currentTime+e),r.stop(s.currentTime+e)},enable(){this._enabled=!0,this._save({enabled:!0}),this.play("click")},disable(){this._enabled=!1,this._save({enabled:!1})},toggle(){return this._enabled?this.disable():this.enable(),this._enabled},isEnabled(){return this._enabled},setVolume(t){this._volume=Math.max(0,Math.min(1,t)),this._save({volume:this._volume})},getVolume(){return this._volume},play(t){if(this._enabled)switch(t){case"click":this._playTone(800,.1);break;case"success":this._playTone(523,.1),setTimeout(()=>this._playTone(659,.1),100),setTimeout(()=>this._playTone(784,.15),200);break;case"error":this._playTone(200,.15,"sawtooth"),setTimeout(()=>this._playTone(180,.2,"sawtooth"),150);break;case"notification":this._playTone(880,.1),setTimeout(()=>this._playTone(1100,.15),100);break;case"soft":this._playTone(600,.05);break;case"tick":this._playTone(1200,.02,"square");break}},getState(){return{enabled:this._enabled,volume:this._volume}}}});var rt=window.matchMedia("(prefers-reduced-motion: reduce)");var pe=new Map;function ye(t,e,a={}){let s=a.priority??10,r={impl:e,bundle:a.bundle,contract:a.contract,priority:s},n=pe.get(t);if(customElements.get(t)){if(!n||n.priority>=s){n&&n.priority===s&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=s){n.priority===s&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${n.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}pe.set(t,r),customElements.define(t,e)}var L=class extends HTMLElement{#t=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,a,s,r){e.addEventListener(a,s,r),this.#t.push(()=>e.removeEventListener(a,s,r))}setup(){}teardown(){}};var _=new Map,W=new Map;var fe=null;function be(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(fe)return fe;if(typeof document<"u"){let t=document.querySelectorAll('script[src*="vanilla-breeze"]');for(let e of t){let a=e.getAttribute("src");if(a){let s=a.lastIndexOf("/");if(s!==-1)return a.slice(0,s)}}}return"/cdn"}var We=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),je=new Set(["kawaii","memphis"]);function j(t){return je.has(t)}function ze(t,e){return`${e}/themes/${t}.css`}function we(t,e){if(!j(t))return Promise.resolve();if(W.has(t))return W.get(t);let a=import(`${e}/packs/${t}.full.js`).catch(()=>{});return W.set(t,a),a}function Ne(t,e){let a=be(),s=()=>{(j(e)||t.hasAttribute("data-vb-pack"))&&we(e,a)};return t.getAttribute("data-vb-theme-state")==="error"?Promise.reject(new Error(`Failed to load theme: ${e}`)):t.getAttribute("data-vb-theme-state")==="ready"||t.sheet?(s(),Promise.resolve()):new Promise((r,n)=>{let i=()=>{t.setAttribute("data-vb-theme-state","ready"),h(),s(),r()},c=()=>{t.setAttribute("data-vb-theme-state","error"),_.delete(e),h(),n(new Error(`Failed to load theme: ${e}`))},h=()=>{t.removeEventListener("load",i),t.removeEventListener("error",c)};t.addEventListener("load",i,{once:!0}),t.addEventListener("error",c,{once:!0})})}async function q(t){if(!t||We.has(t))return;if(_.has(t))return _.get(t);if(typeof document<"u"){let s=document.querySelector(`link[data-vb-theme="${t}"]`);if(s){let r=Ne(s,t);return _.set(t,r),r}}let e=be(),a=j(t)?Xe(t,e):Ke(t,e);return _.set(t,a),a}async function Ke(t,e){let a=ze(t,e);return new Promise((s,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${t}"]`);n&&n.remove();let i=document.createElement("link");i.rel="stylesheet",i.href=a,i.setAttribute("data-vb-theme",t),i.setAttribute("data-vb-theme-state","loading"),i.onload=()=>{i.setAttribute("data-vb-theme-state","ready"),s()},i.onerror=()=>{i.setAttribute("data-vb-theme-state","error"),i.remove(),_.delete(t),r(new Error(`Failed to load theme: ${t}`))},document.head.appendChild(i)})}function Xe(t,e){let a=`${e}/packs/${t}.theme.css`,s=`${e}/packs/${t}.effects.css`;return new Promise((r,n)=>{let i=document.querySelector(`link[data-vb-theme-preload="${t}"]`);i&&i.remove();let c=document.createElement("link");c.rel="stylesheet",c.href=a,c.setAttribute("data-vb-theme",t),c.setAttribute("data-vb-pack",t),c.setAttribute("data-vb-theme-state","loading"),c.onload=()=>{c.setAttribute("data-vb-theme-state","ready");let h=document.createElement("link");h.rel="stylesheet",h.href=s,h.setAttribute("data-vb-pack-effects",t),document.head.appendChild(h),we(t,e),r()},c.onerror=()=>{c.setAttribute("data-vb-theme-state","error"),c.remove(),_.delete(t),n(new Error(`Failed to load pack: ${t}`))},document.head.appendChild(c)})}var ve=[{id:"default",name:"Default",swatchBg:"#3b82f6",seeds:{}},{id:"ocean",name:"Ocean",swatchBg:"#0891b2",seeds:{"--hue-primary":200,"--hue-secondary":180,"--hue-accent":45,"--lightness-primary":"50%","--chroma-primary":.15,"--lightness-secondary":"45%","--chroma-secondary":.1,"--lightness-accent":"70%","--chroma-accent":.15},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.12}},{id:"forest",name:"Forest",swatchBg:"#059669",seeds:{"--hue-primary":145,"--hue-secondary":90,"--hue-accent":30,"--lightness-primary":"45%","--chroma-primary":.15,"--lightness-secondary":"55%","--chroma-secondary":.12,"--lightness-accent":"65%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"55%","--chroma-primary":.12}},{id:"sunset",name:"Sunset",swatchBg:"#ea580c",seeds:{"--hue-primary":25,"--hue-secondary":0,"--hue-accent":280,"--lightness-primary":"60%","--chroma-primary":.2,"--lightness-secondary":"55%","--chroma-secondary":.18,"--lightness-accent":"55%","--chroma-accent":.18},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.16}},{id:"rose",name:"Rose",swatchBg:"#e11d48",seeds:{"--hue-primary":350,"--hue-secondary":330,"--hue-accent":200,"--lightness-primary":"55%","--chroma-primary":.18,"--lightness-secondary":"50%","--chroma-secondary":.14,"--lightness-accent":"60%","--chroma-accent":.12},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.14}},{id:"lavender",name:"Lavender",swatchBg:"#a855f7",seeds:{"--hue-primary":280,"--hue-secondary":300,"--hue-accent":60,"--lightness-primary":"55%","--chroma-primary":.14,"--lightness-secondary":"50%","--chroma-secondary":.12,"--lightness-accent":"70%","--chroma-accent":.14},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.12}},{id:"coral",name:"Coral",swatchBg:"#f97316",seeds:{"--hue-primary":15,"--hue-secondary":25,"--hue-accent":180,"--lightness-primary":"60%","--chroma-primary":.18,"--lightness-secondary":"55%","--chroma-secondary":.15,"--lightness-accent":"55%","--chroma-accent":.12},seedsDark:{"--lightness-primary":"65%","--chroma-primary":.15}},{id:"slate",name:"Slate",swatchBg:"#64748b",seeds:{"--hue-primary":220,"--hue-secondary":210,"--hue-accent":45,"--lightness-primary":"48%","--chroma-primary":.1,"--lightness-secondary":"45%","--chroma-secondary":.06,"--lightness-accent":"68%","--chroma-accent":.15},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.08}},{id:"emerald",name:"Emerald",swatchBg:"#10b981",seeds:{"--hue-primary":160,"--hue-secondary":140,"--hue-accent":30,"--lightness-primary":"50%","--chroma-primary":.15,"--lightness-secondary":"48%","--chroma-secondary":.12,"--lightness-accent":"65%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"60%","--chroma-primary":.12}},{id:"amber",name:"Amber",swatchBg:"#f59e0b",seeds:{"--hue-primary":45,"--hue-secondary":30,"--hue-accent":240,"--lightness-primary":"60%","--chroma-primary":.16,"--lightness-secondary":"55%","--chroma-secondary":.15,"--lightness-accent":"52%","--chroma-accent":.14},seedsDark:{"--lightness-primary":"68%","--chroma-primary":.14}},{id:"indigo",name:"Indigo",swatchBg:"#6366f1",seeds:{"--hue-primary":250,"--hue-secondary":270,"--hue-accent":35,"--lightness-primary":"48%","--chroma-primary":.18,"--lightness-secondary":"45%","--chroma-secondary":.14,"--lightness-accent":"68%","--chroma-accent":.16},seedsDark:{"--lightness-primary":"62%","--chroma-primary":.14}}],Se=[{id:"default",name:"Default",hue:210,shape:"balanced",character:"The default",swatchBg:"#3b82f6",tier:"core"},{id:"modern",name:"Modern",hue:270,shape:"rounded",character:"Vibrant & elevated",swatchBg:"#6366f1",tier:"core"},{id:"minimal",name:"Minimal",hue:240,shape:"sharp",character:"Clean & flat",swatchBg:"#71717a",tier:"core"},{id:"classic",name:"Classic",hue:220,shape:"subtle",character:"Serif & elegant",swatchBg:"#92400e",tier:"core"}],z=[{id:"swiss",name:"Swiss",icon:"grid-3x3",character:"Precision grid",swatchBg:"#ff3e00",swatchFg:"white",tier:"showcase",category:"Design"},{id:"brutalist",name:"Brutalist",icon:"square",character:"Raw, industrial",swatchBg:"#1a1a1a",swatchFg:"#f5f5f5",tier:"showcase",category:"Design"},{id:"art-deco",name:"Art Deco",icon:"crown",character:"1920s luxury",swatchBg:"#1A1A1A",swatchFg:"#C9A84C",tier:"showcase",category:"Design"},{id:"editorial",name:"Editorial",icon:"newspaper",character:"Magazine elegance",swatchBg:"#1a1a1a",swatchFg:"#c9a227",tier:"showcase",category:"Content"},{id:"genai",name:"GenAI",icon:"sparkles",character:"AI aesthetic",swatchBg:"#1a0a2e",swatchFg:"#a855f7",tier:"showcase",category:"Modern"},{id:"glassmorphism",name:"Glass",icon:"glass-water",character:"Frosted surfaces",swatchBg:"#667eea",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"startup",name:"Startup",icon:"rocket",character:"SaaS energy",swatchBg:"#4f46e5",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"organic",name:"Organic",icon:"leaf",character:"Natural, handcrafted",swatchBg:"#2d5016",swatchFg:"#faf5e6",tier:"showcase",category:"Creative"},{id:"rough",name:"Rough",icon:"pencil",character:"Hand-drawn sketch",swatchBg:"#f5f0e8",swatchFg:"#3a3a3a",tier:"showcase",category:"Creative"},{id:"cyber",name:"Cyber",icon:"zap",character:"Neon futuristic",swatchBg:"#0a0a1a",swatchFg:"#00ff88",tier:"showcase",category:"Creative"},{id:"vaporwave",name:"Vaporwave",icon:"radio",character:"Neon dreamy",swatchBg:"#2b0040",swatchFg:"#ff6ad5",tier:"showcase",category:"Aesthetic"},{id:"neumorphism",name:"Neumorph",icon:"circle",character:"Soft embossed",swatchBg:"#e0e0e0",swatchFg:"#a0a0a0",tier:"showcase",category:"Aesthetic"},{id:"bauhaus",name:"Bauhaus",icon:"shapes",character:"Geometric",swatchBg:"#F1FAEE",swatchFg:"#E63946",tier:"showcase",category:"Aesthetic"},{id:"claymorphism",name:"Clay",icon:"circle-dot",character:"Puffy 3D",swatchBg:"#f0f0f5",swatchFg:"#FF6B9D",tier:"showcase",category:"Aesthetic"},{id:"alpha1999",name:"Alpha1999",icon:"orbit",character:"Space retro-fi",swatchBg:"#0a0a14",swatchFg:"#d4880f",tier:"showcase",category:"Signature"},{id:"super2026",name:"Super2026",icon:"triangle",character:"Supergraphic bold",swatchBg:"#f5f0e6",swatchFg:"#c23616",tier:"showcase",category:"Signature"},{id:"magna",name:"Magna",icon:"orbit",character:"Odyssey 2 retro",swatchBg:"#0d0b14",swatchFg:"#f97316",tier:"showcase",category:"Signature"},{id:"win9x",name:"Win9x",icon:"monitor",character:"Classic desktop",swatchBg:"#008080",swatchFg:"#c0c0c0",tier:"showcase",category:"OS Styles"},{id:"nes",name:"NES",icon:"joystick",character:"Console pixels",swatchBg:"#bcbcbc",swatchFg:"#e40521",tier:"showcase",category:"OS Styles"},{id:"8bit",name:"8-Bit",icon:"gamepad-2",character:"Retro pixel art",swatchBg:"#000080",swatchFg:"#ffff00",tier:"showcase",category:"OS Styles"}],N=[{id:"nord",name:"Nord",icon:"snowflake",character:"Arctic calm",swatchBg:"#2E3440",swatchFg:"#81A1C1",tier:"community",category:"Editor Palettes"},{id:"solarized",name:"Solarized",icon:"sun-dim",character:"Engineered precision",swatchBg:"#002B36",swatchFg:"#268BD2",tier:"community",category:"Editor Palettes"},{id:"dracula",name:"Dracula",icon:"moon-star",character:"Dark elegance",swatchBg:"#282A36",swatchFg:"#BD93F9",tier:"community",category:"Editor Palettes"},{id:"catppuccin-mocha",name:"Catppuccin",icon:"coffee",character:"Warm pastels",swatchBg:"#1E1E2E",swatchFg:"#CBA6F7",tier:"community",category:"Editor Palettes"},{id:"catppuccin-latte",name:"Ctp Latte",icon:"coffee",character:"Cozy daytime",swatchBg:"#eff1f5",swatchFg:"#8839ef",tier:"community",category:"Editor Palettes"},{id:"catppuccin-frappe",name:"Ctp Frapp\xE9",icon:"coffee",character:"Cool twilight",swatchBg:"#303446",swatchFg:"#ca9ee6",tier:"community",category:"Editor Palettes"},{id:"catppuccin-macchiato",name:"Ctp Macchiato",icon:"coffee",character:"Deep blue",swatchBg:"#24273a",swatchFg:"#c6a0f6",tier:"community",category:"Editor Palettes"},{id:"gruvbox",name:"Gruvbox",icon:"palette",character:"Retro warmth",swatchBg:"#282828",swatchFg:"#ebdbb2",tier:"community",category:"Editor Palettes"},{id:"tokyo-night",name:"Tokyo Night",icon:"moon",character:"Night-owl vibes",swatchBg:"#1a1b26",swatchFg:"#7aa2f7",tier:"community",category:"Editor Palettes"},{id:"rose-pine",name:"Ros\xE9 Pine",icon:"flower-2",character:"Muted elegance",swatchBg:"#191724",swatchFg:"#ebbcba",tier:"community",category:"Editor Palettes"},{id:"cottagecore",name:"Cottagecore",icon:"flower-2",character:"Pastoral",swatchBg:"#fdf8f0",swatchFg:"#7d8c6d",tier:"community",category:"Niche"},{id:"terminal",name:"Terminal",icon:"terminal",character:"Retro CRT",swatchBg:"#0d1117",swatchFg:"#00ff00",tier:"community",category:"Niche"},{id:"clinical",name:"Clinical",icon:"heart-pulse",character:"Sterile precision",swatchBg:"#ffffff",swatchFg:"#0077b6",tier:"community",category:"Industry"},{id:"financial",name:"Financial",icon:"landmark",character:"Navy + gold",swatchBg:"#1b2a4a",swatchFg:"#c9a84c",tier:"community",category:"Industry"},{id:"government",name:"Government",icon:"shield",character:"Official",swatchBg:"#002868",swatchFg:"#bf0a30",tier:"community",category:"Industry"},{id:"dawn",name:"Dawn",icon:"sunrise",character:"Golden morning",swatchBg:"#fef3e2",swatchFg:"#d4a574",tier:"community",category:"Mood/Time"},{id:"dusk",name:"Dusk",icon:"sunset",character:"Twilight",swatchBg:"#1a1b2e",swatchFg:"#e5a858",tier:"community",category:"Mood/Time"},{id:"midnight",name:"Midnight",icon:"moon",character:"Deep night",swatchBg:"#0d1117",swatchFg:"#58a6ff",tier:"community",category:"Mood/Time"},{id:"high-noon",name:"High Noon",icon:"sun",character:"Maximum bright",swatchBg:"#ffffff",swatchFg:"#e63946",tier:"community",category:"Mood/Time"}],ke=[{id:"kawaii",name:"Kawaii",icon:"heart",character:"Cute aesthetic",swatchBg:"#ffb7c5",swatchFg:"#ff69b4",tier:"showcase",category:"Packs"},{id:"memphis",name:"Memphis",icon:"star",character:"Bold patterns",swatchBg:"#FFF8F0",swatchFg:"#d03040",tier:"showcase",category:"Packs"}];var ct=[...z,...N],dt=[...Se,...z,...N,...ke],x=t=>z.filter(e=>e.category===t),Ee=[{label:"Style",themes:Se,tier:"core"},{label:"Design",themes:x("Design"),tier:"showcase"},{label:"Content",themes:x("Content"),tier:"showcase"},{label:"Modern",themes:x("Modern"),tier:"showcase"},{label:"Creative",themes:x("Creative"),tier:"showcase"},{label:"Aesthetic",themes:x("Aesthetic"),tier:"showcase"},{label:"Signature",themes:x("Signature"),tier:"showcase"},{label:"OS Styles",themes:x("OS Styles"),tier:"showcase"},{label:"Packs",themes:ke,tier:"showcase"},{label:"More Themes",themes:N,tier:"community"}];function Ye(){let t=globalThis.localStorage;if(!t)throw new Error("VBStore: localStorage is not available in this environment");return{async getRaw(e){return t.getItem(e)},async setRaw(e,a){t.setItem(e,a)},async removeRaw(e){t.removeItem(e)},async keys(e){let a=[];for(let s=0;s<t.length;s++){let r=t.key(s);r&&r.startsWith(e)&&a.push(r)}return a}}}var R=null;function w(){return R||(R=Ye()),R}function K(t,e){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");if(typeof e!="string"||!e)throw new TypeError("VBStore: key must be a non-empty string");return`vb:${t}:${e}`}function _e(t){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");return`vb:${t}:`}function xe(t){try{let e=JSON.parse(t);if(e&&typeof e=="object"&&typeof e.timestamp=="number")return e}catch{}return null}var u={configure(t={}){R=t.backend??null},async set(t,e,a){let s={data:a,timestamp:Date.now()};await w().setRaw(K(t,e),JSON.stringify(s))},async get(t,e,a){let s=await w().getRaw(K(t,e));if(s==null)return null;let r=xe(s);return!r||a?.maxAge!=null&&Date.now()-r.timestamp>a.maxAge?null:r.data},async remove(t,e){await w().removeRaw(K(t,e))},async list(t){let e=_e(t),a=await w().keys(e),s=[];for(let r of a){let n=await w().getRaw(r);if(n==null)continue;let i=xe(n);i&&s.push({key:r.slice(e.length),data:i.data,timestamp:i.timestamp})}return s},async clear(t){let e=_e(t),a=await w().keys(e);for(let s of a)await w().removeRaw(s)},async clearAll(){let t=await w().keys("vb:");for(let e of t)await w().removeRaw(e)},async setMany(t,e){for(let[a,s]of e)await u.set(t,a,s)}};var X="theme",Y="current",P={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""},Be=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],g=null,l={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let t=await u.get(X,Y);g=t?{...P,...t}:{...P};try{await q(g.brand)}catch{g.brand="default"}return this.apply(g),this._watchSystemPreference(),this._watchRootAttributes(),g})(),this._initPromise)},load(){return g?{...g}:{...P}},save(t){let e={...g??P,...t};return g=e,u.set(X,Y,e).catch(()=>{}),e},apply({mode:t="auto",brand:e="default",borderStyle:a="",iconSet:s="",fluid:r="",backdrop:n="",backdropChrome:i="",pageBgType:c="",pageBgColor:h="",pageBgGradStart:y="",pageBgGradEnd:p="",pageBgGradDir:f=""}={}){let d=document.documentElement;d.dataset.mode=t==="auto"?this.getEffectiveMode():t;let A=(d.dataset.theme||"").split(" ").filter(M=>M.startsWith("a11y-")),m=e!=="default"?[e,...A]:[...A];m.length?d.dataset.theme=m.join(" "):delete d.dataset.theme;let v=a||this._readCSSHint("--theme-border-style");v&&v!=="clean"?d.dataset.borderStyle=v:delete d.dataset.borderStyle;let o=s||this._readCSSHint("--theme-icon-set");if(o&&o!=="lucide"?d.dataset.iconSet=o:delete d.dataset.iconSet,r?d.dataset.fluid=r:delete d.dataset.fluid,n?d.dataset.backdrop=n:delete d.dataset.backdrop,i&&i!=="card"?d.dataset.backdropChrome=i:delete d.dataset.backdropChrome,c==="color"&&h)d.style.setProperty("--page-bg-color",h),d.style.removeProperty("--page-bg-gradient");else if(c==="gradient"&&y&&p){let M=f||"to bottom";d.style.setProperty("--page-bg-gradient",`linear-gradient(${M}, ${y}, ${p})`),d.style.removeProperty("--page-bg-color")}else d.style.removeProperty("--page-bg-color"),d.style.removeProperty("--page-bg-gradient");let b=this.load().accent||"default";this._applyAccent(b),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:t,brand:e,accent:b,borderStyle:v,iconSet:o,fluid:r,backdrop:n,backdropChrome:i,pageBgType:c,effectiveMode:this.getEffectiveMode()}}))},setMode(t){let e=this.save({mode:t});this.apply(e)},async setBrand(t){try{await q(t)}catch(a){console.warn(`[VB] Theme "${t}" failed to load, using default`,a),t="default"}let e=this.save({brand:t});this.apply(e)},setAccent(t){this.save({accent:t}),this._applyAccent(t),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}}))},setBorderStyle(t){let e=this.save({borderStyle:t});this.apply(e)},setIconSet(t){let e=this.save({iconSet:t});this.apply(e)},setFluid(t){let e=this.save({fluid:t});this.apply(e)},setBackdrop(t){let e=this.save({backdrop:t});this.apply(e)},setBackdropChrome(t){let e=this.save({backdropChrome:t});this.apply(e)},setPageBg({type:t="",color:e="",gradStart:a="",gradEnd:s="",gradDir:r=""}={}){let n=this.save({pageBgType:t,pageBgColor:e,pageBgGradStart:a,pageBgGradEnd:s,pageBgGradDir:r});this.apply(n)},getEffectiveMode(){let{mode:t}=this.load();return t!=="auto"?t:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},getState(){let{mode:t,brand:e,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:c,pageBgType:h,pageBgColor:y,pageBgGradStart:p,pageBgGradEnd:f,pageBgGradDir:d}=this.load();return{mode:t,brand:e,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:c,pageBgType:h,pageBgColor:y,pageBgGradStart:p,pageBgGradEnd:f,pageBgGradDir:d,effectiveMode:this.getEffectiveMode()}},toggleMode(){let e=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(e)},reset(){g={...P},u.remove(X,Y).catch(()=>{});let t=document.documentElement;t.style.removeProperty("--page-bg-color"),t.style.removeProperty("--page-bg-gradient");for(let e of Be)t.style.removeProperty(e);this.apply(P)},_readCSSHint(t){return getComputedStyle(document.documentElement).getPropertyValue(t).trim()},_applyAccent(t){let e=document.documentElement,a=ve.find(s=>s.id===t);for(let s of Be)e.style.removeProperty(s);if(!(!a||!a.seeds||Object.keys(a.seeds).length===0)){for(let[s,r]of Object.entries(a.seeds))e.style.setProperty(s,String(r));if(a.seedsDark&&this.getEffectiveMode()==="dark")for(let[s,r]of Object.entries(a.seedsDark))e.style.setProperty(s,String(r))}},_watchRootAttributes(){this._rootObserver||(this._rootObserver=new MutationObserver(t=>{for(let e of t)e.attributeName==="data-theme"?this._syncFromDataTheme():e.attributeName==="data-mode"&&this._syncFromDataMode()}),this._rootObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","data-mode"]}))},_syncFromDataTheme(){if(!g)return;let a=(document.documentElement.dataset.theme||"").split(/\s+/).filter(Boolean).find(s=>!s.startsWith("a11y-"))||"default";a!==g.brand&&(g.brand=a,q(a).catch(()=>{}),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_syncFromDataMode(){if(!g)return;let t=document.documentElement.dataset.mode||"auto",e=g.mode==="auto"?this.getEffectiveMode():g.mode;t!==e&&(g.mode=t,window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_watchSystemPreference(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{let e=this.load();e.mode==="auto"&&this.apply(e)})}};var Ce="environment",Te="preferences",J={timeOfDay:!1,seasonal:!1},Je=900*1e3,k={...J};function B(t,e,a){return t+(e-t)*Math.min(1,Math.max(0,a))}var O={_timer:null,_baseHues:null,_timeOverride:null,_monthOverride:null,async init(){let t=await u.get(Ce,Te);k=t?{...J,...t}:{...J},(k.timeOfDay||k.seasonal)&&(this._captureBaseHues(),this._update(),this._startLoop()),window.addEventListener("vb:theme-change",()=>{this._hasActiveSource()&&requestAnimationFrame(()=>{this._captureBaseHues(),this._update()})})},load(){return{...k}},save(t){return k={...k,...t},u.set(Ce,Te,k).catch(()=>{}),{...k}},setTimeOverride(t){this._timeOverride=t,this._hasActiveSource()&&this._update()},setMonthOverride(t){this._monthOverride=t,this._hasActiveSource()&&this._update()},setSource(t,e){let a=this.save({[t]:e});e?(this._captureBaseHues(),this._update(),this._startLoop()):this._hasActiveSource(a)?this._update():(this._clearModifiers(),this._stopLoop())},_hasActiveSource(t){let e=t||this.load();return e.timeOfDay||e.seasonal},_captureBaseHues(){let t=document.documentElement;t.style.removeProperty("--hue-primary"),t.style.removeProperty("--hue-secondary"),t.style.removeProperty("--hue-accent");let e=t.getAttribute("data-theme");if(e){let a=`[data-theme~="${e}"]`;for(let s of document.styleSheets)try{for(let r=0;r<s.cssRules.length;r++){let n=s.cssRules[r];if(n.selectorText?.includes(a)&&!n.selectorText.includes("dark")){let i=n.style?.getPropertyValue("--hue-primary");if(i){this._baseHues={primary:parseFloat(i)||260,secondary:parseFloat(n.style.getPropertyValue("--hue-secondary"))||200,accent:parseFloat(n.style.getPropertyValue("--hue-accent"))||30};return}}}}catch{}}this._baseHues={primary:260,secondary:200,accent:30}},_update(){let t=this.load(),e=0;t.timeOfDay&&(e+=this._getTimeOfDayOffset()),t.seasonal&&(e+=this._getSeasonalOffset());let a=document.documentElement;e!==0&&this._baseHues?(a.style.setProperty("--hue-primary",String(this._baseHues.primary+e)),a.style.setProperty("--hue-secondary",String(this._baseHues.secondary+e)),a.style.setProperty("--hue-accent",String(this._baseHues.accent+e*.5))):e===0&&this._clearModifiers()},_clearModifiers(){let t=document.documentElement;t.style.removeProperty("--hue-primary"),t.style.removeProperty("--hue-secondary"),t.style.removeProperty("--hue-accent")},_getTimeOfDayOffset(){let t=this._timeOverride??new Date().getHours()+new Date().getMinutes()/60;return t<5?-20:t<7?B(-20,20,(t-5)/2):t<10?B(20,5,(t-7)/3):t<14?B(5,0,(t-10)/4):t<17?B(0,-5,(t-14)/3):t<19?B(-5,15,(t-17)/2):t<21?B(15,-10,(t-19)/2):B(-10,-20,(t-21)/8)},_getHemisphere(){return window.__VB_ENV_LOCATION?.hemisphere||"north"},_getSeasonalOffset(){let t=this._monthOverride??new Date().getMonth(),a=this._getHemisphere()==="south"?(t+6)%12:t;return a>=2&&a<=4?5:a>=5&&a<=7?10:a>=8&&a<=10?-5:-10},_startLoop(){this._timer||(this._timer=setInterval(()=>this._update(),Je))},_stopLoop(){this._timer&&clearInterval(this._timer),this._timer=null}};var H=null;function Me(){return"0.1.3-9ee452f2"}function Qe(){let t=document.querySelectorAll('script[src*="vanilla-breeze"]'),e="/cdn/sw.js";for(let a of t){let s=a.getAttribute("src");if(s){let r=s.lastIndexOf("/");if(r!==-1){e=s.slice(0,r)+"/sw.js";break}}}return e}function Pe(){return H||(H=navigator.serviceWorker?.ready??Promise.reject(new Error("SW not supported"))),H}function $e(t){return new Promise((e,a)=>{navigator.serviceWorker?.controller?Ae(navigator.serviceWorker.controller,t,e,a):Pe().then(s=>{let r=s.active||s.waiting||s.installing;r?Ae(r,t,e,a):a(new Error("No active service worker"))}).catch(a)})}function Ae(t,e,a,s){let r=new MessageChannel;r.port1.onmessage=n=>a(n.data),r.port1.onmessageerror=()=>s(new Error("Message error")),t.postMessage({type:e},[r.port2]),setTimeout(()=>s(new Error("SW message timeout")),5e3)}async function Fe(){return $e("GET_STATUS")}async function Oe(){return $e("CLEAR_CACHE")}async function De(){let t=await Pe();return await t.update(),{updated:!!t.waiting}}function Ze(){return typeof window>"u"||!("serviceWorker"in navigator)?!1:window.__VB_SERVICE_WORKER?!0:document.querySelector('meta[name="vb-service-worker"]')?.content==="true"}if(Ze()){let t=Qe();window.addEventListener("load",()=>{H=navigator.serviceWorker.register(t).catch(e=>{console.warn("[VB] Service worker registration failed:",e)})})}var $=null,E="settings",U={motionFx:!0,sounds:!1},te=class extends L{#t=null;#e=null;#a=!1;#r=[];#s={...U};#n=!1;async setup(){await this.#A(),this.#M(),this.#$(),this.#o(),this.listen(window,"vb:theme-change",this.#g),this.listen(window,"vb:extensions-change",this.#g),this.listen(window,"vb:a11y-themes-change",this.#g)}teardown(){}async#A(){let[e,a,s]=await Promise.all([u.get(E,"a11y"),u.get(E,"extensions"),u.get(E,"sticky")]);this.#r=Array.isArray(e)?e:[],this.#s={...U,...a??{}},this.#n=s==="on"}#b(e){return e!==""&&e!==void 0}#d(e){return e==="compact"?"compact":e==="spacious"?"spacious":"default"}#w(e,a){return e?a==="compact"?"compact":a==="spacious"?"spacious":"default":""}#v(){return this.#n}#S(e){return e!==""&&e!==void 0}#l(e){return e==="flush"?"flush":e==="elevated"?"elevated":"default"}#k(e,a){return e?a==="flush"?"flush":a==="elevated"?"elevated":"default":""}#h(e){if(!e)return"card";let a=e.split(/\s+/);for(let s of a)if(s==="stretch"||s==="integrated")return s;return"card"}#u(e){return e?e.split(/\s+/).includes("fixed"):!1}#E(e,a){let s=[];return e&&e!=="card"&&s.push(e),a&&s.push("fixed"),s.join(" ")||"card"}#M(){this.#t=this.querySelector(":scope > [data-trigger]")||this.querySelector(":scope > button"),this.#t||(this.#t=document.createElement("button"),this.#t.setAttribute("data-trigger",""),this.#t.setAttribute("aria-label","Site settings"),this.#t.className="settings-trigger",this.#t.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>',this.prepend(this.#t)),this.#t.setAttribute("aria-haspopup","dialog"),this.#t.setAttribute("aria-expanded","false"),this.#e=document.createElement("div"),this.#e.className="settings-panel",this.#e.setAttribute("role","dialog"),this.#e.setAttribute("aria-label","Site settings");let e=`settings-panel-${crypto.randomUUID().slice(0,8)}`;this.#e.id=e,this.#t.setAttribute("aria-controls",e),this.#e.innerHTML=this.#P(),this.appendChild(this.#e)}#P(){let{mode:e,brand:a,fluid:s,backdrop:r,backdropChrome:n,pageBgType:i,pageBgColor:c,pageBgGradStart:h,pageBgGradEnd:y,pageBgGradDir:p}=l.getState(),f=this.#c(),d=this.#f(),T=this.#b(s),A=this.#d(s),m=this.#S(r),v=this.#l(r);return`
|
|
2
2
|
<header class="settings-header">
|
|
3
3
|
<strong>Settings</strong>
|
|
4
4
|
<button type="button" class="settings-close" aria-label="Close settings">
|
|
@@ -191,5 +191,5 @@ var Ue=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var me=(t,e)=>{
|
|
|
191
191
|
<footer class="settings-footer">
|
|
192
192
|
<button type="button" class="settings-reset">Reset to Defaults</button>
|
|
193
193
|
</footer>
|
|
194
|
-
`}#F(){this.#t.addEventListener("click",this.#$),this.listen(document,"click",this.#O),this.listen(document,"keydown",this.#D),this.#e.querySelector(".settings-close")?.addEventListener("click",()=>this.close()),this.#e.querySelectorAll('input[name="settings-mode"]').forEach(e=>{e.addEventListener("change",this.#L)}),this.#e.querySelector("#settings-theme")?.addEventListener("change",this.#q),this.#e.querySelector("input[data-fluid-toggle]")?.addEventListener("change",this.#R),this.#e.querySelectorAll('input[name="settings-density"]').forEach(e=>{e.addEventListener("change",this.#H)}),this.#e.querySelector("input[data-backdrop-toggle]")?.addEventListener("change",this.#I),this.#e.querySelectorAll('input[name="settings-backdrop"]').forEach(e=>{e.addEventListener("change",this.#V)}),this.#e.querySelectorAll('input[name="settings-backdrop-chrome"]').forEach(e=>{e.addEventListener("change",this.#G)}),this.#e.querySelector("input[data-backdrop-fixed]")?.addEventListener("change",this.#U),this.#e.querySelector("input[data-sticky-toggle]")?.addEventListener("change",this.#W),this.#e.querySelector('[name="settings-page-bg"]')?.addEventListener("change",this.#j),this.#e.querySelector('[name="settings-page-bg-color"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.addEventListener("change",this.#i),this.#e.querySelectorAll("input[data-a11y]").forEach(e=>{e.addEventListener("change",this.#z)}),this.#e.querySelectorAll("input[data-ext]").forEach(e=>{e.addEventListener("change",this.#N)}),this.#e.querySelectorAll("input[data-env]").forEach(e=>{e.addEventListener("change",this.#K)}),this.#e.querySelector(".settings-reset")?.addEventListener("click",this.#X),this.#e.querySelector('[data-action="clear-cache"]')?.addEventListener("click",this.#Q),this.#e.querySelector('[data-action="check-update"]')?.addEventListener("click",this.#Z),this.#T()}#$=e=>{e.stopPropagation(),this.toggle()};#O=e=>{this.#a&&!this.contains(e.target)&&this.close()};#D=e=>{e.key==="Escape"&&this.#a&&(e.preventDefault(),this.close(),this.#t?.focus())};#L=e=>{l.setMode(e.target.value)};#q=async e=>{let a=e.target;a.disabled=!0;try{await l.setBrand(a.value),this.#Y()}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}};#R=e=>{let a=e.target.checked,s=this.#d(l.getState().fluid)||"default";l.setFluid(this.#w(a,s)),this.#_(a)};#H=e=>{l.setFluid(this.#w(!0,e.target.value))};#I=e=>{let a=e.target.checked,s=this.#l(l.getState().backdrop)||"default";l.setBackdrop(this.#k(a,s)),this.#x(a)};#V=e=>{l.setBackdrop(this.#k(!0,e.target.value))};#G=e=>{let a=this.#u(l.getState().backdropChrome);l.setBackdropChrome(this.#E(e.target.value,a))};#U=e=>{let a=this.#h(l.getState().backdropChrome);l.setBackdropChrome(this.#E(a,e.target.checked))};#W=async e=>{let a=e.target.checked;this.#n=a,await u.set(E,"sticky",a?"on":"off");let s=document.querySelector("header");if(a){document.documentElement.dataset.sticky="",s&&(s.dataset.sticky="");let{initStickyManager:r}=await Promise.resolve().then(()=>(G(),V));r()}else{delete document.documentElement.dataset.sticky,s&&delete s.dataset.sticky;let{destroyStickyManager:r}=await Promise.resolve().then(()=>(G(),V));r()}};#j=e=>{let a=e.target.value;if(this.#m(a),a==="color"){let s=this.#e.querySelector('[name="settings-page-bg-color"]')?.value||"#1a1a2e";l.setPageBg({type:a,color:s})}else if(a==="gradient"){let s=this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.value||"#1a1a2e",r=this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.value||"#16213e",n=this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.value||"to bottom";l.setPageBg({type:a,gradStart:s,gradEnd:r,gradDir:n})}else l.setPageBg({})};#i=()=>{let e=this.#e.querySelector('[name="settings-page-bg"]')?.value||"";if(e==="color"){let a=this.#e.querySelector('[name="settings-page-bg-color"]')?.value||"";l.setPageBg({type:e,color:a})}else if(e==="gradient"){let a=this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.value||"",s=this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.value||"",r=this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.value||"to bottom";l.setPageBg({type:e,gradStart:a,gradEnd:s,gradDir:r})}};#z=e=>{let a=e.target.dataset.a11y,s=this.#c();if(e.target.checked&&!s.includes(a))s.push(a);else if(!e.target.checked){let r=s.indexOf(a);r!==-1&&s.splice(r,1)}this.#B(s),this.#p(),window.dispatchEvent(new CustomEvent("vb:a11y-themes-change",{detail:s}))};#N=e=>{let a=e.target.dataset.ext,s=e.target.checked;this.#J(a,s),this.#C()};#K=e=>{let a=e.target.dataset.env,s=e.target.checked;O.setSource(a,s)};#X=()=>{confirm("Reset all settings to defaults?")&&(l.reset(),this.#B([]),this.#p(),window.dispatchEvent(new CustomEvent("vb:a11y-themes-change",{detail:[]})),this.#s={...U},u.remove(E,"extensions").catch(()=>{}),this.#C(),this.#n=!1,u.remove(E,"sticky").catch(()=>{}),delete document.documentElement.dataset.sticky,Promise.resolve().then(()=>(G(),V)).then(e=>e.destroyStickyManager()).catch(()=>{}),O.setSource("timeOfDay",!1),O.setSource("seasonal",!1),this.#o())};#g=()=>{this.#o()};#o(){let{mode:e,brand:a,fluid:s,backdrop:r,backdropChrome:n,pageBgType:i,pageBgColor:c,pageBgGradStart:h,pageBgGradEnd:y,pageBgGradDir:p}=l.getState(),f=this.#c(),d=this.#f(),T=this.#b(s),A=this.#d(s),m=this.#S(r),v=this.#l(r),o=this.#e.querySelector(`input[name="settings-mode"][value="${e}"]`);o&&(o.checked=!0);let b=this.#e.querySelector("#settings-theme");b&&(b.value=a||"default");let M=this.#e.querySelector("input[data-fluid-toggle]");M&&(M.checked=T);let ae=this.#e.querySelector(`input[name="settings-density"][value="${A}"]`);ae&&(ae.checked=!0),this.#_(T);let se=this.#e.querySelector("input[data-backdrop-toggle]");se&&(se.checked=m);let re=this.#e.querySelector(`input[name="settings-backdrop"][value="${v}"]`);re&&(re.checked=!0);let Ie=this.#h(n),ne=this.#e.querySelector(`input[name="settings-backdrop-chrome"][value="${Ie}"]`);ne&&(ne.checked=!0);let ie=this.#e.querySelector("input[data-backdrop-fixed]");ie&&(ie.checked=this.#u(n)),this.#x(m);let oe=this.#e.querySelector('[name="settings-page-bg"]');oe&&(oe.value=i||"");let ce=this.#e.querySelector('[name="settings-page-bg-color"]');ce&&c&&(ce.value=c);let de=this.#e.querySelector('[name="settings-page-bg-grad-start"]');de&&h&&(de.value=h);let le=this.#e.querySelector('[name="settings-page-bg-grad-end"]');le&&y&&(le.value=y);let he=this.#e.querySelector('[name="settings-page-bg-grad-dir"]');he&&p&&(he.value=p),m&&this.#m(i||""),this.#e.querySelectorAll("input[data-a11y]").forEach($=>{let S=$;S.checked=f.includes(S.dataset.a11y)}),this.#e.querySelectorAll("input[data-ext]").forEach($=>{let S=$,D=S.dataset.ext,Ge=d[D];S.checked=Ge??U[D]});let ue=this.#e.querySelector("input[data-sticky-toggle]");ue&&(ue.checked=this.#v());let Ve=this.#y();this.#e.querySelectorAll("input[data-env]").forEach($=>{let S=$,D=S.dataset.env;S.checked=Ve[D]??!1})}#_(e){let a=this.#e.querySelector(".density-row");a&&(a.hidden=!e)}#x(e){if(this.#e.querySelectorAll(".backdrop-row").forEach(a=>{a.hidden=!e}),e){let a=this.#e.querySelector('[name="settings-page-bg"]')?.value||"";this.#m(a)}}#m(e){let a=this.#e.querySelector(".page-bg-color-row"),s=this.#e.querySelector(".page-bg-grad-row"),r=this.#e.querySelector(".page-bg-grad-dir-row");a&&(a.hidden=e!=="color"),s&&(s.hidden=e!=="gradient"),r&&(r.hidden=e!=="gradient")}#c(){return[...this.#r]}#B(e){this.#r=[...e],u.set(E,"a11y",this.#r).catch(()=>{})}#p(){let e=this.#c(),{brand:a}=l.getState(),s=document.documentElement,r=a!=="default"?[a,...e]:[...e];r.length?s.dataset.theme=r.join(" "):delete s.dataset.theme}#Y(){this.#p()}#y(){return O.load()}#f(){return{...this.#s}}#J(e,a){this.#s={...this.#s,[e]:a},u.set(E,"extensions",this.#s).catch(()=>{})}async#C(){let e=this.#f(),a=document.documentElement;e.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",e.sounds?(F||(F=(await Promise.resolve().then(()=>(He(),Re))).SoundManager),F.init(),F.enable()):F&&F.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:e}))}async#T(){let e=this.#e.querySelector("[data-sw-status] span");if(e){if(!("serviceWorker"in navigator)){e.textContent="Not supported";return}try{let s=(await $e()).cachedURLs?.length??0;e.textContent=`Active (${s} cached files)`}catch{e.textContent="Not registered"}}}#Q=async e=>{let a=e.target;a.disabled=!0,a.textContent="Clearing\u2026";try{await Oe(),a.textContent="Cleared!",this.#T(),setTimeout(()=>{a.textContent="Clear Cache",a.disabled=!1},2e3)}catch{a.textContent="Failed",setTimeout(()=>{a.textContent="Clear Cache",a.disabled=!1},2e3)}};#Z=async e=>{let a=e.target;a.disabled=!0,a.textContent="Checking\u2026";try{let{updated:s}=await De();a.textContent=s?"Update available!":"Up to date",setTimeout(()=>{a.textContent="Check for Updates",a.disabled=!1},2e3)}catch{a.textContent="Failed",setTimeout(()=>{a.textContent="Check for Updates",a.disabled=!1},2e3)}};open(){this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),this.#o(),this.#ee())}#ee(){let e=this.getBoundingClientRect(),a=this.#e;a.style.removeProperty("top"),a.style.removeProperty("bottom"),a.style.removeProperty("left"),a.style.removeProperty("right");let s=a.getBoundingClientRect(),r=window.innerWidth,n=window.innerHeight,i=e.top,c=n-e.bottom;i<s.height&&c>i?(a.style.top="calc(100% + 8px)",a.style.bottom="auto"):(a.style.bottom="calc(100% + 8px)",a.style.top="auto");let h=r-e.right,y=e.left,p=s.width;e.right<p&&y<h?(a.style.left="0",a.style.right="auto"):(a.style.right="0",a.style.left="auto")}close(){this.#a&&(this.#a=!1,this.removeAttribute("open"),this.#t?.setAttribute("aria-expanded","false"))}toggle(){this.#a?this.close():this.open()}};ye("settings-panel",te);export{te as SettingsPanel};
|
|
194
|
+
`}#$(){this.#t.addEventListener("click",this.#F),this.listen(document,"click",this.#O),this.listen(document,"keydown",this.#D),this.#e.querySelector(".settings-close")?.addEventListener("click",()=>this.close()),this.#e.querySelectorAll('input[name="settings-mode"]').forEach(e=>{e.addEventListener("change",this.#L)}),this.#e.querySelector("#settings-theme")?.addEventListener("change",this.#q),this.#e.querySelector("input[data-fluid-toggle]")?.addEventListener("change",this.#R),this.#e.querySelectorAll('input[name="settings-density"]').forEach(e=>{e.addEventListener("change",this.#H)}),this.#e.querySelector("input[data-backdrop-toggle]")?.addEventListener("change",this.#I),this.#e.querySelectorAll('input[name="settings-backdrop"]').forEach(e=>{e.addEventListener("change",this.#V)}),this.#e.querySelectorAll('input[name="settings-backdrop-chrome"]').forEach(e=>{e.addEventListener("change",this.#G)}),this.#e.querySelector("input[data-backdrop-fixed]")?.addEventListener("change",this.#U),this.#e.querySelector("input[data-sticky-toggle]")?.addEventListener("change",this.#W),this.#e.querySelector('[name="settings-page-bg"]')?.addEventListener("change",this.#j),this.#e.querySelector('[name="settings-page-bg-color"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.addEventListener("input",this.#i),this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.addEventListener("change",this.#i),this.#e.querySelectorAll("input[data-a11y]").forEach(e=>{e.addEventListener("change",this.#z)}),this.#e.querySelectorAll("input[data-ext]").forEach(e=>{e.addEventListener("change",this.#N)}),this.#e.querySelectorAll("input[data-env]").forEach(e=>{e.addEventListener("change",this.#K)}),this.#e.querySelector(".settings-reset")?.addEventListener("click",this.#X),this.#e.querySelector('[data-action="clear-cache"]')?.addEventListener("click",this.#Q),this.#e.querySelector('[data-action="check-update"]')?.addEventListener("click",this.#Z),this.#T()}#F=e=>{e.stopPropagation(),this.toggle()};#O=e=>{this.#a&&!this.contains(e.target)&&this.close()};#D=e=>{e.key==="Escape"&&this.#a&&(e.preventDefault(),this.close(),this.#t?.focus())};#L=e=>{l.setMode(e.target.value)};#q=async e=>{let a=e.target;a.disabled=!0;try{await l.setBrand(a.value),this.#Y()}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}};#R=e=>{let a=e.target.checked,s=this.#d(l.getState().fluid)||"default";l.setFluid(this.#w(a,s)),this.#_(a)};#H=e=>{l.setFluid(this.#w(!0,e.target.value))};#I=e=>{let a=e.target.checked,s=this.#l(l.getState().backdrop)||"default";l.setBackdrop(this.#k(a,s)),this.#x(a)};#V=e=>{l.setBackdrop(this.#k(!0,e.target.value))};#G=e=>{let a=this.#u(l.getState().backdropChrome);l.setBackdropChrome(this.#E(e.target.value,a))};#U=e=>{let a=this.#h(l.getState().backdropChrome);l.setBackdropChrome(this.#E(a,e.target.checked))};#W=async e=>{let a=e.target.checked;this.#n=a,await u.set(E,"sticky",a?"on":"off");let s=document.querySelector("header");if(a){document.documentElement.dataset.sticky="",s&&(s.dataset.sticky="");let{initStickyManager:r}=await Promise.resolve().then(()=>(G(),V));r()}else{delete document.documentElement.dataset.sticky,s&&delete s.dataset.sticky;let{destroyStickyManager:r}=await Promise.resolve().then(()=>(G(),V));r()}};#j=e=>{let a=e.target.value;if(this.#m(a),a==="color"){let s=this.#e.querySelector('[name="settings-page-bg-color"]')?.value||"#1a1a2e";l.setPageBg({type:a,color:s})}else if(a==="gradient"){let s=this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.value||"#1a1a2e",r=this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.value||"#16213e",n=this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.value||"to bottom";l.setPageBg({type:a,gradStart:s,gradEnd:r,gradDir:n})}else l.setPageBg({})};#i=()=>{let e=this.#e.querySelector('[name="settings-page-bg"]')?.value||"";if(e==="color"){let a=this.#e.querySelector('[name="settings-page-bg-color"]')?.value||"";l.setPageBg({type:e,color:a})}else if(e==="gradient"){let a=this.#e.querySelector('[name="settings-page-bg-grad-start"]')?.value||"",s=this.#e.querySelector('[name="settings-page-bg-grad-end"]')?.value||"",r=this.#e.querySelector('[name="settings-page-bg-grad-dir"]')?.value||"to bottom";l.setPageBg({type:e,gradStart:a,gradEnd:s,gradDir:r})}};#z=e=>{let a=e.target.dataset.a11y,s=this.#c();if(e.target.checked&&!s.includes(a))s.push(a);else if(!e.target.checked){let r=s.indexOf(a);r!==-1&&s.splice(r,1)}this.#B(s),this.#p(),window.dispatchEvent(new CustomEvent("vb:a11y-themes-change",{detail:s}))};#N=e=>{let a=e.target.dataset.ext,s=e.target.checked;this.#J(a,s),this.#C()};#K=e=>{let a=e.target.dataset.env,s=e.target.checked;O.setSource(a,s)};#X=()=>{confirm("Reset all settings to defaults?")&&(l.reset(),this.#B([]),this.#p(),window.dispatchEvent(new CustomEvent("vb:a11y-themes-change",{detail:[]})),this.#s={...U},u.remove(E,"extensions").catch(()=>{}),this.#C(),this.#n=!1,u.remove(E,"sticky").catch(()=>{}),delete document.documentElement.dataset.sticky,Promise.resolve().then(()=>(G(),V)).then(e=>e.destroyStickyManager()).catch(()=>{}),O.setSource("timeOfDay",!1),O.setSource("seasonal",!1),this.#o())};#g=()=>{this.#o()};#o(){let{mode:e,brand:a,fluid:s,backdrop:r,backdropChrome:n,pageBgType:i,pageBgColor:c,pageBgGradStart:h,pageBgGradEnd:y,pageBgGradDir:p}=l.getState(),f=this.#c(),d=this.#f(),T=this.#b(s),A=this.#d(s),m=this.#S(r),v=this.#l(r),o=this.#e.querySelector(`input[name="settings-mode"][value="${e}"]`);o&&(o.checked=!0);let b=this.#e.querySelector("#settings-theme");b&&(b.value=a||"default");let M=this.#e.querySelector("input[data-fluid-toggle]");M&&(M.checked=T);let ae=this.#e.querySelector(`input[name="settings-density"][value="${A}"]`);ae&&(ae.checked=!0),this.#_(T);let se=this.#e.querySelector("input[data-backdrop-toggle]");se&&(se.checked=m);let re=this.#e.querySelector(`input[name="settings-backdrop"][value="${v}"]`);re&&(re.checked=!0);let Ie=this.#h(n),ne=this.#e.querySelector(`input[name="settings-backdrop-chrome"][value="${Ie}"]`);ne&&(ne.checked=!0);let ie=this.#e.querySelector("input[data-backdrop-fixed]");ie&&(ie.checked=this.#u(n)),this.#x(m);let oe=this.#e.querySelector('[name="settings-page-bg"]');oe&&(oe.value=i||"");let ce=this.#e.querySelector('[name="settings-page-bg-color"]');ce&&c&&(ce.value=c);let de=this.#e.querySelector('[name="settings-page-bg-grad-start"]');de&&h&&(de.value=h);let le=this.#e.querySelector('[name="settings-page-bg-grad-end"]');le&&y&&(le.value=y);let he=this.#e.querySelector('[name="settings-page-bg-grad-dir"]');he&&p&&(he.value=p),m&&this.#m(i||""),this.#e.querySelectorAll("input[data-a11y]").forEach(F=>{let S=F;S.checked=f.includes(S.dataset.a11y)}),this.#e.querySelectorAll("input[data-ext]").forEach(F=>{let S=F,D=S.dataset.ext,Ge=d[D];S.checked=Ge??U[D]});let ue=this.#e.querySelector("input[data-sticky-toggle]");ue&&(ue.checked=this.#v());let Ve=this.#y();this.#e.querySelectorAll("input[data-env]").forEach(F=>{let S=F,D=S.dataset.env;S.checked=Ve[D]??!1})}#_(e){let a=this.#e.querySelector(".density-row");a&&(a.hidden=!e)}#x(e){if(this.#e.querySelectorAll(".backdrop-row").forEach(a=>{a.hidden=!e}),e){let a=this.#e.querySelector('[name="settings-page-bg"]')?.value||"";this.#m(a)}}#m(e){let a=this.#e.querySelector(".page-bg-color-row"),s=this.#e.querySelector(".page-bg-grad-row"),r=this.#e.querySelector(".page-bg-grad-dir-row");a&&(a.hidden=e!=="color"),s&&(s.hidden=e!=="gradient"),r&&(r.hidden=e!=="gradient")}#c(){return[...this.#r]}#B(e){this.#r=[...e],u.set(E,"a11y",this.#r).catch(()=>{})}#p(){let e=this.#c(),{brand:a}=l.getState(),s=document.documentElement,r=a!=="default"?[a,...e]:[...e];r.length?s.dataset.theme=r.join(" "):delete s.dataset.theme}#Y(){this.#p()}#y(){return O.load()}#f(){return{...this.#s}}#J(e,a){this.#s={...this.#s,[e]:a},u.set(E,"extensions",this.#s).catch(()=>{})}async#C(){let e=this.#f(),a=document.documentElement;e.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",e.sounds?($||($=(await Promise.resolve().then(()=>(He(),Re))).SoundManager),$.init(),$.enable()):$&&$.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:e}))}async#T(){let e=this.#e.querySelector("[data-sw-status] span");if(e){if(!("serviceWorker"in navigator)){e.textContent="Not supported";return}try{let s=(await Fe()).cachedURLs?.length??0;e.textContent=`Active (${s} cached files)`}catch{e.textContent="Not registered"}}}#Q=async e=>{let a=e.target;a.disabled=!0,a.textContent="Clearing\u2026";try{await Oe(),a.textContent="Cleared!",this.#T(),setTimeout(()=>{a.textContent="Clear Cache",a.disabled=!1},2e3)}catch{a.textContent="Failed",setTimeout(()=>{a.textContent="Clear Cache",a.disabled=!1},2e3)}};#Z=async e=>{let a=e.target;a.disabled=!0,a.textContent="Checking\u2026";try{let{updated:s}=await De();a.textContent=s?"Update available!":"Up to date",setTimeout(()=>{a.textContent="Check for Updates",a.disabled=!1},2e3)}catch{a.textContent="Failed",setTimeout(()=>{a.textContent="Check for Updates",a.disabled=!1},2e3)}};open(){this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),this.#o(),this.#ee())}#ee(){let e=this.getBoundingClientRect(),a=this.#e;a.style.removeProperty("top"),a.style.removeProperty("bottom"),a.style.removeProperty("left"),a.style.removeProperty("right");let s=a.getBoundingClientRect(),r=window.innerWidth,n=window.innerHeight,i=e.top,c=n-e.bottom;i<s.height&&c>i?(a.style.top="calc(100% + 8px)",a.style.bottom="auto"):(a.style.bottom="calc(100% + 8px)",a.style.top="auto");let h=r-e.right,y=e.left,p=s.width;e.right<p&&y<h?(a.style.left="0",a.style.right="auto"):(a.style.right="0",a.style.left="auto")}close(){this.#a&&(this.#a=!1,this.removeAttribute("open"),this.#t?.setAttribute("aria-expanded","false"))}toggle(){this.#a?this.close():this.open()}};ye("settings-panel",te);export{te as SettingsPanel};
|
|
195
195
|
//# sourceMappingURL=settings-panel.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var b=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function p(n,t,i={}){let e=i.priority??10,r={impl:t,bundle:i.bundle,contract:i.contract,priority:e},o=u.get(n);if(customElements.get(n)){if(!o||o.priority>=e){o&&o.priority===e&&o.impl!==t&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${o.bundle}" (priority ${o.priority}). Skipping "${i.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${o.bundle}" cannot be replaced (customElements.define is permanent). "${i.bundle}" has higher priority but arrived late.`);return}if(o&&o.priority>=e){o.priority===e&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${o.bundle}". Skipping "${i.bundle}" (first wins at equal priority).`);return}u.set(n,r),customElements.define(n,t)}var a=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let t of this.#e)t();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,i,e,r){t.addEventListener(i,e,r),this.#e.push(()=>t.removeEventListener(i,e,r))}setup(){}teardown(){}};var l=new Map([["x",{label:"X",iconName:"twitter",buildUrl:({url:n,title:t})=>`https://x.com/intent/post?url=${s(n)}&text=${s(t)}`}],["twitter",{label:"X",iconName:"twitter",buildUrl:({url:n,title:t})=>`https://x.com/intent/post?url=${s(n)}&text=${s(t)}`}],["facebook",{label:"Facebook",iconName:"facebook",buildUrl:({url:n})=>`https://www.facebook.com/sharer/sharer.php?u=${s(n)}`}],["linkedin",{label:"LinkedIn",iconName:"linkedin",buildUrl:({url:n})=>`https://www.linkedin.com/sharing/share-offsite/?url=${s(n)}`}],["whatsapp",{label:"WhatsApp",iconName:"whatsapp",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://wa.me/?text=${s(`${t} ${n}`)}`}],["telegram",{label:"Telegram",iconName:"telegram",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://t.me/share/url?url=${s(n)}&text=${s(t)}`}],["bluesky",{label:"Bluesky",iconName:"bluesky",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://bsky.app/intent/compose?text=${s(`${t} ${n}`)}`}],["mastodon",{label:"Mastodon",iconName:"mastodon",iconSet:"custom",buildUrl:({url:n,title:t},i="mastodon.social")=>`https://${i}/share?text=${s(`${t} ${n}`)}`}],["email",{label:"Email",iconName:"mail",buildUrl:({url:n,title:t,text:i})=>`mailto:?subject=${s(t)}&body=${s(`${i}
|
|
1
|
+
var b=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function p(n,t,i={}){let e=i.priority??10,r={impl:t,bundle:i.bundle,contract:i.contract,priority:e},o=u.get(n);if(customElements.get(n)){if(!o||o.priority>=e){o&&o.priority===e&&o.impl!==t&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${o.bundle}" (priority ${o.priority}). Skipping "${i.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${o.bundle}" cannot be replaced (customElements.define is permanent). "${i.bundle}" has higher priority but arrived late.`);return}if(o&&o.priority>=e){o.priority===e&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${o.bundle}". Skipping "${i.bundle}" (first wins at equal priority).`);return}u.set(n,r),customElements.define(n,t)}var a=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let t of this.#e)t();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,i,e,r){t.addEventListener(i,e,r),this.#e.push(()=>t.removeEventListener(i,e,r))}setup(){}teardown(){}};var l=new Map([["x",{label:"X",iconName:"twitter",buildUrl:({url:n,title:t})=>`https://x.com/intent/post?url=${s(n)}&text=${s(t)}`}],["twitter",{label:"X",iconName:"twitter",buildUrl:({url:n,title:t})=>`https://x.com/intent/post?url=${s(n)}&text=${s(t)}`}],["facebook",{label:"Facebook",iconName:"facebook",buildUrl:({url:n})=>`https://www.facebook.com/sharer/sharer.php?u=${s(n)}`}],["linkedin",{label:"LinkedIn",iconName:"linkedin",buildUrl:({url:n})=>`https://www.linkedin.com/sharing/share-offsite/?url=${s(n)}`}],["whatsapp",{label:"WhatsApp",iconName:"whatsapp",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://wa.me/?text=${s(`${t} ${n}`)}`}],["telegram",{label:"Telegram",iconName:"telegram",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://t.me/share/url?url=${s(n)}&text=${s(t)}`}],["bluesky",{label:"Bluesky",iconName:"bluesky",iconSet:"custom",buildUrl:({url:n,title:t})=>`https://bsky.app/intent/compose?text=${s(`${t} ${n}`)}`}],["mastodon",{label:"Mastodon",iconName:"mastodon",iconSet:"custom",buildUrl:({url:n,title:t},i="mastodon.social")=>`https://${i}/share?text=${s(`${t} ${n}`)}`}],["email",{label:"Email",iconName:"mail",buildUrl:({url:n,title:t,text:i})=>`mailto:?subject=${s(t)}&body=${s(`${i}
|
|
2
2
|
|
|
3
3
|
${n}`)}`}],["copy",{label:"Copy link",iconName:"link",buildUrl:()=>""}]]),c="x,linkedin,bluesky,mastodon,whatsapp,email,copy";function s(n){return encodeURIComponent(n)}var d=class extends a{#e;#r;#o;#i;#n=null;#t=null;get url(){return this.#e}set url(t){this.#e=t}get title(){return this.#r??""}set title(t){this.#r=t}get text(){return this.#o}set text(t){this.#o=t}setup(){if(this.#c(),this.#d(),this.closest("selection-menu")){this.#h(),this.setAttribute("data-tier-resolved","selection");return}this.#i==="native"?this.#u():this.#i==="hidden"?this.style.display="none":this.children.length>0?this.#m():this.#p(),this.setAttribute("data-tier-resolved",this.#i)}teardown(){this.removeAttribute("data-tier-resolved"),this.#n&&(clearTimeout(this.#n),this.#n=null),this.#t&&(this.#t.removeEventListener("click",this.#s),this.#t.remove(),this.#t=null),this.querySelector(".share-trigger")?.remove()}async share(){this.#i==="native"&&await this.#a()}#c(){this.#e=this.getAttribute("url")||document.querySelector('link[rel="canonical"]')?.getAttribute("href")||location.href,this.#r=this.getAttribute("title")||document.querySelector('meta[property="og:title"]')?.getAttribute("content")||document.title,this.#o=this.getAttribute("text")||document.querySelector('meta[name="description"]')?.getAttribute("content")||document.querySelector('meta[property="og:description"]')?.getAttribute("content")||""}#d(){let t=this.getAttribute("tier");if(t==="platforms"||t==="native"){t==="native"&&!navigator.share?this.#i="hidden":this.#i=t;return}if((this.getAttribute("platforms")||c)==="native-only"){this.#i=typeof navigator.share=="function"?"native":"hidden";return}this.#i=typeof navigator.share=="function"?"native":"platforms"}#h(){let t=document.createElement("button");t.type="button",t.setAttribute("aria-label","Share selection");let i=document.createElement("icon-wc");i.setAttribute("name","share-2"),i.setAttribute("size","sm"),i.setAttribute("aria-hidden","true"),t.appendChild(i),t.addEventListener("click",()=>{let e=this.closest("selection-menu"),o=e?.getSelection?.()?.text||window.getSelection()?.toString()||"";o&&navigator.share?navigator.share({text:`"${o}" \u2014 ${location.href}`}).catch(()=>{}):o&&navigator.clipboard?.writeText(`"${o}" \u2014 ${location.href}`).catch(()=>{}),e?.dismiss?.()}),this.appendChild(t)}#u(){let t=this.getAttribute("label")||"Share",i=document.createElement("button");i.type="button",i.className="share-trigger",i.setAttribute("aria-label","Share this page"),i.innerHTML=`<icon-wc name="share-2" size="sm" aria-hidden="true"></icon-wc><span class="share-label">${t}</span>`,i.addEventListener("click",this.#b),this.appendChild(i)}#p(){let t=(this.getAttribute("platforms")||c).split(",").map(i=>i.trim()).filter(Boolean);this.#t=document.createElement("nav"),this.#t.setAttribute("aria-label","Share this page");for(let i of t){let e=l.get(i);if(!e)continue;let r=document.createElement("button");r.type="button",r.dataset.platform=i,r.setAttribute("aria-label",i==="copy"?"Copy link":`Share on ${e.label}`);let o=e.iconSet?` set="${e.iconSet}"`:"";r.innerHTML=`<icon-wc name="${e.iconName}" size="sm"${o} aria-hidden="true"></icon-wc><span class="share-label">${e.label}</span>`,this.#t.appendChild(r)}this.#t.addEventListener("click",this.#s),this.appendChild(this.#t)}#m(){if(this.querySelector("nav"))this.#t=this.querySelector("nav");else{let e=document.createElement("nav");for(e.setAttribute("aria-label","Share this page");this.firstChild;)e.appendChild(this.firstChild);this.appendChild(e),this.#t=e}let t=this.querySelectorAll("a[data-platform]");for(let e of t){let r=e.getAttribute("href")||"";e.setAttribute("href",r.replace(/\{url\}/g,encodeURIComponent(this.#e||"")).replace(/\{title\}/g,encodeURIComponent(this.#r||"")).replace(/\{text\}/g,encodeURIComponent(this.#o||"")))}let i=this.querySelectorAll('[data-platform="copy"]');for(let e of i)e.addEventListener("click",this.#l);this.#t.addEventListener("click",this.#s)}#b=async()=>{await this.#a()};async#a(){let t={url:this.#e||"",title:this.#r||"",text:this.#o||""};this.dispatchEvent(new CustomEvent("share-wc:open",{detail:{platform:"native"},bubbles:!0}));try{if(navigator.canShare&&!navigator.canShare(t))throw new Error("Payload not shareable");await navigator.share(t),this.dispatchEvent(new CustomEvent("share-wc:success",{detail:{platform:"native"},bubbles:!0}))}catch(i){i.name!=="AbortError"&&this.dispatchEvent(new CustomEvent("share-wc:error",{detail:{platform:"native",error:i},bubbles:!0}))}}#s=t=>{let i=t.target.closest("[data-platform]");if(!i)return;let e=i.dataset.platform;if(e==="copy"){this.#l(t,i);return}if(i.tagName==="A"||!e)return;let r=l.get(e);if(!r)return;this.dispatchEvent(new CustomEvent("share-wc:open",{detail:{platform:e},bubbles:!0}));let o={url:this.#e||"",title:this.#r||"",text:this.#o||""};if(e==="email")location.href=r.buildUrl(o);else if(e==="mastodon"){let h=this.getAttribute("mastodon-instance")||"mastodon.social",m=r.buildUrl(o,h);window.open(m,"_blank","noopener,noreferrer")}else window.open(r.buildUrl(o),"_blank","noopener,noreferrer");this.dispatchEvent(new CustomEvent("share-wc:success",{detail:{platform:e},bubbles:!0}))};#l=async(t,i)=>{let e=i||t?.target?.closest('[data-platform="copy"]');if(e)try{await navigator.clipboard.writeText(this.#e||""),e.dataset.state="copied";let r=e.querySelector(".share-label"),o=r?.textContent;r&&(r.textContent="Copied!");let h=e.querySelector("[aria-live]")||e;e.querySelector("[aria-live]")||e.setAttribute("aria-live","polite"),this.dispatchEvent(new CustomEvent("share-wc:success",{detail:{platform:"copy"},bubbles:!0})),this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>{delete e.dataset.state,r&&o&&(r.textContent=o),e.removeAttribute("aria-live"),this.#n=null},2e3)}catch(r){this.dispatchEvent(new CustomEvent("share-wc:error",{detail:{platform:"copy",error:r},bubbles:!0}))}}};p("share-wc",d);export{d as ShareWc};
|
|
4
4
|
//# sourceMappingURL=share-wc.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var H=window.matchMedia("(prefers-reduced-motion: reduce)");var g=new Map;function E(t,e,n={}){let o=n.priority??10,s={impl:e,bundle:n.bundle,contract:n.contract,priority:o},r=g.get(t);if(customElements.get(t)){if(!r||r.priority>=o){r&&r.priority===o&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${n.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=o){r.priority===o&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}g.set(t,s),customElements.define(t,e)}var f=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,n,o,s){e.addEventListener(n,o,s),this.#e.push(()=>e.removeEventListener(n,o,s))}setup(){}teardown(){}};var p=/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),k={mac:{meta:"\u2318",cmd:"\u2318",alt:"\u2325",shift:"\u21E7",ctrl:"\u2303"},other:{meta:"Ctrl",cmd:"Ctrl",alt:"Alt",shift:"Shift",ctrl:"Ctrl"}};function w(t){let e=p?k.mac:k.other;return t.split("+").map(n=>{let o=n.trim().toLowerCase();return e[o]??o.toUpperCase()}).join(p?"":"+")}function C(t){let e=t.toLowerCase().split("+").map(o=>o.trim());return{key:e.pop()??"",meta:e.includes("meta")||e.includes("cmd"),ctrl:e.includes("ctrl"),shift:e.includes("shift"),alt:e.includes("alt")}}function M(t,e){if(t.key.toLowerCase()!==e.key)return!1;let n,o;return p?(n=e.meta,o=e.ctrl):(n=!1,o=e.meta||e.ctrl),!(n!==t.metaKey||o!==t.ctrlKey||e.shift!==t.shiftKey||e.alt!==t.altKey)}var L=new Set(["INPUT","TEXTAREA","SELECT"]),d=[],N=!1;function S(t){let e=L.has(t.target.tagName)||t.target.isContentEditable;for(let n of d)if(!(e&&!n.global)&&M(t,n.descriptor)){t.preventDefault(),n.callback(t);return}}function $(){N||(document.addEventListener("keydown",S),N=!0)}function x(t,e,n={}){$();let o=C(t),s={combo:t,descriptor:o,callback:e,global:n.global===!0};return d.find(c=>c.combo===t)&&console.warn(`[hotkey-bind] Shortcut "${t}" already bound. Last-connected-wins.`),d.unshift(s),function(){let l=d.indexOf(s);l!==-1&&d.splice(l,1)}}var
|
|
1
|
+
var H=window.matchMedia("(prefers-reduced-motion: reduce)");var g=new Map;function E(t,e,n={}){let o=n.priority??10,s={impl:e,bundle:n.bundle,contract:n.contract,priority:o},r=g.get(t);if(customElements.get(t)){if(!r||r.priority>=o){r&&r.priority===o&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${n.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=o){r.priority===o&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}g.set(t,s),customElements.define(t,e)}var f=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,n,o,s){e.addEventListener(n,o,s),this.#e.push(()=>e.removeEventListener(n,o,s))}setup(){}teardown(){}};var p=/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),k={mac:{meta:"\u2318",cmd:"\u2318",alt:"\u2325",shift:"\u21E7",ctrl:"\u2303"},other:{meta:"Ctrl",cmd:"Ctrl",alt:"Alt",shift:"Shift",ctrl:"Ctrl"}};function w(t){let e=p?k.mac:k.other;return t.split("+").map(n=>{let o=n.trim().toLowerCase();return e[o]??o.toUpperCase()}).join(p?"":"+")}function C(t){let e=t.toLowerCase().split("+").map(o=>o.trim());return{key:e.pop()??"",meta:e.includes("meta")||e.includes("cmd"),ctrl:e.includes("ctrl"),shift:e.includes("shift"),alt:e.includes("alt")}}function M(t,e){if(t.key.toLowerCase()!==e.key)return!1;let n,o;return p?(n=e.meta,o=e.ctrl):(n=!1,o=e.meta||e.ctrl),!(n!==t.metaKey||o!==t.ctrlKey||e.shift!==t.shiftKey||e.alt!==t.altKey)}var L=new Set(["INPUT","TEXTAREA","SELECT"]),d=[],N=!1;function S(t){let e=L.has(t.target.tagName)||t.target.isContentEditable;for(let n of d)if(!(e&&!n.global)&&M(t,n.descriptor)){t.preventDefault(),n.callback(t);return}}function $(){N||(document.addEventListener("keydown",S),N=!0)}function x(t,e,n={}){$();let o=C(t),s={combo:t,descriptor:o,callback:e,global:n.global===!0};return d.find(c=>c.combo===t)&&console.warn(`[hotkey-bind] Shortcut "${t}" already bound. Last-connected-wins.`),d.unshift(s),function(){let l=d.indexOf(s);l!==-1&&d.splice(l,1)}}var b=class extends f{#e;#t=null;setup(){this.#n(),this.#t=x("shift+?",()=>{this.#e.open?this.#e.close():this.#o()})}teardown(){this.#t?.(),this.#t=null,this.#e?.remove(),this.#e=null}#n(){this.#e=document.createElement("dialog"),this.#e.className="shortcut-dialog",this.#e.addEventListener("click",e=>{e.target===this.#e&&this.#e.close()}),this.appendChild(this.#e)}#o(){this.#e.innerHTML="";let e=document.createElement("div");e.className="shortcut-header",e.innerHTML="<h2>Keyboard Shortcuts</h2>",this.#e.appendChild(e);let n=document.createElement("div");n.className="shortcut-body";let{getRegisteredCommands:o}=window.__commandRegistry||{},s=new Map;if(s.set("General",[{label:"Show keyboard shortcuts",shortcut:"shift+?"}]),o)for(let[c,l]of o())for(let i of l){if(!i.shortcut)continue;let a=s.get(c)||[];a.push({label:i.label,shortcut:i.shortcut}),s.set(c,a)}let{getHotkeyActions:r}=window.__hotkeyActionRegistry||{};if(r)for(let[c,l]of r()){let i=s.get(c)||[];for(let a of l)i.push({label:a.label,shortcut:a.shortcut});s.set(c,i)}for(let[c,l]of s){let i=document.createElement("div");i.className="shortcut-group";let a=document.createElement("div");a.className="shortcut-group-header",a.textContent=c,i.appendChild(a);for(let y of l){let u=document.createElement("div");u.className="shortcut-row";let h=document.createElement("span");h.className="shortcut-label",h.textContent=y.label;let m=document.createElement("kbd");m.className="shortcut-kbd",m.textContent=w(y.shortcut),u.appendChild(h),u.appendChild(m),i.appendChild(u)}n.appendChild(i)}this.#e.appendChild(n),this.#e.showModal()}};E("short-cuts",b);export{b as ShortCuts};
|
|
2
2
|
//# sourceMappingURL=short-cuts.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var x=window.matchMedia("(prefers-reduced-motion: reduce)");var y=new Map;function S(u,e,t={}){let n=t.priority??10,o={impl:e,bundle:t.bundle,contract:t.contract,priority:n},r=y.get(u);if(customElements.get(u)){if(!r||r.priority>=n){r&&r.priority===n&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${u}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${u}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=n){r.priority===n&&console.warn(`[VB Bundle] Tag <${u}> already registered by "${r.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}y.set(u,o),customElements.define(u,e)}var h=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,n,o){e.addEventListener(t,n,o),this.#e.push(()=>e.removeEventListener(t,n,o))}setup(){}teardown(){}};var m=class extends h{#e=null;#t=[];#n=null;setup(){let e=this.getAttribute("src");e?this.#p(e).then(()=>this.#o()):this.#o()}teardown(){this.#e?.disconnect()}#o(){this.#s(),this.#c(),this.#l();let e=this.getAttribute("letters")||"entries";e!=="none"&&this.#a(e==="all"),this.#u()}#s(){let e=this.querySelector('nav[aria-label="Site index"]');e&&(this.#t=[...e.querySelectorAll(":scope > section")])}#c(){let e=this.querySelectorAll('nav[aria-label="Site index"] > section');for(let t of e){let n=t.querySelectorAll(":scope > ul > li"),o=0;for(let s of n){let c=s.querySelectorAll(".index-refs > li").length;o+=c;let l=s.querySelector(".index-term");if(l&&c>0&&!l.querySelector(".index-count")){let d=document.createElement("span");d.className="index-count",d.textContent=`(${c})`,l.after(d)}}let r=t.querySelector("h2");if(r&&o>0&&!r.querySelector(".index-count")){let s=document.createElement("span");s.className="index-count",s.textContent=`(${o})`,r.append(s)}}}#l(){let e=document.createElement("nav");e.setAttribute("data-index-controls",""),e.setAttribute("aria-label","Index controls");let t=this.getAttribute("placeholder")||"Filter index\u2026",n=document.createElement("input");n.type="search",n.placeholder=t,n.setAttribute("aria-label",t),n.setAttribute("data-index-search",""),n.addEventListener("input",()=>this.#r(n.value)),e.append(n);let o=document.createElement("select");o.setAttribute("aria-label","Search scope"),o.innerHTML=`
|
|
1
|
+
var x=window.matchMedia("(prefers-reduced-motion: reduce)");var y=new Map;function S(u,e,t={}){let n=t.priority??10,o={impl:e,bundle:t.bundle,contract:t.contract,priority:n},r=y.get(u);if(customElements.get(u)){if(!r||r.priority>=n){r&&r.priority===n&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${u}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${u}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=n){r.priority===n&&console.warn(`[VB Bundle] Tag <${u}> already registered by "${r.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}y.set(u,o),customElements.define(u,e)}var h=class extends HTMLElement{#e=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0})))}disconnectedCallback(){for(let e of this.#e)e();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,t,n,o){e.addEventListener(t,n,o),this.#e.push(()=>e.removeEventListener(t,n,o))}setup(){}teardown(){}};var m=class extends h{#e=null;#t=[];#n=null;setup(){let e=this.getAttribute("src");e?this.#p(e).then(()=>this.#o()):this.#o()}teardown(){this.#e?.disconnect()}#o(){this.#s(),this.#c(),this.#l();let e=this.getAttribute("letters")||"entries";e!=="none"&&this.#a(e==="all"),this.#u()}#s(){let e=this.querySelector('nav[aria-label="Site index"]');e&&(this.#t=[...e.querySelectorAll(":scope > section")])}#c(){let e=this.querySelectorAll('nav[aria-label="Site index"] > section');for(let t of e){let n=t.querySelectorAll(":scope > ul > li"),o=0;for(let s of n){let c=s.querySelectorAll(".index-refs > li").length;o+=c;let l=s.querySelector(".index-term");if(l&&c>0&&!l.querySelector(".index-count")){let d=document.createElement("span");d.className="index-count",d.textContent=`(${c})`,l.after(d)}}let r=t.querySelector("h2");if(r&&o>0&&!r.querySelector(".index-count")){let s=document.createElement("span");s.className="index-count",s.textContent=`(${o})`,r.append(s)}}}#l(){let e=document.createElement("nav");e.setAttribute("data-index-controls",""),e.setAttribute("aria-label","Index controls");let t=this.getAttribute("placeholder")||"Filter index\u2026",n=document.createElement("input");n.type="search",n.placeholder=t,n.setAttribute("aria-label",t),n.setAttribute("data-index-search",""),n.addEventListener("input",()=>this.#r(n.value)),e.append(n);let o=document.createElement("select");o.setAttribute("aria-label","Search scope"),o.innerHTML=`
|
|
2
2
|
<option value="topic">By Topic</option>
|
|
3
3
|
<option value="all">All</option>
|
|
4
4
|
`,this.getAttribute("filter")==="all"&&(o.value="all"),o.addEventListener("change",()=>this.#r(n.value)),this.#n=o,e.append(o);let s=document.createElement("select");s.setAttribute("aria-label","Sort order"),s.innerHTML=`
|