vanilla-breeze 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/cdn/components/analytics-panel.js +34 -0
  2. package/dist/cdn/components/author-index.js +3 -0
  3. package/dist/cdn/components/brand-mark.js +2 -0
  4. package/dist/cdn/components/carousel-wc.js +1 -1
  5. package/dist/cdn/components/color-palette.js +13 -7
  6. package/dist/cdn/components/comment-wc.js +2 -0
  7. package/dist/cdn/components/consent-banner.js +1 -1
  8. package/dist/cdn/components/content-lens.js +2 -0
  9. package/dist/cdn/components/font-pairer.js +108 -0
  10. package/dist/cdn/components/geo-map.js +7 -7
  11. package/dist/cdn/components/gradient-builder.js +52 -0
  12. package/dist/cdn/components/highlight-wc.js +3 -0
  13. package/dist/cdn/components/manifest.json +93 -21
  14. package/dist/cdn/components/markdown-viewer.js +3 -3
  15. package/dist/cdn/components/motion-specimen.js +21 -0
  16. package/dist/cdn/components/note-wc.js +3 -0
  17. package/dist/cdn/components/notification-wc.js +37 -0
  18. package/dist/cdn/components/page-info.js +55 -24
  19. package/dist/cdn/components/page-toc.js +1 -1
  20. package/dist/cdn/components/popularity-index.js +9 -0
  21. package/dist/cdn/components/print-page.js +1 -1
  22. package/dist/cdn/components/recently-visited.js +3 -0
  23. package/dist/cdn/components/review-surface.js +11 -11
  24. package/dist/cdn/components/selection-menu.js +2 -0
  25. package/dist/cdn/components/semantic-palette.js +30 -0
  26. package/dist/cdn/components/settings-panel.js +55 -51
  27. package/dist/cdn/components/share-wc.js +2 -2
  28. package/dist/cdn/components/spacing-specimen.js +5 -5
  29. package/dist/cdn/components/split-surface.js +1 -1
  30. package/dist/cdn/components/text-reader.js +2 -2
  31. package/dist/cdn/components/theme-export.js +18 -0
  32. package/dist/cdn/components/theme-picker.js +58 -58
  33. package/dist/cdn/components/token-specimen.js +25 -20
  34. package/dist/cdn/components/topic-map.js +3 -0
  35. package/dist/cdn/components/trust-filter.js +4 -0
  36. package/dist/cdn/components/type-specimen.js +16 -13
  37. package/dist/cdn/components/watch-wc.js +3 -0
  38. package/dist/cdn/packs/design-system.full.js +124 -47
  39. package/dist/cdn/packs/effects.full.js +1 -1
  40. package/dist/cdn/packs/kawaii.full.css +1 -1
  41. package/dist/cdn/packs/kawaii.full.js +1 -1
  42. package/dist/cdn/packs/kawaii.theme.css +1 -1
  43. package/dist/cdn/packs/manifest.json +8 -38
  44. package/dist/cdn/packs/ui.full.css +1 -1
  45. package/dist/cdn/packs/ui.full.js +50 -50
  46. package/dist/cdn/packs/ux-planning.full.js +36 -36
  47. package/dist/cdn/themes/alpha1999.css +1 -1
  48. package/dist/cdn/themes/brutalist.css +1 -1
  49. package/dist/cdn/themes/claymorphism.css +1 -1
  50. package/dist/cdn/themes/genai.css +1 -1
  51. package/dist/cdn/themes/kawaii.css +1 -1
  52. package/dist/cdn/themes/magna.css +1 -1
  53. package/dist/cdn/themes/manifest.json +12 -12
  54. package/dist/cdn/themes/nes.css +1 -1
  55. package/dist/cdn/themes/neumorphism.css +1 -1
  56. package/dist/cdn/themes/rough.css +1 -1
  57. package/dist/cdn/themes/startup.css +1 -1
  58. package/dist/cdn/themes/super2026.css +1 -1
  59. package/dist/cdn/themes/win9x.css +1 -1
  60. package/dist/cdn/vanilla-breeze-core.css +1 -1
  61. package/dist/cdn/vanilla-breeze-core.js +119 -47
  62. package/dist/cdn/vanilla-breeze-extras.js +154 -74
  63. package/dist/cdn/vanilla-breeze.css +1 -1
  64. package/dist/cdn/vanilla-breeze.js +605 -249
  65. package/package.json +8 -6
  66. package/dist/cdn/packs/retro.bundle.js +0 -2
  67. package/dist/cdn/packs/retro.components.js +0 -1
  68. package/dist/cdn/packs/retro.effects.css +0 -2
  69. package/dist/cdn/packs/retro.effects.js +0 -16
  70. package/dist/cdn/packs/retro.full.css +0 -5
  71. package/dist/cdn/packs/retro.full.js +0 -16
  72. package/dist/cdn/packs/retro.theme.css +0 -2
