@pure-ds/core 0.7.4 → 0.7.6
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/.cursorrules +21 -0
- package/.github/copilot-instructions.md +21 -0
- package/dist/types/public/assets/js/pds-ask.d.ts +1 -2
- package/dist/types/public/assets/js/pds-ask.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds-autocomplete.d.ts +36 -25
- package/dist/types/public/assets/js/pds-autocomplete.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds-enhancers.d.ts +4 -4
- package/dist/types/public/assets/js/pds-enhancers.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds-manager.d.ts +159 -444
- package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds-toast.d.ts +6 -7
- package/dist/types/public/assets/js/pds-toast.d.ts.map +1 -1
- package/dist/types/public/assets/js/pds.d.ts +3 -4
- package/dist/types/public/assets/js/pds.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/package.json +8 -2
- package/packages/pds-cli/bin/pds-bootstrap.js +1 -1
- package/packages/pds-cli/bin/pds-import.js +1 -1
- package/packages/pds-cli/bin/pds-mcp-eval.js +79 -0
- package/packages/pds-cli/bin/pds-mcp-health.js +128 -0
- package/packages/pds-cli/bin/pds-mcp-server.js +140 -0
- package/packages/pds-cli/bin/pds-setup-mcp.js +72 -0
- package/packages/pds-cli/lib/pds-mcp-core.js +497 -0
- package/packages/pds-cli/lib/pds-mcp-eval-cases.json +72 -0
- package/public/assets/js/app.js +2 -2
- package/public/assets/js/pds-manager.js +25 -25
- package/public/assets/js/pds.js +2 -2
- package/public/assets/pds/core/pds-manager.js +25 -25
- package/public/assets/pds/core.js +2 -2
- package/readme.md +44 -2
- package/src/js/pds-core/pds-start-helpers.js +0 -20
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Xr=Object.defineProperty;var Oe=(r,e)=>()=>(r&&(e=r(r=0)),e);var _e=(r,e)=>{for(var t in e)Xr(r,t,{get:e[t],enumerable:!0})};var Vt={};_e(Vt,{enums:()=>b});var b,$e=Oe(()=>{b={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 ir={};_e(ir,{default:()=>un,findComponentForElement:()=>sn,getAllSelectors:()=>ln,getAllTags:()=>pn,getByCategory:()=>dn,ontology:()=>U,searchOntology:()=>cn});function ae(r,e){if(!r||!e)return!1;try{return r.matches(e)}catch{return!1}}function ar(r,e){if(!r||!e||!r.closest)return null;try{return r.closest(e)}catch{return null}}function sn(r,{maxDepth:e=5}={}){if(!r||r.closest&&r.closest(".showcase-toc"))return null;let t=r,n=0;for(;t&&n<e;){if(n++,t.tagName==="DS-SHOWCASE")return null;if(t.classList&&t.classList.contains("showcase-section")){t=t.parentElement;continue}for(let a of PDS.ontology.enhancements){let i=a.selector||a;if(ae(t,i))return{element:t,componentType:"enhanced-component",displayName:a.description||i,id:a.id}}if(t.tagName==="FIELDSET"){let a=t.getAttribute("role");if(a==="group"||a==="radiogroup")return{element:t,componentType:"form-group",displayName:a==="radiogroup"?"radio group":"form group"}}if(t.tagName==="LABEL"&&t.querySelector&&t.querySelector("input,select,textarea"))return{element:t,componentType:"form-control",displayName:"label with input"};let o=t.closest?t.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 d=s.slice(1).replace(/\*/g,"");if(t.classList&&Array.from(t.classList).some(u=>u.startsWith(d)))return{element:t,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let p=t.parentElement,l=0;for(;p&&l<e;){if(p.classList&&Array.from(p.classList).some(u=>u.startsWith(d))&&p.tagName!=="DS-SHOWCASE")return{element:p,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};p=p.parentElement,l++}continue}continue}if(ae(t,s))return{element:t,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let c=ar(t,s);if(c&&c.tagName!=="DS-SHOWCASE")return{element:c,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(t.classList){let i=Array.from(t.classList);for(let s of a.selectors||[])if(typeof s=="string"&&s.includes("*")&&s.startsWith(".")){let c=s.slice(1).replace(/\*/g,"");if(i.some(d=>d.startsWith(c)))return{element:t,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 d=s.slice(1).replace(/\*/g,"");if(t.classList&&Array.from(t.classList).some(p=>p.startsWith(d)))return{element:t,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}continue}if(ae(t,s))return{element:t,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags};let c=ar(t,s);if(c&&c.tagName!=="DS-SHOWCASE")return{element:c,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(t.tagName&&t.tagName.includes("-")){let a=t.tagName.toLowerCase(),i=PDS.ontology.components.find(s=>s.selectors.includes(a));return{element:t,componentType:"web-component",displayName:i?.name||a,id:i?.id||a,tags:i?.tags}}if(t.tagName==="BUTTON"){let a=t.querySelector&&t.querySelector("pds-icon");return{element:t,componentType:"button",displayName:a?"button with icon":"button",id:"button"}}if(ae(t,"pds-icon")||t.closest&&t.closest("pds-icon")){let a=ae(t,"pds-icon")?t:t.closest("pds-icon");return{element:a,componentType:"icon",displayName:`pds-icon (${a.getAttribute&&a.getAttribute("icon")||"unknown"})`,id:"pds-icon"}}if(ae(t,"nav[data-dropdown]")||t.closest&&t.closest("nav[data-dropdown]"))return{element:ae(t,"nav[data-dropdown]")?t:t.closest("nav[data-dropdown]"),componentType:"navigation",displayName:"dropdown menu",id:"dropdown"};t=t.parentElement}return null}function ln(){let r=[];for(let e of PDS.ontology.primitives)r.push(...e.selectors||[]);for(let e of PDS.ontology.components)r.push(...e.selectors||[]);for(let e of PDS.ontology.layoutPatterns||[])r.push(...e.selectors||[]);return Array.from(new Set(r))}function cn(r,e={}){let t=r.toLowerCase(),n=[],o=(a,i)=>{for(let s of a)(s.id?.toLowerCase().includes(t)||s.name?.toLowerCase().includes(t)||s.description?.toLowerCase().includes(t)||s.tags?.some(d=>d.toLowerCase().includes(t))||s.category?.toLowerCase().includes(t)||s.selectors?.some(d=>d.toLowerCase().includes(t)))&&n.push({...s,type:i})};return(!e.type||e.type==="primitive")&&o(U.primitives,"primitive"),(!e.type||e.type==="component")&&o(U.components,"component"),(!e.type||e.type==="layout")&&o(U.layoutPatterns,"layout"),(!e.type||e.type==="enhancement")&&o(U.enhancements,"enhancement"),n}function dn(r){let e=r.toLowerCase();return{primitives:U.primitives.filter(t=>t.category===e),components:U.components.filter(t=>t.category===e),layouts:U.layoutPatterns.filter(t=>t.category===e)}}function pn(){let r=new Set;return U.primitives.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.components.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.layoutPatterns.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.enhancements.forEach(e=>e.tags?.forEach(t=>r.add(t))),Array.from(r).sort()}var U,un,xt=Oe(()=>{U={meta:{name:"Pure Design System Ontology",version:"1.0.0",description:"Complete metadata registry for PDS primitives, components, utilities, and tokens"},tokens:{colors:{semantic:["primary","secondary","accent","success","warning","danger","info"],neutral:["gray"],shades:[50,100,200,300,400,500,600,700,800,900,950],surface:["base","subtle","elevated","sunken","overlay","inverse","translucent"],text:["default","muted","subtle","inverse","primary","success","warning","danger","info"]},spacing:{scale:["1","2","3","4","5","6","8","10","12","16","20","24"],semantic:["xs","sm","md","lg","xl"]},typography:{families:["heading","body","mono"],sizes:["xs","sm","base","lg","xl","2xl","3xl","4xl","5xl"],weights:["light","normal","medium","semibold","bold"]},radius:{scale:["none","sm","base","md","lg","xl","2xl","full"]},shadows:{scale:["none","sm","base","md","lg","xl","inner"]},themes:["light","dark"],breakpoints:{sm:640,md:768,lg:1024,xl:1280}},primitives:[{id:"badge",name:"Badge / Pill",description:"Inline status indicators and labels",selectors:[".badge",".badge-primary",".badge-secondary",".badge-success",".badge-info",".badge-warning",".badge-danger",".badge-outline",".badge-sm",".badge-lg",".pill",".tag",".chip"],tags:["status","label","indicator","inline"],category:"feedback"},{id:"card",name:"Card",description:"Content container with padding, border-radius, and optional shadow",selectors:[".card",".card-basic",".card-elevated",".card-outlined",".card-interactive"],tags:["container","content","grouping"],category:"container"},{id:"surface",name:"Surface",description:"Smart surface classes with automatic text/background color handling",selectors:[".surface-base",".surface-subtle",".surface-elevated",".surface-sunken",".surface-overlay",".surface-inverse",".surface-translucent",".surface-translucent-25",".surface-translucent-50",".surface-translucent-75",".surface-primary",".surface-secondary",".surface-success",".surface-warning",".surface-danger",".surface-info"],tags:["background","theming","color","container"],category:"theming"},{id:"callout",name:"Callout",description:"Contextual information and notification messages",selectors:[".callout",".callout-info",".callout-success",".callout-warning",".callout-danger",".callout-error",".callout-dismissible"],tags:["feedback","message","notification","status","information"],category:"feedback"},{id:"empty-state",name:"Empty State",description:"Empty state layout for missing data or onboarding",selectors:[".empty-state"],tags:["empty","no-data","zero","placeholder","onboarding","state"],category:"feedback"},{id:"dialog",name:"Dialog",description:"Modal dialog element",selectors:["dialog",".dialog"],tags:["modal","overlay","popup","modal"],category:"overlay"},{id:"divider",name:"Divider",description:"Horizontal rule with optional label",selectors:["hr","hr[data-content]"],tags:["separator","line","content-divider"],category:"layout"},{id:"table",name:"Table",description:"Data tables with responsive and styling variants",selectors:["table",".table-responsive",".table-striped",".table-bordered",".table-compact",".data-table"],tags:["data","grid","tabular","responsive"],category:"data"},{id:"button",name:"Button",description:"Interactive button element with variants",selectors:["button",".btn-primary",".btn-secondary",".btn-outline",".btn-sm",".btn-xs",".btn-lg",".btn-working",".icon-only"],tags:["interactive","action","cta","form"],category:"action"},{id:"fieldset",name:"Fieldset Group",description:"Form field grouping for radio/checkbox groups",selectors:["fieldset[role='group']","fieldset[role='radiogroup']","fieldset.buttons"],tags:["form","grouping","radio","checkbox"],category:"form"},{id:"label-field",name:"Label+Input",description:"Semantic label wrapping form input",selectors:["label","label:has(input)","label:has(select)","label:has(textarea)"],tags:["form","input","accessibility"],category:"form"},{id:"accordion",name:"Accordion",description:"Collapsible content sections",selectors:[".accordion",".accordion-item","details","details > summary"],tags:["expandable","collapsible","disclosure"],category:"disclosure"},{id:"icon",name:"Icon",description:"SVG icon element with size and color variants",selectors:["pds-icon",".icon-xs",".icon-sm",".icon-md",".icon-lg",".icon-xl",".icon-primary",".icon-secondary",".icon-accent",".icon-success",".icon-warning",".icon-danger",".icon-info",".icon-muted",".icon-subtle",".icon-text",".icon-text-start",".icon-text-end"],tags:["graphic","symbol","visual"],category:"media"},{id:"figure",name:"Figure/Media",description:"Figure element for images with captions",selectors:["figure","figure.media","figcaption"],tags:["image","media","caption"],category:"media"},{id:"gallery",name:"Gallery",description:"Image gallery grid",selectors:[".gallery",".gallery-grid",".img-gallery"],tags:["images","grid","collection"],category:"media"},{id:"form",name:"Form Container",description:"Form styling and layout",selectors:["form",".form-container",".form-actions",".field-description"],tags:["form","input","submission"],category:"form"},{id:"navigation",name:"Navigation",description:"Navigation elements and menus",selectors:["nav","nav[data-dropdown]","menu","nav menu li"],tags:["menu","links","routing"],category:"navigation"}],components:[{id:"pds-tabstrip",name:"Tab Strip",description:"Tabbed interface component",selectors:["pds-tabstrip"],tags:["tabs","navigation","panels"],category:"navigation"},{id:"pds-drawer",name:"Drawer",description:"Slide-out panel overlay",selectors:["pds-drawer"],tags:["panel","overlay","sidebar"],category:"overlay"},{id:"pds-fab",name:"FAB",description:"Floating Action Button with expandable satellite actions",selectors:["pds-fab"],tags:["button","action","floating","interactive"],category:"action"},{id:"pds-upload",name:"Upload",description:"File upload component with drag-and-drop",selectors:["pds-upload"],tags:["file","upload","drag-drop","form"],category:"form"},{id:"pds-icon",name:"Icon",description:"SVG icon web component",selectors:["pds-icon"],tags:["icon","graphic","svg"],category:"media"},{id:"pds-toaster",name:"Toaster",description:"Toast notification container",selectors:["pds-toaster"],tags:["notification","toast","feedback"],category:"feedback"},{id:"pds-form",name:"JSON Form",description:"Auto-generated form from JSON Schema",selectors:["pds-form"],tags:["form","schema","auto-generate"],category:"form"},{id:"pds-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",tags:["menu","interactive","navigation"]},{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-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"]}};un=U});var At={};_e(At,{PDSQuery:()=>Tt});var Tt,Lt=Oe(()=>{Tt=class{constructor(e){this.pds=e,this.intents={color:["color","colours","shade","tint","hue","foreground","background","text","fill","bg","fg"],spacing:["spacing","space","gap","padding","margin","distance","rhythm"],typography:["font","text","type","typography","heading","body","size","weight","family"],border:["border","outline","stroke","edge","frame"],radius:["radius","rounded","corner","curve","round"],shadow:["shadow","elevation","depth","glow","drop-shadow"],component:["component","element","widget"],utility:["utility","class","helper","css"],layout:["layout","container","grid","flex","group","arrange","organize"],pattern:["pattern","example","template","structure"],interaction:["hover","focus","active","disabled","pressed","selected","checked"]},this.entities={button:["button","btn","cta"],input:["input","field","textbox","text-field","form-control"],card:["card","panel"],badge:["badge","pill","tag","chip"],surface:["surface","background","layer","container"],icon:["icon","svg","glyph","symbol"],link:["link","anchor","hyperlink"],nav:["nav","navigation","menu"],modal:["modal","dialog","popup","overlay"],drawer:["drawer","sidebar","panel"],tab:["tab","tabstrip"],toast:["toast","notification","callout","message","alert"]},this.questionWords=["what","which","how","where","when","show","find","get","give","tell"]}async search(e){if(!e||e.length<2)return[];let t=e.toLowerCase().trim(),n=this.tokenize(t),o=this.analyzeQuery(n,t),a=[];o.intents.has("color")&&a.push(...this.queryColors(o,t)),(o.intents.has("utility")||o.intents.has("border")||o.intents.has("layout")||t.includes("class"))&&a.push(...this.queryUtilities(o,t)),(o.intents.has("component")||o.entities.size>0)&&a.push(...this.queryComponents(o,t)),(o.intents.has("layout")||o.intents.has("pattern"))&&a.push(...this.queryPatterns(o,t)),o.intents.has("typography")&&a.push(...this.queryTypography(o,t)),o.intents.has("spacing")&&a.push(...this.querySpacing(o,t));let i=new Map;for(let s of a){let c=s.value;(!i.has(c)||i.get(c).score<s.score)&&i.set(c,s)}return Array.from(i.values()).sort((s,c)=>c.score-s.score).slice(0,10)}tokenize(e){return e.toLowerCase().replace(/[?!.]/g,"").split(/\s+/).filter(t=>t.length>0)}analyzeQuery(e,t){let n={intents:new Set,entities:new Set,modifiers:new Set,isQuestion:!1,tokens:e,fullText:t};n.isQuestion=this.questionWords.some(o=>e.includes(o));for(let[o,a]of Object.entries(this.intents))a.some(i=>e.includes(i)||t.includes(i))&&n.intents.add(o);for(let[o,a]of Object.entries(this.entities))a.some(i=>e.includes(i)||t.includes(i))&&n.entities.add(o);return(e.includes("hover")||t.includes("hover"))&&n.modifiers.add("hover"),(e.includes("focus")||t.includes("focus"))&&n.modifiers.add("focus"),(e.includes("active")||t.includes("active"))&&n.modifiers.add("active"),(e.includes("disabled")||t.includes("disabled"))&&n.modifiers.add("disabled"),n}queryColors(e,t){let n=[],o=this.pds.compiled;if(!o?.tokens?.colors)return n;let a=o.tokens.colors,i=Array.from(e.entities),s=Array.from(e.modifiers);if(s.includes("focus")&&e.intents.has("border")&&i.includes("input")&&n.push({text:"Focus border color: var(--color-primary-500)",value:"--color-primary-500",icon:"palette",category:"Color Token",score:100,cssVar:"var(--color-primary-500)",description:"Primary color used for focus states on form inputs"}),(t.includes("foreground")||t.includes("text"))&&(t.includes("surface")||e.entities.has("surface"))&&(n.push({text:"Text on surface: var(--surface-text)",value:"--surface-text",icon:"palette",category:"Surface Token",score:95,cssVar:"var(--surface-text)",description:"Default text color for current surface"}),n.push({text:"Secondary text: var(--surface-text-secondary)",value:"--surface-text-secondary",icon:"palette",category:"Surface Token",score:90,cssVar:"var(--surface-text-secondary)",description:"Secondary/muted text on surface"})),t.includes("primary")||t.includes("accent")||t.includes("secondary")){let c=t.includes("primary")?"primary":t.includes("accent")?"accent":"secondary";for(let d of[500,600,700]){let p=`--color-${c}-${d}`;n.push({text:`${c.charAt(0).toUpperCase()+c.slice(1)} ${d}: var(${p})`,value:p,icon:"palette",category:"Color Scale",score:80-(d-500)/100,cssVar:`var(${p})`,description:`${c} color scale shade ${d}`})}}if(i.includes("button")&&e.intents.has("color")){let c=s[0];c?n.push({text:`Button ${c} fill: var(--primary-fill-${c})`,value:`--primary-fill-${c}`,icon:"palette",category:"Interactive Token",score:92,description:`Button background color in ${c} state`}):n.push({text:"Button fill: var(--primary-fill)",value:"--primary-fill",icon:"palette",category:"Interactive Token",score:88,description:"Default button background color"})}return n}queryUtilities(e,t){let n=[],o=this.pds.ontology;if(!o?.utilities)return n;let a=o.utilities,i=[];for(let s of Object.values(a))if(typeof s=="object")for(let c of Object.values(s))Array.isArray(c)&&i.push(...c);return e.intents.has("border")&&i.filter(c=>c.includes("border")||c.includes("outline")).forEach(c=>{let d=80;t.includes("gradient")&&c.includes("gradient")&&(d=95),t.includes("glow")&&c.includes("glow")&&(d=95),n.push({text:`${c} - Border utility class`,value:c,icon:"code",category:"Utility Class",score:d,code:`<div class="${c}">...</div>`,description:this.describeUtility(c)})}),e.intents.has("layout")&&i.filter(c=>c.includes("flex")||c.includes("grid")||c.includes("items-")||c.includes("justify-")||c.includes("gap-")).forEach(c=>{n.push({text:`${c} - Layout utility`,value:c,icon:"layout",category:"Utility Class",score:85,code:`<div class="${c}">...</div>`,description:this.describeUtility(c)})}),t.includes("group")&&e.entities.has("button")&&n.push({text:".btn-group - Group buttons together",value:".btn-group",icon:"code",category:"Utility Class",score:90,code:`<div class="btn-group">
|
|
1
|
+
var Xr=Object.defineProperty;var Oe=(r,e)=>()=>(r&&(e=r(r=0)),e);var _e=(r,e)=>{for(var t in e)Xr(r,t,{get:e[t],enumerable:!0})};var Vt={};_e(Vt,{enums:()=>y});var y,$e=Oe(()=>{y={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 ir={};_e(ir,{default:()=>un,findComponentForElement:()=>sn,getAllSelectors:()=>ln,getAllTags:()=>pn,getByCategory:()=>dn,ontology:()=>U,searchOntology:()=>cn});function ae(r,e){if(!r||!e)return!1;try{return r.matches(e)}catch{return!1}}function ar(r,e){if(!r||!e||!r.closest)return null;try{return r.closest(e)}catch{return null}}function sn(r,{maxDepth:e=5}={}){if(!r||r.closest&&r.closest(".showcase-toc"))return null;let t=r,n=0;for(;t&&n<e;){if(n++,t.tagName==="DS-SHOWCASE")return null;if(t.classList&&t.classList.contains("showcase-section")){t=t.parentElement;continue}for(let a of PDS.ontology.enhancements){let i=a.selector||a;if(ae(t,i))return{element:t,componentType:"enhanced-component",displayName:a.description||i,id:a.id}}if(t.tagName==="FIELDSET"){let a=t.getAttribute("role");if(a==="group"||a==="radiogroup")return{element:t,componentType:"form-group",displayName:a==="radiogroup"?"radio group":"form group"}}if(t.tagName==="LABEL"&&t.querySelector&&t.querySelector("input,select,textarea"))return{element:t,componentType:"form-control",displayName:"label with input"};let o=t.closest?t.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 d=s.slice(1).replace(/\*/g,"");if(t.classList&&Array.from(t.classList).some(u=>u.startsWith(d)))return{element:t,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let p=t.parentElement,l=0;for(;p&&l<e;){if(p.classList&&Array.from(p.classList).some(u=>u.startsWith(d))&&p.tagName!=="DS-SHOWCASE")return{element:p,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};p=p.parentElement,l++}continue}continue}if(ae(t,s))return{element:t,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags};let c=ar(t,s);if(c&&c.tagName!=="DS-SHOWCASE")return{element:c,componentType:"pds-primitive",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(t.classList){let i=Array.from(t.classList);for(let s of a.selectors||[])if(typeof s=="string"&&s.includes("*")&&s.startsWith(".")){let c=s.slice(1).replace(/\*/g,"");if(i.some(d=>d.startsWith(c)))return{element:t,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 d=s.slice(1).replace(/\*/g,"");if(t.classList&&Array.from(t.classList).some(p=>p.startsWith(d)))return{element:t,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}continue}if(ae(t,s))return{element:t,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags};let c=ar(t,s);if(c&&c.tagName!=="DS-SHOWCASE")return{element:c,componentType:"layout-pattern",displayName:a.name||a.id,id:a.id,tags:a.tags}}if(t.tagName&&t.tagName.includes("-")){let a=t.tagName.toLowerCase(),i=PDS.ontology.components.find(s=>s.selectors.includes(a));return{element:t,componentType:"web-component",displayName:i?.name||a,id:i?.id||a,tags:i?.tags}}if(t.tagName==="BUTTON"){let a=t.querySelector&&t.querySelector("pds-icon");return{element:t,componentType:"button",displayName:a?"button with icon":"button",id:"button"}}if(ae(t,"pds-icon")||t.closest&&t.closest("pds-icon")){let a=ae(t,"pds-icon")?t:t.closest("pds-icon");return{element:a,componentType:"icon",displayName:`pds-icon (${a.getAttribute&&a.getAttribute("icon")||"unknown"})`,id:"pds-icon"}}if(ae(t,"nav[data-dropdown]")||t.closest&&t.closest("nav[data-dropdown]"))return{element:ae(t,"nav[data-dropdown]")?t:t.closest("nav[data-dropdown]"),componentType:"navigation",displayName:"dropdown menu",id:"dropdown"};t=t.parentElement}return null}function ln(){let r=[];for(let e of PDS.ontology.primitives)r.push(...e.selectors||[]);for(let e of PDS.ontology.components)r.push(...e.selectors||[]);for(let e of PDS.ontology.layoutPatterns||[])r.push(...e.selectors||[]);return Array.from(new Set(r))}function cn(r,e={}){let t=r.toLowerCase(),n=[],o=(a,i)=>{for(let s of a)(s.id?.toLowerCase().includes(t)||s.name?.toLowerCase().includes(t)||s.description?.toLowerCase().includes(t)||s.tags?.some(d=>d.toLowerCase().includes(t))||s.category?.toLowerCase().includes(t)||s.selectors?.some(d=>d.toLowerCase().includes(t)))&&n.push({...s,type:i})};return(!e.type||e.type==="primitive")&&o(U.primitives,"primitive"),(!e.type||e.type==="component")&&o(U.components,"component"),(!e.type||e.type==="layout")&&o(U.layoutPatterns,"layout"),(!e.type||e.type==="enhancement")&&o(U.enhancements,"enhancement"),n}function dn(r){let e=r.toLowerCase();return{primitives:U.primitives.filter(t=>t.category===e),components:U.components.filter(t=>t.category===e),layouts:U.layoutPatterns.filter(t=>t.category===e)}}function pn(){let r=new Set;return U.primitives.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.components.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.layoutPatterns.forEach(e=>e.tags?.forEach(t=>r.add(t))),U.enhancements.forEach(e=>e.tags?.forEach(t=>r.add(t))),Array.from(r).sort()}var U,un,xt=Oe(()=>{U={meta:{name:"Pure Design System Ontology",version:"1.0.0",description:"Complete metadata registry for PDS primitives, components, utilities, and tokens"},tokens:{colors:{semantic:["primary","secondary","accent","success","warning","danger","info"],neutral:["gray"],shades:[50,100,200,300,400,500,600,700,800,900,950],surface:["base","subtle","elevated","sunken","overlay","inverse","translucent"],text:["default","muted","subtle","inverse","primary","success","warning","danger","info"]},spacing:{scale:["1","2","3","4","5","6","8","10","12","16","20","24"],semantic:["xs","sm","md","lg","xl"]},typography:{families:["heading","body","mono"],sizes:["xs","sm","base","lg","xl","2xl","3xl","4xl","5xl"],weights:["light","normal","medium","semibold","bold"]},radius:{scale:["none","sm","base","md","lg","xl","2xl","full"]},shadows:{scale:["none","sm","base","md","lg","xl","inner"]},themes:["light","dark"],breakpoints:{sm:640,md:768,lg:1024,xl:1280}},primitives:[{id:"badge",name:"Badge / Pill",description:"Inline status indicators and labels",selectors:[".badge",".badge-primary",".badge-secondary",".badge-success",".badge-info",".badge-warning",".badge-danger",".badge-outline",".badge-sm",".badge-lg",".pill",".tag",".chip"],tags:["status","label","indicator","inline"],category:"feedback"},{id:"card",name:"Card",description:"Content container with padding, border-radius, and optional shadow",selectors:[".card",".card-basic",".card-elevated",".card-outlined",".card-interactive"],tags:["container","content","grouping"],category:"container"},{id:"surface",name:"Surface",description:"Smart surface classes with automatic text/background color handling",selectors:[".surface-base",".surface-subtle",".surface-elevated",".surface-sunken",".surface-overlay",".surface-inverse",".surface-translucent",".surface-translucent-25",".surface-translucent-50",".surface-translucent-75",".surface-primary",".surface-secondary",".surface-success",".surface-warning",".surface-danger",".surface-info"],tags:["background","theming","color","container"],category:"theming"},{id:"callout",name:"Callout",description:"Contextual information and notification messages",selectors:[".callout",".callout-info",".callout-success",".callout-warning",".callout-danger",".callout-error",".callout-dismissible"],tags:["feedback","message","notification","status","information"],category:"feedback"},{id:"empty-state",name:"Empty State",description:"Empty state layout for missing data or onboarding",selectors:[".empty-state"],tags:["empty","no-data","zero","placeholder","onboarding","state"],category:"feedback"},{id:"dialog",name:"Dialog",description:"Modal dialog element",selectors:["dialog",".dialog"],tags:["modal","overlay","popup","modal"],category:"overlay"},{id:"divider",name:"Divider",description:"Horizontal rule with optional label",selectors:["hr","hr[data-content]"],tags:["separator","line","content-divider"],category:"layout"},{id:"table",name:"Table",description:"Data tables with responsive and styling variants",selectors:["table",".table-responsive",".table-striped",".table-bordered",".table-compact",".data-table"],tags:["data","grid","tabular","responsive"],category:"data"},{id:"button",name:"Button",description:"Interactive button element with variants",selectors:["button",".btn-primary",".btn-secondary",".btn-outline",".btn-sm",".btn-xs",".btn-lg",".btn-working",".icon-only"],tags:["interactive","action","cta","form"],category:"action"},{id:"fieldset",name:"Fieldset Group",description:"Form field grouping for radio/checkbox groups",selectors:["fieldset[role='group']","fieldset[role='radiogroup']","fieldset.buttons"],tags:["form","grouping","radio","checkbox"],category:"form"},{id:"label-field",name:"Label+Input",description:"Semantic label wrapping form input",selectors:["label","label:has(input)","label:has(select)","label:has(textarea)"],tags:["form","input","accessibility"],category:"form"},{id:"accordion",name:"Accordion",description:"Collapsible content sections",selectors:[".accordion",".accordion-item","details","details > summary"],tags:["expandable","collapsible","disclosure"],category:"disclosure"},{id:"icon",name:"Icon",description:"SVG icon element with size and color variants",selectors:["pds-icon",".icon-xs",".icon-sm",".icon-md",".icon-lg",".icon-xl",".icon-primary",".icon-secondary",".icon-accent",".icon-success",".icon-warning",".icon-danger",".icon-info",".icon-muted",".icon-subtle",".icon-text",".icon-text-start",".icon-text-end"],tags:["graphic","symbol","visual"],category:"media"},{id:"figure",name:"Figure/Media",description:"Figure element for images with captions",selectors:["figure","figure.media","figcaption"],tags:["image","media","caption"],category:"media"},{id:"gallery",name:"Gallery",description:"Image gallery grid",selectors:[".gallery",".gallery-grid",".img-gallery"],tags:["images","grid","collection"],category:"media"},{id:"form",name:"Form Container",description:"Form styling and layout",selectors:["form",".form-container",".form-actions",".field-description"],tags:["form","input","submission"],category:"form"},{id:"navigation",name:"Navigation",description:"Navigation elements and menus",selectors:["nav","nav[data-dropdown]","menu","nav menu li"],tags:["menu","links","routing"],category:"navigation"}],components:[{id:"pds-tabstrip",name:"Tab Strip",description:"Tabbed interface component",selectors:["pds-tabstrip"],tags:["tabs","navigation","panels"],category:"navigation"},{id:"pds-drawer",name:"Drawer",description:"Slide-out panel overlay",selectors:["pds-drawer"],tags:["panel","overlay","sidebar"],category:"overlay"},{id:"pds-fab",name:"FAB",description:"Floating Action Button with expandable satellite actions",selectors:["pds-fab"],tags:["button","action","floating","interactive"],category:"action"},{id:"pds-upload",name:"Upload",description:"File upload component with drag-and-drop",selectors:["pds-upload"],tags:["file","upload","drag-drop","form"],category:"form"},{id:"pds-icon",name:"Icon",description:"SVG icon web component",selectors:["pds-icon"],tags:["icon","graphic","svg"],category:"media"},{id:"pds-toaster",name:"Toaster",description:"Toast notification container",selectors:["pds-toaster"],tags:["notification","toast","feedback"],category:"feedback"},{id:"pds-form",name:"JSON Form",description:"Auto-generated form from JSON Schema",selectors:["pds-form"],tags:["form","schema","auto-generate"],category:"form"},{id:"pds-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",tags:["menu","interactive","navigation"]},{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-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"]}};un=U});var At={};_e(At,{PDSQuery:()=>Tt});var Tt,Lt=Oe(()=>{Tt=class{constructor(e){this.pds=e,this.intents={color:["color","colours","shade","tint","hue","foreground","background","text","fill","bg","fg"],spacing:["spacing","space","gap","padding","margin","distance","rhythm"],typography:["font","text","type","typography","heading","body","size","weight","family"],border:["border","outline","stroke","edge","frame"],radius:["radius","rounded","corner","curve","round"],shadow:["shadow","elevation","depth","glow","drop-shadow"],component:["component","element","widget"],utility:["utility","class","helper","css"],layout:["layout","container","grid","flex","group","arrange","organize"],pattern:["pattern","example","template","structure"],interaction:["hover","focus","active","disabled","pressed","selected","checked"]},this.entities={button:["button","btn","cta"],input:["input","field","textbox","text-field","form-control"],card:["card","panel"],badge:["badge","pill","tag","chip"],surface:["surface","background","layer","container"],icon:["icon","svg","glyph","symbol"],link:["link","anchor","hyperlink"],nav:["nav","navigation","menu"],modal:["modal","dialog","popup","overlay"],drawer:["drawer","sidebar","panel"],tab:["tab","tabstrip"],toast:["toast","notification","callout","message","alert"]},this.questionWords=["what","which","how","where","when","show","find","get","give","tell"]}async search(e){if(!e||e.length<2)return[];let t=e.toLowerCase().trim(),n=this.tokenize(t),o=this.analyzeQuery(n,t),a=[];o.intents.has("color")&&a.push(...this.queryColors(o,t)),(o.intents.has("utility")||o.intents.has("border")||o.intents.has("layout")||t.includes("class"))&&a.push(...this.queryUtilities(o,t)),(o.intents.has("component")||o.entities.size>0)&&a.push(...this.queryComponents(o,t)),(o.intents.has("layout")||o.intents.has("pattern"))&&a.push(...this.queryPatterns(o,t)),o.intents.has("typography")&&a.push(...this.queryTypography(o,t)),o.intents.has("spacing")&&a.push(...this.querySpacing(o,t));let i=new Map;for(let s of a){let c=s.value;(!i.has(c)||i.get(c).score<s.score)&&i.set(c,s)}return Array.from(i.values()).sort((s,c)=>c.score-s.score).slice(0,10)}tokenize(e){return e.toLowerCase().replace(/[?!.]/g,"").split(/\s+/).filter(t=>t.length>0)}analyzeQuery(e,t){let n={intents:new Set,entities:new Set,modifiers:new Set,isQuestion:!1,tokens:e,fullText:t};n.isQuestion=this.questionWords.some(o=>e.includes(o));for(let[o,a]of Object.entries(this.intents))a.some(i=>e.includes(i)||t.includes(i))&&n.intents.add(o);for(let[o,a]of Object.entries(this.entities))a.some(i=>e.includes(i)||t.includes(i))&&n.entities.add(o);return(e.includes("hover")||t.includes("hover"))&&n.modifiers.add("hover"),(e.includes("focus")||t.includes("focus"))&&n.modifiers.add("focus"),(e.includes("active")||t.includes("active"))&&n.modifiers.add("active"),(e.includes("disabled")||t.includes("disabled"))&&n.modifiers.add("disabled"),n}queryColors(e,t){let n=[],o=this.pds.compiled;if(!o?.tokens?.colors)return n;let a=o.tokens.colors,i=Array.from(e.entities),s=Array.from(e.modifiers);if(s.includes("focus")&&e.intents.has("border")&&i.includes("input")&&n.push({text:"Focus border color: var(--color-primary-500)",value:"--color-primary-500",icon:"palette",category:"Color Token",score:100,cssVar:"var(--color-primary-500)",description:"Primary color used for focus states on form inputs"}),(t.includes("foreground")||t.includes("text"))&&(t.includes("surface")||e.entities.has("surface"))&&(n.push({text:"Text on surface: var(--surface-text)",value:"--surface-text",icon:"palette",category:"Surface Token",score:95,cssVar:"var(--surface-text)",description:"Default text color for current surface"}),n.push({text:"Secondary text: var(--surface-text-secondary)",value:"--surface-text-secondary",icon:"palette",category:"Surface Token",score:90,cssVar:"var(--surface-text-secondary)",description:"Secondary/muted text on surface"})),t.includes("primary")||t.includes("accent")||t.includes("secondary")){let c=t.includes("primary")?"primary":t.includes("accent")?"accent":"secondary";for(let d of[500,600,700]){let p=`--color-${c}-${d}`;n.push({text:`${c.charAt(0).toUpperCase()+c.slice(1)} ${d}: var(${p})`,value:p,icon:"palette",category:"Color Scale",score:80-(d-500)/100,cssVar:`var(${p})`,description:`${c} color scale shade ${d}`})}}if(i.includes("button")&&e.intents.has("color")){let c=s[0];c?n.push({text:`Button ${c} fill: var(--primary-fill-${c})`,value:`--primary-fill-${c}`,icon:"palette",category:"Interactive Token",score:92,description:`Button background color in ${c} state`}):n.push({text:"Button fill: var(--primary-fill)",value:"--primary-fill",icon:"palette",category:"Interactive Token",score:88,description:"Default button background color"})}return n}queryUtilities(e,t){let n=[],o=this.pds.ontology;if(!o?.utilities)return n;let a=o.utilities,i=[];for(let s of Object.values(a))if(typeof s=="object")for(let c of Object.values(s))Array.isArray(c)&&i.push(...c);return e.intents.has("border")&&i.filter(c=>c.includes("border")||c.includes("outline")).forEach(c=>{let d=80;t.includes("gradient")&&c.includes("gradient")&&(d=95),t.includes("glow")&&c.includes("glow")&&(d=95),n.push({text:`${c} - Border utility class`,value:c,icon:"code",category:"Utility Class",score:d,code:`<div class="${c}">...</div>`,description:this.describeUtility(c)})}),e.intents.has("layout")&&i.filter(c=>c.includes("flex")||c.includes("grid")||c.includes("items-")||c.includes("justify-")||c.includes("gap-")).forEach(c=>{n.push({text:`${c} - Layout utility`,value:c,icon:"layout",category:"Utility Class",score:85,code:`<div class="${c}">...</div>`,description:this.describeUtility(c)})}),t.includes("group")&&e.entities.has("button")&&n.push({text:".btn-group - Group buttons together",value:".btn-group",icon:"code",category:"Utility Class",score:90,code:`<div class="btn-group">
|
|
2
2
|
<button class="btn-primary">One</button>
|
|
3
3
|
<button class="btn-primary">Two</button>
|
|
4
4
|
</div>`,description:"Container for grouped buttons with connected styling"}),n}queryComponents(e,t){let n=[],o=this.pds.ontology;return!o?.components&&!o?.primitives||(o.components&&o.components.forEach(a=>{let i=this.scoreMatch(t,a.name+" "+a.id);i>50&&n.push({text:`<${a.id}> - ${a.name}`,value:a.id,icon:"brackets-curly",category:"Web Component",score:i,code:`<${a.id}></${a.id}>`,description:a.description||`${a.name} web component`})}),o.primitives&&o.primitives.forEach(a=>{let i=this.scoreMatch(t,a.name+" "+a.id);if(i>50){let s=a.selectors?.[0]||a.id;n.push({text:`${s} - ${a.name}`,value:a.id,icon:"tag",category:"Primitive",score:i-5,code:this.generatePrimitiveExample(a),description:a.description||`${a.name} primitive element`})}}),t.includes("icon")&&(t.includes("only")||t.includes("button"))&&n.push({text:'Icon-only button: <button class="btn-icon">',value:"btn-icon",icon:"star",category:"Pattern",score:95,code:`<button class="btn-icon btn-primary">
|
|
@@ -16,7 +16,7 @@ var Xr=Object.defineProperty;var Oe=(r,e)=>()=>(r&&(e=r(r=0)),e);var _e=(r,e)=>{
|
|
|
16
16
|
</section>`,description:"Semantic section element for content grouping"}))),n}queryTypography(e,t){let n=[],o=this.pds.compiled;if(!o?.tokens?.typography)return n;let a=o.tokens.typography;return(t.includes("heading")||t.includes("title"))&&n.push({text:"Heading font: var(--font-family-heading)",value:"--font-family-heading",icon:"text-aa",category:"Typography Token",score:85,cssVar:"var(--font-family-heading)",description:"Font family for headings"}),(t.includes("body")||t.includes("text"))&&n.push({text:"Body font: var(--font-family-body)",value:"--font-family-body",icon:"text-aa",category:"Typography Token",score:85,cssVar:"var(--font-family-body)",description:"Font family for body text"}),n}querySpacing(e,t){let n=[],o=this.pds.compiled;if(!o?.tokens?.spacing)return n;let a=o.tokens.spacing;for(let[i,s]of Object.entries(a))["2","4","6","8"].includes(i)&&n.push({text:`Spacing ${i}: var(--spacing-${i})`,value:`--spacing-${i}`,icon:"ruler",category:"Spacing Token",score:75,cssVar:`var(--spacing-${i})`,description:`Spacing value: ${s}`});return n}scoreMatch(e,t){let n=e.toLowerCase(),o=t.toLowerCase(),a=0;if(n===o)return 100;o.includes(n)&&(a+=80);let i=this.tokenize(n),s=this.tokenize(o),c=i.filter(d=>s.includes(d)).length;return a+=c/i.length*40,o.startsWith(n)&&(a+=20),Math.min(100,a)}generatePrimitiveExample(e){let t=e.selectors?.[0]||e.id;return t.includes("button")||e.id==="button"?'<button class="btn-primary">Click me</button>':t.includes("card")||e.id==="card"?`<article class="card">
|
|
17
17
|
<h3>Title</h3>
|
|
18
18
|
<p>Content</p>
|
|
19
|
-
</article>`:t.includes("badge")||e.id==="badge"?'<span class="badge">New</span>':`<${t}>Content</${t}>`}describeUtility(e){return e.includes("border-gradient")?"Apply animated gradient border effect":e.includes("border-glow")?"Apply glowing border effect":e.includes("flex")?"Flexbox container utility":e.includes("grid")?"Grid container utility":e.includes("gap-")?"Set gap between flex/grid children":e.includes("items-")?"Align items in flex container":e.includes("justify-")?"Justify content in flex container":e===".btn-group"?"Group buttons with connected styling":"Utility class for styling"}}});var Ye={};_e(Ye,{deepMerge:()=>yr,fragmentFromTemplateLike:()=>Fn,isObject:()=>Je,parseHTML:()=>Rt});function Je(r){return r&&typeof r=="object"&&!Array.isArray(r)}function yr(r,e){let t={...r};return Je(r)&&Je(e)&&Object.keys(e).forEach(n=>{Je(e[n])?n in r?t[n]=yr(r[n],e[n]):Object.assign(t,{[n]:e[n]}):Object.assign(t,{[n]:e[n]})}),t}function Fn(r){let e=Array.isArray(r?.strings)?r.strings:[],t=Array.isArray(r?.values)?r.values:[],n=new Set,o=[],a=/(\s)(\.[\w-]+)=\s*$/;for(let l=0;l<e.length;l+=1){let u=e[l]??"",g=u.match(a);if(g&&l<t.length){let f=g[2].slice(1),h=`pds-val-${l}`;u=u.replace(a,`$1data-pds-prop="${f}:${h}"`),n.add(l)}o.push(u),l<t.length&&!n.has(l)&&o.push(`<!--pds-val-${l}-->`)}let i=document.createElement("template");i.innerHTML=o.join("");let s=(l,u)=>{let g=l.parentNode;if(!g)return;if(u==null){g.removeChild(l);return}let m=f=>{if(f!=null){if(f instanceof Node){g.insertBefore(f,l);return}if(Array.isArray(f)){f.forEach(h=>m(h));return}g.insertBefore(document.createTextNode(String(f)),l)}};m(u),g.removeChild(l)},c=document.createTreeWalker(i.content,NodeFilter.SHOW_COMMENT),d=[];for(;c.nextNode();){let l=c.currentNode;l?.nodeValue?.startsWith("pds-val-")&&d.push(l)}return d.forEach(l=>{let u=Number(l.nodeValue.replace("pds-val-",""));s(l,t[u])}),i.content.querySelectorAll("*").forEach(l=>{let u=l.getAttribute("data-pds-prop");if(!u)return;let[g,m]=u.split(":"),f=Number(String(m).replace("pds-val-",""));g&&Number.isInteger(f)&&(l[g]=t[f]),l.removeAttribute("data-pds-prop")}),i.content}function Rt(r){return new DOMParser().parseFromString(r,"text/html").body.childNodes}var Ft=Oe(()=>{});$e();var pe="any",ze={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-*"]}},warning:{type:["string","null"],relations:{tokens:["--color-warning-*"]}},danger:{type:["string","null"],relations:{tokens:["--color-danger-*"]}},info:{type:["string","null"],relations:{tokens:["--color-info-*"]}},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"}}},en={type:"object",allowUnknown:!0,properties:{mode:{type:"string"},preset:{type:"string"},design:ze,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:pe},enhancers:{type:["object","array"]},scanExisting:{type:"boolean"},observeShadows:{type:"boolean"},patchAttachShadow:{type:"boolean"},debounceMs:{type:"number"},onError:{type:pe},baseURL:{type:"string"}}},managerURL:{type:"string"},manager:{type:pe},liveEdit:{type:"boolean"},log:{type:pe}}};function Ce(r){return r===null?"null":Array.isArray(r)?"array":typeof r}function tn(r,e){if(e===pe)return!0;let t=Ce(r);return Array.isArray(e)?e.includes(t):t===e}function De(r,e,t,n){if(!e)return;let o=e.type||pe;if(!tn(r,o)){n.push({path:t,expected:o,actual:Ce(r),message:`Expected ${o} but got ${Ce(r)}`});return}if(o==="array"&&e.items&&Array.isArray(r)&&r.forEach((a,i)=>{De(a,e.items,`${t}[${i}]`,n)}),o==="object"&&r&&typeof r=="object"){let a=e.properties||{};for(let[i,s]of Object.entries(r)){if(!Object.prototype.hasOwnProperty.call(a,i)){e.allowUnknown||n.push({path:`${t}.${i}`,expected:"known property",actual:"unknown",message:`Unknown property "${i}"`});continue}De(s,a[i],`${t}.${i}`,n)}}}function ht(r,e="",t={}){if(!r||typeof r!="object")return t;if(r.relations&&e&&(t[e]=r.relations),r.type==="object"&&r.properties&&Object.entries(r.properties).forEach(([n,o])=>{let a=e?`${e}.${n}`:n;ht(o,a,t)}),r.type==="array"&&r.items){let n=`${e}[]`;ht(r.items,n,t)}return t}var Xt=ht(ze,""),er=ze,rn={"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(b.RadiusSizes).map(([r,e])=>({const:e,title:r}))},"shape.borderWidth":{widget:"select",oneOf:Object.entries(b.BorderWidths).map(([r,e])=>({const:e,title:r}))},"shape.customRadius":{min:0,max:64,step:1,widget:"range"},"behavior.transitionSpeed":{oneOf:Object.entries(b.TransitionSpeeds).map(([r,e])=>({const:e,title:r}))},"behavior.animationEasing":{enum:Object.values(b.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(b.LinkStyles)},"a11y.minTouchTarget":{oneOf:Object.entries(b.TouchTargetSizes).map(([r,e])=>({const:e,title:r}))},"a11y.focusStyle":{enum:Object.values(b.FocusStyles)},"icons.defaultSize":{min:8,max:128,step:1,widget:"range",icon:"sparkle"}};function Jt(r=[]){return r.join(".")}function Yt(r=[]){return`/${r.join("/")}`}function nn(r,e=[]){if(!(!r||typeof r!="object"))return e.reduce((t,n)=>{if(t!=null&&typeof t=="object")return t[n]},r)}function Qt(r,e,t=[]){if(r!=null)return r;let n=nn(e,t);return n??void 0}function Me(r=""){return String(r).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/^./,e=>e.toUpperCase())}function tr(r,e){if(!r)return"string";let t=r.type||"string";if(Array.isArray(t)){let n=Ce(e);return n!=="undefined"&&t.includes(n)?n:t.includes("string")?"string":t.find(o=>o!=="null")||t[0]||"string"}return t}function ft(r,e,t=[]){return!r||!e||!Array.isArray(t)||t.forEach(n=>{e[n]!==void 0&&(r[n]=e[n])}),r}function Kt(r,e){return Array.isArray(e?.oneOf)&&e.oneOf.length?e.oneOf:Array.isArray(e?.enum)&&e.enum.length?e.enum.map(t=>({const:t,title:Me(t)})):Array.isArray(r?.oneOf)&&r.oneOf.length?r.oneOf:Array.isArray(r?.enum)&&r.enum.length?r.enum.map(t=>({const:t,title:Me(t)})):null}function on(r){return r&&(r==="range"?"input-range":r)}function an(r,e){if(!Array.isArray(e)||!e.length)return r;let t=new Set;for(let n of e)!n||n.const===void 0||t.add(Ce(n.const));if(!t.size)return r;if(t.size===1){let n=Array.from(t)[0];if(n==="number")return"number";if(n==="string")return"string";if(n==="boolean")return"boolean"}return r}function Zt(r,e,t){let n=tr(e,t),o=r.toLowerCase(),a={label:Me(r.split(".").slice(-1)[0]||r)};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(t))?Number(t)*4:100),a.step=1)),n==="string"&&r.startsWith("colors.")&&(a.widget="input-color"),n==="string"&&o==="description"&&(a.widget="textarea",a.maxLength=500,a.rows=4);let i=rn[r]||{},s={...a,...i};return s.widget&&(s.widget=on(s.widget)),s}function rr(r,e,t,n,o,a){if(!r||typeof r!="object")return null;let i=Qt(e,a,t),s=tr(r,i);if(s==="object"&&r.properties){let y={type:"object",properties:{}};t.length>0&&(y.title=Me(t[t.length-1]));let x={};for(let[w,k]of Object.entries(r.properties)){let C=e&&typeof e=="object"&&!Array.isArray(e)?e[w]:void 0,$=rr(k,C,[...t,w],n,o,a);$&&(y.properties[w]=$.schema,$.hasValue&&(x[w]=$.value))}return Object.keys(y.properties).length?{schema:y,value:x,hasValue:Object.keys(x).length>0}:null}if(s==="array"){let y=Jt(t),x=Zt(y,r,e);o[y]=x;let w=Qt(e,a,t),k=r.items?.type||"string",C=Array.isArray(k)?k[0]:k,$={type:C},R=Kt(r?.items,null);if(R&&($.oneOf=R),C==="string"&&Array.isArray(w)&&w.length>0){let M=w.find(v=>typeof v=="string"&&v.trim().length>0);M&&($.examples=[M])}ft($,r?.items,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","minItems","maxItems","uniqueItems","description","default"]);let P={type:"array",items:$};ft(P,r,["minItems","maxItems","uniqueItems","description","default"]);let E=Yt(t),A={},N=Array.isArray($.oneOf)&&$.oneOf.length>0;if(C==="string"&&N&&(A["ui:widget"]=P.maxItems===1?"radio":"checkbox-group"),C==="string"&&Array.isArray(w)&&w.length>0){let M=w.filter(v=>typeof v=="string"&&v.trim().length>0).slice(0,5).join(", ");M&&(A["ui:placeholder"]=M)}return Object.keys(A).length&&(n[E]={...n[E]||{},...A}),{schema:P,value:Array.isArray(e)?e:[],hasValue:Array.isArray(e)}}let c=Jt(t),d=Zt(c,r,i);o[c]=d;let p=Kt(r,d),g={type:an(s==="null"?"string":s,p),title:d.label||Me(t[t.length-1]||c)};p&&(g.oneOf=p),ft(g,r,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","description","default"]),typeof d.maxLength=="number"&&g.maxLength===void 0&&(g.maxLength=d.maxLength),(g.type==="number"||g.type==="integer")&&typeof d.min=="number"&&g.minimum===void 0&&(g.minimum=d.min),(g.type==="number"||g.type==="integer")&&typeof d.max=="number"&&g.maximum===void 0&&(g.maximum=d.max),(g.type==="number"||g.type==="integer")&&typeof d.step=="number"&&g.multipleOf===void 0&&(g.multipleOf=d.step);let m=i;m!==void 0&&(g.examples=[m]);let f=Yt(t),h={};return d.widget&&(h["ui:widget"]=d.widget),d.icon&&(h["ui:icon"]=d.icon),typeof d.min=="number"&&(h["ui:min"]=d.min),typeof d.max=="number"&&(h["ui:max"]=d.max),typeof d.step=="number"&&(h["ui:step"]=d.step),d.placeholder&&(h["ui:placeholder"]=d.placeholder),typeof d.rows=="number"&&(h["ui:options"]={...h["ui:options"]||{},rows:d.rows}),d.widget==="input-range"&&m!==void 0&&(h["ui:allowUnset"]=!0),(typeof d.min=="number"||typeof d.max=="number"||typeof d.step=="number")&&(h["ui:options"]={...h["ui:options"]||{},...typeof d.min=="number"?{min:d.min}:{},...typeof d.max=="number"?{max:d.max}:{},...typeof d.step=="number"?{step:d.step}:{}}),Object.keys(h).length&&(n[f]=h),{schema:g,value:e,hasValue:e!==void 0}}function ue(r={}){let e={},t={"/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=rr(ze,r,[],t,e,n);return{schema:o?.schema||{type:"object",properties:{}},uiSchema:t,values:o?.value||{},metadata:e}}function Ee(r={}){return ue(r).metadata}function bt(r,{log:e,context:t="PDS config"}={}){if(!r||typeof r!="object")return[];let n=[];return De(r,ze,"design",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${t}] ${o.message} at ${o.path}`)}),n}function yt(r,{log:e,context:t="PDS config"}={}){if(!r||typeof r!="object")return[];let n=[];return De(r,en,"config",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${t}] ${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:b.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:b.RadiusSizes.small,borderWidth:b.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:b.RadiusSizes.xlarge,borderWidth:b.BorderWidths.medium},behavior:{transitionSpeed:b.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:b.RadiusSizes.none,borderWidth:b.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:b.RadiusSizes.xxlarge,borderWidth:b.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:b.RadiusSizes.none,borderWidth:b.BorderWidths.thick},behavior:{transitionSpeed:b.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:b.RadiusSizes.medium,borderWidth:b.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:b.RadiusSizes.small,borderWidth:b.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:b.RadiusSizes.medium,borderWidth:b.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:b.RadiusSizes.small,borderWidth:b.BorderWidths.thick},behavior:{transitionSpeed:b.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:b.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:b.RadiusSizes.xxlarge,borderWidth:b.BorderWidths.thin},behavior:{transitionSpeed:b.TransitionSpeeds.slow,animationEasing:b.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:b.RadiusSizes.none,borderWidth:b.BorderWidths.thick},behavior:{transitionSpeed:b.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:b.RadiusSizes.large,borderWidth:b.BorderWidths.medium},behavior:{transitionSpeed:b.TransitionSpeeds.normal,animationEasing:b.AnimationEasings.ease}},"fitness-pro":{id:"fitness-pro",name:"Fitness Pro",tags:["app","featured"],description:"Health and fitness tracking aesthetic with data-driven dark surfaces and vibrant accent rings",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#e91e63",secondary:"#78909c",accent:"#ab47bc",background:"#fafafa",darkMode:{background:"#1a1d21",secondary:"#78909c",primary:"#0a4ca4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:b.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:b.RadiusSizes.large,borderWidth:b.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:b.TransitionSpeeds.fast,animationEasing:b.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:b.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:b.RadiusSizes.medium,borderWidth:b.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:b.TransitionSpeeds.normal,animationEasing:b.AnimationEasings["ease-in-out"],hoverOpacity:.9}},"mobility-app":{id:"mobility-app",name:"Mobility App",tags:["app","featured"],description:"On-demand service platform with bold typography, map-ready colors, and action-driven UI",options:{liquidGlassEffects:!0,backgroundMesh:0},colors:{primary:"#000000",secondary:"#545454",accent:"#06c167",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#06c167"}},typography:{baseFontSize:16,fontScale:1.3,fontFamilyHeadings:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,buttonPadding:1.25,inputPadding:1},shape:{radiusSize:b.RadiusSizes.small,borderWidth:b.BorderWidths.medium},behavior:{transitionSpeed:b.TransitionSpeeds.fast,animationEasing:b.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:b.TouchTargetSizes.comfortable,focusStyle:b.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:b.RadiusSizes.medium,borderWidth:b.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:b.TransitionSpeeds.fast,animationEasing:b.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:b.TouchTargetSizes.standard,focusStyle:b.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:b.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,sectionSpacing:1.5},shape:{radiusSize:b.RadiusSizes.medium,borderWidth:b.BorderWidths.thin},behavior:{transitionSpeed:b.TransitionSpeeds.fast,animationEasing:b.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:b.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:b.RadiusSizes.small,borderWidth:b.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:b.TransitionSpeeds.fast,animationEasing:b.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:b.FontWeights.light,fontWeightNormal:b.FontWeights.normal,fontWeightMedium:b.FontWeights.medium,fontWeightSemibold:b.FontWeights.semibold,fontWeightBold:b.FontWeights.bold,lineHeightTight:b.LineHeights.tight,lineHeightNormal:b.LineHeights.normal,lineHeightRelaxed:b.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:b.RadiusSizes.large,borderWidth:b.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:b.TransitionSpeeds.normal,animationEasing:b.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:b.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:b.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:b.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:b.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 nr=Ee(Q.default),or=ue(Q.default);function vt(r="log",e,...t){if(this?.debug||this?.design?.debug||!1||r==="error"||r==="warn"){let o=console[r]||console.log;t.length>0?o(e,...t):o(e)}}$e();xt();var V=class r{static#m;static get instance(){return this.#m}#e;#o;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),r.#m=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||{},t=this.#z(e),n=e.layers||{},o=this.#h(n,t.light),a=this.#C(o),i=t.dark!=null?this.#C(this.#h(n,t.dark)):null;return{colors:this.#E(e.colors||{},t),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#O(e.shape||{}),borderWidths:this.#_(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:a,darkShadows:i,layout:this.#D(e.layout||{}),transitions:this.#W(e.behavior||{}),zIndex:this.#U(e.layers||{}),icons:this.#H(e.icons||{})}}#z(e={}){let t=e.layout||{},n=e.layers||{};return{light:this.#f(t.baseShadowOpacity??n.baseShadowOpacity),dark:this.#f(t.darkMode?.baseShadowOpacity??n.darkMode?.baseShadowOpacity)}}#f(e){let t=Number(e);if(Number.isFinite(t))return Math.min(Math.max(t,0),1)}#h(e={},t){let n={...e};return t!=null&&(n.baseShadowOpacity=t),n}#E(e,t={}){let{primary:n="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:c="#FFBF00",danger:d=null,info:p=null,darkMode:l={}}=e,u={primary:this.#r(n),secondary:this.#r(o),accent:this.#r(a),success:this.#r(s||this.#T(n)),warning:this.#r(c||a),danger:this.#r(d||this.#A(n)),info:this.#r(p||n),gray:this.#b(o),surface:this.#y(i)};return u.surface.fieldset=this.#L(u.surface),u.surfaceSmart=this.#S(u.surface,t),u.dark=this.#F(u,i,l),u.dark&&u.dark.surface&&(u.dark.surfaceSmart=this.#S(u.dark.surface,t)),u.interactive={light:{fill:this.#k(u.primary,4.5),text:u.primary[600]},dark:{fill:this.#k(u.dark.primary,4.5),text:this.#j(u.dark.primary,u.dark.surface.base,4.5)}},u}#r(e){let t=this.#a(e);return{50:this.#t(t.h,Math.max(t.s-10,10),Math.min(t.l+45,95)),100:this.#t(t.h,Math.max(t.s-5,15),Math.min(t.l+35,90)),200:this.#t(t.h,t.s,Math.min(t.l+25,85)),300:this.#t(t.h,t.s,Math.min(t.l+15,75)),400:this.#t(t.h,t.s,Math.min(t.l+5,65)),500:e,600:this.#t(t.h,t.s,Math.max(t.l-10,25)),700:this.#t(t.h,t.s,Math.max(t.l-20,20)),800:this.#t(t.h,t.s,Math.max(t.l-30,15)),900:this.#t(t.h,t.s,Math.max(t.l-40,10))}}#T(e){let t=this.#a(e);return this.#t(120,Math.max(t.s,60),45)}#A(e){let t=this.#a(e);return this.#t(0,Math.max(t.s,70),50)}#b(e){let t=this.#a(e),n=t.h,o=Math.min(t.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)}}#y(e){let t=this.#a(e);return{base:e,subtle:this.#t(t.h,Math.max(t.s,2),Math.max(t.l-2,2)),elevated:this.#t(t.h,Math.max(t.s,3),Math.max(t.l-4,5)),sunken:this.#t(t.h,Math.max(t.s,4),Math.max(t.l-6,8)),overlay:this.#t(t.h,Math.max(t.s,2),Math.min(t.l+2,98)),inverse:this.#v(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#L(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#R(e.sunken,.05),overlay:e.elevated}}#R(e,t=.05){let n=this.#a(e),o=Math.max(n.l-n.l*t,5);return this.#t(n.h,n.s,o)}#v(e){let t=this.#a(e);if(t.l>50){let n=Math.min(t.s+5,25),o=Math.max(12-(t.l-50)*.1,8);return this.#t(t.h,n,o)}else{let n=Math.max(t.s-10,5),o=Math.min(85+(50-t.l)*.3,95);return this.#t(t.h,n,o)}}#F(e,t="#ffffff",n={}){let o=n.background?n.background:this.#v(t),a=this.#y(o),i=n.primary?this.#r(n.primary):this.#i(e.primary);return{surface:{...a,fieldset:this.#N(a)},primary:i,secondary:n.secondary?this.#r(n.secondary):this.#i(e.secondary),accent:n.accent?this.#r(n.accent):this.#i(e.accent),gray:n.secondary?this.#b(n.secondary):e.gray,success:this.#i(e.success),info:this.#i(e.info),warning:this.#i(e.warning),danger:this.#i(e.danger)}}#c(e){let t=String(e||"").replace("#",""),n=t.length===3?t.split("").map(a=>a+a).join(""):t,o=parseInt(n,16);return{r:o>>16&255,g:o>>8&255,b:o&255}}#p(e){let{r:t,g:n,b:o}=this.#c(e),a=[t/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]}#d(e,t){let n=this.#p(e),o=this.#p(t),a=Math.max(n,o),i=Math.min(n,o);return(a+.05)/(i+.05)}#x(e,t=4.5){if(!e)return"#000000";let n="#ffffff",o="#000000",a=this.#d(e,n);if(a>=t)return n;let i=this.#d(e,o);return i>=t||i>a?o:n}#w(e,t=1){let{r:n,g:o,b:a}=this.#c(e);return`rgba(${n}, ${o}, ${a}, ${t})`}#P(e,t,n=.5){let o=this.#c(e),a=this.#c(t),i=Math.round(o.r+(a.r-o.r)*n),s=Math.round(o.g+(a.g-o.g)*n),c=Math.round(o.b+(a.b-o.b)*n);return this.#I(i,s,c)}#I(e,t,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(t)}${o(n)}`}#N(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#$(e.elevated,.08),sunken:e.elevated,overlay:this.#$(e.overlay,.05)}}#j(e={},t="#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 c=this.#d(s,t);if(c>a.ratio&&(a={shade:i,color:s,ratio:c}),c>=n)return s}return a.color||e?.["600"]||e?.["500"]}#k(e={},t=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.#d(i,"#ffffff");if(s>o.ratio&&(o={shade:a,color:i,ratio:s}),s>=t)return i}return o.color||e?.["600"]||e?.["500"]}#S(e,t={}){let n={},o=t.light??.1,a=t.dark??.25;return Object.entries(e).forEach(([i,s])=>{if(!s||typeof s!="string"||!s.startsWith("#"))return;let c=this.#p(s)<.5,d=this.#x(s,4.5),p=this.#x(s,3),l=this.#P(d,s,.4),u=d,g=l,m=c?"#ffffff":"#000000",f=c?a:o,h=this.#w(m,f),y=c?"#ffffff":"#000000",x=c?.15:.1,w=this.#w(y,x);n[i]={bg:s,text:d,textSecondary:p,textMuted:l,icon:u,iconSubtle:g,shadow:h,border:w,scheme:c?"dark":"light"}}),n}#$(e,t=.05){let n=this.#a(e),o=Math.min(n.l+(100-n.l)*t,95);return this.#t(n.h,n.s,o)}#i(e){let t={};return Object.entries({50:{source:"900",dimFactor:.8},100:{source:"800",dimFactor:.8},200:{source:"700",dimFactor:.8},300:{source:"600",dimFactor:.8},400:{source:"500",dimFactor:.85},500:{source:"400",dimFactor:.85},600:{source:"300",dimFactor:.85},700:{source:"200",dimFactor:.85},800:{source:"100",dimFactor:.95},900:{source:"50",dimFactor:.95}}).forEach(([o,a])=>{let i=e[a.source];t[o]=this.#B(i,a.dimFactor)}),t}#B(e,t=.8){let n=this.#a(e),o=Math.max(n.s*t,5),a=Math.max(n.l*t,5);return this.#t(n.h,o,a)}generateSpacingTokens(e){let{baseUnit:t=4,scaleRatio:n=1.25,maxSpacingSteps:o=12}=e,a=Number.isFinite(Number(t))?Number(t):4,i=Math.min(Number.isFinite(Number(o))?Number(o):12,12),s={0:"0"};for(let c=1;c<=i;c++)s[c]=`${a*c}px`;return s}#O(e){let{radiusSize:t="medium",customRadius:n=null}=e,o;n!=null?o=n:typeof t=="number"?o=t:typeof t=="string"?o=b.RadiusSizes[t]??b.RadiusSizes.medium:o=b.RadiusSizes.medium;let a=Number.isFinite(Number(o))?Number(o):b.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"}}#_(e){let{borderWidth:t="medium"}=e,n;typeof t=="number"?n=t:typeof t=="string"?n=b.BorderWidths[t]??b.BorderWidths.medium:n=b.BorderWidths.medium;let o=Number.isFinite(Number(n))?Number(n):b.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:t="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=b.FontWeights.light,fontWeightNormal:c=b.FontWeights.normal,fontWeightMedium:d=b.FontWeights.medium,fontWeightSemibold:p=b.FontWeights.semibold,fontWeightBold:l=b.FontWeights.bold,lineHeightTight:u=b.LineHeights.tight,lineHeightNormal:g=b.LineHeights.normal,lineHeightRelaxed:m=b.LineHeights.relaxed}=e,f=Number.isFinite(Number(a))?Number(a):16,h=Number.isFinite(Number(i))?Number(i):1.25;return{fontFamily:{headings:t,body:n,mono:o},fontSize:{xs:`${Math.round(f/Math.pow(h,2))}px`,sm:`${Math.round(f/h)}px`,base:`${f}px`,lg:`${Math.round(f*h)}px`,xl:`${Math.round(f*Math.pow(h,2))}px`,"2xl":`${Math.round(f*Math.pow(h,3))}px`,"3xl":`${Math.round(f*Math.pow(h,4))}px`,"4xl":`${Math.round(f*Math.pow(h,5))}px`},fontWeight:{light:s?.toString()||"300",normal:c?.toString()||"400",medium:d?.toString()||"500",semibold:p?.toString()||"600",bold:l?.toString()||"700"},lineHeight:{tight:u?.toString()||"1.25",normal:g?.toString()||"1.5",relaxed:m?.toString()||"1.75"}}}#C(e){let{baseShadowOpacity:t=.1,shadowBlurMultiplier:n=1,shadowOffsetMultiplier:o=1}=e,a=`rgba(0, 0, 0, ${t})`,i=`rgba(0, 0, 0, ${t*.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:t=16,breakpoints:n={sm:640,md:768,lg:1024,xl:1280}}=e,o=this.#u(e,"maxWidth"),a=e.maxWidth,i=this.#M(e,{emitFallbacks:!1});return{maxWidth:o?this.#n(a,"1200px"):void 0,maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#n(t,"16px"),breakpoints:{sm:this.#n(n.sm,"640px"),md:this.#n(n.md,"768px"),lg:this.#n(n.lg,"1024px"),xl:this.#n(n.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#M(e={},t={}){let{emitFallbacks:n=!0}=t,o={sm:640,md:768,lg:1024,xl:1280},{maxWidths:a={},containerPadding:i=16,breakpoints:s=o}=e||{},c=this.#u(e,"maxWidth"),d=["sm","md","lg","xl"].some(h=>this.#u(a,h));if(!n&&!c&&!d)return{sm:void 0,md:void 0,lg:void 0,xl:void 0};let p=e?.maxWidth,l=this.#s(i,16),u=this.#s(p,o.xl),g={sm:this.#s(s.sm,o.sm),md:this.#s(s.md,o.md),lg:this.#s(s.lg,o.lg),xl:this.#s(s.xl,o.xl)},m=h=>h?Math.max(320,h-l*2):u,f={sm:Math.min(u,m(g.sm)),md:Math.min(u,m(g.md)),lg:Math.min(u,m(g.lg)),xl:Math.max(320,u)};return{sm:this.#n(a.sm,`${f.sm}px`),md:this.#n(a.md,`${f.md}px`),lg:this.#n(a.lg,`${f.lg}px`),xl:this.#n(a.xl,`${f.xl}px`)}}#u(e,t){if(!e||typeof e!="object"||!Object.prototype.hasOwnProperty.call(e,t))return!1;let n=e[t];return!(n==null||typeof n=="string"&&n.trim().length===0)}#n(e,t){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:t}#s(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=parseFloat(e);if(Number.isFinite(n))return n}return t}#W(e){let{transitionSpeed:t=b.TransitionSpeeds.normal,animationEasing:n=b.AnimationEasings["ease-out"]}=e,o;return typeof t=="number"?o=t:typeof t=="string"&&b.TransitionSpeeds[t]?o=b.TransitionSpeeds[t]:o=b.TransitionSpeeds.normal,{fast:`${Math.round(o*.6)}ms`,normal:`${o}ms`,slow:`${Math.round(o*1.4)}ms`}}#U(e){let{baseZIndex:t=1e3,zIndexStep:n=10}=e;return{dropdown:t.toString(),sticky:(t+n*2).toString(),fixed:(t+n*3).toString(),modal:(t+n*4).toString(),drawer:(t+n*5).toString(),popover:(t+n*6).toString(),tooltip:(t+n*7).toString(),notification:(t+n*8).toString()}}#H(e){let{set:t="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:t,weight:n,defaultSize:`${o}px`,sizes:Object.fromEntries(Object.entries(a).map(([c,d])=>[c,`${d}px`])),spritePath:i,externalPath:s}}#q(e){let t=[];t.push(` /* Colors */
|
|
19
|
+
</article>`:t.includes("badge")||e.id==="badge"?'<span class="badge">New</span>':`<${t}>Content</${t}>`}describeUtility(e){return e.includes("border-gradient")?"Apply animated gradient border effect":e.includes("border-glow")?"Apply glowing border effect":e.includes("flex")?"Flexbox container utility":e.includes("grid")?"Grid container utility":e.includes("gap-")?"Set gap between flex/grid children":e.includes("items-")?"Align items in flex container":e.includes("justify-")?"Justify content in flex container":e===".btn-group"?"Group buttons with connected styling":"Utility class for styling"}}});var Ye={};_e(Ye,{deepMerge:()=>yr,fragmentFromTemplateLike:()=>Fn,isObject:()=>Je,parseHTML:()=>Rt});function Je(r){return r&&typeof r=="object"&&!Array.isArray(r)}function yr(r,e){let t={...r};return Je(r)&&Je(e)&&Object.keys(e).forEach(n=>{Je(e[n])?n in r?t[n]=yr(r[n],e[n]):Object.assign(t,{[n]:e[n]}):Object.assign(t,{[n]:e[n]})}),t}function Fn(r){let e=Array.isArray(r?.strings)?r.strings:[],t=Array.isArray(r?.values)?r.values:[],n=new Set,o=[],a=/(\s)(\.[\w-]+)=\s*$/;for(let l=0;l<e.length;l+=1){let u=e[l]??"",g=u.match(a);if(g&&l<t.length){let f=g[2].slice(1),h=`pds-val-${l}`;u=u.replace(a,`$1data-pds-prop="${f}:${h}"`),n.add(l)}o.push(u),l<t.length&&!n.has(l)&&o.push(`<!--pds-val-${l}-->`)}let i=document.createElement("template");i.innerHTML=o.join("");let s=(l,u)=>{let g=l.parentNode;if(!g)return;if(u==null){g.removeChild(l);return}let m=f=>{if(f!=null){if(f instanceof Node){g.insertBefore(f,l);return}if(Array.isArray(f)){f.forEach(h=>m(h));return}g.insertBefore(document.createTextNode(String(f)),l)}};m(u),g.removeChild(l)},c=document.createTreeWalker(i.content,NodeFilter.SHOW_COMMENT),d=[];for(;c.nextNode();){let l=c.currentNode;l?.nodeValue?.startsWith("pds-val-")&&d.push(l)}return d.forEach(l=>{let u=Number(l.nodeValue.replace("pds-val-",""));s(l,t[u])}),i.content.querySelectorAll("*").forEach(l=>{let u=l.getAttribute("data-pds-prop");if(!u)return;let[g,m]=u.split(":"),f=Number(String(m).replace("pds-val-",""));g&&Number.isInteger(f)&&(l[g]=t[f]),l.removeAttribute("data-pds-prop")}),i.content}function Rt(r){return new DOMParser().parseFromString(r,"text/html").body.childNodes}var Ft=Oe(()=>{});$e();var pe="any",ze={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-*"]}},warning:{type:["string","null"],relations:{tokens:["--color-warning-*"]}},danger:{type:["string","null"],relations:{tokens:["--color-danger-*"]}},info:{type:["string","null"],relations:{tokens:["--color-info-*"]}},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"}}},en={type:"object",allowUnknown:!0,properties:{mode:{type:"string"},preset:{type:"string"},design:ze,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:pe},enhancers:{type:["object","array"]},scanExisting:{type:"boolean"},observeShadows:{type:"boolean"},patchAttachShadow:{type:"boolean"},debounceMs:{type:"number"},onError:{type:pe},baseURL:{type:"string"}}},managerURL:{type:"string"},manager:{type:pe},liveEdit:{type:"boolean"},log:{type:pe}}};function Ce(r){return r===null?"null":Array.isArray(r)?"array":typeof r}function tn(r,e){if(e===pe)return!0;let t=Ce(r);return Array.isArray(e)?e.includes(t):t===e}function De(r,e,t,n){if(!e)return;let o=e.type||pe;if(!tn(r,o)){n.push({path:t,expected:o,actual:Ce(r),message:`Expected ${o} but got ${Ce(r)}`});return}if(o==="array"&&e.items&&Array.isArray(r)&&r.forEach((a,i)=>{De(a,e.items,`${t}[${i}]`,n)}),o==="object"&&r&&typeof r=="object"){let a=e.properties||{};for(let[i,s]of Object.entries(r)){if(!Object.prototype.hasOwnProperty.call(a,i)){e.allowUnknown||n.push({path:`${t}.${i}`,expected:"known property",actual:"unknown",message:`Unknown property "${i}"`});continue}De(s,a[i],`${t}.${i}`,n)}}}function ht(r,e="",t={}){if(!r||typeof r!="object")return t;if(r.relations&&e&&(t[e]=r.relations),r.type==="object"&&r.properties&&Object.entries(r.properties).forEach(([n,o])=>{let a=e?`${e}.${n}`:n;ht(o,a,t)}),r.type==="array"&&r.items){let n=`${e}[]`;ht(r.items,n,t)}return t}var Xt=ht(ze,""),er=ze,rn={"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(y.RadiusSizes).map(([r,e])=>({const:e,title:r}))},"shape.borderWidth":{widget:"select",oneOf:Object.entries(y.BorderWidths).map(([r,e])=>({const:e,title:r}))},"shape.customRadius":{min:0,max:64,step:1,widget:"range"},"behavior.transitionSpeed":{oneOf:Object.entries(y.TransitionSpeeds).map(([r,e])=>({const:e,title:r}))},"behavior.animationEasing":{enum:Object.values(y.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(y.LinkStyles)},"a11y.minTouchTarget":{oneOf:Object.entries(y.TouchTargetSizes).map(([r,e])=>({const:e,title:r}))},"a11y.focusStyle":{enum:Object.values(y.FocusStyles)},"icons.defaultSize":{min:8,max:128,step:1,widget:"range",icon:"sparkle"}};function Jt(r=[]){return r.join(".")}function Yt(r=[]){return`/${r.join("/")}`}function nn(r,e=[]){if(!(!r||typeof r!="object"))return e.reduce((t,n)=>{if(t!=null&&typeof t=="object")return t[n]},r)}function Qt(r,e,t=[]){if(r!=null)return r;let n=nn(e,t);return n??void 0}function Me(r=""){return String(r).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/^./,e=>e.toUpperCase())}function tr(r,e){if(!r)return"string";let t=r.type||"string";if(Array.isArray(t)){let n=Ce(e);return n!=="undefined"&&t.includes(n)?n:t.includes("string")?"string":t.find(o=>o!=="null")||t[0]||"string"}return t}function ft(r,e,t=[]){return!r||!e||!Array.isArray(t)||t.forEach(n=>{e[n]!==void 0&&(r[n]=e[n])}),r}function Kt(r,e){return Array.isArray(e?.oneOf)&&e.oneOf.length?e.oneOf:Array.isArray(e?.enum)&&e.enum.length?e.enum.map(t=>({const:t,title:Me(t)})):Array.isArray(r?.oneOf)&&r.oneOf.length?r.oneOf:Array.isArray(r?.enum)&&r.enum.length?r.enum.map(t=>({const:t,title:Me(t)})):null}function on(r){return r&&(r==="range"?"input-range":r)}function an(r,e){if(!Array.isArray(e)||!e.length)return r;let t=new Set;for(let n of e)!n||n.const===void 0||t.add(Ce(n.const));if(!t.size)return r;if(t.size===1){let n=Array.from(t)[0];if(n==="number")return"number";if(n==="string")return"string";if(n==="boolean")return"boolean"}return r}function Zt(r,e,t){let n=tr(e,t),o=r.toLowerCase(),a={label:Me(r.split(".").slice(-1)[0]||r)};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(t))?Number(t)*4:100),a.step=1)),n==="string"&&r.startsWith("colors.")&&(a.widget="input-color"),n==="string"&&o==="description"&&(a.widget="textarea",a.maxLength=500,a.rows=4);let i=rn[r]||{},s={...a,...i};return s.widget&&(s.widget=on(s.widget)),s}function rr(r,e,t,n,o,a){if(!r||typeof r!="object")return null;let i=Qt(e,a,t),s=tr(r,i);if(s==="object"&&r.properties){let v={type:"object",properties:{}};t.length>0&&(v.title=Me(t[t.length-1]));let w={};for(let[b,S]of Object.entries(r.properties)){let R=e&&typeof e=="object"&&!Array.isArray(e)?e[b]:void 0,$=rr(S,R,[...t,b],n,o,a);$&&(v.properties[b]=$.schema,$.hasValue&&(w[b]=$.value))}return Object.keys(v.properties).length?{schema:v,value:w,hasValue:Object.keys(w).length>0}:null}if(s==="array"){let v=Jt(t),w=Zt(v,r,e);o[v]=w;let b=Qt(e,a,t),S=r.items?.type||"string",R=Array.isArray(S)?S[0]:S,$={type:R},L=Kt(r?.items,null);if(L&&($.oneOf=L),R==="string"&&Array.isArray(b)&&b.length>0){let C=b.find(x=>typeof x=="string"&&x.trim().length>0);C&&($.examples=[C])}ft($,r?.items,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","minItems","maxItems","uniqueItems","description","default"]);let P={type:"array",items:$};ft(P,r,["minItems","maxItems","uniqueItems","description","default"]);let z=Yt(t),T={},N=Array.isArray($.oneOf)&&$.oneOf.length>0;if(R==="string"&&N&&(T["ui:widget"]=P.maxItems===1?"radio":"checkbox-group"),R==="string"&&Array.isArray(b)&&b.length>0){let C=b.filter(x=>typeof x=="string"&&x.trim().length>0).slice(0,5).join(", ");C&&(T["ui:placeholder"]=C)}return Object.keys(T).length&&(n[z]={...n[z]||{},...T}),{schema:P,value:Array.isArray(e)?e:[],hasValue:Array.isArray(e)}}let c=Jt(t),d=Zt(c,r,i);o[c]=d;let p=Kt(r,d),g={type:an(s==="null"?"string":s,p),title:d.label||Me(t[t.length-1]||c)};p&&(g.oneOf=p),ft(g,r,["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","description","default"]),typeof d.maxLength=="number"&&g.maxLength===void 0&&(g.maxLength=d.maxLength),(g.type==="number"||g.type==="integer")&&typeof d.min=="number"&&g.minimum===void 0&&(g.minimum=d.min),(g.type==="number"||g.type==="integer")&&typeof d.max=="number"&&g.maximum===void 0&&(g.maximum=d.max),(g.type==="number"||g.type==="integer")&&typeof d.step=="number"&&g.multipleOf===void 0&&(g.multipleOf=d.step);let m=i;m!==void 0&&(g.examples=[m]);let f=Yt(t),h={};return d.widget&&(h["ui:widget"]=d.widget),d.icon&&(h["ui:icon"]=d.icon),typeof d.min=="number"&&(h["ui:min"]=d.min),typeof d.max=="number"&&(h["ui:max"]=d.max),typeof d.step=="number"&&(h["ui:step"]=d.step),d.placeholder&&(h["ui:placeholder"]=d.placeholder),typeof d.rows=="number"&&(h["ui:options"]={...h["ui:options"]||{},rows:d.rows}),d.widget==="input-range"&&m!==void 0&&(h["ui:allowUnset"]=!0),(typeof d.min=="number"||typeof d.max=="number"||typeof d.step=="number")&&(h["ui:options"]={...h["ui:options"]||{},...typeof d.min=="number"?{min:d.min}:{},...typeof d.max=="number"?{max:d.max}:{},...typeof d.step=="number"?{step:d.step}:{}}),Object.keys(h).length&&(n[f]=h),{schema:g,value:e,hasValue:e!==void 0}}function ue(r={}){let e={},t={"/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=rr(ze,r,[],t,e,n);return{schema:o?.schema||{type:"object",properties:{}},uiSchema:t,values:o?.value||{},metadata:e}}function Ee(r={}){return ue(r).metadata}function bt(r,{log:e,context:t="PDS config"}={}){if(!r||typeof r!="object")return[];let n=[];return De(r,ze,"design",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${t}] ${o.message} at ${o.path}`)}),n}function yt(r,{log:e,context:t="PDS config"}={}){if(!r||typeof r!="object")return[];let n=[];return De(r,en,"config",n),n.length&&typeof e=="function"&&n.forEach(o=>{e("warn",`[${t}] ${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:y.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:y.RadiusSizes.small,borderWidth:y.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:y.RadiusSizes.xlarge,borderWidth:y.BorderWidths.medium},behavior:{transitionSpeed:y.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:y.RadiusSizes.none,borderWidth:y.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:y.RadiusSizes.xxlarge,borderWidth:y.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:y.RadiusSizes.none,borderWidth:y.BorderWidths.thick},behavior:{transitionSpeed:y.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:y.RadiusSizes.medium,borderWidth:y.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:y.RadiusSizes.small,borderWidth:y.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:y.RadiusSizes.medium,borderWidth:y.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:y.RadiusSizes.small,borderWidth:y.BorderWidths.thick},behavior:{transitionSpeed:y.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:y.LineHeights.relaxed},spatialRhythm:{baseUnit:6,scaleRatio:1.4},shape:{radiusSize:y.RadiusSizes.xxlarge,borderWidth:y.BorderWidths.thin},behavior:{transitionSpeed:y.TransitionSpeeds.slow,animationEasing:y.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:y.RadiusSizes.none,borderWidth:y.BorderWidths.thick},behavior:{transitionSpeed:y.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:y.RadiusSizes.large,borderWidth:y.BorderWidths.medium},behavior:{transitionSpeed:y.TransitionSpeeds.normal,animationEasing:y.AnimationEasings.ease}},"fitness-pro":{id:"fitness-pro",name:"Fitness Pro",tags:["app","featured"],description:"Health and fitness tracking aesthetic with data-driven dark surfaces and vibrant accent rings",options:{liquidGlassEffects:!0,backgroundMesh:2},colors:{primary:"#e91e63",secondary:"#78909c",accent:"#ab47bc",background:"#fafafa",darkMode:{background:"#1a1d21",secondary:"#78909c",primary:"#0a4ca4"}},typography:{baseFontSize:15,fontScale:1.25,fontFamilyHeadings:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700,lineHeightNormal:y.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.25,sectionSpacing:2.5},shape:{radiusSize:y.RadiusSizes.large,borderWidth:y.BorderWidths.thin},layers:{shadowDepth:"medium",blurMedium:12},behavior:{transitionSpeed:y.TransitionSpeeds.fast,animationEasing:y.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:y.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,containerPadding:1.5,sectionSpacing:3},shape:{radiusSize:y.RadiusSizes.medium,borderWidth:y.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:8},behavior:{transitionSpeed:y.TransitionSpeeds.normal,animationEasing:y.AnimationEasings["ease-in-out"],hoverOpacity:.9}},"mobility-app":{id:"mobility-app",name:"Mobility App",tags:["app","featured"],description:"On-demand service platform with bold typography, map-ready colors, and action-driven UI",options:{liquidGlassEffects:!0,backgroundMesh:0},colors:{primary:"#000000",secondary:"#545454",accent:"#06c167",background:"#f6f6f6",darkMode:{background:"#0f0f0f",secondary:"#8a8a8a",primary:"#06c167"}},typography:{baseFontSize:16,fontScale:1.3,fontFamilyHeadings:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontFamilyBody:"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",fontWeightNormal:400,fontWeightMedium:500,fontWeightSemibold:600,fontWeightBold:700},spatialRhythm:{baseUnit:4,scaleRatio:1.25,buttonPadding:1.25,inputPadding:1},shape:{radiusSize:y.RadiusSizes.small,borderWidth:y.BorderWidths.medium},behavior:{transitionSpeed:y.TransitionSpeeds.fast,animationEasing:y.AnimationEasings["ease-out"],focusRingWidth:3},a11y:{minTouchTarget:y.TouchTargetSizes.comfortable,focusStyle:y.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:y.RadiusSizes.medium,borderWidth:y.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:6},behavior:{transitionSpeed:y.TransitionSpeeds.fast,animationEasing:y.AnimationEasings["ease-in-out"],focusRingWidth:3,focusRingOpacity:.4},a11y:{minTouchTarget:y.TouchTargetSizes.standard,focusStyle:y.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:y.LineHeights.relaxed},spatialRhythm:{baseUnit:4,scaleRatio:1.25,sectionSpacing:1.5},shape:{radiusSize:y.RadiusSizes.medium,borderWidth:y.BorderWidths.thin},behavior:{transitionSpeed:y.TransitionSpeeds.fast,animationEasing:y.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:y.LineHeights.tight},spatialRhythm:{baseUnit:4,scaleRatio:1.2,containerPadding:1.5,sectionSpacing:2},shape:{radiusSize:y.RadiusSizes.small,borderWidth:y.BorderWidths.thin},layers:{shadowDepth:"light",blurLight:4},behavior:{transitionSpeed:y.TransitionSpeeds.fast,animationEasing:y.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:y.FontWeights.light,fontWeightNormal:y.FontWeights.normal,fontWeightMedium:y.FontWeights.medium,fontWeightSemibold:y.FontWeights.semibold,fontWeightBold:y.FontWeights.bold,lineHeightTight:y.LineHeights.tight,lineHeightNormal:y.LineHeights.normal,lineHeightRelaxed:y.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:y.RadiusSizes.large,borderWidth:y.BorderWidths.medium,customRadius:null},behavior:{transitionSpeed:y.TransitionSpeeds.normal,animationEasing:y.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:y.LinkStyles.inline,colorDerivation:"hsl"},a11y:{minTouchTarget:y.TouchTargetSizes.standard,prefersReducedMotion:!0,focusStyle:y.FocusStyles.ring},icons:{set:"phosphor",weight:"regular",defaultSize:24,externalPath:"/assets/img/icons/",sizes:y.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 nr=Ee(Q.default),or=ue(Q.default);function vt(r="log",e,...t){if(this?.debug||this?.design?.debug||!1||r==="error"||r==="warn"){let o=console[r]||console.log;t.length>0?o(e,...t):o(e)}}$e();xt();var V=class r{static#m;static get instance(){return this.#m}#e;#o;constructor(e={}){this.options={debug:!1,...e},this.options.design||(this.options.design={}),this.options.debug&&this.options.log?.("debug","Generator options:",this.options),r.#m=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||{},t=this.#z(e),n=e.layers||{},o=this.#h(n,t.light),a=this.#C(o),i=t.dark!=null?this.#C(this.#h(n,t.dark)):null;return{colors:this.#E(e.colors||{},t),spacing:this.generateSpacingTokens(e.spatialRhythm||{}),radius:this.#O(e.shape||{}),borderWidths:this.#_(e.shape||{}),typography:this.generateTypographyTokens(e.typography||{}),shadows:a,darkShadows:i,layout:this.#D(e.layout||{}),transitions:this.#W(e.behavior||{}),zIndex:this.#U(e.layers||{}),icons:this.#H(e.icons||{})}}#z(e={}){let t=e.layout||{},n=e.layers||{};return{light:this.#f(t.baseShadowOpacity??n.baseShadowOpacity),dark:this.#f(t.darkMode?.baseShadowOpacity??n.darkMode?.baseShadowOpacity)}}#f(e){let t=Number(e);if(Number.isFinite(t))return Math.min(Math.max(t,0),1)}#h(e={},t){let n={...e};return t!=null&&(n.baseShadowOpacity=t),n}#E(e,t={}){let{primary:n="#3b82f6",secondary:o="#64748b",accent:a="#ec4899",background:i="#ffffff",success:s=null,warning:c="#FFBF00",danger:d=null,info:p=null,darkMode:l={}}=e,u={primary:this.#r(n),secondary:this.#r(o),accent:this.#r(a),success:this.#r(s||this.#T(n)),warning:this.#r(c||a),danger:this.#r(d||this.#A(n)),info:this.#r(p||n),gray:this.#b(o),surface:this.#y(i)};return u.surface.fieldset=this.#L(u.surface),u.surfaceSmart=this.#S(u.surface,t),u.dark=this.#F(u,i,l),u.dark&&u.dark.surface&&(u.dark.surfaceSmart=this.#S(u.dark.surface,t)),u.interactive={light:{fill:this.#k(u.primary,4.5),text:u.primary[600]},dark:{fill:this.#k(u.dark.primary,4.5),text:this.#j(u.dark.primary,u.dark.surface.base,4.5)}},u}#r(e){let t=this.#a(e);return{50:this.#t(t.h,Math.max(t.s-10,10),Math.min(t.l+45,95)),100:this.#t(t.h,Math.max(t.s-5,15),Math.min(t.l+35,90)),200:this.#t(t.h,t.s,Math.min(t.l+25,85)),300:this.#t(t.h,t.s,Math.min(t.l+15,75)),400:this.#t(t.h,t.s,Math.min(t.l+5,65)),500:e,600:this.#t(t.h,t.s,Math.max(t.l-10,25)),700:this.#t(t.h,t.s,Math.max(t.l-20,20)),800:this.#t(t.h,t.s,Math.max(t.l-30,15)),900:this.#t(t.h,t.s,Math.max(t.l-40,10))}}#T(e){let t=this.#a(e);return this.#t(120,Math.max(t.s,60),45)}#A(e){let t=this.#a(e);return this.#t(0,Math.max(t.s,70),50)}#b(e){let t=this.#a(e),n=t.h,o=Math.min(t.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)}}#y(e){let t=this.#a(e);return{base:e,subtle:this.#t(t.h,Math.max(t.s,2),Math.max(t.l-2,2)),elevated:this.#t(t.h,Math.max(t.s,3),Math.max(t.l-4,5)),sunken:this.#t(t.h,Math.max(t.s,4),Math.max(t.l-6,8)),overlay:this.#t(t.h,Math.max(t.s,2),Math.min(t.l+2,98)),inverse:this.#v(e),hover:"color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);"}}#L(e){return{base:e.subtle,subtle:e.elevated,elevated:e.sunken,sunken:this.#R(e.sunken,.05),overlay:e.elevated}}#R(e,t=.05){let n=this.#a(e),o=Math.max(n.l-n.l*t,5);return this.#t(n.h,n.s,o)}#v(e){let t=this.#a(e);if(t.l>50){let n=Math.min(t.s+5,25),o=Math.max(12-(t.l-50)*.1,8);return this.#t(t.h,n,o)}else{let n=Math.max(t.s-10,5),o=Math.min(85+(50-t.l)*.3,95);return this.#t(t.h,n,o)}}#F(e,t="#ffffff",n={}){let o=n.background?n.background:this.#v(t),a=this.#y(o),i=n.primary?this.#r(n.primary):this.#i(e.primary);return{surface:{...a,fieldset:this.#N(a)},primary:i,secondary:n.secondary?this.#r(n.secondary):this.#i(e.secondary),accent:n.accent?this.#r(n.accent):this.#i(e.accent),gray:n.secondary?this.#b(n.secondary):e.gray,success:this.#i(e.success),info:this.#i(e.info),warning:this.#i(e.warning),danger:this.#i(e.danger)}}#c(e){let t=String(e||"").replace("#",""),n=t.length===3?t.split("").map(a=>a+a).join(""):t,o=parseInt(n,16);return{r:o>>16&255,g:o>>8&255,b:o&255}}#p(e){let{r:t,g:n,b:o}=this.#c(e),a=[t/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]}#d(e,t){let n=this.#p(e),o=this.#p(t),a=Math.max(n,o),i=Math.min(n,o);return(a+.05)/(i+.05)}#x(e,t=4.5){if(!e)return"#000000";let n="#ffffff",o="#000000",a=this.#d(e,n);if(a>=t)return n;let i=this.#d(e,o);return i>=t||i>a?o:n}#w(e,t=1){let{r:n,g:o,b:a}=this.#c(e);return`rgba(${n}, ${o}, ${a}, ${t})`}#P(e,t,n=.5){let o=this.#c(e),a=this.#c(t),i=Math.round(o.r+(a.r-o.r)*n),s=Math.round(o.g+(a.g-o.g)*n),c=Math.round(o.b+(a.b-o.b)*n);return this.#I(i,s,c)}#I(e,t,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(t)}${o(n)}`}#N(e){return{base:e.elevated,subtle:e.overlay,elevated:this.#$(e.elevated,.08),sunken:e.elevated,overlay:this.#$(e.overlay,.05)}}#j(e={},t="#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 c=this.#d(s,t);if(c>a.ratio&&(a={shade:i,color:s,ratio:c}),c>=n)return s}return a.color||e?.["600"]||e?.["500"]}#k(e={},t=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.#d(i,"#ffffff");if(s>o.ratio&&(o={shade:a,color:i,ratio:s}),s>=t)return i}return o.color||e?.["600"]||e?.["500"]}#S(e,t={}){let n={},o=t.light??.1,a=t.dark??.25;return Object.entries(e).forEach(([i,s])=>{if(!s||typeof s!="string"||!s.startsWith("#"))return;let c=this.#p(s)<.5,d=this.#x(s,4.5),p=this.#x(s,3),l=this.#P(d,s,.4),u=d,g=l,m=c?"#ffffff":"#000000",f=c?a:o,h=this.#w(m,f),v=c?"#ffffff":"#000000",w=c?.15:.1,b=this.#w(v,w);n[i]={bg:s,text:d,textSecondary:p,textMuted:l,icon:u,iconSubtle:g,shadow:h,border:b,scheme:c?"dark":"light"}}),n}#$(e,t=.05){let n=this.#a(e),o=Math.min(n.l+(100-n.l)*t,95);return this.#t(n.h,n.s,o)}#i(e){let t={};return Object.entries({50:{source:"900",dimFactor:.8},100:{source:"800",dimFactor:.8},200:{source:"700",dimFactor:.8},300:{source:"600",dimFactor:.8},400:{source:"500",dimFactor:.85},500:{source:"400",dimFactor:.85},600:{source:"300",dimFactor:.85},700:{source:"200",dimFactor:.85},800:{source:"100",dimFactor:.95},900:{source:"50",dimFactor:.95}}).forEach(([o,a])=>{let i=e[a.source];t[o]=this.#B(i,a.dimFactor)}),t}#B(e,t=.8){let n=this.#a(e),o=Math.max(n.s*t,5),a=Math.max(n.l*t,5);return this.#t(n.h,o,a)}generateSpacingTokens(e){let{baseUnit:t=4,scaleRatio:n=1.25,maxSpacingSteps:o=12}=e,a=Number.isFinite(Number(t))?Number(t):4,i=Math.min(Number.isFinite(Number(o))?Number(o):12,12),s={0:"0"};for(let c=1;c<=i;c++)s[c]=`${a*c}px`;return s}#O(e){let{radiusSize:t="medium",customRadius:n=null}=e,o;n!=null?o=n:typeof t=="number"?o=t:typeof t=="string"?o=y.RadiusSizes[t]??y.RadiusSizes.medium:o=y.RadiusSizes.medium;let a=Number.isFinite(Number(o))?Number(o):y.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"}}#_(e){let{borderWidth:t="medium"}=e,n;typeof t=="number"?n=t:typeof t=="string"?n=y.BorderWidths[t]??y.BorderWidths.medium:n=y.BorderWidths.medium;let o=Number.isFinite(Number(n))?Number(n):y.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:t="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=y.FontWeights.light,fontWeightNormal:c=y.FontWeights.normal,fontWeightMedium:d=y.FontWeights.medium,fontWeightSemibold:p=y.FontWeights.semibold,fontWeightBold:l=y.FontWeights.bold,lineHeightTight:u=y.LineHeights.tight,lineHeightNormal:g=y.LineHeights.normal,lineHeightRelaxed:m=y.LineHeights.relaxed}=e,f=Number.isFinite(Number(a))?Number(a):16,h=Number.isFinite(Number(i))?Number(i):1.25;return{fontFamily:{headings:t,body:n,mono:o},fontSize:{xs:`${Math.round(f/Math.pow(h,2))}px`,sm:`${Math.round(f/h)}px`,base:`${f}px`,lg:`${Math.round(f*h)}px`,xl:`${Math.round(f*Math.pow(h,2))}px`,"2xl":`${Math.round(f*Math.pow(h,3))}px`,"3xl":`${Math.round(f*Math.pow(h,4))}px`,"4xl":`${Math.round(f*Math.pow(h,5))}px`},fontWeight:{light:s?.toString()||"300",normal:c?.toString()||"400",medium:d?.toString()||"500",semibold:p?.toString()||"600",bold:l?.toString()||"700"},lineHeight:{tight:u?.toString()||"1.25",normal:g?.toString()||"1.5",relaxed:m?.toString()||"1.75"}}}#C(e){let{baseShadowOpacity:t=.1,shadowBlurMultiplier:n=1,shadowOffsetMultiplier:o=1}=e,a=`rgba(0, 0, 0, ${t})`,i=`rgba(0, 0, 0, ${t*.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:t=16,breakpoints:n={sm:640,md:768,lg:1024,xl:1280}}=e,o=this.#u(e,"maxWidth"),a=e.maxWidth,i=this.#M(e,{emitFallbacks:!1});return{maxWidth:o?this.#n(a,"1200px"):void 0,maxWidthSm:i.sm,maxWidthMd:i.md,maxWidthLg:i.lg,maxWidthXl:i.xl,minHeight:"100vh",containerPadding:this.#n(t,"16px"),breakpoints:{sm:this.#n(n.sm,"640px"),md:this.#n(n.md,"768px"),lg:this.#n(n.lg,"1024px"),xl:this.#n(n.xl,"1280px")},pageMargin:"120px",sectionGap:"160px",containerGap:"200px",heroSpacing:"240px",footerSpacing:"160px"}}#M(e={},t={}){let{emitFallbacks:n=!0}=t,o={sm:640,md:768,lg:1024,xl:1280},{maxWidths:a={},containerPadding:i=16,breakpoints:s=o}=e||{},c=this.#u(e,"maxWidth"),d=["sm","md","lg","xl"].some(h=>this.#u(a,h));if(!n&&!c&&!d)return{sm:void 0,md:void 0,lg:void 0,xl:void 0};let p=e?.maxWidth,l=this.#s(i,16),u=this.#s(p,o.xl),g={sm:this.#s(s.sm,o.sm),md:this.#s(s.md,o.md),lg:this.#s(s.lg,o.lg),xl:this.#s(s.xl,o.xl)},m=h=>h?Math.max(320,h-l*2):u,f={sm:Math.min(u,m(g.sm)),md:Math.min(u,m(g.md)),lg:Math.min(u,m(g.lg)),xl:Math.max(320,u)};return{sm:this.#n(a.sm,`${f.sm}px`),md:this.#n(a.md,`${f.md}px`),lg:this.#n(a.lg,`${f.lg}px`),xl:this.#n(a.xl,`${f.xl}px`)}}#u(e,t){if(!e||typeof e!="object"||!Object.prototype.hasOwnProperty.call(e,t))return!1;let n=e[t];return!(n==null||typeof n=="string"&&n.trim().length===0)}#n(e,t){return typeof e=="number"&&Number.isFinite(e)?`${e}px`:typeof e=="string"&&e.trim().length>0?e:t}#s(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=parseFloat(e);if(Number.isFinite(n))return n}return t}#W(e){let{transitionSpeed:t=y.TransitionSpeeds.normal,animationEasing:n=y.AnimationEasings["ease-out"]}=e,o;return typeof t=="number"?o=t:typeof t=="string"&&y.TransitionSpeeds[t]?o=y.TransitionSpeeds[t]:o=y.TransitionSpeeds.normal,{fast:`${Math.round(o*.6)}ms`,normal:`${o}ms`,slow:`${Math.round(o*1.4)}ms`}}#U(e){let{baseZIndex:t=1e3,zIndexStep:n=10}=e;return{dropdown:t.toString(),sticky:(t+n*2).toString(),fixed:(t+n*3).toString(),modal:(t+n*4).toString(),drawer:(t+n*5).toString(),popover:(t+n*6).toString(),tooltip:(t+n*7).toString(),notification:(t+n*8).toString()}}#H(e){let{set:t="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:t,weight:n,defaultSize:`${o}px`,sizes:Object.fromEntries(Object.entries(a).map(([c,d])=>[c,`${d}px`])),spritePath:i,externalPath:s}}#q(e){let t=[];t.push(` /* Colors */
|
|
20
20
|
`);let n=(o,a="")=>{Object.entries(o).forEach(([i,s])=>{typeof s=="object"&&s!==null?n(s,`${a}${i}-`):typeof s=="string"&&t.push(` --color-${a}${i}: ${s};
|
|
21
21
|
`)})};return Object.entries(e).forEach(([o,a])=>{o!=="dark"&&o!=="surfaceSmart"&&o!=="interactive"&&typeof a=="object"&&a!==null&&n(a,`${o}-`)}),e.surfaceSmart&&(t.push(` /* Smart Surface Tokens (context-aware) */
|
|
22
22
|
`),Object.entries(e.surfaceSmart).forEach(([o,a])=>{t.push(` --surface-${o}-bg: ${a.bg};
|
|
@@ -626,7 +626,7 @@ html[data-theme="dark"] .liquid-glass {
|
|
|
626
626
|
|
|
627
627
|
/* Dialog styles moved to #generateDialogStyles() */
|
|
628
628
|
|
|
629
|
-
`}#de(){let{shape:e={},spatialRhythm:t={},inputPadding:n,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:c,buttonMinHeight:d,inputMinHeight:p}=this.options.design,l=typeof e.borderWidth=="number"?e.borderWidth:typeof e.borderWidth=="string"?
|
|
629
|
+
`}#de(){let{shape:e={},spatialRhythm:t={},inputPadding:n,buttonPadding:o,focusRingWidth:a,focusRingOpacity:i,borderWidthThin:s,sectionSpacing:c,buttonMinHeight:d,inputMinHeight:p}=this.options.design,l=typeof e.borderWidth=="number"?e.borderWidth:typeof e.borderWidth=="string"?y.BorderWidths[e.borderWidth]??null:null,u=t.inputPadding??n??.75,g=t.buttonPadding??o??1,m=a||3,f=s||l||y.BorderWidths.thin,h=t.sectionSpacing??c??2,v=d||30;return`/* Mobile-First Form Styles - Generated from Design Config */
|
|
630
630
|
form {
|
|
631
631
|
margin: 0;
|
|
632
632
|
width: 100%;
|
|
@@ -932,7 +932,7 @@ input[type="checkbox"] + label:not(fieldset label):not(label[data-toggle]) {
|
|
|
932
932
|
display: inline-flex;
|
|
933
933
|
align-items: center;
|
|
934
934
|
justify-content: center;
|
|
935
|
-
min-height: calc(${
|
|
935
|
+
min-height: calc(${v}px * 0.75);
|
|
936
936
|
padding: calc(var(--spacing-1) * ${g*.6}) calc(var(--spacing-4) * 0.85);
|
|
937
937
|
border: var(--border-width-medium) solid var(--color-border);
|
|
938
938
|
border-radius: var(--radius-md);
|
|
@@ -1036,7 +1036,7 @@ fieldset[role="group"].buttons {
|
|
|
1036
1036
|
display: inline-flex;
|
|
1037
1037
|
align-items: center;
|
|
1038
1038
|
justify-content: center;
|
|
1039
|
-
min-height: calc(${
|
|
1039
|
+
min-height: calc(${v}px * 0.75);
|
|
1040
1040
|
padding: calc(var(--spacing-1) * ${g*.6}) calc(var(--spacing-4) * 0.85);
|
|
1041
1041
|
border: var(--border-width-medium) solid var(--color-border);
|
|
1042
1042
|
border-radius: var(--radius-md);
|
|
@@ -1342,7 +1342,7 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1342
1342
|
gap: var(--spacing-1);
|
|
1343
1343
|
align-items: center;
|
|
1344
1344
|
justify-content: center;
|
|
1345
|
-
min-height: ${
|
|
1345
|
+
min-height: ${v}px;
|
|
1346
1346
|
padding: calc(var(--spacing-1) * ${g}) var(--spacing-6);
|
|
1347
1347
|
border: var(--border-width-medium) solid transparent;
|
|
1348
1348
|
border-radius: var(--radius-md);
|
|
@@ -1451,20 +1451,20 @@ button, .btn, input[type="submit"], input[type="button"], input[type="reset"] {
|
|
|
1451
1451
|
.btn-sm {
|
|
1452
1452
|
padding: var(--spacing-2) var(--spacing-4);
|
|
1453
1453
|
font-size: var(--font-size-sm);
|
|
1454
|
-
min-height: calc(${
|
|
1454
|
+
min-height: calc(${v}px * 0.8);
|
|
1455
1455
|
}
|
|
1456
1456
|
|
|
1457
1457
|
.btn-xs {
|
|
1458
1458
|
padding: var(--spacing-1) var(--spacing-2);
|
|
1459
1459
|
font-size: var(--font-size-xs);
|
|
1460
|
-
min-height: calc(${
|
|
1460
|
+
min-height: calc(${v}px * 0.6);
|
|
1461
1461
|
}
|
|
1462
1462
|
|
|
1463
1463
|
|
|
1464
1464
|
.btn-lg {
|
|
1465
1465
|
padding: var(--spacing-4) var(--spacing-8);
|
|
1466
1466
|
font-size: var(--font-size-lg);
|
|
1467
|
-
min-height: calc(${
|
|
1467
|
+
min-height: calc(${v}px * 1.2);
|
|
1468
1468
|
}
|
|
1469
1469
|
|
|
1470
1470
|
/* Working/loading state for buttons */
|
|
@@ -2738,7 +2738,7 @@ nav[data-dropdown] {
|
|
|
2738
2738
|
height: auto;
|
|
2739
2739
|
}
|
|
2740
2740
|
|
|
2741
|
-
`}#ke(){let{layout:e={},a11y:t={}}=this.options.design,n=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},o=t.minTouchTarget||
|
|
2741
|
+
`}#ke(){let{layout:e={},a11y:t={}}=this.options.design,n=e.breakpoints||{sm:640,md:768,lg:1024,xl:1280},o=t.minTouchTarget||y.TouchTargetSizes.standard;return`/* Mobile-First Responsive Design */
|
|
2742
2742
|
|
|
2743
2743
|
/* Small devices (${n.sm}px and up) */
|
|
2744
2744
|
@media (min-width: ${n.sm}px) {
|
|
@@ -2858,7 +2858,7 @@ nav[data-dropdown] {
|
|
|
2858
2858
|
${this.#re(e,s)}
|
|
2859
2859
|
}`];return u.push(`
|
|
2860
2860
|
/* Non-layered dark variables fallback (ensures attribute wins) */
|
|
2861
|
-
`),u.push(this.#te(e,s)),u.join("")}#Ce(){let{advanced:e={},a11y:t={},layout:n={}}=this.options.design,o=e.tabSize||
|
|
2861
|
+
`),u.push(this.#te(e,s)),u.join("")}#Ce(){let{advanced:e={},a11y:t={},layout:n={}}=this.options.design,o=e.tabSize||y.TabSizes.standard,a=t.minTouchTarget||y.TouchTargetSizes.standard,i=n.breakpoints||{sm:640,md:768,lg:1024,xl:1280};return`@layer primitives {
|
|
2862
2862
|
/* Base HTML reset */
|
|
2863
2863
|
*, *::before, *::after {
|
|
2864
2864
|
box-sizing: border-box;
|
|
@@ -3483,14 +3483,14 @@ ${this.#ke()}
|
|
|
3483
3483
|
`}#Ee(){this.#o={tokens:new CSSStyleSheet,primitives:new CSSStyleSheet,components:new CSSStyleSheet,utilities:new CSSStyleSheet},this.#Te()}#Te(){this.#o.tokens.replaceSync(this.#e.tokens),this.#o.primitives.replaceSync(this.#e.primitives),this.#o.components.replaceSync(this.#e.components),this.#o.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}
|
|
3484
3484
|
${this.#e.primitives}
|
|
3485
3485
|
${this.#e.components}
|
|
3486
|
-
${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 U<"u"?U:null,enums:typeof
|
|
3486
|
+
${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 U<"u"?U:null,enums:typeof y<"u"?y:null},meta:{generatedAt:new Date().toISOString(),totalSize:(this.#e?.tokens?.length||0)+(this.#e?.primitives?.length||0)+(this.#e?.components?.length||0)+(this.#e?.utilities?.length||0),totalSizeKB:(((this.#e?.tokens?.length||0)+(this.#e?.primitives?.length||0)+(this.#e?.components?.length||0)+(this.#e?.utilities?.length||0))/1024).toFixed(2),layerCount:4,tokenGroups:Object.keys(this.tokens).length},helpers:{getColorScales:()=>{let e=[],t=this.tokens.colors;for(let[n,o]of Object.entries(t))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,t])=>({key:e,value:t})),getTypography:()=>this.tokens.typography,getLayerCSS:e=>{let t=["tokens","primitives","components","utilities"];if(!t.includes(e))throw new Error(`Invalid layer: ${e}. Must be one of ${t.join(", ")}`);return this.#e?.[e]||""},usesEnumValue:(e,t)=>{let n=this.options.design||{};return JSON.stringify(n).includes(t)}}}}get tokensStylesheet(){return this.#o?.tokens}get primitivesStylesheet(){return this.#o?.primitives}get componentsStylesheet(){return this.#o?.components}get utilitiesStylesheet(){return this.#o?.utilities}getCSSModules(){return{"pds-tokens.css.js":this.#l("tokens",this.#e.tokens),"pds-primitives.css.js":this.#l("primitives",this.#e.primitives),"pds-components.css.js":this.#l("components",this.#e.components),"pds-utilities.css.js":this.#l("utilities",this.#e.utilities),"pds-styles.css.js":this.#l("styles",this.layeredCSS)}}#l(e,t){let n=t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$/g,"\\$");return`// Pure Design System - ${e}
|
|
3487
3487
|
// Auto-generated - do not edit directly
|
|
3488
3488
|
|
|
3489
3489
|
export const ${e} = new CSSStyleSheet();
|
|
3490
3490
|
${e}.replaceSync(\`${n}\`);
|
|
3491
3491
|
|
|
3492
3492
|
export const ${e}CSS = \`${n}\`;
|
|
3493
|
-
`}};function sr(r={},e={}){let t=Number(e.minContrast||4.5),n=Number(e.minMutedContrast||3),o=!!e.extendedChecks,a=d=>{let p=String(d||"").replace("#",""),l=p.length===3?p.split("").map(g=>g+g).join(""):p,u=parseInt(l||"0",16);return{r:u>>16&255,g:u>>8&255,b:u&255}},i=d=>{let{r:p,g:l,b:u}=a(d),g=[p/255,l/255,u/255].map(m=>m<=.03928?m/12.92:Math.pow((m+.055)/1.055,2.4));return .2126*g[0]+.7152*g[1]+.0722*g[2]},s=(d,p)=>{if(!d||!p)return 0;let l=i(d),u=i(p),g=Math.max(l,u),m=Math.min(l,u);return(g+.05)/(m+.05)},c=[];try{let p=new V({design:structuredClone(r)}).tokens.colors,l={surfaceBg:p.surface?.base,surfaceText:p.gray?.[900]||"#000000",surfaceTextSecondary:p.gray?.[700]||p.gray?.[800]||p.gray?.[900],surfaceTextMuted:p.gray?.[500]||p.gray?.[600]||p.gray?.[700],surfaceElevated:p.surface?.elevated||p.surface?.base,primaryFill:p.interactive?.light?.fill||p.primary?.[600],primaryText:p.interactive?.light?.text||p.primary?.[600],accentFill:p.accent?.[600]||p.accent?.[500],successFill:p.success?.[600]||p.success?.[500],warningFill:p.warning?.[600]||p.warning?.[500],dangerFill:p.danger?.[600]||p.danger?.[500],infoFill:p.info?.[600]||p.info?.[500]},u=y=>Math.max(s(y,"#ffffff"),s(y,"#000000")),g=s(l.primaryFill,"#ffffff");g<t&&c.push({path:"/colors/primary",message:`Primary button contrast too low in light theme (${g.toFixed(2)} < ${t}). Choose a darker primary.`,ratio:g,min:t,context:"light/btn-primary"});let m=s(l.surfaceBg,l.surfaceText);if(m<t&&c.push({path:"/colors/background",message:`Base text contrast on surface (light) is too low (${m.toFixed(2)} < ${t}). Adjust background or secondary (gray).`,ratio:m,min:t,context:"light/surface-text"}),o){let y=s(l.surfaceBg,l.surfaceTextSecondary);y<t&&c.push({path:"/colors/secondary",message:`Secondary text contrast on base surface (light) is too low (${y.toFixed(2)} < ${t}).`,ratio:y,min:t,context:"light/surface-text-secondary"});let x=s(l.surfaceBg,l.surfaceTextMuted);x<n&&c.push({path:"/colors/secondary",message:`Muted text contrast on base surface (light) is too low (${x.toFixed(2)} < ${n}).`,ratio:x,min:n,context:"light/surface-text-muted"});let w=s(l.surfaceElevated,l.surfaceText);w<t&&c.push({path:"/colors/background",message:`Elevated surface text contrast (light) is too low (${w.toFixed(2)} < ${t}).`,ratio:w,min:t,context:"light/surface-elevated-text"})}let f=s(l.primaryText,l.surfaceBg);f<t&&c.push({path:"/colors/primary",message:`Primary text on surface is too low for outline/link styles (light) (${f.toFixed(2)} < ${t}). Choose a darker primary or lighter surface.`,ratio:f,min:t,context:"light/outline"}),o&&[{path:"/colors/accent",key:"accent",value:l.accentFill},{path:"/colors/success",key:"success",value:l.successFill},{path:"/colors/warning",key:"warning",value:l.warningFill},{path:"/colors/danger",key:"danger",value:l.dangerFill},{path:"/colors/info",key:"info",value:l.infoFill}].forEach(x=>{if(!x?.value)return;let w=u(x.value);w<t&&c.push({path:x.path,message:`${x.key} fill color cannot achieve accessible text contrast (${w.toFixed(2)} < ${t}) with either white or black text.`,ratio:w,min:t,context:`light/${x.key}-fill`})});let h=p.dark;if(h){let y={surfaceBg:h.surface?.base||p.surface?.inverse,surfaceText:h.gray?.[50]||h.gray?.[100]||"#ffffff",surfaceTextMuted:h.gray?.[300]||h.gray?.[400]||h.gray?.[500],primaryFill:p.interactive?.dark?.fill||h.primary?.[600],primaryText:p.interactive?.dark?.text||h.primary?.[600]},x=s(y.primaryFill,"#ffffff");x<t&&c.push({path:"/colors/darkMode/primary",message:`Primary button contrast too low in dark theme (${x.toFixed(2)} < ${t}). Override darkMode.primary or pick a brighter hue.`,ratio:x,min:t,context:"dark/btn-primary"});let w=s(y.primaryText,y.surfaceBg);if(w<t&&c.push({path:"/colors/darkMode/primary",message:`Primary text on surface is too low for outline/link styles (dark) (${w.toFixed(2)} < ${t}). Override darkMode.primary/background.`,ratio:w,min:t,context:"dark/outline"}),o){let k=s(y.surfaceBg,y.surfaceText);k<t&&c.push({path:"/colors/darkMode/background",message:`Base text contrast on surface (dark) is too low (${k.toFixed(2)} < ${t}).`,ratio:k,min:t,context:"dark/surface-text"});let C=s(y.surfaceBg,y.surfaceTextMuted);C<n&&c.push({path:"/colors/darkMode/secondary",message:`Muted text contrast on surface (dark) is too low (${C.toFixed(2)} < ${n}).`,ratio:C,min:n,context:"dark/surface-text-muted"})}}}catch(d){c.push({path:"/",message:`Validation failed: ${String(d?.message||d)}`,ratio:0,min:0})}return{ok:c.length===0,issues:c}}var wt=class{constructor(){this._mode="static",this._staticPaths={tokens:"/assets/pds/styles/pds-tokens.css.js",primitives:"/assets/pds/styles/pds-primitives.css.js",components:"/assets/pds/styles/pds-components.css.js",utilities:"/assets/pds/styles/pds-utilities.css.js",styles:"/assets/pds/styles/pds-styles.css.js"}}setLiveMode(){this._mode="live"}setStaticMode(e={}){this._mode="static",this._staticPaths={...this._staticPaths,...e}}async getStylesheet(e){if(this._mode==="live")return null;try{return(await import(this._staticPaths[e]))[e]}catch(t){console.error(`[PDS Registry] Failed to load static ${e}:`,t),console.error(`[PDS Registry] Looking for: ${this._staticPaths[e]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let n=new CSSStyleSheet;return n.replaceSync("/* Failed to load "+e+" */"),n}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},ge=new wt;function gn(r){try{if(typeof document>"u")return;if(typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype){let n=new CSSStyleSheet;n.replaceSync(r),n._pds=!0;let o=(document.adoptedStyleSheets||[]).filter(a=>a._pds!==!0);document.adoptedStyleSheets=[...o,n];return}let e="pds-runtime-stylesheet",t=document.getElementById(e);if(!t){t=document.createElement("style"),t.id=e,t.type="text/css";let n=document.head||document.getElementsByTagName("head")[0];n?n.appendChild(t):document.documentElement.appendChild(t)}t.textContent=r}catch(e){console.warn("installRuntimeStyles failed:",e)}}function lr(r){let e=r;if(!e||typeof e!="object"){console.error("[Runtime] applyStyles requires an explicit generator instance in live mode");return}let t=e.layeredCSS||e.css||"";if(!t){e.options?.log?.("warn","[Runtime] No CSS available on generator to apply");return}gn(t)}async function We(r,e=[],t=null){try{let n=t?.primitivesStylesheet?t.primitivesStylesheet:await ge.getStylesheet("primitives");r.adoptedStyleSheets=[n,...e]}catch(n){let o=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${o}> failed to adopt primitives:`,n),r.adoptedStyleSheets=e}}async function Ue(r,e=["primitives"],t=[],n=null){try{let a=(await Promise.all(e.map(async i=>{if(n)switch(i){case"tokens":return n.tokensStylesheet;case"primitives":return n.primitivesStylesheet;case"components":return n.componentsStylesheet;case"utilities":return n.utilitiesStylesheet;default:break}return ge.getStylesheet(i)}))).filter(i=>i!==null);r.adoptedStyleSheets=[...a,...t]}catch(o){let a=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${a}> failed to adopt layers:`,o),r.adoptedStyleSheets=t}}function cr(r){let e=new CSSStyleSheet;return e.replaceSync(r),e}var mn=[{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 fn(r){r.dataset.enhancedAccordion||(r.dataset.enhancedAccordion="true",r.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===r&&r.querySelectorAll(":scope > details[open]").forEach(t=>{t!==e.target&&(t.open=!1)})},!0))}function hn(r){if(r.dataset.enhancedDropdown)return;r.dataset.enhancedDropdown="true";let e=r.lastElementChild;if(!e)return;let t=r.querySelector("[data-dropdown-toggle]")||r.querySelector("button");t&&!t.hasAttribute("type")&&t.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`);let n=e.tagName?.toLowerCase()==="menu",o=8;n&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),t&&(t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-expanded","false"));let a=()=>{let $=e.getAttribute("style");e.style.visibility="hidden",e.style.display="inline-block",e.style.pointerEvents="none";let R=e.getBoundingClientRect(),P=Math.max(e.offsetWidth||0,e.scrollWidth||0,R.width||0,1),E=Math.max(e.offsetHeight||0,e.scrollHeight||0,R.height||0,1);return $===null?e.removeAttribute("style"):e.setAttribute("style",$),{width:P,height:E}},i=()=>{let $=(r.getAttribute("data-direction")||r.getAttribute("data-dropdown-direction")||r.getAttribute("data-mode")||"auto").toLowerCase();if($==="up"||$==="down")return $;let R=(t||r).getBoundingClientRect(),{height:P}=a(),E=Math.max(0,window.innerHeight-R.bottom),A=Math.max(0,R.top),N=E>=P,M=A>=P;return N&&!M?"down":M&&!N?"up":N&&M?"down":A>E?"up":"down"},s=()=>{let $=(r.getAttribute("data-align")||r.getAttribute("data-dropdown-align")||"auto").toLowerCase();if($==="left"||$==="right"||$==="start"||$==="end")return $==="start"?"left":$==="end"?"right":$;let R=(t||r).getBoundingClientRect(),{width:P}=a(),E=Math.max(0,window.innerWidth-R.left),A=Math.max(0,R.right),N=E>=P,M=A>=P;return N&&!M?"left":M&&!N?"right":N&&M?"left":A>E?"right":"left"},c=($,R=8)=>{let P=getComputedStyle(r).getPropertyValue($).trim();if(!P)return R;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 A=Number.parseFloat(getComputedStyle(E).height);return E.remove(),Number.isFinite(A)?A:R},d=()=>{e.style.removeProperty("position"),e.style.removeProperty("left"),e.style.removeProperty("top"),e.style.removeProperty("right"),e.style.removeProperty("bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom"),e.style.removeProperty("max-width"),e.style.removeProperty("max-inline-size"),e.style.removeProperty("max-height"),e.style.removeProperty("overflow")},p=()=>{e.getAttribute("aria-hidden")==="false"&&(d(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{l()})}))},l=()=>{if(e.getAttribute("aria-hidden")!=="false")return;let $=(t||r).getBoundingClientRect(),R=window.visualViewport,P=R?.width||document.documentElement?.clientWidth||window.innerWidth,E=R?.height||document.documentElement?.clientHeight||window.innerHeight,A=R?.offsetLeft||0,N=R?.offsetTop||0,M=Math.max(1,P-o*2),v=Math.max(1,E-o*2);e.style.maxWidth=`${Math.round(M)}px`,e.style.maxInlineSize=`${Math.round(M)}px`,e.style.maxHeight=`${Math.round(v)}px`,e.style.overflow="auto";let{width:S,height:z}=a(),T=c("--spacing-2",8),B=i(),D=s();r.dataset.dropdownDirection=B,r.dataset.dropdownAlign=D;let q=D==="right"?$.right-S:$.left;S>=M-1?q=A+o:q=Math.max(A+o,Math.min(q,A+P-S-o));let I=B==="up"?$.top-T-z:$.bottom+T;I=Math.max(N+o,Math.min(I,N+E-z-o)),e.style.position="fixed",e.style.left=`${Math.round(q)}px`,e.style.top=`${Math.round(I)}px`,e.style.right="auto",e.style.bottom="auto",e.style.marginTop="0",e.style.marginBottom="0"},u=null,g=()=>{u||(u=()=>l(),window.addEventListener("resize",u),window.addEventListener("scroll",u,!0))},m=()=>{u&&(window.removeEventListener("resize",u),window.removeEventListener("scroll",u,!0),u=null)},f=null,h=()=>{f||typeof document>"u"||(f=()=>{e.getAttribute("aria-hidden")==="false"&&(r.dataset.dropdownDirection=i(),r.dataset.dropdownAlign=s(),p(),setTimeout(()=>{e.getAttribute("aria-hidden")==="false"&&p()},50),setTimeout(()=>{e.getAttribute("aria-hidden")==="false"&&p()},150))},document.addEventListener("pds:config-changed",f))},y=()=>{!f||typeof document>"u"||(document.removeEventListener("pds:config-changed",f),f=null)},x=null,w=()=>{r.dataset.dropdownDirection=i(),r.dataset.dropdownAlign=s(),e.setAttribute("aria-hidden","false"),t?.setAttribute("aria-expanded","true"),g(),h(),p(),x||(x=$=>{($.composedPath?$.composedPath():[$.target]).some(E=>E===r)||k()},setTimeout(()=>{document.addEventListener("click",x)},0))},k=()=>{e.setAttribute("aria-hidden","true"),t?.setAttribute("aria-expanded","false"),m(),y(),d(),x&&(document.removeEventListener("click",x),x=null)},C=()=>{e.getAttribute("aria-hidden")==="false"?k():w()};t?.addEventListener("click",$=>{$.preventDefault(),$.stopPropagation(),C()}),r.addEventListener("keydown",$=>{$.key==="Escape"&&(k(),t?.focus())}),r.addEventListener("focusout",$=>{$.relatedTarget&&(($.composedPath?$.composedPath():[$.relatedTarget]).some(E=>E===r)||k())})}function bn(r){if(r.dataset.enhancedToggle)return;r.dataset.enhancedToggle="true";let e=r.querySelector('input[type="checkbox"]');if(!e)return;r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.setAttribute("role","switch"),r.setAttribute("aria-checked",e.checked?"true":"false");let t=document.createElement("span");t.className="toggle-switch",t.setAttribute("role","presentation"),t.setAttribute("aria-hidden","true");let n=document.createElement("span");n.className="toggle-knob",t.appendChild(n),r.insertBefore(t,e.nextSibling);let o=()=>{r.setAttribute("aria-checked",e.checked?"true":"false")},a=()=>{e.disabled||(e.checked=!e.checked,o(),e.dispatchEvent(new Event("change",{bubbles:!0})))};r.addEventListener("click",i=>{i.preventDefault(),a()}),r.addEventListener("keydown",i=>{(i.key===" "||i.key==="Enter")&&(i.preventDefault(),a())}),e.addEventListener("change",o)}function yn(r){if(r.dataset.enhancedColorInput)return;let e=r.querySelector('input[type="color"]');if(!e)return;r.dataset.enhancedColorInput="true";let t=r.querySelector(":scope > .color-control"),n=r.querySelector(":scope > .color-control > .color-swatch"),o=r.querySelector(":scope > .color-control > output");t||(t=document.createElement("span"),t.className="color-control",e.before(t)),n||(n=document.createElement("span"),n.className="color-swatch",t.appendChild(n)),e.parentElement!==n&&n.appendChild(e),o||(o=document.createElement("output"),t.appendChild(o));let a=()=>{if(e.dataset.colorUnset==="1"){o.value="",o.textContent="not set",t.dataset.value="",t.dataset.unset="1",n.dataset.unset="1";return}o.value=e.value,o.textContent=e.value,t.dataset.value=e.value,delete t.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 vn(r){if(r.dataset.enhancedRange)return;let e=i=>{if(r.dataset.enhancedRangeProgrammatic)return;r.dataset.enhancedRangeProgrammatic="1";let s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(r),"value")||Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");s?.get&&s?.set&&Object.defineProperty(r,"value",{configurable:!0,enumerable:s.enumerable,get(){return s.get.call(this)},set(d){s.set.call(this,d),i()}}),new MutationObserver(d=>{d.some(l=>{let u=l.attributeName;return u==="value"||u==="min"||u==="max"})&&i()}).observe(r,{attributes:!0,attributeFilter:["value","min","max"]})},t=r.closest("label"),n=t?.classList.contains("range-output"),o=r.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(r.id=o,n){let i=t.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=document.createElement("span");s.className="range-output-wrapper",s.style.display="flex",s.style.justifyContent="space-between",s.style.alignItems="center";let c=document.createElement("span");c.textContent=i.textContent,s.appendChild(c);let d=document.createElement("output");d.id=a,d.setAttribute("for",o),d.style.color="var(--surface-text-secondary, var(--color-text-secondary))",d.style.fontSize="0.875rem",d.textContent=r.value,s.appendChild(d),i.textContent="",i.appendChild(s);let p=()=>{d.textContent=r.value};r.addEventListener("input",p),r.addEventListener("change",p),e(p),p()}}else{let i=r.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",r.parentNode?.insertBefore(i,r),i.appendChild(r)),i.style.position="relative";let s=document.createElement("output");s.id=a,s.setAttribute("for",o),s.className="range-bubble",s.setAttribute("aria-live","polite"),i.appendChild(s);let c=()=>{let l=parseFloat(r.min)||0,u=parseFloat(r.max)||100,g=parseFloat(r.value),m=(g-l)/(u-l);s.style.left=`calc(${m*100}% )`,s.textContent=String(g)},d=()=>s.classList.add("visible"),p=()=>s.classList.remove("visible");r.addEventListener("input",c),r.addEventListener("pointerdown",d),r.addEventListener("pointerup",p),r.addEventListener("pointerleave",p),r.addEventListener("focus",d),r.addEventListener("blur",p),r.addEventListener("change",c),e(c),c()}r.dataset.enhancedRange="1"}function xn(r){if(r.dataset.enhancedRequired)return;r.dataset.enhancedRequired="true";let e=t=>{let n;if(t.closest("[role$=group]")?n=t.closest("[role$=group]").querySelector("legend"):n=t.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=t.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent="* Required fields",i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};r.querySelectorAll("[required]").forEach(t=>{e(t)})}function wn(r){if(r.dataset.enhancedOpenGroup)return;r.dataset.enhancedOpenGroup="true",r.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder="Add item...",e.classList.add("input-text","input-sm"),e.style.width="auto";let t=()=>r.querySelector('input[type="radio"], input[type="checkbox"]');r.appendChild(e),e.addEventListener("keydown",n=>{if(n.key==="Enter"||n.key==="Tab"){let o=e.value.trim();if(o){n.preventDefault();let a=t(),i=a?.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,c=document.createElement("label"),d=document.createElement("span");d.setAttribute("data-label",""),d.textContent=o;let p=document.createElement("input");p.type=i,p.name=a?.name||r.getAttribute("data-name")||"open-group",p.value=o,p.id=s,c.appendChild(d),c.appendChild(p),r.insertBefore(c,e),e.value=""}}else if(n.key==="Backspace"&&e.value===""){n.preventDefault();let o=r.querySelectorAll("label");o.length>0&&o[o.length-1].remove()}})}function kn(r){if(r.dataset.enhancedClip)return;r.dataset.enhancedClip="true",r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.hasAttribute("role")||r.setAttribute("role","button");let e=()=>{let n=r.getAttribute("data-clip-open")==="true";r.setAttribute("aria-expanded",n?"true":"false")},t=()=>{let n=r.getAttribute("data-clip-open")==="true";r.setAttribute("data-clip-open",n?"false":"true"),e()};r.addEventListener("click",n=>{n.defaultPrevented||t()}),r.addEventListener("keydown",n=>{(n.key===" "||n.key==="Enter")&&(n.preventDefault(),t())}),e()}function Sn(r){if(r.dataset.enhancedBtnWorking)return;r.dataset.enhancedBtnWorking="true";let e=null,t=!1;new MutationObserver(o=>{o.forEach(a=>{if(a.attributeName==="class"){let i=r.classList.contains("btn-working"),s=r.querySelector("pds-icon");if(i)if(s)e||(e=s.getAttribute("icon")),s.setAttribute("icon","circle-notch");else{let c=document.createElement("pds-icon");c.setAttribute("icon","circle-notch"),c.setAttribute("size","sm"),r.insertBefore(c,r.firstChild),t=!0}else a.oldValue?.includes("btn-working")&&s&&(t?(s.remove(),t=!1):e&&(s.setAttribute("icon",e),e=null))}})}).observe(r,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var $n=new Map([[".accordion",fn],["nav[data-dropdown]",hn],["label[data-toggle]",bn],["label[data-color]",yn],['input[type="range"]',vn],["form[data-required]",xn],["fieldset[role=group][data-open]",wn],["[data-clip]",kn],["button, a[class*='btn-']",Sn]]),dr=mn.map(r=>({...r,run:$n.get(r.selector)||(()=>{})}));var pr=[{selector:".accordion",description:"Ensures only one <details> element can be open at a time within the accordion.",demoHtml:`
|
|
3493
|
+
`}};function sr(r={},e={}){let t=Number(e.minContrast||4.5),n=Number(e.minMutedContrast||3),o=!!e.extendedChecks,a=d=>{let p=String(d||"").replace("#",""),l=p.length===3?p.split("").map(g=>g+g).join(""):p,u=parseInt(l||"0",16);return{r:u>>16&255,g:u>>8&255,b:u&255}},i=d=>{let{r:p,g:l,b:u}=a(d),g=[p/255,l/255,u/255].map(m=>m<=.03928?m/12.92:Math.pow((m+.055)/1.055,2.4));return .2126*g[0]+.7152*g[1]+.0722*g[2]},s=(d,p)=>{if(!d||!p)return 0;let l=i(d),u=i(p),g=Math.max(l,u),m=Math.min(l,u);return(g+.05)/(m+.05)},c=[];try{let p=new V({design:structuredClone(r)}).tokens.colors,l={surfaceBg:p.surface?.base,surfaceText:p.gray?.[900]||"#000000",surfaceTextSecondary:p.gray?.[700]||p.gray?.[800]||p.gray?.[900],surfaceTextMuted:p.gray?.[500]||p.gray?.[600]||p.gray?.[700],surfaceElevated:p.surface?.elevated||p.surface?.base,primaryFill:p.interactive?.light?.fill||p.primary?.[600],primaryText:p.interactive?.light?.text||p.primary?.[600],accentFill:p.accent?.[600]||p.accent?.[500],successFill:p.success?.[600]||p.success?.[500],warningFill:p.warning?.[600]||p.warning?.[500],dangerFill:p.danger?.[600]||p.danger?.[500],infoFill:p.info?.[600]||p.info?.[500]},u=v=>Math.max(s(v,"#ffffff"),s(v,"#000000")),g=s(l.primaryFill,"#ffffff");g<t&&c.push({path:"/colors/primary",message:`Primary button contrast too low in light theme (${g.toFixed(2)} < ${t}). Choose a darker primary.`,ratio:g,min:t,context:"light/btn-primary"});let m=s(l.surfaceBg,l.surfaceText);if(m<t&&c.push({path:"/colors/background",message:`Base text contrast on surface (light) is too low (${m.toFixed(2)} < ${t}). Adjust background or secondary (gray).`,ratio:m,min:t,context:"light/surface-text"}),o){let v=s(l.surfaceBg,l.surfaceTextSecondary);v<t&&c.push({path:"/colors/secondary",message:`Secondary text contrast on base surface (light) is too low (${v.toFixed(2)} < ${t}).`,ratio:v,min:t,context:"light/surface-text-secondary"});let w=s(l.surfaceBg,l.surfaceTextMuted);w<n&&c.push({path:"/colors/secondary",message:`Muted text contrast on base surface (light) is too low (${w.toFixed(2)} < ${n}).`,ratio:w,min:n,context:"light/surface-text-muted"});let b=s(l.surfaceElevated,l.surfaceText);b<t&&c.push({path:"/colors/background",message:`Elevated surface text contrast (light) is too low (${b.toFixed(2)} < ${t}).`,ratio:b,min:t,context:"light/surface-elevated-text"})}let f=s(l.primaryText,l.surfaceBg);f<t&&c.push({path:"/colors/primary",message:`Primary text on surface is too low for outline/link styles (light) (${f.toFixed(2)} < ${t}). Choose a darker primary or lighter surface.`,ratio:f,min:t,context:"light/outline"}),o&&[{path:"/colors/accent",key:"accent",value:l.accentFill},{path:"/colors/success",key:"success",value:l.successFill},{path:"/colors/warning",key:"warning",value:l.warningFill},{path:"/colors/danger",key:"danger",value:l.dangerFill},{path:"/colors/info",key:"info",value:l.infoFill}].forEach(w=>{if(!w?.value)return;let b=u(w.value);b<t&&c.push({path:w.path,message:`${w.key} fill color cannot achieve accessible text contrast (${b.toFixed(2)} < ${t}) with either white or black text.`,ratio:b,min:t,context:`light/${w.key}-fill`})});let h=p.dark;if(h){let v={surfaceBg:h.surface?.base||p.surface?.inverse,surfaceText:h.gray?.[50]||h.gray?.[100]||"#ffffff",surfaceTextMuted:h.gray?.[300]||h.gray?.[400]||h.gray?.[500],primaryFill:p.interactive?.dark?.fill||h.primary?.[600],primaryText:p.interactive?.dark?.text||h.primary?.[600]},w=s(v.primaryFill,"#ffffff");w<t&&c.push({path:"/colors/darkMode/primary",message:`Primary button contrast too low in dark theme (${w.toFixed(2)} < ${t}). Override darkMode.primary or pick a brighter hue.`,ratio:w,min:t,context:"dark/btn-primary"});let b=s(v.primaryText,v.surfaceBg);if(b<t&&c.push({path:"/colors/darkMode/primary",message:`Primary text on surface is too low for outline/link styles (dark) (${b.toFixed(2)} < ${t}). Override darkMode.primary/background.`,ratio:b,min:t,context:"dark/outline"}),o){let S=s(v.surfaceBg,v.surfaceText);S<t&&c.push({path:"/colors/darkMode/background",message:`Base text contrast on surface (dark) is too low (${S.toFixed(2)} < ${t}).`,ratio:S,min:t,context:"dark/surface-text"});let R=s(v.surfaceBg,v.surfaceTextMuted);R<n&&c.push({path:"/colors/darkMode/secondary",message:`Muted text contrast on surface (dark) is too low (${R.toFixed(2)} < ${n}).`,ratio:R,min:n,context:"dark/surface-text-muted"})}}}catch(d){c.push({path:"/",message:`Validation failed: ${String(d?.message||d)}`,ratio:0,min:0})}return{ok:c.length===0,issues:c}}var wt=class{constructor(){this._mode="static",this._staticPaths={tokens:"/assets/pds/styles/pds-tokens.css.js",primitives:"/assets/pds/styles/pds-primitives.css.js",components:"/assets/pds/styles/pds-components.css.js",utilities:"/assets/pds/styles/pds-utilities.css.js",styles:"/assets/pds/styles/pds-styles.css.js"}}setLiveMode(){this._mode="live"}setStaticMode(e={}){this._mode="static",this._staticPaths={...this._staticPaths,...e}}async getStylesheet(e){if(this._mode==="live")return null;try{return(await import(this._staticPaths[e]))[e]}catch(t){console.error(`[PDS Registry] Failed to load static ${e}:`,t),console.error(`[PDS Registry] Looking for: ${this._staticPaths[e]}`),console.error("[PDS Registry] Make sure you've run 'npm run pds:build' and configured PDS.start() with the correct static.root path");let n=new CSSStyleSheet;return n.replaceSync("/* Failed to load "+e+" */"),n}}get mode(){return this._mode}get isLive(){return this._mode==="live"}},ge=new wt;function gn(r){try{if(typeof document>"u")return;if(typeof CSSStyleSheet<"u"&&"adoptedStyleSheets"in Document.prototype){let n=new CSSStyleSheet;n.replaceSync(r),n._pds=!0;let o=(document.adoptedStyleSheets||[]).filter(a=>a._pds!==!0);document.adoptedStyleSheets=[...o,n];return}let e="pds-runtime-stylesheet",t=document.getElementById(e);if(!t){t=document.createElement("style"),t.id=e,t.type="text/css";let n=document.head||document.getElementsByTagName("head")[0];n?n.appendChild(t):document.documentElement.appendChild(t)}t.textContent=r}catch(e){console.warn("installRuntimeStyles failed:",e)}}function lr(r){let e=r;if(!e||typeof e!="object"){console.error("[Runtime] applyStyles requires an explicit generator instance in live mode");return}let t=e.layeredCSS||e.css||"";if(!t){e.options?.log?.("warn","[Runtime] No CSS available on generator to apply");return}gn(t)}async function We(r,e=[],t=null){try{let n=t?.primitivesStylesheet?t.primitivesStylesheet:await ge.getStylesheet("primitives");r.adoptedStyleSheets=[n,...e]}catch(n){let o=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${o}> failed to adopt primitives:`,n),r.adoptedStyleSheets=e}}async function Ue(r,e=["primitives"],t=[],n=null){try{let a=(await Promise.all(e.map(async i=>{if(n)switch(i){case"tokens":return n.tokensStylesheet;case"primitives":return n.primitivesStylesheet;case"components":return n.componentsStylesheet;case"utilities":return n.utilitiesStylesheet;default:break}return ge.getStylesheet(i)}))).filter(i=>i!==null);r.adoptedStyleSheets=[...a,...t]}catch(o){let a=r.host?.tagName?.toLowerCase()||"unknown";console.error(`[PDS Adopter] <${a}> failed to adopt layers:`,o),r.adoptedStyleSheets=t}}function cr(r){let e=new CSSStyleSheet;return e.replaceSync(r),e}var mn=[{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 fn(r){r.dataset.enhancedAccordion||(r.dataset.enhancedAccordion="true",r.addEventListener("toggle",e=>{e.target.open&&e.target.parentElement===r&&r.querySelectorAll(":scope > details[open]").forEach(t=>{t!==e.target&&(t.open=!1)})},!0))}function hn(r){if(r.dataset.enhancedDropdown)return;r.dataset.enhancedDropdown="true";let e=r.lastElementChild;if(!e)return;let t=r.querySelector("[data-dropdown-toggle]")||r.querySelector("button");t&&!t.hasAttribute("type")&&t.setAttribute("type","button"),e.id||(e.id=`dropdown-${Math.random().toString(36).slice(2,9)}`);let n=e.tagName?.toLowerCase()==="menu",o=8;n&&!e.hasAttribute("role")&&e.setAttribute("role","menu"),e.hasAttribute("aria-hidden")||e.setAttribute("aria-hidden","true"),t&&(t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-expanded","false"));let a=()=>{let $=e.getAttribute("style");e.style.visibility="hidden",e.style.display="inline-block",e.style.pointerEvents="none";let L=e.getBoundingClientRect(),P=Math.max(e.offsetWidth||0,e.scrollWidth||0,L.width||0,1),z=Math.max(e.offsetHeight||0,e.scrollHeight||0,L.height||0,1);return $===null?e.removeAttribute("style"):e.setAttribute("style",$),{width:P,height:z}},i=()=>{let $=(r.getAttribute("data-direction")||r.getAttribute("data-dropdown-direction")||r.getAttribute("data-mode")||"auto").toLowerCase();if($==="up"||$==="down")return $;let L=(t||r).getBoundingClientRect(),{height:P}=a(),z=Math.max(0,window.innerHeight-L.bottom),T=Math.max(0,L.top),N=z>=P,C=T>=P;return N&&!C?"down":C&&!N?"up":N&&C?"down":T>z?"up":"down"},s=()=>{let $=(r.getAttribute("data-align")||r.getAttribute("data-dropdown-align")||"auto").toLowerCase();if($==="left"||$==="right"||$==="start"||$==="end")return $==="start"?"left":$==="end"?"right":$;let L=(t||r).getBoundingClientRect(),{width:P}=a(),z=Math.max(0,window.innerWidth-L.left),T=Math.max(0,L.right),N=z>=P,C=T>=P;return N&&!C?"left":C&&!N?"right":N&&C?"left":T>z?"right":"left"},c=($,L=8)=>{let P=getComputedStyle(r).getPropertyValue($).trim();if(!P)return L;let z=document.createElement("span");z.style.position="fixed",z.style.visibility="hidden",z.style.pointerEvents="none",z.style.height=P,document.body.appendChild(z);let T=Number.parseFloat(getComputedStyle(z).height);return z.remove(),Number.isFinite(T)?T:L},d=()=>{e.style.removeProperty("position"),e.style.removeProperty("left"),e.style.removeProperty("top"),e.style.removeProperty("right"),e.style.removeProperty("bottom"),e.style.removeProperty("margin-top"),e.style.removeProperty("margin-bottom"),e.style.removeProperty("max-width"),e.style.removeProperty("max-inline-size"),e.style.removeProperty("max-height"),e.style.removeProperty("overflow")},p=()=>{e.getAttribute("aria-hidden")==="false"&&(d(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{l()})}))},l=()=>{if(e.getAttribute("aria-hidden")!=="false")return;let $=(t||r).getBoundingClientRect(),L=window.visualViewport,P=L?.width||document.documentElement?.clientWidth||window.innerWidth,z=L?.height||document.documentElement?.clientHeight||window.innerHeight,T=L?.offsetLeft||0,N=L?.offsetTop||0,C=Math.max(1,P-o*2),x=Math.max(1,z-o*2);e.style.maxWidth=`${Math.round(C)}px`,e.style.maxInlineSize=`${Math.round(C)}px`,e.style.maxHeight=`${Math.round(x)}px`,e.style.overflow="auto";let{width:k,height:M}=a(),E=c("--spacing-2",8),B=i(),D=s();r.dataset.dropdownDirection=B,r.dataset.dropdownAlign=D;let q=D==="right"?$.right-k:$.left;k>=C-1?q=T+o:q=Math.max(T+o,Math.min(q,T+P-k-o));let I=B==="up"?$.top-E-M:$.bottom+E;I=Math.max(N+o,Math.min(I,N+z-M-o)),e.style.position="fixed",e.style.left=`${Math.round(q)}px`,e.style.top=`${Math.round(I)}px`,e.style.right="auto",e.style.bottom="auto",e.style.marginTop="0",e.style.marginBottom="0"},u=null,g=()=>{u||(u=()=>l(),window.addEventListener("resize",u),window.addEventListener("scroll",u,!0))},m=()=>{u&&(window.removeEventListener("resize",u),window.removeEventListener("scroll",u,!0),u=null)},f=null,h=()=>{f||typeof document>"u"||(f=()=>{e.getAttribute("aria-hidden")==="false"&&(r.dataset.dropdownDirection=i(),r.dataset.dropdownAlign=s(),p(),setTimeout(()=>{e.getAttribute("aria-hidden")==="false"&&p()},50),setTimeout(()=>{e.getAttribute("aria-hidden")==="false"&&p()},150))},document.addEventListener("pds:config-changed",f))},v=()=>{!f||typeof document>"u"||(document.removeEventListener("pds:config-changed",f),f=null)},w=null,b=()=>{r.dataset.dropdownDirection=i(),r.dataset.dropdownAlign=s(),e.setAttribute("aria-hidden","false"),t?.setAttribute("aria-expanded","true"),g(),h(),p(),w||(w=$=>{($.composedPath?$.composedPath():[$.target]).some(z=>z===r)||S()},setTimeout(()=>{document.addEventListener("click",w)},0))},S=()=>{e.setAttribute("aria-hidden","true"),t?.setAttribute("aria-expanded","false"),m(),v(),d(),w&&(document.removeEventListener("click",w),w=null)},R=()=>{e.getAttribute("aria-hidden")==="false"?S():b()};t?.addEventListener("click",$=>{$.preventDefault(),$.stopPropagation(),R()}),r.addEventListener("keydown",$=>{$.key==="Escape"&&(S(),t?.focus())}),r.addEventListener("focusout",$=>{$.relatedTarget&&(($.composedPath?$.composedPath():[$.relatedTarget]).some(z=>z===r)||S())})}function bn(r){if(r.dataset.enhancedToggle)return;r.dataset.enhancedToggle="true";let e=r.querySelector('input[type="checkbox"]');if(!e)return;r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.setAttribute("role","switch"),r.setAttribute("aria-checked",e.checked?"true":"false");let t=document.createElement("span");t.className="toggle-switch",t.setAttribute("role","presentation"),t.setAttribute("aria-hidden","true");let n=document.createElement("span");n.className="toggle-knob",t.appendChild(n),r.insertBefore(t,e.nextSibling);let o=()=>{r.setAttribute("aria-checked",e.checked?"true":"false")},a=()=>{e.disabled||(e.checked=!e.checked,o(),e.dispatchEvent(new Event("change",{bubbles:!0})))};r.addEventListener("click",i=>{i.preventDefault(),a()}),r.addEventListener("keydown",i=>{(i.key===" "||i.key==="Enter")&&(i.preventDefault(),a())}),e.addEventListener("change",o)}function yn(r){if(r.dataset.enhancedColorInput)return;let e=r.querySelector('input[type="color"]');if(!e)return;r.dataset.enhancedColorInput="true";let t=r.querySelector(":scope > .color-control"),n=r.querySelector(":scope > .color-control > .color-swatch"),o=r.querySelector(":scope > .color-control > output");t||(t=document.createElement("span"),t.className="color-control",e.before(t)),n||(n=document.createElement("span"),n.className="color-swatch",t.appendChild(n)),e.parentElement!==n&&n.appendChild(e),o||(o=document.createElement("output"),t.appendChild(o));let a=()=>{if(e.dataset.colorUnset==="1"){o.value="",o.textContent="not set",t.dataset.value="",t.dataset.unset="1",n.dataset.unset="1";return}o.value=e.value,o.textContent=e.value,t.dataset.value=e.value,delete t.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 vn(r){if(r.dataset.enhancedRange)return;let e=i=>{if(r.dataset.enhancedRangeProgrammatic)return;r.dataset.enhancedRangeProgrammatic="1";let s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(r),"value")||Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,"value");s?.get&&s?.set&&Object.defineProperty(r,"value",{configurable:!0,enumerable:s.enumerable,get(){return s.get.call(this)},set(d){s.set.call(this,d),i()}}),new MutationObserver(d=>{d.some(l=>{let u=l.attributeName;return u==="value"||u==="min"||u==="max"})&&i()}).observe(r,{attributes:!0,attributeFilter:["value","min","max"]})},t=r.closest("label"),n=t?.classList.contains("range-output"),o=r.id||`range-${Math.random().toString(36).substring(2,11)}`,a=`${o}-output`;if(r.id=o,n){let i=t.querySelector("span");if(i&&!i.classList.contains("range-output-wrapper")){let s=document.createElement("span");s.className="range-output-wrapper",s.style.display="flex",s.style.justifyContent="space-between",s.style.alignItems="center";let c=document.createElement("span");c.textContent=i.textContent,s.appendChild(c);let d=document.createElement("output");d.id=a,d.setAttribute("for",o),d.style.color="var(--surface-text-secondary, var(--color-text-secondary))",d.style.fontSize="0.875rem",d.textContent=r.value,s.appendChild(d),i.textContent="",i.appendChild(s);let p=()=>{d.textContent=r.value};r.addEventListener("input",p),r.addEventListener("change",p),e(p),p()}}else{let i=r.closest(".range-container");i||(i=document.createElement("div"),i.className="range-container",r.parentNode?.insertBefore(i,r),i.appendChild(r)),i.style.position="relative";let s=document.createElement("output");s.id=a,s.setAttribute("for",o),s.className="range-bubble",s.setAttribute("aria-live","polite"),i.appendChild(s);let c=()=>{let l=parseFloat(r.min)||0,u=parseFloat(r.max)||100,g=parseFloat(r.value),m=(g-l)/(u-l);s.style.left=`calc(${m*100}% )`,s.textContent=String(g)},d=()=>s.classList.add("visible"),p=()=>s.classList.remove("visible");r.addEventListener("input",c),r.addEventListener("pointerdown",d),r.addEventListener("pointerup",p),r.addEventListener("pointerleave",p),r.addEventListener("focus",d),r.addEventListener("blur",p),r.addEventListener("change",c),e(c),c()}r.dataset.enhancedRange="1"}function xn(r){if(r.dataset.enhancedRequired)return;r.dataset.enhancedRequired="true";let e=t=>{let n;if(t.closest("[role$=group]")?n=t.closest("[role$=group]").querySelector("legend"):n=t.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=t.closest("form");if(i&&!i.querySelector(".required-legend")){let s=document.createElement("small");s.classList.add("required-legend"),s.textContent="* Required fields",i.insertBefore(s,i.querySelector(".form-actions")||i.lastElementChild)}};r.querySelectorAll("[required]").forEach(t=>{e(t)})}function wn(r){if(r.dataset.enhancedOpenGroup)return;r.dataset.enhancedOpenGroup="true",r.classList.add("flex","flex-wrap","buttons");let e=document.createElement("input");e.type="text",e.placeholder="Add item...",e.classList.add("input-text","input-sm"),e.style.width="auto";let t=()=>r.querySelector('input[type="radio"], input[type="checkbox"]');r.appendChild(e),e.addEventListener("keydown",n=>{if(n.key==="Enter"||n.key==="Tab"){let o=e.value.trim();if(o){n.preventDefault();let a=t(),i=a?.type==="radio"?"radio":"checkbox",s=`open-group-${Math.random().toString(36).substring(2,11)}`,c=document.createElement("label"),d=document.createElement("span");d.setAttribute("data-label",""),d.textContent=o;let p=document.createElement("input");p.type=i,p.name=a?.name||r.getAttribute("data-name")||"open-group",p.value=o,p.id=s,c.appendChild(d),c.appendChild(p),r.insertBefore(c,e),e.value=""}}else if(n.key==="Backspace"&&e.value===""){n.preventDefault();let o=r.querySelectorAll("label");o.length>0&&o[o.length-1].remove()}})}function kn(r){if(r.dataset.enhancedClip)return;r.dataset.enhancedClip="true",r.hasAttribute("tabindex")||r.setAttribute("tabindex","0"),r.hasAttribute("role")||r.setAttribute("role","button");let e=()=>{let n=r.getAttribute("data-clip-open")==="true";r.setAttribute("aria-expanded",n?"true":"false")},t=()=>{let n=r.getAttribute("data-clip-open")==="true";r.setAttribute("data-clip-open",n?"false":"true"),e()};r.addEventListener("click",n=>{n.defaultPrevented||t()}),r.addEventListener("keydown",n=>{(n.key===" "||n.key==="Enter")&&(n.preventDefault(),t())}),e()}function Sn(r){if(r.dataset.enhancedBtnWorking)return;r.dataset.enhancedBtnWorking="true";let e=null,t=!1;new MutationObserver(o=>{o.forEach(a=>{if(a.attributeName==="class"){let i=r.classList.contains("btn-working"),s=r.querySelector("pds-icon");if(i)if(s)e||(e=s.getAttribute("icon")),s.setAttribute("icon","circle-notch");else{let c=document.createElement("pds-icon");c.setAttribute("icon","circle-notch"),c.setAttribute("size","sm"),r.insertBefore(c,r.firstChild),t=!0}else a.oldValue?.includes("btn-working")&&s&&(t?(s.remove(),t=!1):e&&(s.setAttribute("icon",e),e=null))}})}).observe(r,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0})}var $n=new Map([[".accordion",fn],["nav[data-dropdown]",hn],["label[data-toggle]",bn],["label[data-color]",yn],['input[type="range"]',vn],["form[data-required]",xn],["fieldset[role=group][data-open]",wn],["[data-clip]",kn],["button, a[class*='btn-']",Sn]]),dr=mn.map(r=>({...r,run:$n.get(r.selector)||(()=>{})}));var pr=[{selector:".accordion",description:"Ensures only one <details> element can be open at a time within the accordion.",demoHtml:`
|
|
3494
3494
|
<div class="accordion">
|
|
3495
3495
|
<details>
|
|
3496
3496
|
<summary>Section 1</summary>
|
|
@@ -3558,8 +3558,8 @@ export const ${e}CSS = \`${n}\`;
|
|
|
3558
3558
|
<button class="btn-primary btn-working">
|
|
3559
3559
|
<span>Saving</span>
|
|
3560
3560
|
</button>
|
|
3561
|
-
`.trim()}];var gr="pds",Cn=/^([a-z][a-z0-9+\-.]*:)?\/\//i,ur=/^[a-z]:/i;function Te(r=""){return r.endsWith("/")?r:`${r}/`}function Mn(r="",e=gr){let t=r.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(t)?t:`${t}/${e}`}function zn(r){return r.replace(/^\.\/+/,"")}function En(r){return ur.test(r)?r.replace(ur,"").replace(/^\/+/,""):r}function Tn(r){return r.startsWith("public/")?r.substring(7):r}function me(r,e={}){let t=e.segment||gr,n=e.defaultRoot||`/assets/${t}/`,o=r?.public&&r.public?.root||r?.static&&r.static?.root||null;if(!o||typeof o!="string")return Te(n);let a=o.trim();return a?(a=a.replace(/\\/g,"/"),a=Mn(a,t),a=Te(a),Cn.test(a)?a:(a=zn(a),a=En(a),a.startsWith("/")||(a=Tn(a),a.startsWith("/")||(a=`/${a}`),a=a.replace(/\/+/g,(i,s)=>s===0?i:"/")),Te(a))):Te(n)}function mr(r){let e=r.replace(/['"]/g,"").trim();if(["system-ui","-apple-system","sans-serif","serif","monospace","cursive","fantasy","ui-sans-serif","ui-serif","ui-monospace","ui-rounded"].includes(e.toLowerCase()))return!0;let o=document.createElement("canvas").getContext("2d");if(!o)return!1;let a="mmmmmmmmmmlli",i="72px",s="monospace";o.font=`${i} ${s}`;let c=o.measureText(a).width;o.font=`${i} "${e}", ${s}`;let d=o.measureText(a).width;return c!==d}function An(r){return r?r.split(",").map(n=>n.trim())[0].replace(/['"]/g,"").trim():null}async function fr(r,e={}){if(!r)return Promise.resolve();let{weights:t=[400,500,600,700],italic:n=!1}=e,o=An(r);if(!o||mr(o))return Promise.resolve();let a=encodeURIComponent(o);return document.querySelector(`link[href*="fonts.googleapis.com"][href*="${a}"]`)?(console.log(`Font "${o}" is already loading or loaded`),Promise.resolve()):(console.log(`Loading font "${o}" from Google Fonts...`),new Promise((s,c)=>{let d=document.createElement("link");d.rel="stylesheet";let p=n?`ital,wght@0,${t.join(";0,")};1,${t.join(";1,")}`:`wght@${t.join(";")}`;d.href=`https://fonts.googleapis.com/css2?family=${a}:${p}&display=swap`,d.setAttribute("data-font-loader",o),d.onload=()=>{console.log(`Successfully loaded font "${o}"`),s()},d.onerror=()=>{console.warn(`Failed to load font "${o}" from Google Fonts`),c(new Error(`Failed to load font: ${o}`))},document.head.appendChild(d),setTimeout(()=>{mr(o)||console.warn(`Font "${o}" did not load within timeout`),s()},5e3)}))}async function kt(r){if(!r)return Promise.resolve();let e=new Set;r.fontFamilyHeadings&&e.add(r.fontFamilyHeadings),r.fontFamilyBody&&e.add(r.fontFamilyBody),r.fontFamilyMono&&e.add(r.fontFamilyMono);let t=Array.from(e).map(n=>fr(n).catch(o=>{console.warn(`Could not load font: ${n}`,o)}));await Promise.all(t)}async function Ln(...r){let e={};r.length&&typeof r[r.length-1]=="object"&&(e=r.pop()||{});let t=r,{baseURL:n,mapper:o=d=>`${d}.js`,onError:a=(d,p)=>console.error(`[defineWebComponents] ${d}:`,p)}=e,i=n?new URL(n,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),s=d=>d.toLowerCase().replace(/(^|-)([a-z])/g,(p,l,u)=>u.toUpperCase()),c=async d=>{try{if(customElements.get(d))return{tag:d,status:"already-defined"};let p=o(d),u=await import(p instanceof URL?p.href:new URL(p,i).href),g=u?.default??u?.[s(d)];if(!g){if(customElements.get(d))return{tag:d,status:"self-defined"};throw new Error(`No export found for ${d}. Expected default export or named export "${s(d)}".`)}return customElements.get(d)?{tag:d,status:"race-already-defined"}:(customElements.define(d,g),{tag:d,status:"defined"})}catch(p){throw a(d,p),p}};return Promise.all(t.map(c))}var He=class{constructor(e={}){let{baseURL:t,mapper:n,onError:o,predicate:a=()=>!0,attributeModule:i="data-module",root:s=document,scanExisting:c=!0,debounceMs:d=16,observeShadows:p=!0,enhancers:l=[],patchAttachShadow:u=!0}=e,g=new Set,m=new Set,f=new Set,h=new Map,y=new WeakMap,x=new WeakMap,w=0,k=!1,C=null,$=S=>{if(!S||!l.length)return;let z=x.get(S);z||(z=new Set,x.set(S,z));for(let T of l)if(!(!T.selector||!T.run)&&!z.has(T.selector))try{S.matches&&S.matches(T.selector)&&(T.run(S),z.add(T.selector))}catch(B){console.warn(`[AutoDefiner] Error applying enhancer for selector "${T.selector}":`,B)}},R=(S,z)=>{if(!k&&!(!S||!S.includes("-"))&&!customElements.get(S)&&!m.has(S)&&!f.has(S)){if(z&&z.getAttribute){let T=z.getAttribute(i);T&&!h.has(S)&&h.set(S,T)}g.add(S),P()}},P=()=>{w||(w=setTimeout(N,d))},E=S=>{if(S){if(S.nodeType===1){let z=S,T=z.tagName?.toLowerCase();T&&T.includes("-")&&!customElements.get(T)&&a(T,z)&&R(T,z),$(z),p&&z.shadowRoot&&A(z.shadowRoot)}S.querySelectorAll&&S.querySelectorAll("*").forEach(z=>{let T=z.tagName?.toLowerCase();T&&T.includes("-")&&!customElements.get(T)&&a(T,z)&&R(T,z),$(z),p&&z.shadowRoot&&A(z.shadowRoot)})}},A=S=>{if(!S||y.has(S))return;E(S);let z=new MutationObserver(T=>{for(let B of T)B.addedNodes?.forEach(D=>{E(D)}),B.type==="attributes"&&B.target&&E(B.target)});z.observe(S,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...l.map(T=>T.selector).filter(T=>T.startsWith("data-"))]}),y.set(S,z)};async function N(){if(clearTimeout(w),w=0,!g.size)return;let S=Array.from(g);g.clear(),S.forEach(z=>m.add(z));try{let z=T=>h.get(T)??(n?n(T):`${T}.js`);await Ln(...S,{baseURL:t,mapper:z,onError:(T,B)=>{f.add(T),o?.(T,B)}})}catch{}finally{S.forEach(z=>m.delete(z))}}let M=s===document?document.documentElement:s,v=new MutationObserver(S=>{for(let z of S)z.addedNodes?.forEach(T=>{E(T)}),z.type==="attributes"&&z.target&&E(z.target)});if(v.observe(M,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...l.map(S=>S.selector).filter(S=>S.startsWith("data-"))]}),p&&u&&Element.prototype.attachShadow){let S=Element.prototype.attachShadow;Element.prototype.attachShadow=function(T){let B=S.call(this,T);if(T&&T.mode==="open"){A(B);let D=this.tagName?.toLowerCase();D&&D.includes("-")&&!customElements.get(D)&&R(D,this)}return B},C=()=>Element.prototype.attachShadow=S}return c&&E(M),{stop(){k=!0,v.disconnect(),C&&C(),w&&(clearTimeout(w),w=0),y.forEach(S=>S.disconnect())},flush:N}}static async define(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let n=e,{baseURL:o,mapper:a=p=>`${p}.js`,onError:i=(p,l)=>console.error(`[defineWebComponents] ${p}:`,l)}=t,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),c=p=>p.toLowerCase().replace(/(^|-)([a-z])/g,(l,u,g)=>g.toUpperCase()),d=async p=>{try{if(customElements.get(p))return{tag:p,status:"already-defined"};let l=a(p),g=await import(l instanceof URL?l.href:new URL(l,s).href),m=g?.default??g?.[c(p)];if(!m){if(customElements.get(p))return{tag:p,status:"self-defined"};throw new Error(`No export found for ${p}. Expected default export or named export "${c(p)}".`)}return customElements.get(p)?{tag:p,status:"race-already-defined"}:(customElements.define(p,m),{tag:p,status:"defined"})}catch(l){throw i(p,l),l}};return Promise.all(n.map(d))}};var Rn=/^[a-z][a-z0-9+\-.]*:\/\//i,Ae=(()=>{try{return import.meta.url}catch{return}})(),fe=r=>typeof r=="string"&&r.length&&!r.endsWith("/")?`${r}/`:r;function he(r,e={}){if(!r||Rn.test(r))return r;let{preferModule:t=!0}=e,n=()=>{if(!Ae)return null;try{return new URL(r,Ae).href}catch{return null}},o=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(r,window.location.origin).href}catch{return null}};return(t?n()||o():o()||n())||r}var hr=(()=>{if(Ae)try{let r=new URL(Ae);if(/\/public\/assets\/js\//.test(r.pathname))return new URL("../pds/",Ae).href}catch{return}})(),br=!1;function qe(r){br||typeof document>"u"||(br=!0,r.addEventListener("pds:ready",e=>{let t=e.detail?.mode;t&&document.documentElement.classList.add(`pds-${t}`,"pds-ready")}))}function $t(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?t[n]=$t(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o;return t}function St(r=""){return String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ie(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>ie(t)).filter(t=>t!==void 0);let e={};for(let t in r)if(r.hasOwnProperty(t)){let n=r[t];if(typeof n!="function"){let o=ie(n);o!==void 0&&(e[t]=o)}}return e}function Ct(r={},e={},{presets:t,defaultLog:n,validateDesignConfig:o,validateInitConfig:a}={}){let i=r&&typeof r.log=="function"?r.log:n,s=typeof r=="object"&&("colors"in r||"typography"in r||"spatialRhythm"in r||"shape"in r||"behavior"in r||"layout"in r||"advanced"in r||"a11y"in r||"components"in r||"icons"in r),c=r&&r.enhancers;c&&!Array.isArray(c)&&(c=Object.values(c));let d=c??e.enhancers??[],p=r&&r.preset,l=r&&r.design,u=r&&r.icons&&typeof r.icons=="object"?r.icons:null,g="preset"in(r||{})||"design"in(r||{})||"enhancers"in(r||{});r&&typeof r=="object"&&typeof a=="function"&&a(r,{log:i,context:"PDS.start"});let m,f=null;if(g){l&&typeof l=="object"&&typeof o=="function"&&o(l,{log:i,context:"PDS.start"});let h=String(p||"default").toLowerCase(),y=t?.[h]||Object.values(t||{}).find(B=>St(B.name)===h||String(B.name||"").toLowerCase()===h);if(!y)throw new Error(`PDS preset not found: "${p||"default"}"`);f={id:y.id||St(y.name),name:y.name||y.id||String(h)};let x=structuredClone(y);if(l&&typeof l=="object"||u){let B=l?ie(l):{},D=u?ie(u):null,q=D?$t(B,{icons:D}):B;x=$t(x,structuredClone(q))}let{mode:w,autoDefine:k,applyGlobalStyles:C,manageTheme:$,themeStorageKey:R,preloadStyles:P,criticalLayers:E,managerURL:A,manager:N,preset:M,design:v,enhancers:S,log:z,...T}=r;m={...T,design:x,preset:f.name,log:z||n}}else if(s){typeof o=="function"&&o(r,{log:i,context:"PDS.start"});let{log:h,...y}=r;m={design:structuredClone(y),log:h||n}}else{let h=t?.default||Object.values(t||{}).find(y=>St(y.name)==="default");if(!h)throw new Error("PDS default preset not available");f={id:h.id||"default",name:h.name||"Default"},m={design:structuredClone(h),preset:f.name,log:n}}return{generatorConfig:m,enhancers:d,presetInfo:f}}function Ge({manageTheme:r,themeStorageKey:e,applyResolvedTheme:t,setupSystemListenerIfNeeded:n}){let o="light",a=null;if(r&&typeof window<"u"){try{a=localStorage.getItem(e)||null}catch{a=null}try{t?.(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 be(r,{resolvePublicAssetURL:e}){let t=!!(r?.public?.root||r?.static?.root),n=e(r);return!t&&hr&&(n=hr),fe(he(n))}async function Ve(r,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:t="/auto-define/",autoDefinePreload:n=[],autoDefineMapper:o=null,enhancers:a=[],autoDefineOverrides:i=null,autoDefinePreferModule:s=!0}=r,c=(()=>{let p=new Map;return(e||[]).forEach(l=>p.set(l.selector,l)),(a||[]).forEach(l=>p.set(l.selector,l)),Array.from(p.values())})(),d=null;if(typeof window<"u"&&typeof document<"u"){let p=He,l=k=>{switch(k){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${k}.js`}},{mapper:u,enhancers:g,...m}=i&&typeof i=="object"?i:{},f=g?Array.isArray(g)?g:typeof g=="object"?Object.values(g):[]:[],h=(()=>{let k=new Map;return(c||[]).forEach(C=>{C?.selector&&k.set(C.selector,C)}),(f||[]).forEach(C=>{if(!C?.selector)return;let $=k.get(C.selector)||null;k.set(C.selector,{...$||{},...C,run:typeof C?.run=="function"?C.run:$?.run})}),Array.from(k.values())})(),x={baseURL:t&&fe(he(t,{preferModule:s})),predefine:n,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:h,onError:(k,C)=>{if(typeof k=="string"&&k.startsWith("pds-")){let R=["pds-form","pds-drawer"].includes(k),P=C?.message?.includes("#pds/lit")||C?.message?.includes("Failed to resolve module specifier");R&&P?console.error(`\u274C PDS component <${k}> requires Lit but #pds/lit is not in import map.
|
|
3562
|
-
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${
|
|
3561
|
+
`.trim()}];var gr="pds",Cn=/^([a-z][a-z0-9+\-.]*:)?\/\//i,ur=/^[a-z]:/i;function Te(r=""){return r.endsWith("/")?r:`${r}/`}function Mn(r="",e=gr){let t=r.replace(/\/+$/,"");return new RegExp(`(?:^|/)${e}$`,"i").test(t)?t:`${t}/${e}`}function zn(r){return r.replace(/^\.\/+/,"")}function En(r){return ur.test(r)?r.replace(ur,"").replace(/^\/+/,""):r}function Tn(r){return r.startsWith("public/")?r.substring(7):r}function me(r,e={}){let t=e.segment||gr,n=e.defaultRoot||`/assets/${t}/`,o=r?.public&&r.public?.root||r?.static&&r.static?.root||null;if(!o||typeof o!="string")return Te(n);let a=o.trim();return a?(a=a.replace(/\\/g,"/"),a=Mn(a,t),a=Te(a),Cn.test(a)?a:(a=zn(a),a=En(a),a.startsWith("/")||(a=Tn(a),a.startsWith("/")||(a=`/${a}`),a=a.replace(/\/+/g,(i,s)=>s===0?i:"/")),Te(a))):Te(n)}function mr(r){let e=r.replace(/['"]/g,"").trim();if(["system-ui","-apple-system","sans-serif","serif","monospace","cursive","fantasy","ui-sans-serif","ui-serif","ui-monospace","ui-rounded"].includes(e.toLowerCase()))return!0;let o=document.createElement("canvas").getContext("2d");if(!o)return!1;let a="mmmmmmmmmmlli",i="72px",s="monospace";o.font=`${i} ${s}`;let c=o.measureText(a).width;o.font=`${i} "${e}", ${s}`;let d=o.measureText(a).width;return c!==d}function An(r){return r?r.split(",").map(n=>n.trim())[0].replace(/['"]/g,"").trim():null}async function fr(r,e={}){if(!r)return Promise.resolve();let{weights:t=[400,500,600,700],italic:n=!1}=e,o=An(r);if(!o||mr(o))return Promise.resolve();let a=encodeURIComponent(o);return document.querySelector(`link[href*="fonts.googleapis.com"][href*="${a}"]`)?(console.log(`Font "${o}" is already loading or loaded`),Promise.resolve()):(console.log(`Loading font "${o}" from Google Fonts...`),new Promise((s,c)=>{let d=document.createElement("link");d.rel="stylesheet";let p=n?`ital,wght@0,${t.join(";0,")};1,${t.join(";1,")}`:`wght@${t.join(";")}`;d.href=`https://fonts.googleapis.com/css2?family=${a}:${p}&display=swap`,d.setAttribute("data-font-loader",o),d.onload=()=>{console.log(`Successfully loaded font "${o}"`),s()},d.onerror=()=>{console.warn(`Failed to load font "${o}" from Google Fonts`),c(new Error(`Failed to load font: ${o}`))},document.head.appendChild(d),setTimeout(()=>{mr(o)||console.warn(`Font "${o}" did not load within timeout`),s()},5e3)}))}async function kt(r){if(!r)return Promise.resolve();let e=new Set;r.fontFamilyHeadings&&e.add(r.fontFamilyHeadings),r.fontFamilyBody&&e.add(r.fontFamilyBody),r.fontFamilyMono&&e.add(r.fontFamilyMono);let t=Array.from(e).map(n=>fr(n).catch(o=>{console.warn(`Could not load font: ${n}`,o)}));await Promise.all(t)}async function Ln(...r){let e={};r.length&&typeof r[r.length-1]=="object"&&(e=r.pop()||{});let t=r,{baseURL:n,mapper:o=d=>`${d}.js`,onError:a=(d,p)=>console.error(`[defineWebComponents] ${d}:`,p)}=e,i=n?new URL(n,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),s=d=>d.toLowerCase().replace(/(^|-)([a-z])/g,(p,l,u)=>u.toUpperCase()),c=async d=>{try{if(customElements.get(d))return{tag:d,status:"already-defined"};let p=o(d),u=await import(p instanceof URL?p.href:new URL(p,i).href),g=u?.default??u?.[s(d)];if(!g){if(customElements.get(d))return{tag:d,status:"self-defined"};throw new Error(`No export found for ${d}. Expected default export or named export "${s(d)}".`)}return customElements.get(d)?{tag:d,status:"race-already-defined"}:(customElements.define(d,g),{tag:d,status:"defined"})}catch(p){throw a(d,p),p}};return Promise.all(t.map(c))}var He=class{constructor(e={}){let{baseURL:t,mapper:n,onError:o,predicate:a=()=>!0,attributeModule:i="data-module",root:s=document,scanExisting:c=!0,debounceMs:d=16,observeShadows:p=!0,enhancers:l=[],patchAttachShadow:u=!0}=e,g=new Set,m=new Set,f=new Set,h=new Map,v=new WeakMap,w=new WeakMap,b=0,S=!1,R=null,$=k=>{if(!k||!l.length)return;let M=w.get(k);M||(M=new Set,w.set(k,M));for(let E of l)if(!(!E.selector||!E.run)&&!M.has(E.selector))try{k.matches&&k.matches(E.selector)&&(E.run(k),M.add(E.selector))}catch(B){console.warn(`[AutoDefiner] Error applying enhancer for selector "${E.selector}":`,B)}},L=(k,M)=>{if(!S&&!(!k||!k.includes("-"))&&!customElements.get(k)&&!m.has(k)&&!f.has(k)){if(M&&M.getAttribute){let E=M.getAttribute(i);E&&!h.has(k)&&h.set(k,E)}g.add(k),P()}},P=()=>{b||(b=setTimeout(N,d))},z=k=>{if(k){if(k.nodeType===1){let M=k,E=M.tagName?.toLowerCase();E&&E.includes("-")&&!customElements.get(E)&&a(E,M)&&L(E,M),$(M),p&&M.shadowRoot&&T(M.shadowRoot)}k.querySelectorAll&&k.querySelectorAll("*").forEach(M=>{let E=M.tagName?.toLowerCase();E&&E.includes("-")&&!customElements.get(E)&&a(E,M)&&L(E,M),$(M),p&&M.shadowRoot&&T(M.shadowRoot)})}},T=k=>{if(!k||v.has(k))return;z(k);let M=new MutationObserver(E=>{for(let B of E)B.addedNodes?.forEach(D=>{z(D)}),B.type==="attributes"&&B.target&&z(B.target)});M.observe(k,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...l.map(E=>E.selector).filter(E=>E.startsWith("data-"))]}),v.set(k,M)};async function N(){if(clearTimeout(b),b=0,!g.size)return;let k=Array.from(g);g.clear(),k.forEach(M=>m.add(M));try{let M=E=>h.get(E)??(n?n(E):`${E}.js`);await Ln(...k,{baseURL:t,mapper:M,onError:(E,B)=>{f.add(E),o?.(E,B)}})}catch{}finally{k.forEach(M=>m.delete(M))}}let C=s===document?document.documentElement:s,x=new MutationObserver(k=>{for(let M of k)M.addedNodes?.forEach(E=>{z(E)}),M.type==="attributes"&&M.target&&z(M.target)});if(x.observe(C,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[i,...l.map(k=>k.selector).filter(k=>k.startsWith("data-"))]}),p&&u&&Element.prototype.attachShadow){let k=Element.prototype.attachShadow;Element.prototype.attachShadow=function(E){let B=k.call(this,E);if(E&&E.mode==="open"){T(B);let D=this.tagName?.toLowerCase();D&&D.includes("-")&&!customElements.get(D)&&L(D,this)}return B},R=()=>Element.prototype.attachShadow=k}return c&&z(C),{stop(){S=!0,x.disconnect(),R&&R(),b&&(clearTimeout(b),b=0),v.forEach(k=>k.disconnect())},flush:N}}static async define(...e){let t={};e.length&&typeof e[e.length-1]=="object"&&(t=e.pop()||{});let n=e,{baseURL:o,mapper:a=p=>`${p}.js`,onError:i=(p,l)=>console.error(`[defineWebComponents] ${p}:`,l)}=t,s=o?new URL(o,typeof location<"u"?location.href:import.meta.url):new URL("./",import.meta.url),c=p=>p.toLowerCase().replace(/(^|-)([a-z])/g,(l,u,g)=>g.toUpperCase()),d=async p=>{try{if(customElements.get(p))return{tag:p,status:"already-defined"};let l=a(p),g=await import(l instanceof URL?l.href:new URL(l,s).href),m=g?.default??g?.[c(p)];if(!m){if(customElements.get(p))return{tag:p,status:"self-defined"};throw new Error(`No export found for ${p}. Expected default export or named export "${c(p)}".`)}return customElements.get(p)?{tag:p,status:"race-already-defined"}:(customElements.define(p,m),{tag:p,status:"defined"})}catch(l){throw i(p,l),l}};return Promise.all(n.map(d))}};var Rn=/^[a-z][a-z0-9+\-.]*:\/\//i,Ae=(()=>{try{return import.meta.url}catch{return}})(),fe=r=>typeof r=="string"&&r.length&&!r.endsWith("/")?`${r}/`:r;function he(r,e={}){if(!r||Rn.test(r))return r;let{preferModule:t=!0}=e,n=()=>{if(!Ae)return null;try{return new URL(r,Ae).href}catch{return null}},o=()=>{if(typeof window>"u"||!window.location?.origin)return null;try{return new URL(r,window.location.origin).href}catch{return null}};return(t?n()||o():o()||n())||r}var hr=(()=>{if(Ae)try{let r=new URL(Ae);if(/\/public\/assets\/js\//.test(r.pathname))return new URL("../pds/",Ae).href}catch{return}})(),br=!1;function qe(r){br||typeof document>"u"||(br=!0,r.addEventListener("pds:ready",e=>{let t=e.detail?.mode;t&&document.documentElement.classList.add(`pds-${t}`,"pds-ready")}))}function $t(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?t[n]=$t(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o;return t}function St(r=""){return String(r).toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ie(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>ie(t)).filter(t=>t!==void 0);let e={};for(let t in r)if(r.hasOwnProperty(t)){let n=r[t];if(typeof n!="function"){let o=ie(n);o!==void 0&&(e[t]=o)}}return e}function Ct(r={},e={},{presets:t,defaultLog:n,validateDesignConfig:o,validateInitConfig:a}={}){let i=r&&typeof r.log=="function"?r.log:n,s=typeof r=="object"&&("colors"in r||"typography"in r||"spatialRhythm"in r||"shape"in r||"behavior"in r||"layout"in r||"advanced"in r||"a11y"in r||"components"in r||"icons"in r),c=r&&r.enhancers;c&&!Array.isArray(c)&&(c=Object.values(c));let d=c??e.enhancers??[],p=r&&r.preset,l=r&&r.design,u=r&&r.icons&&typeof r.icons=="object"?r.icons:null,g="preset"in(r||{})||"design"in(r||{})||"enhancers"in(r||{});r&&typeof r=="object"&&typeof a=="function"&&a(r,{log:i,context:"PDS.start"});let m,f=null;if(g){l&&typeof l=="object"&&typeof o=="function"&&o(l,{log:i,context:"PDS.start"});let h=String(p||"default").toLowerCase(),v=t?.[h]||Object.values(t||{}).find(B=>St(B.name)===h||String(B.name||"").toLowerCase()===h);if(!v)throw new Error(`PDS preset not found: "${p||"default"}"`);f={id:v.id||St(v.name),name:v.name||v.id||String(h)};let w=structuredClone(v);if(l&&typeof l=="object"||u){let B=l?ie(l):{},D=u?ie(u):null,q=D?$t(B,{icons:D}):B;w=$t(w,structuredClone(q))}let{mode:b,autoDefine:S,applyGlobalStyles:R,manageTheme:$,themeStorageKey:L,preloadStyles:P,criticalLayers:z,managerURL:T,manager:N,preset:C,design:x,enhancers:k,log:M,...E}=r;m={...E,design:w,preset:f.name,log:M||n}}else if(s){typeof o=="function"&&o(r,{log:i,context:"PDS.start"});let{log:h,...v}=r;m={design:structuredClone(v),log:h||n}}else{let h=t?.default||Object.values(t||{}).find(v=>St(v.name)==="default");if(!h)throw new Error("PDS default preset not available");f={id:h.id||"default",name:h.name||"Default"},m={design:structuredClone(h),preset:f.name,log:n}}return{generatorConfig:m,enhancers:d,presetInfo:f}}function Ge({manageTheme:r,themeStorageKey:e,applyResolvedTheme:t,setupSystemListenerIfNeeded:n}){let o="light",a=null;if(r&&typeof window<"u"){try{a=localStorage.getItem(e)||null}catch{a=null}try{t?.(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 be(r,{resolvePublicAssetURL:e}){let t=!!(r?.public?.root||r?.static?.root),n=e(r);return!t&&hr&&(n=hr),fe(he(n))}async function Ve(r,{baseEnhancers:e=[]}={}){let{autoDefineBaseURL:t="/auto-define/",autoDefinePreload:n=[],autoDefineMapper:o=null,enhancers:a=[],autoDefineOverrides:i=null,autoDefinePreferModule:s=!0}=r,c=(()=>{let p=new Map;return(e||[]).forEach(l=>p.set(l.selector,l)),(a||[]).forEach(l=>p.set(l.selector,l)),Array.from(p.values())})(),d=null;if(typeof window<"u"&&typeof document<"u"){let p=He,l=b=>{switch(b){case"pds-tabpanel":return"pds-tabstrip.js";default:return`${b}.js`}},{mapper:u,enhancers:g,...m}=i&&typeof i=="object"?i:{},f=g?Array.isArray(g)?g:typeof g=="object"?Object.values(g):[]:[],h=(()=>{let b=new Map;return(c||[]).forEach(S=>{S?.selector&&b.set(S.selector,S)}),(f||[]).forEach(S=>{if(!S?.selector)return;let R=b.get(S.selector)||null;b.set(S.selector,{...R||{},...S,run:typeof S?.run=="function"?S.run:R?.run})}),Array.from(b.values())})(),w={baseURL:t&&fe(he(t,{preferModule:s})),predefine:n,scanExisting:!0,observeShadows:!0,patchAttachShadow:!0,debounceMs:16,enhancers:h,onError:(b,S)=>{if(typeof b=="string"&&b.startsWith("pds-")){let $=["pds-form","pds-drawer"].includes(b),L=S?.message?.includes("#pds/lit")||S?.message?.includes("Failed to resolve module specifier");$&&L?console.error(`\u274C PDS component <${b}> requires Lit but #pds/lit is not in import map.
|
|
3562
|
+
See: https://github.com/Pure-Web-Foundation/pure-ds/blob/main/readme.md#lit-components-not-working`):console.warn(`\u26A0\uFE0F PDS component <${b}> not found. Assets may not be installed.`)}else console.error(`\u274C Auto-define error for <${b}>:`,S)},...m,mapper:b=>{if(customElements.get(b))return null;if(typeof o=="function")try{let S=o(b);return S===void 0?l(b):S}catch(S){return console.warn("Custom autoDefine.mapper error; falling back to default:",S?.message||S),l(b)}return l(b)}};d=new p(w),n.length>0&&typeof p.define=="function"&&await p.define(...n,{baseURL:t,mapper:w.mapper,onError:w.onError})}return{autoDefiner:d,mergedEnhancers:c}}var Mt=["light","dark"],zt=new Set(Mt);function Et(r){let t=(Array.isArray(r?.themes)?r.themes.map(n=>String(n).toLowerCase()):Mt).filter(n=>zt.has(n));return t.length?t:Mt}function ye(r,{preferDocument:e=!0}={}){let t=String(r||"").toLowerCase();if(zt.has(t))return t;if(e&&typeof document<"u"){let n=document.documentElement?.getAttribute("data-theme");if(zt.has(n))return n}return typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function se(r,e){let t=ye(e);return Et(r).includes(t)}var vr=!1,Le=null,Ke="pds-live-edit-toggle",It="pds-live-edit-toggle-style";function xr(r){if(typeof document>"u"||typeof r!="function")return;if(document.body){r();return}let e=()=>{document.body&&(document.removeEventListener("DOMContentLoaded",e),r())};document.addEventListener("DOMContentLoaded",e,{once:!0})}function Pn(r={}){let e=r?.interactive!==!1;typeof document>"u"||xr(()=>{if(document.querySelector("pds-live-edit")){if(!e){let t=document.querySelector("pds-live-edit");t&&t.setAttribute("data-pds-live-settings-only","true")}}else{let t=document.createElement("pds-live-edit");e||t.setAttribute("data-pds-live-settings-only","true"),document.body.appendChild(t)}})}function Qe(r=0){return new Promise(e=>{setTimeout(e,Math.max(0,Number(r)||0))})}async function Re(r={}){let e=r?.mountIfMissing!==!1,t=r?.interactive!==!1,n=typeof r?.requiredMethod=="string"&&r.requiredMethod.trim()?r.requiredMethod.trim():"openDesignSettings",o=Number.isFinite(Number(r?.timeoutMs))?Number(r.timeoutMs):2400;if(typeof document>"u"||!e&&!document.querySelector("pds-live-edit"))return null;e&&Pn({interactive:t});let a=Date.now();for(;Date.now()-a<o;){let s=document.querySelector("pds-live-edit");if(!s){await Qe(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"),Qe(80)])}catch{await Qe(40)}continue}await Qe(40)}let i=document.querySelector("pds-live-edit");return i&&typeof i?.[n]=="function"?i:null}function wr(){if(typeof document>"u")return;document.querySelectorAll("pds-live-edit").forEach(e=>{typeof e?.setInteractiveEditingEnabled=="function"&&e.setInteractiveEditingEnabled(!1),e.remove()})}function In(r){return r?typeof r.isInteractiveEditingEnabled=="function"?!!r.isInteractiveEditingEnabled():!0:!1}function Nn(){if(typeof document>"u"||document.getElementById(It))return;let r=document.createElement("style");r.id=It,r.textContent=`
|
|
3563
3563
|
:where(.pds-live-edit-toggle-nav) {
|
|
3564
3564
|
position: fixed;
|
|
3565
3565
|
top: var(--spacing-3);
|
|
@@ -3619,16 +3619,16 @@ export const ${e}CSS = \`${n}\`;
|
|
|
3619
3619
|
:where(.pds-live-edit-toggle-nav menu a[data-pds-live-action="reset-config"] pds-icon) {
|
|
3620
3620
|
color: var(--color-danger-700);
|
|
3621
3621
|
}
|
|
3622
|
-
`,document.head.appendChild(r)}function Pt(r,e){if(!r)return;r.classList.toggle("btn-primary",e),r.classList.toggle("btn-secondary",!e),r.setAttribute("aria-pressed",e?"true":"false");let t="PDS Manager";r.setAttribute("aria-label",t),r.setAttribute("title",t)}async function jn(){if(typeof document>"u")return null;Nn();let r=document.getElementById(Ke);if(!r){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"),r=document.createElement("button"),r.id=Ke,r.type="button",r.className="icon-only btn-secondary",r.setAttribute("data-pds-live-edit-ignore","true"),r.innerHTML='<pds-icon icon="cursor-click" size="sm"></pds-icon>';let t=document.createElement("menu");t.setAttribute("data-pds-live-edit-ignore","true");let n=(a,i,s)=>{let c=document.createElement("li"),d=document.createElement("a");d.href="#",d.dataset.pdsLiveAction=a,d.setAttribute("data-pds-live-edit-ignore","true");let p=document.createElement("pds-icon");return p.setAttribute("icon",s),p.setAttribute("size","sm"),d.append(p,document.createTextNode(` ${i}`)),c.appendChild(d),c},o=()=>{let a=document.createElement("li");a.setAttribute("data-pds-live-edit-ignore","true");let i=document.createElement("hr");return i.setAttribute("aria-hidden","true"),a.appendChild(i),a};t.appendChild(n("toggle","Toggle live editing","pencil")),t.appendChild(n("open-settings","Open Settings","gear")),t.appendChild(o()),t.appendChild(n("reset-config","Reset Config","arrow-counter-clockwise")),await Bn(t),e.append(r,t),xr(()=>{document.getElementById(Ke)||document.body.appendChild(e)})}return r}async function Bn(r){if(r instanceof Element){if(r.__pdsLiveSharedMenuItemInFlight)return r.__pdsLiveSharedMenuItemInFlight;r.__pdsLiveSharedMenuItemInFlight=(async()=>{r.querySelectorAll("li.pds-live-shared-quick-mode-item").forEach(s=>s.remove());let e=await Re({mountIfMissing:!0,interactive:!1,requiredMethod:"createSharedQuickModeMenuItem",timeoutMs:7e3});if(!e||typeof e.createSharedQuickModeMenuItem!="function")return;let t=await e.createSharedQuickModeMenuItem();if(!(t instanceof Element))return;t.classList.add("pds-live-shared-quick-mode-item");let o=r.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){r.insertBefore(t,i);return}if(o){r.insertBefore(t,o);return}r.appendChild(t)})();try{await r.__pdsLiveSharedMenuItemInFlight}finally{r.__pdsLiveSharedMenuItemInFlight=null}}}function On(){if(typeof document>"u")return;let r=document.getElementById(Ke);if(r){let t=r.closest(".pds-live-edit-toggle-nav");t?t.remove():r.remove()}let e=document.getElementById(It);e&&e.remove(),wr()}async function _n(){if(typeof document>"u")return;let r=await jn();if(!r)return;let e=async i=>{if(i){let s=await Re({mountIfMissing:!0});s&&typeof s.setInteractiveEditingEnabled=="function"&&s.setInteractiveEditingEnabled(!0)}else wr();Pt(r,i)};e(!1);let t=r.closest(".pds-live-edit-toggle-nav")||r;r.__pdsLiveEditActionHandler&&t.removeEventListener("click",r.__pdsLiveEditActionHandler);let n=async i=>{let s=i.target?.closest?.("[data-pds-live-action]");if(!s)return;i.preventDefault();let c=String(s.dataset.pdsLiveAction||"");if(c==="toggle"){let d=await Re({mountIfMissing:!1}),p=In(d);await e(!p);return}if(c==="open-settings"){let d=await Re({mountIfMissing:!0,requiredMethod:"openDesignSettings",interactive:!1});d&&typeof d.setInteractiveEditingEnabled=="function"&&d.setInteractiveEditingEnabled(!1),d&&typeof d.openDesignSettings=="function"&&(Pt(r,!1),await d.openDesignSettings());return}if(c==="reset-config"){let d=await Re({mountIfMissing:!0,requiredMethod:"resetConfig",interactive:!1});Pt(r,!1),d&&typeof d.resetConfig=="function"&&await d.resetConfig();return}};r.__pdsLiveEditActionHandler=n,t.addEventListener("click",n),r.__pdsLiveEditDisableHandler&&document.removeEventListener("pds:live-edit:disable",r.__pdsLiveEditDisableHandler),r.__pdsLiveEditEnableHandler&&document.removeEventListener("pds:live-edit:enable",r.__pdsLiveEditEnableHandler);let o=()=>{e(!1)},a=()=>{e(!0)};r.__pdsLiveEditDisableHandler=o,document.addEventListener("pds:live-edit:disable",o),r.__pdsLiveEditEnableHandler=a,document.addEventListener("pds:live-edit:enable",a)}function Dn(){if(typeof window>"u"||!window.localStorage)return null;try{let r=window.localStorage.getItem("pure-ds-config");if(!r)return null;let e=JSON.parse(r);if(e&&("preset"in e||"design"in e))return e}catch{return null}return null}function Nt(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?t[n]=Nt(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o;return t}function Wn(r){let e=Dn();if(!e||!r||typeof r!="object")return r;let t=e.preset,n=e.design&&typeof e.design=="object"?e.design:null;if(!t&&!n)return r;let o="preset"in r||"design"in r||"enhancers"in r,a={...r};if(t&&(a.preset=t),n)if(o){let i=r.design&&typeof r.design=="object"?r.design:{};a.design=Nt(i,n)}else a=Nt(r,n);return a}function Un(r,e={}){let{hideCategory:t=!0,itemGrid:n="45px 1fr",includeIncompatible:o=!0,disableIncompatible:a=!0,categoryName:i="Presets",theme:s,onSelect:c,iconHandler:d}=e||{},p=ye(s??r?.theme),l=m=>{let h=g(m?.id)?.colors||{},
|
|
3623
|
-
<span style="display:inline-block;width:10px;height:20px;background-color:${
|
|
3624
|
-
<span style="display:inline-block;width:10px;height:20px;background-color:${x};"> </span>
|
|
3622
|
+
`,document.head.appendChild(r)}function Pt(r,e){if(!r)return;r.classList.toggle("btn-primary",e),r.classList.toggle("btn-secondary",!e),r.setAttribute("aria-pressed",e?"true":"false");let t="PDS Manager";r.setAttribute("aria-label",t),r.setAttribute("title",t)}async function jn(){if(typeof document>"u")return null;Nn();let r=document.getElementById(Ke);if(!r){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"),r=document.createElement("button"),r.id=Ke,r.type="button",r.className="icon-only btn-secondary",r.setAttribute("data-pds-live-edit-ignore","true"),r.innerHTML='<pds-icon icon="cursor-click" size="sm"></pds-icon>';let t=document.createElement("menu");t.setAttribute("data-pds-live-edit-ignore","true");let n=(a,i,s)=>{let c=document.createElement("li"),d=document.createElement("a");d.href="#",d.dataset.pdsLiveAction=a,d.setAttribute("data-pds-live-edit-ignore","true");let p=document.createElement("pds-icon");return p.setAttribute("icon",s),p.setAttribute("size","sm"),d.append(p,document.createTextNode(` ${i}`)),c.appendChild(d),c},o=()=>{let a=document.createElement("li");a.setAttribute("data-pds-live-edit-ignore","true");let i=document.createElement("hr");return i.setAttribute("aria-hidden","true"),a.appendChild(i),a};t.appendChild(n("toggle","Toggle live editing","pencil")),t.appendChild(n("open-settings","Open Settings","gear")),t.appendChild(o()),t.appendChild(n("reset-config","Reset Config","arrow-counter-clockwise")),await Bn(t),e.append(r,t),xr(()=>{document.getElementById(Ke)||document.body.appendChild(e)})}return r}async function Bn(r){if(r instanceof Element){if(r.__pdsLiveSharedMenuItemInFlight)return r.__pdsLiveSharedMenuItemInFlight;r.__pdsLiveSharedMenuItemInFlight=(async()=>{r.querySelectorAll("li.pds-live-shared-quick-mode-item").forEach(s=>s.remove());let e=await Re({mountIfMissing:!0,interactive:!1,requiredMethod:"createSharedQuickModeMenuItem",timeoutMs:7e3});if(!e||typeof e.createSharedQuickModeMenuItem!="function")return;let t=await e.createSharedQuickModeMenuItem();if(!(t instanceof Element))return;t.classList.add("pds-live-shared-quick-mode-item");let o=r.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){r.insertBefore(t,i);return}if(o){r.insertBefore(t,o);return}r.appendChild(t)})();try{await r.__pdsLiveSharedMenuItemInFlight}finally{r.__pdsLiveSharedMenuItemInFlight=null}}}function On(){if(typeof document>"u")return;let r=document.getElementById(Ke);if(r){let t=r.closest(".pds-live-edit-toggle-nav");t?t.remove():r.remove()}let e=document.getElementById(It);e&&e.remove(),wr()}async function _n(){if(typeof document>"u")return;let r=await jn();if(!r)return;let e=async i=>{if(i){let s=await Re({mountIfMissing:!0});s&&typeof s.setInteractiveEditingEnabled=="function"&&s.setInteractiveEditingEnabled(!0)}else wr();Pt(r,i)};e(!1);let t=r.closest(".pds-live-edit-toggle-nav")||r;r.__pdsLiveEditActionHandler&&t.removeEventListener("click",r.__pdsLiveEditActionHandler);let n=async i=>{let s=i.target?.closest?.("[data-pds-live-action]");if(!s)return;i.preventDefault();let c=String(s.dataset.pdsLiveAction||"");if(c==="toggle"){let d=await Re({mountIfMissing:!1}),p=In(d);await e(!p);return}if(c==="open-settings"){let d=await Re({mountIfMissing:!0,requiredMethod:"openDesignSettings",interactive:!1});d&&typeof d.setInteractiveEditingEnabled=="function"&&d.setInteractiveEditingEnabled(!1),d&&typeof d.openDesignSettings=="function"&&(Pt(r,!1),await d.openDesignSettings());return}if(c==="reset-config"){let d=await Re({mountIfMissing:!0,requiredMethod:"resetConfig",interactive:!1});Pt(r,!1),d&&typeof d.resetConfig=="function"&&await d.resetConfig();return}};r.__pdsLiveEditActionHandler=n,t.addEventListener("click",n),r.__pdsLiveEditDisableHandler&&document.removeEventListener("pds:live-edit:disable",r.__pdsLiveEditDisableHandler),r.__pdsLiveEditEnableHandler&&document.removeEventListener("pds:live-edit:enable",r.__pdsLiveEditEnableHandler);let o=()=>{e(!1)},a=()=>{e(!0)};r.__pdsLiveEditDisableHandler=o,document.addEventListener("pds:live-edit:disable",o),r.__pdsLiveEditEnableHandler=a,document.addEventListener("pds:live-edit:enable",a)}function Dn(){if(typeof window>"u"||!window.localStorage)return null;try{let r=window.localStorage.getItem("pure-ds-config");if(!r)return null;let e=JSON.parse(r);if(e&&("preset"in e||"design"in e))return e}catch{return null}return null}function Nt(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};for(let[n,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?t[n]=Nt(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o;return t}function Wn(r){let e=Dn();if(!e||!r||typeof r!="object")return r;let t=e.preset,n=e.design&&typeof e.design=="object"?e.design:null;if(!t&&!n)return r;let o="preset"in r||"design"in r||"enhancers"in r,a={...r};if(t&&(a.preset=t),n)if(o){let i=r.design&&typeof r.design=="object"?r.design:{};a.design=Nt(i,n)}else a=Nt(r,n);return a}function Un(r,e={}){let{hideCategory:t=!0,itemGrid:n="45px 1fr",includeIncompatible:o=!0,disableIncompatible:a=!0,categoryName:i="Presets",theme:s,onSelect:c,iconHandler:d}=e||{},p=ye(s??r?.theme),l=m=>{let h=g(m?.id)?.colors||{},v=h?.primary,w=h?.secondary,b=h?.accent;return v&&w&&b?`<span style="display:flex;gap:1px;flex-shrink:0;" aria-hidden="true">
|
|
3623
|
+
<span style="display:inline-block;width:10px;height:20px;background-color:${v};"> </span>
|
|
3625
3624
|
<span style="display:inline-block;width:10px;height:20px;background-color:${w};"> </span>
|
|
3626
|
-
|
|
3627
|
-
|
|
3625
|
+
<span style="display:inline-block;width:10px;height:20px;background-color:${b};"> </span>
|
|
3626
|
+
</span>`:m?.icon?`<pds-icon icon="${m.icon}" size="sm"></pds-icon>`:""},u=()=>{let m=r?.presets||{};return Object.values(m||{}).filter(f=>!!(f?.id||f?.name))},g=m=>m&&u().find(h=>String(h?.id||h?.name)===String(m))||null;return{hideCategory:t,itemGrid:n,iconHandler:typeof d=="function"?d:l,categories:{[i]:{trigger:()=>!0,getItems:(m={})=>{let f=String(m?.search||"").toLowerCase().trim();return u().filter(v=>{let w=String(v?.name||v?.id||"").toLowerCase(),b=String(v?.description||"").toLowerCase(),S=Array.isArray(v?.tags)?v.tags.map($=>String($).toLowerCase()):[];if(f&&!(w.includes(f)||b.includes(f)||S.some(L=>L.includes(f))))return!1;let R=se(v,p);return!(!o&&!R)}).map(v=>{let w=v?.id||v?.name,b=se(v,p),S=Et(v),R=S.length===1?`${S[0]} only`:`Not available in ${p} mode`,$=String(v?.description||"").trim(),L=b?$:$?`${$} - ${R}`:R;return{id:w,text:v?.name||String(w),description:L,icon:"palette",class:!b&&a?"disabled":"",disabled:!b&&a,tooltip:b?"":R}}).sort((v,w)=>String(v.text||"").localeCompare(String(w.text||"")))},action:async m=>{if(!m?.id||m?.disabled)return m?.id;let f=g(m.id);return f?typeof c=="function"?await c({preset:f,selection:m,resolvedTheme:p}):(typeof r?.applyLivePreset=="function"&&await r.applyLivePreset(f.id||m.id),f.id||m.id):m?.id}}}}}async function Hn(r,{applyResolvedTheme:e,setupSystemListenerIfNeeded:t,emitConfigChanged:n}){if(vr)return;let[o,a,i,s]=await Promise.all([Promise.resolve().then(()=>(xt(),ir)),Promise.resolve().then(()=>($e(),Vt)),Promise.resolve().then(()=>(Lt(),At)),Promise.resolve().then(()=>(Ft(),Ye))]),c=o?.default||o?.ontology,d=o?.findComponentForElement,p=a?.enums;Le=i?.PDSQuery||i?.default||null,r.ontology=c,r.findComponentForElement=d,r.enums=p,r.common=s||{},r.presets=Q,r.configRelations=Xt,r.configSpec=er,r.configEditorMetadata=nr,r.configFormSchema=or,r.buildConfigFormSchema=ue,r.getConfigEditorMetadata=Ee,r.enhancerMetadata=pr,r.applyStyles=function(l){let u=l||V.instance;lr(u),typeof n=="function"&&n({mode:"live",source:"live:styles-applied"})},r.adoptLayers=function(l,u,g){return Ue(l,u,g,V.instance)},r.adoptPrimitives=function(l,u){return We(l,u,V.instance)},r.getGenerator=async function(){return V},r.query=async function(l){if(!Le){let g=await Promise.resolve().then(()=>(Lt(),At));Le=g?.PDSQuery||g?.default||null}return Le?await new Le(r).search(l):[]},r.buildPresetOmniboxSettings=function(l={}){return Un(r,l)},r.applyLivePreset=async function(l,u={}){if(!l)return!1;if(!r.registry?.isLive)return console.warn("PDS.applyLivePreset is only available in live mode."),!1;let g=r.currentConfig||{},{design:m,preset:f,...h}=g,v={...structuredClone(ie(h)),preset:l},w=Ct(v,{},{presets:Q,defaultLog:vt,validateDesignConfig:bt,validateInitConfig:yt}),b=ye(r.theme);if(!se(w.generatorConfig.design,b)){let L=w.presetInfo?.name||w.generatorConfig?.design?.name||l;console.warn(`PDS theme "${b}" not supported by preset "${L}".`)}g.theme&&!w.generatorConfig.theme&&(w.generatorConfig.theme=g.theme);let S=new V(w.generatorConfig);if(w.generatorConfig.design?.typography)try{await kt(w.generatorConfig.design.typography)}catch(L){w.generatorConfig?.log?.("warn","Failed to load some fonts from Google Fonts:",L)}r.applyStyles?.(S);let R=w.presetInfo||{id:l,name:l};if(r.currentPreset=R,r.currentConfig=Object.freeze({...g,preset:w.generatorConfig.preset,design:structuredClone(w.generatorConfig.design),theme:w.generatorConfig.theme||g.theme}),r.configEditorMetadata=Ee(w.generatorConfig.design),r.configFormSchema=ue(w.generatorConfig.design),u?.persist!==!1&&typeof window<"u"){let L="pure-ds-config";try{let P=localStorage.getItem(L),z=P?JSON.parse(P):null,T={...z&&typeof z=="object"?z:{},preset:R.id||l,design:structuredClone(w.generatorConfig.design||{})};localStorage.setItem(L,JSON.stringify(T))}catch(P){w.generatorConfig?.log?.("warn","Failed to store preset:",P)}}return!0},Object.getOwnPropertyDescriptor(r,"compiled")||Object.defineProperty(r,"compiled",{get(){return r.registry?.isLive&&V.instance?V.instance.compiled:null},enumerable:!0,configurable:!1}),r.preloadCritical=function(l,u={}){if(typeof window>"u"||!document.head||!l)return;let{theme:g,layers:m=["tokens"]}=u;try{let f=g||"light";(g==="system"||!g)&&(f=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),document.documentElement.setAttribute("data-theme",f);let h=l.design?{...l,theme:f}:{design:l,theme:f},v=new V(h),w=m.map(b=>{try{return v.css?.[b]||""}catch{return""}}).filter(b=>b.trim()).join(`
|
|
3627
|
+
`);if(w){let b=document.head.querySelector("style[data-pds-preload]");b&&b.remove();let S=document.createElement("style");S.setAttribute("data-pds-preload",""),S.textContent=w,document.head.insertBefore(S,document.head.firstChild)}}catch(f){console.warn("PDS preload failed:",f)}},vr=!0}async function qn(r,e,{emitReady:t,emitConfigChanged:n,applyResolvedTheme:o,setupSystemListenerIfNeeded:a}){if(!e||typeof e!="object")throw new Error("PDS.start({ mode: 'live', ... }) requires a valid configuration object");if(e=Wn(e),await Hn(r,{applyResolvedTheme:o,setupSystemListenerIfNeeded:a,emitConfigChanged:n}),qe(r),typeof document<"u"&&document.adoptedStyleSheets){let u=`
|
|
3628
3628
|
html { opacity: 0; }
|
|
3629
3629
|
html.pds-ready { opacity: 1; transition: opacity 0.3s ease-in; }
|
|
3630
|
-
`;try{if(!document.adoptedStyleSheets.some(m=>m._pdsFouc)){let m=new CSSStyleSheet;m.replaceSync(u),m._pdsFouc=!0,document.adoptedStyleSheets=[m,...document.adoptedStyleSheets]}}catch(g){if(console.warn("Constructable stylesheets not supported, using <style> tag fallback:",g),!document.head.querySelector("style[data-pds-fouc]")){let f=document.createElement("style");f.setAttribute("data-pds-fouc",""),f.textContent=u,document.head.insertBefore(f,document.head.firstChild)}}}let i=e.applyGlobalStyles??!0,s=e.manageTheme??!0,c=e.themeStorageKey??"pure-ds-theme",d=e.preloadStyles??!1,p=e.criticalLayers??["tokens","primitives"],l=e&&e.autoDefine||null;try{let{resolvedTheme:u}=Ge({manageTheme:s,themeStorageKey:c,applyResolvedTheme:o,setupSystemListenerIfNeeded:a}),g=Ct(e,{},{presets:Q,defaultLog:vt,validateDesignConfig:bt,validateInitConfig:yt});if(s&&!se(g.generatorConfig.design,u)){let
|
|
3631
|
-
`);if(E){let A=document.head.querySelector("style[data-pds-critical]");A&&A.remove();let N=document.createElement("style");N.setAttribute("data-pds-critical",""),N.textContent=E;let M=document.head.querySelector('meta[charset], meta[name="viewport"]');M?M.parentNode.insertBefore(N,M.nextSibling):document.head.insertBefore(N,document.head.firstChild)}}catch(E){y?.log?.("warn","Failed to preload critical styles:",E)}r.registry.setLiveMode(),g.presetInfo?.name?y?.log?.("log",`PDS live with preset "${g.presetInfo.name}"`):y?.log?.("log","PDS live with custom config"),i&&(r.applyStyles?.(V.instance),typeof window<"u"&&setTimeout(()=>{let E=document.head.querySelector("style[data-pds-critical]");E&&E.remove();let A=document.head.querySelector("style[data-pds-preload]");A&&A.remove();let N=document.getElementById("pds-runtime-stylesheet");N&&N.remove()},100));let w=be(e,{resolvePublicAssetURL:me}),k;l&&l.baseURL?k=fe(he(l.baseURL,{preferModule:!1})):k=`${w}components/`;let C=null,$=[];try{let E=await Ve({autoDefineBaseURL:k,autoDefinePreload:l&&Array.isArray(l.predefine)&&l.predefine||[],autoDefineMapper:l&&typeof l.mapper=="function"&&l.mapper||null,enhancers:m,autoDefineOverrides:l||null,autoDefinePreferModule:!(l&&l.baseURL)},{baseEnhancers:dr});C=E.autoDefiner,$=E.mergedEnhancers||[]}catch(E){y?.log?.("error","\u274C Failed to initialize AutoDefiner/Enhancers:",E)}let R=x?.options||y,P=ie(e);if(r.currentConfig=Object.freeze({mode:"live",...structuredClone(P),design:structuredClone(g.generatorConfig.design),preset:g.generatorConfig.preset,theme:u,enhancers:$}),r.configEditorMetadata=Ee(g.generatorConfig.design),r.configFormSchema=ue(g.generatorConfig.design),typeof n=="function"&&n({mode:"live",source:"live:config-applied",preset:g.generatorConfig.preset}),typeof document<"u")try{e?.liveEdit?setTimeout(()=>{_n()},0):On()}catch(E){y?.log?.("warn","Live editor toggle failed to start:",E)}return t({mode:"live",generator:x,config:R,theme:u,autoDefiner:C}),{generator:x,config:R,theme:u,autoDefiner:C}}catch(u){throw r.dispatchEvent(new CustomEvent("pds:error",{detail:{error:u}})),u}}function Gn(r){let e=Number(r);return Number.isFinite(e)?Math.max(0,Math.min(1,e)):.5}function Vn(r){return Array.isArray(r)?r.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 O(r={}){let e=String(r.source||"unknown"),t=String(r.type||"generic"),n=Gn(r.confidence),o=Vn(r.issues),a=r.designPatch&&typeof r.designPatch=="object"?r.designPatch:{},i=r.template&&typeof r.template=="object"?r.template:null;return{source:e,type:t,confidence:n,issues:o,designPatch:a,template:i,meta:r.meta&&typeof r.meta=="object"?r.meta:{}}}function Jn(r){return!!(r&&typeof r=="object"&&"source"in r&&"type"in r&&"confidence"in r&&"issues"in r&&"designPatch"in r)}var Yn="../templates/templates.json",kr="/assets/pds/templates/templates.json",Qn=["public","assets","pds","templates","templates.json"],Kn=["..","..","..","public","assets","pds","templates","templates.json"],Ze=null;function Sr(){return!!(typeof process<"u"&&process?.versions?.node)}function Zn(r={}){return{id:String(r.id||"").trim(),name:String(r.name||r.id||"Template").trim(),description:String(r.description||"").trim(),icon:String(r.icon||"layout").trim(),file:String(r.file||"").trim(),tags:Array.isArray(r.tags)?r.tags.map(e=>String(e)):[]}}function Xe(r={},e={}){let n=(Array.isArray(r)?r:Array.isArray(r?.templates)?r.templates:[]).map(Zn).filter(o=>o.id&&o.file);return{version:r?.version||"1",templates:n,__catalogURL:e.catalogURL||null,__catalogFilePath:e.catalogFilePath||null}}async function Xn(r={}){let t=[r.catalogURL||globalThis?.PDS?.currentConfig?.templateCatalogURL,Yn,kr].filter(Boolean);for(let n of t)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 Xe(i,{catalogURL:o})}catch{}return Xe({templates:[]})}async function eo(r={}){let e="node:fs/promises",t="node:path",n="node:url",[{readFile:o},a,{fileURLToPath:i}]=await Promise.all([import(e),import(t),import(n)]),s=[];r.catalogPath&&s.push(a.resolve(r.catalogPath)),s.push(a.resolve(process.cwd(),...Qn));let c=a.dirname(i(import.meta.url));s.push(a.resolve(c,...Kn));for(let d of s)try{let p=await o(d,"utf8"),l=JSON.parse(p);return Xe(l,{catalogFilePath:d})}catch{}return Xe({templates:[]})}async function to(r,e){if(!r?.file)return"";if(!Sr()){let c=e?.__catalogURL||kr,d=new URL(r.file,c).href,p=await fetch(d,{credentials:"same-origin"});if(!p.ok)throw new Error(`Template file not found: ${r.file}`);return(await p.text()).trim()}let t="node:fs/promises",n="node:path",[{readFile:o},a]=await Promise.all([import(t),import(n)]),i=e?.__catalogFilePath?a.dirname(e.__catalogFilePath):a.resolve(process.cwd(),"public","assets","pds","templates"),s=a.resolve(i,r.file);return(await o(s,"utf8")).trim()}async function et(r={}){return Ze&&!r.forceReload||(Ze=Sr()?await eo(r):await Xn(r)),Ze}async function $r(r={}){return(await et(r)).templates.map(({id:t,name:n,description:o,icon:a,file:i,tags:s})=>({id:t,name:n,description:o,icon:a,file:i,tags:s}))}async function ro(r,e={}){let t=await et(e),n=t.templates.find(a=>a.id===r)||null;if(!n)return null;let o=await to(n,t);return{...n,html:o}}async function Cr(r,e={}){let t=await ro(r,e);return t?O({source:"template",type:"template",confidence:1,template:{id:t.id,name:t.name,html:t.html,icon:t.icon,description:t.description}}):O({source:"template",type:"template",confidence:0,issues:[{severity:"error",message:`Unknown template: ${r}`}]})}var Mr={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();Ft();var Bt=class extends EventTarget{},L=new Bt;L.initializing=!1;L.currentPreset=null;L.debug=!1;var tt=null,rt=null,nt=null,ot=null;function at(r,e){return e&&typeof e=="string"?e:`${be(L.currentConfig||{},{resolvePublicAssetURL:me})}core/${r}`}async function oo(){return Array.isArray(L.defaultEnhancers)&&L.defaultEnhancers.length>0?L.defaultEnhancers:(ot||(ot=import(at("pds-enhancers.js",L.currentConfig?.enhancersURL)).then(e=>{let t=Array.isArray(e?.defaultPDSEnhancers)?e.defaultPDSEnhancers:[];return L.defaultEnhancers=t,t}).catch(e=>{throw ot=null,e})),ot)}async function ao(){return typeof L.ask=="function"&&L.ask!==Er?L.ask:(rt||(rt=import(at("pds-ask.js",L.currentConfig?.askURL)).then(e=>{let t=e?.ask;if(typeof t!="function")throw new Error("Failed to load ask helper");return L.ask=t,t}).catch(e=>{throw rt=null,e})),rt)}async function Pe(){return typeof L.toast=="function"&&L.toast!==ve?L.toast:(nt||(nt=import(at("pds-toast.js",L.currentConfig?.toastURL)).then(e=>{let t=e?.toast;if(typeof t!="function")throw new Error("Failed to load toast helper");return L.toast=t,t}).catch(e=>{throw nt=null,e})),nt)}async function Er(...r){return(await ao())(...r)}async function ve(...r){return(await Pe())(...r)}ve.success=async(...r)=>(await Pe()).success(...r);ve.error=async(...r)=>(await Pe()).error(...r);ve.warning=async(...r)=>(await Pe()).warning(...r);ve.info=async(...r)=>(await Pe()).info(...r);var zr=function(r="log",e,...t){let n=!!(L.registry&&!L.registry.isLive),o=(this?.debug||this?.design?.debug||L.debug||!1)===!0;if(n){if(!L.debug)return}else if(!o&&r!=="error"&&r!=="warn")return;let a=console[r]||console.log;t.length>0?a(e,...t):a(e)};function Ot(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>Ot(t)).filter(t=>t!==void 0);let e={};for(let[t,n]of Object.entries(r)){let o=Ot(n);o!==void 0&&(e[t]=o)}return e}async function io(r,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let t=e?.runtimeConfigURL||`${r}pds-runtime-config.json`;try{let n=await fetch(t,{cache:"no-store"});return n.ok?await n.json():null}catch{return null}}L.registry=ge;L.enums=b;L.adoptLayers=Ue;L.adoptPrimitives=We;L.parse=Rt;L.createStylesheet=cr;L.isLiveMode=()=>ge.isLive;L.ask=Er;L.toast=ve;L.common=Ye;L.AutoComplete=null;L.loadAutoComplete=async()=>{if(L.AutoComplete&&typeof L.AutoComplete.connect=="function")return L.AutoComplete;let r=at("pds-autocomplete.js",L.currentConfig?.autoCompleteURL);return tt||(tt=import(r).then(e=>{let t=e?.AutoComplete||e?.default?.AutoComplete||e?.default||null;if(!t)throw new Error("AutoComplete export not found in module");return L.AutoComplete=t,t}).catch(e=>{throw tt=null,e})),tt};function Tr(r){let e=typeof CustomEvent=="function";try{let t=e?new CustomEvent("pds:ready",{detail:r}):new Event("pds:ready");L.dispatchEvent(t)}catch{}if(typeof document<"u")if(e){let t={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",t))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",t))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function Ar(r={}){let e=typeof CustomEvent=="function",t={at:Date.now(),...r};try{let n=e?new CustomEvent("pds:config-changed",{detail:t}):new Event("pds:config-changed");L.dispatchEvent(n)}catch{}if(typeof document<"u")if(e){let n={detail:t,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 jt="pure-ds-theme",le=null,Fe=null;function _t(r){try{if(typeof document>"u")return;let e="light";r?r==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=r:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function Dt(r){try{if(le&&Fe){try{typeof le.removeEventListener=="function"?le.removeEventListener("change",Fe):typeof le.removeListener=="function"&&le.removeListener(Fe)}catch{}le=null,Fe=null}if(r==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=n=>{let o=n?.matches===void 0?e.matches:n.matches;try{let a=o?"dark":"light";document.documentElement.setAttribute("data-theme",a),L.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:a,source:"system"}}))}catch{}};le=e,Fe=t,typeof e.addEventListener=="function"?e.addEventListener("change",t):typeof e.addListener=="function"&&e.addListener(t)}}catch{}}Object.defineProperty(L,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(jt)||null}catch{return null}},set(r){try{if(typeof window>"u")return;let e=L.currentConfig?.design||null,t=ye(r);if(e&&!se(e,t)){let n=e?.name||L.currentPreset?.name||L.currentConfig?.preset||"current preset";console.warn(`PDS theme "${t}" not supported by preset "${n}".`),L.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:r,resolvedTheme:t,preset:n}}));return}r==null?localStorage.removeItem(jt):localStorage.setItem(jt,r),_t(r),Dt(r),L.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"api"}}))}catch{}}});L.defaultEnhancers=[];async function so(r){let e=r&&r.mode||"live",{mode:t,...n}=r||{};if(e==="static")return lo(n);let o=be(n,{resolvePublicAssetURL:me}),a=n?.managerURL||n?.public?.managerURL||n?.manager?.url||new URL("core/pds-manager.js",o).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:i}=await import(a);return i(L,n,{emitReady:Tr,emitConfigChanged:Ar,applyResolvedTheme:_t,setupSystemListenerIfNeeded:Dt})}L.start=so;async function lo(r){if(!r||typeof r!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=r.applyGlobalStyles??!0,t=r.manageTheme??!0,n=r.themeStorageKey??"pure-ds-theme",o=r.staticPaths??{},a=be(r,{resolvePublicAssetURL:me}),i=r&&r.autoDefine||null,s;i&&i.baseURL?s=fe(he(i.baseURL,{preferModule:!1})):s=`${a}components/`;let c=i&&Array.isArray(i.predefine)&&i.predefine||[],d=i&&typeof i.mapper=="function"&&i.mapper||null;try{qe(L);let{resolvedTheme:p}=Ge({manageTheme:t,themeStorageKey:n,applyResolvedTheme:_t,setupSystemListenerIfNeeded:Dt}),l=await io(a,r),u=Array.isArray(r?.enhancers)?r.enhancers:r?.enhancers&&typeof r.enhancers=="object"?Object.values(r.enhancers):[],g=l?.config?{...l.config,...r,design:r?.design||l.config.design,preset:r?.preset||l.config.preset}:{...r},m={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`},f=l?.paths||{};if(o={...m,...f,...o},L.registry.setStaticMode(o),e&&typeof document<"u")try{let w=await L.registry.getStylesheet("styles");if(w){w._pds=!0;let k=(document.adoptedStyleSheets||[]).filter(C=>C._pds!==!0);document.adoptedStyleSheets=[...k,w],Ar({mode:"static",source:"static:styles-applied"})}}catch(w){zr.call(L,"warn","Failed to apply static styles:",w)}let h=null,y=[];try{let w=await oo(),k=await Ve({autoDefineBaseURL:s,autoDefinePreload:c,autoDefineMapper:d,enhancers:u,autoDefineOverrides:i||null,autoDefinePreferModule:!(i&&i.baseURL)},{baseEnhancers:w});h=k.autoDefiner,y=k.mergedEnhancers||[]}catch(w){zr.call(L,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",w)}let x=Ot(r);return L.currentConfig=Object.freeze({mode:"static",...structuredClone(x),design:structuredClone(g.design||{}),preset:g.preset,theme:p,enhancers:y}),Tr({mode:"static",config:g,theme:p,autoDefiner:h}),{config:g,theme:p,autoDefiner:h}}catch(p){throw L.dispatchEvent(new CustomEvent("pds:error",{detail:{error:p}})),p}}var co="src/js/pds-live-manager/tailwind-conversion-rules.json",lt=["base","sm","md","lg","xl","2xl"];function po(r={}){let e=Array.isArray(r.ignoredPatterns)?r.ignoredPatterns.map(n=>({...n,pattern:n?.pattern instanceof RegExp?n.pattern:new RegExp(String(n?.pattern||""))})):[],t=Array.isArray(r.nonPdsClassPatterns)?r.nonPdsClassPatterns.map(n=>n instanceof RegExp?n:new RegExp(String(n||""))):[];return{...r,ignoredPatterns:e,nonPdsClassPatterns:t}}var H=po(Mr),Lr=H.version||"tw2pds-layout-v4",uo=new Map(H.directMappings.map(r=>[r.tw,r])),Wt=new Map(Object.entries(H.gapScaleMap||{})),Rr=new Map(Object.entries(H.maxWidthMap||{})),go=H.nonPdsClassPatterns||[],mo=new Set(H.neverFallbackTags||[]),fo={...H.importStyleRules||{}},ho=H.tailwindSizeScale||{},Ut=Array.isArray(H.tailwindShadeScale)?H.tailwindShadeScale.map(r=>String(r)).filter(Boolean):["50","100","200","300","400","500","600","700","800","900"],Fr=Ut.includes(String(H.defaultTailwindShade||""))?String(H.defaultTailwindShade):"500",st=1.2,bo=["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 Pr(r="",e=""){if(!r||!e)return r;let t=new RegExp(`\\s${e}\\s*=\\s*("[^"]*"|'[^']*'|[^\\s>]+)`,"gi");return String(r).replace(t,"")}function yo(r="",e=null){let t=String(r||""),n=0;return t=t.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(input)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*?)>/gi,(o,a,i,s,c,d,p,l,u,g,m)=>{if(s!==g)return o;let f=Pr(`${a||""}${c||""}`,"for"),h=`<${p}${l||""} id="${g}"${m||""}>`;return n+=1,`<label${f}>${d}${h}</label>`}),t=t.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(select|textarea)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*)>([\s\S]*?)<\/\6>/gi,(o,a,i,s,c,d,p,l,u,g,m,f)=>{if(s!==g)return o;let h=Pr(`${a||""}${c||""}`,"for"),y=`<${p}${l||""} id="${g}"${m||""}>${f}</${p}>`;return n+=1,`<label${h}>${d}${y}</label>`}),e&&n>0&&(e.labelNestingCount+=n,j(e,`Nested ${n} label/control pairs.`),F(e,"intent.form.nested-label")),t}function vo(r="",e="base"){let t=String(r||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"rule";return`import-${e&&e!=="base"?`${e}-`:""}${t}`}function ce(r,e,t,n="base",o=""){if(!r||!e||!t)return"";let a=vo(e,n);if(o){let i=`${n}|${o}`;r.importPseudoStyles.has(i)||r.importPseudoStyles.set(i,new Map),r.importPseudoStyles.get(i).set(a,t)}else n==="base"?r.importBaseStyles.set(a,t):(r.importResponsiveStyles.has(n)||r.importResponsiveStyles.set(n,new Map),r.importResponsiveStyles.get(n).set(a,t));return r.importedStyleCount+=1,a}function we(r=""){return String(r||"").trim().replace(/_/g," ")}function ke(r=""){return!r||/[;{}]/.test(r)?!1:/^[-#(),.%/\sa-zA-Z0-9]+$/.test(r)}function Ie(r=""){let e=String(r||"").trim();if(!e)return null;let t=e.match(/^\[([^\]]+)\]$/);if(t){let n=we(t[1]);return ke(n)?n:null}return ho[e]||null}function xo(r=""){let e=Number(r);if(!Number.isFinite(e))return Fr;let t=String(e);return Ut.includes(t)?t:Ut.reduce((n,o)=>{let a=Math.abs(Number(n)-e);return Math.abs(Number(o)-e)<a?o:n},Fr)}function je(r="",e="500"){let t=String(r||"").toLowerCase(),n=xo(e);return["blue","sky","indigo","cyan"].includes(t)?`var(--color-primary-${n})`:["purple","violet","fuchsia"].includes(t)?`var(--color-accent-${n})`:["green","emerald","lime","teal"].includes(t)?`var(--color-success-${n})`:["yellow","amber","warning"].includes(t)?`var(--color-warning-${n})`:["red","rose","pink","orange"].includes(t)?`var(--color-danger-${n})`:["slate","gray","zinc","neutral","stone"].includes(t)?`var(--color-gray-${n})`:""}function Ir(r=""){let e=we(r);return ke(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 ee(r=""){return String(r||"").split(/\s+/).map(e=>e.trim()).filter(Boolean)}function wo(r="",e=""){if(!e)return r;let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return`${t} class="${e}"`;let o=n[1]||'"',a=ee(n[2]);a.includes(e)||a.push(e);let i=` class=${o}${a.join(" ")}${o}`;return t.replace(n[0],i)}function ko(r="",e=""){return e?new RegExp(`\\s${e}\\s*=`,"i").test(String(r||"")):!1}function So(r=""){let e=String(r||"").replace(/[-_]+/g," ").trim();return e?e.replace(/(^|\s)([a-z])/g,(t,n,o)=>`${n}${o.toUpperCase()}`):"Icon button"}function $o(r="",e=null){let t=String(r||"");return t&&t.replace(/<(button|a)([^>]*)>\s*(<pds-icon\b[^>]*><\/pds-icon>)\s*<\/\1>/gi,(n,o,a,i)=>{let s=wo(a,"icon-only");if(!ko(s,"aria-label")){let c=String(i).match(/\sicon\s*=\s*(["'])(.*?)\1/i),d=c?String(c[2]||""):"",p=So(d);s+=` aria-label="${p}"`}return e&&(e.intentHits+=1,F(e,"intent.component.button.icon-only-markup")),`<${o}${s}>${i}</${o}>`})}function Co(r="",e=null){let t=String(r||"");if(!t)return t;let n=0,o=t.replace(/<p([^>]*?)>([\s\S]*?)<\/p>/gi,(a,i,s)=>{let c=String(i||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!c)return a;let d=ee(c[2]||""),p=d.some(u=>/^import-text-/.test(String(u||""))),l=d.includes("text-muted")||d.some(u=>/^import-font-/.test(String(u||"")));return!p||!l?a:(n+=1,`<div${i}>${s}</div>`)});return e&&n>0&&(e.intentHits+=1,F(e,"intent.typography.metric-paragraph-to-div"),j(e,`Normalized ${n} metric text paragraph tag(s) to div.`)),o}function Wr(r="",e=""){if(!e)return r;let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return t;let o=n[1]||'"',a=ee(n[2]).filter(s=>s!==e);if(a.length===0)return t.replace(n[0],"");let i=` class=${o}${a.join(" ")}${o}`;return t.replace(n[0],i)}function Mo(r="",e=t=>t){let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return t;let o=n[1]||'"',a=ee(n[2]),i=e(Array.from(a)),s=Array.isArray(i)?i.filter(Boolean):a;if(s.length===0)return t.replace(n[0],"");let c=` class=${o}${s.join(" ")}${o}`;return t.replace(n[0],c)}function zo(r="",e=null){let t=String(r||"");if(!t)return t;let n=0,o=t.replace(/<(div|section|article|aside)([^>]*)>\s*<(p|div)([^>]*)>[\s\S]*?<\/\3>\s*<(p|div)([^>]*)>[\s\S]*?<\/\5>\s*<\/\1>/gi,(a,i,s,c,d,p,l)=>{let u=String(s||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!u||!ee(u[2]).includes("stack-sm"))return a;let m=String(d||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i),f=String(l||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!m||!f)return a;let h=ee(m[2]),y=ee(f[2]);if(!(h.some(k=>/^import-text-/.test(String(k||"")))&&y.some(k=>/^import-text-/.test(String(k||"")))))return a;let w=Wr(s,"stack-sm");return n+=1,a.replace(`<${i}${s}>`,`<${i}${w}>`)});return e&&n>0&&(e.intentHits+=1,F(e,"intent.typography.metric-pair-no-stack"),j(e,`Removed stack-sm from ${n} metric text pair container(s).`)),o}function Eo(r={}){if(!r||typeof r!="object")return{};let e=r.typography;if(e&&typeof e=="object")return e;let t=r.design?.typography;return t&&typeof t=="object"?t:{}}function To(r={}){let e=Eo(r),t=Number(e.fontScale);return Number.isFinite(t)?Math.max(1,Math.min(2,t)):st}function Ao(r="",e=st){let n={"4xl":1,"3xl":2,"2xl":3,xl:4}[r];if(!n)return"";let o=Number.isFinite(Number(e))?Math.max(1,Math.min(2,Number(e))):st,a=Math.max(-1,Math.min(1,Math.round((o-st)/.25))),i=n-a;return i<1?"h1":i>4?"":`h${i}`}function Lo(r="",e=null,t={}){let n=String(r||"");if(!n)return n;let o=To(t.config||{}),a=0,i=0,s=n.replace(/<(p|div|span)([^>]*)>([\s\S]*?)<\/\1>/gi,(c,d,p,l)=>{let u=String(p||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!u)return c;let g=ee(u[2]);if(!g.includes("import-font-bold"))return c;let f=g.find(k=>/^import-text-(?:4xl|3xl|2xl|xl)$/.test(String(k||"")))||"",h=f.match(/^import-text-(4xl|3xl|2xl|xl)$/);if(h){let k=Ao(h[1],o);if(!k)return c;let C=Mo(p,$=>$.filter(R=>R!=="import-font-bold"&&R!==f));return a+=1,`<${k}${C}>${l}</${k}>`}let y=/<\/?(?:div|p|section|article|aside|main|header|footer|ul|ol|li|table|tr|td|th|h[1-6])\b/i.test(l),x=/<\/?(?:strong|b)\b/i.test(l);if(y||x)return c;let w=Wr(p,"import-font-bold");return i+=1,`<${d}${w}><strong>${l}</strong></${d}>`});return e&&(a>0&&(e.intentHits+=1,F(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,F(e,"intent.typography.bold-to-strong"),j(e,`Wrapped ${i} bold text node(s) in strong tags.`))),s}function Ro(r=[]){if(!Array.isArray(r)||r.length===0)return"";let e=r.filter(n=>!lt.includes(n));if(e.length===0||e.length>1)return"";let t=e[0];return["hover","focus","active"].includes(t)?t:""}function Nr(r,e="base",t=[]){let n=Ro(t),o=fo[r];if(o)return{declaration:o,breakpoint:e,pseudo:n,ruleId:"fallback.import-style"};let a=String(r).match(/^gap-(\d+)$/);if(a){let v={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)"},S=Number(a[1]);if(v[S])return{declaration:`gap:${v[S]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.gap-scale"}}let i=String(r).match(/^(mt|mb|my)-(.+)$/);if(i){let v=i[1],S=i[2],z=Ie(S);if(z){let T="";return v==="mt"?T=`margin-top:${z}`:v==="mb"?T=`margin-bottom:${z}`:T=`margin-top:${z};margin-bottom:${z}`,{declaration:T,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.margin-scale"}}}let s=String(r).match(/^min-w-\[([^\]]+)\]$/);if(s){let v=we(s[1]);if(ke(v))return{declaration:`min-width:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-width-arbitrary"}}let c=String(r).match(/^max-w-\[([^\]]+)\]$/);if(c){let v=we(c[1]);if(ke(v))return{declaration:`max-width:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.max-width-arbitrary"}}let d=String(r).match(/^min-h-\[([^\]]+)\]$/);if(d){let v=we(d[1]);if(ke(v))return{declaration:`min-height:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-height-arbitrary"}}let p=String(r).match(/^grid-rows-\[([^\]]+)\]$/);if(p){let v=we(p[1]);if(ke(v))return{declaration:`grid-template-rows:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.grid-rows-arbitrary"}}let l=String(r).match(/^size-(.+)$/);if(l){let v=Ie(l[1]);if(v)return{declaration:`width:${v};height:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.size-scale"}}let u=String(r).match(/^w-(.+)$/);if(u){let v=Ie(u[1]);if(v)return{declaration:`width:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.width-scale"}}let g=String(r).match(/^h-(.+)$/);if(g){let v=Ie(g[1]);if(v)return{declaration:`height:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.height-scale"}}let m={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)"},f=String(r).match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$/);if(f)return{declaration:`font-size:${m[f[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-size"};let h={normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},y=String(r).match(/^font-(normal|medium|semibold|bold|extrabold|black)$/);if(y)return{declaration:`font-weight:${h[y[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.font-weight"};let x={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},w=String(r).match(/^leading-(none|tight|snug|normal|relaxed|loose)$/);if(w)return{declaration:`line-height:${x[w[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.line-height"};let k={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},C=String(r).match(/^tracking-(tighter|tight|normal|wide|wider|widest)$/);if(C)return{declaration:`letter-spacing:${k[C[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.tracking"};let $=String(r).match(/^bg-black\/(\d{1,3})$/);if($)return{declaration:`background-color:color-mix(in srgb, var(--color-gray-900) ${Math.max(0,Math.min(100,Number($[1])))}%, transparent)`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.overlay-alpha"};if(r==="text-white")return{declaration:"color:var(--color-gray-50)",breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-inverse"};let R=String(r).match(/^bg-(primary|secondary|accent)$/);if(R){let S={primary:"var(--color-primary-fill)",secondary:"var(--color-gray-500)",accent:"var(--color-accent-500)"}[R[1]];if(S)return{declaration:`background-color:${S}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-semantic"}}let P=String(r).match(/^bg-([a-z]+)-(\d{2,3})$/);if(P){let v=je(P[1],P[2]);if(v)return{declaration:`background-color:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-tokenized"}}let E=String(r).match(/^bg-\[([^\]]+)\]$/);if(E){let v=Ir(E[1]);if(v)return{declaration:`background-color:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-arbitrary"}}let A=String(r).match(/^text-([a-z]+)-(\d{2,3})$/);if(A){let v=je(A[1],A[2]);if(v)return{declaration:`color:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-tokenized"}}let N=String(r).match(/^text-\[([^\]]+)\]$/);if(N){let v=Ir(N[1]);if(v)return{declaration:`color:${v}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-arbitrary"}}let M=String(r).match(/^rounded(?:-([trbl]{1,2}))?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(M){let v=M[1]||"",S=M[2]||"sm",z=S==="none"?"0":`var(--radius-${S})`,T={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(!v)return{declaration:`border-radius:${z}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"};let D=(T[v]||[]).map(q=>`border-${q}-radius:${z}`).join(";");if(D)return{declaration:D,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"}}return null}function it(r,e){return typeof r=="number"&&Number.isFinite(r)?`${r}px`:typeof r=="string"&&r.trim()?r.trim():`${e}px`}function Fo(r={}){let t=(r?.design&&typeof r.design=="object"?r.design:r)?.layout?.breakpoints||{};return{sm:it(t.sm,640),md:it(t.md,768),lg:it(t.lg,1024),xl:it(t.xl,1280)}}function Po(r,e){let t=Array.from(r.importBaseStyles.entries()).map(([a,i])=>`.${a}{${i};}`),n=[];for(let[a,i]of r.importResponsiveStyles.entries()){let s=e?.[a];if(!s||!i?.size)continue;let c=Array.from(i.entries()).map(([d,p])=>`.${d}{${p};}`).join(`
|
|
3630
|
+
`;try{if(!document.adoptedStyleSheets.some(m=>m._pdsFouc)){let m=new CSSStyleSheet;m.replaceSync(u),m._pdsFouc=!0,document.adoptedStyleSheets=[m,...document.adoptedStyleSheets]}}catch(g){if(console.warn("Constructable stylesheets not supported, using <style> tag fallback:",g),!document.head.querySelector("style[data-pds-fouc]")){let f=document.createElement("style");f.setAttribute("data-pds-fouc",""),f.textContent=u,document.head.insertBefore(f,document.head.firstChild)}}}let i=e.applyGlobalStyles??!0,s=e.manageTheme??!0,c=e.themeStorageKey??"pure-ds-theme",d=e.preloadStyles??!1,p=e.criticalLayers??["tokens","primitives"],l=e&&e.autoDefine||null;try{let{resolvedTheme:u}=Ge({manageTheme:s,themeStorageKey:c,applyResolvedTheme:o,setupSystemListenerIfNeeded:a}),g=Ct(e,{},{presets:Q,defaultLog:vt,validateDesignConfig:bt,validateInitConfig:yt});if(s&&!se(g.generatorConfig.design,u)){let z=g.presetInfo?.name||g.generatorConfig?.design?.name||g.generatorConfig?.preset||"current preset";console.warn(`PDS theme "${u}" not supported by preset "${z}".`)}let m=g.enhancers,{log:f,...h}=g.generatorConfig,v=structuredClone(h);v.log=f,s&&(v.theme=u);let w=new V(v);if(v.design?.typography)try{await kt(v.design.typography)}catch(z){v?.log?.("warn","Failed to load some fonts from Google Fonts:",z)}if(d&&typeof window<"u"&&document.head)try{let z=p.map(T=>{try{return w.css?.[T]||""}catch(N){return v?.log?.("warn",`Failed to generate critical CSS for layer "${T}":`,N),""}}).filter(T=>T.trim()).join(`
|
|
3631
|
+
`);if(z){let T=document.head.querySelector("style[data-pds-critical]");T&&T.remove();let N=document.createElement("style");N.setAttribute("data-pds-critical",""),N.textContent=z;let C=document.head.querySelector('meta[charset], meta[name="viewport"]');C?C.parentNode.insertBefore(N,C.nextSibling):document.head.insertBefore(N,document.head.firstChild)}}catch(z){v?.log?.("warn","Failed to preload critical styles:",z)}r.registry.setLiveMode(),g.presetInfo?.name?v?.log?.("log",`PDS live with preset "${g.presetInfo.name}"`):v?.log?.("log","PDS live with custom config"),i&&(r.applyStyles?.(V.instance),typeof window<"u"&&setTimeout(()=>{let z=document.head.querySelector("style[data-pds-critical]");z&&z.remove();let T=document.head.querySelector("style[data-pds-preload]");T&&T.remove();let N=document.getElementById("pds-runtime-stylesheet");N&&N.remove()},100));let b=be(e,{resolvePublicAssetURL:me}),S;l&&l.baseURL?S=fe(he(l.baseURL,{preferModule:!1})):S=`${b}components/`;let R=null,$=[];try{let z=await Ve({autoDefineBaseURL:S,autoDefinePreload:l&&Array.isArray(l.predefine)&&l.predefine||[],autoDefineMapper:l&&typeof l.mapper=="function"&&l.mapper||null,enhancers:m,autoDefineOverrides:l||null,autoDefinePreferModule:!(l&&l.baseURL)},{baseEnhancers:dr});R=z.autoDefiner,$=z.mergedEnhancers||[]}catch(z){v?.log?.("error","\u274C Failed to initialize AutoDefiner/Enhancers:",z)}let L=w?.options||v,P=ie(e);if(r.currentConfig=Object.freeze({mode:"live",...structuredClone(P),design:structuredClone(g.generatorConfig.design),preset:g.generatorConfig.preset,theme:u,enhancers:$}),r.configEditorMetadata=Ee(g.generatorConfig.design),r.configFormSchema=ue(g.generatorConfig.design),typeof n=="function"&&n({mode:"live",source:"live:config-applied",preset:g.generatorConfig.preset}),typeof document<"u")try{e?.liveEdit?setTimeout(()=>{_n()},0):On()}catch(z){v?.log?.("warn","Live editor toggle failed to start:",z)}return t({mode:"live",generator:w,config:L,theme:u,autoDefiner:R}),{generator:w,config:L,theme:u,autoDefiner:R}}catch(u){throw r.dispatchEvent(new CustomEvent("pds:error",{detail:{error:u}})),u}}function Gn(r){let e=Number(r);return Number.isFinite(e)?Math.max(0,Math.min(1,e)):.5}function Vn(r){return Array.isArray(r)?r.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 O(r={}){let e=String(r.source||"unknown"),t=String(r.type||"generic"),n=Gn(r.confidence),o=Vn(r.issues),a=r.designPatch&&typeof r.designPatch=="object"?r.designPatch:{},i=r.template&&typeof r.template=="object"?r.template:null;return{source:e,type:t,confidence:n,issues:o,designPatch:a,template:i,meta:r.meta&&typeof r.meta=="object"?r.meta:{}}}function Jn(r){return!!(r&&typeof r=="object"&&"source"in r&&"type"in r&&"confidence"in r&&"issues"in r&&"designPatch"in r)}var Yn="../templates/templates.json",kr="/assets/pds/templates/templates.json",Qn=["public","assets","pds","templates","templates.json"],Kn=["..","..","..","public","assets","pds","templates","templates.json"],Ze=null;function Sr(){return!!(typeof process<"u"&&process?.versions?.node)}function Zn(r={}){return{id:String(r.id||"").trim(),name:String(r.name||r.id||"Template").trim(),description:String(r.description||"").trim(),icon:String(r.icon||"layout").trim(),file:String(r.file||"").trim(),tags:Array.isArray(r.tags)?r.tags.map(e=>String(e)):[]}}function Xe(r={},e={}){let n=(Array.isArray(r)?r:Array.isArray(r?.templates)?r.templates:[]).map(Zn).filter(o=>o.id&&o.file);return{version:r?.version||"1",templates:n,__catalogURL:e.catalogURL||null,__catalogFilePath:e.catalogFilePath||null}}async function Xn(r={}){let t=[r.catalogURL||globalThis?.PDS?.currentConfig?.templateCatalogURL,Yn,kr].filter(Boolean);for(let n of t)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 Xe(i,{catalogURL:o})}catch{}return Xe({templates:[]})}async function eo(r={}){let e="node:fs/promises",t="node:path",n="node:url",[{readFile:o},a,{fileURLToPath:i}]=await Promise.all([import(e),import(t),import(n)]),s=[];r.catalogPath&&s.push(a.resolve(r.catalogPath)),s.push(a.resolve(process.cwd(),...Qn));let c=a.dirname(i(import.meta.url));s.push(a.resolve(c,...Kn));for(let d of s)try{let p=await o(d,"utf8"),l=JSON.parse(p);return Xe(l,{catalogFilePath:d})}catch{}return Xe({templates:[]})}async function to(r,e){if(!r?.file)return"";if(!Sr()){let c=e?.__catalogURL||kr,d=new URL(r.file,c).href,p=await fetch(d,{credentials:"same-origin"});if(!p.ok)throw new Error(`Template file not found: ${r.file}`);return(await p.text()).trim()}let t="node:fs/promises",n="node:path",[{readFile:o},a]=await Promise.all([import(t),import(n)]),i=e?.__catalogFilePath?a.dirname(e.__catalogFilePath):a.resolve(process.cwd(),"public","assets","pds","templates"),s=a.resolve(i,r.file);return(await o(s,"utf8")).trim()}async function et(r={}){return Ze&&!r.forceReload||(Ze=Sr()?await eo(r):await Xn(r)),Ze}async function $r(r={}){return(await et(r)).templates.map(({id:t,name:n,description:o,icon:a,file:i,tags:s})=>({id:t,name:n,description:o,icon:a,file:i,tags:s}))}async function ro(r,e={}){let t=await et(e),n=t.templates.find(a=>a.id===r)||null;if(!n)return null;let o=await to(n,t);return{...n,html:o}}async function Cr(r,e={}){let t=await ro(r,e);return t?O({source:"template",type:"template",confidence:1,template:{id:t.id,name:t.name,html:t.html,icon:t.icon,description:t.description}}):O({source:"template",type:"template",confidence:0,issues:[{severity:"error",message:`Unknown template: ${r}`}]})}var Mr={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();Ft();var Bt=class extends EventTarget{},A=new Bt;A.initializing=!1;A.currentPreset=null;A.debug=!1;var tt=null,rt=null,nt=null,ot=null;function at(r,e){return e&&typeof e=="string"?e:`${be(A.currentConfig||{},{resolvePublicAssetURL:me})}core/${r}`}async function oo(){return Array.isArray(A.defaultEnhancers)&&A.defaultEnhancers.length>0?A.defaultEnhancers:(ot||(ot=import(at("pds-enhancers.js",A.currentConfig?.enhancersURL)).then(e=>{let t=Array.isArray(e?.defaultPDSEnhancers)?e.defaultPDSEnhancers:[];return A.defaultEnhancers=t,t}).catch(e=>{throw ot=null,e})),ot)}async function ao(){return typeof A.ask=="function"&&A.ask!==Er?A.ask:(rt||(rt=import(at("pds-ask.js",A.currentConfig?.askURL)).then(e=>{let t=e?.ask;if(typeof t!="function")throw new Error("Failed to load ask helper");return A.ask=t,t}).catch(e=>{throw rt=null,e})),rt)}async function Pe(){return typeof A.toast=="function"&&A.toast!==ve?A.toast:(nt||(nt=import(at("pds-toast.js",A.currentConfig?.toastURL)).then(e=>{let t=e?.toast;if(typeof t!="function")throw new Error("Failed to load toast helper");return A.toast=t,t}).catch(e=>{throw nt=null,e})),nt)}async function Er(...r){return(await ao())(...r)}async function ve(...r){return(await Pe())(...r)}ve.success=async(...r)=>(await Pe()).success(...r);ve.error=async(...r)=>(await Pe()).error(...r);ve.warning=async(...r)=>(await Pe()).warning(...r);ve.info=async(...r)=>(await Pe()).info(...r);var zr=function(r="log",e,...t){let n=!!(A.registry&&!A.registry.isLive),o=(this?.debug||this?.design?.debug||A.debug||!1)===!0;if(n){if(!A.debug)return}else if(!o&&r!=="error"&&r!=="warn")return;let a=console[r]||console.log;t.length>0?a(e,...t):a(e)};function Ot(r){if(r==null)return r;if(typeof r=="function")return;if(typeof r!="object")return r;if(Array.isArray(r))return r.map(t=>Ot(t)).filter(t=>t!==void 0);let e={};for(let[t,n]of Object.entries(r)){let o=Ot(n);o!==void 0&&(e[t]=o)}return e}async function io(r,e={}){if(e?.runtimeConfig===!1||typeof fetch!="function")return null;let t=e?.runtimeConfigURL||`${r}pds-runtime-config.json`;try{let n=await fetch(t,{cache:"no-store"});return n.ok?await n.json():null}catch{return null}}A.registry=ge;A.enums=y;A.adoptLayers=Ue;A.adoptPrimitives=We;A.parse=Rt;A.createStylesheet=cr;A.isLiveMode=()=>ge.isLive;A.ask=Er;A.toast=ve;A.common=Ye;A.AutoComplete=null;A.loadAutoComplete=async()=>{if(A.AutoComplete&&typeof A.AutoComplete.connect=="function")return A.AutoComplete;let r=at("pds-autocomplete.js",A.currentConfig?.autoCompleteURL);return tt||(tt=import(r).then(e=>{let t=e?.AutoComplete||e?.default?.AutoComplete||e?.default||null;if(!t)throw new Error("AutoComplete export not found in module");return A.AutoComplete=t,t}).catch(e=>{throw tt=null,e})),tt};function Tr(r){let e=typeof CustomEvent=="function";try{let t=e?new CustomEvent("pds:ready",{detail:r}):new Event("pds:ready");A.dispatchEvent(t)}catch{}if(typeof document<"u")if(e){let t={detail:r,bubbles:!0,composed:!0};try{document.dispatchEvent(new CustomEvent("pds:ready",t))}catch{}try{document.dispatchEvent(new CustomEvent("pds-ready",t))}catch{}}else{try{document.dispatchEvent(new Event("pds:ready"))}catch{}try{document.dispatchEvent(new Event("pds-ready"))}catch{}}}function Ar(r={}){let e=typeof CustomEvent=="function",t={at:Date.now(),...r};try{let n=e?new CustomEvent("pds:config-changed",{detail:t}):new Event("pds:config-changed");A.dispatchEvent(n)}catch{}if(typeof document<"u")if(e){let n={detail:t,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 jt="pure-ds-theme",le=null,Fe=null;function _t(r){try{if(typeof document>"u")return;let e="light";r?r==="system"?e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e=r:e=typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",document.documentElement.setAttribute("data-theme",e)}catch{}}function Dt(r){try{if(le&&Fe){try{typeof le.removeEventListener=="function"?le.removeEventListener("change",Fe):typeof le.removeListener=="function"&&le.removeListener(Fe)}catch{}le=null,Fe=null}if(r==="system"&&typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-color-scheme: dark)"),t=n=>{let o=n?.matches===void 0?e.matches:n.matches;try{let a=o?"dark":"light";document.documentElement.setAttribute("data-theme",a),A.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:a,source:"system"}}))}catch{}};le=e,Fe=t,typeof e.addEventListener=="function"?e.addEventListener("change",t):typeof e.addListener=="function"&&e.addListener(t)}}catch{}}Object.defineProperty(A,"theme",{get(){try{return typeof window>"u"?null:localStorage.getItem(jt)||null}catch{return null}},set(r){try{if(typeof window>"u")return;let e=A.currentConfig?.design||null,t=ye(r);if(e&&!se(e,t)){let n=e?.name||A.currentPreset?.name||A.currentConfig?.preset||"current preset";console.warn(`PDS theme "${t}" not supported by preset "${n}".`),A.dispatchEvent(new CustomEvent("pds:theme:blocked",{detail:{theme:r,resolvedTheme:t,preset:n}}));return}r==null?localStorage.removeItem(jt):localStorage.setItem(jt,r),_t(r),Dt(r),A.dispatchEvent(new CustomEvent("pds:theme:changed",{detail:{theme:r,source:"api"}}))}catch{}}});A.defaultEnhancers=[];async function so(r){let e=r&&r.mode||"live",{mode:t,...n}=r||{};if(e==="static")return lo(n);let o=be(n,{resolvePublicAssetURL:me}),a=n?.managerURL||n?.public?.managerURL||n?.manager?.url||new URL("core/pds-manager.js",o).href||new URL("./pds-manager.js",import.meta.url).href,{startLive:i}=await import(a);return i(A,n,{emitReady:Tr,emitConfigChanged:Ar,applyResolvedTheme:_t,setupSystemListenerIfNeeded:Dt})}A.start=so;async function lo(r){if(!r||typeof r!="object")throw new Error("PDS.start({ mode: 'static', ... }) requires a valid configuration object");let e=r.applyGlobalStyles??!0,t=r.manageTheme??!0,n=r.themeStorageKey??"pure-ds-theme",o=r.staticPaths??{},a=be(r,{resolvePublicAssetURL:me}),i=r&&r.autoDefine||null,s;i&&i.baseURL?s=fe(he(i.baseURL,{preferModule:!1})):s=`${a}components/`;let c=i&&Array.isArray(i.predefine)&&i.predefine||[],d=i&&typeof i.mapper=="function"&&i.mapper||null;try{qe(A);let{resolvedTheme:p}=Ge({manageTheme:t,themeStorageKey:n,applyResolvedTheme:_t,setupSystemListenerIfNeeded:Dt}),l=await io(a,r),u=Array.isArray(r?.enhancers)?r.enhancers:r?.enhancers&&typeof r.enhancers=="object"?Object.values(r.enhancers):[],g=l?.config?{...l.config,...r,design:r?.design||l.config.design,preset:r?.preset||l.config.preset}:{...r},m={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`},f=l?.paths||{};if(o={...m,...f,...o},A.registry.setStaticMode(o),e&&typeof document<"u")try{let b=await A.registry.getStylesheet("styles");if(b){b._pds=!0;let S=(document.adoptedStyleSheets||[]).filter(R=>R._pds!==!0);document.adoptedStyleSheets=[...S,b],Ar({mode:"static",source:"static:styles-applied"})}}catch(b){zr.call(A,"warn","Failed to apply static styles:",b)}let h=null,v=[];try{let b=await oo(),S=await Ve({autoDefineBaseURL:s,autoDefinePreload:c,autoDefineMapper:d,enhancers:u,autoDefineOverrides:i||null,autoDefinePreferModule:!(i&&i.baseURL)},{baseEnhancers:b});h=S.autoDefiner,v=S.mergedEnhancers||[]}catch(b){zr.call(A,"error","\u274C Failed to initialize AutoDefiner/Enhancers (static):",b)}let w=Ot(r);return A.currentConfig=Object.freeze({mode:"static",...structuredClone(w),design:structuredClone(g.design||{}),preset:g.preset,theme:p,enhancers:v}),Tr({mode:"static",config:g,theme:p,autoDefiner:h}),{config:g,theme:p,autoDefiner:h}}catch(p){throw A.dispatchEvent(new CustomEvent("pds:error",{detail:{error:p}})),p}}var co="src/js/pds-live-manager/tailwind-conversion-rules.json",lt=["base","sm","md","lg","xl","2xl"];function po(r={}){let e=Array.isArray(r.ignoredPatterns)?r.ignoredPatterns.map(n=>({...n,pattern:n?.pattern instanceof RegExp?n.pattern:new RegExp(String(n?.pattern||""))})):[],t=Array.isArray(r.nonPdsClassPatterns)?r.nonPdsClassPatterns.map(n=>n instanceof RegExp?n:new RegExp(String(n||""))):[];return{...r,ignoredPatterns:e,nonPdsClassPatterns:t}}var H=po(Mr),Lr=H.version||"tw2pds-layout-v4",uo=new Map(H.directMappings.map(r=>[r.tw,r])),Wt=new Map(Object.entries(H.gapScaleMap||{})),Rr=new Map(Object.entries(H.maxWidthMap||{})),go=H.nonPdsClassPatterns||[],mo=new Set(H.neverFallbackTags||[]),fo={...H.importStyleRules||{}},ho=H.tailwindSizeScale||{},Ut=Array.isArray(H.tailwindShadeScale)?H.tailwindShadeScale.map(r=>String(r)).filter(Boolean):["50","100","200","300","400","500","600","700","800","900"],Fr=Ut.includes(String(H.defaultTailwindShade||""))?String(H.defaultTailwindShade):"500",st=1.2,bo=["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 Pr(r="",e=""){if(!r||!e)return r;let t=new RegExp(`\\s${e}\\s*=\\s*("[^"]*"|'[^']*'|[^\\s>]+)`,"gi");return String(r).replace(t,"")}function yo(r="",e=null){let t=String(r||""),n=0;return t=t.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(input)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*?)>/gi,(o,a,i,s,c,d,p,l,u,g,m)=>{if(s!==g)return o;let f=Pr(`${a||""}${c||""}`,"for"),h=`<${p}${l||""} id="${g}"${m||""}>`;return n+=1,`<label${f}>${d}${h}</label>`}),t=t.replace(/<label([^>]*?)\sfor\s*=\s*(["'])([^"']+)\2([^>]*)>([\s\S]*?)<\/label>\s*<(select|textarea)([^>]*?)\sid\s*=\s*(["'])([^"']+)\8([^>]*)>([\s\S]*?)<\/\6>/gi,(o,a,i,s,c,d,p,l,u,g,m,f)=>{if(s!==g)return o;let h=Pr(`${a||""}${c||""}`,"for"),v=`<${p}${l||""} id="${g}"${m||""}>${f}</${p}>`;return n+=1,`<label${h}>${d}${v}</label>`}),e&&n>0&&(e.labelNestingCount+=n,j(e,`Nested ${n} label/control pairs.`),F(e,"intent.form.nested-label")),t}function vo(r="",e="base"){let t=String(r||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"rule";return`import-${e&&e!=="base"?`${e}-`:""}${t}`}function ce(r,e,t,n="base",o=""){if(!r||!e||!t)return"";let a=vo(e,n);if(o){let i=`${n}|${o}`;r.importPseudoStyles.has(i)||r.importPseudoStyles.set(i,new Map),r.importPseudoStyles.get(i).set(a,t)}else n==="base"?r.importBaseStyles.set(a,t):(r.importResponsiveStyles.has(n)||r.importResponsiveStyles.set(n,new Map),r.importResponsiveStyles.get(n).set(a,t));return r.importedStyleCount+=1,a}function we(r=""){return String(r||"").trim().replace(/_/g," ")}function ke(r=""){return!r||/[;{}]/.test(r)?!1:/^[-#(),.%/\sa-zA-Z0-9]+$/.test(r)}function Ie(r=""){let e=String(r||"").trim();if(!e)return null;let t=e.match(/^\[([^\]]+)\]$/);if(t){let n=we(t[1]);return ke(n)?n:null}return ho[e]||null}function xo(r=""){let e=Number(r);if(!Number.isFinite(e))return Fr;let t=String(e);return Ut.includes(t)?t:Ut.reduce((n,o)=>{let a=Math.abs(Number(n)-e);return Math.abs(Number(o)-e)<a?o:n},Fr)}function je(r="",e="500"){let t=String(r||"").toLowerCase(),n=xo(e);return["blue","sky","indigo","cyan"].includes(t)?`var(--color-primary-${n})`:["purple","violet","fuchsia"].includes(t)?`var(--color-accent-${n})`:["green","emerald","lime","teal"].includes(t)?`var(--color-success-${n})`:["yellow","amber","warning"].includes(t)?`var(--color-warning-${n})`:["red","rose","pink","orange"].includes(t)?`var(--color-danger-${n})`:["slate","gray","zinc","neutral","stone"].includes(t)?`var(--color-gray-${n})`:""}function Ir(r=""){let e=we(r);return ke(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 ee(r=""){return String(r||"").split(/\s+/).map(e=>e.trim()).filter(Boolean)}function wo(r="",e=""){if(!e)return r;let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return`${t} class="${e}"`;let o=n[1]||'"',a=ee(n[2]);a.includes(e)||a.push(e);let i=` class=${o}${a.join(" ")}${o}`;return t.replace(n[0],i)}function ko(r="",e=""){return e?new RegExp(`\\s${e}\\s*=`,"i").test(String(r||"")):!1}function So(r=""){let e=String(r||"").replace(/[-_]+/g," ").trim();return e?e.replace(/(^|\s)([a-z])/g,(t,n,o)=>`${n}${o.toUpperCase()}`):"Icon button"}function $o(r="",e=null){let t=String(r||"");return t&&t.replace(/<(button|a)([^>]*)>\s*(<pds-icon\b[^>]*><\/pds-icon>)\s*<\/\1>/gi,(n,o,a,i)=>{let s=wo(a,"icon-only");if(!ko(s,"aria-label")){let c=String(i).match(/\sicon\s*=\s*(["'])(.*?)\1/i),d=c?String(c[2]||""):"",p=So(d);s+=` aria-label="${p}"`}return e&&(e.intentHits+=1,F(e,"intent.component.button.icon-only-markup")),`<${o}${s}>${i}</${o}>`})}function Co(r="",e=null){let t=String(r||"");if(!t)return t;let n=0,o=t.replace(/<p([^>]*?)>([\s\S]*?)<\/p>/gi,(a,i,s)=>{let c=String(i||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!c)return a;let d=ee(c[2]||""),p=d.some(u=>/^import-text-/.test(String(u||""))),l=d.includes("text-muted")||d.some(u=>/^import-font-/.test(String(u||"")));return!p||!l?a:(n+=1,`<div${i}>${s}</div>`)});return e&&n>0&&(e.intentHits+=1,F(e,"intent.typography.metric-paragraph-to-div"),j(e,`Normalized ${n} metric text paragraph tag(s) to div.`)),o}function Wr(r="",e=""){if(!e)return r;let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return t;let o=n[1]||'"',a=ee(n[2]).filter(s=>s!==e);if(a.length===0)return t.replace(n[0],"");let i=` class=${o}${a.join(" ")}${o}`;return t.replace(n[0],i)}function Mo(r="",e=t=>t){let t=String(r||""),n=t.match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!n)return t;let o=n[1]||'"',a=ee(n[2]),i=e(Array.from(a)),s=Array.isArray(i)?i.filter(Boolean):a;if(s.length===0)return t.replace(n[0],"");let c=` class=${o}${s.join(" ")}${o}`;return t.replace(n[0],c)}function zo(r="",e=null){let t=String(r||"");if(!t)return t;let n=0,o=t.replace(/<(div|section|article|aside)([^>]*)>\s*<(p|div)([^>]*)>[\s\S]*?<\/\3>\s*<(p|div)([^>]*)>[\s\S]*?<\/\5>\s*<\/\1>/gi,(a,i,s,c,d,p,l)=>{let u=String(s||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!u||!ee(u[2]).includes("stack-sm"))return a;let m=String(d||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i),f=String(l||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!m||!f)return a;let h=ee(m[2]),v=ee(f[2]);if(!(h.some(S=>/^import-text-/.test(String(S||"")))&&v.some(S=>/^import-text-/.test(String(S||"")))))return a;let b=Wr(s,"stack-sm");return n+=1,a.replace(`<${i}${s}>`,`<${i}${b}>`)});return e&&n>0&&(e.intentHits+=1,F(e,"intent.typography.metric-pair-no-stack"),j(e,`Removed stack-sm from ${n} metric text pair container(s).`)),o}function Eo(r={}){if(!r||typeof r!="object")return{};let e=r.typography;if(e&&typeof e=="object")return e;let t=r.design?.typography;return t&&typeof t=="object"?t:{}}function To(r={}){let e=Eo(r),t=Number(e.fontScale);return Number.isFinite(t)?Math.max(1,Math.min(2,t)):st}function Ao(r="",e=st){let n={"4xl":1,"3xl":2,"2xl":3,xl:4}[r];if(!n)return"";let o=Number.isFinite(Number(e))?Math.max(1,Math.min(2,Number(e))):st,a=Math.max(-1,Math.min(1,Math.round((o-st)/.25))),i=n-a;return i<1?"h1":i>4?"":`h${i}`}function Lo(r="",e=null,t={}){let n=String(r||"");if(!n)return n;let o=To(t.config||{}),a=0,i=0,s=n.replace(/<(p|div|span)([^>]*)>([\s\S]*?)<\/\1>/gi,(c,d,p,l)=>{let u=String(p||"").match(/\sclass\s*=\s*(["'])(.*?)\1/i);if(!u)return c;let g=ee(u[2]);if(!g.includes("import-font-bold"))return c;let f=g.find(S=>/^import-text-(?:4xl|3xl|2xl|xl)$/.test(String(S||"")))||"",h=f.match(/^import-text-(4xl|3xl|2xl|xl)$/);if(h){let S=Ao(h[1],o);if(!S)return c;let R=Mo(p,$=>$.filter(L=>L!=="import-font-bold"&&L!==f));return a+=1,`<${S}${R}>${l}</${S}>`}let v=/<\/?(?:div|p|section|article|aside|main|header|footer|ul|ol|li|table|tr|td|th|h[1-6])\b/i.test(l),w=/<\/?(?:strong|b)\b/i.test(l);if(v||w)return c;let b=Wr(p,"import-font-bold");return i+=1,`<${d}${b}><strong>${l}</strong></${d}>`});return e&&(a>0&&(e.intentHits+=1,F(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,F(e,"intent.typography.bold-to-strong"),j(e,`Wrapped ${i} bold text node(s) in strong tags.`))),s}function Ro(r=[]){if(!Array.isArray(r)||r.length===0)return"";let e=r.filter(n=>!lt.includes(n));if(e.length===0||e.length>1)return"";let t=e[0];return["hover","focus","active"].includes(t)?t:""}function Nr(r,e="base",t=[]){let n=Ro(t),o=fo[r];if(o)return{declaration:o,breakpoint:e,pseudo:n,ruleId:"fallback.import-style"};let a=String(r).match(/^gap-(\d+)$/);if(a){let x={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)"},k=Number(a[1]);if(x[k])return{declaration:`gap:${x[k]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.gap-scale"}}let i=String(r).match(/^(mt|mb|my)-(.+)$/);if(i){let x=i[1],k=i[2],M=Ie(k);if(M){let E="";return x==="mt"?E=`margin-top:${M}`:x==="mb"?E=`margin-bottom:${M}`:E=`margin-top:${M};margin-bottom:${M}`,{declaration:E,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.margin-scale"}}}let s=String(r).match(/^min-w-\[([^\]]+)\]$/);if(s){let x=we(s[1]);if(ke(x))return{declaration:`min-width:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-width-arbitrary"}}let c=String(r).match(/^max-w-\[([^\]]+)\]$/);if(c){let x=we(c[1]);if(ke(x))return{declaration:`max-width:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.max-width-arbitrary"}}let d=String(r).match(/^min-h-\[([^\]]+)\]$/);if(d){let x=we(d[1]);if(ke(x))return{declaration:`min-height:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.min-height-arbitrary"}}let p=String(r).match(/^grid-rows-\[([^\]]+)\]$/);if(p){let x=we(p[1]);if(ke(x))return{declaration:`grid-template-rows:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.grid-rows-arbitrary"}}let l=String(r).match(/^size-(.+)$/);if(l){let x=Ie(l[1]);if(x)return{declaration:`width:${x};height:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.size-scale"}}let u=String(r).match(/^w-(.+)$/);if(u){let x=Ie(u[1]);if(x)return{declaration:`width:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.width-scale"}}let g=String(r).match(/^h-(.+)$/);if(g){let x=Ie(g[1]);if(x)return{declaration:`height:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.height-scale"}}let m={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)"},f=String(r).match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl)$/);if(f)return{declaration:`font-size:${m[f[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-size"};let h={normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},v=String(r).match(/^font-(normal|medium|semibold|bold|extrabold|black)$/);if(v)return{declaration:`font-weight:${h[v[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.font-weight"};let w={none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"},b=String(r).match(/^leading-(none|tight|snug|normal|relaxed|loose)$/);if(b)return{declaration:`line-height:${w[b[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.line-height"};let S={tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},R=String(r).match(/^tracking-(tighter|tight|normal|wide|wider|widest)$/);if(R)return{declaration:`letter-spacing:${S[R[1]]}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.tracking"};let $=String(r).match(/^bg-black\/(\d{1,3})$/);if($)return{declaration:`background-color:color-mix(in srgb, var(--color-gray-900) ${Math.max(0,Math.min(100,Number($[1])))}%, transparent)`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.overlay-alpha"};if(r==="text-white")return{declaration:"color:var(--color-gray-50)",breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-inverse"};let L=String(r).match(/^bg-(primary|secondary|accent)$/);if(L){let k={primary:"var(--color-primary-fill)",secondary:"var(--color-gray-500)",accent:"var(--color-accent-500)"}[L[1]];if(k)return{declaration:`background-color:${k}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-semantic"}}let P=String(r).match(/^bg-([a-z]+)-(\d{2,3})$/);if(P){let x=je(P[1],P[2]);if(x)return{declaration:`background-color:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-tokenized"}}let z=String(r).match(/^bg-\[([^\]]+)\]$/);if(z){let x=Ir(z[1]);if(x)return{declaration:`background-color:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.bg-arbitrary"}}let T=String(r).match(/^text-([a-z]+)-(\d{2,3})$/);if(T){let x=je(T[1],T[2]);if(x)return{declaration:`color:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-tokenized"}}let N=String(r).match(/^text-\[([^\]]+)\]$/);if(N){let x=Ir(N[1]);if(x)return{declaration:`color:${x}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.text-arbitrary"}}let C=String(r).match(/^rounded(?:-([trbl]{1,2}))?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(C){let x=C[1]||"",k=C[2]||"sm",M=k==="none"?"0":`var(--radius-${k})`,E={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(!x)return{declaration:`border-radius:${M}`,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"};let D=(E[x]||[]).map(q=>`border-${q}-radius:${M}`).join(";");if(D)return{declaration:D,breakpoint:e,pseudo:n,ruleId:"fallback.import-style.rounded"}}return null}function it(r,e){return typeof r=="number"&&Number.isFinite(r)?`${r}px`:typeof r=="string"&&r.trim()?r.trim():`${e}px`}function Fo(r={}){let t=(r?.design&&typeof r.design=="object"?r.design:r)?.layout?.breakpoints||{};return{sm:it(t.sm,640),md:it(t.md,768),lg:it(t.lg,1024),xl:it(t.xl,1280)}}function Po(r,e){let t=Array.from(r.importBaseStyles.entries()).map(([a,i])=>`.${a}{${i};}`),n=[];for(let[a,i]of r.importResponsiveStyles.entries()){let s=e?.[a];if(!s||!i?.size)continue;let c=Array.from(i.entries()).map(([d,p])=>`.${d}{${p};}`).join(`
|
|
3632
3632
|
`);n.push(`@media (min-width: ${s}) {
|
|
3633
3633
|
${c}
|
|
3634
3634
|
}`)}for(let[a,i]of r.importPseudoStyles.entries()){let[s,c]=String(a).split("|");if(!c||!i?.size)continue;let d=Array.from(i.entries()).map(([l,u])=>`.${l}:${c}{${u};}`).join(`
|
|
@@ -3640,7 +3640,7 @@ ${d}
|
|
|
3640
3640
|
${e}
|
|
3641
3641
|
</style>`;return/<head[^>]*>/i.test(r)?r.replace(/<head([^>]*)>/i,`<head$1>
|
|
3642
3642
|
${t}`):`${t}
|
|
3643
|
-
${r}`}function jr(r=""){if(!r)return!1;if(r.includes(":")||r.includes("["))return!0;let e=r.split("-")[0];return bo.includes(e)}function te(r=""){let e=String(r).split(":");if(e.length===1)return{breakpoint:"base",base:e[0],variants:[]};let t=e[e.length-1],n=e.slice(0,-1);return{breakpoint:n.find(a=>lt.includes(a))||"base",base:t,variants:n}}function No(){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 jo(r=""){let e=String(r||"").toLowerCase().replace(/\s+/g,""),t=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:t,anchorReset:n}}function Bo(r=""){return String(r||"").toLowerCase().includes("cdn.tailwindcss.com")?{listReset:!0,anchorReset:!0}:{listReset:!1,anchorReset:!1}}function Oo(r="",e=null){let t=String(r||""),n={listReset:!1,anchorReset:!1,strippedRuntimeCssBlocks:0,strippedRuntimeScripts:0};return t=t.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 d=jo(s);return n.listReset=n.listReset||d.listReset,n.anchorReset=n.anchorReset||d.anchorReset,n.strippedRuntimeCssBlocks+=1,""}),t=t.replace(/<script([^>]*?)src\s*=\s*(?:(['"])([^"']*cdn\.tailwindcss\.com[^"']*)\2|([^\s>]*cdn\.tailwindcss\.com[^\s>]*))([^>]*)><\/script>/gi,(o,a,i,s,c)=>{let p=Bo(s||c||"");return n.listReset=n.listReset||p.listReset,n.anchorReset=n.anchorReset||p.anchorReset,n.strippedRuntimeScripts+=1,""}),e&&(n.strippedRuntimeCssBlocks>0||n.strippedRuntimeScripts>0)&&(F(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:t,hints:n}}function j(r,e){!r||!e||r.notes.includes(e)||r.notes.push(e)}function _o(r,e){let t=r.unknownTokens.get(e)||0;r.unknownTokens.set(e,t+1)}function Do(r={}){let t=(r?.design&&typeof r.design=="object"?r.design:r)?.layout?.utilities||{};return{grid:t.grid!==!1,flex:t.flex!==!1,spacing:t.spacing!==!1,container:t.container!==!1}}function J(r,e){return e?r?.[e]!==!1:!0}function Br(r){let e=String(r).match(/^grid-cols-(\d+)$/);return e?Number(e[1]):null}function Or(r={}){let e=lt.map(o=>({bp:o,cols:r[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 t=!0;for(let o=1;o<e.length;o+=1)if(e[o].cols<=e[o-1].cols){t=!1;break}if(!t)return null;let n=e[e.length-1]?.cols||0;return n>=4?"grid-auto-md":n>=3?"grid-auto-sm":null}function Wo(r=""){let e=String(r).match(/^text-(gray|slate|zinc|neutral|stone)-(\d{2,3})$/);if(!e)return"";let t=Number(e[2]);return Number.isFinite(t)&&t>=400&&t<=600?"text-muted":""}function Uo(r="",e=0){return!r||!Number.isFinite(e)?"":{sm:{2:"sm:grid-cols-2"},md:{3:"md:grid-cols-3"},lg:{4:"lg:grid-cols-4"}}?.[r]?.[e]||""}function Ho(r=""){let e=te(r),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 qo(r=new Set){return Array.from(r).some(e=>{let t=String(e||"");return/^gap-(?:xs|sm|md|lg|xl)$/.test(t)||/^gap-[0-9]+$/.test(t)||/^import-(?:sm-|md-|lg-|xl-)?gap-/.test(t)})}function Go(r=new Set){return Array.from(r).some(e=>/^stack-(?:xs|sm|md|lg|xl)$/.test(String(e||"")))}function Vo(r=new Set){return Array.from(r).some(e=>{let t=String(e||"");return/^grid-cols-\d+$/.test(t)||/^grid-auto-(?:sm|md|lg|xl)$/.test(t)||/^(?:sm|md|lg|xl):grid-cols-\d+$/.test(t)||/^import-(?:sm-|md-|lg-|xl-)?grid-cols-\d+$/.test(t)})}function Jo(r,e=12){return Array.from(r.unknownTokens.entries()).sort((t,n)=>n[1]-t[1]).slice(0,e).map(([t])=>t)}function F(r,e){!r||!e||r.appliedRules.add(e)}function ne(r=[],e){return!Array.isArray(r)||!e?!1:r.some(t=>e.test(String(t)))}function Yo(r=[]){for(let e of r){let t=te(e);if(t.breakpoint!=="base")continue;let n=String(t.base).match(/^h-(.+)$/);if(!n)continue;let o=Ie(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 Qo(r=[],e=""){let t=e==="button",n=ne(r,/^bg-/),o=ne(r,/^hover:bg-/),a=ne(r,/^border/),i=ne(r,/^shadow/),s=r.includes("cursor-pointer"),c=ne(r,/^rounded/),d=ne(r,/^(?:min-w|max-w|w)-/),p=ne(r,/^text-(?:white|black|\[[^\]]+\]|[a-z]+-\d{2,3})$/),l=n||o||i;if(!(t||e==="a"&&(l||a||s||c&&d)))return{shouldNormalize:!1,variant:"none",size:"base",iconOnly:!1};let m="none";a&&!n&&!o?m="outline":(l||n&&p)&&(m="primary");let f=r.includes("rounded-full")&&(r.includes("p-2")||r.includes("p-1")||r.includes("p-2.5")),h=ne(r,/^size-(?:6|7|8|9|10|11|12)$/),y=f||h,x=Yo(r),w=r.includes("text-sm")||r.includes("text-xs"),k=r.includes("text-lg")||r.includes("text-xl"),C="base";return x&&x<=40||w?C="sm":(x&&x>=48||k)&&(C="lg"),{shouldNormalize:!0,variant:m,size:C,iconOnly:y}}function Ko(r=""){let e=String(r||"").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 Zo(r=[],e="",t={shouldNormalize:!1}){if(t?.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(r.some(A=>/^badge(?:-|$)/.test(String(A))))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let n=r.map(A=>te(A)).filter(A=>A.breakpoint==="base").map(A=>String(A.base)),o=n.some(A=>/^rounded(?:-|$)/.test(A)),a=n.some(A=>/^px-/.test(A)),i=n.some(A=>/^py-/.test(A)),s=a&&i,c=n.includes("text-xs")||n.includes("text-sm"),d=n.includes("text-lg")||n.includes("text-xl"),p=n.map(A=>A.match(/^bg-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),l=n.map(A=>A.match(/^text-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),u=n.map(A=>A.match(/^border-([a-z]+)-(\d{2,3})$/)).find(Boolean),g=Number(p?.[2]),m=Number(l?.[2]),f=!!(p&&Number.isFinite(g)&&g<=300),h=n.some(A=>/^border(?:-|$)/.test(A)),y=!!(p||l||u),x=[o,s,c,f||h].filter(Boolean).length;if(!(y&&x>=3))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let k=p&&p[1]||l&&l[1]||u&&u[1]||"",C=Ko(k),$=h&&!f,R=c?"badge-sm":d?"badge-lg":"",P=f?{family:k,bgShade:Number.isFinite(g)?g:200,textShade:Number.isFinite(m)?m:700}:null;return{shouldNormalize:!0,variantClass:P?"":C,outline:$,sizeClass:R,pastel:P}}function Xo(r="",e=0){let t=String(r||"").toLowerCase(),n=Number(e);return t==="white"?"surface-base":["gray","slate","zinc","neutral","stone"].includes(t)?Number.isFinite(n)&&n<=100?"surface-base":"surface-subtle":["blue","sky","cyan","indigo","primary","info"].includes(t)?"surface-info":["purple","violet","fuchsia","accent"].includes(t)?"surface-primary":["green","emerald","lime","teal","success"].includes(t)?"surface-success":["yellow","amber","orange","warning"].includes(t)?"surface-warning":["red","rose","pink","danger"].includes(t)?"surface-danger":"surface-base"}function ea(r=[],e="",t={shouldNormalize:!1},n={shouldNormalize:!1}){if(t?.shouldNormalize||n?.shouldNormalize)return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(!new Set(["div","section","article","aside","li"]).has(e))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(r.some(h=>/^card(?:-|$)/.test(String(h))))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let a=r.map(h=>te(h)).filter(h=>h.breakpoint==="base").map(h=>String(h.base)),i=a.some(h=>/^rounded(?:-|$)/.test(h)),s=a.some(h=>/^border(?:$|-)/.test(h)),c=a.some(h=>/^shadow(?:$|-)/.test(h)),d=a.some(h=>/^(?:p|px|py|pt|pb|pl|pr)-/.test(h)),p=a.map(h=>h.match(/^bg-([a-z]+)-?(\d{2,3})?$/)).find(Boolean),l=a.includes("bg-white")||!!p;if(!([i,s||c,l,d].filter(Boolean).length>=3))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let m="card-basic";c?m="card-elevated":s&&(m="card-outlined");let f="";return c?f="surface-elevated":p?f=Xo(p[1],p[2]):l&&(f="surface-base"),{shouldNormalize:!0,cardVariantClass:m,surfaceClass:f}}function ta({tagName:r,originalClassValue:e,policy:t,summary:n,preflightHints:o={}}){if(mo.has(r))return F(n,"table.strict-tags.no-classes"),"";let a=String(e).split(/\s+/).filter(Boolean),i=Qo(a,r),s=Zo(a,r,i),c=ea(a,r,i,s),d=/^h[1-6]$/.test(r),p=["i","svg"].includes(r)||a.some(M=>/^fa(?:[a-z-]+)?$/i.test(String(M||""))||/^fa-/.test(String(M||""))),l=new Set,u={},g={},m=!1,f="",h="",y=!1,x="";a.forEach(M=>{let v=te(M),S=v.base;if(go.some(I=>I.test(S))){n.ignored+=1,F(n,"cleanup.non-pds-class");return}let z=jr(M)||jr(S);if(z&&(n.totalTailwind+=1),/^space-y-/.test(S)){m=!0,f=f||M,h=h||Ho(M),n.ignored+=1,F(n,"layout.spacing.space-y-to-stack");return}if(/^space-x-/.test(S)){let I=String(S).match(/^space-x-(\d+)$/);if(I){let W=`gap-${I[1]}`,re=Wt.get(W);if(re&&J(t,"spacing")){l.add(re),y=!0,x=x||M,n.mapped+=1,n.intentHits+=1,F(n,"layout.spacing.space-x-to-gap");return}}n.ignored+=1,F(n,"style.spacing.atomic");return}if(/^grid-cols-\d+$/.test(S)&&v.breakpoint!=="base"){let I=Br(S);if(Number.isFinite(I)&&J(t,"grid")){u[v.breakpoint]=I,n.mapped+=1,F(n,"intent.layout.responsive-grid-to-auto");return}if(!J(t,"grid")){n.policySkipped+=1,j(n,"Skipped responsive grid mapping because layout.utilities.grid=false.");return}}if(/^flex-(?:row|col)$/.test(S)&&v.breakpoint!=="base"){if(J(t,"flex")){g[v.breakpoint]=S,n.mapped+=1,F(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(S)&&v.breakpoint==="base"){let I=Br(S);Number.isFinite(I)&&J(t,"grid")&&(u.base=I)}let T=uo.get(S);if(T&&v.breakpoint==="base"){if(!J(t,T.gate)){n.policySkipped+=1,j(n,`Skipped ${S} because layout.utilities.${T.gate}=false.`);return}T.pds.forEach(I=>{I&&l.add(I)}),n.mapped+=1,F(n,T.id);return}if(Wt.has(S)&&v.breakpoint==="base"){if(!J(t,"spacing")){n.policySkipped+=1,j(n,"Skipped gap utility because layout.utilities.spacing=false.");return}l.add(Wt.get(S)),n.mapped+=1,F(n,"layout.spacing.gap-scale");return}if(Rr.has(S)&&v.breakpoint==="base"){if(!J(t,"container")){n.policySkipped+=1,j(n,"Skipped max-width utility because layout.utilities.container=false.");return}l.add(Rr.get(S)),n.mapped+=1,F(n,"layout.container.max-width");return}if(i.shouldNormalize&&z){let I=String(S||"");if(v.breakpoint==="base"&&["flex-1","grow","flex-grow"].includes(I)){l.add("grow"),n.mapped+=1,n.intentHits+=1,F(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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.button.normalize");return}}if(d&&/^(?:text-(?:xs|sm|base|lg|xl|\dxl|white|black|\[[^\]]+\]|[a-z]+-\d{2,3})|font-|leading-|tracking-|uppercase|lowercase|capitalize)/.test(S)){n.ignored+=1,n.intentHits+=1,F(n,"intent.typography.heading-semantic");return}if(s.shouldNormalize&&z){let I=String(S||"");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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.badge.normalize");return}}if(c.shouldNormalize&&z){let I=String(S||"");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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.card.normalize");return}}let B=Wo(S);if(B&&v.breakpoint==="base"){l.add(B),n.mapped+=1,n.intentHits+=1,F(n,"intent.typography.text-neutral-to-muted");return}if(/^text-(?:white|black|[a-z]+-\d{2,3}|\[[^\]]+\])$/.test(S)){if(p||r==="a"&&!i.shouldNormalize){let W=Nr(S,v.breakpoint,v.variants);if(W){let re=ce(n,`${r}-color-${S}`,W.declaration,W.breakpoint,W.pseudo);if(re){l.add(re),n.mapped+=1,n.intentHits+=1,F(n,p?"intent.icon.color-preserve":"intent.typography.link-active-preserve");return}}}n.ignored+=1,F(n,"style.color");return}let q=Nr(S,v.breakpoint,v.variants);if(q){let I=ce(n,S,q.declaration,q.breakpoint,q.pseudo);if(I){l.add(I),n.mapped+=1,n.intentHits+=1,F(n,q.ruleId),v.breakpoint!=="base"&&j(n,`Generated responsive import fallback for ${M}.`);return}}for(let I of H.ignoredPatterns)if(I.pattern.test(S)){n.ignored+=1,F(n,I.id),I.id==="style.spacing.atomic"&&(n.removedAtomicSpacingCount+=1),I.id==="style.positioning.atomic"&&(n.removedAtomicPositioningCount+=1);return}if(z){n.unknown+=1,_o(n,M);return}l.add(M)}),m&&J(t,"spacing")&&(l.add(h||"stack-md"),n.mapped+=1,n.intentHits+=1,j(n,`Mapped ${f} to ${h||"stack-md"}.`)),y&&J(t,"spacing")&&j(n,`Mapped ${x} to gap utility.`);let w=Or(u);if(w&&J(t,"grid")?(l.delete("grid-cols-1"),l.delete("grid-cols-2"),l.delete("grid-cols-3"),l.delete("grid-cols-4"),l.delete("grid-cols-6"),l.add("grid"),l.add(w),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Collapsed responsive grid columns to ${w}.`)):J(t,"grid")&<.filter(v=>v!=="base"&&Number.isFinite(u[v])).forEach(v=>{let S=u[v],z=Uo(v,S);if(z){l.add("grid"),l.add(z),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Mapped ${v}:grid-cols-${S} to ${z}.`);return}let T=ce(n,`grid-cols-${S}`,`grid-template-columns:repeat(${S}, minmax(0, 1fr))`,v);T&&(l.add("grid"),l.add(T),n.intentHits+=1,F(n,"fallback.import-style.grid-cols-responsive"),j(n,`Mapped ${v}:grid-cols-${S} to responsive import fallback for exact columns.`))}),J(t,"flex")&&a.includes("flex-col")&&(g.md==="flex-row"||g.lg==="flex-row")&&(l.delete("flex-col"),l.delete("flex-row"),l.add("mobile-stack"),n.intentHits+=1,F(n,"intent.layout.mobile-stack"),j(n,"Mapped flex-col + breakpoint flex-row to mobile-stack.")),(l.has("flex")||l.has("inline-flex"))&&J(t,"spacing")&&(qo(l)||Go(l)||y||m||(l.add("gap-sm"),n.intentHits+=1,F(n,"layout.spacing.flex-min-gap"),j(n,"Added gap-sm fallback for flex container without explicit spacing."))),a.some(M=>/^grid-cols-\d+$/.test(te(M).base))&&l.has("grid")&&!Vo(l)){let M=Or(u);M?(l.add(M),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Applied grid safety fallback ${M} to avoid bare grid output.`)):Number.isFinite(u.base)&&u.base>1?(l.add(`grid-cols-${u.base}`),n.intentHits+=1,F(n,"intent.layout.grid-safety-fallback"),j(n,`Applied grid safety fallback grid-cols-${u.base} to preserve explicit grid intent.`)):(l.add("mobile-stack"),n.intentHits+=1,F(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.some(M=>/^(?:bg-white|shadow|shadow-md|shadow-lg)$/.test(M)),R=a.some(M=>/^rounded/.test(M));if(["div","section","article","li","aside"].includes(r)&&$&&R&&(l.add("card"),!l.has("surface-elevated")&&a.some(M=>/^shadow/.test(M))&&l.add("surface-elevated"),!l.has("surface-base")&&a.includes("bg-white")&&l.add("surface-base"),n.intentHits+=1,F(n,"intent.component.card")),r==="button"||r==="a"){let M=a.some(z=>/^bg-(?:[a-z]+-)?[4567]00$/.test(z))&&a.includes("text-white"),v=a.some(z=>/^border/.test(z))&&!M,S=a.includes("p-2")&&a.includes("rounded-full");M?(l.delete("surface-base"),l.delete("surface-elevated"),l.add("btn-primary"),n.intentHits+=1,F(n,"intent.component.button.primary")):v&&(l.add("btn-outline"),n.intentHits+=1,F(n,"intent.component.button.outline")),S&&(l.add("icon-only"),F(n,"intent.component.button.icon-only"))}if(i.shouldNormalize){for(let v of Array.from(l))String(v).startsWith("import-")&&l.delete(v);["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(v=>l.delete(v)),i.variant==="primary"?(l.add("btn-primary"),F(n,"intent.component.button.primary")):i.variant==="outline"&&(l.add("btn-outline"),F(n,"intent.component.button.outline")),i.size==="sm"?(l.add("btn-sm"),F(n,"intent.component.button.size-sm")):i.size==="lg"&&(l.add("btn-lg"),F(n,"intent.component.button.size-lg")),i.iconOnly&&(l.add("icon-only"),F(n,"intent.component.button.icon-only")),n.intentHits+=1,F(n,"intent.component.button.normalize")}if(s.shouldNormalize){for(let v of Array.from(l))String(v).startsWith("import-")&&l.delete(v);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(v=>l.delete(v)),l.add("badge"),s.variantClass&&l.add(s.variantClass),s.outline&&l.add("badge-outline"),s.sizeClass&&l.add(s.sizeClass),s.pastel&&s.pastel.family){let v=je(s.pastel.family,String(s.pastel.bgShade||200)),S=je(s.pastel.family,String(s.pastel.textShade||700));if(v&&S){let z=`badge-pastel-${s.pastel.family}-${s.pastel.bgShade}-${s.pastel.textShade}`,T=ce(n,z,`background-color:${v};color:${S}`,"base");T&&(l.add(T),F(n,"intent.component.badge.pastel-preserve"),j(n,`Preserved pastel badge tone using ${T}.`))}}n.intentHits+=1,F(n,"intent.component.badge.normalize"),j(n,"Normalized badge/pill utility cluster to PDS badge classes.")}if(c.shouldNormalize){for(let v of Array.from(l))String(v).startsWith("import-")&&l.delete(v);["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(v=>l.delete(v)),l.add("card"),c.cardVariantClass&&l.add(c.cardVariantClass),c.surfaceClass&&l.add(c.surfaceClass),n.intentHits+=1,F(n,"intent.component.card.normalize"),j(n,"Normalized card utility cluster to PDS card/surface classes.")}if(r==="a"&&!i.shouldNormalize&&a.some(v=>v.includes("hover:text")||v==="transition-colors")){let v=ce(n,"link-reset","text-decoration:none");v&&l.add(v),n.intentHits+=1,F(n,"intent.typography.link-treatment")}if(r==="footer"&&(l.has("surface-base")||a.some(v=>/^bg-/.test(v)))&&(l.delete("surface-base"),l.delete("surface-subtle"),l.add("surface-inverse"),n.intentHits+=1,F(n,"intent.surface.footer-inverse")),o?.listReset&&["ul","ol","menu"].includes(r)){let M=ce(n,"list-reset","list-style:none;margin:0;padding:0");M&&(l.add(M),n.intentHits+=1,F(n,"intent.preflight.list-reset"))}if(o?.anchorReset&&r==="a"&&!i.shouldNormalize){let M=ce(n,"anchor-reset","color:inherit;text-decoration:inherit");M&&(l.add(M),n.intentHits+=1,F(n,"intent.preflight.anchor-reset"))}let A=new Set(["div","section","article","aside","nav","main","header","footer","form","fieldset","ul","ol","li"]),N=a.some(M=>{let v=te(M).base;return/^(?:flex|grid|container|gap-|space-[xy]-|items-|justify-|content-|place-|self-|w-|h-|min-|max-)/.test(v)});return l.size===0&&A.has(r)&&N&&(l.add("stack-sm"),j(n,`Added stack-sm fallback for <${r}> with unmapped classes.`)),Array.from(l).join(" ")}function ra(r="",e={}){let t=String(r||""),n=Do(e.config||{}),o=Fo(e.config||{}),a=No(),i=Oo(t,a),c=yo(i.html,a).replace(/<([a-zA-Z][\w:-]*)([^>]*?)\sclass\s*=\s*(["'])(.*?)\3([^>]*)>/gs,(C,$,R,P,E,A)=>{let N=ta({tagName:String($||"").toLowerCase(),originalClassValue:E,policy:n,summary:a,preflightHints:i.hints}),M=String(N||"").trim();return M?`<${$}${R} class=${P}${M}${P}${A}>`:`<${$}${R}${A}>`}),d=Lo(zo(Co($o(c,a),a),a),a,{config:e.config||{}}),p=Po(a,o),l=Io(d,p);p&&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 u=Jo(a,16),g=a.mapped+a.ignored+a.policySkipped,m=a.totalTailwind>0?g/a.totalTailwind:1,f=a.totalTailwind>0?a.unknown/a.totalTailwind:0,h=.42+m*.45+Math.min(a.intentHits,4)*.025-f*.18,y=Math.max(.15,Math.min(.96,Number(h.toFixed(2)))),x=[`pds-import: rulebook=${Lr} confidence=${Math.round(y*100)}%`,`pds-import: tailwind=${a.totalTailwind} mapped=${a.mapped} ignored=${a.ignored} policySkipped=${a.policySkipped} unknown=${a.unknown}`];u.length&&x.push(`pds-import: unknown-tailwind=${u.join(", ")}`),a.notes.length&&x.push(`pds-import: notes=${a.notes.join(" | ")}`);let w=`<!-- ${x.join(` -->
|
|
3643
|
+
${r}`}function jr(r=""){if(!r)return!1;if(r.includes(":")||r.includes("["))return!0;let e=r.split("-")[0];return bo.includes(e)}function te(r=""){let e=String(r).split(":");if(e.length===1)return{breakpoint:"base",base:e[0],variants:[]};let t=e[e.length-1],n=e.slice(0,-1);return{breakpoint:n.find(a=>lt.includes(a))||"base",base:t,variants:n}}function No(){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 jo(r=""){let e=String(r||"").toLowerCase().replace(/\s+/g,""),t=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:t,anchorReset:n}}function Bo(r=""){return String(r||"").toLowerCase().includes("cdn.tailwindcss.com")?{listReset:!0,anchorReset:!0}:{listReset:!1,anchorReset:!1}}function Oo(r="",e=null){let t=String(r||""),n={listReset:!1,anchorReset:!1,strippedRuntimeCssBlocks:0,strippedRuntimeScripts:0};return t=t.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 d=jo(s);return n.listReset=n.listReset||d.listReset,n.anchorReset=n.anchorReset||d.anchorReset,n.strippedRuntimeCssBlocks+=1,""}),t=t.replace(/<script([^>]*?)src\s*=\s*(?:(['"])([^"']*cdn\.tailwindcss\.com[^"']*)\2|([^\s>]*cdn\.tailwindcss\.com[^\s>]*))([^>]*)><\/script>/gi,(o,a,i,s,c)=>{let p=Bo(s||c||"");return n.listReset=n.listReset||p.listReset,n.anchorReset=n.anchorReset||p.anchorReset,n.strippedRuntimeScripts+=1,""}),e&&(n.strippedRuntimeCssBlocks>0||n.strippedRuntimeScripts>0)&&(F(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:t,hints:n}}function j(r,e){!r||!e||r.notes.includes(e)||r.notes.push(e)}function _o(r,e){let t=r.unknownTokens.get(e)||0;r.unknownTokens.set(e,t+1)}function Do(r={}){let t=(r?.design&&typeof r.design=="object"?r.design:r)?.layout?.utilities||{};return{grid:t.grid!==!1,flex:t.flex!==!1,spacing:t.spacing!==!1,container:t.container!==!1}}function J(r,e){return e?r?.[e]!==!1:!0}function Br(r){let e=String(r).match(/^grid-cols-(\d+)$/);return e?Number(e[1]):null}function Or(r={}){let e=lt.map(o=>({bp:o,cols:r[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 t=!0;for(let o=1;o<e.length;o+=1)if(e[o].cols<=e[o-1].cols){t=!1;break}if(!t)return null;let n=e[e.length-1]?.cols||0;return n>=4?"grid-auto-md":n>=3?"grid-auto-sm":null}function Wo(r=""){let e=String(r).match(/^text-(gray|slate|zinc|neutral|stone)-(\d{2,3})$/);if(!e)return"";let t=Number(e[2]);return Number.isFinite(t)&&t>=400&&t<=600?"text-muted":""}function Uo(r="",e=0){return!r||!Number.isFinite(e)?"":{sm:{2:"sm:grid-cols-2"},md:{3:"md:grid-cols-3"},lg:{4:"lg:grid-cols-4"}}?.[r]?.[e]||""}function Ho(r=""){let e=te(r),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 qo(r=new Set){return Array.from(r).some(e=>{let t=String(e||"");return/^gap-(?:xs|sm|md|lg|xl)$/.test(t)||/^gap-[0-9]+$/.test(t)||/^import-(?:sm-|md-|lg-|xl-)?gap-/.test(t)})}function Go(r=new Set){return Array.from(r).some(e=>/^stack-(?:xs|sm|md|lg|xl)$/.test(String(e||"")))}function Vo(r=new Set){return Array.from(r).some(e=>{let t=String(e||"");return/^grid-cols-\d+$/.test(t)||/^grid-auto-(?:sm|md|lg|xl)$/.test(t)||/^(?:sm|md|lg|xl):grid-cols-\d+$/.test(t)||/^import-(?:sm-|md-|lg-|xl-)?grid-cols-\d+$/.test(t)})}function Jo(r,e=12){return Array.from(r.unknownTokens.entries()).sort((t,n)=>n[1]-t[1]).slice(0,e).map(([t])=>t)}function F(r,e){!r||!e||r.appliedRules.add(e)}function ne(r=[],e){return!Array.isArray(r)||!e?!1:r.some(t=>e.test(String(t)))}function Yo(r=[]){for(let e of r){let t=te(e);if(t.breakpoint!=="base")continue;let n=String(t.base).match(/^h-(.+)$/);if(!n)continue;let o=Ie(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 Qo(r=[],e=""){let t=e==="button",n=ne(r,/^bg-/),o=ne(r,/^hover:bg-/),a=ne(r,/^border/),i=ne(r,/^shadow/),s=r.includes("cursor-pointer"),c=ne(r,/^rounded/),d=ne(r,/^(?:min-w|max-w|w)-/),p=ne(r,/^text-(?:white|black|\[[^\]]+\]|[a-z]+-\d{2,3})$/),l=n||o||i;if(!(t||e==="a"&&(l||a||s||c&&d)))return{shouldNormalize:!1,variant:"none",size:"base",iconOnly:!1};let m="none";a&&!n&&!o?m="outline":(l||n&&p)&&(m="primary");let f=r.includes("rounded-full")&&(r.includes("p-2")||r.includes("p-1")||r.includes("p-2.5")),h=ne(r,/^size-(?:6|7|8|9|10|11|12)$/),v=f||h,w=Yo(r),b=r.includes("text-sm")||r.includes("text-xs"),S=r.includes("text-lg")||r.includes("text-xl"),R="base";return w&&w<=40||b?R="sm":(w&&w>=48||S)&&(R="lg"),{shouldNormalize:!0,variant:m,size:R,iconOnly:v}}function Ko(r=""){let e=String(r||"").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 Zo(r=[],e="",t={shouldNormalize:!1}){if(t?.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(r.some(T=>/^badge(?:-|$)/.test(String(T))))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let n=r.map(T=>te(T)).filter(T=>T.breakpoint==="base").map(T=>String(T.base)),o=n.some(T=>/^rounded(?:-|$)/.test(T)),a=n.some(T=>/^px-/.test(T)),i=n.some(T=>/^py-/.test(T)),s=a&&i,c=n.includes("text-xs")||n.includes("text-sm"),d=n.includes("text-lg")||n.includes("text-xl"),p=n.map(T=>T.match(/^bg-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),l=n.map(T=>T.match(/^text-([a-z]+)-(\d{2,3})(?:\/\d{1,3})?$/)).find(Boolean),u=n.map(T=>T.match(/^border-([a-z]+)-(\d{2,3})$/)).find(Boolean),g=Number(p?.[2]),m=Number(l?.[2]),f=!!(p&&Number.isFinite(g)&&g<=300),h=n.some(T=>/^border(?:-|$)/.test(T)),v=!!(p||l||u),w=[o,s,c,f||h].filter(Boolean).length;if(!(v&&w>=3))return{shouldNormalize:!1,variantClass:"",outline:!1,sizeClass:"",pastel:null};let S=p&&p[1]||l&&l[1]||u&&u[1]||"",R=Ko(S),$=h&&!f,L=c?"badge-sm":d?"badge-lg":"",P=f?{family:S,bgShade:Number.isFinite(g)?g:200,textShade:Number.isFinite(m)?m:700}:null;return{shouldNormalize:!0,variantClass:P?"":R,outline:$,sizeClass:L,pastel:P}}function Xo(r="",e=0){let t=String(r||"").toLowerCase(),n=Number(e);return t==="white"?"surface-base":["gray","slate","zinc","neutral","stone"].includes(t)?Number.isFinite(n)&&n<=100?"surface-base":"surface-subtle":["blue","sky","cyan","indigo","primary","info"].includes(t)?"surface-info":["purple","violet","fuchsia","accent"].includes(t)?"surface-primary":["green","emerald","lime","teal","success"].includes(t)?"surface-success":["yellow","amber","orange","warning"].includes(t)?"surface-warning":["red","rose","pink","danger"].includes(t)?"surface-danger":"surface-base"}function ea(r=[],e="",t={shouldNormalize:!1},n={shouldNormalize:!1}){if(t?.shouldNormalize||n?.shouldNormalize)return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(!new Set(["div","section","article","aside","li"]).has(e))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};if(r.some(h=>/^card(?:-|$)/.test(String(h))))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let a=r.map(h=>te(h)).filter(h=>h.breakpoint==="base").map(h=>String(h.base)),i=a.some(h=>/^rounded(?:-|$)/.test(h)),s=a.some(h=>/^border(?:$|-)/.test(h)),c=a.some(h=>/^shadow(?:$|-)/.test(h)),d=a.some(h=>/^(?:p|px|py|pt|pb|pl|pr)-/.test(h)),p=a.map(h=>h.match(/^bg-([a-z]+)-?(\d{2,3})?$/)).find(Boolean),l=a.includes("bg-white")||!!p;if(!([i,s||c,l,d].filter(Boolean).length>=3))return{shouldNormalize:!1,cardVariantClass:"",surfaceClass:""};let m="card-basic";c?m="card-elevated":s&&(m="card-outlined");let f="";return c?f="surface-elevated":p?f=Xo(p[1],p[2]):l&&(f="surface-base"),{shouldNormalize:!0,cardVariantClass:m,surfaceClass:f}}function ta({tagName:r,originalClassValue:e,policy:t,summary:n,preflightHints:o={}}){if(mo.has(r))return F(n,"table.strict-tags.no-classes"),"";let a=String(e).split(/\s+/).filter(Boolean),i=Qo(a,r),s=Zo(a,r,i),c=ea(a,r,i,s),d=/^h[1-6]$/.test(r),p=["i","svg"].includes(r)||a.some(C=>/^fa(?:[a-z-]+)?$/i.test(String(C||""))||/^fa-/.test(String(C||""))),l=new Set,u={},g={},m=!1,f="",h="",v=!1,w="";a.forEach(C=>{let x=te(C),k=x.base;if(go.some(I=>I.test(k))){n.ignored+=1,F(n,"cleanup.non-pds-class");return}let M=jr(C)||jr(k);if(M&&(n.totalTailwind+=1),/^space-y-/.test(k)){m=!0,f=f||C,h=h||Ho(C),n.ignored+=1,F(n,"layout.spacing.space-y-to-stack");return}if(/^space-x-/.test(k)){let I=String(k).match(/^space-x-(\d+)$/);if(I){let W=`gap-${I[1]}`,re=Wt.get(W);if(re&&J(t,"spacing")){l.add(re),v=!0,w=w||C,n.mapped+=1,n.intentHits+=1,F(n,"layout.spacing.space-x-to-gap");return}}n.ignored+=1,F(n,"style.spacing.atomic");return}if(/^grid-cols-\d+$/.test(k)&&x.breakpoint!=="base"){let I=Br(k);if(Number.isFinite(I)&&J(t,"grid")){u[x.breakpoint]=I,n.mapped+=1,F(n,"intent.layout.responsive-grid-to-auto");return}if(!J(t,"grid")){n.policySkipped+=1,j(n,"Skipped responsive grid mapping because layout.utilities.grid=false.");return}}if(/^flex-(?:row|col)$/.test(k)&&x.breakpoint!=="base"){if(J(t,"flex")){g[x.breakpoint]=k,n.mapped+=1,F(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(k)&&x.breakpoint==="base"){let I=Br(k);Number.isFinite(I)&&J(t,"grid")&&(u.base=I)}let E=uo.get(k);if(E&&x.breakpoint==="base"){if(!J(t,E.gate)){n.policySkipped+=1,j(n,`Skipped ${k} because layout.utilities.${E.gate}=false.`);return}E.pds.forEach(I=>{I&&l.add(I)}),n.mapped+=1,F(n,E.id);return}if(Wt.has(k)&&x.breakpoint==="base"){if(!J(t,"spacing")){n.policySkipped+=1,j(n,"Skipped gap utility because layout.utilities.spacing=false.");return}l.add(Wt.get(k)),n.mapped+=1,F(n,"layout.spacing.gap-scale");return}if(Rr.has(k)&&x.breakpoint==="base"){if(!J(t,"container")){n.policySkipped+=1,j(n,"Skipped max-width utility because layout.utilities.container=false.");return}l.add(Rr.get(k)),n.mapped+=1,F(n,"layout.container.max-width");return}if(i.shouldNormalize&&M){let I=String(k||"");if(x.breakpoint==="base"&&["flex-1","grow","flex-grow"].includes(I)){l.add("grow"),n.mapped+=1,n.intentHits+=1,F(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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.button.normalize");return}}if(d&&/^(?:text-(?:xs|sm|base|lg|xl|\dxl|white|black|\[[^\]]+\]|[a-z]+-\d{2,3})|font-|leading-|tracking-|uppercase|lowercase|capitalize)/.test(k)){n.ignored+=1,n.intentHits+=1,F(n,"intent.typography.heading-semantic");return}if(s.shouldNormalize&&M){let I=String(k||"");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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.badge.normalize");return}}if(c.shouldNormalize&&M){let I=String(k||"");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(I)||I.startsWith("hover:")){n.ignored+=1,F(n,"intent.component.card.normalize");return}}let B=Wo(k);if(B&&x.breakpoint==="base"){l.add(B),n.mapped+=1,n.intentHits+=1,F(n,"intent.typography.text-neutral-to-muted");return}if(/^text-(?:white|black|[a-z]+-\d{2,3}|\[[^\]]+\])$/.test(k)){if(p||r==="a"&&!i.shouldNormalize){let W=Nr(k,x.breakpoint,x.variants);if(W){let re=ce(n,`${r}-color-${k}`,W.declaration,W.breakpoint,W.pseudo);if(re){l.add(re),n.mapped+=1,n.intentHits+=1,F(n,p?"intent.icon.color-preserve":"intent.typography.link-active-preserve");return}}}n.ignored+=1,F(n,"style.color");return}let q=Nr(k,x.breakpoint,x.variants);if(q){let I=ce(n,k,q.declaration,q.breakpoint,q.pseudo);if(I){l.add(I),n.mapped+=1,n.intentHits+=1,F(n,q.ruleId),x.breakpoint!=="base"&&j(n,`Generated responsive import fallback for ${C}.`);return}}for(let I of H.ignoredPatterns)if(I.pattern.test(k)){n.ignored+=1,F(n,I.id),I.id==="style.spacing.atomic"&&(n.removedAtomicSpacingCount+=1),I.id==="style.positioning.atomic"&&(n.removedAtomicPositioningCount+=1);return}if(M){n.unknown+=1,_o(n,C);return}l.add(C)}),m&&J(t,"spacing")&&(l.add(h||"stack-md"),n.mapped+=1,n.intentHits+=1,j(n,`Mapped ${f} to ${h||"stack-md"}.`)),v&&J(t,"spacing")&&j(n,`Mapped ${w} to gap utility.`);let b=Or(u);if(b&&J(t,"grid")?(l.delete("grid-cols-1"),l.delete("grid-cols-2"),l.delete("grid-cols-3"),l.delete("grid-cols-4"),l.delete("grid-cols-6"),l.add("grid"),l.add(b),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Collapsed responsive grid columns to ${b}.`)):J(t,"grid")&<.filter(x=>x!=="base"&&Number.isFinite(u[x])).forEach(x=>{let k=u[x],M=Uo(x,k);if(M){l.add("grid"),l.add(M),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Mapped ${x}:grid-cols-${k} to ${M}.`);return}let E=ce(n,`grid-cols-${k}`,`grid-template-columns:repeat(${k}, minmax(0, 1fr))`,x);E&&(l.add("grid"),l.add(E),n.intentHits+=1,F(n,"fallback.import-style.grid-cols-responsive"),j(n,`Mapped ${x}:grid-cols-${k} to responsive import fallback for exact columns.`))}),J(t,"flex")&&a.includes("flex-col")&&(g.md==="flex-row"||g.lg==="flex-row")&&(l.delete("flex-col"),l.delete("flex-row"),l.add("mobile-stack"),n.intentHits+=1,F(n,"intent.layout.mobile-stack"),j(n,"Mapped flex-col + breakpoint flex-row to mobile-stack.")),(l.has("flex")||l.has("inline-flex"))&&J(t,"spacing")&&(qo(l)||Go(l)||v||m||(l.add("gap-sm"),n.intentHits+=1,F(n,"layout.spacing.flex-min-gap"),j(n,"Added gap-sm fallback for flex container without explicit spacing."))),a.some(C=>/^grid-cols-\d+$/.test(te(C).base))&&l.has("grid")&&!Vo(l)){let C=Or(u);C?(l.add(C),n.intentHits+=1,F(n,"intent.layout.responsive-grid-to-auto"),j(n,`Applied grid safety fallback ${C} to avoid bare grid output.`)):Number.isFinite(u.base)&&u.base>1?(l.add(`grid-cols-${u.base}`),n.intentHits+=1,F(n,"intent.layout.grid-safety-fallback"),j(n,`Applied grid safety fallback grid-cols-${u.base} to preserve explicit grid intent.`)):(l.add("mobile-stack"),n.intentHits+=1,F(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.some(C=>/^(?:bg-white|shadow|shadow-md|shadow-lg)$/.test(C)),L=a.some(C=>/^rounded/.test(C));if(["div","section","article","li","aside"].includes(r)&&$&&L&&(l.add("card"),!l.has("surface-elevated")&&a.some(C=>/^shadow/.test(C))&&l.add("surface-elevated"),!l.has("surface-base")&&a.includes("bg-white")&&l.add("surface-base"),n.intentHits+=1,F(n,"intent.component.card")),r==="button"||r==="a"){let C=a.some(M=>/^bg-(?:[a-z]+-)?[4567]00$/.test(M))&&a.includes("text-white"),x=a.some(M=>/^border/.test(M))&&!C,k=a.includes("p-2")&&a.includes("rounded-full");C?(l.delete("surface-base"),l.delete("surface-elevated"),l.add("btn-primary"),n.intentHits+=1,F(n,"intent.component.button.primary")):x&&(l.add("btn-outline"),n.intentHits+=1,F(n,"intent.component.button.outline")),k&&(l.add("icon-only"),F(n,"intent.component.button.icon-only"))}if(i.shouldNormalize){for(let x of Array.from(l))String(x).startsWith("import-")&&l.delete(x);["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(x=>l.delete(x)),i.variant==="primary"?(l.add("btn-primary"),F(n,"intent.component.button.primary")):i.variant==="outline"&&(l.add("btn-outline"),F(n,"intent.component.button.outline")),i.size==="sm"?(l.add("btn-sm"),F(n,"intent.component.button.size-sm")):i.size==="lg"&&(l.add("btn-lg"),F(n,"intent.component.button.size-lg")),i.iconOnly&&(l.add("icon-only"),F(n,"intent.component.button.icon-only")),n.intentHits+=1,F(n,"intent.component.button.normalize")}if(s.shouldNormalize){for(let x of Array.from(l))String(x).startsWith("import-")&&l.delete(x);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(x=>l.delete(x)),l.add("badge"),s.variantClass&&l.add(s.variantClass),s.outline&&l.add("badge-outline"),s.sizeClass&&l.add(s.sizeClass),s.pastel&&s.pastel.family){let x=je(s.pastel.family,String(s.pastel.bgShade||200)),k=je(s.pastel.family,String(s.pastel.textShade||700));if(x&&k){let M=`badge-pastel-${s.pastel.family}-${s.pastel.bgShade}-${s.pastel.textShade}`,E=ce(n,M,`background-color:${x};color:${k}`,"base");E&&(l.add(E),F(n,"intent.component.badge.pastel-preserve"),j(n,`Preserved pastel badge tone using ${E}.`))}}n.intentHits+=1,F(n,"intent.component.badge.normalize"),j(n,"Normalized badge/pill utility cluster to PDS badge classes.")}if(c.shouldNormalize){for(let x of Array.from(l))String(x).startsWith("import-")&&l.delete(x);["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(x=>l.delete(x)),l.add("card"),c.cardVariantClass&&l.add(c.cardVariantClass),c.surfaceClass&&l.add(c.surfaceClass),n.intentHits+=1,F(n,"intent.component.card.normalize"),j(n,"Normalized card utility cluster to PDS card/surface classes.")}if(r==="a"&&!i.shouldNormalize&&a.some(x=>x.includes("hover:text")||x==="transition-colors")){let x=ce(n,"link-reset","text-decoration:none");x&&l.add(x),n.intentHits+=1,F(n,"intent.typography.link-treatment")}if(r==="footer"&&(l.has("surface-base")||a.some(x=>/^bg-/.test(x)))&&(l.delete("surface-base"),l.delete("surface-subtle"),l.add("surface-inverse"),n.intentHits+=1,F(n,"intent.surface.footer-inverse")),o?.listReset&&["ul","ol","menu"].includes(r)){let C=ce(n,"list-reset","list-style:none;margin:0;padding:0");C&&(l.add(C),n.intentHits+=1,F(n,"intent.preflight.list-reset"))}if(o?.anchorReset&&r==="a"&&!i.shouldNormalize){let C=ce(n,"anchor-reset","color:inherit;text-decoration:inherit");C&&(l.add(C),n.intentHits+=1,F(n,"intent.preflight.anchor-reset"))}let T=new Set(["div","section","article","aside","nav","main","header","footer","form","fieldset","ul","ol","li"]),N=a.some(C=>{let x=te(C).base;return/^(?:flex|grid|container|gap-|space-[xy]-|items-|justify-|content-|place-|self-|w-|h-|min-|max-)/.test(x)});return l.size===0&&T.has(r)&&N&&(l.add("stack-sm"),j(n,`Added stack-sm fallback for <${r}> with unmapped classes.`)),Array.from(l).join(" ")}function ra(r="",e={}){let t=String(r||""),n=Do(e.config||{}),o=Fo(e.config||{}),a=No(),i=Oo(t,a),c=yo(i.html,a).replace(/<([a-zA-Z][\w:-]*)([^>]*?)\sclass\s*=\s*(["'])(.*?)\3([^>]*)>/gs,(R,$,L,P,z,T)=>{let N=ta({tagName:String($||"").toLowerCase(),originalClassValue:z,policy:n,summary:a,preflightHints:i.hints}),C=String(N||"").trim();return C?`<${$}${L} class=${P}${C}${P}${T}>`:`<${$}${L}${T}>`}),d=Lo(zo(Co($o(c,a),a),a),a,{config:e.config||{}}),p=Po(a,o),l=Io(d,p);p&&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 u=Jo(a,16),g=a.mapped+a.ignored+a.policySkipped,m=a.totalTailwind>0?g/a.totalTailwind:1,f=a.totalTailwind>0?a.unknown/a.totalTailwind:0,h=.42+m*.45+Math.min(a.intentHits,4)*.025-f*.18,v=Math.max(.15,Math.min(.96,Number(h.toFixed(2)))),w=[`pds-import: rulebook=${Lr} confidence=${Math.round(v*100)}%`,`pds-import: tailwind=${a.totalTailwind} mapped=${a.mapped} ignored=${a.ignored} policySkipped=${a.policySkipped} unknown=${a.unknown}`];u.length&&w.push(`pds-import: unknown-tailwind=${u.join(", ")}`),a.notes.length&&w.push(`pds-import: notes=${a.notes.join(" | ")}`);let b=`<!-- ${w.join(` -->
|
|
3644
3644
|
<!-- `)} -->
|
|
3645
|
-
${l}`,
|
|
3646
|
-
`)}}function Ne(r=[]){let e=new Map;r.forEach(o=>{let a=String(o||"").trim();a&&e.set(a,(e.get(a)||0)+1)});let t="",n=-1;return e.forEach((o,a)=>{o>n&&(t=a,n=o)}),t}function Y(r,e=[]){return e.flatMap(t=>r.get(t)||[])}function ba(r,e){if(!r||!e)return null;let t=String(e).split(".").filter(Boolean),n=r;for(let o of t){if(!n||n.type!=="object"||!n.properties||typeof n.properties!="object")return null;n=n.properties[o]}return n||null}function ya(r={}){let e=r&&typeof r=="object"?r:{},t=L?.configRelations&&typeof L.configRelations=="object"?L.configRelations:{},n=new Set(Object.keys(t)),o=null;if(typeof L?.buildConfigFormSchema=="function")try{o=L.buildConfigFormSchema(e)?.schema||null}catch{o=null}return!o&&L?.configFormSchema?.schema&&(o=L.configFormSchema.schema),{design:e,schema:o,allowedPaths:n}}function va(r,e){if(!r)return e;if(Array.isArray(r.oneOf)&&r.oneOf.length){let t=r.oneOf.map(n=>n?.const).filter(n=>n!=null);if(t.length){if(typeof e=="string"){let n=t.find(o=>String(o).toLowerCase()===e.toLowerCase());if(n!==void 0)return n}if(typeof e=="number"){let n=t.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 t[0]}}if(r.type==="number"||r.type==="integer"){let t=Number(e);return Number.isFinite(t)?r.type==="integer"?Math.round(t):t:void 0}return r.type==="boolean"?!!e:r.type==="string"?String(e||"").trim():e}function xa(r,e,t){let n=String(e||"").split(".").filter(Boolean);if(!n.length)return;let o=r;for(let a=0;a<n.length;a+=1){let i=n[a];if(a===n.length-1){o[i]=t;return}(!o[i]||typeof o[i]!="object"||Array.isArray(o[i]))&&(o[i]={}),o=o[i]}}function _(r,e,t){if(t==null||t===""||r.allowedPaths.size&&!r.allowedPaths.has(e))return;let n=ba(r.schema,e),o=va(n,t);o==null||o===""||(xa(r.patch,e,o),r.inferredPaths.add(e))}function de(r=[]){let e=r.map(n=>ia(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let t=Math.floor(e.length/2);return e.length%2?e[t]:(e[t-1]+e[t])/2}function wa(r=[]){let e=r.map(t=>String(t||"").split(",")[0]||"").map(t=>t.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean);return Ne(e)}function ka(r){let e=Number(r);return Number.isFinite(e)?e<=.75?"hairline":e<=1.5?"thin":e<=2.5?"medium":"thick":"thin"}function Sa(r=""){let t=String(te(r).base||"").toLowerCase().match(/^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(!t)return null;let n=t[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 $a(r=[]){let e=r.map(n=>Sa(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let t=Math.floor(e.length/2);return e.length%2?e[t]:(e[t-1]+e[t])/2}function Ht(r={}){let e=String(r.html||"");if(!e.trim())return O({source:"html-inference",type:String(r.sourceType||"design-inference"),confidence:0,issues:[{severity:"warning",message:"No HTML or guideline text provided for design extraction."}],designPatch:{},meta:{extractedPathCount:0,extractedPaths:[]}});let t=ya(r.config||{}),n=ha(e),o={patch:{},inferredPaths:new Set,allowedPaths:t.allowedPaths,schema:t.schema},a=Y(n.declarations,["color"]).map(G=>K(G)).filter(Boolean),i=Y(n.declarations,["background","background-color"]).map(G=>K(G)).filter(Boolean),s=[...i,...a,...n.colorValues].filter(Boolean),c=Array.from(new Set(s)),d=[...n.rootBackgroundColors||[]],p=[...n.rootClassBackgroundColors||[]],l=d.length?d:p,u=[...i,...n.classBackgroundColors||[]],g=fa(l,u),m=g.color;_(o,"colors.background",m||i[0]||c[0]);let f=c.filter(G=>G&&G!==m),y=Ne(n.buttonBackgroundColors||[])||f[0]||c[0],x=f.filter(G=>G&&G!==y);_(o,"colors.primary",y),_(o,"colors.secondary",x[0]||y||c[0]),_(o,"colors.accent",x[1]||x[0]||y||c[0]);let w=Y(n.declarations,["font-family"]),k=wa(w);_(o,"typography.fontFamilyBody",k),_(o,"typography.fontFamilyHeadings",k),_(o,"typography.fontFamilyMono",/mono|code/i.test(n.textCorpus)?"JetBrains Mono":"");let C=Y(n.declarations,["font-size"]),$=de(C);_(o,"typography.baseSize",$);let R=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"]),P=de(R);_(o,"spatialRhythm.baseUnit",P),_(o,"spatialRhythm.inputPadding",P),_(o,"spatialRhythm.buttonPadding",P);let E=Y(n.declarations,["border-radius"]),A=de(E)||$a(n.classTokens||[]);_(o,"shape.radiusSize",A);let N=Y(n.declarations,["border-width","border-top-width","border-right-width","border-bottom-width","border-left-width"]),M=de(N);_(o,"shape.borderWidth",ka(M));let v=Y(n.declarations,["max-width"]),S=de(v);_(o,"layout.containerMaxWidth",S),_(o,"layout.maxWidth",S);let z=Y(n.declarations,["min-height","height"]),T=de(z);_(o,"layout.buttonMinHeight",T),_(o,"layout.inputMinHeight",T);let B=Y(n.declarations,["transition-duration"]),D=de(B.map(G=>{let Se=String(G||"").trim().toLowerCase(),oe=Number.parseFloat(Se);return Number.isFinite(oe)?Se.endsWith("ms")?oe:Se.endsWith("s")?oe*1e3:oe:null}));_(o,"behavior.transitionSpeed",D);let I=Y(n.declarations,["box-shadow"]).length>0;_(o,"layers.baseShadowOpacity",I?.2:.08);let W=Array.from(o.inferredPaths),re=W.reduce((G,Se)=>{let oe=Se.split(".")[0];return G[oe]=(G[oe]||0)+1,G},{}),Zr=W.length?Math.min(.92,.35+W.length*.02):.25;return O({source:"html-inference",type:String(r.sourceType||"design-inference"),confidence:Zr,issues:W.length?[]:[{severity:"warning",message:"Could not infer enough design signals from input."}],designPatch:o.patch,meta:{extractedPathCount:W.length,extractedPaths:W,categoryCoverage:re,colorSampleSize:c.length,backgroundInference:{source:g.source,candidates:{root:l.length,declaration:i.length,classBased:(n.classBackgroundColors||[]).length}}}})}function qr(r={}){let e=String(r.input||"").trim(),t=String(r.sourceType||"unknown");if(!e)return O({source:t,type:t,confidence:0,issues:[{severity:"error",message:"No input provided."}],meta:{conversionMode:"none"}});if(Ur(e)){let n=ct({html:e,config:r.config||{}});return O({source:t,type:t,confidence:n.confidence,issues:n.issues,template:n.template,meta:{...n.meta||{},conversionMode:"html-to-pds"}})}return O({source:t,type:t,confidence:.48,issues:[{severity:"info",message:"Input is not HTML; generated text-based preview template."}],template:{id:`${t}-text-import`,name:"Imported Guideline Text",html:`<article class="card surface-base stack-sm"><h3>Imported Guidelines</h3><pre>${aa(e)}</pre></article>`},meta:{conversionMode:"text-preview"}})}function ct(r={}){let e=String(r.html||"").trim();if(!e)return O({source:"tailwind",type:"tailwind-html",confidence:0,issues:[{severity:"error",message:"No HTML provided."}]});let t=ra(e,{config:r.config||{}});return O({source:"tailwind",type:"tailwind-html",confidence:t.confidence,issues:t.issues,template:{id:"tailwind-import",name:"Converted Tailwind Markup",html:t.html},meta:t.meta})}function qt(r={}){let e=String(r.text||"").trim();if(!e)return O({source:"brand",type:"brand-guidelines",confidence:0,issues:[{severity:"error",message:"No brand guideline text provided."}]});let t=oa(e),n={colors:{},typography:{}},o=[];return t?n.colors.primary=t: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"),O({source:"brand",type:"brand-guidelines",confidence:t?.68:.52,issues:o,designPatch:n,meta:{inferred:{primaryColor:t}}})}var Gt="convert-only",Gr="adopt-design-and-convert";function Ca(r){return String(r||"").trim().toLowerCase()===Gr?Gr:Gt}function Vr(...r){let e=r.flat().filter(Boolean);if(!e.length)return[];let t=new Set;return e.filter(n=>{let o=`${String(n?.severity||"info")}::${String(n?.path||"")}::${String(n?.message||"")}`;return t.has(o)?!1:(t.add(o),!0)})}function Jr(r=[]){let e=r.map(t=>Number(t)).filter(t=>Number.isFinite(t));return e.length?Math.max(0,Math.min(1,e.reduce((t,n)=>t+n,0)/e.length)):0}function Be(r={},e={}){return{...r&&typeof r=="object"?r:{},...e&&typeof e=="object"?e:{}}}function Kr(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};return Object.entries(e).forEach(([n,o])=>{o&&typeof o=="object"&&!Array.isArray(o)?t[n]=Kr(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o}),t}function Yr(r){if(typeof structuredClone=="function")try{return structuredClone(r)}catch{}return JSON.parse(JSON.stringify(r||{}))}function Ma(r={}){let e=Number(r?.ratio),t=Number(r?.min),n=Number.isFinite(e)?e.toFixed(2):"n/a",o=Number.isFinite(t)?t.toFixed(2):"n/a";return{severity:"error",path:String(r?.path||"/colors"),message:`${String(r?.message||"Color contrast validation failed.")} (ratio=${n}, required=${o})`}}function Qr(r={},e={},t={}){if(!(e&&typeof e=="object"?Object.keys(e):[]).length)return{ok:!0,blocked:!1,issues:[],report:{ok:!0,issues:[]}};let o=Number(t.minContrast),a=Number.isFinite(o)?o:4.5,i=Kr(Yr(r||{}),Yr(e||{})),s=sr(i,{minContrast:a,minMutedContrast:3,extendedChecks:!0}),c=Array.isArray(s?.issues)?s.issues.map(d=>Ma(d)):[];return{ok:!!s?.ok,blocked:!s?.ok,issues:c,report:{ok:!!s?.ok,minContrast:a,issues:Array.isArray(s?.issues)?s.issues:[]}}}function za(){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 Ea(r={}){let e=String(r.sourceType||""),t=Ca(r.importMode),n=String(r.input||""),o=r.config||null;if(e==="template"){let a=Cr(r.templateId,r);return a.meta=Be(a.meta,{importMode:t}),a}if(e==="tailwind-html"){let a=ct({html:n,config:o});if(t===Gt)return a.meta=Be(a.meta,{importMode:t}),a;let i=Ht({html:n,config:o,sourceType:e}),s=Qr(o||{},i.designPatch||{}),c=s.blocked?{}:i.designPatch,d=s.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...s.issues]:[];return O({source:a.source||"tailwind",type:e,confidence:Jr([a.confidence,i.confidence]),issues:Vr(a.issues,i.issues,d),template:a.template,designPatch:c,meta:Be(a.meta,{importMode:t,inference:i.meta,validation:s.report,validationBlocked:s.blocked})})}if(e==="brand-guidelines"){let a=qr({input:n,sourceType:e,config:o});if(t===Gt)return a.meta=Be(a.meta,{importMode:t}),a;let i=qt({text:n}),s=Ht({html:n,config:o,sourceType:e}),c={...i.designPatch&&typeof i.designPatch=="object"?i.designPatch:{},...s.designPatch&&typeof s.designPatch=="object"?s.designPatch:{}},d=Qr(o||{},c||{}),p=d.blocked?{}:c,l=d.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...d.issues]:[];return O({source:"brand",type:e,confidence:Jr([a.confidence,i.confidence,s.confidence]),issues:Vr(a.issues,i.issues,s.issues,l),template:a.template,designPatch:p,meta:Be(a.meta,{importMode:t,inference:s.meta,brandHeuristics:i.meta,validation:d.report,validationBlocked:d.blocked})})}return e==="figma-json"||e==="ux-pilot"||e==="google-stitch"?O({source:e,type:e,confidence:0,issues:[{severity:"info",message:`${e} adapter is not implemented yet in this phase.`}],meta:{importMode:t}}):O({source:e||"unknown",type:"unknown",confidence:0,issues:[{severity:"error",message:"Unsupported import source type."}],meta:{importMode:t}})}var Ta="pds-live-import-history";var X="imports",dt=null;function Aa(){return typeof globalThis<"u"&&typeof globalThis.indexedDB<"u"}function Z(r){return typeof r=="string"?r:""}function pt(r){return Array.isArray(r)?r:[]}function ut(r){return r&&typeof r=="object"?r:{}}function gt(){return Aa()?dt||(dt=new Promise((r,e)=>{let t=globalThis.indexedDB.open(Ta,1);t.onupgradeneeded=()=>{let n=t.result;if(!n.objectStoreNames.contains(X)){let o=n.createObjectStore(X,{keyPath:"id",autoIncrement:!0});o.createIndex("createdAt","createdAt",{unique:!1}),o.createIndex("sourceType","sourceType",{unique:!1}),o.createIndex("fileName","fileName",{unique:!1})}},t.onsuccess=()=>r(t.result),t.onerror=()=>e(t.error||new Error("Failed to open import history database."))}),dt):Promise.resolve(null)}function mt(r){return new Promise((e,t)=>{r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error||new Error("IndexedDB operation failed."))})}function La(r={}){let e=Date.now(),t=Number.isFinite(Number(r.createdAt))?Number(r.createdAt):e,n=new Date(t).toISOString(),o=pt(r.issues).map(c=>({severity:Z(c?.severity||"info"),message:Z(c?.message||"")})),a=pt(r.notes).filter(c=>typeof c=="string"),i=pt(r.unknownTailwindTokens).filter(c=>typeof c=="string"),s=pt(r.appliedRules).filter(c=>typeof c=="string");return{createdAt:t,createdAtIso:n,sourceType:Z(r.sourceType||"unknown"),importMode:Z(r.importMode||"convert-only"),source:Z(r.source||"unknown"),type:Z(r.type||"unknown"),fileName:Z(r.fileName||""),fileSize:Number.isFinite(Number(r.fileSize))?Number(r.fileSize):0,mimeType:Z(r.mimeType||""),fileContents:Z(r.fileContents||""),convertedHtml:Z(r.convertedHtml||""),confidence:Number.isFinite(Number(r.confidence))?Number(r.confidence):0,notes:a,issues:o,coverage:ut(r.coverage),unknownTailwindTokens:i,appliedRules:s,importStyleSheetInjected:!!r.importStyleSheetInjected,templateName:Z(r.templateName||""),designPatch:ut(r.designPatch),meta:ut(r.meta),resultSnapshot:ut(r.resultSnapshot)}}async function Ra(r={}){let e=await gt();if(!e)return null;let t=La(r),o=e.transaction(X,"readwrite").objectStore(X);return{id:await mt(o.add(t)),...t}}async function Fa(r={}){let e=await gt();if(!e)return[];let t=Number.isFinite(Number(r.limit))?Math.max(1,Number(r.limit)):30,o=e.transaction(X,"readonly").objectStore(X);return(await mt(o.getAll())||[]).sort((i,s)=>Number(s?.createdAt||0)-Number(i?.createdAt||0)).slice(0,t)}async function Pa(r){let e=await gt();if(!e)return null;let t=Number(r);if(!Number.isFinite(t))return null;let o=e.transaction(X,"readonly").objectStore(X);return await mt(o.get(t))||null}async function Ia(){let r=await gt();if(!r)return;let t=r.transaction(X,"readwrite").objectStore(X);await mt(t.clear())}export{Ia as clearLiveImportHistory,qt as convertBrandGuidelinesToPatch,ct as convertTailwindHtmlToPds,O as createImportResult,na as describeTailwindConversionRules,Pa as getLiveImportHistoryEntry,za as getLiveImportSources,Jn as isImportResult,Fa as listLiveImportHistory,$r as listLiveTemplates,fr as loadGoogleFont,et as loadLiveTemplateCatalog,Ea as runLiveImport,Ra as saveLiveImportHistory,qn as startLive};
|
|
3645
|
+
${l}`,S=[];return a.unknown>0&&S.push({severity:"warning",message:`Converted with ${a.unknown} unknown Tailwind utilities requiring manual review.`}),a.policySkipped>0&&S.push({severity:"info",message:`Skipped ${a.policySkipped} utility mappings due to PDS config policy.`}),u.length&&S.push({severity:"info",message:`Top unknown utilities: ${u.slice(0,8).join(", ")}`}),{html:b,confidence:v,issues:S,meta:{rulebookVersion:Lr,coverage:{tailwind:a.totalTailwind,mapped:a.mapped,ignored:a.ignored,policySkipped:a.policySkipped,unknown:a.unknown,importedStyles:a.importedStyleCount,nestedLabelPairs:a.labelNestingCount},unknownTailwindTokens:u,notes:a.notes,appliedRules:Array.from(a.appliedRules),policy:n,importStyleSheetInjected:!!p,breakpoints:o}}}function na(){return{rulesJsonPath:co,...H,directMappings:H.directMappings.map(r=>({id:r.id,tw:r.tw,pds:r.pds,gate:r.gate||null})),ignoredPatterns:H.ignoredPatterns.map(r=>({id:r.id,pattern:String(r.pattern),reason:r.reason}))}}function oa(r){let e=String(r||"").match(/#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b/);return e?e[0]:null}function aa(r){return String(r||"").replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}function Ur(r){return/<\s*[a-z][^>]*>/i.test(String(r||""))}function ia(r){let e=String(r||"").trim().toLowerCase();if(!e)return null;let t=Number.parseFloat(e);return Number.isFinite(t)?e.endsWith("rem")||e.endsWith("em")?t*16:e.endsWith("px")||/^[0-9.\-]+$/.test(e)?t:null:null}function K(r){let e=String(r||"").trim();if(!e)return"";let t=e.match(/#(?:[0-9a-f]{3,8})\b/i);if(t)return t[0].toLowerCase();let n=e.match(/rgba?\([^)]*\)/i);if(n)return n[0];let o=e.match(/hsla?\([^)]*\)/i);return o?o[0]:""}function sa(r=""){let e=String(r||"").trim();if(!e||typeof window>"u"||typeof document>"u")return"";let t=document.documentElement;if(!t)return"";let n=window.getComputedStyle(t);return String(n.getPropertyValue(e)||"").trim()}function la(r=""){let e=String(r||"").trim(),t=K(e);if(t)return t;let n=e.match(/var\(\s*(--[^\s,)]+)\s*(?:,[^)]+)?\)/i);if(!n)return"";let o=sa(n[1]);return K(o)}function ca(r=""){let e=String(r||"").trim();if(!e)return"";let t=e.split(":").pop()||e;if(t==="bg-white")return"#ffffff";if(t==="bg-black")return"#000000";let n=t.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=t.match(/^bg-\[([^\]]+)\]$/i);if(o)return K(o[1]);let a=t.match(/^bg-([a-z]+)-(\d{2,3})$/i);if(!a)return"";let i=je(a[1],a[2]);return i?la(i):""}function _r(r=""){return String(r||"").split(/\s+/).map(t=>t.trim()).filter(Boolean).map(t=>ca(t)).filter(Boolean)}function da(r=""){let e=[],t=String(r||""),n=/([^{}]+)\{([^{}]*)\}/g,o=n.exec(t);for(;o;){let a=String(o[1]||"").trim(),i=String(o[2]||"").trim();a&&i&&e.push({selector:a,body:i}),o=n.exec(t)}return e}function pa(r=""){let e=String(r||"").toLowerCase();return e?/(^|\s|,)(html|body|:root|main)(\s|,|$)|#app\b|#root\b|\.app\b|\.page\b/.test(e):!1}function ua(r=""){let e=String(r||"").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 t=Number.parseFloat(e[1]),n=Number.parseFloat(e[2]),o=Number.parseFloat(e[3]),a=e[4]==null?1:Number.parseFloat(e[4]);return[t,n,o,a].every(i=>Number.isFinite(i))?{r:Math.max(0,Math.min(255,t)),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 ga(r=""){let e=String(r||"").trim().match(/^#([0-9a-f]{3,8})$/i);if(!e)return null;let t=e[1].toLowerCase();if(t.length===3){let[n,o,a]=t.split("");return{r:Number.parseInt(`${n}${n}`,16),g:Number.parseInt(`${o}${o}`,16),b:Number.parseInt(`${a}${a}`,16),a:1}}return t.length===6||t.length===8?{r:Number.parseInt(t.slice(0,2),16),g:Number.parseInt(t.slice(2,4),16),b:Number.parseInt(t.slice(4,6),16),a:t.length===8?Number.parseInt(t.slice(6,8),16)/255:1}:null}function Hr(r=""){let e=K(r);return e?e.startsWith("#")?ga(e):e.startsWith("rgb")?ua(e):null:null}function ma(r){if(!r)return null;let e=a=>{let i=Number(a)/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4},t=e(r.r),n=e(r.g),o=e(r.b);return .2126*t+.7152*n+.0722*o}function Dr(r=""){let e=String(r||"").trim().toLowerCase();if(!e||e==="transparent")return!0;let t=Hr(e);return t&&Number.isFinite(t.a)?t.a<=.04:!1}function fa(r=[],e=[]){let t=r.map(c=>K(c)).filter(c=>c&&!Dr(c)),n=Ne(t);if(n)return{color:n,source:"root"};let o=e.map(c=>K(c)).filter(c=>c&&!Dr(c)),a=o.filter(c=>{let d=Hr(c),p=ma(d);return Number.isFinite(p)?p>=.72:!1}),i=Ne(a);if(i)return{color:i,source:"fallback-bright"};let s=Ne(o);return s?{color:s,source:"fallback"}:{color:"",source:"none"}}function xe(r,e=new Map){let t=String(r||""),n=/([a-z-]+)\s*:\s*([^;{}]+)/gi,o=n.exec(t);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(t)}return e}function ha(r=""){let e=String(r||""),t=new Map,n=[],o=[],a=[],i=[],s=[],c=[],d=[],p=/#(?:[0-9a-f]{3,8})\b|rgba?\([^)]*\)|hsla?\([^)]*\)/gi,l=u=>{(String(u||"").match(p)||[]).forEach(m=>{let f=K(m);f&&n.push(f)})};if(typeof DOMParser<"u"&&Ur(e))try{let g=new DOMParser().parseFromString(e,"text/html");Array.from(g.querySelectorAll("style")).map(b=>b.textContent||"").forEach(b=>{xe(b,t),l(b),da(b).forEach(S=>{if(!pa(S.selector))return;let R=xe(S.body,new Map),$=Y(R,["background","background-color"]).map(L=>K(L)).filter(Boolean);o.push(...$)})}),Array.from(g.querySelectorAll("[style]")).forEach(b=>{let S=b.getAttribute("style")||"";xe(S,t),l(S)}),["html","body","main","#app","#root",".app",".page"].forEach(b=>{let S=g.querySelector(b);if(!S)return;let R=S.getAttribute("style")||"";if(!R)return;let $=xe(R,new Map),L=Y($,["background","background-color"]).map(z=>K(z)).filter(Boolean);o.push(...L);let P=_r(S.getAttribute("class")||"");a.push(...P)}),Array.from(g.querySelectorAll("[class]")).forEach(b=>{let S=ee(b.getAttribute("class")||"");c.push(...S);let R=_r(b.getAttribute("class")||"");i.push(...R);let $=String(b.tagName||"").toLowerCase(),L=$==="button"||$==="a",P=S.some(z=>/^bg-/.test(String(te(z).base||"")));L&&P&&R.length&&s.push(...R)});let w=g.body?.textContent||"";w.trim()&&d.push(w),l(g.documentElement?.outerHTML||e)}catch{xe(e,t),l(e),d.push(e)}else xe(e,t),l(e),d.push(e);return{declarations:t,colorValues:n,rootBackgroundColors:o,rootClassBackgroundColors:a,classBackgroundColors:i,buttonBackgroundColors:s,classTokens:c,textCorpus:d.join(`
|
|
3646
|
+
`)}}function Ne(r=[]){let e=new Map;r.forEach(o=>{let a=String(o||"").trim();a&&e.set(a,(e.get(a)||0)+1)});let t="",n=-1;return e.forEach((o,a)=>{o>n&&(t=a,n=o)}),t}function Y(r,e=[]){return e.flatMap(t=>r.get(t)||[])}function ba(r,e){if(!r||!e)return null;let t=String(e).split(".").filter(Boolean),n=r;for(let o of t){if(!n||n.type!=="object"||!n.properties||typeof n.properties!="object")return null;n=n.properties[o]}return n||null}function ya(r={}){let e=r&&typeof r=="object"?r:{},t=A?.configRelations&&typeof A.configRelations=="object"?A.configRelations:{},n=new Set(Object.keys(t)),o=null;if(typeof A?.buildConfigFormSchema=="function")try{o=A.buildConfigFormSchema(e)?.schema||null}catch{o=null}return!o&&A?.configFormSchema?.schema&&(o=A.configFormSchema.schema),{design:e,schema:o,allowedPaths:n}}function va(r,e){if(!r)return e;if(Array.isArray(r.oneOf)&&r.oneOf.length){let t=r.oneOf.map(n=>n?.const).filter(n=>n!=null);if(t.length){if(typeof e=="string"){let n=t.find(o=>String(o).toLowerCase()===e.toLowerCase());if(n!==void 0)return n}if(typeof e=="number"){let n=t.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 t[0]}}if(r.type==="number"||r.type==="integer"){let t=Number(e);return Number.isFinite(t)?r.type==="integer"?Math.round(t):t:void 0}return r.type==="boolean"?!!e:r.type==="string"?String(e||"").trim():e}function xa(r,e,t){let n=String(e||"").split(".").filter(Boolean);if(!n.length)return;let o=r;for(let a=0;a<n.length;a+=1){let i=n[a];if(a===n.length-1){o[i]=t;return}(!o[i]||typeof o[i]!="object"||Array.isArray(o[i]))&&(o[i]={}),o=o[i]}}function _(r,e,t){if(t==null||t===""||r.allowedPaths.size&&!r.allowedPaths.has(e))return;let n=ba(r.schema,e),o=va(n,t);o==null||o===""||(xa(r.patch,e,o),r.inferredPaths.add(e))}function de(r=[]){let e=r.map(n=>ia(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let t=Math.floor(e.length/2);return e.length%2?e[t]:(e[t-1]+e[t])/2}function wa(r=[]){let e=r.map(t=>String(t||"").split(",")[0]||"").map(t=>t.trim().replace(/^['"]|['"]$/g,"")).filter(Boolean);return Ne(e)}function ka(r){let e=Number(r);return Number.isFinite(e)?e<=.75?"hairline":e<=1.5?"thin":e<=2.5?"medium":"thick":"thin"}function Sa(r=""){let t=String(te(r).base||"").toLowerCase().match(/^rounded(?:-[trbl]{1,2})?(?:-(none|xs|sm|md|lg|xl|2xl|3xl|full))?$/);if(!t)return null;let n=t[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 $a(r=[]){let e=r.map(n=>Sa(n)).filter(n=>Number.isFinite(n));if(!e.length)return null;e.sort((n,o)=>n-o);let t=Math.floor(e.length/2);return e.length%2?e[t]:(e[t-1]+e[t])/2}function Ht(r={}){let e=String(r.html||"");if(!e.trim())return O({source:"html-inference",type:String(r.sourceType||"design-inference"),confidence:0,issues:[{severity:"warning",message:"No HTML or guideline text provided for design extraction."}],designPatch:{},meta:{extractedPathCount:0,extractedPaths:[]}});let t=ya(r.config||{}),n=ha(e),o={patch:{},inferredPaths:new Set,allowedPaths:t.allowedPaths,schema:t.schema},a=Y(n.declarations,["color"]).map(G=>K(G)).filter(Boolean),i=Y(n.declarations,["background","background-color"]).map(G=>K(G)).filter(Boolean),s=[...i,...a,...n.colorValues].filter(Boolean),c=Array.from(new Set(s)),d=[...n.rootBackgroundColors||[]],p=[...n.rootClassBackgroundColors||[]],l=d.length?d:p,u=[...i,...n.classBackgroundColors||[]],g=fa(l,u),m=g.color;_(o,"colors.background",m||i[0]||c[0]);let f=c.filter(G=>G&&G!==m),v=Ne(n.buttonBackgroundColors||[])||f[0]||c[0],w=f.filter(G=>G&&G!==v);_(o,"colors.primary",v),_(o,"colors.secondary",w[0]||v||c[0]),_(o,"colors.accent",w[1]||w[0]||v||c[0]);let b=Y(n.declarations,["font-family"]),S=wa(b);_(o,"typography.fontFamilyBody",S),_(o,"typography.fontFamilyHeadings",S),_(o,"typography.fontFamilyMono",/mono|code/i.test(n.textCorpus)?"JetBrains Mono":"");let R=Y(n.declarations,["font-size"]),$=de(R);_(o,"typography.baseSize",$);let L=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"]),P=de(L);_(o,"spatialRhythm.baseUnit",P),_(o,"spatialRhythm.inputPadding",P),_(o,"spatialRhythm.buttonPadding",P);let z=Y(n.declarations,["border-radius"]),T=de(z)||$a(n.classTokens||[]);_(o,"shape.radiusSize",T);let N=Y(n.declarations,["border-width","border-top-width","border-right-width","border-bottom-width","border-left-width"]),C=de(N);_(o,"shape.borderWidth",ka(C));let x=Y(n.declarations,["max-width"]),k=de(x);_(o,"layout.containerMaxWidth",k),_(o,"layout.maxWidth",k);let M=Y(n.declarations,["min-height","height"]),E=de(M);_(o,"layout.buttonMinHeight",E),_(o,"layout.inputMinHeight",E);let B=Y(n.declarations,["transition-duration"]),D=de(B.map(G=>{let Se=String(G||"").trim().toLowerCase(),oe=Number.parseFloat(Se);return Number.isFinite(oe)?Se.endsWith("ms")?oe:Se.endsWith("s")?oe*1e3:oe:null}));_(o,"behavior.transitionSpeed",D);let I=Y(n.declarations,["box-shadow"]).length>0;_(o,"layers.baseShadowOpacity",I?.2:.08);let W=Array.from(o.inferredPaths),re=W.reduce((G,Se)=>{let oe=Se.split(".")[0];return G[oe]=(G[oe]||0)+1,G},{}),Zr=W.length?Math.min(.92,.35+W.length*.02):.25;return O({source:"html-inference",type:String(r.sourceType||"design-inference"),confidence:Zr,issues:W.length?[]:[{severity:"warning",message:"Could not infer enough design signals from input."}],designPatch:o.patch,meta:{extractedPathCount:W.length,extractedPaths:W,categoryCoverage:re,colorSampleSize:c.length,backgroundInference:{source:g.source,candidates:{root:l.length,declaration:i.length,classBased:(n.classBackgroundColors||[]).length}}}})}function qr(r={}){let e=String(r.input||"").trim(),t=String(r.sourceType||"unknown");if(!e)return O({source:t,type:t,confidence:0,issues:[{severity:"error",message:"No input provided."}],meta:{conversionMode:"none"}});if(Ur(e)){let n=ct({html:e,config:r.config||{}});return O({source:t,type:t,confidence:n.confidence,issues:n.issues,template:n.template,meta:{...n.meta||{},conversionMode:"html-to-pds"}})}return O({source:t,type:t,confidence:.48,issues:[{severity:"info",message:"Input is not HTML; generated text-based preview template."}],template:{id:`${t}-text-import`,name:"Imported Guideline Text",html:`<article class="card surface-base stack-sm"><h3>Imported Guidelines</h3><pre>${aa(e)}</pre></article>`},meta:{conversionMode:"text-preview"}})}function ct(r={}){let e=String(r.html||"").trim();if(!e)return O({source:"tailwind",type:"tailwind-html",confidence:0,issues:[{severity:"error",message:"No HTML provided."}]});let t=ra(e,{config:r.config||{}});return O({source:"tailwind",type:"tailwind-html",confidence:t.confidence,issues:t.issues,template:{id:"tailwind-import",name:"Converted Tailwind Markup",html:t.html},meta:t.meta})}function qt(r={}){let e=String(r.text||"").trim();if(!e)return O({source:"brand",type:"brand-guidelines",confidence:0,issues:[{severity:"error",message:"No brand guideline text provided."}]});let t=oa(e),n={colors:{},typography:{}},o=[];return t?n.colors.primary=t: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"),O({source:"brand",type:"brand-guidelines",confidence:t?.68:.52,issues:o,designPatch:n,meta:{inferred:{primaryColor:t}}})}var Gt="convert-only",Gr="adopt-design-and-convert";function Ca(r){return String(r||"").trim().toLowerCase()===Gr?Gr:Gt}function Vr(...r){let e=r.flat().filter(Boolean);if(!e.length)return[];let t=new Set;return e.filter(n=>{let o=`${String(n?.severity||"info")}::${String(n?.path||"")}::${String(n?.message||"")}`;return t.has(o)?!1:(t.add(o),!0)})}function Jr(r=[]){let e=r.map(t=>Number(t)).filter(t=>Number.isFinite(t));return e.length?Math.max(0,Math.min(1,e.reduce((t,n)=>t+n,0)/e.length)):0}function Be(r={},e={}){return{...r&&typeof r=="object"?r:{},...e&&typeof e=="object"?e:{}}}function Kr(r={},e={}){if(!e||typeof e!="object")return r;let t=Array.isArray(r)?[...r]:{...r};return Object.entries(e).forEach(([n,o])=>{o&&typeof o=="object"&&!Array.isArray(o)?t[n]=Kr(t[n]&&typeof t[n]=="object"?t[n]:{},o):t[n]=o}),t}function Yr(r){if(typeof structuredClone=="function")try{return structuredClone(r)}catch{}return JSON.parse(JSON.stringify(r||{}))}function Ma(r={}){let e=Number(r?.ratio),t=Number(r?.min),n=Number.isFinite(e)?e.toFixed(2):"n/a",o=Number.isFinite(t)?t.toFixed(2):"n/a";return{severity:"error",path:String(r?.path||"/colors"),message:`${String(r?.message||"Color contrast validation failed.")} (ratio=${n}, required=${o})`}}function Qr(r={},e={},t={}){if(!(e&&typeof e=="object"?Object.keys(e):[]).length)return{ok:!0,blocked:!1,issues:[],report:{ok:!0,issues:[]}};let o=Number(t.minContrast),a=Number.isFinite(o)?o:4.5,i=Kr(Yr(r||{}),Yr(e||{})),s=sr(i,{minContrast:a,minMutedContrast:3,extendedChecks:!0}),c=Array.isArray(s?.issues)?s.issues.map(d=>Ma(d)):[];return{ok:!!s?.ok,blocked:!s?.ok,issues:c,report:{ok:!!s?.ok,minContrast:a,issues:Array.isArray(s?.issues)?s.issues:[]}}}function za(){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 Ea(r={}){let e=String(r.sourceType||""),t=Ca(r.importMode),n=String(r.input||""),o=r.config||null;if(e==="template"){let a=Cr(r.templateId,r);return a.meta=Be(a.meta,{importMode:t}),a}if(e==="tailwind-html"){let a=ct({html:n,config:o});if(t===Gt)return a.meta=Be(a.meta,{importMode:t}),a;let i=Ht({html:n,config:o,sourceType:e}),s=Qr(o||{},i.designPatch||{}),c=s.blocked?{}:i.designPatch,d=s.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...s.issues]:[];return O({source:a.source||"tailwind",type:e,confidence:Jr([a.confidence,i.confidence]),issues:Vr(a.issues,i.issues,d),template:a.template,designPatch:c,meta:Be(a.meta,{importMode:t,inference:i.meta,validation:s.report,validationBlocked:s.blocked})})}if(e==="brand-guidelines"){let a=qr({input:n,sourceType:e,config:o});if(t===Gt)return a.meta=Be(a.meta,{importMode:t}),a;let i=qt({text:n}),s=Ht({html:n,config:o,sourceType:e}),c={...i.designPatch&&typeof i.designPatch=="object"?i.designPatch:{},...s.designPatch&&typeof s.designPatch=="object"?s.designPatch:{}},d=Qr(o||{},c||{}),p=d.blocked?{}:c,l=d.blocked?[{severity:"error",path:"/colors",message:"Import blocked: inferred design patch failed accessibility contrast validation."},...d.issues]:[];return O({source:"brand",type:e,confidence:Jr([a.confidence,i.confidence,s.confidence]),issues:Vr(a.issues,i.issues,s.issues,l),template:a.template,designPatch:p,meta:Be(a.meta,{importMode:t,inference:s.meta,brandHeuristics:i.meta,validation:d.report,validationBlocked:d.blocked})})}return e==="figma-json"||e==="ux-pilot"||e==="google-stitch"?O({source:e,type:e,confidence:0,issues:[{severity:"info",message:`${e} adapter is not implemented yet in this phase.`}],meta:{importMode:t}}):O({source:e||"unknown",type:"unknown",confidence:0,issues:[{severity:"error",message:"Unsupported import source type."}],meta:{importMode:t}})}var Ta="pds-live-import-history";var X="imports",dt=null;function Aa(){return typeof globalThis<"u"&&typeof globalThis.indexedDB<"u"}function Z(r){return typeof r=="string"?r:""}function pt(r){return Array.isArray(r)?r:[]}function ut(r){return r&&typeof r=="object"?r:{}}function gt(){return Aa()?dt||(dt=new Promise((r,e)=>{let t=globalThis.indexedDB.open(Ta,1);t.onupgradeneeded=()=>{let n=t.result;if(!n.objectStoreNames.contains(X)){let o=n.createObjectStore(X,{keyPath:"id",autoIncrement:!0});o.createIndex("createdAt","createdAt",{unique:!1}),o.createIndex("sourceType","sourceType",{unique:!1}),o.createIndex("fileName","fileName",{unique:!1})}},t.onsuccess=()=>r(t.result),t.onerror=()=>e(t.error||new Error("Failed to open import history database."))}),dt):Promise.resolve(null)}function mt(r){return new Promise((e,t)=>{r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error||new Error("IndexedDB operation failed."))})}function La(r={}){let e=Date.now(),t=Number.isFinite(Number(r.createdAt))?Number(r.createdAt):e,n=new Date(t).toISOString(),o=pt(r.issues).map(c=>({severity:Z(c?.severity||"info"),message:Z(c?.message||"")})),a=pt(r.notes).filter(c=>typeof c=="string"),i=pt(r.unknownTailwindTokens).filter(c=>typeof c=="string"),s=pt(r.appliedRules).filter(c=>typeof c=="string");return{createdAt:t,createdAtIso:n,sourceType:Z(r.sourceType||"unknown"),importMode:Z(r.importMode||"convert-only"),source:Z(r.source||"unknown"),type:Z(r.type||"unknown"),fileName:Z(r.fileName||""),fileSize:Number.isFinite(Number(r.fileSize))?Number(r.fileSize):0,mimeType:Z(r.mimeType||""),fileContents:Z(r.fileContents||""),convertedHtml:Z(r.convertedHtml||""),confidence:Number.isFinite(Number(r.confidence))?Number(r.confidence):0,notes:a,issues:o,coverage:ut(r.coverage),unknownTailwindTokens:i,appliedRules:s,importStyleSheetInjected:!!r.importStyleSheetInjected,templateName:Z(r.templateName||""),designPatch:ut(r.designPatch),meta:ut(r.meta),resultSnapshot:ut(r.resultSnapshot)}}async function Ra(r={}){let e=await gt();if(!e)return null;let t=La(r),o=e.transaction(X,"readwrite").objectStore(X);return{id:await mt(o.add(t)),...t}}async function Fa(r={}){let e=await gt();if(!e)return[];let t=Number.isFinite(Number(r.limit))?Math.max(1,Number(r.limit)):30,o=e.transaction(X,"readonly").objectStore(X);return(await mt(o.getAll())||[]).sort((i,s)=>Number(s?.createdAt||0)-Number(i?.createdAt||0)).slice(0,t)}async function Pa(r){let e=await gt();if(!e)return null;let t=Number(r);if(!Number.isFinite(t))return null;let o=e.transaction(X,"readonly").objectStore(X);return await mt(o.get(t))||null}async function Ia(){let r=await gt();if(!r)return;let t=r.transaction(X,"readwrite").objectStore(X);await mt(t.clear())}export{Ia as clearLiveImportHistory,qt as convertBrandGuidelinesToPatch,ct as convertTailwindHtmlToPds,O as createImportResult,na as describeTailwindConversionRules,Pa as getLiveImportHistoryEntry,za as getLiveImportSources,Jn as isImportResult,Fa as listLiveImportHistory,$r as listLiveTemplates,fr as loadGoogleFont,et as loadLiveTemplateCatalog,Ea as runLiveImport,Ra as saveLiveImportHistory,qn as startLive};
|