vanilla-breeze 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/custom-elements.json +13966 -11505
  2. package/dist/cdn/components/accordion-wc.js +1 -1
  3. package/dist/cdn/components/activity-feed.js +1 -1
  4. package/dist/cdn/components/ai-chat.js +9 -6
  5. package/dist/cdn/components/ai-summary.js +4 -2
  6. package/dist/cdn/components/analytics-panel.js +19 -21
  7. package/dist/cdn/components/audio-player.js +17 -7
  8. package/dist/cdn/components/audio-visualizer.js +3 -3
  9. package/dist/cdn/components/author-index.js +2 -2
  10. package/dist/cdn/components/brand-mark.js +1 -1
  11. package/dist/cdn/components/bread-crumb.js +1 -1
  12. package/dist/cdn/components/calendar-wc.js +2 -2
  13. package/dist/cdn/components/card-list.js +1 -1
  14. package/dist/cdn/components/carousel-wc.js +1 -1
  15. package/dist/cdn/components/change-set.js +1 -11
  16. package/dist/cdn/components/chart-wc.js +32 -32
  17. package/dist/cdn/components/chat-input.js +1 -1
  18. package/dist/cdn/components/chat-window.js +1 -1
  19. package/dist/cdn/components/color-picker.js +1 -1
  20. package/dist/cdn/components/combo-box.js +1 -1
  21. package/dist/cdn/components/command-palette.js +1 -1
  22. package/dist/cdn/components/comment-box.js +49 -49
  23. package/dist/cdn/components/comment-thread.js +32 -32
  24. package/dist/cdn/components/comment-wc.js +1 -1
  25. package/dist/cdn/components/compare-surface.js +1 -1
  26. package/dist/cdn/components/consent-banner.js +1 -1
  27. package/dist/cdn/components/content-lens.js +1 -1
  28. package/dist/cdn/components/content-swap.js +1 -1
  29. package/dist/cdn/components/context-menu.js +1 -1
  30. package/dist/cdn/components/data-table.js +1 -1
  31. package/dist/cdn/components/date-picker.js +1 -1
  32. package/dist/cdn/components/day-view.js +1 -1
  33. package/dist/cdn/components/diagram-wc.js +2 -2
  34. package/dist/cdn/components/drag-surface.js +1 -1
  35. package/dist/cdn/components/drop-down.js +1 -1
  36. package/dist/cdn/components/emoji-picker.js +1 -1
  37. package/dist/cdn/components/flow-diagram.js +1 -1
  38. package/dist/cdn/components/foot-notes.js +1 -1
  39. package/dist/cdn/components/form-field.js +1 -1
  40. package/dist/cdn/components/geo-map.js +4 -4
  41. package/dist/cdn/components/glossary-index.js +1 -1
  42. package/dist/cdn/components/glossary-wc.js +1 -1
  43. package/dist/cdn/components/heading-links.js +1 -1
  44. package/dist/cdn/components/highlight-wc.js +2 -2
  45. package/dist/cdn/components/image-gallery.js +1 -1
  46. package/dist/cdn/components/image-map.js +1 -1
  47. package/dist/cdn/components/include-file.js +1 -1
  48. package/dist/cdn/components/manifest.json +100 -100
  49. package/dist/cdn/components/markdown-editor.js +1 -1
  50. package/dist/cdn/components/markdown-viewer.js +11 -11
  51. package/dist/cdn/components/nav-bar.js +1 -1
  52. package/dist/cdn/components/note-wc.js +2 -2
  53. package/dist/cdn/components/notification-wc.js +4 -4
  54. package/dist/cdn/components/page-info.js +2 -2
  55. package/dist/cdn/components/page-stats.js +1 -1
  56. package/dist/cdn/components/page-toc.js +1 -1
  57. package/dist/cdn/components/page-tools.js +1 -1
  58. package/dist/cdn/components/page-tour.js +5 -5
  59. package/dist/cdn/components/pager-wc.js +1 -1
  60. package/dist/cdn/components/poll-wc.js +1 -1
  61. package/dist/cdn/components/pop-over.js +1 -1
  62. package/dist/cdn/components/popularity-index.js +4 -4
  63. package/dist/cdn/components/print-page.js +1 -1
  64. package/dist/cdn/components/progress-tracker.js +1 -1
  65. package/dist/cdn/components/qr-code.js +1 -1
  66. package/dist/cdn/components/reaction-bar.js +1 -1
  67. package/dist/cdn/components/reader-view.js +3 -3
  68. package/dist/cdn/components/reading-progress.js +1 -1
  69. package/dist/cdn/components/recently-visited.js +7 -7
  70. package/dist/cdn/components/score-card.js +2 -2
  71. package/dist/cdn/components/selection-menu.js +1 -1
  72. package/dist/cdn/components/settings-panel.js +4 -4
  73. package/dist/cdn/components/share-wc.js +2 -2
  74. package/dist/cdn/components/short-cuts.js +1 -1
  75. package/dist/cdn/components/site-index.js +6 -6
  76. package/dist/cdn/components/site-map.js +1 -1
  77. package/dist/cdn/components/site-search.js +3 -3
  78. package/dist/cdn/components/slide-accept.js +1 -1
  79. package/dist/cdn/components/social-embed.js +1 -1
  80. package/dist/cdn/components/split-surface.js +1 -1
  81. package/dist/cdn/components/star-rating.js +1 -1
  82. package/dist/cdn/components/status-wc.js +1 -1
  83. package/dist/cdn/components/stepper-wc.js +1 -1
  84. package/dist/cdn/components/tab-set.js +1 -1
  85. package/dist/cdn/components/text-reader.js +2 -2
  86. package/dist/cdn/components/theme-picker.js +44 -44
  87. package/dist/cdn/components/time-index.js +2 -2
  88. package/dist/cdn/components/time-picker.js +1 -1
  89. package/dist/cdn/components/toast-msg.js +1 -1
  90. package/dist/cdn/components/tool-tip.js +1 -1
  91. package/dist/cdn/components/topic-map.js +3 -3
  92. package/dist/cdn/components/trust-filter.js +3 -3
  93. package/dist/cdn/components/version-switcher.js +3 -13
  94. package/dist/cdn/components/video-player.js +1 -1
  95. package/dist/cdn/components/watch-wc.js +2 -2
  96. package/dist/cdn/components/week-view.js +1 -1
  97. package/dist/cdn/components/youtube-player.js +1 -1
  98. package/dist/cdn/packs/effects.full.js +1 -1
  99. package/dist/cdn/packs/kawaii.effects.css +1 -1
  100. package/dist/cdn/packs/kawaii.full.css +1 -1
  101. package/dist/cdn/packs/kawaii.full.js +4 -4
  102. package/dist/cdn/packs/manifest.json +7 -7
  103. package/dist/cdn/packs/memphis.full.css +1 -1
  104. package/dist/cdn/packs/memphis.theme.css +1 -1
  105. package/dist/cdn/packs/ui.full.js +46 -46
  106. package/dist/cdn/themes/8bit.css +1 -1
  107. package/dist/cdn/themes/8bit.tokens.json +1 -1
  108. package/dist/cdn/themes/alpha1999-dark.tokens.json +1 -1
  109. package/dist/cdn/themes/alpha1999.tokens.json +1 -1
  110. package/dist/cdn/themes/art-deco-dark.tokens.json +33 -1
  111. package/dist/cdn/themes/art-deco.css +1 -1
  112. package/dist/cdn/themes/art-deco.tokens.json +23 -1
  113. package/dist/cdn/themes/bauhaus-dark.tokens.json +23 -1
  114. package/dist/cdn/themes/bauhaus.css +1 -1
  115. package/dist/cdn/themes/bauhaus.tokens.json +1 -1
  116. package/dist/cdn/themes/brutalist-dark.tokens.json +33 -1
  117. package/dist/cdn/themes/brutalist.css +1 -1
  118. package/dist/cdn/themes/brutalist.tokens.json +23 -1
  119. package/dist/cdn/themes/catppuccin-frappe.tokens.json +1 -1
  120. package/dist/cdn/themes/catppuccin-latte-dark.tokens.json +1 -1
  121. package/dist/cdn/themes/catppuccin-latte.tokens.json +1 -1
  122. package/dist/cdn/themes/catppuccin-macchiato.tokens.json +1 -1
  123. package/dist/cdn/themes/catppuccin-mocha.tokens.json +1 -1
  124. package/dist/cdn/themes/classic-dark.tokens.json +1 -1
  125. package/dist/cdn/themes/classic.tokens.json +1 -1
  126. package/dist/cdn/themes/claymorphism-dark.tokens.json +33 -1
  127. package/dist/cdn/themes/claymorphism.css +1 -1
  128. package/dist/cdn/themes/claymorphism.tokens.json +23 -1
  129. package/dist/cdn/themes/clinical-dark.tokens.json +1 -1
  130. package/dist/cdn/themes/clinical.tokens.json +1 -1
  131. package/dist/cdn/themes/cottagecore-dark.tokens.json +1 -1
  132. package/dist/cdn/themes/cottagecore.css +1 -1
  133. package/dist/cdn/themes/cottagecore.tokens.json +1 -1
  134. package/dist/cdn/themes/cyber.css +1 -1
  135. package/dist/cdn/themes/cyber.tokens.json +1 -1
  136. package/dist/cdn/themes/dawn-dark.tokens.json +33 -1
  137. package/dist/cdn/themes/dawn.css +1 -1
  138. package/dist/cdn/themes/dawn.tokens.json +23 -1
  139. package/dist/cdn/themes/dracula.tokens.json +1 -1
  140. package/dist/cdn/themes/dusk.css +1 -1
  141. package/dist/cdn/themes/dusk.tokens.json +1 -1
  142. package/dist/cdn/themes/editorial-dark.tokens.json +1 -1
  143. package/dist/cdn/themes/editorial.css +1 -1
  144. package/dist/cdn/themes/editorial.tokens.json +1 -1
  145. package/dist/cdn/themes/financial-dark.tokens.json +1 -1
  146. package/dist/cdn/themes/financial.tokens.json +1 -1
  147. package/dist/cdn/themes/genai.css +1 -1
  148. package/dist/cdn/themes/genai.tokens.json +1 -1
  149. package/dist/cdn/themes/glassmorphism-dark.tokens.json +1 -1
  150. package/dist/cdn/themes/glassmorphism.tokens.json +1 -1
  151. package/dist/cdn/themes/government-dark.tokens.json +1 -1
  152. package/dist/cdn/themes/government.tokens.json +1 -1
  153. package/dist/cdn/themes/gruvbox-dark.tokens.json +1 -1
  154. package/dist/cdn/themes/gruvbox.tokens.json +1 -1
  155. package/dist/cdn/themes/high-noon-dark.tokens.json +23 -1
  156. package/dist/cdn/themes/high-noon.css +1 -1
  157. package/dist/cdn/themes/high-noon.tokens.json +1 -1
  158. package/dist/cdn/themes/journal-dark.tokens.json +33 -1
  159. package/dist/cdn/themes/journal.css +1 -1
  160. package/dist/cdn/themes/journal.tokens.json +23 -1
  161. package/dist/cdn/themes/kawaii-dark.tokens.json +1 -1
  162. package/dist/cdn/themes/kawaii.css +1 -1
  163. package/dist/cdn/themes/kawaii.tokens.json +1 -1
  164. package/dist/cdn/themes/magna-dark.tokens.json +1 -1
  165. package/dist/cdn/themes/magna.tokens.json +1 -1
  166. package/dist/cdn/themes/manifest.json +26 -50
  167. package/dist/cdn/themes/midnight.tokens.json +1 -1
  168. package/dist/cdn/themes/minimal-dark.tokens.json +1 -1
  169. package/dist/cdn/themes/minimal.tokens.json +1 -1
  170. package/dist/cdn/themes/modern-dark.tokens.json +1 -1
  171. package/dist/cdn/themes/modern.tokens.json +1 -1
  172. package/dist/cdn/themes/nes-dark.tokens.json +1 -1
  173. package/dist/cdn/themes/nes.css +1 -1
  174. package/dist/cdn/themes/nes.tokens.json +1 -1
  175. package/dist/cdn/themes/neumorphism-dark.tokens.json +1 -1
  176. package/dist/cdn/themes/neumorphism.css +1 -1
  177. package/dist/cdn/themes/neumorphism.tokens.json +1 -1
  178. package/dist/cdn/themes/nord-dark.tokens.json +33 -1
  179. package/dist/cdn/themes/nord.css +1 -1
  180. package/dist/cdn/themes/nord.tokens.json +23 -1
  181. package/dist/cdn/themes/organic-dark.tokens.json +1 -1
  182. package/dist/cdn/themes/organic.css +1 -1
  183. package/dist/cdn/themes/organic.tokens.json +1 -1
  184. package/dist/cdn/themes/rose-pine-dark.tokens.json +1 -1
  185. package/dist/cdn/themes/rose-pine.tokens.json +1 -1
  186. package/dist/cdn/themes/rough-dark.tokens.json +1 -1
  187. package/dist/cdn/themes/rough.css +1 -1
  188. package/dist/cdn/themes/rough.tokens.json +1 -1
  189. package/dist/cdn/themes/solarized-dark.tokens.json +23 -1
  190. package/dist/cdn/themes/solarized.css +1 -1
  191. package/dist/cdn/themes/solarized.tokens.json +23 -1
  192. package/dist/cdn/themes/startup-dark.tokens.json +1 -1
  193. package/dist/cdn/themes/startup.tokens.json +1 -1
  194. package/dist/cdn/themes/super2026-dark.tokens.json +33 -1
  195. package/dist/cdn/themes/super2026.css +1 -1
  196. package/dist/cdn/themes/super2026.tokens.json +23 -1
  197. package/dist/cdn/themes/swiss-dark.tokens.json +1 -1
  198. package/dist/cdn/themes/swiss.css +1 -1
  199. package/dist/cdn/themes/swiss.tokens.json +1 -1
  200. package/dist/cdn/themes/terminal.css +1 -1
  201. package/dist/cdn/themes/terminal.tokens.json +1 -1
  202. package/dist/cdn/themes/tokyo-night-dark.tokens.json +33 -1
  203. package/dist/cdn/themes/tokyo-night.css +1 -1
  204. package/dist/cdn/themes/tokyo-night.tokens.json +23 -1
  205. package/dist/cdn/themes/vaporwave-dark.tokens.json +33 -1
  206. package/dist/cdn/themes/vaporwave.css +1 -1
  207. package/dist/cdn/themes/vaporwave.tokens.json +23 -1
  208. package/dist/cdn/themes/win9x-dark.tokens.json +15 -4
  209. package/dist/cdn/themes/win9x.css +1 -1
  210. package/dist/cdn/themes/win9x.tokens.json +1 -1
  211. package/dist/cdn/vanilla-breeze-autoload.js +663 -0
  212. package/dist/cdn/vanilla-breeze-charts.css +1 -1
  213. package/dist/cdn/vanilla-breeze-charts.js +32 -32
  214. package/dist/cdn/vanilla-breeze-core.css +1 -1
  215. package/dist/cdn/vanilla-breeze-core.js +78 -80
  216. package/dist/cdn/vanilla-breeze-dev.css +1 -1
  217. package/dist/cdn/vanilla-breeze-extras.js +47 -37
  218. package/dist/cdn/vanilla-breeze.css +1 -1
  219. package/dist/cdn/vanilla-breeze.js +180 -177
  220. package/package.json +12 -7
  221. package/dist/cdn/themes/amber.css +0 -2
  222. package/dist/cdn/themes/anthropic.css +0 -2
  223. package/dist/cdn/themes/anthropic.tokens.json +0 -564
  224. package/dist/cdn/themes/coral.css +0 -2
  225. package/dist/cdn/themes/emerald.css +0 -2
  226. package/dist/cdn/themes/forest.css +0 -2
  227. package/dist/cdn/themes/ibm.css +0 -2
  228. package/dist/cdn/themes/ibm.tokens.json +0 -568
  229. package/dist/cdn/themes/indigo.css +0 -2
  230. package/dist/cdn/themes/lavender.css +0 -2
  231. package/dist/cdn/themes/mcdonalds.css +0 -2
  232. package/dist/cdn/themes/mcdonalds.tokens.json +0 -533
  233. package/dist/cdn/themes/ocean.css +0 -2
  234. package/dist/cdn/themes/rose.css +0 -2
  235. package/dist/cdn/themes/slate.css +0 -2
  236. package/dist/cdn/themes/starbucks.css +0 -2
  237. package/dist/cdn/themes/starbucks.tokens.json +0 -593
  238. package/dist/cdn/themes/sunset.css +0 -2
