@pure-ds/core 0.7.59 → 0.7.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/pds.d.ts +10 -0
- package/dist/types/public/assets/pds/components/pds-render.d.ts +21 -0
- package/dist/types/public/assets/pds/components/pds-render.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-generator.d.ts.map +1 -1
- package/dist/types/src/js/pds.d.ts +1 -1
- package/dist/types/src/js/pds.d.ts.map +1 -1
- package/package.json +1 -1
- package/packages/pds-cli/bin/pds-setup-mcp.js +27 -115
- package/packages/pds-cli/bin/postinstall.mjs +16 -0
- package/packages/pds-cli/lib/pds-mcp-core.js +150 -3
- package/packages/pds-cli/lib/setup-mcp-config.js +72 -0
- package/public/assets/js/app.js +1 -1
- package/public/assets/js/pds-enhancers.js +1 -1
- package/public/assets/js/pds-manager.js +89 -54
- package/public/assets/pds/components/pds-render.js +768 -0
- package/public/assets/pds/core/pds-enhancers.js +1 -1
- package/public/assets/pds/core/pds-manager.js +89 -54
- package/public/assets/pds/icons/pds-icons.svg +8 -0
- package/src/js/pds-core/pds-config.js +2 -0
- package/src/js/pds-core/pds-enhancers-meta.js +6 -0
- package/src/js/pds-core/pds-enhancers.js +60 -0
- package/src/js/pds-core/pds-generator.js +35 -0
- package/src/js/pds.d.ts +10 -0
- package/src/js/pds.js +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var Xn=Object.defineProperty;var Xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Qe=(t,e)=>{for(var r in e)Xn(t,r,{get:e[r],enumerable:!0})};var wr={};Qe(wr,{enums:()=>$});var $,_e=Xe(()=>{$={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 _r={};Qe(_r,{default:()=>uo,findComponentForElement:()=>ao,getAllSelectors:()=>io,getAllTags:()=>co,getByCategory:()=>lo,ontology:()=>q,searchOntology:()=>so});function de(t,e){if(!t||!e)return!1;try{return t.matches(e)}catch{return!1}}function Ir(t,e){if(!t||!e||!t.closest)return null;try{return t.closest(e)}catch{return null}}function ao(t,{maxDepth:e=5}={}){if(!t||t.closest&&t.closest(".showcase-toc"))return null;let r=t,n=0;for(;r&&n<e;){if(n++,r.tagName==="DS-SHOWCASE")return null;if(r.classList&&r.classList.contains("showcase-section")){r=r.parentElement;continue}for(let a of PDS.ontology.enhancements){let i=a.selector||a;if(de(r,i))return{element:r,componentType:"enhanced-component",displayName:a.description||i,id:a.id}}if(r.tagName==="FIELDSET"){let a=r.getAttribute("role");if(a==="group"||a==="radiogroup")return{element:r,componentType:"form-group",displayName:a==="radiogroup"?"radio group":"form group"}}if(r.tagName==="LABEL"&&r.querySelector&&r.querySelector("input,select,textarea"))return{element:r,componentType:"form-control",displayName:"label with input"};let o=r.closest?r.closest("label"):null;if(o&&o.querySelector&&o.querySelector("input,select,textarea"))return{element:o,componentType:"form-control",displayName:"label with input"};for(let a of PDS.ontology.primitives){for(let i of a.selectors||[]){let s=String(i||"").trim();if(s.includes("*")){if(s.startsWith(".")){let l=s.slice(1).replace(/\*/g,"");if(r.classList&&Array.from(r.classList).some(p=>p.startsWith(l)))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let u=r.parentElement,c=0;for(;u&&c<e;){if(u.classList&&Array.from(u.classList).some(p=>p.startsWith(l))&&u.tagName!=="DS-SHOWCASE")return{element:u,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};u=u.parentElement,c++}continue}continue}if(de(r,s))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let d=Ir(r,s);if(d&&d.tagName!=="DS-SHOWCASE")return{element:d,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(r.classList){let i=Array.from(r.classList);for(let s of a.selectors||[])if(typeof s=="string"&&s.includes("*")&&s.startsWith(".")){let d=s.slice(1).replace(/\*/g,"");if(i.some(l=>l.startsWith(d)))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}}}for(let a of PDS.ontology.layoutPatterns||[])for(let i of a.selectors||[]){let s=String(i||"").trim();if(s.includes("*")){if(s.startsWith(".")){let l=s.slice(1).replace(/\*/g,"");if(r.classList&&Array.from(r.classList).some(u=>u.startsWith(l)))return{element:r,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}continue}if(de(r,s))return{element:r,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags};let d=Ir(r,s);if(d&&d.tagName!=="DS-SHOWCASE")return{element:d,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(r.tagName&&r.tagName.includes("-")){let a=r.tagName.toLowerCase(),i=PDS.ontology.components.find(s=>s.selectors.includes(a));return{element:r,componentType:"web-component",displayName:i?.name||a,id:i?.id||a,tags:i?.tags}}if(r.tagName==="BUTTON"){let a=r.querySelector&&r.querySelector("pds-icon");return{element:r,componentType:"button",displayName:a?"button with icon":"button",id:"button"}}if(de(r,"pds-icon")||r.closest&&r.closest("pds-icon")){let a=de(r,"pds-icon")?r:r.closest("pds-icon");return{element:a,componentType:"icon",displayName:`pds-icon (${a.getAttribute&&a.getAttribute("icon")||"unknown"})`,id:"pds-icon"}}if(de(r,"nav[data-dropdown]")||r.closest&&r.closest("nav[data-dropdown]"))return{element:de(r,"nav[data-dropdown]")?r:r.closest("nav[data-dropdown]"),componentType:"navigation",displayName:"dropdown menu",id:"dropdown"};r=r.parentElement}return null}function io(){let t=[];for(let e of PDS.ontology.primitives)t.push(...e.selectors||[]);for(let e of PDS.ontology.components)t.push(...e.selectors||[]);for(let e of PDS.ontology.layoutPatterns||[])t.push(...e.selectors||[]);return Array.from(new Set(t))}function so(t,e={}){let r=t.toLowerCase(),n=[],o=(a,i)=>{for(let s of a)(s.id?.toLowerCase().includes(r)||s.name?.toLowerCase().includes(r)||s.description?.toLowerCase().includes(r)||s.tags?.some(l=>l.toLowerCase().includes(r))||s.category?.toLowerCase().includes(r)||s.selectors?.some(l=>l.toLowerCase().includes(r)))&&n.push({...s,type:i})};return(!e.type||e.type==="primitive")&&o(q.primitives,"primitive"),(!e.type||e.type==="component")&&o(q.components,"component"),(!e.type||e.type==="layout")&&o(q.layoutPatterns,"layout"),(!e.type||e.type==="enhancement")&&o(q.enhancements,"enhancement"),n}function lo(t){let e=t.toLowerCase();return{primitives:q.primitives.filter(r=>r.category===e),components:q.components.filter(r=>r.category===e),layouts:q.layoutPatterns.filter(r=>r.category===e)}}function co(){let t=new Set;return q.primitives.forEach(e=>e.tags?.forEach(r=>t.add(r))),q.components.forEach(e=>e.tags?.forEach(r=>t.add(r))),q.layoutPatterns.forEach(e=>e.tags?.forEach(r=>t.add(r))),q.enhancements.forEach(e=>e.tags?.forEach(r=>t.add(r))),Array.from(t).sort()}var q,uo,Dt=Xe(()=>{q={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-danger",".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-live-edit",name:"Live Edit",description:"Contextual live editing for PDS design settings",selectors:["pds-live-edit"],tags:["editor","live","config","tooling"],category:"tooling"},{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. Use data-dropdown-close on clickable descendants to dismiss on selection.",tags:["menu","interactive","navigation","dismiss","close"]},{id:"dropdown-close",selector:"[data-dropdown-close]",description:"Declarative close marker for nav[data-dropdown] panels; clicking marked targets closes the open dropdown.",tags:["dropdown","menu","dismiss","close","attribute"]},{id:"toggle",selector:"label[data-toggle]",description:"Toggle switch from checkbox",tags:["switch","boolean","form"]},{id:"color-input",selector:"label[data-color]",description:"Enhanced color input with swatch shell and hex output",tags:["color","input","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-danger","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"]}};uo=q});var Qr={};Qe(Qr,{AutoDefiner:()=>Zt});async function na(...t){let e={};t.length&&typeof t[t.length-1]=="object"&&(e=t.pop()||{});let r=t,{baseURL:n,mapper:o=l=>`${l}.js`,onError:a=(l,u)=>console.error(`[defineWebComponents] ${l}:`,u)}=e,i=n?new URL(n,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),s=l=>l.toLowerCase().replace(/(^|-)([a-z])/g,(u,c,p)=>p.toUpperCase()),d=async l=>{try{if(customElements.get(l))return{tag:l,status:"already-defined"};let u=o(l),p=await import(u instanceof URL?u.href:new URL(u,i).href),b=p?.default??p?.[s(l)];if(!b){if(customElements.get(l))return{tag:l,status:"self-defined"};throw new Error(`No export found for ${l}. Expected default export or named export "${s(l)}".`)}return customElements.get(l)?{tag:l,status:"race-already-defined"}:(customElements.define(l,b),{tag:l,status:"defined"})}catch(u){throw a(l,u),u}};return Promise.all(r.map(d))}var Zt,en=Xe(()=>{Zt=class{constructor(e={}){let{baseURL:r,mapper:n,onError:o,predicate:a=()=>!0,attributeModule:i="data-module",root:s=document,scanExisting:d=!0,debounceMs:l=16,observeShadows:u=!0,enhancers:c=[],patchAttachShadow:p=!0}=e,b=new Set,h=new Set,S=new Set,g=new Map,f=new WeakMap,y=new WeakMap,v=0,m=!1,w=null,A=L=>{if(!L||!c.length)return;let T=y.get(L);T||(T=new Set,y.set(L,T));for(let I of c)if(!(!I.selector||!I.run)&&!T.has(I.selector))try{L.matches&&L.matches(I.selector)&&(I.run(L),T.add(I.selector))}catch(O){console.warn(`[AutoDefiner] Error applying enhancer for selector "${I.selector}":`,O)}},C=(L,T)=>{if(!m&&!(!L||!L.includes("-"))&&!customElements.get(L)&&!h.has(L)&&!S.has(L)){if(T&&T.getAttribute){let I=T.getAttribute(i);I&&!g.has(L)&&g.set(L,I)}b.add(L),R()}},R=()=>{v||(v=setTimeout(P,l))},z=L=>{if(L){if(L.nodeType===1){let T=L,I=T.tagName?.toLowerCase();I&&I.includes("-")&&!customElements.get(I)&&a(I,T)&&C(I,T),A(T),u&&T.shadowRoot&&M(T.shadowRoot)}L.querySelectorAll&&L.querySelectorAll("*").forEach(T=>{let I=T.tagName?.toLowerCase();I&&I.includes("-")&&!customElements.get(I)&&a(I,T)&&C(I,T),A(T),u&&T.shadowRoot&&M(T.shadowRoot)})}},M=L=>{if(!L||f.has(L))return;z(L);let T=new MutationObserver(I=>{for(let O of I)O.addedNodes?.forEach(B=>{z(B)}),O.type==="attributes"&&O.target&&z(O.target)});T.observe(L,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...c.map(I=>I.selector).filter(I=>I.startsWith("data-"))]}),f.set(L,T)};async function P(){if(clearTimeout(v),v=0,!b.size)return;let L=Array.from(b);b.clear(),L.forEach(T=>h.add(T));try{let T=I=>g.get(I)??(n?n(I):`${I}.js`);await na(...L,{baseURL:r,mapper:T,onError:(I,O)=>{S.add(I),o?.(I,O)}})}catch{}finally{L.forEach(T=>h.delete(T))}}let E=s===document?document.documentElement:s,k=new MutationObserver(L=>{for(let T of L)T.addedNodes?.forEach(I=>{z(I)}),T.type==="attributes"&&T.target&&z(T.target)});if(k.observe(E,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...c.map(L=>L.selector).filter(L=>L.startsWith("data-"))]}),u&&p&&Element.prototype.attachShadow){let L=Element.prototype.attachShadow;Element.prototype.attachShadow=function(I){let O=L.call(this,I);if(I&&I.mode==="open"){M(O);let B=this.tagName?.toLowerCase();B&&B.includes("-")&&!customElements.get(B)&&C(B,this)}return O},w=()=>Element.prototype.attachShadow=L}return d&&z(E),{stop(){m=!0,k.disconnect(),w&&w(),v&&(clearTimeout(v),v=0),f.forEach(L=>L.disconnect())},flush:P}}static async define(...e){let r={};e.length&&typeof e[e.length-1]=="object"&&(r=e.pop()||{});let n=e,{baseURL:o,mapper:a=u=>`${u}.js`,onError:i=(u,c)=>console.error(`[defineWebComponents] ${u}:`,c)}=r,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),d=u=>u.toLowerCase().replace(/(^|-)([a-z])/g,(c,p,b)=>b.toUpperCase()),l=async u=>{try{if(customElements.get(u))return{tag:u,status:"already-defined"};let c=a(u),b=await import(c instanceof URL?c.href:new URL(c,s).href),h=b?.default??b?.[d(u)];if(!h){if(customElements.get(u))return{tag:u,status:"self-defined"};throw new Error(`No export found for ${u}. Expected default export or named export "${d(u)}".`)}return customElements.get(u)?{tag:u,status:"race-already-defined"}:(customElements.define(u,h),{tag:u,status:"defined"})}catch(c){throw i(u,c),c}};return Promise.all(n.map(l))}}});var ut={};Qe(ut,{deepMerge:()=>nn,enQueue:()=>sa,escapeForRegExp:()=>da,fragmentFromTemplateLike:()=>ar,humanizeIdentifier:()=>pa,isObject:()=>ct,isUrl:()=>la,openCenteredWindow:()=>ua,parseFragment:()=>dt,parseHTML:()=>ir,throttle:()=>ia,withTimeout:()=>ca});function ct(t){return t&&typeof t=="object"&&!Array.isArray(t)}function nn(t,e){let r={...t};return ct(t)&&ct(e)&&Object.keys(e).forEach(n=>{ct(e[n])?n in t?r[n]=nn(t[n],e[n]):Object.assign(r,{[n]:e[n]}):Object.assign(r,{[n]:e[n]})}),r}function ar(t){let e=Array.isArray(t?.strings)?t.strings:[],r=Array.isArray(t?.values)?t.values:[],n=new Set,o=[],a=/(\s)(\.[\w-]+)=["']?\s*$/,i=/(\s)(@[\w-]+)=["']?\s*$/,s=/(\s)(\?[\w-]+)=["']?\s*$/,d=/(\s)([\w:-]+)=["']?\s*$/,l=/=["']\s*$/,u=!1;for(let g=0;g<e.length;g+=1){let f=e[g]??"";if(u&&(f=f.replace(/^["']/,""),u=!1),g<r.length){let y=`pds-val-${g}`,v=f.match(a),m=f.match(i),w=f.match(s),A=f.match(d);if(v){let C=v[2].slice(1);u=l.test(e[g]??""),f=f.replace(a,`$1data-pds-bind-${g}="prop:${C}:${y}"`),n.add(g)}else if(m){let C=m[2].slice(1);u=l.test(e[g]??""),f=f.replace(i,`$1data-pds-bind-${g}="event:${C}:${y}"`),n.add(g)}else if(w){let C=w[2].slice(1);u=l.test(e[g]??""),f=f.replace(s,`$1data-pds-bind-${g}="boolean:${C}:${y}"`),n.add(g)}else if(A){let C=A[2];u=l.test(e[g]??""),f=f.replace(d,`$1data-pds-bind-${g}="attr:${C}:${y}"`),n.add(g)}}o.push(f),g<r.length&&!n.has(g)&&o.push(`<!--pds-val-${g}-->`)}let c=document.createElement("template");c.innerHTML=o.join("");let p=(g,f)=>{let y=g.parentNode;if(!y)return;if(f==null){y.removeChild(g);return}let v=m=>{if(m!=null){if(m instanceof Node){y.insertBefore(m,g);return}if(Array.isArray(m)){m.forEach(w=>v(w));return}y.insertBefore(document.createTextNode(String(m)),g)}};v(f),y.removeChild(g)},b=document.createTreeWalker(c.content,NodeFilter.SHOW_COMMENT),h=[];for(;b.nextNode();){let g=b.currentNode;g?.nodeValue?.startsWith("pds-val-")&&h.push(g)}return h.forEach(g=>{let f=Number(g.nodeValue.replace("pds-val-",""));p(g,r[f])}),c.content.querySelectorAll("*").forEach(g=>{[...g.attributes].forEach(f=>{if(!f.name.startsWith("data-pds-bind-"))return;let y=f.value.indexOf(":"),v=f.value.lastIndexOf(":");if(y<=0||v<=y){g.removeAttribute(f.name);return}let m=f.value.slice(0,y),w=f.value.slice(y+1,v),A=f.value.slice(v+1),C=Number(String(A).replace("pds-val-","")),R=r[C];if(!w||!Number.isInteger(C)){g.removeAttribute(f.name);return}m==="prop"?g[w]=R:m==="event"?(typeof R=="function"||R&&typeof R.handleEvent=="function")&&g.addEventListener(w,R):m==="boolean"?R?g.setAttribute(w,""):g.removeAttribute(w):m==="attr"&&(R==null||R===!1?g.removeAttribute(w):g.setAttribute(w,String(R))),g.removeAttribute(f.name)})}),c.content}function dt(t,...e){if(Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"raw"))return ar({strings:Array.from(t),values:e});if(Array.isArray(t?.strings)&&Array.isArray(t?.values))return ar({strings:t.strings,values:t.values});let n=document.createElement("template");return n.innerHTML=String(t??""),n.content}function ir(t,...e){return dt(t,...e).childNodes}function ia(t,e=100){let r;return function(...o){let a=()=>{clearTimeout(r),t(...o)};clearTimeout(r),r=setTimeout(a,e)}}function sa(t){setTimeout(t,0)}function la(t){try{if(typeof t!="string"||t.indexOf(`
|
|
2
|
-
`)!==-1||t.indexOf(" ")!==-1||t.startsWith("#/"))return!1;let e=new URL(t,window.location.origin);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}function ca(t,e,r="Operation"){return!e||e<=0?t:new Promise((n,o)=>{let a=setTimeout(()=>{o(new Error(`${r} timed out after ${e}ms`))},e);Promise.resolve(t).then(i=>{clearTimeout(a),n(i)}).catch(i=>{clearTimeout(a),o(i)})})}function da(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ua(t,e,r){let n=window.screen.width/2-e/2,o=window.screen.height/2-r/2;return window.open(t,"",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${e}, height=${r}, top=${o}, left=${n}`)}function pa(t){if(t==null)return"";let e=String(t).trim();return e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim():""}var sr=Xe(()=>{});_e();var re="any",Ne={type:"object",allowUnknown:!1,properties:{id:{type:"string",minLength:1,maxLength:64},name:{type:"string",minLength:1,maxLength:80},tags:{type:"array",uniqueItems:!0,items:{type:"string"}},themes:{type:"array",uniqueItems:!0,items:{type:"string",oneOf:[{const:"light",title:"Light"},{const:"dark",title:"Dark"},{const:"system",title:"System"}]}},description:{type:"string",maxLength:500},options:{type:"object",allowUnknown:!0,properties:{liquidGlassEffects:{type:"boolean"},backgroundMesh:{type:"number"}}},form:{type:"object",allowUnknown:!0,properties:{options:{type:"object",allowUnknown:!0,properties:{widgets:{type:"object",allowUnknown:!1,properties:{booleans:{type:"string"},numbers:{type:"string"},selects:{type:"string"}}},layouts:{type:"object",allowUnknown:!1,properties:{fieldsets:{type:"string"},arrays:{type:"string"}}},enhancements:{type:"object",allowUnknown:!1,properties:{icons:{type:"boolean"},datalists:{type:"boolean"},rangeOutput:{type:"boolean"},colorInput:{type:"boolean"}}},validation:{type:"object",allowUnknown:!1,properties:{showErrors:{type:"boolean"},validateOnChange:{type:"boolean"}}}}}}},colors:{type:"object",allowUnknown:!1,properties:{primary:{type:"string",relations:{tokens:["--color-primary-*","--color-primary-fill","--color-primary-text","--background-mesh-*"]}},secondary:{type:"string",relations:{tokens:["--color-secondary-*","--color-gray-*","--background-mesh-*"]}},accent:{type:"string",relations:{tokens:["--color-accent-*","--background-mesh-*"]}},background:{type:"string",relations:{tokens:["--color-surface-*","--color-surface-translucent-*","--surface-*-bg","--surface-*-text","--surface-*-text-secondary","--surface-*-text-muted","--surface-*-icon","--surface-*-icon-subtle","--surface-*-shadow","--surface-*-border"]}},success:{type:["string","null"],relations:{tokens:["--color-success-*","--color-success-fill","--color-success-fill-hover","--color-success-fill-active","--color-success-text","--color-success-text-hover","--color-success-contrast","--color-success-display-*","--surface-*-success-text","--surface-*-success-text-hover"]}},warning:{type:["string","null"],relations:{tokens:["--color-warning-*","--color-warning-fill","--color-warning-fill-hover","--color-warning-fill-active","--color-warning-text","--color-warning-text-hover","--color-warning-contrast","--color-warning-display-*","--surface-*-warning-text","--surface-*-warning-text-hover"]}},danger:{type:["string","null"],relations:{tokens:["--color-danger-*","--color-danger-fill","--color-danger-fill-hover","--color-danger-fill-active","--color-danger-text","--color-danger-text-hover","--color-danger-contrast","--color-danger-display-*","--surface-*-danger-text","--surface-*-danger-text-hover"]}},info:{type:["string","null"],relations:{tokens:["--color-info-*","--color-info-fill","--color-info-fill-hover","--color-info-fill-active","--color-info-text","--color-info-text-hover","--color-info-contrast","--color-info-display-*","--surface-*-info-text","--surface-*-info-text-hover"]}},gradientStops:{type:"number"},elevationOpacity:{type:"number",relations:{tokens:["--surface-*-shadow"]}},darkMode:{type:"object",allowUnknown:!1,properties:{background:{type:"string",relations:{theme:"dark",tokens:["--color-surface-*","--color-surface-translucent-*","--surface-*-bg","--surface-*-text","--surface-*-text-secondary","--surface-*-text-muted","--surface-*-icon","--surface-*-icon-subtle","--surface-*-shadow","--surface-*-border"]}},primary:{type:"string",relations:{theme:"dark",tokens:["--color-primary-*","--color-primary-fill","--color-primary-text"]}},secondary:{type:"string",relations:{theme:"dark",tokens:["--color-secondary-*","--color-gray-*"]}},accent:{type:"string",relations:{theme:"dark",tokens:["--color-accent-*"]}}}}}},typography:{type:"object",allowUnknown:!1,properties:{fontFamilyHeadings:{type:"string",relations:{tokens:["--font-family-headings"]}},fontFamilyBody:{type:"string",relations:{tokens:["--font-family-body"]}},fontFamilyMono:{type:"string",relations:{tokens:["--font-family-mono"]}},baseFontSize:{type:"number",relations:{tokens:["--font-size-*"]}},fontScale:{type:"number",relations:{tokens:["--font-size-*"]}},fontWeightLight:{type:["string","number"],relations:{tokens:["--font-weight-light"]}},fontWeightNormal:{type:["string","number"],relations:{tokens:["--font-weight-normal"]}},fontWeightMedium:{type:["string","number"],relations:{tokens:["--font-weight-medium"]}},fontWeightSemibold:{type:["string","number"],relations:{tokens:["--font-weight-semibold"]}},fontWeightBold:{type:["string","number"],relations:{tokens:["--font-weight-bold"]}},lineHeightTight:{type:["string","number"],relations:{tokens:["--font-line-height-tight"]}},lineHeightNormal:{type:["string","number"],relations:{tokens:["--font-line-height-normal"]}},lineHeightRelaxed:{type:["string","number"],relations:{tokens:["--font-line-height-relaxed"]}},letterSpacingTight:{type:"number"},letterSpacingNormal:{type:"number"},letterSpacingWide:{type:"number"}}},spatialRhythm:{type:"object",allowUnknown:!1,properties:{baseUnit:{type:"number",relations:{tokens:["--spacing-*"]}},scaleRatio:{type:"number"},maxSpacingSteps:{type:"number",relations:{tokens:["--spacing-*"]}},containerPadding:{type:"number"},inputPadding:{type:"number",relations:{rules:[{selectors:["input","textarea","select"],properties:["padding"]}]}},buttonPadding:{type:"number",relations:{rules:[{selectors:["button",".btn"],properties:["padding"]}]}},sectionSpacing:{type:"number",relations:{rules:[{selectors:["section"],properties:["margin","padding"]}]}}}},shape:{type:"object",allowUnknown:!1,properties:{radiusSize:{type:["string","number"],relations:{tokens:["--radius-*"]}},customRadius:{type:["string","number","null"]},borderWidth:{type:["string","number"],relations:{tokens:["--border-width-*"]}}}},behavior:{type:"object",allowUnknown:!1,properties:{transitionSpeed:{type:["string","number"],relations:{tokens:["--transition-*"]}},animationEasing:{type:"string"},customTransitionSpeed:{type:["number","null"]},customEasing:{type:["string","null"]},focusRingWidth:{type:"number",relations:{rules:[{selectors:[":focus-visible"],properties:["outline-width","box-shadow"]}]}},focusRingOpacity:{type:"number",relations:{rules:[{selectors:[":focus-visible"],properties:["box-shadow","outline-color"]}]}},hoverOpacity:{type:"number"}}},layout:{type:"object",allowUnknown:!1,properties:{maxWidth:{type:["number","string"],relations:{tokens:["--layout-max-width","--layout-max-width-*"]}},maxWidths:{type:"object",allowUnknown:!1,properties:{sm:{type:["number","string"],relations:{tokens:["--layout-max-width-sm"]}},md:{type:["number","string"],relations:{tokens:["--layout-max-width-md"]}},lg:{type:["number","string"],relations:{tokens:["--layout-max-width-lg"]}},xl:{type:["number","string"],relations:{tokens:["--layout-max-width-xl"]}}}},containerPadding:{type:["number","string"],relations:{tokens:["--layout-container-padding"]}},breakpoints:{type:"object",allowUnknown:!1,properties:{sm:{type:"number"},md:{type:"number"},lg:{type:"number"},xl:{type:"number"}}},gridColumns:{type:"number"},gridGutter:{type:"number"},densityCompact:{type:"number"},densityNormal:{type:"number"},densityComfortable:{type:"number"},buttonMinHeight:{type:"number"},inputMinHeight:{type:"number"},baseShadowOpacity:{type:"number",relations:{tokens:["--shadow-*"]}},darkMode:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{theme:"dark",tokens:["--shadow-*"]}}}},utilities:{type:"object",allowUnknown:!0,properties:{grid:{type:"boolean"},flex:{type:"boolean"},spacing:{type:"boolean"},container:{type:"boolean"}}},gridSystem:{type:"object",allowUnknown:!0,properties:{columns:{type:"array",items:{type:"number"}},autoFitBreakpoints:{type:"object",allowUnknown:!1,properties:{sm:{type:"string"},md:{type:"string"},lg:{type:"string"},xl:{type:"string"}}},enableGapUtilities:{type:"boolean"}}},containerMaxWidth:{type:["number","string"]}}},layers:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{tokens:["--shadow-*"]}},shadowBlurMultiplier:{type:"number",relations:{tokens:["--shadow-*"]}},shadowOffsetMultiplier:{type:"number",relations:{tokens:["--shadow-*"]}},shadowDepth:{type:"string"},blurLight:{type:"number"},blurMedium:{type:"number"},blurHeavy:{type:"number"},baseZIndex:{type:"number",relations:{tokens:["--z-*"]}},zIndexStep:{type:"number",relations:{tokens:["--z-*"]}},zIndexBase:{type:"number"},zIndexDropdown:{type:"number"},zIndexSticky:{type:"number"},zIndexFixed:{type:"number"},zIndexModal:{type:"number"},zIndexPopover:{type:"number"},zIndexTooltip:{type:"number"},zIndexNotification:{type:"number"},darkMode:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{theme:"dark",tokens:["--shadow-*"]}}}}}},advanced:{type:"object",allowUnknown:!0,properties:{linkStyle:{type:"string"},colorDerivation:{type:"string"}}},a11y:{type:"object",allowUnknown:!0,properties:{minTouchTarget:{type:["string","number"]},prefersReducedMotion:{type:"boolean"},focusStyle:{type:"string"}}},icons:{type:"object",allowUnknown:!1,properties:{set:{type:"string"},weight:{type:"string"},defaultSize:{type:"number",relations:{tokens:["--icon-size"]}},sizes:{type:"object",allowUnknown:!0,properties:{xs:{type:["number","string"]},sm:{type:["number","string"]},md:{type:["number","string"]},lg:{type:["number","string"]},xl:{type:["number","string"]},"2xl":{type:["number","string"]}}},spritePath:{type:"string"},externalPath:{type:"string"},include:{type:"object",allowUnknown:!0,properties:{navigation:{type:"array",items:{type:"string"}},actions:{type:"array",items:{type:"string"}},communication:{type:"array",items:{type:"string"}},content:{type:"array",items:{type:"string"}},status:{type:"array",items:{type:"string"}},time:{type:"array",items:{type:"string"}},commerce:{type:"array",items:{type:"string"}},formatting:{type:"array",items:{type:"string"}},system:{type:"array",items:{type:"string"}}}}}},components:{type:"object",allowUnknown:!0},debug:{type:"boolean"}}},Qn={type:"object",allowUnknown:!0,properties:{mode:{type:"string"},preset:{type:"string"},design:Ne,enhancers:{type:["object","array"]},applyGlobalStyles:{type:"boolean"},manageTheme:{type:"boolean"},themeStorageKey:{type:"string"},preloadStyles:{type:"boolean"},criticalLayers:{type:"array",items:{type:"string"}},autoDefine:{type:"object",allowUnknown:!1,properties:{predefine:{type:"array",items:{type:"string"}},mapper:{type:re},enhancers:{type:["object","array"]},scanExisting:{type:"boolean"},observeShadows:{type:"boolean"},patchAttachShadow:{type:"boolean"},debounceMs:{type:"number"},onError:{type:re},baseURL:{type:"string"}}},managerURL:{type:"string"},manager:{type:re},liveEdit:{type:"boolean"},localization:{type:"object",allowUnknown:!1,properties:{locale:{type:"string"},locales:{type:"array",items:{type:"string"}},messages:{type:"object",allowUnknown:!0},provider:{type:re},translate:{type:re},loadLocale:{type:re},setLocale:{type:re}}},log:{type:re}}};function Fe(t){return t===null?"null":Array.isArray(t)?"array":typeof t}function eo(t,e){if(e===re)return!0;let r=Fe(t);return Array.isArray(e)?e.includes(r):r===e}function et(t,e,r,n){if(!e)return;let o=e.type||re;if(!eo(t,o)){n.push({path:r,expected:o,actual:Fe(t),message:`Expected ${o} but got ${Fe(t)}`});return}if(o==="array"&&e.items&&Array.isArray(t)&&t.forEach((a,i)=>{et(a,e.items,`${r}[${i}]`,n)}),o==="object"&&t&&typeof t=="object"){let a=e.properties||{};for(let[i,s]of Object.entries(t)){if(!Object.prototype.hasOwnProperty.call(a,i)){e.allowUnknown||n.push({path:`${r}.${i}`,expected:"known property",actual:"unknown",message:`Unknown property "${i}"`});continue}et(s,a[i],`${r}.${i}`,n)}}}function Nt(t,e="",r={}){if(!t||typeof t!="object")return r;if(t.relations&&e&&(r[e]=t.relations),t.type==="object"&&t.properties&&Object.entries(t.properties).forEach(([n,o])=>{let a=e?`${e}.${n}`:n;Nt(o,a,r)}),t.type==="array"&&t.items){let n=`${e}[]`;Nt(t.items,n,r)}return r}var Cr=Nt(Ne,""),Er=Ne,to={"colors.primary":{widget:"input-color"},"colors.secondary":{widget:"input-color"},"colors.accent":{widget:"input-color"},"colors.background":{widget:"input-color"},"colors.success":{widget:"input-color"},"colors.warning":{widget:"input-color"},"colors.danger":{widget:"input-color"},"colors.info":{widget:"input-color"},"colors.gradientStops":{min:2,max:8,step:1,widget:"range"},"colors.elevationOpacity":{min:0,max:1,step:.01,widget:"range"},"colors.darkMode.background":{widget:"input-color"},"colors.darkMode.primary":{widget:"input-color"},"colors.darkMode.secondary":{widget:"input-color"},"colors.darkMode.accent":{widget:"input-color"},description:{widget:"textarea",maxLength:500,rows:4,placeholder:"Summarize the visual and interaction intent"},"typography.fontFamilyHeadings":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Heading font stack"},"typography.fontFamilyBody":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Body font stack"},"typography.fontFamilyMono":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Monospace font stack"},"typography.baseFontSize":{min:8,max:32,step:1,widget:"input-range"},"typography.fontScale":{min:1,max:2,step:.01,widget:"range"},"typography.fontWeightLight":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightNormal":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightMedium":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightSemibold":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightBold":{min:100,max:800,step:100,widget:"input-range"},"typography.lineHeightTight":{min:.75,max:3,step:.001,widget:"input-range"},"typography.lineHeightNormal":{min:.75,max:3,step:.001,widget:"input-range"},"typography.lineHeightRelaxed":{min:.75,max:3,step:.001,widget:"input-range"},"typography.letterSpacingTight":{min:-.1,max:.1,step:.001,widget:"range"},"typography.letterSpacingNormal":{min:-.1,max:.1,step:.001,widget:"range"},"typography.letterSpacingWide":{min:-.1,max:.1,step:.001,widget:"range"},"spatialRhythm.baseUnit":{min:1,max:16,step:1,widget:"range"},"spatialRhythm.scaleRatio":{min:1,max:2,step:.01,widget:"range"},"spatialRhythm.maxSpacingSteps":{min:4,max:64,step:1,widget:"range"},"spatialRhythm.containerPadding":{min:0,max:8,step:.05,widget:"range"},"spatialRhythm.inputPadding":{min:0,max:4,step:.05,widget:"range"},"spatialRhythm.buttonPadding":{min:0,max:4,step:.05,widget:"range"},"spatialRhythm.sectionSpacing":{min:0,max:8,step:.05,widget:"range"},"shape.radiusSize":{oneOf:Object.entries($.RadiusSizes).map(([t,e])=>({const:e,title:t}))},"shape.borderWidth":{widget:"select",oneOf:Object.entries($.BorderWidths).map(([t,e])=>({const:e,title:t}))},"shape.customRadius":{min:0,max:64,step:1,widget:"range"},"behavior.transitionSpeed":{oneOf:Object.entries($.TransitionSpeeds).map(([t,e])=>({const:e,title:t}))},"behavior.animationEasing":{enum:Object.values($.AnimationEasings)},"behavior.customTransitionSpeed":{min:0,max:1e3,step:10,widget:"range"},"behavior.focusRingWidth":{min:0,max:8,step:1,widget:"range"},"behavior.focusRingOpacity":{min:0,max:1,step:.01,widget:"range"},"behavior.hoverOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.gridColumns":{min:1,max:24,step:1,widget:"range"},"layout.gridGutter":{min:0,max:8,step:.05,widget:"range"},"layout.maxWidth":{widget:"input-text",placeholder:"e.g. 1200 or 1200px"},"layout.maxWidths.sm":{widget:"input-text",placeholder:"e.g. 640 or 640px"},"layout.maxWidths.md":{widget:"input-text",placeholder:"e.g. 768 or 768px"},"layout.maxWidths.lg":{widget:"input-text",placeholder:"e.g. 1024 or 1024px"},"layout.maxWidths.xl":{widget:"input-text",placeholder:"e.g. 1280 or 1280px"},"layout.containerMaxWidth":{widget:"input-text",placeholder:"e.g. 1400px"},"layout.containerPadding":{widget:"input-text",placeholder:"e.g. var(--spacing-6)"},"layout.breakpoints.sm":{min:320,max:2560,step:1,widget:"input-number"},"layout.breakpoints.md":{min:480,max:3200,step:1,widget:"input-number"},"layout.breakpoints.lg":{min:640,max:3840,step:1,widget:"input-number"},"layout.breakpoints.xl":{min:768,max:5120,step:1,widget:"input-number"},"layout.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.darkMode.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.densityCompact":{min:.5,max:2,step:.05,widget:"range"},"layout.densityNormal":{min:.5,max:2,step:.05,widget:"range"},"layout.densityComfortable":{min:.5,max:2,step:.05,widget:"range"},"layout.buttonMinHeight":{min:24,max:96,step:1,widget:"range"},"layout.inputMinHeight":{min:24,max:96,step:1,widget:"range"},"layers.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layers.shadowBlurMultiplier":{min:0,max:8,step:.1,widget:"range"},"layers.shadowOffsetMultiplier":{min:0,max:8,step:.1,widget:"range"},"layers.blurLight":{min:0,max:48,step:1,widget:"range"},"layers.blurMedium":{min:0,max:64,step:1,widget:"range"},"layers.blurHeavy":{min:0,max:96,step:1,widget:"range"},"layers.baseZIndex":{min:0,max:1e4,step:10,widget:"range"},"layers.zIndexStep":{min:1,max:100,step:1,widget:"range"},"layers.darkMode.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"advanced.linkStyle":{enum:Object.values($.LinkStyles)},"a11y.minTouchTarget":{oneOf:Object.entries($.TouchTargetSizes).map(([t,e])=>({const:e,title:t}))},"a11y.focusStyle":{enum:Object.values($.FocusStyles)},"icons.defaultSize":{min:8,max:128,step:1,widget:"range",icon:"sparkle"}};function kr(t=[]){return t.join(".")}function Sr(t=[]){return`/${t.join("/")}`}function ro(t,e=[]){if(!(!t||typeof t!="object"))return e.reduce((r,n)=>{if(r!=null&&typeof r=="object")return r[n]},t)}function $r(t,e,r=[]){if(t!=null)return t;let n=ro(e,r);return n??void 0}function Pe(t=""){return String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/^./,e=>e.toUpperCase())}function Mr(t,e){if(!t)return"string";let r=t.type||"string";if(Array.isArray(r)){let n=Fe(e);return n!=="undefined"&&r.includes(n)?n:r.includes("string")?"string":r.find(o=>o!=="null")||r[0]||"string"}return r}function Pt(t,e,r=[]){return!t||!e||!Array.isArray(r)||r.forEach(n=>{e[n]!==void 0&&(t[n]=e[n])}),t}function Lr(t,e){return Array.isArray(e?.oneOf)&&e.oneOf.length?e.oneOf:Array.isArray(e?.enum)&&e.enum.length?e.enum.map(r=>({const:r,title:Pe(r)})):Array.isArray(t?.oneOf)&&t.oneOf.length?t.oneOf:Array.isArray(t?.enum)&&t.enum.length?t.enum.map(r=>({const:r,title:Pe(r)})):null}function no(t){return t&&(t==="range"?"input-range":t)}function oo(t,e){if(!Array.isArray(e)||!e.length)return t;let r=new Set;for(let n of e)!n||n.const===void 0||r.add(Fe(n.const));if(!r.size)return t;if(r.size===1){let n=Array.from(r)[0];if(n==="number")return"number";if(n==="string")return"string";if(n==="boolean")return"boolean"}return t}function zr(t,e,r){let n=Mr(e,r),o=t.toLowerCase(),a={label:Pe(t.split(".").slice(-1)[0]||t)};n==="boolean"&&(a.widget="toggle"),n==="number"&&(a.widget="range",o.includes("opacity")?(a.min=0,a.max=1,a.step=.01):o.includes("lineheight")?(a.min=.75,a.max=3,a.step=.001,a.widget="input-range"):o.includes("fontweight")?(a.min=100,a.max=800,a.step=100,a.widget="input-range"):o.endsWith("basefontsize")?(a.min=8,a.max=32,a.step=1,a.widget="input-range"):o.includes("scale")||o.includes("ratio")?(a.min=1,a.max=2,a.step=.01):(a.min=0,a.max=Math.max(10,Number.isFinite(Number(r))?Number(r)*4:100),a.step=1)),n==="string"&&t.startsWith("colors.")&&(a.widget="input-color"),n==="string"&&o==="description"&&(a.widget="textarea",a.maxLength=500,a.rows=4);let i=to[t]||{},s={...a,...i};return s.widget&&(s.widget=no(s.widget)),s}function Ar(t,e,r,n,o,a){if(!t||typeof t!="object")return null;let i=$r(e,a,r),s=Mr(t,i);if(s==="object"&&t.properties){let f={type:"object",properties:{}};r.length>0&&(f.title=Pe(r[r.length-1]));let y={};for(let[v,m]of Object.entries(t.properties)){let w=e&&typeof e=="object"&&!Array.isArray(e)?e[v]:void 0,A=Ar(m,w,[...r,v],n,o,a);A&&(f.properties[v]=A.schema,A.hasValue&&(y[v]=A.value))}return Object.keys(f.properties).length?{schema:f,value:y,hasValue:Object.keys(y).length>0}:null}if(s==="array"){let f=kr(r),y=zr(f,t,e);o[f]=y;let v=$r(e,a,r),m=t.items?.type||"string",w=Array.isArray(m)?m[0]:m,A={type:w},C=Lr(t?.items,null);if(C&&(A.oneOf=C),w==="string"&&Array.isArray(v)&&v.length>0){let E=v.find(k=>typeof k=="string"&&k.trim().length>0);E&&(A.examples=[E])}Pt(A,t?.items,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","minItems","maxItems","uniqueItems","description","default"]);let R={type:"array",items:A};Pt(R,t,["minItems","maxItems","uniqueItems","description","default"]);let z=Sr(r),M={},P=Array.isArray(A.oneOf)&&A.oneOf.length>0;if(w==="string"&&P&&(M["ui:widget"]=R.maxItems===1?"radio":"checkbox-group"),w==="string"&&Array.isArray(v)&&v.length>0){let E=v.filter(k=>typeof k=="string"&&k.trim().length>0).slice(0,5).join(", ");E&&(M["ui:placeholder"]=E)}return Object.keys(M).length&&(n[z]={...n[z]||{},...M}),{schema:R,value:Array.isArray(e)?e:[],hasValue:Array.isArray(e)}}let d=kr(r),l=zr(d,t,i);o[d]=l;let u=Lr(t,l),b={type:oo(s==="null"?"string":s,u),title:l.label||Pe(r[r.length-1]||d)};u&&(b.oneOf=u),Pt(b,t,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","description","default"]),typeof l.maxLength=="number"&&b.maxLength===void 0&&(b.maxLength=l.maxLength),(b.type==="number"||b.type==="integer")&&typeof l.min=="number"&&b.minimum===void 0&&(b.minimum=l.min),(b.type==="number"||b.type==="integer")&&typeof l.max=="number"&&b.maximum===void 0&&(b.maximum=l.max),(b.type==="number"||b.type==="integer")&&typeof l.step=="number"&&b.multipleOf===void 0&&(b.multipleOf=l.step);let h=i;h!==void 0&&(b.examples=[h]);let S=Sr(r),g={};return l.widget&&(g["ui:widget"]=l.widget),l.icon&&(g["ui:icon"]=l.icon),typeof l.min=="number"&&(g["ui:min"]=l.min),typeof l.max=="number"&&(g["ui:max"]=l.max),typeof l.step=="number"&&(g["ui:step"]=l.step),l.placeholder&&(g["ui:placeholder"]=l.placeholder),typeof l.rows=="number"&&(g["ui:options"]={...g["ui:options"]||{},rows:l.rows}),l.widget==="input-range"&&h!==void 0&&(g["ui:allowUnset"]=!0),(typeof l.min=="number"||typeof l.max=="number"||typeof l.step=="number")&&(g["ui:options"]={...g["ui:options"]||{},...typeof l.min=="number"?{min:l.min}:{},...typeof l.max=="number"?{max:l.max}:{},...typeof l.step=="number"?{step:l.step}:{}}),Object.keys(g).length&&(n[S]=g),{schema:b,value:e,hasValue:e!==void 0}}function be(t={}){let e={},r={"/colors":{"ui:layout":"flex","ui:layoutOptions":{wrap:!0,gap:"sm"}},"/colors/darkMode":{"ui:layout":"flex","ui:layoutOptions":{wrap:!0,gap:"sm"}}},n=Q?.default&&typeof Q.default=="object"?Q.default:null,o=Ar(Ne,t,[],r,e,n);return{schema:o?.schema||{type:"object",properties:{}},uiSchema:r,values:o?.value||{},metadata:e}}function je(t={}){return be(t).metadata}function jt(t,{log:e,context:r="PDS config"}={}){if(!t||typeof t!="object")return[];let n=[];return et(t,Ne,"design",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${r}] ${o.message} at ${o.path}`)}),n}function Ot(t,{log:e,context:r="PDS config"}={}){if(!t||typeof t!="object")return[];let n=[];return et(t,Qn,"config",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${r}] ${o.message} at ${o.path}`)}),n}var Q={"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.35,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:$.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:$.RadiusSizes.small,borderWidth:$.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.318,fontFamilyHeadings:"'Space Grotesk', system-ui, sans-serif",fontFamilyBody:"'Space Grotesk', system-ui, sans-serif"},spatialRhythm:{baseUnit:4,scaleRatio:1.5},shape:{radiusSize:$.RadiusSizes.xlarge,borderWidth:$.BorderWidths.medium},behavior:{transitionSpeed:$.TransitionSpeeds.fast}},"paper-and-ink":{id:"paper-and-ink",name:"Paper & Ink",tags:["app","featured"],themes:["light"],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:$.RadiusSizes.none,borderWidth:$.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.3,fontFamilyHeadings:"'Quicksand', 'Comfortaa', sans-serif",fontFamilyBody:"'Quicksand', 'Comfortaa', sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.5},shape:{radiusSize:$.RadiusSizes.xxlarge,borderWidth:$.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:$.RadiusSizes.none,borderWidth:$.BorderWidths.thick},behavior:{transitionSpeed:$.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:$.RadiusSizes.medium,borderWidth:$.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.3,fontFamilyHeadings:"'Playfair Display', 'Georgia', serif",fontFamilyBody:"'Crimson Text', 'Garamond', serif",fontWeightNormal:400,fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.3},shape:{radiusSize:$.RadiusSizes.small,borderWidth:$.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:$.RadiusSizes.medium,borderWidth:$.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:$.RadiusSizes.small,borderWidth:$.BorderWidths.thick},behavior:{transitionSpeed:$.TransitionSpeeds.fast,focusRingWidth:4}},"pastel-play":{id:"pastel-play",name:"Pastel Play",themes:["light"],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:$.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:$.RadiusSizes.xxlarge,borderWidth:$.BorderWidths.thin},behavior:{transitionSpeed:$.TransitionSpeeds.slow,animationEasing:$.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:"#0c0c0c",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:$.RadiusSizes.none,borderWidth:$.BorderWidths.thick},behavior:{transitionSpeed:$.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.35,fontFamilyHeadings:"'Merriweather', Georgia, serif",fontFamilyBody:"'Noto Sans', system-ui, -apple-system, sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.35},shape:{radiusSize:$.RadiusSizes.large,borderWidth:$.BorderWidths.medium},behavior:{transitionSpeed:$.TransitionSpeeds.normal,animationEasing:$.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"}},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:$.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:$.RadiusSizes.large,borderWidth:$.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:$.TransitionSpeeds.fast,animationEasing:$.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:$.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:$.RadiusSizes.medium,borderWidth:$.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:$.TransitionSpeeds.normal,animationEasing:$.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",info:"#0e7490",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#b1b1b1"}},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:$.RadiusSizes.small,borderWidth:$.BorderWidths.medium},behavior:{transitionSpeed:$.TransitionSpeeds.fast,animationEasing:$.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:$.TouchTargetSizes.comfortable,focusStyle:$.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,sectionSpacing:2.5},shape:{radiusSize:$.RadiusSizes.medium,borderWidth:$.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:$.TransitionSpeeds.fast,animationEasing:$.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:$.TouchTargetSizes.standard,focusStyle:$.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:$.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,sectionSpacing:1.5},shape:{radiusSize:$.RadiusSizes.medium,borderWidth:$.BorderWidths.thin},behavior:{transitionSpeed:$.TransitionSpeeds.fast,animationEasing:$.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:$.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:$.RadiusSizes.small,borderWidth:$.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:$.TransitionSpeeds.fast,animationEasing:$.AnimationEasings["ease-in-out"],focusRingWidth:2},layout:{densityCompact:.85,gridColumns:12}}};Q.default={id:"default",name:"Default",tags:["app","featured"],description:"Fresh and modern design system with balanced aesthetics and usability",options:{liquidGlassEffects:!1,backgroundMesh:0},form:{options:{widgets:{booleans:"toggle",numbers:"input",selects:"standard"},layouts:{fieldsets:"default",arrays:"default"},enhancements:{icons:!0,datalists:!0,rangeOutput:!0,colorInput:!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:$.FontWeights.light,fontWeightNormal:$.FontWeights.normal,fontWeightMedium:$.FontWeights.medium,fontWeightSemibold:$.FontWeights.semibold,fontWeightBold:$.FontWeights.bold,lineHeightTight:$.LineHeights.tight,lineHeightNormal:$.LineHeights.normal,lineHeightRelaxed:$.LineHeights.relaxed,letterSpacingTight:-.025,letterSpacingNormal:0,letterSpacingWide:.025},spatialRhythm:{baseUnit:4,scaleRatio:1.25,maxSpacingSteps:32,containerPadding:1,inputPadding:.75,buttonPadding:1,sectionSpacing:2},layers:{baseShadowOpacity:.1,darkMode:{baseShadowOpacity:.25},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:$.RadiusSizes.large,borderWidth:$.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:$.TransitionSpeeds.normal,animationEasing:$.AnimationEasings["ease-out"],customTransitionSpeed:null,customEasing:null,focusRingWidth:3,focusRingOpacity:.3,hoverOpacity:.8},layout:{gridColumns:12,gridGutter:1,baseShadowOpacity:.1,darkMode:{baseShadowOpacity:.25},breakpoints:{sm:640,md:768,lg:1024,xl:1280},densityCompact:.8,densityNormal:1,densityComfortable:1.2,buttonMinHeight:30,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:$.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:$.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:$.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:$.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:"/assets/pds/icons/pds-icons.svg"},debug:!1};var Tr=je(Q.default),Rr=be(Q.default);function Bt(t="log",e,...r){let n=globalThis?.PDS?.log;if(typeof n=="function"){n(t,e,...r);return}if(typeof console>"u")return;let o=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(r.length>0?o(e,...r):o(e))}_e();Dt();var X=class t{static#v;static get instance(){return this.#v}#e;#a;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),t.#v=this,this.tokens=this.generateTokens(),this.options.debug&&this.options.log?.("debug","Generated tokens:",this.tokens),this.#Se(),typeof CSSStyleSheet<"u"?this.#Ee():this.options.debug&&this.options.log?.("debug","[Generator] Skipping browser features (CSSStyleSheet not available)")}generateTokens(){let e=this.options.design||{},r=this.#A(e),n=e.layers||{},o=this.#w(n,r.light),a=this.#E(o),i=r.dark!=null?this.#E(this.#w(n,r.dark)):null;return{colors:this.#T(e.colors||{},r),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#O(e.shape||{}),borderWidths:this.#B(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:a,darkShadows:i,layout:this.#D(e.layout||{}),transitions:this.#H(e.behavior||{}),zIndex:this.#W(e.layers||{}),icons:this.#U(e.icons||{})}}#A(e={}){let r=e.layout||{},n=e.layers||{};return{light:this.#x(r.baseShadowOpacity??n.baseShadowOpacity),dark:this.#x(r.darkMode?.baseShadowOpacity??n.darkMode?.baseShadowOpacity)}}#x(e){let r=Number(e);if(Number.isFinite(r))return Math.min(Math.max(r,0),1)}#w(e={},r){let n={...e};return r!=null&&(n.baseShadowOpacity=r),n}#T(e,r={}){let{primary:n="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:d="#FFBF00",danger:l=null,info:u=null,darkMode:c={}}=e,p={primary:this.#i(n),secondary:this.#i(o),accent:this.#i(a),success:this.#i(s||this.#R(n)),warning:this.#i(d||a),danger:this.#i(l||this.#I(n)),info:this.#i(u||n),gray:this.#k(o),surface:this.#S(i)};return p.surface.fieldset=this.#_(p.surface),p.surfaceSmart=this.#C(p.surface,r),p.dark=this.#F(p,i,c),p.dark&&p.dark.surface&&(p.dark.surfaceSmart=this.#C(p.dark.surface,r)),p.interactive={light:this.#r(p.primary,p.surface.base),dark:this.#r(p.dark.primary,p.dark.surface.base)},p.accentInteractive={light:this.#r(p.accent,p.surface.base),dark:this.#r(p.dark.accent,p.dark.surface.base)},p.surfaceAccent={light:this.#n(p.accent,p.surface),dark:this.#n(p.dark.accent,p.dark.surface)},p.dangerInteractive={light:this.#r(p.danger,p.surface.base),dark:this.#r(p.dark.danger,p.dark.surface.base)},p.successInteractive={light:this.#r(p.success,p.surface.base),dark:this.#r(p.dark.success,p.dark.surface.base)},p.warningInteractive={light:this.#r(p.warning,p.surface.base),dark:this.#r(p.dark.warning,p.dark.surface.base)},p.infoInteractive={light:this.#r(p.info,p.surface.base),dark:this.#r(p.dark.info,p.dark.surface.base)},p.surfaceStatus={light:{success:this.#n(p.success,p.surface),warning:this.#n(p.warning,p.surface),info:this.#n(p.info,p.surface),danger:this.#n(p.danger,p.surface)},dark:{success:this.#n(p.dark.success,p.dark.surface),warning:this.#n(p.dark.warning,p.dark.surface),info:this.#n(p.dark.info,p.dark.surface),danger:this.#n(p.dark.danger,p.dark.surface)}},p}#i(e){let r=this.#s(e);return{50:this.#t(r.h,Math.max(r.s-10,10),Math.min(r.l+45,95)),100:this.#t(r.h,Math.max(r.s-5,15),Math.min(r.l+35,90)),200:this.#t(r.h,r.s,Math.min(r.l+25,85)),300:this.#t(r.h,r.s,Math.min(r.l+15,75)),400:this.#t(r.h,r.s,Math.min(r.l+5,65)),500:e,600:this.#t(r.h,r.s,Math.max(r.l-10,25)),700:this.#t(r.h,r.s,Math.max(r.l-20,20)),800:this.#t(r.h,r.s,Math.max(r.l-30,15)),900:this.#t(r.h,r.s,Math.max(r.l-40,10))}}#R(e){let r=this.#s(e);return this.#t(120,Math.max(r.s,60),45)}#I(e){let r=this.#s(e);return this.#t(0,Math.max(r.s,70),50)}#k(e){let r=this.#s(e),n=r.h,o=Math.min(r.s,10);return{50:this.#t(n,o,98),100:this.#t(n,o,95),200:this.#t(n,o,88),300:this.#t(n,o,78),400:this.#t(n,o,60),500:e,600:this.#t(n,Math.min(o+5,15),45),700:this.#t(n,Math.min(o+8,18),35),800:this.#t(n,Math.min(o+10,20),20),900:this.#t(n,Math.min(o+12,22),10)}}#S(e){let r=this.#s(e);return{base:e,subtle:this.#t(r.h,Math.max(r.s,2),Math.max(r.l-2,2)),elevated:this.#t(r.h,Math.max(r.s,3),Math.max(r.l-4,5)),sunken:this.#t(r.h,Math.max(r.s,4),Math.max(r.l-6,8)),overlay:this.#t(r.h,Math.max(r.s,2),Math.min(r.l+2,98)),inverse:this.#$(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#_(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#h(e.sunken,.05),overlay:e.elevated}}#h(e,r=.05){let n=this.#s(e),o=Math.max(n.l-n.l*r,5);return this.#t(n.h,n.s,o)}#$(e){let r=this.#s(e);if(r.l>50){let n=Math.min(r.s+5,25),o=Math.max(12-(r.l-50)*.1,8);return this.#t(r.h,n,o)}else{let n=Math.max(r.s-10,5),o=Math.min(85+(50-r.l)*.3,95);return this.#t(r.h,n,o)}}#F(e,r="#ffffff",n={}){let o=n.background?n.background:this.#$(r),a=this.#S(o),i=(s,d)=>s?this.#i(s):d;return{surface:{...a,fieldset:this.#N(a)},primary:i(n.primary,e.primary),secondary:i(n.secondary,e.secondary),accent:i(n.accent,e.accent),gray:n.secondary?this.#k(n.secondary):e.gray,success:i(n.success,e.success),info:i(n.info,e.info),warning:i(n.warning,e.warning),danger:i(n.danger,e.danger)}}#u(e){let r=String(e||"").replace("#",""),n=r.length===3?r.split("").map(a=>a+a).join(""):r,o=parseInt(n,16);return{r:o>>16&255,g:o>>8&255,b:o&255}}#p(e){let{r,g:n,b:o}=this.#u(e),a=[r/255,n/255,o/255].map(i=>i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4));return .2126*a[0]+.7152*a[1]+.0722*a[2]}#f(e,r){let n=this.#p(e),o=this.#p(r),a=Math.max(n,o),i=Math.min(n,o);return(a+.05)/(i+.05)}#g(e,r=4.5){if(!e)return"#000000";let n="#ffffff",o="#000000",a=this.#f(e,n);if(a>=r)return n;let i=this.#f(e,o);return i>=r||i>a?o:n}#L(e,r=1){let{r:n,g:o,b:a}=this.#u(e);return`rgba(${n}, ${o}, ${a}, ${r})`}#z(e,r,n=.5){let o=this.#u(e),a=this.#u(r),i=Math.round(o.r+(a.r-o.r)*n),s=Math.round(o.g+(a.g-o.g)*n),d=Math.round(o.b+(a.b-o.b)*n);return this.#P(i,s,d)}#P(e,r,n){let o=a=>{let i=Math.max(0,Math.min(255,Math.round(a))).toString(16);return i.length===1?"0"+i:i};return`#${o(e)}${o(r)}${o(n)}`}#N(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#m(e.elevated,.08),sunken:e.elevated,overlay:this.#m(e.overlay,.05)}}#c(e={},r="#000000",n=4.5){let o=["600","700","800","500","400","900","300","200"],a={shade:null,color:null,ratio:0};for(let i of o){let s=e?.[i];if(!s||typeof s!="string")continue;let d=this.#f(s,r);if(d>a.ratio&&(a={shade:i,color:s,ratio:d}),d>=n)return s}return a.color||e?.["600"]||e?.["500"]}#r(e={},r="#ffffff"){let n=this.#p(r)<.18,o=this.#j(e,4.5),a=n?this.#m(o,.15):this.#h(o,.1),i=n?this.#m(o,.07):this.#h(o,.2),s=this.#c(e,r,4.5),d=this.#c(e,r,5.5),l=this.#c(e,r,3);return{fill:o,fillHover:a,fillActive:i,text:s,textHover:d||s,textVisited:this.#z(s||o,r,.2),focusRing:l||s||o,selectionBg:s||o,selectionText:this.#g(s||o,4.5),contrast:this.#g(o,4.5)}}#n(e={},r={}){let n={};return Object.entries(r).forEach(([o,a])=>{if(!a||typeof a!="string"||!a.startsWith("#"))return;let i=this.#c(e,a,4.5),s=this.#c(e,a,5);n[o]={text:i,textHover:s||i}}),n}#j(e={},r=4.5){let n=["600","700","800","500","400","900"],o={shade:null,color:null,ratio:0};for(let a of n){let i=e?.[a];if(!i||typeof i!="string")continue;let s=this.#f(i,"#ffffff");if(s>o.ratio&&(o={shade:a,color:i,ratio:s}),s>=r)return i}return o.color||e?.["600"]||e?.["500"]}#C(e,r={}){let n={},o=r.light??.1,a=r.dark??.25;return Object.entries(e).forEach(([i,s])=>{if(!s||typeof s!="string"||!s.startsWith("#"))return;let d=this.#p(s)<.5,l=this.#g(s,4.5),u=this.#g(s,3),c=this.#z(l,s,.4),p=l,b=c,h=d?"#ffffff":"#000000",S=d?a:o,g=this.#L(h,S),f=d?"#ffffff":"#000000",y=d?.15:.1,v=this.#L(f,y);n[i]={bg:s,text:l,textSecondary:u,textMuted:c,icon:p,iconSubtle:b,shadow:g,border:v,scheme:d?"dark":"light"}}),n}#m(e,r=.05){let n=this.#s(e),o=Math.min(n.l+(100-n.l)*r,95);return this.#t(n.h,n.s,o)}generateSpacingTokens(e){let{baseUnit:r=4,scaleRatio:n=1.25,maxSpacingSteps:o=12}=e,a=Number.isFinite(Number(r))?Number(r):4,i=Math.min(Number.isFinite(Number(o))?Number(o):12,12),s={0:"0"};for(let d=1;d<=i;d++)s[d]=`${a*d}px`;return s}#O(e){let{radiusSize:r="medium",customRadius:n=null}=e,o;n!=null?o=n:typeof r=="number"?o=r:typeof r=="string"?o=$.RadiusSizes[r]??$.RadiusSizes.medium:o=$.RadiusSizes.medium;let a=Number.isFinite(Number(o))?Number(o):$.RadiusSizes.medium;return{none:"0",xs:`${Number.isFinite(a*.25)?Math.round(a*.25):0}px`,sm:`${Number.isFinite(a*.5)?Math.round(a*.5):0}px`,md:`${a}px`,lg:`${Number.isFinite(a*1.5)?Math.round(a*1.5):0}px`,xl:`${Number.isFinite(a*2)?Math.round(a*2):0}px`,full:"9999px"}}#B(e){let{borderWidth:r="medium"}=e,n;typeof r=="number"?n=r:typeof r=="string"?n=$.BorderWidths[r]??$.BorderWidths.medium:n=$.BorderWidths.medium;let o=Number.isFinite(Number(n))?Number(n):$.BorderWidths.medium,a=i=>`${Math.max(1,Math.ceil(i))}px`;return{hairline:a(o*.25),thin:a(o*.5),medium:a(o),thick:a(o*1.5)}}generateTypographyTokens(e){let{fontFamilyHeadings:r="system-ui, -apple-system, sans-serif",fontFamilyBody:n="system-ui, -apple-system, sans-serif",fontFamilyMono:o='ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',baseFontSize:a=16,fontScale:i=1.25,fontWeightLight:s=$.FontWeights.light,fontWeightNormal:d=$.FontWeights.normal,fontWeightMedium:l=$.FontWeights.medium,fontWeightSemibold:u=$.FontWeights.semibold,fontWeightBold:c=$.FontWeights.bold,lineHeightTight:p=$.LineHeights.tight,lineHeightNormal:b=$.LineHeights.normal,lineHeightRelaxed:h=$.LineHeights.relaxed}=e,S=Number.isFinite(Number(a))?Number(a):16,g=Number.isFinite(Number(i))?Number(i):1.25;return{fontFamily:{headings:r,body:n,mono:o},fontSize:{xs:`${Math.round(S/Math.pow(g,2))}px`,sm:`${Math.round(S/g)}px`,base:`${S}px`,lg:`${Math.round(S*g)}px`,xl:`${Math.round(S*Math.pow(g,2))}px`,"2xl":`${Math.round(S*Math.pow(g,3))}px`,"3xl":`${Math.round(S*Math.pow(g,4))}px`,"4xl":`${Math.round(S*Math.pow(g,5))}px`},fontWeight:{light:s?.toString()||"300",normal:d?.toString()||"400",medium:l?.toString()||"500",semibold:u?.toString()||"600",bold:c?.toString()||"700"},lineHeight:{tight:p?.toString()||"1.25",normal:b?.toString()||"1.5",relaxed:h?.toString()||"1.75"}}}#E(e){let{baseShadowOpacity:r=.1,shadowBlurMultiplier:n=1,shadowOffsetMultiplier:o=1}=e,a=`rgba(0, 0, 0, ${r})`,i=`rgba(0, 0, 0, ${r*.5})`;return{sm:`0 ${1*o}px ${2*n}px 0 ${i}`,base:`0 ${1*o}px ${3*n}px 0 ${a}, 0 ${1*o}px ${2*n}px 0 ${i}`,md:`0 ${4*o}px ${6*n}px ${-1*o}px ${a}, 0 ${2*o}px ${4*n}px ${-1*o}px ${i}`,lg:`0 ${10*o}px ${15*n}px ${-3*o}px ${a}, 0 ${4*o}px ${6*n}px ${-2*o}px ${i}`,xl:`0 ${20*o}px ${25*n}px ${-5*o}px ${a}, 0 ${10*o}px ${10*n}px ${-5*o}px ${i}`,inner:`inset 0 ${2*o}px ${4*n}px 0 ${i}`}}#D(e){let{containerPadding:r=16,breakpoints:n={sm:640,md:768,lg:1024,xl:1280}}=e,o=this.#b(e,"maxWidth"),a=e.maxWidth,i=this.#M(e,{emitFallbacks:!1});return{maxWidth:o?this.#o(a,"1200px"):void 0,maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#o(r,"16px"),breakpoints:{sm:this.#o(n.sm,"640px"),md:this.#o(n.md,"768px"),lg:this.#o(n.lg,"1024px"),xl:this.#o(n.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#M(e={},r={}){let{emitFallbacks:n=!0}=r,o={sm:640,md:768,lg:1024,xl:1280},{maxWidths:a={},containerPadding:i=16,breakpoints:s=o}=e||{},d=this.#b(e,"maxWidth"),l=["sm","md","lg","xl"].some(g=>this.#b(a,g));if(!n&&!d&&!l)return{sm:void 0,md:void 0,lg:void 0,xl:void 0};let u=e?.maxWidth,c=this.#l(i,16),p=this.#l(u,o.xl),b={sm:this.#l(s.sm,o.sm),md:this.#l(s.md,o.md),lg:this.#l(s.lg,o.lg),xl:this.#l(s.xl,o.xl)},h=g=>g?Math.max(320,g-c*2):p,S={sm:Math.min(p,h(b.sm)),md:Math.min(p,h(b.md)),lg:Math.min(p,h(b.lg)),xl:Math.max(320,p)};return{sm:this.#o(a.sm,`${S.sm}px`),md:this.#o(a.md,`${S.md}px`),lg:this.#o(a.lg,`${S.lg}px`),xl:this.#o(a.xl,`${S.xl}px`)}}#b(e,r){if(!e||typeof e!="object"||!Object.prototype.hasOwnProperty.call(e,r))return!1;let n=e[r];return!(n==null||typeof n=="string"&&n.trim().length===0)}#o(e,r){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:r}#l(e,r){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=parseFloat(e);if(Number.isFinite(n))return n}return r}#H(e){let{transitionSpeed:r=$.TransitionSpeeds.normal,animationEasing:n=$.AnimationEasings["ease-out"]}=e,o;return typeof r=="number"?o=r:typeof r=="string"&&$.TransitionSpeeds[r]?o=$.TransitionSpeeds[r]:o=$.TransitionSpeeds.normal,{fast:`${Math.round(o*.6)}ms`,normal:`${o}ms`,slow:`${Math.round(o*1.4)}ms`}}#W(e){let{baseZIndex:r=1e3,zIndexStep:n=10}=e;return{dropdown:r.toString(),sticky:(r+n*2).toString(),fixed:(r+n*3).toString(),modal:(r+n*4).toString(),drawer:(r+n*5).toString(),popover:(r+n*6).toString(),tooltip:(r+n*7).toString(),notification:(r+n*8).toString()}}#U(e){let{set:r="phosphor",weight:n="regular",defaultSize:o=24,sizes:a={xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64},spritePath:i="/assets/pds/icons/pds-icons.svg",externalPath:s="/assets/img/icons/"}=e;return{set:r,weight:n,defaultSize:`${o}px`,sizes:Object.fromEntries(Object.entries(a).map(([d,l])=>[d,`${l}px`])),spritePath:i,externalPath:s}}#q(e){let r=[];r.push(` /* Colors */
|
|
1
|
+
var to=Object.defineProperty;var Qe=(t,e)=>()=>(t&&(e=t(t=0)),e);var et=(t,e)=>{for(var r in e)to(t,r,{get:e[r],enumerable:!0})};var $r={};et($r,{enums:()=>S});var S,_e=Qe(()=>{S={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 Nr={};et(Nr,{default:()=>go,findComponentForElement:()=>lo,getAllSelectors:()=>co,getAllTags:()=>fo,getByCategory:()=>po,ontology:()=>G,searchOntology:()=>uo});function ue(t,e){if(!t||!e)return!1;try{return t.matches(e)}catch{return!1}}function Pr(t,e){if(!t||!e||!t.closest)return null;try{return t.closest(e)}catch{return null}}function lo(t,{maxDepth:e=5}={}){if(!t||t.closest&&t.closest(".showcase-toc"))return null;let r=t,n=0;for(;r&&n<e;){if(n++,r.tagName==="DS-SHOWCASE")return null;if(r.classList&&r.classList.contains("showcase-section")){r=r.parentElement;continue}for(let a of PDS.ontology.enhancements){let i=a.selector||a;if(ue(r,i))return{element:r,componentType:"enhanced-component",displayName:a.description||i,id:a.id}}if(r.tagName==="FIELDSET"){let a=r.getAttribute("role");if(a==="group"||a==="radiogroup")return{element:r,componentType:"form-group",displayName:a==="radiogroup"?"radio group":"form group"}}if(r.tagName==="LABEL"&&r.querySelector&&r.querySelector("input,select,textarea"))return{element:r,componentType:"form-control",displayName:"label with input"};let o=r.closest?r.closest("label"):null;if(o&&o.querySelector&&o.querySelector("input,select,textarea"))return{element:o,componentType:"form-control",displayName:"label with input"};for(let a of PDS.ontology.primitives){for(let i of a.selectors||[]){let s=String(i||"").trim();if(s.includes("*")){if(s.startsWith(".")){let l=s.slice(1).replace(/\*/g,"");if(r.classList&&Array.from(r.classList).some(p=>p.startsWith(l)))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let u=r.parentElement,c=0;for(;u&&c<e;){if(u.classList&&Array.from(u.classList).some(p=>p.startsWith(l))&&u.tagName!=="DS-SHOWCASE")return{element:u,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};u=u.parentElement,c++}continue}continue}if(ue(r,s))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let d=Pr(r,s);if(d&&d.tagName!=="DS-SHOWCASE")return{element:d,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(r.classList){let i=Array.from(r.classList);for(let s of a.selectors||[])if(typeof s=="string"&&s.includes("*")&&s.startsWith(".")){let d=s.slice(1).replace(/\*/g,"");if(i.some(l=>l.startsWith(d)))return{element:r,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}}}for(let a of PDS.ontology.layoutPatterns||[])for(let i of a.selectors||[]){let s=String(i||"").trim();if(s.includes("*")){if(s.startsWith(".")){let l=s.slice(1).replace(/\*/g,"");if(r.classList&&Array.from(r.classList).some(u=>u.startsWith(l)))return{element:r,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}continue}if(ue(r,s))return{element:r,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags};let d=Pr(r,s);if(d&&d.tagName!=="DS-SHOWCASE")return{element:d,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(r.tagName&&r.tagName.includes("-")){let a=r.tagName.toLowerCase(),i=PDS.ontology.components.find(s=>s.selectors.includes(a));return{element:r,componentType:"web-component",displayName:i?.name||a,id:i?.id||a,tags:i?.tags}}if(r.tagName==="BUTTON"){let a=r.querySelector&&r.querySelector("pds-icon");return{element:r,componentType:"button",displayName:a?"button with icon":"button",id:"button"}}if(ue(r,"pds-icon")||r.closest&&r.closest("pds-icon")){let a=ue(r,"pds-icon")?r:r.closest("pds-icon");return{element:a,componentType:"icon",displayName:`pds-icon (${a.getAttribute&&a.getAttribute("icon")||"unknown"})`,id:"pds-icon"}}if(ue(r,"nav[data-dropdown]")||r.closest&&r.closest("nav[data-dropdown]"))return{element:ue(r,"nav[data-dropdown]")?r:r.closest("nav[data-dropdown]"),componentType:"navigation",displayName:"dropdown menu",id:"dropdown"};r=r.parentElement}return null}function co(){let t=[];for(let e of PDS.ontology.primitives)t.push(...e.selectors||[]);for(let e of PDS.ontology.components)t.push(...e.selectors||[]);for(let e of PDS.ontology.layoutPatterns||[])t.push(...e.selectors||[]);return Array.from(new Set(t))}function uo(t,e={}){let r=t.toLowerCase(),n=[],o=(a,i)=>{for(let s of a)(s.id?.toLowerCase().includes(r)||s.name?.toLowerCase().includes(r)||s.description?.toLowerCase().includes(r)||s.tags?.some(l=>l.toLowerCase().includes(r))||s.category?.toLowerCase().includes(r)||s.selectors?.some(l=>l.toLowerCase().includes(r)))&&n.push({...s,type:i})};return(!e.type||e.type==="primitive")&&o(G.primitives,"primitive"),(!e.type||e.type==="component")&&o(G.components,"component"),(!e.type||e.type==="layout")&&o(G.layoutPatterns,"layout"),(!e.type||e.type==="enhancement")&&o(G.enhancements,"enhancement"),n}function po(t){let e=t.toLowerCase();return{primitives:G.primitives.filter(r=>r.category===e),components:G.components.filter(r=>r.category===e),layouts:G.layoutPatterns.filter(r=>r.category===e)}}function fo(){let t=new Set;return G.primitives.forEach(e=>e.tags?.forEach(r=>t.add(r))),G.components.forEach(e=>e.tags?.forEach(r=>t.add(r))),G.layoutPatterns.forEach(e=>e.tags?.forEach(r=>t.add(r))),G.enhancements.forEach(e=>e.tags?.forEach(r=>t.add(r))),Array.from(t).sort()}var G,go,Wt=Qe(()=>{G={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-danger",".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-live-edit",name:"Live Edit",description:"Contextual live editing for PDS design settings",selectors:["pds-live-edit"],tags:["editor","live","config","tooling"],category:"tooling"},{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. Use data-dropdown-close on clickable descendants to dismiss on selection.",tags:["menu","interactive","navigation","dismiss","close"]},{id:"dropdown-close",selector:"[data-dropdown-close]",description:"Declarative close marker for nav[data-dropdown] panels; clicking marked targets closes the open dropdown.",tags:["dropdown","menu","dismiss","close","attribute"]},{id:"toggle",selector:"label[data-toggle]",description:"Toggle switch from checkbox",tags:["switch","boolean","form"]},{id:"color-input",selector:"label[data-color]",description:"Enhanced color input with swatch shell and hex output",tags:["color","input","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-danger","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"]}};go=G});var rn={};et(rn,{AutoDefiner:()=>Qt});async function ia(...t){let e={};t.length&&typeof t[t.length-1]=="object"&&(e=t.pop()||{});let r=t,{baseURL:n,mapper:o=l=>`${l}.js`,onError:a=(l,u)=>console.error(`[defineWebComponents] ${l}:`,u)}=e,i=n?new URL(n,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),s=l=>l.toLowerCase().replace(/(^|-)([a-z])/g,(u,c,p)=>p.toUpperCase()),d=async l=>{try{if(customElements.get(l))return{tag:l,status:"already-defined"};let u=o(l),p=await import(u instanceof URL?u.href:new URL(u,i).href),h=p?.default??p?.[s(l)];if(!h){if(customElements.get(l))return{tag:l,status:"self-defined"};throw new Error(`No export found for ${l}. Expected default export or named export "${s(l)}".`)}return customElements.get(l)?{tag:l,status:"race-already-defined"}:(customElements.define(l,h),{tag:l,status:"defined"})}catch(u){throw a(l,u),u}};return Promise.all(r.map(d))}var Qt,nn=Qe(()=>{Qt=class{constructor(e={}){let{baseURL:r,mapper:n,onError:o,predicate:a=()=>!0,attributeModule:i="data-module",root:s=document,scanExisting:d=!0,debounceMs:l=16,observeShadows:u=!0,enhancers:c=[],patchAttachShadow:p=!0}=e,h=new Set,b=new Set,$=new Set,g=new Map,f=new WeakMap,y=new WeakMap,v=0,m=!1,w=null,A=z=>{if(!z||!c.length)return;let k=y.get(z);k||(k=new Set,y.set(z,k));for(let C of c)if(!(!C.selector||!C.run)&&!k.has(C.selector))try{z.matches&&z.matches(C.selector)&&(C.run(z),k.add(C.selector))}catch(N){console.warn(`[AutoDefiner] Error applying enhancer for selector "${C.selector}":`,N)}},E=(z,k)=>{if(!m&&!(!z||!z.includes("-"))&&!customElements.get(z)&&!b.has(z)&&!$.has(z)){if(k&&k.getAttribute){let C=k.getAttribute(i);C&&!g.has(z)&&g.set(z,C)}h.add(z),M()}},M=()=>{v||(v=setTimeout(O,l))},R=z=>{if(z){if(z.nodeType===1){let k=z,C=k.tagName?.toLowerCase();C&&C.includes("-")&&!customElements.get(C)&&a(C,k)&&E(C,k),A(k),u&&k.shadowRoot&&I(k.shadowRoot)}z.querySelectorAll&&z.querySelectorAll("*").forEach(k=>{let C=k.tagName?.toLowerCase();C&&C.includes("-")&&!customElements.get(C)&&a(C,k)&&E(C,k),A(k),u&&k.shadowRoot&&I(k.shadowRoot)})}},I=z=>{if(!z||f.has(z))return;R(z);let k=new MutationObserver(C=>{for(let N of C)N.addedNodes?.forEach(j=>{R(j)}),N.type==="attributes"&&N.target&&R(N.target)});k.observe(z,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...c.map(C=>C.selector).filter(C=>C.startsWith("data-"))]}),f.set(z,k)};async function O(){if(clearTimeout(v),v=0,!h.size)return;let z=Array.from(h);h.clear(),z.forEach(k=>b.add(k));try{let k=C=>g.get(C)??(n?n(C):`${C}.js`);await ia(...z,{baseURL:r,mapper:k,onError:(C,N)=>{$.add(C),o?.(C,N)}})}catch{}finally{z.forEach(k=>b.delete(k))}}let T=s===document?document.documentElement:s,L=new MutationObserver(z=>{for(let k of z)k.addedNodes?.forEach(C=>{R(C)}),k.type==="attributes"&&k.target&&R(k.target)});if(L.observe(T,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...c.map(z=>z.selector).filter(z=>z.startsWith("data-"))]}),u&&p&&Element.prototype.attachShadow){let z=Element.prototype.attachShadow;Element.prototype.attachShadow=function(C){let N=z.call(this,C);if(C&&C.mode==="open"){I(N);let j=this.tagName?.toLowerCase();j&&j.includes("-")&&!customElements.get(j)&&E(j,this)}return N},w=()=>Element.prototype.attachShadow=z}return d&&R(T),{stop(){m=!0,L.disconnect(),w&&w(),v&&(clearTimeout(v),v=0),f.forEach(z=>z.disconnect())},flush:O}}static async define(...e){let r={};e.length&&typeof e[e.length-1]=="object"&&(r=e.pop()||{});let n=e,{baseURL:o,mapper:a=u=>`${u}.js`,onError:i=(u,c)=>console.error(`[defineWebComponents] ${u}:`,c)}=r,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),d=u=>u.toLowerCase().replace(/(^|-)([a-z])/g,(c,p,h)=>h.toUpperCase()),l=async u=>{try{if(customElements.get(u))return{tag:u,status:"already-defined"};let c=a(u),h=await import(c instanceof URL?c.href:new URL(c,s).href),b=h?.default??h?.[d(u)];if(!b){if(customElements.get(u))return{tag:u,status:"self-defined"};throw new Error(`No export found for ${u}. Expected default export or named export "${d(u)}".`)}return customElements.get(u)?{tag:u,status:"race-already-defined"}:(customElements.define(u,b),{tag:u,status:"defined"})}catch(c){throw i(u,c),c}};return Promise.all(n.map(l))}}});var pt={};et(pt,{deepMerge:()=>sn,enQueue:()=>da,escapeForRegExp:()=>fa,fragmentFromTemplateLike:()=>sr,humanizeIdentifier:()=>ma,isObject:()=>dt,isUrl:()=>ua,openCenteredWindow:()=>ga,parseFragment:()=>ut,parseHTML:()=>lr,throttle:()=>ca,withTimeout:()=>pa});function dt(t){return t&&typeof t=="object"&&!Array.isArray(t)}function sn(t,e){let r={...t};return dt(t)&&dt(e)&&Object.keys(e).forEach(n=>{dt(e[n])?n in t?r[n]=sn(t[n],e[n]):Object.assign(r,{[n]:e[n]}):Object.assign(r,{[n]:e[n]})}),r}function sr(t){let e=Array.isArray(t?.strings)?t.strings:[],r=Array.isArray(t?.values)?t.values:[],n=new Set,o=[],a=/(\s)(\.[\w-]+)=["']?\s*$/,i=/(\s)(@[\w-]+)=["']?\s*$/,s=/(\s)(\?[\w-]+)=["']?\s*$/,d=/(\s)([\w:-]+)=["']?\s*$/,l=/=["']\s*$/,u=!1;for(let g=0;g<e.length;g+=1){let f=e[g]??"";if(u&&(f=f.replace(/^["']/,""),u=!1),g<r.length){let y=`pds-val-${g}`,v=f.match(a),m=f.match(i),w=f.match(s),A=f.match(d);if(v){let E=v[2].slice(1);u=l.test(e[g]??""),f=f.replace(a,`$1data-pds-bind-${g}="prop:${E}:${y}"`),n.add(g)}else if(m){let E=m[2].slice(1);u=l.test(e[g]??""),f=f.replace(i,`$1data-pds-bind-${g}="event:${E}:${y}"`),n.add(g)}else if(w){let E=w[2].slice(1);u=l.test(e[g]??""),f=f.replace(s,`$1data-pds-bind-${g}="boolean:${E}:${y}"`),n.add(g)}else if(A){let E=A[2];u=l.test(e[g]??""),f=f.replace(d,`$1data-pds-bind-${g}="attr:${E}:${y}"`),n.add(g)}}o.push(f),g<r.length&&!n.has(g)&&o.push(`<!--pds-val-${g}-->`)}let c=document.createElement("template");c.innerHTML=o.join("");let p=(g,f)=>{let y=g.parentNode;if(!y)return;if(f==null){y.removeChild(g);return}let v=m=>{if(m!=null){if(m instanceof Node){y.insertBefore(m,g);return}if(Array.isArray(m)){m.forEach(w=>v(w));return}y.insertBefore(document.createTextNode(String(m)),g)}};v(f),y.removeChild(g)},h=document.createTreeWalker(c.content,NodeFilter.SHOW_COMMENT),b=[];for(;h.nextNode();){let g=h.currentNode;g?.nodeValue?.startsWith("pds-val-")&&b.push(g)}return b.forEach(g=>{let f=Number(g.nodeValue.replace("pds-val-",""));p(g,r[f])}),c.content.querySelectorAll("*").forEach(g=>{[...g.attributes].forEach(f=>{if(!f.name.startsWith("data-pds-bind-"))return;let y=f.value.indexOf(":"),v=f.value.lastIndexOf(":");if(y<=0||v<=y){g.removeAttribute(f.name);return}let m=f.value.slice(0,y),w=f.value.slice(y+1,v),A=f.value.slice(v+1),E=Number(String(A).replace("pds-val-","")),M=r[E];if(!w||!Number.isInteger(E)){g.removeAttribute(f.name);return}m==="prop"?g[w]=M:m==="event"?(typeof M=="function"||M&&typeof M.handleEvent=="function")&&g.addEventListener(w,M):m==="boolean"?M?g.setAttribute(w,""):g.removeAttribute(w):m==="attr"&&(M==null||M===!1?g.removeAttribute(w):g.setAttribute(w,String(M))),g.removeAttribute(f.name)})}),c.content}function ut(t,...e){if(Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"raw"))return sr({strings:Array.from(t),values:e});if(Array.isArray(t?.strings)&&Array.isArray(t?.values))return sr({strings:t.strings,values:t.values});let n=document.createElement("template");return n.innerHTML=String(t??""),n.content}function lr(t,...e){return ut(t,...e).childNodes}function ca(t,e=100){let r;return function(...o){let a=()=>{clearTimeout(r),t(...o)};clearTimeout(r),r=setTimeout(a,e)}}function da(t){setTimeout(t,0)}function ua(t){try{if(typeof t!="string"||t.indexOf(`
|
|
2
|
+
`)!==-1||t.indexOf(" ")!==-1||t.startsWith("#/"))return!1;let e=new URL(t,window.location.origin);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}function pa(t,e,r="Operation"){return!e||e<=0?t:new Promise((n,o)=>{let a=setTimeout(()=>{o(new Error(`${r} timed out after ${e}ms`))},e);Promise.resolve(t).then(i=>{clearTimeout(a),n(i)}).catch(i=>{clearTimeout(a),o(i)})})}function fa(t){return String(t).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ga(t,e,r){let n=window.screen.width/2-e/2,o=window.screen.height/2-r/2;return window.open(t,"",`toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=${e}, height=${r}, top=${o}, left=${n}`)}function ma(t){if(t==null)return"";let e=String(t).trim();return e?e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim():""}var cr=Qe(()=>{});_e();var ne="any",Ne={type:"object",allowUnknown:!1,properties:{id:{type:"string",minLength:1,maxLength:64},name:{type:"string",minLength:1,maxLength:80},tags:{type:"array",uniqueItems:!0,items:{type:"string"}},themes:{type:"array",uniqueItems:!0,items:{type:"string",oneOf:[{const:"light",title:"Light"},{const:"dark",title:"Dark"},{const:"system",title:"System"}]}},description:{type:"string",maxLength:500},options:{type:"object",allowUnknown:!0,properties:{liquidGlassEffects:{type:"boolean"},backgroundMesh:{type:"number"}}},form:{type:"object",allowUnknown:!0,properties:{options:{type:"object",allowUnknown:!0,properties:{widgets:{type:"object",allowUnknown:!1,properties:{booleans:{type:"string"},numbers:{type:"string"},selects:{type:"string"}}},layouts:{type:"object",allowUnknown:!1,properties:{fieldsets:{type:"string"},arrays:{type:"string"}}},enhancements:{type:"object",allowUnknown:!1,properties:{icons:{type:"boolean"},datalists:{type:"boolean"},rangeOutput:{type:"boolean"},colorInput:{type:"boolean"}}},validation:{type:"object",allowUnknown:!1,properties:{showErrors:{type:"boolean"},validateOnChange:{type:"boolean"}}}}}}},colors:{type:"object",allowUnknown:!1,properties:{primary:{type:"string",relations:{tokens:["--color-primary-*","--color-primary-fill","--color-primary-text","--background-mesh-*"]}},secondary:{type:"string",relations:{tokens:["--color-secondary-*","--color-gray-*","--background-mesh-*"]}},accent:{type:"string",relations:{tokens:["--color-accent-*","--background-mesh-*"]}},background:{type:"string",relations:{tokens:["--color-surface-*","--color-surface-translucent-*","--surface-*-bg","--surface-*-text","--surface-*-text-secondary","--surface-*-text-muted","--surface-*-icon","--surface-*-icon-subtle","--surface-*-shadow","--surface-*-border"]}},success:{type:["string","null"],relations:{tokens:["--color-success-*","--color-success-fill","--color-success-fill-hover","--color-success-fill-active","--color-success-text","--color-success-text-hover","--color-success-contrast","--color-success-display-*","--surface-*-success-text","--surface-*-success-text-hover"]}},warning:{type:["string","null"],relations:{tokens:["--color-warning-*","--color-warning-fill","--color-warning-fill-hover","--color-warning-fill-active","--color-warning-text","--color-warning-text-hover","--color-warning-contrast","--color-warning-display-*","--surface-*-warning-text","--surface-*-warning-text-hover"]}},danger:{type:["string","null"],relations:{tokens:["--color-danger-*","--color-danger-fill","--color-danger-fill-hover","--color-danger-fill-active","--color-danger-text","--color-danger-text-hover","--color-danger-contrast","--color-danger-display-*","--surface-*-danger-text","--surface-*-danger-text-hover"]}},info:{type:["string","null"],relations:{tokens:["--color-info-*","--color-info-fill","--color-info-fill-hover","--color-info-fill-active","--color-info-text","--color-info-text-hover","--color-info-contrast","--color-info-display-*","--surface-*-info-text","--surface-*-info-text-hover"]}},gradientStops:{type:"number"},elevationOpacity:{type:"number",relations:{tokens:["--surface-*-shadow"]}},darkMode:{type:"object",allowUnknown:!1,properties:{background:{type:"string",relations:{theme:"dark",tokens:["--color-surface-*","--color-surface-translucent-*","--surface-*-bg","--surface-*-text","--surface-*-text-secondary","--surface-*-text-muted","--surface-*-icon","--surface-*-icon-subtle","--surface-*-shadow","--surface-*-border"]}},primary:{type:"string",relations:{theme:"dark",tokens:["--color-primary-*","--color-primary-fill","--color-primary-text"]}},secondary:{type:"string",relations:{theme:"dark",tokens:["--color-secondary-*","--color-gray-*"]}},accent:{type:"string",relations:{theme:"dark",tokens:["--color-accent-*"]}}}}}},typography:{type:"object",allowUnknown:!1,properties:{fontFamilyHeadings:{type:"string",relations:{tokens:["--font-family-headings"]}},fontFamilyBody:{type:"string",relations:{tokens:["--font-family-body"]}},fontFamilyMono:{type:"string",relations:{tokens:["--font-family-mono"]}},baseFontSize:{type:"number",relations:{tokens:["--font-size-*"]}},fontScale:{type:"number",relations:{tokens:["--font-size-*"]}},fontWeightLight:{type:["string","number"],relations:{tokens:["--font-weight-light"]}},fontWeightNormal:{type:["string","number"],relations:{tokens:["--font-weight-normal"]}},fontWeightMedium:{type:["string","number"],relations:{tokens:["--font-weight-medium"]}},fontWeightSemibold:{type:["string","number"],relations:{tokens:["--font-weight-semibold"]}},fontWeightBold:{type:["string","number"],relations:{tokens:["--font-weight-bold"]}},lineHeightTight:{type:["string","number"],relations:{tokens:["--font-line-height-tight"]}},lineHeightNormal:{type:["string","number"],relations:{tokens:["--font-line-height-normal"]}},lineHeightRelaxed:{type:["string","number"],relations:{tokens:["--font-line-height-relaxed"]}},letterSpacingTight:{type:"number"},letterSpacingNormal:{type:"number"},letterSpacingWide:{type:"number"}}},spatialRhythm:{type:"object",allowUnknown:!1,properties:{baseUnit:{type:"number",relations:{tokens:["--spacing-*"]}},scaleRatio:{type:"number"},maxSpacingSteps:{type:"number",relations:{tokens:["--spacing-*"]}},containerPadding:{type:"number"},inputPadding:{type:"number",relations:{rules:[{selectors:["input","textarea","select"],properties:["padding"]}]}},buttonPadding:{type:"number",relations:{rules:[{selectors:["button",".btn"],properties:["padding"]}]}},sectionSpacing:{type:"number",relations:{rules:[{selectors:["section"],properties:["margin","padding"]}]}}}},shape:{type:"object",allowUnknown:!1,properties:{radiusSize:{type:["string","number"],relations:{tokens:["--radius-*"]}},customRadius:{type:["string","number","null"]},borderWidth:{type:["string","number"],relations:{tokens:["--border-width-*"]}}}},behavior:{type:"object",allowUnknown:!1,properties:{transitionSpeed:{type:["string","number"],relations:{tokens:["--transition-*"]}},animationEasing:{type:"string"},customTransitionSpeed:{type:["number","null"]},customEasing:{type:["string","null"]},focusRingWidth:{type:"number",relations:{rules:[{selectors:[":focus-visible"],properties:["outline-width","box-shadow"]}]}},focusRingOpacity:{type:"number",relations:{rules:[{selectors:[":focus-visible"],properties:["box-shadow","outline-color"]}]}},hoverOpacity:{type:"number"}}},layout:{type:"object",allowUnknown:!1,properties:{maxWidth:{type:["number","string"],relations:{tokens:["--layout-max-width","--layout-max-width-*"]}},maxWidths:{type:"object",allowUnknown:!1,properties:{sm:{type:["number","string"],relations:{tokens:["--layout-max-width-sm"]}},md:{type:["number","string"],relations:{tokens:["--layout-max-width-md"]}},lg:{type:["number","string"],relations:{tokens:["--layout-max-width-lg"]}},xl:{type:["number","string"],relations:{tokens:["--layout-max-width-xl"]}}}},containerPadding:{type:["number","string"],relations:{tokens:["--layout-container-padding"]}},breakpoints:{type:"object",allowUnknown:!1,properties:{sm:{type:"number"},md:{type:"number"},lg:{type:"number"},xl:{type:"number"}}},gridColumns:{type:"number"},gridGutter:{type:"number"},densityCompact:{type:"number"},densityNormal:{type:"number"},densityComfortable:{type:"number"},buttonMinHeight:{type:"number"},inputMinHeight:{type:"number"},baseShadowOpacity:{type:"number",relations:{tokens:["--shadow-*"]}},darkMode:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{theme:"dark",tokens:["--shadow-*"]}}}},utilities:{type:"object",allowUnknown:!0,properties:{grid:{type:"boolean"},flex:{type:"boolean"},spacing:{type:"boolean"},container:{type:"boolean"}}},gridSystem:{type:"object",allowUnknown:!0,properties:{columns:{type:"array",items:{type:"number"}},autoFitBreakpoints:{type:"object",allowUnknown:!1,properties:{sm:{type:"string"},md:{type:"string"},lg:{type:"string"},xl:{type:"string"}}},enableGapUtilities:{type:"boolean"}}},containerMaxWidth:{type:["number","string"]}}},layers:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{tokens:["--shadow-*"]}},shadowBlurMultiplier:{type:"number",relations:{tokens:["--shadow-*"]}},shadowOffsetMultiplier:{type:"number",relations:{tokens:["--shadow-*"]}},shadowDepth:{type:"string"},blurLight:{type:"number"},blurMedium:{type:"number"},blurHeavy:{type:"number"},baseZIndex:{type:"number",relations:{tokens:["--z-*"]}},zIndexStep:{type:"number",relations:{tokens:["--z-*"]}},zIndexBase:{type:"number"},zIndexDropdown:{type:"number"},zIndexSticky:{type:"number"},zIndexFixed:{type:"number"},zIndexModal:{type:"number"},zIndexPopover:{type:"number"},zIndexTooltip:{type:"number"},zIndexNotification:{type:"number"},darkMode:{type:"object",allowUnknown:!1,properties:{baseShadowOpacity:{type:"number",relations:{theme:"dark",tokens:["--shadow-*"]}}}}}},advanced:{type:"object",allowUnknown:!0,properties:{linkStyle:{type:"string"},colorDerivation:{type:"string"}}},a11y:{type:"object",allowUnknown:!0,properties:{minTouchTarget:{type:["string","number"]},prefersReducedMotion:{type:"boolean"},focusStyle:{type:"string"}}},icons:{type:"object",allowUnknown:!1,properties:{set:{type:"string"},weight:{type:"string"},defaultSize:{type:"number",relations:{tokens:["--icon-size"]}},sizes:{type:"object",allowUnknown:!0,properties:{xs:{type:["number","string"]},sm:{type:["number","string"]},md:{type:["number","string"]},lg:{type:["number","string"]},xl:{type:["number","string"]},"2xl":{type:["number","string"]}}},spritePath:{type:"string"},externalPath:{type:"string"},include:{type:"object",allowUnknown:!0,properties:{navigation:{type:"array",items:{type:"string"}},actions:{type:"array",items:{type:"string"}},communication:{type:"array",items:{type:"string"}},content:{type:"array",items:{type:"string"}},status:{type:"array",items:{type:"string"}},time:{type:"array",items:{type:"string"}},commerce:{type:"array",items:{type:"string"}},formatting:{type:"array",items:{type:"string"}},system:{type:"array",items:{type:"string"}}}}}},components:{type:"object",allowUnknown:!0},debug:{type:"boolean"}}},ro={type:"object",allowUnknown:!0,properties:{mode:{type:"string"},preset:{type:"string"},design:Ne,enhancers:{type:["object","array"]},applyGlobalStyles:{type:"boolean"},manageTheme:{type:"boolean"},themeStorageKey:{type:"string"},preloadStyles:{type:"boolean"},criticalLayers:{type:"array",items:{type:"string"}},autoDefine:{type:"object",allowUnknown:!1,properties:{predefine:{type:"array",items:{type:"string"}},mapper:{type:ne},enhancers:{type:["object","array"]},scanExisting:{type:"boolean"},observeShadows:{type:"boolean"},patchAttachShadow:{type:"boolean"},debounceMs:{type:"number"},onError:{type:ne},baseURL:{type:"string"}}},managerURL:{type:"string"},manager:{type:ne},liveEdit:{type:"boolean"},localization:{type:"object",allowUnknown:!1,properties:{locale:{type:"string"},locales:{type:"array",items:{type:"string"}},messages:{type:"object",allowUnknown:!0},provider:{type:ne},translate:{type:ne},loadLocale:{type:ne},setLocale:{type:ne}}},log:{type:ne}}};function Fe(t){return t===null?"null":Array.isArray(t)?"array":typeof t}function no(t,e){if(e===ne)return!0;let r=Fe(t);return Array.isArray(e)?e.includes(r):r===e}function tt(t,e,r,n){if(!e)return;let o=e.type||ne;if(!no(t,o)){n.push({path:r,expected:o,actual:Fe(t),message:`Expected ${o} but got ${Fe(t)}`});return}if(o==="array"&&e.items&&Array.isArray(t)&&t.forEach((a,i)=>{tt(a,e.items,`${r}[${i}]`,n)}),o==="object"&&t&&typeof t=="object"){let a=e.properties||{};for(let[i,s]of Object.entries(t)){if(!Object.prototype.hasOwnProperty.call(a,i)){e.allowUnknown||n.push({path:`${r}.${i}`,expected:"known property",actual:"unknown",message:`Unknown property "${i}"`});continue}tt(s,a[i],`${r}.${i}`,n)}}}function Ot(t,e="",r={}){if(!t||typeof t!="object")return r;if(t.relations&&e&&(r[e]=t.relations),t.type==="object"&&t.properties&&Object.entries(t.properties).forEach(([n,o])=>{let a=e?`${e}.${n}`:n;Ot(o,a,r)}),t.type==="array"&&t.items){let n=`${e}[]`;Ot(t.items,n,r)}return r}var Mr=Ot(Ne,""),Tr=Ne,oo={"colors.primary":{widget:"input-color"},"colors.secondary":{widget:"input-color"},"colors.accent":{widget:"input-color"},"colors.background":{widget:"input-color"},"colors.success":{widget:"input-color"},"colors.warning":{widget:"input-color"},"colors.danger":{widget:"input-color"},"colors.info":{widget:"input-color"},"colors.gradientStops":{min:2,max:8,step:1,widget:"range"},"colors.elevationOpacity":{min:0,max:1,step:.01,widget:"range"},"colors.darkMode.background":{widget:"input-color"},"colors.darkMode.primary":{widget:"input-color"},"colors.darkMode.secondary":{widget:"input-color"},"colors.darkMode.accent":{widget:"input-color"},description:{widget:"textarea",maxLength:500,rows:4,placeholder:"Summarize the visual and interaction intent"},"typography.fontFamilyHeadings":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Heading font stack"},"typography.fontFamilyBody":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Body font stack"},"typography.fontFamilyMono":{widget:"font-family-omnibox",icon:"text-aa",placeholder:"Monospace font stack"},"typography.baseFontSize":{min:8,max:32,step:1,widget:"input-range"},"typography.fontScale":{min:1,max:2,step:.01,widget:"range"},"typography.fontWeightLight":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightNormal":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightMedium":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightSemibold":{min:100,max:800,step:100,widget:"input-range"},"typography.fontWeightBold":{min:100,max:800,step:100,widget:"input-range"},"typography.lineHeightTight":{min:.75,max:3,step:.001,widget:"input-range"},"typography.lineHeightNormal":{min:.75,max:3,step:.001,widget:"input-range"},"typography.lineHeightRelaxed":{min:.75,max:3,step:.001,widget:"input-range"},"typography.letterSpacingTight":{min:-.1,max:.1,step:.001,widget:"range"},"typography.letterSpacingNormal":{min:-.1,max:.1,step:.001,widget:"range"},"typography.letterSpacingWide":{min:-.1,max:.1,step:.001,widget:"range"},"spatialRhythm.baseUnit":{min:1,max:16,step:1,widget:"range"},"spatialRhythm.scaleRatio":{min:1,max:2,step:.01,widget:"range"},"spatialRhythm.maxSpacingSteps":{min:4,max:64,step:1,widget:"range"},"spatialRhythm.containerPadding":{min:0,max:8,step:.05,widget:"range"},"spatialRhythm.inputPadding":{min:0,max:4,step:.05,widget:"range"},"spatialRhythm.buttonPadding":{min:0,max:4,step:.05,widget:"range"},"spatialRhythm.sectionSpacing":{min:0,max:8,step:.05,widget:"range"},"shape.radiusSize":{oneOf:Object.entries(S.RadiusSizes).map(([t,e])=>({const:e,title:t}))},"shape.borderWidth":{widget:"select",oneOf:Object.entries(S.BorderWidths).map(([t,e])=>({const:e,title:t}))},"shape.customRadius":{min:0,max:64,step:1,widget:"range"},"behavior.transitionSpeed":{oneOf:Object.entries(S.TransitionSpeeds).map(([t,e])=>({const:e,title:t}))},"behavior.animationEasing":{enum:Object.values(S.AnimationEasings)},"behavior.customTransitionSpeed":{min:0,max:1e3,step:10,widget:"range"},"behavior.focusRingWidth":{min:0,max:8,step:1,widget:"range"},"behavior.focusRingOpacity":{min:0,max:1,step:.01,widget:"range"},"behavior.hoverOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.gridColumns":{min:1,max:24,step:1,widget:"range"},"layout.gridGutter":{min:0,max:8,step:.05,widget:"range"},"layout.maxWidth":{widget:"input-text",placeholder:"e.g. 1200 or 1200px"},"layout.maxWidths.sm":{widget:"input-text",placeholder:"e.g. 640 or 640px"},"layout.maxWidths.md":{widget:"input-text",placeholder:"e.g. 768 or 768px"},"layout.maxWidths.lg":{widget:"input-text",placeholder:"e.g. 1024 or 1024px"},"layout.maxWidths.xl":{widget:"input-text",placeholder:"e.g. 1280 or 1280px"},"layout.containerMaxWidth":{widget:"input-text",placeholder:"e.g. 1400px"},"layout.containerPadding":{widget:"input-text",placeholder:"e.g. var(--spacing-6)"},"layout.breakpoints.sm":{min:320,max:2560,step:1,widget:"input-number"},"layout.breakpoints.md":{min:480,max:3200,step:1,widget:"input-number"},"layout.breakpoints.lg":{min:640,max:3840,step:1,widget:"input-number"},"layout.breakpoints.xl":{min:768,max:5120,step:1,widget:"input-number"},"layout.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.darkMode.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layout.densityCompact":{min:.5,max:2,step:.05,widget:"range"},"layout.densityNormal":{min:.5,max:2,step:.05,widget:"range"},"layout.densityComfortable":{min:.5,max:2,step:.05,widget:"range"},"layout.buttonMinHeight":{min:24,max:96,step:1,widget:"range"},"layout.inputMinHeight":{min:24,max:96,step:1,widget:"range"},"layers.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"layers.shadowBlurMultiplier":{min:0,max:8,step:.1,widget:"range"},"layers.shadowOffsetMultiplier":{min:0,max:8,step:.1,widget:"range"},"layers.blurLight":{min:0,max:48,step:1,widget:"range"},"layers.blurMedium":{min:0,max:64,step:1,widget:"range"},"layers.blurHeavy":{min:0,max:96,step:1,widget:"range"},"layers.baseZIndex":{min:0,max:1e4,step:10,widget:"range"},"layers.zIndexStep":{min:1,max:100,step:1,widget:"range"},"layers.darkMode.baseShadowOpacity":{min:0,max:1,step:.01,widget:"range"},"advanced.linkStyle":{enum:Object.values(S.LinkStyles)},"a11y.minTouchTarget":{oneOf:Object.entries(S.TouchTargetSizes).map(([t,e])=>({const:e,title:t}))},"a11y.focusStyle":{enum:Object.values(S.FocusStyles)},"icons.defaultSize":{min:8,max:128,step:1,widget:"range",icon:"sparkle"}};function Lr(t=[]){return t.join(".")}function zr(t=[]){return`/${t.join("/")}`}function ao(t,e=[]){if(!(!t||typeof t!="object"))return e.reduce((r,n)=>{if(r!=null&&typeof r=="object")return r[n]},t)}function Cr(t,e,r=[]){if(t!=null)return t;let n=ao(e,r);return n??void 0}function Pe(t=""){return String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/^./,e=>e.toUpperCase())}function Rr(t,e){if(!t)return"string";let r=t.type||"string";if(Array.isArray(r)){let n=Fe(e);return n!=="undefined"&&r.includes(n)?n:r.includes("string")?"string":r.find(o=>o!=="null")||r[0]||"string"}return r}function jt(t,e,r=[]){return!t||!e||!Array.isArray(r)||r.forEach(n=>{e[n]!==void 0&&(t[n]=e[n])}),t}function Er(t,e){return Array.isArray(e?.oneOf)&&e.oneOf.length?e.oneOf:Array.isArray(e?.enum)&&e.enum.length?e.enum.map(r=>({const:r,title:Pe(r)})):Array.isArray(t?.oneOf)&&t.oneOf.length?t.oneOf:Array.isArray(t?.enum)&&t.enum.length?t.enum.map(r=>({const:r,title:Pe(r)})):null}function io(t){return t&&(t==="range"?"input-range":t)}function so(t,e){if(!Array.isArray(e)||!e.length)return t;let r=new Set;for(let n of e)!n||n.const===void 0||r.add(Fe(n.const));if(!r.size)return t;if(r.size===1){let n=Array.from(r)[0];if(n==="number")return"number";if(n==="string")return"string";if(n==="boolean")return"boolean"}return t}function Ar(t,e,r){let n=Rr(e,r),o=t.toLowerCase(),a={label:Pe(t.split(".").slice(-1)[0]||t)};n==="boolean"&&(a.widget="toggle"),n==="number"&&(a.widget="range",o.includes("opacity")?(a.min=0,a.max=1,a.step=.01):o.includes("lineheight")?(a.min=.75,a.max=3,a.step=.001,a.widget="input-range"):o.includes("fontweight")?(a.min=100,a.max=800,a.step=100,a.widget="input-range"):o.endsWith("basefontsize")?(a.min=8,a.max=32,a.step=1,a.widget="input-range"):o.includes("scale")||o.includes("ratio")?(a.min=1,a.max=2,a.step=.01):(a.min=0,a.max=Math.max(10,Number.isFinite(Number(r))?Number(r)*4:100),a.step=1)),n==="string"&&t.startsWith("colors.")&&(a.widget="input-color"),n==="string"&&o==="description"&&(a.widget="textarea",a.maxLength=500,a.rows=4);let i=oo[t]||{},s={...a,...i};return s.widget&&(s.widget=io(s.widget)),s}function Ir(t,e,r,n,o,a){if(!t||typeof t!="object")return null;let i=Cr(e,a,r),s=Rr(t,i);if(s==="object"&&t.properties){let f={type:"object",properties:{}};r.length>0&&(f.title=Pe(r[r.length-1]));let y={};for(let[v,m]of Object.entries(t.properties)){let w=e&&typeof e=="object"&&!Array.isArray(e)?e[v]:void 0,A=Ir(m,w,[...r,v],n,o,a);A&&(f.properties[v]=A.schema,A.hasValue&&(y[v]=A.value))}return Object.keys(f.properties).length?{schema:f,value:y,hasValue:Object.keys(y).length>0}:null}if(s==="array"){let f=Lr(r),y=Ar(f,t,e);o[f]=y;let v=Cr(e,a,r),m=t.items?.type||"string",w=Array.isArray(m)?m[0]:m,A={type:w},E=Er(t?.items,null);if(E&&(A.oneOf=E),w==="string"&&Array.isArray(v)&&v.length>0){let T=v.find(L=>typeof L=="string"&&L.trim().length>0);T&&(A.examples=[T])}jt(A,t?.items,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","minItems","maxItems","uniqueItems","description","default"]);let M={type:"array",items:A};jt(M,t,["minItems","maxItems","uniqueItems","description","default"]);let R=zr(r),I={},O=Array.isArray(A.oneOf)&&A.oneOf.length>0;if(w==="string"&&O&&(I["ui:widget"]=M.maxItems===1?"radio":"checkbox-group"),w==="string"&&Array.isArray(v)&&v.length>0){let T=v.filter(L=>typeof L=="string"&&L.trim().length>0).slice(0,5).join(", ");T&&(I["ui:placeholder"]=T)}return Object.keys(I).length&&(n[R]={...n[R]||{},...I}),{schema:M,value:Array.isArray(e)?e:[],hasValue:Array.isArray(e)}}let d=Lr(r),l=Ar(d,t,i);o[d]=l;let u=Er(t,l),h={type:so(s==="null"?"string":s,u),title:l.label||Pe(r[r.length-1]||d)};u&&(h.oneOf=u),jt(h,t,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","description","default"]),typeof l.maxLength=="number"&&h.maxLength===void 0&&(h.maxLength=l.maxLength),(h.type==="number"||h.type==="integer")&&typeof l.min=="number"&&h.minimum===void 0&&(h.minimum=l.min),(h.type==="number"||h.type==="integer")&&typeof l.max=="number"&&h.maximum===void 0&&(h.maximum=l.max),(h.type==="number"||h.type==="integer")&&typeof l.step=="number"&&h.multipleOf===void 0&&(h.multipleOf=l.step);let b=i;b!==void 0&&(h.examples=[b]);let $=zr(r),g={};return l.widget&&(g["ui:widget"]=l.widget),l.icon&&(g["ui:icon"]=l.icon),typeof l.min=="number"&&(g["ui:min"]=l.min),typeof l.max=="number"&&(g["ui:max"]=l.max),typeof l.step=="number"&&(g["ui:step"]=l.step),l.placeholder&&(g["ui:placeholder"]=l.placeholder),typeof l.rows=="number"&&(g["ui:options"]={...g["ui:options"]||{},rows:l.rows}),l.widget==="input-range"&&b!==void 0&&(g["ui:allowUnset"]=!0),(typeof l.min=="number"||typeof l.max=="number"||typeof l.step=="number")&&(g["ui:options"]={...g["ui:options"]||{},...typeof l.min=="number"?{min:l.min}:{},...typeof l.max=="number"?{max:l.max}:{},...typeof l.step=="number"?{step:l.step}:{}}),Object.keys(g).length&&(n[$]=g),{schema:h,value:e,hasValue:e!==void 0}}function ye(t={}){let e={},r={"/colors":{"ui:layout":"flex","ui:layoutOptions":{wrap:!0,gap:"sm"}},"/colors/darkMode":{"ui:layout":"flex","ui:layoutOptions":{wrap:!0,gap:"sm"}}},n=X?.default&&typeof X.default=="object"?X.default:null,o=Ir(Ne,t,[],r,e,n);return{schema:o?.schema||{type:"object",properties:{}},uiSchema:r,values:o?.value||{},metadata:e}}function je(t={}){return ye(t).metadata}function Bt(t,{log:e,context:r="PDS config"}={}){if(!t||typeof t!="object")return[];let n=[];return tt(t,Ne,"design",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${r}] ${o.message} at ${o.path}`)}),n}function Dt(t,{log:e,context:r="PDS config"}={}){if(!t||typeof t!="object")return[];let n=[];return tt(t,ro,"config",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${r}] ${o.message} at ${o.path}`)}),n}var X={"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.35,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:S.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:S.RadiusSizes.small,borderWidth:S.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.318,fontFamilyHeadings:"'Space Grotesk', system-ui, sans-serif",fontFamilyBody:"'Space Grotesk', system-ui, sans-serif"},spatialRhythm:{baseUnit:4,scaleRatio:1.5},shape:{radiusSize:S.RadiusSizes.xlarge,borderWidth:S.BorderWidths.medium},behavior:{transitionSpeed:S.TransitionSpeeds.fast}},"paper-and-ink":{id:"paper-and-ink",name:"Paper & Ink",tags:["app","featured"],themes:["light"],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:S.RadiusSizes.none,borderWidth:S.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.3,fontFamilyHeadings:"'Quicksand', 'Comfortaa', sans-serif",fontFamilyBody:"'Quicksand', 'Comfortaa', sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.5},shape:{radiusSize:S.RadiusSizes.xxlarge,borderWidth:S.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:S.RadiusSizes.none,borderWidth:S.BorderWidths.thick},behavior:{transitionSpeed:S.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:S.RadiusSizes.medium,borderWidth:S.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.3,fontFamilyHeadings:"'Playfair Display', 'Georgia', serif",fontFamilyBody:"'Crimson Text', 'Garamond', serif",fontWeightNormal:400,fontWeightSemibold:600},spatialRhythm:{baseUnit:4,scaleRatio:1.3},shape:{radiusSize:S.RadiusSizes.small,borderWidth:S.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:S.RadiusSizes.medium,borderWidth:S.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:S.RadiusSizes.small,borderWidth:S.BorderWidths.thick},behavior:{transitionSpeed:S.TransitionSpeeds.fast,focusRingWidth:4}},"pastel-play":{id:"pastel-play",name:"Pastel Play",themes:["light"],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:S.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:S.RadiusSizes.xxlarge,borderWidth:S.BorderWidths.thin},behavior:{transitionSpeed:S.TransitionSpeeds.slow,animationEasing:S.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:"#0c0c0c",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:S.RadiusSizes.none,borderWidth:S.BorderWidths.thick},behavior:{transitionSpeed:S.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.35,fontFamilyHeadings:"'Merriweather', Georgia, serif",fontFamilyBody:"'Noto Sans', system-ui, -apple-system, sans-serif"},spatialRhythm:{baseUnit:6,scaleRatio:1.35},shape:{radiusSize:S.RadiusSizes.large,borderWidth:S.BorderWidths.medium},behavior:{transitionSpeed:S.TransitionSpeeds.normal,animationEasing:S.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"}},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:S.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:S.RadiusSizes.large,borderWidth:S.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:S.TransitionSpeeds.fast,animationEasing:S.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:S.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:S.RadiusSizes.medium,borderWidth:S.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:S.TransitionSpeeds.normal,animationEasing:S.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",info:"#0e7490",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#b1b1b1"}},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:S.RadiusSizes.small,borderWidth:S.BorderWidths.medium},behavior:{transitionSpeed:S.TransitionSpeeds.fast,animationEasing:S.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:S.TouchTargetSizes.comfortable,focusStyle:S.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,sectionSpacing:2.5},shape:{radiusSize:S.RadiusSizes.medium,borderWidth:S.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:S.TransitionSpeeds.fast,animationEasing:S.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:S.TouchTargetSizes.standard,focusStyle:S.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:S.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,sectionSpacing:1.5},shape:{radiusSize:S.RadiusSizes.medium,borderWidth:S.BorderWidths.thin},behavior:{transitionSpeed:S.TransitionSpeeds.fast,animationEasing:S.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:S.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:S.RadiusSizes.small,borderWidth:S.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:S.TransitionSpeeds.fast,animationEasing:S.AnimationEasings["ease-in-out"],focusRingWidth:2},layout:{densityCompact:.85,gridColumns:12}}};X.default={id:"default",name:"Default",tags:["app","featured"],description:"Fresh and modern design system with balanced aesthetics and usability",options:{liquidGlassEffects:!1,backgroundMesh:0},form:{options:{widgets:{booleans:"toggle",numbers:"input",selects:"standard"},layouts:{fieldsets:"default",arrays:"default"},enhancements:{icons:!0,datalists:!0,rangeOutput:!0,colorInput:!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:S.FontWeights.light,fontWeightNormal:S.FontWeights.normal,fontWeightMedium:S.FontWeights.medium,fontWeightSemibold:S.FontWeights.semibold,fontWeightBold:S.FontWeights.bold,lineHeightTight:S.LineHeights.tight,lineHeightNormal:S.LineHeights.normal,lineHeightRelaxed:S.LineHeights.relaxed,letterSpacingTight:-.025,letterSpacingNormal:0,letterSpacingWide:.025},spatialRhythm:{baseUnit:4,scaleRatio:1.25,maxSpacingSteps:32,containerPadding:1,inputPadding:.75,buttonPadding:1,sectionSpacing:2},layers:{baseShadowOpacity:.1,darkMode:{baseShadowOpacity:.25},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:S.RadiusSizes.large,borderWidth:S.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:S.TransitionSpeeds.normal,animationEasing:S.AnimationEasings["ease-out"],customTransitionSpeed:null,customEasing:null,focusRingWidth:3,focusRingOpacity:.3,hoverOpacity:.8},layout:{gridColumns:12,gridGutter:1,baseShadowOpacity:.1,darkMode:{baseShadowOpacity:.25},breakpoints:{sm:640,md:768,lg:1024,xl:1280},densityCompact:.8,densityNormal:1,densityComfortable:1.2,buttonMinHeight:30,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:S.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:S.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:S.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:S.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","corners-out","corners-in"],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:"/assets/pds/icons/pds-icons.svg"},debug:!1};var _r=je(X.default),Fr=ye(X.default);function Ht(t="log",e,...r){let n=globalThis?.PDS?.log;if(typeof n=="function"){n(t,e,...r);return}if(typeof console>"u")return;let o=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;o&&(r.length>0?o(e,...r):o(e))}_e();Wt();var Z=class t{static#v;static get instance(){return this.#v}#e;#a;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),t.#v=this,this.tokens=this.generateTokens(),this.options.debug&&this.options.log?.("debug","Generated tokens:",this.tokens),this.#Se(),typeof CSSStyleSheet<"u"?this.#Ee():this.options.debug&&this.options.log?.("debug","[Generator] Skipping browser features (CSSStyleSheet not available)")}generateTokens(){let e=this.options.design||{},r=this.#M(e),n=e.layers||{},o=this.#w(n,r.light),a=this.#E(o),i=r.dark!=null?this.#E(this.#w(n,r.dark)):null;return{colors:this.#T(e.colors||{},r),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#O(e.shape||{}),borderWidths:this.#B(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:a,darkShadows:i,layout:this.#D(e.layout||{}),transitions:this.#H(e.behavior||{}),zIndex:this.#W(e.layers||{}),icons:this.#U(e.icons||{})}}#M(e={}){let r=e.layout||{},n=e.layers||{};return{light:this.#x(r.baseShadowOpacity??n.baseShadowOpacity),dark:this.#x(r.darkMode?.baseShadowOpacity??n.darkMode?.baseShadowOpacity)}}#x(e){let r=Number(e);if(Number.isFinite(r))return Math.min(Math.max(r,0),1)}#w(e={},r){let n={...e};return r!=null&&(n.baseShadowOpacity=r),n}#T(e,r={}){let{primary:n="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:d="#FFBF00",danger:l=null,info:u=null,darkMode:c={}}=e,p={primary:this.#i(n),secondary:this.#i(o),accent:this.#i(a),success:this.#i(s||this.#R(n)),warning:this.#i(d||a),danger:this.#i(l||this.#I(n)),info:this.#i(u||n),gray:this.#k(o),surface:this.#S(i)};return p.surface.fieldset=this.#_(p.surface),p.surfaceSmart=this.#C(p.surface,r),p.dark=this.#F(p,i,c),p.dark&&p.dark.surface&&(p.dark.surfaceSmart=this.#C(p.dark.surface,r)),p.interactive={light:this.#r(p.primary,p.surface.base),dark:this.#r(p.dark.primary,p.dark.surface.base)},p.accentInteractive={light:this.#r(p.accent,p.surface.base),dark:this.#r(p.dark.accent,p.dark.surface.base)},p.surfaceAccent={light:this.#n(p.accent,p.surface),dark:this.#n(p.dark.accent,p.dark.surface)},p.dangerInteractive={light:this.#r(p.danger,p.surface.base),dark:this.#r(p.dark.danger,p.dark.surface.base)},p.successInteractive={light:this.#r(p.success,p.surface.base),dark:this.#r(p.dark.success,p.dark.surface.base)},p.warningInteractive={light:this.#r(p.warning,p.surface.base),dark:this.#r(p.dark.warning,p.dark.surface.base)},p.infoInteractive={light:this.#r(p.info,p.surface.base),dark:this.#r(p.dark.info,p.dark.surface.base)},p.surfaceStatus={light:{success:this.#n(p.success,p.surface),warning:this.#n(p.warning,p.surface),info:this.#n(p.info,p.surface),danger:this.#n(p.danger,p.surface)},dark:{success:this.#n(p.dark.success,p.dark.surface),warning:this.#n(p.dark.warning,p.dark.surface),info:this.#n(p.dark.info,p.dark.surface),danger:this.#n(p.dark.danger,p.dark.surface)}},p}#i(e){let r=this.#s(e);return{50:this.#t(r.h,Math.max(r.s-10,10),Math.min(r.l+45,95)),100:this.#t(r.h,Math.max(r.s-5,15),Math.min(r.l+35,90)),200:this.#t(r.h,r.s,Math.min(r.l+25,85)),300:this.#t(r.h,r.s,Math.min(r.l+15,75)),400:this.#t(r.h,r.s,Math.min(r.l+5,65)),500:e,600:this.#t(r.h,r.s,Math.max(r.l-10,25)),700:this.#t(r.h,r.s,Math.max(r.l-20,20)),800:this.#t(r.h,r.s,Math.max(r.l-30,15)),900:this.#t(r.h,r.s,Math.max(r.l-40,10))}}#R(e){let r=this.#s(e);return this.#t(120,Math.max(r.s,60),45)}#I(e){let r=this.#s(e);return this.#t(0,Math.max(r.s,70),50)}#k(e){let r=this.#s(e),n=r.h,o=Math.min(r.s,10);return{50:this.#t(n,o,98),100:this.#t(n,o,95),200:this.#t(n,o,88),300:this.#t(n,o,78),400:this.#t(n,o,60),500:e,600:this.#t(n,Math.min(o+5,15),45),700:this.#t(n,Math.min(o+8,18),35),800:this.#t(n,Math.min(o+10,20),20),900:this.#t(n,Math.min(o+12,22),10)}}#S(e){let r=this.#s(e);return{base:e,subtle:this.#t(r.h,Math.max(r.s,2),Math.max(r.l-2,2)),elevated:this.#t(r.h,Math.max(r.s,3),Math.max(r.l-4,5)),sunken:this.#t(r.h,Math.max(r.s,4),Math.max(r.l-6,8)),overlay:this.#t(r.h,Math.max(r.s,2),Math.min(r.l+2,98)),inverse:this.#$(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#_(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#h(e.sunken,.05),overlay:e.elevated}}#h(e,r=.05){let n=this.#s(e),o=Math.max(n.l-n.l*r,5);return this.#t(n.h,n.s,o)}#$(e){let r=this.#s(e);if(r.l>50){let n=Math.min(r.s+5,25),o=Math.max(12-(r.l-50)*.1,8);return this.#t(r.h,n,o)}else{let n=Math.max(r.s-10,5),o=Math.min(85+(50-r.l)*.3,95);return this.#t(r.h,n,o)}}#F(e,r="#ffffff",n={}){let o=n.background?n.background:this.#$(r),a=this.#S(o),i=(s,d)=>s?this.#i(s):d;return{surface:{...a,fieldset:this.#N(a)},primary:i(n.primary,e.primary),secondary:i(n.secondary,e.secondary),accent:i(n.accent,e.accent),gray:n.secondary?this.#k(n.secondary):e.gray,success:i(n.success,e.success),info:i(n.info,e.info),warning:i(n.warning,e.warning),danger:i(n.danger,e.danger)}}#u(e){let r=String(e||"").replace("#",""),n=r.length===3?r.split("").map(a=>a+a).join(""):r,o=parseInt(n,16);return{r:o>>16&255,g:o>>8&255,b:o&255}}#p(e){let{r,g:n,b:o}=this.#u(e),a=[r/255,n/255,o/255].map(i=>i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4));return .2126*a[0]+.7152*a[1]+.0722*a[2]}#f(e,r){let n=this.#p(e),o=this.#p(r),a=Math.max(n,o),i=Math.min(n,o);return(a+.05)/(i+.05)}#g(e,r=4.5){if(!e)return"#000000";let n="#ffffff",o="#000000",a=this.#f(e,n);if(a>=r)return n;let i=this.#f(e,o);return i>=r||i>a?o:n}#L(e,r=1){let{r:n,g:o,b:a}=this.#u(e);return`rgba(${n}, ${o}, ${a}, ${r})`}#z(e,r,n=.5){let o=this.#u(e),a=this.#u(r),i=Math.round(o.r+(a.r-o.r)*n),s=Math.round(o.g+(a.g-o.g)*n),d=Math.round(o.b+(a.b-o.b)*n);return this.#P(i,s,d)}#P(e,r,n){let o=a=>{let i=Math.max(0,Math.min(255,Math.round(a))).toString(16);return i.length===1?"0"+i:i};return`#${o(e)}${o(r)}${o(n)}`}#N(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#m(e.elevated,.08),sunken:e.elevated,overlay:this.#m(e.overlay,.05)}}#c(e={},r="#000000",n=4.5){let o=["600","700","800","500","400","900","300","200"],a={shade:null,color:null,ratio:0};for(let i of o){let s=e?.[i];if(!s||typeof s!="string")continue;let d=this.#f(s,r);if(d>a.ratio&&(a={shade:i,color:s,ratio:d}),d>=n)return s}return a.color||e?.["600"]||e?.["500"]}#r(e={},r="#ffffff"){let n=this.#p(r)<.18,o=this.#j(e,4.5),a=n?this.#m(o,.15):this.#h(o,.1),i=n?this.#m(o,.07):this.#h(o,.2),s=this.#c(e,r,4.5),d=this.#c(e,r,5.5),l=this.#c(e,r,3);return{fill:o,fillHover:a,fillActive:i,text:s,textHover:d||s,textVisited:this.#z(s||o,r,.2),focusRing:l||s||o,selectionBg:s||o,selectionText:this.#g(s||o,4.5),contrast:this.#g(o,4.5)}}#n(e={},r={}){let n={};return Object.entries(r).forEach(([o,a])=>{if(!a||typeof a!="string"||!a.startsWith("#"))return;let i=this.#c(e,a,4.5),s=this.#c(e,a,5);n[o]={text:i,textHover:s||i}}),n}#j(e={},r=4.5){let n=["600","700","800","500","400","900"],o={shade:null,color:null,ratio:0};for(let a of n){let i=e?.[a];if(!i||typeof i!="string")continue;let s=this.#f(i,"#ffffff");if(s>o.ratio&&(o={shade:a,color:i,ratio:s}),s>=r)return i}return o.color||e?.["600"]||e?.["500"]}#C(e,r={}){let n={},o=r.light??.1,a=r.dark??.25;return Object.entries(e).forEach(([i,s])=>{if(!s||typeof s!="string"||!s.startsWith("#"))return;let d=this.#p(s)<.5,l=this.#g(s,4.5),u=this.#g(s,3),c=this.#z(l,s,.4),p=l,h=c,b=d?"#ffffff":"#000000",$=d?a:o,g=this.#L(b,$),f=d?"#ffffff":"#000000",y=d?.15:.1,v=this.#L(f,y);n[i]={bg:s,text:l,textSecondary:u,textMuted:c,icon:p,iconSubtle:h,shadow:g,border:v,scheme:d?"dark":"light"}}),n}#m(e,r=.05){let n=this.#s(e),o=Math.min(n.l+(100-n.l)*r,95);return this.#t(n.h,n.s,o)}generateSpacingTokens(e){let{baseUnit:r=4,scaleRatio:n=1.25,maxSpacingSteps:o=12}=e,a=Number.isFinite(Number(r))?Number(r):4,i=Math.min(Number.isFinite(Number(o))?Number(o):12,12),s={0:"0"};for(let d=1;d<=i;d++)s[d]=`${a*d}px`;return s}#O(e){let{radiusSize:r="medium",customRadius:n=null}=e,o;n!=null?o=n:typeof r=="number"?o=r:typeof r=="string"?o=S.RadiusSizes[r]??S.RadiusSizes.medium:o=S.RadiusSizes.medium;let a=Number.isFinite(Number(o))?Number(o):S.RadiusSizes.medium;return{none:"0",xs:`${Number.isFinite(a*.25)?Math.round(a*.25):0}px`,sm:`${Number.isFinite(a*.5)?Math.round(a*.5):0}px`,md:`${a}px`,lg:`${Number.isFinite(a*1.5)?Math.round(a*1.5):0}px`,xl:`${Number.isFinite(a*2)?Math.round(a*2):0}px`,full:"9999px"}}#B(e){let{borderWidth:r="medium"}=e,n;typeof r=="number"?n=r:typeof r=="string"?n=S.BorderWidths[r]??S.BorderWidths.medium:n=S.BorderWidths.medium;let o=Number.isFinite(Number(n))?Number(n):S.BorderWidths.medium,a=i=>`${Math.max(1,Math.ceil(i))}px`;return{hairline:a(o*.25),thin:a(o*.5),medium:a(o),thick:a(o*1.5)}}generateTypographyTokens(e){let{fontFamilyHeadings:r="system-ui, -apple-system, sans-serif",fontFamilyBody:n="system-ui, -apple-system, sans-serif",fontFamilyMono:o='ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',baseFontSize:a=16,fontScale:i=1.25,fontWeightLight:s=S.FontWeights.light,fontWeightNormal:d=S.FontWeights.normal,fontWeightMedium:l=S.FontWeights.medium,fontWeightSemibold:u=S.FontWeights.semibold,fontWeightBold:c=S.FontWeights.bold,lineHeightTight:p=S.LineHeights.tight,lineHeightNormal:h=S.LineHeights.normal,lineHeightRelaxed:b=S.LineHeights.relaxed}=e,$=Number.isFinite(Number(a))?Number(a):16,g=Number.isFinite(Number(i))?Number(i):1.25;return{fontFamily:{headings:r,body:n,mono:o},fontSize:{xs:`${Math.round($/Math.pow(g,2))}px`,sm:`${Math.round($/g)}px`,base:`${$}px`,lg:`${Math.round($*g)}px`,xl:`${Math.round($*Math.pow(g,2))}px`,"2xl":`${Math.round($*Math.pow(g,3))}px`,"3xl":`${Math.round($*Math.pow(g,4))}px`,"4xl":`${Math.round($*Math.pow(g,5))}px`},fontWeight:{light:s?.toString()||"300",normal:d?.toString()||"400",medium:l?.toString()||"500",semibold:u?.toString()||"600",bold:c?.toString()||"700"},lineHeight:{tight:p?.toString()||"1.25",normal:h?.toString()||"1.5",relaxed:b?.toString()||"1.75"}}}#E(e){let{baseShadowOpacity:r=.1,shadowBlurMultiplier:n=1,shadowOffsetMultiplier:o=1}=e,a=`rgba(0, 0, 0, ${r})`,i=`rgba(0, 0, 0, ${r*.5})`;return{sm:`0 ${1*o}px ${2*n}px 0 ${i}`,base:`0 ${1*o}px ${3*n}px 0 ${a}, 0 ${1*o}px ${2*n}px 0 ${i}`,md:`0 ${4*o}px ${6*n}px ${-1*o}px ${a}, 0 ${2*o}px ${4*n}px ${-1*o}px ${i}`,lg:`0 ${10*o}px ${15*n}px ${-3*o}px ${a}, 0 ${4*o}px ${6*n}px ${-2*o}px ${i}`,xl:`0 ${20*o}px ${25*n}px ${-5*o}px ${a}, 0 ${10*o}px ${10*n}px ${-5*o}px ${i}`,inner:`inset 0 ${2*o}px ${4*n}px 0 ${i}`}}#D(e){let{containerPadding:r=16,breakpoints:n={sm:640,md:768,lg:1024,xl:1280}}=e,o=this.#b(e,"maxWidth"),a=e.maxWidth,i=this.#A(e,{emitFallbacks:!1});return{maxWidth:o?this.#o(a,"1200px"):void 0,maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#o(r,"16px"),breakpoints:{sm:this.#o(n.sm,"640px"),md:this.#o(n.md,"768px"),lg:this.#o(n.lg,"1024px"),xl:this.#o(n.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#A(e={},r={}){let{emitFallbacks:n=!0}=r,o={sm:640,md:768,lg:1024,xl:1280},{maxWidths:a={},containerPadding:i=16,breakpoints:s=o}=e||{},d=this.#b(e,"maxWidth"),l=["sm","md","lg","xl"].some(g=>this.#b(a,g));if(!n&&!d&&!l)return{sm:void 0,md:void 0,lg:void 0,xl:void 0};let u=e?.maxWidth,c=this.#l(i,16),p=this.#l(u,o.xl),h={sm:this.#l(s.sm,o.sm),md:this.#l(s.md,o.md),lg:this.#l(s.lg,o.lg),xl:this.#l(s.xl,o.xl)},b=g=>g?Math.max(320,g-c*2):p,$={sm:Math.min(p,b(h.sm)),md:Math.min(p,b(h.md)),lg:Math.min(p,b(h.lg)),xl:Math.max(320,p)};return{sm:this.#o(a.sm,`${$.sm}px`),md:this.#o(a.md,`${$.md}px`),lg:this.#o(a.lg,`${$.lg}px`),xl:this.#o(a.xl,`${$.xl}px`)}}#b(e,r){if(!e||typeof e!="object"||!Object.prototype.hasOwnProperty.call(e,r))return!1;let n=e[r];return!(n==null||typeof n=="string"&&n.trim().length===0)}#o(e,r){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:r}#l(e,r){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=parseFloat(e);if(Number.isFinite(n))return n}return r}#H(e){let{transitionSpeed:r=S.TransitionSpeeds.normal,animationEasing:n=S.AnimationEasings["ease-out"]}=e,o;return typeof r=="number"?o=r:typeof r=="string"&&S.TransitionSpeeds[r]?o=S.TransitionSpeeds[r]:o=S.TransitionSpeeds.normal,{fast:`${Math.round(o*.6)}ms`,normal:`${o}ms`,slow:`${Math.round(o*1.4)}ms`}}#W(e){let{baseZIndex:r=1e3,zIndexStep:n=10}=e;return{dropdown:r.toString(),sticky:(r+n*2).toString(),fixed:(r+n*3).toString(),modal:(r+n*4).toString(),drawer:(r+n*5).toString(),popover:(r+n*6).toString(),tooltip:(r+n*7).toString(),notification:(r+n*8).toString()}}#U(e){let{set:r="phosphor",weight:n="regular",defaultSize:o=24,sizes:a={xs:16,sm:20,md:24,lg:32,xl:48,"2xl":64},spritePath:i="/assets/pds/icons/pds-icons.svg",externalPath:s="/assets/img/icons/"}=e;return{set:r,weight:n,defaultSize:`${o}px`,sizes:Object.fromEntries(Object.entries(a).map(([d,l])=>[d,`${l}px`])),spritePath:i,externalPath:s}}#q(e){let r=[];r.push(` /* Colors */
|
|
3
3
|
`);let n=(o,a="")=>{Object.entries(o).forEach(([i,s])=>{typeof s=="object"&&s!==null?n(s,`${a}${i}-`):typeof s=="string"&&r.push(` --color-${a}${i}: ${s};
|
|
4
4
|
`)})};Object.entries(e).forEach(([o,a])=>{o!=="dark"&&o!=="surfaceSmart"&&o!=="interactive"&&o!=="accentInteractive"&&o!=="dangerInteractive"&&o!=="successInteractive"&&o!=="warningInteractive"&&o!=="infoInteractive"&&o!=="surfaceAccent"&&o!=="surfaceStatus"&&typeof a=="object"&&a!==null&&n(a,`${o}-`)}),e.surfaceSmart&&(r.push(` /* Smart Surface Tokens (context-aware) */
|
|
5
5
|
`),Object.entries(e.surfaceSmart).forEach(([o,a])=>{r.push(` --surface-${o}-bg: ${a.bg};
|
|
@@ -154,7 +154,7 @@ var Xn=Object.defineProperty;var Xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Qe=(t,e)=>{
|
|
|
154
154
|
`),r.push(` --icon-size: ${e.defaultSize};
|
|
155
155
|
`),Object.entries(e.sizes).forEach(([n,o])=>{r.push(` --icon-size-${n}: ${o};
|
|
156
156
|
`)}),`${r.join("")}
|
|
157
|
-
`}#te(e,r){if(!e?.dark)return"";let n=[],o=(m,w="")=>{Object.entries(m).forEach(([A,
|
|
157
|
+
`}#te(e,r){if(!e?.dark)return"";let n=[],o=(m,w="")=>{Object.entries(m).forEach(([A,E])=>{typeof E=="object"&&E!==null?o(E,`${w}${A}-`):typeof E=="string"&&n.push(` --color-${w}${A}: ${E};
|
|
158
158
|
`)})};Object.entries(e.dark).forEach(([m,w])=>{m!=="surfaceSmart"&&typeof w=="object"&&w!==null&&o(w,`${m}-`)});let a=[];e.dark.surfaceSmart&&(a.push(` /* Smart Surface Tokens (dark mode, context-aware) */
|
|
159
159
|
`),Object.entries(e.dark.surfaceSmart).forEach(([m,w])=>{a.push(` --surface-${m}-bg: ${w.bg};
|
|
160
160
|
`),a.push(` --surface-${m}-text: ${w.text};
|
|
@@ -216,14 +216,14 @@ var Xn=Object.defineProperty;var Xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Qe=(t,e)=>{
|
|
|
216
216
|
`),p.push(` --color-info-text: ${e.infoInteractive.dark.text};
|
|
217
217
|
`),p.push(` --color-info-text-hover: ${e.infoInteractive.dark.textHover};
|
|
218
218
|
`),p.push(` --color-info-contrast: ${e.infoInteractive.dark.contrast};
|
|
219
|
-
`));let
|
|
220
|
-
`),Object.entries(e.surfaceStatus.dark).forEach(([m,w])=>{Object.entries(w).forEach(([A,
|
|
221
|
-
`),
|
|
222
|
-
`)})}));let
|
|
223
|
-
`];for(let m of["success","info","warning","danger"])
|
|
224
|
-
`),
|
|
225
|
-
`),
|
|
226
|
-
`);let
|
|
219
|
+
`));let h=[];e.surfaceStatus?.dark&&(h.push(` /* Surface-Aware Status Text Tokens (dark mode) */
|
|
220
|
+
`),Object.entries(e.surfaceStatus.dark).forEach(([m,w])=>{Object.entries(w).forEach(([A,E])=>{h.push(` --surface-${A}-${m}-text: ${E.text};
|
|
221
|
+
`),h.push(` --surface-${A}-${m}-text-hover: ${E.textHover};
|
|
222
|
+
`)})}));let b=[` /* Semantic Callout Display Tokens (dark mode) */
|
|
223
|
+
`];for(let m of["success","info","warning","danger"])b.push(` --color-${m}-display-bg: color-mix(in oklab, var(--color-${m}-400) 12%, var(--color-surface-base));
|
|
224
|
+
`),b.push(` --color-${m}-display-border: var(--color-${m}-400);
|
|
225
|
+
`),b.push(` --color-${m}-display-text: var(--color-${m}-100);
|
|
226
|
+
`);let $=` --color-text-primary: var(--color-gray-100);
|
|
227
227
|
--color-text-secondary: var(--color-gray-300);
|
|
228
228
|
--color-text-muted: var(--color-gray-500);
|
|
229
229
|
--color-border: var(--color-gray-700);
|
|
@@ -246,8 +246,8 @@ var Xn=Object.defineProperty;var Xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Qe=(t,e)=>{
|
|
|
246
246
|
/* Legacy alias for backwards compatibility */
|
|
247
247
|
--backdrop-background: var(--backdrop-bg);
|
|
248
248
|
`,f=this.#oe(e),y=r?[this.#y(r)]:[];return`html[data-theme="dark"] {
|
|
249
|
-
${[...n,...a,...y
|
|
250
|
-
`}#re(e,r){if(!e?.dark)return"";let n=[],o=(m,w="")=>{Object.entries(m).forEach(([A,
|
|
249
|
+
${[...n,...a,...y,$,...i,...s,...d,...l,...u,...c,...p,...h,...b,g,f].join("")}}
|
|
250
|
+
`}#re(e,r){if(!e?.dark)return"";let n=[],o=(m,w="")=>{Object.entries(m).forEach(([A,E])=>{typeof E=="object"&&E!==null?o(E,`${w}${A}-`):typeof E=="string"&&n.push(` --color-${w}${A}: ${E};
|
|
251
251
|
`)})};Object.entries(e.dark).forEach(([m,w])=>{m!=="surfaceSmart"&&typeof w=="object"&&w!==null&&o(w,`${m}-`)});let a=[];e.dark.surfaceSmart&&(a.push(` /* Smart Surface Tokens (dark mode, context-aware) */
|
|
252
252
|
`),Object.entries(e.dark.surfaceSmart).forEach(([m,w])=>{a.push(` --surface-${m}-bg: ${w.bg};
|
|
253
253
|
`),a.push(` --surface-${m}-text: ${w.text};
|
|
@@ -309,14 +309,14 @@ ${[...n,...a,...y,S,...i,...s,...d,...l,...u,...c,...p,...b,...h,g,f].join("")}}
|
|
|
309
309
|
`),p.push(` --color-info-text: ${e.infoInteractive.dark.text};
|
|
310
310
|
`),p.push(` --color-info-text-hover: ${e.infoInteractive.dark.textHover};
|
|
311
311
|
`),p.push(` --color-info-contrast: ${e.infoInteractive.dark.contrast};
|
|
312
|
-
`));let
|
|
313
|
-
`),Object.entries(e.surfaceStatus.dark).forEach(([m,w])=>{Object.entries(w).forEach(([A,
|
|
314
|
-
`),
|
|
315
|
-
`)})}));let
|
|
316
|
-
`];for(let m of["success","info","warning","danger"])
|
|
317
|
-
`),
|
|
318
|
-
`),
|
|
319
|
-
`);let
|
|
312
|
+
`));let h=[];e.surfaceStatus?.dark&&(h.push(` /* Surface-Aware Status Text Tokens (dark mode) */
|
|
313
|
+
`),Object.entries(e.surfaceStatus.dark).forEach(([m,w])=>{Object.entries(w).forEach(([A,E])=>{h.push(` --surface-${A}-${m}-text: ${E.text};
|
|
314
|
+
`),h.push(` --surface-${A}-${m}-text-hover: ${E.textHover};
|
|
315
|
+
`)})}));let b=[` /* Semantic Callout Display Tokens (dark mode) */
|
|
316
|
+
`];for(let m of["success","info","warning","danger"])b.push(` --color-${m}-display-bg: color-mix(in oklab, var(--color-${m}-400) 12%, var(--color-surface-base));
|
|
317
|
+
`),b.push(` --color-${m}-display-border: var(--color-${m}-400);
|
|
318
|
+
`),b.push(` --color-${m}-display-text: var(--color-${m}-100);
|
|
319
|
+
`);let $=[` --color-text-primary: var(--color-gray-100);
|
|
320
320
|
`,` --color-text-secondary: var(--color-gray-300);
|
|
321
321
|
`,` --color-text-muted: var(--color-gray-500);
|
|
322
322
|
`,` --color-border: var(--color-gray-700);
|
|
@@ -340,7 +340,7 @@ ${[...n,...a,...y,S,...i,...s,...d,...l,...u,...c,...p,...b,...h,g,f].join("")}}
|
|
|
340
340
|
--backdrop-background: var(--backdrop-bg);
|
|
341
341
|
`,f=this.#ne(e),y=r?[this.#y(r)]:[];return`
|
|
342
342
|
html[data-theme="dark"] {
|
|
343
|
-
${[...n,...a,...y
|
|
343
|
+
${[...n,...a,...y,$,...s,...d,...l,...u,...c,...p,...h,...b,g,f].join("")} }
|
|
344
344
|
`}#ne(e){let r=e.dark||e,n=r.primary?.[400]||"#60a5fa",o=r.secondary?.[400]||"#a78bfa",a=r.accent?.[400]||"#fbbf24";return` /* Mesh Gradient Variables (Dark Mode) */
|
|
345
345
|
--background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, ${n} 20%, transparent) 0px, transparent 50%),
|
|
346
346
|
radial-gradient(at 97% 21%, color-mix(in oklab, ${o} 16%, transparent) 0px, transparent 50%),
|
|
@@ -773,7 +773,7 @@ html[data-theme="dark"] .liquid-glass {
|
|
|
773
773
|
|
|
774
774
|
/* Dialog styles moved to #generateDialogStyles() */
|
|
775
775
|
|
|
776
|
-
`}#de(){let{shape:e={},spatialRhythm:r={},inputPadding:n,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:d,buttonMinHeight:l,inputMinHeight:u}=this.options.design,c=typeof e.borderWidth=="number"?e.borderWidth:typeof e.borderWidth=="string"
|
|
776
|
+
`}#de(){let{shape:e={},spatialRhythm:r={},inputPadding:n,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:d,buttonMinHeight:l,inputMinHeight:u}=this.options.design,c=typeof e.borderWidth=="number"?e.borderWidth:typeof e.borderWidth=="string"?S.BorderWidths[e.borderWidth]??null:null,p=r.inputPadding??n??.75,h=r.buttonPadding??o??1,b=a||3,$=s||c||S.BorderWidths.thin,g=r.sectionSpacing??d??2,f=l||30;return`/* Mobile-First Form Styles - Generated from Design Config */
|
|
777
777
|
form {
|
|
778
778
|
margin: 0;
|
|
779
779
|
width: 100%;
|
|
@@ -932,7 +932,7 @@ input, textarea, select {
|
|
|
932
932
|
border-color: var(--color-danger-fill);
|
|
933
933
|
|
|
934
934
|
&:focus {
|
|
935
|
-
box-shadow: 0 0 0 ${
|
|
935
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-danger-fill) ${Math.round((i||.3)*100)}%, transparent);
|
|
936
936
|
}
|
|
937
937
|
}
|
|
938
938
|
}
|
|
@@ -1082,7 +1082,7 @@ input[type="color"] {
|
|
|
1082
1082
|
align-items: center;
|
|
1083
1083
|
justify-content: center;
|
|
1084
1084
|
min-height: calc(${f}px * 0.75);
|
|
1085
|
-
padding: calc(var(--spacing-1) * ${
|
|
1085
|
+
padding: calc(var(--spacing-1) * ${h*.6}) calc(var(--spacing-4) * 0.85);
|
|
1086
1086
|
border: var(--border-width-medium) solid var(--color-border);
|
|
1087
1087
|
border-radius: var(--radius-md);
|
|
1088
1088
|
font-family: var(--font-family-body);
|
|
@@ -1122,7 +1122,7 @@ input[type="color"] {
|
|
|
1122
1122
|
&:has(input[type="checkbox"]:focus),
|
|
1123
1123
|
input[type="checkbox"]:focus + label:not(fieldset label):not(label[data-toggle]) {
|
|
1124
1124
|
outline: none;
|
|
1125
|
-
box-shadow: 0 0 0 ${
|
|
1125
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-focus-ring, var(--color-primary-500)) ${Math.round((i||.3)*100)}%, transparent);
|
|
1126
1126
|
}
|
|
1127
1127
|
|
|
1128
1128
|
&:has(input[type="checkbox"]:disabled),
|
|
@@ -1187,7 +1187,7 @@ fieldset[role="group"].buttons {
|
|
|
1187
1187
|
align-items: center;
|
|
1188
1188
|
justify-content: center;
|
|
1189
1189
|
min-height: calc(${f}px * 0.75);
|
|
1190
|
-
padding: calc(var(--spacing-1) * ${
|
|
1190
|
+
padding: calc(var(--spacing-1) * ${h*.6}) calc(var(--spacing-4) * 0.85);
|
|
1191
1191
|
border: var(--border-width-medium) solid var(--color-border);
|
|
1192
1192
|
border-radius: var(--radius-md);
|
|
1193
1193
|
font-family: var(--font-family-body);
|
|
@@ -1225,7 +1225,7 @@ fieldset[role="group"].buttons {
|
|
|
1225
1225
|
|
|
1226
1226
|
&:has(input:is([type="radio"], [type="checkbox"]):focus) {
|
|
1227
1227
|
outline: none;
|
|
1228
|
-
box-shadow: 0 0 0 ${
|
|
1228
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-focus-ring, var(--color-primary-500)) ${Math.round((i||.3)*100)}%, transparent);
|
|
1229
1229
|
}
|
|
1230
1230
|
|
|
1231
1231
|
&:has(input:is([type="radio"], [type="checkbox"]):disabled) {
|
|
@@ -1442,7 +1442,7 @@ label[data-color] {
|
|
|
1442
1442
|
|
|
1443
1443
|
&:focus-within .color-control {
|
|
1444
1444
|
border-color: var(--color-focus-ring, var(--color-primary-500));
|
|
1445
|
-
box-shadow: 0 0 0 ${
|
|
1445
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-focus-ring, var(--color-primary-500)) ${Math.round((i||.3)*100)}%, transparent);
|
|
1446
1446
|
}
|
|
1447
1447
|
|
|
1448
1448
|
&:has(input[type="color"]:disabled) .color-control {
|
|
@@ -1477,7 +1477,7 @@ select {
|
|
|
1477
1477
|
|
|
1478
1478
|
/* Button styling */
|
|
1479
1479
|
button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
1480
|
-
--btn-pad-y: max(calc(var(--spacing-1) * ${
|
|
1480
|
+
--btn-pad-y: max(calc(var(--spacing-1) * ${h}), var(--spacing-2));
|
|
1481
1481
|
--btn-target-h: max(${f}px, calc(var(--font-size-base) + (var(--btn-pad-y) * 2) + (var(--border-width-medium) * 2)));
|
|
1482
1482
|
display: inline-flex;
|
|
1483
1483
|
gap: var(--spacing-1);
|
|
@@ -1510,7 +1510,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1510
1510
|
|
|
1511
1511
|
&:focus {
|
|
1512
1512
|
outline: none;
|
|
1513
|
-
box-shadow: 0 0 0 ${
|
|
1513
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-focus-ring, var(--color-primary-500)) ${Math.round((i||.3)*100)}%, transparent);
|
|
1514
1514
|
}
|
|
1515
1515
|
|
|
1516
1516
|
&:disabled {
|
|
@@ -1540,7 +1540,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1540
1540
|
}
|
|
1541
1541
|
|
|
1542
1542
|
&:focus {
|
|
1543
|
-
box-shadow: 0 0 0 ${
|
|
1543
|
+
box-shadow: 0 0 0 ${b}px color-mix(in oklab, var(--color-focus-ring, var(--color-primary-500)) ${Math.round((i||.3)*100)}%, transparent);
|
|
1544
1544
|
}
|
|
1545
1545
|
|
|
1546
1546
|
&:disabled {
|
|
@@ -1643,7 +1643,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1643
1643
|
}
|
|
1644
1644
|
|
|
1645
1645
|
.btn-sm {
|
|
1646
|
-
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${
|
|
1646
|
+
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${h}), var(--spacing-2)) * 0.85);
|
|
1647
1647
|
--btn-target-h: max(calc(${f}px * 0.85), calc(var(--font-size-sm) + (var(--btn-pad-y) * 2) + (var(--border-width-medium) * 2)));
|
|
1648
1648
|
padding: var(--btn-pad-y) calc(var(--spacing-6) * 0.8);
|
|
1649
1649
|
font-size: var(--font-size-sm);
|
|
@@ -1652,7 +1652,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1652
1652
|
}
|
|
1653
1653
|
|
|
1654
1654
|
.btn-xs {
|
|
1655
|
-
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${
|
|
1655
|
+
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${h}), var(--spacing-2)) * 0.7);
|
|
1656
1656
|
--btn-target-h: max(calc(${f}px * 0.7), calc(var(--font-size-xs) + (var(--btn-pad-y) * 2) + (var(--border-width-medium) * 2)));
|
|
1657
1657
|
padding: var(--btn-pad-y) calc(var(--spacing-6) * 0.65);
|
|
1658
1658
|
font-size: var(--font-size-xs);
|
|
@@ -1662,7 +1662,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1662
1662
|
|
|
1663
1663
|
|
|
1664
1664
|
.btn-lg {
|
|
1665
|
-
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${
|
|
1665
|
+
--btn-pad-y: calc(max(calc(var(--spacing-1) * ${h}), var(--spacing-2)) * 1.15);
|
|
1666
1666
|
--btn-target-h: max(calc(${f}px * 1.15), calc(var(--font-size-lg) + (var(--btn-pad-y) * 2) + (var(--border-width-medium) * 2)));
|
|
1667
1667
|
padding: var(--btn-pad-y) calc(var(--spacing-6) * 1.35);
|
|
1668
1668
|
font-size: var(--font-size-lg);
|
|
@@ -2623,7 +2623,7 @@ pds-tabstrip {
|
|
|
2623
2623
|
*:hover { scrollbar-color: var(--color-secondary-400) transparent; }
|
|
2624
2624
|
@media (prefers-color-scheme: dark) { *:hover { scrollbar-color: var(--color-secondary-500) transparent; } }
|
|
2625
2625
|
|
|
2626
|
-
`}#ye(){let{layout:e={}}=this.options.design,r=e.buttonMinHeight||30,n=e.buttonPadding||1,o=`max(calc(var(--spacing-1) * ${n}), var(--spacing-2))`,a=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 0.85)`,i=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 0.7)`,s=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 1.15)`,d=.72,l=`calc(${o} * ${d})`,u=`calc(${a} * ${d})`,c=`calc(${i} * ${d})`,p=`calc(${s} * ${d})`,
|
|
2626
|
+
`}#ye(){let{layout:e={}}=this.options.design,r=e.buttonMinHeight||30,n=e.buttonPadding||1,o=`max(calc(var(--spacing-1) * ${n}), var(--spacing-2))`,a=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 0.85)`,i=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 0.7)`,s=`calc(max(calc(var(--spacing-1) * ${n}), var(--spacing-2)) * 1.15)`,d=.72,l=`calc(${o} * ${d})`,u=`calc(${a} * ${d})`,c=`calc(${i} * ${d})`,p=`calc(${s} * ${d})`,h=`${r}px`,b=`calc(${r}px * 0.85)`,$=`calc(${r}px * 0.7)`,g=`calc(${r}px * 1.15)`,f=`max(${h}, calc(var(--font-size-base) + (${o} * 2) + (var(--border-width-medium) * 2)))`,y=`max(${b}, calc(var(--font-size-sm) + (${a} * 2) + (var(--border-width-medium) * 2)))`,v=`max(${$}, calc(var(--font-size-xs) + (${i} * 2) + (var(--border-width-medium) * 2)))`,m=`max(${g}, calc(var(--font-size-lg) + (${s} * 2) + (var(--border-width-medium) * 2)))`;return`/* Icon System */
|
|
2627
2627
|
|
|
2628
2628
|
pds-icon {
|
|
2629
2629
|
display: inline-flex;
|
|
@@ -2759,6 +2759,41 @@ nav[data-dropdown] {
|
|
|
2759
2759
|
display: flex;
|
|
2760
2760
|
padding: 0;
|
|
2761
2761
|
|
|
2762
|
+
&.split-button {
|
|
2763
|
+
display: inline-flex;
|
|
2764
|
+
align-items: stretch;
|
|
2765
|
+
gap: 0;
|
|
2766
|
+
|
|
2767
|
+
& > [data-dropdown-default],
|
|
2768
|
+
& > [data-dropdown-toggle] {
|
|
2769
|
+
border-radius: 0;
|
|
2770
|
+
position: relative;
|
|
2771
|
+
}
|
|
2772
|
+
|
|
2773
|
+
& > [data-dropdown-default] {
|
|
2774
|
+
border-start-start-radius: var(--radius-md);
|
|
2775
|
+
border-end-start-radius: var(--radius-md);
|
|
2776
|
+
border-inline-end: 0;
|
|
2777
|
+
padding-inline: var(--spacing-3);
|
|
2778
|
+
min-inline-size: 9.5rem;
|
|
2779
|
+
justify-content: center;
|
|
2780
|
+
}
|
|
2781
|
+
|
|
2782
|
+
& > [data-dropdown-toggle] {
|
|
2783
|
+
border-start-end-radius: var(--radius-md);
|
|
2784
|
+
border-end-end-radius: var(--radius-md);
|
|
2785
|
+
inline-size: 2.5rem;
|
|
2786
|
+
min-inline-size: 2.5rem;
|
|
2787
|
+
padding-inline: 0;
|
|
2788
|
+
justify-content: center;
|
|
2789
|
+
}
|
|
2790
|
+
|
|
2791
|
+
& > [data-dropdown-toggle] pds-icon,
|
|
2792
|
+
& > [data-dropdown-default] pds-icon {
|
|
2793
|
+
pointer-events: none;
|
|
2794
|
+
}
|
|
2795
|
+
}
|
|
2796
|
+
|
|
2762
2797
|
& > :last-child {
|
|
2763
2798
|
position: absolute;
|
|
2764
2799
|
padding: 0 var(--spacing-2);
|
|
@@ -2907,7 +2942,7 @@ nav[data-dropdown] {
|
|
|
2907
2942
|
opacity: 0;
|
|
2908
2943
|
}
|
|
2909
2944
|
}
|
|
2910
|
-
`}#xe(){let{layout:e={}}=this.options.design,r=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},n=e.gridSystem||{},o=n.columns||[1,2,3,4,6],a=n.autoFitBreakpoints||{sm:"150px",md:"250px",lg:"350px",xl:"450px"},i=this.#
|
|
2945
|
+
`}#xe(){let{layout:e={}}=this.options.design,r=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},n=e.gridSystem||{},o=n.columns||[1,2,3,4,6],a=n.autoFitBreakpoints||{sm:"150px",md:"250px",lg:"350px",xl:"450px"},i=this.#A(e),s=[`
|
|
2911
2946
|
/* ============================================================================
|
|
2912
2947
|
Layout Utilities
|
|
2913
2948
|
Modern grid and flex system for building responsive layouts
|
|
@@ -3051,7 +3086,7 @@ nav[data-dropdown] {
|
|
|
3051
3086
|
height: auto;
|
|
3052
3087
|
}
|
|
3053
3088
|
|
|
3054
|
-
`}#ke(){let{layout:e={},a11y:r={}}=this.options.design,n=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},o=r.minTouchTarget
|
|
3089
|
+
`}#ke(){let{layout:e={},a11y:r={}}=this.options.design,n=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},o=r.minTouchTarget||S.TouchTargetSizes.standard;return`/* Mobile-First Responsive Design */
|
|
3055
3090
|
|
|
3056
3091
|
/* Small devices (${n.sm}px and up) */
|
|
3057
3092
|
@media (min-width: ${n.sm}px) {
|
|
@@ -3171,7 +3206,7 @@ nav[data-dropdown] {
|
|
|
3171
3206
|
${this.#re(e,s)}
|
|
3172
3207
|
}`];return p.push(`
|
|
3173
3208
|
/* Non-layered dark variables fallback (ensures attribute wins) */
|
|
3174
|
-
`),p.push(this.#te(e,s)),p.join("")}#Le(){let{advanced:e={},a11y:r={},layout:n={}}=this.options.design,o=e.tabSize
|
|
3209
|
+
`),p.push(this.#te(e,s)),p.join("")}#Le(){let{advanced:e={},a11y:r={},layout:n={}}=this.options.design,o=e.tabSize||S.TabSizes.standard,a=r.minTouchTarget||S.TouchTargetSizes.standard,i=n.breakpoints||{sm:640,md:768,lg:1024,xl:1280};return`@layer primitives {
|
|
3175
3210
|
/* Base HTML reset */
|
|
3176
3211
|
*, *::before, *::after {
|
|
3177
3212
|
box-sizing: border-box;
|
|
@@ -3815,17 +3850,17 @@ ${this.#we()}
|
|
|
3815
3850
|
${this.#ke()}
|
|
3816
3851
|
|
|
3817
3852
|
}
|
|
3818
|
-
`}#Ee(){this.#a={tokens:new CSSStyleSheet,primitives:new CSSStyleSheet,components:new CSSStyleSheet,utilities:new CSSStyleSheet},this.#
|
|
3853
|
+
`}#Ee(){this.#a={tokens:new CSSStyleSheet,primitives:new CSSStyleSheet,components:new CSSStyleSheet,utilities:new CSSStyleSheet},this.#Ae()}#Ae(){this.#a.tokens.replaceSync(this.#e.tokens),this.#a.primitives.replaceSync(this.#e.primitives),this.#a.components.replaceSync(this.#e.components),this.#a.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}
|
|
3819
3854
|
${this.#e.primitives}
|
|
3820
3855
|
${this.#e.components}
|
|
3821
|
-
${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
|
|
3856
|
+
${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 G<"u"?G:null,enums:typeof S<"u"?S: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=[],r=this.tokens.colors;for(let[n,o]of Object.entries(r))typeof o=="object"&&o!==null&&e.push({name:n,scale:o});return e},getColorScale:e=>this.tokens.colors[e]||null,getSpacingValues:()=>Object.entries(this.tokens.spacing).map(([e,r])=>({key:e,value:r})),getTypography:()=>this.tokens.typography,getLayerCSS:e=>{let r=["tokens","primitives","components","utilities"];if(!r.includes(e))throw new Error(`Invalid layer: ${e}. Must be one of ${r.join(", ")}`);return this.#e?.[e]||""},usesEnumValue:(e,r)=>{let n=this.options.design||{};return JSON.stringify(n).includes(r)}}}}get tokensStylesheet(){return this.#a?.tokens}get primitivesStylesheet(){return this.#a?.primitives}get componentsStylesheet(){return this.#a?.components}get utilitiesStylesheet(){return this.#a?.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,r){let n=r.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$/g,"\\$");return`// Pure Design System - ${e}
|
|
3822
3857
|
// Auto-generated - do not edit directly
|
|
3823
3858
|
|
|
3824
3859
|
export const ${e} = new CSSStyleSheet();
|
|
3825
3860
|
${e}.replaceSync(\`${n}\`);
|
|
3826
3861
|
|
|
3827
3862
|
export const ${e}CSS = \`${n}\`;
|
|
3828
|
-
`}};function Fr(t={},e={}){let r=Number(e.minContrast||4.5),n=Number(e.minMutedContrast||3),o=!!e.extendedChecks,a=e.warnOnHueDrift!==!1,i=Number.isFinite(Number(e.maxHueDrift))?Number(e.maxHueDrift):35,s=Number.isFinite(Number(e.minSaturationForHueWarning))?Number(e.minSaturationForHueWarning):18,d=g=>{let y=String(g||"").trim().match(/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/);if(!y)return null;let v=y[1];return`#${(v.length===3?v.split("").map(w=>w+w).join(""):v).toLowerCase()}`},l=g=>{let f=d(g);if(!f)return null;let y=f.replace("#",""),v=y.length===3?y.split("").map(w=>w+w).join(""):y,m=parseInt(v||"0",16);return{r:m>>16&255,g:m>>8&255,b:m&255}},u=g=>{let f=l(g);if(!f)return 0;let{r:y,g:v,b:m}=f,w=[y/255,v/255,m/255].map(A=>A<=.03928?A/12.92:Math.pow((A+.055)/1.055,2.4));return .2126*w[0]+.7152*w[1]+.0722*w[2]},c=(g,f)=>{if(!g||!f)return 0;let y=u(g),v=u(f),m=Math.max(y,v),w=Math.min(y,v);return(m+.05)/(w+.05)},p=g=>{let f=l(g);if(!f)return null;let y=f.r/255,v=f.g/255,m=f.b/255,w=Math.max(y,v,m),A=Math.min(y,v,m),C=w-A,R=0;C!==0&&(w===y?R=(v-m)/C%6:w===v?R=(m-y)/C+2:R=(y-v)/C+4,R*=60,R<0&&(R+=360));let z=(w+A)/2,M=C===0?0:C/(1-Math.abs(2*z-1));return{h:R,s:M*100,l:z*100}},b=(g,f)=>{if(!Number.isFinite(g)||!Number.isFinite(f))return null;let y=Math.abs(g-f);return Math.min(y,360-y)},h=[],S=[];try{let f=new X({design:structuredClone(t)}).tokens.colors,y={surfaceBg:f.surface?.base,surfaceText:f.gray?.[900]||"#000000",surfaceTextSecondary:f.gray?.[700]||f.gray?.[800]||f.gray?.[900],surfaceTextMuted:f.gray?.[500]||f.gray?.[600]||f.gray?.[700],surfaceElevated:f.surface?.elevated||f.surface?.base,primaryFill:f.interactive?.light?.fill||f.primary?.[600],primaryText:f.interactive?.light?.text||f.primary?.[600],accentFill:f.accent?.[600]||f.accent?.[500],successFill:f.success?.[600]||f.success?.[500],warningFill:f.warning?.[600]||f.warning?.[500],dangerFill:f.danger?.[600]||f.danger?.[500],infoFill:f.info?.[600]||f.info?.[500]},v=R=>Math.max(c(R,"#ffffff"),c(R,"#000000")),m=c(y.primaryFill,"#ffffff");m<r&&h.push({path:"/colors/primary",message:`Primary button contrast too low in light theme (${m.toFixed(2)} < ${r}). Choose a darker primary.`,ratio:m,min:r,context:"light/btn-primary"});let w=c(y.surfaceBg,y.surfaceText);if(w<r&&h.push({path:"/colors/background",message:`Base text contrast on surface (light) is too low (${w.toFixed(2)} < ${r}). Adjust background or secondary (gray).`,ratio:w,min:r,context:"light/surface-text"}),o){let R=c(y.surfaceBg,y.surfaceTextSecondary);R<r&&h.push({path:"/colors/secondary",message:`Secondary text contrast on base surface (light) is too low (${R.toFixed(2)} < ${r}).`,ratio:R,min:r,context:"light/surface-text-secondary"});let z=c(y.surfaceBg,y.surfaceTextMuted);z<n&&h.push({path:"/colors/secondary",message:`Muted text contrast on base surface (light) is too low (${z.toFixed(2)} < ${n}).`,ratio:z,min:n,context:"light/surface-text-muted"});let M=c(y.surfaceElevated,y.surfaceText);M<r&&h.push({path:"/colors/background",message:`Elevated surface text contrast (light) is too low (${M.toFixed(2)} < ${r}).`,ratio:M,min:r,context:"light/surface-elevated-text"})}let A=c(y.primaryText,y.surfaceBg);A<r&&h.push({path:"/colors/primary",message:`Primary text on surface is too low for outline/link styles (light) (${A.toFixed(2)} < ${r}). Choose a darker primary or lighter surface.`,ratio:A,min:r,context:"light/outline"}),o&&[{path:"/colors/accent",key:"accent",value:y.accentFill},{path:"/colors/success",key:"success",value:y.successFill},{path:"/colors/warning",key:"warning",value:y.warningFill},{path:"/colors/danger",key:"danger",value:y.dangerFill},{path:"/colors/info",key:"info",value:y.infoFill}].forEach(z=>{if(!z?.value)return;let M=v(z.value);M<r&&h.push({path:z.path,message:`${z.key} fill color cannot achieve accessible text contrast (${M.toFixed(2)} < ${r}) with either white or black text.`,ratio:M,min:r,context:`light/${z.key}-fill`})});let C=f.dark;if(C){let R={surfaceBg:C.surface?.base||f.surface?.inverse,surfaceText:C.gray?.[50]||C.gray?.[100]||"#ffffff",surfaceTextMuted:C.gray?.[300]||C.gray?.[400]||C.gray?.[500],primaryFill:f.interactive?.dark?.fill||C.primary?.[600],primaryText:f.interactive?.dark?.text||C.primary?.[600]},z=c(R.primaryFill,"#ffffff");z<r&&h.push({path:"/colors/darkMode/primary",message:`Primary button contrast too low in dark theme (${z.toFixed(2)} < ${r}). Override darkMode.primary or pick a brighter hue.`,ratio:z,min:r,context:"dark/btn-primary"});let M=c(R.primaryText,R.surfaceBg);if(M<r&&h.push({path:"/colors/darkMode/primary",message:`Primary text on surface is too low for outline/link styles (dark) (${M.toFixed(2)} < ${r}). Override darkMode.primary/background.`,ratio:M,min:r,context:"dark/outline"}),o){let P=c(R.surfaceBg,R.surfaceText);P<r&&h.push({path:"/colors/darkMode/background",message:`Base text contrast on surface (dark) is too low (${P.toFixed(2)} < ${r}).`,ratio:P,min:r,context:"dark/surface-text"});let E=c(R.surfaceBg,R.surfaceTextMuted);E<n&&h.push({path:"/colors/darkMode/secondary",message:`Muted text contrast on surface (dark) is too low (${E.toFixed(2)} < ${n}).`,ratio:E,min:n,context:"dark/surface-text-muted"})}}if(a){let R=t?.colors||{},z=R?.darkMode||{};["primary","secondary","accent"].forEach(P=>{let E=R?.[P],k=z?.[P];if(!E||!k)return;let L=p(E),T=p(k);if(!L||!T||L.s<s&&T.s<s)return;let I=b(L.h,T.h);I==null||I<=i||S.push({path:`/colors/darkMode/${P}`,message:`Dark mode ${P} hue drifts ${I.toFixed(1)}deg from light ${P} (${L.h.toFixed(1)}deg -> ${T.h.toFixed(1)}deg). This may reduce cross-theme brand identity consistency.`,context:`dark/identity-hue-${P}`})})}}catch(g){h.push({path:"/",message:`Validation failed: ${String(g?.message||g)}`,ratio:0,min:0})}return{ok:h.length===0,issues:h,warnings:S}}var po=new Set(["log","warn","error","debug","info"]),fo="__PURE_DS_PDS_SINGLETON__",Ht=null,Wt=null;function Nr(){try{let e=(typeof globalThis<"u"?globalThis:window)?.[fo];if(e&&typeof e=="object")return e}catch{return null}return null}function go(t){return!t||typeof t!="object"?null:{mode:t.mode==="live"||t.mode==="static"?t.mode:null,debug:t.debug===!0,thisArg:t.thisArg}}function mo(t){if(typeof t!="string")return"log";let e=t.toLowerCase();return po.has(e)?e:"log"}function ho(){if(typeof Wt=="function")try{let e=go(Wt());if(e)return e}catch{}let t=Nr();if(t){let e=t?.mode||t?.compiled?.mode||(t?.registry?.isLive?"live":"static"),r=(t?.debug||t?.currentConfig?.debug||t?.currentConfig?.design?.debug||t?.compiled?.debug||t?.compiled?.design?.debug||!1)===!0;return{mode:e,debug:r,thisArg:t}}return{mode:null,debug:!1}}function bo(){if(typeof Ht=="function")try{let e=Ht();if(typeof e=="function")return e}catch{}let t=Nr();return typeof t?.logHandler=="function"?t.logHandler:null}function Pr(t,e,...r){if(typeof console>"u")return;let n=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;n&&(r.length>0?n(e,...r):n(e))}function yo(t,e){let r=e?.debug===!0;return!(e?.mode==="static"&&!r||!r&&t!=="error"&&t!=="warn")}function jr({getLogger:t,getContext:e}={}){Ht=typeof t=="function"?t:null,Wt=typeof e=="function"?e:null}function tt(t="log",e,...r){let n=mo(t),o=ho(),a=bo();if(a)try{a.call(o?.thisArg,n,e,...r);return}catch(i){Pr("error","Custom log handler failed:",i)}yo(n,o)&&Pr(n,e,...r)}var vo="en",F={defaultLocale:vo,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},xo=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],wo=t=>!!t&&typeof t!="string"&&typeof t=="object"&&"strTag"in t;function oe(t){return String(t||"").trim().toLowerCase()}function ko(t){let e=oe(t);return e?e.split("-")[0]||e:""}function ue(t){let e=oe(t);if(!e)return F.defaultLocale;let r=F.provider?.resolveLocale;if(typeof r=="function"){let n=oe(r(t));if(n)return n}return e}function So(t){let e="";for(let r=0;r<=t.length-1;r+=1)e+=t[r],r<t.length-1&&(e+=`{${r}}`);return e}function ye(t,e){return String(t).replace(/\{(\d+)\}/g,(r,n)=>e(Number(n)))}function Ut(t){if(!t||typeof t!="object")return{};let e={};for(let[r,n]of Object.entries(t)){if(typeof n=="string"){e[r]=n;continue}n&&typeof n=="object"&&typeof n.content=="string"&&(e[r]=n.content)}return e}function $o(t){let e=oe(t);if(!e)return[F.defaultLocale];let r=ko(e);return!r||r===e?[e]:[e,r]}function Or(t,e){let r=ue(t);F.messagesByLocale.set(r,Ut(e))}function Hr(t){typeof t=="string"&&t.length>0&&F.requestedKeys.add(t)}function Br(t,e){if(typeof t!="string"||!t.length)return;let r=typeof e=="string"?e:String(e||"");r.length&&(F.valueToKeys.has(r)||F.valueToKeys.set(r,new Set),F.valueToKeys.get(r).add(t))}function Oe(t){let e=$o(t);for(let r of e)if(F.messagesByLocale.has(r))return{locale:r,messages:F.messagesByLocale.get(r)};return null}async function ve(t,e="explicit"){let r=ue(t),n=Oe(r);if(n)return n.messages;let o=r;if(F.loadingByLocale.has(o))return F.loadingByLocale.get(o);if(!F.provider)return{};let a=F.provider.loadLocale||F.provider.setLocale||null;if(typeof a!="function")return{};let i={locale:r,defaultLocale:F.defaultLocale,reason:e,loadedLocales:Array.from(F.messagesByLocale.keys()),messages:{...Oe(r)?.messages||{}},load:e==="set-default"||e==="explicit-load"},s;try{s=a(i)}catch{return{}}if(s&&typeof s.then=="function"){let l=s.then(u=>{let c=Ut(u);return Or(r,c),c}).catch(()=>({})).finally(()=>{F.loadingByLocale.delete(o)});return F.loadingByLocale.set(o,l),l}let d=Ut(s);return Or(r,d),d}function Lo(t){if(!t||typeof t!="object")return"";let r=typeof Element<"u"&&t instanceof Element||t?.nodeType===1?t:null;if(!r)return"";if(r.hasAttribute?.("lang"))return oe(r.getAttribute("lang"));let n=r.closest?.("[lang]");return n&&n.getAttribute?oe(n.getAttribute("lang")):""}function Be(t={}){if(typeof t?.lang=="string"&&t.lang.trim())return ue(t.lang);let e=t?.element||t?.scope||t?.host||t?.contextElement||null,r=Lo(e);if(r)return ue(r);if(typeof document<"u"&&document.documentElement){let n=oe(document.documentElement.getAttribute("lang"));if(n)return ue(n)}return F.defaultLocale}function zo(){let t=new Set([F.defaultLocale]);if(typeof document>"u")return t;let e=oe(document.documentElement?.getAttribute?.("lang"));e&&t.add(ue(e));let r=document.querySelectorAll?.("[lang]")||[];for(let n of r){let o=oe(n.getAttribute("lang"));o&&t.add(ue(o))}return t}async function Co(t){for(let e of t)await ve(e,"lang-detected")}function Eo(t){for(let e of Array.from(F.messagesByLocale.keys()))t.has(e)||F.messagesByLocale.delete(e)}function Mo(t){let e=String(t||""),r=(e.match(/^\s*/)||[""])[0],n=(e.match(/\s*$/)||[""])[0],o=r.length,a=e.length-n.length,i=a>=o?e.slice(o,a):"";return{leading:r,core:i,trailing:n}}function Dr(t){return String(t||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ao(t,e){let r=typeof t=="string"?t:String(t||""),n=typeof e=="string"?e:String(e||""),o=/\{(\d+)\}/g,a=Array.from(r.matchAll(o));if(!a.length)return r===n?[]:null;let i=[],s="^",d=0;for(let c of a){let p=c.index??0;s+=Dr(r.slice(d,p)),s+="([\\s\\S]*?)",i.push(Number(c[1])),d=p+c[0].length}s+=Dr(r.slice(d)),s+="$";let l=new RegExp(s).exec(n);if(!l)return null;let u=[];for(let c=1;c<l.length;c+=1){let p=i[c-1],b=l[c];if(Object.prototype.hasOwnProperty.call(u,p)&&u[p]!==b)return null;u[p]=b}return u}function qt(t,e){if(typeof t!="string"||!t.length)return[];let r=[t];for(let[,n]of F.messagesByLocale.entries()){let o=n?.[t];typeof o=="string"&&o.length&&r.push(o)}for(let n of r){let o=Ao(n,e);if(o)return o}return[]}function Wr(t){if(!t)return null;let e=F.valueToKeys.get(t);if(e&&e.size>0){for(let n of e)if(F.requestedKeys.has(n))return n}if(F.requestedKeys.has(t))return t;let r=Array.from(F.messagesByLocale.entries());for(let n of F.requestedKeys)for(let[,o]of r)if(o&&o[n]===t)return n;return null}function Ur(t){if(!t)return null;let e=null;for(let[r,n]of F.valueToKeys.entries()){if(typeof r!="string"||!r.length||r===t)continue;let o=t.indexOf(r);if(o!==-1)for(let a of n){if(!F.requestedKeys.has(a))continue;let i=qt(a,r),s={key:a,matchedText:r,start:o,end:o+r.length,values:i};(!e||s.matchedText.length>e.matchedText.length)&&(e=s);break}}return e}async function To(t){if(!t||t.nodeType!==3)return;let e=t.parentElement||null;if(!e)return;let{leading:r,core:n,trailing:o}=Mo(t.nodeValue);if(!n)return;let a=F.textNodeKeyMap.get(t)||null;if((!a||!F.requestedKeys.has(a))&&(a=Wr(n)),!a){let c=Ur(n);if(!c)return;let p=Be({element:e});await ve(p,"text-node");let b=xe(c.key,c.values,{element:e},null),h=c.values.length?ye(b,f=>c.values[f]):b,S=n.slice(0,c.start)+h+n.slice(c.end),g=`${r}${S}${o}`;g!==t.nodeValue&&(t.nodeValue=g);return}F.textNodeKeyMap.set(t,a);let i=Be({element:e});await ve(i,"text-node");let s=qt(a,n),d=xe(a,s,{element:e},null),l=s.length?ye(d,c=>s[c]):d,u=`${r}${l}${o}`;u!==t.nodeValue&&(t.nodeValue=u)}async function Ro(){if(typeof document>"u"||F.requestedKeys.size===0)return;let t=document.body||document.documentElement;if(!t||typeof document.createTreeWalker!="function")return;let e=[],r=new Set,n=a=>{!a||r.has(a)||(r.add(a),e.push(a))};n(t);for(let a=0;a<e.length;a+=1){let i=e[a];if(!i||typeof i.querySelectorAll!="function")continue;let s=i.querySelectorAll("*");for(let d of s){let l=d?.shadowRoot;l&&n(l)}}let o=[];for(let a of e){let i=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);for(;i.nextNode();)o.push(i.currentNode)}for(let a of o)await To(a)}function Io(t){let e=F.attributeKeyMap.get(t);return e||(e=new Map,F.attributeKeyMap.set(t,e)),e}async function _o(t,e){if(!t||typeof t.getAttribute!="function")return;let r=t.getAttribute(e);if(typeof r!="string"||!r.length)return;let n=Io(t),o=n.get(e)||null;if((!o||!F.requestedKeys.has(o))&&(o=Wr(r)),!o){let l=Ur(r);if(!l)return;let u=Be({element:t});await ve(u,"attribute");let c=xe(l.key,l.values,{element:t},null),p=l.values.length?ye(c,h=>l.values[h]):c,b=r.slice(0,l.start)+p+r.slice(l.end);b!==r&&t.setAttribute(e,b),n.set(e,l.key);return}n.set(e,o);let a=Be({element:t});await ve(a,"attribute");let i=qt(o,r),s=xe(o,i,{element:t},null),d=i.length?ye(s,l=>i[l]):s;d!==r&&t.setAttribute(e,d)}async function Fo(){if(typeof document>"u"||F.requestedKeys.size===0)return;let t=document.body||document.documentElement;if(!t)return;let e=[],r=new Set,n=o=>{!o||r.has(o)||(r.add(o),e.push(o))};n(t);for(let o=0;o<e.length;o+=1){let a=e[o];if(!a||typeof a.querySelectorAll!="function")continue;let i=a.querySelectorAll("*");for(let s of i){let d=s?.shadowRoot;d&&n(d)}}for(let o of e){if(!o||typeof o.querySelectorAll!="function")continue;let a=o.querySelectorAll("*");for(let i of a)for(let s of xo)i.hasAttribute(s)&&await _o(i,s)}}async function Po(){let t=zo();await Co(t),await Ro(),await Fo(),Eo(t)}function No(){typeof window>"u"||(F.reconcileTimer&&clearTimeout(F.reconcileTimer),F.reconcileTimer=setTimeout(()=>{F.reconcileTimer=null,Po()},16))}function xe(t,e=[],r={},n=null){let o=Be(r),a=Oe(o);a||ve(o,"msg");let i=Oe(o)?.messages||{},s=Oe(F.defaultLocale)?.messages||{},d={key:t,values:e,options:r,locale:o,defaultLocale:F.defaultLocale,messages:i,messagesByLocale:Object.fromEntries(Array.from(F.messagesByLocale.entries())),template:n},l,u=!!a,c=o===F.defaultLocale;typeof F.provider?.translate=="function"&&(l=F.provider.translate(d));let p=null;if(l==null&&(l=i[t]),l==null&&(l=s[t],p=l==null?null:"default"),l==null&&(l=t,p="key"),u&&!c&&p){let h=`${o}::${t}`;F.missingWarnings.has(h)||(F.missingWarnings.add(h),tt("warn",`[i18n] Missing translation for locale "${o}" and key "${t}"; using ${p} fallback.`))}let b=typeof l=="string"?l:String(l);if(Br(t,b),Array.isArray(e)&&e.length>0){let h=ye(b,S=>e[S]);h!==b&&Br(t,h)}return b}var jo=(t,e,r={})=>{let n=So(t);Hr(n);let o=xe(n,e,r,{strings:t,values:e});return ye(o,a=>e[a])};var se=(t,e={})=>{if(!t)return"";if(wo(t))return jo(t.strings,t.values,e);let r=String(t);Hr(r);let n=xe(r,[],e,null);return!e?.element&&!e?.scope&&!e?.host&&!e?.contextElement&&!e?.lang&&No(),n};var Gt=class extends EventTarget{constructor(){super(),this.mode=null,this.compiled=null,this.log=()=>{},this.logHandler=null}},qr="__PURE_DS_PDS_SINGLETON__",Kt=typeof globalThis<"u"?globalThis:window,Vt=Kt?.[qr],x=Vt&&typeof Vt.addEventListener=="function"?Vt:new Gt;Kt&&(Kt[qr]=x);typeof x.log!="function"&&(x.log=(t="log",e,...r)=>{if(typeof console>"u")return;let n=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;n&&(r.length>0?n(e,...r):n(e))});typeof x.logHandler!="function"&&(x.logHandler=null);var Jt=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(r){x.log("error",`Registry: failed to load static ${e}:`,r),x.log("error",`Registry: looking for ${this._staticPaths[e]}`),x.log("error","Registry: make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let n=new CSSStyleSheet;return n.replaceSync("/* Failed to load "+e+" */"),n}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},we=new Jt;function Oo(t){try{if(typeof document>"u")return;if(typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype){let n=new CSSStyleSheet;n.replaceSync(t),n._pds=!0;let o=(document.adoptedStyleSheets||[]).filter(a=>a._pds!==!0);document.adoptedStyleSheets=[...o,n];return}let e="pds-runtime-stylesheet",r=document.getElementById(e);if(!r){r=document.createElement("style"),r.id=e,r.type="text/css";let n=document.head||document.getElementsByTagName("head")[0];n?n.appendChild(r):document.documentElement.appendChild(r)}r.textContent=t}catch(e){x.log("warn","installRuntimeStyles failed:",e)}}function Vr(t){let e=t;if(!e||typeof e!="object"){x.log("error","Runtime applyStyles requires an explicit generator instance in live mode");return}let r=e.layeredCSS||e.css||"";if(!r){e.options?.log?.("warn","Runtime: no CSS available on generator to apply");return}Oo(r)}async function rt(t,e=[],r=null){try{let n=r?.primitivesStylesheet?r.primitivesStylesheet:await we.getStylesheet("primitives");t.adoptedStyleSheets=[n,...e]}catch(n){let o=t.host?.tagName?.toLowerCase()||"unknown";x.log("error",`Adopter: <${o}> failed to adopt primitives:`,n),t.adoptedStyleSheets=e}}async function nt(t,e=["primitives"],r=[],n=null){let o=Array.isArray(r)?r.filter(Boolean):[];if(o.length){let i=(Array.isArray(t.adoptedStyleSheets)?t.adoptedStyleSheets:[]).filter(s=>!o.includes(s));t.adoptedStyleSheets=[...i,...o]}try{let i=(await Promise.all(e.map(async s=>{if(n)switch(s){case"tokens":return n.tokensStylesheet;case"primitives":return n.primitivesStylesheet;case"components":return n.componentsStylesheet;case"utilities":return n.utilitiesStylesheet;default:break}return we.getStylesheet(s)}))).filter(s=>s!==null);t.adoptedStyleSheets=[...i,...o]}catch(a){let i=t.host?.tagName?.toLowerCase()||"unknown";x.log("error",`Adopter: <${i}> failed to adopt layers:`,a),t.adoptedStyleSheets=o}}function Gr(t){let e=new CSSStyleSheet;return e.replaceSync(t),e}var Bo=[{selector:".accordion"},{selector:"nav[data-dropdown]"},{selector:"label[data-toggle]"},{selector:"label[data-color]"},{selector:'input[type="range"]'},{selector:"form[data-required]"},{selector:"fieldset[role=group][data-open]"},{selector:"[data-clip]"},{selector:"button, a[class*='btn-']"}];function Do(t){t.dataset.enhancedAccordion||(t.dataset.enhancedAccordion="true",t.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===t&&t.querySelectorAll(":scope > details[open]").forEach(r=>{r!==e.target&&(r.open=!1)})},!0))}function Ho(t){if(t.dataset.enhancedDropdown)return;t.dataset.enhancedDropdown="true";let e=t.lastElementChild;if(!e)return;let r=t.querySelector("[data-dropdown-toggle]")||t.querySelector("button"),n=typeof HTMLElement<"u"&&"showPopover"in HTMLElement.prototype&&"hidePopover"in HTMLElement.prototype;r&&!r.hasAttribute("type")&&r.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`);let o=e.tagName?.toLowerCase()==="menu",a=8;if(o&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),r&&(r.setAttribute("aria-haspopup","true"),r.setAttribute("aria-controls",e.id),r.setAttribute("aria-expanded","false")),!n){let z="__PDS_DROPDOWN_POPOVER_WARNED__";globalThis[z]||(globalThis[z]=!0,console.warn("[PDS] nav[data-dropdown] requires the Popover API. Add a popover polyfill (recommended: @oddbird/popover-polyfill) for browsers without support."));return}e.setAttribute("popover","auto");let i=()=>{let z=e.getAttribute("style");e.style.visibility="hidden",e.style.display="inline-block",e.style.pointerEvents="none";let M=e.getBoundingClientRect(),P=Math.max(e.offsetWidth||0,e.scrollWidth||0,M.width||0,1),E=Math.max(e.offsetHeight||0,e.scrollHeight||0,M.height||0,1);return z===null?e.removeAttribute("style"):e.setAttribute("style",z),{width:P,height:E}},s=()=>{try{return e.matches(":popover-open")}catch{return!1}},d=()=>{e.setAttribute("aria-hidden","true"),r?.setAttribute("aria-expanded","false")},l=()=>{e.setAttribute("aria-hidden","false"),r?.setAttribute("aria-expanded","true")},u=()=>{let z=(t.getAttribute("data-direction")||t.getAttribute("data-dropdown-direction")||t.getAttribute("data-mode")||"auto").toLowerCase();if(z==="up"||z==="down")return z;let M=(r||t).getBoundingClientRect(),{height:P}=i(),E=Math.max(0,window.innerHeight-M.bottom),k=Math.max(0,M.top),L=E>=P,T=k>=P;return L&&!T?"down":T&&!L?"up":L&&T?"down":k>E?"up":"down"},c=()=>{let z=(t.getAttribute("data-align")||t.getAttribute("data-dropdown-align")||"auto").toLowerCase();if(z==="left"||z==="right"||z==="start"||z==="end")return z==="start"?"left":z==="end"?"right":z;let M=(r||t).getBoundingClientRect(),{width:P}=i(),E=Math.max(0,window.innerWidth-M.left),k=Math.max(0,M.right),L=E>=P,T=k>=P;return L&&!T?"left":T&&!L?"right":L&&T?"left":k>E?"right":"left"},p=(z,M=8)=>{let P=getComputedStyle(t).getPropertyValue(z).trim();if(!P)return M;let E=document.createElement("span");E.style.position="fixed",E.style.visibility="hidden",E.style.pointerEvents="none",E.style.height=P,document.body.appendChild(E);let k=Number.parseFloat(getComputedStyle(E).height);return E.remove(),Number.isFinite(k)?k:M},b=()=>{["position","left","top","right","bottom","margin-top","margin-bottom","max-width","max-inline-size","max-height","overflow"].forEach(z=>e.style.removeProperty(z))},h=()=>{if(!s())return;let z=(r||t).getBoundingClientRect(),M=window.visualViewport,P=M?.width||document.documentElement?.clientWidth||window.innerWidth,E=M?.height||document.documentElement?.clientHeight||window.innerHeight,k=M?.offsetLeft||0,L=M?.offsetTop||0,T=Math.max(1,P-a*2),I=Math.max(1,E-a*2);e.style.maxWidth=`${Math.round(T)}px`,e.style.maxInlineSize=`${Math.round(T)}px`,e.style.maxHeight=`${Math.round(I)}px`,e.style.overflow="auto";let{width:O,height:B}=i(),K=p("--spacing-2",8),N=u(),D=c();t.dataset.dropdownDirection=N,t.dataset.dropdownAlign=D;let Y=D==="right"?z.right-O:z.left;O>=T-1?Y=k+a:Y=Math.max(k+a,Math.min(Y,k+P-O-a));let Re=N==="up"?z.top-K-B:z.bottom+K;Re=Math.max(L+a,Math.min(Re,L+E-B-a)),Object.assign(e.style,{position:"fixed",left:`${Math.round(Y)}px`,top:`${Math.round(Re)}px`,right:"auto",bottom:"auto",marginTop:"0",marginBottom:"0"})},S=null,g=()=>{S||(S=()=>h(),window.addEventListener("resize",S),window.addEventListener("scroll",S,!0))},f=()=>{S&&(window.removeEventListener("resize",S),window.removeEventListener("scroll",S,!0),S=null)},y=null,v=null,m=()=>{y||typeof document>"u"||(y=()=>{s()&&(t.dataset.dropdownDirection=u(),t.dataset.dropdownAlign=c(),v!==null&&cancelAnimationFrame(v),v=requestAnimationFrame(()=>{v=null,s()&&h()}))},document.addEventListener("pds:config-changed",y))},w=()=>{!y||typeof document>"u"||(document.removeEventListener("pds:config-changed",y),y=null,v!==null&&(cancelAnimationFrame(v),v=null))};e.addEventListener("toggle",z=>{if(z.newState==="open"){l(),h(),g(),m();return}d(),f(),w(),b()});let A=()=>{s()||(t.dataset.dropdownDirection=u(),t.dataset.dropdownAlign=c(),e.showPopover(),requestAnimationFrame(()=>h()))},C=()=>{s()&&e.hidePopover()},R=()=>{s()?C():A()};d(),e.addEventListener("click",z=>{let M=z.target instanceof Element?z.target:z.target?.parentElement;M&&M.closest("[data-dropdown-close]")&&C()}),r?.addEventListener("click",z=>{z.preventDefault(),z.stopPropagation(),R()}),t.addEventListener("keydown",z=>{z.key==="Escape"&&(C(),r?.focus())})}function Wo(t){if(t.dataset.enhancedToggle)return;t.dataset.enhancedToggle="true";let e=t.querySelector('input[type="checkbox"]');if(!e)return;t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","switch"),t.setAttribute("aria-checked",e.checked?"true":"false");let r=document.createElement("span");r.className="toggle-switch",r.setAttribute("role","presentation"),r.setAttribute("aria-hidden","true");let n=document.createElement("span");n.className="toggle-knob",r.appendChild(n),t.insertBefore(r,e.nextSibling);let o=()=>{t.setAttribute("aria-checked",e.checked?"true":"false")},a=()=>{e.disabled||(e.checked=!e.checked,o(),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new Event("change",{bubbles:!0})))};t.addEventListener("click",i=>{i.preventDefault(),a()}),t.addEventListener("keydown",i=>{(i.key===" "||i.key==="Enter")&&(i.preventDefault(),a())}),e.addEventListener("change",o)}function Uo(t){if(t.dataset.enhancedColorInput)return;let e=t.querySelector('input[type="color"]');if(!e)return;t.dataset.enhancedColorInput="true";let r=t.querySelector(":scope > .color-control"),n=t.querySelector(":scope > .color-control > .color-swatch"),o=t.querySelector(":scope > .color-control > output");r||(r=document.createElement("span"),r.className="color-control",e.before(r)),n||(n=document.createElement("span"),n.className="color-swatch",r.appendChild(n)),e.parentElement!==n&&n.appendChild(e),o||(o=document.createElement("output"),r.appendChild(o));let a=()=>{if(e.dataset.colorUnset==="1"){o.value="",o.textContent=se("not set"),r.dataset.value="",r.dataset.unset="1",n.dataset.unset="1";return}o.value=e.value,o.textContent=e.value,r.dataset.value=e.value,delete r.dataset.unset,delete n.dataset.unset};a();let i=()=>{e.dataset.colorUnset==="1"&&(e.dataset.colorUnset="0"),a()};e.addEventListener("input",i,{passive:!0}),e.addEventListener("change",i,{passive:!0})}function qo(t){if(t.dataset.enhancedRange)return;let e=i=>{if(t.dataset.enhancedRangeProgrammatic)return;t.dataset.enhancedRangeProgrammatic="1";let s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),"value")||Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");s?.get&&s?.set&&Object.defineProperty(t,"value",{configurable:!0,enumerable:s.enumerable,get(){return s.get.call(this)},set(l){s.set.call(this,l),i()}}),new MutationObserver(l=>{l.some(c=>{let p=c.attributeName;return p==="value"||p==="min"||p==="max"})&&i()}).observe(t,{attributes:!0,attributeFilter:["value","min","max"]})},r=t.closest("label"),n=r?.classList.contains("range-output"),o=t.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(t.id=o,n){let i=r.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=i.getAttribute("data-range-label")||r.getAttribute("data-range-label")||"",d=document.createElement("span");d.className="range-output-wrapper",d.style.display="flex",d.style.justifyContent="space-between",d.style.alignItems="center";let l=document.createElement("span");l.textContent=s||i.textContent,d.appendChild(l);let u=document.createElement("output");u.id=a,u.setAttribute("for",o),u.style.color="var(--surface-text-secondary, var(--color-text-secondary))",u.style.fontSize="0.875rem",u.textContent=t.value,d.appendChild(u),i.textContent="",i.appendChild(d);let c=()=>{u.textContent=t.value};t.addEventListener("input",c),t.addEventListener("change",c),e(c),c()}}else{let i=t.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",t.parentNode?.insertBefore(i,t),i.appendChild(t)),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 d=()=>{let c=parseFloat(t.min)||0,p=parseFloat(t.max)||100,b=parseFloat(t.value),h=(b-c)/(p-c);s.style.left=`calc(${h*100}% )`,s.textContent=String(b)},l=()=>s.classList.add("visible"),u=()=>s.classList.remove("visible");t.addEventListener("input",d),t.addEventListener("pointerdown",l),t.addEventListener("pointerup",u),t.addEventListener("pointerleave",u),t.addEventListener("focus",l),t.addEventListener("blur",u),t.addEventListener("change",d),e(d),d()}t.dataset.enhancedRange="1"}function Vo(t){if(t.dataset.enhancedRequired)return;t.dataset.enhancedRequired="true";let e=r=>{let n;if(r.closest("[role$=group]")?n=r.closest("[role$=group]").querySelector("legend"):n=r.closest("label"),!n||n.querySelector(".required-asterisk"))return;let o=document.createElement("span");o.classList.add("required-asterisk"),o.textContent="*",o.style.marginLeft="4px";let a=n.querySelector("span, [data-label]");if(a)a.appendChild(o);else{let s=n.querySelector("input, select, textarea");s?n.insertBefore(o,s):n.appendChild(o)}let i=r.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent=se("* Required fields"),i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};t.querySelectorAll("[required]").forEach(r=>{e(r)})}function Go(t){if(t.dataset.enhancedOpenGroup)return;t.dataset.enhancedOpenGroup="true",t.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder=se("Add item..."),e.classList.add("input-text","input-sm"),e.style.width="auto";let r=()=>t.querySelector('input[type="radio"], input[type="checkbox"]');t.appendChild(e),e.addEventListener("keydown",n=>{if(n.key==="Enter"||n.key==="Tab"){let o=e.value.trim();if(o){n.preventDefault();let a=r(),i=a?.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,d=document.createElement("label"),l=document.createElement("span");l.setAttribute("data-label",""),l.textContent=o;let u=document.createElement("input");u.type=i,u.name=a?.name||t.getAttribute("data-name")||"open-group",u.value=o,u.id=s,d.appendChild(l),d.appendChild(u),t.insertBefore(d,e),e.value=""}}else if(n.key==="Backspace"&&e.value===""){n.preventDefault();let o=t.querySelectorAll("label");o.length>0&&o[o.length-1].remove()}})}function Ko(t){if(t.dataset.enhancedClip)return;t.dataset.enhancedClip="true",t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.hasAttribute("role")||t.setAttribute("role","button");let e=()=>{let n=t.getAttribute("data-clip-open")==="true";t.setAttribute("aria-expanded",n?"true":"false")},r=()=>{let n=t.getAttribute("data-clip-open")==="true";t.setAttribute("data-clip-open",n?"false":"true"),e()};t.addEventListener("click",n=>{n.defaultPrevented||r()}),t.addEventListener("keydown",n=>{(n.key===" "||n.key==="Enter")&&(n.preventDefault(),r())}),e()}function Jo(t){if(t.dataset.enhancedBtnWorking)return;t.dataset.enhancedBtnWorking="true";let e=null,r=!1;new MutationObserver(o=>{o.forEach(a=>{if(a.attributeName==="class"){let i=t.classList.contains("btn-working"),s=t.querySelector("pds-icon");if(i)if(s)e||(e=s.getAttribute("icon")),s.setAttribute("icon","circle-notch");else{let d=document.createElement("pds-icon");d.setAttribute("icon","circle-notch"),d.setAttribute("size","sm"),t.insertBefore(d,t.firstChild),r=!0}else a.oldValue?.includes("btn-working")&&s&&(r?(s.remove(),r=!1):e&&(s.setAttribute("icon",e),e=null))}})}).observe(t,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var Yo=new Map([[".accordion",Do],["nav[data-dropdown]",Ho],["label[data-toggle]",Wo],["label[data-color]",Uo],['input[type="range"]',qo],["form[data-required]",Vo],["fieldset[role=group][data-open]",Go],["[data-clip]",Ko],["button, a[class*='btn-']",Jo]]),ot=Bo.map(t=>({...t,run:Yo.get(t.selector)||(()=>{})}));var Kr=[{selector:".accordion",description:"Ensures only one <details> element can be open at a time within the accordion.",demoHtml:`
|
|
3863
|
+
`}};function jr(t={},e={}){let r=Number(e.minContrast||4.5),n=Number(e.minMutedContrast||3),o=!!e.extendedChecks,a=e.warnOnHueDrift!==!1,i=Number.isFinite(Number(e.maxHueDrift))?Number(e.maxHueDrift):35,s=Number.isFinite(Number(e.minSaturationForHueWarning))?Number(e.minSaturationForHueWarning):18,d=g=>{let y=String(g||"").trim().match(/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/);if(!y)return null;let v=y[1];return`#${(v.length===3?v.split("").map(w=>w+w).join(""):v).toLowerCase()}`},l=g=>{let f=d(g);if(!f)return null;let y=f.replace("#",""),v=y.length===3?y.split("").map(w=>w+w).join(""):y,m=parseInt(v||"0",16);return{r:m>>16&255,g:m>>8&255,b:m&255}},u=g=>{let f=l(g);if(!f)return 0;let{r:y,g:v,b:m}=f,w=[y/255,v/255,m/255].map(A=>A<=.03928?A/12.92:Math.pow((A+.055)/1.055,2.4));return .2126*w[0]+.7152*w[1]+.0722*w[2]},c=(g,f)=>{if(!g||!f)return 0;let y=u(g),v=u(f),m=Math.max(y,v),w=Math.min(y,v);return(m+.05)/(w+.05)},p=g=>{let f=l(g);if(!f)return null;let y=f.r/255,v=f.g/255,m=f.b/255,w=Math.max(y,v,m),A=Math.min(y,v,m),E=w-A,M=0;E!==0&&(w===y?M=(v-m)/E%6:w===v?M=(m-y)/E+2:M=(y-v)/E+4,M*=60,M<0&&(M+=360));let R=(w+A)/2,I=E===0?0:E/(1-Math.abs(2*R-1));return{h:M,s:I*100,l:R*100}},h=(g,f)=>{if(!Number.isFinite(g)||!Number.isFinite(f))return null;let y=Math.abs(g-f);return Math.min(y,360-y)},b=[],$=[];try{let f=new Z({design:structuredClone(t)}).tokens.colors,y={surfaceBg:f.surface?.base,surfaceText:f.gray?.[900]||"#000000",surfaceTextSecondary:f.gray?.[700]||f.gray?.[800]||f.gray?.[900],surfaceTextMuted:f.gray?.[500]||f.gray?.[600]||f.gray?.[700],surfaceElevated:f.surface?.elevated||f.surface?.base,primaryFill:f.interactive?.light?.fill||f.primary?.[600],primaryText:f.interactive?.light?.text||f.primary?.[600],accentFill:f.accent?.[600]||f.accent?.[500],successFill:f.success?.[600]||f.success?.[500],warningFill:f.warning?.[600]||f.warning?.[500],dangerFill:f.danger?.[600]||f.danger?.[500],infoFill:f.info?.[600]||f.info?.[500]},v=M=>Math.max(c(M,"#ffffff"),c(M,"#000000")),m=c(y.primaryFill,"#ffffff");m<r&&b.push({path:"/colors/primary",message:`Primary button contrast too low in light theme (${m.toFixed(2)} < ${r}). Choose a darker primary.`,ratio:m,min:r,context:"light/btn-primary"});let w=c(y.surfaceBg,y.surfaceText);if(w<r&&b.push({path:"/colors/background",message:`Base text contrast on surface (light) is too low (${w.toFixed(2)} < ${r}). Adjust background or secondary (gray).`,ratio:w,min:r,context:"light/surface-text"}),o){let M=c(y.surfaceBg,y.surfaceTextSecondary);M<r&&b.push({path:"/colors/secondary",message:`Secondary text contrast on base surface (light) is too low (${M.toFixed(2)} < ${r}).`,ratio:M,min:r,context:"light/surface-text-secondary"});let R=c(y.surfaceBg,y.surfaceTextMuted);R<n&&b.push({path:"/colors/secondary",message:`Muted text contrast on base surface (light) is too low (${R.toFixed(2)} < ${n}).`,ratio:R,min:n,context:"light/surface-text-muted"});let I=c(y.surfaceElevated,y.surfaceText);I<r&&b.push({path:"/colors/background",message:`Elevated surface text contrast (light) is too low (${I.toFixed(2)} < ${r}).`,ratio:I,min:r,context:"light/surface-elevated-text"})}let A=c(y.primaryText,y.surfaceBg);A<r&&b.push({path:"/colors/primary",message:`Primary text on surface is too low for outline/link styles (light) (${A.toFixed(2)} < ${r}). Choose a darker primary or lighter surface.`,ratio:A,min:r,context:"light/outline"}),o&&[{path:"/colors/accent",key:"accent",value:y.accentFill},{path:"/colors/success",key:"success",value:y.successFill},{path:"/colors/warning",key:"warning",value:y.warningFill},{path:"/colors/danger",key:"danger",value:y.dangerFill},{path:"/colors/info",key:"info",value:y.infoFill}].forEach(R=>{if(!R?.value)return;let I=v(R.value);I<r&&b.push({path:R.path,message:`${R.key} fill color cannot achieve accessible text contrast (${I.toFixed(2)} < ${r}) with either white or black text.`,ratio:I,min:r,context:`light/${R.key}-fill`})});let E=f.dark;if(E){let M={surfaceBg:E.surface?.base||f.surface?.inverse,surfaceText:E.gray?.[50]||E.gray?.[100]||"#ffffff",surfaceTextMuted:E.gray?.[300]||E.gray?.[400]||E.gray?.[500],primaryFill:f.interactive?.dark?.fill||E.primary?.[600],primaryText:f.interactive?.dark?.text||E.primary?.[600]},R=c(M.primaryFill,"#ffffff");R<r&&b.push({path:"/colors/darkMode/primary",message:`Primary button contrast too low in dark theme (${R.toFixed(2)} < ${r}). Override darkMode.primary or pick a brighter hue.`,ratio:R,min:r,context:"dark/btn-primary"});let I=c(M.primaryText,M.surfaceBg);if(I<r&&b.push({path:"/colors/darkMode/primary",message:`Primary text on surface is too low for outline/link styles (dark) (${I.toFixed(2)} < ${r}). Override darkMode.primary/background.`,ratio:I,min:r,context:"dark/outline"}),o){let O=c(M.surfaceBg,M.surfaceText);O<r&&b.push({path:"/colors/darkMode/background",message:`Base text contrast on surface (dark) is too low (${O.toFixed(2)} < ${r}).`,ratio:O,min:r,context:"dark/surface-text"});let T=c(M.surfaceBg,M.surfaceTextMuted);T<n&&b.push({path:"/colors/darkMode/secondary",message:`Muted text contrast on surface (dark) is too low (${T.toFixed(2)} < ${n}).`,ratio:T,min:n,context:"dark/surface-text-muted"})}}if(a){let M=t?.colors||{},R=M?.darkMode||{};["primary","secondary","accent"].forEach(O=>{let T=M?.[O],L=R?.[O];if(!T||!L)return;let z=p(T),k=p(L);if(!z||!k||z.s<s&&k.s<s)return;let C=h(z.h,k.h);C==null||C<=i||$.push({path:`/colors/darkMode/${O}`,message:`Dark mode ${O} hue drifts ${C.toFixed(1)}deg from light ${O} (${z.h.toFixed(1)}deg -> ${k.h.toFixed(1)}deg). This may reduce cross-theme brand identity consistency.`,context:`dark/identity-hue-${O}`})})}}catch(g){b.push({path:"/",message:`Validation failed: ${String(g?.message||g)}`,ratio:0,min:0})}return{ok:b.length===0,issues:b,warnings:$}}var mo=new Set(["log","warn","error","debug","info"]),ho="__PURE_DS_PDS_SINGLETON__",Ut=null,qt=null;function Br(){try{let e=(typeof globalThis<"u"?globalThis:window)?.[ho];if(e&&typeof e=="object")return e}catch{return null}return null}function bo(t){return!t||typeof t!="object"?null:{mode:t.mode==="live"||t.mode==="static"?t.mode:null,debug:t.debug===!0,thisArg:t.thisArg}}function yo(t){if(typeof t!="string")return"log";let e=t.toLowerCase();return mo.has(e)?e:"log"}function vo(){if(typeof qt=="function")try{let e=bo(qt());if(e)return e}catch{}let t=Br();if(t){let e=t?.mode||t?.compiled?.mode||(t?.registry?.isLive?"live":"static"),r=(t?.debug||t?.currentConfig?.debug||t?.currentConfig?.design?.debug||t?.compiled?.debug||t?.compiled?.design?.debug||!1)===!0;return{mode:e,debug:r,thisArg:t}}return{mode:null,debug:!1}}function xo(){if(typeof Ut=="function")try{let e=Ut();if(typeof e=="function")return e}catch{}let t=Br();return typeof t?.logHandler=="function"?t.logHandler:null}function Or(t,e,...r){if(typeof console>"u")return;let n=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;n&&(r.length>0?n(e,...r):n(e))}function wo(t,e){let r=e?.debug===!0;return!(e?.mode==="static"&&!r||!r&&t!=="error"&&t!=="warn")}function Dr({getLogger:t,getContext:e}={}){Ut=typeof t=="function"?t:null,qt=typeof e=="function"?e:null}function rt(t="log",e,...r){let n=yo(t),o=vo(),a=xo();if(a)try{a.call(o?.thisArg,n,e,...r);return}catch(i){Or("error","Custom log handler failed:",i)}wo(n,o)&&Or(n,e,...r)}var ko="en",F={defaultLocale:ko,provider:null,messagesByLocale:new Map,loadingByLocale:new Map,observer:null,reconcileTimer:null,requestedKeys:new Set,textNodeKeyMap:new WeakMap,attributeKeyMap:new WeakMap,valueToKeys:new Map,missingWarnings:new Set},So=["title","placeholder","aria-label","aria-description","aria-placeholder","aria-roledescription","alt","label"],$o=t=>!!t&&typeof t!="string"&&typeof t=="object"&&"strTag"in t;function ae(t){return String(t||"").trim().toLowerCase()}function Lo(t){let e=ae(t);return e?e.split("-")[0]||e:""}function pe(t){let e=ae(t);if(!e)return F.defaultLocale;let r=F.provider?.resolveLocale;if(typeof r=="function"){let n=ae(r(t));if(n)return n}return e}function zo(t){let e="";for(let r=0;r<=t.length-1;r+=1)e+=t[r],r<t.length-1&&(e+=`{${r}}`);return e}function ve(t,e){return String(t).replace(/\{(\d+)\}/g,(r,n)=>e(Number(n)))}function Vt(t){if(!t||typeof t!="object")return{};let e={};for(let[r,n]of Object.entries(t)){if(typeof n=="string"){e[r]=n;continue}n&&typeof n=="object"&&typeof n.content=="string"&&(e[r]=n.content)}return e}function Co(t){let e=ae(t);if(!e)return[F.defaultLocale];let r=Lo(e);return!r||r===e?[e]:[e,r]}function Hr(t,e){let r=pe(t);F.messagesByLocale.set(r,Vt(e))}function qr(t){typeof t=="string"&&t.length>0&&F.requestedKeys.add(t)}function Wr(t,e){if(typeof t!="string"||!t.length)return;let r=typeof e=="string"?e:String(e||"");r.length&&(F.valueToKeys.has(r)||F.valueToKeys.set(r,new Set),F.valueToKeys.get(r).add(t))}function Oe(t){let e=Co(t);for(let r of e)if(F.messagesByLocale.has(r))return{locale:r,messages:F.messagesByLocale.get(r)};return null}async function xe(t,e="explicit"){let r=pe(t),n=Oe(r);if(n)return n.messages;let o=r;if(F.loadingByLocale.has(o))return F.loadingByLocale.get(o);if(!F.provider)return{};let a=F.provider.loadLocale||F.provider.setLocale||null;if(typeof a!="function")return{};let i={locale:r,defaultLocale:F.defaultLocale,reason:e,loadedLocales:Array.from(F.messagesByLocale.keys()),messages:{...Oe(r)?.messages||{}},load:e==="set-default"||e==="explicit-load"},s;try{s=a(i)}catch{return{}}if(s&&typeof s.then=="function"){let l=s.then(u=>{let c=Vt(u);return Hr(r,c),c}).catch(()=>({})).finally(()=>{F.loadingByLocale.delete(o)});return F.loadingByLocale.set(o,l),l}let d=Vt(s);return Hr(r,d),d}function Eo(t){if(!t||typeof t!="object")return"";let r=typeof Element<"u"&&t instanceof Element||t?.nodeType===1?t:null;if(!r)return"";if(r.hasAttribute?.("lang"))return ae(r.getAttribute("lang"));let n=r.closest?.("[lang]");return n&&n.getAttribute?ae(n.getAttribute("lang")):""}function Be(t={}){if(typeof t?.lang=="string"&&t.lang.trim())return pe(t.lang);let e=t?.element||t?.scope||t?.host||t?.contextElement||null,r=Eo(e);if(r)return pe(r);if(typeof document<"u"&&document.documentElement){let n=ae(document.documentElement.getAttribute("lang"));if(n)return pe(n)}return F.defaultLocale}function Ao(){let t=new Set([F.defaultLocale]);if(typeof document>"u")return t;let e=ae(document.documentElement?.getAttribute?.("lang"));e&&t.add(pe(e));let r=document.querySelectorAll?.("[lang]")||[];for(let n of r){let o=ae(n.getAttribute("lang"));o&&t.add(pe(o))}return t}async function Mo(t){for(let e of t)await xe(e,"lang-detected")}function To(t){for(let e of Array.from(F.messagesByLocale.keys()))t.has(e)||F.messagesByLocale.delete(e)}function Ro(t){let e=String(t||""),r=(e.match(/^\s*/)||[""])[0],n=(e.match(/\s*$/)||[""])[0],o=r.length,a=e.length-n.length,i=a>=o?e.slice(o,a):"";return{leading:r,core:i,trailing:n}}function Ur(t){return String(t||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Io(t,e){let r=typeof t=="string"?t:String(t||""),n=typeof e=="string"?e:String(e||""),o=/\{(\d+)\}/g,a=Array.from(r.matchAll(o));if(!a.length)return r===n?[]:null;let i=[],s="^",d=0;for(let c of a){let p=c.index??0;s+=Ur(r.slice(d,p)),s+="([\\s\\S]*?)",i.push(Number(c[1])),d=p+c[0].length}s+=Ur(r.slice(d)),s+="$";let l=new RegExp(s).exec(n);if(!l)return null;let u=[];for(let c=1;c<l.length;c+=1){let p=i[c-1],h=l[c];if(Object.prototype.hasOwnProperty.call(u,p)&&u[p]!==h)return null;u[p]=h}return u}function Gt(t,e){if(typeof t!="string"||!t.length)return[];let r=[t];for(let[,n]of F.messagesByLocale.entries()){let o=n?.[t];typeof o=="string"&&o.length&&r.push(o)}for(let n of r){let o=Io(n,e);if(o)return o}return[]}function Vr(t){if(!t)return null;let e=F.valueToKeys.get(t);if(e&&e.size>0){for(let n of e)if(F.requestedKeys.has(n))return n}if(F.requestedKeys.has(t))return t;let r=Array.from(F.messagesByLocale.entries());for(let n of F.requestedKeys)for(let[,o]of r)if(o&&o[n]===t)return n;return null}function Gr(t){if(!t)return null;let e=null;for(let[r,n]of F.valueToKeys.entries()){if(typeof r!="string"||!r.length||r===t)continue;let o=t.indexOf(r);if(o!==-1)for(let a of n){if(!F.requestedKeys.has(a))continue;let i=Gt(a,r),s={key:a,matchedText:r,start:o,end:o+r.length,values:i};(!e||s.matchedText.length>e.matchedText.length)&&(e=s);break}}return e}async function _o(t){if(!t||t.nodeType!==3)return;let e=t.parentElement||null;if(!e)return;let{leading:r,core:n,trailing:o}=Ro(t.nodeValue);if(!n)return;let a=F.textNodeKeyMap.get(t)||null;if((!a||!F.requestedKeys.has(a))&&(a=Vr(n)),!a){let c=Gr(n);if(!c)return;let p=Be({element:e});await xe(p,"text-node");let h=we(c.key,c.values,{element:e},null),b=c.values.length?ve(h,f=>c.values[f]):h,$=n.slice(0,c.start)+b+n.slice(c.end),g=`${r}${$}${o}`;g!==t.nodeValue&&(t.nodeValue=g);return}F.textNodeKeyMap.set(t,a);let i=Be({element:e});await xe(i,"text-node");let s=Gt(a,n),d=we(a,s,{element:e},null),l=s.length?ve(d,c=>s[c]):d,u=`${r}${l}${o}`;u!==t.nodeValue&&(t.nodeValue=u)}async function Fo(){if(typeof document>"u"||F.requestedKeys.size===0)return;let t=document.body||document.documentElement;if(!t||typeof document.createTreeWalker!="function")return;let e=[],r=new Set,n=a=>{!a||r.has(a)||(r.add(a),e.push(a))};n(t);for(let a=0;a<e.length;a+=1){let i=e[a];if(!i||typeof i.querySelectorAll!="function")continue;let s=i.querySelectorAll("*");for(let d of s){let l=d?.shadowRoot;l&&n(l)}}let o=[];for(let a of e){let i=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);for(;i.nextNode();)o.push(i.currentNode)}for(let a of o)await _o(a)}function Po(t){let e=F.attributeKeyMap.get(t);return e||(e=new Map,F.attributeKeyMap.set(t,e)),e}async function No(t,e){if(!t||typeof t.getAttribute!="function")return;let r=t.getAttribute(e);if(typeof r!="string"||!r.length)return;let n=Po(t),o=n.get(e)||null;if((!o||!F.requestedKeys.has(o))&&(o=Vr(r)),!o){let l=Gr(r);if(!l)return;let u=Be({element:t});await xe(u,"attribute");let c=we(l.key,l.values,{element:t},null),p=l.values.length?ve(c,b=>l.values[b]):c,h=r.slice(0,l.start)+p+r.slice(l.end);h!==r&&t.setAttribute(e,h),n.set(e,l.key);return}n.set(e,o);let a=Be({element:t});await xe(a,"attribute");let i=Gt(o,r),s=we(o,i,{element:t},null),d=i.length?ve(s,l=>i[l]):s;d!==r&&t.setAttribute(e,d)}async function jo(){if(typeof document>"u"||F.requestedKeys.size===0)return;let t=document.body||document.documentElement;if(!t)return;let e=[],r=new Set,n=o=>{!o||r.has(o)||(r.add(o),e.push(o))};n(t);for(let o=0;o<e.length;o+=1){let a=e[o];if(!a||typeof a.querySelectorAll!="function")continue;let i=a.querySelectorAll("*");for(let s of i){let d=s?.shadowRoot;d&&n(d)}}for(let o of e){if(!o||typeof o.querySelectorAll!="function")continue;let a=o.querySelectorAll("*");for(let i of a)for(let s of So)i.hasAttribute(s)&&await No(i,s)}}async function Oo(){let t=Ao();await Mo(t),await Fo(),await jo(),To(t)}function Bo(){typeof window>"u"||(F.reconcileTimer&&clearTimeout(F.reconcileTimer),F.reconcileTimer=setTimeout(()=>{F.reconcileTimer=null,Oo()},16))}function we(t,e=[],r={},n=null){let o=Be(r),a=Oe(o);a||xe(o,"msg");let i=Oe(o)?.messages||{},s=Oe(F.defaultLocale)?.messages||{},d={key:t,values:e,options:r,locale:o,defaultLocale:F.defaultLocale,messages:i,messagesByLocale:Object.fromEntries(Array.from(F.messagesByLocale.entries())),template:n},l,u=!!a,c=o===F.defaultLocale;typeof F.provider?.translate=="function"&&(l=F.provider.translate(d));let p=null;if(l==null&&(l=i[t]),l==null&&(l=s[t],p=l==null?null:"default"),l==null&&(l=t,p="key"),u&&!c&&p){let b=`${o}::${t}`;F.missingWarnings.has(b)||(F.missingWarnings.add(b),rt("warn",`[i18n] Missing translation for locale "${o}" and key "${t}"; using ${p} fallback.`))}let h=typeof l=="string"?l:String(l);if(Wr(t,h),Array.isArray(e)&&e.length>0){let b=ve(h,$=>e[$]);b!==h&&Wr(t,b)}return h}var Do=(t,e,r={})=>{let n=zo(t);qr(n);let o=we(n,e,r,{strings:t,values:e});return ve(o,a=>e[a])};var ie=(t,e={})=>{if(!t)return"";if($o(t))return Do(t.strings,t.values,e);let r=String(t);qr(r);let n=we(r,[],e,null);return!e?.element&&!e?.scope&&!e?.host&&!e?.contextElement&&!e?.lang&&Bo(),n};var Jt=class extends EventTarget{constructor(){super(),this.mode=null,this.compiled=null,this.log=()=>{},this.logHandler=null}},Kr="__PURE_DS_PDS_SINGLETON__",Yt=typeof globalThis<"u"?globalThis:window,Kt=Yt?.[Kr],x=Kt&&typeof Kt.addEventListener=="function"?Kt:new Jt;Yt&&(Yt[Kr]=x);typeof x.log!="function"&&(x.log=(t="log",e,...r)=>{if(typeof console>"u")return;let n=typeof console[t]=="function"?console[t].bind(console):typeof console.log=="function"?console.log.bind(console):null;n&&(r.length>0?n(e,...r):n(e))});typeof x.logHandler!="function"&&(x.logHandler=null);var Zt=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(r){x.log("error",`Registry: failed to load static ${e}:`,r),x.log("error",`Registry: looking for ${this._staticPaths[e]}`),x.log("error","Registry: make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let n=new CSSStyleSheet;return n.replaceSync("/* Failed to load "+e+" */"),n}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},ke=new Zt;function Ho(t){try{if(typeof document>"u")return;if(typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype){let n=new CSSStyleSheet;n.replaceSync(t),n._pds=!0;let o=(document.adoptedStyleSheets||[]).filter(a=>a._pds!==!0);document.adoptedStyleSheets=[...o,n];return}let e="pds-runtime-stylesheet",r=document.getElementById(e);if(!r){r=document.createElement("style"),r.id=e,r.type="text/css";let n=document.head||document.getElementsByTagName("head")[0];n?n.appendChild(r):document.documentElement.appendChild(r)}r.textContent=t}catch(e){x.log("warn","installRuntimeStyles failed:",e)}}function Jr(t){let e=t;if(!e||typeof e!="object"){x.log("error","Runtime applyStyles requires an explicit generator instance in live mode");return}let r=e.layeredCSS||e.css||"";if(!r){e.options?.log?.("warn","Runtime: no CSS available on generator to apply");return}Ho(r)}async function nt(t,e=[],r=null){try{let n=r?.primitivesStylesheet?r.primitivesStylesheet:await ke.getStylesheet("primitives");t.adoptedStyleSheets=[n,...e]}catch(n){let o=t.host?.tagName?.toLowerCase()||"unknown";x.log("error",`Adopter: <${o}> failed to adopt primitives:`,n),t.adoptedStyleSheets=e}}async function ot(t,e=["primitives"],r=[],n=null){let o=Array.isArray(r)?r.filter(Boolean):[];if(o.length){let i=(Array.isArray(t.adoptedStyleSheets)?t.adoptedStyleSheets:[]).filter(s=>!o.includes(s));t.adoptedStyleSheets=[...i,...o]}try{let i=(await Promise.all(e.map(async s=>{if(n)switch(s){case"tokens":return n.tokensStylesheet;case"primitives":return n.primitivesStylesheet;case"components":return n.componentsStylesheet;case"utilities":return n.utilitiesStylesheet;default:break}return ke.getStylesheet(s)}))).filter(s=>s!==null);t.adoptedStyleSheets=[...i,...o]}catch(a){let i=t.host?.tagName?.toLowerCase()||"unknown";x.log("error",`Adopter: <${i}> failed to adopt layers:`,a),t.adoptedStyleSheets=o}}function Yr(t){let e=new CSSStyleSheet;return e.replaceSync(t),e}var Wo=[{selector:".accordion"},{selector:"nav[data-dropdown]"},{selector:"label[data-toggle]"},{selector:"label[data-color]"},{selector:'input[type="range"]'},{selector:"form[data-required]"},{selector:"fieldset[role=group][data-open]"},{selector:"[data-clip]"},{selector:"button, a[class*='btn-']"}];function Uo(t){t.dataset.enhancedAccordion||(t.dataset.enhancedAccordion="true",t.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===t&&t.querySelectorAll(":scope > details[open]").forEach(r=>{r!==e.target&&(r.open=!1)})},!0))}function qo(t){if(t.dataset.enhancedDropdown)return;t.dataset.enhancedDropdown="true";let e=t.lastElementChild,r=t.classList.contains("split-button");if(!e)return;let n=t.querySelector("[data-dropdown-toggle]")||t.querySelector("button"),o=typeof HTMLElement<"u"&&"showPopover"in HTMLElement.prototype&&"hidePopover"in HTMLElement.prototype;n&&!n.hasAttribute("type")&&n.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`);let a=e.tagName?.toLowerCase()==="menu",i=8;a&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),n&&(n.setAttribute("aria-haspopup","true"),n.setAttribute("aria-controls",e.id),n.setAttribute("aria-expanded","false"));let s=()=>!r||!a?null:e.querySelector(":scope > li[data-default]")||e.querySelector(":scope > li"),d=k=>k?k.querySelector(":scope > a, :scope > button")||k.firstElementChild:null,l=()=>{if(!r||!n)return null;let k=t.querySelector(":scope > [data-dropdown-default]");return k||(k=document.createElement("button"),k.setAttribute("type","button"),k.setAttribute("data-dropdown-default",""),k.className=n.className,t.insertBefore(k,n),k)},u=(k,C)=>{if(!k||!C)return;k.replaceChildren(...Array.from(C.childNodes).map(j=>j.cloneNode(!0)));let N=C.getAttribute("aria-label")||C.textContent?.replace(/\s+/g," ").trim()||ie("Default action");k.setAttribute("aria-label",N),k.title=N},c=()=>{if(!r)return;let k=l(),C=s(),N=d(C);if(!k||!N)return;u(k,N);let j=()=>{N&&typeof N.click=="function"&&N.click()};k.addEventListener("click",H=>{H.preventDefault(),j()})};if(!o){let k="__PDS_DROPDOWN_POPOVER_WARNED__";globalThis[k]||(globalThis[k]=!0,console.warn("[PDS] nav[data-dropdown] requires the Popover API. Add a popover polyfill (recommended: @oddbird/popover-polyfill) for browsers without support."));return}c(),e.setAttribute("popover","auto");let p=()=>{let k=e.getAttribute("style");e.style.visibility="hidden",e.style.display="inline-block",e.style.pointerEvents="none";let C=e.getBoundingClientRect(),N=Math.max(e.offsetWidth||0,e.scrollWidth||0,C.width||0,1),j=Math.max(e.offsetHeight||0,e.scrollHeight||0,C.height||0,1);return k===null?e.removeAttribute("style"):e.setAttribute("style",k),{width:N,height:j}},h=()=>{try{return e.matches(":popover-open")}catch{return!1}},b=()=>{e.setAttribute("aria-hidden","true"),n?.setAttribute("aria-expanded","false")},$=()=>{e.setAttribute("aria-hidden","false"),n?.setAttribute("aria-expanded","true")},g=()=>{let k=(t.getAttribute("data-direction")||t.getAttribute("data-dropdown-direction")||t.getAttribute("data-mode")||"auto").toLowerCase();if(k==="up"||k==="down")return k;let C=(n||t).getBoundingClientRect(),{height:N}=p(),j=Math.max(0,window.innerHeight-C.bottom),H=Math.max(0,C.top),P=j>=N,D=H>=N;return P&&!D?"down":D&&!P?"up":P&&D?"down":H>j?"up":"down"},f=()=>{let k=(t.getAttribute("data-align")||t.getAttribute("data-dropdown-align")||"auto").toLowerCase();if(k==="left"||k==="right"||k==="start"||k==="end")return k==="start"?"left":k==="end"?"right":k;let C=(n||t).getBoundingClientRect(),{width:N}=p(),j=Math.max(0,window.innerWidth-C.left),H=Math.max(0,C.right),P=j>=N,D=H>=N;return P&&!D?"left":D&&!P?"right":P&&D?"left":H>j?"right":"left"},y=(k,C=8)=>{let N=getComputedStyle(t).getPropertyValue(k).trim();if(!N)return C;let j=document.createElement("span");j.style.position="fixed",j.style.visibility="hidden",j.style.pointerEvents="none",j.style.height=N,document.body.appendChild(j);let H=Number.parseFloat(getComputedStyle(j).height);return j.remove(),Number.isFinite(H)?H:C},v=()=>{["position","left","top","right","bottom","margin-top","margin-bottom","max-width","max-inline-size","max-height","overflow"].forEach(k=>e.style.removeProperty(k))},m=()=>{if(!h())return;let k=(n||t).getBoundingClientRect(),C=window.visualViewport,N=C?.width||document.documentElement?.clientWidth||window.innerWidth,j=C?.height||document.documentElement?.clientHeight||window.innerHeight,H=C?.offsetLeft||0,P=C?.offsetTop||0,D=Math.max(1,N-i*2),te=Math.max(1,j-i*2);e.style.maxWidth=`${Math.round(D)}px`,e.style.maxInlineSize=`${Math.round(D)}px`,e.style.maxHeight=`${Math.round(te)}px`,e.style.overflow="auto";let{width:Ie,height:q}=p(),ce=y("--spacing-2",8),re=g(),Sr=f();t.dataset.dropdownDirection=re,t.dataset.dropdownAlign=Sr;let Xe=Sr==="right"?k.right-Ie:k.left;Ie>=D-1?Xe=H+i:Xe=Math.max(H+i,Math.min(Xe,H+N-Ie-i));let Nt=re==="up"?k.top-ce-q:k.bottom+ce;Nt=Math.max(P+i,Math.min(Nt,P+j-q-i)),Object.assign(e.style,{position:"fixed",left:`${Math.round(Xe)}px`,top:`${Math.round(Nt)}px`,right:"auto",bottom:"auto",marginTop:"0",marginBottom:"0"})},w=null,A=()=>{w||(w=()=>m(),window.addEventListener("resize",w),window.addEventListener("scroll",w,!0))},E=()=>{w&&(window.removeEventListener("resize",w),window.removeEventListener("scroll",w,!0),w=null)},M=null,R=null,I=()=>{M||typeof document>"u"||(M=()=>{h()&&(t.dataset.dropdownDirection=g(),t.dataset.dropdownAlign=f(),R!==null&&cancelAnimationFrame(R),R=requestAnimationFrame(()=>{R=null,h()&&m()}))},document.addEventListener("pds:config-changed",M))},O=()=>{!M||typeof document>"u"||(document.removeEventListener("pds:config-changed",M),M=null,R!==null&&(cancelAnimationFrame(R),R=null))};e.addEventListener("toggle",k=>{if(k.newState==="open"){$(),m(),A(),I();return}b(),E(),O(),v()});let T=()=>{h()||(t.dataset.dropdownDirection=g(),t.dataset.dropdownAlign=f(),e.showPopover(),requestAnimationFrame(()=>m()))},L=()=>{h()&&e.hidePopover()},z=()=>{h()?L():T()};b(),e.addEventListener("click",k=>{let C=k.target instanceof Element?k.target:k.target?.parentElement;C&&C.closest("[data-dropdown-close]")&&L()}),n?.addEventListener("click",k=>{k.preventDefault(),k.stopPropagation(),z()}),t.addEventListener("keydown",k=>{k.key==="Escape"&&(L(),n?.focus())})}function Vo(t){if(t.dataset.enhancedToggle)return;t.dataset.enhancedToggle="true";let e=t.querySelector('input[type="checkbox"]');if(!e)return;t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","switch"),t.setAttribute("aria-checked",e.checked?"true":"false");let r=document.createElement("span");r.className="toggle-switch",r.setAttribute("role","presentation"),r.setAttribute("aria-hidden","true");let n=document.createElement("span");n.className="toggle-knob",r.appendChild(n),t.insertBefore(r,e.nextSibling);let o=()=>{t.setAttribute("aria-checked",e.checked?"true":"false")},a=()=>{e.disabled||(e.checked=!e.checked,o(),e.dispatchEvent(new Event("input",{bubbles:!0})),e.dispatchEvent(new Event("change",{bubbles:!0})))};t.addEventListener("click",i=>{i.preventDefault(),a()}),t.addEventListener("keydown",i=>{(i.key===" "||i.key==="Enter")&&(i.preventDefault(),a())}),e.addEventListener("change",o)}function Go(t){if(t.dataset.enhancedColorInput)return;let e=t.querySelector('input[type="color"]');if(!e)return;t.dataset.enhancedColorInput="true";let r=t.querySelector(":scope > .color-control"),n=t.querySelector(":scope > .color-control > .color-swatch"),o=t.querySelector(":scope > .color-control > output");r||(r=document.createElement("span"),r.className="color-control",e.before(r)),n||(n=document.createElement("span"),n.className="color-swatch",r.appendChild(n)),e.parentElement!==n&&n.appendChild(e),o||(o=document.createElement("output"),r.appendChild(o));let a=()=>{if(e.dataset.colorUnset==="1"){o.value="",o.textContent=ie("not set"),r.dataset.value="",r.dataset.unset="1",n.dataset.unset="1";return}o.value=e.value,o.textContent=e.value,r.dataset.value=e.value,delete r.dataset.unset,delete n.dataset.unset};a();let i=()=>{e.dataset.colorUnset==="1"&&(e.dataset.colorUnset="0"),a()};e.addEventListener("input",i,{passive:!0}),e.addEventListener("change",i,{passive:!0})}function Ko(t){if(t.dataset.enhancedRange)return;let e=i=>{if(t.dataset.enhancedRangeProgrammatic)return;t.dataset.enhancedRangeProgrammatic="1";let s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),"value")||Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");s?.get&&s?.set&&Object.defineProperty(t,"value",{configurable:!0,enumerable:s.enumerable,get(){return s.get.call(this)},set(l){s.set.call(this,l),i()}}),new MutationObserver(l=>{l.some(c=>{let p=c.attributeName;return p==="value"||p==="min"||p==="max"})&&i()}).observe(t,{attributes:!0,attributeFilter:["value","min","max"]})},r=t.closest("label"),n=r?.classList.contains("range-output"),o=t.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(t.id=o,n){let i=r.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=i.getAttribute("data-range-label")||r.getAttribute("data-range-label")||"",d=document.createElement("span");d.className="range-output-wrapper",d.style.display="flex",d.style.justifyContent="space-between",d.style.alignItems="center";let l=document.createElement("span");l.textContent=s||i.textContent,d.appendChild(l);let u=document.createElement("output");u.id=a,u.setAttribute("for",o),u.style.color="var(--surface-text-secondary, var(--color-text-secondary))",u.style.fontSize="0.875rem",u.textContent=t.value,d.appendChild(u),i.textContent="",i.appendChild(d);let c=()=>{u.textContent=t.value};t.addEventListener("input",c),t.addEventListener("change",c),e(c),c()}}else{let i=t.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",t.parentNode?.insertBefore(i,t),i.appendChild(t)),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 d=()=>{let c=parseFloat(t.min)||0,p=parseFloat(t.max)||100,h=parseFloat(t.value),b=(h-c)/(p-c);s.style.left=`calc(${b*100}% )`,s.textContent=String(h)},l=()=>s.classList.add("visible"),u=()=>s.classList.remove("visible");t.addEventListener("input",d),t.addEventListener("pointerdown",l),t.addEventListener("pointerup",u),t.addEventListener("pointerleave",u),t.addEventListener("focus",l),t.addEventListener("blur",u),t.addEventListener("change",d),e(d),d()}t.dataset.enhancedRange="1"}function Jo(t){if(t.dataset.enhancedRequired)return;t.dataset.enhancedRequired="true";let e=r=>{let n;if(r.closest("[role$=group]")?n=r.closest("[role$=group]").querySelector("legend"):n=r.closest("label"),!n||n.querySelector(".required-asterisk"))return;let o=document.createElement("span");o.classList.add("required-asterisk"),o.textContent="*",o.style.marginLeft="4px";let a=n.querySelector("span, [data-label]");if(a)a.appendChild(o);else{let s=n.querySelector("input, select, textarea");s?n.insertBefore(o,s):n.appendChild(o)}let i=r.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent=ie("* Required fields"),i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};t.querySelectorAll("[required]").forEach(r=>{e(r)})}function Yo(t){if(t.dataset.enhancedOpenGroup)return;t.dataset.enhancedOpenGroup="true",t.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder=ie("Add item..."),e.classList.add("input-text","input-sm"),e.style.width="auto";let r=()=>t.querySelector('input[type="radio"], input[type="checkbox"]');t.appendChild(e),e.addEventListener("keydown",n=>{if(n.key==="Enter"||n.key==="Tab"){let o=e.value.trim();if(o){n.preventDefault();let a=r(),i=a?.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,d=document.createElement("label"),l=document.createElement("span");l.setAttribute("data-label",""),l.textContent=o;let u=document.createElement("input");u.type=i,u.name=a?.name||t.getAttribute("data-name")||"open-group",u.value=o,u.id=s,d.appendChild(l),d.appendChild(u),t.insertBefore(d,e),e.value=""}}else if(n.key==="Backspace"&&e.value===""){n.preventDefault();let o=t.querySelectorAll("label");o.length>0&&o[o.length-1].remove()}})}function Zo(t){if(t.dataset.enhancedClip)return;t.dataset.enhancedClip="true",t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.hasAttribute("role")||t.setAttribute("role","button");let e=()=>{let n=t.getAttribute("data-clip-open")==="true";t.setAttribute("aria-expanded",n?"true":"false")},r=()=>{let n=t.getAttribute("data-clip-open")==="true";t.setAttribute("data-clip-open",n?"false":"true"),e()};t.addEventListener("click",n=>{n.defaultPrevented||r()}),t.addEventListener("keydown",n=>{(n.key===" "||n.key==="Enter")&&(n.preventDefault(),r())}),e()}function Xo(t){if(t.dataset.enhancedBtnWorking)return;t.dataset.enhancedBtnWorking="true";let e=null,r=!1;new MutationObserver(o=>{o.forEach(a=>{if(a.attributeName==="class"){let i=t.classList.contains("btn-working"),s=t.querySelector("pds-icon");if(i)if(s)e||(e=s.getAttribute("icon")),s.setAttribute("icon","circle-notch");else{let d=document.createElement("pds-icon");d.setAttribute("icon","circle-notch"),d.setAttribute("size","sm"),t.insertBefore(d,t.firstChild),r=!0}else a.oldValue?.includes("btn-working")&&s&&(r?(s.remove(),r=!1):e&&(s.setAttribute("icon",e),e=null))}})}).observe(t,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var Qo=new Map([[".accordion",Uo],["nav[data-dropdown]",qo],["label[data-toggle]",Vo],["label[data-color]",Go],['input[type="range"]',Ko],["form[data-required]",Jo],["fieldset[role=group][data-open]",Yo],["[data-clip]",Zo],["button, a[class*='btn-']",Xo]]),at=Wo.map(t=>({...t,run:Qo.get(t.selector)||(()=>{})}));var Zr=[{selector:".accordion",description:"Ensures only one <details> element can be open at a time within the accordion.",demoHtml:`
|
|
3829
3864
|
<div class="accordion">
|
|
3830
3865
|
<details>
|
|
3831
3866
|
<summary>Section 1</summary>
|
|
@@ -3840,7 +3875,7 @@ export const ${e}CSS = \`${n}\`;
|
|
|
3840
3875
|
<p>Content for section 3</p>
|
|
3841
3876
|
</details>
|
|
3842
3877
|
</div>
|
|
3843
|
-
`.trim()},{selector:"nav[data-dropdown]",description:"Enhances a nav element with data-dropdown to toggle its last child as a dropdown panel (menu, card, form, etc.). Add data-dropdown-close to any clickable descendant that should close the menu on selection.",attributes:[{name:"data-dropdown-close",description:"When clicked (or when a descendant is clicked), closes the currently open dropdown popover.",appliesTo:"Any clickable element inside nav[data-dropdown] menu/panel content"}],demoHtml:`
|
|
3878
|
+
`.trim()},{selector:"nav[data-dropdown]",description:"Enhances a nav element with data-dropdown to toggle its last child as a dropdown panel (menu, card, form, etc.). Add data-dropdown-close to any clickable descendant that should close the menu on selection.",attributes:[{name:"split-button",description:"Class that creates a split-button layout by mirroring the default menu item into a primary action button. Uses the first <li> by default, or <li data-default> when present.",appliesTo:"nav[data-dropdown]"},{name:"data-dropdown-close",description:"When clicked (or when a descendant is clicked), closes the currently open dropdown popover.",appliesTo:"Any clickable element inside nav[data-dropdown] menu/panel content"}],demoHtml:`
|
|
3844
3879
|
<nav data-dropdown>
|
|
3845
3880
|
<button class="btn-primary">Menu</button>
|
|
3846
3881
|
<menu>
|
|
@@ -3890,8 +3925,8 @@ export const ${e}CSS = \`${n}\`;
|
|
|
3890
3925
|
<button class="btn-primary btn-working">
|
|
3891
3926
|
<span>Saving</span>
|
|
3892
3927
|
</button>
|
|
3893
|
-
`.trim()}];var
|
|
3894
|
-
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):x.log("warn",`\u26A0\uFE0F PDS component <${v}> not found. Assets may not be installed.`)}else x.log("error",`\u274C Auto-define error for <${v}>:`,m)},...
|
|
3928
|
+
`.trim()}];var Qr="pds",ea=/^([a-z][a-z0-9+\-.]*:)?\/\//i,Xr=/^[a-z]:/i;function De(t=""){return t.endsWith("/")?t:`${t}/`}function ta(t="",e=Qr){let r=t.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(r)?r:`${r}/${e}`}function ra(t){return t.replace(/^\.\/+/,"")}function na(t){return Xr.test(t)?t.replace(Xr,"").replace(/^\/+/,""):t}function oa(t){return t.startsWith("public/")?t.substring(7):t}function Se(t,e={}){let r=e.segment||Qr,n=e.defaultRoot||`/assets/${r}/`,o=t?.public&&t.public?.root||t?.static&&t.static?.root||null;if(!o||typeof o!="string")return De(n);let a=o.trim();return a?(a=a.replace(/\\/g,"/"),a=ta(a,r),a=De(a),ea.test(a)?a:(a=ra(a),a=na(a),a.startsWith("/")||(a=oa(a),a.startsWith("/")||(a=`/${a}`),a=a.replace(/\/+/g,(i,s)=>s===0?i:"/")),De(a))):De(n)}function en(t){let e=t.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 o=document.createElement("canvas").getContext("2d");if(!o)return!1;let a="mmmmmmmmmmlli",i="72px",s="monospace";o.font=`${i} ${s}`;let d=o.measureText(a).width;o.font=`${i} "${e}", ${s}`;let l=o.measureText(a).width;return d!==l}function aa(t){return t?t.split(",").map(n=>n.trim())[0].replace(/['"]/g,"").trim():null}async function tn(t,e={}){if(!t)return Promise.resolve();let{weights:r=[400,500,600,700],italic:n=!1}=e,o=aa(t);if(!o||en(o))return Promise.resolve();let a=encodeURIComponent(o);return document.querySelector(`link[href*="fonts.googleapis.com"][href*="${a}"]`)?(x.log("log",`Font "${o}" is already loading or loaded`),Promise.resolve()):(x.log("log",`Loading font "${o}" from Google Fonts...`),new Promise((s,d)=>{let l=document.createElement("link");l.rel="stylesheet";let u=n?`ital,wght@0,${r.join(";0,")};1,${r.join(";1,")}`:`wght@${r.join(";")}`;l.href=`https://fonts.googleapis.com/css2?family=${a}:${u}&display=swap`,l.setAttribute("data-font-loader",o),l.onload=()=>{x.log("log",`Successfully loaded font "${o}"`),s()},l.onerror=()=>{x.log("warn",`Failed to load font "${o}" from Google Fonts`),d(new Error(`Failed to load font: ${o}`))},document.head.appendChild(l),setTimeout(()=>{en(o)||x.log("warn",`Font "${o}" did not load within timeout`),s()},5e3)}))}async function Xt(t){if(!t)return Promise.resolve();let e=new Set;t.fontFamilyHeadings&&e.add(t.fontFamilyHeadings),t.fontFamilyBody&&e.add(t.fontFamilyBody),t.fontFamilyMono&&e.add(t.fontFamilyMono);let r=Array.from(e).map(n=>tn(n).catch(o=>{x.log("warn",`Could not load font: ${n}`,o)}));await Promise.all(r)}var er=null;async function sa(){return er||(er=Promise.resolve().then(()=>(nn(),rn)).then(t=>t?.AutoDefiner||t?.default?.AutoDefiner||t?.default).then(t=>{if(typeof t!="function")throw new Error("AutoDefiner constructor not found in pure-web/auto-definer");return t})),er}var la=/^[a-z][a-z0-9+\-.]*:\/\//i,He=(()=>{try{return import.meta.url}catch{return}})(),$e=t=>typeof t=="string"&&t.length&&!t.endsWith("/")?`${t}/`:t;function Le(t,e={}){if(!t||la.test(t))return t;let{preferModule:r=!0}=e,n=()=>{if(!He)return null;try{return new URL(t,He).href}catch{return null}},o=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(t,window.location.origin).href}catch{return null}};return(r?n()||o():o()||n())||t}var on=(()=>{if(He)try{let t=new URL(He);if(/\/public\/assets\/js\//.test(t.pathname))return new URL("../pds/",He).href}catch{return}})(),an=!1;function st(t){an||typeof document>"u"||(an=!0,t.addEventListener("pds:ready",e=>{let r=e.detail?.mode;r&&document.documentElement.classList.add(`pds-${r}`,"pds-ready")}))}function rr(t={},e={}){if(!e||typeof e!="object")return t;let r=Array.isArray(t)?[...t]:{...t};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?r[n]=rr(r[n]&&typeof r[n]=="object"?r[n]:{},o):r[n]=o;return r}function tr(t=""){return String(t).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function fe(t){if(t==null)return t;if(typeof t=="function")return;if(typeof t!="object")return t;if(Array.isArray(t))return t.map(r=>fe(r)).filter(r=>r!==void 0);let e={};for(let r in t)if(t.hasOwnProperty(r)){let n=t[r];if(typeof n!="function"){let o=fe(n);o!==void 0&&(e[r]=o)}}return e}function it(t){let e=fe(t);return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function nr(t={},e={},{presets:r,defaultLog:n,validateDesignConfig:o,validateInitConfig:a}={}){let i=t&&typeof t.log=="function"?t.log:n,s=typeof t=="object"&&("colors"in t||"typography"in t||"spatialRhythm"in t||"shape"in t||"behavior"in t||"layout"in t||"advanced"in t||"a11y"in t||"components"in t||"icons"in t),d=t&&t.enhancers;d&&!Array.isArray(d)&&(d=Object.values(d));let l=d??e.enhancers??[],u=t&&t.preset,c=t&&t.design,p=t&&t.icons&&typeof t.icons=="object"?t.icons:null,h="preset"in(t||{})||"design"in(t||{})||"enhancers"in(t||{});t&&typeof t=="object"&&typeof a=="function"&&a(t,{log:i,context:"PDS.start"});let b,$=null;if(h){c&&typeof c=="object"&&typeof o=="function"&&o(c,{log:i,context:"PDS.start"});let g=String(u||"default").toLowerCase(),f=r?.[g]||Object.values(r||{}).find(j=>tr(j.name)===g||String(j.name||"").toLowerCase()===g);if(!f)throw new Error(`PDS preset not found: "${u||"default"}"`);$={id:f.id||tr(f.name),name:f.name||f.id||String(g)};let y=it(f);if(c&&typeof c=="object"||p){let j=c?fe(c):{},H=p?fe(p):null,P=H?rr(j,{icons:H}):j;y=rr(y,it(P))}let{mode:v,autoDefine:m,applyGlobalStyles:w,manageTheme:A,themeStorageKey:E,preloadStyles:M,criticalLayers:R,managerURL:I,manager:O,localization:T,preset:L,design:z,enhancers:k,log:C,...N}=t;b={...N,design:y,preset:$.name,log:C||n}}else if(s){typeof o=="function"&&o(t,{log:i,context:"PDS.start"});let{log:g,...f}=t;b={design:it(f),log:g||n}}else{let g=r?.default||Object.values(r||{}).find(f=>tr(f.name)==="default");if(!g)throw new Error("PDS default preset not available");$={id:g.id||"default",name:g.name||"Default"},b={design:it(g),preset:$.name,log:n}}return{generatorConfig:b,enhancers:l,presetInfo:$}}function lt({manageTheme:t,themeStorageKey:e,applyResolvedTheme:r,setupSystemListenerIfNeeded:n}){let o="light",a=null;if(t&&typeof window<"u"){try{a=localStorage.getItem(e)||null}catch{a=null}try{r?.(a),n?.(a)}catch{}a?a==="system"?o=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":o=a:o=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}return{resolvedTheme:o,storedTheme:a}}function ze(t,{resolvePublicAssetURL:e}){let r=!!(t?.public?.root||t?.static?.root),n=e(t);return!r&&on&&(n=on),$e(Le(n))}async function ct(t,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:r="/auto-define/",autoDefinePreload:n=[],autoDefineMapper:o=null,enhancers:a=[],autoDefineOverrides:i=null,autoDefinePreferModule:s=!0}=t,d=(()=>{let u=new Map;return(e||[]).forEach(c=>u.set(c.selector,c)),(a||[]).forEach(c=>u.set(c.selector,c)),Array.from(u.values())})(),l=null;if(typeof window<"u"&&typeof document<"u"){let u=await sa(),c=v=>{switch(v){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${v}.js`}},{mapper:p,enhancers:h,...b}=i&&typeof i=="object"?i:{},$=h?Array.isArray(h)?h:typeof h=="object"?Object.values(h):[]:[],g=(()=>{let v=new Map;return(d||[]).forEach(m=>{m?.selector&&v.set(m.selector,m)}),($||[]).forEach(m=>{if(!m?.selector)return;let w=v.get(m.selector)||null;v.set(m.selector,{...w||{},...m,run:typeof m?.run=="function"?m.run:w?.run})}),Array.from(v.values())})(),y={baseURL:r&&$e(Le(r,{preferModule:s})),predefine:n,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:g,onError:(v,m)=>{if(typeof v=="string"&&v.startsWith("pds-")){let A=["pds-form","pds-drawer"].includes(v),E=m?.message?.includes("#pds/lit")||m?.message?.includes("Failed to resolve module specifier");A&&E?x.log("error",`\u274C PDS component <${v}> requires Lit but #pds/lit is not in import map.
|
|
3929
|
+
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):x.log("warn",`\u26A0\uFE0F PDS component <${v}> not found. Assets may not be installed.`)}else x.log("error",`\u274C Auto-define error for <${v}>:`,m)},...b,mapper:v=>{if(customElements.get(v))return null;if(typeof o=="function")try{let m=o(v);return m===void 0?c(v):m}catch(m){return x.log("warn","Custom autoDefine.mapper error; falling back to default:",m?.message||m),c(v)}return c(v)}};l=new u(y),n.length>0&&typeof u.define=="function"&&await u.define(...n,{baseURL:r,mapper:y.mapper,onError:y.onError})}return{autoDefiner:l,mergedEnhancers:d}}var or=["light","dark"],ar=new Set(or);function ir(t){let r=(Array.isArray(t?.themes)?t.themes.map(n=>String(n).toLowerCase()):or).filter(n=>ar.has(n));return r.length?r:or}function Ce(t,{preferDocument:e=!0}={}){let r=String(t||"").toLowerCase();if(ar.has(r))return r;if(e&&typeof document<"u"){let n=document.documentElement?.getAttribute("data-theme");if(ar.has(n))return n}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function ge(t,e){let r=Ce(e);return ir(t).includes(r)}var ln=!1,gt="pds-live-edit-toggle",ur="pds-live-edit-toggle-style";function cn(t,e=new WeakSet){if(!t||typeof t!="object"||e.has(t))return t;e.add(t),Object.freeze(t);for(let r of Object.keys(t))cn(t[r],e);return t}function mt(t){let e=fe(t);return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}function dn(t){return t==null||typeof t!="object"?t:cn(mt(t))}function un(t){if(typeof document>"u"||typeof t!="function")return;if(document.body){t();return}let e=()=>{document.body&&(document.removeEventListener("DOMContentLoaded",e),t())};document.addEventListener("DOMContentLoaded",e,{once:!0})}function ha(t={}){let e=t?.interactive!==!1;typeof document>"u"||un(()=>{if(document.querySelector("pds-live-edit")){if(!e){let r=document.querySelector("pds-live-edit");r&&r.setAttribute("data-pds-live-settings-only","true")}}else{let r=document.createElement("pds-live-edit");e||r.setAttribute("data-pds-live-settings-only","true"),document.body.appendChild(r)}})}function ft(t=0){return new Promise(e=>{setTimeout(e,Math.max(0,Number(t)||0))})}async function We(t={}){let e=t?.mountIfMissing!==!1,r=t?.interactive!==!1,n=typeof t?.requiredMethod=="string"&&t.requiredMethod.trim()?t.requiredMethod.trim():"openDesignSettings",o=Number.isFinite(Number(t?.timeoutMs))?Number(t.timeoutMs):2400;if(typeof document>"u"||!e&&!document.querySelector("pds-live-edit"))return null;e&&ha({interactive:r});let a=Date.now();for(;Date.now()-a<o;){let s=document.querySelector("pds-live-edit");if(!s){await ft(40);continue}if(typeof s?.[n]=="function")return s;if(typeof customElements<"u"&&typeof customElements.whenDefined=="function"){try{await Promise.race([customElements.whenDefined("pds-live-edit"),ft(80)])}catch{await ft(40)}continue}await ft(40)}let i=document.querySelector("pds-live-edit");return i&&typeof i?.[n]=="function"?i:null}function pn(){if(typeof document>"u")return;document.querySelectorAll("pds-live-edit").forEach(e=>{typeof e?.setInteractiveEditingEnabled=="function"&&e.setInteractiveEditingEnabled(!1),e.remove()})}function ba(t){return t?typeof t.isInteractiveEditingEnabled=="function"?!!t.isInteractiveEditingEnabled():!0:!1}function ya(){if(typeof document>"u"||document.getElementById(ur))return;let t=document.createElement("style");t.id=ur,t.textContent=`
|
|
3895
3930
|
:where(.pds-live-edit-toggle-nav) {
|
|
3896
3931
|
position: fixed;
|
|
3897
3932
|
top: var(--spacing-3);
|
|
@@ -3950,16 +3985,16 @@ export const ${e}CSS = \`${n}\`;
|
|
|
3950
3985
|
:where(.pds-live-edit-toggle-nav menu a[data-pds-live-action="reset-config"] pds-icon) {
|
|
3951
3986
|
color: var(--color-danger-text);
|
|
3952
3987
|
}
|
|
3953
|
-
`,document.head.appendChild(t)}function
|
|
3988
|
+
`,document.head.appendChild(t)}function dr(t,e){if(!t)return;t.classList.toggle("btn-primary",e),t.classList.toggle("btn-secondary",!e),t.setAttribute("aria-pressed",e?"true":"false");let r="PDS Manager";t.setAttribute("aria-label",r),t.setAttribute("title",r)}async function va(){if(typeof document>"u")return null;ya();let t=document.getElementById(gt);if(!t){let e=document.createElement("nav");e.className="pds-live-edit-toggle-nav",e.setAttribute("data-dropdown",""),e.setAttribute("data-mode","auto"),e.setAttribute("data-pds-live-edit-ignore","true"),t=document.createElement("button"),t.id=gt,t.type="button",t.className="icon-only btn-secondary",t.setAttribute("data-pds-live-edit-ignore","true"),t.innerHTML='<pds-icon icon="cursor-click" size="sm"></pds-icon>';let r=document.createElement("menu");r.setAttribute("data-pds-live-edit-ignore","true");let n=(i,s,d)=>{let l=document.createElement("li"),u=document.createElement("a");u.href="#",u.dataset.pdsLiveAction=i,u.setAttribute("data-pds-live-edit-ignore","true");let c=document.createElement("pds-icon");return c.setAttribute("icon",d),c.setAttribute("size","sm"),u.append(c,document.createTextNode(` ${s}`)),l.appendChild(u),l},o=()=>{let i=document.createElement("li");i.setAttribute("data-pds-live-edit-ignore","true");let s=document.createElement("hr");return s.setAttribute("aria-hidden","true"),i.appendChild(s),i};r.appendChild(n("toggle",ie("Toggle live editing"),"pencil"));let a=n("open-settings",ie("Open Settings"),"gear");a.setAttribute("data-dropdown-close",""),r.appendChild(a),r.appendChild(n("reset-config",ie("Reset Config"),"arrow-counter-clockwise")),await xa(r),e.append(t,r),un(()=>{document.getElementById(gt)||document.body.appendChild(e)})}return t}async function xa(t){if(t instanceof Element){if(t.__pdsLiveSharedMenuItemInFlight)return t.__pdsLiveSharedMenuItemInFlight;t.__pdsLiveSharedMenuItemInFlight=(async()=>{t.querySelectorAll("li.pds-live-shared-quick-mode-item").forEach(s=>s.remove());let e=await We({mountIfMissing:!0,interactive:!1,requiredMethod:"createSharedQuickModeMenuItem",timeoutMs:7e3});if(!e||typeof e.createSharedQuickModeMenuItem!="function")return;let r=await e.createSharedQuickModeMenuItem();if(!(r instanceof Element))return;r.classList.add("pds-live-shared-quick-mode-item");let o=t.querySelector('a[data-pds-live-action="reset-config"]')?.closest("li")||null,a=o?.previousElementSibling||null,i=a&&a.querySelector?.(":scope > hr")?a:null;if(i){t.insertBefore(r,i);return}if(o){t.insertBefore(r,o);return}t.appendChild(r)})();try{await t.__pdsLiveSharedMenuItemInFlight}finally{t.__pdsLiveSharedMenuItemInFlight=null}}}function wa(){if(typeof document>"u")return;let t=document.getElementById(gt);if(t){let r=t.closest(".pds-live-edit-toggle-nav");r?r.remove():t.remove()}let e=document.getElementById(ur);e&&e.remove(),pn()}async function ka(){if(typeof document>"u")return;let t=await va();if(!t)return;let e=async i=>{if(i){let s=await We({mountIfMissing:!0});s&&typeof s.setInteractiveEditingEnabled=="function"&&s.setInteractiveEditingEnabled(!0)}else pn();dr(t,i)};e(!1);let r=t.closest(".pds-live-edit-toggle-nav")||t;t.__pdsLiveEditActionHandler&&r.removeEventListener("click",t.__pdsLiveEditActionHandler);let n=async i=>{let s=i.target?.closest?.("[data-pds-live-action]");if(!s)return;i.preventDefault();let d=String(s.dataset.pdsLiveAction||"");if(d==="toggle"){let l=await We({mountIfMissing:!1}),u=ba(l);await e(!u);return}if(d==="open-settings"){let l=await We({mountIfMissing:!0,requiredMethod:"openDesignSettings",interactive:!1});l&&typeof l.setInteractiveEditingEnabled=="function"&&l.setInteractiveEditingEnabled(!1),l&&typeof l.openDesignSettings=="function"&&(dr(t,!1),await l.openDesignSettings());return}if(d==="reset-config"){let l=await We({mountIfMissing:!0,requiredMethod:"resetConfig",interactive:!1});dr(t,!1),l&&typeof l.resetConfig=="function"&&await l.resetConfig();return}};t.__pdsLiveEditActionHandler=n,r.addEventListener("click",n),t.__pdsLiveEditDisableHandler&&document.removeEventListener("pds:live-edit:disable",t.__pdsLiveEditDisableHandler),t.__pdsLiveEditEnableHandler&&document.removeEventListener("pds:live-edit:enable",t.__pdsLiveEditEnableHandler);let o=()=>{e(!1)},a=()=>{e(!0)};t.__pdsLiveEditDisableHandler=o,document.addEventListener("pds:live-edit:disable",o),t.__pdsLiveEditEnableHandler=a,document.addEventListener("pds:live-edit:enable",a)}function Sa(){if(typeof window>"u"||!window.localStorage)return null;try{let t=window.localStorage.getItem("pure-ds-config");if(!t)return null;let e=JSON.parse(t);if(e&&("preset"in e||"design"in e))return e}catch{return null}return null}function pr(t={},e={}){if(!e||typeof e!="object")return t;let r=Array.isArray(t)?[...t]:{...t};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?r[n]=pr(r[n]&&typeof r[n]=="object"?r[n]:{},o):r[n]=o;return r}function $a(t){let e=Sa();if(!e||!t||typeof t!="object")return t;let r=e.preset,n=e.design&&typeof e.design=="object"?e.design:null;if(!r&&!n)return t;let o="preset"in t||"design"in t||"enhancers"in t,a={...t};if(r&&(a.preset=r),n)if(o){let i=t.design&&typeof t.design=="object"?t.design:{};a.design=pr(i,n)}else a=pr(t,n);return a}function La(t,e={}){let{hideCategory:r=!0,itemGrid:n="45px 1fr",includeIncompatible:o=!0,disableIncompatible:a=!0,categoryName:i="Presets",theme:s,onSelect:d,iconHandler:l}=e||{},u=Ce(s??t?.theme),c=b=>{let g=h(b?.id)?.colors||{},f=g?.primary,y=g?.secondary,v=g?.accent;return f&&y&&v?`<span style="display:flex;gap:1px;flex-shrink:0;" aria-hidden="true">
|
|
3954
3989
|
<span style="display:inline-block;width:10px;height:20px;background-color:${f};"> </span>
|
|
3955
3990
|
<span style="display:inline-block;width:10px;height:20px;background-color:${y};"> </span>
|
|
3956
3991
|
<span style="display:inline-block;width:10px;height:20px;background-color:${v};"> </span>
|
|
3957
|
-
</span>`:
|
|
3958
|
-
`);if(f){let y=document.head.querySelector("style[data-pds-preload]");y&&y.remove();let v=document.createElement("style");v.setAttribute("data-pds-preload",""),v.textContent=f,document.head.insertBefore(v,document.head.firstChild)}}catch(
|
|
3992
|
+
</span>`:b?.icon?`<pds-icon icon="${b.icon}" size="sm"></pds-icon>`:""},p=()=>{let b=t?.presets||{};return Object.values(b||{}).filter($=>!!($?.id||$?.name))},h=b=>b&&p().find(g=>String(g?.id||g?.name)===String(b))||null;return{hideCategory:r,itemGrid:n,iconHandler:typeof l=="function"?l:c,categories:{[i]:{trigger:()=>!0,getItems:(b={})=>{let $=String(b?.search||"").toLowerCase().trim();return p().filter(f=>{let y=String(f?.name||f?.id||"").toLowerCase(),v=String(f?.description||"").toLowerCase(),m=Array.isArray(f?.tags)?f.tags.map(A=>String(A).toLowerCase()):[];if($&&!(y.includes($)||v.includes($)||m.some(E=>E.includes($))))return!1;let w=ge(f,u);return!(!o&&!w)}).map(f=>{let y=f?.id||f?.name,v=ge(f,u),m=ir(f),w=m.length===1?`${m[0]} only`:`Not available in ${u} mode`,A=String(f?.description||"").trim(),E=v?A:A?`${A} - ${w}`:w;return{id:y,text:f?.name||String(y),description:E,icon:"palette",class:!v&&a?"disabled":"",disabled:!v&&a,tooltip:v?"":w}}).sort((f,y)=>String(f.text||"").localeCompare(String(y.text||"")))},action:async b=>{if(!b?.id||b?.disabled)return b?.id;let $=h(b.id);return $?typeof d=="function"?await d({preset:$,selection:b,resolvedTheme:u}):(typeof t?.applyLivePreset=="function"&&await t.applyLivePreset($.id||b.id),$.id||b.id):b?.id}}}}}async function za(t,{applyResolvedTheme:e,setupSystemListenerIfNeeded:r,emitConfigChanged:n}){if(ln)return;let[o,a,i]=await Promise.all([Promise.resolve().then(()=>(Wt(),Nr)),Promise.resolve().then(()=>(_e(),$r)),Promise.resolve().then(()=>(cr(),pt))]),s=o?.default||o?.ontology,d=o?.findComponentForElement,l=a?.enums;t.ontology=s,t.findComponentForElement=d,t.enums=l,t.common=i||{},t.presets=X,t.configRelations=Mr,t.configSpec=Tr,t.configEditorMetadata=_r,t.configFormSchema=Fr,t.buildConfigFormSchema=ye,t.getConfigEditorMetadata=je,t.enhancerMetadata=Zr,(!Array.isArray(t.defaultEnhancers)||t.defaultEnhancers.length===0)&&(t.defaultEnhancers=Array.isArray(at)?at:[]),t.applyStyles=function(u){let c=u||Z.instance;Jr(c),typeof n=="function"&&n({mode:"live",source:"live:styles-applied"})},t.adoptLayers=function(u,c,p){return ot(u,c,p,Z.instance)},t.adoptPrimitives=function(u,c){return nt(u,c,Z.instance)},t.getGenerator=async function(){return Z},t.buildPresetOmniboxSettings=function(u={}){return La(t,u)},t.applyLivePreset=async function(u,c={}){if(!u)return!1;if(!t.registry?.isLive)return t.log("warn","PDS.applyLivePreset is only available in live mode."),!1;let p=t.currentConfig||{},{design:h,preset:b,...$}=p,g={...mt($),preset:u},f=nr(g,{},{presets:X,defaultLog:Ht,validateDesignConfig:Bt,validateInitConfig:Dt}),y=Ce(t.theme);if(!ge(f.generatorConfig.design,y)){let A=f.presetInfo?.name||f.generatorConfig?.design?.name||u;t.log("warn",`PDS theme "${y}" not supported by preset "${A}".`)}p.theme&&!f.generatorConfig.theme&&(f.generatorConfig.theme=p.theme);let v=new Z(f.generatorConfig);if(f.generatorConfig.design?.typography)try{await Xt(f.generatorConfig.design.typography)}catch(A){f.generatorConfig?.log?.("warn","Failed to load some fonts from Google Fonts:",A)}t.applyStyles?.(v);let m=f.presetInfo||{id:u,name:u};if(t.currentPreset=m,t.compiled=dn({...p,preset:f.generatorConfig.preset,design:f.generatorConfig.design,theme:f.generatorConfig.theme||p.theme}),t.configEditorMetadata=je(f.generatorConfig.design),t.configFormSchema=ye(f.generatorConfig.design),c?.persist!==!1&&typeof window<"u"){let A="pure-ds-config";try{let E=localStorage.getItem(A),M=E?JSON.parse(E):null,R={...M&&typeof M=="object"?M:{},preset:m.id||u,design:mt(f.generatorConfig.design||{})};localStorage.setItem(A,JSON.stringify(R))}catch(E){f.generatorConfig?.log?.("warn","Failed to store preset:",E)}}return!0},t.preloadCritical=function(u,c={}){if(typeof window>"u"||!document.head||!u)return;let{theme:p,layers:h=["tokens"]}=c;try{let b=p||"light";(p==="system"||!p)&&(b=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),document.documentElement.setAttribute("data-theme",b);let $=u.design?{...u,theme:b}:{design:u,theme:b},g=new Z($),f=h.map(y=>{try{return g.css?.[y]||""}catch{return""}}).filter(y=>y.trim()).join(`
|
|
3993
|
+
`);if(f){let y=document.head.querySelector("style[data-pds-preload]");y&&y.remove();let v=document.createElement("style");v.setAttribute("data-pds-preload",""),v.textContent=f,document.head.insertBefore(v,document.head.firstChild)}}catch(b){t.log("warn","PDS preload failed:",b)}},ln=!0}async function Ca(t,e,{emitReady:r,emitConfigChanged:n,applyResolvedTheme:o,setupSystemListenerIfNeeded:a}){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'live', ... }) requires a valid configuration object");let i=e?.design?.icons?.externalPath||e?.icons?.externalPath||null;if(e=$a(e),typeof i=="string"&&i.trim()){let h=e?.design&&typeof e.design=="object"?e.design:{},b=h?.icons&&typeof h.icons=="object"?h.icons:{};e={...e,design:{...h,icons:{...b,externalPath:i}}}}if(await za(t,{applyResolvedTheme:o,setupSystemListenerIfNeeded:a,emitConfigChanged:n}),st(t),typeof document<"u"&&document.adoptedStyleSheets){let h=`
|
|
3959
3994
|
html { opacity: 0; }
|
|
3960
3995
|
html.pds-ready { opacity: 1; transition: opacity 0.3s ease-in; }
|
|
3961
|
-
`;try{if(!document.adoptedStyleSheets.some(
|
|
3962
|
-
`);if(z){let M=document.head.querySelector("style[data-pds-critical]");M&&M.remove();let P=document.createElement("style");P.setAttribute("data-pds-critical",""),P.textContent=z;let E=document.head.querySelector('meta[charset], meta[name="viewport"]');E?E.parentNode.insertBefore(P,E.nextSibling):document.head.insertBefore(P,document.head.firstChild)}}catch(z){y?.log?.("warn","Failed to preload critical styles:",z)}t.registry.setLiveMode(),h.presetInfo?.name?y?.log?.("log",`PDS live with preset "${h.presetInfo.name}"`):y?.log?.("log","PDS live with custom config"),s&&(t.applyStyles?.(X.instance),typeof window<"u"&&setTimeout(()=>{let z=document.head.querySelector("style[data-pds-critical]");z&&z.remove();let M=document.head.querySelector("style[data-pds-preload]");M&&M.remove();let P=document.getElementById("pds-runtime-stylesheet");P&&P.remove()},100));let m=Le(e,{resolvePublicAssetURL:ke}),w;p&&p.baseURL?w=Se($e(p.baseURL,{preferModule:!1})):w=`${m}components/`;let A=null,C=[];try{let z=await lt({autoDefineBaseURL:w,autoDefinePreload:p&&Array.isArray(p.predefine)&&p.predefine||[],autoDefineMapper:p&&typeof p.mapper=="function"&&p.mapper||null,enhancers:S,autoDefineOverrides:p||null,autoDefinePreferModule:!(p&&p.baseURL)},{baseEnhancers:ot});A=z.autoDefiner,C=z.mergedEnhancers||[]}catch(z){y?.log?.("error","\u274C Failed to initialize AutoDefiner/Enhancers:",z)}let R=v?.options||y;if(t.compiled=sn({mode:"live",...R,theme:b,enhancers:C}),t.configEditorMetadata=je(h.generatorConfig.design),t.configFormSchema=be(h.generatorConfig.design),typeof n=="function"&&n({mode:"live",source:"live:config-applied",preset:h.generatorConfig.preset}),typeof document<"u")try{e?.liveEdit?setTimeout(()=>{va()},0):ya()}catch(z){y?.log?.("warn","Live editor toggle failed to start:",z)}return r({mode:"live",generator:v,config:R,theme:b,autoDefiner:A}),{generator:v,config:R,theme:b,autoDefiner:A}}catch(b){throw t.dispatchEvent(new CustomEvent("pds:error",{detail:{error:b}})),b}}function La(t){let e=Number(t);return Number.isFinite(e)?Math.max(0,Math.min(1,e)):.5}function za(t){return Array.isArray(t)?t.map(e=>e?{severity:String(e.severity||"info").toLowerCase(),message:String(e.message||""),path:e.path?String(e.path):""}:null).filter(e=>e&&e.message):[]}function H(t={}){let e=String(t.source||"unknown"),r=String(t.type||"generic"),n=La(t.confidence),o=za(t.issues),a=t.designPatch&&typeof t.designPatch=="object"?t.designPatch:{},i=t.template&&typeof t.template=="object"?t.template:null;return{source:e,type:r,confidence:n,issues:o,designPatch:a,template:i,meta:t.meta&&typeof t.meta=="object"?t.meta:{}}}function Ca(t){return!!(t&&typeof t=="object"&&"source"in t&&"type"in t&&"confidence"in t&&"issues"in t&&"designPatch"in t)}var Ea="../templates/templates.json",dn="/assets/pds/templates/templates.json",Ma=["public","assets","pds","templates","templates.json"],Aa=["..","..","..","public","assets","pds","templates","templates.json"],mt=null;function un(){return!!(typeof process<"u"&&process?.versions?.node)}function Ta(t={}){return{id:String(t.id||"").trim(),name:String(t.name||t.id||"Template").trim(),description:String(t.description||"").trim(),icon:String(t.icon||"layout").trim(),file:String(t.file||"").trim(),tags:Array.isArray(t.tags)?t.tags.map(e=>String(e)):[]}}function ht(t={},e={}){let n=(Array.isArray(t)?t:Array.isArray(t?.templates)?t.templates:[]).map(Ta).filter(o=>o.id&&o.file);return{version:t?.version||"1",templates:n,__catalogURL:e.catalogURL||null,__catalogFilePath:e.catalogFilePath||null}}async function Ra(t={}){let r=[t.catalogURL||globalThis?.PDS?.currentConfig?.templateCatalogURL,Ea,dn].filter(Boolean);for(let n of r)try{let o=new URL(n,import.meta.url).href,a=await fetch(o,{credentials:"same-origin"});if(!a.ok)continue;let i=await a.json();return ht(i,{catalogURL:o})}catch{}return ht({templates:[]})}async function Ia(t={}){let e="node:fs/promises",r="node:path",n="node:url",[{readFile:o},a,{fileURLToPath:i}]=await Promise.all([import(e),import(r),import(n)]),s=[];t.catalogPath&&s.push(a.resolve(t.catalogPath)),s.push(a.resolve(process.cwd(),...Ma));let d=a.dirname(i(import.meta.url));s.push(a.resolve(d,...Aa));for(let l of s)try{let u=await o(l,"utf8"),c=JSON.parse(u);return ht(c,{catalogFilePath:l})}catch{}return ht({templates:[]})}async function _a(t,e){if(!t?.file)return"";if(!un()){let d=e?.__catalogURL||dn,l=new URL(t.file,d).href,u=await fetch(l,{credentials:"same-origin"});if(!u.ok)throw new Error(`Template file not found: ${t.file}`);return(await u.text()).trim()}let r="node:fs/promises",n="node:path",[{readFile:o},a]=await Promise.all([import(r),import(n)]),i=e?.__catalogFilePath?a.dirname(e.__catalogFilePath):a.resolve(process.cwd(),"public","assets","pds","templates"),s=a.resolve(i,t.file);return(await o(s,"utf8")).trim()}async function bt(t={}){return mt&&!t.forceReload||(mt=un()?await Ia(t):await Ra(t)),mt}async function pn(t={}){return(await bt(t)).templates.map(({id:r,name:n,description:o,icon:a,file:i,tags:s})=>({id:r,name:n,description:o,icon:a,file:i,tags:s}))}async function Fa(t,e={}){let r=await bt(e),n=r.templates.find(a=>a.id===t)||null;if(!n)return null;let o=await _a(n,r);return{...n,html:o}}async function fn(t,e={}){let r=await Fa(t,e);return r?H({source:"template",type:"template",confidence:1,template:{id:r.id,name:r.name,html:r.html,icon:r.icon,description:r.description}}):H({source:"template",type:"template",confidence:0,issues:[{severity:"error",message:`Unknown template: ${t}`}]})}var gn={version:"tw2pds-layout-v4",summary:"Deterministic Tailwind\u2192PDS conversion rules focused on layout intent, semantic primitive mapping, and richer import-* fallback coverage.",governance:[{id:"layout.utilities.grid",controls:["grid","grid-cols-*","grid-auto-*"],note:"When false, grid mappings are skipped."},{id:"layout.utilities.flex",controls:["flex","flex-*","items-*","justify-*","grow"],note:"When false, flex mappings are skipped."},{id:"layout.utilities.spacing",controls:["gap-*","stack-*"],note:"When false, spacing mappings are skipped."},{id:"layout.utilities.container",controls:["container","max-w-*"],note:"When false, container mappings are skipped."}],nonPdsClassPatterns:["^group(?:[/:].*)?$","^layout-container$"],neverFallbackTags:["table","thead","tbody","tfoot","tr","th","td","caption","colgroup","col"],directMappings:[{id:"layout.flex.base",tw:"flex",pds:["flex"],gate:"flex"},{id:"layout.flex.inline",tw:"inline-flex",pds:["flex"],gate:"flex"},{id:"layout.flex.row",tw:"flex-row",pds:["flex-row"],gate:"flex"},{id:"layout.flex.col",tw:"flex-col",pds:["flex-col"],gate:"flex"},{id:"layout.flex.wrap",tw:"flex-wrap",pds:["flex-wrap"],gate:"flex"},{id:"layout.flex.grow",tw:"grow",pds:["grow"],gate:"flex"},{id:"layout.flex.grow.tw",tw:"flex-grow",pds:["grow"],gate:"flex"},{id:"layout.flex.grow1",tw:"flex-1",pds:["grow"],gate:"flex"},{id:"layout.items.start",tw:"items-start",pds:["items-start"],gate:"flex"},{id:"layout.items.center",tw:"items-center",pds:["items-center"],gate:"flex"},{id:"layout.items.end",tw:"items-end",pds:["items-end"],gate:"flex"},{id:"layout.items.stretch",tw:"items-stretch",pds:["items-stretch"],gate:"flex"},{id:"layout.items.baseline",tw:"items-baseline",pds:["items-baseline"],gate:"flex"},{id:"layout.justify.start",tw:"justify-start",pds:["justify-start"],gate:"flex"},{id:"layout.justify.center",tw:"justify-center",pds:["justify-center"],gate:"flex"},{id:"layout.justify.end",tw:"justify-end",pds:["justify-end"],gate:"flex"},{id:"layout.justify.between",tw:"justify-between",pds:["justify-between"],gate:"flex"},{id:"layout.justify.around",tw:"justify-around",pds:["justify-around"],gate:"flex"},{id:"layout.justify.evenly",tw:"justify-evenly",pds:["justify-evenly"],gate:"flex"},{id:"layout.grid.base",tw:"grid",pds:["grid"],gate:"grid"},{id:"layout.grid.cols.1",tw:"grid-cols-1",pds:["grid-cols-1"],gate:"grid"},{id:"layout.grid.cols.2",tw:"grid-cols-2",pds:["grid-cols-2"],gate:"grid"},{id:"layout.grid.cols.3",tw:"grid-cols-3",pds:["grid-cols-3"],gate:"grid"},{id:"layout.grid.cols.4",tw:"grid-cols-4",pds:["grid-cols-4"],gate:"grid"},{id:"layout.grid.cols.6",tw:"grid-cols-6",pds:["grid-cols-6"],gate:"grid"},{id:"layout.container",tw:"container",pds:["container"],gate:"container"},{id:"intent.surface.shadow",tw:"shadow",pds:["surface-elevated"]},{id:"intent.surface.shadow-md",tw:"shadow-md",pds:["surface-elevated"]},{id:"intent.surface.shadow-lg",tw:"shadow-lg",pds:["surface-elevated"]},{id:"intent.surface.base",tw:"bg-white",pds:["surface-base"]},{id:"typography.align.center",tw:"text-center",pds:["text-center"]},{id:"typography.align.left",tw:"text-left",pds:["text-left"]},{id:"typography.align.right",tw:"text-right",pds:["text-right"]},{id:"typography.text.muted.gray500",tw:"text-gray-500",pds:["text-muted"]},{id:"typography.text.muted.slate500",tw:"text-slate-500",pds:["text-muted"]}],ignoredPatterns:[{id:"style.color",pattern:"^(?:text|from|to|via|decoration|accent|caret)-|^bg-(?!cover$|center$|no-repeat$)",reason:"Visual style token skipped in favor of semantic PDS styling."},{id:"style.radius-border-shadow",pattern:"^(?:rounded|ring|border|shadow|outline)-?",reason:"Surface/shape inferred at primitive level."},{id:"style.typography",pattern:"^(?:font|leading|tracking|uppercase|lowercase|capitalize)-?",reason:"Typography atomic utilities are skipped."},{id:"style.effects",pattern:"^(?:opacity|blur|backdrop|drop-shadow|mix-blend|filter)-",reason:"Visual effects skipped unless mapped to a PDS utility."},{id:"style.transitions",pattern:"^(?:transition|duration|ease|delay|animate)-",reason:"Motion is system-defined in PDS."},{id:"style.spacing.atomic",pattern:"^(?:p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)-",reason:"Atomic spacing skipped; structural spacing intent is mapped."},{id:"style.positioning.atomic",pattern:"^(?:absolute|relative|fixed|sticky|inset(?:-[xy])?|top|right|bottom|left|z|translate(?:-[xy])?|-translate-[xy])(?:-|$)",reason:"Atomic positioning/offset utilities are skipped so PDS primitives and layout utilities control placement."}],intentRules:[{id:"intent.layout.responsive-grid-to-auto",summary:"Collapse responsive grid-cols patterns (including base+md two-step patterns) to best-fit grid-auto-*"},{id:"intent.layout.mobile-stack",summary:"Map flex-col + md/lg:flex-row to mobile-stack"},{id:"intent.component.card",summary:"Infer card/surface classes from rounded+shadow+surface signals"},{id:"intent.component.card.normalize",summary:"Detect Tailwind card utility clusters and normalize them to PDS card and surface variants."},{id:"intent.component.button",summary:"Infer btn-primary / btn-outline / icon-only from CTA patterns"},{id:"intent.component.button.normalize",summary:"Prevents import-* style classes on button-like elements and applies PDS button variants/sizes."},{id:"intent.component.button.layout-grow",summary:"Preserve CTA row width intent on button-like elements by mapping w-full/flex-1 to grow."},{id:"intent.icon.color-preserve",summary:"Preserve icon color intent by mapping Tailwind text color utilities on icon-like elements to tokenized import-* classes."},{id:"intent.component.badge.normalize",summary:"Detects Tailwind badge/pill utility clusters and normalizes them to PDS badge primitives/variants."},{id:"intent.typography.heading-semantic",summary:"Removes Tailwind heading typography/color utilities so heading semantics and PDS defaults control typography."},{id:"intent.surface.footer-inverse",summary:"Use surface-inverse for footers with explicit background intent"},{id:"intent.typography.link-treatment",summary:"Apply minimal link treatment for hover/transition-tailwind anchors"},{id:"intent.typography.link-active-preserve",summary:"Preserve anchor text color intent (including active menu states) by mapping Tailwind text utilities to tokenized import-* classes."},{id:"intent.typography.metric-paragraph-to-div",summary:"Normalize metric display lines from paragraph tags to div tags to avoid default paragraph margins in compact stat layouts."},{id:"intent.typography.metric-pair-no-stack",summary:"When a compact metric container has two consecutive typography lines, remove stack-sm so spacing follows Tailwind preflight no-margin assumptions."},{id:"intent.typography.semantic-heading-from-scale",summary:"Map large bold typography scales (text-2xl/text-3xl/text-4xl) to semantic heading tags when possible."},{id:"intent.typography.bold-to-strong",summary:"Prefer semantic strong tags for bold inline text intent instead of utility-only font-weight classes."},{id:"intent.preflight.tailwind-runtime-detected",summary:"Detect Tailwind runtime CSS injection and translate key preflight intent"},{id:"intent.preflight.list-reset",summary:"Preserve Tailwind list-reset preflight behavior via scoped fallback class"},{id:"intent.preflight.anchor-reset",summary:"Preserve Tailwind anchor reset preflight behavior via scoped fallback class"},{id:"table.strict-tags.no-classes",summary:"Never emit classes for semantic table tags (table/thead/tbody/tfoot/tr/th/td/caption/colgroup/col)"},{id:"intent.form.nested-label",summary:"Convert sibling label+control pairs into nested labels"},{id:"fallback.import-style",summary:"Generate import-* classes + local style block for unmapped utility styles"}],gapScaleMap:{"gap-0":"gap-0","gap-1":"gap-xs","gap-2":"gap-sm","gap-3":"gap-sm","gap-4":"gap-md","gap-5":"gap-md","gap-6":"gap-lg","gap-7":"gap-lg","gap-8":"gap-xl","gap-10":"gap-xl","gap-12":"gap-xl"},maxWidthMap:{"max-w-xs":"max-w-sm","max-w-sm":"max-w-sm","max-w-md":"max-w-md","max-w-lg":"max-w-lg","max-w-xl":"max-w-xl","max-w-2xl":"max-w-xl","max-w-3xl":"max-w-xl","max-w-4xl":"max-w-xl","max-w-5xl":"max-w-xl","max-w-6xl":"max-w-xl","max-w-7xl":"max-w-xl"},tailwindSizeScale:{"0":"var(--spacing-0)","0.5":"0.125rem","1":"var(--spacing-1)","1.5":"0.375rem","2":"var(--spacing-2)","2.5":"0.625rem","3":"var(--spacing-3)","3.5":"0.875rem","4":"var(--spacing-4)","5":"var(--spacing-5)","6":"var(--spacing-6)","7":"var(--spacing-7)","8":"var(--spacing-8)","9":"var(--spacing-9)","10":"var(--spacing-10)","11":"var(--spacing-11)","12":"var(--spacing-12)","14":"3.5rem","16":"4rem","20":"5rem","24":"6rem","28":"7rem","32":"8rem","36":"9rem","40":"10rem","48":"12rem"},tailwindShadeScale:["50","100","200","300","400","500","600","700","800","900"],defaultTailwindShade:"500",importStyleRules:{"mx-auto":"margin-left:auto;margin-right:auto","ml-auto":"margin-left:auto","mr-auto":"margin-right:auto","w-full":"width:100%","w-auto":"width:auto","h-full":"height:100%","h-48":"height:12rem","h-2.5":"height:0.625rem","h-10":"height:var(--spacing-10)","h-2":"height:var(--spacing-2)","w-2":"width:var(--spacing-2)","size-8":"width:var(--spacing-8);height:var(--spacing-8)","size-10":"width:var(--spacing-10);height:var(--spacing-10)","size-full":"width:100%;height:100%","min-h-screen":"min-height:100vh","overflow-hidden":"overflow:hidden","overflow-x-hidden":"overflow-x:hidden","overflow-x-auto":"overflow-x:auto","whitespace-nowrap":"white-space:nowrap",hidden:"display:none",block:"display:block",truncate:"overflow:hidden;text-overflow:ellipsis;white-space:nowrap","justify-items-center":"justify-items:center","justify-items-start":"justify-items:start","justify-items-end":"justify-items:end","justify-items-stretch":"justify-items:stretch","grid-flow-col":"grid-auto-flow:column","aspect-square":"aspect-ratio:1 / 1","bg-center":"background-position:center","bg-cover":"background-size:cover","bg-no-repeat":"background-repeat:no-repeat","transition-colors":"transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:150ms"},importStyleDynamicRules:[{id:"fallback.import-style.gap-scale",pattern:"^gap-(\\d+)$",summary:"Converts gap scale utilities (including responsive variants like md:gap-6) to generated import-* fallback classes."},{id:"fallback.import-style.min-width-arbitrary",pattern:"^min-w-\\[[^\\]]+\\]$",summary:"Converts arbitrary min-width utilities (e.g. min-w-[600px]) to generated import-* fallback classes."},{id:"fallback.import-style.max-width-arbitrary",pattern:"^max-w-\\[[^\\]]+\\]$",summary:"Converts arbitrary max-width utilities (e.g. max-w-[480px]) to generated import-* fallback classes."},{id:"fallback.import-style.min-height-arbitrary",pattern:"^min-h-\\[[^\\]]+\\]$",summary:"Converts arbitrary min-height utilities (e.g. min-h-[180px]) to generated import-* fallback classes."},{id:"fallback.import-style.grid-rows-arbitrary",pattern:"^grid-rows-\\[[^\\]]+\\]$",summary:"Converts arbitrary grid template row utilities (e.g. grid-rows-[1fr_auto]) to generated import-* fallback classes."},{id:"fallback.import-style.size-scale",pattern:"^size-(\\[[^\\]]+\\]|[0-9.]+)$",summary:"Converts size scale/arbitrary utilities into width+height fallback declarations."},{id:"fallback.import-style.width-height-scale",pattern:"^[wh]-(\\[[^\\]]+\\]|[0-9.]+)$",summary:"Converts width/height scale and arbitrary utilities to import-* classes."},{id:"fallback.import-style.spacing",pattern:"^-?(?:p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)-(.+)$",summary:"Converts spacing utilities to directional padding/margin fallback declarations, including responsive variants."},{id:"fallback.import-style.text-size",pattern:"^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$",summary:"Converts common text size utilities to import-* font-size declarations."},{id:"fallback.import-style.font-weight",pattern:"^font-(normal|medium|semibold|bold|extrabold|black)$",summary:"Converts common font weight utilities to import-* font-weight declarations."},{id:"fallback.import-style.leading-tracking",pattern:"^(leading|tracking)-(none|tight|snug|normal|relaxed|loose|tighter|wide|wider|widest)$",summary:"Converts line-height and letter-spacing utilities to import-* declarations for typography fidelity."},{id:"fallback.import-style.bg-tokenized",pattern:"^bg-([a-z]+)-(\\d{2,3})$",summary:"Safeguards Tailwind background color utilities by mapping families like blue/purple/green/red to PDS semantic tokens."},{id:"fallback.import-style.bg-semantic",pattern:"^bg-(primary|secondary|accent)$",summary:"Safeguards semantic background utilities by mapping bg-primary/bg-secondary/bg-accent to PDS color tokens."},{id:"fallback.import-style.text-tokenized",pattern:"^text-([a-z]+)-(\\d{2,3})$",summary:"Safeguards Tailwind text color utilities by mapping common families to PDS semantic tokens."},{id:"fallback.import-style.rounded",pattern:"^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$",summary:"Safeguards rounded utilities (including rounded-t-sm) by mapping to PDS radius tokens."},{id:"fallback.import-style.overlay-alpha",pattern:"^bg-black\\/(\\d{1,3})$",summary:"Converts alpha black overlay classes (e.g. bg-black/50) to tokenized color-mix background overlays."},{id:"fallback.import-style.text-inverse",pattern:"^text-white$",summary:"Preserves white foreground intent for text-on-image use cases using inverse-compatible tokens."},{id:"fallback.import-style.bg-arbitrary",pattern:"^bg-\\[[^\\]]+\\]$",summary:"Converts arbitrary background colors to import-* fallback classes when values are CSS-safe."},{id:"fallback.import-style.text-arbitrary",pattern:"^text-\\[[^\\]]+\\]$",summary:"Converts arbitrary text colors to import-* fallback classes when values are CSS-safe."}]};_e();sr();var yt=class{constructor(e={},r=null){let n=e&&typeof e=="object"?e:{},o=r||(typeof document<"u"?document:new EventTarget),a=new WeakMap,i=b=>b.map(h=>String(h)).join("."),s,d=(b,h,S,g)=>{let f=i(b),y={property:h,path:f,value:S,oldValue:g};o.dispatchEvent(new CustomEvent(`change:${f}`,{detail:y,bubbles:!0,composed:!0})),o.dispatchEvent(new CustomEvent("change",{detail:{...y,state:s},bubbles:!0,composed:!0}))},l=(b,h)=>(typeof h=="function"&&o.addEventListener(b,h),s),u=(b,h)=>(typeof h=="function"&&o.removeEventListener(b,h),s),c=(b,h)=>{if(typeof h=="function"){let S=g=>{h(g),o.removeEventListener(b,S)};o.addEventListener(b,S)}return s},p=(b,h)=>{if(!b||typeof b!="object")return b;if(a.has(b))return a.get(b);let S=new Proxy(b,{get(g,f,y){if(f==="on")return l;if(f==="off")return u;if(f==="once")return c;let v=Reflect.get(g,f,y);return v&&typeof v=="object"?p(v,[...h,f]):v},set(g,f,y,v){let m=Reflect.get(g,f,v);return Object.is(m,y)?!0:Reflect.set(g,f,y,v)?(d([...h,f],f,y,m),!0):!1},deleteProperty(g,f){if(!Reflect.has(g,f))return!0;let y=g[f];return Reflect.deleteProperty(g,f)?(d([...h,f],f,void 0,y),!0):!1}});return a.set(b,S),S};return s=p(n,[]),s}};function mn(t,e,r){if(!t||!e||typeof r!="object")return()=>{};let n={};return Object.entries(r).forEach(([o,a])=>{n[o]=i=>{typeof a=="function"&&a(t,i.detail.value,i.detail.oldValue)},e.on(`change:${o}`,n[o])}),()=>{Object.entries(n).forEach(([o,a])=>{e.off(`change:${o}`,a)})}}typeof x.initializing!="boolean"&&(x.initializing=!1);"currentPreset"in x||(x.currentPreset=null);typeof x.debug!="boolean"&&(x.debug=!1);"currentConfig"in x||(x.currentConfig=null);"compiled"in x||(x.compiled=null);typeof x.logHandler!="function"&&(x.logHandler=null);"mode"in x||(x.mode=null);var vt=null,xt=null,wt=null,kt=null,St=null,$t=null,bn="__pdsLocalizationRuntime";function Ce(){if($t)return $t;let t=x?.[bn];return t&&typeof t=="object"?($t=t,t):null}function Na(t){let e=t&&typeof t=="object"?t:null;$t=e,x[bn]=e}jr({getLogger:()=>typeof x.logHandler=="function"?x.logHandler:null,getContext:()=>{let t=x?.mode||x?.compiled?.mode||(x?.registry?.isLive?"live":"static"),e=(x?.debug||x?.currentConfig?.debug||x?.currentConfig?.design?.debug||x?.compiled?.debug||x?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:e,thisArg:x}}});x.log=(t="log",e,...r)=>{tt(t,e,...r)};var U={locale:"en",messages:{},hasProvider:!1},Lt=new Set;function yn(t){return!!t&&typeof t!="string"&&typeof t=="object"&&"strTag"in t}function vn(t=[]){let e="";for(let r=0;r<=t.length-1;r+=1)e+=t[r],r<t.length-1&&(e+=`{${r}}`);return e}function ja(t,e){return String(t).replace(/\{(\d+)\}/g,(r,n)=>e(Number(n)))}function Oa(t){if(!t||typeof t!="object")return{};let e={};for(let[r,n]of Object.entries(t)){if(typeof n=="string"){e[r]=n;continue}n&&typeof n=="object"&&typeof n.content=="string"&&(e[r]=n.content)}return e}function Ba(t,...e){return{strTag:!0,strings:Array.from(t||[]),values:e,raw:Array.from(t?.raw||[])}}function Da(t){if(!t)return"";if(yn(t)){let r=vn(t.strings||[]),n=U.messages[r]||r;return ja(n,o=>t.values?.[o])}let e=String(t);return U.messages[e]||e}function Ha(t){if(!t)return;let e=yn(t)?vn(t.strings||[]):String(t);typeof e=="string"&&e.length>0&&Lt.add(e)}function xn(t){if(!t||typeof t.msg!="function"||Lt.size===0)return;let e=Array.from(Lt);Lt.clear();for(let r of e)try{t.msg(r)}catch{}}async function qe(){let t=Ce();return t||(St||(St=import(Ve("pds-localization.js")).then(r=>{if(typeof r?.msg!="function"||typeof r?.str!="function"||typeof r?.configureLocalization!="function"||typeof r?.loadLocale!="function"||typeof r?.setLocale!="function"||typeof r?.getLocalizationState!="function")throw new Error("Failed to load localization runtime exports");return Na(r),xn(r),r}).catch(r=>{throw St=null,r})),St)}var wn=(t,e={})=>{let r=Ce();return typeof r?.msg=="function"?r.msg(t,e):(Ha(t),Da(t,e))},kn=(t,...e)=>{let r=Ce();return typeof r?.str=="function"?r.str(t,...e):Ba(t,...e)},zt=(t=null)=>{let e=Ce();if(typeof e?.configureLocalization=="function")return e.configureLocalization(t);if(!t||typeof t!="object")return U.locale="en",U.messages={},U.hasProvider=!1,{locale:U.locale,messages:{...U.messages},hasProvider:U.hasProvider};typeof t.locale=="string"&&t.locale.trim()&&(U.locale=t.locale.trim()),Object.prototype.hasOwnProperty.call(t,"messages")&&(U.messages=Oa(t.messages));let r=!!(t.provider||t.translate||t.loadLocale||t.setLocale);return U.hasProvider=r,r&&qe().then(n=>{n.configureLocalization(t),xn(n)}).catch(()=>{}),{locale:U.locale,messages:{...U.messages},hasProvider:U.hasProvider}},Sn=async t=>(await qe()).loadLocale(t),$n=async(t,e={})=>(await qe()).setLocale(t,e),Ln=()=>{let t=Ce();return typeof t?.getLocalizationState=="function"?t.getLocalizationState():{locale:U.locale,messages:{...U.messages},hasProvider:U.hasProvider}},zn=(t={})=>{let e=Ce();if(typeof e?.createJSONLocalization=="function")return e.createJSONLocalization(t);let r=typeof t?.locale=="string"&&t.locale.trim()?t.locale.trim().toLowerCase():"en",n=Array.isArray(t?.locales)?t.locales.map(d=>String(d||"").trim().toLowerCase()).filter(Boolean):[],o=Array.from(new Set([r,...n])),a=null,i=async()=>(a||(a=qe().then(d=>typeof d?.createJSONLocalization=="function"?d.createJSONLocalization(t):null).catch(()=>null)),a),s=async(d="loadLocale")=>{let l=await i();if(!l||typeof l!="object")return null;let u=l.provider;if(!u||typeof u!="object")return null;let c=u[d];return typeof c=="function"?c:d==="setLocale"&&typeof u.loadLocale=="function"?u.loadLocale:null};return{locale:r,locales:[...o],provider:{locales:[...o],async loadLocale(d={}){let l=await s("loadLocale");return typeof l!="function"?{}:l(d)},async setLocale(d={}){let l=await s("setLocale");return typeof l!="function"?{}:l(d)}}}};function Ve(t,e){return e&&typeof e=="string"?e:`${Le(x.currentConfig||{},{resolvePublicAssetURL:ke})}core/${t}`}async function Wa(){return Array.isArray(x.defaultEnhancers)&&x.defaultEnhancers.length>0?x.defaultEnhancers:(kt||(kt=import(Ve("pds-enhancers.js",x.currentConfig?.enhancersURL)).then(e=>{let r=Array.isArray(e?.defaultPDSEnhancers)?e.defaultPDSEnhancers:[];return x.defaultEnhancers=r,r}).catch(e=>{throw kt=null,e})),kt)}async function Ua(){return typeof x.ask=="function"&&x.ask!==Cn?x.ask:(xt||(xt=import(Ve("pds-ask.js",x.currentConfig?.askURL)).then(e=>{let r=e?.ask;if(typeof r!="function")throw new Error("Failed to load ask helper");return x.ask=r,r}).catch(e=>{throw xt=null,e})),xt)}async function Ge(){return typeof x.toast=="function"&&x.toast!==Ee?x.toast:(wt||(wt=import(Ve("pds-toast.js",x.currentConfig?.toastURL)).then(e=>{let r=e?.toast;if(typeof r!="function")throw new Error("Failed to load toast helper");return x.toast=r,r}).catch(e=>{throw wt=null,e})),wt)}async function Cn(...t){return(await Ua())(...t)}async function Ee(...t){return(await Ge())(...t)}Ee.success=async(...t)=>(await Ge()).success(...t);Ee.error=async(...t)=>(await Ge()).error(...t);Ee.warning=async(...t)=>(await Ge()).warning(...t);Ee.info=async(...t)=>(await Ge()).info(...t);var hn=function(t="log",e,...r){x.log(t,e,...r)};function pr(t){if(t==null)return t;if(typeof t=="function")return;if(typeof t!="object")return t;if(Array.isArray(t))return t.map(r=>pr(r)).filter(r=>r!==void 0);let e={};for(let[r,n]of Object.entries(t)){let o=pr(n);o!==void 0&&(e[r]=o)}return e}function En(t,e=new WeakSet){if(!t||typeof t!="object"||e.has(t))return t;e.add(t),Object.freeze(t);for(let r of Object.keys(t))En(t[r],e);return t}function fr(t){return t==null||typeof t!="object"?t:En(structuredClone(pr(t)))}async function qa(t,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let r=e?.runtimeConfigURL||`${t}pds-runtime-config.json`;try{let n=await fetch(r,{cache:"no-store"});return n.ok?await n.json():null}catch{return null}}x.registry=we;x.enums=$;x.adoptLayers=nt;x.adoptPrimitives=rt;var Va=ir;x.parse=Va;var Ga=dt;x.html=Ga;x.State=yt;x.bindState=mn;x.createStylesheet=Gr;x.isLiveMode=()=>we.isLive;x.ask=Cn;x.toast=Ee;x.common=ut;x.msg=wn;x.str=kn;x.configureLocalization=zt;x.loadLocale=Sn;x.setLocale=$n;x.getLocalizationState=Ln;x.createJSONLocalization=zn;x.i18n={msg:wn,str:kn,configure:zt,loadLocale:Sn,setLocale:$n,getState:Ln,createJSONLocalization:zn};x.AutoComplete=null;x.loadAutoComplete=async()=>{if(x.AutoComplete&&typeof x.AutoComplete.connect=="function")return x.AutoComplete;let t=Ve("pds-autocomplete.js",x.currentConfig?.autoCompleteURL);return vt||(vt=import(t).then(e=>{let r=e?.AutoComplete||e?.default?.AutoComplete||e?.default||null;if(!r)throw new Error("AutoComplete export not found in module");return x.AutoComplete=r,r}).catch(e=>{throw vt=null,e})),vt};function Mn(t){let e=typeof CustomEvent=="function";try{let r=e?new CustomEvent("pds:ready",{detail:t}):new Event("pds:ready");x.dispatchEvent(r)}catch{}if(typeof document<"u")if(e){let r={detail:t,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",r))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",r))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function An(t={}){let e=typeof CustomEvent=="function",r={at:Date.now(),...t};try{let n=e?new CustomEvent("pds:config-changed",{detail:r}):new Event("pds:config-changed");x.dispatchEvent(n)}catch{}if(typeof document<"u")if(e){let n={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",n))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var ur="pure-ds-theme",ge=null,Ue=null;function gr(t){try{if(typeof document>"u")return;let e="light";t?t==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=t:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function mr(t){try{if(ge&&Ue){try{typeof ge.removeEventListener=="function"?ge.removeEventListener("change",Ue):typeof ge.removeListener=="function"&&ge.removeListener(Ue)}catch{}ge=null,Ue=null}if(t==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),r=n=>{let o=n?.matches===void 0?e.matches:n.matches;try{let a=o?"dark":"light";document.documentElement.setAttribute("data-theme",a),x.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:a,source:"system"}}))}catch{}};ge=e,Ue=r,typeof e.addEventListener=="function"?e.addEventListener("change",r):typeof e.addListener=="function"&&e.addListener(r)}}catch{}}var Ka=Object.getOwnPropertyDescriptor(x,"theme");Ka||Object.defineProperty(x,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(ur)||null}catch{return null}},set(t){try{if(typeof window>"u")return;let e=x.currentConfig?.design||null,r=ze(t);if(e&&!fe(e,r)){let n=e?.name||x.currentPreset?.name||x.currentConfig?.preset||"current preset";x.log("warn",`PDS theme "${r}" not supported by preset "${n}".`),x.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:t,resolvedTheme:r,preset:n}}));return}t==null?localStorage.removeItem(ur):localStorage.setItem(ur,t),gr(t),mr(t),x.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:t,source:"api"}}))}catch{}}});x.defaultEnhancers=[];async function Ja(t){x.initializing=!0;try{let e=t&&t.mode||"live",{mode:r,...n}=t||{};x.mode=e,x.logHandler=typeof n?.log=="function"?n.log:null,x.currentConfig=fr(n);let o=n&&typeof n.localization=="object"&&n.localization?n.localization:null;o?(await qe(),zt(o)):zt(null);let a;if(e==="static")a=await Ya(n);else{let{localization:s,...d}=n||{},l=Le(d,{resolvePublicAssetURL:ke}),u=d?.managerURL||d?.public?.managerURL||d?.manager?.url||new URL("core/pds-manager.js",l).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:c}=await import(u);a=await c(x,d,{emitReady:Mn,emitConfigChanged:An,applyResolvedTheme:gr,setupSystemListenerIfNeeded:mr})}x.compiled=fr(a?.config||null);let i=x?.compiled?.design?.icons?.externalPath||"/assets/img/icons/";return x.log("info",`startup ready; external icon path: ${i}`),a}finally{x.initializing=!1}}x.start=Ja;async function Ya(t){if(!t||typeof t!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=t.applyGlobalStyles??!0,r=t.manageTheme??!0,n=t.themeStorageKey??"pure-ds-theme",o=t.staticPaths??{},a=Le(t,{resolvePublicAssetURL:ke}),i=t&&t.autoDefine||null,s;i&&i.baseURL?s=Se($e(i.baseURL,{preferModule:!1})):s=`${a}components/`;let d=i&&Array.isArray(i.predefine)&&i.predefine||[],l=i&&typeof i.mapper=="function"&&i.mapper||null;try{it(x);let{resolvedTheme:u}=st({manageTheme:r,themeStorageKey:n,applyResolvedTheme:gr,setupSystemListenerIfNeeded:mr}),c=await qa(a,t),p=Array.isArray(t?.enhancers)?t.enhancers:t?.enhancers&&typeof t.enhancers=="object"?Object.values(t.enhancers):[],b=c?.config?{...c.config,...t,design:t?.design||c.config.design,preset:t?.preset||c.config.preset}:{...t},h={tokens:`${a}styles/pds-tokens.css.js`,primitives:`${a}styles/pds-primitives.css.js`,components:`${a}styles/pds-components.css.js`,utilities:`${a}styles/pds-utilities.css.js`,styles:`${a}styles/pds-styles.css.js`},S=c?.paths||{};if(o={...h,...S,...o},x.registry.setStaticMode(o),e&&typeof document<"u")try{let y=await x.registry.getStylesheet("styles");if(y){y._pds=!0;let v=(document.adoptedStyleSheets||[]).filter(m=>m._pds!==!0);document.adoptedStyleSheets=[...v,y],An({mode:"static",source:"static:styles-applied"})}}catch(y){hn.call(x,"warn","Failed to apply static styles:",y)}let g=null,f=[];try{let y=await Wa(),v=await lt({autoDefineBaseURL:s,autoDefinePreload:d,autoDefineMapper:l,enhancers:p,autoDefineOverrides:i||null,autoDefinePreferModule:!(i&&i.baseURL)},{baseEnhancers:y});g=v.autoDefiner,f=v.mergedEnhancers||[]}catch(y){hn.call(x,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",y)}return x.compiled=fr({mode:"static",...b,theme:u,enhancers:f}),Mn({mode:"static",config:b,theme:u,autoDefiner:g}),{config:b,theme:u,autoDefiner:g}}catch(u){throw x.dispatchEvent(new CustomEvent("pds:error",{detail:{error:u}})),u}}var Za="src/js/pds-live-manager/tailwind-conversion-rules.json",Mt=["base","sm","md","lg","xl","2xl"];function Xa(t={}){let e=Array.isArray(t.ignoredPatterns)?t.ignoredPatterns.map(n=>({...n,pattern:n?.pattern instanceof RegExp?n.pattern:new RegExp(String(n?.pattern||""))})):[],r=Array.isArray(t.nonPdsClassPatterns)?t.nonPdsClassPatterns.map(n=>n instanceof RegExp?n:new RegExp(String(n||""))):[];return{...t,ignoredPatterns:e,nonPdsClassPatterns:r}}var V=Xa(gn),Tn=V.version||"tw2pds-layout-v4",Qa=new Map(V.directMappings.map(t=>[t.tw,t])),hr=new Map(Object.entries(V.gapScaleMap||{})),Rn=new Map(Object.entries(V.maxWidthMap||{})),ei=V.nonPdsClassPatterns||[],ti=new Set(V.neverFallbackTags||[]),ri={...V.importStyleRules||{}},ni=V.tailwindSizeScale||{},br=Array.isArray(V.tailwindShadeScale)?V.tailwindShadeScale.map(t=>String(t)).filter(Boolean):["50","100","200","300","400","500","600","700","800","900"],In=br.includes(String(V.defaultTailwindShade||""))?String(V.defaultTailwindShade):"500",Et=1.2,oi=["container","grid","flex","gap","space","items","justify","content","place","self","col","row","w","h","min","max","p","m","rounded","border","ring","outline","shadow","bg","text","font","leading","tracking","uppercase","lowercase","capitalize","overflow","whitespace","truncate","object","aspect","opacity","blur","backdrop","transition","duration","ease","delay","animate","hidden","block","inline","absolute","relative","fixed","sticky","size"];function _n(t="",e=""){if(!t||!e)return t;let r=new RegExp(`\\s${e}\\s*=\\s*("[^"]*"|'[^']*'|[^\\s>]+)`,"gi");return String(t).replace(r,"")}function ai(t="",e=null){let r=String(t||""),n=0;return r=r.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(input)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*?)>/gi,(o,a,i,s,d,l,u,c,p,b,h)=>{if(s!==b)return o;let S=_n(`${a||""}${d||""}`,"for"),g=`<${u}${c||""} id="${b}"${h||""}>`;return n+=1,`<label${S}>${l}${g}</label>`}),r=r.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(select|textarea)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*)>([\s\S]*?)<\/\6>/gi,(o,a,i,s,d,l,u,c,p,b,h,S)=>{if(s!==b)return o;let g=_n(`${a||""}${d||""}`,"for"),f=`<${u}${c||""} id="${b}"${h||""}>${S}</${u}>`;return n+=1,`<label${g}>${l}${f}</label>`}),e&&n>0&&(e.labelNestingCount+=n,j(e,`Nested ${n} label/control pairs.`),_(e,"intent.form.nested-label")),r}function ii(t="",e="base"){let r=String(t||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"rule";return`import-${e&&e!=="base"?`${e}-`:""}${r}`}function me(t,e,r,n="base",o=""){if(!t||!e||!r)return"";let a=ii(e,n);if(o){let i=`${n}|${o}`;t.importPseudoStyles.has(i)||t.importPseudoStyles.set(i,new Map),t.importPseudoStyles.get(i).set(a,r)}else n==="base"?t.importBaseStyles.set(a,r):(t.importResponsiveStyles.has(n)||t.importResponsiveStyles.set(n,new Map),t.importResponsiveStyles.get(n).set(a,r));return t.importedStyleCount+=1,a}function Ae(t=""){return String(t||"").trim().replace(/_/g," ")}function Te(t=""){return!t||/[;{}]/.test(t)?!1:/^[-#(),.%/\sa-zA-Z0-9]+$/.test(t)}function Ke(t=""){let e=String(t||"").trim();if(!e)return null;let r=e.match(/^\[([^\]]+)\]$/);if(r){let n=Ae(r[1]);return Te(n)?n:null}return ni[e]||null}function si(t=""){let e=Number(t);if(!Number.isFinite(e))return In;let r=String(e);return br.includes(r)?r:br.reduce((n,o)=>{let a=Math.abs(Number(n)-e);return Math.abs(Number(o)-e)<a?o:n},In)}function Ye(t="",e="500"){let r=String(t||"").toLowerCase(),n=si(e);return["blue","sky","indigo","cyan"].includes(r)?`var(--color-primary-${n})`:["purple","violet","fuchsia"].includes(r)?`var(--color-accent-${n})`:["green","emerald","lime","teal"].includes(r)?`var(--color-success-${n})`:["yellow","amber","warning"].includes(r)?`var(--color-warning-${n})`:["red","rose","pink","orange"].includes(r)?`var(--color-danger-${n})`:["slate","gray","zinc","neutral","stone"].includes(r)?`var(--color-gray-${n})`:""}function Fn(t=""){let e=Ae(t);return Te(e)&&(/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(e)||/^(?:rgb|hsl)a?\([^)]*\)$/.test(e))?e:""}function ae(t=""){return String(t||"").split(/\s+/).map(e=>e.trim()).filter(Boolean)}function li(t="",e=""){if(!e)return t;let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return`${r} class="${e}"`;let o=n[1]||'"',a=ae(n[2]);a.includes(e)||a.push(e);let i=` class=${o}${a.join(" ")}${o}`;return r.replace(n[0],i)}function ci(t="",e=""){return e?new RegExp(`\\s${e}\\s*=`,"i").test(String(t||"")):!1}function di(t=""){let e=String(t||"").replace(/[-_]+/g," ").trim();return e?e.replace(/(^|\s)([a-z])/g,(r,n,o)=>`${n}${o.toUpperCase()}`):"Icon button"}function ui(t="",e=null){let r=String(t||"");return r&&r.replace(/<(button|a)([^>]*)>\s*(<pds-icon\b[^>]*><\/pds-icon>)\s*<\/\1>/gi,(n,o,a,i)=>{let s=li(a,"icon-only");if(!ci(s,"aria-label")){let d=String(i).match(/\sicon\s*=\s*(["'])(.*?)\1/i),l=d?String(d[2]||""):"",u=di(l);s+=` aria-label="${u}"`}return e&&(e.intentHits+=1,_(e,"intent.component.button.icon-only-markup")),`<${o}${s}>${i}</${o}>`})}function pi(t="",e=null){let r=String(t||"");if(!r)return r;let n=0,o=r.replace(/<p([^>]*?)>([\s\S]*?)<\/p>/gi,(a,i,s)=>{let d=String(i||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!d)return a;let l=ae(d[2]||""),u=l.some(p=>/^import-text-/.test(String(p||""))),c=l.includes("text-muted")||l.some(p=>/^import-font-/.test(String(p||"")));return!u||!c?a:(n+=1,`<div${i}>${s}</div>`)});return e&&n>0&&(e.intentHits+=1,_(e,"intent.typography.metric-paragraph-to-div"),j(e,`Normalized ${n} metric text paragraph tag(s) to div.`)),o}function Hn(t="",e=""){if(!e)return t;let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return r;let o=n[1]||'"',a=ae(n[2]).filter(s=>s!==e);if(a.length===0)return r.replace(n[0],"");let i=` class=${o}${a.join(" ")}${o}`;return r.replace(n[0],i)}function fi(t="",e=r=>r){let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return r;let o=n[1]||'"',a=ae(n[2]),i=e(Array.from(a)),s=Array.isArray(i)?i.filter(Boolean):a;if(s.length===0)return r.replace(n[0],"");let d=` class=${o}${s.join(" ")}${o}`;return r.replace(n[0],d)}function gi(t="",e=null){let r=String(t||"");if(!r)return r;let n=0,o=r.replace(/<(div|section|article|aside)([^>]*)>\s*<(p|div)([^>]*)>[\s\S]*?<\/\3>\s*<(p|div)([^>]*)>[\s\S]*?<\/\5>\s*<\/\1>/gi,(a,i,s,d,l,u,c)=>{let p=String(s||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!p||!ae(p[2]).includes("stack-sm"))return a;let h=String(l||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i),S=String(c||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!h||!S)return a;let g=ae(h[2]),f=ae(S[2]);if(!(g.some(m=>/^import-text-/.test(String(m||"")))&&f.some(m=>/^import-text-/.test(String(m||"")))))return a;let v=Hn(s,"stack-sm");return n+=1,a.replace(`<${i}${s}>`,`<${i}${v}>`)});return e&&n>0&&(e.intentHits+=1,_(e,"intent.typography.metric-pair-no-stack"),j(e,`Removed stack-sm from ${n} metric text pair container(s).`)),o}function mi(t={}){if(!t||typeof t!="object")return{};let e=t.typography;if(e&&typeof e=="object")return e;let r=t.design?.typography;return r&&typeof r=="object"?r:{}}function hi(t={}){let e=mi(t),r=Number(e.fontScale);return Number.isFinite(r)?Math.max(1,Math.min(2,r)):Et}function bi(t="",e=Et){let n={"4xl":1,"3xl":2,"2xl":3,xl:4}[t];if(!n)return"";let o=Number.isFinite(Number(e))?Math.max(1,Math.min(2,Number(e))):Et,a=Math.max(-1,Math.min(1,Math.round((o-Et)/.25))),i=n-a;return i<1?"h1":i>4?"":`h${i}`}function yi(t="",e=null,r={}){let n=String(t||"");if(!n)return n;let o=hi(r.config||{}),a=0,i=0,s=n.replace(/<(p|div|span)([^>]*)>([\s\S]*?)<\/\1>/gi,(d,l,u,c)=>{let p=String(u||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!p)return d;let b=ae(p[2]);if(!b.includes("import-font-bold"))return d;let S=b.find(m=>/^import-text-(?:4xl|3xl|2xl|xl)$/.test(String(m||"")))||"",g=S.match(/^import-text-(4xl|3xl|2xl|xl)$/);if(g){let m=bi(g[1],o);if(!m)return d;let w=fi(u,A=>A.filter(C=>C!=="import-font-bold"&&C!==S));return a+=1,`<${m}${w}>${c}</${m}>`}let f=/<\/?(?:div|p|section|article|aside|main|header|footer|ul|ol|li|table|tr|td|th|h[1-6])\b/i.test(c),y=/<\/?(?:strong|b)\b/i.test(c);if(f||y)return d;let v=Hn(u,"import-font-bold");return i+=1,`<${l}${v}><strong>${c}</strong></${l}>`});return e&&(a>0&&(e.intentHits+=1,_(e,"intent.typography.semantic-heading-from-scale"),j(e,`Converted ${a} bold display text node(s) to semantic heading tags (fontScale=${Number(o).toFixed(2)}).`)),i>0&&(e.intentHits+=1,_(e,"intent.typography.bold-to-strong"),j(e,`Wrapped ${i} bold text node(s) in strong tags.`))),s}function vi(t=[]){if(!Array.isArray(t)||t.length===0)return"";let e=t.filter(n=>!Mt.includes(n));if(e.length===0||e.length>1)return"";let r=e[0];return["hover","focus","active"].includes(r)?r:""}function Pn(t,e="base",r=[]){let n=vi(r),o=ri[t];if(o)return{declaration:o,breakpoint:e,pseudo:n,ruleId:"fallback.import-style"};let a=String(t).match(/^gap-(\d+)$/);if(a){let k={0:"var(--spacing-0)",1:"var(--spacing-1)",2:"var(--spacing-2)",3:"var(--spacing-3)",4:"var(--spacing-4)",5:"var(--spacing-5)",6:"var(--spacing-6)",7:"var(--spacing-7)",8:"var(--spacing-8)",10:"var(--spacing-10)",12:"var(--spacing-12)"},L=Number(a[1]);if(k[L])return{declaration:`gap:${k[L]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.gap-scale"}}let i=String(t).match(/^(mt|mb|my)-(.+)$/);if(i){let k=i[1],L=i[2],T=Ke(L);if(T){let I="";return k==="mt"?I=`margin-top:${T}`:k==="mb"?I=`margin-bottom:${T}`:I=`margin-top:${T};margin-bottom:${T}`,{declaration:I,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.margin-scale"}}}let s=String(t).match(/^min-w-\[([^\]]+)\]$/);if(s){let k=Ae(s[1]);if(Te(k))return{declaration:`min-width:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-width-arbitrary"}}let d=String(t).match(/^max-w-\[([^\]]+)\]$/);if(d){let k=Ae(d[1]);if(Te(k))return{declaration:`max-width:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.max-width-arbitrary"}}let l=String(t).match(/^min-h-\[([^\]]+)\]$/);if(l){let k=Ae(l[1]);if(Te(k))return{declaration:`min-height:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-height-arbitrary"}}let u=String(t).match(/^grid-rows-\[([^\]]+)\]$/);if(u){let k=Ae(u[1]);if(Te(k))return{declaration:`grid-template-rows:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.grid-rows-arbitrary"}}let c=String(t).match(/^size-(.+)$/);if(c){let k=Ke(c[1]);if(k)return{declaration:`width:${k};height:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.size-scale"}}let p=String(t).match(/^w-(.+)$/);if(p){let k=Ke(p[1]);if(k)return{declaration:`width:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.width-scale"}}let b=String(t).match(/^h-(.+)$/);if(b){let k=Ke(b[1]);if(k)return{declaration:`height:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.height-scale"}}let h={xs:"var(--font-size-xs)",sm:"var(--font-size-sm)",base:"var(--font-size-md)",lg:"var(--font-size-lg)",xl:"var(--font-size-xl)","2xl":"var(--font-size-2xl)","3xl":"var(--font-size-3xl)","4xl":"var(--font-size-4xl)"},S=String(t).match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$/);if(S)return{declaration:`font-size:${h[S[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-size"};let g={normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},f=String(t).match(/^font-(normal|medium|semibold|bold|extrabold|black)$/);if(f)return{declaration:`font-weight:${g[f[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.font-weight"};let y={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},v=String(t).match(/^leading-(none|tight|snug|normal|relaxed|loose)$/);if(v)return{declaration:`line-height:${y[v[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.line-height"};let m={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},w=String(t).match(/^tracking-(tighter|tight|normal|wide|wider|widest)$/);if(w)return{declaration:`letter-spacing:${m[w[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.tracking"};let A=String(t).match(/^bg-black\/(\d{1,3})$/);if(A)return{declaration:`background-color:color-mix(in srgb, var(--color-gray-900) ${Math.max(0,Math.min(100,Number(A[1])))}%, transparent)`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.overlay-alpha"};if(t==="text-white")return{declaration:"color:var(--color-gray-50)",breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-inverse"};let C=String(t).match(/^bg-(primary|secondary|accent)$/);if(C){let L={primary:"var(--color-primary-fill)",secondary:"var(--color-gray-500)",accent:"var(--color-accent-500)"}[C[1]];if(L)return{declaration:`background-color:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-semantic"}}let R=String(t).match(/^bg-([a-z]+)-(\d{2,3})$/);if(R){let k=Ye(R[1],R[2]);if(k)return{declaration:`background-color:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-tokenized"}}let z=String(t).match(/^bg-\[([^\]]+)\]$/);if(z){let k=Fn(z[1]);if(k)return{declaration:`background-color:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-arbitrary"}}let M=String(t).match(/^text-([a-z]+)-(\d{2,3})$/);if(M){let k=Ye(M[1],M[2]);if(k)return{declaration:`color:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-tokenized"}}let P=String(t).match(/^text-\[([^\]]+)\]$/);if(P){let k=Fn(P[1]);if(k)return{declaration:`color:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-arbitrary"}}let E=String(t).match(/^rounded(?:-([trbl]{1,2}))?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(E){let k=E[1]||"",L=E[2]||"sm",T=L==="none"?"0":`var(--radius-${L})`,I={t:["top-left","top-right"],b:["bottom-left","bottom-right"],l:["top-left","bottom-left"],r:["top-right","bottom-right"],tl:["top-left"],tr:["top-right"],bl:["bottom-left"],br:["bottom-right"]};if(!k)return{declaration:`border-radius:${T}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"};let B=(I[k]||[]).map(K=>`border-${K}-radius:${T}`).join(";");if(B)return{declaration:B,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"}}return null}function Ct(t,e){return typeof t=="number"&&Number.isFinite(t)?`${t}px`:typeof t=="string"&&t.trim()?t.trim():`${e}px`}function xi(t={}){let r=(t?.design&&typeof t.design=="object"?t.design:t)?.layout?.breakpoints||{};return{sm:Ct(r.sm,640),md:Ct(r.md,768),lg:Ct(r.lg,1024),xl:Ct(r.xl,1280)}}function wi(t,e){let r=Array.from(t.importBaseStyles.entries()).map(([a,i])=>`.${a}{${i};}`),n=[];for(let[a,i]of t.importResponsiveStyles.entries()){let s=e?.[a];if(!s||!i?.size)continue;let d=Array.from(i.entries()).map(([l,u])=>`.${l}{${u};}`).join(`
|
|
3996
|
+
`;try{if(!document.adoptedStyleSheets.some($=>$._pdsFouc)){let $=new CSSStyleSheet;$.replaceSync(h),$._pdsFouc=!0,document.adoptedStyleSheets=[$,...document.adoptedStyleSheets]}}catch(b){if(t.log("warn","Constructable stylesheets not supported, using <style> tag fallback:",b),!document.head.querySelector("style[data-pds-fouc]")){let g=document.createElement("style");g.setAttribute("data-pds-fouc",""),g.textContent=h,document.head.insertBefore(g,document.head.firstChild)}}}let s=e.applyGlobalStyles??!0,d=e.manageTheme??!0,l=e.themeStorageKey??"pure-ds-theme",u=e.preloadStyles??!1,c=e.criticalLayers??["tokens","primitives"],p=e&&e.autoDefine||null;try{let{resolvedTheme:h}=lt({manageTheme:d,themeStorageKey:l,applyResolvedTheme:o,setupSystemListenerIfNeeded:a}),b=nr(e,{},{presets:X,defaultLog:Ht,validateDesignConfig:Bt,validateInitConfig:Dt});if(d&&!ge(b.generatorConfig.design,h)){let R=b.presetInfo?.name||b.generatorConfig?.design?.name||b.generatorConfig?.preset||"current preset";t.log("warn",`PDS theme "${h}" not supported by preset "${R}".`)}let $=b.enhancers,{log:g,...f}=b.generatorConfig,y=mt(f);y.log=g,d&&(y.theme=h);let v=new Z(y);if(y.design?.typography)try{await Xt(y.design.typography)}catch(R){y?.log?.("warn","Failed to load some fonts from Google Fonts:",R)}if(u&&typeof window<"u"&&document.head)try{let R=c.map(I=>{try{return v.css?.[I]||""}catch(O){return y?.log?.("warn",`Failed to generate critical CSS for layer "${I}":`,O),""}}).filter(I=>I.trim()).join(`
|
|
3997
|
+
`);if(R){let I=document.head.querySelector("style[data-pds-critical]");I&&I.remove();let O=document.createElement("style");O.setAttribute("data-pds-critical",""),O.textContent=R;let T=document.head.querySelector('meta[charset], meta[name="viewport"]');T?T.parentNode.insertBefore(O,T.nextSibling):document.head.insertBefore(O,document.head.firstChild)}}catch(R){y?.log?.("warn","Failed to preload critical styles:",R)}t.registry.setLiveMode(),b.presetInfo?.name?y?.log?.("log",`PDS live with preset "${b.presetInfo.name}"`):y?.log?.("log","PDS live with custom config"),s&&(t.applyStyles?.(Z.instance),typeof window<"u"&&setTimeout(()=>{let R=document.head.querySelector("style[data-pds-critical]");R&&R.remove();let I=document.head.querySelector("style[data-pds-preload]");I&&I.remove();let O=document.getElementById("pds-runtime-stylesheet");O&&O.remove()},100));let m=ze(e,{resolvePublicAssetURL:Se}),w;p&&p.baseURL?w=$e(Le(p.baseURL,{preferModule:!1})):w=`${m}components/`;let A=null,E=[];try{let R=await ct({autoDefineBaseURL:w,autoDefinePreload:p&&Array.isArray(p.predefine)&&p.predefine||[],autoDefineMapper:p&&typeof p.mapper=="function"&&p.mapper||null,enhancers:$,autoDefineOverrides:p||null,autoDefinePreferModule:!(p&&p.baseURL)},{baseEnhancers:at});A=R.autoDefiner,E=R.mergedEnhancers||[]}catch(R){y?.log?.("error","\u274C Failed to initialize AutoDefiner/Enhancers:",R)}let M=v?.options||y;if(t.compiled=dn({mode:"live",...M,theme:h,enhancers:E}),t.configEditorMetadata=je(b.generatorConfig.design),t.configFormSchema=ye(b.generatorConfig.design),typeof n=="function"&&n({mode:"live",source:"live:config-applied",preset:b.generatorConfig.preset}),typeof document<"u")try{e?.liveEdit?setTimeout(()=>{ka()},0):wa()}catch(R){y?.log?.("warn","Live editor toggle failed to start:",R)}return r({mode:"live",generator:v,config:M,theme:h,autoDefiner:A}),{generator:v,config:M,theme:h,autoDefiner:A}}catch(h){throw t.dispatchEvent(new CustomEvent("pds:error",{detail:{error:h}})),h}}function Ea(t){let e=Number(t);return Number.isFinite(e)?Math.max(0,Math.min(1,e)):.5}function Aa(t){return Array.isArray(t)?t.map(e=>e?{severity:String(e.severity||"info").toLowerCase(),message:String(e.message||""),path:e.path?String(e.path):""}:null).filter(e=>e&&e.message):[]}function W(t={}){let e=String(t.source||"unknown"),r=String(t.type||"generic"),n=Ea(t.confidence),o=Aa(t.issues),a=t.designPatch&&typeof t.designPatch=="object"?t.designPatch:{},i=t.template&&typeof t.template=="object"?t.template:null;return{source:e,type:r,confidence:n,issues:o,designPatch:a,template:i,meta:t.meta&&typeof t.meta=="object"?t.meta:{}}}function Ma(t){return!!(t&&typeof t=="object"&&"source"in t&&"type"in t&&"confidence"in t&&"issues"in t&&"designPatch"in t)}var Ta="../templates/templates.json",fn="/assets/pds/templates/templates.json",Ra=["public","assets","pds","templates","templates.json"],Ia=["..","..","..","public","assets","pds","templates","templates.json"],ht=null;function gn(){return!!(typeof process<"u"&&process?.versions?.node)}function _a(t={}){return{id:String(t.id||"").trim(),name:String(t.name||t.id||"Template").trim(),description:String(t.description||"").trim(),icon:String(t.icon||"layout").trim(),file:String(t.file||"").trim(),tags:Array.isArray(t.tags)?t.tags.map(e=>String(e)):[]}}function bt(t={},e={}){let n=(Array.isArray(t)?t:Array.isArray(t?.templates)?t.templates:[]).map(_a).filter(o=>o.id&&o.file);return{version:t?.version||"1",templates:n,__catalogURL:e.catalogURL||null,__catalogFilePath:e.catalogFilePath||null}}async function Fa(t={}){let r=[t.catalogURL||globalThis?.PDS?.currentConfig?.templateCatalogURL,Ta,fn].filter(Boolean);for(let n of r)try{let o=new URL(n,import.meta.url).href,a=await fetch(o,{credentials:"same-origin"});if(!a.ok)continue;let i=await a.json();return bt(i,{catalogURL:o})}catch{}return bt({templates:[]})}async function Pa(t={}){let e="node:fs/promises",r="node:path",n="node:url",[{readFile:o},a,{fileURLToPath:i}]=await Promise.all([import(e),import(r),import(n)]),s=[];t.catalogPath&&s.push(a.resolve(t.catalogPath)),s.push(a.resolve(process.cwd(),...Ra));let d=a.dirname(i(import.meta.url));s.push(a.resolve(d,...Ia));for(let l of s)try{let u=await o(l,"utf8"),c=JSON.parse(u);return bt(c,{catalogFilePath:l})}catch{}return bt({templates:[]})}async function Na(t,e){if(!t?.file)return"";if(!gn()){let d=e?.__catalogURL||fn,l=new URL(t.file,d).href,u=await fetch(l,{credentials:"same-origin"});if(!u.ok)throw new Error(`Template file not found: ${t.file}`);return(await u.text()).trim()}let r="node:fs/promises",n="node:path",[{readFile:o},a]=await Promise.all([import(r),import(n)]),i=e?.__catalogFilePath?a.dirname(e.__catalogFilePath):a.resolve(process.cwd(),"public","assets","pds","templates"),s=a.resolve(i,t.file);return(await o(s,"utf8")).trim()}async function yt(t={}){return ht&&!t.forceReload||(ht=gn()?await Pa(t):await Fa(t)),ht}async function mn(t={}){return(await yt(t)).templates.map(({id:r,name:n,description:o,icon:a,file:i,tags:s})=>({id:r,name:n,description:o,icon:a,file:i,tags:s}))}async function ja(t,e={}){let r=await yt(e),n=r.templates.find(a=>a.id===t)||null;if(!n)return null;let o=await Na(n,r);return{...n,html:o}}async function hn(t,e={}){let r=await ja(t,e);return r?W({source:"template",type:"template",confidence:1,template:{id:r.id,name:r.name,html:r.html,icon:r.icon,description:r.description}}):W({source:"template",type:"template",confidence:0,issues:[{severity:"error",message:`Unknown template: ${t}`}]})}var bn={version:"tw2pds-layout-v4",summary:"Deterministic Tailwind\u2192PDS conversion rules focused on layout intent, semantic primitive mapping, and richer import-* fallback coverage.",governance:[{id:"layout.utilities.grid",controls:["grid","grid-cols-*","grid-auto-*"],note:"When false, grid mappings are skipped."},{id:"layout.utilities.flex",controls:["flex","flex-*","items-*","justify-*","grow"],note:"When false, flex mappings are skipped."},{id:"layout.utilities.spacing",controls:["gap-*","stack-*"],note:"When false, spacing mappings are skipped."},{id:"layout.utilities.container",controls:["container","max-w-*"],note:"When false, container mappings are skipped."}],nonPdsClassPatterns:["^group(?:[/:].*)?$","^layout-container$"],neverFallbackTags:["table","thead","tbody","tfoot","tr","th","td","caption","colgroup","col"],directMappings:[{id:"layout.flex.base",tw:"flex",pds:["flex"],gate:"flex"},{id:"layout.flex.inline",tw:"inline-flex",pds:["flex"],gate:"flex"},{id:"layout.flex.row",tw:"flex-row",pds:["flex-row"],gate:"flex"},{id:"layout.flex.col",tw:"flex-col",pds:["flex-col"],gate:"flex"},{id:"layout.flex.wrap",tw:"flex-wrap",pds:["flex-wrap"],gate:"flex"},{id:"layout.flex.grow",tw:"grow",pds:["grow"],gate:"flex"},{id:"layout.flex.grow.tw",tw:"flex-grow",pds:["grow"],gate:"flex"},{id:"layout.flex.grow1",tw:"flex-1",pds:["grow"],gate:"flex"},{id:"layout.items.start",tw:"items-start",pds:["items-start"],gate:"flex"},{id:"layout.items.center",tw:"items-center",pds:["items-center"],gate:"flex"},{id:"layout.items.end",tw:"items-end",pds:["items-end"],gate:"flex"},{id:"layout.items.stretch",tw:"items-stretch",pds:["items-stretch"],gate:"flex"},{id:"layout.items.baseline",tw:"items-baseline",pds:["items-baseline"],gate:"flex"},{id:"layout.justify.start",tw:"justify-start",pds:["justify-start"],gate:"flex"},{id:"layout.justify.center",tw:"justify-center",pds:["justify-center"],gate:"flex"},{id:"layout.justify.end",tw:"justify-end",pds:["justify-end"],gate:"flex"},{id:"layout.justify.between",tw:"justify-between",pds:["justify-between"],gate:"flex"},{id:"layout.justify.around",tw:"justify-around",pds:["justify-around"],gate:"flex"},{id:"layout.justify.evenly",tw:"justify-evenly",pds:["justify-evenly"],gate:"flex"},{id:"layout.grid.base",tw:"grid",pds:["grid"],gate:"grid"},{id:"layout.grid.cols.1",tw:"grid-cols-1",pds:["grid-cols-1"],gate:"grid"},{id:"layout.grid.cols.2",tw:"grid-cols-2",pds:["grid-cols-2"],gate:"grid"},{id:"layout.grid.cols.3",tw:"grid-cols-3",pds:["grid-cols-3"],gate:"grid"},{id:"layout.grid.cols.4",tw:"grid-cols-4",pds:["grid-cols-4"],gate:"grid"},{id:"layout.grid.cols.6",tw:"grid-cols-6",pds:["grid-cols-6"],gate:"grid"},{id:"layout.container",tw:"container",pds:["container"],gate:"container"},{id:"intent.surface.shadow",tw:"shadow",pds:["surface-elevated"]},{id:"intent.surface.shadow-md",tw:"shadow-md",pds:["surface-elevated"]},{id:"intent.surface.shadow-lg",tw:"shadow-lg",pds:["surface-elevated"]},{id:"intent.surface.base",tw:"bg-white",pds:["surface-base"]},{id:"typography.align.center",tw:"text-center",pds:["text-center"]},{id:"typography.align.left",tw:"text-left",pds:["text-left"]},{id:"typography.align.right",tw:"text-right",pds:["text-right"]},{id:"typography.text.muted.gray500",tw:"text-gray-500",pds:["text-muted"]},{id:"typography.text.muted.slate500",tw:"text-slate-500",pds:["text-muted"]}],ignoredPatterns:[{id:"style.color",pattern:"^(?:text|from|to|via|decoration|accent|caret)-|^bg-(?!cover$|center$|no-repeat$)",reason:"Visual style token skipped in favor of semantic PDS styling."},{id:"style.radius-border-shadow",pattern:"^(?:rounded|ring|border|shadow|outline)-?",reason:"Surface/shape inferred at primitive level."},{id:"style.typography",pattern:"^(?:font|leading|tracking|uppercase|lowercase|capitalize)-?",reason:"Typography atomic utilities are skipped."},{id:"style.effects",pattern:"^(?:opacity|blur|backdrop|drop-shadow|mix-blend|filter)-",reason:"Visual effects skipped unless mapped to a PDS utility."},{id:"style.transitions",pattern:"^(?:transition|duration|ease|delay|animate)-",reason:"Motion is system-defined in PDS."},{id:"style.spacing.atomic",pattern:"^(?:p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)-",reason:"Atomic spacing skipped; structural spacing intent is mapped."},{id:"style.positioning.atomic",pattern:"^(?:absolute|relative|fixed|sticky|inset(?:-[xy])?|top|right|bottom|left|z|translate(?:-[xy])?|-translate-[xy])(?:-|$)",reason:"Atomic positioning/offset utilities are skipped so PDS primitives and layout utilities control placement."}],intentRules:[{id:"intent.layout.responsive-grid-to-auto",summary:"Collapse responsive grid-cols patterns (including base+md two-step patterns) to best-fit grid-auto-*"},{id:"intent.layout.mobile-stack",summary:"Map flex-col + md/lg:flex-row to mobile-stack"},{id:"intent.component.card",summary:"Infer card/surface classes from rounded+shadow+surface signals"},{id:"intent.component.card.normalize",summary:"Detect Tailwind card utility clusters and normalize them to PDS card and surface variants."},{id:"intent.component.button",summary:"Infer btn-primary / btn-outline / icon-only from CTA patterns"},{id:"intent.component.button.normalize",summary:"Prevents import-* style classes on button-like elements and applies PDS button variants/sizes."},{id:"intent.component.button.layout-grow",summary:"Preserve CTA row width intent on button-like elements by mapping w-full/flex-1 to grow."},{id:"intent.icon.color-preserve",summary:"Preserve icon color intent by mapping Tailwind text color utilities on icon-like elements to tokenized import-* classes."},{id:"intent.component.badge.normalize",summary:"Detects Tailwind badge/pill utility clusters and normalizes them to PDS badge primitives/variants."},{id:"intent.typography.heading-semantic",summary:"Removes Tailwind heading typography/color utilities so heading semantics and PDS defaults control typography."},{id:"intent.surface.footer-inverse",summary:"Use surface-inverse for footers with explicit background intent"},{id:"intent.typography.link-treatment",summary:"Apply minimal link treatment for hover/transition-tailwind anchors"},{id:"intent.typography.link-active-preserve",summary:"Preserve anchor text color intent (including active menu states) by mapping Tailwind text utilities to tokenized import-* classes."},{id:"intent.typography.metric-paragraph-to-div",summary:"Normalize metric display lines from paragraph tags to div tags to avoid default paragraph margins in compact stat layouts."},{id:"intent.typography.metric-pair-no-stack",summary:"When a compact metric container has two consecutive typography lines, remove stack-sm so spacing follows Tailwind preflight no-margin assumptions."},{id:"intent.typography.semantic-heading-from-scale",summary:"Map large bold typography scales (text-2xl/text-3xl/text-4xl) to semantic heading tags when possible."},{id:"intent.typography.bold-to-strong",summary:"Prefer semantic strong tags for bold inline text intent instead of utility-only font-weight classes."},{id:"intent.preflight.tailwind-runtime-detected",summary:"Detect Tailwind runtime CSS injection and translate key preflight intent"},{id:"intent.preflight.list-reset",summary:"Preserve Tailwind list-reset preflight behavior via scoped fallback class"},{id:"intent.preflight.anchor-reset",summary:"Preserve Tailwind anchor reset preflight behavior via scoped fallback class"},{id:"table.strict-tags.no-classes",summary:"Never emit classes for semantic table tags (table/thead/tbody/tfoot/tr/th/td/caption/colgroup/col)"},{id:"intent.form.nested-label",summary:"Convert sibling label+control pairs into nested labels"},{id:"fallback.import-style",summary:"Generate import-* classes + local style block for unmapped utility styles"}],gapScaleMap:{"gap-0":"gap-0","gap-1":"gap-xs","gap-2":"gap-sm","gap-3":"gap-sm","gap-4":"gap-md","gap-5":"gap-md","gap-6":"gap-lg","gap-7":"gap-lg","gap-8":"gap-xl","gap-10":"gap-xl","gap-12":"gap-xl"},maxWidthMap:{"max-w-xs":"max-w-sm","max-w-sm":"max-w-sm","max-w-md":"max-w-md","max-w-lg":"max-w-lg","max-w-xl":"max-w-xl","max-w-2xl":"max-w-xl","max-w-3xl":"max-w-xl","max-w-4xl":"max-w-xl","max-w-5xl":"max-w-xl","max-w-6xl":"max-w-xl","max-w-7xl":"max-w-xl"},tailwindSizeScale:{"0":"var(--spacing-0)","0.5":"0.125rem","1":"var(--spacing-1)","1.5":"0.375rem","2":"var(--spacing-2)","2.5":"0.625rem","3":"var(--spacing-3)","3.5":"0.875rem","4":"var(--spacing-4)","5":"var(--spacing-5)","6":"var(--spacing-6)","7":"var(--spacing-7)","8":"var(--spacing-8)","9":"var(--spacing-9)","10":"var(--spacing-10)","11":"var(--spacing-11)","12":"var(--spacing-12)","14":"3.5rem","16":"4rem","20":"5rem","24":"6rem","28":"7rem","32":"8rem","36":"9rem","40":"10rem","48":"12rem"},tailwindShadeScale:["50","100","200","300","400","500","600","700","800","900"],defaultTailwindShade:"500",importStyleRules:{"mx-auto":"margin-left:auto;margin-right:auto","ml-auto":"margin-left:auto","mr-auto":"margin-right:auto","w-full":"width:100%","w-auto":"width:auto","h-full":"height:100%","h-48":"height:12rem","h-2.5":"height:0.625rem","h-10":"height:var(--spacing-10)","h-2":"height:var(--spacing-2)","w-2":"width:var(--spacing-2)","size-8":"width:var(--spacing-8);height:var(--spacing-8)","size-10":"width:var(--spacing-10);height:var(--spacing-10)","size-full":"width:100%;height:100%","min-h-screen":"min-height:100vh","overflow-hidden":"overflow:hidden","overflow-x-hidden":"overflow-x:hidden","overflow-x-auto":"overflow-x:auto","whitespace-nowrap":"white-space:nowrap",hidden:"display:none",block:"display:block",truncate:"overflow:hidden;text-overflow:ellipsis;white-space:nowrap","justify-items-center":"justify-items:center","justify-items-start":"justify-items:start","justify-items-end":"justify-items:end","justify-items-stretch":"justify-items:stretch","grid-flow-col":"grid-auto-flow:column","aspect-square":"aspect-ratio:1 / 1","bg-center":"background-position:center","bg-cover":"background-size:cover","bg-no-repeat":"background-repeat:no-repeat","transition-colors":"transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:150ms"},importStyleDynamicRules:[{id:"fallback.import-style.gap-scale",pattern:"^gap-(\\d+)$",summary:"Converts gap scale utilities (including responsive variants like md:gap-6) to generated import-* fallback classes."},{id:"fallback.import-style.min-width-arbitrary",pattern:"^min-w-\\[[^\\]]+\\]$",summary:"Converts arbitrary min-width utilities (e.g. min-w-[600px]) to generated import-* fallback classes."},{id:"fallback.import-style.max-width-arbitrary",pattern:"^max-w-\\[[^\\]]+\\]$",summary:"Converts arbitrary max-width utilities (e.g. max-w-[480px]) to generated import-* fallback classes."},{id:"fallback.import-style.min-height-arbitrary",pattern:"^min-h-\\[[^\\]]+\\]$",summary:"Converts arbitrary min-height utilities (e.g. min-h-[180px]) to generated import-* fallback classes."},{id:"fallback.import-style.grid-rows-arbitrary",pattern:"^grid-rows-\\[[^\\]]+\\]$",summary:"Converts arbitrary grid template row utilities (e.g. grid-rows-[1fr_auto]) to generated import-* fallback classes."},{id:"fallback.import-style.size-scale",pattern:"^size-(\\[[^\\]]+\\]|[0-9.]+)$",summary:"Converts size scale/arbitrary utilities into width+height fallback declarations."},{id:"fallback.import-style.width-height-scale",pattern:"^[wh]-(\\[[^\\]]+\\]|[0-9.]+)$",summary:"Converts width/height scale and arbitrary utilities to import-* classes."},{id:"fallback.import-style.spacing",pattern:"^-?(?:p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)-(.+)$",summary:"Converts spacing utilities to directional padding/margin fallback declarations, including responsive variants."},{id:"fallback.import-style.text-size",pattern:"^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$",summary:"Converts common text size utilities to import-* font-size declarations."},{id:"fallback.import-style.font-weight",pattern:"^font-(normal|medium|semibold|bold|extrabold|black)$",summary:"Converts common font weight utilities to import-* font-weight declarations."},{id:"fallback.import-style.leading-tracking",pattern:"^(leading|tracking)-(none|tight|snug|normal|relaxed|loose|tighter|wide|wider|widest)$",summary:"Converts line-height and letter-spacing utilities to import-* declarations for typography fidelity."},{id:"fallback.import-style.bg-tokenized",pattern:"^bg-([a-z]+)-(\\d{2,3})$",summary:"Safeguards Tailwind background color utilities by mapping families like blue/purple/green/red to PDS semantic tokens."},{id:"fallback.import-style.bg-semantic",pattern:"^bg-(primary|secondary|accent)$",summary:"Safeguards semantic background utilities by mapping bg-primary/bg-secondary/bg-accent to PDS color tokens."},{id:"fallback.import-style.text-tokenized",pattern:"^text-([a-z]+)-(\\d{2,3})$",summary:"Safeguards Tailwind text color utilities by mapping common families to PDS semantic tokens."},{id:"fallback.import-style.rounded",pattern:"^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$",summary:"Safeguards rounded utilities (including rounded-t-sm) by mapping to PDS radius tokens."},{id:"fallback.import-style.overlay-alpha",pattern:"^bg-black\\/(\\d{1,3})$",summary:"Converts alpha black overlay classes (e.g. bg-black/50) to tokenized color-mix background overlays."},{id:"fallback.import-style.text-inverse",pattern:"^text-white$",summary:"Preserves white foreground intent for text-on-image use cases using inverse-compatible tokens."},{id:"fallback.import-style.bg-arbitrary",pattern:"^bg-\\[[^\\]]+\\]$",summary:"Converts arbitrary background colors to import-* fallback classes when values are CSS-safe."},{id:"fallback.import-style.text-arbitrary",pattern:"^text-\\[[^\\]]+\\]$",summary:"Converts arbitrary text colors to import-* fallback classes when values are CSS-safe."}]};_e();cr();var vt=class{constructor(e={},r=null){let n=e&&typeof e=="object"?e:{},o=r||(typeof document<"u"?document:new EventTarget),a=new WeakMap,i=h=>h.map(b=>String(b)).join("."),s,d=(h,b,$,g)=>{let f=i(h),y={property:b,path:f,value:$,oldValue:g};o.dispatchEvent(new CustomEvent(`change:${f}`,{detail:y,bubbles:!0,composed:!0})),o.dispatchEvent(new CustomEvent("change",{detail:{...y,state:s},bubbles:!0,composed:!0}))},l=(h,b)=>(typeof b=="function"&&o.addEventListener(h,b),s),u=(h,b)=>(typeof b=="function"&&o.removeEventListener(h,b),s),c=(h,b)=>{if(typeof b=="function"){let $=g=>{b(g),o.removeEventListener(h,$)};o.addEventListener(h,$)}return s},p=(h,b)=>{if(!h||typeof h!="object")return h;if(a.has(h))return a.get(h);let $=new Proxy(h,{get(g,f,y){if(f==="on")return l;if(f==="off")return u;if(f==="once")return c;let v=Reflect.get(g,f,y);return v&&typeof v=="object"?p(v,[...b,f]):v},set(g,f,y,v){let m=Reflect.get(g,f,v);return Object.is(m,y)?!0:Reflect.set(g,f,y,v)?(d([...b,f],f,y,m),!0):!1},deleteProperty(g,f){if(!Reflect.has(g,f))return!0;let y=g[f];return Reflect.deleteProperty(g,f)?(d([...b,f],f,void 0,y),!0):!1}});return a.set(h,$),$};return s=p(n,[]),s}};function yn(t,e,r){if(!t||!e||typeof r!="object")return()=>{};let n={};return Object.entries(r).forEach(([o,a])=>{n[o]=i=>{typeof a=="function"&&a(t,i.detail.value,i.detail.oldValue)},e.on(`change:${o}`,n[o])}),()=>{Object.entries(n).forEach(([o,a])=>{e.off(`change:${o}`,a)})}}typeof x.initializing!="boolean"&&(x.initializing=!1);"currentPreset"in x||(x.currentPreset=null);typeof x.debug!="boolean"&&(x.debug=!1);"currentConfig"in x||(x.currentConfig=null);"compiled"in x||(x.compiled=null);typeof x.logHandler!="function"&&(x.logHandler=null);"mode"in x||(x.mode=null);var xt=null,wt=null,kt=null,St=null,$t=null,Lt=null,xn="__pdsLocalizationRuntime";function Ee(){if(Lt)return Lt;let t=x?.[xn];return t&&typeof t=="object"?(Lt=t,t):null}function Ba(t){let e=t&&typeof t=="object"?t:null;Lt=e,x[xn]=e}Dr({getLogger:()=>typeof x.logHandler=="function"?x.logHandler:null,getContext:()=>{let t=x?.mode||x?.compiled?.mode||(x?.registry?.isLive?"live":"static"),e=(x?.debug||x?.currentConfig?.debug||x?.currentConfig?.design?.debug||x?.compiled?.debug||x?.compiled?.design?.debug||!1)===!0;return{mode:t,debug:e,thisArg:x}}});x.log=(t="log",e,...r)=>{rt(t,e,...r)};var V={locale:"en",messages:{},hasProvider:!1},zt=new Set;function wn(t){return!!t&&typeof t!="string"&&typeof t=="object"&&"strTag"in t}function kn(t=[]){let e="";for(let r=0;r<=t.length-1;r+=1)e+=t[r],r<t.length-1&&(e+=`{${r}}`);return e}function Da(t,e){return String(t).replace(/\{(\d+)\}/g,(r,n)=>e(Number(n)))}function Ha(t){if(!t||typeof t!="object")return{};let e={};for(let[r,n]of Object.entries(t)){if(typeof n=="string"){e[r]=n;continue}n&&typeof n=="object"&&typeof n.content=="string"&&(e[r]=n.content)}return e}function Wa(t,...e){return{strTag:!0,strings:Array.from(t||[]),values:e,raw:Array.from(t?.raw||[])}}function Ua(t){if(!t)return"";if(wn(t)){let r=kn(t.strings||[]),n=V.messages[r]||r;return Da(n,o=>t.values?.[o])}let e=String(t);return V.messages[e]||e}function qa(t){if(!t)return;let e=wn(t)?kn(t.strings||[]):String(t);typeof e=="string"&&e.length>0&&zt.add(e)}function Sn(t){if(!t||typeof t.msg!="function"||zt.size===0)return;let e=Array.from(zt);zt.clear();for(let r of e)try{t.msg(r)}catch{}}async function qe(){let t=Ee();return t||($t||($t=import(Ve("pds-localization.js")).then(r=>{if(typeof r?.msg!="function"||typeof r?.str!="function"||typeof r?.configureLocalization!="function"||typeof r?.loadLocale!="function"||typeof r?.setLocale!="function"||typeof r?.getLocalizationState!="function")throw new Error("Failed to load localization runtime exports");return Ba(r),Sn(r),r}).catch(r=>{throw $t=null,r})),$t)}var $n=(t,e={})=>{let r=Ee();return typeof r?.msg=="function"?r.msg(t,e):(qa(t),Ua(t,e))},Ln=(t,...e)=>{let r=Ee();return typeof r?.str=="function"?r.str(t,...e):Wa(t,...e)},Ct=(t=null)=>{let e=Ee();if(typeof e?.configureLocalization=="function")return e.configureLocalization(t);if(!t||typeof t!="object")return V.locale="en",V.messages={},V.hasProvider=!1,{locale:V.locale,messages:{...V.messages},hasProvider:V.hasProvider};typeof t.locale=="string"&&t.locale.trim()&&(V.locale=t.locale.trim()),Object.prototype.hasOwnProperty.call(t,"messages")&&(V.messages=Ha(t.messages));let r=!!(t.provider||t.translate||t.loadLocale||t.setLocale);return V.hasProvider=r,r&&qe().then(n=>{n.configureLocalization(t),Sn(n)}).catch(()=>{}),{locale:V.locale,messages:{...V.messages},hasProvider:V.hasProvider}},zn=async t=>(await qe()).loadLocale(t),Cn=async(t,e={})=>(await qe()).setLocale(t,e),En=()=>{let t=Ee();return typeof t?.getLocalizationState=="function"?t.getLocalizationState():{locale:V.locale,messages:{...V.messages},hasProvider:V.hasProvider}},An=(t={})=>{let e=Ee();if(typeof e?.createJSONLocalization=="function")return e.createJSONLocalization(t);let r=typeof t?.locale=="string"&&t.locale.trim()?t.locale.trim().toLowerCase():"en",n=Array.isArray(t?.locales)?t.locales.map(d=>String(d||"").trim().toLowerCase()).filter(Boolean):[],o=Array.from(new Set([r,...n])),a=null,i=async()=>(a||(a=qe().then(d=>typeof d?.createJSONLocalization=="function"?d.createJSONLocalization(t):null).catch(()=>null)),a),s=async(d="loadLocale")=>{let l=await i();if(!l||typeof l!="object")return null;let u=l.provider;if(!u||typeof u!="object")return null;let c=u[d];return typeof c=="function"?c:d==="setLocale"&&typeof u.loadLocale=="function"?u.loadLocale:null};return{locale:r,locales:[...o],provider:{locales:[...o],async loadLocale(d={}){let l=await s("loadLocale");return typeof l!="function"?{}:l(d)},async setLocale(d={}){let l=await s("setLocale");return typeof l!="function"?{}:l(d)}}}};function Ve(t,e){return e&&typeof e=="string"?e:`${ze(x.currentConfig||{},{resolvePublicAssetURL:Se})}core/${t}`}async function Va(){return Array.isArray(x.defaultEnhancers)&&x.defaultEnhancers.length>0?x.defaultEnhancers:(St||(St=import(Ve("pds-enhancers.js",x.currentConfig?.enhancersURL)).then(e=>{let r=Array.isArray(e?.defaultPDSEnhancers)?e.defaultPDSEnhancers:[];return x.defaultEnhancers=r,r}).catch(e=>{throw St=null,e})),St)}async function Ga(){return typeof x.ask=="function"&&x.ask!==Mn?x.ask:(wt||(wt=import(Ve("pds-ask.js",x.currentConfig?.askURL)).then(e=>{let r=e?.ask;if(typeof r!="function")throw new Error("Failed to load ask helper");return x.ask=r,r}).catch(e=>{throw wt=null,e})),wt)}async function Ge(){return typeof x.toast=="function"&&x.toast!==Ae?x.toast:(kt||(kt=import(Ve("pds-toast.js",x.currentConfig?.toastURL)).then(e=>{let r=e?.toast;if(typeof r!="function")throw new Error("Failed to load toast helper");return x.toast=r,r}).catch(e=>{throw kt=null,e})),kt)}async function Mn(...t){return(await Ga())(...t)}async function Ae(...t){return(await Ge())(...t)}Ae.success=async(...t)=>(await Ge()).success(...t);Ae.error=async(...t)=>(await Ge()).error(...t);Ae.warning=async(...t)=>(await Ge()).warning(...t);Ae.info=async(...t)=>(await Ge()).info(...t);var vn=function(t="log",e,...r){x.log(t,e,...r)};function gr(t){if(t==null)return t;if(typeof t=="function")return;if(typeof t!="object")return t;if(Array.isArray(t))return t.map(r=>gr(r)).filter(r=>r!==void 0);let e={};for(let[r,n]of Object.entries(t)){let o=gr(n);o!==void 0&&(e[r]=o)}return e}function Tn(t,e=new WeakSet){if(!t||typeof t!="object"||e.has(t))return t;e.add(t),Object.freeze(t);for(let r of Object.keys(t))Tn(t[r],e);return t}function mr(t){return t==null||typeof t!="object"?t:Tn(structuredClone(gr(t)))}async function Ka(t,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let r=e?.runtimeConfigURL||`${t}pds-runtime-config.json`;try{let n=await fetch(r,{cache:"no-store"});return n.ok?await n.json():null}catch{return null}}x.registry=ke;x.enums=S;x.adoptLayers=ot;x.adoptPrimitives=nt;var Ja=lr;x.parse=Ja;var Ya=ut;x.html=Ya;x.State=vt;x.bindState=yn;x.createStylesheet=Yr;x.isLiveMode=()=>ke.isLive;x.ask=Mn;x.toast=Ae;x.common=pt;x.msg=$n;x.str=Ln;x.configureLocalization=Ct;x.loadLocale=zn;x.setLocale=Cn;x.getLocalizationState=En;x.createJSONLocalization=An;x.i18n={msg:$n,str:Ln,configure:Ct,loadLocale:zn,setLocale:Cn,getState:En,createJSONLocalization:An};x.AutoComplete=null;x.loadAutoComplete=async()=>{if(x.AutoComplete&&typeof x.AutoComplete.connect=="function")return x.AutoComplete;let t=Ve("pds-autocomplete.js",x.currentConfig?.autoCompleteURL);return xt||(xt=import(t).then(e=>{let r=e?.AutoComplete||e?.default?.AutoComplete||e?.default||null;if(!r)throw new Error("AutoComplete export not found in module");return x.AutoComplete=r,r}).catch(e=>{throw xt=null,e})),xt};function Rn(t){let e=typeof CustomEvent=="function";try{let r=e?new CustomEvent("pds:ready",{detail:t}):new Event("pds:ready");x.dispatchEvent(r)}catch{}if(typeof document<"u")if(e){let r={detail:t,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",r))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",r))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function In(t={}){let e=typeof CustomEvent=="function",r={at:Date.now(),...t};try{let n=e?new CustomEvent("pds:config-changed",{detail:r}):new Event("pds:config-changed");x.dispatchEvent(n)}catch{}if(typeof document<"u")if(e){let n={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:config-changed",n))}catch{}}else try{document.dispatchEvent(new Event("pds:config-changed"))}catch{}}var fr="pure-ds-theme",me=null,Ue=null;function hr(t){try{if(typeof document>"u")return;let e="light";t?t==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=t:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function br(t){try{if(me&&Ue){try{typeof me.removeEventListener=="function"?me.removeEventListener("change",Ue):typeof me.removeListener=="function"&&me.removeListener(Ue)}catch{}me=null,Ue=null}if(t==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),r=n=>{let o=n?.matches===void 0?e.matches:n.matches;try{let a=o?"dark":"light";document.documentElement.setAttribute("data-theme",a),x.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:a,source:"system"}}))}catch{}};me=e,Ue=r,typeof e.addEventListener=="function"?e.addEventListener("change",r):typeof e.addListener=="function"&&e.addListener(r)}}catch{}}var Za=Object.getOwnPropertyDescriptor(x,"theme");Za||Object.defineProperty(x,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(fr)||null}catch{return null}},set(t){try{if(typeof window>"u")return;let e=x.currentConfig?.design||null,r=Ce(t);if(e&&!ge(e,r)){let n=e?.name||x.currentPreset?.name||x.currentConfig?.preset||"current preset";x.log("warn",`PDS theme "${r}" not supported by preset "${n}".`),x.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:t,resolvedTheme:r,preset:n}}));return}t==null?localStorage.removeItem(fr):localStorage.setItem(fr,t),hr(t),br(t),x.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:t,source:"api"}}))}catch{}}});x.defaultEnhancers=[];async function Xa(t){x.initializing=!0;try{let e=t&&t.mode||"live",{mode:r,...n}=t||{};x.mode=e,x.logHandler=typeof n?.log=="function"?n.log:null,x.currentConfig=mr(n);let o=n&&typeof n.localization=="object"&&n.localization?n.localization:null;o?(await qe(),Ct(o)):Ct(null);let a;if(e==="static")a=await Qa(n);else{let{localization:s,...d}=n||{},l=ze(d,{resolvePublicAssetURL:Se}),u=d?.managerURL||d?.public?.managerURL||d?.manager?.url||new URL("core/pds-manager.js",l).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:c}=await import(u);a=await c(x,d,{emitReady:Rn,emitConfigChanged:In,applyResolvedTheme:hr,setupSystemListenerIfNeeded:br})}x.compiled=mr(a?.config||null);let i=x?.compiled?.design?.icons?.externalPath||"/assets/img/icons/";return x.log("info",`startup ready; external icon path: ${i}`),a}finally{x.initializing=!1}}x.start=Xa;async function Qa(t){if(!t||typeof t!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=t.applyGlobalStyles??!0,r=t.manageTheme??!0,n=t.themeStorageKey??"pure-ds-theme",o=t.staticPaths??{},a=ze(t,{resolvePublicAssetURL:Se}),i=t&&t.autoDefine||null,s;i&&i.baseURL?s=$e(Le(i.baseURL,{preferModule:!1})):s=`${a}components/`;let d=i&&Array.isArray(i.predefine)&&i.predefine||[],l=i&&typeof i.mapper=="function"&&i.mapper||null;try{st(x);let{resolvedTheme:u}=lt({manageTheme:r,themeStorageKey:n,applyResolvedTheme:hr,setupSystemListenerIfNeeded:br}),c=await Ka(a,t),p=Array.isArray(t?.enhancers)?t.enhancers:t?.enhancers&&typeof t.enhancers=="object"?Object.values(t.enhancers):[],h=c?.config?{...c.config,...t,design:t?.design||c.config.design,preset:t?.preset||c.config.preset}:{...t},b={tokens:`${a}styles/pds-tokens.css.js`,primitives:`${a}styles/pds-primitives.css.js`,components:`${a}styles/pds-components.css.js`,utilities:`${a}styles/pds-utilities.css.js`,styles:`${a}styles/pds-styles.css.js`},$=c?.paths||{};if(o={...b,...$,...o},x.registry.setStaticMode(o),e&&typeof document<"u")try{let y=await x.registry.getStylesheet("styles");if(y){y._pds=!0;let v=(document.adoptedStyleSheets||[]).filter(m=>m._pds!==!0);document.adoptedStyleSheets=[...v,y],In({mode:"static",source:"static:styles-applied"})}}catch(y){vn.call(x,"warn","Failed to apply static styles:",y)}let g=null,f=[];try{let y=await Va(),v=await ct({autoDefineBaseURL:s,autoDefinePreload:d,autoDefineMapper:l,enhancers:p,autoDefineOverrides:i||null,autoDefinePreferModule:!(i&&i.baseURL)},{baseEnhancers:y});g=v.autoDefiner,f=v.mergedEnhancers||[]}catch(y){vn.call(x,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",y)}return x.compiled=mr({mode:"static",...h,theme:u,enhancers:f}),Rn({mode:"static",config:h,theme:u,autoDefiner:g}),{config:h,theme:u,autoDefiner:g}}catch(u){throw x.dispatchEvent(new CustomEvent("pds:error",{detail:{error:u}})),u}}var ei="src/js/pds-live-manager/tailwind-conversion-rules.json",Mt=["base","sm","md","lg","xl","2xl"];function ti(t={}){let e=Array.isArray(t.ignoredPatterns)?t.ignoredPatterns.map(n=>({...n,pattern:n?.pattern instanceof RegExp?n.pattern:new RegExp(String(n?.pattern||""))})):[],r=Array.isArray(t.nonPdsClassPatterns)?t.nonPdsClassPatterns.map(n=>n instanceof RegExp?n:new RegExp(String(n||""))):[];return{...t,ignoredPatterns:e,nonPdsClassPatterns:r}}var K=ti(bn),_n=K.version||"tw2pds-layout-v4",ri=new Map(K.directMappings.map(t=>[t.tw,t])),yr=new Map(Object.entries(K.gapScaleMap||{})),Fn=new Map(Object.entries(K.maxWidthMap||{})),ni=K.nonPdsClassPatterns||[],oi=new Set(K.neverFallbackTags||[]),ai={...K.importStyleRules||{}},ii=K.tailwindSizeScale||{},vr=Array.isArray(K.tailwindShadeScale)?K.tailwindShadeScale.map(t=>String(t)).filter(Boolean):["50","100","200","300","400","500","600","700","800","900"],Pn=vr.includes(String(K.defaultTailwindShade||""))?String(K.defaultTailwindShade):"500",At=1.2,si=["container","grid","flex","gap","space","items","justify","content","place","self","col","row","w","h","min","max","p","m","rounded","border","ring","outline","shadow","bg","text","font","leading","tracking","uppercase","lowercase","capitalize","overflow","whitespace","truncate","object","aspect","opacity","blur","backdrop","transition","duration","ease","delay","animate","hidden","block","inline","absolute","relative","fixed","sticky","size"];function Nn(t="",e=""){if(!t||!e)return t;let r=new RegExp(`\\s${e}\\s*=\\s*("[^"]*"|'[^']*'|[^\\s>]+)`,"gi");return String(t).replace(r,"")}function li(t="",e=null){let r=String(t||""),n=0;return r=r.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(input)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*?)>/gi,(o,a,i,s,d,l,u,c,p,h,b)=>{if(s!==h)return o;let $=Nn(`${a||""}${d||""}`,"for"),g=`<${u}${c||""} id="${h}"${b||""}>`;return n+=1,`<label${$}>${l}${g}</label>`}),r=r.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(select|textarea)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*)>([\s\S]*?)<\/\6>/gi,(o,a,i,s,d,l,u,c,p,h,b,$)=>{if(s!==h)return o;let g=Nn(`${a||""}${d||""}`,"for"),f=`<${u}${c||""} id="${h}"${b||""}>${$}</${u}>`;return n+=1,`<label${g}>${l}${f}</label>`}),e&&n>0&&(e.labelNestingCount+=n,B(e,`Nested ${n} label/control pairs.`),_(e,"intent.form.nested-label")),r}function ci(t="",e="base"){let r=String(t||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"rule";return`import-${e&&e!=="base"?`${e}-`:""}${r}`}function he(t,e,r,n="base",o=""){if(!t||!e||!r)return"";let a=ci(e,n);if(o){let i=`${n}|${o}`;t.importPseudoStyles.has(i)||t.importPseudoStyles.set(i,new Map),t.importPseudoStyles.get(i).set(a,r)}else n==="base"?t.importBaseStyles.set(a,r):(t.importResponsiveStyles.has(n)||t.importResponsiveStyles.set(n,new Map),t.importResponsiveStyles.get(n).set(a,r));return t.importedStyleCount+=1,a}function Te(t=""){return String(t||"").trim().replace(/_/g," ")}function Re(t=""){return!t||/[;{}]/.test(t)?!1:/^[-#(),.%/\sa-zA-Z0-9]+$/.test(t)}function Ke(t=""){let e=String(t||"").trim();if(!e)return null;let r=e.match(/^\[([^\]]+)\]$/);if(r){let n=Te(r[1]);return Re(n)?n:null}return ii[e]||null}function di(t=""){let e=Number(t);if(!Number.isFinite(e))return Pn;let r=String(e);return vr.includes(r)?r:vr.reduce((n,o)=>{let a=Math.abs(Number(n)-e);return Math.abs(Number(o)-e)<a?o:n},Pn)}function Ye(t="",e="500"){let r=String(t||"").toLowerCase(),n=di(e);return["blue","sky","indigo","cyan"].includes(r)?`var(--color-primary-${n})`:["purple","violet","fuchsia"].includes(r)?`var(--color-accent-${n})`:["green","emerald","lime","teal"].includes(r)?`var(--color-success-${n})`:["yellow","amber","warning"].includes(r)?`var(--color-warning-${n})`:["red","rose","pink","orange"].includes(r)?`var(--color-danger-${n})`:["slate","gray","zinc","neutral","stone"].includes(r)?`var(--color-gray-${n})`:""}function jn(t=""){let e=Te(t);return Re(e)&&(/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(e)||/^(?:rgb|hsl)a?\([^)]*\)$/.test(e))?e:""}function se(t=""){return String(t||"").split(/\s+/).map(e=>e.trim()).filter(Boolean)}function ui(t="",e=""){if(!e)return t;let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return`${r} class="${e}"`;let o=n[1]||'"',a=se(n[2]);a.includes(e)||a.push(e);let i=` class=${o}${a.join(" ")}${o}`;return r.replace(n[0],i)}function pi(t="",e=""){return e?new RegExp(`\\s${e}\\s*=`,"i").test(String(t||"")):!1}function fi(t=""){let e=String(t||"").replace(/[-_]+/g," ").trim();return e?e.replace(/(^|\s)([a-z])/g,(r,n,o)=>`${n}${o.toUpperCase()}`):"Icon button"}function gi(t="",e=null){let r=String(t||"");return r&&r.replace(/<(button|a)([^>]*)>\s*(<pds-icon\b[^>]*><\/pds-icon>)\s*<\/\1>/gi,(n,o,a,i)=>{let s=ui(a,"icon-only");if(!pi(s,"aria-label")){let d=String(i).match(/\sicon\s*=\s*(["'])(.*?)\1/i),l=d?String(d[2]||""):"",u=fi(l);s+=` aria-label="${u}"`}return e&&(e.intentHits+=1,_(e,"intent.component.button.icon-only-markup")),`<${o}${s}>${i}</${o}>`})}function mi(t="",e=null){let r=String(t||"");if(!r)return r;let n=0,o=r.replace(/<p([^>]*?)>([\s\S]*?)<\/p>/gi,(a,i,s)=>{let d=String(i||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!d)return a;let l=se(d[2]||""),u=l.some(p=>/^import-text-/.test(String(p||""))),c=l.includes("text-muted")||l.some(p=>/^import-font-/.test(String(p||"")));return!u||!c?a:(n+=1,`<div${i}>${s}</div>`)});return e&&n>0&&(e.intentHits+=1,_(e,"intent.typography.metric-paragraph-to-div"),B(e,`Normalized ${n} metric text paragraph tag(s) to div.`)),o}function qn(t="",e=""){if(!e)return t;let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return r;let o=n[1]||'"',a=se(n[2]).filter(s=>s!==e);if(a.length===0)return r.replace(n[0],"");let i=` class=${o}${a.join(" ")}${o}`;return r.replace(n[0],i)}function hi(t="",e=r=>r){let r=String(t||""),n=r.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return r;let o=n[1]||'"',a=se(n[2]),i=e(Array.from(a)),s=Array.isArray(i)?i.filter(Boolean):a;if(s.length===0)return r.replace(n[0],"");let d=` class=${o}${s.join(" ")}${o}`;return r.replace(n[0],d)}function bi(t="",e=null){let r=String(t||"");if(!r)return r;let n=0,o=r.replace(/<(div|section|article|aside)([^>]*)>\s*<(p|div)([^>]*)>[\s\S]*?<\/\3>\s*<(p|div)([^>]*)>[\s\S]*?<\/\5>\s*<\/\1>/gi,(a,i,s,d,l,u,c)=>{let p=String(s||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!p||!se(p[2]).includes("stack-sm"))return a;let b=String(l||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i),$=String(c||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!b||!$)return a;let g=se(b[2]),f=se($[2]);if(!(g.some(m=>/^import-text-/.test(String(m||"")))&&f.some(m=>/^import-text-/.test(String(m||"")))))return a;let v=qn(s,"stack-sm");return n+=1,a.replace(`<${i}${s}>`,`<${i}${v}>`)});return e&&n>0&&(e.intentHits+=1,_(e,"intent.typography.metric-pair-no-stack"),B(e,`Removed stack-sm from ${n} metric text pair container(s).`)),o}function yi(t={}){if(!t||typeof t!="object")return{};let e=t.typography;if(e&&typeof e=="object")return e;let r=t.design?.typography;return r&&typeof r=="object"?r:{}}function vi(t={}){let e=yi(t),r=Number(e.fontScale);return Number.isFinite(r)?Math.max(1,Math.min(2,r)):At}function xi(t="",e=At){let n={"4xl":1,"3xl":2,"2xl":3,xl:4}[t];if(!n)return"";let o=Number.isFinite(Number(e))?Math.max(1,Math.min(2,Number(e))):At,a=Math.max(-1,Math.min(1,Math.round((o-At)/.25))),i=n-a;return i<1?"h1":i>4?"":`h${i}`}function wi(t="",e=null,r={}){let n=String(t||"");if(!n)return n;let o=vi(r.config||{}),a=0,i=0,s=n.replace(/<(p|div|span)([^>]*)>([\s\S]*?)<\/\1>/gi,(d,l,u,c)=>{let p=String(u||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!p)return d;let h=se(p[2]);if(!h.includes("import-font-bold"))return d;let $=h.find(m=>/^import-text-(?:4xl|3xl|2xl|xl)$/.test(String(m||"")))||"",g=$.match(/^import-text-(4xl|3xl|2xl|xl)$/);if(g){let m=xi(g[1],o);if(!m)return d;let w=hi(u,A=>A.filter(E=>E!=="import-font-bold"&&E!==$));return a+=1,`<${m}${w}>${c}</${m}>`}let f=/<\/?(?:div|p|section|article|aside|main|header|footer|ul|ol|li|table|tr|td|th|h[1-6])\b/i.test(c),y=/<\/?(?:strong|b)\b/i.test(c);if(f||y)return d;let v=qn(u,"import-font-bold");return i+=1,`<${l}${v}><strong>${c}</strong></${l}>`});return e&&(a>0&&(e.intentHits+=1,_(e,"intent.typography.semantic-heading-from-scale"),B(e,`Converted ${a} bold display text node(s) to semantic heading tags (fontScale=${Number(o).toFixed(2)}).`)),i>0&&(e.intentHits+=1,_(e,"intent.typography.bold-to-strong"),B(e,`Wrapped ${i} bold text node(s) in strong tags.`))),s}function ki(t=[]){if(!Array.isArray(t)||t.length===0)return"";let e=t.filter(n=>!Mt.includes(n));if(e.length===0||e.length>1)return"";let r=e[0];return["hover","focus","active"].includes(r)?r:""}function On(t,e="base",r=[]){let n=ki(r),o=ai[t];if(o)return{declaration:o,breakpoint:e,pseudo:n,ruleId:"fallback.import-style"};let a=String(t).match(/^gap-(\d+)$/);if(a){let L={0:"var(--spacing-0)",1:"var(--spacing-1)",2:"var(--spacing-2)",3:"var(--spacing-3)",4:"var(--spacing-4)",5:"var(--spacing-5)",6:"var(--spacing-6)",7:"var(--spacing-7)",8:"var(--spacing-8)",10:"var(--spacing-10)",12:"var(--spacing-12)"},z=Number(a[1]);if(L[z])return{declaration:`gap:${L[z]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.gap-scale"}}let i=String(t).match(/^(mt|mb|my)-(.+)$/);if(i){let L=i[1],z=i[2],k=Ke(z);if(k){let C="";return L==="mt"?C=`margin-top:${k}`:L==="mb"?C=`margin-bottom:${k}`:C=`margin-top:${k};margin-bottom:${k}`,{declaration:C,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.margin-scale"}}}let s=String(t).match(/^min-w-\[([^\]]+)\]$/);if(s){let L=Te(s[1]);if(Re(L))return{declaration:`min-width:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-width-arbitrary"}}let d=String(t).match(/^max-w-\[([^\]]+)\]$/);if(d){let L=Te(d[1]);if(Re(L))return{declaration:`max-width:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.max-width-arbitrary"}}let l=String(t).match(/^min-h-\[([^\]]+)\]$/);if(l){let L=Te(l[1]);if(Re(L))return{declaration:`min-height:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-height-arbitrary"}}let u=String(t).match(/^grid-rows-\[([^\]]+)\]$/);if(u){let L=Te(u[1]);if(Re(L))return{declaration:`grid-template-rows:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.grid-rows-arbitrary"}}let c=String(t).match(/^size-(.+)$/);if(c){let L=Ke(c[1]);if(L)return{declaration:`width:${L};height:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.size-scale"}}let p=String(t).match(/^w-(.+)$/);if(p){let L=Ke(p[1]);if(L)return{declaration:`width:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.width-scale"}}let h=String(t).match(/^h-(.+)$/);if(h){let L=Ke(h[1]);if(L)return{declaration:`height:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.height-scale"}}let b={xs:"var(--font-size-xs)",sm:"var(--font-size-sm)",base:"var(--font-size-md)",lg:"var(--font-size-lg)",xl:"var(--font-size-xl)","2xl":"var(--font-size-2xl)","3xl":"var(--font-size-3xl)","4xl":"var(--font-size-4xl)"},$=String(t).match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$/);if($)return{declaration:`font-size:${b[$[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-size"};let g={normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},f=String(t).match(/^font-(normal|medium|semibold|bold|extrabold|black)$/);if(f)return{declaration:`font-weight:${g[f[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.font-weight"};let y={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},v=String(t).match(/^leading-(none|tight|snug|normal|relaxed|loose)$/);if(v)return{declaration:`line-height:${y[v[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.line-height"};let m={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},w=String(t).match(/^tracking-(tighter|tight|normal|wide|wider|widest)$/);if(w)return{declaration:`letter-spacing:${m[w[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.tracking"};let A=String(t).match(/^bg-black\/(\d{1,3})$/);if(A)return{declaration:`background-color:color-mix(in srgb, var(--color-gray-900) ${Math.max(0,Math.min(100,Number(A[1])))}%, transparent)`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.overlay-alpha"};if(t==="text-white")return{declaration:"color:var(--color-gray-50)",breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-inverse"};let E=String(t).match(/^bg-(primary|secondary|accent)$/);if(E){let z={primary:"var(--color-primary-fill)",secondary:"var(--color-gray-500)",accent:"var(--color-accent-500)"}[E[1]];if(z)return{declaration:`background-color:${z}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-semantic"}}let M=String(t).match(/^bg-([a-z]+)-(\d{2,3})$/);if(M){let L=Ye(M[1],M[2]);if(L)return{declaration:`background-color:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-tokenized"}}let R=String(t).match(/^bg-\[([^\]]+)\]$/);if(R){let L=jn(R[1]);if(L)return{declaration:`background-color:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-arbitrary"}}let I=String(t).match(/^text-([a-z]+)-(\d{2,3})$/);if(I){let L=Ye(I[1],I[2]);if(L)return{declaration:`color:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-tokenized"}}let O=String(t).match(/^text-\[([^\]]+)\]$/);if(O){let L=jn(O[1]);if(L)return{declaration:`color:${L}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-arbitrary"}}let T=String(t).match(/^rounded(?:-([trbl]{1,2}))?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(T){let L=T[1]||"",z=T[2]||"sm",k=z==="none"?"0":`var(--radius-${z})`,C={t:["top-left","top-right"],b:["bottom-left","bottom-right"],l:["top-left","bottom-left"],r:["top-right","bottom-right"],tl:["top-left"],tr:["top-right"],bl:["bottom-left"],br:["bottom-right"]};if(!L)return{declaration:`border-radius:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"};let j=(C[L]||[]).map(H=>`border-${H}-radius:${k}`).join(";");if(j)return{declaration:j,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"}}return null}function Et(t,e){return typeof t=="number"&&Number.isFinite(t)?`${t}px`:typeof t=="string"&&t.trim()?t.trim():`${e}px`}function Si(t={}){let r=(t?.design&&typeof t.design=="object"?t.design:t)?.layout?.breakpoints||{};return{sm:Et(r.sm,640),md:Et(r.md,768),lg:Et(r.lg,1024),xl:Et(r.xl,1280)}}function $i(t,e){let r=Array.from(t.importBaseStyles.entries()).map(([a,i])=>`.${a}{${i};}`),n=[];for(let[a,i]of t.importResponsiveStyles.entries()){let s=e?.[a];if(!s||!i?.size)continue;let d=Array.from(i.entries()).map(([l,u])=>`.${l}{${u};}`).join(`
|
|
3963
3998
|
`);n.push(`@media (min-width: ${s}) {
|
|
3964
3999
|
${d}
|
|
3965
4000
|
}`)}for(let[a,i]of t.importPseudoStyles.entries()){let[s,d]=String(a).split("|");if(!d||!i?.size)continue;let l=Array.from(i.entries()).map(([c,p])=>`.${c}:${d}{${p};}`).join(`
|
|
@@ -3967,11 +4002,11 @@ ${d}
|
|
|
3967
4002
|
${l}
|
|
3968
4003
|
}`)}let o=[...r,...n].filter(Boolean).join(`
|
|
3969
4004
|
`);return o.trim()?["/* pds-import: generated fallback styles for unmapped Tailwind utilities */",o].join(`
|
|
3970
|
-
`):""}function
|
|
4005
|
+
`):""}function Li(t="",e=""){if(!e||!e.trim())return t;let r=`<style data-pds-import="tailwind-fallback">
|
|
3971
4006
|
${e}
|
|
3972
4007
|
</style>`;return/<head[^>]*>/i.test(t)?t.replace(/<head([^>]*)>/i,`<head$1>
|
|
3973
4008
|
${r}`):`${r}
|
|
3974
|
-
${t}`}function Nn(t=""){if(!t)return!1;if(t.includes(":")||t.includes("["))return!0;let e=t.split("-")[0];return oi.includes(e)}function ie(t=""){let e=String(t).split(":");if(e.length===1)return{breakpoint:"base",base:e[0],variants:[]};let r=e[e.length-1],n=e.slice(0,-1);return{breakpoint:n.find(a=>Mt.includes(a))||"base",base:r,variants:n}}function Si(){return{totalTailwind:0,mapped:0,ignored:0,policySkipped:0,unknown:0,intentHits:0,unknownTokens:new Map,notes:[],appliedRules:new Set,importBaseStyles:new Map,importResponsiveStyles:new Map,importPseudoStyles:new Map,importedStyleCount:0,labelNestingCount:0,removedAtomicSpacingCount:0,removedAtomicPositioningCount:0}}function $i(t=""){let e=String(t||"").toLowerCase().replace(/\s+/g,""),r=e.includes("menu,ol,ul{list-style:none")||e.includes("ol,ul,menu{list-style:none")||e.includes("ul,ol,menu{list-style:none"),n=e.includes("a{color:inherit;text-decoration:inherit");return{listReset:r,anchorReset:n}}function Li(t=""){return String(t||"").toLowerCase().includes("cdn.tailwindcss.com")?{listReset:!0,anchorReset:!0}:{listReset:!1,anchorReset:!1}}function zi(t="",e=null){let r=String(t||""),n={listReset:!1,anchorReset:!1,strippedRuntimeCssBlocks:0,strippedRuntimeScripts:0};return r=r.replace(/<style([^>]*)>([\s\S]*?)<\/style>/gi,(o,a,i)=>{let s=String(i||"");if(!(/tailwindcss\s+v\d/i.test(s)||/\*\s*!\s*tailwindcss/i.test(s)))return o;let l=$i(s);return n.listReset=n.listReset||l.listReset,n.anchorReset=n.anchorReset||l.anchorReset,n.strippedRuntimeCssBlocks+=1,""}),r=r.replace(/<script([^>]*?)src\s*=\s*(?:(['"])([^"']*cdn\.tailwindcss\.com[^"']*)\2|([^\s>]*cdn\.tailwindcss\.com[^\s>]*))([^>]*)><\/script>/gi,(o,a,i,s,d)=>{let u=Li(s||d||"");return n.listReset=n.listReset||u.listReset,n.anchorReset=n.anchorReset||u.anchorReset,n.strippedRuntimeScripts+=1,""}),e&&(n.strippedRuntimeCssBlocks>0||n.strippedRuntimeScripts>0)&&(_(e,"intent.preflight.tailwind-runtime-detected"),n.strippedRuntimeCssBlocks>0&&j(e,`Detected and stripped ${n.strippedRuntimeCssBlocks} Tailwind runtime style block(s).`)),e&&n.strippedRuntimeScripts>0&&j(e,`Removed ${n.strippedRuntimeScripts} Tailwind CDN script reference(s).`),{html:r,hints:n}}function j(t,e){!t||!e||t.notes.includes(e)||t.notes.push(e)}function Ci(t,e){let r=t.unknownTokens.get(e)||0;t.unknownTokens.set(e,r+1)}function Ei(t={}){let r=(t?.design&&typeof t.design=="object"?t.design:t)?.layout?.utilities||{};return{grid:r.grid!==!1,flex:r.flex!==!1,spacing:r.spacing!==!1,container:r.container!==!1}}function J(t,e){return e?t?.[e]!==!1:!0}function jn(t){let e=String(t).match(/^grid-cols-(\d+)$/);return e?Number(e[1]):null}function On(t={}){let e=Mt.map(o=>({bp:o,cols:t[o]})).filter(o=>Number.isFinite(o.cols));if(e.length<2)return null;if(e.length===2){let[o,a]=e;if(o.bp==="base"&&o.cols===1&&a.cols===2)return"grid-auto-lg";if(o.bp==="base"&&o.cols===1&&a.cols>=3)return null;if(o.cols<a.cols){if(a.cols>=4)return"grid-auto-md";if(a.cols>=2)return"grid-auto-lg"}return null}let r=!0;for(let o=1;o<e.length;o+=1)if(e[o].cols<=e[o-1].cols){r=!1;break}if(!r)return null;let n=e[e.length-1]?.cols||0;return n>=4?"grid-auto-md":n>=3?"grid-auto-sm":null}function Mi(t=""){let e=String(t).match(/^text-(gray|slate|zinc|neutral|stone)-(\d{2,3})$/);if(!e)return"";let r=Number(e[2]);return Number.isFinite(r)&&r>=400&&r<=600?"text-muted":""}function Ai(t="",e=0){return!t||!Number.isFinite(e)?"":{sm:{2:"sm:grid-cols-2"},md:{3:"md:grid-cols-3"},lg:{4:"lg:grid-cols-4"}}?.[t]?.[e]||""}function Ti(t=""){let e=ie(t),n=String(e?.base||"").match(/^space-y-(\d+)$/);if(!n)return"stack-md";let o=Number(n[1]);return Number.isFinite(o)?o<=1?"stack-xs":o<=2?"stack-sm":o<=4?"stack-md":"stack-lg":"stack-md"}function Ri(t=new Set){return Array.from(t).some(e=>{let r=String(e||"");return/^gap-(?:xs|sm|md|lg|xl)$/.test(r)||/^gap-[0-9]+$/.test(r)||/^import-(?:sm-|md-|lg-|xl-)?gap-/.test(r)})}function Ii(t=new Set){return Array.from(t).some(e=>/^stack-(?:xs|sm|md|lg|xl)$/.test(String(e||"")))}function _i(t=new Set){return Array.from(t).some(e=>{let r=String(e||"");return/^grid-cols-\d+$/.test(r)||/^grid-auto-(?:sm|md|lg|xl)$/.test(r)||/^(?:sm|md|lg|xl):grid-cols-\d+$/.test(r)||/^import-(?:sm-|md-|lg-|xl-)?grid-cols-\d+$/.test(r)})}function Fi(t,e=12){return Array.from(t.unknownTokens.entries()).sort((r,n)=>n[1]-r[1]).slice(0,e).map(([r])=>r)}function _(t,e){!t||!e||t.appliedRules.add(e)}function le(t=[],e){return!Array.isArray(t)||!e?!1:t.some(r=>e.test(String(r)))}function Pi(t=[]){for(let e of t){let r=ie(e);if(r.breakpoint!=="base")continue;let n=String(r.base).match(/^h-(.+)$/);if(!n)continue;let o=Ke(n[1]);if(!o||o==="auto")continue;let a=String(o).match(/^(-?\d+(?:\.\d+)?)rem$/);if(a){let i=Number(a[1]);if(Number.isFinite(i))return i*16}}return null}function Ni(t=[],e=""){let r=e==="button",n=le(t,/^bg-/),o=le(t,/^hover:bg-/),a=le(t,/^border/),i=le(t,/^shadow/),s=t.includes("cursor-pointer"),d=le(t,/^rounded/),l=le(t,/^(?:min-w|max-w|w)-/),u=le(t,/^text-(?:white|black|\[[^\]]+\]|[a-z]+-\d{2,3})$/),c=n||o||i;if(!(r||e==="a"&&(c||a||s||d&&l)))return{shouldNormalize:!1,variant:"none",size:"base",iconOnly:!1};let h="none";a&&!n&&!o?h="outline":(c||n&&u)&&(h="primary");let S=t.includes("rounded-full")&&(t.includes("p-2")||t.includes("p-1")||t.includes("p-2.5")),g=le(t,/^size-(?:6|7|8|9|10|11|12)$/),f=S||g,y=Pi(t),v=t.includes("text-sm")||t.includes("text-xs"),m=t.includes("text-lg")||t.includes("text-xl"),w="base";return y&&y<=40||v?w="sm":(y&&y>=48||m)&&(w="lg"),{shouldNormalize:!0,variant:h,size:w,iconOnly:f}}function ji(t=""){let e=String(t||"").toLowerCase();return["green","emerald","lime","teal"].includes(e)?"badge-success":["blue","sky","cyan","indigo"].includes(e)?"badge-info":["yellow","amber","orange"].includes(e)?"badge-warning":["red","rose","pink"].includes(e)?"badge-danger":["gray","slate","zinc","neutral","stone"].includes(e)?"badge-secondary":["purple","violet","fuchsia","primary","accent"].includes(e)?"badge-primary":"badge-secondary"}function Oi(t=[],e="",r={shouldNormalize:!1}){if(r?.shouldNormalize)return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};if(["button","a","input","select","textarea"].includes(e))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};if(t.some(M=>/^badge(?:-|$)/.test(String(M))))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let n=t.map(M=>ie(M)).filter(M=>M.breakpoint==="base").map(M=>String(M.base)),o=n.some(M=>/^rounded(?:-|$)/.test(M)),a=n.some(M=>/^px-/.test(M)),i=n.some(M=>/^py-/.test(M)),s=a&&i,d=n.includes("text-xs")||n.includes("text-sm"),l=n.includes("text-lg")||n.includes("text-xl"),u=n.map(M=>M.match(/^bg-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),c=n.map(M=>M.match(/^text-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),p=n.map(M=>M.match(/^border-([a-z]+)-(\d{2,3})$/)).find(Boolean),b=Number(u?.[2]),h=Number(c?.[2]),S=!!(u&&Number.isFinite(b)&&b<=300),g=n.some(M=>/^border(?:-|$)/.test(M)),f=!!(u||c||p),y=[o,s,d,S||g].filter(Boolean).length;if(!(f&&y>=3))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let m=u&&u[1]||c&&c[1]||p&&p[1]||"",w=ji(m),A=g&&!S,C=d?"badge-sm":l?"badge-lg":"",R=S?{family:m,bgShade:Number.isFinite(b)?b:200,textShade:Number.isFinite(h)?h:700}:null;return{shouldNormalize:!0,variantClass:R?"":w,outline:A,sizeClass:C,pastel:R}}function Bi(t="",e=0){let r=String(t||"").toLowerCase(),n=Number(e);return r==="white"?"surface-base":["gray","slate","zinc","neutral","stone"].includes(r)?Number.isFinite(n)&&n<=100?"surface-base":"surface-subtle":["blue","sky","cyan","indigo","primary","info"].includes(r)?"surface-info":["purple","violet","fuchsia","accent"].includes(r)?"surface-primary":["green","emerald","lime","teal","success"].includes(r)?"surface-success":["yellow","amber","orange","warning"].includes(r)?"surface-warning":["red","rose","pink","danger"].includes(r)?"surface-danger":"surface-base"}function Di(t=[],e="",r={shouldNormalize:!1},n={shouldNormalize:!1}){if(r?.shouldNormalize||n?.shouldNormalize)return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(!new Set(["div","section","article","aside","li"]).has(e))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(t.some(g=>/^card(?:-|$)/.test(String(g))))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let a=t.map(g=>ie(g)).filter(g=>g.breakpoint==="base").map(g=>String(g.base)),i=a.some(g=>/^rounded(?:-|$)/.test(g)),s=a.some(g=>/^border(?:$|-)/.test(g)),d=a.some(g=>/^shadow(?:$|-)/.test(g)),l=a.some(g=>/^(?:p|px|py|pt|pb|pl|pr)-/.test(g)),u=a.map(g=>g.match(/^bg-([a-z]+)-?(\d{2,3})?$/)).find(Boolean),c=a.includes("bg-white")||!!u;if(!([i,s||d,c,l].filter(Boolean).length>=3))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let h="card-basic";d?h="card-elevated":s&&(h="card-outlined");let S="";return d?S="surface-elevated":u?S=Bi(u[1],u[2]):c&&(S="surface-base"),{shouldNormalize:!0,cardVariantClass:h,surfaceClass:S}}function Hi({tagName:t,originalClassValue:e,policy:r,summary:n,preflightHints:o={}}){if(ti.has(t))return _(n,"table.strict-tags.no-classes"),"";let a=String(e).split(/\s+/).filter(Boolean),i=Ni(a,t),s=Oi(a,t,i),d=Di(a,t,i,s),l=/^h[1-6]$/.test(t),u=["i","svg"].includes(t)||a.some(E=>/^fa(?:[a-z-]+)?$/i.test(String(E||""))||/^fa-/.test(String(E||""))),c=new Set,p={},b={},h=!1,S="",g="",f=!1,y="";a.forEach(E=>{let k=ie(E),L=k.base;if(ei.some(N=>N.test(L))){n.ignored+=1,_(n,"cleanup.non-pds-class");return}let T=Nn(E)||Nn(L);if(T&&(n.totalTailwind+=1),/^space-y-/.test(L)){h=!0,S=S||E,g=g||Ti(E),n.ignored+=1,_(n,"layout.spacing.space-y-to-stack");return}if(/^space-x-/.test(L)){let N=String(L).match(/^space-x-(\d+)$/);if(N){let D=`gap-${N[1]}`,Y=hr.get(D);if(Y&&J(r,"spacing")){c.add(Y),f=!0,y=y||E,n.mapped+=1,n.intentHits+=1,_(n,"layout.spacing.space-x-to-gap");return}}n.ignored+=1,_(n,"style.spacing.atomic");return}if(/^grid-cols-\d+$/.test(L)&&k.breakpoint!=="base"){let N=jn(L);if(Number.isFinite(N)&&J(r,"grid")){p[k.breakpoint]=N,n.mapped+=1,_(n,"intent.layout.responsive-grid-to-auto");return}if(!J(r,"grid")){n.policySkipped+=1,j(n,"Skipped responsive grid mapping because layout.utilities.grid=false.");return}}if(/^flex-(?:row|col)$/.test(L)&&k.breakpoint!=="base"){if(J(r,"flex")){b[k.breakpoint]=L,n.mapped+=1,_(n,"intent.layout.mobile-stack");return}n.policySkipped+=1,j(n,"Skipped responsive flex mapping because layout.utilities.flex=false.");return}if(/^grid-cols-\d+$/.test(L)&&k.breakpoint==="base"){let N=jn(L);Number.isFinite(N)&&J(r,"grid")&&(p.base=N)}let I=Qa.get(L);if(I&&k.breakpoint==="base"){if(!J(r,I.gate)){n.policySkipped+=1,j(n,`Skipped ${L} because layout.utilities.${I.gate}=false.`);return}I.pds.forEach(N=>{N&&c.add(N)}),n.mapped+=1,_(n,I.id);return}if(hr.has(L)&&k.breakpoint==="base"){if(!J(r,"spacing")){n.policySkipped+=1,j(n,"Skipped gap utility because layout.utilities.spacing=false.");return}c.add(hr.get(L)),n.mapped+=1,_(n,"layout.spacing.gap-scale");return}if(Rn.has(L)&&k.breakpoint==="base"){if(!J(r,"container")){n.policySkipped+=1,j(n,"Skipped max-width utility because layout.utilities.container=false.");return}c.add(Rn.get(L)),n.mapped+=1,_(n,"layout.container.max-width");return}if(i.shouldNormalize&&T){let N=String(L||"");if(k.breakpoint==="base"&&["flex-1","grow","flex-grow"].includes(N)){c.add("grow"),n.mapped+=1,n.intentHits+=1,_(n,"intent.component.button.layout-grow");return}if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|w-|h-|min-|max-|size-|overflow)/.test(N)||N.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.button.normalize");return}}if(l&&/^(?:text-(?:xs|sm|base|lg|xl|\dxl|white|black|\[[^\]]+\]|[a-z]+-\d{2,3})|font-|leading-|tracking-|uppercase|lowercase|capitalize)/.test(L)){n.ignored+=1,n.intentHits+=1,_(n,"intent.typography.heading-semantic");return}if(s.shouldNormalize&&T){let N=String(L||"");if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|w-|h-|min-|max-|size-|overflow)/.test(N)||N.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.badge.normalize");return}}if(d.shouldNormalize&&T){let N=String(L||"");if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)/.test(N)||N.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.card.normalize");return}}let O=Mi(L);if(O&&k.breakpoint==="base"){c.add(O),n.mapped+=1,n.intentHits+=1,_(n,"intent.typography.text-neutral-to-muted");return}if(/^text-(?:white|black|[a-z]+-\d{2,3}|\[[^\]]+\])$/.test(L)){if(u||t==="a"&&!i.shouldNormalize){let D=Pn(L,k.breakpoint,k.variants);if(D){let Y=me(n,`${t}-color-${L}`,D.declaration,D.breakpoint,D.pseudo);if(Y){c.add(Y),n.mapped+=1,n.intentHits+=1,_(n,u?"intent.icon.color-preserve":"intent.typography.link-active-preserve");return}}}n.ignored+=1,_(n,"style.color");return}let K=Pn(L,k.breakpoint,k.variants);if(K){let N=me(n,L,K.declaration,K.breakpoint,K.pseudo);if(N){c.add(N),n.mapped+=1,n.intentHits+=1,_(n,K.ruleId),k.breakpoint!=="base"&&j(n,`Generated responsive import fallback for ${E}.`);return}}for(let N of V.ignoredPatterns)if(N.pattern.test(L)){n.ignored+=1,_(n,N.id),N.id==="style.spacing.atomic"&&(n.removedAtomicSpacingCount+=1),N.id==="style.positioning.atomic"&&(n.removedAtomicPositioningCount+=1);return}if(T){n.unknown+=1,Ci(n,E);return}c.add(E)}),h&&J(r,"spacing")&&(c.add(g||"stack-md"),n.mapped+=1,n.intentHits+=1,j(n,`Mapped ${S} to ${g||"stack-md"}.`)),f&&J(r,"spacing")&&j(n,`Mapped ${y} to gap utility.`);let v=On(p);if(v&&J(r,"grid")?(c.delete("grid-cols-1"),c.delete("grid-cols-2"),c.delete("grid-cols-3"),c.delete("grid-cols-4"),c.delete("grid-cols-6"),c.add("grid"),c.add(v),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),j(n,`Collapsed responsive grid columns to ${v}.`)):J(r,"grid")&&Mt.filter(k=>k!=="base"&&Number.isFinite(p[k])).forEach(k=>{let L=p[k],T=Ai(k,L);if(T){c.add("grid"),c.add(T),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),j(n,`Mapped ${k}:grid-cols-${L} to ${T}.`);return}let I=me(n,`grid-cols-${L}`,`grid-template-columns:repeat(${L}, minmax(0, 1fr))`,k);I&&(c.add("grid"),c.add(I),n.intentHits+=1,_(n,"fallback.import-style.grid-cols-responsive"),j(n,`Mapped ${k}:grid-cols-${L} to responsive import fallback for exact columns.`))}),J(r,"flex")&&a.includes("flex-col")&&(b.md==="flex-row"||b.lg==="flex-row")&&(c.delete("flex-col"),c.delete("flex-row"),c.add("mobile-stack"),n.intentHits+=1,_(n,"intent.layout.mobile-stack"),j(n,"Mapped flex-col + breakpoint flex-row to mobile-stack.")),(c.has("flex")||c.has("inline-flex"))&&J(r,"spacing")&&(Ri(c)||Ii(c)||f||h||(c.add("gap-sm"),n.intentHits+=1,_(n,"layout.spacing.flex-min-gap"),j(n,"Added gap-sm fallback for flex container without explicit spacing."))),a.some(E=>/^grid-cols-\d+$/.test(ie(E).base))&&c.has("grid")&&!_i(c)){let E=On(p);E?(c.add(E),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),j(n,`Applied grid safety fallback ${E} to avoid bare grid output.`)):Number.isFinite(p.base)&&p.base>1?(c.add(`grid-cols-${p.base}`),n.intentHits+=1,_(n,"intent.layout.grid-safety-fallback"),j(n,`Applied grid safety fallback grid-cols-${p.base} to preserve explicit grid intent.`)):(c.add("mobile-stack"),n.intentHits+=1,_(n,"intent.layout.grid-safety-fallback.mobile-stack"),j(n,"Applied mobile-stack safety fallback to avoid bare grid output when explicit grid intent was present."))}let A=a.some(E=>/^(?:bg-white|shadow|shadow-md|shadow-lg)$/.test(E)),C=a.some(E=>/^rounded/.test(E));if(["div","section","article","li","aside"].includes(t)&&A&&C&&(c.add("card"),!c.has("surface-elevated")&&a.some(E=>/^shadow/.test(E))&&c.add("surface-elevated"),!c.has("surface-base")&&a.includes("bg-white")&&c.add("surface-base"),n.intentHits+=1,_(n,"intent.component.card")),t==="button"||t==="a"){let E=a.some(T=>/^bg-(?:[a-z]+-)?[4567]00$/.test(T))&&a.includes("text-white"),k=a.some(T=>/^border/.test(T))&&!E,L=a.includes("p-2")&&a.includes("rounded-full");E?(c.delete("surface-base"),c.delete("surface-elevated"),c.add("btn-primary"),n.intentHits+=1,_(n,"intent.component.button.primary")):k&&(c.add("btn-outline"),n.intentHits+=1,_(n,"intent.component.button.outline")),L&&(c.add("icon-only"),_(n,"intent.component.button.icon-only"))}if(i.shouldNormalize){for(let k of Array.from(c))String(k).startsWith("import-")&&c.delete(k);["flex","inline-flex","items-start","items-center","items-end","justify-start","justify-center","justify-end","justify-between","shrink","self-start","self-center","self-end","cursor-pointer","truncate","overflow-hidden","whitespace-nowrap","surface-base","surface-elevated","surface-subtle","card"].forEach(k=>c.delete(k)),i.variant==="primary"?(c.add("btn-primary"),_(n,"intent.component.button.primary")):i.variant==="outline"&&(c.add("btn-outline"),_(n,"intent.component.button.outline")),i.size==="sm"?(c.add("btn-sm"),_(n,"intent.component.button.size-sm")):i.size==="lg"&&(c.add("btn-lg"),_(n,"intent.component.button.size-lg")),i.iconOnly&&(c.add("icon-only"),_(n,"intent.component.button.icon-only")),n.intentHits+=1,_(n,"intent.component.button.normalize")}if(s.shouldNormalize){for(let k of Array.from(c))String(k).startsWith("import-")&&c.delete(k);if(["flex","inline-flex","items-start","items-center","items-end","justify-start","justify-center","justify-end","justify-between","grow","shrink","self-start","self-center","self-end","cursor-pointer","truncate","overflow-hidden","whitespace-nowrap","text-muted","surface-base","surface-elevated","surface-subtle","card"].forEach(k=>c.delete(k)),c.add("badge"),s.variantClass&&c.add(s.variantClass),s.outline&&c.add("badge-outline"),s.sizeClass&&c.add(s.sizeClass),s.pastel&&s.pastel.family){let k=Ye(s.pastel.family,String(s.pastel.bgShade||200)),L=Ye(s.pastel.family,String(s.pastel.textShade||700));if(k&&L){let T=`badge-pastel-${s.pastel.family}-${s.pastel.bgShade}-${s.pastel.textShade}`,I=me(n,T,`background-color:${k};color:${L}`,"base");I&&(c.add(I),_(n,"intent.component.badge.pastel-preserve"),j(n,`Preserved pastel badge tone using ${I}.`))}}n.intentHits+=1,_(n,"intent.component.badge.normalize"),j(n,"Normalized badge/pill utility cluster to PDS badge classes.")}if(d.shouldNormalize){for(let k of Array.from(c))String(k).startsWith("import-")&&c.delete(k);["surface-base","surface-subtle","surface-elevated","surface-sunken","surface-overlay","surface-inverse","surface-primary","surface-secondary","surface-success","surface-warning","surface-danger","surface-info","card-basic","card-elevated","card-outlined","card-interactive"].forEach(k=>c.delete(k)),c.add("card"),d.cardVariantClass&&c.add(d.cardVariantClass),d.surfaceClass&&c.add(d.surfaceClass),n.intentHits+=1,_(n,"intent.component.card.normalize"),j(n,"Normalized card utility cluster to PDS card/surface classes.")}if(t==="a"&&!i.shouldNormalize&&a.some(k=>k.includes("hover:text")||k==="transition-colors")){let k=me(n,"link-reset","text-decoration:none");k&&c.add(k),n.intentHits+=1,_(n,"intent.typography.link-treatment")}if(t==="footer"&&(c.has("surface-base")||a.some(k=>/^bg-/.test(k)))&&(c.delete("surface-base"),c.delete("surface-subtle"),c.add("surface-inverse"),n.intentHits+=1,_(n,"intent.surface.footer-inverse")),o?.listReset&&["ul","ol","menu"].includes(t)){let E=me(n,"list-reset","list-style:none;margin:0;padding:0");E&&(c.add(E),n.intentHits+=1,_(n,"intent.preflight.list-reset"))}if(o?.anchorReset&&t==="a"&&!i.shouldNormalize){let E=me(n,"anchor-reset","color:inherit;text-decoration:inherit");E&&(c.add(E),n.intentHits+=1,_(n,"intent.preflight.anchor-reset"))}let M=new Set(["div","section","article","aside","nav","main","header","footer","form","fieldset","ul","ol","li"]),P=a.some(E=>{let k=ie(E).base;return/^(?:flex|grid|container|gap-|space-[xy]-|items-|justify-|content-|place-|self-|w-|h-|min-|max-)/.test(k)});return c.size===0&&M.has(t)&&P&&(c.add("stack-sm"),j(n,`Added stack-sm fallback for <${t}> with unmapped classes.`)),Array.from(c).join(" ")}function Wi(t="",e={}){let r=String(t||""),n=Ei(e.config||{}),o=xi(e.config||{}),a=Si(),i=zi(r,a),d=ai(i.html,a).replace(/<([a-zA-Z][\w:-]*)([^>]*?)\sclass\s*=\s*(["'])(.*?)\3([^>]*)>/gs,(w,A,C,R,z,M)=>{let P=Hi({tagName:String(A||"").toLowerCase(),originalClassValue:z,policy:n,summary:a,preflightHints:i.hints}),E=String(P||"").trim();return E?`<${A}${C} class=${R}${E}${R}${M}>`:`<${A}${C}${M}>`}),l=yi(gi(pi(ui(d,a),a),a),a,{config:e.config||{}}),u=wi(a,o),c=ki(l,u);u&&j(a,`Generated ${a.importedStyleCount} import-* fallback style mappings.`),(a.removedAtomicSpacingCount>0||a.removedAtomicPositioningCount>0)&&j(a,`Removed atomic utilities by policy: spacing=${a.removedAtomicSpacingCount}, positioning=${a.removedAtomicPositioningCount}.`);let p=Fi(a,16),b=a.mapped+a.ignored+a.policySkipped,h=a.totalTailwind>0?b/a.totalTailwind:1,S=a.totalTailwind>0?a.unknown/a.totalTailwind:0,g=.42+h*.45+Math.min(a.intentHits,4)*.025-S*.18,f=Math.max(.15,Math.min(.96,Number(g.toFixed(2)))),y=[`pds-import: rulebook=${Tn} confidence=${Math.round(f*100)}%`,`pds-import: tailwind=${a.totalTailwind} mapped=${a.mapped} ignored=${a.ignored} policySkipped=${a.policySkipped} unknown=${a.unknown}`];p.length&&y.push(`pds-import: unknown-tailwind=${p.join(", ")}`),a.notes.length&&y.push(`pds-import: notes=${a.notes.join(" | ")}`);let v=`<!-- ${y.join(` -->
|
|
4009
|
+
${t}`}function Bn(t=""){if(!t)return!1;if(t.includes(":")||t.includes("["))return!0;let e=t.split("-")[0];return si.includes(e)}function le(t=""){let e=String(t).split(":");if(e.length===1)return{breakpoint:"base",base:e[0],variants:[]};let r=e[e.length-1],n=e.slice(0,-1);return{breakpoint:n.find(a=>Mt.includes(a))||"base",base:r,variants:n}}function zi(){return{totalTailwind:0,mapped:0,ignored:0,policySkipped:0,unknown:0,intentHits:0,unknownTokens:new Map,notes:[],appliedRules:new Set,importBaseStyles:new Map,importResponsiveStyles:new Map,importPseudoStyles:new Map,importedStyleCount:0,labelNestingCount:0,removedAtomicSpacingCount:0,removedAtomicPositioningCount:0}}function Ci(t=""){let e=String(t||"").toLowerCase().replace(/\s+/g,""),r=e.includes("menu,ol,ul{list-style:none")||e.includes("ol,ul,menu{list-style:none")||e.includes("ul,ol,menu{list-style:none"),n=e.includes("a{color:inherit;text-decoration:inherit");return{listReset:r,anchorReset:n}}function Ei(t=""){return String(t||"").toLowerCase().includes("cdn.tailwindcss.com")?{listReset:!0,anchorReset:!0}:{listReset:!1,anchorReset:!1}}function Ai(t="",e=null){let r=String(t||""),n={listReset:!1,anchorReset:!1,strippedRuntimeCssBlocks:0,strippedRuntimeScripts:0};return r=r.replace(/<style([^>]*)>([\s\S]*?)<\/style>/gi,(o,a,i)=>{let s=String(i||"");if(!(/tailwindcss\s+v\d/i.test(s)||/\*\s*!\s*tailwindcss/i.test(s)))return o;let l=Ci(s);return n.listReset=n.listReset||l.listReset,n.anchorReset=n.anchorReset||l.anchorReset,n.strippedRuntimeCssBlocks+=1,""}),r=r.replace(/<script([^>]*?)src\s*=\s*(?:(['"])([^"']*cdn\.tailwindcss\.com[^"']*)\2|([^\s>]*cdn\.tailwindcss\.com[^\s>]*))([^>]*)><\/script>/gi,(o,a,i,s,d)=>{let u=Ei(s||d||"");return n.listReset=n.listReset||u.listReset,n.anchorReset=n.anchorReset||u.anchorReset,n.strippedRuntimeScripts+=1,""}),e&&(n.strippedRuntimeCssBlocks>0||n.strippedRuntimeScripts>0)&&(_(e,"intent.preflight.tailwind-runtime-detected"),n.strippedRuntimeCssBlocks>0&&B(e,`Detected and stripped ${n.strippedRuntimeCssBlocks} Tailwind runtime style block(s).`)),e&&n.strippedRuntimeScripts>0&&B(e,`Removed ${n.strippedRuntimeScripts} Tailwind CDN script reference(s).`),{html:r,hints:n}}function B(t,e){!t||!e||t.notes.includes(e)||t.notes.push(e)}function Mi(t,e){let r=t.unknownTokens.get(e)||0;t.unknownTokens.set(e,r+1)}function Ti(t={}){let r=(t?.design&&typeof t.design=="object"?t.design:t)?.layout?.utilities||{};return{grid:r.grid!==!1,flex:r.flex!==!1,spacing:r.spacing!==!1,container:r.container!==!1}}function J(t,e){return e?t?.[e]!==!1:!0}function Dn(t){let e=String(t).match(/^grid-cols-(\d+)$/);return e?Number(e[1]):null}function Hn(t={}){let e=Mt.map(o=>({bp:o,cols:t[o]})).filter(o=>Number.isFinite(o.cols));if(e.length<2)return null;if(e.length===2){let[o,a]=e;if(o.bp==="base"&&o.cols===1&&a.cols===2)return"grid-auto-lg";if(o.bp==="base"&&o.cols===1&&a.cols>=3)return null;if(o.cols<a.cols){if(a.cols>=4)return"grid-auto-md";if(a.cols>=2)return"grid-auto-lg"}return null}let r=!0;for(let o=1;o<e.length;o+=1)if(e[o].cols<=e[o-1].cols){r=!1;break}if(!r)return null;let n=e[e.length-1]?.cols||0;return n>=4?"grid-auto-md":n>=3?"grid-auto-sm":null}function Ri(t=""){let e=String(t).match(/^text-(gray|slate|zinc|neutral|stone)-(\d{2,3})$/);if(!e)return"";let r=Number(e[2]);return Number.isFinite(r)&&r>=400&&r<=600?"text-muted":""}function Ii(t="",e=0){return!t||!Number.isFinite(e)?"":{sm:{2:"sm:grid-cols-2"},md:{3:"md:grid-cols-3"},lg:{4:"lg:grid-cols-4"}}?.[t]?.[e]||""}function _i(t=""){let e=le(t),n=String(e?.base||"").match(/^space-y-(\d+)$/);if(!n)return"stack-md";let o=Number(n[1]);return Number.isFinite(o)?o<=1?"stack-xs":o<=2?"stack-sm":o<=4?"stack-md":"stack-lg":"stack-md"}function Fi(t=new Set){return Array.from(t).some(e=>{let r=String(e||"");return/^gap-(?:xs|sm|md|lg|xl)$/.test(r)||/^gap-[0-9]+$/.test(r)||/^import-(?:sm-|md-|lg-|xl-)?gap-/.test(r)})}function Pi(t=new Set){return Array.from(t).some(e=>/^stack-(?:xs|sm|md|lg|xl)$/.test(String(e||"")))}function Ni(t=new Set){return Array.from(t).some(e=>{let r=String(e||"");return/^grid-cols-\d+$/.test(r)||/^grid-auto-(?:sm|md|lg|xl)$/.test(r)||/^(?:sm|md|lg|xl):grid-cols-\d+$/.test(r)||/^import-(?:sm-|md-|lg-|xl-)?grid-cols-\d+$/.test(r)})}function ji(t,e=12){return Array.from(t.unknownTokens.entries()).sort((r,n)=>n[1]-r[1]).slice(0,e).map(([r])=>r)}function _(t,e){!t||!e||t.appliedRules.add(e)}function de(t=[],e){return!Array.isArray(t)||!e?!1:t.some(r=>e.test(String(r)))}function Oi(t=[]){for(let e of t){let r=le(e);if(r.breakpoint!=="base")continue;let n=String(r.base).match(/^h-(.+)$/);if(!n)continue;let o=Ke(n[1]);if(!o||o==="auto")continue;let a=String(o).match(/^(-?\d+(?:\.\d+)?)rem$/);if(a){let i=Number(a[1]);if(Number.isFinite(i))return i*16}}return null}function Bi(t=[],e=""){let r=e==="button",n=de(t,/^bg-/),o=de(t,/^hover:bg-/),a=de(t,/^border/),i=de(t,/^shadow/),s=t.includes("cursor-pointer"),d=de(t,/^rounded/),l=de(t,/^(?:min-w|max-w|w)-/),u=de(t,/^text-(?:white|black|\[[^\]]+\]|[a-z]+-\d{2,3})$/),c=n||o||i;if(!(r||e==="a"&&(c||a||s||d&&l)))return{shouldNormalize:!1,variant:"none",size:"base",iconOnly:!1};let b="none";a&&!n&&!o?b="outline":(c||n&&u)&&(b="primary");let $=t.includes("rounded-full")&&(t.includes("p-2")||t.includes("p-1")||t.includes("p-2.5")),g=de(t,/^size-(?:6|7|8|9|10|11|12)$/),f=$||g,y=Oi(t),v=t.includes("text-sm")||t.includes("text-xs"),m=t.includes("text-lg")||t.includes("text-xl"),w="base";return y&&y<=40||v?w="sm":(y&&y>=48||m)&&(w="lg"),{shouldNormalize:!0,variant:b,size:w,iconOnly:f}}function Di(t=""){let e=String(t||"").toLowerCase();return["green","emerald","lime","teal"].includes(e)?"badge-success":["blue","sky","cyan","indigo"].includes(e)?"badge-info":["yellow","amber","orange"].includes(e)?"badge-warning":["red","rose","pink"].includes(e)?"badge-danger":["gray","slate","zinc","neutral","stone"].includes(e)?"badge-secondary":["purple","violet","fuchsia","primary","accent"].includes(e)?"badge-primary":"badge-secondary"}function Hi(t=[],e="",r={shouldNormalize:!1}){if(r?.shouldNormalize)return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};if(["button","a","input","select","textarea"].includes(e))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};if(t.some(I=>/^badge(?:-|$)/.test(String(I))))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let n=t.map(I=>le(I)).filter(I=>I.breakpoint==="base").map(I=>String(I.base)),o=n.some(I=>/^rounded(?:-|$)/.test(I)),a=n.some(I=>/^px-/.test(I)),i=n.some(I=>/^py-/.test(I)),s=a&&i,d=n.includes("text-xs")||n.includes("text-sm"),l=n.includes("text-lg")||n.includes("text-xl"),u=n.map(I=>I.match(/^bg-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),c=n.map(I=>I.match(/^text-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),p=n.map(I=>I.match(/^border-([a-z]+)-(\d{2,3})$/)).find(Boolean),h=Number(u?.[2]),b=Number(c?.[2]),$=!!(u&&Number.isFinite(h)&&h<=300),g=n.some(I=>/^border(?:-|$)/.test(I)),f=!!(u||c||p),y=[o,s,d,$||g].filter(Boolean).length;if(!(f&&y>=3))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let m=u&&u[1]||c&&c[1]||p&&p[1]||"",w=Di(m),A=g&&!$,E=d?"badge-sm":l?"badge-lg":"",M=$?{family:m,bgShade:Number.isFinite(h)?h:200,textShade:Number.isFinite(b)?b:700}:null;return{shouldNormalize:!0,variantClass:M?"":w,outline:A,sizeClass:E,pastel:M}}function Wi(t="",e=0){let r=String(t||"").toLowerCase(),n=Number(e);return r==="white"?"surface-base":["gray","slate","zinc","neutral","stone"].includes(r)?Number.isFinite(n)&&n<=100?"surface-base":"surface-subtle":["blue","sky","cyan","indigo","primary","info"].includes(r)?"surface-info":["purple","violet","fuchsia","accent"].includes(r)?"surface-primary":["green","emerald","lime","teal","success"].includes(r)?"surface-success":["yellow","amber","orange","warning"].includes(r)?"surface-warning":["red","rose","pink","danger"].includes(r)?"surface-danger":"surface-base"}function Ui(t=[],e="",r={shouldNormalize:!1},n={shouldNormalize:!1}){if(r?.shouldNormalize||n?.shouldNormalize)return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(!new Set(["div","section","article","aside","li"]).has(e))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(t.some(g=>/^card(?:-|$)/.test(String(g))))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let a=t.map(g=>le(g)).filter(g=>g.breakpoint==="base").map(g=>String(g.base)),i=a.some(g=>/^rounded(?:-|$)/.test(g)),s=a.some(g=>/^border(?:$|-)/.test(g)),d=a.some(g=>/^shadow(?:$|-)/.test(g)),l=a.some(g=>/^(?:p|px|py|pt|pb|pl|pr)-/.test(g)),u=a.map(g=>g.match(/^bg-([a-z]+)-?(\d{2,3})?$/)).find(Boolean),c=a.includes("bg-white")||!!u;if(!([i,s||d,c,l].filter(Boolean).length>=3))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let b="card-basic";d?b="card-elevated":s&&(b="card-outlined");let $="";return d?$="surface-elevated":u?$=Wi(u[1],u[2]):c&&($="surface-base"),{shouldNormalize:!0,cardVariantClass:b,surfaceClass:$}}function qi({tagName:t,originalClassValue:e,policy:r,summary:n,preflightHints:o={}}){if(oi.has(t))return _(n,"table.strict-tags.no-classes"),"";let a=String(e).split(/\s+/).filter(Boolean),i=Bi(a,t),s=Hi(a,t,i),d=Ui(a,t,i,s),l=/^h[1-6]$/.test(t),u=["i","svg"].includes(t)||a.some(T=>/^fa(?:[a-z-]+)?$/i.test(String(T||""))||/^fa-/.test(String(T||""))),c=new Set,p={},h={},b=!1,$="",g="",f=!1,y="";a.forEach(T=>{let L=le(T),z=L.base;if(ni.some(P=>P.test(z))){n.ignored+=1,_(n,"cleanup.non-pds-class");return}let k=Bn(T)||Bn(z);if(k&&(n.totalTailwind+=1),/^space-y-/.test(z)){b=!0,$=$||T,g=g||_i(T),n.ignored+=1,_(n,"layout.spacing.space-y-to-stack");return}if(/^space-x-/.test(z)){let P=String(z).match(/^space-x-(\d+)$/);if(P){let D=`gap-${P[1]}`,te=yr.get(D);if(te&&J(r,"spacing")){c.add(te),f=!0,y=y||T,n.mapped+=1,n.intentHits+=1,_(n,"layout.spacing.space-x-to-gap");return}}n.ignored+=1,_(n,"style.spacing.atomic");return}if(/^grid-cols-\d+$/.test(z)&&L.breakpoint!=="base"){let P=Dn(z);if(Number.isFinite(P)&&J(r,"grid")){p[L.breakpoint]=P,n.mapped+=1,_(n,"intent.layout.responsive-grid-to-auto");return}if(!J(r,"grid")){n.policySkipped+=1,B(n,"Skipped responsive grid mapping because layout.utilities.grid=false.");return}}if(/^flex-(?:row|col)$/.test(z)&&L.breakpoint!=="base"){if(J(r,"flex")){h[L.breakpoint]=z,n.mapped+=1,_(n,"intent.layout.mobile-stack");return}n.policySkipped+=1,B(n,"Skipped responsive flex mapping because layout.utilities.flex=false.");return}if(/^grid-cols-\d+$/.test(z)&&L.breakpoint==="base"){let P=Dn(z);Number.isFinite(P)&&J(r,"grid")&&(p.base=P)}let C=ri.get(z);if(C&&L.breakpoint==="base"){if(!J(r,C.gate)){n.policySkipped+=1,B(n,`Skipped ${z} because layout.utilities.${C.gate}=false.`);return}C.pds.forEach(P=>{P&&c.add(P)}),n.mapped+=1,_(n,C.id);return}if(yr.has(z)&&L.breakpoint==="base"){if(!J(r,"spacing")){n.policySkipped+=1,B(n,"Skipped gap utility because layout.utilities.spacing=false.");return}c.add(yr.get(z)),n.mapped+=1,_(n,"layout.spacing.gap-scale");return}if(Fn.has(z)&&L.breakpoint==="base"){if(!J(r,"container")){n.policySkipped+=1,B(n,"Skipped max-width utility because layout.utilities.container=false.");return}c.add(Fn.get(z)),n.mapped+=1,_(n,"layout.container.max-width");return}if(i.shouldNormalize&&k){let P=String(z||"");if(L.breakpoint==="base"&&["flex-1","grow","flex-grow"].includes(P)){c.add("grow"),n.mapped+=1,n.intentHits+=1,_(n,"intent.component.button.layout-grow");return}if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|w-|h-|min-|max-|size-|overflow)/.test(P)||P.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.button.normalize");return}}if(l&&/^(?:text-(?:xs|sm|base|lg|xl|\dxl|white|black|\[[^\]]+\]|[a-z]+-\d{2,3})|font-|leading-|tracking-|uppercase|lowercase|capitalize)/.test(z)){n.ignored+=1,n.intentHits+=1,_(n,"intent.typography.heading-semantic");return}if(s.shouldNormalize&&k){let P=String(z||"");if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|w-|h-|min-|max-|size-|overflow)/.test(P)||P.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.badge.normalize");return}}if(d.shouldNormalize&&k){let P=String(z||"");if(/^(?:bg-|text-(?!center$|left$|right$)|font-|leading-|tracking-|rounded|ring|border|shadow|outline|transition|duration|ease|delay|animate|p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr)/.test(P)||P.startsWith("hover:")){n.ignored+=1,_(n,"intent.component.card.normalize");return}}let N=Ri(z);if(N&&L.breakpoint==="base"){c.add(N),n.mapped+=1,n.intentHits+=1,_(n,"intent.typography.text-neutral-to-muted");return}if(/^text-(?:white|black|[a-z]+-\d{2,3}|\[[^\]]+\])$/.test(z)){if(u||t==="a"&&!i.shouldNormalize){let D=On(z,L.breakpoint,L.variants);if(D){let te=he(n,`${t}-color-${z}`,D.declaration,D.breakpoint,D.pseudo);if(te){c.add(te),n.mapped+=1,n.intentHits+=1,_(n,u?"intent.icon.color-preserve":"intent.typography.link-active-preserve");return}}}n.ignored+=1,_(n,"style.color");return}let H=On(z,L.breakpoint,L.variants);if(H){let P=he(n,z,H.declaration,H.breakpoint,H.pseudo);if(P){c.add(P),n.mapped+=1,n.intentHits+=1,_(n,H.ruleId),L.breakpoint!=="base"&&B(n,`Generated responsive import fallback for ${T}.`);return}}for(let P of K.ignoredPatterns)if(P.pattern.test(z)){n.ignored+=1,_(n,P.id),P.id==="style.spacing.atomic"&&(n.removedAtomicSpacingCount+=1),P.id==="style.positioning.atomic"&&(n.removedAtomicPositioningCount+=1);return}if(k){n.unknown+=1,Mi(n,T);return}c.add(T)}),b&&J(r,"spacing")&&(c.add(g||"stack-md"),n.mapped+=1,n.intentHits+=1,B(n,`Mapped ${$} to ${g||"stack-md"}.`)),f&&J(r,"spacing")&&B(n,`Mapped ${y} to gap utility.`);let v=Hn(p);if(v&&J(r,"grid")?(c.delete("grid-cols-1"),c.delete("grid-cols-2"),c.delete("grid-cols-3"),c.delete("grid-cols-4"),c.delete("grid-cols-6"),c.add("grid"),c.add(v),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),B(n,`Collapsed responsive grid columns to ${v}.`)):J(r,"grid")&&Mt.filter(L=>L!=="base"&&Number.isFinite(p[L])).forEach(L=>{let z=p[L],k=Ii(L,z);if(k){c.add("grid"),c.add(k),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),B(n,`Mapped ${L}:grid-cols-${z} to ${k}.`);return}let C=he(n,`grid-cols-${z}`,`grid-template-columns:repeat(${z}, minmax(0, 1fr))`,L);C&&(c.add("grid"),c.add(C),n.intentHits+=1,_(n,"fallback.import-style.grid-cols-responsive"),B(n,`Mapped ${L}:grid-cols-${z} to responsive import fallback for exact columns.`))}),J(r,"flex")&&a.includes("flex-col")&&(h.md==="flex-row"||h.lg==="flex-row")&&(c.delete("flex-col"),c.delete("flex-row"),c.add("mobile-stack"),n.intentHits+=1,_(n,"intent.layout.mobile-stack"),B(n,"Mapped flex-col + breakpoint flex-row to mobile-stack.")),(c.has("flex")||c.has("inline-flex"))&&J(r,"spacing")&&(Fi(c)||Pi(c)||f||b||(c.add("gap-sm"),n.intentHits+=1,_(n,"layout.spacing.flex-min-gap"),B(n,"Added gap-sm fallback for flex container without explicit spacing."))),a.some(T=>/^grid-cols-\d+$/.test(le(T).base))&&c.has("grid")&&!Ni(c)){let T=Hn(p);T?(c.add(T),n.intentHits+=1,_(n,"intent.layout.responsive-grid-to-auto"),B(n,`Applied grid safety fallback ${T} to avoid bare grid output.`)):Number.isFinite(p.base)&&p.base>1?(c.add(`grid-cols-${p.base}`),n.intentHits+=1,_(n,"intent.layout.grid-safety-fallback"),B(n,`Applied grid safety fallback grid-cols-${p.base} to preserve explicit grid intent.`)):(c.add("mobile-stack"),n.intentHits+=1,_(n,"intent.layout.grid-safety-fallback.mobile-stack"),B(n,"Applied mobile-stack safety fallback to avoid bare grid output when explicit grid intent was present."))}let A=a.some(T=>/^(?:bg-white|shadow|shadow-md|shadow-lg)$/.test(T)),E=a.some(T=>/^rounded/.test(T));if(["div","section","article","li","aside"].includes(t)&&A&&E&&(c.add("card"),!c.has("surface-elevated")&&a.some(T=>/^shadow/.test(T))&&c.add("surface-elevated"),!c.has("surface-base")&&a.includes("bg-white")&&c.add("surface-base"),n.intentHits+=1,_(n,"intent.component.card")),t==="button"||t==="a"){let T=a.some(k=>/^bg-(?:[a-z]+-)?[4567]00$/.test(k))&&a.includes("text-white"),L=a.some(k=>/^border/.test(k))&&!T,z=a.includes("p-2")&&a.includes("rounded-full");T?(c.delete("surface-base"),c.delete("surface-elevated"),c.add("btn-primary"),n.intentHits+=1,_(n,"intent.component.button.primary")):L&&(c.add("btn-outline"),n.intentHits+=1,_(n,"intent.component.button.outline")),z&&(c.add("icon-only"),_(n,"intent.component.button.icon-only"))}if(i.shouldNormalize){for(let L of Array.from(c))String(L).startsWith("import-")&&c.delete(L);["flex","inline-flex","items-start","items-center","items-end","justify-start","justify-center","justify-end","justify-between","shrink","self-start","self-center","self-end","cursor-pointer","truncate","overflow-hidden","whitespace-nowrap","surface-base","surface-elevated","surface-subtle","card"].forEach(L=>c.delete(L)),i.variant==="primary"?(c.add("btn-primary"),_(n,"intent.component.button.primary")):i.variant==="outline"&&(c.add("btn-outline"),_(n,"intent.component.button.outline")),i.size==="sm"?(c.add("btn-sm"),_(n,"intent.component.button.size-sm")):i.size==="lg"&&(c.add("btn-lg"),_(n,"intent.component.button.size-lg")),i.iconOnly&&(c.add("icon-only"),_(n,"intent.component.button.icon-only")),n.intentHits+=1,_(n,"intent.component.button.normalize")}if(s.shouldNormalize){for(let L of Array.from(c))String(L).startsWith("import-")&&c.delete(L);if(["flex","inline-flex","items-start","items-center","items-end","justify-start","justify-center","justify-end","justify-between","grow","shrink","self-start","self-center","self-end","cursor-pointer","truncate","overflow-hidden","whitespace-nowrap","text-muted","surface-base","surface-elevated","surface-subtle","card"].forEach(L=>c.delete(L)),c.add("badge"),s.variantClass&&c.add(s.variantClass),s.outline&&c.add("badge-outline"),s.sizeClass&&c.add(s.sizeClass),s.pastel&&s.pastel.family){let L=Ye(s.pastel.family,String(s.pastel.bgShade||200)),z=Ye(s.pastel.family,String(s.pastel.textShade||700));if(L&&z){let k=`badge-pastel-${s.pastel.family}-${s.pastel.bgShade}-${s.pastel.textShade}`,C=he(n,k,`background-color:${L};color:${z}`,"base");C&&(c.add(C),_(n,"intent.component.badge.pastel-preserve"),B(n,`Preserved pastel badge tone using ${C}.`))}}n.intentHits+=1,_(n,"intent.component.badge.normalize"),B(n,"Normalized badge/pill utility cluster to PDS badge classes.")}if(d.shouldNormalize){for(let L of Array.from(c))String(L).startsWith("import-")&&c.delete(L);["surface-base","surface-subtle","surface-elevated","surface-sunken","surface-overlay","surface-inverse","surface-primary","surface-secondary","surface-success","surface-warning","surface-danger","surface-info","card-basic","card-elevated","card-outlined","card-interactive"].forEach(L=>c.delete(L)),c.add("card"),d.cardVariantClass&&c.add(d.cardVariantClass),d.surfaceClass&&c.add(d.surfaceClass),n.intentHits+=1,_(n,"intent.component.card.normalize"),B(n,"Normalized card utility cluster to PDS card/surface classes.")}if(t==="a"&&!i.shouldNormalize&&a.some(L=>L.includes("hover:text")||L==="transition-colors")){let L=he(n,"link-reset","text-decoration:none");L&&c.add(L),n.intentHits+=1,_(n,"intent.typography.link-treatment")}if(t==="footer"&&(c.has("surface-base")||a.some(L=>/^bg-/.test(L)))&&(c.delete("surface-base"),c.delete("surface-subtle"),c.add("surface-inverse"),n.intentHits+=1,_(n,"intent.surface.footer-inverse")),o?.listReset&&["ul","ol","menu"].includes(t)){let T=he(n,"list-reset","list-style:none;margin:0;padding:0");T&&(c.add(T),n.intentHits+=1,_(n,"intent.preflight.list-reset"))}if(o?.anchorReset&&t==="a"&&!i.shouldNormalize){let T=he(n,"anchor-reset","color:inherit;text-decoration:inherit");T&&(c.add(T),n.intentHits+=1,_(n,"intent.preflight.anchor-reset"))}let I=new Set(["div","section","article","aside","nav","main","header","footer","form","fieldset","ul","ol","li"]),O=a.some(T=>{let L=le(T).base;return/^(?:flex|grid|container|gap-|space-[xy]-|items-|justify-|content-|place-|self-|w-|h-|min-|max-)/.test(L)});return c.size===0&&I.has(t)&&O&&(c.add("stack-sm"),B(n,`Added stack-sm fallback for <${t}> with unmapped classes.`)),Array.from(c).join(" ")}function Vi(t="",e={}){let r=String(t||""),n=Ti(e.config||{}),o=Si(e.config||{}),a=zi(),i=Ai(r,a),d=li(i.html,a).replace(/<([a-zA-Z][\w:-]*)([^>]*?)\sclass\s*=\s*(["'])(.*?)\3([^>]*)>/gs,(w,A,E,M,R,I)=>{let O=qi({tagName:String(A||"").toLowerCase(),originalClassValue:R,policy:n,summary:a,preflightHints:i.hints}),T=String(O||"").trim();return T?`<${A}${E} class=${M}${T}${M}${I}>`:`<${A}${E}${I}>`}),l=wi(bi(mi(gi(d,a),a),a),a,{config:e.config||{}}),u=$i(a,o),c=Li(l,u);u&&B(a,`Generated ${a.importedStyleCount} import-* fallback style mappings.`),(a.removedAtomicSpacingCount>0||a.removedAtomicPositioningCount>0)&&B(a,`Removed atomic utilities by policy: spacing=${a.removedAtomicSpacingCount}, positioning=${a.removedAtomicPositioningCount}.`);let p=ji(a,16),h=a.mapped+a.ignored+a.policySkipped,b=a.totalTailwind>0?h/a.totalTailwind:1,$=a.totalTailwind>0?a.unknown/a.totalTailwind:0,g=.42+b*.45+Math.min(a.intentHits,4)*.025-$*.18,f=Math.max(.15,Math.min(.96,Number(g.toFixed(2)))),y=[`pds-import: rulebook=${_n} confidence=${Math.round(f*100)}%`,`pds-import: tailwind=${a.totalTailwind} mapped=${a.mapped} ignored=${a.ignored} policySkipped=${a.policySkipped} unknown=${a.unknown}`];p.length&&y.push(`pds-import: unknown-tailwind=${p.join(", ")}`),a.notes.length&&y.push(`pds-import: notes=${a.notes.join(" | ")}`);let v=`<!-- ${y.join(` -->
|
|
3975
4010
|
<!-- `)} -->
|
|
3976
|
-
${c}`,m=[];return a.unknown>0&&m.push({severity:"warning",message:`Converted with ${a.unknown} unknown Tailwind utilities requiring manual review.`}),a.policySkipped>0&&m.push({severity:"info",message:`Skipped ${a.policySkipped} utility mappings due to PDS config policy.`}),p.length&&m.push({severity:"info",message:`Top unknown utilities: ${p.slice(0,8).join(", ")}`}),{html:v,confidence:f,issues:m,meta:{rulebookVersion:
|
|
3977
|
-
`)}}function Je(t=[]){let e=new Map;t.forEach(o=>{let a=String(o||"").trim();a&&e.set(a,(e.get(a)||0)+1)});let r="",n=-1;return e.forEach((o,a)=>{o>n&&(r=a,n=o)}),r}function Z(t,e=[]){return e.flatMap(r=>t.get(r)||[])}function os(t,e){if(!t||!e)return null;let r=String(e).split(".").filter(Boolean),n=t;for(let o of r){if(!n||n.type!=="object"||!n.properties||typeof n.properties!="object")return null;n=n.properties[o]}return n||null}function as(t={}){let e=t&&typeof t=="object"?t:{},r=x?.configRelations&&typeof x.configRelations=="object"?x.configRelations:{},n=new Set(Object.keys(r)),o=null;if(typeof x?.buildConfigFormSchema=="function")try{o=x.buildConfigFormSchema(e)?.schema||null}catch{o=null}return!o&&x?.configFormSchema?.schema&&(o=x.configFormSchema.schema),{design:e,schema:o,allowedPaths:n}}function is(t,e){if(!t)return e;if(Array.isArray(t.oneOf)&&t.oneOf.length){let r=t.oneOf.map(n=>n?.const).filter(n=>n!=null);if(r.length){if(typeof e=="string"){let n=r.find(o=>String(o).toLowerCase()===e.toLowerCase());if(n!==void 0)return n}if(typeof e=="number"){let n=r.map(o=>Number(o)).filter(o=>Number.isFinite(o));if(n.length)return n.reduce((o,a)=>Math.abs(a-e)<Math.abs(o-e)?a:o,n[0])}return r[0]}}if(t.type==="number"||t.type==="integer"){let r=Number(e);return Number.isFinite(r)?t.type==="integer"?Math.round(r):r:void 0}return t.type==="boolean"?!!e:t.type==="string"?String(e||"").trim():e}function ss(t,e,r){let n=String(e||"").split(".").filter(Boolean);if(!n.length)return;let o=t;for(let a=0;a<n.length;a+=1){let i=n[a];if(a===n.length-1){o[i]=r;return}(!o[i]||typeof o[i]!="object"||Array.isArray(o[i]))&&(o[i]={}),o=o[i]}}function W(t,e,r){if(r==null||r===""||t.allowedPaths.size&&!t.allowedPaths.has(e))return;let n=os(t.schema,e),o=is(n,r);o==null||o===""||(ss(t.patch,e,o),t.inferredPaths.add(e))}function he(t=[]){let e=t.map(n=>Gi(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let r=Math.floor(e.length/2);return e.length%2?e[r]:(e[r-1]+e[r])/2}function ls(t=[]){let e=t.map(r=>String(r||"").split(",")[0]||"").map(r=>r.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean);return Je(e)}function cs(t){let e=Number(t);return Number.isFinite(e)?e<=.75?"hairline":e<=1.5?"thin":e<=2.5?"medium":"thick":"thin"}function ds(t=""){let r=String(ie(t).base||"").toLowerCase().match(/^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(!r)return null;let n=r[1]||"DEFAULT",o={none:0,xs:2,sm:4,DEFAULT:6,md:8,lg:12,xl:16,"2xl":24,"3xl":32};return n==="full"?null:Number.isFinite(o[n])?o[n]:null}function us(t=[]){let e=t.map(n=>ds(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let r=Math.floor(e.length/2);return e.length%2?e[r]:(e[r-1]+e[r])/2}function yr(t={}){let e=String(t.html||"");if(!e.trim())return H({source:"html-inference",type:String(t.sourceType||"design-inference"),confidence:0,issues:[{severity:"warning",message:"No HTML or guideline text provided for design extraction."}],designPatch:{},meta:{extractedPathCount:0,extractedPaths:[]}});let r=as(t.config||{}),n=ns(e),o={patch:{},inferredPaths:new Set,allowedPaths:r.allowedPaths,schema:r.schema},a=Z(n.declarations,["color"]).map(G=>ee(G)).filter(Boolean),i=Z(n.declarations,["background","background-color"]).map(G=>ee(G)).filter(Boolean),s=[...i,...a,...n.colorValues].filter(Boolean),d=Array.from(new Set(s)),l=[...n.rootBackgroundColors||[]],u=[...n.rootClassBackgroundColors||[]],c=l.length?l:u,p=[...i,...n.classBackgroundColors||[]],b=rs(c,p),h=b.color;W(o,"colors.background",h||i[0]||d[0]);let S=d.filter(G=>G&&G!==h),f=Je(n.buttonBackgroundColors||[])||S[0]||d[0],y=S.filter(G=>G&&G!==f);W(o,"colors.primary",f),W(o,"colors.secondary",y[0]||f||d[0]),W(o,"colors.accent",y[1]||y[0]||f||d[0]);let v=Z(n.declarations,["font-family"]),m=ls(v);W(o,"typography.fontFamilyBody",m),W(o,"typography.fontFamilyHeadings",m),W(o,"typography.fontFamilyMono",/mono|code/i.test(n.textCorpus)?"JetBrains Mono":"");let w=Z(n.declarations,["font-size"]),A=he(w);W(o,"typography.baseSize",A);let C=Z(n.declarations,["padding","padding-top","padding-right","padding-bottom","padding-left","margin","margin-top","margin-right","margin-bottom","margin-left","gap","row-gap","column-gap"]),R=he(C);W(o,"spatialRhythm.baseUnit",R),W(o,"spatialRhythm.inputPadding",R),W(o,"spatialRhythm.buttonPadding",R);let z=Z(n.declarations,["border-radius"]),M=he(z)||us(n.classTokens||[]);W(o,"shape.radiusSize",M);let P=Z(n.declarations,["border-width","border-top-width","border-right-width","border-bottom-width","border-left-width"]),E=he(P);W(o,"shape.borderWidth",cs(E));let k=Z(n.declarations,["max-width"]),L=he(k);W(o,"layout.containerMaxWidth",L),W(o,"layout.maxWidth",L);let T=Z(n.declarations,["min-height","height"]),I=he(T);W(o,"layout.buttonMinHeight",I),W(o,"layout.inputMinHeight",I);let O=Z(n.declarations,["transition-duration"]),B=he(O.map(G=>{let Ie=String(G||"").trim().toLowerCase(),ce=Number.parseFloat(Ie);return Number.isFinite(ce)?Ie.endsWith("ms")?ce:Ie.endsWith("s")?ce*1e3:ce:null}));W(o,"behavior.transitionSpeed",B);let N=Z(n.declarations,["box-shadow"]).length>0;W(o,"layers.baseShadowOpacity",N?.2:.08);let D=Array.from(o.inferredPaths),Y=D.reduce((G,Ie)=>{let ce=Ie.split(".")[0];return G[ce]=(G[ce]||0)+1,G},{}),Re=D.length?Math.min(.92,.35+D.length*.02):.25;return H({source:"html-inference",type:String(t.sourceType||"design-inference"),confidence:Re,issues:D.length?[]:[{severity:"warning",message:"Could not infer enough design signals from input."}],designPatch:o.patch,meta:{extractedPathCount:D.length,extractedPaths:D,categoryCoverage:Y,colorSampleSize:d.length,backgroundInference:{source:b.source,candidates:{root:c.length,declaration:i.length,classBased:(n.classBackgroundColors||[]).length}}}})}function qn(t={}){let e=String(t.input||"").trim(),r=String(t.sourceType||"unknown");if(!e)return H({source:r,type:r,confidence:0,issues:[{severity:"error",message:"No input provided."}],meta:{conversionMode:"none"}});if(Wn(e)){let n=At({html:e,config:t.config||{}});return H({source:r,type:r,confidence:n.confidence,issues:n.issues,template:n.template,meta:{...n.meta||{},conversionMode:"html-to-pds"}})}return H({source:r,type:r,confidence:.48,issues:[{severity:"info",message:"Input is not HTML; generated text-based preview template."}],template:{id:`${r}-text-import`,name:"Imported Guideline Text",html:`<article class="card surface-base stack-sm"><h3>Imported Guidelines</h3><pre>${Vi(e)}</pre></article>`},meta:{conversionMode:"text-preview"}})}function At(t={}){let e=String(t.html||"").trim();if(!e)return H({source:"tailwind",type:"tailwind-html",confidence:0,issues:[{severity:"error",message:"No HTML provided."}]});let r=Wi(e,{config:t.config||{}});return H({source:"tailwind",type:"tailwind-html",confidence:r.confidence,issues:r.issues,template:{id:"tailwind-import",name:"Converted Tailwind Markup",html:r.html},meta:r.meta})}function vr(t={}){let e=String(t.text||"").trim();if(!e)return H({source:"brand",type:"brand-guidelines",confidence:0,issues:[{severity:"error",message:"No brand guideline text provided."}]});let r=qi(e),n={colors:{},typography:{}},o=[];return r?n.colors.primary=r:o.push({severity:"warning",message:"No HEX color found; primary color was not inferred."}),/serif/i.test(e)&&(n.typography.fontFamilyBody="Georgia, serif"),/sans[-\s]?serif/i.test(e)&&(n.typography.fontFamilyBody="Inter, Arial, sans-serif"),/mono|monospace/i.test(e)&&(n.typography.fontFamilyMono="JetBrains Mono, monospace"),H({source:"brand",type:"brand-guidelines",confidence:r?.68:.52,issues:o,designPatch:n,meta:{inferred:{primaryColor:r}}})}var xr="convert-only",Vn="adopt-design-and-convert";function ps(t){return String(t||"").trim().toLowerCase()===Vn?Vn:xr}function Gn(...t){let e=t.flat().filter(Boolean);if(!e.length)return[];let r=new Set;return e.filter(n=>{let o=`${String(n?.severity||"info")}::${String(n?.path||"")}::${String(n?.message||"")}`;return r.has(o)?!1:(r.add(o),!0)})}function Kn(t=[]){let e=t.map(r=>Number(r)).filter(r=>Number.isFinite(r));return e.length?Math.max(0,Math.min(1,e.reduce((r,n)=>r+n,0)/e.length)):0}function Ze(t={},e={}){return{...t&&typeof t=="object"?t:{},...e&&typeof e=="object"?e:{}}}function Zn(t={},e={}){if(!e||typeof e!="object")return t;let r=Array.isArray(t)?[...t]:{...t};return Object.entries(e).forEach(([n,o])=>{o&&typeof o=="object"&&!Array.isArray(o)?r[n]=Zn(r[n]&&typeof r[n]=="object"?r[n]:{},o):r[n]=o}),r}function Jn(t){if(typeof structuredClone=="function")try{return structuredClone(t)}catch{}return JSON.parse(JSON.stringify(t||{}))}function fs(t={}){let e=Number(t?.ratio),r=Number(t?.min),n=Number.isFinite(e)?e.toFixed(2):"n/a",o=Number.isFinite(r)?r.toFixed(2):"n/a";return{severity:"error",path:String(t?.path||"/colors"),message:`${String(t?.message||"Color contrast validation failed.")} (ratio=${n}, required=${o})`}}function Yn(t={},e={},r={}){if(!(e&&typeof e=="object"?Object.keys(e):[]).length)return{ok:!0,blocked:!1,issues:[],report:{ok:!0,issues:[]}};let o=Number(r.minContrast),a=Number.isFinite(o)?o:4.5,i=Zn(Jn(t||{}),Jn(e||{})),s=Fr(i,{minContrast:a,minMutedContrast:3,extendedChecks:!0}),d=Array.isArray(s?.issues)?s.issues.map(l=>fs(l)):[];return{ok:!!s?.ok,blocked:!s?.ok,issues:d,report:{ok:!!s?.ok,minContrast:a,issues:Array.isArray(s?.issues)?s.issues:[]}}}function gs(){return[{id:"template",name:"Templates"},{id:"tailwind-html",name:"Tailwind HTML"},{id:"brand-guidelines",name:"Brand Guidelines"},{id:"figma-json",name:"Figma Tokens JSON (planned)"},{id:"ux-pilot",name:"UX Pilot (planned)"},{id:"google-stitch",name:"Google Stitch (planned)"}]}async function ms(t={}){let e=String(t.sourceType||""),r=ps(t.importMode),n=String(t.input||""),o=t.config||null;if(e==="template"){let a=fn(t.templateId,t);return a.meta=Ze(a.meta,{importMode:r}),a}if(e==="tailwind-html"){let a=At({html:n,config:o});if(r===xr)return a.meta=Ze(a.meta,{importMode:r}),a;let i=yr({html:n,config:o,sourceType:e}),s=Yn(o||{},i.designPatch||{}),d=s.blocked?{}:i.designPatch,l=s.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...s.issues]:[];return H({source:a.source||"tailwind",type:e,confidence:Kn([a.confidence,i.confidence]),issues:Gn(a.issues,i.issues,l),template:a.template,designPatch:d,meta:Ze(a.meta,{importMode:r,inference:i.meta,validation:s.report,validationBlocked:s.blocked})})}if(e==="brand-guidelines"){let a=qn({input:n,sourceType:e,config:o});if(r===xr)return a.meta=Ze(a.meta,{importMode:r}),a;let i=vr({text:n}),s=yr({html:n,config:o,sourceType:e}),d={...i.designPatch&&typeof i.designPatch=="object"?i.designPatch:{},...s.designPatch&&typeof s.designPatch=="object"?s.designPatch:{}},l=Yn(o||{},d||{}),u=l.blocked?{}:d,c=l.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...l.issues]:[];return H({source:"brand",type:e,confidence:Kn([a.confidence,i.confidence,s.confidence]),issues:Gn(a.issues,i.issues,s.issues,c),template:a.template,designPatch:u,meta:Ze(a.meta,{importMode:r,inference:s.meta,brandHeuristics:i.meta,validation:l.report,validationBlocked:l.blocked})})}return e==="figma-json"||e==="ux-pilot"||e==="google-stitch"?H({source:e,type:e,confidence:0,issues:[{severity:"info",message:`${e} adapter is not implemented yet in this phase.`}],meta:{importMode:r}}):H({source:e||"unknown",type:"unknown",confidence:0,issues:[{severity:"error",message:"Unsupported import source type."}],meta:{importMode:r}})}var hs="pds-live-import-history";var ne="imports",Tt=null;function bs(){return typeof globalThis<"u"&&typeof globalThis.indexedDB<"u"}function te(t){return typeof t=="string"?t:""}function Rt(t){return Array.isArray(t)?t:[]}function It(t){return t&&typeof t=="object"?t:{}}function _t(){return bs()?Tt||(Tt=new Promise((t,e)=>{let r=globalThis.indexedDB.open(hs,1);r.onupgradeneeded=()=>{let n=r.result;if(!n.objectStoreNames.contains(ne)){let o=n.createObjectStore(ne,{keyPath:"id",autoIncrement:!0});o.createIndex("createdAt","createdAt",{unique:!1}),o.createIndex("sourceType","sourceType",{unique:!1}),o.createIndex("fileName","fileName",{unique:!1})}},r.onsuccess=()=>t(r.result),r.onerror=()=>e(r.error||new Error("Failed to open import history database."))}),Tt):Promise.resolve(null)}function Ft(t){return new Promise((e,r)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>r(t.error||new Error("IndexedDB operation failed."))})}function ys(t={}){let e=Date.now(),r=Number.isFinite(Number(t.createdAt))?Number(t.createdAt):e,n=new Date(r).toISOString(),o=Rt(t.issues).map(d=>({severity:te(d?.severity||"info"),message:te(d?.message||"")})),a=Rt(t.notes).filter(d=>typeof d=="string"),i=Rt(t.unknownTailwindTokens).filter(d=>typeof d=="string"),s=Rt(t.appliedRules).filter(d=>typeof d=="string");return{createdAt:r,createdAtIso:n,sourceType:te(t.sourceType||"unknown"),importMode:te(t.importMode||"convert-only"),source:te(t.source||"unknown"),type:te(t.type||"unknown"),fileName:te(t.fileName||""),fileSize:Number.isFinite(Number(t.fileSize))?Number(t.fileSize):0,mimeType:te(t.mimeType||""),fileContents:te(t.fileContents||""),convertedHtml:te(t.convertedHtml||""),confidence:Number.isFinite(Number(t.confidence))?Number(t.confidence):0,notes:a,issues:o,coverage:It(t.coverage),unknownTailwindTokens:i,appliedRules:s,importStyleSheetInjected:!!t.importStyleSheetInjected,templateName:te(t.templateName||""),designPatch:It(t.designPatch),meta:It(t.meta),resultSnapshot:It(t.resultSnapshot)}}async function vs(t={}){let e=await _t();if(!e)return null;let r=ys(t),o=e.transaction(ne,"readwrite").objectStore(ne);return{id:await Ft(o.add(r)),...r}}async function xs(t={}){let e=await _t();if(!e)return[];let r=Number.isFinite(Number(t.limit))?Math.max(1,Number(t.limit)):30,o=e.transaction(ne,"readonly").objectStore(ne);return(await Ft(o.getAll())||[]).sort((i,s)=>Number(s?.createdAt||0)-Number(i?.createdAt||0)).slice(0,r)}async function ws(t){let e=await _t();if(!e)return null;let r=Number(t);if(!Number.isFinite(r))return null;let o=e.transaction(ne,"readonly").objectStore(ne);return await Ft(o.get(r))||null}async function ks(){let t=await _t();if(!t)return;let r=t.transaction(ne,"readwrite").objectStore(ne);await Ft(r.clear())}export{ks as clearLiveImportHistory,vr as convertBrandGuidelinesToPatch,At as convertTailwindHtmlToPds,H as createImportResult,Ui as describeTailwindConversionRules,ws as getLiveImportHistoryEntry,gs as getLiveImportSources,Ca as isImportResult,xs as listLiveImportHistory,pn as listLiveTemplates,Xr as loadGoogleFont,bt as loadLiveTemplateCatalog,ms as runLiveImport,vs as saveLiveImportHistory,$a as startLive};
|
|
4011
|
+
${c}`,m=[];return a.unknown>0&&m.push({severity:"warning",message:`Converted with ${a.unknown} unknown Tailwind utilities requiring manual review.`}),a.policySkipped>0&&m.push({severity:"info",message:`Skipped ${a.policySkipped} utility mappings due to PDS config policy.`}),p.length&&m.push({severity:"info",message:`Top unknown utilities: ${p.slice(0,8).join(", ")}`}),{html:v,confidence:f,issues:m,meta:{rulebookVersion:_n,coverage:{tailwind:a.totalTailwind,mapped:a.mapped,ignored:a.ignored,policySkipped:a.policySkipped,unknown:a.unknown,importedStyles:a.importedStyleCount,nestedLabelPairs:a.labelNestingCount},unknownTailwindTokens:p,notes:a.notes,appliedRules:Array.from(a.appliedRules),policy:n,importStyleSheetInjected:!!u,breakpoints:o}}}function Gi(){return{rulesJsonPath:ei,...K,directMappings:K.directMappings.map(t=>({id:t.id,tw:t.tw,pds:t.pds,gate:t.gate||null})),ignoredPatterns:K.ignoredPatterns.map(t=>({id:t.id,pattern:String(t.pattern),reason:t.reason}))}}function Ki(t){let e=String(t||"").match(/#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b/);return e?e[0]:null}function Ji(t){return String(t||"").replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}function Vn(t){return/<\s*[a-z][^>]*>/i.test(String(t||""))}function Yi(t){let e=String(t||"").trim().toLowerCase();if(!e)return null;let r=Number.parseFloat(e);return Number.isFinite(r)?e.endsWith("rem")||e.endsWith("em")?r*16:e.endsWith("px")||/^[0-9.\-]+$/.test(e)?r:null:null}function Q(t){let e=String(t||"").trim();if(!e)return"";let r=e.match(/#(?:[0-9a-f]{3,8})\b/i);if(r)return r[0].toLowerCase();let n=e.match(/rgba?\([^)]*\)/i);if(n)return n[0];let o=e.match(/hsla?\([^)]*\)/i);return o?o[0]:""}function Zi(t=""){let e=String(t||"").trim();if(!e||typeof window>"u"||typeof document>"u")return"";let r=document.documentElement;if(!r)return"";let n=window.getComputedStyle(r);return String(n.getPropertyValue(e)||"").trim()}function Xi(t=""){let e=String(t||"").trim(),r=Q(e);if(r)return r;let n=e.match(/var\(\s*(--[^\s,)]+)\s*(?:,[^)]+)?\)/i);if(!n)return"";let o=Zi(n[1]);return Q(o)}function Qi(t=""){let e=String(t||"").trim();if(!e)return"";let r=e.split(":").pop()||e;if(r==="bg-white")return"#ffffff";if(r==="bg-black")return"#000000";let n=r.match(/^bg-black\/(\d{1,3})$/i);if(n)return`rgba(0,0,0,${Math.max(0,Math.min(100,Number(n[1])))/100})`;let o=r.match(/^bg-\[([^\]]+)\]$/i);if(o)return Q(o[1]);let a=r.match(/^bg-([a-z]+)-(\d{2,3})$/i);if(!a)return"";let i=Ye(a[1],a[2]);return i?Xi(i):""}function Wn(t=""){return String(t||"").split(/\s+/).map(r=>r.trim()).filter(Boolean).map(r=>Qi(r)).filter(Boolean)}function es(t=""){let e=[],r=String(t||""),n=/([^{}]+)\{([^{}]*)\}/g,o=n.exec(r);for(;o;){let a=String(o[1]||"").trim(),i=String(o[2]||"").trim();a&&i&&e.push({selector:a,body:i}),o=n.exec(r)}return e}function ts(t=""){let e=String(t||"").toLowerCase();return e?/(^|\s|,)(html|body|:root|main)(\s|,|$)|#app\b|#root\b|\.app\b|\.page\b/.test(e):!1}function rs(t=""){let e=String(t||"").trim().match(/rgba?\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)(?:\s*,\s*([0-9.]+))?\s*\)/i);if(!e)return null;let r=Number.parseFloat(e[1]),n=Number.parseFloat(e[2]),o=Number.parseFloat(e[3]),a=e[4]==null?1:Number.parseFloat(e[4]);return[r,n,o,a].every(i=>Number.isFinite(i))?{r:Math.max(0,Math.min(255,r)),g:Math.max(0,Math.min(255,n)),b:Math.max(0,Math.min(255,o)),a:Math.max(0,Math.min(1,a))}:null}function ns(t=""){let e=String(t||"").trim().match(/^#([0-9a-f]{3,8})$/i);if(!e)return null;let r=e[1].toLowerCase();if(r.length===3){let[n,o,a]=r.split("");return{r:Number.parseInt(`${n}${n}`,16),g:Number.parseInt(`${o}${o}`,16),b:Number.parseInt(`${a}${a}`,16),a:1}}return r.length===6||r.length===8?{r:Number.parseInt(r.slice(0,2),16),g:Number.parseInt(r.slice(2,4),16),b:Number.parseInt(r.slice(4,6),16),a:r.length===8?Number.parseInt(r.slice(6,8),16)/255:1}:null}function Gn(t=""){let e=Q(t);return e?e.startsWith("#")?ns(e):e.startsWith("rgb")?rs(e):null:null}function os(t){if(!t)return null;let e=a=>{let i=Number(a)/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4},r=e(t.r),n=e(t.g),o=e(t.b);return .2126*r+.7152*n+.0722*o}function Un(t=""){let e=String(t||"").trim().toLowerCase();if(!e||e==="transparent")return!0;let r=Gn(e);return r&&Number.isFinite(r.a)?r.a<=.04:!1}function as(t=[],e=[]){let r=t.map(d=>Q(d)).filter(d=>d&&!Un(d)),n=Je(r);if(n)return{color:n,source:"root"};let o=e.map(d=>Q(d)).filter(d=>d&&!Un(d)),a=o.filter(d=>{let l=Gn(d),u=os(l);return Number.isFinite(u)?u>=.72:!1}),i=Je(a);if(i)return{color:i,source:"fallback-bright"};let s=Je(o);return s?{color:s,source:"fallback"}:{color:"",source:"none"}}function Me(t,e=new Map){let r=String(t||""),n=/([a-z-]+)\s*:\s*([^;{}]+)/gi,o=n.exec(r);for(;o;){let a=String(o[1]||"").trim().toLowerCase(),i=String(o[2]||"").trim();a&&i&&(e.has(a)||e.set(a,[]),e.get(a).push(i)),o=n.exec(r)}return e}function is(t=""){let e=String(t||""),r=new Map,n=[],o=[],a=[],i=[],s=[],d=[],l=[],u=/#(?:[0-9a-f]{3,8})\b|rgba?\([^)]*\)|hsla?\([^)]*\)/gi,c=p=>{(String(p||"").match(u)||[]).forEach(b=>{let $=Q(b);$&&n.push($)})};if(typeof DOMParser<"u"&&Vn(e))try{let h=new DOMParser().parseFromString(e,"text/html");Array.from(h.querySelectorAll("style")).map(v=>v.textContent||"").forEach(v=>{Me(v,r),c(v),es(v).forEach(m=>{if(!ts(m.selector))return;let w=Me(m.body,new Map),A=Y(w,["background","background-color"]).map(E=>Q(E)).filter(Boolean);o.push(...A)})}),Array.from(h.querySelectorAll("[style]")).forEach(v=>{let m=v.getAttribute("style")||"";Me(m,r),c(m)}),["html","body","main","#app","#root",".app",".page"].forEach(v=>{let m=h.querySelector(v);if(!m)return;let w=m.getAttribute("style")||"";if(!w)return;let A=Me(w,new Map),E=Y(A,["background","background-color"]).map(R=>Q(R)).filter(Boolean);o.push(...E);let M=Wn(m.getAttribute("class")||"");a.push(...M)}),Array.from(h.querySelectorAll("[class]")).forEach(v=>{let m=se(v.getAttribute("class")||"");d.push(...m);let w=Wn(v.getAttribute("class")||"");i.push(...w);let A=String(v.tagName||"").toLowerCase(),E=A==="button"||A==="a",M=m.some(R=>/^bg-/.test(String(le(R).base||"")));E&&M&&w.length&&s.push(...w)});let y=h.body?.textContent||"";y.trim()&&l.push(y),c(h.documentElement?.outerHTML||e)}catch{Me(e,r),c(e),l.push(e)}else Me(e,r),c(e),l.push(e);return{declarations:r,colorValues:n,rootBackgroundColors:o,rootClassBackgroundColors:a,classBackgroundColors:i,buttonBackgroundColors:s,classTokens:d,textCorpus:l.join(`
|
|
4012
|
+
`)}}function Je(t=[]){let e=new Map;t.forEach(o=>{let a=String(o||"").trim();a&&e.set(a,(e.get(a)||0)+1)});let r="",n=-1;return e.forEach((o,a)=>{o>n&&(r=a,n=o)}),r}function Y(t,e=[]){return e.flatMap(r=>t.get(r)||[])}function ss(t,e){if(!t||!e)return null;let r=String(e).split(".").filter(Boolean),n=t;for(let o of r){if(!n||n.type!=="object"||!n.properties||typeof n.properties!="object")return null;n=n.properties[o]}return n||null}function ls(t={}){let e=t&&typeof t=="object"?t:{},r=x?.configRelations&&typeof x.configRelations=="object"?x.configRelations:{},n=new Set(Object.keys(r)),o=null;if(typeof x?.buildConfigFormSchema=="function")try{o=x.buildConfigFormSchema(e)?.schema||null}catch{o=null}return!o&&x?.configFormSchema?.schema&&(o=x.configFormSchema.schema),{design:e,schema:o,allowedPaths:n}}function cs(t,e){if(!t)return e;if(Array.isArray(t.oneOf)&&t.oneOf.length){let r=t.oneOf.map(n=>n?.const).filter(n=>n!=null);if(r.length){if(typeof e=="string"){let n=r.find(o=>String(o).toLowerCase()===e.toLowerCase());if(n!==void 0)return n}if(typeof e=="number"){let n=r.map(o=>Number(o)).filter(o=>Number.isFinite(o));if(n.length)return n.reduce((o,a)=>Math.abs(a-e)<Math.abs(o-e)?a:o,n[0])}return r[0]}}if(t.type==="number"||t.type==="integer"){let r=Number(e);return Number.isFinite(r)?t.type==="integer"?Math.round(r):r:void 0}return t.type==="boolean"?!!e:t.type==="string"?String(e||"").trim():e}function ds(t,e,r){let n=String(e||"").split(".").filter(Boolean);if(!n.length)return;let o=t;for(let a=0;a<n.length;a+=1){let i=n[a];if(a===n.length-1){o[i]=r;return}(!o[i]||typeof o[i]!="object"||Array.isArray(o[i]))&&(o[i]={}),o=o[i]}}function U(t,e,r){if(r==null||r===""||t.allowedPaths.size&&!t.allowedPaths.has(e))return;let n=ss(t.schema,e),o=cs(n,r);o==null||o===""||(ds(t.patch,e,o),t.inferredPaths.add(e))}function be(t=[]){let e=t.map(n=>Yi(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let r=Math.floor(e.length/2);return e.length%2?e[r]:(e[r-1]+e[r])/2}function us(t=[]){let e=t.map(r=>String(r||"").split(",")[0]||"").map(r=>r.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean);return Je(e)}function ps(t){let e=Number(t);return Number.isFinite(e)?e<=.75?"hairline":e<=1.5?"thin":e<=2.5?"medium":"thick":"thin"}function fs(t=""){let r=String(le(t).base||"").toLowerCase().match(/^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(!r)return null;let n=r[1]||"DEFAULT",o={none:0,xs:2,sm:4,DEFAULT:6,md:8,lg:12,xl:16,"2xl":24,"3xl":32};return n==="full"?null:Number.isFinite(o[n])?o[n]:null}function gs(t=[]){let e=t.map(n=>fs(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let r=Math.floor(e.length/2);return e.length%2?e[r]:(e[r-1]+e[r])/2}function xr(t={}){let e=String(t.html||"");if(!e.trim())return W({source:"html-inference",type:String(t.sourceType||"design-inference"),confidence:0,issues:[{severity:"warning",message:"No HTML or guideline text provided for design extraction."}],designPatch:{},meta:{extractedPathCount:0,extractedPaths:[]}});let r=ls(t.config||{}),n=is(e),o={patch:{},inferredPaths:new Set,allowedPaths:r.allowedPaths,schema:r.schema},a=Y(n.declarations,["color"]).map(q=>Q(q)).filter(Boolean),i=Y(n.declarations,["background","background-color"]).map(q=>Q(q)).filter(Boolean),s=[...i,...a,...n.colorValues].filter(Boolean),d=Array.from(new Set(s)),l=[...n.rootBackgroundColors||[]],u=[...n.rootClassBackgroundColors||[]],c=l.length?l:u,p=[...i,...n.classBackgroundColors||[]],h=as(c,p),b=h.color;U(o,"colors.background",b||i[0]||d[0]);let $=d.filter(q=>q&&q!==b),f=Je(n.buttonBackgroundColors||[])||$[0]||d[0],y=$.filter(q=>q&&q!==f);U(o,"colors.primary",f),U(o,"colors.secondary",y[0]||f||d[0]),U(o,"colors.accent",y[1]||y[0]||f||d[0]);let v=Y(n.declarations,["font-family"]),m=us(v);U(o,"typography.fontFamilyBody",m),U(o,"typography.fontFamilyHeadings",m),U(o,"typography.fontFamilyMono",/mono|code/i.test(n.textCorpus)?"JetBrains Mono":"");let w=Y(n.declarations,["font-size"]),A=be(w);U(o,"typography.baseSize",A);let E=Y(n.declarations,["padding","padding-top","padding-right","padding-bottom","padding-left","margin","margin-top","margin-right","margin-bottom","margin-left","gap","row-gap","column-gap"]),M=be(E);U(o,"spatialRhythm.baseUnit",M),U(o,"spatialRhythm.inputPadding",M),U(o,"spatialRhythm.buttonPadding",M);let R=Y(n.declarations,["border-radius"]),I=be(R)||gs(n.classTokens||[]);U(o,"shape.radiusSize",I);let O=Y(n.declarations,["border-width","border-top-width","border-right-width","border-bottom-width","border-left-width"]),T=be(O);U(o,"shape.borderWidth",ps(T));let L=Y(n.declarations,["max-width"]),z=be(L);U(o,"layout.containerMaxWidth",z),U(o,"layout.maxWidth",z);let k=Y(n.declarations,["min-height","height"]),C=be(k);U(o,"layout.buttonMinHeight",C),U(o,"layout.inputMinHeight",C);let N=Y(n.declarations,["transition-duration"]),j=be(N.map(q=>{let ce=String(q||"").trim().toLowerCase(),re=Number.parseFloat(ce);return Number.isFinite(re)?ce.endsWith("ms")?re:ce.endsWith("s")?re*1e3:re:null}));U(o,"behavior.transitionSpeed",j);let P=Y(n.declarations,["box-shadow"]).length>0;U(o,"layers.baseShadowOpacity",P?.2:.08);let D=Array.from(o.inferredPaths),te=D.reduce((q,ce)=>{let re=ce.split(".")[0];return q[re]=(q[re]||0)+1,q},{}),Ie=D.length?Math.min(.92,.35+D.length*.02):.25;return W({source:"html-inference",type:String(t.sourceType||"design-inference"),confidence:Ie,issues:D.length?[]:[{severity:"warning",message:"Could not infer enough design signals from input."}],designPatch:o.patch,meta:{extractedPathCount:D.length,extractedPaths:D,categoryCoverage:te,colorSampleSize:d.length,backgroundInference:{source:h.source,candidates:{root:c.length,declaration:i.length,classBased:(n.classBackgroundColors||[]).length}}}})}function Kn(t={}){let e=String(t.input||"").trim(),r=String(t.sourceType||"unknown");if(!e)return W({source:r,type:r,confidence:0,issues:[{severity:"error",message:"No input provided."}],meta:{conversionMode:"none"}});if(Vn(e)){let n=Tt({html:e,config:t.config||{}});return W({source:r,type:r,confidence:n.confidence,issues:n.issues,template:n.template,meta:{...n.meta||{},conversionMode:"html-to-pds"}})}return W({source:r,type:r,confidence:.48,issues:[{severity:"info",message:"Input is not HTML; generated text-based preview template."}],template:{id:`${r}-text-import`,name:"Imported Guideline Text",html:`<article class="card surface-base stack-sm"><h3>Imported Guidelines</h3><pre>${Ji(e)}</pre></article>`},meta:{conversionMode:"text-preview"}})}function Tt(t={}){let e=String(t.html||"").trim();if(!e)return W({source:"tailwind",type:"tailwind-html",confidence:0,issues:[{severity:"error",message:"No HTML provided."}]});let r=Vi(e,{config:t.config||{}});return W({source:"tailwind",type:"tailwind-html",confidence:r.confidence,issues:r.issues,template:{id:"tailwind-import",name:"Converted Tailwind Markup",html:r.html},meta:r.meta})}function wr(t={}){let e=String(t.text||"").trim();if(!e)return W({source:"brand",type:"brand-guidelines",confidence:0,issues:[{severity:"error",message:"No brand guideline text provided."}]});let r=Ki(e),n={colors:{},typography:{}},o=[];return r?n.colors.primary=r:o.push({severity:"warning",message:"No HEX color found; primary color was not inferred."}),/serif/i.test(e)&&(n.typography.fontFamilyBody="Georgia, serif"),/sans[-\s]?serif/i.test(e)&&(n.typography.fontFamilyBody="Inter, Arial, sans-serif"),/mono|monospace/i.test(e)&&(n.typography.fontFamilyMono="JetBrains Mono, monospace"),W({source:"brand",type:"brand-guidelines",confidence:r?.68:.52,issues:o,designPatch:n,meta:{inferred:{primaryColor:r}}})}var kr="convert-only",Jn="adopt-design-and-convert";function ms(t){return String(t||"").trim().toLowerCase()===Jn?Jn:kr}function Yn(...t){let e=t.flat().filter(Boolean);if(!e.length)return[];let r=new Set;return e.filter(n=>{let o=`${String(n?.severity||"info")}::${String(n?.path||"")}::${String(n?.message||"")}`;return r.has(o)?!1:(r.add(o),!0)})}function Zn(t=[]){let e=t.map(r=>Number(r)).filter(r=>Number.isFinite(r));return e.length?Math.max(0,Math.min(1,e.reduce((r,n)=>r+n,0)/e.length)):0}function Ze(t={},e={}){return{...t&&typeof t=="object"?t:{},...e&&typeof e=="object"?e:{}}}function eo(t={},e={}){if(!e||typeof e!="object")return t;let r=Array.isArray(t)?[...t]:{...t};return Object.entries(e).forEach(([n,o])=>{o&&typeof o=="object"&&!Array.isArray(o)?r[n]=eo(r[n]&&typeof r[n]=="object"?r[n]:{},o):r[n]=o}),r}function Xn(t){if(typeof structuredClone=="function")try{return structuredClone(t)}catch{}return JSON.parse(JSON.stringify(t||{}))}function hs(t={}){let e=Number(t?.ratio),r=Number(t?.min),n=Number.isFinite(e)?e.toFixed(2):"n/a",o=Number.isFinite(r)?r.toFixed(2):"n/a";return{severity:"error",path:String(t?.path||"/colors"),message:`${String(t?.message||"Color contrast validation failed.")} (ratio=${n}, required=${o})`}}function Qn(t={},e={},r={}){if(!(e&&typeof e=="object"?Object.keys(e):[]).length)return{ok:!0,blocked:!1,issues:[],report:{ok:!0,issues:[]}};let o=Number(r.minContrast),a=Number.isFinite(o)?o:4.5,i=eo(Xn(t||{}),Xn(e||{})),s=jr(i,{minContrast:a,minMutedContrast:3,extendedChecks:!0}),d=Array.isArray(s?.issues)?s.issues.map(l=>hs(l)):[];return{ok:!!s?.ok,blocked:!s?.ok,issues:d,report:{ok:!!s?.ok,minContrast:a,issues:Array.isArray(s?.issues)?s.issues:[]}}}function bs(){return[{id:"template",name:"Templates"},{id:"tailwind-html",name:"Tailwind HTML"},{id:"brand-guidelines",name:"Brand Guidelines"},{id:"figma-json",name:"Figma Tokens JSON (planned)"},{id:"ux-pilot",name:"UX Pilot (planned)"},{id:"google-stitch",name:"Google Stitch (planned)"}]}async function ys(t={}){let e=String(t.sourceType||""),r=ms(t.importMode),n=String(t.input||""),o=t.config||null;if(e==="template"){let a=hn(t.templateId,t);return a.meta=Ze(a.meta,{importMode:r}),a}if(e==="tailwind-html"){let a=Tt({html:n,config:o});if(r===kr)return a.meta=Ze(a.meta,{importMode:r}),a;let i=xr({html:n,config:o,sourceType:e}),s=Qn(o||{},i.designPatch||{}),d=s.blocked?{}:i.designPatch,l=s.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...s.issues]:[];return W({source:a.source||"tailwind",type:e,confidence:Zn([a.confidence,i.confidence]),issues:Yn(a.issues,i.issues,l),template:a.template,designPatch:d,meta:Ze(a.meta,{importMode:r,inference:i.meta,validation:s.report,validationBlocked:s.blocked})})}if(e==="brand-guidelines"){let a=Kn({input:n,sourceType:e,config:o});if(r===kr)return a.meta=Ze(a.meta,{importMode:r}),a;let i=wr({text:n}),s=xr({html:n,config:o,sourceType:e}),d={...i.designPatch&&typeof i.designPatch=="object"?i.designPatch:{},...s.designPatch&&typeof s.designPatch=="object"?s.designPatch:{}},l=Qn(o||{},d||{}),u=l.blocked?{}:d,c=l.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...l.issues]:[];return W({source:"brand",type:e,confidence:Zn([a.confidence,i.confidence,s.confidence]),issues:Yn(a.issues,i.issues,s.issues,c),template:a.template,designPatch:u,meta:Ze(a.meta,{importMode:r,inference:s.meta,brandHeuristics:i.meta,validation:l.report,validationBlocked:l.blocked})})}return e==="figma-json"||e==="ux-pilot"||e==="google-stitch"?W({source:e,type:e,confidence:0,issues:[{severity:"info",message:`${e} adapter is not implemented yet in this phase.`}],meta:{importMode:r}}):W({source:e||"unknown",type:"unknown",confidence:0,issues:[{severity:"error",message:"Unsupported import source type."}],meta:{importMode:r}})}var vs="pds-live-import-history";var oe="imports",Rt=null;function xs(){return typeof globalThis<"u"&&typeof globalThis.indexedDB<"u"}function ee(t){return typeof t=="string"?t:""}function It(t){return Array.isArray(t)?t:[]}function _t(t){return t&&typeof t=="object"?t:{}}function Ft(){return xs()?Rt||(Rt=new Promise((t,e)=>{let r=globalThis.indexedDB.open(vs,1);r.onupgradeneeded=()=>{let n=r.result;if(!n.objectStoreNames.contains(oe)){let o=n.createObjectStore(oe,{keyPath:"id",autoIncrement:!0});o.createIndex("createdAt","createdAt",{unique:!1}),o.createIndex("sourceType","sourceType",{unique:!1}),o.createIndex("fileName","fileName",{unique:!1})}},r.onsuccess=()=>t(r.result),r.onerror=()=>e(r.error||new Error("Failed to open import history database."))}),Rt):Promise.resolve(null)}function Pt(t){return new Promise((e,r)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>r(t.error||new Error("IndexedDB operation failed."))})}function ws(t={}){let e=Date.now(),r=Number.isFinite(Number(t.createdAt))?Number(t.createdAt):e,n=new Date(r).toISOString(),o=It(t.issues).map(d=>({severity:ee(d?.severity||"info"),message:ee(d?.message||"")})),a=It(t.notes).filter(d=>typeof d=="string"),i=It(t.unknownTailwindTokens).filter(d=>typeof d=="string"),s=It(t.appliedRules).filter(d=>typeof d=="string");return{createdAt:r,createdAtIso:n,sourceType:ee(t.sourceType||"unknown"),importMode:ee(t.importMode||"convert-only"),source:ee(t.source||"unknown"),type:ee(t.type||"unknown"),fileName:ee(t.fileName||""),fileSize:Number.isFinite(Number(t.fileSize))?Number(t.fileSize):0,mimeType:ee(t.mimeType||""),fileContents:ee(t.fileContents||""),convertedHtml:ee(t.convertedHtml||""),confidence:Number.isFinite(Number(t.confidence))?Number(t.confidence):0,notes:a,issues:o,coverage:_t(t.coverage),unknownTailwindTokens:i,appliedRules:s,importStyleSheetInjected:!!t.importStyleSheetInjected,templateName:ee(t.templateName||""),designPatch:_t(t.designPatch),meta:_t(t.meta),resultSnapshot:_t(t.resultSnapshot)}}async function ks(t={}){let e=await Ft();if(!e)return null;let r=ws(t),o=e.transaction(oe,"readwrite").objectStore(oe);return{id:await Pt(o.add(r)),...r}}async function Ss(t={}){let e=await Ft();if(!e)return[];let r=Number.isFinite(Number(t.limit))?Math.max(1,Number(t.limit)):30,o=e.transaction(oe,"readonly").objectStore(oe);return(await Pt(o.getAll())||[]).sort((i,s)=>Number(s?.createdAt||0)-Number(i?.createdAt||0)).slice(0,r)}async function $s(t){let e=await Ft();if(!e)return null;let r=Number(t);if(!Number.isFinite(r))return null;let o=e.transaction(oe,"readonly").objectStore(oe);return await Pt(o.get(r))||null}async function Ls(){let t=await Ft();if(!t)return;let r=t.transaction(oe,"readwrite").objectStore(oe);await Pt(r.clear())}export{Ls as clearLiveImportHistory,wr as convertBrandGuidelinesToPatch,Tt as convertTailwindHtmlToPds,W as createImportResult,Gi as describeTailwindConversionRules,$s as getLiveImportHistoryEntry,bs as getLiveImportSources,Ma as isImportResult,Ss as listLiveImportHistory,mn as listLiveTemplates,tn as loadGoogleFont,yt as loadLiveTemplateCatalog,ys as runLiveImport,ks as saveLiveImportHistory,Ca as startLive};
|