@pure-ds/core 0.5.31 → 0.5.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +1 -1
- package/INTELLISENSE.md +1 -1
- package/custom-elements.json +179 -0
- package/dist/types/public/assets/js/pds-configurator.d.ts +2 -0
- package/dist/types/public/assets/js/pds-configurator.d.ts.map +1 -0
- package/dist/types/public/assets/js/pds-manager.d.ts +141 -426
- package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds.d.ts +3 -4
- package/dist/types/public/assets/js/pds.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-fab.d.ts +82 -0
- package/dist/types/public/assets/pds/components/pds-fab.d.ts.map +1 -0
- package/dist/types/src/js/common/ask.d.ts +6 -6
- package/dist/types/src/js/common/ask.d.ts.map +1 -1
- package/dist/types/src/js/common/common.d.ts +9 -0
- package/dist/types/src/js/common/common.d.ts.map +1 -1
- package/dist/types/src/js/pds-configurator.d.ts +2 -0
- package/dist/types/src/js/pds-configurator.d.ts.map +1 -0
- package/dist/types/src/js/pds-core/pds-config.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-enhancers-meta.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-enums.d.ts +9 -0
- package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-ontology.d.ts +146 -158
- package/dist/types/src/js/pds-core/pds-ontology.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/dist/types/src/js/pds.d.ts.map +1 -1
- package/package.json +3 -2
- package/packages/pds-cli/bin/templates/bootstrap/pds.config.js +2 -2
- package/public/assets/js/app.js +311 -203
- package/public/assets/js/pds-manager.js +297 -189
- package/public/assets/js/pds.js +10 -53
- package/public/assets/pds/components/pds-calendar.js +1 -1
- package/public/assets/pds/components/pds-fab.js +598 -0
- package/public/assets/pds/components/pds-form.js +1 -1
- package/public/assets/pds/components/pds-icon.js +10 -10
- package/public/assets/pds/components/pds-toaster.js +15 -15
- package/public/assets/pds/vscode-custom-data.json +23 -0
- package/readme.md +21 -4
- package/src/js/pds-core/pds-config.js +1 -8
- package/src/js/pds-core/pds-enhancers-meta.js +20 -5
- package/src/js/pds-core/pds-enhancers.js +45 -2
- package/src/js/pds-core/pds-enums.js +9 -0
- package/src/js/pds-core/pds-generator.js +245 -143
- package/src/js/pds-core/pds-live.js +2 -0
- package/src/js/pds-core/pds-ontology.js +47 -20
- package/src/js/pds-core/pds-query.js +1 -1
- package/src/js/pds-core/pds-start-helpers.js +2 -6
- package/src/js/pds.js +8 -0
package/public/assets/js/app.js
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
var yr=Object.defineProperty;var vr=(r,e)=>()=>(r&&(e=r(r=0)),e);var wr=(r,e)=>{for(var t in e)yr(r,t,{get:e[t],enumerable:!0})};var Xt={};wr(Xt,{AutoDefiner:()=>ct});async function so(...r){let e={};r.length&&typeof r[r.length-1]=="object"&&(e=r.pop()||{});let t=r,{baseURL:o,mapper:a=p=>`${p}.js`,onError:i=(p,d)=>console.error(`[defineWebComponents] ${p}:`,d)}=e,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),n=p=>p.toLowerCase().replace(/(^|-)([a-z])/g,(d,l,h)=>h.toUpperCase()),c=async p=>{try{if(customElements.get(p))return{tag:p,status:"already-defined"};let d=a(p),h=await import(d instanceof URL?d.href:new URL(d,s).href),g=h?.default??h?.[n(p)];if(!g){if(customElements.get(p))return{tag:p,status:"self-defined"};throw new Error(`No export found for ${p}. Expected default export or named export "${n(p)}".`)}return customElements.get(p)?{tag:p,status:"race-already-defined"}:(customElements.define(p,g),{tag:p,status:"defined"})}catch(d){throw i(p,d),d}};return Promise.all(t.map(c))}var ct,er=vr(()=>{ct=class{constructor(e={}){let{baseURL:t,mapper:o,onError:a,predicate:i=()=>!0,attributeModule:s="data-module",root:n=document,scanExisting:c=!0,debounceMs:p=16,observeShadows:d=!0,enhancers:l=[],patchAttachShadow:h=!0}=e,g=new Set,y=new Set,k=new Set,f=new Map,$=new WeakMap,Z=new WeakMap,T=0,H=!1,D=null,le=b=>{if(!b||!l.length)return;let w=Z.get(b);w||(w=new Set,Z.set(b,w));for(let v of l)if(!(!v.selector||!v.run)&&!w.has(v.selector))try{b.matches&&b.matches(v.selector)&&(v.run(b),w.add(v.selector))}catch(M){console.warn(`[AutoDefiner] Error applying enhancer for selector "${v.selector}":`,M)}},Q=(b,w)=>{if(!H&&!(!b||!b.includes("-"))&&!customElements.get(b)&&!y.has(b)&&!k.has(b)){if(w&&w.getAttribute){let v=w.getAttribute(s);v&&!f.has(b)&&f.set(b,v)}g.add(b),we()}},we=()=>{T||(T=setTimeout(X,p))},L=b=>{if(b){if(b.nodeType===1){let w=b,v=w.tagName?.toLowerCase();v&&v.includes("-")&&!customElements.get(v)&&i(v,w)&&Q(v,w),le(w),d&&w.shadowRoot&&W(w.shadowRoot)}b.querySelectorAll&&b.querySelectorAll("*").forEach(w=>{let v=w.tagName?.toLowerCase();v&&v.includes("-")&&!customElements.get(v)&&i(v,w)&&Q(v,w),le(w),d&&w.shadowRoot&&W(w.shadowRoot)})}},W=b=>{if(!b||$.has(b))return;L(b);let w=new MutationObserver(v=>{for(let M of v)M.addedNodes?.forEach(ee=>{L(ee)}),M.type==="attributes"&&M.target&&L(M.target)});w.observe(b,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[s,...l.map(v=>v.selector).filter(v=>v.startsWith("data-"))]}),$.set(b,w)};async function X(){if(clearTimeout(T),T=0,!g.size)return;let b=Array.from(g);g.clear(),b.forEach(w=>y.add(w));try{let w=v=>f.get(v)??(o?o(v):`${v}.js`);await so(...b,{baseURL:t,mapper:w,onError:(v,M)=>{k.add(v),a?.(v,M)}})}catch{}finally{b.forEach(w=>y.delete(w))}}let E=n===document?document.documentElement:n,R=new MutationObserver(b=>{for(let w of b)w.addedNodes?.forEach(v=>{L(v)}),w.type==="attributes"&&w.target&&L(w.target)});if(R.observe(E,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[s,...l.map(b=>b.selector).filter(b=>b.startsWith("data-"))]}),d&&h&&Element.prototype.attachShadow){let b=Element.prototype.attachShadow;Element.prototype.attachShadow=function(v){let M=b.call(this,v);if(v&&v.mode==="open"){W(M);let ee=this.tagName?.toLowerCase();ee&&ee.includes("-")&&!customElements.get(ee)&&Q(ee,this)}return M},D=()=>Element.prototype.attachShadow=b}return c&&L(E),{stop(){H=!0,R.disconnect(),D&&D(),T&&(clearTimeout(T),T=0),$.forEach(b=>b.disconnect())},flush:X}}static async define(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let o=e,{baseURL:a,mapper:i=d=>`${d}.js`,onError:s=(d,l)=>console.error(`[defineWebComponents] ${d}:`,l)}=t,n=a?new URL(a,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),c=d=>d.toLowerCase().replace(/(^|-)([a-z])/g,(l,h,g)=>g.toUpperCase()),p=async d=>{try{if(customElements.get(d))return{tag:d,status:"already-defined"};let l=i(d),g=await import(l instanceof URL?l.href:new URL(l,n).href),y=g?.default??g?.[c(d)];if(!y){if(customElements.get(d))return{tag:d,status:"self-defined"};throw new Error(`No export found for ${d}. Expected default export or named export "${c(d)}".`)}return customElements.get(d)?{tag:d,status:"race-already-defined"}:(customElements.define(d,y),{tag:d,status:"defined"})}catch(l){throw s(d,l),l}};return Promise.all(o.map(p))}}});var xe=globalThis,Se=xe.ShadowRoot&&(xe.ShadyCSS===void 0||xe.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,vt=Symbol(),yt=new WeakMap,ke=class{constructor(e,t,o){if(this._$cssResult$=!0,o!==vt)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(Se&&e===void 0){let o=t!==void 0&&t.length===1;o&&(e=yt.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),o&&yt.set(t,e))}return e}toString(){return this.cssText}},wt=r=>new ke(typeof r=="string"?r:r+"",void 0,vt);var xt=(r,e)=>{if(Se)r.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(let t of e){let o=document.createElement("style"),a=xe.litNonce;a!==void 0&&o.setAttribute("nonce",a),o.textContent=t.cssText,r.appendChild(o)}},qe=Se?r=>r:r=>r instanceof CSSStyleSheet?(e=>{let t="";for(let o of e.cssRules)t+=o.cssText;return wt(t)})(r):r;var{is:kr,defineProperty:Sr,getOwnPropertyDescriptor:$r,getOwnPropertyNames:Cr,getOwnPropertySymbols:Er,getPrototypeOf:Ar}=Object,$e=globalThis,kt=$e.trustedTypes,Tr=kt?kt.emptyScript:"",zr=$e.reactiveElementPolyfillSupport,de=(r,e)=>r,Ge={toAttribute(r,e){switch(e){case Boolean:r=r?Tr:null;break;case Object:case Array:r=r==null?r:JSON.stringify(r)}return r},fromAttribute(r,e){let t=r;switch(e){case Boolean:t=r!==null;break;case Number:t=r===null?null:Number(r);break;case Object:case Array:try{t=JSON.parse(r)}catch{t=null}}return t}},$t=(r,e)=>!kr(r,e),St={attribute:!0,type:String,converter:Ge,reflect:!1,useDefault:!1,hasChanged:$t};Symbol.metadata??=Symbol("metadata"),$e.litPropertyMetadata??=new WeakMap;var F=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=St){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let o=Symbol(),a=this.getPropertyDescriptor(e,o,t);a!==void 0&&Sr(this.prototype,e,a)}}static getPropertyDescriptor(e,t,o){let{get:a,set:i}=$r(this.prototype,e)??{get(){return this[t]},set(s){this[t]=s}};return{get:a,set(s){let n=a?.call(this);i?.call(this,s),this.requestUpdate(e,n,o)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??St}static _$Ei(){if(this.hasOwnProperty(de("elementProperties")))return;let e=Ar(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(de("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(de("properties"))){let t=this.properties,o=[...Cr(t),...Er(t)];for(let a of o)this.createProperty(a,t[a])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[o,a]of t)this.elementProperties.set(o,a)}this._$Eh=new Map;for(let[t,o]of this.elementProperties){let a=this._$Eu(t,o);a!==void 0&&this._$Eh.set(a,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let o=new Set(e.flat(1/0).reverse());for(let a of o)t.unshift(qe(a))}else e!==void 0&&t.push(qe(e));return t}static _$Eu(e,t){let o=t.attribute;return o===!1?void 0:typeof o=="string"?o:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let o of t.keys())this.hasOwnProperty(o)&&(e.set(o,this[o]),delete this[o]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return xt(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,o){this._$AK(e,o)}_$ET(e,t){let o=this.constructor.elementProperties.get(e),a=this.constructor._$Eu(e,o);if(a!==void 0&&o.reflect===!0){let i=(o.converter?.toAttribute!==void 0?o.converter:Ge).toAttribute(t,o.type);this._$Em=e,i==null?this.removeAttribute(a):this.setAttribute(a,i),this._$Em=null}}_$AK(e,t){let o=this.constructor,a=o._$Eh.get(e);if(a!==void 0&&this._$Em!==a){let i=o.getPropertyOptions(a),s=typeof i.converter=="function"?{fromAttribute:i.converter}:i.converter?.fromAttribute!==void 0?i.converter:Ge;this._$Em=a;let n=s.fromAttribute(t,i.type);this[a]=n??this._$Ej?.get(a)??n,this._$Em=null}}requestUpdate(e,t,o){if(e!==void 0){let a=this.constructor,i=this[e];if(o??=a.getPropertyOptions(e),!((o.hasChanged??$t)(i,t)||o.useDefault&&o.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,o))))return;this.C(e,t,o)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:o,reflect:a,wrapped:i},s){o&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,s??t??this[e]),i!==!0||s!==void 0)||(this._$AL.has(e)||(this.hasUpdated||o||(t=void 0),this._$AL.set(e,t)),a===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[a,i]of this._$Ep)this[a]=i;this._$Ep=void 0}let o=this.constructor.elementProperties;if(o.size>0)for(let[a,i]of o){let{wrapped:s}=i,n=this[a];s!==!0||this._$AL.has(a)||n===void 0||this.C(a,void 0,i,n)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(o=>o.hostUpdate?.()),this.update(t)):this._$EM()}catch(o){throw e=!1,this._$EM(),o}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(e){}firstUpdated(e){}};F.elementStyles=[],F.shadowRootOptions={mode:"open"},F[de("elementProperties")]=new Map,F[de("finalized")]=new Map,zr?.({ReactiveElement:F}),($e.reactiveElementVersions??=[]).push("2.1.1");var Je=globalThis,Ce=Je.trustedTypes,Ct=Ce?Ce.createPolicy("lit-html",{createHTML:r=>r}):void 0,Ke="$lit$",I=`lit$${Math.random().toFixed(9).slice(2)}$`,Ye="?"+I,Lr=`<${Ye}>`,G=document,ue=()=>G.createComment(""),he=r=>r===null||typeof r!="object"&&typeof r!="function",Ze=Array.isArray,Mt=r=>Ze(r)||typeof r?.[Symbol.iterator]=="function",Ve=`[
|
|
2
|
-
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),Tt=/'/g,zt=/"/g,_t=/^(?:script|style|textarea|title)$/i,Qe=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),Me=Qe(1),Xe=Qe(2),Dt=Qe(3),C=Symbol.for("lit-noChange"),x=Symbol.for("lit-nothing"),Lt=new WeakMap,q=G.createTreeWalker(G,129);function Pt(r,e){if(!Ze(r)||!r.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ct!==void 0?Ct.createHTML(e):e}var Rt=(r,e)=>{let t=r.length-1,o=[],a,i=e===2?"<svg>":e===3?"<math>":"",s=pe;for(let n=0;n<t;n++){let c=r[n],p,d,l=-1,h=0;for(;h<c.length&&(s.lastIndex=h,d=s.exec(c),d!==null);)h=s.lastIndex,s===pe?d[1]==="!--"?s=Et:d[1]!==void 0?s=At:d[2]!==void 0?(_t.test(d[2])&&(a=RegExp("</"+d[2],"g")),s=U):d[3]!==void 0&&(s=U):s===U?d[0]===">"?(s=a??pe,l=-1):d[1]===void 0?l=-2:(l=s.lastIndex-d[2].length,p=d[1],s=d[3]===void 0?U:d[3]==='"'?zt:Tt):s===zt||s===Tt?s=U:s===Et||s===At?s=pe:(s=U,a=void 0);let g=s===U&&r[n+1].startsWith("/>")?" ":"";i+=s===pe?c+Lr:l>=0?(o.push(p),c.slice(0,l)+Ke+c.slice(l)+I+g):c+I+(l===-2?n:g)}return[Pt(r,i+(r[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),o]},ge=class r{constructor({strings:e,_$litType$:t},o){let a;this.parts=[];let i=0,s=0,n=e.length-1,c=this.parts,[p,d]=Rt(e,t);if(this.el=r.createElement(p,o),q.currentNode=this.el.content,t===2||t===3){let l=this.el.content.firstChild;l.replaceWith(...l.childNodes)}for(;(a=q.nextNode())!==null&&c.length<n;){if(a.nodeType===1){if(a.hasAttributes())for(let l of a.getAttributeNames())if(l.endsWith(Ke)){let h=d[s++],g=a.getAttribute(l).split(I),y=/([.?@])?(.*)/.exec(h);c.push({type:1,index:i,name:y[2],strings:g,ctor:y[1]==="."?Ae:y[1]==="?"?Te:y[1]==="@"?ze:J}),a.removeAttribute(l)}else l.startsWith(I)&&(c.push({type:6,index:i}),a.removeAttribute(l));if(_t.test(a.tagName)){let l=a.textContent.split(I),h=l.length-1;if(h>0){a.textContent=Ce?Ce.emptyScript:"";for(let g=0;g<h;g++)a.append(l[g],ue()),q.nextNode(),c.push({type:2,index:++i});a.append(l[h],ue())}}}else if(a.nodeType===8)if(a.data===Ye)c.push({type:2,index:i});else{let l=-1;for(;(l=a.data.indexOf(I,l+1))!==-1;)c.push({type:7,index:i}),l+=I.length-1}i++}}static createElement(e,t){let o=G.createElement("template");return o.innerHTML=e,o}};function V(r,e,t=r,o){if(e===C)return e;let a=o!==void 0?t._$Co?.[o]:t._$Cl,i=he(e)?void 0:e._$litDirective$;return a?.constructor!==i&&(a?._$AO?.(!1),i===void 0?a=void 0:(a=new i(r),a._$AT(r,t,o)),o!==void 0?(t._$Co??=[])[o]=a:t._$Cl=a),a!==void 0&&(e=V(r,a._$AS(r,e.values),a,o)),e}var Ee=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:o}=this._$AD,a=(e?.creationScope??G).importNode(t,!0);q.currentNode=a;let i=q.nextNode(),s=0,n=0,c=o[0];for(;c!==void 0;){if(s===c.index){let p;c.type===2?p=new te(i,i.nextSibling,this,e):c.type===1?p=new c.ctor(i,c.name,c.strings,this,e):c.type===6&&(p=new Le(i,this,e)),this._$AV.push(p),c=o[++n]}s!==c?.index&&(i=q.nextNode(),s++)}return q.currentNode=G,a}p(e){let t=0;for(let o of this._$AV)o!==void 0&&(o.strings!==void 0?(o._$AI(e,o,t),t+=o.strings.length-2):o._$AI(e[t])),t++}},te=class r{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,o,a){this.type=2,this._$AH=x,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=o,this.options=a,this._$Cv=a?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=V(this,e,t),he(e)?e===x||e==null||e===""?(this._$AH!==x&&this._$AR(),this._$AH=x):e!==this._$AH&&e!==C&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Mt(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==x&&he(this._$AH)?this._$AA.nextSibling.data=e:this.T(G.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:o}=e,a=typeof o=="number"?this._$AC(e):(o.el===void 0&&(o.el=ge.createElement(Pt(o.h,o.h[0]),this.options)),o);if(this._$AH?._$AD===a)this._$AH.p(t);else{let i=new Ee(a,this),s=i.u(this.options);i.p(t),this.T(s),this._$AH=i}}_$AC(e){let t=Lt.get(e.strings);return t===void 0&&Lt.set(e.strings,t=new ge(e)),t}k(e){Ze(this._$AH)||(this._$AH=[],this._$AR());let t=this._$AH,o,a=0;for(let i of e)a===t.length?t.push(o=new r(this.O(ue()),this.O(ue()),this,this.options)):o=t[a],o._$AI(i),a++;a<t.length&&(this._$AR(o&&o._$AB.nextSibling,a),t.length=a)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let o=e.nextSibling;e.remove(),e=o}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},J=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,o,a,i){this.type=1,this._$AH=x,this._$AN=void 0,this.element=e,this.name=t,this._$AM=a,this.options=i,o.length>2||o[0]!==""||o[1]!==""?(this._$AH=Array(o.length-1).fill(new String),this.strings=o):this._$AH=x}_$AI(e,t=this,o,a){let i=this.strings,s=!1;if(i===void 0)e=V(this,e,t,0),s=!he(e)||e!==this._$AH&&e!==C,s&&(this._$AH=e);else{let n=e,c,p;for(e=i[0],c=0;c<i.length-1;c++)p=V(this,n[o+c],t,c),p===C&&(p=this._$AH[c]),s||=!he(p)||p!==this._$AH[c],p===x?e=x:e!==x&&(e+=(p??"")+i[c+1]),this._$AH[c]=p}s&&!a&&this.j(e)}j(e){e===x?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},Ae=class extends J{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===x?void 0:e}},Te=class extends J{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==x)}},ze=class extends J{constructor(e,t,o,a,i){super(e,t,o,a,i),this.type=5}_$AI(e,t=this){if((e=V(this,e,t,0)??x)===C)return;let o=this._$AH,a=e===x&&o!==x||e.capture!==o.capture||e.once!==o.once||e.passive!==o.passive,i=e!==x&&(o===x||a);a&&this.element.removeEventListener(this.name,this,o),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Le=class{constructor(e,t,o){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=o}get _$AU(){return this._$AM._$AU}_$AI(e){V(this,e)}},Ft={M:Ke,P:I,A:Ye,C:1,L:Rt,R:Ee,D:Mt,V,I:te,H:J,N:Te,U:ze,B:Ae,F:Le},Mr=Je.litHtmlPolyfillSupport;Mr?.(ge,te),(Je.litHtmlVersions??=[]).push("3.3.1");var N=(r,e,t)=>{let o=t?.renderBefore??e,a=o._$litPart$;if(a===void 0){let i=t?.renderBefore??null;o._$litPart$=a=new te(e.insertBefore(ue(),i),i,void 0,t??{})}return a._$AI(r),a};var et=globalThis,_=class extends F{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=N(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return C}};_._$litElement$=!0,_.finalized=!0,et.litElementHydrateSupport?.({LitElement:_});var _r=et.litElementPolyfillSupport;_r?.({LitElement:_});(et.litElementVersions??=[]).push("4.2.1");var B={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},A=r=>(...e)=>({_$litDirective$:r,values:e}),z=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,o){this._$Ct=e,this._$AM=t,this._$Ci=o}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}};var{I:Dr}=Ft,Nt=r=>r===null||typeof r!="object"&&typeof r!="function";var Bt=r=>r.strings===void 0,It=()=>document.createComment(""),re=(r,e,t)=>{let o=r._$AA.parentNode,a=e===void 0?r._$AB:e._$AA;if(t===void 0){let i=o.insertBefore(It(),a),s=o.insertBefore(It(),a);t=new Dr(i,s,r,r.options)}else{let i=t._$AB.nextSibling,s=t._$AM,n=s!==r;if(n){let c;t._$AQ?.(r),t._$AM=r,t._$AP!==void 0&&(c=r._$AU)!==s._$AU&&t._$AP(c)}if(i!==a||n){let c=t._$AA;for(;c!==i;){let p=c.nextSibling;o.insertBefore(c,a),c=p}}}return t},O=(r,e,t=r)=>(r._$AI(e,t),r),Pr={},_e=(r,e=Pr)=>r._$AH=e,Ot=r=>r._$AH,De=r=>{r._$AR(),r._$AA.remove()};var jt=(r,e,t)=>{let o=new Map;for(let a=e;a<=t;a++)o.set(r[a],a);return o},Io=A(class extends z{constructor(r){if(super(r),r.type!==B.CHILD)throw Error("repeat() can only be used in text expressions")}dt(r,e,t){let o;t===void 0?t=e:e!==void 0&&(o=e);let a=[],i=[],s=0;for(let n of r)a[s]=o?o(n,s):s,i[s]=t(n,s),s++;return{values:i,keys:a}}render(r,e,t){return this.dt(r,e,t).values}update(r,[e,t,o]){let a=Ot(r),{values:i,keys:s}=this.dt(e,t,o);if(!Array.isArray(a))return this.ut=s,i;let n=this.ut??=[],c=[],p,d,l=0,h=a.length-1,g=0,y=i.length-1;for(;l<=h&&g<=y;)if(a[l]===null)l++;else if(a[h]===null)h--;else if(n[l]===s[g])c[g]=O(a[l],i[g]),l++,g++;else if(n[h]===s[y])c[y]=O(a[h],i[y]),h--,y--;else if(n[l]===s[y])c[y]=O(a[l],i[y]),re(r,c[y+1],a[l]),l++,y--;else if(n[h]===s[g])c[g]=O(a[h],i[g]),re(r,a[l],a[h]),h--,g++;else if(p===void 0&&(p=jt(s,g,y),d=jt(n,l,h)),p.has(n[l]))if(p.has(n[h])){let k=d.get(s[g]),f=k!==void 0?a[k]:null;if(f===null){let $=re(r,a[l]);O($,i[g]),c[g]=$}else c[g]=O(f,i[g]),re(r,a[l],f),a[k]=null;g++}else De(a[h]),h--;else De(a[l]),l++;for(;g<=y;){let k=re(r,c[y+1]);O(k,i[g]),c[g++]=k}for(;l<=h;){let k=a[l++];k!==null&&De(k)}return this.ut=s,_e(r,c),C}});var qo=A(class extends z{constructor(){super(...arguments),this.key=x}render(r,e){return this.key=r,e}update(r,[e,t]){return e!==this.key&&(_e(r),this.key=e),t}});var Qo=A(class extends z{constructor(r){if(super(r),r.type!==B.ATTRIBUTE||r.name!=="class"||r.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(r){return" "+Object.keys(r).filter(e=>r[e]).join(" ")+" "}update(r,[e]){if(this.st===void 0){this.st=new Set,r.strings!==void 0&&(this.nt=new Set(r.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(let o in e)e[o]&&!this.nt?.has(o)&&this.st.add(o);return this.render(e)}let t=r.element.classList;for(let o of this.st)o in e||(t.remove(o),this.st.delete(o));for(let o in e){let a=!!e[o];a===this.st.has(o)||this.nt?.has(o)||(a?(t.add(o),this.st.add(o)):(t.remove(o),this.st.delete(o)))}return C}});var me=(r,e)=>{let t=r._$AN;if(t===void 0)return!1;for(let o of t)o._$AO?.(e,!1),me(o,e);return!0},Pe=r=>{let e,t;do{if((e=r._$AM)===void 0)break;t=e._$AN,t.delete(r),r=e}while(t?.size===0)},Ht=r=>{for(let e;e=r._$AM;r=e){let t=e._$AN;if(t===void 0)e._$AN=t=new Set;else if(t.has(r))break;t.add(r),Ir(e)}};function Rr(r){this._$AN!==void 0?(Pe(this),this._$AM=r,Ht(this)):this._$AM=r}function Fr(r,e=!1,t=0){let o=this._$AH,a=this._$AN;if(a!==void 0&&a.size!==0)if(e)if(Array.isArray(o))for(let i=t;i<o.length;i++)me(o[i],!1),Pe(o[i]);else o!=null&&(me(o,!1),Pe(o));else me(this,r)}var Ir=r=>{r.type==B.CHILD&&(r._$AP??=Fr,r._$AQ??=Rr)},oe=class extends z{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,o){super._$AT(e,t,o),Ht(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(me(this,e),Pe(this))}setValue(e){if(Bt(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}};var tt=new WeakMap,Nr=A(class extends oe{render(r){return x}update(r,[e]){let t=e!==this.G;return t&&this.G!==void 0&&this.rt(void 0),(t||this.lt!==this.ct)&&(this.G=e,this.ht=r.options?.host,this.rt(this.ct=r.element)),x}rt(r){if(this.isConnected||(r=void 0),typeof this.G=="function"){let e=this.ht??globalThis,t=tt.get(e);t===void 0&&(t=new WeakMap,tt.set(e,t)),t.get(this.G)!==void 0&&this.G.call(this.ht,void 0),t.set(this.G,r),r!==void 0&&this.G.call(this.ht,r)}else this.G.value=r}get lt(){return typeof this.G=="function"?tt.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var Re=class{constructor(e){this.G=e}disconnect(){this.G=void 0}reconnect(e){this.G=e}deref(){return this.G}},Fe=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(e=>this.Z=e)}resume(){this.Z?.(),this.Y=this.Z=void 0}};var Wt=r=>!Nt(r)&&typeof r.then=="function",Ut=1073741823,rt=class extends oe{constructor(){super(...arguments),this._$Cwt=Ut,this._$Cbt=[],this._$CK=new Re(this),this._$CX=new Fe}render(...e){return e.find(t=>!Wt(t))??C}update(e,t){let o=this._$Cbt,a=o.length;this._$Cbt=t;let i=this._$CK,s=this._$CX;this.isConnected||this.disconnected();for(let n=0;n<t.length&&!(n>this._$Cwt);n++){let c=t[n];if(!Wt(c))return this._$Cwt=n,c;n<a&&c===o[n]||(this._$Cwt=Ut,a=0,Promise.resolve(c).then(async p=>{for(;s.get();)await s.get();let d=i.deref();if(d!==void 0){let l=d._$Cbt.indexOf(c);l>-1&&l<d._$Cwt&&(d._$Cwt=l,d.setValue(p))}}))}return C}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},Br=A(rt);var K=class extends z{constructor(e){if(super(e),this.it=x,e.type!==B.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===x||e==null)return this._t=void 0,this.it=e;if(e===C)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};K.directiveName="unsafeHTML",K.resultType=1;var Ie=A(K);var fe=class extends K{};fe.directiveName="unsafeSVG",fe.resultType=2;var Or=A(fe);var Ia=["127.0.0.1","localhost"].includes(window.location.hostname);var jr=Symbol.for(""),Hr=r=>{if(r?.r===jr)return r?._$litStatic$};var qt=new Map,ot=r=>(e,...t)=>{let o=t.length,a,i,s=[],n=[],c,p=0,d=!1;for(;p<o;){for(c=e[p];p<o&&(i=t[p],(a=Hr(i))!==void 0);)c+=a+e[++p],d=!0;p!==o&&n.push(i),s.push(c),p++}if(p===o&&s.push(e[o]),d){let l=s.join("$$lit$$");(e=qt.get(l))===void 0&&(s.raw=s,qt.set(l,e=s)),t=n}return r(e,...t)},Wr=ot(Me),Oa=ot(Xe),ja=ot(Dt);var S=Me;var u={FontWeights:{light:300,normal:400,medium:500,semibold:600,bold:700},LineHeights:{tight:1.25,normal:1.5,relaxed:1.75},BorderWidths:{hairline:.5,thin:1,medium:2,thick:3},RadiusSizes:{none:0,small:4,medium:8,large:16,xlarge:24,xxlarge:32},ShadowDepths:{none:"none",light:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",medium:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",deep:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",extreme:"0 25px 50px -12px rgba(0, 0, 0, 0.25)"},TransitionSpeeds:{fast:150,normal:250,slow:350},AnimationEasings:{linear:"linear",ease:"ease","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out",bounce:"cubic-bezier(0.68, -0.55, 0.265, 1.55)"},TouchTargetSizes:{compact:36,standard:44,comfortable:48,spacious:56},LinkStyles:{inline:"inline",block:"block",button:"button"},FocusStyles:{ring:"ring",outline:"outline",border:"border",glow:"glow"},TabSizes:{compact:2,standard:4,wide:8},SelectIcons:{chevron:"chevron",arrow:"arrow",caret:"caret",none:"none"}};var j={"ocean-breeze":{id:"ocean-breeze",name:"Ocean Breeze",tags:["playful"],description:"Fresh and calming ocean-inspired palette with professional undertones",options:{liquidGlassEffects:!0,backgroundMesh:3},colors:{primary:"#0891b2",secondary:"#64748b",accent:"#06b6d4",background:"#f0f9ff",darkMode:{background:"#0c1821",secondary:"#94a3b8",primary:"#0891b2"}},typography:{baseFontSize:17,fontScale:1.5,fontFamilyHeadings:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyBody:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'},spatialRhythm:{baseUnit:6,scaleRatio:1.2},shape:{radiusSize:u.RadiusSizes.xxlarge}},"midnight-steel":{id:"midnight-steel",name:"Midnight Steel",description:"Bold industrial aesthetic with sharp contrasts and urban edge",colors:{primary:"#3b82f6",secondary:"#52525b",accent:"#f59e0b",background:"#fafaf9",darkMode:{background:"#18181b",secondary:"#71717a",primary:"#3b82f6"}},typography:{baseFontSize:16,fontScale:1.333,fontFamilyHeadings:"'IBM Plex Sans', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, sans-serif",fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:u.RadiusSizes.small,borderWidth:u.BorderWidths.thin}},"neural-glow":{id:"neural-glow",name:"Neural Glow",description:"AI-inspired with vibrant purple-blue gradients and futuristic vibes",colors:{primary:"#8b5cf6",secondary:"#6366f1",accent:"#ec4899",background:"#faf5ff",darkMode:{background:"#0f0a1a",secondary:"#818cf8",primary:"#8b5cf6"}},typography:{baseFontSize:16,fontScale:1.618,fontFamilyHeadings:"'Space Grotesk', system-ui, sans-serif",fontFamilyBody:"'Space Grotesk', system-ui, sans-serif"},spatialRhythm:{baseUnit:4,scaleRatio:1.5},shape:{radiusSize:u.RadiusSizes.xlarge,borderWidth:u.BorderWidths.medium},behavior:{transitionSpeed:u.TransitionSpeeds.fast}},"paper-and-ink":{id:"paper-and-ink",name:"Paper & Ink",tags:["app","featured"],description:"Ultra-minimal design with focus on typography and whitespace",colors:{primary:"#171717",secondary:"#737373",accent:"#525252",background:"#ffffff",darkMode:{background:"#0a0a0a",secondary:"#a3a3a3",primary:"#737373"}},typography:{baseFontSize:18,fontScale:1.333,fontFamilyHeadings:"'Helvetica Neue', 'Arial', sans-serif",fontFamilyBody:"'Georgia', 'Times New Roman', serif",fontWeightNormal:400,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.2},shape:{radiusSize:u.RadiusSizes.none,borderWidth:u.BorderWidths.thin}},"sunset-paradise":{id:"sunset-paradise",name:"Sunset Paradise",description:"Warm tropical colors evoking golden hour by the beach",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#ea580c",secondary:"#d4a373",accent:"#fb923c",background:"#fffbeb",darkMode:{background:"#1a0f0a",secondary:"#c9a482",primary:"#f97316"}},typography:{baseFontSize:16,fontScale:1.5,fontFamilyHeadings:"'Quicksand', 'Comfortaa', sans-serif",fontFamilyBody:"'Quicksand', 'Comfortaa', sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.5},shape:{radiusSize:u.RadiusSizes.xxlarge,borderWidth:u.BorderWidths.medium}},"retro-wave":{id:"retro-wave",name:"Retro Wave",description:"Nostalgic 80s-inspired palette with neon undertones",colors:{primary:"#c026d3",secondary:"#a78bfa",accent:"#22d3ee",background:"#fef3ff",darkMode:{background:"#1a0a1f",secondary:"#c4b5fd",primary:"#d946ef"}},typography:{baseFontSize:15,fontScale:1.5,fontFamilyHeadings:"'Orbitron', 'Impact', monospace",fontFamilyBody:"'Courier New', 'Courier', monospace",fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:u.RadiusSizes.none,borderWidth:u.BorderWidths.thick},behavior:{transitionSpeed:u.TransitionSpeeds.instant}},"forest-canopy":{id:"forest-canopy",name:"Forest Canopy",description:"Natural earth tones with organic, calming green hues",colors:{primary:"#059669",secondary:"#78716c",accent:"#84cc16",background:"#f0fdf4",darkMode:{background:"#0a1410",secondary:"#a8a29e",primary:"#10b981"}},typography:{baseFontSize:16,fontScale:1.414,fontFamilyHeadings:"'Merriweather Sans', 'Arial', sans-serif",fontFamilyBody:"'Merriweather', 'Georgia', serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.3},shape:{radiusSize:u.RadiusSizes.medium,borderWidth:u.BorderWidths.thin}},"ruby-elegance":{id:"ruby-elegance",name:"Ruby Elegance",description:"Sophisticated palette with rich ruby reds and warm accents",colors:{primary:"#dc2626",secondary:"#9ca3af",accent:"#be123c",background:"#fef2f2",darkMode:{background:"#1b0808",secondary:"#d1d5db",primary:"#ef4444"}},typography:{baseFontSize:17,fontScale:1.5,fontFamilyHeadings:"'Playfair Display', 'Georgia', serif",fontFamilyBody:"'Crimson Text', 'Garamond', serif",fontWeightNormal:400,fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.333},shape:{radiusSize:u.RadiusSizes.small,borderWidth:u.BorderWidths.thin}},"desert-dawn":{id:"desert-dawn",name:"Desert Dawn",description:"Sun-baked neutrals with grounded terracotta and cool oasis accents",colors:{primary:"#b45309",secondary:"#a8a29e",accent:"#0ea5a8",background:"#fcf6ef",darkMode:{background:"#12100e",secondary:"#d1d5db",primary:"#f59e0b"}},typography:{baseFontSize:16,fontScale:1.414,fontFamilyHeadings:"'Source Sans Pro', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Source Serif Pro', Georgia, serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.3},shape:{radiusSize:u.RadiusSizes.medium,borderWidth:u.BorderWidths.medium}},"contrast-pro":{id:"contrast-pro",name:"Contrast Pro",description:"Accessibility-first, high-contrast UI with assertive clarity",colors:{primary:"#1f2937",secondary:"#111827",accent:"#eab308",background:"#ffffff",darkMode:{background:"#0b0f14",secondary:"#9ca3af",primary:"#9ca3af"}},typography:{baseFontSize:17,fontScale:1.2,fontFamilyHeadings:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontFamilyBody:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontWeightBold:700},spatialRhythm:{baseUnit:3,scaleRatio:1.2},shape:{radiusSize:u.RadiusSizes.small,borderWidth:u.BorderWidths.thick},behavior:{transitionSpeed:u.TransitionSpeeds.fast,focusRingWidth:4}},"pastel-play":{id:"pastel-play",name:"Pastel Play",description:"Playful pastels with soft surfaces and friendly rounded shapes",colors:{primary:"#db2777",secondary:"#a78bfa",accent:"#34d399",background:"#fff7fa",darkMode:{background:"#1a1016",secondary:"#c4b5fd",primary:"#ec4899"}},typography:{baseFontSize:16,fontScale:1.333,fontFamilyHeadings:"'Nunito', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Nunito', system-ui, -apple-system, sans-serif",lineHeightRelaxed:u.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:u.RadiusSizes.xxlarge,borderWidth:u.BorderWidths.thin},behavior:{transitionSpeed:u.TransitionSpeeds.slow,animationEasing:u.AnimationEasings["ease-out"]}},"brutalist-tech":{id:"brutalist-tech",name:"Brutalist Tech",description:"Stark grayscale with engineered accents and unapologetically bold structure",colors:{primary:"#111111",secondary:"#4b5563",accent:"#06b6d4",background:"#f8fafc",darkMode:{background:"#0b0b0b",secondary:"#9ca3af",primary:"#06b6d4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace",fontFamilyBody:"'Inter', system-ui, -apple-system, sans-serif",letterSpacingTight:-.02},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:u.RadiusSizes.none,borderWidth:u.BorderWidths.thick},behavior:{transitionSpeed:u.TransitionSpeeds.instant}},"zen-garden":{id:"zen-garden",name:"Zen Garden",description:"Soft botanicals with contemplative spacing and balanced motion",colors:{primary:"#3f6212",secondary:"#6b7280",accent:"#7c3aed",background:"#f7fbef",darkMode:{background:"#0d130a",secondary:"#a3a3a3",primary:"#84cc16"}},typography:{baseFontSize:17,fontScale:1.414,fontFamilyHeadings:"'Merriweather', Georgia, serif",fontFamilyBody:"'Noto Sans', system-ui, -apple-system, sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.35},shape:{radiusSize:u.RadiusSizes.large,borderWidth:u.BorderWidths.medium},behavior:{transitionSpeed:u.TransitionSpeeds.normal,animationEasing:u.AnimationEasings.ease}},"fitness-pro":{id:"fitness-pro",name:"Fitness Pro",tags:["app","featured"],description:"Health and fitness tracking aesthetic with data-driven dark surfaces and vibrant accent rings",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#e91e63",secondary:"#78909c",accent:"#ab47bc",background:"#fafafa",darkMode:{background:"#1a1d21",secondary:"#78909c",primary:"#0a4ca4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:u.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:u.RadiusSizes.large,borderWidth:u.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:u.TransitionSpeeds.fast,animationEasing:u.AnimationEasings["ease-out"],focusRingWidth:2}},"travel-market":{id:"travel-market",name:"Travel Market",description:"Hospitality marketplace design with clean cards, subtle shadows, and trust-building neutrals",options:{liquidGlassEffects:!0,backgroundMesh:3},colors:{primary:"#d93251",secondary:"#717171",accent:"#144990",background:"#ffffff",darkMode:{background:"#222222",secondary:"#b0b0b0",primary:"#ff5a7a"}},typography:{baseFontSize:16,fontScale:1.2,fontFamilyHeadings:"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightRelaxed:u.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:1440,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:u.RadiusSizes.medium,borderWidth:u.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:u.TransitionSpeeds.normal,animationEasing:u.AnimationEasings["ease-in-out"],hoverOpacity:.9}},"mobility-app":{id:"mobility-app",name:"Mobility App",tags:["app","featured"],description:"On-demand service platform with bold typography, map-ready colors, and action-driven UI",options:{liquidGlassEffects:!0,backgroundMesh:0},colors:{primary:"#000000",secondary:"#545454",accent:"#06c167",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#06c167"}},typography:{baseFontSize:16,fontScale:1.3,fontFamilyHeadings:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,buttonPadding:1.25,inputPadding:1},shape:{radiusSize:u.RadiusSizes.small,borderWidth:u.BorderWidths.medium},behavior:{transitionSpeed:u.TransitionSpeeds.fast,animationEasing:u.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:u.TouchTargetSizes.comfortable,focusStyle:u.FocusStyles.ring}},"fintech-secure":{id:"fintech-secure",name:"Fintech Secure",description:"Financial services app UI with trust-building blues, precise spacing, and security-first design",options:{liquidGlassEffects:!1,backgroundMesh:0},colors:{primary:"#0a2540",secondary:"#425466",accent:"#00d4ff",background:"#f7fafc",darkMode:{background:"#0a1929",secondary:"#8796a5",primary:"#00d4ff"}},typography:{baseFontSize:16,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyMono:"'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:1280,sectionSpacing:2.5},shape:{radiusSize:u.RadiusSizes.medium,borderWidth:u.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:u.TransitionSpeeds.fast,animationEasing:u.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:u.TouchTargetSizes.standard,focusStyle:u.FocusStyles.ring}},"social-feed":{id:"social-feed",name:"Social Feed",tags:["app","featured"],description:"Content-first social platform with minimal chrome, bold actions, and vibrant media presentation",options:{liquidGlassEffects:!0,backgroundMesh:4},colors:{primary:"#1877f2",secondary:"#65676b",accent:"#fe2c55",background:"#ffffff",darkMode:{background:"#18191a",secondary:"#b0b3b8",primary:"#2d88ff"}},typography:{baseFontSize:15,fontScale:1.2,fontFamilyHeadings:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontFamilyBody:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:u.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:680,sectionSpacing:1.5},shape:{radiusSize:u.RadiusSizes.medium,borderWidth:u.BorderWidths.thin},behavior:{transitionSpeed:u.TransitionSpeeds.fast,animationEasing:u.AnimationEasings["ease-out"],hoverOpacity:.85}},"enterprise-dash":{id:"enterprise-dash",tags:["app","featured"],name:"Enterprise Dashboard",description:"Data-dense business intelligence app interface with organized hierarchy and professional polish",options:{liquidGlassEffects:!1},colors:{primary:"#0066cc",secondary:"#5f6368",accent:"#1a73e8",background:"#ffffff",success:"#34a853",warning:"#fbbc04",danger:"#ea4335",darkMode:{background:"#202124",secondary:"#9aa0a6",primary:"#8ab4f8"}},typography:{baseFontSize:14,fontScale:1.2,fontFamilyHeadings:"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyMono:"'Roboto Mono', ui-monospace, Consolas, monospace",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:u.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerMaxWidth:1600,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:u.RadiusSizes.small,borderWidth:u.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:u.TransitionSpeeds.fast,animationEasing:u.AnimationEasings["ease-in-out"],focusRingWidth:2},layout:{densityCompact:.85,gridColumns:12}}};j.default={id:"default",name:"Default",tags:["app","featured"],description:"Fresh and modern design system with balanced aesthetics and usability",options:{liquidGlassEffects:!0,backgroundMesh:4},form:{options:{widgets:{booleans:"toggle",numbers:"input",selects:"standard"},layouts:{fieldsets:"default",arrays:"default"},enhancements:{icons:!0,datalists:!0,rangeOutput:!0},validation:{showErrors:!0,validateOnChange:!1}}},colors:{primary:"#0e7490",secondary:"#a99b95",accent:"#e54271",background:"#e7e6de",darkMode:{background:"#16171a",secondary:"#8b9199",primary:"#06b6d4"},success:null,warning:"#B38600",danger:null,info:null,gradientStops:3,elevationOpacity:.05},typography:{baseFontSize:16,fontScale:1.2,fontFamilyHeadings:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyBody:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyMono:'ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',fontWeightLight:u.FontWeights.light,fontWeightNormal:u.FontWeights.normal,fontWeightMedium:u.FontWeights.medium,fontWeightSemibold:u.FontWeights.semibold,fontWeightBold:u.FontWeights.bold,lineHeightTight:u.LineHeights.tight,lineHeightNormal:u.LineHeights.normal,lineHeightRelaxed:u.LineHeights.relaxed,letterSpacingTight:-.025,letterSpacingNormal:0,letterSpacingWide:.025},spatialRhythm:{baseUnit:4,scaleRatio:1.25,maxSpacingSteps:32,containerMaxWidth:1200,containerPadding:1,inputPadding:.75,buttonPadding:1,sectionSpacing:2},layers:{shadowDepth:"medium",blurLight:4,blurMedium:8,blurHeavy:16,zIndexBase:0,zIndexDropdown:1e3,zIndexSticky:1020,zIndexFixed:1030,zIndexModal:1040,zIndexPopover:1050,zIndexTooltip:1060,zIndexNotification:1070},shape:{radiusSize:u.RadiusSizes.large,borderWidth:u.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:u.TransitionSpeeds.normal,animationEasing:u.AnimationEasings["ease-out"],customTransitionSpeed:null,customEasing:null,focusRingWidth:3,focusRingOpacity:.3,hoverOpacity:.8},layout:{gridColumns:12,gridGutter:1,breakpoints:{sm:640,md:768,lg:1024,xl:1280},densityCompact:.8,densityNormal:1,densityComfortable:1.2,buttonMinHeight:u.TouchTargetSizes.standard,inputMinHeight:40,utilities:{grid:!0,flex:!0,spacing:!0,container:!0},gridSystem:{columns:[1,2,3,4,6],autoFitBreakpoints:{sm:"150px",md:"250px",lg:"350px",xl:"450px"},enableGapUtilities:!0},containerMaxWidth:"1400px",containerPadding:"var(--spacing-6)"},advanced:{linkStyle:u.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:u.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:u.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:{xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64},include:{navigation:["arrow-left","arrow-right","arrow-up","arrow-down","arrow-counter-clockwise","caret-left","caret-right","caret-down","caret-up","x","list","list-dashes","dots-three-vertical","dots-three","house","gear","magnifying-glass","funnel","tabs","sidebar"],actions:["plus","minus","check","trash","pencil","floppy-disk","copy","download","upload","share","link","eye","eye-slash","heart","star","bookmark","note-pencil","cursor-click","clipboard","magic-wand","sparkle"],communication:["envelope","bell","bell-ringing","bell-simple","chat-circle","phone","paper-plane-tilt","user","users","user-gear","at"],content:["image","file","file-text","file-css","file-js","folder","folder-open","book-open","camera","video-camera","play","pause","microphone","brackets-curly","code","folder-simple","grid-four","briefcase","chart-line","chart-bar","database","map-pin"],status:["info","warning","check-circle","x-circle","question","shield","shield-check","shield-warning","lock","lock-open","fingerprint","circle-notch"],time:["calendar","clock","timer","hourglass"],commerce:["shopping-cart","credit-card","currency-dollar","tag","receipt","storefront"],formatting:["text-align-left","text-align-center","text-align-right","text-b","text-italic","text-underline","list-bullets","list-numbers","text-aa"],system:["cloud","cloud-arrow-up","cloud-arrow-down","desktop","device-mobile","globe","wifi-high","battery-charging","sun","moon","moon-stars","palette","rocket","feather","square","circle","squares-four","lightning","wrench"]},spritePath:"public/assets/pds/icons/pds-icons.svg"},gap:4,debug:!1};var at={meta:{name:"Pure Design System Ontology",version:"1.0.0",description:"Complete metadata registry for PDS primitives, components, utilities, and tokens"},tokens:{colors:{semantic:["primary","secondary","accent","success","warning","danger","info"],neutral:["gray"],shades:[50,100,200,300,400,500,600,700,800,900,950],surface:["base","subtle","elevated","sunken","overlay","inverse","translucent"],text:["default","muted","subtle","inverse","primary","success","warning","danger","info"]},spacing:{scale:["1","2","3","4","5","6","8","10","12","16","20","24"],semantic:["xs","sm","md","lg","xl"]},typography:{families:["heading","body","mono"],sizes:["xs","sm","base","lg","xl","2xl","3xl","4xl","5xl"],weights:["light","normal","medium","semibold","bold"]},radius:{scale:["none","sm","base","md","lg","xl","2xl","full"]},shadows:{scale:["none","sm","base","md","lg","xl","inner"]},themes:["light","dark"],breakpoints:{sm:640,md:768,lg:1024,xl:1280}},primitives:[{id:"badge",name:"Badge / Pill",description:"Inline status indicators and labels",selectors:[".badge",".badge-primary",".badge-secondary",".badge-success",".badge-info",".badge-warning",".badge-danger",".badge-outline",".badge-sm",".badge-lg",".pill",".tag",".chip"],tags:["status","label","indicator","inline"],category:"feedback"},{id:"card",name:"Card",description:"Content container with padding, border-radius, and optional shadow",selectors:[".card",".card-basic",".card-elevated",".card-outlined",".card-interactive"],tags:["container","content","grouping"],category:"container"},{id:"surface",name:"Surface",description:"Smart surface classes with automatic text/background color handling",selectors:[".surface-base",".surface-subtle",".surface-elevated",".surface-sunken",".surface-overlay",".surface-inverse",".surface-translucent",".surface-translucent-25",".surface-translucent-50",".surface-translucent-75",".surface-primary",".surface-secondary",".surface-success",".surface-warning",".surface-danger",".surface-info"],tags:["background","theming","color","container"],category:"theming"},{id:"alert",name:"Alert",description:"Contextual feedback messages",selectors:[".alert",".alert-info",".alert-success",".alert-warning",".alert-danger",".alert-error",".alert-dismissible",".semantic-message"],tags:["feedback","message","notification","status"],category:"feedback"},{id:"dialog",name:"Dialog",description:"Modal dialog element",selectors:["dialog",".dialog"],tags:["modal","overlay","popup","modal"],category:"overlay"},{id:"divider",name:"Divider",description:"Horizontal rule with optional label",selectors:["hr","hr[data-content]"],tags:["separator","line","content-divider"],category:"layout"},{id:"table",name:"Table",description:"Data tables with responsive and styling variants",selectors:["table",".table-responsive",".table-striped",".table-bordered",".table-compact",".data-table"],tags:["data","grid","tabular","responsive"],category:"data"},{id:"button",name:"Button",description:"Interactive button element with variants",selectors:["button",".btn-primary",".btn-secondary",".btn-outline",".btn-sm",".btn-xs",".btn-lg",".btn-working",".icon-only"],tags:["interactive","action","cta","form"],category:"action"},{id:"fieldset",name:"Fieldset Group",description:"Form field grouping for radio/checkbox groups",selectors:["fieldset[role='group']","fieldset[role='radiogroup']","fieldset.buttons"],tags:["form","grouping","radio","checkbox"],category:"form"},{id:"label-field",name:"Label+Input",description:"Semantic label wrapping form input",selectors:["label","label:has(input)","label:has(select)","label:has(textarea)"],tags:["form","input","accessibility"],category:"form"},{id:"accordion",name:"Accordion",description:"Collapsible content sections",selectors:[".accordion",".accordion-item","details","details > summary"],tags:["expandable","collapsible","disclosure"],category:"disclosure"},{id:"icon",name:"Icon",description:"SVG icon element with size and color variants",selectors:["pds-icon",".icon-xs",".icon-sm",".icon-md",".icon-lg",".icon-xl",".icon-primary",".icon-secondary",".icon-accent",".icon-success",".icon-warning",".icon-danger",".icon-info",".icon-muted",".icon-subtle",".icon-text",".icon-text-start",".icon-text-end"],tags:["graphic","symbol","visual"],category:"media"},{id:"figure",name:"Figure/Media",description:"Figure element for images with captions",selectors:["figure","figure.media","figcaption"],tags:["image","media","caption"],category:"media"},{id:"gallery",name:"Gallery",description:"Image gallery grid",selectors:[".gallery",".gallery-grid",".img-gallery"],tags:["images","grid","collection"],category:"media"},{id:"form",name:"Form Container",description:"Form styling and layout",selectors:["form",".form-container",".form-actions",".field-description"],tags:["form","input","submission"],category:"form"},{id:"navigation",name:"Navigation",description:"Navigation elements and menus",selectors:["nav","nav[data-dropdown]","menu","nav menu li"],tags:["menu","links","routing"],category:"navigation"}],components:[{id:"pds-tabstrip",name:"Tab Strip",description:"Tabbed interface component",selectors:["pds-tabstrip"],tags:["tabs","navigation","panels"],category:"navigation"},{id:"pds-drawer",name:"Drawer",description:"Slide-out panel overlay",selectors:["pds-drawer"],tags:["panel","overlay","sidebar"],category:"overlay"},{id:"pds-upload",name:"Upload",description:"File upload component with drag-and-drop",selectors:["pds-upload"],tags:["file","upload","drag-drop","form"],category:"form"},{id:"pds-icon",name:"Icon",description:"SVG icon web component",selectors:["pds-icon"],tags:["icon","graphic","svg"],category:"media"},{id:"pds-toaster",name:"Toaster",description:"Toast notification container",selectors:["pds-toaster"],tags:["notification","toast","feedback"],category:"feedback"},{id:"pds-form",name:"JSON Form",description:"Auto-generated form from JSON Schema",selectors:["pds-form"],tags:["form","schema","auto-generate"],category:"form"},{id:"pds-splitpanel",name:"Split Panel",description:"Resizable split pane layout",selectors:["pds-splitpanel"],tags:["layout","resize","panels"],category:"layout"},{id:"pds-scrollrow",name:"Scroll Row",description:"Horizontal scrolling row with snap points",selectors:["pds-scrollrow"],tags:["scroll","horizontal","carousel"],category:"layout"},{id:"pds-richtext",name:"Rich Text",description:"Rich text editor component",selectors:["pds-richtext"],tags:["editor","wysiwyg","text"],category:"form"},{id:"pds-calendar",name:"Calendar",description:"Date picker calendar component",selectors:["pds-calendar"],tags:["date","picker","calendar"],category:"form"}],layoutPatterns:[{id:"container",name:"Container",description:"Centered max-width wrapper with padding",selectors:[".container"],tags:["wrapper","centered","max-width","page"],category:"structure"},{id:"grid",name:"Grid",description:"CSS Grid layout container",selectors:[".grid"],tags:["layout","columns","css-grid"],category:"layout"},{id:"grid-cols",name:"Grid Columns",description:"Fixed column count grids",selectors:[".grid-cols-1",".grid-cols-2",".grid-cols-3",".grid-cols-4",".grid-cols-6"],tags:["columns","fixed","grid"],category:"layout"},{id:"grid-auto",name:"Auto-fit Grid",description:"Responsive auto-fit grid with minimum widths",selectors:[".grid-auto-sm",".grid-auto-md",".grid-auto-lg",".grid-auto-xl"],tags:["responsive","auto-fit","fluid"],category:"layout"},{id:"flex",name:"Flex Container",description:"Flexbox layout with direction and wrap modifiers",selectors:[".flex",".flex-wrap",".flex-col",".flex-row"],tags:["flexbox","layout","alignment"],category:"layout"},{id:"grow",name:"Flex Grow",description:"Fill remaining flex space",selectors:[".grow"],tags:["flex","expand","fill"],category:"layout"},{id:"stack",name:"Stack",description:"Vertical flex layout with predefined gaps",selectors:[".stack-sm",".stack-md",".stack-lg",".stack-xl"],tags:["vertical","spacing","column"],category:"layout"},{id:"gap",name:"Gap",description:"Spacing between flex/grid children",selectors:[".gap-0",".gap-xs",".gap-sm",".gap-md",".gap-lg",".gap-xl"],tags:["spacing","margin","gutters"],category:"spacing"},{id:"items",name:"Items Alignment",description:"Cross-axis alignment for flex/grid",selectors:[".items-start",".items-center",".items-end",".items-stretch",".items-baseline"],tags:["alignment","vertical","cross-axis"],category:"alignment"},{id:"justify",name:"Justify Content",description:"Main-axis alignment for flex/grid",selectors:[".justify-start",".justify-center",".justify-end",".justify-between",".justify-around",".justify-evenly"],tags:["alignment","horizontal","main-axis"],category:"alignment"},{id:"max-width",name:"Max-Width",description:"Content width constraints",selectors:[".max-w-sm",".max-w-md",".max-w-lg",".max-w-xl"],tags:["width","constraint","readable"],category:"sizing"},{id:"section",name:"Section Spacing",description:"Vertical padding for content sections",selectors:[".section",".section-lg"],tags:["spacing","vertical","padding"],category:"spacing"},{id:"mobile-stack",name:"Mobile Stack",description:"Stack on mobile, row on desktop",selectors:[".mobile-stack"],tags:["responsive","mobile","breakpoint"],category:"responsive"}],utilities:{text:{alignment:[".text-left",".text-center",".text-right"],color:[".text-muted"],overflow:[".truncate"]},backdrop:{base:[".backdrop"],variants:[".backdrop-light",".backdrop-dark"],blur:[".backdrop-blur-sm",".backdrop-blur-md",".backdrop-blur-lg"]},shadow:{scale:[".shadow-sm",".shadow-base",".shadow-md",".shadow-lg",".shadow-xl",".shadow-inner",".shadow-none"]},border:{gradient:[".border-gradient",".border-gradient-primary",".border-gradient-accent",".border-gradient-secondary",".border-gradient-soft",".border-gradient-medium",".border-gradient-strong"],glow:[".border-glow",".border-glow-sm",".border-glow-lg",".border-glow-primary",".border-glow-accent",".border-glow-success",".border-glow-warning",".border-glow-danger"],combined:[".border-gradient-glow"]},media:{image:[".img-gallery",".img-rounded-sm",".img-rounded-md",".img-rounded-lg",".img-rounded-xl",".img-rounded-full",".img-inline"],video:[".video-responsive"],figure:[".figure-responsive"]},effects:{glass:[".liquid-glass"]}},responsive:{prefixes:["sm","md","lg"],utilities:{grid:[":grid-cols-2",":grid-cols-3",":grid-cols-4"],flex:[":flex-row"],text:[":text-sm",":text-lg",":text-xl"],spacing:[":p-6",":p-8",":p-12",":gap-6",":gap-8",":gap-12"],width:[":w-1/2",":w-1/3",":w-1/4"],display:[":hidden",":block"]}},enhancements:[{id:"dropdown",selector:"nav[data-dropdown]",description:"Dropdown menu from nav element",tags:["menu","interactive","navigation"]},{id:"toggle",selector:"label[data-toggle]",description:"Toggle switch from checkbox",tags:["switch","boolean","form"]},{id:"range",selector:'input[type="range"]',description:"Enhanced range slider with output",tags:["slider","input","form"]},{id:"required",selector:"form [required]",description:"Required field asterisk indicator",tags:["validation","form","accessibility"]},{id:"open-group",selector:"fieldset[role=group][data-open]",description:"Editable checkbox/radio group",tags:["form","dynamic","editable"]},{id:"working-button",selector:"button.btn-working, a.btn-working",description:"Button with loading spinner",tags:["loading","async","feedback"]},{id:"labeled-divider",selector:"hr[data-content]",description:"Horizontal rule with centered label",tags:["divider","separator","text"]}],categories:{feedback:{description:"User feedback and status indicators",primitives:["alert","badge"],components:["pds-toaster"]},form:{description:"Form inputs and controls",primitives:["button","fieldset","label-field","form"],components:["pds-upload","pds-form","pds-richtext","pds-calendar"]},layout:{description:"Page structure and content arrangement",patterns:["container","grid","flex","stack","section"],components:["pds-splitpanel","pds-scrollrow"]},navigation:{description:"Navigation and routing",primitives:["navigation"],components:["pds-tabstrip","pds-drawer"]},media:{description:"Images, icons, and visual content",primitives:["icon","figure","gallery"],components:["pds-icon"]},overlay:{description:"Modal and overlay content",primitives:["dialog"],components:["pds-drawer"]},data:{description:"Data display and tables",primitives:["table"]},theming:{description:"Colors, surfaces, and visual theming",primitives:["surface"]}},styles:{typography:["headings","body","code","links"],icons:{source:"svg",sets:["core","brand"]},interactive:["focus","hover","active","disabled"],states:["success","warning","danger","info","muted"]},searchRelations:{text:["typography","truncate","text-muted","text-primary","text-left","text-center","text-right","pds-richtext","heading","font","label","paragraph","content","ellipsis","overflow","input"],font:["typography","text","heading","font-size","font-weight","font-family"],type:["typography","text","font"],typography:["text","font","heading","truncate","text-muted"],heading:["typography","text","font-size","h1","h2","h3"],truncate:["text","overflow","ellipsis","clamp","nowrap","typography"],ellipsis:["truncate","text","overflow","clamp"],overflow:["truncate","scroll","hidden","text"],paragraph:["text","typography","content","body"],content:["text","typography","body","article"],form:["input","field","label","button","fieldset","pds-form","pds-upload","pds-richtext","pds-calendar","required","validation","submit"],input:["form","field","text","label","required","validation"],field:["form","input","label","required"],button:["btn","interactive","action","submit","form","btn-primary","btn-secondary","btn-working"],btn:["button","interactive","action"],toggle:["switch","checkbox","boolean","form","interactive"],switch:["toggle","checkbox","boolean"],slider:["range","input","form"],range:["slider","input","form"],checkbox:["toggle","form","fieldset","boolean"],radio:["fieldset","form","group"],select:["dropdown","form","input","menu"],upload:["file","pds-upload","form","drag-drop"],file:["upload","pds-upload","form"],modal:["dialog","pds-ask","overlay","popup","backdrop","pds-drawer","alert","confirm","prompt","lightbox"],dialog:["modal","pds-ask","overlay","popup","backdrop","alert","confirm","prompt"],popup:["modal","dialog","dropdown","popover","overlay","tooltip"],popover:["popup","tooltip","overlay"],overlay:["modal","dialog","backdrop","drawer","popup"],drawer:["pds-drawer","sidebar","panel","overlay","modal"],backdrop:["overlay","modal","dialog","blur"],confirm:["pds-ask","dialog","modal"],prompt:["pds-ask","dialog","modal","input"],ask:["pds-ask","dialog","confirm","prompt","modal"],dropdown:["menu","nav-dropdown","select","popover"],menu:["dropdown","navigation","nav","list"],nav:["navigation","menu","dropdown","tabs","links"],navigation:["nav","menu","tabs","pds-tabstrip","links","routing"],tabs:["pds-tabstrip","navigation","panels"],tab:["tabs","pds-tabstrip","panel"],link:["navigation","anchor","href","routing"],alert:["notification","feedback","message","status","toast","modal","dialog","pds-ask","confirm","warning","error","info","success","danger"],notification:["alert","toast","pds-toaster","feedback","message","popup"],toast:["pds-toaster","notification","alert","feedback","popup","snackbar"],feedback:["alert","notification","toast","status","badge","validation","error","success"],message:["alert","notification","feedback","dialog","toast"],status:["badge","alert","indicator","feedback","state"],error:["alert","danger","validation","feedback","warning"],success:["alert","feedback","badge","status","check"],warning:["alert","caution","feedback","status"],info:["alert","information","feedback","status"],danger:["alert","error","feedback","destructive","delete"],badge:["status","pill","tag","chip","indicator","label"],pill:["badge","tag","chip"],tag:["badge","pill","chip","label"],chip:["badge","pill","tag"],layout:["grid","flex","stack","container","gap","spacing","pds-splitpanel","section"],grid:["layout","columns","css-grid","table","gallery"],flex:["layout","flexbox","alignment","row","column"],stack:["layout","vertical","spacing","column","gap"],container:["wrapper","layout","max-width","centered"],gap:["spacing","margin","padding","layout"],spacing:["gap","margin","padding","section"],section:["spacing","layout","container","page"],split:["pds-splitpanel","resizable","panels","layout"],panel:["pds-splitpanel","drawer","sidebar","section"],card:["surface","container","elevated","content"],surface:["card","background","elevated","theming","color"],box:["card","container","surface"],elevated:["surface","shadow","card"],color:["palette","theme","surface","primary","secondary","accent"],colours:["color","palette","theme"],palette:["color","theme","tokens"],theme:["color","palette","dark","light","surface"],primary:["color","button","badge","surface"],secondary:["color","button","badge","surface"],accent:["color","highlight","surface"],border:["border-gradient","border-glow","outline","radius"],effect:["border-gradient","border-glow","shadow","glass","animation"],gradient:["border-gradient","color","background"],glow:["border-glow","effect","shadow"],shadow:["elevated","effect","depth","card"],radius:["rounded","border","corner"],rounded:["radius","border","corner"],glass:["liquid-glass","backdrop","blur","effect"],icon:["pds-icon","graphic","symbol","svg","phosphor"],image:["img","figure","gallery","media","picture"],img:["image","figure","gallery","media"],figure:["image","media","caption"],gallery:["images","grid","collection","media"],media:["image","icon","figure","gallery","video"],table:["data","grid","tabular","rows","columns"],data:["table","json","form","display"],editor:["pds-richtext","wysiwyg","text","content"],wysiwyg:["editor","pds-richtext","richtext"],richtext:["pds-richtext","editor","wysiwyg","text"],calendar:["pds-calendar","date","picker","datepicker"],date:["calendar","pds-calendar","picker","input"],datepicker:["calendar","date","pds-calendar"],scroll:["pds-scrollrow","carousel","horizontal","overflow"],carousel:["scroll","pds-scrollrow","slider","gallery"],accordion:["details","collapsible","expandable","disclosure"],collapsible:["accordion","details","expandable"],expandable:["accordion","collapsible","disclosure"],details:["accordion","summary","disclosure"],divider:["hr","separator","line","rule"],separator:["divider","hr","line"],hr:["divider","separator","horizontal-rule"],interactive:["hover","focus","active","disabled","button","link"],hover:["interactive","effect","state"],focus:["interactive","accessibility","state","outline"],disabled:["interactive","state","muted"],loading:["btn-working","spinner","async","progress"],spinner:["loading","btn-working","progress"],accessibility:["a11y","aria","focus","label","required"],a11y:["accessibility","aria","semantic"],aria:["accessibility","a11y","role"],required:["form","validation","asterisk","input"],validation:["form","required","error","feedback"],start:["getting-started","intro","overview","whatispds"],intro:["getting-started","overview","start","docs"],getting:["getting-started","start","intro"],overview:["intro","start","summary","layout-overview"],docs:["documentation","reference","guide"],primitive:["primitives"],component:["components"],enhancement:["enhancements"],foundation:["foundations","color","icon","typography","spacing","tokens"],utility:["utilities","text","backdrop","shadow","border","helper"],pattern:["patterns","layout","responsive","mobile-stack"]}};var ae=class r{static#i;static get instance(){return this.#i}#e;#r;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),r.#i=this,this.tokens=this.generateTokens(),this.options.debug&&this.options.log?.("debug","Generated tokens:",this.tokens),this.#ve(),typeof CSSStyleSheet<"u"?this.#$e():this.options.debug&&this.options.log?.("debug","[Generator] Skipping browser features (CSSStyleSheet not available)")}generateTokens(){let e=this.options.design||{};return{colors:this.#n(e.colors||{}),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#D(e.shape||{}),borderWidths:this.#P(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:this.#R(e.layers||{}),layout:this.#F(e.layout||{}),transitions:this.#I(e.behavior||{}),zIndex:this.#N(e.layers||{}),icons:this.#B(e.icons||{})}}#n(e){let{primary:t="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:n="#FFBF00",danger:c=null,info:p=null,darkMode:d={}}=e,l={primary:this.#o(t),secondary:this.#o(o),accent:this.#o(a),success:this.#o(s||this.#S(t)),warning:this.#o(n||a),danger:this.#o(c||this.#$(t)),info:this.#o(p||t),gray:this.#g(o),surface:this.#m(i)};return l.surface.fieldset=this.#C(l.surface),l.surfaceSmart=this.#w(l.surface),l.dark=this.#A(l,i,d),l.dark&&l.dark.surface&&(l.dark.surfaceSmart=this.#w(l.dark.surface)),l.interactive={light:{fill:this.#v(l.primary,4.5),text:l.primary[600]},dark:{fill:this.#v(l.dark.primary,4.5),text:this.#M(l.dark.primary,l.dark.surface.base,4.5)}},l}#o(e){let t=this.#s(e);return{50:this.#t(t.h,Math.max(t.s-10,10),Math.min(t.l+45,95)),100:this.#t(t.h,Math.max(t.s-5,15),Math.min(t.l+35,90)),200:this.#t(t.h,t.s,Math.min(t.l+25,85)),300:this.#t(t.h,t.s,Math.min(t.l+15,75)),400:this.#t(t.h,t.s,Math.min(t.l+5,65)),500:e,600:this.#t(t.h,t.s,Math.max(t.l-10,25)),700:this.#t(t.h,t.s,Math.max(t.l-20,20)),800:this.#t(t.h,t.s,Math.max(t.l-30,15)),900:this.#t(t.h,t.s,Math.max(t.l-40,10))}}#S(e){let t=this.#s(e);return this.#t(120,Math.max(t.s,60),45)}#$(e){let t=this.#s(e);return this.#t(0,Math.max(t.s,70),50)}#g(e){let t=this.#s(e),o=t.h,a=Math.min(t.s,10);return{50:this.#t(o,a,98),100:this.#t(o,a,95),200:this.#t(o,a,88),300:this.#t(o,a,78),400:this.#t(o,a,60),500:e,600:this.#t(o,Math.min(a+5,15),45),700:this.#t(o,Math.min(a+8,18),35),800:this.#t(o,Math.min(a+10,20),20),900:this.#t(o,Math.min(a+12,22),10)}}#m(e){let t=this.#s(e);return{base:e,subtle:this.#t(t.h,Math.max(t.s,2),Math.max(t.l-2,2)),elevated:this.#t(t.h,Math.max(t.s,3),Math.max(t.l-4,5)),sunken:this.#t(t.h,Math.max(t.s,4),Math.max(t.l-6,8)),overlay:this.#t(t.h,Math.max(t.s,2),Math.min(t.l+2,98)),inverse:this.#f(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#C(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#E(e.sunken,.05),overlay:e.elevated}}#E(e,t=.05){let o=this.#s(e),a=Math.max(o.l-o.l*t,5);return this.#t(o.h,o.s,a)}#f(e){let t=this.#s(e);if(t.l>50){let o=Math.min(t.s+5,25),a=Math.max(12-(t.l-50)*.1,8);return this.#t(t.h,o,a)}else{let o=Math.max(t.s-10,5),a=Math.min(85+(50-t.l)*.3,95);return this.#t(t.h,o,a)}}#A(e,t="#ffffff",o={}){let a=o.background?o.background:this.#f(t),i=this.#m(a),s=o.primary?this.#o(o.primary):this.#c(e.primary);return{surface:{...i,fieldset:this.#L(i)},primary:s,secondary:o.secondary?this.#o(o.secondary):this.#c(e.secondary),accent:o.accent?this.#o(o.accent):this.#c(e.accent),gray:o.secondary?this.#g(o.secondary):e.gray,success:this.#c(e.success),info:this.#c(e.info),warning:this.#c(e.warning),danger:this.#c(e.danger)}}#p(e){let t=String(e||"").replace("#",""),o=t.length===3?t.split("").map(i=>i+i).join(""):t,a=parseInt(o,16);return{r:a>>16&255,g:a>>8&255,b:a&255}}#h(e){let{r:t,g:o,b:a}=this.#p(e),i=[t/255,o/255,a/255].map(s=>s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4));return .2126*i[0]+.7152*i[1]+.0722*i[2]}#u(e,t){let o=this.#h(e),a=this.#h(t),i=Math.max(o,a),s=Math.min(o,a);return(i+.05)/(s+.05)}#b(e,t=4.5){if(!e)return"#000000";let o="#ffffff",a="#000000",i=this.#u(e,o);if(i>=t)return o;let s=this.#u(e,a);return s>=t||s>i?a:o}#y(e,t=1){let{r:o,g:a,b:i}=this.#p(e);return`rgba(${o}, ${a}, ${i}, ${t})`}#T(e,t,o=.5){let a=this.#p(e),i=this.#p(t),s=Math.round(a.r+(i.r-a.r)*o),n=Math.round(a.g+(i.g-a.g)*o),c=Math.round(a.b+(i.b-a.b)*o);return this.#z(s,n,c)}#z(e,t,o){let a=i=>{let s=Math.max(0,Math.min(255,Math.round(i))).toString(16);return s.length===1?"0"+s:s};return`#${a(e)}${a(t)}${a(o)}`}#L(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#x(e.elevated,.08),sunken:e.elevated,overlay:this.#x(e.overlay,.05)}}#M(e={},t="#000000",o=4.5){let a=["600","700","800","500","400","900","300","200"],i={shade:null,color:null,ratio:0};for(let s of a){let n=e?.[s];if(!n||typeof n!="string")continue;let c=this.#u(n,t);if(c>i.ratio&&(i={shade:s,color:n,ratio:c}),c>=o)return n}return i.color||e?.["600"]||e?.["500"]}#v(e={},t=4.5){let o=["600","700","800","500","400","900"],a={shade:null,color:null,ratio:0};for(let i of o){let s=e?.[i];if(!s||typeof s!="string")continue;let n=this.#u(s,"#ffffff");if(n>a.ratio&&(a={shade:i,color:s,ratio:n}),n>=t)return s}return a.color||e?.["600"]||e?.["500"]}#w(e){let t={};return Object.entries(e).forEach(([o,a])=>{if(!a||typeof a!="string"||!a.startsWith("#"))return;let i=this.#h(a)<.5,s=this.#b(a,4.5),n=this.#b(a,3),c=this.#T(s,a,.4),p=s,d=c,l=i?"#ffffff":"#000000",h=i?.25:.1,g=this.#y(l,h),y=i?"#ffffff":"#000000",k=i?.15:.1,f=this.#y(y,k);t[o]={bg:a,text:s,textSecondary:n,textMuted:c,icon:p,iconSubtle:d,shadow:g,border:f,scheme:i?"dark":"light"}}),t}#x(e,t=.05){let o=this.#s(e),a=Math.min(o.l+(100-o.l)*t,95);return this.#t(o.h,o.s,a)}#c(e){let t={};return Object.entries({50:{source:"900",dimFactor:.8},100:{source:"800",dimFactor:.8},200:{source:"700",dimFactor:.8},300:{source:"600",dimFactor:.8},400:{source:"500",dimFactor:.85},500:{source:"400",dimFactor:.85},600:{source:"300",dimFactor:.85},700:{source:"200",dimFactor:.85},800:{source:"100",dimFactor:.95},900:{source:"50",dimFactor:.95}}).forEach(([a,i])=>{let s=e[i.source];t[a]=this.#_(s,i.dimFactor)}),t}#_(e,t=.8){let o=this.#s(e),a=Math.max(o.s*t,5),i=Math.max(o.l*t,5);return this.#t(o.h,a,i)}generateSpacingTokens(e){let{baseUnit:t=4,scaleRatio:o=1.25,maxSpacingSteps:a=12}=e,i=Number.isFinite(Number(t))?Number(t):4,s=Math.min(Number.isFinite(Number(a))?Number(a):12,12),n={0:"0"};for(let c=1;c<=s;c++)n[c]=`${i*c}px`;return n}#D(e){let{radiusSize:t="medium",customRadius:o=null}=e,a;o!=null?a=o:typeof t=="number"?a=t:typeof t=="string"?a=u.RadiusSizes[t]??u.RadiusSizes.medium:a=u.RadiusSizes.medium;let i=Number.isFinite(Number(a))?Number(a):u.RadiusSizes.medium;return{none:"0",xs:`${Number.isFinite(i*.25)?Math.round(i*.25):0}px`,sm:`${Number.isFinite(i*.5)?Math.round(i*.5):0}px`,md:`${i}px`,lg:`${Number.isFinite(i*1.5)?Math.round(i*1.5):0}px`,xl:`${Number.isFinite(i*2)?Math.round(i*2):0}px`,full:"9999px"}}#P(e){let{borderWidth:t="medium"}=e,o;return typeof t=="number"?o=t:typeof t=="string"?o=u.BorderWidths[t]??u.BorderWidths.medium:o=u.BorderWidths.medium,{hairline:`${u.BorderWidths.hairline}px`,thin:`${u.BorderWidths.thin}px`,medium:`${u.BorderWidths.medium}px`,thick:`${u.BorderWidths.thick}px`}}generateTypographyTokens(e){let{fontFamilyHeadings:t="system-ui, -apple-system, sans-serif",fontFamilyBody:o="system-ui, -apple-system, sans-serif",fontFamilyMono:a='ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',baseFontSize:i=16,fontScale:s=1.25,fontWeightLight:n=u.FontWeights.light,fontWeightNormal:c=u.FontWeights.normal,fontWeightMedium:p=u.FontWeights.medium,fontWeightSemibold:d=u.FontWeights.semibold,fontWeightBold:l=u.FontWeights.bold,lineHeightTight:h=u.LineHeights.tight,lineHeightNormal:g=u.LineHeights.normal,lineHeightRelaxed:y=u.LineHeights.relaxed}=e,k=Number.isFinite(Number(i))?Number(i):16,f=Number.isFinite(Number(s))?Number(s):1.25;return{fontFamily:{headings:t,body:o,mono:a},fontSize:{xs:`${Math.round(k/Math.pow(f,2))}px`,sm:`${Math.round(k/f)}px`,base:`${k}px`,lg:`${Math.round(k*f)}px`,xl:`${Math.round(k*Math.pow(f,2))}px`,"2xl":`${Math.round(k*Math.pow(f,3))}px`,"3xl":`${Math.round(k*Math.pow(f,4))}px`,"4xl":`${Math.round(k*Math.pow(f,5))}px`},fontWeight:{light:n?.toString()||"300",normal:c?.toString()||"400",medium:p?.toString()||"500",semibold:d?.toString()||"600",bold:l?.toString()||"700"},lineHeight:{tight:h?.toString()||"1.25",normal:g?.toString()||"1.5",relaxed:y?.toString()||"1.75"}}}#R(e){let{baseShadowOpacity:t=.1,shadowBlurMultiplier:o=1,shadowOffsetMultiplier:a=1}=e,i=`rgba(0, 0, 0, ${t})`,s=`rgba(0, 0, 0, ${t*.5})`;return{sm:`0 ${1*a}px ${2*o}px 0 ${s}`,base:`0 ${1*a}px ${3*o}px 0 ${i}, 0 ${1*a}px ${2*o}px 0 ${s}`,md:`0 ${4*a}px ${6*o}px ${-1*a}px ${i}, 0 ${2*a}px ${4*o}px ${-1*a}px ${s}`,lg:`0 ${10*a}px ${15*o}px ${-3*a}px ${i}, 0 ${4*a}px ${6*o}px ${-2*a}px ${s}`,xl:`0 ${20*a}px ${25*o}px ${-5*a}px ${i}, 0 ${10*a}px ${10*o}px ${-5*a}px ${s}`,inner:`inset 0 ${2*a}px ${4*o}px 0 ${s}`}}#F(e){let{maxWidth:t=1200,containerPadding:o=16,breakpoints:a={sm:640,md:768,lg:1024,xl:1280}}=e,i=this.#k(e);return{maxWidth:this.#a(t,"1200px"),maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#a(o,"16px"),breakpoints:{sm:this.#a(a.sm,"640px"),md:this.#a(a.md,"768px"),lg:this.#a(a.lg,"1024px"),xl:this.#a(a.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#k(e={}){let t={sm:640,md:768,lg:1024,xl:1280},{maxWidths:o={},maxWidth:a=1200,containerPadding:i=16,breakpoints:s=t}=e||{},n=this.#l(i,16),c=this.#l(a,t.xl),p={sm:this.#l(s.sm,t.sm),md:this.#l(s.md,t.md),lg:this.#l(s.lg,t.lg),xl:this.#l(s.xl,t.xl)},d=h=>h?Math.max(320,h-n*2):c,l={sm:Math.min(c,d(p.sm)),md:Math.min(c,d(p.md)),lg:Math.min(c,d(p.lg)),xl:Math.max(320,c)};return{sm:this.#a(o.sm,`${l.sm}px`),md:this.#a(o.md,`${l.md}px`),lg:this.#a(o.lg,`${l.lg}px`),xl:this.#a(o.xl,`${l.xl}px`)}}#a(e,t){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:t}#l(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let o=parseFloat(e);if(Number.isFinite(o))return o}return t}#I(e){let{transitionSpeed:t=u.TransitionSpeeds.normal,animationEasing:o=u.AnimationEasings["ease-out"]}=e,a;return typeof t=="number"?a=t:typeof t=="string"&&u.TransitionSpeeds[t]?a=u.TransitionSpeeds[t]:a=u.TransitionSpeeds.normal,{fast:`${Math.round(a*.6)}ms`,normal:`${a}ms`,slow:`${Math.round(a*1.4)}ms`}}#N(e){let{baseZIndex:t=1e3,zIndexStep:o=10}=e;return{dropdown:t.toString(),sticky:(t+o*2).toString(),fixed:(t+o*3).toString(),modal:(t+o*4).toString(),drawer:(t+o*5).toString(),popover:(t+o*6).toString(),tooltip:(t+o*7).toString(),notification:(t+o*8).toString()}}#B(e){let{set:t="phosphor",weight:o="regular",defaultSize:a=24,sizes:i={xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64},spritePath:s="/assets/pds/icons/pds-icons.svg",externalPath:n="/assets/img/icons/"}=e;return{set:t,weight:o,defaultSize:`${a}px`,sizes:Object.fromEntries(Object.entries(i).map(([c,p])=>[c,`${p}px`])),spritePath:s,externalPath:n}}#O(e){let t=[];t.push(` /* Colors */
|
|
1
|
+
var kr=Object.defineProperty;var Sr=(r,e)=>()=>(r&&(e=r(r=0)),e);var xt=(r,e)=>{for(var t in e)kr(r,t,{get:e[t],enumerable:!0})};var zt={};xt(zt,{AutoDefiner:()=>Ze});async function jr(...r){let e={};r.length&&typeof r[r.length-1]=="object"&&(e=r.pop()||{});let t=r,{baseURL:o,mapper:a=p=>`${p}.js`,onError:i=(p,d)=>console.error(`[defineWebComponents] ${p}:`,d)}=e,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),n=p=>p.toLowerCase().replace(/(^|-)([a-z])/g,(d,c,u)=>u.toUpperCase()),l=async p=>{try{if(customElements.get(p))return{tag:p,status:"already-defined"};let d=a(p),u=await import(d instanceof URL?d.href:new URL(d,s).href),g=u?.default??u?.[n(p)];if(!g){if(customElements.get(p))return{tag:p,status:"self-defined"};throw new Error(`No export found for ${p}. Expected default export or named export "${n(p)}".`)}return customElements.get(p)?{tag:p,status:"race-already-defined"}:(customElements.define(p,g),{tag:p,status:"defined"})}catch(d){throw i(p,d),d}};return Promise.all(t.map(l))}var Ze,Lt=Sr(()=>{Ze=class{constructor(e={}){let{baseURL:t,mapper:o,onError:a,predicate:i=()=>!0,attributeModule:s="data-module",root:n=document,scanExisting:l=!0,debounceMs:p=16,observeShadows:d=!0,enhancers:c=[],patchAttachShadow:u=!0}=e,g=new Set,b=new Set,y=new Set,f=new Map,$=new WeakMap,Z=new WeakMap,T=0,j=!1,D=null,ce=v=>{if(!v||!c.length)return;let x=Z.get(v);x||(x=new Set,Z.set(v,x));for(let w of c)if(!(!w.selector||!w.run)&&!x.has(w.selector))try{v.matches&&v.matches(w.selector)&&(w.run(v),x.add(w.selector))}catch(M){console.warn(`[AutoDefiner] Error applying enhancer for selector "${w.selector}":`,M)}},Q=(v,x)=>{if(!j&&!(!v||!v.includes("-"))&&!customElements.get(v)&&!b.has(v)&&!y.has(v)){if(x&&x.getAttribute){let w=x.getAttribute(s);w&&!f.has(v)&&f.set(v,w)}g.add(v),ve()}},ve=()=>{T||(T=setTimeout(X,p))},L=v=>{if(v){if(v.nodeType===1){let x=v,w=x.tagName?.toLowerCase();w&&w.includes("-")&&!customElements.get(w)&&i(w,x)&&Q(w,x),ce(x),d&&x.shadowRoot&&H(x.shadowRoot)}v.querySelectorAll&&v.querySelectorAll("*").forEach(x=>{let w=x.tagName?.toLowerCase();w&&w.includes("-")&&!customElements.get(w)&&i(w,x)&&Q(w,x),ce(x),d&&x.shadowRoot&&H(x.shadowRoot)})}},H=v=>{if(!v||$.has(v))return;L(v);let x=new MutationObserver(w=>{for(let M of w)M.addedNodes?.forEach(ee=>{L(ee)}),M.type==="attributes"&&M.target&&L(M.target)});x.observe(v,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[s,...c.map(w=>w.selector).filter(w=>w.startsWith("data-"))]}),$.set(v,x)};async function X(){if(clearTimeout(T),T=0,!g.size)return;let v=Array.from(g);g.clear(),v.forEach(x=>b.add(x));try{let x=w=>f.get(w)??(o?o(w):`${w}.js`);await jr(...v,{baseURL:t,mapper:x,onError:(w,M)=>{y.add(w),a?.(w,M)}})}catch{}finally{v.forEach(x=>b.delete(x))}}let A=n===document?document.documentElement:n,R=new MutationObserver(v=>{for(let x of v)x.addedNodes?.forEach(w=>{L(w)}),x.type==="attributes"&&x.target&&L(x.target)});if(R.observe(A,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[s,...c.map(v=>v.selector).filter(v=>v.startsWith("data-"))]}),d&&u&&Element.prototype.attachShadow){let v=Element.prototype.attachShadow;Element.prototype.attachShadow=function(w){let M=v.call(this,w);if(w&&w.mode==="open"){H(M);let ee=this.tagName?.toLowerCase();ee&&ee.includes("-")&&!customElements.get(ee)&&Q(ee,this)}return M},D=()=>Element.prototype.attachShadow=v}return l&&L(A),{stop(){j=!0,R.disconnect(),D&&D(),T&&(clearTimeout(T),T=0),$.forEach(v=>v.disconnect())},flush:X}}static async define(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let o=e,{baseURL:a,mapper:i=d=>`${d}.js`,onError:s=(d,c)=>console.error(`[defineWebComponents] ${d}:`,c)}=t,n=a?new URL(a,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),l=d=>d.toLowerCase().replace(/(^|-)([a-z])/g,(c,u,g)=>g.toUpperCase()),p=async d=>{try{if(customElements.get(d))return{tag:d,status:"already-defined"};let c=i(d),g=await import(c instanceof URL?c.href:new URL(c,n).href),b=g?.default??g?.[l(d)];if(!b){if(customElements.get(d))return{tag:d,status:"self-defined"};throw new Error(`No export found for ${d}. Expected default export or named export "${l(d)}".`)}return customElements.get(d)?{tag:d,status:"race-already-defined"}:(customElements.define(d,b),{tag:d,status:"defined"})}catch(c){throw s(d,c),c}};return Promise.all(o.map(p))}}});var qe=class{constructor(){this._mode="static",this._staticPaths={tokens:"/assets/pds/styles/pds-tokens.css.js",primitives:"/assets/pds/styles/pds-primitives.css.js",components:"/assets/pds/styles/pds-components.css.js",utilities:"/assets/pds/styles/pds-utilities.css.js",styles:"/assets/pds/styles/pds-styles.css.js"}}setLiveMode(){this._mode="live"}setStaticMode(e={}){this._mode="static",this._staticPaths={...this._staticPaths,...e}}async getStylesheet(e){if(this._mode==="live")return null;try{return(await import(this._staticPaths[e]))[e]}catch(t){console.error(`[PDS Registry] Failed to load static ${e}:`,t),console.error(`[PDS Registry] Looking for: ${this._staticPaths[e]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let o=new CSSStyleSheet;return o.replaceSync("/* Failed to load "+e+" */"),o}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},te=new qe;function $r(r){try{if(typeof document>"u")return;if(typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype){let o=new CSSStyleSheet;o.replaceSync(r),o._pds=!0;let a=(document.adoptedStyleSheets||[]).filter(i=>i._pds!==!0);document.adoptedStyleSheets=[...a,o];return}let e="pds-runtime-stylesheet",t=document.getElementById(e);if(!t){t=document.createElement("style"),t.id=e,t.type="text/css";let o=document.head||document.getElementsByTagName("head")[0];o?o.appendChild(t):document.documentElement.appendChild(t)}t.textContent=r}catch(e){console.warn("installRuntimeStyles failed:",e)}}function kt(r){let e=r;if(!e||typeof e!="object"){console.error("[Runtime] applyStyles requires an explicit generator instance in live mode");return}let t=e.layeredCSS||e.css||"";if(!t){e.options?.log?.("warn","[Runtime] No CSS available on generator to apply");return}$r(t)}async function St(r,e=[],t=null){try{let o=t?.primitivesStylesheet?t.primitivesStylesheet:await te.getStylesheet("primitives");r.adoptedStyleSheets=[o,...e]}catch(o){let a=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${a}> failed to adopt primitives:`,o),r.adoptedStyleSheets=e}}async function $t(r,e=["primitives"],t=[],o=null){try{let i=(await Promise.all(e.map(async s=>{if(o)switch(s){case"tokens":return o.tokensStylesheet;case"primitives":return o.primitivesStylesheet;case"components":return o.componentsStylesheet;case"utilities":return o.utilitiesStylesheet;default:break}return te.getStylesheet(s)}))).filter(s=>s!==null);r.adoptedStyleSheets=[...i,...t]}catch(a){let i=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${i}> failed to adopt layers:`,a),r.adoptedStyleSheets=t}}function Ct(r){let e=new CSSStyleSheet;return e.replaceSync(r),e}var h={FontWeights:{light:300,normal:400,medium:500,semibold:600,bold:700},LineHeights:{tight:1.25,normal:1.5,relaxed:1.75},BorderWidths:{hairline:.5,thin:1,medium:2,thick:3},RadiusSizes:{none:0,small:4,medium:8,large:16,xlarge:24,xxlarge:32},ShadowDepths:{none:"none",light:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",medium:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",deep:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",extreme:"0 25px 50px -12px rgba(0, 0, 0, 0.25)"},TransitionSpeeds:{fast:150,normal:250,slow:350},AnimationEasings:{linear:"linear",ease:"ease","ease-in":"ease-in","ease-out":"ease-out","ease-in-out":"ease-in-out",bounce:"cubic-bezier(0.68, -0.55, 0.265, 1.55)"},TouchTargetSizes:{compact:36,standard:44,comfortable:48,spacious:56},LinkStyles:{inline:"inline",block:"block",button:"button"},FocusStyles:{ring:"ring",outline:"outline",border:"border",glow:"glow"},TabSizes:{compact:2,standard:4,wide:8},SelectIcons:{chevron:"chevron",arrow:"arrow",caret:"caret",none:"none"},IconSizes:{xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64,"3xl":96}};var we={mode:"live",preset:"default",autoDefine:{predefine:["pds-icon","pds-drawer","pds-toaster"]},log(r,e,...t){console[r](e,...t)}};var Ve={};xt(Ve,{deepMerge:()=>W,fragmentFromTemplateLike:()=>Ge,isObject:()=>xe});function xe(r){return r&&typeof r=="object"&&!Array.isArray(r)}function W(r,e){let t={...r};return xe(r)&&xe(e)&&Object.keys(e).forEach(o=>{xe(e[o])?o in r?t[o]=W(r[o],e[o]):Object.assign(t,{[o]:e[o]}):Object.assign(t,{[o]:e[o]})}),t}function Ge(r){let e=Array.isArray(r?.strings)?r.strings:[],t=Array.isArray(r?.values)?r.values:[],o=new Set,a=[],i=/(\s)(\.[\w-]+)=\s*$/;for(let c=0;c<e.length;c+=1){let u=e[c]??"",g=u.match(i);if(g&&c<t.length){let y=g[2].slice(1),f=`pds-val-${c}`;u=u.replace(i,`$1data-pds-prop="${y}:${f}"`),o.add(c)}a.push(u),c<t.length&&!o.has(c)&&a.push(`<!--pds-val-${c}-->`)}let s=document.createElement("template");s.innerHTML=a.join("");let n=(c,u)=>{let g=c.parentNode;if(!g)return;if(u==null){g.removeChild(c);return}let b=y=>{if(y!=null){if(y instanceof Node){g.insertBefore(y,c);return}if(Array.isArray(y)){y.forEach(f=>b(f));return}g.insertBefore(document.createTextNode(String(y)),c)}};b(u),g.removeChild(c)},l=document.createTreeWalker(s.content,NodeFilter.SHOW_COMMENT),p=[];for(;l.nextNode();){let c=l.currentNode;c?.nodeValue?.startsWith("pds-val-")&&p.push(c)}return p.forEach(c=>{let u=Number(c.nodeValue.replace("pds-val-",""));n(c,t[u])}),s.content.querySelectorAll("*").forEach(c=>{let u=c.getAttribute("data-pds-prop");if(!u)return;let[g,b]=u.split(":"),y=Number(String(b).replace("pds-val-",""));g&&Number.isInteger(y)&&(c[g]=t[y]),c.removeAttribute("data-pds-prop")}),s.content}function Je(r,e){if(e==null)return;if(typeof e=="object"&&Array.isArray(e.strings)&&Array.isArray(e.values)){r.appendChild(Ge(e));return}if(e instanceof Node){r.appendChild(e);return}if(Array.isArray(e)){e.forEach(o=>Je(r,o));return}let t=typeof e=="string"?e:String(e);r.appendChild(document.createTextNode(t))}async function At(r,e={}){return e={...{title:"Confirm",type:"confirm",buttons:{ok:{name:"OK",primary:!0},cancel:{name:"Cancel",cancel:!0}}},...e},new Promise(o=>{let a=document.createElement("dialog");we.options?.liquidGlassEffects&&a.classList.add("liquid-glass"),e.size&&a.classList.add(`dialog-${e.size}`),e.type&&a.classList.add(`dialog-${e.type}`),e.class&&(Array.isArray(e.class)?a.classList.add(...e.class):a.classList.add(e.class)),e.maxHeight&&a.style.setProperty("--dialog-max-height",e.maxHeight);let i=Object.entries(e.buttons).map(([n,l])=>{let p=l.primary?"btn-primary btn-sm":"btn-outline btn-sm";return`<button type="${l.cancel?"button":"submit"}" class="${p}" value="${n}">${l.name}</button>`});if(e.useForm){let n=document.createElement("div");Je(n,r);let l=n.querySelector("form");if(l){a.innerHTML=`
|
|
2
|
+
<header>
|
|
3
|
+
<h2>${e.title}</h2>
|
|
4
|
+
</header>
|
|
5
|
+
`;let p=document.createElement("article");for(p.className="dialog-body";l.firstChild;)p.appendChild(l.firstChild);l.appendChild(p);let d=document.createElement("footer");d.innerHTML=i.join(""),l.appendChild(d),a.appendChild(l)}else a.innerHTML=`
|
|
6
|
+
<header>
|
|
7
|
+
<h2>${e.title}</h2>
|
|
8
|
+
</header>
|
|
9
|
+
<article id="msg-container"></article>
|
|
10
|
+
<footer>
|
|
11
|
+
${i.join("")}
|
|
12
|
+
</footer>
|
|
13
|
+
`,a.querySelector("#msg-container").appendChild(n)}else{a.innerHTML=`
|
|
14
|
+
<form method="dialog">
|
|
15
|
+
<header>
|
|
16
|
+
<h2>${e.title}</h2>
|
|
17
|
+
</header>
|
|
18
|
+
|
|
19
|
+
<article id="msg-container"></article>
|
|
20
|
+
|
|
21
|
+
<footer>
|
|
22
|
+
${i.join("")}
|
|
23
|
+
</footer>
|
|
24
|
+
</form>
|
|
25
|
+
`;let n=a.querySelector("#msg-container");Je(n,r)}a.addEventListener("click",n=>{n.target.closest('button[value="cancel"]')&&(a.close(),o(!1))});let s=()=>{let n=a.querySelector("form");n?n.addEventListener("submit",l=>{l.preventDefault();let p;e.useForm&&l.submitter.value==="ok"?(console.log("Found form:",n),console.log("Form elements:",n?Array.from(n.elements):"no form"),p=new FormData(n),console.log("FormData entries:",Array.from(p.entries()))):p=l.submitter.value==="ok",a.close(),o(p)}):requestAnimationFrame(s)};s(),a.addEventListener("close",()=>{setTimeout(()=>a.remove(),200)}),document.body.appendChild(a),typeof e.rendered=="function"&&e.rendered(a),a.showModal()})}async function Cr(){let r=document.querySelector("pds-toaster");return r||(r=document.createElement("pds-toaster"),document.body.appendChild(r),await customElements.whenDefined("pds-toaster")),r}async function P(r,e={}){return(await Cr()).toast(r,e)}P.success=async function(r,e={}){return P(r,{...e,type:"success"})};P.error=async function(r,e={}){return P(r,{...e,type:"error"})};P.warning=async function(r,e={}){return P(r,{...e,type:"warning"})};P.info=async function(r,e={}){return P(r,{...e,type:"information"})};var Ar=[{selector:".accordion"},{selector:"nav[data-dropdown]"},{selector:"label[data-toggle]"},{selector:'input[type="range"]'},{selector:"form[data-required]"},{selector:"fieldset[role=group][data-open]"},{selector:"[data-clip]"},{selector:"button, a[class*='btn-']"}];function Er(r){r.dataset.enhancedAccordion||(r.dataset.enhancedAccordion="true",r.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===r&&r.querySelectorAll(":scope > details[open]").forEach(t=>{t!==e.target&&(t.open=!1)})},!0))}function Tr(r){if(r.dataset.enhancedDropdown)return;r.dataset.enhancedDropdown="true";let e=r.lastElementChild;if(!e)return;let t=r.querySelector("[data-dropdown-toggle]")||r.querySelector("button");t&&!t.hasAttribute("type")&&t.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`),e.tagName?.toLowerCase()==="menu"&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),t&&(t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-expanded","false"));let a=()=>{let l=(r.getAttribute("data-mode")||"auto").toLowerCase();if(l==="up"||l==="down")return l;let p=r.getBoundingClientRect(),d=Math.max(0,window.innerHeight-p.bottom);return Math.max(0,p.top)>d?"up":"down"},i=()=>{r.dataset.dropdownDirection=a(),e.setAttribute("aria-hidden","false"),t?.setAttribute("aria-expanded","true")},s=()=>{e.setAttribute("aria-hidden","true"),t?.setAttribute("aria-expanded","false")},n=()=>{e.getAttribute("aria-hidden")==="false"?s():i()};t?.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),n()}),document.addEventListener("click",l=>{r.contains(l.target)||s()}),r.addEventListener("keydown",l=>{l.key==="Escape"&&(s(),t?.focus())}),r.addEventListener("focusout",l=>{(!l.relatedTarget||!r.contains(l.relatedTarget))&&s()})}function zr(r){if(r.dataset.enhancedToggle)return;r.dataset.enhancedToggle="true";let e=r.querySelector('input[type="checkbox"]');if(!e)return;r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.setAttribute("role","switch"),r.setAttribute("aria-checked",e.checked?"true":"false");let t=document.createElement("span");t.className="toggle-switch",t.setAttribute("role","presentation"),t.setAttribute("aria-hidden","true");let o=document.createElement("span");o.className="toggle-knob",t.appendChild(o),r.insertBefore(t,e.nextSibling);let a=()=>{r.setAttribute("aria-checked",e.checked?"true":"false")},i=()=>{e.disabled||(e.checked=!e.checked,a(),e.dispatchEvent(new Event("change",{bubbles:!0})))};r.addEventListener("click",s=>{s.preventDefault(),i()}),r.addEventListener("keydown",s=>{(s.key===" "||s.key==="Enter")&&(s.preventDefault(),i())}),e.addEventListener("change",a)}function Lr(r){if(r.dataset.enhancedRange)return;let e=r.closest("label"),t=e?.classList.contains("range-output"),o=r.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(r.id=o,t){let i=e.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=document.createElement("span");s.className="range-output-wrapper",s.style.display="flex",s.style.justifyContent="space-between",s.style.alignItems="center";let n=document.createElement("span");n.textContent=i.textContent,s.appendChild(n);let l=document.createElement("output");l.id=a,l.setAttribute("for",o),l.style.color="var(--surface-text-secondary, var(--color-text-secondary))",l.style.fontSize="0.875rem",l.textContent=r.value,s.appendChild(l),i.textContent="",i.appendChild(s);let p=()=>{l.textContent=r.value};r.addEventListener("input",p)}}else{let i=r.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",r.parentNode?.insertBefore(i,r),i.appendChild(r)),i.style.position="relative";let s=document.createElement("output");s.id=a,s.setAttribute("for",o),s.className="range-bubble",s.setAttribute("aria-live","polite"),i.appendChild(s);let n=()=>{let d=parseFloat(r.min)||0,c=parseFloat(r.max)||100,u=parseFloat(r.value),g=(u-d)/(c-d);s.style.left=`calc(${g*100}% )`,s.textContent=String(u)},l=()=>s.classList.add("visible"),p=()=>s.classList.remove("visible");r.addEventListener("input",n),r.addEventListener("pointerdown",l),r.addEventListener("pointerup",p),r.addEventListener("pointerleave",p),r.addEventListener("focus",l),r.addEventListener("blur",p),n()}r.dataset.enhancedRange="1"}function Mr(r){if(r.dataset.enhancedRequired)return;r.dataset.enhancedRequired="true";let e=t=>{let o=t.closest("label");if(!o||o.querySelector(".required-asterisk"))return;let a=document.createElement("span");a.classList.add("required-asterisk"),a.textContent="*",a.style.marginLeft="4px",o.querySelector("span").appendChild(a);let i=t.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent="* Required fields",i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};r.querySelectorAll("[required]").forEach(t=>{e(t)})}function _r(r){if(r.dataset.enhancedOpenGroup)return;r.dataset.enhancedOpenGroup="true",r.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder="Add item...",e.classList.add("input-text","input-sm"),e.style.width="auto";let t=r.querySelector('input[type="radio"], input[type="checkbox"]');r.appendChild(e),e.addEventListener("keydown",o=>{if(o.key==="Enter"||o.key==="Tab"){let a=e.value.trim();if(a){o.preventDefault();let i=t.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,n=document.createElement("label"),l=document.createElement("span");l.setAttribute("data-label",""),l.textContent=a;let p=document.createElement("input");p.type=i,p.name=t.name||r.getAttribute("data-name")||"open-group",p.value=a,p.id=s,n.appendChild(l),n.appendChild(p),r.insertBefore(n,e),e.value=""}}else if(o.key==="Backspace"&&e.value===""){o.preventDefault();let a=r.querySelectorAll("label");a.length>0&&a[a.length-1].remove()}})}function Dr(r){if(r.dataset.enhancedClip)return;r.dataset.enhancedClip="true",r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.hasAttribute("role")||r.setAttribute("role","button");let e=()=>{let o=r.getAttribute("data-clip-open")==="true";r.setAttribute("aria-expanded",o?"true":"false")},t=()=>{let o=r.getAttribute("data-clip-open")==="true";r.setAttribute("data-clip-open",o?"false":"true"),e()};r.addEventListener("click",o=>{o.defaultPrevented||t()}),r.addEventListener("keydown",o=>{(o.key===" "||o.key==="Enter")&&(o.preventDefault(),t())}),e()}function Pr(r){if(r.dataset.enhancedBtnWorking)return;r.dataset.enhancedBtnWorking="true";let e=null,t=!1;new MutationObserver(a=>{a.forEach(i=>{if(i.attributeName==="class"){let s=r.classList.contains("btn-working"),n=r.querySelector("pds-icon");if(s)if(n)e||(e=n.getAttribute("icon")),n.setAttribute("icon","circle-notch");else{let l=document.createElement("pds-icon");l.setAttribute("icon","circle-notch"),l.setAttribute("size","sm"),r.insertBefore(l,r.firstChild),t=!0}else i.oldValue?.includes("btn-working")&&n&&(t?(n.remove(),t=!1):e&&(n.setAttribute("icon",e),e=null))}})}).observe(r,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var Rr=new Map([[".accordion",Er],["nav[data-dropdown]",Tr],["label[data-toggle]",zr],['input[type="range"]',Lr],["form[data-required]",Mr],["fieldset[role=group][data-open]",_r],["[data-clip]",Dr],["button, a[class*='btn-']",Pr]]),Ke=Ar.map(r=>({...r,run:Rr.get(r.selector)||(()=>{})}));var Tt="pds",Fr=/^([a-z][a-z0-9+\-.]*:)?\/\//i,Et=/^[a-z]:/i;function le(r=""){return r.endsWith("/")?r:`${r}/`}function Ir(r="",e=Tt){let t=r.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(t)?t:`${t}/${e}`}function Nr(r){return r.replace(/^\.\/+/,"")}function Br(r){return Et.test(r)?r.replace(Et,"").replace(/^\/+/,""):r}function Or(r){return r.startsWith("public/")?r.substring(7):r}function Ye(r,e={}){let t=e.segment||Tt,o=e.defaultRoot||`/assets/${t}/`,a=r?.public&&r.public?.root||r?.static&&r.static?.root||null;if(!a||typeof a!="string")return le(o);let i=a.trim();return i?(i=i.replace(/\\/g,"/"),i=Ir(i,t),i=le(i),Fr.test(i)?i:(i=Nr(i),i=Br(i),i.startsWith("/")||(i=Or(i),i.startsWith("/")||(i=`/${i}`),i=i.replace(/\/+/g,(s,n)=>n===0?s:"/")),le(i))):le(o)}var Hr=/^[a-z][a-z0-9+\-.]*:\/\//i,de=(()=>{try{return import.meta.url}catch{return}})(),ke=r=>typeof r=="string"&&r.length&&!r.endsWith("/")?`${r}/`:r;function Se(r,e={}){if(!r||Hr.test(r))return r;let{preferModule:t=!0}=e,o=()=>{if(!de)return null;try{return new URL(r,de).href}catch{return null}},a=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(r,window.location.origin).href}catch{return null}};return(t?o()||a():a()||o())||r}var Mt=(()=>{if(de)try{let r=new URL(de);if(/\/public\/assets\/js\//.test(r.pathname))return new URL("../pds/",de).href}catch{return}})(),_t=!1;function Dt(r){_t||typeof document>"u"||(_t=!0,r.addEventListener("pds:ready",e=>{let t=e.detail?.mode;t&&document.documentElement.classList.add(`pds-${t}`,"pds-ready")}))}function Pt(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[o,a]of Object.entries(e))a&&typeof a=="object"&&!Array.isArray(a)?t[o]=Pt(t[o]&&typeof t[o]=="object"?t[o]:{},a):t[o]=a;return t}function Qe(r=""){return String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function re(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>re(t)).filter(t=>t!==void 0);let e={};for(let t in r)if(r.hasOwnProperty(t)){let o=r[t];if(typeof o!="function"){let a=re(o);a!==void 0&&(e[t]=a)}}return e}function Rt(r={},e={},{presets:t,defaultLog:o}){let a=typeof r=="object"&&("colors"in r||"typography"in r||"spatialRhythm"in r||"shape"in r||"behavior"in r||"layout"in r||"advanced"in r||"a11y"in r||"components"in r||"icons"in r),i=r&&r.enhancers;i&&!Array.isArray(i)&&(i=Object.values(i));let s=i??e.enhancers??[],n=r&&r.preset,l=r&&r.design,p="preset"in(r||{})||"design"in(r||{})||"enhancers"in(r||{}),d,c=null;if(p){let u=String(n||"default").toLowerCase(),g=t?.[u]||Object.values(t||{}).find(R=>Qe(R.name)===u||String(R.name||"").toLowerCase()===u);if(!g)throw new Error(`PDS preset not found: "${n||"default"}"`);c={id:g.id||Qe(g.name),name:g.name||g.id||String(u)};let b=structuredClone(g);if(l&&typeof l=="object"){let R=re(l);b=Pt(b,structuredClone(R))}let{mode:y,autoDefine:f,applyGlobalStyles:$,manageTheme:Z,themeStorageKey:T,preloadStyles:j,criticalLayers:D,managerURL:ce,manager:Q,preset:ve,design:L,enhancers:H,log:X,...A}=r;d={...A,design:b,preset:c.name,log:X||o}}else if(a){let{log:u,...g}=r;d={design:structuredClone(g),log:u||o}}else{let u=t?.default||Object.values(t||{}).find(g=>Qe(g.name)==="default");if(!u)throw new Error("PDS default preset not available");c={id:u.id||"default",name:u.name||"Default"},d={design:structuredClone(u),preset:c.name,log:o}}return{generatorConfig:d,enhancers:s,presetInfo:c}}function Ft({manageTheme:r,themeStorageKey:e,applyResolvedTheme:t,setupSystemListenerIfNeeded:o}){let a="light",i=null;if(r&&typeof window<"u"){try{i=localStorage.getItem(e)||null}catch{i=null}try{t?.(i),o?.(i)}catch{}i?i==="system"?a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a=i:a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:a,storedTheme:i}}function Xe(r,{resolvePublicAssetURL:e}){let t=!!(r?.public?.root||r?.static?.root),o=e(r);return!t&&Mt&&(o=Mt),ke(Se(o))}async function It(r,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:t="/auto-define/",autoDefinePreload:o=[],autoDefineMapper:a=null,enhancers:i=[],autoDefineOverrides:s=null,autoDefinePreferModule:n=!0}=r,l=(()=>{let d=new Map;return(e||[]).forEach(c=>d.set(c.selector,c)),(i||[]).forEach(c=>d.set(c.selector,c)),Array.from(d.values())})(),p=null;if(typeof window<"u"&&typeof document<"u"){let d=null;try{let f=await Promise.resolve().then(()=>(Lt(),zt));d=f?.AutoDefiner||f?.default?.AutoDefiner||f?.default||null}catch(f){console.warn("AutoDefiner not available:",f?.message||f)}let c=f=>{switch(f){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${f}.js`}},{mapper:u,...g}=s&&typeof s=="object"?s:{},y={baseURL:t&&ke(Se(t,{preferModule:n})),predefine:o,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:l,onError:(f,$)=>{if(typeof f=="string"&&f.startsWith("pds-")){let T=["pds-form","pds-drawer"].includes(f),j=$?.message?.includes("#pds/lit")||$?.message?.includes("Failed to resolve module specifier");T&&j?console.error(`\u274C PDS component <${f}> requires Lit but #pds/lit is not in import map.
|
|
26
|
+
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${f}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${f}>:`,$)},...g,mapper:f=>{if(customElements.get(f))return null;if(typeof a=="function")try{let $=a(f);return $===void 0?c(f):$}catch($){return console.warn("Custom autoDefine.mapper error; falling back to default:",$?.message||$),c(f)}return c(f)}};d&&(p=new d(y),o.length>0&&typeof d.define=="function"&&await d.define(...o,{baseURL:t,mapper:y.mapper,onError:y.onError}))}return{autoDefiner:p,mergedEnhancers:l}}var rt=class extends EventTarget{},m=new rt;m.initializing=!1;m.currentPreset=null;m.debug=!1;var Nt=(r="")=>String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),et=function(r="log",e,...t){let o=!!(m.registry&&!m.registry.isLive),a=(this?.debug||this?.design?.debug||m.debug||!1)===!0;if(o){if(!m.debug)return}else if(!a&&r!=="error"&&r!=="warn")return;let i=console[r]||console.log;t.length>0?i(e,...t):i(e)};async function Wr(r,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let t=e?.runtimeConfigURL||`${r}pds-runtime-config.json`;try{let o=await fetch(t,{cache:"no-store"});return o.ok?await o.json():null}catch{return null}}m.registry=te;m.enums=h;m.adoptLayers=$t;m.adoptPrimitives=St;m.createStylesheet=Ct;m.isLiveMode=()=>te.isLive;m.ask=At;m.toast=P;m.common=Ve;function Bt(r){let e=typeof CustomEvent=="function";try{let t=e?new CustomEvent("pds:ready",{detail:r}):new Event("pds:ready");m.dispatchEvent(t)}catch{}if(typeof document<"u")if(e){let t={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",t))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",t))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}typeof window<"u"&&(window.PDS=m);var tt="pure-ds-theme",U=null,pe=null;function $e(r){try{if(typeof document>"u")return;let e="light";r?r==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=r:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function Ce(r){try{if(U&&pe){try{typeof U.removeEventListener=="function"?U.removeEventListener("change",pe):typeof U.removeListener=="function"&&U.removeListener(pe)}catch{}U=null,pe=null}if(r==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=o=>{let a=o?.matches===void 0?e.matches:o.matches;try{let i=a?"dark":"light";document.documentElement.setAttribute("data-theme",i),m.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:i,source:"system"}}))}catch{}};U=e,pe=t,typeof e.addEventListener=="function"?e.addEventListener("change",t):typeof e.addListener=="function"&&e.addListener(t)}}catch{}}Object.defineProperty(m,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(tt)||null}catch{return null}},set(r){try{if(typeof window>"u")return;r==null?localStorage.removeItem(tt):localStorage.setItem(tt,r),$e(r),Ce(r),m.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"api"}}))}catch{}}});m.defaultEnhancers=Ke;async function Ur(r){let e=r&&r.mode||"live",{mode:t,...o}=r||{};if(e==="static")return qr(o);let a=Xe(o,{resolvePublicAssetURL:Ye}),i=o?.managerURL||o?.public?.managerURL||o?.manager?.url||new URL("core/pds-manager.js",a).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:s}=await import(i);return s(m,o,{emitReady:Bt,applyResolvedTheme:$e,setupSystemListenerIfNeeded:Ce})}m.start=Ur;async function qr(r){if(!r||typeof r!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=r.applyGlobalStyles??!0,t=r.manageTheme??!0,o=r.themeStorageKey??"pure-ds-theme",a=r.staticPaths??{},i=Xe(r,{resolvePublicAssetURL:Ye}),s=r&&r.autoDefine||null,n;s&&s.baseURL?n=ke(Se(s.baseURL,{preferModule:!1})):n=`${i}components/`;let l=s&&Array.isArray(s.predefine)&&s.predefine||[],p=s&&typeof s.mapper=="function"&&s.mapper||null;try{Dt(m);let{resolvedTheme:d}=Ft({manageTheme:t,themeStorageKey:o,applyResolvedTheme:$e,setupSystemListenerIfNeeded:Ce}),c=await Wr(i,r),u=c?.config?.design||c?.design||null,g=c?.config?.preset||c?.preset||"default",b=c?.presetId||Nt(g)||"default",y=u?{[String(b).toLowerCase()]:u,...String(b).toLowerCase()!=="default"?{default:u}:{}}:null,f=r?.design&&typeof r.design=="object"?re(r.design):null,$=Nt(r?.preset||"default")||"default",Z=f?{[String($).toLowerCase()]:f,...String($).toLowerCase()!=="default"?{default:f}:{}}:null,T=y||r?.presets||Z||{};if(!Object.keys(T||{}).length)throw new Error("PDS static mode requires preset data. Run pds:build or provide config.presets/config.design.");let j=c?.config?{...c.config,...r,preset:r?.preset||b,design:f||u||c?.config?.design}:r,D=Rt(j,{},{presets:T,defaultLog:et}),ce=D.enhancers,Q={tokens:`${i}styles/pds-tokens.css.js`,primitives:`${i}styles/pds-primitives.css.js`,components:`${i}styles/pds-components.css.js`,utilities:`${i}styles/pds-utilities.css.js`,styles:`${i}styles/pds-styles.css.js`},ve=c?.paths||{};if(a={...Q,...ve,...a},m.registry.setStaticMode(a),e&&typeof document<"u")try{let A=await m.registry.getStylesheet("styles");if(A){A._pds=!0;let R=(document.adoptedStyleSheets||[]).filter(v=>v._pds!==!0);document.adoptedStyleSheets=[...R,A]}}catch(A){et.call(m,"warn","Failed to apply static styles:",A)}let L=null,H=[];try{let A=await It({autoDefineBaseURL:n,autoDefinePreload:l,autoDefineMapper:p,enhancers:ce,autoDefineOverrides:s||null,autoDefinePreferModule:!(s&&s.baseURL)},{baseEnhancers:Ke});L=A.autoDefiner,H=A.mergedEnhancers||[]}catch(A){et.call(m,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",A)}let X=re(r);return m.currentConfig=Object.freeze({mode:"static",...structuredClone(X),design:structuredClone(D.generatorConfig.design),preset:D.generatorConfig.preset,theme:d,enhancers:H}),Bt({mode:"static",config:D.generatorConfig,theme:d,autoDefiner:L}),{config:D.generatorConfig,theme:d,autoDefiner:L}}catch(d){throw m.dispatchEvent(new CustomEvent("pds:error",{detail:{error:d}})),d}}var ot=$e,at=Ce;var Ae=globalThis,Te=Ae.ShadowRoot&&(Ae.ShadyCSS===void 0||Ae.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,jt=Symbol(),Ot=new WeakMap,Ee=class{constructor(e,t,o){if(this._$cssResult$=!0,o!==jt)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(Te&&e===void 0){let o=t!==void 0&&t.length===1;o&&(e=Ot.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),o&&Ot.set(t,e))}return e}toString(){return this.cssText}},Ht=r=>new Ee(typeof r=="string"?r:r+"",void 0,jt);var Wt=(r,e)=>{if(Te)r.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(let t of e){let o=document.createElement("style"),a=Ae.litNonce;a!==void 0&&o.setAttribute("nonce",a),o.textContent=t.cssText,r.appendChild(o)}},it=Te?r=>r:r=>r instanceof CSSStyleSheet?(e=>{let t="";for(let o of e.cssRules)t+=o.cssText;return Ht(t)})(r):r;var{is:Vr,defineProperty:Jr,getOwnPropertyDescriptor:Kr,getOwnPropertyNames:Yr,getOwnPropertySymbols:Zr,getPrototypeOf:Qr}=Object,ze=globalThis,Ut=ze.trustedTypes,Xr=Ut?Ut.emptyScript:"",eo=ze.reactiveElementPolyfillSupport,ue=(r,e)=>r,st={toAttribute(r,e){switch(e){case Boolean:r=r?Xr:null;break;case Object:case Array:r=r==null?r:JSON.stringify(r)}return r},fromAttribute(r,e){let t=r;switch(e){case Boolean:t=r!==null;break;case Number:t=r===null?null:Number(r);break;case Object:case Array:try{t=JSON.parse(r)}catch{t=null}}return t}},Gt=(r,e)=>!Vr(r,e),qt={attribute:!0,type:String,converter:st,reflect:!1,useDefault:!1,hasChanged:Gt};Symbol.metadata??=Symbol("metadata"),ze.litPropertyMetadata??=new WeakMap;var F=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=qt){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let o=Symbol(),a=this.getPropertyDescriptor(e,o,t);a!==void 0&&Jr(this.prototype,e,a)}}static getPropertyDescriptor(e,t,o){let{get:a,set:i}=Kr(this.prototype,e)??{get(){return this[t]},set(s){this[t]=s}};return{get:a,set(s){let n=a?.call(this);i?.call(this,s),this.requestUpdate(e,n,o)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??qt}static _$Ei(){if(this.hasOwnProperty(ue("elementProperties")))return;let e=Qr(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(ue("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ue("properties"))){let t=this.properties,o=[...Yr(t),...Zr(t)];for(let a of o)this.createProperty(a,t[a])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[o,a]of t)this.elementProperties.set(o,a)}this._$Eh=new Map;for(let[t,o]of this.elementProperties){let a=this._$Eu(t,o);a!==void 0&&this._$Eh.set(a,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let o=new Set(e.flat(1/0).reverse());for(let a of o)t.unshift(it(a))}else e!==void 0&&t.push(it(e));return t}static _$Eu(e,t){let o=t.attribute;return o===!1?void 0:typeof o=="string"?o:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let o of t.keys())this.hasOwnProperty(o)&&(e.set(o,this[o]),delete this[o]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Wt(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,o){this._$AK(e,o)}_$ET(e,t){let o=this.constructor.elementProperties.get(e),a=this.constructor._$Eu(e,o);if(a!==void 0&&o.reflect===!0){let i=(o.converter?.toAttribute!==void 0?o.converter:st).toAttribute(t,o.type);this._$Em=e,i==null?this.removeAttribute(a):this.setAttribute(a,i),this._$Em=null}}_$AK(e,t){let o=this.constructor,a=o._$Eh.get(e);if(a!==void 0&&this._$Em!==a){let i=o.getPropertyOptions(a),s=typeof i.converter=="function"?{fromAttribute:i.converter}:i.converter?.fromAttribute!==void 0?i.converter:st;this._$Em=a;let n=s.fromAttribute(t,i.type);this[a]=n??this._$Ej?.get(a)??n,this._$Em=null}}requestUpdate(e,t,o){if(e!==void 0){let a=this.constructor,i=this[e];if(o??=a.getPropertyOptions(e),!((o.hasChanged??Gt)(i,t)||o.useDefault&&o.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,o))))return;this.C(e,t,o)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:o,reflect:a,wrapped:i},s){o&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,s??t??this[e]),i!==!0||s!==void 0)||(this._$AL.has(e)||(this.hasUpdated||o||(t=void 0),this._$AL.set(e,t)),a===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[a,i]of this._$Ep)this[a]=i;this._$Ep=void 0}let o=this.constructor.elementProperties;if(o.size>0)for(let[a,i]of o){let{wrapped:s}=i,n=this[a];s!==!0||this._$AL.has(a)||n===void 0||this.C(a,void 0,i,n)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(o=>o.hostUpdate?.()),this.update(t)):this._$EM()}catch(o){throw e=!1,this._$EM(),o}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(e){}firstUpdated(e){}};F.elementStyles=[],F.shadowRootOptions={mode:"open"},F[ue("elementProperties")]=new Map,F[ue("finalized")]=new Map,eo?.({ReactiveElement:F}),(ze.reactiveElementVersions??=[]).push("2.1.1");var ct=globalThis,Le=ct.trustedTypes,Vt=Le?Le.createPolicy("lit-html",{createHTML:r=>r}):void 0,lt="$lit$",I=`lit$${Math.random().toFixed(9).slice(2)}$`,dt="?"+I,to=`<${dt}>`,V=document,ge=()=>V.createComment(""),me=r=>r===null||typeof r!="object"&&typeof r!="function",pt=Array.isArray,Xt=r=>pt(r)||typeof r?.[Symbol.iterator]=="function",nt=`[
|
|
27
|
+
\f\r]`,he=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Jt=/-->/g,Kt=/>/g,q=RegExp(`>|${nt}(?:([^\\s"'>=/]+)(${nt}*=${nt}*(?:[^
|
|
28
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Yt=/'/g,Zt=/"/g,er=/^(?:script|style|textarea|title)$/i,ut=r=>(e,...t)=>({_$litType$:r,strings:e,values:t}),Fe=ut(1),ht=ut(2),tr=ut(3),C=Symbol.for("lit-noChange"),k=Symbol.for("lit-nothing"),Qt=new WeakMap,G=V.createTreeWalker(V,129);function rr(r,e){if(!pt(r)||!r.hasOwnProperty("raw"))throw Error("invalid template strings array");return Vt!==void 0?Vt.createHTML(e):e}var or=(r,e)=>{let t=r.length-1,o=[],a,i=e===2?"<svg>":e===3?"<math>":"",s=he;for(let n=0;n<t;n++){let l=r[n],p,d,c=-1,u=0;for(;u<l.length&&(s.lastIndex=u,d=s.exec(l),d!==null);)u=s.lastIndex,s===he?d[1]==="!--"?s=Jt:d[1]!==void 0?s=Kt:d[2]!==void 0?(er.test(d[2])&&(a=RegExp("</"+d[2],"g")),s=q):d[3]!==void 0&&(s=q):s===q?d[0]===">"?(s=a??he,c=-1):d[1]===void 0?c=-2:(c=s.lastIndex-d[2].length,p=d[1],s=d[3]===void 0?q:d[3]==='"'?Zt:Yt):s===Zt||s===Yt?s=q:s===Jt||s===Kt?s=he:(s=q,a=void 0);let g=s===q&&r[n+1].startsWith("/>")?" ":"";i+=s===he?l+to:c>=0?(o.push(p),l.slice(0,c)+lt+l.slice(c)+I+g):l+I+(c===-2?n:g)}return[rr(r,i+(r[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),o]},fe=class r{constructor({strings:e,_$litType$:t},o){let a;this.parts=[];let i=0,s=0,n=e.length-1,l=this.parts,[p,d]=or(e,t);if(this.el=r.createElement(p,o),G.currentNode=this.el.content,t===2||t===3){let c=this.el.content.firstChild;c.replaceWith(...c.childNodes)}for(;(a=G.nextNode())!==null&&l.length<n;){if(a.nodeType===1){if(a.hasAttributes())for(let c of a.getAttributeNames())if(c.endsWith(lt)){let u=d[s++],g=a.getAttribute(c).split(I),b=/([.?@])?(.*)/.exec(u);l.push({type:1,index:i,name:b[2],strings:g,ctor:b[1]==="."?_e:b[1]==="?"?De:b[1]==="@"?Pe:K}),a.removeAttribute(c)}else c.startsWith(I)&&(l.push({type:6,index:i}),a.removeAttribute(c));if(er.test(a.tagName)){let c=a.textContent.split(I),u=c.length-1;if(u>0){a.textContent=Le?Le.emptyScript:"";for(let g=0;g<u;g++)a.append(c[g],ge()),G.nextNode(),l.push({type:2,index:++i});a.append(c[u],ge())}}}else if(a.nodeType===8)if(a.data===dt)l.push({type:2,index:i});else{let c=-1;for(;(c=a.data.indexOf(I,c+1))!==-1;)l.push({type:7,index:i}),c+=I.length-1}i++}}static createElement(e,t){let o=V.createElement("template");return o.innerHTML=e,o}};function J(r,e,t=r,o){if(e===C)return e;let a=o!==void 0?t._$Co?.[o]:t._$Cl,i=me(e)?void 0:e._$litDirective$;return a?.constructor!==i&&(a?._$AO?.(!1),i===void 0?a=void 0:(a=new i(r),a._$AT(r,t,o)),o!==void 0?(t._$Co??=[])[o]=a:t._$Cl=a),a!==void 0&&(e=J(r,a._$AS(r,e.values),a,o)),e}var Me=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:o}=this._$AD,a=(e?.creationScope??V).importNode(t,!0);G.currentNode=a;let i=G.nextNode(),s=0,n=0,l=o[0];for(;l!==void 0;){if(s===l.index){let p;l.type===2?p=new oe(i,i.nextSibling,this,e):l.type===1?p=new l.ctor(i,l.name,l.strings,this,e):l.type===6&&(p=new Re(i,this,e)),this._$AV.push(p),l=o[++n]}s!==l?.index&&(i=G.nextNode(),s++)}return G.currentNode=V,a}p(e){let t=0;for(let o of this._$AV)o!==void 0&&(o.strings!==void 0?(o._$AI(e,o,t),t+=o.strings.length-2):o._$AI(e[t])),t++}},oe=class r{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,o,a){this.type=2,this._$AH=k,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=o,this.options=a,this._$Cv=a?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=J(this,e,t),me(e)?e===k||e==null||e===""?(this._$AH!==k&&this._$AR(),this._$AH=k):e!==this._$AH&&e!==C&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Xt(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==k&&me(this._$AH)?this._$AA.nextSibling.data=e:this.T(V.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:o}=e,a=typeof o=="number"?this._$AC(e):(o.el===void 0&&(o.el=fe.createElement(rr(o.h,o.h[0]),this.options)),o);if(this._$AH?._$AD===a)this._$AH.p(t);else{let i=new Me(a,this),s=i.u(this.options);i.p(t),this.T(s),this._$AH=i}}_$AC(e){let t=Qt.get(e.strings);return t===void 0&&Qt.set(e.strings,t=new fe(e)),t}k(e){pt(this._$AH)||(this._$AH=[],this._$AR());let t=this._$AH,o,a=0;for(let i of e)a===t.length?t.push(o=new r(this.O(ge()),this.O(ge()),this,this.options)):o=t[a],o._$AI(i),a++;a<t.length&&(this._$AR(o&&o._$AB.nextSibling,a),t.length=a)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let o=e.nextSibling;e.remove(),e=o}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},K=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,o,a,i){this.type=1,this._$AH=k,this._$AN=void 0,this.element=e,this.name=t,this._$AM=a,this.options=i,o.length>2||o[0]!==""||o[1]!==""?(this._$AH=Array(o.length-1).fill(new String),this.strings=o):this._$AH=k}_$AI(e,t=this,o,a){let i=this.strings,s=!1;if(i===void 0)e=J(this,e,t,0),s=!me(e)||e!==this._$AH&&e!==C,s&&(this._$AH=e);else{let n=e,l,p;for(e=i[0],l=0;l<i.length-1;l++)p=J(this,n[o+l],t,l),p===C&&(p=this._$AH[l]),s||=!me(p)||p!==this._$AH[l],p===k?e=k:e!==k&&(e+=(p??"")+i[l+1]),this._$AH[l]=p}s&&!a&&this.j(e)}j(e){e===k?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}},_e=class extends K{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===k?void 0:e}},De=class extends K{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==k)}},Pe=class extends K{constructor(e,t,o,a,i){super(e,t,o,a,i),this.type=5}_$AI(e,t=this){if((e=J(this,e,t,0)??k)===C)return;let o=this._$AH,a=e===k&&o!==k||e.capture!==o.capture||e.once!==o.once||e.passive!==o.passive,i=e!==k&&(o===k||a);a&&this.element.removeEventListener(this.name,this,o),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Re=class{constructor(e,t,o){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=o}get _$AU(){return this._$AM._$AU}_$AI(e){J(this,e)}},ar={M:lt,P:I,A:dt,C:1,L:or,R:Me,D:Xt,V:J,I:oe,H:K,N:De,U:Pe,B:_e,F:Re},ro=ct.litHtmlPolyfillSupport;ro?.(fe,oe),(ct.litHtmlVersions??=[]).push("3.3.1");var gt=(r,e,t)=>{let o=t?.renderBefore??e,a=o._$litPart$;if(a===void 0){let i=t?.renderBefore??null;o._$litPart$=a=new oe(e.insertBefore(ge(),i),i,void 0,t??{})}return a._$AI(r),a};var mt=globalThis,_=class extends F{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=gt(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return C}};_._$litElement$=!0,_.finalized=!0,mt.litElementHydrateSupport?.({LitElement:_});var oo=mt.litElementPolyfillSupport;oo?.({LitElement:_});(mt.litElementVersions??=[]).push("4.2.1");var N={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},E=r=>(...e)=>({_$litDirective$:r,values:e}),z=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,o){this._$Ct=e,this._$AM=t,this._$Ci=o}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}};var{I:ao}=ar,sr=r=>r===null||typeof r!="object"&&typeof r!="function";var nr=r=>r.strings===void 0,ir=()=>document.createComment(""),ae=(r,e,t)=>{let o=r._$AA.parentNode,a=e===void 0?r._$AB:e._$AA;if(t===void 0){let i=o.insertBefore(ir(),a),s=o.insertBefore(ir(),a);t=new ao(i,s,r,r.options)}else{let i=t._$AB.nextSibling,s=t._$AM,n=s!==r;if(n){let l;t._$AQ?.(r),t._$AM=r,t._$AP!==void 0&&(l=r._$AU)!==s._$AU&&t._$AP(l)}if(i!==a||n){let l=t._$AA;for(;l!==i;){let p=l.nextSibling;o.insertBefore(l,a),l=p}}}return t},B=(r,e,t=r)=>(r._$AI(e,t),r),io={},Ie=(r,e=io)=>r._$AH=e,cr=r=>r._$AH,Ne=r=>{r._$AR(),r._$AA.remove()};var lr=(r,e,t)=>{let o=new Map;for(let a=e;a<=t;a++)o.set(r[a],a);return o},ca=E(class extends z{constructor(r){if(super(r),r.type!==N.CHILD)throw Error("repeat() can only be used in text expressions")}dt(r,e,t){let o;t===void 0?t=e:e!==void 0&&(o=e);let a=[],i=[],s=0;for(let n of r)a[s]=o?o(n,s):s,i[s]=t(n,s),s++;return{values:i,keys:a}}render(r,e,t){return this.dt(r,e,t).values}update(r,[e,t,o]){let a=cr(r),{values:i,keys:s}=this.dt(e,t,o);if(!Array.isArray(a))return this.ut=s,i;let n=this.ut??=[],l=[],p,d,c=0,u=a.length-1,g=0,b=i.length-1;for(;c<=u&&g<=b;)if(a[c]===null)c++;else if(a[u]===null)u--;else if(n[c]===s[g])l[g]=B(a[c],i[g]),c++,g++;else if(n[u]===s[b])l[b]=B(a[u],i[b]),u--,b--;else if(n[c]===s[b])l[b]=B(a[c],i[b]),ae(r,l[b+1],a[c]),c++,b--;else if(n[u]===s[g])l[g]=B(a[u],i[g]),ae(r,a[c],a[u]),u--,g++;else if(p===void 0&&(p=lr(s,g,b),d=lr(n,c,u)),p.has(n[c]))if(p.has(n[u])){let y=d.get(s[g]),f=y!==void 0?a[y]:null;if(f===null){let $=ae(r,a[c]);B($,i[g]),l[g]=$}else l[g]=B(f,i[g]),ae(r,a[c],f),a[y]=null;g++}else Ne(a[u]),u--;else Ne(a[c]),c++;for(;g<=b;){let y=ae(r,l[b+1]);B(y,i[g]),l[g++]=y}for(;c<=u;){let y=a[c++];y!==null&&Ne(y)}return this.ut=s,Ie(r,l),C}});var fa=E(class extends z{constructor(){super(...arguments),this.key=k}render(r,e){return this.key=r,e}update(r,[e,t]){return e!==this.key&&(Ie(r),this.key=e),t}});var Sa=E(class extends z{constructor(r){if(super(r),r.type!==N.ATTRIBUTE||r.name!=="class"||r.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(r){return" "+Object.keys(r).filter(e=>r[e]).join(" ")+" "}update(r,[e]){if(this.st===void 0){this.st=new Set,r.strings!==void 0&&(this.nt=new Set(r.strings.join(" ").split(/\s/).filter(o=>o!=="")));for(let o in e)e[o]&&!this.nt?.has(o)&&this.st.add(o);return this.render(e)}let t=r.element.classList;for(let o of this.st)o in e||(t.remove(o),this.st.delete(o));for(let o in e){let a=!!e[o];a===this.st.has(o)||this.nt?.has(o)||(a?(t.add(o),this.st.add(o)):(t.remove(o),this.st.delete(o)))}return C}});var be=(r,e)=>{let t=r._$AN;if(t===void 0)return!1;for(let o of t)o._$AO?.(e,!1),be(o,e);return!0},Be=r=>{let e,t;do{if((e=r._$AM)===void 0)break;t=e._$AN,t.delete(r),r=e}while(t?.size===0)},dr=r=>{for(let e;e=r._$AM;r=e){let t=e._$AN;if(t===void 0)e._$AN=t=new Set;else if(t.has(r))break;t.add(r),co(e)}};function so(r){this._$AN!==void 0?(Be(this),this._$AM=r,dr(this)):this._$AM=r}function no(r,e=!1,t=0){let o=this._$AH,a=this._$AN;if(a!==void 0&&a.size!==0)if(e)if(Array.isArray(o))for(let i=t;i<o.length;i++)be(o[i],!1),Be(o[i]);else o!=null&&(be(o,!1),Be(o));else be(this,r)}var co=r=>{r.type==N.CHILD&&(r._$AP??=no,r._$AQ??=so)},ie=class extends z{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,o){super._$AT(e,t,o),dr(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&(be(this,e),Be(this))}setValue(e){if(nr(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}};var ft=new WeakMap,lo=E(class extends ie{render(r){return k}update(r,[e]){let t=e!==this.G;return t&&this.G!==void 0&&this.rt(void 0),(t||this.lt!==this.ct)&&(this.G=e,this.ht=r.options?.host,this.rt(this.ct=r.element)),k}rt(r){if(this.isConnected||(r=void 0),typeof this.G=="function"){let e=this.ht??globalThis,t=ft.get(e);t===void 0&&(t=new WeakMap,ft.set(e,t)),t.get(this.G)!==void 0&&this.G.call(this.ht,void 0),t.set(this.G,r),r!==void 0&&this.G.call(this.ht,r)}else this.G.value=r}get lt(){return typeof this.G=="function"?ft.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var Oe=class{constructor(e){this.G=e}disconnect(){this.G=void 0}reconnect(e){this.G=e}deref(){return this.G}},je=class{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(e=>this.Z=e)}resume(){this.Z?.(),this.Y=this.Z=void 0}};var pr=r=>!sr(r)&&typeof r.then=="function",ur=1073741823,bt=class extends ie{constructor(){super(...arguments),this._$Cwt=ur,this._$Cbt=[],this._$CK=new Oe(this),this._$CX=new je}render(...e){return e.find(t=>!pr(t))??C}update(e,t){let o=this._$Cbt,a=o.length;this._$Cbt=t;let i=this._$CK,s=this._$CX;this.isConnected||this.disconnected();for(let n=0;n<t.length&&!(n>this._$Cwt);n++){let l=t[n];if(!pr(l))return this._$Cwt=n,l;n<a&&l===o[n]||(this._$Cwt=ur,a=0,Promise.resolve(l).then(async p=>{for(;s.get();)await s.get();let d=i.deref();if(d!==void 0){let c=d._$Cbt.indexOf(l);c>-1&&c<d._$Cwt&&(d._$Cwt=c,d.setValue(p))}}))}return C}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}},po=E(bt);var Y=class extends z{constructor(e){if(super(e),this.it=k,e.type!==N.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===k||e==null)return this._t=void 0,this.it=e;if(e===C)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};Y.directiveName="unsafeHTML",Y.resultType=1;var He=E(Y);var ye=class extends Y{};ye.directiveName="unsafeSVG",ye.resultType=2;var uo=E(ye);var ci=["127.0.0.1","localhost"].includes(window.location.hostname);var ho=Symbol.for(""),go=r=>{if(r?.r===ho)return r?._$litStatic$};var hr=new Map,yt=r=>(e,...t)=>{let o=t.length,a,i,s=[],n=[],l,p=0,d=!1;for(;p<o;){for(l=e[p];p<o&&(i=t[p],(a=go(i))!==void 0);)l+=a+e[++p],d=!0;p!==o&&n.push(i),s.push(l),p++}if(p===o&&s.push(e[o]),d){let c=s.join("$$lit$$");(e=hr.get(c))===void 0&&(s.raw=s,hr.set(c,e=s)),t=n}return r(e,...t)},mo=yt(Fe),pi=yt(ht),ui=yt(tr);var S=Fe;var O={"ocean-breeze":{id:"ocean-breeze",name:"Ocean Breeze",tags:["playful"],description:"Fresh and calming ocean-inspired palette with professional undertones",options:{liquidGlassEffects:!0,backgroundMesh:3},colors:{primary:"#0891b2",secondary:"#64748b",accent:"#06b6d4",background:"#f0f9ff",darkMode:{background:"#0c1821",secondary:"#94a3b8",primary:"#0891b2"}},typography:{baseFontSize:17,fontScale:1.5,fontFamilyHeadings:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyBody:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'},spatialRhythm:{baseUnit:6,scaleRatio:1.2},shape:{radiusSize:h.RadiusSizes.xxlarge}},"midnight-steel":{id:"midnight-steel",name:"Midnight Steel",description:"Bold industrial aesthetic with sharp contrasts and urban edge",colors:{primary:"#3b82f6",secondary:"#52525b",accent:"#f59e0b",background:"#fafaf9",darkMode:{background:"#18181b",secondary:"#71717a",primary:"#3b82f6"}},typography:{baseFontSize:16,fontScale:1.333,fontFamilyHeadings:"'IBM Plex Sans', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, sans-serif",fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:h.RadiusSizes.small,borderWidth:h.BorderWidths.thin}},"neural-glow":{id:"neural-glow",name:"Neural Glow",description:"AI-inspired with vibrant purple-blue gradients and futuristic vibes",colors:{primary:"#8b5cf6",secondary:"#6366f1",accent:"#ec4899",background:"#faf5ff",darkMode:{background:"#0f0a1a",secondary:"#818cf8",primary:"#8b5cf6"}},typography:{baseFontSize:16,fontScale:1.618,fontFamilyHeadings:"'Space Grotesk', system-ui, sans-serif",fontFamilyBody:"'Space Grotesk', system-ui, sans-serif"},spatialRhythm:{baseUnit:4,scaleRatio:1.5},shape:{radiusSize:h.RadiusSizes.xlarge,borderWidth:h.BorderWidths.medium},behavior:{transitionSpeed:h.TransitionSpeeds.fast}},"paper-and-ink":{id:"paper-and-ink",name:"Paper & Ink",tags:["app","featured"],description:"Ultra-minimal design with focus on typography and whitespace",colors:{primary:"#171717",secondary:"#737373",accent:"#525252",background:"#ffffff",darkMode:{background:"#0a0a0a",secondary:"#a3a3a3",primary:"#737373"}},typography:{baseFontSize:18,fontScale:1.333,fontFamilyHeadings:"'Helvetica Neue', 'Arial', sans-serif",fontFamilyBody:"'Georgia', 'Times New Roman', serif",fontWeightNormal:400,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.2},shape:{radiusSize:h.RadiusSizes.none,borderWidth:h.BorderWidths.thin}},"sunset-paradise":{id:"sunset-paradise",name:"Sunset Paradise",description:"Warm tropical colors evoking golden hour by the beach",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#ea580c",secondary:"#d4a373",accent:"#fb923c",background:"#fffbeb",darkMode:{background:"#1a0f0a",secondary:"#c9a482",primary:"#f97316"}},typography:{baseFontSize:16,fontScale:1.5,fontFamilyHeadings:"'Quicksand', 'Comfortaa', sans-serif",fontFamilyBody:"'Quicksand', 'Comfortaa', sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.5},shape:{radiusSize:h.RadiusSizes.xxlarge,borderWidth:h.BorderWidths.medium}},"retro-wave":{id:"retro-wave",name:"Retro Wave",description:"Nostalgic 80s-inspired palette with neon undertones",colors:{primary:"#c026d3",secondary:"#a78bfa",accent:"#22d3ee",background:"#fef3ff",darkMode:{background:"#1a0a1f",secondary:"#c4b5fd",primary:"#d946ef"}},typography:{baseFontSize:15,fontScale:1.5,fontFamilyHeadings:"'Orbitron', 'Impact', monospace",fontFamilyBody:"'Courier New', 'Courier', monospace",fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:h.RadiusSizes.none,borderWidth:h.BorderWidths.thick},behavior:{transitionSpeed:h.TransitionSpeeds.instant}},"forest-canopy":{id:"forest-canopy",name:"Forest Canopy",description:"Natural earth tones with organic, calming green hues",colors:{primary:"#059669",secondary:"#78716c",accent:"#84cc16",background:"#f0fdf4",darkMode:{background:"#0a1410",secondary:"#a8a29e",primary:"#10b981"}},typography:{baseFontSize:16,fontScale:1.414,fontFamilyHeadings:"'Merriweather Sans', 'Arial', sans-serif",fontFamilyBody:"'Merriweather', 'Georgia', serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.3},shape:{radiusSize:h.RadiusSizes.medium,borderWidth:h.BorderWidths.thin}},"ruby-elegance":{id:"ruby-elegance",name:"Ruby Elegance",description:"Sophisticated palette with rich ruby reds and warm accents",colors:{primary:"#dc2626",secondary:"#9ca3af",accent:"#be123c",background:"#fef2f2",darkMode:{background:"#1b0808",secondary:"#d1d5db",primary:"#ef4444"}},typography:{baseFontSize:17,fontScale:1.5,fontFamilyHeadings:"'Playfair Display', 'Georgia', serif",fontFamilyBody:"'Crimson Text', 'Garamond', serif",fontWeightNormal:400,fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.333},shape:{radiusSize:h.RadiusSizes.small,borderWidth:h.BorderWidths.thin}},"desert-dawn":{id:"desert-dawn",name:"Desert Dawn",description:"Sun-baked neutrals with grounded terracotta and cool oasis accents",colors:{primary:"#b45309",secondary:"#a8a29e",accent:"#0ea5a8",background:"#fcf6ef",darkMode:{background:"#12100e",secondary:"#d1d5db",primary:"#f59e0b"}},typography:{baseFontSize:16,fontScale:1.414,fontFamilyHeadings:"'Source Sans Pro', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Source Serif Pro', Georgia, serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.3},shape:{radiusSize:h.RadiusSizes.medium,borderWidth:h.BorderWidths.medium}},"contrast-pro":{id:"contrast-pro",name:"Contrast Pro",description:"Accessibility-first, high-contrast UI with assertive clarity",colors:{primary:"#1f2937",secondary:"#111827",accent:"#eab308",background:"#ffffff",darkMode:{background:"#0b0f14",secondary:"#9ca3af",primary:"#9ca3af"}},typography:{baseFontSize:17,fontScale:1.2,fontFamilyHeadings:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontFamilyBody:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontWeightBold:700},spatialRhythm:{baseUnit:3,scaleRatio:1.2},shape:{radiusSize:h.RadiusSizes.small,borderWidth:h.BorderWidths.thick},behavior:{transitionSpeed:h.TransitionSpeeds.fast,focusRingWidth:4}},"pastel-play":{id:"pastel-play",name:"Pastel Play",description:"Playful pastels with soft surfaces and friendly rounded shapes",colors:{primary:"#db2777",secondary:"#a78bfa",accent:"#34d399",background:"#fff7fa",darkMode:{background:"#1a1016",secondary:"#c4b5fd",primary:"#ec4899"}},typography:{baseFontSize:16,fontScale:1.333,fontFamilyHeadings:"'Nunito', system-ui, -apple-system, sans-serif",fontFamilyBody:"'Nunito', system-ui, -apple-system, sans-serif",lineHeightRelaxed:h.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:h.RadiusSizes.xxlarge,borderWidth:h.BorderWidths.thin},behavior:{transitionSpeed:h.TransitionSpeeds.slow,animationEasing:h.AnimationEasings["ease-out"]}},"brutalist-tech":{id:"brutalist-tech",name:"Brutalist Tech",description:"Stark grayscale with engineered accents and unapologetically bold structure",colors:{primary:"#111111",secondary:"#4b5563",accent:"#06b6d4",background:"#f8fafc",darkMode:{background:"#0b0b0b",secondary:"#9ca3af",primary:"#06b6d4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace",fontFamilyBody:"'Inter', system-ui, -apple-system, sans-serif",letterSpacingTight:-.02},spatialRhythm:{baseUnit:4,scaleRatio:1.25},shape:{radiusSize:h.RadiusSizes.none,borderWidth:h.BorderWidths.thick},behavior:{transitionSpeed:h.TransitionSpeeds.instant}},"zen-garden":{id:"zen-garden",name:"Zen Garden",description:"Soft botanicals with contemplative spacing and balanced motion",colors:{primary:"#3f6212",secondary:"#6b7280",accent:"#7c3aed",background:"#f7fbef",darkMode:{background:"#0d130a",secondary:"#a3a3a3",primary:"#84cc16"}},typography:{baseFontSize:17,fontScale:1.414,fontFamilyHeadings:"'Merriweather', Georgia, serif",fontFamilyBody:"'Noto Sans', system-ui, -apple-system, sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.35},shape:{radiusSize:h.RadiusSizes.large,borderWidth:h.BorderWidths.medium},behavior:{transitionSpeed:h.TransitionSpeeds.normal,animationEasing:h.AnimationEasings.ease}},"fitness-pro":{id:"fitness-pro",name:"Fitness Pro",tags:["app","featured"],description:"Health and fitness tracking aesthetic with data-driven dark surfaces and vibrant accent rings",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#e91e63",secondary:"#78909c",accent:"#ab47bc",background:"#fafafa",darkMode:{background:"#1a1d21",secondary:"#78909c",primary:"#0a4ca4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:h.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:h.RadiusSizes.large,borderWidth:h.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:h.TransitionSpeeds.fast,animationEasing:h.AnimationEasings["ease-out"],focusRingWidth:2}},"travel-market":{id:"travel-market",name:"Travel Market",description:"Hospitality marketplace design with clean cards, subtle shadows, and trust-building neutrals",options:{liquidGlassEffects:!0,backgroundMesh:3},colors:{primary:"#d93251",secondary:"#717171",accent:"#144990",background:"#ffffff",darkMode:{background:"#222222",secondary:"#b0b0b0",primary:"#ff5a7a"}},typography:{baseFontSize:16,fontScale:1.2,fontFamilyHeadings:"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightRelaxed:h.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:1440,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:h.RadiusSizes.medium,borderWidth:h.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:h.TransitionSpeeds.normal,animationEasing:h.AnimationEasings["ease-in-out"],hoverOpacity:.9}},"mobility-app":{id:"mobility-app",name:"Mobility App",tags:["app","featured"],description:"On-demand service platform with bold typography, map-ready colors, and action-driven UI",options:{liquidGlassEffects:!0,backgroundMesh:0},colors:{primary:"#000000",secondary:"#545454",accent:"#06c167",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#06c167"}},typography:{baseFontSize:16,fontScale:1.3,fontFamilyHeadings:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,buttonPadding:1.25,inputPadding:1},shape:{radiusSize:h.RadiusSizes.small,borderWidth:h.BorderWidths.medium},behavior:{transitionSpeed:h.TransitionSpeeds.fast,animationEasing:h.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:h.TouchTargetSizes.comfortable,focusStyle:h.FocusStyles.ring}},"fintech-secure":{id:"fintech-secure",name:"Fintech Secure",description:"Financial services app UI with trust-building blues, precise spacing, and security-first design",options:{liquidGlassEffects:!1,backgroundMesh:0},colors:{primary:"#0a2540",secondary:"#425466",accent:"#00d4ff",background:"#f7fafc",darkMode:{background:"#0a1929",secondary:"#8796a5",primary:"#00d4ff"}},typography:{baseFontSize:16,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyMono:"'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:1280,sectionSpacing:2.5},shape:{radiusSize:h.RadiusSizes.medium,borderWidth:h.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:h.TransitionSpeeds.fast,animationEasing:h.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:h.TouchTargetSizes.standard,focusStyle:h.FocusStyles.ring}},"social-feed":{id:"social-feed",name:"Social Feed",tags:["app","featured"],description:"Content-first social platform with minimal chrome, bold actions, and vibrant media presentation",options:{liquidGlassEffects:!0,backgroundMesh:4},colors:{primary:"#1877f2",secondary:"#65676b",accent:"#fe2c55",background:"#ffffff",darkMode:{background:"#18191a",secondary:"#b0b3b8",primary:"#2d88ff"}},typography:{baseFontSize:15,fontScale:1.2,fontFamilyHeadings:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontFamilyBody:"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:h.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerMaxWidth:680,sectionSpacing:1.5},shape:{radiusSize:h.RadiusSizes.medium,borderWidth:h.BorderWidths.thin},behavior:{transitionSpeed:h.TransitionSpeeds.fast,animationEasing:h.AnimationEasings["ease-out"],hoverOpacity:.85}},"enterprise-dash":{id:"enterprise-dash",tags:["app","featured"],name:"Enterprise Dashboard",description:"Data-dense business intelligence app interface with organized hierarchy and professional polish",options:{liquidGlassEffects:!1},colors:{primary:"#0066cc",secondary:"#5f6368",accent:"#1a73e8",background:"#ffffff",success:"#34a853",warning:"#fbbc04",danger:"#ea4335",darkMode:{background:"#202124",secondary:"#9aa0a6",primary:"#8ab4f8"}},typography:{baseFontSize:14,fontScale:1.2,fontFamilyHeadings:"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyMono:"'Roboto Mono', ui-monospace, Consolas, monospace",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:h.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerMaxWidth:1600,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:h.RadiusSizes.small,borderWidth:h.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:h.TransitionSpeeds.fast,animationEasing:h.AnimationEasings["ease-in-out"],focusRingWidth:2},layout:{densityCompact:.85,gridColumns:12}}};O.default={id:"default",name:"Default",tags:["app","featured"],description:"Fresh and modern design system with balanced aesthetics and usability",options:{liquidGlassEffects:!0,backgroundMesh:4},form:{options:{widgets:{booleans:"toggle",numbers:"input",selects:"standard"},layouts:{fieldsets:"default",arrays:"default"},enhancements:{icons:!0,datalists:!0,rangeOutput:!0},validation:{showErrors:!0,validateOnChange:!1}}},colors:{primary:"#0e7490",secondary:"#a99b95",accent:"#e54271",background:"#e7e6de",darkMode:{background:"#16171a",secondary:"#8b9199",primary:"#06b6d4"},success:null,warning:"#B38600",danger:null,info:null,gradientStops:3,elevationOpacity:.05},typography:{baseFontSize:16,fontScale:1.2,fontFamilyHeadings:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyBody:'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',fontFamilyMono:'ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',fontWeightLight:h.FontWeights.light,fontWeightNormal:h.FontWeights.normal,fontWeightMedium:h.FontWeights.medium,fontWeightSemibold:h.FontWeights.semibold,fontWeightBold:h.FontWeights.bold,lineHeightTight:h.LineHeights.tight,lineHeightNormal:h.LineHeights.normal,lineHeightRelaxed:h.LineHeights.relaxed,letterSpacingTight:-.025,letterSpacingNormal:0,letterSpacingWide:.025},spatialRhythm:{baseUnit:4,scaleRatio:1.25,maxSpacingSteps:32,containerMaxWidth:1200,containerPadding:1,inputPadding:.75,buttonPadding:1,sectionSpacing:2},layers:{shadowDepth:"medium",blurLight:4,blurMedium:8,blurHeavy:16,zIndexBase:0,zIndexDropdown:1e3,zIndexSticky:1020,zIndexFixed:1030,zIndexModal:1040,zIndexPopover:1050,zIndexTooltip:1060,zIndexNotification:1070},shape:{radiusSize:h.RadiusSizes.large,borderWidth:h.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:h.TransitionSpeeds.normal,animationEasing:h.AnimationEasings["ease-out"],customTransitionSpeed:null,customEasing:null,focusRingWidth:3,focusRingOpacity:.3,hoverOpacity:.8},layout:{gridColumns:12,gridGutter:1,breakpoints:{sm:640,md:768,lg:1024,xl:1280},densityCompact:.8,densityNormal:1,densityComfortable:1.2,buttonMinHeight:h.TouchTargetSizes.standard,inputMinHeight:40,utilities:{grid:!0,flex:!0,spacing:!0,container:!0},gridSystem:{columns:[1,2,3,4,6],autoFitBreakpoints:{sm:"150px",md:"250px",lg:"350px",xl:"450px"},enableGapUtilities:!0},containerMaxWidth:"1400px",containerPadding:"var(--spacing-6)"},advanced:{linkStyle:h.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:h.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:h.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:h.IconSizes,include:{navigation:["arrow-left","arrow-right","arrow-up","arrow-down","arrow-counter-clockwise","caret-left","caret-right","caret-down","caret-up","x","list","list-dashes","dots-three-vertical","dots-three","house","gear","magnifying-glass","funnel","tabs","sidebar"],actions:["plus","minus","check","trash","pencil","floppy-disk","copy","download","upload","share","link","eye","eye-slash","heart","star","bookmark","note-pencil","cursor-click","clipboard","magic-wand","sparkle"],communication:["envelope","bell","bell-ringing","bell-simple","chat-circle","phone","paper-plane-tilt","user","users","user-gear","at"],content:["image","file","file-text","file-css","file-js","folder","folder-open","book-open","camera","video-camera","play","pause","microphone","brackets-curly","code","folder-simple","grid-four","briefcase","chart-line","chart-bar","database","map-pin"],status:["info","warning","check-circle","x-circle","question","shield","shield-check","shield-warning","lock","lock-open","fingerprint","circle-notch"],time:["calendar","clock","timer","hourglass"],commerce:["shopping-cart","credit-card","currency-dollar","tag","receipt","storefront"],formatting:["text-align-left","text-align-center","text-align-right","text-b","text-italic","text-underline","list-bullets","list-numbers","text-aa"],system:["cloud","cloud-arrow-up","cloud-arrow-down","desktop","device-mobile","globe","wifi-high","battery-charging","sun","moon","moon-stars","palette","rocket","feather","square","circle","squares-four","lightning","wrench"]},spritePath:"public/assets/pds/icons/pds-icons.svg"},gap:4,debug:!1};var vt={meta:{name:"Pure Design System Ontology",version:"1.0.0",description:"Complete metadata registry for PDS primitives, components, utilities, and tokens"},tokens:{colors:{semantic:["primary","secondary","accent","success","warning","danger","info"],neutral:["gray"],shades:[50,100,200,300,400,500,600,700,800,900,950],surface:["base","subtle","elevated","sunken","overlay","inverse","translucent"],text:["default","muted","subtle","inverse","primary","success","warning","danger","info"]},spacing:{scale:["1","2","3","4","5","6","8","10","12","16","20","24"],semantic:["xs","sm","md","lg","xl"]},typography:{families:["heading","body","mono"],sizes:["xs","sm","base","lg","xl","2xl","3xl","4xl","5xl"],weights:["light","normal","medium","semibold","bold"]},radius:{scale:["none","sm","base","md","lg","xl","2xl","full"]},shadows:{scale:["none","sm","base","md","lg","xl","inner"]},themes:["light","dark"],breakpoints:{sm:640,md:768,lg:1024,xl:1280}},primitives:[{id:"badge",name:"Badge / Pill",description:"Inline status indicators and labels",selectors:[".badge",".badge-primary",".badge-secondary",".badge-success",".badge-info",".badge-warning",".badge-danger",".badge-outline",".badge-sm",".badge-lg",".pill",".tag",".chip"],tags:["status","label","indicator","inline"],category:"feedback"},{id:"card",name:"Card",description:"Content container with padding, border-radius, and optional shadow",selectors:[".card",".card-basic",".card-elevated",".card-outlined",".card-interactive"],tags:["container","content","grouping"],category:"container"},{id:"surface",name:"Surface",description:"Smart surface classes with automatic text/background color handling",selectors:[".surface-base",".surface-subtle",".surface-elevated",".surface-sunken",".surface-overlay",".surface-inverse",".surface-translucent",".surface-translucent-25",".surface-translucent-50",".surface-translucent-75",".surface-primary",".surface-secondary",".surface-success",".surface-warning",".surface-danger",".surface-info"],tags:["background","theming","color","container"],category:"theming"},{id:"callout",name:"Callout",description:"Contextual information and notification messages",selectors:[".callout",".callout-info",".callout-success",".callout-warning",".callout-danger",".callout-error",".callout-dismissible"],tags:["feedback","message","notification","status","information"],category:"feedback"},{id:"empty-state",name:"Empty State",description:"Empty state layout for missing data or onboarding",selectors:[".empty-state"],tags:["empty","no-data","zero","placeholder","onboarding","state"],category:"feedback"},{id:"dialog",name:"Dialog",description:"Modal dialog element",selectors:["dialog",".dialog"],tags:["modal","overlay","popup","modal"],category:"overlay"},{id:"divider",name:"Divider",description:"Horizontal rule with optional label",selectors:["hr","hr[data-content]"],tags:["separator","line","content-divider"],category:"layout"},{id:"table",name:"Table",description:"Data tables with responsive and styling variants",selectors:["table",".table-responsive",".table-striped",".table-bordered",".table-compact",".data-table"],tags:["data","grid","tabular","responsive"],category:"data"},{id:"button",name:"Button",description:"Interactive button element with variants",selectors:["button",".btn-primary",".btn-secondary",".btn-outline",".btn-sm",".btn-xs",".btn-lg",".btn-working",".icon-only"],tags:["interactive","action","cta","form"],category:"action"},{id:"fieldset",name:"Fieldset Group",description:"Form field grouping for radio/checkbox groups",selectors:["fieldset[role='group']","fieldset[role='radiogroup']","fieldset.buttons"],tags:["form","grouping","radio","checkbox"],category:"form"},{id:"label-field",name:"Label+Input",description:"Semantic label wrapping form input",selectors:["label","label:has(input)","label:has(select)","label:has(textarea)"],tags:["form","input","accessibility"],category:"form"},{id:"accordion",name:"Accordion",description:"Collapsible content sections",selectors:[".accordion",".accordion-item","details","details > summary"],tags:["expandable","collapsible","disclosure"],category:"disclosure"},{id:"icon",name:"Icon",description:"SVG icon element with size and color variants",selectors:["pds-icon",".icon-xs",".icon-sm",".icon-md",".icon-lg",".icon-xl",".icon-primary",".icon-secondary",".icon-accent",".icon-success",".icon-warning",".icon-danger",".icon-info",".icon-muted",".icon-subtle",".icon-text",".icon-text-start",".icon-text-end"],tags:["graphic","symbol","visual"],category:"media"},{id:"figure",name:"Figure/Media",description:"Figure element for images with captions",selectors:["figure","figure.media","figcaption"],tags:["image","media","caption"],category:"media"},{id:"gallery",name:"Gallery",description:"Image gallery grid",selectors:[".gallery",".gallery-grid",".img-gallery"],tags:["images","grid","collection"],category:"media"},{id:"form",name:"Form Container",description:"Form styling and layout",selectors:["form",".form-container",".form-actions",".field-description"],tags:["form","input","submission"],category:"form"},{id:"navigation",name:"Navigation",description:"Navigation elements and menus",selectors:["nav","nav[data-dropdown]","menu","nav menu li"],tags:["menu","links","routing"],category:"navigation"}],components:[{id:"pds-tabstrip",name:"Tab Strip",description:"Tabbed interface component",selectors:["pds-tabstrip"],tags:["tabs","navigation","panels"],category:"navigation"},{id:"pds-drawer",name:"Drawer",description:"Slide-out panel overlay",selectors:["pds-drawer"],tags:["panel","overlay","sidebar"],category:"overlay"},{id:"pds-fab",name:"FAB",description:"Floating Action Button with expandable satellite actions",selectors:["pds-fab"],tags:["button","action","floating","interactive"],category:"action"},{id:"pds-upload",name:"Upload",description:"File upload component with drag-and-drop",selectors:["pds-upload"],tags:["file","upload","drag-drop","form"],category:"form"},{id:"pds-icon",name:"Icon",description:"SVG icon web component",selectors:["pds-icon"],tags:["icon","graphic","svg"],category:"media"},{id:"pds-toaster",name:"Toaster",description:"Toast notification container",selectors:["pds-toaster"],tags:["notification","toast","feedback"],category:"feedback"},{id:"pds-form",name:"JSON Form",description:"Auto-generated form from JSON Schema",selectors:["pds-form"],tags:["form","schema","auto-generate"],category:"form"},{id:"pds-splitpanel",name:"Split Panel",description:"Resizable split pane layout",selectors:["pds-splitpanel"],tags:["layout","resize","panels"],category:"layout"},{id:"pds-scrollrow",name:"Scroll Row",description:"Horizontal scrolling row with snap points",selectors:["pds-scrollrow"],tags:["scroll","horizontal","carousel"],category:"layout"},{id:"pds-richtext",name:"Rich Text",description:"Rich text editor component",selectors:["pds-richtext"],tags:["editor","wysiwyg","text"],category:"form"},{id:"pds-calendar",name:"Calendar",description:"Date picker calendar component",selectors:["pds-calendar"],tags:["date","picker","calendar"],category:"form"}],layoutPatterns:[{id:"container",name:"Container",description:"Centered max-width wrapper with padding",selectors:[".container"],tags:["wrapper","centered","max-width","page"],category:"structure"},{id:"grid",name:"Grid",description:"CSS Grid layout container",selectors:[".grid"],tags:["layout","columns","css-grid"],category:"layout"},{id:"grid-cols",name:"Grid Columns",description:"Fixed column count grids",selectors:[".grid-cols-1",".grid-cols-2",".grid-cols-3",".grid-cols-4",".grid-cols-6"],tags:["columns","fixed","grid"],category:"layout"},{id:"grid-auto",name:"Auto-fit Grid",description:"Responsive auto-fit grid with minimum widths",selectors:[".grid-auto-sm",".grid-auto-md",".grid-auto-lg",".grid-auto-xl"],tags:["responsive","auto-fit","fluid"],category:"layout"},{id:"flex",name:"Flex Container",description:"Flexbox layout with direction and wrap modifiers",selectors:[".flex",".flex-wrap",".flex-col",".flex-row"],tags:["flexbox","layout","alignment"],category:"layout"},{id:"grow",name:"Flex Grow",description:"Fill remaining flex space",selectors:[".grow"],tags:["flex","expand","fill"],category:"layout"},{id:"stack",name:"Stack",description:"Vertical flex layout with predefined gaps",selectors:[".stack-sm",".stack-md",".stack-lg",".stack-xl"],tags:["vertical","spacing","column"],category:"layout"},{id:"gap",name:"Gap",description:"Spacing between flex/grid children",selectors:[".gap-0",".gap-xs",".gap-sm",".gap-md",".gap-lg",".gap-xl"],tags:["spacing","margin","gutters"],category:"spacing"},{id:"items",name:"Items Alignment",description:"Cross-axis alignment for flex/grid",selectors:[".items-start",".items-center",".items-end",".items-stretch",".items-baseline"],tags:["alignment","vertical","cross-axis"],category:"alignment"},{id:"justify",name:"Justify Content",description:"Main-axis alignment for flex/grid",selectors:[".justify-start",".justify-center",".justify-end",".justify-between",".justify-around",".justify-evenly"],tags:["alignment","horizontal","main-axis"],category:"alignment"},{id:"max-width",name:"Max-Width",description:"Content width constraints",selectors:[".max-w-sm",".max-w-md",".max-w-lg",".max-w-xl"],tags:["width","constraint","readable"],category:"sizing"},{id:"section",name:"Section Spacing",description:"Vertical padding for content sections",selectors:[".section",".section-lg"],tags:["spacing","vertical","padding"],category:"spacing"},{id:"mobile-stack",name:"Mobile Stack",description:"Stack on mobile, row on desktop",selectors:[".mobile-stack"],tags:["responsive","mobile","breakpoint"],category:"responsive"}],utilities:{text:{alignment:[".text-left",".text-center",".text-right"],color:[".text-muted"],overflow:[".truncate"]},backdrop:{base:[".backdrop"],variants:[".backdrop-light",".backdrop-dark"],blur:[".backdrop-blur-sm",".backdrop-blur-md",".backdrop-blur-lg"]},shadow:{scale:[".shadow-sm",".shadow-base",".shadow-md",".shadow-lg",".shadow-xl",".shadow-inner",".shadow-none"]},border:{gradient:[".border-gradient",".border-gradient-primary",".border-gradient-accent",".border-gradient-secondary",".border-gradient-soft",".border-gradient-medium",".border-gradient-strong"],glow:[".border-glow",".border-glow-sm",".border-glow-lg",".border-glow-primary",".border-glow-accent",".border-glow-success",".border-glow-warning",".border-glow-danger"],combined:[".border-gradient-glow"]},media:{image:[".img-gallery",".img-rounded-sm",".img-rounded-md",".img-rounded-lg",".img-rounded-xl",".img-rounded-full",".img-inline"],video:[".video-responsive"],figure:[".figure-responsive"]},effects:{glass:[".liquid-glass"]}},responsive:{prefixes:["sm","md","lg"],utilities:{grid:[":grid-cols-2",":grid-cols-3",":grid-cols-4"],flex:[":flex-row"],text:[":text-sm",":text-lg",":text-xl"],spacing:[":p-6",":p-8",":p-12",":gap-6",":gap-8",":gap-12"],width:[":w-1/2",":w-1/3",":w-1/4"],display:[":hidden",":block"]}},enhancements:[{id:"dropdown",selector:"nav[data-dropdown]",description:"Dropdown menu from nav element",tags:["menu","interactive","navigation"]},{id:"toggle",selector:"label[data-toggle]",description:"Toggle switch from checkbox",tags:["switch","boolean","form"]},{id:"range",selector:'input[type="range"]',description:"Enhanced range slider with output",tags:["slider","input","form"]},{id:"required",selector:"form [required]",description:"Required field asterisk indicator",tags:["validation","form","accessibility"]},{id:"open-group",selector:"fieldset[role=group][data-open]",description:"Editable checkbox/radio group",tags:["form","dynamic","editable"]},{id:"working-button",selector:"button.btn-working, a.btn-working",description:"Button with loading spinner",tags:["loading","async","feedback"]},{id:"labeled-divider",selector:"hr[data-content]",description:"Horizontal rule with centered label",tags:["divider","separator","text"]}],categories:{feedback:{description:"User feedback and status indicators",primitives:["callout","badge","empty-state"],components:["pds-toaster"]},form:{description:"Form inputs and controls",primitives:["button","fieldset","label-field","form"],components:["pds-upload","pds-form","pds-richtext","pds-calendar"]},layout:{description:"Page structure and content arrangement",patterns:["container","grid","flex","stack","section"],components:["pds-splitpanel","pds-scrollrow"]},navigation:{description:"Navigation and routing",primitives:["navigation"],components:["pds-tabstrip","pds-drawer"]},media:{description:"Images, icons, and visual content",primitives:["icon","figure","gallery"],components:["pds-icon"]},overlay:{description:"Modal and overlay content",primitives:["dialog"],components:["pds-drawer"]},data:{description:"Data display and tables",primitives:["table"]},theming:{description:"Colors, surfaces, and visual theming",primitives:["surface"]},action:{description:"Interactive actions and buttons",primitives:["button"],components:["pds-fab"]}},styles:{typography:["headings","body","code","links"],icons:{source:"svg",sets:["core","brand"]},interactive:["focus","hover","active","disabled"],states:["success","warning","danger","info","muted"]},searchRelations:{text:["typography","truncate","text-muted","text-primary","text-left","text-center","text-right","pds-richtext","heading","font","label","paragraph","content","ellipsis","overflow","input"],font:["typography","text","heading","font-size","font-weight","font-family"],type:["typography","text","font"],typography:["text","font","heading","truncate","text-muted"],heading:["typography","text","font-size","h1","h2","h3"],truncate:["text","overflow","ellipsis","clamp","nowrap","typography"],ellipsis:["truncate","text","overflow","clamp"],overflow:["truncate","scroll","hidden","text"],paragraph:["text","typography","content","body"],content:["text","typography","body","article"],empty:["empty-state","placeholder","zero","no-data","onboarding","callout","card","icon","button"],"empty state":["empty-state","empty","no-data","zero","onboarding"],"no data":["empty-state","empty","zero","placeholder"],form:["input","field","label","button","fieldset","pds-form","pds-upload","pds-richtext","pds-calendar","required","validation","submit"],input:["form","field","text","label","required","validation"],field:["form","input","label","required"],button:["btn","interactive","action","submit","form","btn-primary","btn-secondary","btn-working","pds-fab","floating"],btn:["button","interactive","action","pds-fab"],fab:["pds-fab","floating","button","action","menu"],floating:["fab","pds-fab","button","action"],toggle:["switch","checkbox","boolean","form","interactive"],switch:["toggle","checkbox","boolean"],slider:["range","input","form"],range:["slider","input","form"],checkbox:["toggle","form","fieldset","boolean"],radio:["fieldset","form","group"],select:["dropdown","form","input","menu"],upload:["file","pds-upload","form","drag-drop"],file:["upload","pds-upload","form"],modal:["dialog","pds-ask","overlay","popup","backdrop","pds-drawer","alert","confirm","prompt","lightbox"],dialog:["modal","pds-ask","overlay","popup","backdrop","alert","confirm","prompt"],popup:["modal","dialog","dropdown","popover","overlay","tooltip"],popover:["popup","tooltip","overlay"],overlay:["modal","dialog","backdrop","drawer","popup"],drawer:["pds-drawer","sidebar","panel","overlay","modal"],backdrop:["overlay","modal","dialog","blur"],confirm:["pds-ask","dialog","modal"],prompt:["pds-ask","dialog","modal","input"],ask:["pds-ask","dialog","confirm","prompt","modal"],dropdown:["menu","nav-dropdown","select","popover"],menu:["dropdown","navigation","nav","list"],nav:["navigation","menu","dropdown","tabs","links"],navigation:["nav","menu","tabs","pds-tabstrip","links","routing"],tabs:["pds-tabstrip","navigation","panels"],tab:["tabs","pds-tabstrip","panel"],link:["navigation","anchor","href","routing"],callout:["notification","feedback","message","status","toast","information","alert","warning","error","info","success","danger"],alert:["callout","notification","feedback","message","status","toast","modal","dialog","pds-ask","confirm","warning","error","info","success","danger"],notification:["callout","toast","pds-toaster","feedback","message","popup","alert"],toast:["pds-toaster","notification","callout","feedback","popup","snackbar","alert"],feedback:["callout","notification","toast","status","badge","validation","error","success","alert"],message:["callout","notification","feedback","dialog","toast","alert"],status:["badge","callout","indicator","feedback","state","alert"],error:["callout","danger","validation","feedback","warning","alert"],success:["callout","feedback","badge","status","check","alert"],warning:["callout","caution","feedback","status","alert"],info:["callout","information","feedback","status","alert"],danger:["callout","error","feedback","destructive","delete","alert"],badge:["status","pill","tag","chip","indicator","label"],pill:["badge","tag","chip"],tag:["badge","pill","chip","label"],chip:["badge","pill","tag"],layout:["grid","flex","stack","container","gap","spacing","pds-splitpanel","section"],grid:["layout","columns","css-grid","table","gallery"],flex:["layout","flexbox","alignment","row","column"],stack:["layout","vertical","spacing","column","gap"],container:["wrapper","layout","max-width","centered"],gap:["spacing","margin","padding","layout"],spacing:["gap","margin","padding","section"],section:["spacing","layout","container","page"],split:["pds-splitpanel","resizable","panels","layout"],panel:["pds-splitpanel","drawer","sidebar","section"],card:["surface","container","elevated","content"],surface:["card","background","elevated","theming","color"],box:["card","container","surface"],elevated:["surface","shadow","card"],color:["palette","theme","surface","primary","secondary","accent"],colours:["color","palette","theme"],palette:["color","theme","tokens"],theme:["color","palette","dark","light","surface"],primary:["color","button","badge","surface"],secondary:["color","button","badge","surface"],accent:["color","highlight","surface"],border:["border-gradient","border-glow","outline","radius"],effect:["border-gradient","border-glow","shadow","glass","animation"],gradient:["border-gradient","color","background"],glow:["border-glow","effect","shadow"],shadow:["elevated","effect","depth","card"],radius:["rounded","border","corner"],rounded:["radius","border","corner"],glass:["liquid-glass","backdrop","blur","effect"],icon:["pds-icon","graphic","symbol","svg","phosphor"],image:["img","figure","gallery","media","picture"],img:["image","figure","gallery","media"],figure:["image","media","caption"],gallery:["images","grid","collection","media"],media:["image","icon","figure","gallery","video"],table:["data","grid","tabular","rows","columns"],data:["table","json","form","display"],editor:["pds-richtext","wysiwyg","text","content"],wysiwyg:["editor","pds-richtext","richtext"],richtext:["pds-richtext","editor","wysiwyg","text"],calendar:["pds-calendar","date","picker","datepicker"],date:["calendar","pds-calendar","picker","input"],datepicker:["calendar","date","pds-calendar"],scroll:["pds-scrollrow","carousel","horizontal","overflow"],carousel:["scroll","pds-scrollrow","slider","gallery"],accordion:["details","collapsible","expandable","disclosure"],collapsible:["accordion","details","expandable"],expandable:["accordion","collapsible","disclosure"],details:["accordion","summary","disclosure"],divider:["hr","separator","line","rule"],separator:["divider","hr","line"],hr:["divider","separator","horizontal-rule"],interactive:["hover","focus","active","disabled","button","link"],hover:["interactive","effect","state"],focus:["interactive","accessibility","state","outline"],disabled:["interactive","state","muted"],loading:["btn-working","spinner","async","progress"],spinner:["loading","btn-working","progress"],accessibility:["a11y","aria","focus","label","required"],a11y:["accessibility","aria","semantic"],aria:["accessibility","a11y","role"],required:["form","validation","asterisk","input"],validation:["form","required","error","feedback"],start:["getting-started","intro","overview","whatispds"],intro:["getting-started","overview","start","docs"],getting:["getting-started","start","intro"],overview:["intro","start","summary","layout-overview"],docs:["documentation","reference","guide"],primitive:["primitives"],component:["components"],enhancement:["enhancements"],foundation:["foundations","color","icon","typography","spacing","tokens"],utility:["utilities","text","backdrop","shadow","border","helper"],pattern:["patterns","layout","responsive","mobile-stack"]}};var se=class r{static#i;static get instance(){return this.#i}#e;#r;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),r.#i=this,this.tokens=this.generateTokens(),this.options.debug&&this.options.log?.("debug","Generated tokens:",this.tokens),this.#ve(),typeof CSSStyleSheet<"u"?this.#$e():this.options.debug&&this.options.log?.("debug","[Generator] Skipping browser features (CSSStyleSheet not available)")}generateTokens(){let e=this.options.design||{};return{colors:this.#n(e.colors||{}),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#D(e.shape||{}),borderWidths:this.#P(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:this.#R(e.layers||{}),layout:this.#F(e.layout||{}),transitions:this.#I(e.behavior||{}),zIndex:this.#N(e.layers||{}),icons:this.#B(e.icons||{})}}#n(e){let{primary:t="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:n="#FFBF00",danger:l=null,info:p=null,darkMode:d={}}=e,c={primary:this.#o(t),secondary:this.#o(o),accent:this.#o(a),success:this.#o(s||this.#S(t)),warning:this.#o(n||a),danger:this.#o(l||this.#$(t)),info:this.#o(p||t),gray:this.#g(o),surface:this.#m(i)};return c.surface.fieldset=this.#C(c.surface),c.surfaceSmart=this.#w(c.surface),c.dark=this.#E(c,i,d),c.dark&&c.dark.surface&&(c.dark.surfaceSmart=this.#w(c.dark.surface)),c.interactive={light:{fill:this.#v(c.primary,4.5),text:c.primary[600]},dark:{fill:this.#v(c.dark.primary,4.5),text:this.#M(c.dark.primary,c.dark.surface.base,4.5)}},c}#o(e){let t=this.#s(e);return{50:this.#t(t.h,Math.max(t.s-10,10),Math.min(t.l+45,95)),100:this.#t(t.h,Math.max(t.s-5,15),Math.min(t.l+35,90)),200:this.#t(t.h,t.s,Math.min(t.l+25,85)),300:this.#t(t.h,t.s,Math.min(t.l+15,75)),400:this.#t(t.h,t.s,Math.min(t.l+5,65)),500:e,600:this.#t(t.h,t.s,Math.max(t.l-10,25)),700:this.#t(t.h,t.s,Math.max(t.l-20,20)),800:this.#t(t.h,t.s,Math.max(t.l-30,15)),900:this.#t(t.h,t.s,Math.max(t.l-40,10))}}#S(e){let t=this.#s(e);return this.#t(120,Math.max(t.s,60),45)}#$(e){let t=this.#s(e);return this.#t(0,Math.max(t.s,70),50)}#g(e){let t=this.#s(e),o=t.h,a=Math.min(t.s,10);return{50:this.#t(o,a,98),100:this.#t(o,a,95),200:this.#t(o,a,88),300:this.#t(o,a,78),400:this.#t(o,a,60),500:e,600:this.#t(o,Math.min(a+5,15),45),700:this.#t(o,Math.min(a+8,18),35),800:this.#t(o,Math.min(a+10,20),20),900:this.#t(o,Math.min(a+12,22),10)}}#m(e){let t=this.#s(e);return{base:e,subtle:this.#t(t.h,Math.max(t.s,2),Math.max(t.l-2,2)),elevated:this.#t(t.h,Math.max(t.s,3),Math.max(t.l-4,5)),sunken:this.#t(t.h,Math.max(t.s,4),Math.max(t.l-6,8)),overlay:this.#t(t.h,Math.max(t.s,2),Math.min(t.l+2,98)),inverse:this.#f(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#C(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#A(e.sunken,.05),overlay:e.elevated}}#A(e,t=.05){let o=this.#s(e),a=Math.max(o.l-o.l*t,5);return this.#t(o.h,o.s,a)}#f(e){let t=this.#s(e);if(t.l>50){let o=Math.min(t.s+5,25),a=Math.max(12-(t.l-50)*.1,8);return this.#t(t.h,o,a)}else{let o=Math.max(t.s-10,5),a=Math.min(85+(50-t.l)*.3,95);return this.#t(t.h,o,a)}}#E(e,t="#ffffff",o={}){let a=o.background?o.background:this.#f(t),i=this.#m(a),s=o.primary?this.#o(o.primary):this.#c(e.primary);return{surface:{...i,fieldset:this.#L(i)},primary:s,secondary:o.secondary?this.#o(o.secondary):this.#c(e.secondary),accent:o.accent?this.#o(o.accent):this.#c(e.accent),gray:o.secondary?this.#g(o.secondary):e.gray,success:this.#c(e.success),info:this.#c(e.info),warning:this.#c(e.warning),danger:this.#c(e.danger)}}#p(e){let t=String(e||"").replace("#",""),o=t.length===3?t.split("").map(i=>i+i).join(""):t,a=parseInt(o,16);return{r:a>>16&255,g:a>>8&255,b:a&255}}#h(e){let{r:t,g:o,b:a}=this.#p(e),i=[t/255,o/255,a/255].map(s=>s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4));return .2126*i[0]+.7152*i[1]+.0722*i[2]}#u(e,t){let o=this.#h(e),a=this.#h(t),i=Math.max(o,a),s=Math.min(o,a);return(i+.05)/(s+.05)}#b(e,t=4.5){if(!e)return"#000000";let o="#ffffff",a="#000000",i=this.#u(e,o);if(i>=t)return o;let s=this.#u(e,a);return s>=t||s>i?a:o}#y(e,t=1){let{r:o,g:a,b:i}=this.#p(e);return`rgba(${o}, ${a}, ${i}, ${t})`}#T(e,t,o=.5){let a=this.#p(e),i=this.#p(t),s=Math.round(a.r+(i.r-a.r)*o),n=Math.round(a.g+(i.g-a.g)*o),l=Math.round(a.b+(i.b-a.b)*o);return this.#z(s,n,l)}#z(e,t,o){let a=i=>{let s=Math.max(0,Math.min(255,Math.round(i))).toString(16);return s.length===1?"0"+s:s};return`#${a(e)}${a(t)}${a(o)}`}#L(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#x(e.elevated,.08),sunken:e.elevated,overlay:this.#x(e.overlay,.05)}}#M(e={},t="#000000",o=4.5){let a=["600","700","800","500","400","900","300","200"],i={shade:null,color:null,ratio:0};for(let s of a){let n=e?.[s];if(!n||typeof n!="string")continue;let l=this.#u(n,t);if(l>i.ratio&&(i={shade:s,color:n,ratio:l}),l>=o)return n}return i.color||e?.["600"]||e?.["500"]}#v(e={},t=4.5){let o=["600","700","800","500","400","900"],a={shade:null,color:null,ratio:0};for(let i of o){let s=e?.[i];if(!s||typeof s!="string")continue;let n=this.#u(s,"#ffffff");if(n>a.ratio&&(a={shade:i,color:s,ratio:n}),n>=t)return s}return a.color||e?.["600"]||e?.["500"]}#w(e){let t={};return Object.entries(e).forEach(([o,a])=>{if(!a||typeof a!="string"||!a.startsWith("#"))return;let i=this.#h(a)<.5,s=this.#b(a,4.5),n=this.#b(a,3),l=this.#T(s,a,.4),p=s,d=l,c=i?"#ffffff":"#000000",u=i?.25:.1,g=this.#y(c,u),b=i?"#ffffff":"#000000",y=i?.15:.1,f=this.#y(b,y);t[o]={bg:a,text:s,textSecondary:n,textMuted:l,icon:p,iconSubtle:d,shadow:g,border:f,scheme:i?"dark":"light"}}),t}#x(e,t=.05){let o=this.#s(e),a=Math.min(o.l+(100-o.l)*t,95);return this.#t(o.h,o.s,a)}#c(e){let t={};return Object.entries({50:{source:"900",dimFactor:.8},100:{source:"800",dimFactor:.8},200:{source:"700",dimFactor:.8},300:{source:"600",dimFactor:.8},400:{source:"500",dimFactor:.85},500:{source:"400",dimFactor:.85},600:{source:"300",dimFactor:.85},700:{source:"200",dimFactor:.85},800:{source:"100",dimFactor:.95},900:{source:"50",dimFactor:.95}}).forEach(([a,i])=>{let s=e[i.source];t[a]=this.#_(s,i.dimFactor)}),t}#_(e,t=.8){let o=this.#s(e),a=Math.max(o.s*t,5),i=Math.max(o.l*t,5);return this.#t(o.h,a,i)}generateSpacingTokens(e){let{baseUnit:t=4,scaleRatio:o=1.25,maxSpacingSteps:a=12}=e,i=Number.isFinite(Number(t))?Number(t):4,s=Math.min(Number.isFinite(Number(a))?Number(a):12,12),n={0:"0"};for(let l=1;l<=s;l++)n[l]=`${i*l}px`;return n}#D(e){let{radiusSize:t="medium",customRadius:o=null}=e,a;o!=null?a=o:typeof t=="number"?a=t:typeof t=="string"?a=h.RadiusSizes[t]??h.RadiusSizes.medium:a=h.RadiusSizes.medium;let i=Number.isFinite(Number(a))?Number(a):h.RadiusSizes.medium;return{none:"0",xs:`${Number.isFinite(i*.25)?Math.round(i*.25):0}px`,sm:`${Number.isFinite(i*.5)?Math.round(i*.5):0}px`,md:`${i}px`,lg:`${Number.isFinite(i*1.5)?Math.round(i*1.5):0}px`,xl:`${Number.isFinite(i*2)?Math.round(i*2):0}px`,full:"9999px"}}#P(e){let{borderWidth:t="medium"}=e,o;return typeof t=="number"?o=t:typeof t=="string"?o=h.BorderWidths[t]??h.BorderWidths.medium:o=h.BorderWidths.medium,{hairline:`${h.BorderWidths.hairline}px`,thin:`${h.BorderWidths.thin}px`,medium:`${h.BorderWidths.medium}px`,thick:`${h.BorderWidths.thick}px`}}generateTypographyTokens(e){let{fontFamilyHeadings:t="system-ui, -apple-system, sans-serif",fontFamilyBody:o="system-ui, -apple-system, sans-serif",fontFamilyMono:a='ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',baseFontSize:i=16,fontScale:s=1.25,fontWeightLight:n=h.FontWeights.light,fontWeightNormal:l=h.FontWeights.normal,fontWeightMedium:p=h.FontWeights.medium,fontWeightSemibold:d=h.FontWeights.semibold,fontWeightBold:c=h.FontWeights.bold,lineHeightTight:u=h.LineHeights.tight,lineHeightNormal:g=h.LineHeights.normal,lineHeightRelaxed:b=h.LineHeights.relaxed}=e,y=Number.isFinite(Number(i))?Number(i):16,f=Number.isFinite(Number(s))?Number(s):1.25;return{fontFamily:{headings:t,body:o,mono:a},fontSize:{xs:`${Math.round(y/Math.pow(f,2))}px`,sm:`${Math.round(y/f)}px`,base:`${y}px`,lg:`${Math.round(y*f)}px`,xl:`${Math.round(y*Math.pow(f,2))}px`,"2xl":`${Math.round(y*Math.pow(f,3))}px`,"3xl":`${Math.round(y*Math.pow(f,4))}px`,"4xl":`${Math.round(y*Math.pow(f,5))}px`},fontWeight:{light:n?.toString()||"300",normal:l?.toString()||"400",medium:p?.toString()||"500",semibold:d?.toString()||"600",bold:c?.toString()||"700"},lineHeight:{tight:u?.toString()||"1.25",normal:g?.toString()||"1.5",relaxed:b?.toString()||"1.75"}}}#R(e){let{baseShadowOpacity:t=.1,shadowBlurMultiplier:o=1,shadowOffsetMultiplier:a=1}=e,i=`rgba(0, 0, 0, ${t})`,s=`rgba(0, 0, 0, ${t*.5})`;return{sm:`0 ${1*a}px ${2*o}px 0 ${s}`,base:`0 ${1*a}px ${3*o}px 0 ${i}, 0 ${1*a}px ${2*o}px 0 ${s}`,md:`0 ${4*a}px ${6*o}px ${-1*a}px ${i}, 0 ${2*a}px ${4*o}px ${-1*a}px ${s}`,lg:`0 ${10*a}px ${15*o}px ${-3*a}px ${i}, 0 ${4*a}px ${6*o}px ${-2*a}px ${s}`,xl:`0 ${20*a}px ${25*o}px ${-5*a}px ${i}, 0 ${10*a}px ${10*o}px ${-5*a}px ${s}`,inner:`inset 0 ${2*a}px ${4*o}px 0 ${s}`}}#F(e){let{maxWidth:t=1200,containerPadding:o=16,breakpoints:a={sm:640,md:768,lg:1024,xl:1280}}=e,i=this.#k(e);return{maxWidth:this.#a(t,"1200px"),maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#a(o,"16px"),breakpoints:{sm:this.#a(a.sm,"640px"),md:this.#a(a.md,"768px"),lg:this.#a(a.lg,"1024px"),xl:this.#a(a.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#k(e={}){let t={sm:640,md:768,lg:1024,xl:1280},{maxWidths:o={},maxWidth:a=1200,containerPadding:i=16,breakpoints:s=t}=e||{},n=this.#l(i,16),l=this.#l(a,t.xl),p={sm:this.#l(s.sm,t.sm),md:this.#l(s.md,t.md),lg:this.#l(s.lg,t.lg),xl:this.#l(s.xl,t.xl)},d=u=>u?Math.max(320,u-n*2):l,c={sm:Math.min(l,d(p.sm)),md:Math.min(l,d(p.md)),lg:Math.min(l,d(p.lg)),xl:Math.max(320,l)};return{sm:this.#a(o.sm,`${c.sm}px`),md:this.#a(o.md,`${c.md}px`),lg:this.#a(o.lg,`${c.lg}px`),xl:this.#a(o.xl,`${c.xl}px`)}}#a(e,t){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:t}#l(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let o=parseFloat(e);if(Number.isFinite(o))return o}return t}#I(e){let{transitionSpeed:t=h.TransitionSpeeds.normal,animationEasing:o=h.AnimationEasings["ease-out"]}=e,a;return typeof t=="number"?a=t:typeof t=="string"&&h.TransitionSpeeds[t]?a=h.TransitionSpeeds[t]:a=h.TransitionSpeeds.normal,{fast:`${Math.round(a*.6)}ms`,normal:`${a}ms`,slow:`${Math.round(a*1.4)}ms`}}#N(e){let{baseZIndex:t=1e3,zIndexStep:o=10}=e;return{dropdown:t.toString(),sticky:(t+o*2).toString(),fixed:(t+o*3).toString(),modal:(t+o*4).toString(),drawer:(t+o*5).toString(),popover:(t+o*6).toString(),tooltip:(t+o*7).toString(),notification:(t+o*8).toString()}}#B(e){let{set:t="phosphor",weight:o="regular",defaultSize:a=24,sizes:i={xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64},spritePath:s="/assets/pds/icons/pds-icons.svg",externalPath:n="/assets/img/icons/"}=e;return{set:t,weight:o,defaultSize:`${a}px`,sizes:Object.fromEntries(Object.entries(i).map(([l,p])=>[l,`${p}px`])),spritePath:s,externalPath:n}}#O(e){let t=[];t.push(` /* Colors */
|
|
4
29
|
`);let o=(a,i="")=>{Object.entries(a).forEach(([s,n])=>{typeof n=="object"&&n!==null?o(n,`${i}${s}-`):typeof n=="string"&&t.push(` --color-${i}${s}: ${n};
|
|
5
30
|
`)})};return Object.entries(e).forEach(([a,i])=>{a!=="dark"&&a!=="surfaceSmart"&&a!=="interactive"&&typeof i=="object"&&i!==null&&o(i,`${a}-`)}),e.surfaceSmart&&(t.push(` /* Smart Surface Tokens (context-aware) */
|
|
6
31
|
`),Object.entries(e.surfaceSmart).forEach(([a,i])=>{t.push(` --surface-${a}-bg: ${i.bg};
|
|
@@ -80,7 +105,7 @@ var yr=Object.defineProperty;var vr=(r,e)=>()=>(r&&(e=r(r=0)),e);var wr=(r,e)=>{
|
|
|
80
105
|
`];return Object.entries(e).forEach(([o,a])=>{t.push(` --border-width-${o}: ${a};
|
|
81
106
|
`)}),`${t.join("")}
|
|
82
107
|
`}#q(e){let t=[` /* Typography */
|
|
83
|
-
`];return Object.entries(e).forEach(([o,a])=>{let i=o.replace(/^font/,"").replace(/^(.)/,s=>s.toLowerCase()).replace(/([A-Z])/g,"-$1").toLowerCase();Object.entries(a).forEach(([s,n])=>{let
|
|
108
|
+
`];return Object.entries(e).forEach(([o,a])=>{let i=o.replace(/^font/,"").replace(/^(.)/,s=>s.toLowerCase()).replace(/([A-Z])/g,"-$1").toLowerCase();Object.entries(a).forEach(([s,n])=>{let l=s.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(` --font-${i}-${l}: ${n};
|
|
84
109
|
`)})}),`${t.join("")}
|
|
85
110
|
`}#G(e){let t=[` /* Shadows */
|
|
86
111
|
`];return Object.entries(e).forEach(([o,a])=>{t.push(` --shadow-${o}: ${a};
|
|
@@ -100,7 +125,7 @@ var yr=Object.defineProperty;var vr=(r,e)=>()=>(r&&(e=r(r=0)),e);var wr=(r,e)=>{
|
|
|
100
125
|
`),t.push(` --icon-size: ${e.defaultSize};
|
|
101
126
|
`),Object.entries(e.sizes).forEach(([o,a])=>{t.push(` --icon-size-${o}: ${a};
|
|
102
127
|
`)}),`${t.join("")}
|
|
103
|
-
`}#Z(e){if(!e?.dark)return"";let t=[],o=(p,d="")=>{Object.entries(p).forEach(([
|
|
128
|
+
`}#Z(e){if(!e?.dark)return"";let t=[],o=(p,d="")=>{Object.entries(p).forEach(([c,u])=>{typeof u=="object"&&u!==null?o(u,`${d}${c}-`):typeof u=="string"&&t.push(` --color-${d}${c}: ${u};
|
|
104
129
|
`)})};Object.entries(e.dark).forEach(([p,d])=>{p!=="surfaceSmart"&&typeof d=="object"&&d!==null&&o(d,`${p}-`)});let a=[];e.dark.surfaceSmart&&(a.push(` /* Smart Surface Tokens (dark mode, context-aware) */
|
|
105
130
|
`),Object.entries(e.dark.surfaceSmart).forEach(([p,d])=>{a.push(` --surface-${p}-bg: ${d.bg};
|
|
106
131
|
`),a.push(` --surface-${p}-text: ${d.text};
|
|
@@ -135,16 +160,16 @@ var yr=Object.defineProperty;var vr=(r,e)=>()=>(r&&(e=r(r=0)),e);var wr=(r,e)=>{
|
|
|
135
160
|
--backdrop-background: var(--backdrop-bg);
|
|
136
161
|
`,n=this.#ee(e);return`html[data-theme="dark"] {
|
|
137
162
|
${[...t,...a,i,s,n].join("")}}
|
|
138
|
-
`}#Q(e){if(!e?.dark)return"";let t=[],o=(d,
|
|
139
|
-
`)})};Object.entries(e.dark).forEach(([d,
|
|
140
|
-
`),Object.entries(e.dark.surfaceSmart).forEach(([d,
|
|
141
|
-
`),a.push(` --surface-${d}-text: ${
|
|
142
|
-
`),a.push(` --surface-${d}-text-secondary: ${
|
|
143
|
-
`),a.push(` --surface-${d}-text-muted: ${
|
|
144
|
-
`),a.push(` --surface-${d}-icon: ${
|
|
145
|
-
`),a.push(` --surface-${d}-icon-subtle: ${
|
|
146
|
-
`),a.push(` --surface-${d}-shadow: ${
|
|
147
|
-
`),a.push(` --surface-${d}-border: ${
|
|
163
|
+
`}#Q(e){if(!e?.dark)return"";let t=[],o=(d,c="")=>{Object.entries(d).forEach(([u,g])=>{typeof g=="object"&&g!==null?o(g,`${c}${u}-`):typeof g=="string"&&t.push(` --color-${c}${u}: ${g};
|
|
164
|
+
`)})};Object.entries(e.dark).forEach(([d,c])=>{d!=="surfaceSmart"&&typeof c=="object"&&c!==null&&o(c,`${d}-`)});let a=[];e.dark.surfaceSmart&&(a.push(` /* Smart Surface Tokens (dark mode, context-aware) */
|
|
165
|
+
`),Object.entries(e.dark.surfaceSmart).forEach(([d,c])=>{a.push(` --surface-${d}-bg: ${c.bg};
|
|
166
|
+
`),a.push(` --surface-${d}-text: ${c.text};
|
|
167
|
+
`),a.push(` --surface-${d}-text-secondary: ${c.textSecondary};
|
|
168
|
+
`),a.push(` --surface-${d}-text-muted: ${c.textMuted};
|
|
169
|
+
`),a.push(` --surface-${d}-icon: ${c.icon};
|
|
170
|
+
`),a.push(` --surface-${d}-icon-subtle: ${c.iconSubtle};
|
|
171
|
+
`),a.push(` --surface-${d}-shadow: ${c.shadow};
|
|
172
|
+
`),a.push(` --surface-${d}-border: ${c.border};
|
|
148
173
|
`)}),a.push(`
|
|
149
174
|
`));let i=[];e.interactive&&e.interactive.dark&&(i.push(` /* Interactive Colors - optimized for specific use cases (dark mode) */
|
|
150
175
|
`),i.push(` --color-primary-fill: ${e.interactive.dark.fill}; /* For button backgrounds with white text */
|
|
@@ -171,9 +196,9 @@ ${[...t,...a,i,s,n].join("")}}
|
|
|
171
196
|
|
|
172
197
|
/* Legacy alias for backwards compatibility */
|
|
173
198
|
--backdrop-background: var(--backdrop-bg);
|
|
174
|
-
`,
|
|
199
|
+
`,l=this.#X(e);return`
|
|
175
200
|
html[data-theme="dark"] {
|
|
176
|
-
${[...t,...a,s,n,
|
|
201
|
+
${[...t,...a,s,n,l].join("")} }
|
|
177
202
|
`}#X(e){let t=e.dark||e,o=t.primary?.[400]||"#60a5fa",a=t.secondary?.[400]||"#a78bfa",i=t.accent?.[400]||"#fbbf24";return` /* Mesh Gradient Variables (Dark Mode) */
|
|
178
203
|
--background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, ${o} 20%, transparent) 0px, transparent 50%),
|
|
179
204
|
radial-gradient(at 97% 21%, color-mix(in oklab, ${a} 16%, transparent) 0px, transparent 50%),
|
|
@@ -225,12 +250,12 @@ ${[...t,...a,s,n,c].join("")} }
|
|
|
225
250
|
radial-gradient(at 10% 10%, color-mix(in oklab, ${i} 14%, transparent) 0px, transparent 50%),
|
|
226
251
|
radial-gradient(at 90% 10%, color-mix(in oklab, ${a} 13%, transparent) 0px, transparent 50%),
|
|
227
252
|
radial-gradient(at 50% 90%, color-mix(in oklab, ${i} 10%, transparent) 0px, transparent 50%);
|
|
228
|
-
`}#te(){return`/*
|
|
253
|
+
`}#te(){return`/* Callout dark mode adjustments */
|
|
229
254
|
html[data-theme="dark"] {
|
|
230
|
-
.
|
|
231
|
-
.
|
|
232
|
-
.
|
|
233
|
-
.
|
|
255
|
+
.callout-success { background-color: var(--color-success-50); border-color: var(--color-success-500); color: var(--color-success-900); }
|
|
256
|
+
.callout-info { background-color: var(--color-info-50); border-color: var(--color-info-500); color: var(--color-info-900); }
|
|
257
|
+
.callout-warning { background-color: var(--color-warning-50); border-color: var(--color-warning-500); color: var(--color-warning-900); }
|
|
258
|
+
.callout-danger, .callout-error { background-color: var(--color-danger-50); border-color: var(--color-danger-500); color: var(--color-danger-900); }
|
|
234
259
|
img, video { opacity: 0.8; transition: opacity var(--transition-normal); }
|
|
235
260
|
img:hover, video:hover { opacity: 1; }
|
|
236
261
|
}`}#re(){try{let e=this.options?.design?.options?.backgroundMesh;this.options.debug&&this.options.log?.("debug","backgroundMesh check:",e);let t=Number(e);return!Number.isFinite(t)||t===0?"":`/* Optional background mesh applied from config */
|
|
@@ -610,7 +635,7 @@ html[data-theme="dark"] .liquid-glass {
|
|
|
610
635
|
|
|
611
636
|
/* Dialog styles moved to #generateDialogStyles() */
|
|
612
637
|
|
|
613
|
-
`}#se(){let{gap:e,inputPadding:t,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:n,buttonMinHeight:
|
|
638
|
+
`}#se(){let{gap:e,inputPadding:t,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:n,buttonMinHeight:l,inputMinHeight:p}=this.options.design,d=t||.75,c=o||1,u=a||3,g=s||1,b=e||1,y=n||2,f=l||44;return`/* Mobile-First Form Styles - Generated from Design Config */
|
|
614
639
|
form {
|
|
615
640
|
margin: 0;
|
|
616
641
|
width: 100%;
|
|
@@ -769,7 +794,7 @@ input, textarea, select {
|
|
|
769
794
|
border-color: var(--color-danger-500);
|
|
770
795
|
|
|
771
796
|
&:focus {
|
|
772
|
-
box-shadow: 0 0 0 ${
|
|
797
|
+
box-shadow: 0 0 0 ${u}px color-mix(in oklab, var(--color-danger-500) ${Math.round((i||.3)*100)}%, transparent);
|
|
773
798
|
}
|
|
774
799
|
}
|
|
775
800
|
}
|
|
@@ -910,7 +935,7 @@ input[type="checkbox"] + label:not(fieldset label):not(label[data-toggle]) {
|
|
|
910
935
|
align-items: center;
|
|
911
936
|
justify-content: center;
|
|
912
937
|
min-height: calc(${f}px * 0.75);
|
|
913
|
-
padding: calc(var(--spacing-1) * ${
|
|
938
|
+
padding: calc(var(--spacing-1) * ${c*.6}) calc(var(--spacing-4) * 0.85);
|
|
914
939
|
border: ${g}px solid var(--color-border);
|
|
915
940
|
border-radius: var(--radius-md);
|
|
916
941
|
font-family: var(--font-family-body);
|
|
@@ -951,7 +976,7 @@ input[type="checkbox"]:checked + label:not(fieldset label):not(label[data-toggle
|
|
|
951
976
|
label:has(input[type="checkbox"]:focus):not(fieldset label):not(label[data-toggle]),
|
|
952
977
|
input[type="checkbox"]:focus + label:not(fieldset label):not(label[data-toggle]) {
|
|
953
978
|
outline: none;
|
|
954
|
-
box-shadow: 0 0 0 ${
|
|
979
|
+
box-shadow: 0 0 0 ${u}px color-mix(in oklab, var(--color-primary-500) ${Math.round((i||.3)*100)}%, transparent);
|
|
955
980
|
}
|
|
956
981
|
|
|
957
982
|
label:has(input[type="checkbox"]:disabled):not(fieldset label):not(label[data-toggle]),
|
|
@@ -1014,7 +1039,7 @@ fieldset[role="group"].buttons {
|
|
|
1014
1039
|
align-items: center;
|
|
1015
1040
|
justify-content: center;
|
|
1016
1041
|
min-height: calc(${f}px * 0.75);
|
|
1017
|
-
padding: calc(var(--spacing-1) * ${
|
|
1042
|
+
padding: calc(var(--spacing-1) * ${c*.6}) calc(var(--spacing-4) * 0.85);
|
|
1018
1043
|
border: 2px solid var(--color-border);
|
|
1019
1044
|
border-radius: var(--radius-md);
|
|
1020
1045
|
font-family: var(--font-family-body);
|
|
@@ -1059,7 +1084,7 @@ fieldset[role="group"].buttons {
|
|
|
1059
1084
|
label:has(input[type="radio"]:focus),
|
|
1060
1085
|
label:has(input[type="checkbox"]:focus) {
|
|
1061
1086
|
outline: none;
|
|
1062
|
-
box-shadow: 0 0 0 ${
|
|
1087
|
+
box-shadow: 0 0 0 ${u}px color-mix(in oklab, var(--color-primary-500) ${Math.round((i||.3)*100)}%, transparent);
|
|
1063
1088
|
}
|
|
1064
1089
|
|
|
1065
1090
|
label:has(input[type="radio"]:disabled),
|
|
@@ -1212,7 +1237,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1212
1237
|
align-items: center;
|
|
1213
1238
|
justify-content: center;
|
|
1214
1239
|
min-height: ${f}px;
|
|
1215
|
-
padding: calc(var(--spacing-1) * ${
|
|
1240
|
+
padding: calc(var(--spacing-1) * ${c}) var(--spacing-6);
|
|
1216
1241
|
border: ${g}px solid transparent;
|
|
1217
1242
|
border-radius: var(--radius-md);
|
|
1218
1243
|
font-family: var(--font-family-body);
|
|
@@ -1235,7 +1260,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1235
1260
|
|
|
1236
1261
|
&:focus {
|
|
1237
1262
|
outline: none;
|
|
1238
|
-
box-shadow: 0 0 0 ${
|
|
1263
|
+
box-shadow: 0 0 0 ${u}px color-mix(in oklab, var(--color-primary-500) ${Math.round((i||.3)*100)}%, transparent);
|
|
1239
1264
|
}
|
|
1240
1265
|
|
|
1241
1266
|
&:disabled {
|
|
@@ -1265,7 +1290,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1265
1290
|
}
|
|
1266
1291
|
|
|
1267
1292
|
&:focus {
|
|
1268
|
-
box-shadow: 0 0 0 ${
|
|
1293
|
+
box-shadow: 0 0 0 ${u}px color-mix(in oklab, var(--color-primary-500) ${Math.round((i||.3)*100)}%, transparent);
|
|
1269
1294
|
}
|
|
1270
1295
|
|
|
1271
1296
|
&:disabled {
|
|
@@ -1374,6 +1399,91 @@ a.btn-working {
|
|
|
1374
1399
|
100% { background-position: -200% 0; }
|
|
1375
1400
|
}
|
|
1376
1401
|
|
|
1402
|
+
/* Empty State */
|
|
1403
|
+
.empty-state {
|
|
1404
|
+
margin: auto;
|
|
1405
|
+
text-align: center;
|
|
1406
|
+
display: flex;
|
|
1407
|
+
flex-direction: column;
|
|
1408
|
+
align-items: center;
|
|
1409
|
+
gap: var(--spacing-4);
|
|
1410
|
+
color: var(--color-text-secondary);
|
|
1411
|
+
padding: var(--spacing-6) var(--spacing-4);
|
|
1412
|
+
background-color: var(--color-surface-subtle);
|
|
1413
|
+
max-width: var(--layout-max-width-md);
|
|
1414
|
+
border-radius: var(--radius-md);
|
|
1415
|
+
nav {
|
|
1416
|
+
margin-top: var(--spacing-4);
|
|
1417
|
+
display: flex;
|
|
1418
|
+
gap: var(--spacing-3);
|
|
1419
|
+
}
|
|
1420
|
+
pds-icon {
|
|
1421
|
+
color: var(--color-text-muted);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
/* clip lines */
|
|
1426
|
+
|
|
1427
|
+
[data-clip] {
|
|
1428
|
+
display: -webkit-box;
|
|
1429
|
+
-webkit-box-orient: vertical;
|
|
1430
|
+
overflow: hidden;
|
|
1431
|
+
-webkit-line-clamp: attr(data-clip number, 3);
|
|
1432
|
+
line-clamp: attr(data-clip number, 3);
|
|
1433
|
+
position: relative;
|
|
1434
|
+
padding-inline-end: var(--spacing-6);
|
|
1435
|
+
--clip-more-bg: var(--color-surface-base);
|
|
1436
|
+
max-height: var(--clip-max-height-closed, calc(var(--spacing-12) * 3));
|
|
1437
|
+
transition: max-height var(--transition-fast), padding-inline-end var(--transition-fast);
|
|
1438
|
+
overflow: hidden;
|
|
1439
|
+
|
|
1440
|
+
/* optional visual \u201Cmore\u201D hint*/
|
|
1441
|
+
&:not([data-clip-open="true"])[data-clip-more]::after{
|
|
1442
|
+
content: attr(data-clip-more);
|
|
1443
|
+
}
|
|
1444
|
+
|
|
1445
|
+
&:not([data-clip-open="true"]):not([data-clip-more])::after{
|
|
1446
|
+
content: "more...";
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
/* optional visual \u201Cless\u201D hint*/
|
|
1450
|
+
&[data-clip-open="true"][data-clip-less]::after{
|
|
1451
|
+
content: attr(data-clip-less);
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
&[data-clip-open="true"]:not([data-clip-less])::after{
|
|
1455
|
+
content: "less...";
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
&::after{
|
|
1459
|
+
position: absolute;
|
|
1460
|
+
inset-block-end: 0;
|
|
1461
|
+
inset-inline-end: 0;
|
|
1462
|
+
display: inline-flex;
|
|
1463
|
+
align-items: center;
|
|
1464
|
+
padding: var
|
|
1465
|
+
padding-inline-start: var(--spacing-2);
|
|
1466
|
+
cursor: pointer;
|
|
1467
|
+
opacity: .7;
|
|
1468
|
+
transition: opacity var(--transition-fast), transform var(--transition-fast);
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
&[data-clip-open="true"] {
|
|
1472
|
+
-webkit-line-clamp: unset;
|
|
1473
|
+
line-clamp: unset;
|
|
1474
|
+
max-height: var(--clip-max-height-open, calc(var(--spacing-12) * 20));
|
|
1475
|
+
padding-inline-end: var(--spacing-6);
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
&[data-clip-open="true"]::after{
|
|
1479
|
+
opacity: .9;
|
|
1480
|
+
transform: translateY(calc(var(--spacing-1) * -1));
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
|
|
1377
1487
|
/* Form utility classes */
|
|
1378
1488
|
.range-container {
|
|
1379
1489
|
display: flex;
|
|
@@ -1553,10 +1663,9 @@ tbody {
|
|
|
1553
1663
|
}
|
|
1554
1664
|
}
|
|
1555
1665
|
|
|
1556
|
-
`}#ce(){return`/*
|
|
1666
|
+
`}#ce(){return`/* Callout/Notification Styles */
|
|
1557
1667
|
|
|
1558
|
-
|
|
1559
|
-
.alert, .semantic-message {
|
|
1668
|
+
.callout {
|
|
1560
1669
|
padding: var(--spacing-4);
|
|
1561
1670
|
border-radius: var(--radius-md);
|
|
1562
1671
|
margin: 0 0 var(--spacing-4) 0;
|
|
@@ -1566,46 +1675,42 @@ tbody {
|
|
|
1566
1675
|
gap: var(--spacing-3);
|
|
1567
1676
|
font-size: var(--font-size-sm);
|
|
1568
1677
|
line-height: var(--font-line-height-relaxed);
|
|
1678
|
+
background-color: red;
|
|
1569
1679
|
|
|
1570
1680
|
& > *:last-child {
|
|
1571
1681
|
margin-bottom: 0;
|
|
1572
1682
|
}
|
|
1573
1683
|
}
|
|
1574
1684
|
/* Variants: success/info/warning/danger mapped to tokens */
|
|
1575
|
-
.
|
|
1685
|
+
.callout-success {
|
|
1576
1686
|
background-color: var(--color-success-50);
|
|
1577
1687
|
border-color: var(--color-success-600);
|
|
1578
1688
|
color: var(--color-success-900);
|
|
1579
1689
|
}
|
|
1580
|
-
.
|
|
1690
|
+
.callout-info {
|
|
1581
1691
|
background-color: var(--color-info-50);
|
|
1582
1692
|
border-color: var(--color-info-600);
|
|
1583
1693
|
color: var(--color-info-900);
|
|
1584
1694
|
}
|
|
1585
|
-
.
|
|
1695
|
+
.callout-warning {
|
|
1586
1696
|
background-color: var(--color-warning-50);
|
|
1587
1697
|
border-color: var(--color-warning-600);
|
|
1588
1698
|
color: var(--color-warning-900);
|
|
1589
1699
|
}
|
|
1590
|
-
.
|
|
1591
|
-
.
|
|
1592
|
-
.semantic-message.danger {
|
|
1700
|
+
.callout-danger,
|
|
1701
|
+
.callout-error {
|
|
1593
1702
|
background-color: var(--color-danger-50);
|
|
1594
1703
|
border-color: var(--color-danger-600);
|
|
1595
1704
|
color: var(--color-danger-900);
|
|
1596
1705
|
}
|
|
1597
1706
|
|
|
1598
|
-
|
|
1599
|
-
.semantic-message strong { display: block; }
|
|
1600
|
-
.semantic-message p { margin: 0; font-size: var(--font-size-sm); }
|
|
1601
|
-
|
|
1602
|
-
.alert-title {
|
|
1707
|
+
.callout-title {
|
|
1603
1708
|
font-weight: var(--font-weight-semibold);
|
|
1604
1709
|
margin: 0 0 var(--spacing-2) 0;
|
|
1605
1710
|
font-size: var(--font-size-base);
|
|
1606
1711
|
}
|
|
1607
1712
|
|
|
1608
|
-
.
|
|
1713
|
+
.callout-icon {
|
|
1609
1714
|
flex-shrink: 0;
|
|
1610
1715
|
display: flex;
|
|
1611
1716
|
align-items: center;
|
|
@@ -1616,12 +1721,12 @@ tbody {
|
|
|
1616
1721
|
}
|
|
1617
1722
|
}
|
|
1618
1723
|
|
|
1619
|
-
.
|
|
1724
|
+
.callout-dismissible {
|
|
1620
1725
|
padding-right: var(--spacing-12);
|
|
1621
1726
|
position: relative;
|
|
1622
1727
|
}
|
|
1623
1728
|
|
|
1624
|
-
.
|
|
1729
|
+
.callout-close {
|
|
1625
1730
|
position: absolute;
|
|
1626
1731
|
top: var(--spacing-3);
|
|
1627
1732
|
right: var(--spacing-3);
|
|
@@ -2080,7 +2185,7 @@ pds-tabstrip {
|
|
|
2080
2185
|
*:hover { scrollbar-color: var(--color-secondary-400) transparent; }
|
|
2081
2186
|
@media (prefers-color-scheme: dark) { *:hover { scrollbar-color: var(--color-secondary-500) transparent; } }
|
|
2082
2187
|
|
|
2083
|
-
`}#ge(){let{a11y:e={}}=this.options.design,t=e.minTouchTarget||
|
|
2188
|
+
`}#ge(){let{a11y:e={}}=this.options.design,t=e.minTouchTarget||h.TouchTargetSizes.standard;return`/* Icon System */
|
|
2084
2189
|
|
|
2085
2190
|
pds-icon {
|
|
2086
2191
|
display: inline-flex;
|
|
@@ -2098,6 +2203,8 @@ pds-icon {
|
|
|
2098
2203
|
.icon-lg, pds-icon[size="lg"] { width: var(--icon-size-lg); height: var(--icon-size-lg); }
|
|
2099
2204
|
.icon-xl, pds-icon[size="xl"] { width: var(--icon-size-xl); height: var(--icon-size-xl); }
|
|
2100
2205
|
.icon-2xl, pds-icon[size="2xl"] { width: var(--icon-size-2xl); height: var(--icon-size-2xl); }
|
|
2206
|
+
.icon-32xl, pds-icon[size="3xl"] { width: var(--icon-size-3xl); height: var(--icon-size-3xl); }
|
|
2207
|
+
|
|
2101
2208
|
|
|
2102
2209
|
/* Icon color utilities */
|
|
2103
2210
|
.icon-primary, pds-icon.primary { color: var(--color-primary-600); }
|
|
@@ -2156,9 +2263,8 @@ nav[data-dropdown] {
|
|
|
2156
2263
|
display: inline-block;
|
|
2157
2264
|
padding: 0;
|
|
2158
2265
|
|
|
2159
|
-
|
|
2266
|
+
& > :last-child {
|
|
2160
2267
|
position: absolute;
|
|
2161
|
-
list-style: none;
|
|
2162
2268
|
padding: var(--spacing-2);
|
|
2163
2269
|
margin: 0;
|
|
2164
2270
|
background: var(--color-surface-overlay);
|
|
@@ -2171,8 +2277,11 @@ nav[data-dropdown] {
|
|
|
2171
2277
|
right: auto;
|
|
2172
2278
|
margin-top: var(--spacing-2);
|
|
2173
2279
|
--dropdown-transition-duration: var(--transition-fast, 160ms);
|
|
2174
|
-
min-width:
|
|
2280
|
+
min-width: var(--dropdown-min-width, 12rem);
|
|
2175
2281
|
width: max-content;
|
|
2282
|
+
inline-size: max-content;
|
|
2283
|
+
max-width: none;
|
|
2284
|
+
max-inline-size: none;
|
|
2176
2285
|
opacity: 0;
|
|
2177
2286
|
scale: 0.95;
|
|
2178
2287
|
visibility: hidden;
|
|
@@ -2190,8 +2299,8 @@ nav[data-dropdown] {
|
|
|
2190
2299
|
transition-behavior: allow-discrete;
|
|
2191
2300
|
}
|
|
2192
2301
|
|
|
2193
|
-
|
|
2194
|
-
display: block;
|
|
2302
|
+
& > :last-child[aria-hidden="false"] {
|
|
2303
|
+
display: inline-block;
|
|
2195
2304
|
opacity: 1;
|
|
2196
2305
|
scale: 1;
|
|
2197
2306
|
visibility: visible;
|
|
@@ -2203,7 +2312,11 @@ nav[data-dropdown] {
|
|
|
2203
2312
|
display 0s linear 0s;
|
|
2204
2313
|
}
|
|
2205
2314
|
|
|
2206
|
-
|
|
2315
|
+
menu {
|
|
2316
|
+
list-style: none;
|
|
2317
|
+
}
|
|
2318
|
+
|
|
2319
|
+
menu li {
|
|
2207
2320
|
padding: var(--spacing-1) 0;
|
|
2208
2321
|
|
|
2209
2322
|
& + li {
|
|
@@ -2229,7 +2342,7 @@ nav[data-dropdown] {
|
|
|
2229
2342
|
}
|
|
2230
2343
|
}
|
|
2231
2344
|
|
|
2232
|
-
a {
|
|
2345
|
+
menu a {
|
|
2233
2346
|
display: flex;
|
|
2234
2347
|
color: var(--color-text-primary);
|
|
2235
2348
|
text-decoration: none;
|
|
@@ -2246,7 +2359,7 @@ nav[data-dropdown] {
|
|
|
2246
2359
|
&[data-align="end"],
|
|
2247
2360
|
&[data-dropdown-align="right"],
|
|
2248
2361
|
&[data-dropdown-align="end"] {
|
|
2249
|
-
|
|
2362
|
+
& > :last-child {
|
|
2250
2363
|
left: auto;
|
|
2251
2364
|
right: 0;
|
|
2252
2365
|
}
|
|
@@ -2254,7 +2367,7 @@ nav[data-dropdown] {
|
|
|
2254
2367
|
|
|
2255
2368
|
&[data-mode="up"],
|
|
2256
2369
|
&[data-dropdown-direction="up"] {
|
|
2257
|
-
|
|
2370
|
+
& > :last-child {
|
|
2258
2371
|
top: auto;
|
|
2259
2372
|
bottom: 100%;
|
|
2260
2373
|
margin-top: 0;
|
|
@@ -2265,7 +2378,7 @@ nav[data-dropdown] {
|
|
|
2265
2378
|
|
|
2266
2379
|
&[data-mode="down"],
|
|
2267
2380
|
&[data-dropdown-direction="down"] {
|
|
2268
|
-
|
|
2381
|
+
& > :last-child {
|
|
2269
2382
|
top: 100%;
|
|
2270
2383
|
bottom: auto;
|
|
2271
2384
|
margin-top: var(--spacing-2);
|
|
@@ -2274,20 +2387,20 @@ nav[data-dropdown] {
|
|
|
2274
2387
|
}
|
|
2275
2388
|
}
|
|
2276
2389
|
|
|
2277
|
-
&[data-mode="auto"]
|
|
2390
|
+
&[data-mode="auto"] > :last-child {
|
|
2278
2391
|
top: 100%;
|
|
2279
2392
|
bottom: auto;
|
|
2280
2393
|
}
|
|
2281
2394
|
|
|
2282
2395
|
@media (prefers-reduced-motion: reduce) {
|
|
2283
|
-
|
|
2396
|
+
& > :last-child {
|
|
2284
2397
|
transition-duration: 0.01s !important;
|
|
2285
2398
|
}
|
|
2286
2399
|
}
|
|
2287
2400
|
}
|
|
2288
2401
|
|
|
2289
2402
|
@starting-style {
|
|
2290
|
-
nav[data-dropdown]
|
|
2403
|
+
nav[data-dropdown] > :last-child[aria-hidden="false"] {
|
|
2291
2404
|
opacity: 0;
|
|
2292
2405
|
scale: 0.95;
|
|
2293
2406
|
}
|
|
@@ -2313,10 +2426,10 @@ nav[data-dropdown] {
|
|
|
2313
2426
|
gap: var(--spacing-4);
|
|
2314
2427
|
}
|
|
2315
2428
|
|
|
2316
|
-
`];for(let
|
|
2429
|
+
`];for(let l of a)n.push(`.grid-cols-${l} { grid-template-columns: repeat(${l}, 1fr); }
|
|
2317
2430
|
`);n.push(`
|
|
2318
2431
|
/* Auto-fit grids (responsive) */
|
|
2319
|
-
`);for(let[
|
|
2432
|
+
`);for(let[l,p]of Object.entries(i))n.push(`.grid-auto-${l} { grid-template-columns: repeat(auto-fit, minmax(${p}, 1fr)); }
|
|
2320
2433
|
`);return n.push(`
|
|
2321
2434
|
/* Gap utilities */
|
|
2322
2435
|
.gap-0 { gap: 0; } .gap-xs { gap: var(--spacing-1); } .gap-sm { gap: var(--spacing-2); } .gap-md { gap: var(--spacing-4); } .gap-lg { gap: var(--spacing-6); } .gap-xl { gap: var(--spacing-8); }
|
|
@@ -2436,7 +2549,7 @@ nav[data-dropdown] {
|
|
|
2436
2549
|
height: auto;
|
|
2437
2550
|
}
|
|
2438
2551
|
|
|
2439
|
-
`}#ye(){let{layout:e={},a11y:t={}}=this.options.design,o=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},a=t.minTouchTarget||
|
|
2552
|
+
`}#ye(){let{layout:e={},a11y:t={}}=this.options.design,o=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},a=t.minTouchTarget||h.TouchTargetSizes.standard;return`/* Mobile-First Responsive Design */
|
|
2440
2553
|
|
|
2441
2554
|
/* Small devices (${o.sm}px and up) */
|
|
2442
2555
|
@media (min-width: ${o.sm}px) {
|
|
@@ -2540,7 +2653,7 @@ nav[data-dropdown] {
|
|
|
2540
2653
|
}
|
|
2541
2654
|
}
|
|
2542
2655
|
|
|
2543
|
-
`}#s(e){let t=parseInt(e.slice(1,3),16)/255,o=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,i=Math.max(t,o,a),s=Math.min(t,o,a),n,
|
|
2656
|
+
`}#s(e){let t=parseInt(e.slice(1,3),16)/255,o=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,i=Math.max(t,o,a),s=Math.min(t,o,a),n,l,p=(i+s)/2;if(i===s)n=l=0;else{let d=i-s;switch(l=p>.5?d/(2-i-s):d/(i+s),i){case t:n=(o-a)/d+(o<a?6:0);break;case o:n=(a-t)/d+2;break;case a:n=(t-o)/d+4;break}n/=6}return{h:n*360,s:l*100,l:p*100}}#t(e,t,o){e=e/360,t=t/100,o=o/100;let a=(p,d,c)=>(c<0&&(c+=1),c>1&&(c-=1),c<1/6?p+(d-p)*6*c:c<1/2?d:c<2/3?p+(d-p)*(2/3-c)*6:p),i,s,n;if(t===0)i=s=n=o;else{let p=o<.5?o*(1+t):o+t-o*t,d=2*o-p;i=a(d,p,e+1/3),s=a(d,p,e),n=a(d,p,e-1/3)}let l=p=>{let d=Math.round(p*255).toString(16);return d.length===1?"0"+d:d};return`#${l(i)}${l(s)}${l(n)}`}getTokens(){return this.tokens}exportCSS(){return this.layeredCSS}#ve(){this.#e={tokens:this.#we(),primitives:this.#xe(),components:this.#ke(),utilities:this.#Se()},this.options.debug&&this.options.log?.("debug","[Generator] Layer sizes:",{tokens:`${(this.#e.tokens.length/1024).toFixed(2)} KB`,primitives:`${(this.#e.primitives.length/1024).toFixed(2)} KB`,components:`${(this.#e.components.length/1024).toFixed(2)} KB`,utilities:`${(this.#e.utilities.length/1024).toFixed(2)} KB`})}#we(){let{colors:e,spacing:t,radius:o,borderWidths:a,typography:i,shadows:s,layout:n,transitions:l,zIndex:p,icons:d}=this.tokens,c=[`@layer tokens {
|
|
2544
2657
|
:root {
|
|
2545
2658
|
${this.#O(e)}
|
|
2546
2659
|
${this.#H(t)}
|
|
@@ -2549,14 +2662,14 @@ nav[data-dropdown] {
|
|
|
2549
2662
|
${this.#q(i)}
|
|
2550
2663
|
${this.#G(s)}
|
|
2551
2664
|
${this.#V(n)}
|
|
2552
|
-
${this.#J(
|
|
2665
|
+
${this.#J(l)}
|
|
2553
2666
|
${this.#K(p)}
|
|
2554
2667
|
${this.#Y(d)}
|
|
2555
2668
|
}
|
|
2556
2669
|
${this.#Q(e)}
|
|
2557
|
-
}`];return
|
|
2670
|
+
}`];return c.push(`
|
|
2558
2671
|
/* Non-layered dark variables fallback (ensures attribute wins) */
|
|
2559
|
-
`),
|
|
2672
|
+
`),c.push(this.#Z(e)),c.join("")}#xe(){let{advanced:e={},a11y:t={},layout:o={}}=this.options.design,a=e.tabSize||h.TabSizes.standard,i=t.minTouchTarget||h.TouchTargetSizes.standard,s=o.breakpoints||{sm:640,md:768,lg:1024,xl:1280};return`@layer primitives {
|
|
2560
2673
|
/* Base HTML reset */
|
|
2561
2674
|
*, *::before, *::after {
|
|
2562
2675
|
box-sizing: border-box;
|
|
@@ -2933,6 +3046,21 @@ ${this.#ne()}
|
|
|
2933
3046
|
padding: var(--spacing-4);
|
|
2934
3047
|
}
|
|
2935
3048
|
|
|
3049
|
+
:where(.card:has(> header):has(> footer)) {
|
|
3050
|
+
display: grid;
|
|
3051
|
+
grid-template-rows: auto 1fr auto;
|
|
3052
|
+
gap: var(--spacing-4);
|
|
3053
|
+
}
|
|
3054
|
+
|
|
3055
|
+
:where(.card > footer) {
|
|
3056
|
+
display: flex;
|
|
3057
|
+
justify-content: space-evenly;
|
|
3058
|
+
}
|
|
3059
|
+
|
|
3060
|
+
:where(.card > header > :last-child:not(:first-child)) {
|
|
3061
|
+
color: var(--color-text-muted);
|
|
3062
|
+
}
|
|
3063
|
+
|
|
2936
3064
|
.card-elevated {
|
|
2937
3065
|
background: var(--color-surface-elevated);
|
|
2938
3066
|
box-shadow: var(--shadow-md);
|
|
@@ -3156,53 +3284,24 @@ ${this.#ye()}
|
|
|
3156
3284
|
`}#$e(){this.#r={tokens:new CSSStyleSheet,primitives:new CSSStyleSheet,components:new CSSStyleSheet,utilities:new CSSStyleSheet},this.#Ce()}#Ce(){this.#r.tokens.replaceSync(this.#e.tokens),this.#r.primitives.replaceSync(this.#e.primitives),this.#r.components.replaceSync(this.#e.components),this.#r.utilities.replaceSync(this.#e.utilities)}get tokensCSS(){return this.#e?.tokens||""}get primitivesCSS(){return this.#e?.primitives||""}get componentsCSS(){return this.#e?.components||""}get utilitiesCSS(){return this.#e?.utilities||""}get layeredCSS(){return this.#e?`${this.#e.tokens}
|
|
3157
3285
|
${this.#e.primitives}
|
|
3158
3286
|
${this.#e.components}
|
|
3159
|
-
${this.#e.utilities}`:""}get compiled(){return{tokens:{colors:this.tokens.colors,spacing:this.tokens.spacing,radius:this.tokens.radius,borderWidths:this.tokens.borderWidths,typography:this.tokens.typography,shadows:this.tokens.shadows,layout:this.tokens.layout,transitions:this.tokens.transitions,zIndex:this.tokens.zIndex,icons:this.tokens.icons},layers:{tokens:{css:this.#e?.tokens||"",size:this.#e?.tokens?.length||0,sizeKB:((this.#e?.tokens?.length||0)/1024).toFixed(2)},primitives:{css:this.#e?.primitives||"",size:this.#e?.primitives?.length||0,sizeKB:((this.#e?.primitives?.length||0)/1024).toFixed(2)},components:{css:this.#e?.components||"",size:this.#e?.components?.length||0,sizeKB:((this.#e?.components?.length||0)/1024).toFixed(2)},utilities:{css:this.#e?.utilities||"",size:this.#e?.utilities?.length||0,sizeKB:((this.#e?.utilities?.length||0)/1024).toFixed(2)},combined:{css:this.layeredCSS,size:this.layeredCSS?.length||0,sizeKB:((this.layeredCSS?.length||0)/1024).toFixed(2)}},config:{design:this.options.design||{},preset:this.options.preset||null,debug:this.options.debug||!1},capabilities:{constructableStylesheets:typeof CSSStyleSheet<"u",blobURLs:typeof Blob<"u"&&typeof URL<"u",shadowDOM:typeof ShadowRoot<"u"},references:{ontology:typeof
|
|
3287
|
+
${this.#e.utilities}`:""}get compiled(){return{tokens:{colors:this.tokens.colors,spacing:this.tokens.spacing,radius:this.tokens.radius,borderWidths:this.tokens.borderWidths,typography:this.tokens.typography,shadows:this.tokens.shadows,layout:this.tokens.layout,transitions:this.tokens.transitions,zIndex:this.tokens.zIndex,icons:this.tokens.icons},layers:{tokens:{css:this.#e?.tokens||"",size:this.#e?.tokens?.length||0,sizeKB:((this.#e?.tokens?.length||0)/1024).toFixed(2)},primitives:{css:this.#e?.primitives||"",size:this.#e?.primitives?.length||0,sizeKB:((this.#e?.primitives?.length||0)/1024).toFixed(2)},components:{css:this.#e?.components||"",size:this.#e?.components?.length||0,sizeKB:((this.#e?.components?.length||0)/1024).toFixed(2)},utilities:{css:this.#e?.utilities||"",size:this.#e?.utilities?.length||0,sizeKB:((this.#e?.utilities?.length||0)/1024).toFixed(2)},combined:{css:this.layeredCSS,size:this.layeredCSS?.length||0,sizeKB:((this.layeredCSS?.length||0)/1024).toFixed(2)}},config:{design:this.options.design||{},preset:this.options.preset||null,debug:this.options.debug||!1},capabilities:{constructableStylesheets:typeof CSSStyleSheet<"u",blobURLs:typeof Blob<"u"&&typeof URL<"u",shadowDOM:typeof ShadowRoot<"u"},references:{ontology:typeof vt<"u"?vt:null,enums:typeof h<"u"?h:null},meta:{generatedAt:new Date().toISOString(),totalSize:(this.#e?.tokens?.length||0)+(this.#e?.primitives?.length||0)+(this.#e?.components?.length||0)+(this.#e?.utilities?.length||0),totalSizeKB:(((this.#e?.tokens?.length||0)+(this.#e?.primitives?.length||0)+(this.#e?.components?.length||0)+(this.#e?.utilities?.length||0))/1024).toFixed(2),layerCount:4,tokenGroups:Object.keys(this.tokens).length},helpers:{getColorScales:()=>{let e=[],t=this.tokens.colors;for(let[o,a]of Object.entries(t))typeof a=="object"&&a!==null&&e.push({name:o,scale:a});return e},getColorScale:e=>this.tokens.colors[e]||null,getSpacingValues:()=>Object.entries(this.tokens.spacing).map(([e,t])=>({key:e,value:t})),getTypography:()=>this.tokens.typography,getLayerCSS:e=>{let t=["tokens","primitives","components","utilities"];if(!t.includes(e))throw new Error(`Invalid layer: ${e}. Must be one of ${t.join(", ")}`);return this.#e?.[e]||""},usesEnumValue:(e,t)=>{let o=this.options.design||{};return JSON.stringify(o).includes(t)}}}}get tokensStylesheet(){return this.#r?.tokens}get primitivesStylesheet(){return this.#r?.primitives}get componentsStylesheet(){return this.#r?.components}get utilitiesStylesheet(){return this.#r?.utilities}getCSSModules(){return{"pds-tokens.css.js":this.#d("tokens",this.#e.tokens),"pds-primitives.css.js":this.#d("primitives",this.#e.primitives),"pds-components.css.js":this.#d("components",this.#e.components),"pds-utilities.css.js":this.#d("utilities",this.#e.utilities),"pds-styles.css.js":this.#d("styles",this.layeredCSS)}}#d(e,t){let o=t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$/g,"\\$");return`// Pure Design System - ${e}
|
|
3160
3288
|
// Auto-generated - do not edit directly
|
|
3161
3289
|
|
|
3162
3290
|
export const ${e} = new CSSStyleSheet();
|
|
3163
3291
|
${e}.replaceSync(\`${o}\`);
|
|
3164
3292
|
|
|
3165
3293
|
export const ${e}CSS = \`${o}\`;
|
|
3166
|
-
`}};function
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
</header>
|
|
3170
|
-
`;let p=document.createElement("article");for(p.className="dialog-body";c.firstChild;)p.appendChild(c.firstChild);c.appendChild(p);let d=document.createElement("footer");d.innerHTML=i.join(""),c.appendChild(d),a.appendChild(c)}else a.innerHTML=`
|
|
3171
|
-
<header>
|
|
3172
|
-
<h2>${e.title}</h2>
|
|
3173
|
-
</header>
|
|
3174
|
-
<article id="msg-container"></article>
|
|
3175
|
-
<footer>
|
|
3176
|
-
${i.join("")}
|
|
3177
|
-
</footer>
|
|
3178
|
-
`,a.querySelector("#msg-container").appendChild(n)}else{a.innerHTML=`
|
|
3179
|
-
<form method="dialog">
|
|
3180
|
-
<header>
|
|
3181
|
-
<h2>${e.title}</h2>
|
|
3182
|
-
</header>
|
|
3183
|
-
|
|
3184
|
-
<article id="msg-container"></article>
|
|
3185
|
-
|
|
3186
|
-
<footer>
|
|
3187
|
-
${i.join("")}
|
|
3188
|
-
</footer>
|
|
3189
|
-
</form>
|
|
3190
|
-
`;let n=a.querySelector("#msg-container");typeof r=="object"&&r._$litType$?N(r,n):typeof r=="string"?n.textContent=r:N(r,n)}a.addEventListener("click",n=>{n.target.closest('button[value="cancel"]')&&(a.close(),o(!1))});let s=()=>{let n=a.querySelector("form");n?n.addEventListener("submit",c=>{c.preventDefault();let p;e.useForm&&c.submitter.value==="ok"?(console.log("Found form:",n),console.log("Form elements:",n?Array.from(n.elements):"no form"),p=new FormData(n),console.log("FormData entries:",Array.from(p.entries()))):p=c.submitter.value==="ok",a.close(),o(p)}):requestAnimationFrame(s)};s(),a.addEventListener("close",()=>{setTimeout(()=>a.remove(),200)}),document.body.appendChild(a),typeof e.rendered=="function"&&e.rendered(a),a.showModal()})}async function qr(){let r=document.querySelector("pds-toaster");return r||(r=document.createElement("pds-toaster"),document.body.appendChild(r),await customElements.whenDefined("pds-toaster")),r}async function P(r,e={}){return(await qr()).toast(r,e)}P.success=async function(r,e={}){return P(r,{...e,type:"success"})};P.error=async function(r,e={}){return P(r,{...e,type:"error"})};P.warning=async function(r,e={}){return P(r,{...e,type:"warning"})};P.info=async function(r,e={}){return P(r,{...e,type:"information"})};var Gr=[{selector:".accordion"},{selector:"nav[data-dropdown]"},{selector:"label[data-toggle]"},{selector:'input[type="range"]'},{selector:"form[data-required]"},{selector:"fieldset[role=group][data-open]"},{selector:"button, a[class*='btn-']"}];function Vr(r){r.dataset.enhancedAccordion||(r.dataset.enhancedAccordion="true",r.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===r&&r.querySelectorAll(":scope > details[open]").forEach(t=>{t!==e.target&&(t.open=!1)})},!0))}function Jr(r){if(r.dataset.enhancedDropdown)return;r.dataset.enhancedDropdown="true";let e=r.querySelector("menu");if(!e)return;let t=r.querySelector("[data-dropdown-toggle]")||r.querySelector("button");t&&!t.hasAttribute("type")&&t.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`),e.setAttribute("role",e.getAttribute("role")||"menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),t&&(t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-expanded","false"));let o=()=>{let n=(r.getAttribute("data-mode")||"auto").toLowerCase();if(n==="up"||n==="down")return n;let c=r.getBoundingClientRect(),p=Math.max(0,window.innerHeight-c.bottom);return Math.max(0,c.top)>p?"up":"down"},a=()=>{r.dataset.dropdownDirection=o(),e.setAttribute("aria-hidden","false"),t?.setAttribute("aria-expanded","true")},i=()=>{e.setAttribute("aria-hidden","true"),t?.setAttribute("aria-expanded","false")},s=()=>{e.getAttribute("aria-hidden")==="false"?i():a()};t?.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),s()}),document.addEventListener("click",n=>{r.contains(n.target)||i()}),r.addEventListener("keydown",n=>{n.key==="Escape"&&(i(),t?.focus())}),r.addEventListener("focusout",n=>{(!n.relatedTarget||!r.contains(n.relatedTarget))&&i()})}function Kr(r){if(r.dataset.enhancedToggle)return;r.dataset.enhancedToggle="true";let e=r.querySelector('input[type="checkbox"]');if(!e)return;r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.setAttribute("role","switch"),r.setAttribute("aria-checked",e.checked?"true":"false");let t=document.createElement("span");t.className="toggle-switch",t.setAttribute("role","presentation"),t.setAttribute("aria-hidden","true");let o=document.createElement("span");o.className="toggle-knob",t.appendChild(o),r.insertBefore(t,e.nextSibling);let a=()=>{r.setAttribute("aria-checked",e.checked?"true":"false")},i=()=>{e.disabled||(e.checked=!e.checked,a(),e.dispatchEvent(new Event("change",{bubbles:!0})))};r.addEventListener("click",s=>{s.preventDefault(),i()}),r.addEventListener("keydown",s=>{(s.key===" "||s.key==="Enter")&&(s.preventDefault(),i())}),e.addEventListener("change",a)}function Yr(r){if(r.dataset.enhancedRange)return;let e=r.closest("label"),t=e?.classList.contains("range-output"),o=r.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(r.id=o,t){let i=e.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=document.createElement("span");s.className="range-output-wrapper",s.style.display="flex",s.style.justifyContent="space-between",s.style.alignItems="center";let n=document.createElement("span");n.textContent=i.textContent,s.appendChild(n);let c=document.createElement("output");c.id=a,c.setAttribute("for",o),c.style.color="var(--surface-text-secondary, var(--color-text-secondary))",c.style.fontSize="0.875rem",c.textContent=r.value,s.appendChild(c),i.textContent="",i.appendChild(s);let p=()=>{c.textContent=r.value};r.addEventListener("input",p)}}else{let i=r.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",r.parentNode?.insertBefore(i,r),i.appendChild(r)),i.style.position="relative";let s=document.createElement("output");s.id=a,s.setAttribute("for",o),s.className="range-bubble",s.setAttribute("aria-live","polite"),i.appendChild(s);let n=()=>{let d=parseFloat(r.min)||0,l=parseFloat(r.max)||100,h=parseFloat(r.value),g=(h-d)/(l-d);s.style.left=`calc(${g*100}% )`,s.textContent=String(h)},c=()=>s.classList.add("visible"),p=()=>s.classList.remove("visible");r.addEventListener("input",n),r.addEventListener("pointerdown",c),r.addEventListener("pointerup",p),r.addEventListener("pointerleave",p),r.addEventListener("focus",c),r.addEventListener("blur",p),n()}r.dataset.enhancedRange="1"}function Zr(r){if(r.dataset.enhancedRequired)return;r.dataset.enhancedRequired="true";let e=t=>{let o=t.closest("label");if(!o||o.querySelector(".required-asterisk"))return;let a=document.createElement("span");a.classList.add("required-asterisk"),a.textContent="*",a.style.marginLeft="4px",o.querySelector("span").appendChild(a);let i=t.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent="* Required fields",i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};r.querySelectorAll("[required]").forEach(t=>{e(t)})}function Qr(r){if(r.dataset.enhancedOpenGroup)return;r.dataset.enhancedOpenGroup="true",r.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder="Add item...",e.classList.add("input-text","input-sm"),e.style.width="auto";let t=r.querySelector('input[type="radio"], input[type="checkbox"]');r.appendChild(e),e.addEventListener("keydown",o=>{if(o.key==="Enter"||o.key==="Tab"){let a=e.value.trim();if(a){o.preventDefault();let i=t.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,n=document.createElement("label"),c=document.createElement("span");c.setAttribute("data-label",""),c.textContent=a;let p=document.createElement("input");p.type=i,p.name=t.name||r.getAttribute("data-name")||"open-group",p.value=a,p.id=s,n.appendChild(c),n.appendChild(p),r.insertBefore(n,e),e.value=""}}else if(o.key==="Backspace"&&e.value===""){o.preventDefault();let a=r.querySelectorAll("label");a.length>0&&a[a.length-1].remove()}})}function Xr(r){if(r.dataset.enhancedBtnWorking)return;r.dataset.enhancedBtnWorking="true";let e=null,t=!1;new MutationObserver(a=>{a.forEach(i=>{if(i.attributeName==="class"){let s=r.classList.contains("btn-working"),n=r.querySelector("pds-icon");if(s)if(n)e||(e=n.getAttribute("icon")),n.setAttribute("icon","circle-notch");else{let c=document.createElement("pds-icon");c.setAttribute("icon","circle-notch"),c.setAttribute("size","sm"),r.insertBefore(c,r.firstChild),t=!0}else i.oldValue?.includes("btn-working")&&n&&(t?(n.remove(),t=!1):e&&(n.setAttribute("icon",e),e=null))}})}).observe(r,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var eo=new Map([[".accordion",Vr],["nav[data-dropdown]",Jr],["label[data-toggle]",Kr],['input[type="range"]',Yr],["form[data-required]",Zr],["fieldset[role=group][data-open]",Qr],["button, a[class*='btn-']",Xr]]),st=Gr.map(r=>({...r,run:eo.get(r.selector)||(()=>{})}));var Qt="pds",to=/^([a-z][a-z0-9+\-.]*:)?\/\//i,Zt=/^[a-z]:/i;function be(r=""){return r.endsWith("/")?r:`${r}/`}function ro(r="",e=Qt){let t=r.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(t)?t:`${t}/${e}`}function oo(r){return r.replace(/^\.\/+/,"")}function ao(r){return Zt.test(r)?r.replace(Zt,"").replace(/^\/+/,""):r}function io(r){return r.startsWith("public/")?r.substring(7):r}function nt(r,e={}){let t=e.segment||Qt,o=e.defaultRoot||`/assets/${t}/`,a=r?.public&&r.public?.root||r?.static&&r.static?.root||null;if(!a||typeof a!="string")return be(o);let i=a.trim();return i?(i=i.replace(/\\/g,"/"),i=ro(i,t),i=be(i),to.test(i)?i:(i=oo(i),i=ao(i),i.startsWith("/")||(i=io(i),i.startsWith("/")||(i=`/${i}`),i=i.replace(/\/+/g,(s,n)=>n===0?s:"/")),be(i))):be(o)}var no=/^[a-z][a-z0-9+\-.]*:\/\//i,ye=(()=>{try{return import.meta.url}catch{return}})(),Oe=r=>typeof r=="string"&&r.length&&!r.endsWith("/")?`${r}/`:r;function je(r,e={}){if(!r||no.test(r))return r;let{preferModule:t=!0}=e,o=()=>{if(!ye)return null;try{return new URL(r,ye).href}catch{return null}},a=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(r,window.location.origin).href}catch{return null}};return(t?o()||a():a()||o())||r}var tr=(()=>{if(ye)try{let r=new URL(ye);if(/\/public\/assets\/js\//.test(r.pathname))return new URL("../pds/",ye).href}catch{return}})(),rr=!1;function or(r){rr||typeof document>"u"||(rr=!0,r.addEventListener("pds:ready",e=>{let t=e.detail?.mode;t&&document.documentElement.classList.add(`pds-${t}`,"pds-ready")}))}function ar(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[o,a]of Object.entries(e))a&&typeof a=="object"&&!Array.isArray(a)?t[o]=ar(t[o]&&typeof t[o]=="object"?t[o]:{},a):t[o]=a;return t}function lt(r=""){return String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function se(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>se(t)).filter(t=>t!==void 0);let e={};for(let t in r)if(r.hasOwnProperty(t)){let o=r[t];if(typeof o!="function"){let a=se(o);a!==void 0&&(e[t]=a)}}return e}function ir(r={},e={},{presets:t,defaultLog:o}){let a=typeof r=="object"&&("colors"in r||"typography"in r||"spatialRhythm"in r||"shape"in r||"behavior"in r||"layout"in r||"advanced"in r||"a11y"in r||"components"in r||"icons"in r),i=r&&r.enhancers;i&&!Array.isArray(i)&&(i=Object.values(i));let s=i??e.enhancers??[],n=r&&r.preset,c=r&&r.design,p="preset"in(r||{})||"design"in(r||{})||"enhancers"in(r||{}),d,l=null;if(p){let h=String(n||"default").toLowerCase(),g=t?.[h]||Object.values(t||{}).find(R=>lt(R.name)===h||String(R.name||"").toLowerCase()===h);if(!g)throw new Error(`PDS preset not found: "${n||"default"}"`);l={id:g.id||lt(g.name),name:g.name||g.id||String(h)};let y=structuredClone(g);if(c&&typeof c=="object"){let R=se(c);y=ar(y,structuredClone(R))}let{mode:k,autoDefine:f,applyGlobalStyles:$,manageTheme:Z,themeStorageKey:T,preloadStyles:H,criticalLayers:D,managerURL:le,manager:Q,preset:we,design:L,enhancers:W,log:X,...E}=r;d={...E,design:y,preset:l.name,log:X||o}}else if(a){let{log:h,...g}=r;d={design:structuredClone(g),log:h||o}}else{let h=t?.default||Object.values(t||{}).find(g=>lt(g.name)==="default");if(!h)throw new Error("PDS default preset not available");l={id:h.id||"default",name:h.name||"Default"},d={design:structuredClone(h),preset:l.name,log:o}}return{generatorConfig:d,enhancers:s,presetInfo:l}}function sr({manageTheme:r,themeStorageKey:e,applyResolvedTheme:t,setupSystemListenerIfNeeded:o}){let a="light",i=null;if(r&&typeof window<"u"){try{i=localStorage.getItem(e)||null}catch{i=null}try{t?.(i),o?.(i)}catch{}i?i==="system"?a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a=i:a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:a,storedTheme:i}}function dt(r,{resolvePublicAssetURL:e}){let t=!!(r?.public?.root||r?.static?.root),o=e(r);return!t&&tr&&(o=tr),Oe(je(o))}async function nr(r,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:t="/auto-define/",autoDefinePreload:o=[],autoDefineMapper:a=null,enhancers:i=[],autoDefineOverrides:s=null,autoDefinePreferModule:n=!0}=r,c=(()=>{let d=new Map;return(e||[]).forEach(l=>d.set(l.selector,l)),(i||[]).forEach(l=>d.set(l.selector,l)),Array.from(d.values())})(),p=null;if(typeof window<"u"&&typeof document<"u"){let d=null;try{let f=await Promise.resolve().then(()=>(er(),Xt));d=f?.AutoDefiner||f?.default?.AutoDefiner||f?.default||null}catch(f){console.warn("AutoDefiner not available:",f?.message||f)}let l=f=>{switch(f){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${f}.js`}},{mapper:h,...g}=s&&typeof s=="object"?s:{},k={baseURL:t&&Oe(je(t,{preferModule:n})),predefine:o,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:c,onError:(f,$)=>{if(typeof f=="string"&&f.startsWith("pds-")){let T=["pds-form","pds-drawer"].includes(f),H=$?.message?.includes("#pds/lit")||$?.message?.includes("Failed to resolve module specifier");T&&H?console.error(`\u274C PDS component <${f}> requires Lit but #pds/lit is not in import map.
|
|
3191
|
-
Add this to your HTML <head>:
|
|
3192
|
-
<script type="importmap">
|
|
3193
|
-
{ "imports": { "#pds/lit": "./path/to/lit.js" } }
|
|
3194
|
-
<\/script>
|
|
3195
|
-
See: https://github.com/pure-ds/core#lit-components`):console.warn(`\u26A0\uFE0F PDS component <${f}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${f}>:`,$)},...g,mapper:f=>{if(customElements.get(f))return null;if(typeof a=="function")try{let $=a(f);return $===void 0?l(f):$}catch($){return console.warn("Custom autoDefine.mapper error; falling back to default:",$?.message||$),l(f)}return l(f)}};d&&(p=new d(k),o.length>0&&typeof d.define=="function"&&await d.define(...o,{baseURL:t,mapper:k.mapper,onError:k.onError}))}return{autoDefiner:p,mergedEnhancers:c}}var ht=class extends EventTarget{},m=new ht;m.initializing=!1;m.currentPreset=null;m.debug=!1;var cr=(r="")=>String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),pt=function(r="log",e,...t){let o=!!(m.registry&&!m.registry.isLive),a=(this?.debug||this?.design?.debug||m.debug||!1)===!0;if(o){if(!m.debug)return}else if(!a&&r!=="error"&&r!=="warn")return;let i=console[r]||console.log;t.length>0?i(e,...t):i(e)};async function co(r,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let t=e?.runtimeConfigURL||`${r}pds-runtime-config.json`;try{let o=await fetch(t,{cache:"no-store"});return o.ok?await o.json():null}catch{return null}}m.registry=ie;m.adoptLayers=Jt;m.adoptPrimitives=Vt;m.createStylesheet=Kt;m.isLiveMode=()=>ie.isLive;m.ask=Yt;m.toast=P;function lr(r){let e=typeof CustomEvent=="function";try{let t=e?new CustomEvent("pds:ready",{detail:r}):new Event("pds:ready");m.dispatchEvent(t)}catch{}if(typeof document<"u")if(e){let t={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",t))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",t))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}typeof window<"u"&&(window.PDS=m);var ut="pure-ds-theme",Y=null,ve=null;function He(r){try{if(typeof document>"u")return;let e="light";r?r==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=r:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function We(r){try{if(Y&&ve){try{typeof Y.removeEventListener=="function"?Y.removeEventListener("change",ve):typeof Y.removeListener=="function"&&Y.removeListener(ve)}catch{}Y=null,ve=null}if(r==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=o=>{let a=o?.matches===void 0?e.matches:o.matches;try{let i=a?"dark":"light";document.documentElement.setAttribute("data-theme",i),m.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:i,source:"system"}}))}catch{}};Y=e,ve=t,typeof e.addEventListener=="function"?e.addEventListener("change",t):typeof e.addListener=="function"&&e.addListener(t)}}catch{}}Object.defineProperty(m,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(ut)||null}catch{return null}},set(r){try{if(typeof window>"u")return;r==null?localStorage.removeItem(ut):localStorage.setItem(ut,r),He(r),We(r),m.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"api"}}))}catch{}}});m.defaultEnhancers=st;async function lo(r){let e=r&&r.mode||"live",{mode:t,...o}=r||{};if(e==="static")return po(o);let a=dt(o,{resolvePublicAssetURL:nt}),i=o?.managerURL||o?.public?.managerURL||o?.manager?.url||new URL("core/pds-manager.js",a).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:s}=await import(i);return s(m,o,{emitReady:lr,applyResolvedTheme:He,setupSystemListenerIfNeeded:We})}m.start=lo;async function po(r){if(!r||typeof r!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=r.applyGlobalStyles??!0,t=r.manageTheme??!0,o=r.themeStorageKey??"pure-ds-theme",a=r.staticPaths??{},i=dt(r,{resolvePublicAssetURL:nt}),s=r&&r.autoDefine||null,n;s&&s.baseURL?n=Oe(je(s.baseURL,{preferModule:!1})):n=`${i}components/`;let c=s&&Array.isArray(s.predefine)&&s.predefine||[],p=s&&typeof s.mapper=="function"&&s.mapper||null;try{or(m);let{resolvedTheme:d}=sr({manageTheme:t,themeStorageKey:o,applyResolvedTheme:He,setupSystemListenerIfNeeded:We}),l=await co(i,r),h=l?.config?.design||l?.design||null,g=l?.config?.preset||l?.preset||"default",y=l?.presetId||cr(g)||"default",k=h?{[String(y).toLowerCase()]:h,...String(y).toLowerCase()!=="default"?{default:h}:{}}:null,f=r?.design&&typeof r.design=="object"?se(r.design):null,$=cr(r?.preset||"default")||"default",Z=f?{[String($).toLowerCase()]:f,...String($).toLowerCase()!=="default"?{default:f}:{}}:null,T=k||r?.presets||Z||{};if(!Object.keys(T||{}).length)throw new Error("PDS static mode requires preset data. Run pds:build or provide config.presets/config.design.");let H=l?.config?{...l.config,...r,preset:r?.preset||y,design:f||h||l?.config?.design}:r,D=ir(H,{},{presets:T,defaultLog:pt}),le=D.enhancers,Q={tokens:`${i}styles/pds-tokens.css.js`,primitives:`${i}styles/pds-primitives.css.js`,components:`${i}styles/pds-components.css.js`,utilities:`${i}styles/pds-utilities.css.js`,styles:`${i}styles/pds-styles.css.js`},we=l?.paths||{};if(a={...Q,...we,...a},m.registry.setStaticMode(a),e&&typeof document<"u")try{let E=await m.registry.getStylesheet("styles");if(E){E._pds=!0;let R=(document.adoptedStyleSheets||[]).filter(b=>b._pds!==!0);document.adoptedStyleSheets=[...R,E]}}catch(E){pt.call(m,"warn","Failed to apply static styles:",E)}let L=null,W=[];try{let E=await nr({autoDefineBaseURL:n,autoDefinePreload:c,autoDefineMapper:p,enhancers:le,autoDefineOverrides:s||null,autoDefinePreferModule:!(s&&s.baseURL)},{baseEnhancers:st});L=E.autoDefiner,W=E.mergedEnhancers||[]}catch(E){pt.call(m,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",E)}let X=se(r);return m.currentConfig=Object.freeze({mode:"static",...structuredClone(X),design:structuredClone(D.generatorConfig.design),preset:D.generatorConfig.preset,theme:d,enhancers:W}),lr({mode:"static",config:D.generatorConfig,theme:d,autoDefiner:L}),{config:D.generatorConfig,theme:d,autoDefiner:L}}catch(d){throw m.dispatchEvent(new CustomEvent("pds:error",{detail:{error:d}})),d}}var gt=He,mt=We;function ft(r){return r&&typeof r=="object"&&!Array.isArray(r)}function ne(r,e){let t={...r};return ft(r)&&ft(e)&&Object.keys(e).forEach(o=>{ft(e[o])?o in r?t[o]=ne(r[o],e[o]):Object.assign(t,{[o]:e[o]}):Object.assign(t,{[o]:e[o]})}),t}function dr(r){let e=r.replace(/['"]/g,"").trim();if(["system-ui","-apple-system","sans-serif","serif","monospace","cursive","fantasy","ui-sans-serif","ui-serif","ui-monospace","ui-rounded"].includes(e.toLowerCase()))return!0;let a=document.createElement("canvas").getContext("2d");if(!a)return!1;let i="mmmmmmmmmmlli",s="72px",n="monospace";a.font=`${s} ${n}`;let c=a.measureText(i).width;a.font=`${s} "${e}", ${n}`;let p=a.measureText(i).width;return c!==p}function uo(r){return r?r.split(",").map(o=>o.trim())[0].replace(/['"]/g,"").trim():null}async function ho(r,e={}){if(!r)return Promise.resolve();let{weights:t=[400,500,600,700],italic:o=!1}=e,a=uo(r);if(!a||dr(a))return Promise.resolve();let i=encodeURIComponent(a);return document.querySelector(`link[href*="fonts.googleapis.com"][href*="${i}"]`)?(console.log(`Font "${a}" is already loading or loaded`),Promise.resolve()):(console.log(`Loading font "${a}" from Google Fonts...`),new Promise((n,c)=>{let p=document.createElement("link");p.rel="stylesheet";let d=o?`ital,wght@0,${t.join(";0,")};1,${t.join(";1,")}`:`wght@${t.join(";")}`;p.href=`https://fonts.googleapis.com/css2?family=${i}:${d}&display=swap`,p.setAttribute("data-font-loader",a),p.onload=()=>{console.log(`Successfully loaded font "${a}"`),n()},p.onerror=()=>{console.warn(`Failed to load font "${a}" from Google Fonts`),c(new Error(`Failed to load font: ${a}`))},document.head.appendChild(p),setTimeout(()=>{dr(a)||console.warn(`Font "${a}" did not load within timeout`),n()},5e3)}))}async function pr(r){if(!r)return Promise.resolve();let e=new Set;r.fontFamilyHeadings&&e.add(r.fontFamilyHeadings),r.fontFamilyBody&&e.add(r.fontFamilyBody),r.fontFamilyMono&&e.add(r.fontFamilyMono);let t=Array.from(e).map(o=>ho(o).catch(a=>{console.warn(`Could not load font: ${o}`,a)}));await Promise.all(t)}function ur(r){return new DOMParser().parseFromString(r,"text/html").body.childNodes}function hr(r,e=100){let t;return function(...a){let i=()=>{clearTimeout(t),r(...a)};clearTimeout(t),t=setTimeout(i,e)}}function Ue(r){setTimeout(r,0)}function gr(r){try{if(typeof r!="string"||r.indexOf(`
|
|
3196
|
-
`)!==-1||r.indexOf(" ")!==-1||r.startsWith("#/"))return!1;let e=new URL(r,window.location.origin);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}function mr(r,e,t){let o=window.screen.width/2-e/2,a=window.screen.height/2-t/2;return window.open(r,"",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${e}, height=${t}, top=${a}, left=${o}`)}var bt={result:"ac-suggestion",item:"ac-itm"},ce=class r extends EventTarget{constructor(e,t,o){super(),this.settings={emptyResultsText:"",...o},this.container=e,this.input=t,this.input.setAttribute("autocomplete","off"),this.categories=o.categories||{},this.caches=new Map,Ue(this.attach.bind(this))}static connect(e,t){let o=e.target;if(!o._autoComplete){if(!t?.categories)throw Error("Missing autocomplete settings");o._autoComplete=new r(o.parentNode,o,t),e.type==="focus"&&setTimeout(()=>{o._autoComplete.focusHandler(e)},100)}return o._autoComplete}on(e,t){return this.input.addEventListener(e,t),this}attach(){this.resultsDiv=document.createElement("div"),this.resultsDiv.title="",this.resultsDiv.classList.add(bt.result),this.container.offsetWidth>100&&(this.resultsDiv.style.width=this.container.offsetWidth),this.resultsDiv.addEventListener("mousedown",this.resultClick.bind(this)),this.container.classList.add("ac-container"),this.input.classList.add("ac-input");let e=getComputedStyle(this.input);this.container.style.setProperty("--ac-bg-default",e.backgroundColor),this.container.style.setProperty("--ac-color-default",e.color);let t=getComputedStyle(this.input).accentColor;t!=="auto"&&this.container.style.setProperty("--ac-accent-color",t),(this.container?.shadowRoot??this.container).appendChild(this.resultsDiv),this.controller().clear("attach"),this.on("input",hr(this.inputHandler.bind(this),this.settings.throttleInputMs??300)).on("focus",this.focusHandler.bind(this)).on("focusout",this.blurHandler.bind(this)).on("keyup",this.keyUpHandler.bind(this)).on("keydown",this.keyDownHandler.bind(this))}controller(){let e=this.internalController();return typeof this.settings.controller=="function"&&(e=this.settings.controller(this)??e),e}internalController(){return{show:this.show.bind(this),hide:this.hide.bind(this),clear:this.clear.bind(this),empty:()=>{}}}moveResult(e){this.controller().show();let t=this.acItems.length;this.rowIndex=this.rowIndex+e,this.rowIndex<=0?this.rowIndex=0:this.rowIndex>t-1&&(this.rowIndex=0);for(let a of this.acItems)a.classList.remove("selected");let o=this.getSelectedDiv();o?(o.classList.add("selected"),o.scrollIntoView({behavior:"smooth",block:"end",inline:"nearest"})):this.focusHandler({target:this.input})}getSelectedDiv(){return this.resultsDiv.querySelector(`div:nth-child(${this.rowIndex+1})`)}selectResult(e){if(e=e||this.getSelectedDiv(),e){let t=parseInt(e.getAttribute("data-index"));this.resultClicked=!0;let o=this.results[t],a=this.categories[o.category]??{};a.action=a.action??this.setText.bind(this),a.newTab&&(this.tabWindow=mr("about:blank"));let i={...o,search:this.input.value};e.classList.add("ac-active"),setTimeout(()=>{this.controller().hide("result-selected"),i.action?i.action(i):(a.action(i),a.newTab&&(i.url?this.tabWindow.location.href=i.url:this.tabWindow.close()));var s=new Event("change",{bubbles:!0});this.input.dispatchEvent(s),this.controller().clear("result-selected");let n=new Event("result-selected");n.detail=i,this.input.dispatchEvent(n)},0)}}setText(e){this.container.autoCompleteInput||(this.container.value=e.text),this.controller().hide("settext")}resultClick(e){this.selectResult(e.target.closest(`.${bt.item}`))}blurHandler(){setTimeout(()=>{this.resultClicked||this.controller().clear("blurred"),this.resultClicked=!1},100)}clear(){this.settings.debug||this.resultsDiv&&(this.resultsDiv.innerHTML="",this.controller().hide("clear"),this.cacheTmr&&clearTimeout(this.cacheTmr),this.cacheTmr=setTimeout(()=>{this.caches.clear()},60*1e3*5))}show(){if(!this.resultsDiv.classList.contains("ac-active")){let e=this.getViewBounds();this.resultsDiv.style.position="absolute",e.rect.width>100&&(this.resultsDiv.style.width=`${e.rect.width}px`),this.settings.direction=this.settings.direction??e.suggestedDirection,this.resultsDiv.setAttribute("data-direction",this.settings.direction),this.settings.direction==="up"?(this.resultsDiv.style.top="unset",this.resultsDiv.style.bottom=`${e.rect.height+20}px`,this.rowIndex=this.acItems.length):(this.resultsDiv.style.bottom="unset",this.resultsDiv.style.top=`${e.rect.height}px`,this.rowIndex=-1),this.resultsDiv.style.maxWidth="unset",this.resultsDiv.classList.toggle("ac-active",!0)}}getViewBounds(){let e=this.input.getBoundingClientRect();return{rect:e,suggestedDirection:e.top+e.height+500>window.innerHeight?"up":"down"}}hide(){this.resultsDiv.classList.toggle("ac-active",!1)}empty(){this.resultsDiv.innerHTML=`<div class="ac-empty">${this.settings.emptyResultsText}</div>`,this.controller().show()}inputHandler(e){this.cacheTmr&&clearTimeout(this.cacheTmr);let t={search:e.target.value,categories:this.categories};this.container.classList.add("search-running"),this.getItems(t,e).then(o=>{this.controller().clear("new-results"),this.resultsHandler(o,t),this.container.classList.remove("search-running")})}keyDownHandler(e){switch(e.key){case"Enter":e.stopPropagation(),e.preventDefault();break;case"ArrowDown":Ue(this.moveResult(1));break;case"ArrowUp":Ue(this.moveResult(-1));break}}keyUpHandler(e){switch(e.key){case"Escape":this.controller().hide("escape");break;case"Enter":this.getSelectedDiv()&&(this.container.preventEnter=!0,e.stopPropagation(),e.preventDefault(),this.selectResult(),setTimeout(()=>{this.container.preventEnter=!1},10));break;default:break}}focusHandler(e){this.controller().clear("focus");let t=e.target.value;this.suggest(t,e)}suggest(e,t){this.input.focus();let o={suggest:!0,search:e||"",categories:this.categories};this.getItems(o,t).then(a=>{this.input.dispatchEvent(new CustomEvent("show-results",{detail:{results:a}})),this.resultsHandler(a,o)})}sort(e,t){return e.sort((o,a)=>{let i=t.categories[o.category],s=t.categories[a.category],n=typeof i.sortIndex=="function"?i.sortIndex(t):i.sortIndex??0;return(typeof s.sortIndex=="function"?s.sortIndex(t):s.sortIndex??0)>n?1:-1})}resultsHandler(e,t){this.results=e,this.rowIndex=-1;let o=0,a=(i,s)=>`
|
|
3197
|
-
<div title="${s.tooltip||""}" data-index="${o}" class="${`${bt.item} cat-${s.category} ${s.class??""}`.trim()}">
|
|
3294
|
+
`}};function We(r={},e={}){let t=Number(e.minContrast||4.5),o=n=>{let l=String(n||"").replace("#",""),p=l.length===3?l.split("").map(c=>c+c).join(""):l,d=parseInt(p||"0",16);return{r:d>>16&255,g:d>>8&255,b:d&255}},a=n=>{let{r:l,g:p,b:d}=o(n),c=[l/255,p/255,d/255].map(u=>u<=.03928?u/12.92:Math.pow((u+.055)/1.055,2.4));return .2126*c[0]+.7152*c[1]+.0722*c[2]},i=(n,l)=>{if(!n||!l)return 0;let p=a(n),d=a(l),c=Math.max(p,d),u=Math.min(p,d);return(c+.05)/(u+.05)},s=[];try{let l=new se({design:structuredClone(r)}).tokens.colors,p={surfaceBg:l.surface?.base,surfaceText:l.gray?.[900]||"#000000",primaryFill:l.interactive?.light?.fill||l.primary?.[600],primaryText:l.interactive?.light?.text||l.primary?.[600]},d=i(p.primaryFill,"#ffffff");d<t&&s.push({path:"/colors/primary",message:`Primary button contrast too low in light theme (${d.toFixed(2)} < ${t}). Choose a darker primary.`,ratio:d,min:t,context:"light/btn-primary"});let c=i(p.surfaceBg,p.surfaceText);c<t&&s.push({path:"/colors/background",message:`Base text contrast on surface (light) is too low (${c.toFixed(2)} < ${t}). Adjust background or secondary (gray).`,ratio:c,min:t,context:"light/surface-text"});let u=i(p.primaryText,p.surfaceBg);u<t&&s.push({path:"/colors/primary",message:`Primary text on surface is too low for outline/link styles (light) (${u.toFixed(2)} < ${t}). Choose a darker primary or lighter surface.`,ratio:u,min:t,context:"light/outline"});let g=l.dark;if(g){let b={surfaceBg:g.surface?.base||l.surface?.inverse,primaryFill:l.interactive?.dark?.fill||g.primary?.[600],primaryText:l.interactive?.dark?.text||g.primary?.[600]},y=i(b.primaryFill,"#ffffff");y<t&&s.push({path:"/colors/darkMode/primary",message:`Primary button contrast too low in dark theme (${y.toFixed(2)} < ${t}). Override darkMode.primary or pick a brighter hue.`,ratio:y,min:t,context:"dark/btn-primary"});let f=i(b.primaryText,b.surfaceBg);f<t&&s.push({path:"/colors/darkMode/primary",message:`Primary text on surface is too low for outline/link styles (dark) (${f.toFixed(2)} < ${t}). Override darkMode.primary/background.`,ratio:f,min:t,context:"dark/outline"})}}catch(n){s.push({path:"/",message:`Validation failed: ${String(n?.message||n)}`,ratio:0,min:0})}return{ok:s.length===0,issues:s}}function gr(r){let e=r.replace(/['"]/g,"").trim();if(["system-ui","-apple-system","sans-serif","serif","monospace","cursive","fantasy","ui-sans-serif","ui-serif","ui-monospace","ui-rounded"].includes(e.toLowerCase()))return!0;let a=document.createElement("canvas").getContext("2d");if(!a)return!1;let i="mmmmmmmmmmlli",s="72px",n="monospace";a.font=`${s} ${n}`;let l=a.measureText(i).width;a.font=`${s} "${e}", ${n}`;let p=a.measureText(i).width;return l!==p}function fo(r){return r?r.split(",").map(o=>o.trim())[0].replace(/['"]/g,"").trim():null}async function bo(r,e={}){if(!r)return Promise.resolve();let{weights:t=[400,500,600,700],italic:o=!1}=e,a=fo(r);if(!a||gr(a))return Promise.resolve();let i=encodeURIComponent(a);return document.querySelector(`link[href*="fonts.googleapis.com"][href*="${i}"]`)?(console.log(`Font "${a}" is already loading or loaded`),Promise.resolve()):(console.log(`Loading font "${a}" from Google Fonts...`),new Promise((n,l)=>{let p=document.createElement("link");p.rel="stylesheet";let d=o?`ital,wght@0,${t.join(";0,")};1,${t.join(";1,")}`:`wght@${t.join(";")}`;p.href=`https://fonts.googleapis.com/css2?family=${i}:${d}&display=swap`,p.setAttribute("data-font-loader",a),p.onload=()=>{console.log(`Successfully loaded font "${a}"`),n()},p.onerror=()=>{console.warn(`Failed to load font "${a}" from Google Fonts`),l(new Error(`Failed to load font: ${a}`))},document.head.appendChild(p),setTimeout(()=>{gr(a)||console.warn(`Font "${a}" did not load within timeout`),n()},5e3)}))}async function mr(r){if(!r)return Promise.resolve();let e=new Set;r.fontFamilyHeadings&&e.add(r.fontFamilyHeadings),r.fontFamilyBody&&e.add(r.fontFamilyBody),r.fontFamilyMono&&e.add(r.fontFamilyMono);let t=Array.from(e).map(o=>bo(o).catch(a=>{console.warn(`Could not load font: ${o}`,a)}));await Promise.all(t)}function fr(r){return new DOMParser().parseFromString(r,"text/html").body.childNodes}function br(r,e=100){let t;return function(...a){let i=()=>{clearTimeout(t),r(...a)};clearTimeout(t),t=setTimeout(i,e)}}function Ue(r){setTimeout(r,0)}function yr(r){try{if(typeof r!="string"||r.indexOf(`
|
|
3295
|
+
`)!==-1||r.indexOf(" ")!==-1||r.startsWith("#/"))return!1;let e=new URL(r,window.location.origin);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}function vr(r,e,t){let o=window.screen.width/2-e/2,a=window.screen.height/2-t/2;return window.open(r,"",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${e}, height=${t}, top=${a}, left=${o}`)}var wt={result:"ac-suggestion",item:"ac-itm"},ne=class r extends EventTarget{constructor(e,t,o){super(),this.settings={emptyResultsText:"",...o},this.container=e,this.input=t,this.input.setAttribute("autocomplete","off"),this.categories=o.categories||{},this.caches=new Map,Ue(this.attach.bind(this))}static connect(e,t){let o=e.target;if(!o._autoComplete){if(!t?.categories)throw Error("Missing autocomplete settings");o._autoComplete=new r(o.parentNode,o,t),e.type==="focus"&&setTimeout(()=>{o._autoComplete.focusHandler(e)},100)}return o._autoComplete}on(e,t){return this.input.addEventListener(e,t),this}attach(){this.resultsDiv=document.createElement("div"),this.resultsDiv.title="",this.resultsDiv.classList.add(wt.result),this.container.offsetWidth>100&&(this.resultsDiv.style.width=this.container.offsetWidth),this.resultsDiv.addEventListener("mousedown",this.resultClick.bind(this)),this.container.classList.add("ac-container"),this.input.classList.add("ac-input");let e=getComputedStyle(this.input);this.container.style.setProperty("--ac-bg-default",e.backgroundColor),this.container.style.setProperty("--ac-color-default",e.color);let t=getComputedStyle(this.input).accentColor;t!=="auto"&&this.container.style.setProperty("--ac-accent-color",t),(this.container?.shadowRoot??this.container).appendChild(this.resultsDiv),this.controller().clear("attach"),this.on("input",br(this.inputHandler.bind(this),this.settings.throttleInputMs??300)).on("focus",this.focusHandler.bind(this)).on("focusout",this.blurHandler.bind(this)).on("keyup",this.keyUpHandler.bind(this)).on("keydown",this.keyDownHandler.bind(this))}controller(){let e=this.internalController();return typeof this.settings.controller=="function"&&(e=this.settings.controller(this)??e),e}internalController(){return{show:this.show.bind(this),hide:this.hide.bind(this),clear:this.clear.bind(this),empty:()=>{}}}moveResult(e){this.controller().show();let t=this.acItems.length;this.rowIndex=this.rowIndex+e,this.rowIndex<=0?this.rowIndex=0:this.rowIndex>t-1&&(this.rowIndex=0);for(let a of this.acItems)a.classList.remove("selected");let o=this.getSelectedDiv();o?(o.classList.add("selected"),o.scrollIntoView({behavior:"smooth",block:"end",inline:"nearest"})):this.focusHandler({target:this.input})}getSelectedDiv(){return this.resultsDiv.querySelector(`div:nth-child(${this.rowIndex+1})`)}selectResult(e){if(e=e||this.getSelectedDiv(),e){let t=parseInt(e.getAttribute("data-index"));this.resultClicked=!0;let o=this.results[t],a=this.categories[o.category]??{};a.action=a.action??this.setText.bind(this),a.newTab&&(this.tabWindow=vr("about:blank"));let i={...o,search:this.input.value};e.classList.add("ac-active"),setTimeout(()=>{this.controller().hide("result-selected"),i.action?i.action(i):(a.action(i),a.newTab&&(i.url?this.tabWindow.location.href=i.url:this.tabWindow.close()));var s=new Event("change",{bubbles:!0});this.input.dispatchEvent(s),this.controller().clear("result-selected");let n=new Event("result-selected");n.detail=i,this.input.dispatchEvent(n)},0)}}setText(e){this.container.autoCompleteInput||(this.container.value=e.text),this.controller().hide("settext")}resultClick(e){this.selectResult(e.target.closest(`.${wt.item}`))}blurHandler(){setTimeout(()=>{this.resultClicked||this.controller().clear("blurred"),this.resultClicked=!1},100)}clear(){this.settings.debug||this.resultsDiv&&(this.resultsDiv.innerHTML="",this.controller().hide("clear"),this.cacheTmr&&clearTimeout(this.cacheTmr),this.cacheTmr=setTimeout(()=>{this.caches.clear()},60*1e3*5))}show(){if(!this.resultsDiv.classList.contains("ac-active")){let e=this.getViewBounds();this.resultsDiv.style.position="absolute",e.rect.width>100&&(this.resultsDiv.style.width=`${e.rect.width}px`),this.settings.direction=this.settings.direction??e.suggestedDirection,this.resultsDiv.setAttribute("data-direction",this.settings.direction),this.settings.direction==="up"?(this.resultsDiv.style.top="unset",this.resultsDiv.style.bottom=`${e.rect.height+20}px`,this.rowIndex=this.acItems.length):(this.resultsDiv.style.bottom="unset",this.resultsDiv.style.top=`${e.rect.height}px`,this.rowIndex=-1),this.resultsDiv.style.maxWidth="unset",this.resultsDiv.classList.toggle("ac-active",!0)}}getViewBounds(){let e=this.input.getBoundingClientRect();return{rect:e,suggestedDirection:e.top+e.height+500>window.innerHeight?"up":"down"}}hide(){this.resultsDiv.classList.toggle("ac-active",!1)}empty(){this.resultsDiv.innerHTML=`<div class="ac-empty">${this.settings.emptyResultsText}</div>`,this.controller().show()}inputHandler(e){this.cacheTmr&&clearTimeout(this.cacheTmr);let t={search:e.target.value,categories:this.categories};this.container.classList.add("search-running"),this.getItems(t,e).then(o=>{this.controller().clear("new-results"),this.resultsHandler(o,t),this.container.classList.remove("search-running")})}keyDownHandler(e){switch(e.key){case"Enter":e.stopPropagation(),e.preventDefault();break;case"ArrowDown":Ue(this.moveResult(1));break;case"ArrowUp":Ue(this.moveResult(-1));break}}keyUpHandler(e){switch(e.key){case"Escape":this.controller().hide("escape");break;case"Enter":this.getSelectedDiv()&&(this.container.preventEnter=!0,e.stopPropagation(),e.preventDefault(),this.selectResult(),setTimeout(()=>{this.container.preventEnter=!1},10));break;default:break}}focusHandler(e){this.controller().clear("focus");let t=e.target.value;this.suggest(t,e)}suggest(e,t){this.input.focus();let o={suggest:!0,search:e||"",categories:this.categories};this.getItems(o,t).then(a=>{this.input.dispatchEvent(new CustomEvent("show-results",{detail:{results:a}})),this.resultsHandler(a,o)})}sort(e,t){return e.sort((o,a)=>{let i=t.categories[o.category],s=t.categories[a.category],n=typeof i.sortIndex=="function"?i.sortIndex(t):i.sortIndex??0;return(typeof s.sortIndex=="function"?s.sortIndex(t):s.sortIndex??0)>n?1:-1})}resultsHandler(e,t){this.results=e,this.rowIndex=-1;let o=0,a=(i,s)=>`
|
|
3296
|
+
<div title="${s.tooltip||""}" data-index="${o}" class="${`${wt.item} cat-${s.category} ${s.class??""}`.trim()}">
|
|
3198
3297
|
${this.handleImageOrIcon(s)}
|
|
3199
3298
|
<span class="text">${this.formatResultItem(s,t,i)}</span>
|
|
3200
3299
|
${this.settings.hideCategory?"":`<span class="category">${s.category||""}</span>`}
|
|
3201
|
-
</div>`;e.forEach(i=>{let s=t.categories[i.category]||{};i.element?this.resultsDiv.appendChild(i.element):(i=typeof i=="string"?{text:i}:i,this.resultsDiv.appendChild(
|
|
3300
|
+
</div>`;e.forEach(i=>{let s=t.categories[i.category]||{};i.element?this.resultsDiv.appendChild(i.element):(i=typeof i=="string"?{text:i}:i,this.resultsDiv.appendChild(fr(a(s,i))[0])),o++}),e.length?(this.acItems=this.resultsDiv.querySelectorAll(".ac-itm"),this.controller().show()):t.search.length&&this.controller().empty()}handleImageOrIcon(e){return e.image?`<img src="${e.image}"/>`:typeof this.settings.iconHandler=="function"?this.settings.iconHandler(e):`<svg-icon icon="${e.icon}"></svg-icon>`}formatResultItem(e,t,o){let a=typeof e=="string"?{text:e}:e,i=a.text;return t.search&&(i=i.replace("%search%",t.search),a.description=a.description?.replace("%search%",t.search)),i=this.highlight(i,t.search),a.description&&(i=`<div>${i}</div><small>${a.description}</small>`),o.format&&(i=o.format({item:a,result:i,options:t})),i}highlight(e,t){var o=new RegExp("("+t+")","gi");return e.replace(o,'<span class="txt-hl">$1</span>')}async getItems(e,t){this.aborter&&this.aborter.abort();let o=this.caches.get(e.search);if(o)return o;let a=this.settings.map,i=l=>(typeof l=="string"&&(l={text:l}),l),s=l=>a?l.map(p=>({text:p[a]})):l.map(p=>i(p)),n=l=>(this.settings.max&&this.settings.max>0&&(l.length=this.settings.max),l);return this.aborter=new AbortController,this.aborterSignal=this.aborter.signal,new Promise(l=>{let p=d=>{d=this.sort(d,e),this.settings.cache!==!1&&this.caches.set(e.search,d),l(d)};if(yr(this.items)){if(this.settings.minlength>0&&(!e.search||e.search.length<this.settings.minlength)){p([]);return}let d=this.formatSearch(this.items,e);fetch(d).then(c=>{if(c.status===200){c.json().then(u=>{u=s(u),p(n(u.filter(g=>this.isMatch(e,g))))});return}throw Error(`HTTP error ${c.status} - ${d}`)})}else if(Array.isArray(this.items)){let d=!0;this.items=this.items.map(c=>typeof c=="string"?{text:c}:(d=!1,c)),d&&this.container.classList.add("simple"),p(n(s(this.items)))}else if(typeof this.items=="function")e.control=this.container,Promise.resolve(this.items(e,t)).then(c=>{c=c.map(u=>i(u)),c=s(c),p(c)});else return p(Promise.resolve(this.items.apply(this,e)))})}async items(e){let t=[];e.results=[],e.signal=this.aborterSignal;for(var o in e.categories){let a=e.categories[o];if(a.trigger=a.trigger??(()=>!0),e.results=t,a.trigger(e)){let i=[];try{i=await a.getItems(e)}catch(s){console.warn(`Error loading items for omniBox category '${o}'.`,s)}t=t.concat(i.map(s=>(s.category=o,s)))}}return t}formatSearch(e,t){return e.indexOf("%search%")?e.replace("%search%",t.search||""):e+"?"+this.createQueryParam(t)}createQueryParam(e){let t=e.suggest?"&suggest=true":"";return`q=${e.text}${t}`}isMatch(e,t){return t.text?.indexOf("%search%")>=0?!0:e.search?t.text?.toLowerCase().indexOf(e.search.toLowerCase())>=0:e.suggest}static textFilter(e,t){return function(o){if(!e.search)return!0;if(o.hidden)return!1;let i=(t?o[t]:o).match(new RegExp(e.search,"gi"));if(i)return i;if(o.config?.tags)return o.config.tags.some(s=>s.match(new RegExp(e.search,"gi")))}}};function wr(r){function e(a,i,s){let n=a[0];if(n==="colors")return i==="scheme"?"string":"color";if(n==="spacing"||n==="radius"||n==="borderWidths")return"dimension";if(n==="typography"){let l=a[1];return l==="fontFamily"?"fontFamily":l==="fontSize"?"fontSize":l==="fontWeight"?"fontWeight":l==="lineHeight"?"lineHeight":"string"}if(n==="shadows")return"shadow";if(n==="layout")return"dimension";if(n==="transitions")return"duration";if(n==="zIndex")return"number";if(n==="icons")return i==="defaultSize"||a.includes("sizes")?"dimension":"string";if(typeof s=="number")return"number";if(typeof s=="string"){if(/^\d+(\.\d+)?ms$/.test(s))return"duration";if(/^\d+(\.\d+)?(px|rem|em|vh|vw|%)$/.test(s))return"dimension";if(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(s)||/^(rgb|rgba|hsl|hsla|oklab|lab)\(/.test(s))return"color"}}function t(a){return a!==null&&typeof a=="object"&&!Array.isArray(a)}function o(a,i=[]){if(a==null)return a;if(Array.isArray(a))return a.map((p,d)=>o(p,i.concat(String(d))));if(t(a)){if(Object.prototype.hasOwnProperty.call(a,"value")&&(Object.prototype.hasOwnProperty.call(a,"type")||Object.keys(a).length===1))return a;let p={};for(let[d,c]of Object.entries(a))p[d]=o(c,i.concat(d));return p}let s=i[i.length-1]??"",n=e(i,s,a),l=a;if(n==="number"&&typeof l=="string"){let p=Number(l);Number.isNaN(p)||(l=p)}return n?{value:l,type:n}:{value:l}}return o(r,[])}var xr="pure-ds-config";customElements.define("pds-config-form",class extends _{#i;#e=0;#r=null;#n=null;#o=500;static properties={config:{type:Object,state:!0},schema:{type:Object,state:!0},mode:{type:String},inspectorMode:{type:Boolean,state:!0},formValues:{type:Object,state:!0},validationIssues:{type:Array,state:!0},formKey:{type:Number,state:!0},showInspector:{type:Boolean,attribute:"show-inspector"},showPresetSelector:{type:Boolean,attribute:"show-preset-selector"},showThemeSelector:{type:Boolean,attribute:"show-theme-selector"}};createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.formKey=0,this._validationToastId=null,this.mode="simple",this.inspectorMode=!1,this.config=this.loadConfig(),this._inspectorDeactivateHandler=()=>{this.inspectorMode&&(this.inspectorMode=!1,this.dispatchInspectorModeChange())},m.addEventListener("pds:inspector:deactivate",this._inspectorDeactivateHandler);try{ot(m.theme),at(m.theme)}catch{}this.updateForm(),this.applyDefaultHostVariables(),this._initialValidationScheduled=!1,this._loadingToastShown=!1}disconnectedCallback(){super.disconnectedCallback(),this._inspectorDeactivateHandler&&(m.removeEventListener("pds:inspector:deactivate",this._inspectorDeactivateHandler),this._inspectorDeactivateHandler=null)}applyDefaultHostVariables(){try{let r=structuredClone(O.default),e=new se({design:r}),t=e.generateSpacingTokens(r.spatialRhythm||{});Object.entries(t).forEach(([s,n])=>{try{this.style.setProperty(`--spacing-${s}`,n)}catch{}});let o=r.spatialRhythm&&r.spatialRhythm.baseUnit||16;this.style.setProperty("--base-unit",`${o}px`);let a=e.generateTypographyTokens(r.typography||{});a.fontSize&&Object.entries(a.fontSize).forEach(([s,n])=>{this.style.setProperty(`--font-size-${s}`,n)});let i=r.typography&&r.typography.baseFontSize||16;this.style.setProperty("--base-font-size",`${i}px`),a.fontFamily&&Object.entries(a.fontFamily).forEach(([s,n])=>{this.style.setProperty(`--font-family-${s}`,n)}),a.lineHeight&&Object.entries(a.lineHeight).forEach(([s,n])=>{this.style.setProperty(`--font-lineHeight-${s}`,n)}),console.debug("pds-config-form: applied default host CSS variables")}catch(r){console.warn("pds-config-form: failed to apply default host variables",r)}}updateForm(){this.schema=null,fetch(`/assets/data/auto-design-${this.mode}.json`).then(r=>r.json()).then(r=>{this.schema=r,this.formValues=this.filterConfigForSchema(this.config),this.formKey=(this.formKey||0)+1}).catch(r=>{console.warn("Failed to load schema:",r)})}_isEqual(r,e){if(r===e)return!0;if(typeof r!=typeof e)return!1;if(r&&e&&typeof r=="object"){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(let a=0;a<r.length;a++)if(!this._isEqual(r[a],e[a]))return!1;return!0}let t=Object.keys(r),o=Object.keys(e);t.length,o.length;for(let a of new Set([...t,...o]))if(!this._isEqual(r[a],e[a]))return!1;return!0}return!1}_deepDiff(r,e){if(!this._isEqual(r,e)){if(r&&e&&typeof r=="object"&&typeof e=="object"&&!Array.isArray(r)&&!Array.isArray(e)){let t={},o=new Set([...Object.keys(e)]);for(let a of o){let i=this._deepDiff(r[a],e[a]);i!==void 0&&(t[a]=i)}return Object.keys(t).length?t:void 0}return this._isEqual(r,e)?void 0:e}}_resolvePresetBase(r){let e=String(r||"default").toLowerCase(),t=O?.[e]||O?.default;return JSON.parse(JSON.stringify(t||O.default))}loadConfig(){let r=localStorage.getItem(xr);if(r)try{let e=JSON.parse(r);if(e&&("preset"in e||"design"in e)){let o=e.preset||"default",a=this._resolvePresetBase(o),i=W(a,e.design||{});return this._stored={preset:o,design:e.design||{}},this._legacy=!1,i}let t=W(config.design,e);return this._stored=null,this._legacy=!0,t}catch(e){console.warn("Failed to parse stored config, using defaults",e)}return this._stored={preset:"default",design:{}},this._legacy=!1,JSON.parse(JSON.stringify(this._resolvePresetBase("default")))}saveConfig(){try{let r=this._stored&&this._stored.preset||"default",e=this._resolvePresetBase(r),t=this._deepDiff(e,this.config)||{},o={preset:r,design:t};localStorage.setItem(xr,JSON.stringify(o)),this._stored=o,this._legacy=!1}catch(r){console.warn("Failed to save config: ",r)}}updated(r){if(r.has("schema")){this.formValues=this.filterConfigForSchema(this.config);let e=this._initialValidationScheduled?50:150;this._initialValidationScheduled=!0,setTimeout(()=>{try{this.applyStyles(!0)}catch(t){console.warn("Delayed applyStyles failed:",t)}},e)}}async applyStyles(r=!1){let e=structuredClone(O.default);if(r&&this.config){let a=this._stored&&this._stored.preset||"default",i=this._resolvePresetBase(a);e=W(i,this.config)}if(e.typography)try{await mr(e.typography)}catch(a){console.warn("Failed to load some fonts from Google Fonts:",a)}try{let a=We(e);if(!a.ok){if(this.validationIssues=a.issues,!this._validationToastId){let i=a.issues.slice(0,3).map(s=>`\u2022 ${s.message}`).join(`
|
|
3202
3301
|
`);this._validationToastId=await m.toast(`Design has accessibility issues. Fix before applying.
|
|
3203
|
-
${i}`,{type:"error",persistent:!0})}return}this.validationIssues=[],this._validationToastId&&(document.querySelector("#global-toaster")?.dismissToast(this._validationToastId),this._validationToastId=null)}catch(a){console.warn("Validation failed unexpectedly:",a)}let t=m.theme||null,o={design:structuredClone(e)};t&&(o.theme=t),this.generator=new
|
|
3302
|
+
${i}`,{type:"error",persistent:!0})}return}this.validationIssues=[],this._validationToastId&&(document.querySelector("#global-toaster")?.dismissToast(this._validationToastId),this._validationToastId=null)}catch(a){console.warn("Validation failed unexpectedly:",a)}let t=m.theme||null,o={design:structuredClone(e)};t&&(o.theme=t),this.generator=new se(o),kt(this.generator);try{ot(m.theme),at(m.theme)}catch{}this.scheduleDesignUpdatedEmit({config:e,designer:this.generator})}scheduleDesignUpdatedEmit(r){let e=Date.now(),t=()=>{this.#e=Date.now(),this.#r&&(clearTimeout(this.#r),this.#r=null),m.dispatchEvent(new CustomEvent("pds:design:updated",{detail:r}))};if(e-this.#e>=this.#o){t();return}if(!this.#r){let o=this.#o-(e-this.#e);this.#r=setTimeout(()=>{this.#r=null,t()},o)}}async toggleInspectorMode(){this.inspectorMode=!this.inspectorMode,this.dispatchInspectorModeChange(),await m.toast(this.inspectorMode?"Code Inspector active - click any element in the showcase to view its code":"Code Inspector deactivated",{type:"info",duration:3e3})}dispatchInspectorModeChange(){m.dispatchEvent(new CustomEvent("pds:inspector:mode:changed",{detail:{active:this.inspectorMode}}))}flattenConfig(r,e=""){let t={};for(let[o,a]of Object.entries(r)){let i=e?`${e}/${o}`:`/${o}`;a&&typeof a=="object"&&!Array.isArray(a)?Object.assign(t,this.flattenConfig(a,i)):t[i]=a}return t}getSchemaProperties(r,e=""){let t=new Set;if(!r||!r.properties)return t;for(let[o,a]of Object.entries(r.properties)){let i=e?`${e}/${o}`:`/${o}`;t.add(i),a.type==="object"&&a.properties&&this.getSchemaProperties(a,i).forEach(n=>t.add(n))}return t}filterConfigForSchema(r){if(!r)return{};if(!this.schema)return this.flattenConfig(r);let e=this.getSchemaProperties(this.schema),t=this.flattenConfig(r),o={};for(let[a,i]of Object.entries(t))e.has(a)&&i!==null&&i!==void 0&&(o[a]=i);return o}handleFormChange=async r=>{let e,t=null;if(r.type==="pw:value-change"&&r.detail&&(t=r.detail.name),r.detail&&r.detail.json)e=r.detail.json;else{let n=r.currentTarget?.tagName?.toUpperCase()==="pds-form"?r.currentTarget:this.querySelector("pds-form");if(n)e=n.getValuesFlat?.()||n.values||{};else{console.warn("No form element found in form change event",r);return}}console.log("Form values received:",e);let o={},a=n=>n.replace(/~1/g,"/").replace(/~0/g,"~");for(let[n,l]of Object.entries(e))if(n)if(n.startsWith("/")){let d=n.replace(/^\//,"").split("/").map(a),c=o;for(let u=0;u<d.length-1;u++){let g=d[u];(!c[g]||typeof c[g]!="object")&&(c[g]={}),c=c[g]}c[d[d.length-1]]=l}else if(n.includes(".")){let p=n.split("."),d=o;for(let c=0;c<p.length-1;c++)(!d[p[c]]||typeof d[p[c]]!="object")&&(d[p[c]]={}),d=d[p[c]];d[p[p.length-1]]=l}else o[n]=l;console.log("Nested values:",o);let i=W(structuredClone(this.config),o),s=We(i);if(!s.ok){if(this.validationIssues=s.issues,!this._validationToastId){let n=s.issues.slice(0,3).map(l=>`\u2022 ${l.message}`).join(`
|
|
3204
3303
|
`);this._validationToastId=await m.toast(`Design has accessibility issues. Fix before saving.
|
|
3205
|
-
${n}`,{type:"error"})}return}this.validationIssues=[];try{this._validationToastId&&(document.querySelector("#global-toaster")?.dismissToast(this._validationToastId),this._validationToastId=null)}catch{}this.config=i,console.log("Updated (persisted) config (not applied):",this.config),this.saveConfig(),t&&(console.log("\u{1F514} Emitting design-field-changed event for field:",t),m.dispatchEvent(new CustomEvent("pds:design:field:changed",{detail:{field:t,config:this.config}})));try{this.#n&&(clearTimeout(this.#n),this.#n=null),this.#n=setTimeout(()=>{this.#n=null,this.applyStyles(!0)},this.#o)}catch(n){console.warn("Failed to schedule applyStyles with user config:",n)}};handleReset=async()=>{if(await m.ask("Reset to default configuration? This will clear your saved settings.")){this._stored={preset:"default",design:{}};let e=this._resolvePresetBase("default");this.config=JSON.parse(JSON.stringify(e)),this.formValues=this.filterConfigForSchema(this.config),this.formKey=(this.formKey||0)+1,this.saveConfig(),this.applyStyles(!0),await m.toast("Configuration reset to defaults",{type:"info",duration:2e3})}};applyPreset=async r=>{if(await m.ask(`Load "${r.name}" preset? This will replace your current settings.`)){let t=JSON.parse(JSON.stringify(r)),o=
|
|
3304
|
+
${n}`,{type:"error"})}return}this.validationIssues=[];try{this._validationToastId&&(document.querySelector("#global-toaster")?.dismissToast(this._validationToastId),this._validationToastId=null)}catch{}this.config=i,console.log("Updated (persisted) config (not applied):",this.config),this.saveConfig(),t&&(console.log("\u{1F514} Emitting design-field-changed event for field:",t),m.dispatchEvent(new CustomEvent("pds:design:field:changed",{detail:{field:t,config:this.config}})));try{this.#n&&(clearTimeout(this.#n),this.#n=null),this.#n=setTimeout(()=>{this.#n=null,this.applyStyles(!0)},this.#o)}catch(n){console.warn("Failed to schedule applyStyles with user config:",n)}};handleReset=async()=>{if(await m.ask("Reset to default configuration? This will clear your saved settings.")){this._stored={preset:"default",design:{}};let e=this._resolvePresetBase("default");this.config=JSON.parse(JSON.stringify(e)),this.formValues=this.filterConfigForSchema(this.config),this.formKey=(this.formKey||0)+1,this.saveConfig(),this.applyStyles(!0),await m.toast("Configuration reset to defaults",{type:"info",duration:2e3})}};applyPreset=async r=>{if(await m.ask(`Load "${r.name}" preset? This will replace your current settings.`)){let t=JSON.parse(JSON.stringify(r)),o=We(t);if(!o.ok){if(this.validationIssues=o.issues,!this._validationToastId){let a=o.issues.slice(0,3).map(i=>`\u2022 ${i.message}`).join(`
|
|
3206
3305
|
`);this._validationToastId=await m.toast(`Preset "${r.name}" has accessibility issues \u2014 not applied.
|
|
3207
3306
|
${a}`,{type:"error",persistent:!0})}return}this.validationIssues=[];try{this._validationToastId&&(document.querySelector("#global-toaster")?.dismissToast(this._validationToastId),this._validationToastId=null)}catch{}this.config=t,this._stored={preset:(r.id||r.name||"").toLowerCase(),design:{}},this.formValues=this.filterConfigForSchema(this.config),this.saveConfig(),this.applyStyles(!0),await m.toast(`"${r.name}" preset loaded successfully!`,{type:"success",duration:3e3})}};async handleThemeChange(r){try{let e=r.target.value;m.theme=e,this.applyStyles(!0),await m.toast(`Theme set to ${e}`,{type:"info",duration:1200})}catch(e){console.warn("Failed to change theme:",e)}}handleDownload=r=>{let e,t,o;switch(r){case"css":e=this.generator.layeredCSS,t="pure-ds.css",o="text/css";break;case"config":e=`// Pure Design System Configuration
|
|
3208
3307
|
// Generated: ${new Date().toISOString()}
|
|
@@ -3210,7 +3309,7 @@ ${a}`,{type:"error",persistent:!0})}return}this.validationIssues=[];try{this._va
|
|
|
3210
3309
|
import { PDS } from 'pure-ds';
|
|
3211
3310
|
|
|
3212
3311
|
export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
3213
|
-
`,t="pds.config.js",o="text/javascript";break;case"tokens":let n=
|
|
3312
|
+
`,t="pds.config.js",o="text/javascript";break;case"tokens":let n=wr(this.generator.generateTokens());e=JSON.stringify(n,null,2),t="design-tokens.json",o="application/json";break}let a=new Blob([e],{type:o}),i=URL.createObjectURL(a),s=document.createElement("a");s.href=i,s.download=t,s.click(),URL.revokeObjectURL(i)};render(){return this.schema?S`
|
|
3214
3313
|
<div class="designer-container">
|
|
3215
3314
|
<div class="designer-toolbar">
|
|
3216
3315
|
<label data-toggle id="mode-toggle">
|
|
@@ -3237,7 +3336,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3237
3336
|
>${this.inspectorMode?"Inspector Active":"Code Inspector"}</span
|
|
3238
3337
|
>
|
|
3239
3338
|
</button>
|
|
3240
|
-
`:
|
|
3339
|
+
`:k}
|
|
3241
3340
|
${this.showThemeSelector?S`
|
|
3242
3341
|
<fieldset
|
|
3243
3342
|
role="radiogroup"
|
|
@@ -3281,14 +3380,14 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3281
3380
|
</label>
|
|
3282
3381
|
`})()}
|
|
3283
3382
|
</fieldset>
|
|
3284
|
-
`:
|
|
3383
|
+
`:k}
|
|
3285
3384
|
${this.showPresetSelector?S`
|
|
3286
3385
|
<fieldset>
|
|
3287
3386
|
<legend>Preset</legend>
|
|
3288
3387
|
<div class="input-icon">
|
|
3289
3388
|
<pds-icon icon="magnifying-glass"></pds-icon>
|
|
3290
3389
|
<input
|
|
3291
|
-
@focus=${r=>
|
|
3390
|
+
@focus=${r=>ne.connect(r,this.presetAutoCompleteSettings)}
|
|
3292
3391
|
id="preset-search"
|
|
3293
3392
|
type="search"
|
|
3294
3393
|
placeholder="Start typing to search all presets..."
|
|
@@ -3296,7 +3395,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3296
3395
|
/>
|
|
3297
3396
|
</div>
|
|
3298
3397
|
</fieldset>
|
|
3299
|
-
`:
|
|
3398
|
+
`:k}
|
|
3300
3399
|
</div>
|
|
3301
3400
|
|
|
3302
3401
|
<div class="designer-form-container">
|
|
@@ -3354,17 +3453,17 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3354
3453
|
</nav>
|
|
3355
3454
|
</div>
|
|
3356
3455
|
</div>
|
|
3357
|
-
`:(this._loadingToastShown||(this._loadingToastShown=!0,setTimeout(async()=>{try{await m.toast("Loading schema...",{duration:1e3})}catch{}},250)),
|
|
3456
|
+
`:(this._loadingToastShown||(this._loadingToastShown=!0,setTimeout(async()=>{try{await m.toast("Loading schema...",{duration:1e3})}catch{}},250)),k)}get presetAutoCompleteSettings(){return{direction:"down",iconHandler:r=>{let e=m.presets[r.id];return`<span class="preset-colors">
|
|
3358
3457
|
<span style="background-color: ${e.colors.primary}"></span>
|
|
3359
3458
|
<span style="background-color: ${e.colors.secondary}"></span>
|
|
3360
3459
|
<span style="background-color: ${e.colors.accent}"></span>
|
|
3361
3460
|
</span>`},categories:{Presets:{action:r=>{let e=m.presets[r.id];this.applyPreset(e)},getItems:r=>{let t=Object.values(m.presets),o=[];if(r.search.length>0){let a=0;o=t.filter(i=>(a++,a<=10&&i.name.toLowerCase().includes(r.search.toLowerCase())||i.description&&i.description.toLowerCase().includes(r.search.toLowerCase())))}else o=t.filter(a=>a.tags?.includes("featured")).slice(0,10);return o.map(a=>({id:a.id,text:a.name,description:a.description,icon:"palette"}))}}}}}_designerUiSchema(){let r=["system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif","-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial","'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif","Roboto, 'Helvetica Neue', Arial, sans-serif","Inter, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif","ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif"],e={};return e["/typography/fontFamilyHeadings"]={"ui:datalist":r},e["/typography/fontFamilyBody"]={"ui:datalist":r},e["/typography/fontFamilyMono"]={"ui:datalist":["ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace","Consolas, 'Liberation Mono', Menlo, monospace","'Fira Code', 'Cascadia Code', 'Source Code Pro', monospace"]},e["/typography/baseFontSize"]={"ui:widget":"input-range","ui:min":12,"ui:max":24},e["/typography/fontScale"]={"ui:widget":"input-range","ui:min":1.1,"ui:max":1.618,"ui:step":.01},e["/spatialRhythm/baseUnit"]={"ui:widget":"input-range","ui:min":4,"ui:max":32},e["/colors/darkMode/background"]={"ui:widget":"input-color"},e["/colors/darkMode/secondary"]={"ui:widget":"input-color"},e["/spatialRhythm/containerPadding"]={"ui:widget":"input-range","ui:min":0,"ui:max":4},e}});customElements.define("pds-demo",class extends _{#i=null;#e=!1;static properties={config:{type:Object},designer:{type:Object},sections:{type:Array,state:!0},inspectorActive:{type:Boolean,state:!0}};constructor(){super(),this.config=null,this.designer=null,this.sections=[],this.inspectorActive=!1,this._docsBase="/pds",this._showdown=null,this._showdownLoading=!1}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),m.addEventListener("pds:design:updated",r=>{this.config=r.detail.config,this.designer=r.detail.designer,this.config&&this.config.staticBase&&(this._docsBase="/"+String(this.config.staticBase).replace(/^\/+|\/+$/g,""))}),m.addEventListener("pds:design:field:changed",r=>{setTimeout(()=>{this.scrollToRelevantSection(r.detail.field)},1e3)}),m.addEventListener("pds:inspector:mode:changed",r=>{this.inspectorActive=r.detail.active}),setTimeout(()=>{this.extractSections(),this.handleInitialHash()},100),this._inspectorCaptureHandler=r=>{if(!this.inspectorActive)return;let e=r.target;if(e.closest&&e.closest("a[href]")){r.preventDefault();return}if(e.closest&&e.closest("button")){r.preventDefault();return}},this.addEventListener("click",this._inspectorCaptureHandler,!0);try{let r=window.PDS_DOCS_BASE;typeof r=="string"&&r.trim()&&(this._docsBase=r.replace(/\/+$/,""))}catch{}this.config&&this.config.staticBase&&(this._docsBase="/"+String(this.config.staticBase).replace(/^\/+|\/+$/g,"")),m.addEventListener("pds:docs:view",async r=>{let e=r.detail&&r.detail.file||"README.md";await this._renderDocToDialog(e)})}disconnectedCallback(){super.disconnectedCallback(),this._inspectorCaptureHandler&&(this.removeEventListener("click",this._inspectorCaptureHandler,!0),this._inspectorCaptureHandler=null)}async fetchDocHTML(r="README.md"){let e=this._docsBase||"/pds",t=`${e.replace(/\/+$/,"")}/${r}`;try{let o=await fetch(t,{cache:"no-cache"});if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);let a=await o.text(),i=await this.getShowdownConverter();return i?i.makeHtml(a):`<pre>${this.escapeHTML(a)}</pre>`}catch(o){return`<p>Failed to load ${r} from ${e}: ${String(o.message||o)}</p>`}}async _renderDocToDialog(r){let e=await this.fetchDocHTML(r),t=document.getElementById("pds-docs-dialog");t||(t=document.createElement("dialog"),t.id="pds-docs-dialog",t.style.width="min(900px, 90vw)",t.style.maxHeight="85vh",t.style.padding="0",t.innerHTML=`<div style="padding:16px 20px; overflow:auto; max-height:85vh">
|
|
3362
3461
|
<div class="markdown-body"></div>
|
|
3363
|
-
</div>`,document.body.appendChild(t));let o=t.querySelector(".markdown-body");o&&(o.innerHTML=e),t.open||t.showModal()}deactivateInspector(){m.dispatchEvent(new CustomEvent("pds:inspector:deactivate",{detail:{}}))}extractSections(){let r=this.querySelectorAll("[data-section]");this.sections=Array.from(r).map(e=>{let t=e.getAttribute("data-section"),a=e.querySelector("h2")?.textContent?.trim()||t;return{id:t,title:a}})}handleInitialHash(){let r=window.location.hash.slice(1);if(r){let e=this.querySelector(`[data-section="${r}"]`);e&&setTimeout(()=>{e.scrollIntoView({behavior:"smooth",block:"start"})},300)}}detectComponentElement(r){let e=r,t="element",o=e.tagName.toLowerCase();if(e.closest(".showcase-toc")||e.tagName==="DS-SHOWCASE"||e.classList.contains("showcase-section")||e.closest(".showcase-section")===e)return null;let a=this.findEnhancedElement(e);if(a)return{element:a,componentType:"enhanced-component",displayName:this.getEnhancedElementName(a)};let i=["FIGURE","TABLE","DETAILS","VIDEO","AUDIO","PICTURE","BLOCKQUOTE","PRE","CODE"];if(i.includes(e.tagName))return{element:e,componentType:"html-primitive",displayName:e.tagName.toLowerCase()};for(let
|
|
3462
|
+
</div>`,document.body.appendChild(t));let o=t.querySelector(".markdown-body");o&&(o.innerHTML=e),t.open||t.showModal()}deactivateInspector(){m.dispatchEvent(new CustomEvent("pds:inspector:deactivate",{detail:{}}))}extractSections(){let r=this.querySelectorAll("[data-section]");this.sections=Array.from(r).map(e=>{let t=e.getAttribute("data-section"),a=e.querySelector("h2")?.textContent?.trim()||t;return{id:t,title:a}})}handleInitialHash(){let r=window.location.hash.slice(1);if(r){let e=this.querySelector(`[data-section="${r}"]`);e&&setTimeout(()=>{e.scrollIntoView({behavior:"smooth",block:"start"})},300)}}detectComponentElement(r){let e=r,t="element",o=e.tagName.toLowerCase();if(e.closest(".showcase-toc")||e.tagName==="DS-SHOWCASE"||e.classList.contains("showcase-section")||e.closest(".showcase-section")===e)return null;let a=this.findEnhancedElement(e);if(a)return{element:a,componentType:"enhanced-component",displayName:this.getEnhancedElementName(a)};let i=["FIGURE","TABLE","DETAILS","VIDEO","AUDIO","PICTURE","BLOCKQUOTE","PRE","CODE"];if(i.includes(e.tagName))return{element:e,componentType:"html-primitive",displayName:e.tagName.toLowerCase()};for(let c of i){let u=e.closest(c.toLowerCase());if(u)return{element:u,componentType:"html-primitive",displayName:c.toLowerCase()}}let s=this.findPDSStyledElement(e);if(s)return s;if(e.tagName==="FIELDSET"){let c=e.getAttribute("role");if(c==="group"||c==="radiogroup")return t="form-group",o=c==="radiogroup"?"radio group":"form group",{element:e,componentType:t,displayName:o}}let n=e.closest('fieldset[role="group"], fieldset[role="radiogroup"]');if(n){let c=n.getAttribute("role");return{element:n,componentType:"form-group",displayName:c==="radiogroup"?"radio group":"form group"}}if(e.tagName==="LABEL"||e.closest("label")){let c=e.tagName==="LABEL"?e:e.closest("label"),u=c.querySelector("input, select, textarea");if(u)return t="form-control",o=`${u.tagName.toLowerCase()} field`,{element:c,componentType:t,displayName:o}}if(["INPUT","SELECT","TEXTAREA"].includes(e.tagName)){let c=e.closest("label");return c?(e=c,t="form-control",o=`${r.tagName.toLowerCase()} field`,{element:e,componentType:t,displayName:o}):(t="form-control",o=`${e.tagName.toLowerCase()}`,{element:e,componentType:t,displayName:o})}if(e.tagName.includes("-"))return t="web-component",o=e.tagName.toLowerCase(),{element:e,componentType:t,displayName:o};let l=e.closest("[tagName*='-']");if(l&&l.tagName.includes("-"))return{element:l,componentType:"web-component",displayName:l.tagName.toLowerCase()};if(e.tagName==="BUTTON"||e.closest("button"))return e=e.tagName==="BUTTON"?e:e.closest("button"),t="button",o=e.querySelector("pds-icon")?"button with icon":"button",{element:e,componentType:t,displayName:o};if(e.tagName==="pds-icon"||e.closest("pds-icon"))return e=e.tagName==="pds-icon"?e:e.closest("pds-icon"),t="icon",o=`pds-icon (${e.getAttribute("icon")||"unknown"})`,{element:e,componentType:t,displayName:o};if(e.tagName==="NAV"||e.closest("nav[data-dropdown]"))return e=e.closest("nav[data-dropdown]")||e,t="navigation",o="dropdown menu",{element:e,componentType:t,displayName:o};let p=["color-card","color-scale","grid","flex-wrap","btn-group"];for(let c of p){if(e.classList.contains(c))return t="container",o=c.replace(/-/g," "),{element:e,componentType:t,displayName:o};let u=e.closest(`.${c}`);if(u)return e=u,t="container",o=c.replace(/-/g," "),{element:e,componentType:t,displayName:o}}let d=this.findNearestComponent(e);return d&&d!==e?this.detectComponentElement(d):{element:e,componentType:t,displayName:o}}findPDSStyledElement(r){let e=m.findComponentForElement(r,{maxDepth:5});return!e||e.element&&e.element.tagName==="DS-SHOWCASE"?null:{element:e.element,componentType:e.componentType||"pds-primitive",displayName:e.displayName||(e.element?.tagName||"element").toLowerCase()}}findEnhancedElement(r){let e=["nav[data-dropdown]","label[data-toggle]","[data-tabs]","[data-modal]","[data-tooltip]"];for(let t of e){if(r.matches&&r.matches(t))return r;let o=r.closest(t);if(o)return o}return null}getEnhancedElementName(r){if(r.matches("nav[data-dropdown]"))return"dropdown menu";if(r.matches("label[data-toggle]"))return"toggle switch";if(r.matches("[data-tabs]"))return"tab component";if(r.matches("[data-modal]"))return"modal dialog";if(r.matches("[data-tooltip]"))return"tooltip";let e=Array.from(r.attributes).filter(t=>t.name.startsWith("data-")).map(t=>t.name.replace("data-",""));return e[0]?`${e[0]} component`:r.tagName.toLowerCase()}findNearestComponent(r){let e=r.parentElement,t=0,o=5;for(;e&&t<o;){if(t++,e.tagName==="DS-SHOWCASE")return null;if(e.classList.contains("showcase-section")){e=e.parentElement;continue}if(e.tagName.includes("-")||e.tagName==="BUTTON"||e.tagName==="NAV"||e.tagName==="FIELDSET"||e.tagName==="LABEL"||e.tagName==="TABLE"||e.tagName==="FIGURE"||e.tagName==="BLOCKQUOTE"||e.tagName==="ARTICLE"||e.hasAttribute("role")||e.hasAttribute("data-dropdown")||e.hasAttribute("data-toggle")||this.hasPDSClass(e))return e;e=e.parentElement}return null}hasPDSClass(r){let e=["card","surface","tag","badge","pill","chip","callout","toast","notification","message","accordion","collapse","expandable","list-group","menu-list","nav-list","breadcrumb","pagination","tabs","tab","progress","spinner","loader","skeleton","divider","separator","avatar","thumbnail","form-group","input-group","checkbox-group","radio-group","btn-","icon-only","dropdown","popover","tooltip","modal","dialog","table-responsive","data-table","card-grid","media-object","status","indicator","dot-indicator","pulse"];return Array.from(r.classList).some(t=>e.some(o=>t.startsWith(o)))}extractHTML(r){let e=r.cloneNode(!0);[e,...e.querySelectorAll("*")].forEach(i=>{i.removeAttribute&&(i.removeAttribute("_$litPart$"),i.removeAttribute("_$litElement$"))});let o=this.formatHTMLElement(e),a=this.extractLitProperties(r);return{html:o,litProps:a}}extractLitProperties(r){let e=[];if(r.checked!==void 0&&r.type==="checkbox"&&e.push({name:".checked",value:r.checked}),r.value!==void 0&&["INPUT","SELECT","TEXTAREA"].includes(r.tagName)&&e.push({name:".value",value:r.value}),r.tagName.includes("-")){let t=customElements.get(r.tagName.toLowerCase());t&&t.properties&&Object.keys(t.properties).forEach(o=>{r[o]!==void 0&&typeof r[o]!="function"&&e.push({name:`.${o}`,value:r[o]})})}return e}formatHTMLElement(r,e=0){let t=s=>" ".repeat(s),o="",a=s=>s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),i=s=>["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"].includes(s);if(r.nodeType===Node.TEXT_NODE){let s=r.textContent.replace(/\s+/g," ").trim();return s.length===0?"":t(e)+a(s)+`
|
|
3364
3463
|
`}if(r.nodeType===Node.COMMENT_NODE){let s=r.textContent||"";return s===""||s.startsWith("?lit$")||s.startsWith("lit-part")||s==="/lit-part"?"":t(e)+`<!-- ${a(s)} -->
|
|
3365
|
-
`}if(r.nodeType===Node.ELEMENT_NODE){let s=r.tagName.toLowerCase(),n=[],
|
|
3464
|
+
`}if(r.nodeType===Node.ELEMENT_NODE){let s=r.tagName.toLowerCase(),n=[],l=new Set(["data-label","data-toggle"]);for(let d of r.attributes){let c=d.name,u=d.value;if(l.has(c)){n.push(c);continue}u===""?c.startsWith("data-")?n.push(`${c}=""`):n.push(c):n.push(`${c}="${a(u)}"`)}let p=n.length?" "+n.join(" "):"";o+=t(e)+`<${s}${p}>
|
|
3366
3465
|
`;for(let d of Array.from(r.childNodes))o+=this.formatHTMLElement(d,e+1);return i(s)||(o+=t(e)+`</${s}>
|
|
3367
|
-
`),o}return""}handleInspectorClick(r){if(!this.inspectorActive)return;r.preventDefault(),r.stopPropagation();let e=this.detectComponentElement(r.target);if(!e)return;let{element:t,componentType:o,displayName:a}=e;this.deactivateInspector();let i=null,s=null;try{s=(this.config?.autoDefine?.enhancers||(typeof appConfig<"u"?appConfig?.autoDefine?.enhancers:null)||(typeof window<"u"?window?.appConfig?.autoDefine?.enhancers:null)||document.querySelector&&document.querySelector("pure-app")?.config?.autoDefine?.enhancers||[]).find(d=>{try{return t.matches&&t.matches(d.selector)||t.closest&&t.closest(d.selector)}catch{return!1}})}catch{s=null}let n=[],
|
|
3466
|
+
`),o}return""}handleInspectorClick(r){if(!this.inspectorActive)return;r.preventDefault(),r.stopPropagation();let e=this.detectComponentElement(r.target);if(!e)return;let{element:t,componentType:o,displayName:a}=e;this.deactivateInspector();let i=null,s=null;try{s=(this.config?.autoDefine?.enhancers||(typeof appConfig<"u"?appConfig?.autoDefine?.enhancers:null)||(typeof window<"u"?window?.appConfig?.autoDefine?.enhancers:null)||document.querySelector&&document.querySelector("pure-app")?.config?.autoDefine?.enhancers||[]).find(d=>{try{return t.matches&&t.matches(d.selector)||t.closest&&t.closest(d.selector)}catch{return!1}})}catch{s=null}let n=[],l=null;if(s&&s.demoHtml){if(i=typeof s.demoHtml=="function"?s.demoHtml(t):s.demoHtml,typeof i=="string")try{let p=document.createElement("div");p.innerHTML=i.trim();let d="";for(let c of Array.from(p.childNodes))d+=this.formatHTMLElement(c);l=d}catch{l=i}else i instanceof Node?l=this.formatHTMLElement(i):l=String(i);n=this.extractLitProperties(t)}else{let p=this.extractHTML(t);l=p.html,n=p.litProps}this.showCodeDrawer(l,n,a,o)}async showCodeDrawer(r,e,t,o){let a=document.querySelector("#global-drawer"),i=S`
|
|
3368
3467
|
<div class="code-drawer-header">
|
|
3369
3468
|
<div class="code-drawer-title">
|
|
3370
3469
|
<pds-icon icon="code" size="sm"></pds-icon>
|
|
@@ -3390,49 +3489,49 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3390
3489
|
`)}
|
|
3391
3490
|
</div>
|
|
3392
3491
|
</div>
|
|
3393
|
-
`:
|
|
3492
|
+
`:k,n=S`
|
|
3394
3493
|
${s}
|
|
3395
3494
|
<div class="code-block-wrapper">
|
|
3396
3495
|
<pre
|
|
3397
3496
|
class="code-block"
|
|
3398
3497
|
><code class="language-html">Loading syntax highlighting...</code></pre>
|
|
3399
3498
|
</div>
|
|
3400
|
-
`;await a.show(n,{header:i});let
|
|
3499
|
+
`;await a.show(n,{header:i});let l=await this.highlightWithShiki(r),p=S`
|
|
3401
3500
|
${s}
|
|
3402
3501
|
<div class="code-block-wrapper">
|
|
3403
|
-
<pre class="code-block"><code class="language-html">${
|
|
3502
|
+
<pre class="code-block"><code class="language-html">${He(l)}</code></pre>
|
|
3404
3503
|
</div>
|
|
3405
|
-
`;await document.getElementById("global-drawer").show(p,{header:i}),setTimeout(()=>{let
|
|
3504
|
+
`;await document.getElementById("global-drawer").show(p,{header:i}),setTimeout(()=>{let c=document.getElementById("global-drawer")?.querySelector("#copyCodeBtn");c&&(c.onclick=()=>{let u=r;e.length>0&&(u=`<!-- Lit Properties:
|
|
3406
3505
|
`+e.map(g=>` ${g.name}=${JSON.stringify(g.value)}`).join(`
|
|
3407
3506
|
`)+`
|
|
3408
3507
|
-->
|
|
3409
3508
|
|
|
3410
|
-
`+r),navigator.clipboard.writeText(
|
|
3509
|
+
`+r),navigator.clipboard.writeText(u).then(()=>{c.innerHTML=`
|
|
3411
3510
|
<pds-icon icon="check" size="sm"></pds-icon>
|
|
3412
3511
|
Copied!
|
|
3413
|
-
`,setTimeout(()=>{
|
|
3512
|
+
`,setTimeout(()=>{c.innerHTML=`
|
|
3414
3513
|
<pds-icon icon="clipboard" size="sm"></pds-icon>
|
|
3415
3514
|
Copy HTML
|
|
3416
|
-
`},2e3)})})},100)}async loadShiki(){if(this.#i)return this.#i;if(this.#e){for(;this.#e;)await new Promise(r=>setTimeout(r,50));return this.#i}this.#e=!0;try{let r=await import("https://esm.sh/shiki@1.0.0");return this.#i=await r.getHighlighter({themes:["github-dark","github-light"],langs:["html","css","javascript","json"]}),this.#i}catch(r){return console.error("Failed to load Shiki:",r),null}finally{this.#e=!1}}async highlightWithShiki(r,e="html"){let t=await this.loadShiki();if(!t)return this.escapeHTML(r);try{let a=document.documentElement.getAttribute("data-theme")==="dark"?"github-dark":"github-light",s=t.codeToHtml(r,{lang:e,theme:a}).match(/<code[^>]*>([\s\S]*)<\/code>/);return s?s[1]:this.escapeHTML(r)}catch(o){return console.error("Shiki highlighting failed:",o),this.escapeHTML(r)}}escapeHTML(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}async getShowdownConverter(){if(this._showdown)return this._showdown;let r=await this.loadShowdownFromCDN();return!r||!r.Converter?null:(this._showdown=new r.Converter({ghCompatibleHeaderId:!0,tables:!0,strikethrough:!0,tasklists:!0}),this._showdown)}async loadShowdownFromCDN(){if(typeof window<"u"&&window.showdown)return window.showdown;if(this._showdownLoading){for(;this._showdownLoading;)await new Promise(e=>setTimeout(e,50));return window.showdown||null}this._showdownLoading=!0;let r=["https://cdn.jsdelivr.net/npm/showdown@2.1.0/dist/showdown.min.js","https://unpkg.com/showdown@2.1.0/dist/showdown.min.js"];for(let e of r)try{if(await this._injectScript(e,"showdown"),window.showdown)return this._showdownLoading=!1,window.showdown}catch{}return this._showdownLoading=!1,null}_injectScript(r,e){return new Promise((t,o)=>{if(document.querySelector(`script[data-lib="${e}"][src="${r}"]`)){setTimeout(t,0);return}let a=document.createElement("script");a.src=r,a.async=!0,a.defer=!0,a.dataset.lib=e||"lib",a.onload=()=>t(),a.onerror=()=>{a.remove(),o(new Error(`Failed to load script: ${r}`))},document.head.appendChild(a)})}scrollToRelevantSection(r){console.log("
|
|
3515
|
+
`},2e3)})})},100)}async loadShiki(){if(this.#i)return this.#i;if(this.#e){for(;this.#e;)await new Promise(r=>setTimeout(r,50));return this.#i}this.#e=!0;try{let r=await import("https://esm.sh/shiki@1.0.0");return this.#i=await r.getHighlighter({themes:["github-dark","github-light"],langs:["html","css","javascript","json"]}),this.#i}catch(r){return console.error("Failed to load Shiki:",r),null}finally{this.#e=!1}}async highlightWithShiki(r,e="html"){let t=await this.loadShiki();if(!t)return this.escapeHTML(r);try{let a=document.documentElement.getAttribute("data-theme")==="dark"?"github-dark":"github-light",s=t.codeToHtml(r,{lang:e,theme:a}).match(/<code[^>]*>([\s\S]*)<\/code>/);return s?s[1]:this.escapeHTML(r)}catch(o){return console.error("Shiki highlighting failed:",o),this.escapeHTML(r)}}escapeHTML(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}async getShowdownConverter(){if(this._showdown)return this._showdown;let r=await this.loadShowdownFromCDN();return!r||!r.Converter?null:(this._showdown=new r.Converter({ghCompatibleHeaderId:!0,tables:!0,strikethrough:!0,tasklists:!0}),this._showdown)}async loadShowdownFromCDN(){if(typeof window<"u"&&window.showdown)return window.showdown;if(this._showdownLoading){for(;this._showdownLoading;)await new Promise(e=>setTimeout(e,50));return window.showdown||null}this._showdownLoading=!0;let r=["https://cdn.jsdelivr.net/npm/showdown@2.1.0/dist/showdown.min.js","https://unpkg.com/showdown@2.1.0/dist/showdown.min.js"];for(let e of r)try{if(await this._injectScript(e,"showdown"),window.showdown)return this._showdownLoading=!1,window.showdown}catch{}return this._showdownLoading=!1,null}_injectScript(r,e){return new Promise((t,o)=>{if(document.querySelector(`script[data-lib="${e}"][src="${r}"]`)){setTimeout(t,0);return}let a=document.createElement("script");a.src=r,a.async=!0,a.defer=!0,a.dataset.lib=e||"lib",a.onload=()=>t(),a.onerror=()=>{a.remove(),o(new Error(`Failed to load script: ${r}`))},document.head.appendChild(a)})}scrollToRelevantSection(r){console.log("?? Scrolling to section for field:",r);let e=r.startsWith("/")?r.slice(1):r;console.log(" Normalized path:",e);let t={"colors/primary":"color-system","colors/secondary":"color-system","colors/accent":"color-system","colors/background":"color-system","colors/success":"color-system","colors/warning":"color-system","colors/danger":"color-system","colors/info":"color-system","typography/":"typography","spatialRhythm/":"spacing","layers/":"surfaces-shadows","shape/":"buttons","behavior/transitionSpeed":"interactive-states","behavior/":"interactive-states","components/forms":"forms","components/alerts":"callouts","components/badges":"badges","components/tables":"tables","components/toasts":"toasts","components/modals":"modals","components/tabStrip":"tabs","icons/":"icons"},o=null;for(let[a,i]of Object.entries(t))if(e.startsWith(a)){o=i,console.log(` ? Matched pattern "${a}" ? section "${i}"`);break}if(o){let a=this.querySelector(`[data-section="${o}"]`);console.log(` Searching for section: [data-section="${o}"]`,a?"? Found":"? Not found"),a?(a.scrollIntoView({behavior:"smooth",block:"start"}),a.style.transition="background-color 0.3s ease",a.style.backgroundColor="var(--color-primary-50)",setTimeout(()=>{a.style.backgroundColor=""},1500),console.log(" ? Scrolled and highlighted section")):console.warn(` ? Section [data-section="${o}"] not found in DOM`)}else console.warn(` ? No section mapping found for field: ${r}`)}renderDisabledSection(r,e){return S`
|
|
3417
3516
|
<section class="showcase-section disabled">
|
|
3418
3517
|
<h2>${r}</h2>
|
|
3419
3518
|
<p class="disabled-message">${e}</p>
|
|
3420
3519
|
</section>
|
|
3421
|
-
`}renderTOC(){return!this.sections||this.sections.length===0?
|
|
3520
|
+
`}renderTOC(){return!this.sections||this.sections.length===0?k:S`
|
|
3422
3521
|
<nav class="showcase-toc" aria-label="Table of Contents">
|
|
3423
3522
|
<div class="toc-wrapper">
|
|
3424
3523
|
<div class="input-icon">
|
|
3425
3524
|
<pds-icon icon="magnifying-glass"></pds-icon>
|
|
3426
3525
|
<input
|
|
3427
3526
|
id="pds-search"
|
|
3428
|
-
@focus=${r=>
|
|
3527
|
+
@focus=${r=>ne.connect(r,this.autoCompleteSettings)}
|
|
3429
3528
|
type="search"
|
|
3430
3529
|
placeholder="Search design system..."
|
|
3431
3530
|
/>
|
|
3432
3531
|
</div>
|
|
3433
3532
|
</div>
|
|
3434
3533
|
</nav>
|
|
3435
|
-
`}get autoCompleteSettings(){return{iconHandler:r=>r.icon?`<pds-icon icon="${r.icon}"></pds-icon>`:null,categories:{Sections:{action:r=>{document.querySelector(`[data-section="${r.id}"]`).scrollIntoView({behavior:"smooth",block:"start"})},trigger:r=>r.search.length===0,getItems:r=>this.sections.map(e=>({text:e.title,id:e.id,icon:"folder-simple"}))},Query:{action:r=>{r.code&&navigator.clipboard&&navigator.clipboard.writeText(r.code).then(()=>{m.dispatchEvent(new CustomEvent("pds:toast",{detail:{message:"Code copied to clipboard",type:"success",duration:2e3}}))});let e=r.category?.toLowerCase()||"",t=null;if(e.includes("color")||e.includes("surface")?t="color-system":e.includes("utility")||e.includes("layout")?t="utilities":e.includes("component")?t="components":e.includes("typography")?t="typography":e.includes("spacing")&&(t="spacing"),t){let o=document.querySelector(`[data-section="${t}"]`);o&&o.scrollIntoView({behavior:"smooth",block:"start"})}},trigger:r=>r.search.length>=2,getItems:async r=>{let e=(r.search||"").trim();if(!e)return[];try{return(await m.query(e)).map(o=>({text:o.text,id:o.value,icon:o.icon||"magnifying-glass",category:o.category,code:o.code,cssVar:o.cssVar,description:o.description}))}catch(t){return console.error("Query error:",t),[]}}},Search:{action:r=>{let e=r.id||"",t=(r.search||"").toLowerCase(),[o,a]=e.split("|"),i=this.sections.find(s=>s.id===a);if(i||(i=this.sections.find(s=>s.title?.toLowerCase().includes(a?.toLowerCase?.()||"")||s.id?.toLowerCase().includes(a?.toLowerCase?.()||"")||s.title?.toLowerCase().includes(t)||s.id?.toLowerCase().includes(t))),!i&&t)for(let s of this.sections){let n=this.querySelector(`[data-section="${s.id}"]`);if(!n)continue;if((n.innerText||"").toLowerCase().includes(t)||s.title.toLowerCase().includes(t)){i=s;break}}if(i){let s=this.querySelector(`[data-section="${i.id}"]`);s&&s.scrollIntoView({behavior:"smooth",block:"start"})}else if((this.innerText||"").toLowerCase().indexOf(t)!==-1)for(let
|
|
3534
|
+
`}get autoCompleteSettings(){return{iconHandler:r=>r.icon?`<pds-icon icon="${r.icon}"></pds-icon>`:null,categories:{Sections:{action:r=>{document.querySelector(`[data-section="${r.id}"]`).scrollIntoView({behavior:"smooth",block:"start"})},trigger:r=>r.search.length===0,getItems:r=>this.sections.map(e=>({text:e.title,id:e.id,icon:"folder-simple"}))},Query:{action:r=>{r.code&&navigator.clipboard&&navigator.clipboard.writeText(r.code).then(()=>{m.dispatchEvent(new CustomEvent("pds:toast",{detail:{message:"Code copied to clipboard",type:"success",duration:2e3}}))});let e=r.category?.toLowerCase()||"",t=null;if(e.includes("color")||e.includes("surface")?t="color-system":e.includes("utility")||e.includes("layout")?t="utilities":e.includes("component")?t="components":e.includes("typography")?t="typography":e.includes("spacing")&&(t="spacing"),t){let o=document.querySelector(`[data-section="${t}"]`);o&&o.scrollIntoView({behavior:"smooth",block:"start"})}},trigger:r=>r.search.length>=2,getItems:async r=>{let e=(r.search||"").trim();if(!e)return[];try{return(await m.query(e)).map(o=>({text:o.text,id:o.value,icon:o.icon||"magnifying-glass",category:o.category,code:o.code,cssVar:o.cssVar,description:o.description}))}catch(t){return console.error("Query error:",t),[]}}},Search:{action:r=>{let e=r.id||"",t=(r.search||"").toLowerCase(),[o,a]=e.split("|"),i=this.sections.find(s=>s.id===a);if(i||(i=this.sections.find(s=>s.title?.toLowerCase().includes(a?.toLowerCase?.()||"")||s.id?.toLowerCase().includes(a?.toLowerCase?.()||"")||s.title?.toLowerCase().includes(t)||s.id?.toLowerCase().includes(t))),!i&&t)for(let s of this.sections){let n=this.querySelector(`[data-section="${s.id}"]`);if(!n)continue;if((n.innerText||"").toLowerCase().includes(t)||s.title.toLowerCase().includes(t)){i=s;break}}if(i){let s=this.querySelector(`[data-section="${i.id}"]`);s&&s.scrollIntoView({behavior:"smooth",block:"start"})}else if((this.innerText||"").toLowerCase().indexOf(t)!==-1)for(let l of this.sections){let p=this.querySelector(`[data-section="${l.id}"]`);if(p&&(p.innerText||"").toLowerCase().includes(t)){p.scrollIntoView({behavior:"smooth",block:"start"});break}}},trigger:r=>r.search.length>1,getItems:r=>{let e=(r.search||"").trim().toLowerCase();if(!e)return[];let t=[];for(let a of m.ontology.primitives||[]){let i=(a.name||a.id||"").toString(),s=a.id||i.replace(/\s+/g,"-").toLowerCase(),n=(i.toLowerCase().includes(e)?30:0)+(s.includes(e)?20:0),l=(a.selectors||[]).some(d=>String(d).toLowerCase().includes(e)),p=n+(l?10:0);t.push({type:"primitive",key:s,name:i,score:p})}for(let a of m.ontology.components||[]){let i=(a.name||a.id||"").toString(),s=a.id||i.replace(/\s+/g,"-").toLowerCase(),n=(i.toLowerCase().includes(e)?40:0)+(s.includes(e)?25:0),l=(a.selectors||[]).some(d=>String(d).toLowerCase().includes(e)),p=n+(l?10:0);t.push({type:"component",key:s,name:i,score:p})}if(m.ontology.tokens){for(let[a,i]of Object.entries(m.ontology.tokens))if(Array.isArray(i))for(let s of i){let n=`${a}/${s}`,l=`${a}-${s}`,p=n.toLowerCase().includes(e)?35:0;t.push({type:"token",key:l,name:n,score:p})}}for(let a of m.ontology.enhancements||[]){let i=String(a),s=`enh-${i.replace(/[^a-z0-9]+/gi,"-")}`.toLowerCase(),n=i.toLowerCase().includes(e)?25:0;t.push({type:"enhancement",key:s,name:i,score:n})}for(let a of m.ontology.utilities||[]){let i=String(a),s=`util-${i.replace(/[^a-z0-9]+/gi,"-")}`.toLowerCase(),n=i.toLowerCase().includes(e)?20:0;t.push({type:"utility",key:s,name:i,score:n})}if(m.ontology.styles)for(let[a,i]of Object.entries(m.ontology.styles)){let s=a,n=`style-${a}`,l=s.toLowerCase().includes(e)?10:0;t.push({type:"style",key:n,name:s,score:l})}for(let a of t){let i=(a.name||"").toLowerCase(),s=(a.key||"").toLowerCase();i.includes(e)&&(a.score+=50),s.includes(e)&&(a.score+=20)}return t.filter(a=>a.score>0).sort((a,i)=>i.score-a.score).slice(0,30).map(a=>({text:a.name,id:`${a.type}|${a.key}`,icon:a.type==="component"?"brackets-curly":a.type==="primitive"?"tag":a.type==="token"?"palette":"folder-simple"}))}}}}}render(){let r=this.config?.components||{},e=typeof document<"u"&&document.documentElement?.getAttribute("data-theme")||"light",t=e==="dark"?"Light Surfaces in Dark Mode":"Dark Surfaces in Light Mode",o=e==="dark"?"light surface in dark mode":"dark surface in light mode";return S`
|
|
3436
3535
|
<div
|
|
3437
3536
|
class="showcase-container ${this.inspectorActive?"inspector-active":""}"
|
|
3438
3537
|
@click=${this.handleInspectorClick}
|
|
@@ -3473,7 +3572,6 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3473
3572
|
Color System
|
|
3474
3573
|
</h2>
|
|
3475
3574
|
|
|
3476
|
-
|
|
3477
3575
|
<div class="color-grid">
|
|
3478
3576
|
${this.renderColorCard("Primary","primary")}
|
|
3479
3577
|
${this.renderColorCard("Secondary","secondary")}
|
|
@@ -3484,53 +3582,6 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3484
3582
|
${this.renderColorCard("Info","info")}
|
|
3485
3583
|
</div>
|
|
3486
3584
|
|
|
3487
|
-
<h3>Semantic Color Usage</h3>
|
|
3488
|
-
<div class="semantic-usage">
|
|
3489
|
-
<div class="semantic-message success">
|
|
3490
|
-
<pds-icon
|
|
3491
|
-
icon="check-circle"
|
|
3492
|
-
class="icon-success"
|
|
3493
|
-
size="lg"
|
|
3494
|
-
></pds-icon>
|
|
3495
|
-
<div>
|
|
3496
|
-
<strong>Success</strong>
|
|
3497
|
-
<p>Operations completed successfully</p>
|
|
3498
|
-
</div>
|
|
3499
|
-
</div>
|
|
3500
|
-
|
|
3501
|
-
<div class="semantic-message warning">
|
|
3502
|
-
<pds-icon
|
|
3503
|
-
icon="warning"
|
|
3504
|
-
class="icon-warning"
|
|
3505
|
-
size="lg"
|
|
3506
|
-
></pds-icon>
|
|
3507
|
-
<div>
|
|
3508
|
-
<strong>Warning</strong>
|
|
3509
|
-
<p>Please review carefully</p>
|
|
3510
|
-
</div>
|
|
3511
|
-
</div>
|
|
3512
|
-
|
|
3513
|
-
<div class="semantic-message danger">
|
|
3514
|
-
<pds-icon
|
|
3515
|
-
icon="x-circle"
|
|
3516
|
-
class="icon-danger"
|
|
3517
|
-
size="lg"
|
|
3518
|
-
></pds-icon>
|
|
3519
|
-
<div>
|
|
3520
|
-
<strong>Danger</strong>
|
|
3521
|
-
<p>Critical error occurred</p>
|
|
3522
|
-
</div>
|
|
3523
|
-
</div>
|
|
3524
|
-
|
|
3525
|
-
<div class="semantic-message info">
|
|
3526
|
-
<pds-icon icon="info" class="icon-info" size="lg"></pds-icon>
|
|
3527
|
-
<div>
|
|
3528
|
-
<strong>Info</strong>
|
|
3529
|
-
<p>Helpful information</p>
|
|
3530
|
-
</div>
|
|
3531
|
-
</div>
|
|
3532
|
-
</div>
|
|
3533
|
-
|
|
3534
3585
|
<h3>Gray Scale (from Secondary)</h3>
|
|
3535
3586
|
<div class="gray-scale-grid">
|
|
3536
3587
|
${[50,100,200,300,400,500,600,700,800].map(a=>S`
|
|
@@ -3787,19 +3838,19 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3787
3838
|
</form>
|
|
3788
3839
|
</section>
|
|
3789
3840
|
|
|
3790
|
-
<section class="showcase-section" data-section="
|
|
3841
|
+
<section class="showcase-section" data-section="callouts">
|
|
3791
3842
|
<h2>
|
|
3792
3843
|
<pds-icon
|
|
3793
3844
|
icon="bell-ringing"
|
|
3794
3845
|
size="lg"
|
|
3795
3846
|
class="icon-primary"
|
|
3796
3847
|
></pds-icon>
|
|
3797
|
-
|
|
3848
|
+
Callouts & Feedback
|
|
3798
3849
|
</h2>
|
|
3799
3850
|
|
|
3800
3851
|
<div class="grid grid-cols-1">
|
|
3801
|
-
<div class="
|
|
3802
|
-
<div class="
|
|
3852
|
+
<div class="callout callout-success">
|
|
3853
|
+
<div class="callout-icon">
|
|
3803
3854
|
<pds-icon
|
|
3804
3855
|
icon="check-circle"
|
|
3805
3856
|
class="icon-success"
|
|
@@ -3807,23 +3858,23 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3807
3858
|
></pds-icon>
|
|
3808
3859
|
</div>
|
|
3809
3860
|
<div>
|
|
3810
|
-
<div class="
|
|
3861
|
+
<div class="callout-title">Success!</div>
|
|
3811
3862
|
<p>Your operation completed successfully.</p>
|
|
3812
3863
|
</div>
|
|
3813
3864
|
</div>
|
|
3814
3865
|
|
|
3815
|
-
<div class="
|
|
3816
|
-
<div class="
|
|
3866
|
+
<div class="callout callout-info">
|
|
3867
|
+
<div class="callout-icon">
|
|
3817
3868
|
<pds-icon icon="info" class="icon-info" size="lg"></pds-icon>
|
|
3818
3869
|
</div>
|
|
3819
3870
|
<div>
|
|
3820
|
-
<div class="
|
|
3871
|
+
<div class="callout-title">Information</div>
|
|
3821
3872
|
<p>This is an informational message.</p>
|
|
3822
3873
|
</div>
|
|
3823
3874
|
</div>
|
|
3824
3875
|
|
|
3825
|
-
<div class="
|
|
3826
|
-
<div class="
|
|
3876
|
+
<div class="callout callout-warning">
|
|
3877
|
+
<div class="callout-icon">
|
|
3827
3878
|
<pds-icon
|
|
3828
3879
|
icon="warning"
|
|
3829
3880
|
class="icon-warning"
|
|
@@ -3831,13 +3882,13 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3831
3882
|
></pds-icon>
|
|
3832
3883
|
</div>
|
|
3833
3884
|
<div>
|
|
3834
|
-
<div class="
|
|
3885
|
+
<div class="callout-title">Warning</div>
|
|
3835
3886
|
<p>Please review this warning.</p>
|
|
3836
3887
|
</div>
|
|
3837
3888
|
</div>
|
|
3838
3889
|
|
|
3839
|
-
<div class="
|
|
3840
|
-
<div class="
|
|
3890
|
+
<div class="callout callout-danger">
|
|
3891
|
+
<div class="callout-icon">
|
|
3841
3892
|
<pds-icon
|
|
3842
3893
|
icon="x-circle"
|
|
3843
3894
|
class="icon-danger"
|
|
@@ -3845,13 +3896,66 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3845
3896
|
></pds-icon>
|
|
3846
3897
|
</div>
|
|
3847
3898
|
<div>
|
|
3848
|
-
<div class="
|
|
3899
|
+
<div class="callout-title">Error</div>
|
|
3849
3900
|
<p>An error occurred.</p>
|
|
3850
3901
|
</div>
|
|
3851
3902
|
</div>
|
|
3852
3903
|
</div>
|
|
3853
3904
|
</section>
|
|
3854
3905
|
|
|
3906
|
+
<!-- Empty States -->
|
|
3907
|
+
<h2>Empty States</h2>
|
|
3908
|
+
|
|
3909
|
+
<section>
|
|
3910
|
+
<section class="empty-state">
|
|
3911
|
+
<header>
|
|
3912
|
+
<h2>Feature X isn’t set up yet</h2>
|
|
3913
|
+
<small class="text-muted">
|
|
3914
|
+
To use Feature X, connect your data source and choose your
|
|
3915
|
+
defaults.
|
|
3916
|
+
</small>
|
|
3917
|
+
</header>
|
|
3918
|
+
|
|
3919
|
+
<pds-icon icon="magic-wand" size="3xl"></pds-icon>
|
|
3920
|
+
|
|
3921
|
+
<nav>
|
|
3922
|
+
<a class="btn btn-primary" href="/settings/feature-x"
|
|
3923
|
+
>Set up Feature X</a
|
|
3924
|
+
>
|
|
3925
|
+
<a class="btn btn-outline" href="/docs/feature-x">Learn more</a>
|
|
3926
|
+
</nav>
|
|
3927
|
+
</section>
|
|
3928
|
+
</section>
|
|
3929
|
+
|
|
3930
|
+
<h2>Clip Lines</h2>
|
|
3931
|
+
|
|
3932
|
+
<section>
|
|
3933
|
+
<div class="max-w-md" data-clip="2">
|
|
3934
|
+
<p>
|
|
3935
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do
|
|
3936
|
+
eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
|
3937
|
+
</p>
|
|
3938
|
+
<p>
|
|
3939
|
+
Ut enim ad minim veniam, quis nostrud exercitation ullamco
|
|
3940
|
+
laboris nisi ut aliquip ex ea commodo consequat.
|
|
3941
|
+
</p>
|
|
3942
|
+
<p>
|
|
3943
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse
|
|
3944
|
+
cillum dolore eu fugiat nulla pariatur.
|
|
3945
|
+
</p>
|
|
3946
|
+
<p>
|
|
3947
|
+
Excepteur sint occaecat cupidatat non proident, sunt in culpa
|
|
3948
|
+
qui officia deserunt mollit anim id est laborum.
|
|
3949
|
+
</p>
|
|
3950
|
+
<p>
|
|
3951
|
+
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
|
|
3952
|
+
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
|
|
3953
|
+
quae ab illo inventore veritatis et quasi architecto beatae
|
|
3954
|
+
vitae dicta sunt explicabo.
|
|
3955
|
+
</p>
|
|
3956
|
+
</div>
|
|
3957
|
+
</section>
|
|
3958
|
+
|
|
3855
3959
|
<!-- Badges Section -->
|
|
3856
3960
|
|
|
3857
3961
|
<section class="showcase-section alt-bg">
|
|
@@ -3961,11 +4065,11 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
3961
4065
|
|
|
3962
4066
|
<pds-scrollrow>
|
|
3963
4067
|
${new Array(20).fill(0).map((a,i)=>S`<img
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
4068
|
+
loading="lazy"
|
|
4069
|
+
class="scroll-row-image"
|
|
4070
|
+
src="https://picsum.photos/200/200?random=${i+1}"
|
|
4071
|
+
alt="Gallery image ${i+1}"
|
|
4072
|
+
/>`)}
|
|
3969
4073
|
</pds-scrollrow>
|
|
3970
4074
|
|
|
3971
4075
|
<h3>Video Element</h3>
|
|
@@ -4206,21 +4310,21 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
4206
4310
|
<details>
|
|
4207
4311
|
<summary id="q1">How billing works</summary>
|
|
4208
4312
|
<div role="region" aria-labelledby="q1">
|
|
4209
|
-
<p>We charge monthly on the 1st
|
|
4313
|
+
<p>We charge monthly on the 1st�</p>
|
|
4210
4314
|
</div>
|
|
4211
4315
|
</details>
|
|
4212
4316
|
|
|
4213
4317
|
<details>
|
|
4214
4318
|
<summary id="q2">Refund policy</summary>
|
|
4215
4319
|
<div role="region" aria-labelledby="q2">
|
|
4216
|
-
<p>You can request a refund within 14 days
|
|
4320
|
+
<p>You can request a refund within 14 days�</p>
|
|
4217
4321
|
</div>
|
|
4218
4322
|
</details>
|
|
4219
4323
|
|
|
4220
4324
|
<details>
|
|
4221
4325
|
<summary id="q3">Invoices</summary>
|
|
4222
4326
|
<div role="region" aria-labelledby="q3">
|
|
4223
|
-
<p>Download invoices from Settings
|
|
4327
|
+
<p>Download invoices from Settings ? Billing�</p>
|
|
4224
4328
|
</div>
|
|
4225
4329
|
</details>
|
|
4226
4330
|
</section>
|
|
@@ -4677,7 +4781,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
4677
4781
|
<h3>Semantic Surfaces with Auto-Contrast</h3>
|
|
4678
4782
|
<div class="grid grid-cols-3">
|
|
4679
4783
|
<div
|
|
4680
|
-
class="demo-inversion-box
|
|
4784
|
+
class="demo-inversion-box callout callout-success surface-center"
|
|
4681
4785
|
>
|
|
4682
4786
|
<pds-icon icon="check-circle" size="xl"></pds-icon>
|
|
4683
4787
|
<h5 style="margin-top: var(--spacing-2);">Success</h5>
|
|
@@ -4685,14 +4789,16 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
4685
4789
|
</div>
|
|
4686
4790
|
|
|
4687
4791
|
<div
|
|
4688
|
-
class="demo-inversion-box
|
|
4792
|
+
class="demo-inversion-box callout callout-warning surface-center"
|
|
4689
4793
|
>
|
|
4690
4794
|
<pds-icon icon="warning" size="xl"></pds-icon>
|
|
4691
4795
|
<h5 style="margin-top: var(--spacing-2);">Warning</h5>
|
|
4692
4796
|
<p>Perfect contrast maintained</p>
|
|
4693
4797
|
</div>
|
|
4694
4798
|
|
|
4695
|
-
<div
|
|
4799
|
+
<div
|
|
4800
|
+
class="demo-inversion-box callout callout-danger surface-center"
|
|
4801
|
+
>
|
|
4696
4802
|
<pds-icon icon="heart" size="xl"></pds-icon>
|
|
4697
4803
|
<h5 style="margin-top: var(--spacing-2);">Danger</h5>
|
|
4698
4804
|
<p>Automatic adjustment</p>
|
|
@@ -5200,7 +5306,10 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
5200
5306
|
</p>
|
|
5201
5307
|
|
|
5202
5308
|
<div style="margin-top: var(--spacing-6);">
|
|
5203
|
-
<pds-tabstrip
|
|
5309
|
+
<pds-tabstrip
|
|
5310
|
+
@tabchange="${this.handleTabChange}"
|
|
5311
|
+
label="Example Tabs"
|
|
5312
|
+
>
|
|
5204
5313
|
<pds-tabpanel id="overview" label="Overview">
|
|
5205
5314
|
<h3>Overview</h3>
|
|
5206
5315
|
<p>
|
|
@@ -5262,10 +5371,9 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
5262
5371
|
</section>
|
|
5263
5372
|
|
|
5264
5373
|
<h3>Calendar</h3>
|
|
5265
|
-
<section class="card surface"
|
|
5374
|
+
<section class="card surface">
|
|
5266
5375
|
<pds-calendar></pds-calendar>
|
|
5267
5376
|
</section>
|
|
5268
|
-
|
|
5269
5377
|
|
|
5270
5378
|
<!-- Drawer Section -->
|
|
5271
5379
|
<section class="showcase-section">
|
|
@@ -5325,7 +5433,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
5325
5433
|
handling in the design system.
|
|
5326
5434
|
</figcaption>
|
|
5327
5435
|
</figure>
|
|
5328
|
-
`}async showDoc(r){let e=`/${r}`;try{let a=(await(await fetch(e,{cache:"no-store"})).text()).trim(),i;if(a.startsWith("<"))i=`<div class="docs-error">Failed to load README at ${e}. Ensure readme.md exists under public/</div>`;else try{let n=await this.getShowdownConverter();i=n?n.makeHtml(a):`<pre>${this.escapeHTML(a)}</pre>`}catch{i=`<pre>${this.escapeHTML(a)}</pre>`}document.getElementById("global-drawer").show(S`${
|
|
5436
|
+
`}async showDoc(r){let e=`/${r}`;try{let a=(await(await fetch(e,{cache:"no-store"})).text()).trim(),i;if(a.startsWith("<"))i=`<div class="docs-error">Failed to load README at ${e}. Ensure readme.md exists under public/</div>`;else try{let n=await this.getShowdownConverter();i=n?n.makeHtml(a):`<pre>${this.escapeHTML(a)}</pre>`}catch{i=`<pre>${this.escapeHTML(a)}</pre>`}document.getElementById("global-drawer").show(S`${He(i)}`,{header:S`<h3>PDS Documentation</h3>`})}catch(t){console.error("Error fetching README:",t);let o=document.getElementById("global-toaster");await m.toast("Error loading docs. See console.",{type:"error"})}}async handleTabChange(r){await m.toast(`Switched to tab: ${r.detail.newTab}`,{type:"info"})}openDrawer(){document.getElementById("global-drawer").show(S`
|
|
5329
5437
|
<figure class="media-figure">
|
|
5330
5438
|
<img
|
|
5331
5439
|
class="media-image"
|
|
@@ -5340,7 +5448,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
5340
5448
|
`,{header:S`<h3>Example Drawer</h3>`,minHeight:"300px",position:"bottom"})}openDrawerInPos(r){let e=document.getElementById("global-drawer");e&&e.show(this.renderDrawerContent(),{header:S`<h3>
|
|
5341
5449
|
Example Drawer
|
|
5342
5450
|
(${r.charAt(0).toUpperCase()+r.slice(1)})
|
|
5343
|
-
</h3>`,position:r})}previewMesh(r){let e=document.body.style.background;this._originalBodyBg=e,document.body.style.background=`var(--background-mesh-${r})`,document.body.style.backgroundAttachment="fixed";let t=document.querySelector("pds-demo");t&&!this._originalOpacity&&(this._originalOpacity=t.style.opacity,t.style.transition="opacity 200ms ease-out",t.style.opacity="0.1")}clearMeshPreview(){this._originalBodyBg!==void 0&&(this._originalBodyBg?document.body.style.background=this._originalBodyBg:(document.body.style.removeProperty("background"),document.body.style.removeProperty("background-attachment")),this._originalBodyBg=void 0);let r=document.querySelector("pds-demo");r&&this._originalOpacity!==void 0&&(r.style.opacity=this._originalOpacity||"1",this._originalOpacity=void 0,setTimeout(()=>{r.style.opacity!=="0.1"&&(r.style.transition="")},200))}async showSuccessToast(){await m.toast("Your changes have been saved successfully!",{type:"success"})}async showInfoToast(){await m.toast("This is an informational message with helpful context.",{type:"information"})}async showWarningToast(){await m.toast("Warning: This action cannot be undone!",{type:"warning"})}async showErrorToast(){await m.toast("Error: Something went wrong. Please try again.",{type:"error"})}async showLongToast(){await m.toast("This is a longer toast notification message that demonstrates how the duration is automatically calculated based on the message length. The toast will stay visible longer to give you enough time to read the entire message.",{type:"information"})}async showPersistentToast(){await m.toast("This is a persistent toast that won't auto-dismiss. Click the \
|
|
5451
|
+
</h3>`,position:r})}previewMesh(r){let e=document.body.style.background;this._originalBodyBg=e,document.body.style.background=`var(--background-mesh-${r})`,document.body.style.backgroundAttachment="fixed";let t=document.querySelector("pds-demo");t&&!this._originalOpacity&&(this._originalOpacity=t.style.opacity,t.style.transition="opacity 200ms ease-out",t.style.opacity="0.1")}clearMeshPreview(){this._originalBodyBg!==void 0&&(this._originalBodyBg?document.body.style.background=this._originalBodyBg:(document.body.style.removeProperty("background"),document.body.style.removeProperty("background-attachment")),this._originalBodyBg=void 0);let r=document.querySelector("pds-demo");r&&this._originalOpacity!==void 0&&(r.style.opacity=this._originalOpacity||"1",this._originalOpacity=void 0,setTimeout(()=>{r.style.opacity!=="0.1"&&(r.style.transition="")},200))}async showSuccessToast(){await m.toast("Your changes have been saved successfully!",{type:"success"})}async showInfoToast(){await m.toast("This is an informational message with helpful context.",{type:"information"})}async showWarningToast(){await m.toast("Warning: This action cannot be undone!",{type:"warning"})}async showErrorToast(){await m.toast("Error: Something went wrong. Please try again.",{type:"error"})}async showLongToast(){await m.toast("This is a longer toast notification message that demonstrates how the duration is automatically calculated based on the message length. The toast will stay visible longer to give you enough time to read the entire message.",{type:"information"})}async showPersistentToast(){await m.toast("This is a persistent toast that won't auto-dismiss. Click the \uFFFD to close it.",{type:"information",persistent:!0})}triggerTransitionDemo(){let r=this.querySelector("#transition-ball");r&&(r.classList.remove("animated"),r.offsetWidth,r.classList.add("animated"),setTimeout(()=>{r.classList.remove("animated")},1e3))}renderColorCard(r,e){return S`
|
|
5344
5452
|
<div class="color-card">
|
|
5345
5453
|
<div
|
|
5346
5454
|
class="color-card-header"
|
|
@@ -5388,7 +5496,7 @@ export const pdsConfig = ${JSON.stringify(this.config,null,2)};
|
|
|
5388
5496
|
<pds-config-form slot="left" show-inspector show-preset-selector show-theme-selector></pds-config-form>
|
|
5389
5497
|
<pds-demo slot="right"></pds-demo>
|
|
5390
5498
|
</pds-splitpanel>
|
|
5391
|
-
`}});await m.start(
|
|
5499
|
+
`}});await m.start(we);document.body.innerHTML=`
|
|
5392
5500
|
<header>
|
|
5393
5501
|
<pds-toaster id="global-toaster"></pds-toaster>
|
|
5394
5502
|
</header>
|