@@ -1,6 +1,6 @@
1
- var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{for(var a in e)pe(t,a,{get:e[a],enumerable:!0})};var ue={};fe(ue,{SoundManager:()=>Se});var he,W,Se,me=ge(()=>{he="vb-sound",W={enabled:!1,volume:.5},Se={_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(he);return t?{...W,...JSON.parse(t)}:{...W}}catch{return{...W}}},_save(t){try{let e=this._load();localStorage.setItem(he,JSON.stringify({...e,...t}))}catch{}},_playTone(t,e,a="sine"){if(!this._enabled)return;let s=this._getContext(),n=s.createOscillator(),r=s.createGain();n.connect(r),r.connect(s.destination),n.frequency.value=t,n.type=a,r.gain.value=this._volume*.3,n.start(),r.gain.exponentialRampToValueAtTime(.01,s.currentTime+e),n.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 Te=window.matchMedia("(prefers-reduced-motion: reduce)");var Q=new Map;function Z(t,e,a={}){let s=a.priority??10,n={impl:e,bundle:a.bundle,contract:a.contract,priority:s},r=Q.get(t);if(customElements.get(t)){if(!r||r.priority>=s){r&&r.priority===s&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=s){r.priority===s&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}Q.set(t,n),customElements.define(t,e)}var x=class extends HTMLElement{#i=[];#t;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let e of this.#i)e();this.#i=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,a,s,n){e.addEventListener(a,s,n),this.#i.push(()=>e.removeEventListener(a,s,n))}setup(){}teardown(){}setState(e,a){this.#t||(this.#t=this.attachInternals());let s=this.#t.states;try{a?s.add(e):s.delete(e)}catch{let n=`--${e}`;a?s.add(n):s.delete(n)}}_adoptInternals(e){this.#t||(this.#t=e)}};var w=new Map,R=new Map;var ee=null;function j(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(ee)return ee;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 te=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),ye=new Set(["kawaii","memphis"]);function _(t){return ye.has(t)}function ae(t,e){return`${e}/themes/${t}.css`}function se(t,e){if(!_(t))return Promise.resolve();if(R.has(t))return R.get(t);let a=import(`${e}/packs/${t}.full.js`).catch(()=>{});return R.set(t,a),a}function we(t,e){let a=j(),s=()=>{(_(e)||t.hasAttribute("data-vb-pack"))&&se(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((n,r)=>{let i=()=>{t.setAttribute("data-vb-theme-state","ready"),c(),s(),n(void 0)},o=()=>{t.setAttribute("data-vb-theme-state","error"),w.delete(e),c(),r(new Error(`Failed to load theme: ${e}`))},c=()=>{t.removeEventListener("load",i),t.removeEventListener("error",o)};t.addEventListener("load",i,{once:!0}),t.addEventListener("error",o,{once:!0})})}async function $(t){if(!t||te.has(t))return;if(w.has(t))return w.get(t);if(typeof document<"u"){let s=document.querySelector(`link[data-vb-theme="${t}"]`);if(s){let n=we(s,t);return w.set(t,n),n}}let e=j(),a=_(t)?ve(t,e):be(t,e);return w.set(t,a),a}function ne(t){if(!t||te.has(t)||_(t)||w.has(t)||typeof document>"u"||document.querySelector(`link[data-vb-theme="${t}"]`))return;let a=j(),s=ae(t,a),n=document.createElement("link");n.rel="preload",n.as="style",n.href=s,n.setAttribute("data-vb-theme-preload",t),document.head.appendChild(n)}async function be(t,e){let a=ae(t,e);return new Promise((s,n)=>{let r=document.querySelector(`link[data-vb-theme-preload="${t}"]`);r&&r.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(),w.delete(t),n(new Error(`Failed to load theme: ${t}`))},document.head.appendChild(i)})}function ve(t,e){let a=`${e}/packs/${t}.theme.css`,s=`${e}/packs/${t}.effects.css`;return new Promise((n,r)=>{let i=document.querySelector(`link[data-vb-theme-preload="${t}"]`);i&&i.remove();let o=document.createElement("link");o.rel="stylesheet",o.href=a,o.setAttribute("data-vb-theme",t),o.setAttribute("data-vb-pack",t),o.setAttribute("data-vb-theme-state","loading"),o.onload=()=>{o.setAttribute("data-vb-theme-state","ready");let c=document.createElement("link");c.rel="stylesheet",c.href=s,c.setAttribute("data-vb-pack-effects",t),document.head.appendChild(c),se(t,e),n()},o.onerror=()=>{o.setAttribute("data-vb-theme-state","error"),o.remove(),w.delete(t),r(new Error(`Failed to load pack: ${t}`))},document.head.appendChild(o)})}var q=[{id:"auto",name:"Auto",icon:"monitor"},{id:"light",name:"Light",icon:"sun"},{id:"dark",name:"Dark",icon:"moon"}],T=[{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}}],M=[{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"}],H=[{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:"journal",name:"Journal",icon:"notebook-pen",character:"Dot-grid bullet journal",swatchBg:"#f3ecdc",swatchFg:"#27313f",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"}],B=[{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"}],ie=[{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"}],V=[{id:"",name:"Fixed",icon:"ruler",description:"Static token values"},{id:"default",name:"Fluid",icon:"move-diagonal-2",description:"Smooth viewport scaling"},{id:"compact",name:"Compact",icon:"minimize-2",description:"Tighter fluid range"},{id:"spacious",name:"Spacious",icon:"maximize-2",description:"Generous fluid range"}],z=[{id:"a11y-high-contrast",name:"High Contrast",icon:"contrast",description:"AAA contrast (7:1+)"},{id:"a11y-large-text",name:"Large Text",icon:"type",description:"25% larger fonts"},{id:"a11y-dyslexia",name:"Dyslexia",icon:"book-open",description:"Readable typography"}],G=[{id:"motionFx",name:"Motion Effects",icon:"sparkles",description:"Hover & enter animations"},{id:"sounds",name:"Sound Effects",icon:"volume-2",description:"Audio feedback"}],xe=[...H,...B],_e=[...M,...H,...B,...ie],v=t=>H.filter(e=>e.category===t),N=[{label:"Style",themes:M,tier:"core"},{label:"Design",themes:v("Design"),tier:"showcase"},{label:"Content",themes:v("Content"),tier:"showcase"},{label:"Modern",themes:v("Modern"),tier:"showcase"},{label:"Creative",themes:v("Creative"),tier:"showcase"},{label:"Aesthetic",themes:v("Aesthetic"),tier:"showcase"},{label:"Signature",themes:v("Signature"),tier:"showcase"},{label:"OS Styles",themes:v("OS Styles"),tier:"showcase"},{label:"Packs",themes:ie,tier:"showcase"},{label:"More Themes",themes:B,tier:"community"}];function Ee(){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 n=t.key(s);n&&n.startsWith(e)&&a.push(n)}return a}}}var F=null;function f(){return F||(F=Ee()),F}function U(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 re(t){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");return`vb:${t}:`}function oe(t){try{let e=JSON.parse(t);if(e&&typeof e=="object"&&typeof e.timestamp=="number")return e}catch{}return null}var p={configure(t={}){F=t.backend??null},async set(t,e,a){let s={data:a,timestamp:Date.now()};await f().setRaw(U(t,e),JSON.stringify(s))},async get(t,e,a){let s=await f().getRaw(U(t,e));if(s==null)return null;let n=oe(s);return!n||a?.maxAge!=null&&Date.now()-n.timestamp>a.maxAge?null:n.data},async remove(t,e){await f().removeRaw(U(t,e))},async list(t){let e=re(t),a=await f().keys(e),s=[];for(let n of a){let r=await f().getRaw(n);if(r==null)continue;let i=oe(r);i&&s.push({key:n.slice(e.length),data:i.data,timestamp:i.timestamp})}return s},async clear(t){let e=re(t),a=await f().keys(e);for(let s of a)await f().removeRaw(s)},async clearAll(){let t=await f().keys("vb:");for(let e of t)await f().removeRaw(e)},async setMany(t,e){for(let[a,s]of e)await p.set(t,a,s)}};var P="theme",D="current",u={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""};function de(t){return(t||"").split(/\s+/).find(e=>e&&!e.startsWith("a11y-"))||""}function ce(t,e){return t?.brand&&t.brand!==u.brand?t.brand:de(e)||u.brand}var le=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],d=null,E="",h={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let t=await p.get(P,D);d=t?{...u,...t}:{...u},E=de(document.documentElement.dataset.theme),d.brand=ce(t,E);try{await $(d.brand)}catch{d.brand!==E&&(d.brand=E||u.brand)}return this.apply(d),this._watchSystemPreference(),this._watchRootAttributes(),this._watchCrossDocumentStorage(),d})(),this._initPromise)},_watchCrossDocumentStorage(){typeof window>"u"||window.addEventListener("storage",async t=>{if(t.key!==`vb:${P}:${D}`||!t.newValue)return;let e;try{e=JSON.parse(t.newValue)?.data}catch{return}if(!e||typeof e!="object")return;let a={...u,...d,...e};if(a.brand=ce(e,E),a.brand&&a.brand!==d?.brand)try{await $(a.brand)}catch{a.brand=E||u.brand}d=a,this.apply(d||{})})},load(){return d?{...d}:{...u}},save(t){let e={...d??u,...t};return d=e,p.set(P,D,e).catch(()=>{}),e},apply({mode:t="auto",brand:e="default",borderStyle:a="",iconSet:s="",fluid:n="",backdrop:r="",backdropChrome:i="",pageBgType:o="",pageBgColor:c="",pageBgGradStart:g="",pageBgGradEnd:m="",pageBgGradDir:y=""}={}){let l=document.documentElement;l.dataset.mode=t==="auto"?this.getEffectiveMode():t;let k=(l.dataset.theme||"").split(" ").filter(I=>I.startsWith("a11y-")),J=e!=="default"?[e,...k]:[...k];J.length?l.dataset.theme=J.join(" "):delete l.dataset.theme;let C=a||this._readCSSHint("--theme-border-style");C&&C!=="clean"?l.dataset.borderStyle=C:delete l.dataset.borderStyle;let A=s||this._readCSSHint("--theme-icon-set");if(A&&A!=="lucide"?l.dataset.iconSet=A:delete l.dataset.iconSet,n?l.dataset.fluid=n:delete l.dataset.fluid,r?l.dataset.backdrop=r:delete l.dataset.backdrop,i&&i!=="card"?l.dataset.backdropChrome=i:delete l.dataset.backdropChrome,o==="color"&&c)l.style.setProperty("--page-bg-color",c),l.style.removeProperty("--page-bg-gradient");else if(o==="gradient"&&g&&m){let I=y||"to bottom";l.style.setProperty("--page-bg-gradient",`linear-gradient(${I}, ${g}, ${m})`),l.style.removeProperty("--page-bg-color")}else l.style.removeProperty("--page-bg-color"),l.style.removeProperty("--page-bg-gradient");let K=this.load().accent||"default";this._applyAccent(K),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:t,brand:e,accent:K,borderStyle:C,iconSet:A,fluid:n,backdrop:r,backdropChrome:i,pageBgType:o,effectiveMode:this.getEffectiveMode()}}))},setMode(t){let e=this.save({mode:t});this.apply(e)},async setBrand(t){try{await $(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:n=""}={}){let r=this.save({pageBgType:t,pageBgColor:e,pageBgGradStart:a,pageBgGradEnd:s,pageBgGradDir:n});this.apply(r)},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:n,fluid:r,backdrop:i,backdropChrome:o,pageBgType:c,pageBgColor:g,pageBgGradStart:m,pageBgGradEnd:y,pageBgGradDir:l}=this.load();return{mode:t,brand:e,accent:a,borderStyle:s,iconSet:n,fluid:r,backdrop:i,backdropChrome:o,pageBgType:c,pageBgColor:g,pageBgGradStart:m,pageBgGradEnd:y,pageBgGradDir:l,effectiveMode:this.getEffectiveMode()}},toggleMode(){let e=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(e)},reset(){d={...u,brand:E||u.brand},p.remove(P,D).catch(()=>{});let t=document.documentElement;t.style.removeProperty("--page-bg-color"),t.style.removeProperty("--page-bg-gradient");for(let e of le)t.style.removeProperty(e);this.apply(d)},_readCSSHint(t){return getComputedStyle(document.documentElement).getPropertyValue(t).trim()},_applyAccent(t){let e=document.documentElement,a=T.find(s=>s.id===t);for(let s of le)e.style.removeProperty(s);if(!(!a||!a.seeds||Object.keys(a.seeds).length===0)){for(let[s,n]of Object.entries(a.seeds))e.style.setProperty(s,String(n));if(a.seedsDark&&this.getEffectiveMode()==="dark")for(let[s,n]of Object.entries(a.seedsDark))e.style.setProperty(s,String(n))}},_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(!d)return;let a=(document.documentElement.dataset.theme||"").split(/\s+/).filter(Boolean).find(s=>!s.startsWith("a11y-"))||"default";a!==d.brand&&(d.brand=a,$(a).catch(()=>{}),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_syncFromDataMode(){if(!d)return;let t=document.documentElement.dataset.mode||"auto",e=d.mode==="auto"?this.getEffectiveMode():d.mode;t!==e&&(d.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 S=null,L="settings",O={motionFx:!0,sounds:!1},Y=null;function ke(){return Y||(Y=fetch("/cdn/themes/manifest.json",{credentials:"same-origin"}).then(t=>t.ok?t.json():null).catch(()=>null)),Y}var X=class t extends x{static#i=200;#t;#e;#a=!1;#s=!1;#g=!1;#c=null;#f=!1;#l=[];#r={...O};#n=()=>this.#k();setup(){return this.#s=this.getAttribute("variant")==="inline",this.#g=this.hasAttribute("compact"),this.#$(),!0}async#$(){await Promise.all([h.init(),this.#T()]),this.#B(),this.#_(),this.#E(),this.#V(),this.listen(window,"vb:theme-change",this.#H),this.#v(),this.#h()}async#T(){let[e,a]=await Promise.all([p.get(L,"a11y"),p.get(L,"extensions")]);this.#l=Array.isArray(e)?e:[],this.#r={...O,...a??{}}}teardown(){window.removeEventListener("scroll",this.#n,{capture:!0}),window.removeEventListener("resize",this.#n),this.#p(),this.#e?.remove(),this.#e=null}#B(){this.#s||(this.#t=this.querySelector(":scope > [data-trigger]"),this.#t||(this.#t=this.querySelector(":scope > button")),this.#t||(this.#t=document.createElement("button"),this.#t.setAttribute("data-trigger",""),this.#t.innerHTML=`
1
+ var ge=Object.defineProperty;var fe=(t,e)=>()=>(t&&(e=t(t=0)),e);var ye=(t,e)=>{for(var a in e)ge(t,a,{get:e[a],enumerable:!0})};var me={};ye(me,{SoundManager:()=>ke});var ue,Y,ke,pe=fe(()=>{ue="vb-sound",Y={enabled:!1,volume:.5},ke={_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(ue);return t?{...Y,...JSON.parse(t)}:{...Y}}catch{return{...Y}}},_save(t){try{let e=this._load();localStorage.setItem(ue,JSON.stringify({...e,...t}))}catch{}},_playTone(t,e,a="sine"){if(!this._enabled)return;let s=this._getContext(),i=s.createOscillator(),r=s.createGain();i.connect(r),r.connect(s.destination),i.frequency.value=t,i.type=a,r.gain.value=this._volume*.3,i.start(),r.gain.exponentialRampToValueAtTime(.01,s.currentTime+e),i.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 Be=window.matchMedia("(prefers-reduced-motion: reduce)");var Z=new Map;function ee(t,e,a={}){let s=a.priority??10,i={impl:e,bundle:a.bundle,contract:a.contract,priority:s},r=Z.get(t);if(customElements.get(t)){if(!r||r.priority>=s){r&&r.priority===s&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${t}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=s){r.priority===s&&console.warn(`[VB Bundle] Tag <${t}> already registered by "${r.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}Z.set(t,i),customElements.define(t,e)}var x=class extends HTMLElement{#s=[];#t;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let e of this.#s)e();this.#s=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,a,s,i){e.addEventListener(a,s,i),this.#s.push(()=>e.removeEventListener(a,s,i))}_reinit(){for(let e of this.#s)e();this.#s=[],this.teardown(),this.removeAttribute("data-upgraded"),this.isConnected&&this.setup()!==!1&&this.setAttribute("data-upgraded","")}setup(){}teardown(){}setState(e,a){this.#t||(this.#t=this.attachInternals());let s=this.#t.states;try{a?s.add(e):s.delete(e)}catch{let i=`--${e}`;a?s.add(i):s.delete(i)}}_adoptInternals(e){this.#t||(this.#t=e)}};var w=new Map,q=new Map;var te=null;function H(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(te)return te;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 ae=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),we=new Set(["kawaii","memphis"]);function _(t){return we.has(t)}function se(t,e){return`${e}/themes/${t}.css`}function ne(t,e){if(!_(t))return Promise.resolve();if(q.has(t))return q.get(t);let a=import(`${e}/packs/${t}.full.js`).catch(()=>{});return q.set(t,a),a}function be(t,e){let a=H(),s=()=>{(_(e)||t.hasAttribute("data-vb-pack"))&&ne(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((i,r)=>{let n=()=>{t.setAttribute("data-vb-theme-state","ready"),c(),s(),i(void 0)},o=()=>{t.setAttribute("data-vb-theme-state","error"),w.delete(e),c(),r(new Error(`Failed to load theme: ${e}`))},c=()=>{t.removeEventListener("load",n),t.removeEventListener("error",o)};t.addEventListener("load",n,{once:!0}),t.addEventListener("error",o,{once:!0})})}async function $(t){if(!t||ae.has(t))return;if(w.has(t))return w.get(t);if(typeof document<"u"){let s=document.querySelector(`link[data-vb-theme="${t}"]`);if(s){let i=be(s,t);return w.set(t,i),i}}let e=H(),a=_(t)?Ee(t,e):ve(t,e);return w.set(t,a),a}function ie(t){if(!t||ae.has(t)||_(t)||w.has(t)||typeof document>"u"||document.querySelector(`link[data-vb-theme="${t}"]`))return;let a=H(),s=se(t,a),i=document.createElement("link");i.rel="preload",i.as="style",i.href=s,i.setAttribute("data-vb-theme-preload",t),document.head.appendChild(i)}async function ve(t,e){let a=se(t,e);return new Promise((s,i)=>{let r=document.querySelector(`link[data-vb-theme-preload="${t}"]`);r&&r.remove();let n=document.createElement("link");n.rel="stylesheet",n.href=a,n.setAttribute("data-vb-theme",t),n.setAttribute("data-vb-theme-state","loading"),n.onload=()=>{n.setAttribute("data-vb-theme-state","ready"),s()},n.onerror=()=>{n.setAttribute("data-vb-theme-state","error"),n.remove(),w.delete(t),i(new Error(`Failed to load theme: ${t}`))},document.head.appendChild(n)})}function Ee(t,e){let a=`${e}/packs/${t}.theme.css`,s=`${e}/packs/${t}.effects.css`;return new Promise((i,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${t}"]`);n&&n.remove();let o=document.createElement("link");o.rel="stylesheet",o.href=a,o.setAttribute("data-vb-theme",t),o.setAttribute("data-vb-pack",t),o.setAttribute("data-vb-theme-state","loading"),o.onload=()=>{o.setAttribute("data-vb-theme-state","ready");let c=document.createElement("link");c.rel="stylesheet",c.href=s,c.setAttribute("data-vb-pack-effects",t),document.head.appendChild(c),ne(t,e),i()},o.onerror=()=>{o.setAttribute("data-vb-theme-state","error"),o.remove(),w.delete(t),r(new Error(`Failed to load pack: ${t}`))},document.head.appendChild(o)})}var j=[{id:"auto",name:"Auto",icon:"monitor"},{id:"light",name:"Light",icon:"sun"},{id:"dark",name:"Dark",icon:"moon"}],T=[{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":"58%","--chroma-primary":.12}},{id:"sunset",name:"Sunset",swatchBg:"#ea580c",seeds:{"--hue-primary":25,"--hue-secondary":0,"--hue-accent":280,"--lightness-primary":"57%","--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":"57%","--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":"56%","--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}}],M=[{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"}],V=[{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:"journal",name:"Journal",icon:"notebook-pen",character:"Dot-grid bullet journal",swatchBg:"#f3ecdc",swatchFg:"#27313f",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"}],B=[{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"}],re=[{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"}],z=[{id:"",name:"Fixed",icon:"ruler",description:"Static token values"},{id:"default",name:"Fluid",icon:"move-diagonal-2",description:"Smooth viewport scaling"},{id:"compact",name:"Compact",icon:"minimize-2",description:"Tighter fluid range"},{id:"spacious",name:"Spacious",icon:"maximize-2",description:"Generous fluid range"}],G=[{id:"a11y-high-contrast",name:"High Contrast",icon:"contrast",description:"AAA contrast (7:1+)"},{id:"a11y-large-text",name:"Large Text",icon:"type",description:"25% larger fonts"},{id:"a11y-dyslexia",name:"Dyslexia",icon:"book-open",description:"Readable typography"}],N=[{id:"motionFx",name:"Motion Effects",icon:"sparkles",description:"Hover & enter animations"},{id:"sounds",name:"Sound Effects",icon:"volume-2",description:"Audio feedback"}],_e=[...V,...B],Me=[...M,...V,...B,...re],v=t=>V.filter(e=>e.category===t),U=[{label:"Style",themes:M,tier:"core"},{label:"Design",themes:v("Design"),tier:"showcase"},{label:"Content",themes:v("Content"),tier:"showcase"},{label:"Modern",themes:v("Modern"),tier:"showcase"},{label:"Creative",themes:v("Creative"),tier:"showcase"},{label:"Aesthetic",themes:v("Aesthetic"),tier:"showcase"},{label:"Signature",themes:v("Signature"),tier:"showcase"},{label:"OS Styles",themes:v("OS Styles"),tier:"showcase"},{label:"Packs",themes:re,tier:"showcase"},{label:"More Themes",themes:B,tier:"community"}];function Se(){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 i=t.key(s);i&&i.startsWith(e)&&a.push(i)}return a}}}var F="__vbStoreBackend",D=globalThis;function f(){return D[F]||(D[F]=Se()),D[F]}function W(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 oe(t){if(typeof t!="string"||!t)throw new TypeError("VBStore: namespace must be a non-empty string");return`vb:${t}:`}function ce(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={}){D[F]=t.backend??null},async set(t,e,a){let s={data:a,timestamp:Date.now()};await f().setRaw(W(t,e),JSON.stringify(s))},async get(t,e,a){let s=await f().getRaw(W(t,e));if(s==null)return null;let i=ce(s);return!i||a?.maxAge!=null&&Date.now()-i.timestamp>a.maxAge?null:i.data},async remove(t,e){await f().removeRaw(W(t,e))},async list(t){let e=oe(t),a=await f().keys(e),s=[];for(let i of a){let r=await f().getRaw(i);if(r==null)continue;let n=ce(r);n&&s.push({key:i.slice(e.length),data:n.data,timestamp:n.timestamp})}return s},async clear(t){let e=oe(t),a=await f().keys(e);for(let s of a)await f().removeRaw(s)},async clearAll(){let t=await f().keys("vb:");for(let e of t)await f().removeRaw(e)},async setMany(t,e){for(let[a,s]of e)await u.set(t,a,s)}};if(typeof window<"u"){let t=window.VB??(window.VB={});t.store??=u}var P="theme",L="current",m={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""};function he(t){return(t||"").split(/\s+/).find(e=>e&&!e.startsWith("a11y-"))||""}function le(t,e){return t?.brand&&t.brand!==m.brand?t.brand:he(e)||m.brand}var de=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],d=null,E="",h={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let t=await u.get(P,L);d=t?{...m,...t}:{...m},E=he(document.documentElement.dataset.theme),d.brand=le(t,E);try{await $(d.brand)}catch{d.brand!==E&&(d.brand=E||m.brand)}return this.apply(d),this._watchSystemPreference(),this._watchRootAttributes(),this._watchCrossDocumentStorage(),d})(),this._initPromise)},_watchCrossDocumentStorage(){typeof window>"u"||window.addEventListener("storage",async t=>{if(t.key!==`vb:${P}:${L}`||!t.newValue)return;let e;try{e=JSON.parse(t.newValue)?.data}catch{return}if(!e||typeof e!="object")return;let a={...m,...d,...e};if(a.brand=le(e,E),a.brand&&a.brand!==d?.brand)try{await $(a.brand)}catch{a.brand=E||m.brand}d=a,this.apply(d||{})})},load(){return d?{...d}:{...m}},save(t){let e={...d??m,...t};return d=e,u.set(P,L,e).catch(()=>{}),e},apply({mode:t="auto",brand:e="default",borderStyle:a="",iconSet:s="",fluid:i="",backdrop:r="",backdropChrome:n="",pageBgType:o="",pageBgColor:c="",pageBgGradStart:g="",pageBgGradEnd:p="",pageBgGradDir:y=""}={}){let l=document.documentElement;l.dataset.mode=t==="auto"?this.getEffectiveMode():t;let k=(l.dataset.theme||"").split(" ").filter(R=>R.startsWith("a11y-")),J=e!=="default"?[e,...k]:[...k];J.length?l.dataset.theme=J.join(" "):delete l.dataset.theme;let A=a||this._readCSSHint("--theme-border-style");A&&A!=="clean"?l.dataset.borderStyle=A:delete l.dataset.borderStyle;let C=s||this._readCSSHint("--theme-icon-set");if(C&&C!=="lucide"?l.dataset.iconSet=C:delete l.dataset.iconSet,i?l.dataset.fluid=i:delete l.dataset.fluid,r?l.dataset.backdrop=r:delete l.dataset.backdrop,n&&n!=="card"?l.dataset.backdropChrome=n:delete l.dataset.backdropChrome,o==="color"&&c)l.style.setProperty("--page-bg-color",c),l.style.removeProperty("--page-bg-gradient");else if(o==="gradient"&&g&&p){let R=y||"to bottom";l.style.setProperty("--page-bg-gradient",`linear-gradient(${R}, ${g}, ${p})`),l.style.removeProperty("--page-bg-color")}else l.style.removeProperty("--page-bg-color"),l.style.removeProperty("--page-bg-gradient");let Q=this.load().accent||"default";this._applyAccent(Q),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:t,brand:e,accent:Q,borderStyle:A,iconSet:C,fluid:i,backdrop:r,backdropChrome:n,pageBgType:o,effectiveMode:this.getEffectiveMode()}}))},setMode(t){let e=this.save({mode:t});this.apply(e)},async setBrand(t){try{await $(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:i=""}={}){let r=this.save({pageBgType:t,pageBgColor:e,pageBgGradStart:a,pageBgGradEnd:s,pageBgGradDir:i});this.apply(r)},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:i,fluid:r,backdrop:n,backdropChrome:o,pageBgType:c,pageBgColor:g,pageBgGradStart:p,pageBgGradEnd:y,pageBgGradDir:l}=this.load();return{mode:t,brand:e,accent:a,borderStyle:s,iconSet:i,fluid:r,backdrop:n,backdropChrome:o,pageBgType:c,pageBgColor:g,pageBgGradStart:p,pageBgGradEnd:y,pageBgGradDir:l,effectiveMode:this.getEffectiveMode()}},toggleMode(){let e=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(e)},reset(){d={...m,brand:E||m.brand},u.remove(P,L).catch(()=>{});let t=document.documentElement;t.style.removeProperty("--page-bg-color"),t.style.removeProperty("--page-bg-gradient");for(let e of de)t.style.removeProperty(e);this.apply(d)},_readCSSHint(t){return getComputedStyle(document.documentElement).getPropertyValue(t).trim()},_applyAccent(t){let e=document.documentElement;for(let s of de)e.style.removeProperty(s);let a=T.find(s=>s.id===t);if(!a||!a.seeds||Object.keys(a.seeds).length===0){delete e.dataset.accent;return}e.dataset.accent=a.id},_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(!d)return;let a=(document.documentElement.dataset.theme||"").split(/\s+/).filter(Boolean).find(s=>!s.startsWith("a11y-"))||"default";a!==d.brand&&(d.brand=a,$(a).catch(()=>{}),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_syncFromDataMode(){if(!d)return;let t=document.documentElement.dataset.mode||"auto",e=d.mode==="auto"?this.getEffectiveMode():d.mode;t!==e&&(d.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 S=null,O="settings",I={motionFx:!0,sounds:!1},X=null;function $e(){return X||(X=fetch("/cdn/themes/manifest.json",{credentials:"same-origin"}).then(t=>t.ok?t.json():null).catch(()=>null)),X}var K=class t extends x{static#s=200;#t;#e;#a=!1;#n=!1;#g=!1;#c=null;#f=!1;#l=[];#r={...I};#i=()=>this.#k();setup(){return this.#n=this.getAttribute("variant")==="inline",this.#g=this.hasAttribute("compact"),this.#$(),!0}async#$(){await Promise.all([h.init(),this.#T()]),this.#B(),this.#_(),this.#E(),this.#V(),this.listen(window,"vb:theme-change",this.#j),this.#v(),this.#h()}async#T(){let[e,a]=await Promise.all([u.get(O,"a11y"),u.get(O,"extensions")]);this.#l=Array.isArray(e)?e:[],this.#r={...I,...a??{}}}teardown(){window.removeEventListener("scroll",this.#i,{capture:!0}),window.removeEventListener("resize",this.#i),this.#p(),this.#e?.remove(),this.#e=null}#B(){this.#n||(this.#t=this.querySelector(":scope > [data-trigger]"),this.#t||(this.#t=this.querySelector(":scope > button")),this.#t||(this.#t=document.createElement("button"),this.#t.setAttribute("data-trigger",""),this.#t.innerHTML=`
2
2
  <icon-wc name="palette" label="Theme settings"></icon-wc>
3
- `,this.prepend(this.#t)),this.#t.setAttribute("aria-haspopup","dialog"),this.#t.setAttribute("aria-expanded","false")),this.#e=document.createElement("div"),this.#e.className="panel",this.#e.setAttribute("role","dialog"),this.#e.setAttribute("aria-label","Theme settings"),this.#s||(this.#e.id=`theme-panel-${crypto.randomUUID().slice(0,8)}`,this.#t.setAttribute("aria-controls",this.#e.id)),this.#e.innerHTML=this.#C(),this.appendChild(this.#e)}#C(){return this.#g?this.#x():this.#A()}#u(e,a){let s=e.swatchBg,n=e.swatchFg||"white",r=e.icon||"";return`
3
+ `,this.prepend(this.#t)),this.#t.setAttribute("aria-haspopup","dialog"),this.#t.setAttribute("aria-expanded","false")),this.#e=document.createElement("div"),this.#e.className="panel",this.#e.setAttribute("role","dialog"),this.#e.setAttribute("aria-label","Theme settings"),this.#n||(this.#e.id=`theme-panel-${crypto.randomUUID().slice(0,8)}`,this.#t.setAttribute("aria-controls",this.#e.id)),this.#e.innerHTML=this.#A(),this.appendChild(this.#e)}#A(){return this.#g?this.#x():this.#C()}#u(e,a){let s=e.swatchBg,i=e.swatchFg||"white",r=e.icon||"";return`
4
4
  <label class="swatch-cell" title="${e.character?`${e.name} \u2014 ${e.character}`:e.name}">
5
5
  <input
6
6
  type="radio"
@@ -8,26 +8,26 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
8
8
  value="${e.id}"
9
9
  ${a===e.id?"checked":""}
10
10
  />
11
- <span class="swatch-visual" style="--swatch-bg: ${s}; --swatch-fg: ${n}">
11
+ <span class="swatch-visual" style="--swatch-bg: ${s}; --swatch-fg: ${i}">
12
12
  ${r?`<icon-wc name="${r}"></icon-wc>`:""}
13
13
  <span class="visually-hidden">${e.name}</span>
14
14
  </span>
15
15
  </label>
16
- `}#A(){let{mode:e,brand:a,fluid:s,accent:n}=h.getState(),r=N.filter(i=>i.tier==="showcase");return`
16
+ `}#C(){let{mode:e,brand:a,fluid:s,accent:i}=h.getState(),r=U.filter(n=>n.tier==="showcase");return`
17
17
  <fieldset class="section">
18
18
  <legend>Color Mode</legend>
19
19
  <div class="options" role="radiogroup" aria-label="Color mode">
20
- ${q.map(i=>`
20
+ ${j.map(n=>`
21
21
  <label class="option">
22
22
  <input
23
23
  type="radio"
24
24
  name="theme-mode"
25
- value="${i.id}"
26
- ${e===i.id?"checked":""}
25
+ value="${n.id}"
26
+ ${e===n.id?"checked":""}
27
27
  />
28
28
  <span class="option-content">
29
- <icon-wc name="${i.icon}"></icon-wc>
30
- <span>${i.name}</span>
29
+ <icon-wc name="${n.icon}"></icon-wc>
30
+ <span>${n.name}</span>
31
31
  </span>
32
32
  </label>
33
33
  `).join("")}
@@ -37,11 +37,11 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
37
37
  <fieldset class="section">
38
38
  <legend>Color Accent</legend>
39
39
  <div class="options options--accent-dots" role="radiogroup" aria-label="Color accent">
40
- ${T.map(i=>`
41
- <label class="accent-dot" title="${i.name}">
42
- <input type="radio" name="theme-accent" value="${i.id}" ${n===i.id?"checked":""} />
43
- <span class="accent-dot-visual" style="background: ${i.swatchBg}"></span>
44
- <span class="visually-hidden">${i.name}</span>
40
+ ${T.map(n=>`
41
+ <label class="accent-dot" title="${n.name}">
42
+ <input type="radio" name="theme-accent" value="${n.id}" ${i===n.id?"checked":""} />
43
+ <span class="accent-dot-visual" style="background: ${n.swatchBg}"></span>
44
+ <span class="visually-hidden">${n.name}</span>
45
45
  </label>
46
46
  `).join("")}
47
47
  </div>
@@ -50,17 +50,17 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
50
50
  <fieldset class="section">
51
51
  <legend>Style</legend>
52
52
  <div class="options options--swatch-grid" role="radiogroup" aria-label="Style">
53
- ${M.map(i=>this.#u(i,a)).join("")}
53
+ ${M.map(n=>this.#u(n,a)).join("")}
54
54
  </div>
55
55
  </fieldset>
56
56
 
57
57
  <fieldset class="section">
58
58
  <legend>Featured</legend>
59
- ${r.map(i=>`
59
+ ${r.map(n=>`
60
60
  <div class="theme-category">
61
- <span class="category-label">${i.label}</span>
61
+ <span class="category-label">${n.label}</span>
62
62
  <div class="options options--swatch-grid">
63
- ${i.themes.map(o=>this.#u(o,a)).join("")}
63
+ ${n.themes.map(o=>this.#u(o,a)).join("")}
64
64
  </div>
65
65
  </div>
66
66
  `).join("")}
@@ -72,25 +72,25 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
72
72
  <icon-wc name="chevron-down" class="chevron"></icon-wc>
73
73
  </summary>
74
74
  <div class="options options--swatch-grid">
75
- ${B.map(i=>this.#u(i,a)).join("")}
75
+ ${B.map(n=>this.#u(n,a)).join("")}
76
76
  </div>
77
77
  </details>
78
78
 
79
79
  <fieldset class="section section--a11y">
80
80
  <legend>Accessibility</legend>
81
81
  <div class="options options--a11y" aria-label="Accessibility themes">
82
- ${z.map(i=>{let c=this.#d().includes(i.id);return`
82
+ ${G.map(n=>{let c=this.#d().includes(n.id);return`
83
83
  <label class="option option--a11y">
84
84
  <input
85
85
  type="checkbox"
86
86
  name="a11y-theme"
87
- value="${i.id}"
88
- data-a11y-theme="${i.id}"
87
+ value="${n.id}"
88
+ data-a11y-theme="${n.id}"
89
89
  ${c?"checked":""}
90
90
  />
91
91
  <span class="option-content">
92
- <icon-wc name="${i.icon}"></icon-wc>
93
- <span class="option-label">${i.name}</span>
92
+ <icon-wc name="${n.icon}"></icon-wc>
93
+ <span class="option-label">${n.name}</span>
94
94
  </span>
95
95
  </label>
96
96
  `}).join("")}
@@ -100,19 +100,19 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
100
100
  <fieldset class="section">
101
101
  <legend>Sizing</legend>
102
102
  <div class="options options--sizing" role="radiogroup" aria-label="Fluid sizing">
103
- ${V.map(i=>`
103
+ ${z.map(n=>`
104
104
  <label class="option option--sizing">
105
105
  <input
106
106
  type="radio"
107
107
  name="theme-fluid"
108
- value="${i.id}"
109
- ${s===i.id?"checked":""}
108
+ value="${n.id}"
109
+ ${s===n.id?"checked":""}
110
110
  />
111
111
  <span class="option-content">
112
- <icon-wc name="${i.icon}"></icon-wc>
112
+ <icon-wc name="${n.icon}"></icon-wc>
113
113
  <span class="option-text">
114
- <span>${i.name}</span>
115
- <small>${i.description}</small>
114
+ <span>${n.name}</span>
115
+ <small>${n.description}</small>
116
116
  </span>
117
117
  </span>
118
118
  </label>
@@ -127,16 +127,16 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
127
127
  <icon-wc name="chevron-down" class="chevron"></icon-wc>
128
128
  </summary>
129
129
  <div class="extensions-content">
130
- ${G.map(i=>{let c=this.#m()[i.id]??O[i.id];return`
130
+ ${N.map(n=>{let c=this.#m()[n.id]??I[n.id];return`
131
131
  <label class="extension-toggle">
132
132
  <span class="extension-info">
133
- <icon-wc name="${i.icon}"></icon-wc>
134
- <span class="extension-name">${i.name}</span>
133
+ <icon-wc name="${n.icon}"></icon-wc>
134
+ <span class="extension-name">${n.name}</span>
135
135
  </span>
136
136
  <input
137
137
  type="checkbox"
138
- name="ext-${i.id}"
139
- data-extension="${i.id}"
138
+ name="ext-${n.id}"
139
+ data-extension="${n.id}"
140
140
  data-switch="sm"
141
141
  ${c?"checked":""}
142
142
  />
@@ -144,11 +144,11 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
144
144
  `}).join("")}
145
145
  </div>
146
146
  </details>
147
- `}#x(){let{mode:e,brand:a,fluid:s,accent:n}=h.getState(),r=this.#d(),i=this.#m();return`
147
+ `}#x(){let{mode:e,brand:a,fluid:s,accent:i}=h.getState(),r=this.#d(),n=this.#m();return`
148
148
  <fieldset class="section">
149
149
  <legend>Color Mode</legend>
150
150
  <div class="compact-segmented" role="radiogroup" aria-label="Color mode">
151
- ${q.map(o=>`
151
+ ${j.map(o=>`
152
152
  <label class="compact-seg">
153
153
  <input type="radio" name="theme-mode" value="${o.id}" ${e===o.id?"checked":""} />
154
154
  <span class="compact-seg-visual">
@@ -164,7 +164,7 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
164
164
  <legend>Color Accent</legend>
165
165
  <select class="compact-select" name="theme-accent-select" aria-label="Color accent">
166
166
  ${T.map(o=>`
167
- <option value="${o.id}" ${n===o.id?"selected":""}>${o.name}</option>
167
+ <option value="${o.id}" ${i===o.id?"selected":""}>${o.name}</option>
168
168
  `).join("")}
169
169
  </select>
170
170
  </fieldset>
@@ -172,7 +172,7 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
172
172
  <fieldset class="section">
173
173
  <legend>Theme</legend>
174
174
  <select class="compact-select" name="theme-brand-select" aria-label="Theme">
175
- ${N.map(o=>`
175
+ ${U.map(o=>`
176
176
  <optgroup label="${o.label}">
177
177
  ${o.themes.map(c=>`
178
178
  <option value="${c.id}" ${a===c.id?"selected":""}>${c.name}</option>
@@ -185,7 +185,7 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
185
185
  <fieldset class="section">
186
186
  <legend>Sizing</legend>
187
187
  <select class="compact-select" name="theme-fluid-select" aria-label="Sizing">
188
- ${V.map(o=>`
188
+ ${z.map(o=>`
189
189
  <option value="${o.id}" ${s===o.id?"selected":""}>${o.name}</option>
190
190
  `).join("")}
191
191
  </select>
@@ -194,7 +194,7 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
194
194
  <fieldset class="section">
195
195
  <legend>Accessibility</legend>
196
196
  <div class="compact-toggles">
197
- ${z.map(o=>`
197
+ ${G.map(o=>`
198
198
  <label class="extension-toggle">
199
199
  <span class="extension-info">
200
200
  <span class="extension-name">${o.name}</span>
@@ -208,15 +208,15 @@ var pe=Object.defineProperty;var ge=(t,e)=>()=>(t&&(e=t(t=0)),e);var fe=(t,e)=>{
208
208
  <fieldset class="section">
209
209
  <legend>Extensions</legend>
210
210
  <div class="compact-toggles">
211
- ${G.map(o=>`
211
+ ${N.map(o=>`
212
212
  <label class="extension-toggle">
213
213
  <span class="extension-info">
214
214
  <span class="extension-name">${o.name}</span>
215
215
  </span>
216
- <input type="checkbox" name="ext-${o.id}" data-extension="${o.id}" data-switch="sm" ${i[o.id]??O[o.id]?"checked":""} />
216
+ <input type="checkbox" name="ext-${o.id}" data-extension="${o.id}" data-switch="sm" ${n[o.id]??I[o.id]?"checked":""} />
217
217
  </label>
218
218
  `).join("")}
219
219
  </div>
220
220
  </fieldset>
221
- `}#_(){this.#e.querySelectorAll('input[name="theme-mode"]').forEach(r=>{r.addEventListener("change",this.#D)}),this.#e.querySelectorAll('input[name="theme-brand"]').forEach(r=>{r.addEventListener("change",this.#L),r.addEventListener("focus",this.#y),r.closest("label")?.addEventListener("pointerenter",this.#y)});let e=this.#e.querySelector('select[name="theme-brand-select"]');e&&e.addEventListener("change",this.#O),this.#e.querySelectorAll('input[name="theme-fluid"]').forEach(r=>{r.addEventListener("change",this.#w)});let a=this.#e.querySelector('select[name="theme-fluid-select"]');a&&a.addEventListener("change",this.#w),this.#e.querySelectorAll('input[name="theme-accent"]').forEach(r=>{r.addEventListener("change",this.#b)});let s=this.#e.querySelector('select[name="theme-accent-select"]');s&&s.addEventListener("change",this.#b),this.#e.querySelectorAll("input[data-extension]").forEach(r=>{r.addEventListener("change",this.#I)}),this.#e.querySelectorAll("input[data-a11y-theme]").forEach(r=>{r.addEventListener("change",this.#q)}),this.#e.querySelector(".section--extensions")?.addEventListener("toggle",r=>{this.#f=r.target.open}),this.#s||(this.listen(this.#t,"click",this.#M),this.listen(document,"click",this.#F),this.listen(document,"keydown",this.#P))}#M=e=>{e.stopPropagation(),this.toggle()};#F=e=>{this.#a&&!this.contains(e.target)&&this.close()};#P=e=>{e.key==="Escape"&&this.#a&&(e.preventDefault(),this.close(),this.#t?.focus())};#D=e=>{h.setMode(e.target.value),this.#o()};#y=e=>{let a=e.currentTarget,s=a instanceof HTMLInputElement?a:a.querySelector('input[name="theme-brand"]');s?.value&&ne(s.value)};#L=async e=>{let a=e.target.closest(".swatch-cell");a&&a.setAttribute("aria-busy","true");try{await h.setBrand(e.target.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a&&a.removeAttribute("aria-busy")}this.#h(),this.#o()};#O=async e=>{let a=e.target;a.disabled=!0;try{await h.setBrand(a.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}this.#h(),this.#o()};#w=e=>{h.setFluid(e.target.value),this.#o()};#b=e=>{h.setAccent(e.target.value),this.#o()};#I=e=>{let a=e.target.dataset.extension,s=e.target.checked;this.#R(a,s),this.#v()};#m(){return{...this.#r}}#R(e,a){this.#r={...this.#r,[e]:a},p.set(L,"extensions",this.#r).catch(()=>{})}async#v(){let e=this.#m(),a=document.documentElement;e.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",e.sounds?(S||(S=(await Promise.resolve().then(()=>(me(),ue))).SoundManager),S.init(),S.enable()):S&&S.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:e}))}#d(){return[...this.#l]}#j(e){this.#l=[...e],p.set(L,"a11y",this.#l).catch(()=>{})}#h(){let e=this.#d(),{brand:a}=h.getState(),s=document.documentElement,n=a==="default"?e.join(" "):[a,...e].join(" "),r=s.dataset.theme||"";n!==r&&(n?s.dataset.theme=n:delete s.dataset.theme)}#q=e=>{let a=e.target.dataset.a11yTheme,s=e.target.checked,n=this.#d();if(s&&!n.includes(a))n.push(a);else if(!s&&n.includes(a)){let r=n.indexOf(a);n.splice(r,1)}this.#j(n),this.#h()};#o(){this.#s||(this.#p(),this.#c=setTimeout(()=>{this.close(),this.#t?.focus()},t.#i))}#p(){this.#c&&(clearTimeout(this.#c),this.#c=null)}#H=()=>{this.#E()};#E(){let{mode:e,brand:a,fluid:s,accent:n}=h.getState(),r=this.#e.querySelector(`input[name="theme-mode"][value="${e}"]`);r&&(r.checked=!0);let i=this.#e.querySelector(`input[name="theme-brand"][value="${a}"]`);i&&(i.checked=!0);let o=this.#e.querySelector('select[name="theme-brand-select"]');o&&(o.value=a);let c=this.#e.querySelector(`input[name="theme-fluid"][value="${s}"]`);c&&(c.checked=!0);let g=this.#e.querySelector('select[name="theme-fluid-select"]');g&&(g.value=s);let m=this.#e.querySelector(`input[name="theme-accent"][value="${n||"default"}"]`);m&&(m.checked=!0);let y=this.#e.querySelector('select[name="theme-accent-select"]');y&&(y.value=n||"default"),this.#e.querySelectorAll(".swatch-dtcg").forEach(l=>this.#S(l))}async#V(){let e=await ke();if(!(!e||!this.#e?.isConnected))for(let a of this.#e.querySelectorAll('input[name="theme-brand"]')){let s=a.value,n=e[s];if(!n?.dtcg)continue;let r=a.closest(".swatch-cell");if(!r||r.parentElement?.classList.contains("swatch-cell-group"))continue;let i=document.createElement("span");i.className="swatch-cell-group",r.parentNode.insertBefore(i,r),i.appendChild(r);let o=document.createElement("a");o.className="swatch-dtcg",o.dataset.dtcg=n.dtcg,n.dtcgDark&&(o.dataset.dtcgDark=n.dtcgDark),o.setAttribute("download","");let c=r.getAttribute("title")||s;o.setAttribute("aria-label",`Download ${c} as DTCG tokens.json`),o.setAttribute("title",`Download ${c} as DTCG`),o.innerHTML='<icon-wc name="download" size="xs"></icon-wc>',this.#S(o),o.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("theme-picker:dtcg-download",{bubbles:!0,detail:{themeId:s,href:o.href}}))}),i.appendChild(o)}}#S(e){let a=h.getState().mode,n=(a==="dark"||a==="auto"&&typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches)&&e.dataset.dtcgDark?e.dataset.dtcgDark:e.dataset.dtcg;e.href=`/cdn/themes/${n}`}open(){this.#s||this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{this.#k(),window.addEventListener("scroll",this.#n,{capture:!0,passive:!0}),window.addEventListener("resize",this.#n,{passive:!0}),this.#e.querySelector('input[type="radio"]:checked')?.focus()}),this.dispatchEvent(new CustomEvent("theme-picker:open",{bubbles:!0})))}#k(){if(!this.#t||!this.#e)return;let e=this.#t.getBoundingClientRect(),a=this.#e.getBoundingClientRect(),s=window.visualViewport||{width:window.innerWidth,height:window.innerHeight},n=s.height,r=s.width,i=8,o=16,c=n-e.bottom-o,g=e.top-o,m=e.height+i;c<a.height&&g>c?(m=-a.height-i,this.#e.dataset.position="top"):delete this.#e.dataset.position;let y=r-e.right,l=e.right-a.width;if(this.#e.style.setProperty("--panel-top",`${m}px`),l<o){let b=0,k=e.left+a.width+o;k>r&&(b=r-k),e.left+b<o&&(b=o-e.left),this.#e.style.setProperty("--panel-left",`${b}px`),this.#e.style.setProperty("--panel-right","auto")}else{let b=Math.max(0,o-y);this.#e.style.setProperty("--panel-left","auto"),this.#e.style.setProperty("--panel-right",`${b}px`)}}close(){this.#s||!this.#a||(this.#p(),this.#a=!1,this.removeAttribute("open"),this.#t?.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",this.#n,{capture:!0}),window.removeEventListener("resize",this.#n),this.dispatchEvent(new CustomEvent("theme-picker:close",{bubbles:!0})))}toggle(){this.#a?this.close():this.open()}get isOpen(){return this.#a}};Z("theme-picker",X);export{X as ThemePicker};
221
+ `}#_(){this.#e.querySelectorAll('input[name="theme-mode"]').forEach(r=>{r.addEventListener("change",this.#P)}),this.#e.querySelectorAll('input[name="theme-brand"]').forEach(r=>{r.addEventListener("change",this.#L),r.addEventListener("focus",this.#y),r.closest("label")?.addEventListener("pointerenter",this.#y)});let e=this.#e.querySelector('select[name="theme-brand-select"]');e&&e.addEventListener("change",this.#O),this.#e.querySelectorAll('input[name="theme-fluid"]').forEach(r=>{r.addEventListener("change",this.#w)});let a=this.#e.querySelector('select[name="theme-fluid-select"]');a&&a.addEventListener("change",this.#w),this.#e.querySelectorAll('input[name="theme-accent"]').forEach(r=>{r.addEventListener("change",this.#b)});let s=this.#e.querySelector('select[name="theme-accent-select"]');s&&s.addEventListener("change",this.#b),this.#e.querySelectorAll("input[data-extension]").forEach(r=>{r.addEventListener("change",this.#I)}),this.#e.querySelectorAll("input[data-a11y-theme]").forEach(r=>{r.addEventListener("change",this.#H)}),this.#e.querySelector(".section--extensions")?.addEventListener("toggle",r=>{this.#f=r.target.open}),this.#n||(this.listen(this.#t,"click",this.#M),this.listen(document,"click",this.#F),this.listen(document,"keydown",this.#D))}#M=e=>{e.stopPropagation(),this.toggle()};#F=e=>{this.#a&&!this.contains(e.target)&&this.close()};#D=e=>{e.key==="Escape"&&this.#a&&(e.preventDefault(),this.close(),this.#t?.focus())};#P=e=>{h.setMode(e.target.value),this.#o()};#y=e=>{let a=e.currentTarget,s=a instanceof HTMLInputElement?a:a.querySelector('input[name="theme-brand"]');s?.value&&ie(s.value)};#L=async e=>{let a=e.target.closest(".swatch-cell");a&&a.setAttribute("aria-busy","true");try{await h.setBrand(e.target.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a&&a.removeAttribute("aria-busy")}this.#h(),this.#o()};#O=async e=>{let a=e.target;a.disabled=!0;try{await h.setBrand(a.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}this.#h(),this.#o()};#w=e=>{h.setFluid(e.target.value),this.#o()};#b=e=>{h.setAccent(e.target.value),this.#o()};#I=e=>{let a=e.target.dataset.extension,s=e.target.checked;this.#R(a,s),this.#v()};#m(){return{...this.#r}}#R(e,a){this.#r={...this.#r,[e]:a},u.set(O,"extensions",this.#r).catch(()=>{})}async#v(){let e=this.#m(),a=document.documentElement;e.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",e.sounds?(S||(S=(await Promise.resolve().then(()=>(pe(),me))).SoundManager),S.init(),S.enable()):S&&S.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:e}))}#d(){return[...this.#l]}#q(e){this.#l=[...e],u.set(O,"a11y",this.#l).catch(()=>{})}#h(){let e=this.#d(),{brand:a}=h.getState(),s=document.documentElement,i=a==="default"?e.join(" "):[a,...e].join(" "),r=s.dataset.theme||"";i!==r&&(i?s.dataset.theme=i:delete s.dataset.theme)}#H=e=>{let a=e.target.dataset.a11yTheme,s=e.target.checked,i=this.#d();if(s&&!i.includes(a))i.push(a);else if(!s&&i.includes(a)){let r=i.indexOf(a);i.splice(r,1)}this.#q(i),this.#h()};#o(){this.#n||(this.#p(),this.#c=setTimeout(()=>{this.close(),this.#t?.focus()},t.#s))}#p(){this.#c&&(clearTimeout(this.#c),this.#c=null)}#j=()=>{this.#E()};#E(){let{mode:e,brand:a,fluid:s,accent:i}=h.getState(),r=this.#e.querySelector(`input[name="theme-mode"][value="${e}"]`);r&&(r.checked=!0);let n=this.#e.querySelector(`input[name="theme-brand"][value="${a}"]`);n&&(n.checked=!0);let o=this.#e.querySelector('select[name="theme-brand-select"]');o&&(o.value=a);let c=this.#e.querySelector(`input[name="theme-fluid"][value="${s}"]`);c&&(c.checked=!0);let g=this.#e.querySelector('select[name="theme-fluid-select"]');g&&(g.value=s);let p=this.#e.querySelector(`input[name="theme-accent"][value="${i||"default"}"]`);p&&(p.checked=!0);let y=this.#e.querySelector('select[name="theme-accent-select"]');y&&(y.value=i||"default"),this.#e.querySelectorAll(".swatch-dtcg").forEach(l=>this.#S(l))}async#V(){let e=await $e();if(!(!e||!this.#e?.isConnected))for(let a of this.#e.querySelectorAll('input[name="theme-brand"]')){let s=a.value,i=e[s];if(!i?.dtcg)continue;let r=a.closest(".swatch-cell");if(!r||r.parentElement?.classList.contains("swatch-cell-group"))continue;let n=document.createElement("span");n.className="swatch-cell-group",r.parentNode.insertBefore(n,r),n.appendChild(r);let o=document.createElement("a");o.className="swatch-dtcg",o.dataset.dtcg=i.dtcg,i.dtcgDark&&(o.dataset.dtcgDark=i.dtcgDark),o.setAttribute("download","");let c=r.getAttribute("title")||s;o.setAttribute("aria-label",`Download ${c} as DTCG tokens.json`),o.setAttribute("title",`Download ${c} as DTCG`),o.innerHTML='<icon-wc name="download" size="xs"></icon-wc>',this.#S(o),o.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("theme-picker:dtcg-download",{bubbles:!0,detail:{themeId:s,href:o.href}}))}),n.appendChild(o)}}#S(e){let a=h.getState().mode,i=(a==="dark"||a==="auto"&&typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches)&&e.dataset.dtcgDark?e.dataset.dtcgDark:e.dataset.dtcg;e.href=`/cdn/themes/${i}`}open(){this.#n||this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{this.#k(),window.addEventListener("scroll",this.#i,{capture:!0,passive:!0}),window.addEventListener("resize",this.#i,{passive:!0}),this.#e.querySelector('input[type="radio"]:checked')?.focus()}),this.dispatchEvent(new CustomEvent("theme-picker:open",{bubbles:!0})))}#k(){if(!this.#t||!this.#e)return;let e=this.#t.getBoundingClientRect(),a=this.#e.getBoundingClientRect(),s=window.visualViewport||{width:window.innerWidth,height:window.innerHeight},i=s.height,r=s.width,n=8,o=16,c=i-e.bottom-o,g=e.top-o,p=e.height+n;c<a.height&&g>c?(p=-a.height-n,this.#e.dataset.position="top"):delete this.#e.dataset.position;let y=r-e.right,l=e.right-a.width;if(this.#e.style.setProperty("--panel-top",`${p}px`),l<o){let b=0,k=e.left+a.width+o;k>r&&(b=r-k),e.left+b<o&&(b=o-e.left),this.#e.style.setProperty("--panel-left",`${b}px`),this.#e.style.setProperty("--panel-right","auto")}else{let b=Math.max(0,o-y);this.#e.style.setProperty("--panel-left","auto"),this.#e.style.setProperty("--panel-right",`${b}px`)}}close(){this.#n||!this.#a||(this.#p(),this.#a=!1,this.removeAttribute("open"),this.#t?.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",this.#i,{capture:!0}),window.removeEventListener("resize",this.#i),this.dispatchEvent(new CustomEvent("theme-picker:close",{bubbles:!0})))}toggle(){this.#a?this.close():this.open()}get isOpen(){return this.#a}};ee("theme-picker",K);export{K as ThemePicker};
222
222
  //# sourceMappingURL=theme-picker.js.map
@@ -1,4 +1,4 @@
1
- var b=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function f(i,e,n={}){let t=n.priority??10,o={impl:e,bundle:n.bundle,contract:n.contract,priority:t},r=u.get(i);if(customElements.get(i)){if(!r||r.priority>=t){r&&r.priority===t&&r.impl!==e&&console.warn(`[VB Bundle] Tag <${i}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${i}> 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 <${i}> already registered by "${r.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}u.set(i,o),customElements.define(i,e)}var c=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{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,n,t,o){e.addEventListener(n,t,o),this.#t.push(()=>e.removeEventListener(n,t,o))}setup(){}teardown(){}setState(e,n){this.#e||(this.#e=this.attachInternals());let t=this.#e.states;try{n?t.add(e):t.delete(e)}catch{let o=`--${e}`;n?t.add(o):t.delete(o)}}_adoptInternals(e){this.#e||(this.#e=e)}};function p(i){let e=(Date.now()-i.getTime())/1e3;if(e<0)return null;if(e<60)return"just now";if(e<3600){let t=Math.floor(e/60);return`${t} minute${t!==1?"s":""} ago`}if(e<86400){let t=Math.floor(e/3600);return`${t} hour${t!==1?"s":""} ago`}if(e<2592e3){let t=Math.floor(e/86400);return`${t} day${t!==1?"s":""} ago`}if(e<31536e3){let t=Math.floor(e/2592e3);return`${t} month${t!==1?"s":""} ago`}let n=Math.floor(e/31536e3);return`${n} year${n!==1?"s":""} ago`}function a(i=document){for(let e of i.querySelectorAll("time[data-relative]")){let n=e.getAttribute("datetime");if(!n)continue;let t=p(new Date(n));t&&(e.textContent=t)}}var l=typeof document<"u"?document.documentElement:null,h;function m(){a(),h||(h=setInterval(()=>a(),6e4))}l&&!l.hasAttribute("data-vb-time-relative-init")&&(l.setAttribute("data-vb-time-relative-init",""),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",m,{once:!0}):m());var d=class extends c{setup(){a(this),this.#t();let e=this.getAttribute("updates-src");e&&this.#i(e)}#t(){if(this.querySelector(":scope > [data-timeline-controls]"))return;let e=document.createElement("nav");e.setAttribute("data-timeline-controls",""),e.setAttribute("aria-label","Timeline controls");let n=document.createElement("button");if(n.type="button",n.textContent="Oldest first",n.addEventListener("click",()=>{this.#n(),n.textContent=this.#e?"Latest first":"Oldest first"}),e.append(n),this.hasAttribute("versions")){let t=this.#o();if(t.length>0){let o=document.createElement("select");o.setAttribute("aria-label","Filter by version"),o.innerHTML='<option value="">All versions</option>'+t.map(r=>`<option value="${r}">${r}</option>`).join(""),o.addEventListener("change",()=>this.#r(o.value)),e.append(o)}}this.prepend(e)}#e=!1;#n(){this.#e=!this.#e;let e=this.querySelector(".changelog-entries")||this,n=[...e.children].filter(t=>t.tagName==="SECTION"||t.tagName==="ARTICLE");n.reverse();for(let t of n)e.append(t)}#o(){let e=this.querySelectorAll(".version-tag"),n=new Set;for(let t of e){let o=t.textContent.trim();o&&n.add(o)}return[...n]}#r(e){let n=this.querySelectorAll('section[id^="v"]');for(let t of n)t.hidden=!!e&&t.id!==e.replace(/\./g,"-").replace(/^v/,"v");if(!n.length){let t=this.querySelectorAll(".changelog-entries article");for(let o of t){let r=o.querySelector(".version-tag");o.hidden=!!e&&r?.textContent?.trim()!==e}}}async#i(e){try{let n=await fetch(e);if(!n.ok)return;let t=await n.json();if(!Array.isArray(t)||!t.length)return;let o=document.createElement("section");o.setAttribute("aria-labelledby","recent-pages-heading"),o.innerHTML=`
1
+ var b=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function f(r,e,n={}){let t=n.priority??10,o={impl:e,bundle:n.bundle,contract:n.contract,priority:t},i=u.get(r);if(customElements.get(r)){if(!i||i.priority>=t){i&&i.priority===t&&i.impl!==e&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${i.bundle}" (priority ${i.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${r}> defined by "${i.bundle}" cannot be replaced (customElements.define is permanent). "${n.bundle}" has higher priority but arrived late.`);return}if(i&&i.priority>=t){i.priority===t&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${i.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}u.set(r,o),customElements.define(r,e)}var c=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{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,n,t,o){e.addEventListener(n,t,o),this.#t.push(()=>e.removeEventListener(n,t,o))}_reinit(){for(let e of this.#t)e();this.#t=[],this.teardown(),this.removeAttribute("data-upgraded"),this.isConnected&&this.setup()!==!1&&this.setAttribute("data-upgraded","")}setup(){}teardown(){}setState(e,n){this.#e||(this.#e=this.attachInternals());let t=this.#e.states;try{n?t.add(e):t.delete(e)}catch{let o=`--${e}`;n?t.add(o):t.delete(o)}}_adoptInternals(e){this.#e||(this.#e=e)}};function p(r){let e=(Date.now()-r.getTime())/1e3;if(Number.isNaN(e)||e<0)return null;if(e<60)return"just now";if(e<3600){let t=Math.floor(e/60);return`${t} minute${t!==1?"s":""} ago`}if(e<86400){let t=Math.floor(e/3600);return`${t} hour${t!==1?"s":""} ago`}if(e<2592e3){let t=Math.floor(e/86400);return`${t} day${t!==1?"s":""} ago`}if(e<31536e3){let t=Math.floor(e/2592e3);return`${t} month${t!==1?"s":""} ago`}let n=Math.floor(e/31536e3);return`${n} year${n!==1?"s":""} ago`}function a(r=document){for(let e of r.querySelectorAll("time[data-relative]")){let n=e.getAttribute("datetime");if(!n)continue;let t=p(new Date(n));t&&(e.textContent=t)}}var l=typeof document<"u"?document.documentElement:null,h;function m(){a(),h||(h=setInterval(()=>a(),6e4))}l&&!l.hasAttribute("data-vb-time-relative-init")&&(l.setAttribute("data-vb-time-relative-init",""),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",m,{once:!0}):m());var d=class extends c{setup(){a(this),this.#t();let e=this.getAttribute("updates-src");e&&this.#r(e)}#t(){if(this.querySelector("[data-timeline-controls]"))return;let e=document.createElement("nav");e.setAttribute("data-timeline-controls",""),e.setAttribute("aria-label","Timeline controls");let n=document.createElement("button");if(n.type="button",n.textContent="Oldest first",n.addEventListener("click",()=>{this.#n(),n.textContent=this.#e?"Latest first":"Oldest first"}),e.append(n),this.hasAttribute("versions")){let o=this.#o();if(o.length>0){let i=document.createElement("select");i.setAttribute("aria-label","Filter by version"),i.innerHTML='<option value="">All versions</option>'+o.map(s=>`<option value="${s}">${s}</option>`).join(""),i.addEventListener("change",()=>this.#i(i.value)),e.append(i)}}let t=this.querySelector(".changelog-entries");for(;t&&t.parentElement!==this;)t=t.parentElement;t?t.before(e):this.prepend(e)}#e=!1;#n(){this.#e=!this.#e;let e=this.querySelector(".changelog-entries")||this,n=[...e.children].filter(t=>t.tagName==="SECTION"||t.tagName==="ARTICLE");n.reverse();for(let t of n)e.append(t)}#o(){let e=this.querySelectorAll(".version-tag"),n=new Set;for(let t of e){let o=t.textContent.trim();o&&n.add(o)}return[...n]}#i(e){let n=this.querySelectorAll(':is(section, article)[id^="v"]'),t=e.replace(/\./g,"-");for(let o of n)o.hidden=!!e&&o.id!==t;if(!n.length){let o=this.querySelectorAll(".changelog-entries article");for(let i of o){let s=i.querySelector(".version-tag");i.hidden=!!e&&s?.textContent?.trim()!==e}}}async#r(e){try{let n=await fetch(e);if(!n.ok)return;let t=await n.json();if(!Array.isArray(t)||!t.length)return;let o=document.createElement("section");o.setAttribute("aria-labelledby","recent-pages-heading"),o.innerHTML=`
2
2
  <h2 id="recent-pages-heading">Recently Updated Pages</h2>
3
3
  <ul class="recent-pages">
4
4
  ${t.slice(0,10).map(s=>`
@@ -8,5 +8,5 @@ var b=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;functi
8
8
  </li>
9
9
  `).join("")}
10
10
  </ul>
11
- `;let r=this.querySelector(".changelog-entries")||this.querySelector("[data-timeline-controls]");r?r.after(o):this.append(o),a(o)}catch{}}};f("time-index",d);export{d as TimeIndex};
11
+ `;let i=this.querySelector(".changelog-entries")||this.querySelector("[data-timeline-controls]");i?i.after(o):this.append(o),a(o)}catch{}}};f("time-index",d);export{d as TimeIndex};
12
12
  //# sourceMappingURL=time-index.js.map
@@ -1,2 +1,2 @@
1
- var x=window.matchMedia("(prefers-reduced-motion: reduce)");var b=new Map;function A(n,t,e={}){let i=e.priority??10,r={impl:t,bundle:e.bundle,contract:e.contract,priority:i},s=b.get(n);if(customElements.get(n)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==t&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}b.set(n,r),customElements.define(n,t)}var p=class extends HTMLElement{#c=[];#i;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#c)t();this.#c=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,i,r){t.addEventListener(e,i,r),this.#c.push(()=>t.removeEventListener(e,i,r))}setup(){}teardown(){}setState(t,e){this.#i||(this.#i=this.attachInternals());let i=this.#i.states;try{e?i.add(t):i.delete(t)}catch{let r=`--${t}`;e?i.add(r):i.delete(r)}}_adoptInternals(t){this.#i||(this.#i=t)}};function v(){try{let n=new Intl.DateTimeFormat(void 0,{hour:"numeric"}).resolvedOptions();return n.hourCycle==="h12"||n.hourCycle==="h11"?"12h":"24h"}catch{return"12h"}}function l(n){return String(n).padStart(2,"0")}function c(n){if(!n)return null;let t=n.split(":").map(Number);return{h:t[0]||0,m:t[1]||0,s:t[2]||0}}function d(n,t,e,i){return i?`${l(n)}:${l(t)}:${l(e)}`:`${l(n)}:${l(t)}`}function y(n,t,e,i,r){if(r==="12h"){let s=n>=12?"PM":"AM",h=n%12||12;return i?`${h}:${l(t)}:${l(e)} ${s}`:`${h}:${l(t)} ${s}`}return d(n,t,e,i)}function g(n){let t=n.trim();if(!t)return null;let e=t.match(/\s*(am|pm|a\.m\.|p\.m\.|a|p)\s*$/i),i=null,r=t;e&&(i=e[1].toLowerCase().replace(/\./g,"").startsWith("p")?"PM":"AM",r=t.slice(0,e.index).trim());let s=r.split(/[:.]/);if(s.length<1||s.length>3)return null;let h=Number(s[0]),o=s.length>1?Number(s[1]):0,u=s.length>2?Number(s[2]):0;if(isNaN(h)||isNaN(o)||isNaN(u)||o<0||o>59||u<0||u>59)return null;let a=h;if(i){if(a<1||a>12)return null;i==="AM"?a=a===12?0:a:a=a===12?12:a+12}else if(a<0||a>23)return null;return{h:a,m:o,s:u}}function E(n,t,e){return n>e?t:n<t?e:n}var f=class extends p{static formAssociated=!0;#c;#i;#e;#m;#d;#a;#r=[];#u;#h;#p;#t=0;#s=0;#n=0;#o="AM";#L=null;#q=null;#v=60;#N;#I=0;#l=!1;#M;constructor(){super(),this.#c=this.attachInternals(),this._adoptInternals(this.#c)}setup(){if(this.#i=this.querySelector(':scope > input[type="time"]'),!this.#i)return!1;this.#v=Number(this.#i.getAttribute("step"))||60,this.#p=this.#v<60,this.#L=c(this.#i.getAttribute("min")),this.#q=c(this.#i.getAttribute("max")),this.#h=this.getAttribute("data-format")||v();let t=c(this.#i.value);return t&&(this.#t=t.h,this.#s=t.m,this.#n=t.s),this.#N=this.#i.value,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#i.setAttribute("tabindex","-1"),this.#i.setAttribute("aria-hidden","true"),this.#i.style.cssText="position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;overflow:hidden;",this.#F(),this.#O(),this.#P(),this.#E(),this.#k(),this.#C(),this.listen(document,"click",this.#V),(this.#i.disabled||this.hasAttribute("disabled"))&&(this.setAttribute("data-disabled",""),this.#e.disabled=!0),!0}#F(){if(this.#m?.parentNode===this)return;this.#m=document.createElement("div"),this.#m.className="time-trigger",this.#e=document.createElement("input"),this.#e.type="text",this.#e.className="time-input",this.#e.setAttribute("role","combobox"),this.#e.setAttribute("aria-haspopup","listbox"),this.#e.setAttribute("aria-expanded","false"),this.#e.setAttribute("autocomplete","off"),this.#e.setAttribute("placeholder","Type a time\u2026"),this.#m.appendChild(this.#e),this.#d=document.createElement("button"),this.#d.type="button",this.#d.className="time-trigger-icon",this.#d.setAttribute("aria-label","Toggle time spinner"),this.#d.setAttribute("tabindex","-1");let t=document.createElement("icon-wc");t.setAttribute("name","clock"),t.setAttribute("size","sm"),t.setAttribute("aria-hidden","true"),this.#d.appendChild(t),this.#m.appendChild(this.#d),this.appendChild(this.#m),this.listen(this.#d,"click",e=>{e.stopPropagation(),this.#l?this.#f():this.#T(),this.#e.focus()}),this.listen(this.#e,"focus",()=>this.#e.select()),this.listen(this.#e,"keydown",this.#H),this.listen(this.#e,"blur",this.#R)}#O(){if(this.#a?.parentNode===this)return;this.#M=`tp-${Math.random().toString(36).slice(2,8)}`,this.#a=document.createElement("div"),this.#a.className="time-panel",this.#a.id=this.#M,this.#a.setAttribute("role","group"),this.#a.setAttribute("aria-label","Time spinners"),this.#e.setAttribute("aria-controls",this.#M);let t=this.#h==="12h"?1:0,e=this.#h==="12h"?12:23,i=this.#w("Hours",t,e,1);this.#a.appendChild(i.el),this.#r.push(i),this.#a.appendChild(this.#S());let r=this.#v>=60?Math.max(1,Math.round(this.#v/60)):1,s=this.#w("Minutes",0,59,r);if(this.#a.appendChild(s.el),this.#r.push(s),this.#p){this.#a.appendChild(this.#S());let h=this.#w("Seconds",0,59,this.#v);this.#a.appendChild(h.el),this.#r.push(h)}this.#h==="12h"&&(this.#u=document.createElement("button"),this.#u.type="button",this.#u.className="period-toggle",this.#u.setAttribute("aria-label","Toggle AM/PM"),this.#u.textContent=this.#o,this.#a.appendChild(this.#u),this.listen(this.#u,"click",()=>{this.#o=this.#o==="AM"?"PM":"AM",this.#u.textContent=this.#o,this.#t=this.#B(this.#$(),this.#o),this.#g()}),this.listen(this.#u,"keydown",h=>{let o=h;o.key==="ArrowLeft"&&(o.preventDefault(),this.#x(this.#r.length-1)),o.key==="Escape"&&(o.preventDefault(),this.#f(),this.#e.focus())})),this.appendChild(this.#a)}#w(t,e,i,r){let s=document.createElement("div");s.className="time-spinner",s.setAttribute("role","spinbutton"),s.setAttribute("aria-label",t),s.setAttribute("aria-valuemin",String(e)),s.setAttribute("aria-valuemax",String(i)),s.setAttribute("tabindex","0");let h=document.createElement("button");h.type="button",h.className="time-inc",h.setAttribute("aria-hidden","true"),h.setAttribute("tabindex","-1"),h.innerHTML="&#x25B2;";let o=document.createElement("span");o.className="time-value";let u=document.createElement("button");u.type="button",u.className="time-dec",u.setAttribute("aria-hidden","true"),u.setAttribute("tabindex","-1"),u.innerHTML="&#x25BC;",s.appendChild(h),s.appendChild(o),s.appendChild(u);let a={el:s,valueEl:o,label:t,min:e,max:i,step:r};return this.listen(h,"click",()=>{this.#A(a,r)}),this.listen(u,"click",()=>{this.#A(a,-r)}),this.listen(s,"keydown",m=>{this.#j(m,a)}),this.listen(s,"focus",()=>{this.#I=this.#r.indexOf(a)}),a}#S(){let t=document.createElement("span");return t.className="time-sep",t.setAttribute("aria-hidden","true"),t.textContent=":",t}#T(){this.#l||(this.#l=!0,this.#a.setAttribute("data-open",""),this.#e.setAttribute("aria-expanded","true"))}#f(){this.#l&&(this.#l=!1,this.#a.removeAttribute("data-open"),this.#e.setAttribute("aria-expanded","false"))}#V=t=>{this.#l&&!this.contains(t.target)&&this.#f()};#H=t=>{switch(t.key){case"Enter":{t.preventDefault(),t.stopPropagation();let e=g(this.#e.value);e&&(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g()),this.#E(),this.#l&&this.#f();return}case"ArrowDown":t.preventDefault(),t.stopPropagation(),this.#l||this.#T(),requestAnimationFrame(()=>this.#x(0));return;case"Escape":t.preventDefault(),t.stopPropagation(),this.#l&&this.#f(),this.#E();return;case"Tab":this.#l&&this.#f();return}};#R=t=>{if(t.relatedTarget&&this.contains(t.relatedTarget))return;let e=this.#e.value.trim();if(e){let i=g(e);i&&(this.#t=i.h,this.#s=i.m,this.#n=i.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#k(),this.#C(),this.dispatchEvent(new CustomEvent("time-picker:change",{bubbles:!0,detail:{value:d(this.#t,this.#s,this.#n,this.#p),hours:this.#t,minutes:this.#s,seconds:this.#n}})))}this.#E(),this.#l&&this.#f(),this.#i.dispatchEvent(new Event("blur",{bubbles:!0}))};#j=(t,e)=>{let i=this.#r.indexOf(e);switch(t.key){case"ArrowUp":t.preventDefault(),this.#A(e,e.step);break;case"ArrowDown":t.preventDefault(),this.#A(e,-e.step);break;case"ArrowRight":t.preventDefault(),i<this.#r.length-1?this.#x(i+1):this.#u&&this.#u.focus();break;case"ArrowLeft":t.preventDefault(),i>0&&this.#x(i-1);break;case"PageUp":t.preventDefault(),this.#A(e,e.step*(e.label==="Hours"?1:10));break;case"PageDown":t.preventDefault(),this.#A(e,-e.step*(e.label==="Hours"?1:10));break;case"Home":t.preventDefault(),this.#y(e,e.min);break;case"End":t.preventDefault(),this.#y(e,e.max);break;case"Escape":t.preventDefault(),this.#f(),this.#e.focus();break;default:/^\d$/.test(t.key)&&(t.preventDefault(),this.#U(t.key,e))}};#b="";#D=0;#U(t,e){clearTimeout(this.#D),this.#b+=t;let i=Number(this.#b);if(this.#b.length>=2||i*10>e.max){let r=Math.min(Math.max(i,e.min),e.max);this.#y(e,r),this.#b=""}else this.#D=setTimeout(()=>{let r=Number(this.#b),s=Math.min(Math.max(r,e.min),e.max);this.#y(e,s),this.#b=""},800)}#A(t,e){let i;t.label==="Hours"?i=this.#h==="12h"?this.#$():this.#t:t.label==="Minutes"?i=this.#s:i=this.#n;let r=E(i+e,t.min,t.max);this.#y(t,r)}#y(t,e){t.label==="Hours"?this.#h==="12h"?this.#t=this.#B(e,this.#o):this.#t=e:t.label==="Minutes"?this.#s=e:this.#n=e,this.#g()}#g(t="internal"){this.#P(),this.#E(),this.#k(),this.#C(),this.dispatchEvent(new CustomEvent("time-picker:change",{bubbles:!0,detail:{value:d(this.#t,this.#s,this.#n,this.#p),hours:this.#t,minutes:this.#s,seconds:this.#n,source:t}}))}#P(){let t=this.#h==="12h"?this.#$():this.#t;this.#r[0].valueEl.textContent=l(t),this.#r[0].el.setAttribute("aria-valuenow",String(t)),this.#r[0].el.setAttribute("aria-valuetext",this.#h==="12h"?`${t} ${this.#o}`:String(t)),this.#r[1].valueEl.textContent=l(this.#s),this.#r[1].el.setAttribute("aria-valuenow",String(this.#s)),this.#p&&this.#r[2]&&(this.#r[2].valueEl.textContent=l(this.#n),this.#r[2].el.setAttribute("aria-valuenow",String(this.#n))),this.#u&&(this.#u.textContent=this.#o)}#E(){this.#t!==void 0&&(this.#e.value=y(this.#t,this.#s,this.#n,this.#p,this.#h))}#k(){let t=d(this.#t,this.#s,this.#n,this.#p);this.#c.setFormValue(t),this.#i.value=t,this.#i.dispatchEvent(new Event("input",{bubbles:!0}))}#C(){if((this.hasAttribute("required")||this.#i.hasAttribute("required"))&&!this.#i.value){this.#c.setValidity({valueMissing:!0},"Please select a time",this.#e||this);return}this.#c.setValidity({})}#B(t,e){return e==="AM"?t===12?0:t:t===12?12:t+12}#$(){if(this.#h==="24h")return this.#t;let t=this.#t%12;return t===0?12:t}#x(t){this.#r[t]?.el.focus()}formResetCallback(){let t=c(this.#N);t?(this.#t=t.h,this.#s=t.m,this.#n=t.s):(this.#t=0,this.#s=0,this.#n=0),this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g()}formStateRestoreCallback(t){if(!t)return;let e=c(t);e&&(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g())}get value(){return d(this.#t,this.#s,this.#n,this.#p)}set value(t){let e=c(t);e&&(e.h===this.#t&&e.m===this.#s&&e.s===this.#n||(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g("api")))}};A("time-picker",f);export{f as TimePicker};
1
+ var x=window.matchMedia("(prefers-reduced-motion: reduce)");var b=new Map;function A(n,t,e={}){let i=e.priority??10,r={impl:t,bundle:e.bundle,contract:e.contract,priority:i},s=b.get(n);if(customElements.get(n)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==t&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}b.set(n,r),customElements.define(n,t)}var f=class extends HTMLElement{#l=[];#i;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#l)t();this.#l=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,i,r){t.addEventListener(e,i,r),this.#l.push(()=>t.removeEventListener(e,i,r))}_reinit(){for(let t of this.#l)t();this.#l=[],this.teardown(),this.removeAttribute("data-upgraded"),this.isConnected&&this.setup()!==!1&&this.setAttribute("data-upgraded","")}setup(){}teardown(){}setState(t,e){this.#i||(this.#i=this.attachInternals());let i=this.#i.states;try{e?i.add(t):i.delete(t)}catch{let r=`--${t}`;e?i.add(r):i.delete(r)}}_adoptInternals(t){this.#i||(this.#i=t)}};function v(){try{let n=new Intl.DateTimeFormat(void 0,{hour:"numeric"}).resolvedOptions();return n.hourCycle==="h12"||n.hourCycle==="h11"?"12h":"24h"}catch{return"12h"}}function l(n){return String(n).padStart(2,"0")}function c(n){if(!n)return null;let t=n.split(":").map(Number);return{h:t[0]||0,m:t[1]||0,s:t[2]||0}}function d(n,t,e,i){return i?`${l(n)}:${l(t)}:${l(e)}`:`${l(n)}:${l(t)}`}function y(n,t,e,i,r){if(r==="12h"){let s=n>=12?"PM":"AM",h=n%12||12;return i?`${h}:${l(t)}:${l(e)} ${s}`:`${h}:${l(t)} ${s}`}return d(n,t,e,i)}function g(n){let t=n.trim();if(!t)return null;let e=t.match(/\s*(am|pm|a\.m\.|p\.m\.|a|p)\s*$/i),i=null,r=t;e&&(i=e[1].toLowerCase().replace(/\./g,"").startsWith("p")?"PM":"AM",r=t.slice(0,e.index).trim());let s=r.split(/[:.]/);if(s.length<1||s.length>3)return null;let h=Number(s[0]),o=s.length>1?Number(s[1]):0,u=s.length>2?Number(s[2]):0;if(isNaN(h)||isNaN(o)||isNaN(u)||o<0||o>59||u<0||u>59)return null;let a=h;if(i){if(a<1||a>12)return null;i==="AM"?a=a===12?0:a:a=a===12?12:a+12}else if(a<0||a>23)return null;return{h:a,m:o,s:u}}function E(n,t,e){return n>e?t:n<t?e:n}var p=class extends f{static formAssociated=!0;#l;#i;#e;#m;#d;#a;#r=[];#u;#h;#f;#t=0;#s=0;#n=0;#o="AM";#L=null;#q=null;#v=60;#N;#I=0;#c=!1;#M;constructor(){super(),this.#l=this.attachInternals(),this._adoptInternals(this.#l)}setup(){if(this.#i=this.querySelector(':scope > input[type="time"]'),!this.#i)return!1;this.#v=Number(this.#i.getAttribute("step"))||60,this.#f=this.#v<60,this.#L=c(this.#i.getAttribute("min")),this.#q=c(this.#i.getAttribute("max")),this.#h=this.getAttribute("data-format")||v();let t=c(this.#i.value);return t&&(this.#t=t.h,this.#s=t.m,this.#n=t.s),this.#N=this.#i.value,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#i.setAttribute("tabindex","-1"),this.#i.setAttribute("aria-hidden","true"),this.#i.style.cssText="position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;overflow:hidden;",this.#F(),this.#O(),this.#P(),this.#E(),this.#k(),this.#C(),this.listen(document,"click",this.#V),(this.#i.disabled||this.hasAttribute("disabled"))&&(this.setAttribute("data-disabled",""),this.#e.disabled=!0),!0}#F(){if(this.#m?.parentNode===this)return;this.#m=document.createElement("div"),this.#m.className="time-trigger",this.#e=document.createElement("input"),this.#e.type="text",this.#e.className="time-input",this.#e.setAttribute("role","combobox"),this.#e.setAttribute("aria-haspopup","listbox"),this.#e.setAttribute("aria-expanded","false"),this.#e.setAttribute("autocomplete","off"),this.#e.setAttribute("placeholder","Type a time\u2026"),this.#m.appendChild(this.#e),this.#d=document.createElement("button"),this.#d.type="button",this.#d.className="time-trigger-icon",this.#d.setAttribute("aria-label","Toggle time spinner"),this.#d.setAttribute("tabindex","-1");let t=document.createElement("icon-wc");t.setAttribute("name","clock"),t.setAttribute("size","sm"),t.setAttribute("aria-hidden","true"),this.#d.appendChild(t),this.#m.appendChild(this.#d),this.appendChild(this.#m),this.listen(this.#d,"click",e=>{e.stopPropagation(),this.#c?this.#p():this.#T(),this.#e.focus()}),this.listen(this.#e,"focus",()=>this.#e.select()),this.listen(this.#e,"keydown",this.#H),this.listen(this.#e,"blur",this.#R)}#O(){if(this.#a?.parentNode===this)return;this.#M=`tp-${Math.random().toString(36).slice(2,8)}`,this.#a=document.createElement("div"),this.#a.className="time-panel",this.#a.id=this.#M,this.#a.setAttribute("role","group"),this.#a.setAttribute("aria-label","Time spinners"),this.#e.setAttribute("aria-controls",this.#M);let t=this.#h==="12h"?1:0,e=this.#h==="12h"?12:23,i=this.#w("Hours",t,e,1);this.#a.appendChild(i.el),this.#r.push(i),this.#a.appendChild(this.#S());let r=this.#v>=60?Math.max(1,Math.round(this.#v/60)):1,s=this.#w("Minutes",0,59,r);if(this.#a.appendChild(s.el),this.#r.push(s),this.#f){this.#a.appendChild(this.#S());let h=this.#w("Seconds",0,59,this.#v);this.#a.appendChild(h.el),this.#r.push(h)}this.#h==="12h"&&(this.#u=document.createElement("button"),this.#u.type="button",this.#u.className="period-toggle",this.#u.setAttribute("aria-label","Toggle AM/PM"),this.#u.textContent=this.#o,this.#a.appendChild(this.#u),this.listen(this.#u,"click",()=>{this.#o=this.#o==="AM"?"PM":"AM",this.#u.textContent=this.#o,this.#t=this.#B(this.#$(),this.#o),this.#g()}),this.listen(this.#u,"keydown",h=>{let o=h;o.key==="ArrowLeft"&&(o.preventDefault(),this.#x(this.#r.length-1)),o.key==="Escape"&&(o.preventDefault(),this.#p(),this.#e.focus())})),this.appendChild(this.#a)}#w(t,e,i,r){let s=document.createElement("div");s.className="time-spinner",s.setAttribute("role","spinbutton"),s.setAttribute("aria-label",t),s.setAttribute("aria-valuemin",String(e)),s.setAttribute("aria-valuemax",String(i)),s.setAttribute("tabindex","0");let h=document.createElement("button");h.type="button",h.className="time-inc",h.setAttribute("aria-hidden","true"),h.setAttribute("tabindex","-1"),h.innerHTML="&#x25B2;";let o=document.createElement("span");o.className="time-value";let u=document.createElement("button");u.type="button",u.className="time-dec",u.setAttribute("aria-hidden","true"),u.setAttribute("tabindex","-1"),u.innerHTML="&#x25BC;",s.appendChild(h),s.appendChild(o),s.appendChild(u);let a={el:s,valueEl:o,label:t,min:e,max:i,step:r};return this.listen(h,"click",()=>{this.#A(a,r)}),this.listen(u,"click",()=>{this.#A(a,-r)}),this.listen(s,"keydown",m=>{this.#_(m,a)}),this.listen(s,"focus",()=>{this.#I=this.#r.indexOf(a)}),a}#S(){let t=document.createElement("span");return t.className="time-sep",t.setAttribute("aria-hidden","true"),t.textContent=":",t}#T(){this.#c||(this.#c=!0,this.#a.setAttribute("data-open",""),this.#e.setAttribute("aria-expanded","true"))}#p(){this.#c&&(this.#c=!1,this.#a.removeAttribute("data-open"),this.#e.setAttribute("aria-expanded","false"))}#V=t=>{this.#c&&!this.contains(t.target)&&this.#p()};#H=t=>{switch(t.key){case"Enter":{t.preventDefault(),t.stopPropagation();let e=g(this.#e.value);e&&(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g()),this.#E(),this.#c&&this.#p();return}case"ArrowDown":t.preventDefault(),t.stopPropagation(),this.#c||this.#T(),requestAnimationFrame(()=>this.#x(0));return;case"Escape":t.preventDefault(),t.stopPropagation(),this.#c&&this.#p(),this.#E();return;case"Tab":this.#c&&this.#p();return}};#R=t=>{if(t.relatedTarget&&this.contains(t.relatedTarget))return;let e=this.#e.value.trim();if(e){let i=g(e);i&&(this.#t=i.h,this.#s=i.m,this.#n=i.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#k(),this.#C(),this.dispatchEvent(new CustomEvent("time-picker:change",{bubbles:!0,detail:{value:d(this.#t,this.#s,this.#n,this.#f),hours:this.#t,minutes:this.#s,seconds:this.#n}})))}this.#E(),this.#c&&this.#p(),this.#i.dispatchEvent(new Event("blur",{bubbles:!0}))};#_=(t,e)=>{let i=this.#r.indexOf(e);switch(t.key){case"ArrowUp":t.preventDefault(),this.#A(e,e.step);break;case"ArrowDown":t.preventDefault(),this.#A(e,-e.step);break;case"ArrowRight":t.preventDefault(),i<this.#r.length-1?this.#x(i+1):this.#u&&this.#u.focus();break;case"ArrowLeft":t.preventDefault(),i>0&&this.#x(i-1);break;case"PageUp":t.preventDefault(),this.#A(e,e.step*(e.label==="Hours"?1:10));break;case"PageDown":t.preventDefault(),this.#A(e,-e.step*(e.label==="Hours"?1:10));break;case"Home":t.preventDefault(),this.#y(e,e.min);break;case"End":t.preventDefault(),this.#y(e,e.max);break;case"Escape":t.preventDefault(),this.#p(),this.#e.focus();break;default:/^\d$/.test(t.key)&&(t.preventDefault(),this.#j(t.key,e))}};#b="";#D=0;#j(t,e){clearTimeout(this.#D),this.#b+=t;let i=Number(this.#b);if(this.#b.length>=2||i*10>e.max){let r=Math.min(Math.max(i,e.min),e.max);this.#y(e,r),this.#b=""}else this.#D=setTimeout(()=>{let r=Number(this.#b),s=Math.min(Math.max(r,e.min),e.max);this.#y(e,s),this.#b=""},800)}#A(t,e){let i;t.label==="Hours"?i=this.#h==="12h"?this.#$():this.#t:t.label==="Minutes"?i=this.#s:i=this.#n;let r=E(i+e,t.min,t.max);this.#y(t,r)}#y(t,e){t.label==="Hours"?this.#h==="12h"?this.#t=this.#B(e,this.#o):this.#t=e:t.label==="Minutes"?this.#s=e:this.#n=e,this.#g()}#g(t="internal"){this.#P(),this.#E(),this.#k(),this.#C(),this.dispatchEvent(new CustomEvent("time-picker:change",{bubbles:!0,detail:{value:d(this.#t,this.#s,this.#n,this.#f),hours:this.#t,minutes:this.#s,seconds:this.#n,source:t}}))}#P(){let t=this.#h==="12h"?this.#$():this.#t;this.#r[0].valueEl.textContent=l(t),this.#r[0].el.setAttribute("aria-valuenow",String(t)),this.#r[0].el.setAttribute("aria-valuetext",this.#h==="12h"?`${t} ${this.#o}`:String(t)),this.#r[1].valueEl.textContent=l(this.#s),this.#r[1].el.setAttribute("aria-valuenow",String(this.#s)),this.#f&&this.#r[2]&&(this.#r[2].valueEl.textContent=l(this.#n),this.#r[2].el.setAttribute("aria-valuenow",String(this.#n))),this.#u&&(this.#u.textContent=this.#o)}#E(){this.#t!==void 0&&(this.#e.value=y(this.#t,this.#s,this.#n,this.#f,this.#h))}#k(){let t=d(this.#t,this.#s,this.#n,this.#f);this.#l.setFormValue(t),this.#i.value=t,this.#i.dispatchEvent(new Event("input",{bubbles:!0}))}#C(){if((this.hasAttribute("required")||this.#i.hasAttribute("required"))&&!this.#i.value){this.#l.setValidity({valueMissing:!0},"Please select a time",this.#e||this);return}this.#l.setValidity({})}#B(t,e){return e==="AM"?t===12?0:t:t===12?12:t+12}#$(){if(this.#h==="24h")return this.#t;let t=this.#t%12;return t===0?12:t}#x(t){this.#r[t]?.el.focus()}formResetCallback(){let t=c(this.#N);t?(this.#t=t.h,this.#s=t.m,this.#n=t.s):(this.#t=0,this.#s=0,this.#n=0),this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g()}formStateRestoreCallback(t){if(!t)return;let e=c(t);e&&(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g())}get value(){return d(this.#t,this.#s,this.#n,this.#f)}set value(t){let e=c(t);e&&(e.h===this.#t&&e.m===this.#s&&e.s===this.#n||(this.#t=e.h,this.#s=e.m,this.#n=e.s,this.#h==="12h"&&(this.#o=this.#t>=12?"PM":"AM"),this.#g("api")))}};A("time-picker",p);export{p as TimePicker};
2
2
  //# sourceMappingURL=time-picker.js.map
@@ -1,4 +1,4 @@
1
- var c=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{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,i,n){e.addEventListener(t,i,n),this.#t.push(()=>e.removeEventListener(t,i,n))}setup(){}teardown(){}setState(e,t){this.#e||(this.#e=this.attachInternals());let i=this.#e.states;try{t?i.add(e):i.delete(e)}catch{let n=`--${e}`;t?i.add(n):i.delete(n)}}_adoptInternals(e){this.#e||(this.#e=e)}};var p=window.matchMedia("(prefers-reduced-motion: reduce)");var l=new Map;function h(o,e,t={}){let i=t.priority??10,n={impl:e,bundle:t.bundle,contract:t.contract,priority:i},s=l.get(o);if(customElements.get(o)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==e&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${o}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${s.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}l.set(o,n),customElements.define(o,e)}var u=class extends c{#t=[];#e=[];static get observedAttributes(){return["position","max"]}setup(){this.setAttribute("role","region"),this.setAttribute("aria-label","Notifications"),this.setAttribute("aria-live","polite")}teardown(){this.#e.forEach(e=>{e._dismissTimer&&clearTimeout(e._dismissTimer)}),this.#t=[],this.#e=[]}show(e){let{message:t,variant:i="info",duration:n=this.#o(),dismissible:s=!0,action:r,onAction:a,source:m="api"}=e,d=this.#r({message:t,variant:i,dismissible:s,action:r,onAction:a}),f=this.#a();return this.#e.length>=f?this.#t.push({toast:d,duration:n}):this.#s(d,n),this.dispatchEvent(new CustomEvent("toast-msg:enqueued",{detail:{message:t,variant:i,duration:n,source:m},bubbles:!0})),d}get queue(){let e=this.#e.map(i=>({message:i.querySelector(".message")?.textContent||"",variant:i.getAttribute("data-variant")||"info",state:"visible"})),t=this.#t.map(({toast:i})=>({message:i.querySelector(".message")?.textContent||"",variant:i.getAttribute("data-variant")||"info",state:"queued"}));return[...e,...t]}#r({message:e,variant:t,dismissible:i,action:n,onAction:s}){let r=document.createElement("div");r.className="toast",r.setAttribute("role",t==="error"||t==="warning"?"alert":"status"),r.setAttribute("data-variant",t);let a={info:"&#9432;",success:"&#10003;",warning:"&#9888;",error:"&#10007;"};return r.innerHTML=`
1
+ var c=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{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,i,n){e.addEventListener(t,i,n),this.#t.push(()=>e.removeEventListener(t,i,n))}_reinit(){for(let e of this.#t)e();this.#t=[],this.teardown(),this.removeAttribute("data-upgraded"),this.isConnected&&this.setup()!==!1&&this.setAttribute("data-upgraded","")}setup(){}teardown(){}setState(e,t){this.#e||(this.#e=this.attachInternals());let i=this.#e.states;try{t?i.add(e):i.delete(e)}catch{let n=`--${e}`;t?i.add(n):i.delete(n)}}_adoptInternals(e){this.#e||(this.#e=e)}};var p=window.matchMedia("(prefers-reduced-motion: reduce)");var l=new Map;function h(o,e,t={}){let i=t.priority??10,n={impl:e,bundle:t.bundle,contract:t.contract,priority:i},s=l.get(o);if(customElements.get(o)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==e&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${t.bundle}".`);return}console.warn(`[VB Bundle] Tag <${o}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${t.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${o}> already registered by "${s.bundle}". Skipping "${t.bundle}" (first wins at equal priority).`);return}l.set(o,n),customElements.define(o,e)}var u=class extends c{#t=[];#e=[];static get observedAttributes(){return["position","max"]}setup(){this.setAttribute("role","region"),this.setAttribute("aria-label","Notifications"),this.setAttribute("aria-live","polite")}teardown(){this.#e.forEach(e=>{e._dismissTimer&&clearTimeout(e._dismissTimer)}),this.#t=[],this.#e=[]}show(e){let{message:t,variant:i="info",duration:n=this.#o(),dismissible:s=!0,action:r,onAction:a,source:f="api"}=e,d=this.#r({message:t,variant:i,dismissible:s,action:r,onAction:a}),m=this.#a();return this.#e.length>=m?this.#t.push({toast:d,duration:n}):this.#s(d,n),this.dispatchEvent(new CustomEvent("toast-msg:enqueued",{detail:{message:t,variant:i,duration:n,source:f},bubbles:!0})),d}get queue(){let e=this.#e.map(i=>({message:i.querySelector(".message")?.textContent||"",variant:i.getAttribute("data-variant")||"info",state:"visible"})),t=this.#t.map(({toast:i})=>({message:i.querySelector(".message")?.textContent||"",variant:i.getAttribute("data-variant")||"info",state:"queued"}));return[...e,...t]}#r({message:e,variant:t,dismissible:i,action:n,onAction:s}){let r=document.createElement("div");r.className="toast",r.setAttribute("role",t==="error"||t==="warning"?"alert":"status"),r.setAttribute("data-variant",t);let a={info:"&#9432;",success:"&#10003;",warning:"&#9888;",error:"&#10007;"};return r.innerHTML=`
2
2
  <span class="icon" aria-hidden="true">${a[t]||a.info}</span>
3
3
  <span class="message">${this.#n(e)}</span>
4
4
  ${n?`<button type="button" class="action">${this.#n(n)}</button>`:""}