@pure-ds/core 0.7.2 → 0.7.4

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.
@@ -1,2 +1,2 @@
1
- var me=Object.defineProperty;var he=(e,t)=>{for(var n in t)me(e,n,{get:t[n],enumerable:!0})};var W=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(t={}){this._mode="static",this._staticPaths={...this._staticPaths,...t}}async getStylesheet(t){if(this._mode==="live")return null;try{return(await import(this._staticPaths[t]))[t]}catch(n){console.error(`[PDS Registry] Failed to load static ${t}:`,n),console.error(`[PDS Registry] Looking for: ${this._staticPaths[t]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let r=new CSSStyleSheet;return r.replaceSync("/* Failed to load "+t+" */"),r}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},_=new W;async function X(e,t=[],n=null){try{let r=n?.primitivesStylesheet?n.primitivesStylesheet:await _.getStylesheet("primitives");e.adoptedStyleSheets=[r,...t]}catch(r){let a=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${a}> failed to adopt primitives:`,r),e.adoptedStyleSheets=t}}async function Y(e,t=["primitives"],n=[],r=null){try{let s=(await Promise.all(t.map(async c=>{if(r)switch(c){case"tokens":return r.tokensStylesheet;case"primitives":return r.primitivesStylesheet;case"components":return r.componentsStylesheet;case"utilities":return r.utilitiesStylesheet;default:break}return _.getStylesheet(c)}))).filter(c=>c!==null);e.adoptedStyleSheets=[...s,...n]}catch(a){let s=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${s}> failed to adopt layers:`,a),e.adoptedStyleSheets=n}}function Z(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var ee={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 V={};he(V,{deepMerge:()=>te,fragmentFromTemplateLike:()=>ye,isObject:()=>k,parseHTML:()=>B});function k(e){return e&&typeof e=="object"&&!Array.isArray(e)}function te(e,t){let n={...e};return k(e)&&k(t)&&Object.keys(t).forEach(r=>{k(t[r])?r in e?n[r]=te(e[r],t[r]):Object.assign(n,{[r]:t[r]}):Object.assign(n,{[r]:t[r]})}),n}function ye(e){let t=Array.isArray(e?.strings)?e.strings:[],n=Array.isArray(e?.values)?e.values:[],r=new Set,a=[],s=/(\s)(\.[\w-]+)=\s*$/;for(let i=0;i<t.length;i+=1){let d=t[i]??"",u=d.match(s);if(u&&i<n.length){let p=u[2].slice(1),m=`pds-val-${i}`;d=d.replace(s,`$1data-pds-prop="${p}:${m}"`),r.add(i)}a.push(d),i<n.length&&!r.has(i)&&a.push(`<!--pds-val-${i}-->`)}let c=document.createElement("template");c.innerHTML=a.join("");let f=(i,d)=>{let u=i.parentNode;if(!u)return;if(d==null){u.removeChild(i);return}let w=p=>{if(p!=null){if(p instanceof Node){u.insertBefore(p,i);return}if(Array.isArray(p)){p.forEach(m=>w(m));return}u.insertBefore(document.createTextNode(String(p)),i)}};w(d),u.removeChild(i)},E=document.createTreeWalker(c.content,NodeFilter.SHOW_COMMENT),S=[];for(;E.nextNode();){let i=E.currentNode;i?.nodeValue?.startsWith("pds-val-")&&S.push(i)}return S.forEach(i=>{let d=Number(i.nodeValue.replace("pds-val-",""));f(i,n[d])}),c.content.querySelectorAll("*").forEach(i=>{let d=i.getAttribute("data-pds-prop");if(!d)return;let[u,w]=d.split(":"),p=Number(String(w).replace("pds-val-",""));u&&Number.isInteger(p)&&(i[u]=n[p]),i.removeAttribute("data-pds-prop")}),c.content}function B(e){return new DOMParser().parseFromString(e,"text/html").body.childNodes}var re="pds",ge=/^([a-z][a-z0-9+\-.]*:)?\/\//i,ne=/^[a-z]:/i;function v(e=""){return e.endsWith("/")?e:`${e}/`}function we(e="",t=re){let n=e.replace(/\/+$/,"");return new RegExp(`(?:^|/)${t}$`,"i").test(n)?n:`${n}/${t}`}function Se(e){return e.replace(/^\.\/+/,"")}function be(e){return ne.test(e)?e.replace(ne,"").replace(/^\/+/,""):e}function Ee(e){return e.startsWith("public/")?e.substring(7):e}function M(e,t={}){let n=t.segment||re,r=t.defaultRoot||`/assets/${n}/`,a=e?.public&&e.public?.root||e?.static&&e.static?.root||null;if(!a||typeof a!="string")return v(r);let s=a.trim();return s?(s=s.replace(/\\/g,"/"),s=we(s,n),s=v(s),ge.test(s)?s:(s=Se(s),s=be(s),s.startsWith("/")||(s=Ee(s),s.startsWith("/")||(s=`/${s}`),s=s.replace(/\/+/g,(c,f)=>f===0?c:"/")),v(s))):v(r)}var Le=/^[a-z][a-z0-9+\-.]*:\/\//i,D=(()=>{try{return import.meta.url}catch{return}})(),T=e=>typeof e=="string"&&e.length&&!e.endsWith("/")?`${e}/`:e;function U(e,t={}){if(!e||Le.test(e))return e;let{preferModule:n=!0}=t,r=()=>{if(!D)return null;try{return new URL(e,D).href}catch{return null}},a=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(e,window.location.origin).href}catch{return null}};return(n?r()||a():a()||r())||e}var se=(()=>{if(D)try{let e=new URL(D);if(/\/public\/assets\/js\//.test(e.pathname))return new URL("../pds/",D).href}catch{return}})(),oe=!1;function ie(e){oe||typeof document>"u"||(oe=!0,e.addEventListener("pds:ready",t=>{let n=t.detail?.mode;n&&document.documentElement.classList.add(`pds-${n}`,"pds-ready")}))}function ae({manageTheme:e,themeStorageKey:t,applyResolvedTheme:n,setupSystemListenerIfNeeded:r}){let a="light",s=null;if(e&&typeof window<"u"){try{s=localStorage.getItem(t)||null}catch{s=null}try{n?.(s),r?.(s)}catch{}s?s==="system"?a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a=s:a=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:a,storedTheme:s}}function C(e,{resolvePublicAssetURL:t}){let n=!!(e?.public?.root||e?.static?.root),r=t(e);return!n&&se&&(r=se),T(U(r))}async function ce(e,{baseEnhancers:t=[]}={}){let{autoDefineBaseURL:n="/auto-define/",autoDefinePreload:r=[],autoDefineMapper:a=null,autoDefinerModuleURL:s=null,enhancers:c=[],autoDefineOverrides:f=null,autoDefinePreferModule:E=!0}=e,S=(()=>{let i=new Map;return(t||[]).forEach(d=>i.set(d.selector,d)),(c||[]).forEach(d=>i.set(d.selector,d)),Array.from(i.values())})(),y=null;if(typeof window<"u"&&typeof document<"u"){let i=null;try{if(!s||typeof s!="string")throw new Error("AutoDefiner module URL is not configured");let l=await import(s);i=l?.AutoDefiner||l?.default?.AutoDefiner||l?.default||null}catch(l){console.warn("AutoDefiner not available:",l?.message||l)}let d=l=>{switch(l){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${l}.js`}},{mapper:u,...w}=f&&typeof f=="object"?f:{},m={baseURL:n&&T(U(n,{preferModule:E})),predefine:r,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:S,onError:(l,h)=>{if(typeof l=="string"&&l.startsWith("pds-")){let L=["pds-form","pds-drawer"].includes(l),F=h?.message?.includes("#pds/lit")||h?.message?.includes("Failed to resolve module specifier");L&&F?console.error(`\u274C PDS component <${l}> requires Lit but #pds/lit is not in import map.
2
- See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${l}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${l}>:`,h)},...w,mapper:l=>{if(customElements.get(l))return null;if(typeof a=="function")try{let h=a(l);return h===void 0?d(l):h}catch(h){return console.warn("Custom autoDefine.mapper error; falling back to default:",h?.message||h),d(l)}return d(l)}};i&&(y=new i(m),r.length>0&&typeof i.define=="function"&&await i.define(...r,{baseURL:n,mapper:m.mapper,onError:m.onError}))}return{autoDefiner:y,mergedEnhancers:S}}var H=["light","dark"],q=new Set(H);function _e(e){let n=(Array.isArray(e?.themes)?e.themes.map(r=>String(r).toLowerCase()):H).filter(r=>q.has(r));return n.length?n:H}function K(e,{preferDocument:t=!0}={}){let n=String(e||"").toLowerCase();if(q.has(n))return n;if(t&&typeof document<"u"){let r=document.documentElement?.getAttribute("data-theme");if(q.has(r))return r}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function le(e,t){let n=K(t);return _e(e).includes(n)}var Q=class extends EventTarget{},o=new Q;o.initializing=!1;o.currentPreset=null;o.debug=!1;var j=null,$=null,I=null,O=null;function x(e,t){return t&&typeof t=="string"?t:`${C(o.currentConfig||{},{resolvePublicAssetURL:M})}core/${e}`}async function Ae(){return Array.isArray(o.defaultEnhancers)&&o.defaultEnhancers.length>0?o.defaultEnhancers:(O||(O=import(x("pds-enhancers.js",o.currentConfig?.enhancersURL)).then(t=>{let n=Array.isArray(t?.defaultPDSEnhancers)?t.defaultPDSEnhancers:[];return o.defaultEnhancers=n,n}).catch(t=>{throw O=null,t})),O)}async function ve(){return typeof o.ask=="function"&&o.ask!==ue?o.ask:($||($=import(x("pds-ask.js",o.currentConfig?.askURL)).then(t=>{let n=t?.ask;if(typeof n!="function")throw new Error("Failed to load ask helper");return o.ask=n,n}).catch(t=>{throw $=null,t})),$)}async function P(){return typeof o.toast=="function"&&o.toast!==A?o.toast:(I||(I=import(x("pds-toast.js",o.currentConfig?.toastURL)).then(t=>{let n=t?.toast;if(typeof n!="function")throw new Error("Failed to load toast helper");return o.toast=n,n}).catch(t=>{throw I=null,t})),I)}async function ue(...e){return(await ve())(...e)}async function A(...e){return(await P())(...e)}A.success=async(...e)=>(await P()).success(...e);A.error=async(...e)=>(await P()).error(...e);A.warning=async(...e)=>(await P()).warning(...e);A.info=async(...e)=>(await P()).info(...e);var de=function(e="log",t,...n){let r=!!(o.registry&&!o.registry.isLive),a=(this?.debug||this?.design?.debug||o.debug||!1)===!0;if(r){if(!o.debug)return}else if(!a&&e!=="error"&&e!=="warn")return;let s=console[e]||console.log;n.length>0?s(t,...n):s(t)};function J(e){if(e==null)return e;if(typeof e=="function")return;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>J(n)).filter(n=>n!==void 0);let t={};for(let[n,r]of Object.entries(e)){let a=J(r);a!==void 0&&(t[n]=a)}return t}async function De(e,t={}){if(t?.runtimeConfig===!1||typeof fetch!="function")return null;let n=t?.runtimeConfigURL||`${e}pds-runtime-config.json`;try{let r=await fetch(n,{cache:"no-store"});return r.ok?await r.json():null}catch{return null}}o.registry=_;o.enums=ee;o.adoptLayers=Y;o.adoptPrimitives=X;o.parse=B;o.createStylesheet=Z;o.isLiveMode=()=>_.isLive;o.ask=ue;o.toast=A;o.common=V;o.AutoComplete=null;o.loadAutoComplete=async()=>{if(o.AutoComplete&&typeof o.AutoComplete.connect=="function")return o.AutoComplete;let e=x("pds-autocomplete.js",o.currentConfig?.autoCompleteURL);return j||(j=import(e).then(t=>{let n=t?.AutoComplete||t?.default?.AutoComplete||t?.default||null;if(!n)throw new Error("AutoComplete export not found in module");return o.AutoComplete=n,n}).catch(t=>{throw j=null,t})),j};function pe(e){let t=typeof CustomEvent=="function";try{let n=t?new CustomEvent("pds:ready",{detail:e}):new Event("pds:ready");o.dispatchEvent(n)}catch{}if(typeof document<"u")if(t){let n={detail:e,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",n))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",n))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function fe(e={}){let t=typeof CustomEvent=="function",n={at:Date.now(),...e};try{let r=t?new CustomEvent("pds:config-changed",{detail:n}):new Event("pds:config-changed");o.dispatchEvent(r)}catch{}if(typeof document<"u")if(t){let r={detail:n,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",r))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var G="pure-ds-theme",b=null,R=null;function N(e){try{if(typeof document>"u")return;let t="light";e?e==="system"?t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e:t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",t)}catch{}}function z(e){try{if(b&&R){try{typeof b.removeEventListener=="function"?b.removeEventListener("change",R):typeof b.removeListener=="function"&&b.removeListener(R)}catch{}b=null,R=null}if(e==="system"&&typeof window<"u"&&window.matchMedia){let t=window.matchMedia("(prefers-color-scheme: dark)"),n=r=>{let a=r?.matches===void 0?t.matches:r.matches;try{let s=a?"dark":"light";document.documentElement.setAttribute("data-theme",s),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:s,source:"system"}}))}catch{}};b=t,R=n,typeof t.addEventListener=="function"?t.addEventListener("change",n):typeof t.addListener=="function"&&t.addListener(n)}}catch{}}Object.defineProperty(o,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(G)||null}catch{return null}},set(e){try{if(typeof window>"u")return;let t=o.currentConfig?.design||null,n=K(e);if(t&&!le(t,n)){let r=t?.name||o.currentPreset?.name||o.currentConfig?.preset||"current preset";console.warn(`PDS theme "${n}" not supported by preset "${r}".`),o.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:e,resolvedTheme:n,preset:r}}));return}e==null?localStorage.removeItem(G):localStorage.setItem(G,e),N(e),z(e),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:e,source:"api"}}))}catch{}}});o.defaultEnhancers=[];async function Re(e){let t=e&&e.mode||"live",{mode:n,...r}=e||{};if(t==="static")return xe(r);let a=C(r,{resolvePublicAssetURL:M}),s=r?.managerURL||r?.public?.managerURL||r?.manager?.url||new URL("core/pds-manager.js",a).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:c}=await import(s);return c(o,r,{emitReady:pe,emitConfigChanged:fe,applyResolvedTheme:N,setupSystemListenerIfNeeded:z})}o.start=Re;async function xe(e){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let t=e.applyGlobalStyles??!0,n=e.manageTheme??!0,r=e.themeStorageKey??"pure-ds-theme",a=e.staticPaths??{},s=C(e,{resolvePublicAssetURL:M}),c=e&&e.autoDefine||null,f;c&&c.baseURL?f=T(U(c.baseURL,{preferModule:!1})):f=`${s}components/`;let E=c&&Array.isArray(c.predefine)&&c.predefine||[],S=c&&typeof c.mapper=="function"&&c.mapper||null;try{ie(o);let{resolvedTheme:y}=ae({manageTheme:n,themeStorageKey:r,applyResolvedTheme:N,setupSystemListenerIfNeeded:z}),i=await De(s,e),d=Array.isArray(e?.enhancers)?e.enhancers:e?.enhancers&&typeof e.enhancers=="object"?Object.values(e.enhancers):[],u=i?.config?{...i.config,...e,design:e?.design||i.config.design,preset:e?.preset||i.config.preset}:{...e},w={tokens:`${s}styles/pds-tokens.css.js`,primitives:`${s}styles/pds-primitives.css.js`,components:`${s}styles/pds-components.css.js`,utilities:`${s}styles/pds-utilities.css.js`,styles:`${s}styles/pds-styles.css.js`},p=i?.paths||{};if(a={...w,...p,...a},o.registry.setStaticMode(a),t&&typeof document<"u")try{let g=await o.registry.getStylesheet("styles");if(g){g._pds=!0;let L=(document.adoptedStyleSheets||[]).filter(F=>F._pds!==!0);document.adoptedStyleSheets=[...L,g],fe({mode:"static",source:"static:styles-applied"})}}catch(g){de.call(o,"warn","Failed to apply static styles:",g)}let m=null,l=[];try{let g=await Ae(),L=await ce({autoDefineBaseURL:f,autoDefinePreload:E,autoDefineMapper:S,autoDefinerModuleURL:x("pds-auto-definer.js",c?.moduleURL||o.currentConfig?.autoDefinerURL),enhancers:d,autoDefineOverrides:c||null,autoDefinePreferModule:!(c&&c.baseURL)},{baseEnhancers:g});m=L.autoDefiner,l=L.mergedEnhancers||[]}catch(g){de.call(o,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",g)}let h=J(e);return o.currentConfig=Object.freeze({mode:"static",...structuredClone(h),design:structuredClone(u.design||{}),preset:u.preset,theme:y,enhancers:l}),pe({mode:"static",config:u,theme:y,autoDefiner:m}),{config:u,theme:y,autoDefiner:m}}catch(y){throw o.dispatchEvent(new CustomEvent("pds:error",{detail:{error:y}})),y}}var Be=N,Ve=z;export{o as PDS,Be as applyResolvedTheme,Ve as setupSystemListenerIfNeeded};
1
+ var De=Object.defineProperty;var Pe=(e,t)=>{for(var n in t)De(e,n,{get:t[n],enumerable:!0})};var Z=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(t={}){this._mode="static",this._staticPaths={...this._staticPaths,...t}}async getStylesheet(t){if(this._mode==="live")return null;try{return(await import(this._staticPaths[t]))[t]}catch(n){console.error(`[PDS Registry] Failed to load static ${t}:`,n),console.error(`[PDS Registry] Looking for: ${this._staticPaths[t]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let r=new CSSStyleSheet;return r.replaceSync("/* Failed to load "+t+" */"),r}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},T=new Z;async function de(e,t=[],n=null){try{let r=n?.primitivesStylesheet?n.primitivesStylesheet:await T.getStylesheet("primitives");e.adoptedStyleSheets=[r,...t]}catch(r){let l=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${l}> failed to adopt primitives:`,r),e.adoptedStyleSheets=t}}async function pe(e,t=["primitives"],n=[],r=null){try{let s=(await Promise.all(t.map(async c=>{if(r)switch(c){case"tokens":return r.tokensStylesheet;case"primitives":return r.primitivesStylesheet;case"components":return r.componentsStylesheet;case"utilities":return r.utilitiesStylesheet;default:break}return T.getStylesheet(c)}))).filter(c=>c!==null);e.adoptedStyleSheets=[...s,...n]}catch(l){let s=e.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${s}> failed to adopt layers:`,l),e.adoptedStyleSheets=n}}function fe(e){let t=new CSSStyleSheet;return t.replaceSync(e),t}var me={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 te={};Pe(te,{deepMerge:()=>he,fragmentFromTemplateLike:()=>Me,isObject:()=>I,parseHTML:()=>ee});function I(e){return e&&typeof e=="object"&&!Array.isArray(e)}function he(e,t){let n={...e};return I(e)&&I(t)&&Object.keys(t).forEach(r=>{I(t[r])?r in e?n[r]=he(e[r],t[r]):Object.assign(n,{[r]:t[r]}):Object.assign(n,{[r]:t[r]})}),n}function Me(e){let t=Array.isArray(e?.strings)?e.strings:[],n=Array.isArray(e?.values)?e.values:[],r=new Set,l=[],s=/(\s)(\.[\w-]+)=\s*$/;for(let a=0;a<t.length;a+=1){let w=t[a]??"",f=w.match(s);if(f&&a<n.length){let g=f[2].slice(1),L=`pds-val-${a}`;w=w.replace(s,`$1data-pds-prop="${g}:${L}"`),r.add(a)}l.push(w),a<n.length&&!r.has(a)&&l.push(`<!--pds-val-${a}-->`)}let c=document.createElement("template");c.innerHTML=l.join("");let S=(a,w)=>{let f=a.parentNode;if(!f)return;if(w==null){f.removeChild(a);return}let b=g=>{if(g!=null){if(g instanceof Node){f.insertBefore(g,a);return}if(Array.isArray(g)){g.forEach(L=>b(L));return}f.insertBefore(document.createTextNode(String(g)),a)}};b(w),f.removeChild(a)},_=document.createTreeWalker(c.content,NodeFilter.SHOW_COMMENT),m=[];for(;_.nextNode();){let a=_.currentNode;a?.nodeValue?.startsWith("pds-val-")&&m.push(a)}return m.forEach(a=>{let w=Number(a.nodeValue.replace("pds-val-",""));S(a,n[w])}),c.content.querySelectorAll("*").forEach(a=>{let w=a.getAttribute("data-pds-prop");if(!w)return;let[f,b]=w.split(":"),g=Number(String(b).replace("pds-val-",""));f&&Number.isInteger(g)&&(a[f]=n[g]),a.removeAttribute("data-pds-prop")}),c.content}function ee(e){return new DOMParser().parseFromString(e,"text/html").body.childNodes}var we="pds",Te=/^([a-z][a-z0-9+\-.]*:)?\/\//i,ye=/^[a-z]:/i;function C(e=""){return e.endsWith("/")?e:`${e}/`}function Ue(e="",t=we){let n=e.replace(/\/+$/,"");return new RegExp(`(?:^|/)${t}$`,"i").test(n)?n:`${n}/${t}`}function ke(e){return e.replace(/^\.\/+/,"")}function Ce(e){return ye.test(e)?e.replace(ye,"").replace(/^\/+/,""):e}function je(e){return e.startsWith("public/")?e.substring(7):e}function N(e,t={}){let n=t.segment||we,r=t.defaultRoot||`/assets/${n}/`,l=e?.public&&e.public?.root||e?.static&&e.static?.root||null;if(!l||typeof l!="string")return C(r);let s=l.trim();return s?(s=s.replace(/\\/g,"/"),s=Ue(s,n),s=C(s),Te.test(s)?s:(s=ke(s),s=Ce(s),s.startsWith("/")||(s=je(s),s.startsWith("/")||(s=`/${s}`),s=s.replace(/\/+/g,(c,S)=>S===0?c:"/")),C(s))):C(r)}async function $e(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let n=e,{baseURL:r,mapper:l=m=>`${m}.js`,onError:s=(m,i)=>console.error(`[defineWebComponents] ${m}:`,i)}=t,c=r?new URL(r,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),S=m=>m.toLowerCase().replace(/(^|-)([a-z])/g,(i,a,w)=>w.toUpperCase()),_=async m=>{try{if(customElements.get(m))return{tag:m,status:"already-defined"};let i=l(m),w=await import(i instanceof URL?i.href:new URL(i,c).href),f=w?.default??w?.[S(m)];if(!f){if(customElements.get(m))return{tag:m,status:"self-defined"};throw new Error(`No export found for ${m}. Expected default export or named export "${S(m)}".`)}return customElements.get(m)?{tag:m,status:"race-already-defined"}:(customElements.define(m,f),{tag:m,status:"defined"})}catch(i){throw s(m,i),i}};return Promise.all(n.map(_))}var z=class{constructor(t={}){let{baseURL:n,mapper:r,onError:l,predicate:s=()=>!0,attributeModule:c="data-module",root:S=document,scanExisting:_=!0,debounceMs:m=16,observeShadows:i=!0,enhancers:a=[],patchAttachShadow:w=!0}=t,f=new Set,b=new Set,g=new Set,L=new Map,R=new WeakMap,A=new WeakMap,E=0,h=!1,y=null,D=u=>{if(!u||!a.length)return;let p=A.get(u);p||(p=new Set,A.set(u,p));for(let d of a)if(!(!d.selector||!d.run)&&!p.has(d.selector))try{u.matches&&u.matches(d.selector)&&(d.run(u),p.add(d.selector))}catch(v){console.warn(`[AutoDefiner] Error applying enhancer for selector "${d.selector}":`,v)}},k=(u,p)=>{if(!h&&!(!u||!u.includes("-"))&&!customElements.get(u)&&!b.has(u)&&!g.has(u)){if(p&&p.getAttribute){let d=p.getAttribute(c);d&&!L.has(u)&&L.set(u,d)}f.add(u),X()}},X=()=>{E||(E=setTimeout(ce,m))},P=u=>{if(u){if(u.nodeType===1){let p=u,d=p.tagName?.toLowerCase();d&&d.includes("-")&&!customElements.get(d)&&s(d,p)&&k(d,p),D(p),i&&p.shadowRoot&&Y(p.shadowRoot)}u.querySelectorAll&&u.querySelectorAll("*").forEach(p=>{let d=p.tagName?.toLowerCase();d&&d.includes("-")&&!customElements.get(d)&&s(d,p)&&k(d,p),D(p),i&&p.shadowRoot&&Y(p.shadowRoot)})}},Y=u=>{if(!u||R.has(u))return;P(u);let p=new MutationObserver(d=>{for(let v of d)v.addedNodes?.forEach(M=>{P(M)}),v.type==="attributes"&&v.target&&P(v.target)});p.observe(u,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[c,...a.map(d=>d.selector).filter(d=>d.startsWith("data-"))]}),R.set(u,p)};async function ce(){if(clearTimeout(E),E=0,!f.size)return;let u=Array.from(f);f.clear(),u.forEach(p=>b.add(p));try{let p=d=>L.get(d)??(r?r(d):`${d}.js`);await $e(...u,{baseURL:n,mapper:p,onError:(d,v)=>{g.add(d),l?.(d,v)}})}catch{}finally{u.forEach(p=>b.delete(p))}}let le=S===document?document.documentElement:S,ue=new MutationObserver(u=>{for(let p of u)p.addedNodes?.forEach(d=>{P(d)}),p.type==="attributes"&&p.target&&P(p.target)});if(ue.observe(le,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[c,...a.map(u=>u.selector).filter(u=>u.startsWith("data-"))]}),i&&w&&Element.prototype.attachShadow){let u=Element.prototype.attachShadow;Element.prototype.attachShadow=function(d){let v=u.call(this,d);if(d&&d.mode==="open"){Y(v);let M=this.tagName?.toLowerCase();M&&M.includes("-")&&!customElements.get(M)&&k(M,this)}return v},y=()=>Element.prototype.attachShadow=u}return _&&P(le),{stop(){h=!0,ue.disconnect(),y&&y(),E&&(clearTimeout(E),E=0),R.forEach(u=>u.disconnect())},flush:ce}}static async define(...t){let n={};t.length&&typeof t[t.length-1]=="object"&&(n=t.pop()||{});let r=t,{baseURL:l,mapper:s=i=>`${i}.js`,onError:c=(i,a)=>console.error(`[defineWebComponents] ${i}:`,a)}=n,S=l?new URL(l,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),_=i=>i.toLowerCase().replace(/(^|-)([a-z])/g,(a,w,f)=>f.toUpperCase()),m=async i=>{try{if(customElements.get(i))return{tag:i,status:"already-defined"};let a=s(i),f=await import(a instanceof URL?a.href:new URL(a,S).href),b=f?.default??f?.[_(i)];if(!b){if(customElements.get(i))return{tag:i,status:"self-defined"};throw new Error(`No export found for ${i}. Expected default export or named export "${_(i)}".`)}return customElements.get(i)?{tag:i,status:"race-already-defined"}:(customElements.define(i,b),{tag:i,status:"defined"})}catch(a){throw c(i,a),a}};return Promise.all(r.map(m))}};var Oe=/^[a-z][a-z0-9+\-.]*:\/\//i,j=(()=>{try{return import.meta.url}catch{return}})(),F=e=>typeof e=="string"&&e.length&&!e.endsWith("/")?`${e}/`:e;function W(e,t={}){if(!e||Oe.test(e))return e;let{preferModule:n=!0}=t,r=()=>{if(!j)return null;try{return new URL(e,j).href}catch{return null}},l=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(e,window.location.origin).href}catch{return null}};return(n?r()||l():l()||r())||e}var ge=(()=>{if(j)try{let e=new URL(j);if(/\/public\/assets\/js\//.test(e.pathname))return new URL("../pds/",j).href}catch{return}})(),Ee=!1;function Se(e){Ee||typeof document>"u"||(Ee=!0,e.addEventListener("pds:ready",t=>{let n=t.detail?.mode;n&&document.documentElement.classList.add(`pds-${n}`,"pds-ready")}))}function be({manageTheme:e,themeStorageKey:t,applyResolvedTheme:n,setupSystemListenerIfNeeded:r}){let l="light",s=null;if(e&&typeof window<"u"){try{s=localStorage.getItem(t)||null}catch{s=null}try{n?.(s),r?.(s)}catch{}s?s==="system"?l=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l=s:l=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:l,storedTheme:s}}function B(e,{resolvePublicAssetURL:t}){let n=!!(e?.public?.root||e?.static?.root),r=t(e);return!n&&ge&&(r=ge),F(W(r))}async function Le(e,{baseEnhancers:t=[]}={}){let{autoDefineBaseURL:n="/auto-define/",autoDefinePreload:r=[],autoDefineMapper:l=null,enhancers:s=[],autoDefineOverrides:c=null,autoDefinePreferModule:S=!0}=e,_=(()=>{let i=new Map;return(t||[]).forEach(a=>i.set(a.selector,a)),(s||[]).forEach(a=>i.set(a.selector,a)),Array.from(i.values())})(),m=null;if(typeof window<"u"&&typeof document<"u"){let i=z,a=h=>{switch(h){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${h}.js`}},{mapper:w,enhancers:f,...b}=c&&typeof c=="object"?c:{},g=f?Array.isArray(f)?f:typeof f=="object"?Object.values(f):[]:[],L=(()=>{let h=new Map;return(_||[]).forEach(y=>{y?.selector&&h.set(y.selector,y)}),(g||[]).forEach(y=>{if(!y?.selector)return;let D=h.get(y.selector)||null;h.set(y.selector,{...D||{},...y,run:typeof y?.run=="function"?y.run:D?.run})}),Array.from(h.values())})(),A={baseURL:n&&F(W(n,{preferModule:S})),predefine:r,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:L,onError:(h,y)=>{if(typeof h=="string"&&h.startsWith("pds-")){let k=["pds-form","pds-drawer"].includes(h),X=y?.message?.includes("#pds/lit")||y?.message?.includes("Failed to resolve module specifier");k&&X?console.error(`\u274C PDS component <${h}> requires Lit but #pds/lit is not in import map.
2
+ See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${h}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${h}>:`,y)},...b,mapper:h=>{if(customElements.get(h))return null;if(typeof l=="function")try{let y=l(h);return y===void 0?a(h):y}catch(y){return console.warn("Custom autoDefine.mapper error; falling back to default:",y?.message||y),a(h)}return a(h)}};if(!!(typeof window<"u"&&window.__PDS_DEBUG_AUTODEFINE__||c?.debugAutoDefine)){let h=L.filter(y=>typeof y?.run!="function").map(y=>y?.selector).filter(Boolean);console.info("[PDS][AutoDefiner] enhancer summary",{baseEnhancers:(t||[]).length,userEnhancers:(s||[]).length,overrideEnhancers:g.length,resolvedEnhancers:L.length,missingRun:h})}m=new i(A),r.length>0&&typeof i.define=="function"&&await i.define(...r,{baseURL:n,mapper:A.mapper,onError:A.onError})}return{autoDefiner:m,mergedEnhancers:_}}var ne=["light","dark"],re=new Set(ne);function Ie(e){let n=(Array.isArray(e?.themes)?e.themes.map(r=>String(r).toLowerCase()):ne).filter(r=>re.has(r));return n.length?n:ne}function se(e,{preferDocument:t=!0}={}){let n=String(e||"").toLowerCase();if(re.has(n))return n;if(t&&typeof document<"u"){let r=document.documentElement?.getAttribute("data-theme");if(re.has(r))return r}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function _e(e,t){let n=se(t);return Ie(e).includes(n)}var ae=class extends EventTarget{},o=new ae;o.initializing=!1;o.currentPreset=null;o.debug=!1;var q=null,V=null,H=null,G=null;function K(e,t){return t&&typeof t=="string"?t:`${B(o.currentConfig||{},{resolvePublicAssetURL:N})}core/${e}`}async function Ne(){return Array.isArray(o.defaultEnhancers)&&o.defaultEnhancers.length>0?o.defaultEnhancers:(G||(G=import(K("pds-enhancers.js",o.currentConfig?.enhancersURL)).then(t=>{let n=Array.isArray(t?.defaultPDSEnhancers)?t.defaultPDSEnhancers:[];return o.defaultEnhancers=n,n}).catch(t=>{throw G=null,t})),G)}async function ze(){return typeof o.ask=="function"&&o.ask!==Ae?o.ask:(V||(V=import(K("pds-ask.js",o.currentConfig?.askURL)).then(t=>{let n=t?.ask;if(typeof n!="function")throw new Error("Failed to load ask helper");return o.ask=n,n}).catch(t=>{throw V=null,t})),V)}async function O(){return typeof o.toast=="function"&&o.toast!==U?o.toast:(H||(H=import(K("pds-toast.js",o.currentConfig?.toastURL)).then(t=>{let n=t?.toast;if(typeof n!="function")throw new Error("Failed to load toast helper");return o.toast=n,n}).catch(t=>{throw H=null,t})),H)}async function Ae(...e){return(await ze())(...e)}async function U(...e){return(await O())(...e)}U.success=async(...e)=>(await O()).success(...e);U.error=async(...e)=>(await O()).error(...e);U.warning=async(...e)=>(await O()).warning(...e);U.info=async(...e)=>(await O()).info(...e);var ve=function(e="log",t,...n){let r=!!(o.registry&&!o.registry.isLive),l=(this?.debug||this?.design?.debug||o.debug||!1)===!0;if(r){if(!o.debug)return}else if(!l&&e!=="error"&&e!=="warn")return;let s=console[e]||console.log;n.length>0?s(t,...n):s(t)};function ie(e){if(e==null)return e;if(typeof e=="function")return;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(n=>ie(n)).filter(n=>n!==void 0);let t={};for(let[n,r]of Object.entries(e)){let l=ie(r);l!==void 0&&(t[n]=l)}return t}async function Fe(e,t={}){if(t?.runtimeConfig===!1||typeof fetch!="function")return null;let n=t?.runtimeConfigURL||`${e}pds-runtime-config.json`;try{let r=await fetch(n,{cache:"no-store"});return r.ok?await r.json():null}catch{return null}}o.registry=T;o.enums=me;o.adoptLayers=pe;o.adoptPrimitives=de;o.parse=ee;o.createStylesheet=fe;o.isLiveMode=()=>T.isLive;o.ask=Ae;o.toast=U;o.common=te;o.AutoComplete=null;o.loadAutoComplete=async()=>{if(o.AutoComplete&&typeof o.AutoComplete.connect=="function")return o.AutoComplete;let e=K("pds-autocomplete.js",o.currentConfig?.autoCompleteURL);return q||(q=import(e).then(t=>{let n=t?.AutoComplete||t?.default?.AutoComplete||t?.default||null;if(!n)throw new Error("AutoComplete export not found in module");return o.AutoComplete=n,n}).catch(t=>{throw q=null,t})),q};function Re(e){let t=typeof CustomEvent=="function";try{let n=t?new CustomEvent("pds:ready",{detail:e}):new Event("pds:ready");o.dispatchEvent(n)}catch{}if(typeof document<"u")if(t){let n={detail:e,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",n))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",n))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function xe(e={}){let t=typeof CustomEvent=="function",n={at:Date.now(),...e};try{let r=t?new CustomEvent("pds:config-changed",{detail:n}):new Event("pds:config-changed");o.dispatchEvent(r)}catch{}if(typeof document<"u")if(t){let r={detail:n,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",r))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var oe="pure-ds-theme",x=null,$=null;function Q(e){try{if(typeof document>"u")return;let t="light";e?e==="system"?t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t=e:t=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",t)}catch{}}function J(e){try{if(x&&$){try{typeof x.removeEventListener=="function"?x.removeEventListener("change",$):typeof x.removeListener=="function"&&x.removeListener($)}catch{}x=null,$=null}if(e==="system"&&typeof window<"u"&&window.matchMedia){let t=window.matchMedia("(prefers-color-scheme: dark)"),n=r=>{let l=r?.matches===void 0?t.matches:r.matches;try{let s=l?"dark":"light";document.documentElement.setAttribute("data-theme",s),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:s,source:"system"}}))}catch{}};x=t,$=n,typeof t.addEventListener=="function"?t.addEventListener("change",n):typeof t.addListener=="function"&&t.addListener(n)}}catch{}}Object.defineProperty(o,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(oe)||null}catch{return null}},set(e){try{if(typeof window>"u")return;let t=o.currentConfig?.design||null,n=se(e);if(t&&!_e(t,n)){let r=t?.name||o.currentPreset?.name||o.currentConfig?.preset||"current preset";console.warn(`PDS theme "${n}" not supported by preset "${r}".`),o.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:e,resolvedTheme:n,preset:r}}));return}e==null?localStorage.removeItem(oe):localStorage.setItem(oe,e),Q(e),J(e),o.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:e,source:"api"}}))}catch{}}});o.defaultEnhancers=[];async function We(e){let t=e&&e.mode||"live",{mode:n,...r}=e||{};if(t==="static")return Be(r);let l=B(r,{resolvePublicAssetURL:N}),s=r?.managerURL||r?.public?.managerURL||r?.manager?.url||new URL("core/pds-manager.js",l).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:c}=await import(s);return c(o,r,{emitReady:Re,emitConfigChanged:xe,applyResolvedTheme:Q,setupSystemListenerIfNeeded:J})}o.start=We;async function Be(e){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let t=e.applyGlobalStyles??!0,n=e.manageTheme??!0,r=e.themeStorageKey??"pure-ds-theme",l=e.staticPaths??{},s=B(e,{resolvePublicAssetURL:N}),c=e&&e.autoDefine||null,S;c&&c.baseURL?S=F(W(c.baseURL,{preferModule:!1})):S=`${s}components/`;let _=c&&Array.isArray(c.predefine)&&c.predefine||[],m=c&&typeof c.mapper=="function"&&c.mapper||null;try{Se(o);let{resolvedTheme:i}=be({manageTheme:n,themeStorageKey:r,applyResolvedTheme:Q,setupSystemListenerIfNeeded:J}),a=await Fe(s,e),w=Array.isArray(e?.enhancers)?e.enhancers:e?.enhancers&&typeof e.enhancers=="object"?Object.values(e.enhancers):[],f=a?.config?{...a.config,...e,design:e?.design||a.config.design,preset:e?.preset||a.config.preset}:{...e},b={tokens:`${s}styles/pds-tokens.css.js`,primitives:`${s}styles/pds-primitives.css.js`,components:`${s}styles/pds-components.css.js`,utilities:`${s}styles/pds-utilities.css.js`,styles:`${s}styles/pds-styles.css.js`},g=a?.paths||{};if(l={...b,...g,...l},o.registry.setStaticMode(l),t&&typeof document<"u")try{let E=await o.registry.getStylesheet("styles");if(E){E._pds=!0;let h=(document.adoptedStyleSheets||[]).filter(y=>y._pds!==!0);document.adoptedStyleSheets=[...h,E],xe({mode:"static",source:"static:styles-applied"})}}catch(E){ve.call(o,"warn","Failed to apply static styles:",E)}let L=null,R=[];try{let E=await Ne(),h=await Le({autoDefineBaseURL:S,autoDefinePreload:_,autoDefineMapper:m,enhancers:w,autoDefineOverrides:c||null,autoDefinePreferModule:!(c&&c.baseURL)},{baseEnhancers:E});L=h.autoDefiner,R=h.mergedEnhancers||[]}catch(E){ve.call(o,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",E)}let A=ie(e);return o.currentConfig=Object.freeze({mode:"static",...structuredClone(A),design:structuredClone(f.design||{}),preset:f.preset,theme:i,enhancers:R}),Re({mode:"static",config:f,theme:i,autoDefiner:L}),{config:f,theme:i,autoDefiner:L}}catch(i){throw o.dispatchEvent(new CustomEvent("pds:error",{detail:{error:i}})),i}}var at=Q,it=J;export{o as PDS,at as applyResolvedTheme,it as setupSystemListenerIfNeeded};
package/readme.md CHANGED
@@ -1272,6 +1272,8 @@ await PDS.start({
1272
1272
  patchAttachShadow?: boolean,
1273
1273
  debounceMs?: number
1274
1274
  },
1275
+ // Note: autoDefine.moduleURL is no longer supported.
1276
+ // AutoDefiner ships as part of the core runtime bundle.
1275
1277
 
1276
1278
  // Progressive enhancements
1277
1279
  enhancers?: Array<{
@@ -1089,9 +1089,6 @@ export async function startLive(PDS, config, { emitReady, emitConfigChanged, app
1089
1089
  autoDefineMapper:
1090
1090
  (cfgAuto && typeof cfgAuto.mapper === "function" && cfgAuto.mapper) ||
1091
1091
  null,
1092
- autoDefinerModuleURL:
1093
- (cfgAuto && cfgAuto.moduleURL) ||
1094
- `${assetRootURL}core/pds-auto-definer.js`,
1095
1092
  enhancers: userEnhancers,
1096
1093
  autoDefineOverrides: cfgAuto || null,
1097
1094
  autoDefinePreferModule: !(cfgAuto && cfgAuto.baseURL),
@@ -3,6 +3,8 @@
3
3
  * Kept separate to avoid pulling live-only logic into the base runtime bundle.
4
4
  */
5
5
 
6
+ import { AutoDefiner as CoreAutoDefiner } from "pure-web/auto-definer";
7
+
6
8
  const __ABSOLUTE_URL_PATTERN__ = /^[a-z][a-z0-9+\-.]*:\/\//i;
7
9
  const __MODULE_URL__ = (() => {
8
10
  try {
@@ -332,7 +334,6 @@ export async function setupAutoDefinerAndEnhancers(options, { baseEnhancers = []
332
334
  autoDefineBaseURL = "/auto-define/",
333
335
  autoDefinePreload = [],
334
336
  autoDefineMapper = null,
335
- autoDefinerModuleURL = null,
336
337
  enhancers = [],
337
338
  autoDefineOverrides = null,
338
339
  autoDefinePreferModule = true,
@@ -349,18 +350,7 @@ export async function setupAutoDefinerAndEnhancers(options, { baseEnhancers = []
349
350
  // Setup AutoDefiner in browser context (it already observes shadow DOMs)
350
351
  let autoDefiner = null;
351
352
  if (typeof window !== "undefined" && typeof document !== "undefined") {
352
- // Dynamically import AutoDefiner to avoid Node/CJS interop at build time
353
- let AutoDefinerCtor = null;
354
- try {
355
- if (!autoDefinerModuleURL || typeof autoDefinerModuleURL !== "string") {
356
- throw new Error("AutoDefiner module URL is not configured");
357
- }
358
- const mod = await import(autoDefinerModuleURL);
359
- AutoDefinerCtor =
360
- mod?.AutoDefiner || mod?.default?.AutoDefiner || mod?.default || null;
361
- } catch (e) {
362
- console.warn("AutoDefiner not available:", e?.message || e);
363
- }
353
+ const AutoDefinerCtor = CoreAutoDefiner;
364
354
 
365
355
  const defaultMapper = (tag) => {
366
356
  switch (tag) {
@@ -372,11 +362,49 @@ export async function setupAutoDefinerAndEnhancers(options, { baseEnhancers = []
372
362
  };
373
363
 
374
364
  // Respect user overrides but never allow them to overwrite our mapper wrapper.
375
- const { mapper: _overrideMapperIgnored, ...restAutoDefineOverrides } =
365
+ // Also merge `autoDefine.enhancers` safely instead of allowing it to clobber
366
+ // default enhancers (this previously caused silent loss of required/dropdown behavior).
367
+ const {
368
+ mapper: _overrideMapperIgnored,
369
+ enhancers: overrideEnhancers,
370
+ ...restAutoDefineOverrides
371
+ } =
376
372
  autoDefineOverrides && typeof autoDefineOverrides === "object"
377
373
  ? autoDefineOverrides
378
374
  : {};
379
375
 
376
+ const normalizedOverrideEnhancers = (() => {
377
+ if (!overrideEnhancers) return [];
378
+ if (Array.isArray(overrideEnhancers)) return overrideEnhancers;
379
+ if (typeof overrideEnhancers === "object") {
380
+ return Object.values(overrideEnhancers);
381
+ }
382
+ return [];
383
+ })();
384
+
385
+ const resolvedEnhancers = (() => {
386
+ const map = new Map();
387
+ (mergedEnhancers || []).forEach((enhancer) => {
388
+ if (!enhancer?.selector) return;
389
+ map.set(enhancer.selector, enhancer);
390
+ });
391
+
392
+ (normalizedOverrideEnhancers || []).forEach((enhancer) => {
393
+ if (!enhancer?.selector) return;
394
+ const existing = map.get(enhancer.selector) || null;
395
+ map.set(enhancer.selector, {
396
+ ...(existing || {}),
397
+ ...enhancer,
398
+ run:
399
+ typeof enhancer?.run === "function"
400
+ ? enhancer.run
401
+ : existing?.run,
402
+ });
403
+ });
404
+
405
+ return Array.from(map.values());
406
+ })();
407
+
380
408
  const normalizedBaseURL = autoDefineBaseURL
381
409
  ? ensureTrailingSlash(
382
410
  ensureAbsoluteAssetURL(autoDefineBaseURL, {
@@ -392,7 +420,7 @@ export async function setupAutoDefinerAndEnhancers(options, { baseEnhancers = []
392
420
  observeShadows: true,
393
421
  patchAttachShadow: true,
394
422
  debounceMs: 16,
395
- enhancers: mergedEnhancers,
423
+ enhancers: resolvedEnhancers,
396
424
  onError: (tag, err) => {
397
425
  if (typeof tag === "string" && tag.startsWith("pds-")) {
398
426
  const litDependentComponents = ["pds-form", "pds-drawer"];
@@ -442,18 +470,36 @@ export async function setupAutoDefinerAndEnhancers(options, { baseEnhancers = []
442
470
  },
443
471
  };
444
472
 
445
- if (AutoDefinerCtor) {
446
- autoDefiner = new AutoDefinerCtor(autoDefineConfig);
447
- if (
448
- autoDefinePreload.length > 0 &&
449
- typeof AutoDefinerCtor.define === "function"
450
- ) {
451
- await AutoDefinerCtor.define(...autoDefinePreload, {
452
- baseURL: autoDefineBaseURL,
453
- mapper: autoDefineConfig.mapper,
454
- onError: autoDefineConfig.onError,
455
- });
456
- }
473
+ const debugEnhancers =
474
+ Boolean(
475
+ (typeof window !== "undefined" && window.__PDS_DEBUG_AUTODEFINE__) ||
476
+ autoDefineOverrides?.debugAutoDefine
477
+ );
478
+
479
+ if (debugEnhancers) {
480
+ const missingRun = resolvedEnhancers
481
+ .filter((enhancer) => typeof enhancer?.run !== "function")
482
+ .map((enhancer) => enhancer?.selector)
483
+ .filter(Boolean);
484
+ console.info("[PDS][AutoDefiner] enhancer summary", {
485
+ baseEnhancers: (baseEnhancers || []).length,
486
+ userEnhancers: (enhancers || []).length,
487
+ overrideEnhancers: normalizedOverrideEnhancers.length,
488
+ resolvedEnhancers: resolvedEnhancers.length,
489
+ missingRun,
490
+ });
491
+ }
492
+
493
+ autoDefiner = new AutoDefinerCtor(autoDefineConfig);
494
+ if (
495
+ autoDefinePreload.length > 0 &&
496
+ typeof AutoDefinerCtor.define === "function"
497
+ ) {
498
+ await AutoDefinerCtor.define(...autoDefinePreload, {
499
+ baseURL: autoDefineBaseURL,
500
+ mapper: autoDefineConfig.mapper,
501
+ onError: autoDefineConfig.onError,
502
+ });
457
503
  }
458
504
  }
459
505
 
package/src/js/pds.d.ts CHANGED
@@ -300,6 +300,7 @@ export class PDS extends EventTarget {
300
300
  preset?: string;
301
301
  design?: any;
302
302
  autoDefine?: {
303
+ /** AutoDefiner is bundled with PDS core; external moduleURL overrides are not supported. */
303
304
  baseURL?: string;
304
305
  predefine?: string[];
305
306
  mapper?: (tag: string) => string | undefined | null | false;
package/src/js/pds.js CHANGED
@@ -680,10 +680,6 @@ async function staticInit(config) {
680
680
  autoDefineBaseURL,
681
681
  autoDefinePreload,
682
682
  autoDefineMapper,
683
- autoDefinerModuleURL: __resolveExternalRuntimeModuleURL(
684
- "pds-auto-definer.js",
685
- cfgAuto?.moduleURL || PDS.currentConfig?.autoDefinerURL
686
- ),
687
683
  enhancers: userEnhancers,
688
684
  autoDefineOverrides: cfgAuto || null,
689
685
  autoDefinePreferModule: !(cfgAuto && cfgAuto.baseURL),
@@ -1 +0,0 @@
1
- async function P(...h){let i={};h.length&&typeof h[h.length-1]=="object"&&(i=h.pop()||{});let m=h,{baseURL:f,mapper:w=n=>`${n}.js`,onError:E=(n,r)=>console.error(`[defineWebComponents] ${n}:`,r)}=i,d=f?new URL(f,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),l=n=>n.toLowerCase().replace(/(^|-)([a-z])/g,(r,s,u)=>u.toUpperCase()),b=async n=>{try{if(customElements.get(n))return{tag:n,status:"already-defined"};let r=w(n),u=await import(r instanceof URL?r.href:new URL(r,d).href),c=u?.default??u?.[l(n)];if(!c){if(customElements.get(n))return{tag:n,status:"self-defined"};throw new Error(`No export found for ${n}. Expected default export or named export "${l(n)}".`)}return customElements.get(n)?{tag:n,status:"race-already-defined"}:(customElements.define(n,c),{tag:n,status:"defined"})}catch(r){throw E(n,r),r}};return Promise.all(m.map(b))}var M=class{constructor(i={}){let{baseURL:m,mapper:f,onError:w,predicate:E=()=>!0,attributeModule:d="data-module",root:l=document,scanExisting:b=!0,debounceMs:n=16,observeShadows:r=!0,enhancers:s=[],patchAttachShadow:u=!0}=i,c=new Set,y=new Set,$=new Set,S=new Map,U=new WeakMap,v=new WeakMap,p=0,T=!1,x=null,W=e=>{if(!e||!s.length)return;let o=v.get(e);o||(o=new Set,v.set(e,o));for(let t of s)if(!(!t.selector||!t.run)&&!o.has(t.selector))try{e.matches&&e.matches(t.selector)&&(t.run(e),o.add(t.selector))}catch(a){console.warn(`[AutoDefiner] Error applying enhancer for selector "${t.selector}":`,a)}},A=(e,o)=>{if(!T&&!(!e||!e.includes("-"))&&!customElements.get(e)&&!y.has(e)&&!$.has(e)){if(o&&o.getAttribute){let t=o.getAttribute(d);t&&!S.has(e)&&S.set(e,t)}c.add(e),O()}},O=()=>{p||(p=setTimeout(N,n))},L=e=>{if(e){if(e.nodeType===1){let o=e,t=o.tagName?.toLowerCase();t&&t.includes("-")&&!customElements.get(t)&&E(t,o)&&A(t,o),W(o),r&&o.shadowRoot&&C(o.shadowRoot)}e.querySelectorAll&&e.querySelectorAll("*").forEach(o=>{let t=o.tagName?.toLowerCase();t&&t.includes("-")&&!customElements.get(t)&&E(t,o)&&A(t,o),W(o),r&&o.shadowRoot&&C(o.shadowRoot)})}},C=e=>{if(!e||U.has(e))return;L(e);let o=new MutationObserver(t=>{for(let a of t)a.addedNodes?.forEach(R=>{L(R)}),a.type==="attributes"&&a.target&&L(a.target)});o.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[d,...s.map(t=>t.selector).filter(t=>t.startsWith("data-"))]}),U.set(e,o)};async function N(){if(clearTimeout(p),p=0,!c.size)return;let e=Array.from(c);c.clear(),e.forEach(o=>y.add(o));try{let o=t=>S.get(t)??(f?f(t):`${t}.js`);await P(...e,{baseURL:m,mapper:o,onError:(t,a)=>{$.add(t),w?.(t,a)}})}catch{}finally{e.forEach(o=>y.delete(o))}}let _=l===document?document.documentElement:l,j=new MutationObserver(e=>{for(let o of e)o.addedNodes?.forEach(t=>{L(t)}),o.type==="attributes"&&o.target&&L(o.target)});if(j.observe(_,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[d,...s.map(e=>e.selector).filter(e=>e.startsWith("data-"))]}),r&&u&&Element.prototype.attachShadow){let e=Element.prototype.attachShadow;Element.prototype.attachShadow=function(t){let a=e.call(this,t);if(t&&t.mode==="open"){C(a);let R=this.tagName?.toLowerCase();R&&R.includes("-")&&!customElements.get(R)&&A(R,this)}return a},x=()=>Element.prototype.attachShadow=e}return b&&L(_),{stop(){T=!0,j.disconnect(),x&&x(),p&&(clearTimeout(p),p=0),U.forEach(e=>e.disconnect())},flush:N}}static async define(...i){let m={};i.length&&typeof i[i.length-1]=="object"&&(m=i.pop()||{});let f=i,{baseURL:w,mapper:E=r=>`${r}.js`,onError:d=(r,s)=>console.error(`[defineWebComponents] ${r}:`,s)}=m,l=w?new URL(w,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),b=r=>r.toLowerCase().replace(/(^|-)([a-z])/g,(s,u,c)=>c.toUpperCase()),n=async r=>{try{if(customElements.get(r))return{tag:r,status:"already-defined"};let s=E(r),c=await import(s instanceof URL?s.href:new URL(s,l).href),y=c?.default??c?.[b(r)];if(!y){if(customElements.get(r))return{tag:r,status:"self-defined"};throw new Error(`No export found for ${r}. Expected default export or named export "${b(r)}".`)}return customElements.get(r)?{tag:r,status:"race-already-defined"}:(customElements.define(r,y),{tag:r,status:"defined"})}catch(s){throw d(r,s),s}};return Promise.all(f.map(n))}};export{M as AutoDefiner};