@@ -1,6 +1,6 @@
1
- var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{for(var a in t)ie(e,a,{get:t[a],enumerable:!0})};var Q={};re(Q,{SoundManager:()=>ue});var X,I,ue,Z=ne(()=>{X="vb-sound",I={enabled:!1,volume:.5},ue={_ctx:null,_enabled:!1,_volume:.5,_initialized:!1,init(){if(this._initialized)return this;let e=this._load();return this._enabled=e.enabled,this._volume=e.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 e=localStorage.getItem(X);return e?{...I,...JSON.parse(e)}:{...I}}catch{return{...I}}},_save(e){try{let t=this._load();localStorage.setItem(X,JSON.stringify({...t,...e}))}catch{}},_playTone(e,t,a="sine"){if(!this._enabled)return;let i=this._getContext(),r=i.createOscillator(),n=i.createGain();r.connect(n),n.connect(i.destination),r.frequency.value=e,r.type=a,n.gain.value=this._volume*.3,r.start(),n.gain.exponentialRampToValueAtTime(.01,i.currentTime+t),r.stop(i.currentTime+t)},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(e){this._volume=Math.max(0,Math.min(1,e)),this._save({volume:this._volume})},getVolume(){return this._volume},play(e){if(this._enabled)switch(e){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 fe=window.matchMedia("(prefers-reduced-motion: reduce)");var G=new Map;function N(e,t,a={}){let i=a.priority??10,r={impl:t,bundle:a.bundle,contract:a.contract,priority:i},n=G.get(e);if(customElements.get(e)){if(!n||n.priority>=i){n&&n.priority===i&&n.impl!==t&&console.warn(`[VB Bundle] Tag <${e}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${e}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=i){n.priority===i&&console.warn(`[VB Bundle] Tag <${e}> already registered by "${n.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}G.set(e,r),customElements.define(e,t)}var _=class extends HTMLElement{#n=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let t of this.#n)t();this.#n=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,a,i,r){t.addEventListener(a,i,r),this.#n.push(()=>t.removeEventListener(a,i,r))}setup(){}teardown(){}};var p=new Map,B=new Map;var U=null;function Y(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(U)return U;if(typeof document<"u"){let e=document.querySelectorAll('script[src*="vanilla-breeze"]');for(let t of e){let a=t.getAttribute("src");if(a){let i=a.lastIndexOf("/");if(i!==-1)return a.slice(0,i)}}}return"/cdn"}var oe=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),ce=new Set(["kawaii","retro","memphis"]);function C(e){return ce.has(e)}function le(e,t){return`${t}/themes/${e}.css`}function J(e,t){if(!C(e))return Promise.resolve();if(B.has(e))return B.get(e);let a=import(`${t}/packs/${e}.full.js`).catch(()=>{});return B.set(e,a),a}function de(e,t){let a=Y(),i=()=>{(C(t)||e.hasAttribute("data-vb-pack"))&&J(t,a)};return e.getAttribute("data-vb-theme-state")==="error"?Promise.reject(new Error(`Failed to load theme: ${t}`)):e.getAttribute("data-vb-theme-state")==="ready"||e.sheet?(i(),Promise.resolve()):new Promise((r,n)=>{let s=()=>{e.setAttribute("data-vb-theme-state","ready"),l(),i(),r()},o=()=>{e.setAttribute("data-vb-theme-state","error"),p.delete(t),l(),n(new Error(`Failed to load theme: ${t}`))},l=()=>{e.removeEventListener("load",s),e.removeEventListener("error",o)};e.addEventListener("load",s,{once:!0}),e.addEventListener("error",o,{once:!0})})}async function k(e){if(!e||oe.has(e))return;if(p.has(e))return p.get(e);if(typeof document<"u"){let i=document.querySelector(`link[data-vb-theme="${e}"]`);if(i){let r=de(i,e);return p.set(e,r),r}}let t=Y(),a=C(e)?me(e,t):he(e,t);return p.set(e,a),a}async function he(e,t){let a=le(e,t);return new Promise((i,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${e}"]`);n&&n.remove();let s=document.createElement("link");s.rel="stylesheet",s.href=a,s.setAttribute("data-vb-theme",e),s.setAttribute("data-vb-theme-state","loading"),s.onload=()=>{s.setAttribute("data-vb-theme-state","ready"),i()},s.onerror=()=>{s.setAttribute("data-vb-theme-state","error"),s.remove(),p.delete(e),r(new Error(`Failed to load theme: ${e}`))},document.head.appendChild(s)})}function me(e,t){let a=`${t}/themes/${e}.css`;return new Promise((i,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${e}"]`);n&&n.remove();let s=document.createElement("link");s.rel="stylesheet",s.href=a,s.setAttribute("data-vb-theme",e),s.setAttribute("data-vb-pack",e),s.setAttribute("data-vb-theme-state","loading"),s.onload=()=>{s.setAttribute("data-vb-theme-state","ready"),J(e,t),i()},s.onerror=()=>{s.setAttribute("data-vb-theme-state","error"),s.remove(),p.delete(e),r(new Error(`Failed to load pack: ${e}`))},document.head.appendChild(s)})}var x=[{id:"auto",name:"Auto",icon:"monitor"},{id:"light",name:"Light",icon:"sun"},{id:"dark",name:"Dark",icon:"moon"}],w=[{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}}],T=[{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"}],M=[{id:"swiss",name:"Swiss",icon:"grid-3x3",character:"Precision grid",swatchBg:"#ff3e00",swatchFg:"white",tier:"showcase",category:"Design"},{id:"brutalist",name:"Brutalist",icon:"square",character:"Raw, industrial",swatchBg:"#1a1a1a",swatchFg:"#f5f5f5",tier:"showcase",category:"Design"},{id:"art-deco",name:"Art Deco",icon:"crown",character:"1920s luxury",swatchBg:"#1A1A1A",swatchFg:"#C9A84C",tier:"showcase",category:"Design"},{id:"editorial",name:"Editorial",icon:"newspaper",character:"Magazine elegance",swatchBg:"#1a1a1a",swatchFg:"#c9a227",tier:"showcase",category:"Content"},{id:"genai",name:"GenAI",icon:"sparkles",character:"AI aesthetic",swatchBg:"#1a0a2e",swatchFg:"#a855f7",tier:"showcase",category:"Modern"},{id:"glassmorphism",name:"Glass",icon:"glass-water",character:"Frosted surfaces",swatchBg:"#667eea",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"startup",name:"Startup",icon:"rocket",character:"SaaS energy",swatchBg:"#4f46e5",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"organic",name:"Organic",icon:"leaf",character:"Natural, handcrafted",swatchBg:"#2d5016",swatchFg:"#faf5e6",tier:"showcase",category:"Creative"},{id:"rough",name:"Rough",icon:"pencil",character:"Hand-drawn sketch",swatchBg:"#f5f0e8",swatchFg:"#3a3a3a",tier:"showcase",category:"Creative"},{id:"cyber",name:"Cyber",icon:"zap",character:"Neon futuristic",swatchBg:"#0a0a1a",swatchFg:"#00ff88",tier:"showcase",category:"Creative"},{id:"vaporwave",name:"Vaporwave",icon:"radio",character:"Neon dreamy",swatchBg:"#2b0040",swatchFg:"#ff6ad5",tier:"showcase",category:"Aesthetic"},{id:"neumorphism",name:"Neumorph",icon:"circle",character:"Soft embossed",swatchBg:"#e0e0e0",swatchFg:"#a0a0a0",tier:"showcase",category:"Aesthetic"},{id:"bauhaus",name:"Bauhaus",icon:"shapes",character:"Geometric",swatchBg:"#F1FAEE",swatchFg:"#E63946",tier:"showcase",category:"Aesthetic"},{id:"claymorphism",name:"Clay",icon:"circle-dot",character:"Puffy 3D",swatchBg:"#f0f0f5",swatchFg:"#FF6B9D",tier:"showcase",category:"Aesthetic"},{id:"alpha1999",name:"Alpha1999",icon:"orbit",character:"Space retro-fi",swatchBg:"#0a0a14",swatchFg:"#d4880f",tier:"showcase",category:"Signature"},{id:"super2026",name:"Super2026",icon:"triangle",character:"Supergraphic bold",swatchBg:"#f5f0e6",swatchFg:"#c23616",tier:"showcase",category:"Signature"},{id:"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"},{id:"magna",name:"Magna",icon:"orbit",character:"Odyssey 2 retro",swatchBg:"#0d0b14",swatchFg:"#f97316",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"}],K=[{id:"kawaii",name:"Kawaii",icon:"heart",character:"Cute aesthetic",swatchBg:"#ffb7c5",swatchFg:"#ff69b4",tier:"showcase",category:"Packs"},{id:"retro",name:"Retro",icon:"tv",character:"CRT terminal",swatchBg:"#0a0a14",swatchFg:"#00ff66",tier:"showcase",category:"Packs"},{id:"memphis",name:"Memphis",icon:"star",character:"Bold patterns",swatchBg:"#FFF8F0",swatchFg:"#d03040",tier:"showcase",category:"Packs"}],F=[{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"}],P=[{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"}],O=[{id:"motionFx",name:"Motion Effects",icon:"sparkles",description:"Hover & enter animations"},{id:"sounds",name:"Sound Effects",icon:"volume-2",description:"Audio feedback"}],ve=[...M,...b],Ee=[...T,...M,...b,...K],g=e=>M.filter(t=>t.category===e),D=[{label:"Style",themes:T,tier:"core"},{label:"Design",themes:g("Design"),tier:"showcase"},{label:"Content",themes:g("Content"),tier:"showcase"},{label:"Modern",themes:g("Modern"),tier:"showcase"},{label:"Creative",themes:g("Creative"),tier:"showcase"},{label:"Aesthetic",themes:g("Aesthetic"),tier:"showcase"},{label:"Signature",themes:g("Signature"),tier:"showcase"},{label:"OS Styles",themes:g("OS Styles"),tier:"showcase"},{label:"Packs",themes:K,tier:"showcase"},{label:"More Themes",themes:b,tier:"community"}];var L="vb-theme",$={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""},W=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],m={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let e=this.load();try{await k(e.brand)}catch{e.brand="default"}return this.apply(e),this._watchSystemPreference(),e})(),this._initPromise)},load(){try{let e=localStorage.getItem(L);return e?{...$,...JSON.parse(e)}:{...$}}catch{return{...$}}},save(e){let a={...this.load(),...e};try{localStorage.setItem(L,JSON.stringify(a))}catch{}return a},apply({mode:e="auto",brand:t="default",borderStyle:a="",iconSet:i="",fluid:r="",backdrop:n="",backdropChrome:s="",pageBgType:o="",pageBgColor:l="",pageBgGradStart:u="",pageBgGradEnd:h="",pageBgGradDir:d=""}={}){let c=document.documentElement;c.dataset.mode=e==="auto"?this.getEffectiveMode():e;let j=(c.dataset.theme||"").split(" ").filter(A=>A.startsWith("a11y-")),V=t!=="default"?[t,...j]:[...j];V.length?c.dataset.theme=V.join(" "):delete c.dataset.theme;let E=a||this._readCSSHint("--theme-border-style");E&&E!=="clean"?c.dataset.borderStyle=E:delete c.dataset.borderStyle;let S=i||this._readCSSHint("--theme-icon-set");if(S&&S!=="lucide"?c.dataset.iconSet=S:delete c.dataset.iconSet,r?c.dataset.fluid=r:delete c.dataset.fluid,n?c.dataset.backdrop=n:delete c.dataset.backdrop,s&&s!=="card"?c.dataset.backdropChrome=s:delete c.dataset.backdropChrome,o==="color"&&l)c.style.setProperty("--page-bg-color",l),c.style.removeProperty("--page-bg-gradient");else if(o==="gradient"&&u&&h){let A=d||"to bottom";c.style.setProperty("--page-bg-gradient",`linear-gradient(${A}, ${u}, ${h})`),c.style.removeProperty("--page-bg-color")}else c.style.removeProperty("--page-bg-color"),c.style.removeProperty("--page-bg-gradient");let z=this.load().accent||"default";this._applyAccent(z),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:e,brand:t,accent:z,borderStyle:E,iconSet:S,fluid:r,backdrop:n,backdropChrome:s,pageBgType:o,effectiveMode:this.getEffectiveMode()}}))},setMode(e){let t=this.save({mode:e});this.apply(t)},async setBrand(e){try{await k(e)}catch(a){console.warn(`[VB] Theme "${e}" failed to load, using default`,a),e="default"}let t=this.save({brand:e});this.apply(t)},setAccent(e){let t=this.save({accent:e});this._applyAccent(e),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}}))},setBorderStyle(e){let t=this.save({borderStyle:e});this.apply(t)},setIconSet(e){let t=this.save({iconSet:e});this.apply(t)},setFluid(e){let t=this.save({fluid:e});this.apply(t)},setBackdrop(e){let t=this.save({backdrop:e});this.apply(t)},setBackdropChrome(e){let t=this.save({backdropChrome:e});this.apply(t)},setPageBg({type:e="",color:t="",gradStart:a="",gradEnd:i="",gradDir:r=""}={}){let n=this.save({pageBgType:e,pageBgColor:t,pageBgGradStart:a,pageBgGradEnd:i,pageBgGradDir:r});this.apply(n)},getEffectiveMode(){let{mode:e}=this.load();return e!=="auto"?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},getState(){let{mode:e,brand:t,accent:a,borderStyle:i,iconSet:r,fluid:n,backdrop:s,backdropChrome:o,pageBgType:l,pageBgColor:u,pageBgGradStart:h,pageBgGradEnd:d,pageBgGradDir:c}=this.load();return{mode:e,brand:t,accent:a,borderStyle:i,iconSet:r,fluid:n,backdrop:s,backdropChrome:o,pageBgType:l,pageBgColor:u,pageBgGradStart:h,pageBgGradEnd:d,pageBgGradDir:c,effectiveMode:this.getEffectiveMode()}},toggleMode(){let t=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(t)},reset(){try{localStorage.removeItem(L)}catch{}let e=document.documentElement;e.style.removeProperty("--page-bg-color"),e.style.removeProperty("--page-bg-gradient");for(let t of W)e.style.removeProperty(t);this.apply($)},_readCSSHint(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()},_applyAccent(e){let t=document.documentElement,a=w.find(i=>i.id===e);for(let i of W)t.style.removeProperty(i);if(!(!a||!a.seeds||Object.keys(a.seeds).length===0)){for(let[i,r]of Object.entries(a.seeds))t.style.setProperty(i,String(r));if(a.seedsDark&&this.getEffectiveMode()==="dark")for(let[i,r]of Object.entries(a.seedsDark))t.style.setProperty(i,String(r))}},_watchSystemPreference(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{let t=this.load();t.mode==="auto"&&this.apply(t)})}};var y=null,ee="vb-extensions",v={motionFx:!0,sounds:!1},te="vb-a11y-themes",H=class e extends _{static#n=200;#t;#e;#a=!1;#s=!1;#u=!1;#o=null;#p=!1;#i=()=>this.#b();setup(){this.#s=this.getAttribute("variant")==="inline",this.#u=this.hasAttribute("compact"),this.#v(),this.#T(),this.#w(),this.listen(window,"vb:theme-change",this.#D),this.#y(),this.#d()}teardown(){window.removeEventListener("scroll",this.#i,{capture:!0}),window.removeEventListener("resize",this.#i),this.#m()}#v(){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 me=Object.defineProperty;var pe=(e,t)=>()=>(e&&(t=e(e=0)),t);var fe=(e,t)=>{for(var a in t)me(e,a,{get:t[a],enumerable:!0})};var ce={};fe(ce,{SoundManager:()=>_e});var oe,U,_e,le=pe(()=>{oe="vb-sound",U={enabled:!1,volume:.5},_e={_ctx:null,_enabled:!1,_volume:.5,_initialized:!1,init(){if(this._initialized)return this;let e=this._load();return this._enabled=e.enabled,this._volume=e.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 e=localStorage.getItem(oe);return e?{...U,...JSON.parse(e)}:{...U}}catch{return{...U}}},_save(e){try{let t=this._load();localStorage.setItem(oe,JSON.stringify({...t,...e}))}catch{}},_playTone(e,t,a="sine"){if(!this._enabled)return;let s=this._getContext(),r=s.createOscillator(),n=s.createGain();r.connect(n),n.connect(s.destination),r.frequency.value=e,r.type=a,n.gain.value=this._volume*.3,r.start(),n.gain.exponentialRampToValueAtTime(.01,s.currentTime+t),r.stop(s.currentTime+t)},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(e){this._volume=Math.max(0,Math.min(1,e)),this._save({volume:this._volume})},getVolume(){return this._volume},play(e){if(this._enabled)switch(e){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 ke=window.matchMedia("(prefers-reduced-motion: reduce)");var Q=new Map;function Z(e,t,a={}){let s=a.priority??10,r={impl:t,bundle:a.bundle,contract:a.contract,priority:s},n=Q.get(e);if(customElements.get(e)){if(!n||n.priority>=s){n&&n.priority===s&&n.impl!==t&&console.warn(`[VB Bundle] Tag <${e}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${a.bundle}".`);return}console.warn(`[VB Bundle] Tag <${e}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${a.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=s){n.priority===s&&console.warn(`[VB Bundle] Tag <${e}> already registered by "${n.bundle}". Skipping "${a.bundle}" (first wins at equal priority).`);return}Q.set(e,r),customElements.define(e,t)}var A=class extends HTMLElement{#n=[];connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&this.setAttribute("data-upgraded","")}disconnectedCallback(){for(let t of this.#n)t();this.#n=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,a,s,r){t.addEventListener(a,s,r),this.#n.push(()=>t.removeEventListener(a,s,r))}setup(){}teardown(){}};var w=new Map,O=new Map;var ee=null;function te(){if(typeof window<"u"&&window.__VB_THEME_BASE)return String(window.__VB_THEME_BASE).replace(/\/$/,"");if(ee)return ee;if(typeof document<"u"){let e=document.querySelectorAll('script[src*="vanilla-breeze"]');for(let t of e){let a=t.getAttribute("src");if(a){let s=a.lastIndexOf("/");if(s!==-1)return a.slice(0,s)}}}return"/cdn"}var ge=new Set(["default","a11y-high-contrast","a11y-large-text","a11y-dyslexia","modern","minimal","classic"]),ye=new Set(["kawaii","memphis"]);function D(e){return ye.has(e)}function we(e,t){return`${t}/themes/${e}.css`}function ae(e,t){if(!D(e))return Promise.resolve();if(O.has(e))return O.get(e);let a=import(`${t}/packs/${e}.full.js`).catch(()=>{});return O.set(e,a),a}function be(e,t){let a=te(),s=()=>{(D(t)||e.hasAttribute("data-vb-pack"))&&ae(t,a)};return e.getAttribute("data-vb-theme-state")==="error"?Promise.reject(new Error(`Failed to load theme: ${t}`)):e.getAttribute("data-vb-theme-state")==="ready"||e.sheet?(s(),Promise.resolve()):new Promise((r,n)=>{let i=()=>{e.setAttribute("data-vb-theme-state","ready"),c(),s(),r()},o=()=>{e.setAttribute("data-vb-theme-state","error"),w.delete(t),c(),n(new Error(`Failed to load theme: ${t}`))},c=()=>{e.removeEventListener("load",i),e.removeEventListener("error",o)};e.addEventListener("load",i,{once:!0}),e.addEventListener("error",o,{once:!0})})}async function B(e){if(!e||ge.has(e))return;if(w.has(e))return w.get(e);if(typeof document<"u"){let s=document.querySelector(`link[data-vb-theme="${e}"]`);if(s){let r=be(s,e);return w.set(e,r),r}}let t=te(),a=D(e)?Ee(e,t):ve(e,t);return w.set(e,a),a}async function ve(e,t){let a=we(e,t);return new Promise((s,r)=>{let n=document.querySelector(`link[data-vb-theme-preload="${e}"]`);n&&n.remove();let i=document.createElement("link");i.rel="stylesheet",i.href=a,i.setAttribute("data-vb-theme",e),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(e),r(new Error(`Failed to load theme: ${e}`))},document.head.appendChild(i)})}function Ee(e,t){let a=`${t}/packs/${e}.theme.css`,s=`${t}/packs/${e}.effects.css`;return new Promise((r,n)=>{let i=document.querySelector(`link[data-vb-theme-preload="${e}"]`);i&&i.remove();let o=document.createElement("link");o.rel="stylesheet",o.href=a,o.setAttribute("data-vb-theme",e),o.setAttribute("data-vb-pack",e),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",e),document.head.appendChild(c),ae(e,t),r()},o.onerror=()=>{o.setAttribute("data-vb-theme-state","error"),o.remove(),w.delete(e),n(new Error(`Failed to load pack: ${e}`))},document.head.appendChild(o)})}var L=[{id:"auto",name:"Auto",icon:"monitor"},{id:"light",name:"Light",icon:"sun"},{id:"dark",name:"Dark",icon:"moon"}],_=[{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}}],x=[{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"}],R=[{id:"swiss",name:"Swiss",icon:"grid-3x3",character:"Precision grid",swatchBg:"#ff3e00",swatchFg:"white",tier:"showcase",category:"Design"},{id:"brutalist",name:"Brutalist",icon:"square",character:"Raw, industrial",swatchBg:"#1a1a1a",swatchFg:"#f5f5f5",tier:"showcase",category:"Design"},{id:"art-deco",name:"Art Deco",icon:"crown",character:"1920s luxury",swatchBg:"#1A1A1A",swatchFg:"#C9A84C",tier:"showcase",category:"Design"},{id:"editorial",name:"Editorial",icon:"newspaper",character:"Magazine elegance",swatchBg:"#1a1a1a",swatchFg:"#c9a227",tier:"showcase",category:"Content"},{id:"genai",name:"GenAI",icon:"sparkles",character:"AI aesthetic",swatchBg:"#1a0a2e",swatchFg:"#a855f7",tier:"showcase",category:"Modern"},{id:"glassmorphism",name:"Glass",icon:"glass-water",character:"Frosted surfaces",swatchBg:"#667eea",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"startup",name:"Startup",icon:"rocket",character:"SaaS energy",swatchBg:"#4f46e5",swatchFg:"#ffffff",tier:"showcase",category:"Modern"},{id:"organic",name:"Organic",icon:"leaf",character:"Natural, handcrafted",swatchBg:"#2d5016",swatchFg:"#faf5e6",tier:"showcase",category:"Creative"},{id:"rough",name:"Rough",icon:"pencil",character:"Hand-drawn sketch",swatchBg:"#f5f0e8",swatchFg:"#3a3a3a",tier:"showcase",category:"Creative"},{id:"cyber",name:"Cyber",icon:"zap",character:"Neon futuristic",swatchBg:"#0a0a1a",swatchFg:"#00ff88",tier:"showcase",category:"Creative"},{id:"vaporwave",name:"Vaporwave",icon:"radio",character:"Neon dreamy",swatchBg:"#2b0040",swatchFg:"#ff6ad5",tier:"showcase",category:"Aesthetic"},{id:"neumorphism",name:"Neumorph",icon:"circle",character:"Soft embossed",swatchBg:"#e0e0e0",swatchFg:"#a0a0a0",tier:"showcase",category:"Aesthetic"},{id:"bauhaus",name:"Bauhaus",icon:"shapes",character:"Geometric",swatchBg:"#F1FAEE",swatchFg:"#E63946",tier:"showcase",category:"Aesthetic"},{id:"claymorphism",name:"Clay",icon:"circle-dot",character:"Puffy 3D",swatchBg:"#f0f0f5",swatchFg:"#FF6B9D",tier:"showcase",category:"Aesthetic"},{id:"alpha1999",name:"Alpha1999",icon:"orbit",character:"Space retro-fi",swatchBg:"#0a0a14",swatchFg:"#d4880f",tier:"showcase",category:"Signature"},{id:"super2026",name:"Super2026",icon:"triangle",character:"Supergraphic bold",swatchBg:"#f5f0e6",swatchFg:"#c23616",tier:"showcase",category:"Signature"},{id:"magna",name:"Magna",icon:"orbit",character:"Odyssey 2 retro",swatchBg:"#0d0b14",swatchFg:"#f97316",tier:"showcase",category:"Signature"},{id:"win9x",name:"Win9x",icon:"monitor",character:"Classic desktop",swatchBg:"#008080",swatchFg:"#c0c0c0",tier:"showcase",category:"OS Styles"},{id:"nes",name:"NES",icon:"joystick",character:"Console pixels",swatchBg:"#bcbcbc",swatchFg:"#e40521",tier:"showcase",category:"OS Styles"},{id:"8bit",name:"8-Bit",icon:"gamepad-2",character:"Retro pixel art",swatchBg:"#000080",swatchFg:"#ffff00",tier:"showcase",category:"OS Styles"}],T=[{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"}],se=[{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"}],H=[{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"}],I=[{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"}],q=[{id:"motionFx",name:"Motion Effects",icon:"sparkles",description:"Hover & enter animations"},{id:"sounds",name:"Sound Effects",icon:"volume-2",description:"Audio feedback"}],Ce=[...R,...T],Me=[...x,...R,...T,...se],b=e=>R.filter(t=>t.category===e),j=[{label:"Style",themes:x,tier:"core"},{label:"Design",themes:b("Design"),tier:"showcase"},{label:"Content",themes:b("Content"),tier:"showcase"},{label:"Modern",themes:b("Modern"),tier:"showcase"},{label:"Creative",themes:b("Creative"),tier:"showcase"},{label:"Aesthetic",themes:b("Aesthetic"),tier:"showcase"},{label:"Signature",themes:b("Signature"),tier:"showcase"},{label:"OS Styles",themes:b("OS Styles"),tier:"showcase"},{label:"Packs",themes:se,tier:"showcase"},{label:"More Themes",themes:T,tier:"community"}];function Se(){let e=globalThis.localStorage;if(!e)throw new Error("VBStore: localStorage is not available in this environment");return{async getRaw(t){return e.getItem(t)},async setRaw(t,a){e.setItem(t,a)},async removeRaw(t){e.removeItem(t)},async keys(t){let a=[];for(let s=0;s<e.length;s++){let r=e.key(s);r&&r.startsWith(t)&&a.push(r)}return a}}}var C=null;function g(){return C||(C=Se()),C}function V(e,t){if(typeof e!="string"||!e)throw new TypeError("VBStore: namespace must be a non-empty string");if(typeof t!="string"||!t)throw new TypeError("VBStore: key must be a non-empty string");return`vb:${e}:${t}`}function ie(e){if(typeof e!="string"||!e)throw new TypeError("VBStore: namespace must be a non-empty string");return`vb:${e}:`}function ne(e){try{let t=JSON.parse(e);if(t&&typeof t=="object"&&typeof t.timestamp=="number")return t}catch{}return null}var h={configure(e={}){C=e.backend??null},async set(e,t,a){let s={data:a,timestamp:Date.now()};await g().setRaw(V(e,t),JSON.stringify(s))},async get(e,t,a){let s=await g().getRaw(V(e,t));if(s==null)return null;let r=ne(s);return!r||a?.maxAge!=null&&Date.now()-r.timestamp>a.maxAge?null:r.data},async remove(e,t){await g().removeRaw(V(e,t))},async list(e){let t=ie(e),a=await g().keys(t),s=[];for(let r of a){let n=await g().getRaw(r);if(n==null)continue;let i=ne(n);i&&s.push({key:r.slice(t.length),data:i.data,timestamp:i.timestamp})}return s},async clear(e){let t=ie(e),a=await g().keys(t);for(let s of a)await g().removeRaw(s)},async clearAll(){let e=await g().keys("vb:");for(let t of e)await g().removeRaw(t)},async setMany(e,t){for(let[a,s]of t)await h.set(e,a,s)}};var z="theme",G="current",E={mode:"auto",brand:"default",accent:"default",borderStyle:"",iconSet:"",fluid:"",backdrop:"",backdropChrome:"",pageBgType:"",pageBgColor:"",pageBgGradStart:"",pageBgGradEnd:"",pageBgGradDir:""},re=["--hue-primary","--hue-secondary","--hue-accent","--lightness-primary","--chroma-primary","--lightness-secondary","--chroma-secondary","--lightness-accent","--chroma-accent"],d=null,m={_initPromise:null,async init(){return this._initPromise?this._initPromise:(this._initPromise=(async()=>{let e=await h.get(z,G);d=e?{...E,...e}:{...E};try{await B(d.brand)}catch{d.brand="default"}return this.apply(d),this._watchSystemPreference(),this._watchRootAttributes(),d})(),this._initPromise)},load(){return d?{...d}:{...E}},save(e){let t={...d??E,...e};return d=t,h.set(z,G,t).catch(()=>{}),t},apply({mode:e="auto",brand:t="default",borderStyle:a="",iconSet:s="",fluid:r="",backdrop:n="",backdropChrome:i="",pageBgType:o="",pageBgColor:c="",pageBgGradStart:f="",pageBgGradEnd:p="",pageBgGradDir:u=""}={}){let l=document.documentElement;l.dataset.mode=e==="auto"?this.getEffectiveMode():e;let X=(l.dataset.theme||"").split(" ").filter(P=>P.startsWith("a11y-")),K=t!=="default"?[t,...X]:[...X];K.length?l.dataset.theme=K.join(" "):delete l.dataset.theme;let $=a||this._readCSSHint("--theme-border-style");$&&$!=="clean"?l.dataset.borderStyle=$:delete l.dataset.borderStyle;let k=s||this._readCSSHint("--theme-icon-set");if(k&&k!=="lucide"?l.dataset.iconSet=k:delete l.dataset.iconSet,r?l.dataset.fluid=r:delete l.dataset.fluid,n?l.dataset.backdrop=n: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"&&f&&p){let P=u||"to bottom";l.style.setProperty("--page-bg-gradient",`linear-gradient(${P}, ${f}, ${p})`),l.style.removeProperty("--page-bg-color")}else l.style.removeProperty("--page-bg-color"),l.style.removeProperty("--page-bg-gradient");let J=this.load().accent||"default";this._applyAccent(J),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{mode:e,brand:t,accent:J,borderStyle:$,iconSet:k,fluid:r,backdrop:n,backdropChrome:i,pageBgType:o,effectiveMode:this.getEffectiveMode()}}))},setMode(e){let t=this.save({mode:e});this.apply(t)},async setBrand(e){try{await B(e)}catch(a){console.warn(`[VB] Theme "${e}" failed to load, using default`,a),e="default"}let t=this.save({brand:e});this.apply(t)},setAccent(e){this.save({accent:e}),this._applyAccent(e),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}}))},setBorderStyle(e){let t=this.save({borderStyle:e});this.apply(t)},setIconSet(e){let t=this.save({iconSet:e});this.apply(t)},setFluid(e){let t=this.save({fluid:e});this.apply(t)},setBackdrop(e){let t=this.save({backdrop:e});this.apply(t)},setBackdropChrome(e){let t=this.save({backdropChrome:e});this.apply(t)},setPageBg({type:e="",color:t="",gradStart:a="",gradEnd:s="",gradDir:r=""}={}){let n=this.save({pageBgType:e,pageBgColor:t,pageBgGradStart:a,pageBgGradEnd:s,pageBgGradDir:r});this.apply(n)},getEffectiveMode(){let{mode:e}=this.load();return e!=="auto"?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},getState(){let{mode:e,brand:t,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:o,pageBgType:c,pageBgColor:f,pageBgGradStart:p,pageBgGradEnd:u,pageBgGradDir:l}=this.load();return{mode:e,brand:t,accent:a,borderStyle:s,iconSet:r,fluid:n,backdrop:i,backdropChrome:o,pageBgType:c,pageBgColor:f,pageBgGradStart:p,pageBgGradEnd:u,pageBgGradDir:l,effectiveMode:this.getEffectiveMode()}},toggleMode(){let t=this.getEffectiveMode()==="dark"?"light":"dark";this.setMode(t)},reset(){d={...E},h.remove(z,G).catch(()=>{});let e=document.documentElement;e.style.removeProperty("--page-bg-color"),e.style.removeProperty("--page-bg-gradient");for(let t of re)e.style.removeProperty(t);this.apply(E)},_readCSSHint(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()},_applyAccent(e){let t=document.documentElement,a=_.find(s=>s.id===e);for(let s of re)t.style.removeProperty(s);if(!(!a||!a.seeds||Object.keys(a.seeds).length===0)){for(let[s,r]of Object.entries(a.seeds))t.style.setProperty(s,String(r));if(a.seedsDark&&this.getEffectiveMode()==="dark")for(let[s,r]of Object.entries(a.seedsDark))t.style.setProperty(s,String(r))}},_watchRootAttributes(){this._rootObserver||(this._rootObserver=new MutationObserver(e=>{for(let t of e)t.attributeName==="data-theme"?this._syncFromDataTheme():t.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,B(a).catch(()=>{}),window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_syncFromDataMode(){if(!d)return;let e=document.documentElement.dataset.mode||"auto",t=d.mode==="auto"?this.getEffectiveMode():d.mode;e!==t&&(d.mode=e,window.dispatchEvent(new CustomEvent("vb:theme-change",{detail:{...this.getState()}})))},_watchSystemPreference(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{let t=this.load();t.mode==="auto"&&this.apply(t)})}};var S=null,M="settings",F={motionFx:!0,sounds:!1},N=class e extends A{static#n=200;#t;#e;#a=!1;#s=!1;#f=!1;#c=null;#g=!1;#l=[];#r={...F};#i=()=>this.#E();async setup(){this.#s=this.getAttribute("variant")==="inline",this.#f=this.hasAttribute("compact"),await Promise.all([m.init(),this.#S()]),this.#_(),this.#A(),this.#v(),this.listen(window,"vb:theme-change",this.#H),this.#b(),this.#h()}async#S(){let[t,a]=await Promise.all([h.get(M,"a11y"),h.get(M,"extensions")]);this.#l=Array.isArray(t)?t:[],this.#r={...F,...a??{}}}teardown(){window.removeEventListener("scroll",this.#i,{capture:!0}),window.removeEventListener("resize",this.#i),this.#p()}#_(){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=`
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.#E(),this.appendChild(this.#e)}#E(){return this.#u?this.#_():this.#S()}#h(t,a){let i=t.swatchBg,r=t.swatchFg||"white",n=t.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.#s||(this.#e.id=`theme-panel-${crypto.randomUUID().slice(0,8)}`,this.#t.setAttribute("aria-controls",this.#e.id)),this.#e.innerHTML=this.#T(),this.appendChild(this.#e)}#T(){return this.#f?this.#k():this.#$()}#u(t,a){let s=t.swatchBg,r=t.swatchFg||"white",n=t.icon||"";return`
4
4
  <label class="swatch-cell" title="${t.character?`${t.name} \u2014 ${t.character}`:t.name}">
5
5
  <input
6
6
  type="radio"
@@ -8,26 +8,26 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
8
8
  value="${t.id}"
9
9
  ${a===t.id?"checked":""}
10
10
  />
11
- <span class="swatch-visual" style="--swatch-bg: ${i}; --swatch-fg: ${r}">
11
+ <span class="swatch-visual" style="--swatch-bg: ${s}; --swatch-fg: ${r}">
12
12
  ${n?`<icon-wc name="${n}"></icon-wc>`:""}
13
13
  <span class="sr-only">${t.name}</span>
14
14
  </span>
15
15
  </label>
16
- `}#S(){let{mode:t,brand:a,fluid:i,accent:r}=m.getState(),n=D.filter(s=>s.tier==="showcase");return`
16
+ `}#$(){let{mode:t,brand:a,fluid:s,accent:r}=m.getState(),n=j.filter(i=>i.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
- ${x.map(s=>`
20
+ ${L.map(i=>`
21
21
  <label class="option">
22
22
  <input
23
23
  type="radio"
24
24
  name="theme-mode"
25
- value="${s.id}"
26
- ${t===s.id?"checked":""}
25
+ value="${i.id}"
26
+ ${t===i.id?"checked":""}
27
27
  />
28
28
  <span class="option-content">
29
- <icon-wc name="${s.icon}"></icon-wc>
30
- <span>${s.name}</span>
29
+ <icon-wc name="${i.icon}"></icon-wc>
30
+ <span>${i.name}</span>
31
31
  </span>
32
32
  </label>
33
33
  `).join("")}
@@ -37,11 +37,11 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
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
- ${w.map(s=>`
41
- <label class="accent-dot" title="${s.name}">
42
- <input type="radio" name="theme-accent" value="${s.id}" ${r===s.id?"checked":""} />
43
- <span class="accent-dot-visual" style="background: ${s.swatchBg}"></span>
44
- <span class="sr-only">${s.name}</span>
40
+ ${_.map(i=>`
41
+ <label class="accent-dot" title="${i.name}">
42
+ <input type="radio" name="theme-accent" value="${i.id}" ${r===i.id?"checked":""} />
43
+ <span class="accent-dot-visual" style="background: ${i.swatchBg}"></span>
44
+ <span class="sr-only">${i.name}</span>
45
45
  </label>
46
46
  `).join("")}
47
47
  </div>
@@ -50,17 +50,17 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
50
50
  <fieldset class="section">
51
51
  <legend>Style</legend>
52
52
  <div class="options options--swatch-grid" role="radiogroup" aria-label="Style">
53
- ${T.map(s=>this.#h(s,a)).join("")}
53
+ ${x.map(i=>this.#u(i,a)).join("")}
54
54
  </div>
55
55
  </fieldset>
56
56
 
57
57
  <fieldset class="section">
58
58
  <legend>Featured</legend>
59
- ${n.map(s=>`
59
+ ${n.map(i=>`
60
60
  <div class="theme-category">
61
- <span class="category-label">${s.label}</span>
61
+ <span class="category-label">${i.label}</span>
62
62
  <div class="options options--swatch-grid">
63
- ${s.themes.map(o=>this.#h(o,a)).join("")}
63
+ ${i.themes.map(o=>this.#u(o,a)).join("")}
64
64
  </div>
65
65
  </div>
66
66
  `).join("")}
@@ -72,25 +72,25 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
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(s=>this.#h(s,a)).join("")}
75
+ ${T.map(i=>this.#u(i,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
- ${P.map(s=>{let l=this.#l().includes(s.id);return`
82
+ ${I.map(i=>{let c=this.#d().includes(i.id);return`
83
83
  <label class="option option--a11y">
84
84
  <input
85
85
  type="checkbox"
86
86
  name="a11y-theme"
87
- value="${s.id}"
88
- data-a11y-theme="${s.id}"
89
- ${l?"checked":""}
87
+ value="${i.id}"
88
+ data-a11y-theme="${i.id}"
89
+ ${c?"checked":""}
90
90
  />
91
91
  <span class="option-content">
92
- <icon-wc name="${s.icon}"></icon-wc>
93
- <span class="option-label">${s.name}</span>
92
+ <icon-wc name="${i.icon}"></icon-wc>
93
+ <span class="option-label">${i.name}</span>
94
94
  </span>
95
95
  </label>
96
96
  `}).join("")}
@@ -100,19 +100,19 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
100
100
  <fieldset class="section">
101
101
  <legend>Sizing</legend>
102
102
  <div class="options options--sizing" role="radiogroup" aria-label="Fluid sizing">
103
- ${F.map(s=>`
103
+ ${H.map(i=>`
104
104
  <label class="option option--sizing">
105
105
  <input
106
106
  type="radio"
107
107
  name="theme-fluid"
108
- value="${s.id}"
109
- ${i===s.id?"checked":""}
108
+ value="${i.id}"
109
+ ${s===i.id?"checked":""}
110
110
  />
111
111
  <span class="option-content">
112
- <icon-wc name="${s.icon}"></icon-wc>
112
+ <icon-wc name="${i.icon}"></icon-wc>
113
113
  <span class="option-text">
114
- <span>${s.name}</span>
115
- <small>${s.description}</small>
114
+ <span>${i.name}</span>
115
+ <small>${i.description}</small>
116
116
  </span>
117
117
  </span>
118
118
  </label>
@@ -120,35 +120,35 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
120
120
  </div>
121
121
  </fieldset>
122
122
 
123
- <details class="section section--extensions" ${this.#p?"open":""}>
123
+ <details class="section section--extensions" ${this.#g?"open":""}>
124
124
  <summary class="extensions-toggle">
125
125
  <icon-wc name="sliders-horizontal"></icon-wc>
126
126
  <span>Extensions</span>
127
127
  <icon-wc name="chevron-down" class="chevron"></icon-wc>
128
128
  </summary>
129
129
  <div class="extensions-content">
130
- ${O.map(s=>{let l=this.#c()[s.id]??v[s.id];return`
130
+ ${q.map(i=>{let c=this.#m()[i.id]??F[i.id];return`
131
131
  <label class="extension-toggle">
132
132
  <span class="extension-info">
133
- <icon-wc name="${s.icon}"></icon-wc>
134
- <span class="extension-name">${s.name}</span>
133
+ <icon-wc name="${i.icon}"></icon-wc>
134
+ <span class="extension-name">${i.name}</span>
135
135
  </span>
136
136
  <input
137
137
  type="checkbox"
138
- name="ext-${s.id}"
139
- data-extension="${s.id}"
138
+ name="ext-${i.id}"
139
+ data-extension="${i.id}"
140
140
  data-switch="sm"
141
- ${l?"checked":""}
141
+ ${c?"checked":""}
142
142
  />
143
143
  </label>
144
144
  `}).join("")}
145
145
  </div>
146
146
  </details>
147
- `}#_(){let{mode:t,brand:a,fluid:i,accent:r}=m.getState(),n=this.#l(),s=this.#c();return`
147
+ `}#k(){let{mode:t,brand:a,fluid:s,accent:r}=m.getState(),n=this.#d(),i=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
- ${x.map(o=>`
151
+ ${L.map(o=>`
152
152
  <label class="compact-seg">
153
153
  <input type="radio" name="theme-mode" value="${o.id}" ${t===o.id?"checked":""} />
154
154
  <span><icon-wc name="${o.icon}" size="xs"></icon-wc> ${o.name}</span>
@@ -160,7 +160,7 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
160
160
  <fieldset class="section">
161
161
  <legend>Color Accent</legend>
162
162
  <select class="compact-select" name="theme-accent-select" aria-label="Color accent">
163
- ${w.map(o=>`
163
+ ${_.map(o=>`
164
164
  <option value="${o.id}" ${r===o.id?"selected":""}>${o.name}</option>
165
165
  `).join("")}
166
166
  </select>
@@ -169,10 +169,10 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
169
169
  <fieldset class="section">
170
170
  <legend>Theme</legend>
171
171
  <select class="compact-select" name="theme-brand-select" aria-label="Theme">
172
- ${D.map(o=>`
172
+ ${j.map(o=>`
173
173
  <optgroup label="${o.label}">
174
- ${o.themes.map(l=>`
175
- <option value="${l.id}" ${a===l.id?"selected":""}>${l.name}</option>
174
+ ${o.themes.map(c=>`
175
+ <option value="${c.id}" ${a===c.id?"selected":""}>${c.name}</option>
176
176
  `).join("")}
177
177
  </optgroup>
178
178
  `).join("")}
@@ -182,8 +182,8 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
182
182
  <fieldset class="section">
183
183
  <legend>Sizing</legend>
184
184
  <select class="compact-select" name="theme-fluid-select" aria-label="Sizing">
185
- ${F.map(o=>`
186
- <option value="${o.id}" ${i===o.id?"selected":""}>${o.name}</option>
185
+ ${H.map(o=>`
186
+ <option value="${o.id}" ${s===o.id?"selected":""}>${o.name}</option>
187
187
  `).join("")}
188
188
  </select>
189
189
  </fieldset>
@@ -191,7 +191,7 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
191
191
  <fieldset class="section">
192
192
  <legend>Accessibility</legend>
193
193
  <div class="compact-toggles">
194
- ${P.map(o=>`
194
+ ${I.map(o=>`
195
195
  <label class="extension-toggle">
196
196
  <span class="extension-info">
197
197
  <span class="extension-name">${o.name}</span>
@@ -205,15 +205,15 @@ var ie=Object.defineProperty;var ne=(e,t)=>()=>(e&&(t=e(e=0)),t);var re=(e,t)=>{
205
205
  <fieldset class="section">
206
206
  <legend>Extensions</legend>
207
207
  <div class="compact-toggles">
208
- ${O.map(o=>`
208
+ ${q.map(o=>`
209
209
  <label class="extension-toggle">
210
210
  <span class="extension-info">
211
211
  <span class="extension-name">${o.name}</span>
212
212
  </span>
213
- <input type="checkbox" name="ext-${o.id}" data-extension="${o.id}" data-switch="sm" ${s[o.id]??v[o.id]?"checked":""} />
213
+ <input type="checkbox" name="ext-${o.id}" data-extension="${o.id}" data-switch="sm" ${i[o.id]??F[o.id]?"checked":""} />
214
214
  </label>
215
215
  `).join("")}
216
216
  </div>
217
217
  </fieldset>
218
- `}#T(){this.#e.querySelectorAll('input[name="theme-mode"]').forEach(n=>{n.addEventListener("change",this.#C)}),this.#e.querySelectorAll('input[name="theme-brand"]').forEach(n=>{n.addEventListener("change",this.#k)});let t=this.#e.querySelector('select[name="theme-brand-select"]');t&&t.addEventListener("change",this.#x),this.#e.querySelectorAll('input[name="theme-fluid"]').forEach(n=>{n.addEventListener("change",this.#g)});let a=this.#e.querySelector('select[name="theme-fluid-select"]');a&&a.addEventListener("change",this.#g),this.#e.querySelectorAll('input[name="theme-accent"]').forEach(n=>{n.addEventListener("change",this.#f)});let i=this.#e.querySelector('select[name="theme-accent-select"]');i&&i.addEventListener("change",this.#f),this.#e.querySelectorAll("input[data-extension]").forEach(n=>{n.addEventListener("change",this.#M)}),this.#e.querySelectorAll("input[data-a11y-theme]").forEach(n=>{n.addEventListener("change",this.#O)}),this.#e.querySelector(".section--extensions")?.addEventListener("toggle",n=>{this.#p=n.target.open}),this.#s||(this.listen(this.#t,"click",this.#$),this.listen(document,"click",this.#A),this.listen(document,"keydown",this.#B))}#$=t=>{t.stopPropagation(),this.toggle()};#A=t=>{this.#a&&!this.contains(t.target)&&this.close()};#B=t=>{t.key==="Escape"&&this.#a&&(t.preventDefault(),this.close(),this.#t?.focus())};#C=t=>{m.setMode(t.target.value),this.#r()};#k=async t=>{let a=t.target.closest(".swatch-cell");a&&a.setAttribute("aria-busy","true");try{await m.setBrand(t.target.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a&&a.removeAttribute("aria-busy")}this.#d(),this.#r()};#x=async t=>{let a=t.target;a.disabled=!0;try{await m.setBrand(a.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}this.#d(),this.#r()};#g=t=>{m.setFluid(t.target.value),this.#r()};#f=t=>{m.setAccent(t.target.value),this.#r()};#M=t=>{let a=t.target.dataset.extension,i=t.target.checked;this.#F(a,i),this.#y()};#c(){try{let t=localStorage.getItem(ee);return t?{...v,...JSON.parse(t)}:{...v}}catch{return{...v}}}#F(t,a){try{let i=this.#c();i[t]=a,localStorage.setItem(ee,JSON.stringify(i))}catch{}}async#y(){let t=this.#c(),a=document.documentElement;t.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",t.sounds?(y||(y=(await Promise.resolve().then(()=>(Z(),Q))).SoundManager),y.init(),y.enable()):y&&y.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:t}))}#l(){try{let t=localStorage.getItem(te);return t?JSON.parse(t):[]}catch{return[]}}#P(t){try{localStorage.setItem(te,JSON.stringify(t))}catch{}}#d(){let t=this.#l(),{brand:a}=m.getState(),i=document.documentElement,r=a==="default"?t.join(" "):[a,...t].join(" "),n=i.dataset.theme||"";r!==n&&(r?i.dataset.theme=r:delete i.dataset.theme)}#O=t=>{let a=t.target.dataset.a11yTheme,i=t.target.checked,r=this.#l();if(i&&!r.includes(a))r.push(a);else if(!i&&r.includes(a)){let n=r.indexOf(a);r.splice(n,1)}this.#P(r),this.#d()};#r(){this.#s||(this.#m(),this.#o=setTimeout(()=>{this.close(),this.#t?.focus()},e.#n))}#m(){this.#o&&(clearTimeout(this.#o),this.#o=null)}#D=()=>{this.#w()};#w(){let{mode:t,brand:a,fluid:i,accent:r}=m.getState(),n=this.#e.querySelector(`input[name="theme-mode"][value="${t}"]`);n&&(n.checked=!0);let s=this.#e.querySelector(`input[name="theme-brand"][value="${a}"]`);s&&(s.checked=!0);let o=this.#e.querySelector('select[name="theme-brand-select"]');o&&(o.value=a);let l=this.#e.querySelector(`input[name="theme-fluid"][value="${i}"]`);l&&(l.checked=!0);let u=this.#e.querySelector('select[name="theme-fluid-select"]');u&&(u.value=i);let h=this.#e.querySelector(`input[name="theme-accent"][value="${r||"default"}"]`);h&&(h.checked=!0);let d=this.#e.querySelector('select[name="theme-accent-select"]');d&&(d.value=r||"default")}open(){this.#s||this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{this.#b(),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})))}#b(){if(!this.#t||!this.#e)return;let t=this.#t.getBoundingClientRect(),a=this.#e.getBoundingClientRect(),i=window.visualViewport||{width:window.innerWidth,height:window.innerHeight},r=i.height,n=i.width,s=8,o=16,l=r-t.bottom-o,u=t.top-o,h=t.height+s;l<a.height&&u>l?(h=-a.height-s,this.#e.dataset.position="top"):delete this.#e.dataset.position;let d=0,c=t.left+a.width+o,q=t.left+d;c>n&&(d=n-c),q+d<o&&(d=o-t.left),this.#e.style.setProperty("--panel-top",`${h}px`),this.#e.style.setProperty("--panel-left",`${d}px`)}close(){this.#s||!this.#a||(this.#m(),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}};N("theme-picker",H);var ae="vb-environment",R={timeOfDay:!1,seasonal:!1},pe=900*1e3;function f(e,t,a){return e+(t-e)*Math.min(1,Math.max(0,a))}var se={_timer:null,_baseHues:null,_timeOverride:null,_monthOverride:null,init(){let e=this.load();(e.timeOfDay||e.seasonal)&&(this._captureBaseHues(),this._update(),this._startLoop()),window.addEventListener("vb:theme-change",()=>{this._hasActiveSource()&&requestAnimationFrame(()=>{this._captureBaseHues(),this._update()})})},load(){try{let e=localStorage.getItem(ae);return e?{...R,...JSON.parse(e)}:{...R}}catch{return{...R}}},save(e){try{localStorage.setItem(ae,JSON.stringify(e))}catch{}return e},setTimeOverride(e){this._timeOverride=e,this._hasActiveSource()&&this._update()},setMonthOverride(e){this._monthOverride=e,this._hasActiveSource()&&this._update()},setSource(e,t){let a={...this.load(),[e]:t};this.save(a),t?(this._captureBaseHues(),this._update(),this._startLoop()):this._hasActiveSource(a)?this._update():(this._clearModifiers(),this._stopLoop())},_hasActiveSource(e){let t=e||this.load();return t.timeOfDay||t.seasonal},_captureBaseHues(){let e=document.documentElement;e.style.removeProperty("--hue-primary"),e.style.removeProperty("--hue-secondary"),e.style.removeProperty("--hue-accent");let t=e.getAttribute("data-theme");if(t){let a=`[data-theme~="${t}"]`;for(let i of document.styleSheets)try{for(let r=0;r<i.cssRules.length;r++){let n=i.cssRules[r];if(n.selectorText?.includes(a)&&!n.selectorText.includes("dark")){let s=n.style?.getPropertyValue("--hue-primary");if(s){this._baseHues={primary:parseFloat(s)||260,secondary:parseFloat(n.style.getPropertyValue("--hue-secondary"))||200,accent:parseFloat(n.style.getPropertyValue("--hue-accent"))||30};return}}}}catch{}}this._baseHues={primary:260,secondary:200,accent:30}},_update(){let e=this.load(),t=0;e.timeOfDay&&(t+=this._getTimeOfDayOffset()),e.seasonal&&(t+=this._getSeasonalOffset());let a=document.documentElement;t!==0&&this._baseHues?(a.style.setProperty("--hue-primary",String(this._baseHues.primary+t)),a.style.setProperty("--hue-secondary",String(this._baseHues.secondary+t)),a.style.setProperty("--hue-accent",String(this._baseHues.accent+t*.5))):t===0&&this._clearModifiers()},_clearModifiers(){let e=document.documentElement;e.style.removeProperty("--hue-primary"),e.style.removeProperty("--hue-secondary"),e.style.removeProperty("--hue-accent")},_getTimeOfDayOffset(){let e=this._timeOverride??new Date().getHours()+new Date().getMinutes()/60;return e<5?-20:e<7?f(-20,20,(e-5)/2):e<10?f(20,5,(e-7)/3):e<14?f(5,0,(e-10)/4):e<17?f(0,-5,(e-14)/3):e<19?f(-5,15,(e-17)/2):e<21?f(15,-10,(e-19)/2):f(-10,-20,(e-21)/8)},_getHemisphere(){return window.__VB_ENV_LOCATION?.hemisphere||"north"},_getSeasonalOffset(){let e=this._monthOverride??new Date().getMonth(),a=this._getHemisphere()==="south"?(e+6)%12:e;return a>=2&&a<=4?5:a>=5&&a<=7?10:a>=8&&a<=10?-5:-10},_startLoop(){this._timer||(this._timer=setInterval(()=>this._update(),pe))},_stopLoop(){this._timer&&clearInterval(this._timer),this._timer=null}};se.init();
218
+ `}#A(){this.#e.querySelectorAll('input[name="theme-mode"]').forEach(n=>{n.addEventListener("change",this.#M)}),this.#e.querySelectorAll('input[name="theme-brand"]').forEach(n=>{n.addEventListener("change",this.#F)});let t=this.#e.querySelector('select[name="theme-brand-select"]');t&&t.addEventListener("change",this.#P),this.#e.querySelectorAll('input[name="theme-fluid"]').forEach(n=>{n.addEventListener("change",this.#y)});let a=this.#e.querySelector('select[name="theme-fluid-select"]');a&&a.addEventListener("change",this.#y),this.#e.querySelectorAll('input[name="theme-accent"]').forEach(n=>{n.addEventListener("change",this.#w)});let s=this.#e.querySelector('select[name="theme-accent-select"]');s&&s.addEventListener("change",this.#w),this.#e.querySelectorAll("input[data-extension]").forEach(n=>{n.addEventListener("change",this.#O)}),this.#e.querySelectorAll("input[data-a11y-theme]").forEach(n=>{n.addEventListener("change",this.#R)}),this.#e.querySelector(".section--extensions")?.addEventListener("toggle",n=>{this.#g=n.target.open}),this.#s||(this.listen(this.#t,"click",this.#B),this.listen(document,"click",this.#x),this.listen(document,"keydown",this.#C))}#B=t=>{t.stopPropagation(),this.toggle()};#x=t=>{this.#a&&!this.contains(t.target)&&this.close()};#C=t=>{t.key==="Escape"&&this.#a&&(t.preventDefault(),this.close(),this.#t?.focus())};#M=t=>{m.setMode(t.target.value),this.#o()};#F=async t=>{let a=t.target.closest(".swatch-cell");a&&a.setAttribute("aria-busy","true");try{await m.setBrand(t.target.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a&&a.removeAttribute("aria-busy")}this.#h(),this.#o()};#P=async t=>{let a=t.target;a.disabled=!0;try{await m.setBrand(a.value)}catch{console.warn("[VB] Theme load failed, using default")}finally{a.disabled=!1}this.#h(),this.#o()};#y=t=>{m.setFluid(t.target.value),this.#o()};#w=t=>{m.setAccent(t.target.value),this.#o()};#O=t=>{let a=t.target.dataset.extension,s=t.target.checked;this.#D(a,s),this.#b()};#m(){return{...this.#r}}#D(t,a){this.#r={...this.#r,[t]:a},h.set(M,"extensions",this.#r).catch(()=>{})}async#b(){let t=this.#m(),a=document.documentElement;t.motionFx?delete a.dataset.motionReduced:a.dataset.motionReduced="",t.sounds?(S||(S=(await Promise.resolve().then(()=>(le(),ce))).SoundManager),S.init(),S.enable()):S&&S.disable(),window.dispatchEvent(new CustomEvent("vb:extensions-change",{detail:t}))}#d(){return[...this.#l]}#L(t){this.#l=[...t],h.set(M,"a11y",this.#l).catch(()=>{})}#h(){let t=this.#d(),{brand:a}=m.getState(),s=document.documentElement,r=a==="default"?t.join(" "):[a,...t].join(" "),n=s.dataset.theme||"";r!==n&&(r?s.dataset.theme=r:delete s.dataset.theme)}#R=t=>{let a=t.target.dataset.a11yTheme,s=t.target.checked,r=this.#d();if(s&&!r.includes(a))r.push(a);else if(!s&&r.includes(a)){let n=r.indexOf(a);r.splice(n,1)}this.#L(r),this.#h()};#o(){this.#s||(this.#p(),this.#c=setTimeout(()=>{this.close(),this.#t?.focus()},e.#n))}#p(){this.#c&&(clearTimeout(this.#c),this.#c=null)}#H=()=>{this.#v()};#v(){let{mode:t,brand:a,fluid:s,accent:r}=m.getState(),n=this.#e.querySelector(`input[name="theme-mode"][value="${t}"]`);n&&(n.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 f=this.#e.querySelector('select[name="theme-fluid-select"]');f&&(f.value=s);let p=this.#e.querySelector(`input[name="theme-accent"][value="${r||"default"}"]`);p&&(p.checked=!0);let u=this.#e.querySelector('select[name="theme-accent-select"]');u&&(u.value=r||"default")}open(){this.#s||this.#a||(this.#a=!0,this.setAttribute("open",""),this.#t?.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{this.#E(),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})))}#E(){if(!this.#t||!this.#e)return;let t=this.#t.getBoundingClientRect(),a=this.#e.getBoundingClientRect(),s=window.visualViewport||{width:window.innerWidth,height:window.innerHeight},r=s.height,n=s.width,i=8,o=16,c=r-t.bottom-o,f=t.top-o,p=t.height+i;c<a.height&&f>c?(p=-a.height-i,this.#e.dataset.position="top"):delete this.#e.dataset.position;let u=0,l=t.left+a.width+o,W=t.left+u;l>n&&(u=n-l),W+u<o&&(u=o-t.left),this.#e.style.setProperty("--panel-top",`${p}px`),this.#e.style.setProperty("--panel-left",`${u}px`)}close(){this.#s||!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}};Z("theme-picker",N);var de="environment",he="preferences",Y={timeOfDay:!1,seasonal:!1},Te=900*1e3,y={...Y};function v(e,t,a){return e+(t-e)*Math.min(1,Math.max(0,a))}var ue={_timer:null,_baseHues:null,_timeOverride:null,_monthOverride:null,async init(){let e=await h.get(de,he);y=e?{...Y,...e}:{...Y},(y.timeOfDay||y.seasonal)&&(this._captureBaseHues(),this._update(),this._startLoop()),window.addEventListener("vb:theme-change",()=>{this._hasActiveSource()&&requestAnimationFrame(()=>{this._captureBaseHues(),this._update()})})},load(){return{...y}},save(e){return y={...y,...e},h.set(de,he,y).catch(()=>{}),{...y}},setTimeOverride(e){this._timeOverride=e,this._hasActiveSource()&&this._update()},setMonthOverride(e){this._monthOverride=e,this._hasActiveSource()&&this._update()},setSource(e,t){let a=this.save({[e]:t});t?(this._captureBaseHues(),this._update(),this._startLoop()):this._hasActiveSource(a)?this._update():(this._clearModifiers(),this._stopLoop())},_hasActiveSource(e){let t=e||this.load();return t.timeOfDay||t.seasonal},_captureBaseHues(){let e=document.documentElement;e.style.removeProperty("--hue-primary"),e.style.removeProperty("--hue-secondary"),e.style.removeProperty("--hue-accent");let t=e.getAttribute("data-theme");if(t){let a=`[data-theme~="${t}"]`;for(let s of document.styleSheets)try{for(let r=0;r<s.cssRules.length;r++){let n=s.cssRules[r];if(n.selectorText?.includes(a)&&!n.selectorText.includes("dark")){let i=n.style?.getPropertyValue("--hue-primary");if(i){this._baseHues={primary:parseFloat(i)||260,secondary:parseFloat(n.style.getPropertyValue("--hue-secondary"))||200,accent:parseFloat(n.style.getPropertyValue("--hue-accent"))||30};return}}}}catch{}}this._baseHues={primary:260,secondary:200,accent:30}},_update(){let e=this.load(),t=0;e.timeOfDay&&(t+=this._getTimeOfDayOffset()),e.seasonal&&(t+=this._getSeasonalOffset());let a=document.documentElement;t!==0&&this._baseHues?(a.style.setProperty("--hue-primary",String(this._baseHues.primary+t)),a.style.setProperty("--hue-secondary",String(this._baseHues.secondary+t)),a.style.setProperty("--hue-accent",String(this._baseHues.accent+t*.5))):t===0&&this._clearModifiers()},_clearModifiers(){let e=document.documentElement;e.style.removeProperty("--hue-primary"),e.style.removeProperty("--hue-secondary"),e.style.removeProperty("--hue-accent")},_getTimeOfDayOffset(){let e=this._timeOverride??new Date().getHours()+new Date().getMinutes()/60;return e<5?-20:e<7?v(-20,20,(e-5)/2):e<10?v(20,5,(e-7)/3):e<14?v(5,0,(e-10)/4):e<17?v(0,-5,(e-14)/3):e<19?v(-5,15,(e-17)/2):e<21?v(15,-10,(e-19)/2):v(-10,-20,(e-21)/8)},_getHemisphere(){return window.__VB_ENV_LOCATION?.hemisphere||"north"},_getSeasonalOffset(){let e=this._monthOverride??new Date().getMonth(),a=this._getHemisphere()==="south"?(e+6)%12:e;return a>=2&&a<=4?5:a>=5&&a<=7?10:a>=8&&a<=10?-5:-10},_startLoop(){this._timer||(this._timer=setInterval(()=>this._update(),Te))},_stopLoop(){this._timer&&clearInterval(this._timer),this._timer=null}};ue.init();
219
219
  //# sourceMappingURL=ui.full.js.map